Commit 6303b954f46e46b13f109f36192cf3adfc60c4ae
1 parent
98eb12d0
线调更新
Showing
6 changed files
with
124 additions
and
61 deletions
src/main/java/com/bsth/service/gps/GpsServiceImpl.java
| ... | ... | @@ -16,6 +16,7 @@ import com.bsth.entity.LineVersions; |
| 16 | 16 | import com.bsth.entity.directive.D80; |
| 17 | 17 | import com.bsth.entity.realcontrol.ScheduleRealInfo; |
| 18 | 18 | import com.bsth.repository.CarParkRepository; |
| 19 | +import com.bsth.repository.LineRepository; | |
| 19 | 20 | import com.bsth.repository.LineVersionsRepository; |
| 20 | 21 | import com.bsth.repository.StationRepository; |
| 21 | 22 | import com.bsth.repository.realcontrol.ScheduleRealInfoRepository; |
| ... | ... | @@ -87,6 +88,9 @@ public class GpsServiceImpl implements GpsService { |
| 87 | 88 | @Autowired |
| 88 | 89 | LineVersionsRepository lineVersionsRepository; |
| 89 | 90 | |
| 91 | + @Autowired | |
| 92 | + LineRepository lineRepository; | |
| 93 | + | |
| 90 | 94 | // 历史gps查询 |
| 91 | 95 | @Override |
| 92 | 96 | public List<Map<String, Object>> history(String device, Long startTime, Long endTime, int directions) { |
| ... | ... | @@ -228,50 +232,69 @@ public class GpsServiceImpl implements GpsService { |
| 228 | 232 | //查询GPS数据 |
| 229 | 233 | JdbcTemplate jdbcTemplate_ms = new JdbcTemplate(DBUtils_MS.getDataSource()); |
| 230 | 234 | List<Map<String, Object>> dataList = jdbcTemplate_ms.queryForList(sql.toString()); |
| 231 | - if (!dataList.isEmpty()){ | |
| 232 | 235 | |
| 233 | - int lineId=Integer.parseInt(map_get_str(dataList.get(0), "LINE_ID")); | |
| 234 | - List<LineVersions> lvs=lineVersionsRepository.findBylineId(lineId); | |
| 235 | - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); | |
| 236 | - List<Map<String,Object>> vlist=new ArrayList<>(); | |
| 237 | - Map<String,Object> vMap; | |
| 238 | - if (lvs!=null&&!lvs.isEmpty()){ | |
| 239 | - for (LineVersions lv : lvs) { | |
| 240 | - vMap=new HashMap(); | |
| 241 | - Long sd=lv.getStartDate().getTime(); | |
| 242 | - Long ed=lv.getEndDate().getTime(); | |
| 243 | - if (sd<st&&et<ed){ | |
| 244 | - vMap.put("version",lv.getVersions()); | |
| 245 | - vMap.put("vtime","all"); | |
| 246 | - vlist.add(vMap); | |
| 247 | - }else if(sd<st&&et>ed&&st<ed){ | |
| 248 | - vMap.put("version",lv.getVersions()); | |
| 249 | - vMap.put("endTime",lv.getEndDate().getTime()); | |
| 250 | - vlist.add(vMap); | |
| 251 | - }else if(st<sd&&et<ed&&sd<et){ | |
| 252 | - vMap.put("version",lv.getVersions()); | |
| 253 | - vMap.put("startTime",lv.getStartDate().getTime()); | |
| 254 | - vlist.add(vMap); | |
| 255 | - } | |
| 256 | - } | |
| 257 | - } | |
| 258 | - rsMap.put("lineVerson",vlist); | |
| 259 | - } | |
| 260 | 236 | Float lon, lat; |
| 261 | 237 | Location bdLoc, gdLoc; |
| 262 | 238 | int inOutStop; |
| 263 | 239 | long serviceState; |
| 264 | 240 | ArrivalEntity arrival; |
| 265 | - | |
| 241 | + Set<String> lineSet=new HashSet(); | |
| 242 | + String firstLineCode=""; | |
| 243 | + List<Map<String,Object>> lineSwitch=new ArrayList<>(); | |
| 244 | + | |
| 245 | + List<Map> gpsNotValidList=new ArrayList(); | |
| 246 | + List<Map> versionSwitchList=new ArrayList(); | |
| 247 | + List<Map> gpsEqualsZeroList=new ArrayList(); | |
| 248 | + Map<String,Object> zeroMap=null; | |
| 249 | + Map<String,Object> gpsNotValidMap=null; | |
| 250 | + boolean isFirstNotValid=true; | |
| 251 | + boolean isFirstLonlatZero=true; | |
| 266 | 252 | Map<String, Object> map = null; |
| 267 | 253 | for(Map<String, Object> rs : dataList){ |
| 254 | + int index=dataList.indexOf(rs); | |
| 255 | + if (index< dataList.size()-1&&!map_get_str( rs,"LINE_ID").equals(map_get_str( dataList.get(index+1),"LINE_ID"))){ | |
| 256 | + Map<String,Object> LSmap=new HashMap<>(); | |
| 257 | + String name=lineRepository.findOne(Integer.valueOf(map_get_str( rs,"LINE_ID"))).getName(); | |
| 258 | + String NextName=lineRepository.findOne(Integer.valueOf(map_get_str( dataList.get(index+1),"LINE_ID"))).getName(); | |
| 259 | + LSmap.put("abnormalType","linesSwitch"); | |
| 260 | + LSmap.put("line_line",name+"-->"+NextName); | |
| 261 | + LSmap.put("st",map_get_long(rs, "TS")); | |
| 262 | + LSmap.put("et",index== dataList.size()-1?map_get_long(rs, "TS"):map_get_long( dataList.get(index+1), "TS")); | |
| 263 | + lineSwitch.add(LSmap); | |
| 264 | + } | |
| 268 | 265 | serviceState = map_get_long(rs, "SERVICE_STATE"); |
| 269 | - if(getGpsValid(serviceState) == 1) | |
| 270 | - continue; | |
| 266 | + if(getGpsValid(serviceState) == 1){ | |
| 267 | + if (isFirstNotValid) { | |
| 268 | + gpsNotValidMap=new HashMap<>(); | |
| 269 | + gpsNotValidMap.put("abnormalType","gpsNotValid"); | |
| 270 | + gpsNotValidMap.put("st",map_get_long(rs,"TS")); | |
| 271 | + isFirstNotValid=false; | |
| 272 | + } | |
| 273 | + if (index== dataList.size()-1||index< dataList.size()-1&&getGpsValid(map_get_long(dataList.get(index+1), "SERVICE_STATE"))!=1){ | |
| 274 | + gpsNotValidMap.put("et",map_get_long(rs,"TS")); | |
| 275 | + gpsNotValidList.add(gpsNotValidMap); | |
| 276 | + isFirstNotValid=true; | |
| 277 | + gpsNotValidMap=null; | |
| 278 | + } | |
| 279 | + } | |
| 280 | + //continue; | |
| 271 | 281 | |
| 272 | 282 | map = new HashMap<>(); |
| 273 | 283 | lon = map_get_float(rs, "LON"); |
| 274 | 284 | lat = map_get_float(rs, "LAT"); |
| 285 | + if (lon==0||lat==0){ | |
| 286 | + if (isFirstLonlatZero){ | |
| 287 | + zeroMap=new HashMap<>(); | |
| 288 | + zeroMap.put("abnormalType","gpsZero"); | |
| 289 | + zeroMap.put("st",map_get_long(rs,"TS")); | |
| 290 | + isFirstLonlatZero=false; | |
| 291 | + } | |
| 292 | + if (index<dataList.size()-1&&(map_get_float(dataList.get(index+1),"LON")!=0&&map_get_float(dataList.get(index+1),"LAT")!=0)){ | |
| 293 | + zeroMap.put("et",map_get_long(rs,"TS")); | |
| 294 | + gpsEqualsZeroList.add(zeroMap); | |
| 295 | + isFirstLonlatZero=true; | |
| 296 | + } | |
| 297 | + } | |
| 275 | 298 | // 高德坐标 |
| 276 | 299 | gdLoc = TransGPS.transformFromWGSToGCJ(TransGPS.LocationMake(lon, lat)); |
| 277 | 300 | map.put("gcj_lon", gdLoc.getLng()); |
| ... | ... | @@ -292,7 +315,7 @@ public class GpsServiceImpl implements GpsService { |
| 292 | 315 | |
| 293 | 316 | map.put("lineId", map_get_str(rs, "LINE_ID")); |
| 294 | 317 | map.put("speed", map_get_float(rs,"SPEED_GPS")); |
| 295 | - | |
| 318 | + lineSet.add(map_get_str(rs, "LINE_ID")); | |
| 296 | 319 | inOutStop = Integer.parseInt(rs.get("INOUT_STOP").toString()); |
| 297 | 320 | map.put("inout_stop", inOutStop); |
| 298 | 321 | |
| ... | ... | @@ -310,6 +333,48 @@ public class GpsServiceImpl implements GpsService { |
| 310 | 333 | map.put("section_code", map_get_str(rs,"SECTION_CODE")); |
| 311 | 334 | list.add(map); |
| 312 | 335 | } |
| 336 | + | |
| 337 | + if (lineSet.size()>0){ | |
| 338 | + for (String s : lineSet) { | |
| 339 | + int lineId=Integer.parseInt(s); | |
| 340 | + List<LineVersions> lvs=lineVersionsRepository.findBylineId(lineId); | |
| 341 | + List<Map<String,Object>> vlist=new ArrayList<>(); | |
| 342 | + Map<String,Object> vMap; | |
| 343 | + Long qt=0L; | |
| 344 | + if (lvs!=null&&!lvs.isEmpty()){ | |
| 345 | + for (LineVersions lv : lvs) { | |
| 346 | + vMap=new HashMap(); | |
| 347 | + Long sd=lv.getStartDate().getTime(); | |
| 348 | + Long ed=lv.getEndDate().getTime(); | |
| 349 | + if (sd<st&&et<ed){ | |
| 350 | + vMap.put("version",lv.getVersions()); | |
| 351 | + vMap.put("vtime","all"); | |
| 352 | + vlist.add(vMap); | |
| 353 | + }else if(sd<st&&et>ed&&st<ed){ | |
| 354 | + vMap.put("version",lv.getVersions()); | |
| 355 | + vMap.put("endTime",lv.getEndDate().getTime()); | |
| 356 | + vMap.put("abnormalType","versionSwitch"); | |
| 357 | + vMap.put("st",lv.getEndDate().getTime()); | |
| 358 | + //vMap.put("et",lvs.indexOf(lv)==lvs.size()-1?lv.getEndDate().getTime():lvs.get(lvs.indexOf(lv)+1).getStartDate().getTime()); | |
| 359 | + qt=lv.getEndDate().getTime(); | |
| 360 | + vlist.add(vMap); | |
| 361 | + }else if(st<sd&&et<ed&&sd<et){ | |
| 362 | + vMap.put("version",lv.getVersions()); | |
| 363 | + vMap.put("startTime",lv.getStartDate().getTime()); | |
| 364 | + vlist.add(vMap); | |
| 365 | + } | |
| 366 | + } | |
| 367 | + } | |
| 368 | + rsMap.put("lineVerson",vlist); | |
| 369 | + if (vlist.size()>1){ | |
| 370 | + Map<String,Object> VSmap=new HashMap<>(); | |
| 371 | + VSmap.put("abnormalType","vserionSwitch"); | |
| 372 | + VSmap.put("st",qt); | |
| 373 | + versionSwitchList.add(VSmap); | |
| 374 | + } | |
| 375 | + } | |
| 376 | + | |
| 377 | + } | |
| 313 | 378 | // 按时间排序 |
| 314 | 379 | Collections.sort(list, new Comparator<Map<String, Object>>() { |
| 315 | 380 | |
| ... | ... | @@ -321,6 +386,9 @@ public class GpsServiceImpl implements GpsService { |
| 321 | 386 | |
| 322 | 387 | rsMap.put("list", list); |
| 323 | 388 | rsMap.put("dcs", dcs); |
| 389 | + rsMap.put("gpsNotValid",gpsNotValidList); | |
| 390 | + rsMap.put("lineSwitch",lineSwitch); | |
| 391 | + rsMap.put("lonlatZero",gpsEqualsZeroList); | |
| 324 | 392 | return rsMap; |
| 325 | 393 | } |
| 326 | 394 | |
| ... | ... | @@ -749,6 +817,9 @@ public class GpsServiceImpl implements GpsService { |
| 749 | 817 | rs.put("sumMileage", new DecimalFormat(".##").format(sum / 1000)); |
| 750 | 818 | rs.put("dcs", gpsMap.get("dcs")); |
| 751 | 819 | rs.put("lineVerson",gpsMap.get("lineVerson")); |
| 820 | + rs.put("gpsInvalid",gpsMap.get("gpsNotValid")); | |
| 821 | + rs.put("gpslineSwitch",gpsMap.get("lineSwitch")); | |
| 822 | + rs.put("gpslonlatex",gpsMap.get("lonlatZero")); | |
| 752 | 823 | } catch (Exception e) { |
| 753 | 824 | logger.error("", e); |
| 754 | 825 | rs.put("status", ResponseCode.ERROR); | ... | ... |
src/main/resources/static/pages/permission/user/authorize.html
| ... | ... | @@ -309,15 +309,6 @@ |
| 309 | 309 | <div class="ct_cont uk-grid-small uk-child-width-expand" uk-grid> |
| 310 | 310 | <div class="role_list uk-width-1-4 "> |
| 311 | 311 | <div class="uk-card uk-card-default"> |
| 312 | - <form> | |
| 313 | - <div class="uk-margin"> | |
| 314 | - <div class="uk-inline" > | |
| 315 | - <!--<span class="uk-form-icon uk-form-icon-flip" uk-icon="icon: search"></span>--> | |
| 316 | - <!--<input class="uk-input role_search_input" type="text" placeholder="搜索角色">--> | |
| 317 | - </div> | |
| 318 | - </div> | |
| 319 | - </form> | |
| 320 | - | |
| 321 | 312 | <div class="ct-card-body" > |
| 322 | 313 | <ul class="uk-list uk-list-large uk-list-divider role-list"> |
| 323 | 314 | </ul> |
| ... | ... | @@ -326,15 +317,6 @@ |
| 326 | 317 | </div> |
| 327 | 318 | <div class="user_list uk-width-1-5 "> |
| 328 | 319 | <div class="uk-card uk-card-default"> |
| 329 | - <form> | |
| 330 | - <div class="uk-margin"> | |
| 331 | - <div class="uk-inline" > | |
| 332 | - <!--<span class="uk-form-icon uk-form-icon-flip" uk-icon="icon: search"></span>--> | |
| 333 | - <!--<input class="uk-input user_search_input" type="text" placeholder="搜索用户">--> | |
| 334 | - </div> | |
| 335 | - </div> | |
| 336 | - </form> | |
| 337 | - | |
| 338 | 320 | <div class="ct-card-body"> |
| 339 | 321 | <ul class="uk-list uk-list-large user-list"> |
| 340 | 322 | </ul> |
| ... | ... | @@ -343,7 +325,6 @@ |
| 343 | 325 | </div> |
| 344 | 326 | <div class="auth_cont "> |
| 345 | 327 | <div class="uk-card uk-card-default authorize_right_cont"> |
| 346 | - | |
| 347 | 328 | </div> |
| 348 | 329 | </div> |
| 349 | 330 | </div> | ... | ... |
src/main/resources/static/real_control_v2/js/line_schedule/sch_table.js
src/main/resources/static/real_control_v2/mapmonitor/fragments/playback_v3/layout.html
| ... | ... | @@ -96,13 +96,21 @@ |
| 96 | 96 | <dl> |
| 97 | 97 | <dd> |
| 98 | 98 | {{if item.abnormalType == 'speed'}} |
| 99 | - {{if item.speed>=100}} | |
| 100 | - 速度异常 | |
| 101 | - {{else}} | |
| 102 | - 超速({{item.speed}}) | |
| 103 | - {{/if}} | |
| 99 | + {{if item.speed>=100}} | |
| 100 | + 速度异常 | |
| 101 | + {{else}} | |
| 102 | + 超速({{item.speed}}) | |
| 103 | + {{/if}} | |
| 104 | 104 | {{else if item.abnormalType == 'outbound'}} |
| 105 | 105 | 越界 |
| 106 | + {{else if item.abnormalType == 'gpsNotValid'}} | |
| 107 | + gps无效 | |
| 108 | + {{else if item.abnormalType == 'linesSwitch'}} | |
| 109 | + <span style="font-size:12px;-webkit-transform:scale(0.9);display:block;text-indent: 5px;">{{item.line_line}}</span> | |
| 110 | + {{else if item.abnormalType == 'versionSwitch'}} | |
| 111 | + 线路版本切换 | |
| 112 | + {{else if item.abnormalType == 'gpsZero'}} | |
| 113 | + 经纬度为0 | |
| 106 | 114 | {{/if}} |
| 107 | 115 | </dd> |
| 108 | 116 | <dd>{{item.st_str}}</dd> | ... | ... |
src/main/resources/static/real_control_v2/mapmonitor/fragments/playback_v3/left.html
| ... | ... | @@ -218,7 +218,7 @@ |
| 218 | 218 | fillTrailTable(rs.list);//填充行车轨迹表格 |
| 219 | 219 | fillArivalStationTable(rs.list);//填充到离站表格 |
| 220 | 220 | $('.sum_mileage_span', leftWrap).text('共约 ' + rs.sumMileage + ' 公里'); |
| 221 | - fillAbnormalTable(rs['outboundList'], rs['speedList']);//填充异常信息表格 | |
| 221 | + fillAbnormalTable(rs['outboundList'], rs['speedList'],rs['gpsInvalid'],rs['gpslineSwitch'],rs['lineVerson'],rs['gpslonlatex']);//填充异常信息表格 | |
| 222 | 222 | //准备播放 |
| 223 | 223 | rs.arrivalData = arrivalData; |
| 224 | 224 | $('.gps-play-back-panel-v3>div.right-panel .play-back-tools-wrap').trigger('ready-to-play', rs); |
| ... | ... | @@ -461,14 +461,21 @@ |
| 461 | 461 | for(var i = 0; i < arguments.length; i ++){ |
| 462 | 462 | array = array.concat(arguments[i]); |
| 463 | 463 | } |
| 464 | + var i=null; | |
| 464 | 465 | //格式化时间 |
| 465 | 466 | $.each(array, function () { |
| 467 | + if(!this.abnormalType&&this.version){ | |
| 468 | + i=array.indexOf(this); | |
| 469 | + } | |
| 466 | 470 | if(this.st) |
| 467 | 471 | this.st_str = moment(this.st).format('HH:mm.ss'); |
| 468 | 472 | if(this.et) |
| 469 | 473 | this.et_str = moment(this.et).format('HH:mm.ss'); |
| 470 | 474 | }); |
| 471 | 475 | |
| 476 | + if(i){ | |
| 477 | + array.splice(i,1); | |
| 478 | + } | |
| 472 | 479 | //排序 |
| 473 | 480 | array.sort(function (a, b) { |
| 474 | 481 | return a.st - b.st; | ... | ... |
src/main/resources/static/real_control_v2/mapmonitor/fragments/playback_v3/right.html
| ... | ... | @@ -84,7 +84,6 @@ |
| 84 | 84 | var currentVersion; |
| 85 | 85 | |
| 86 | 86 | $('.play-back-tools-wrap', rightWrap).on('ready-to-play', function (e, data) { |
| 87 | - debugger | |
| 88 | 87 | e.stopPropagation(); |
| 89 | 88 | //reset |
| 90 | 89 | reset(); |
| ... | ... | @@ -191,7 +190,6 @@ |
| 191 | 190 | $('.top-btn-list .play', rightWrap).on('click', function () { |
| 192 | 191 | if(toolsDisabled()) |
| 193 | 192 | return; |
| 194 | -debugger | |
| 195 | 193 | if(!$(this).hasClass('pause')){ |
| 196 | 194 | //第一次点击播放,清除一下 |
| 197 | 195 | if(play_before_flag){ |
| ... | ... | @@ -344,7 +342,6 @@ debugger |
| 344 | 342 | //从localStorage获取路段 |
| 345 | 343 | routes = JSON.parse(storage.getItem(lineCode+"_"+lineVersion + '_route')); |
| 346 | 344 | if(!routes){ |
| 347 | - debugger | |
| 348 | 345 | var name = gb_data_basic.lineCode2NameAll()[lineCode]; |
| 349 | 346 | notify_err("缺少" + name + "的路段信息,请选择" + name + "进入线调"); |
| 350 | 347 | return; | ... | ... |