Commit 45edec6e894a8841bddfa5cbd143abeb7e60b6cc
1 parent
caaf2960
update...
Showing
7 changed files
with
230 additions
and
48 deletions
src/main/java/com/bsth/controller/realcontrol/RealMapController.java
| @@ -45,8 +45,8 @@ public class RealMapController { | @@ -45,8 +45,8 @@ public class RealMapController { | ||
| 45 | * @Description: TODO(获取线路的站点,路段路由) | 45 | * @Description: TODO(获取线路的站点,路段路由) |
| 46 | */ | 46 | */ |
| 47 | @RequestMapping(value = "/findRouteByLine") | 47 | @RequestMapping(value = "/findRouteByLine") |
| 48 | - public Map<String, Object> findRouteByLine(@RequestParam String lineCode) { | ||
| 49 | - return realMapService.findRouteByLine(lineCode); | 48 | + public Map<String, Object> findRouteByLine(@RequestParam String idx) { |
| 49 | + return realMapService.findRouteByLine(idx); | ||
| 50 | } | 50 | } |
| 51 | 51 | ||
| 52 | @RequestMapping(value = "/multiRouteByLine") | 52 | @RequestMapping(value = "/multiRouteByLine") |
src/main/java/com/bsth/security/WebSecurityConfig.java
| @@ -36,7 +36,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { | @@ -36,7 +36,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { | ||
| 36 | public void configure(WebSecurity web) throws Exception { | 36 | public void configure(WebSecurity web) throws Exception { |
| 37 | // 白名单 | 37 | // 白名单 |
| 38 | web.ignoring().antMatchers(Constants.LOGIN_PAGE, Constants.LOGIN, Constants.ASSETS_URL, Constants.FAVICON_URL, Constants.CAPTCHA, | 38 | web.ignoring().antMatchers(Constants.LOGIN_PAGE, Constants.LOGIN, Constants.ASSETS_URL, Constants.FAVICON_URL, Constants.CAPTCHA, |
| 39 | - Constants.SERVICE_INTERFACE, Constants.METRONIC_URL, Constants.LOGIN_FAILURE, Constants.UPSTREAM_URL, Constants.XD_CHILD_PAGES, Constants.XD_REAL_GPS); | 39 | + Constants.SERVICE_INTERFACE, Constants.METRONIC_URL, Constants.LOGIN_FAILURE, Constants.UPSTREAM_URL, Constants.XD_CHILD_PAGES); |
| 40 | } | 40 | } |
| 41 | 41 | ||
| 42 | @Override | 42 | @Override |
src/main/java/com/bsth/security/filter/LoginInterceptor.java
| @@ -3,10 +3,11 @@ package com.bsth.security.filter; | @@ -3,10 +3,11 @@ package com.bsth.security.filter; | ||
| 3 | import com.alibaba.fastjson.JSON; | 3 | import com.alibaba.fastjson.JSON; |
| 4 | import com.bsth.common.Constants; | 4 | import com.bsth.common.Constants; |
| 5 | import com.bsth.common.ResponseCode; | 5 | import com.bsth.common.ResponseCode; |
| 6 | -import com.bsth.filter.BaseFilter; | ||
| 7 | import com.bsth.util.RequestUtils; | 6 | import com.bsth.util.RequestUtils; |
| 8 | import org.springframework.security.core.Authentication; | 7 | import org.springframework.security.core.Authentication; |
| 9 | import org.springframework.security.core.context.SecurityContextHolder; | 8 | import org.springframework.security.core.context.SecurityContextHolder; |
| 9 | +import org.springframework.util.AntPathMatcher; | ||
| 10 | +import org.springframework.util.PathMatcher; | ||
| 10 | 11 | ||
| 11 | import javax.servlet.*; | 12 | import javax.servlet.*; |
| 12 | import javax.servlet.http.HttpServletRequest; | 13 | import javax.servlet.http.HttpServletRequest; |
| @@ -23,40 +24,67 @@ import java.util.Map; | @@ -23,40 +24,67 @@ import java.util.Map; | ||
| 23 | * @date 2016年3月24日 上午11:49:20 | 24 | * @date 2016年3月24日 上午11:49:20 |
| 24 | * | 25 | * |
| 25 | */ | 26 | */ |
| 26 | -public class LoginInterceptor extends BaseFilter { | 27 | +public class LoginInterceptor implements Filter { |
| 28 | + | ||
| 29 | + private final PathMatcher pathMatcher = new AntPathMatcher(); | ||
| 30 | + | ||
| 31 | + /** | ||
| 32 | + * 白名单 | ||
| 33 | + * 相比于 BaseFilter,此处对线调GPS请求进行了拦截验证 | ||
| 34 | + */ | ||
| 35 | + private String[] whiteListURLs = { Constants.LOGIN_PAGE,Constants.CAPTCHA, Constants.SERVICE_INTERFACE, | ||
| 36 | + Constants.ASSETS_URL, Constants.FAVICON_URL, Constants.METRONIC_URL, Constants.LOGIN, Constants.LOGIN_FAILURE, Constants.UPSTREAM_URL, Constants.XD_CHILD_PAGES }; | ||
| 37 | + | ||
| 27 | 38 | ||
| 28 | @Override | 39 | @Override |
| 29 | public void destroy() { | 40 | public void destroy() { |
| 30 | 41 | ||
| 31 | } | 42 | } |
| 32 | 43 | ||
| 44 | + | ||
| 33 | @Override | 45 | @Override |
| 34 | public void init(FilterConfig filterConfig) throws ServletException { | 46 | public void init(FilterConfig filterConfig) throws ServletException { |
| 35 | 47 | ||
| 36 | } | 48 | } |
| 37 | 49 | ||
| 38 | @Override | 50 | @Override |
| 39 | - public void doFilter(HttpServletRequest request, | ||
| 40 | - HttpServletResponse response, FilterChain chain) | ||
| 41 | - throws IOException, ServletException { | ||
| 42 | - Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); | ||
| 43 | - | ||
| 44 | - if(null == authentication){ | ||
| 45 | - //没有登录 | ||
| 46 | - | ||
| 47 | - if(RequestUtils.isAjaxRequest(request)){ | ||
| 48 | - Map<String, Object> map = new HashMap<>(); | ||
| 49 | - map.put("status", | ||
| 50 | - ResponseCode.NO_AUTHENTICATION); | ||
| 51 | - response.getWriter().print(JSON.toJSONString(map)); | ||
| 52 | - } | ||
| 53 | - else | ||
| 54 | - response.sendRedirect(Constants.LOGIN_PAGE); | 51 | + public void doFilter(ServletRequest request, ServletResponse response, |
| 52 | + FilterChain chain) throws IOException, ServletException { | ||
| 53 | + | ||
| 54 | + HttpServletRequest httpRequest = (HttpServletRequest) request; | ||
| 55 | + HttpServletResponse httpResponse = (HttpServletResponse) response; | ||
| 56 | + | ||
| 57 | + String currentURL = httpRequest.getServletPath(); | ||
| 58 | + | ||
| 59 | + if (!isWhiteURL(currentURL)) { | ||
| 60 | + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); | ||
| 55 | 61 | ||
| 56 | - return; | 62 | + if(null == authentication){ |
| 63 | + //没有登录 | ||
| 64 | + | ||
| 65 | + if(RequestUtils.isAjaxRequest(httpRequest)){ | ||
| 66 | + Map<String, Object> map = new HashMap<>(); | ||
| 67 | + map.put("status", | ||
| 68 | + ResponseCode.NO_AUTHENTICATION); | ||
| 69 | + response.getWriter().print(JSON.toJSONString(map)); | ||
| 70 | + } | ||
| 71 | + else | ||
| 72 | + httpResponse.sendRedirect(Constants.LOGIN_PAGE); | ||
| 73 | + | ||
| 74 | + return; | ||
| 75 | + } | ||
| 57 | } | 76 | } |
| 58 | 77 | ||
| 59 | chain.doFilter(request, response); | 78 | chain.doFilter(request, response); |
| 60 | } | 79 | } |
| 61 | 80 | ||
| 81 | + private boolean isWhiteURL(String currentURL) { | ||
| 82 | + for (String whiteURL : whiteListURLs) { | ||
| 83 | + if (pathMatcher.match(whiteURL, currentURL)) { | ||
| 84 | + return true; | ||
| 85 | + } | ||
| 86 | + } | ||
| 87 | + return false; | ||
| 88 | + } | ||
| 89 | + | ||
| 62 | } | 90 | } |
src/main/java/com/bsth/service/realcontrol/RealMapService.java
| @@ -10,7 +10,7 @@ public interface RealMapService { | @@ -10,7 +10,7 @@ public interface RealMapService { | ||
| 10 | 10 | ||
| 11 | Map<String,Object> carParkSpatialData(); | 11 | Map<String,Object> carParkSpatialData(); |
| 12 | 12 | ||
| 13 | - Map<String,Object> findRouteByLine(String lineCode); | 13 | + Map<String, Object> findRouteByLine(String idx); |
| 14 | 14 | ||
| 15 | Map<String,Object> findRouteAndStationByLine(String lineCode); | 15 | Map<String,Object> findRouteAndStationByLine(String lineCode); |
| 16 | 16 |
src/main/java/com/bsth/service/realcontrol/impl/RealMapServiceImpl.java
| @@ -2,11 +2,14 @@ package com.bsth.service.realcontrol.impl; | @@ -2,11 +2,14 @@ package com.bsth.service.realcontrol.impl; | ||
| 2 | 2 | ||
| 3 | import com.bsth.common.ResponseCode; | 3 | import com.bsth.common.ResponseCode; |
| 4 | import com.bsth.controller.realcontrol.dto.StationSpatialData; | 4 | import com.bsth.controller.realcontrol.dto.StationSpatialData; |
| 5 | +import com.bsth.data.gpsdata.arrival.utils.GeoUtils; | ||
| 5 | import com.bsth.entity.CarPark; | 6 | import com.bsth.entity.CarPark; |
| 6 | import com.bsth.service.realcontrol.RealMapService; | 7 | import com.bsth.service.realcontrol.RealMapService; |
| 7 | import com.bsth.service.realcontrol.dto.SectionRouteCoords; | 8 | import com.bsth.service.realcontrol.dto.SectionRouteCoords; |
| 8 | import com.bsth.util.TransGPS; | 9 | import com.bsth.util.TransGPS; |
| 9 | import com.google.common.base.Splitter; | 10 | import com.google.common.base.Splitter; |
| 11 | +import com.google.common.collect.ArrayListMultimap; | ||
| 12 | +import com.vividsolutions.jts.geom.*; | ||
| 10 | import org.slf4j.Logger; | 13 | import org.slf4j.Logger; |
| 11 | import org.slf4j.LoggerFactory; | 14 | import org.slf4j.LoggerFactory; |
| 12 | import org.springframework.beans.factory.annotation.Autowired; | 15 | import org.springframework.beans.factory.annotation.Autowired; |
| @@ -74,10 +77,17 @@ public class RealMapServiceImpl implements RealMapService { | @@ -74,10 +77,17 @@ public class RealMapServiceImpl implements RealMapService { | ||
| 74 | } | 77 | } |
| 75 | 78 | ||
| 76 | @Override | 79 | @Override |
| 77 | - public Map<String, Object> findRouteByLine(String lineCode) { | 80 | + public Map<String, Object> findRouteByLine(String idx) { |
| 78 | Map<String, Object> rs = new HashMap<>(); | 81 | Map<String, Object> rs = new HashMap<>(); |
| 79 | - String sql = "SELECT r.ID,r.LINE_CODE,r.SECTION_CODE,r.SECTIONROUTE_CODE,r.DIRECTIONS,s.SECTION_NAME,ST_AsText(s.GSECTION_VECTOR) GSECTION_VECTOR,s.SECTION_DISTANCE,s.SECTION_TIME FROM bsth_c_sectionroute r INNER JOIN bsth_c_section s on r.section_code=s.section_code WHERE r.line_code=? and r.destroy=0 order by sectionroute_code"; | ||
| 80 | - List<SectionRouteCoords> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper(SectionRouteCoords.class), lineCode); | 82 | + StringBuilder inCond = new StringBuilder("("); |
| 83 | + List<String> codeList = Splitter.on(",").splitToList(idx); | ||
| 84 | + for(String lineCode : codeList){ | ||
| 85 | + inCond.append("'" + lineCode + "',"); | ||
| 86 | + } | ||
| 87 | + inCond.deleteCharAt(inCond.length() - 1).append(")"); | ||
| 88 | + | ||
| 89 | + String sql = "SELECT r.ID,r.LINE_CODE,r.SECTION_CODE,r.SECTIONROUTE_CODE,r.DIRECTIONS,s.SECTION_NAME,ST_AsText(s.GSECTION_VECTOR) GSECTION_VECTOR,s.SECTION_DISTANCE,s.SECTION_TIME FROM bsth_c_sectionroute r INNER JOIN bsth_c_section s on r.section_code=s.section_code WHERE r.line_code in "+inCond.toString()+" and r.destroy=0 order by sectionroute_code"; | ||
| 90 | + List<SectionRouteCoords> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper(SectionRouteCoords.class)); | ||
| 81 | 91 | ||
| 82 | //排序 | 92 | //排序 |
| 83 | Collections.sort(list, new Comparator<SectionRouteCoords>() { | 93 | Collections.sort(list, new Comparator<SectionRouteCoords>() { |
| @@ -87,28 +97,40 @@ public class RealMapServiceImpl implements RealMapService { | @@ -87,28 +97,40 @@ public class RealMapServiceImpl implements RealMapService { | ||
| 87 | } | 97 | } |
| 88 | }); | 98 | }); |
| 89 | 99 | ||
| 90 | - List<String> upList = new ArrayList<>(), | ||
| 91 | - downList = new ArrayList<>(); | ||
| 92 | - | ||
| 93 | - String vectorStr = ""; | 100 | + ArrayListMultimap<String, SectionRouteCoords> listMultimap = ArrayListMultimap.create(); |
| 94 | for (SectionRouteCoords sr : list) { | 101 | for (SectionRouteCoords sr : list) { |
| 95 | - vectorStr = sr.getGsectionVector(); | ||
| 96 | - vectorStr = vectorStr.substring(11, vectorStr.length() - 2); | ||
| 97 | - | ||
| 98 | - if (sr.getDirections() == 0) | ||
| 99 | - upList.add(vectorStr); | ||
| 100 | - else | ||
| 101 | - downList.add(vectorStr); | 102 | + //按lineCode 分组 |
| 103 | + listMultimap.put(sr.getLineCode(), sr); | ||
| 104 | + } | ||
| 105 | + //坐标转换 | ||
| 106 | + Map<String, Object> subMap; | ||
| 107 | + Set<String> ks = listMultimap.keySet(); | ||
| 108 | + List<SectionRouteCoords> sublist; | ||
| 109 | + List<String> upList,downList; | ||
| 110 | + String vectorStr = ""; | ||
| 111 | + for(String k : ks){ | ||
| 112 | + subMap = new HashMap<>(); | ||
| 113 | + sublist = listMultimap.get(k); | ||
| 114 | + upList = new ArrayList<>(); | ||
| 115 | + downList = new ArrayList<>(); | ||
| 116 | + for(SectionRouteCoords sr : sublist){ | ||
| 117 | + vectorStr = sr.getGsectionVector(); | ||
| 118 | + vectorStr = vectorStr.substring(11, vectorStr.length() - 2); | ||
| 119 | + if (sr.getDirections() == 0) | ||
| 120 | + upList.add(vectorStr); | ||
| 121 | + else | ||
| 122 | + downList.add(vectorStr); | ||
| 123 | + } | ||
| 124 | + subMap.put("up", upList); | ||
| 125 | + //subMap.put("upJoins", jointCoords(upList)); | ||
| 126 | + subMap.put("down", downList); | ||
| 127 | + subMap.put("up_bd", multiWgsToBd(upList)); | ||
| 128 | + subMap.put("down_bd", multiWgsToBd(downList)); | ||
| 129 | + subMap.put("up_gcj", multiWgsToGcj(upList)); | ||
| 130 | + subMap.put("down_gcj", multiWgsToGcj(downList)); | ||
| 131 | + | ||
| 132 | + rs.put(k, subMap); | ||
| 102 | } | 133 | } |
| 103 | - | ||
| 104 | - rs.put("up", upList); | ||
| 105 | - rs.put("down", downList); | ||
| 106 | - rs.put("up_bd", multiWgsToBd(upList)); | ||
| 107 | - rs.put("down_bd", multiWgsToBd(downList)); | ||
| 108 | - rs.put("up_gcj", multiWgsToGcj(upList)); | ||
| 109 | - rs.put("down_gcj", multiWgsToGcj(downList)); | ||
| 110 | - | ||
| 111 | - rs.put("lineId", lineCode); | ||
| 112 | return rs; | 134 | return rs; |
| 113 | } | 135 | } |
| 114 | 136 | ||
| @@ -227,4 +249,115 @@ public class RealMapServiceImpl implements RealMapService { | @@ -227,4 +249,115 @@ public class RealMapServiceImpl implements RealMapService { | ||
| 227 | } | 249 | } |
| 228 | return gcjList; | 250 | return gcjList; |
| 229 | } | 251 | } |
| 252 | + | ||
| 253 | + /** | ||
| 254 | + * 将相连的路段拼接起来,去掉接口覆盖区域。 | ||
| 255 | + * 主要因为前端地图绘制时,过多的路段会带来性能消耗。在这里提前拼接好以减少路段数量 | ||
| 256 | + * @param list | ||
| 257 | + * @return | ||
| 258 | + */ | ||
| 259 | + private List<String> jointCoords(List<String> list){ | ||
| 260 | + List<String> rs = new ArrayList<>(); | ||
| 261 | + int len = list.size(); | ||
| 262 | + if(len == 0) | ||
| 263 | + return rs; | ||
| 264 | + | ||
| 265 | + StringBuilder joinstr = new StringBuilder(list.get(0)); | ||
| 266 | + String str; | ||
| 267 | + for(int i = 1; i < len; i ++){ | ||
| 268 | + str = jointCoords(joinstr.toString(), list.get(i)); | ||
| 269 | + if(str != null) | ||
| 270 | + joinstr.append("," + str); | ||
| 271 | + else{ | ||
| 272 | + rs.add(joinstr.toString()); | ||
| 273 | + joinstr = new StringBuilder(list.get(i)); | ||
| 274 | + } | ||
| 275 | + } | ||
| 276 | + rs.add(joinstr.toString()); | ||
| 277 | + return rs; | ||
| 278 | + } | ||
| 279 | + | ||
| 280 | + static GeometryFactory geometryFactory = new GeometryFactory(); | ||
| 281 | + private String jointCoords(String c1, String c2){ | ||
| 282 | + String rs=null; | ||
| 283 | + LineString s1 = createLineString(c1); | ||
| 284 | + LineString s2 = createLineString(c2); | ||
| 285 | + | ||
| 286 | + if(s1.intersects(s2)){ | ||
| 287 | + Geometry g = s1.intersection(s2); | ||
| 288 | + Point inPoint = geometryFactory.createPoint(g.getCoordinates()[0]);//第一个交点 | ||
| 289 | + | ||
| 290 | + //第一条线截断至交点 | ||
| 291 | + rs = truncationEnd(s1, inPoint); | ||
| 292 | + //第二条线从交点开始 | ||
| 293 | + rs += ("," + truncationStart(s2, inPoint)); | ||
| 294 | + } | ||
| 295 | + return rs; | ||
| 296 | + } | ||
| 297 | + | ||
| 298 | + private LineString createLineString(String c){ | ||
| 299 | + List<String> list = Splitter.on(",").splitToList(c); | ||
| 300 | + | ||
| 301 | + Coordinate[] cds = new Coordinate[list.size()]; | ||
| 302 | + String[] strs; | ||
| 303 | + for(int i = 0; i < list.size(); i ++){ | ||
| 304 | + strs = list.get(i).split(" "); | ||
| 305 | + cds[i] = new Coordinate(Float.parseFloat(strs[1]), Float.parseFloat(strs[0])); | ||
| 306 | + } | ||
| 307 | + return geometryFactory.createLineString(cds); | ||
| 308 | + } | ||
| 309 | + | ||
| 310 | + private String truncationEnd(LineString lineString, Point p){ | ||
| 311 | + Coordinate[] all = lineString.getCoordinates(); | ||
| 312 | + LineString sl; | ||
| 313 | + | ||
| 314 | + Coordinate[] cs; | ||
| 315 | + StringBuilder sb = new StringBuilder(""); | ||
| 316 | + double threshold = 0.1,distance; | ||
| 317 | + for(int i = 0; i < all.length - 1; i ++){ | ||
| 318 | + cs = new Coordinate[2]; | ||
| 319 | + cs[0] = all[i]; | ||
| 320 | + cs[1] = all[i + 1]; | ||
| 321 | + sl = geometryFactory.createLineString(cs); | ||
| 322 | + | ||
| 323 | + sb.append("," + cs[0].y + " " + cs[0].x); | ||
| 324 | + distance = GeoUtils.getDistanceFromLine(sl, p); | ||
| 325 | + if(distance < threshold){ | ||
| 326 | + sb.append("," + p.getY() + " " + p.getX()); | ||
| 327 | + break; | ||
| 328 | + } | ||
| 329 | + else | ||
| 330 | + sb.append("," + cs[1].y + " " + cs[1].x); | ||
| 331 | + } | ||
| 332 | + sb.deleteCharAt(0); | ||
| 333 | + return sb.toString(); | ||
| 334 | + } | ||
| 335 | + | ||
| 336 | + private String truncationStart(LineString lineString, Point p){ | ||
| 337 | + Coordinate[] all = lineString.getCoordinates(); | ||
| 338 | + LineString sl; | ||
| 339 | + | ||
| 340 | + Coordinate[] cs; | ||
| 341 | + StringBuilder sb = new StringBuilder(""); | ||
| 342 | + double threshold = 0.1,distance; | ||
| 343 | + for(int i = 0; i < all.length - 1; i ++){ | ||
| 344 | + cs = new Coordinate[2]; | ||
| 345 | + cs[0] = all[i]; | ||
| 346 | + cs[1] = all[i + 1]; | ||
| 347 | + sl = geometryFactory.createLineString(cs); | ||
| 348 | + | ||
| 349 | + distance = GeoUtils.getDistanceFromLine(sl, p); | ||
| 350 | + if(distance < threshold){ | ||
| 351 | + sb.append("," + p.getY() + " " + p.getX()); | ||
| 352 | + sb.append("," + cs[1].y + " " + cs[1].x); | ||
| 353 | + break; | ||
| 354 | + } | ||
| 355 | + else{ | ||
| 356 | + sb.append("," + cs[0].y + " " + cs[0].x); | ||
| 357 | + sb.append("," + cs[1].y + " " + cs[1].x); | ||
| 358 | + } | ||
| 359 | + } | ||
| 360 | + sb.deleteCharAt(0); | ||
| 361 | + return sb.toString(); | ||
| 362 | + } | ||
| 230 | } | 363 | } |
src/main/resources/static/pages/control/lineallot/allot.html
| @@ -421,7 +421,22 @@ | @@ -421,7 +421,22 @@ | ||
| 421 | 421 | ||
| 422 | function cacheRoute(lsData, cb) { | 422 | function cacheRoute(lsData, cb) { |
| 423 | //showLoad('缓存线路路由信息...'); | 423 | //showLoad('缓存线路路由信息...'); |
| 424 | - var i = 0, cacheData = {}; | 424 | + //拼接线路编码 |
| 425 | + var idx=''; | ||
| 426 | + $.each(lsData, function () { | ||
| 427 | + idx+=(this.lineCode + ','); | ||
| 428 | + }); | ||
| 429 | + idx=idx.substr(0, idx.length - 1); | ||
| 430 | + $.get('/realMap/findRouteByLine', {idx: idx}, function (rs) { | ||
| 431 | + if (rs) { | ||
| 432 | + //cacheData[item.lineCode] = rs; | ||
| 433 | + for(var lineCode in rs){ | ||
| 434 | + storage.setItem(lineCode + '_route', JSON.stringify(rs[lineCode])); | ||
| 435 | + } | ||
| 436 | + cb && cb(); | ||
| 437 | + } | ||
| 438 | + }); | ||
| 439 | +/* var i = 0, cacheData = {}; | ||
| 425 | (function () { | 440 | (function () { |
| 426 | if (i >= lsData.length) { | 441 | if (i >= lsData.length) { |
| 427 | //写入localStorage | 442 | //写入localStorage |
| @@ -442,7 +457,7 @@ | @@ -442,7 +457,7 @@ | ||
| 442 | f(); | 457 | f(); |
| 443 | } | 458 | } |
| 444 | }); | 459 | }); |
| 445 | - })(); | 460 | + })();*/ |
| 446 | } | 461 | } |
| 447 | 462 | ||
| 448 | //历史纪录 | 463 | //历史纪录 |
src/main/resources/static/real_control_v2/js/data/data_gps.js
| @@ -18,7 +18,13 @@ var gb_data_gps = (function () { | @@ -18,7 +18,13 @@ var gb_data_gps = (function () { | ||
| 18 | $.ajax({ | 18 | $.ajax({ |
| 19 | url: '/gps/real/line', | 19 | url: '/gps/real/line', |
| 20 | data: {lineCodes: gb_data_basic.line_idx}, | 20 | data: {lineCodes: gb_data_basic.line_idx}, |
| 21 | + dataType: 'json', | ||
| 21 | success: function (rs) { | 22 | success: function (rs) { |
| 23 | + //用定时的gps来检测session断开 | ||
| 24 | + if(rs.status && rs.status==407){ | ||
| 25 | + location.href = '/login.html'; | ||
| 26 | + return; | ||
| 27 | + } | ||
| 22 | refreshData(rs); | 28 | refreshData(rs); |
| 23 | cb(); | 29 | cb(); |
| 24 | }, | 30 | }, |