Commit 1c67c67919912fe829a5efa528bb43995efb2f40
1 parent
e25f09c9
update...
Showing
23 changed files
with
683 additions
and
83 deletions
src/main/java/com/bsth/controller/directive/DirectiveController.java
| @@ -31,7 +31,7 @@ public class DirectiveController { | @@ -31,7 +31,7 @@ public class DirectiveController { | ||
| 31 | 31 | ||
| 32 | @Autowired | 32 | @Autowired |
| 33 | DirectiveService directiveService; | 33 | DirectiveService directiveService; |
| 34 | - | 34 | + |
| 35 | /** | 35 | /** |
| 36 | * | 36 | * |
| 37 | * @Title: send60 | 37 | * @Title: send60 |
| @@ -106,7 +106,7 @@ public class DirectiveController { | @@ -106,7 +106,7 @@ public class DirectiveController { | ||
| 106 | @RequestMapping(value = "/upDownChange", method = RequestMethod.POST) | 106 | @RequestMapping(value = "/upDownChange", method = RequestMethod.POST) |
| 107 | public int upDownChange(@RequestParam String nbbm, @RequestParam Integer upDown){ | 107 | public int upDownChange(@RequestParam String nbbm, @RequestParam Integer upDown){ |
| 108 | SysUser user = SecurityUtils.getCurrentUser(); | 108 | SysUser user = SecurityUtils.getCurrentUser(); |
| 109 | - return directiveService.upDownChange(nbbm, upDown, user.getUserName()); | 109 | + return directiveService.send60Operation(nbbm, 0, upDown, user.getUserName()); |
| 110 | } | 110 | } |
| 111 | 111 | ||
| 112 | /** | 112 | /** |
| @@ -120,7 +120,7 @@ public class DirectiveController { | @@ -120,7 +120,7 @@ public class DirectiveController { | ||
| 120 | @RequestMapping(value = "/stateChange", method = RequestMethod.POST) | 120 | @RequestMapping(value = "/stateChange", method = RequestMethod.POST) |
| 121 | public int stateChange(@RequestParam String nbbm, @RequestParam Integer upDown, @RequestParam Integer state){ | 121 | public int stateChange(@RequestParam String nbbm, @RequestParam Integer upDown, @RequestParam Integer state){ |
| 122 | SysUser user = SecurityUtils.getCurrentUser(); | 122 | SysUser user = SecurityUtils.getCurrentUser(); |
| 123 | - return directiveService.stateChange(nbbm, upDown, state, user.getUserName()); | 123 | + return directiveService.send60Operation(nbbm, state, upDown, user.getUserName()); |
| 124 | } | 124 | } |
| 125 | 125 | ||
| 126 | /** | 126 | /** |
src/main/java/com/bsth/data/directive/DayOfDirectives.java
| @@ -166,7 +166,8 @@ public class DayOfDirectives { | @@ -166,7 +166,8 @@ public class DayOfDirectives { | ||
| 166 | if(null != d60Map.remove(d60.getMsgId())) | 166 | if(null != d60Map.remove(d60.getMsgId())) |
| 167 | c60 ++; | 167 | c60 ++; |
| 168 | } | 168 | } |
| 169 | - logger.info("清除60数据 ," + c60); | 169 | + if(c60 > 0) |
| 170 | + logger.info("清除60数据 ," + c60); | ||
| 170 | 171 | ||
| 171 | //找到该设备的64数据 | 172 | //找到该设备的64数据 |
| 172 | Collection<D64> d64s = d64Map.values(); | 173 | Collection<D64> d64s = d64Map.values(); |
| @@ -184,8 +185,9 @@ public class DayOfDirectives { | @@ -184,8 +185,9 @@ public class DayOfDirectives { | ||
| 184 | if(null != d64Map.remove(d64.getKey())) | 185 | if(null != d64Map.remove(d64.getKey())) |
| 185 | c64 ++; | 186 | c64 ++; |
| 186 | } | 187 | } |
| 187 | - | ||
| 188 | - logger.info("清除64数据 ," + c64); | 188 | + |
| 189 | + if(c64 > 0) | ||
| 190 | + logger.info("清除64数据 ," + c64); | ||
| 189 | } | 191 | } |
| 190 | 192 | ||
| 191 | public Collection<D60> all60(){ | 193 | public Collection<D60> all60(){ |
src/main/java/com/bsth/data/gpsdata/GpsEntity.java
| @@ -40,9 +40,12 @@ public class GpsEntity { | @@ -40,9 +40,12 @@ public class GpsEntity { | ||
| 40 | /** 纬度 */ | 40 | /** 纬度 */ |
| 41 | private Float lat; | 41 | private Float lat; |
| 42 | 42 | ||
| 43 | - /** 发送时间戳 */ | 43 | + /** GPS发送时间戳 */ |
| 44 | private Long timestamp; | 44 | private Long timestamp; |
| 45 | 45 | ||
| 46 | + /** 网关收到时间 */ | ||
| 47 | + private Long serverTimestamp; | ||
| 48 | + | ||
| 46 | /** 速度 */ | 49 | /** 速度 */ |
| 47 | private Float speed; | 50 | private Float speed; |
| 48 | 51 | ||
| @@ -318,17 +321,33 @@ public class GpsEntity { | @@ -318,17 +321,33 @@ public class GpsEntity { | ||
| 318 | 321 | ||
| 319 | long t = System.currentTimeMillis(); | 322 | long t = System.currentTimeMillis(); |
| 320 | 323 | ||
| 321 | - if((t - this.getTimestamp()) > 1000 * 60){ | 324 | + if((t - this.getServerTimestamp()) > 1000 * 60 * 2){ |
| 322 | return false; | 325 | return false; |
| 323 | } | 326 | } |
| 324 | 327 | ||
| 325 | - if((this.getTimestamp() - t) > 1000 * 60 * 3){ | 328 | + if((this.getServerTimestamp() - t) > 1000 * 60 * 3){ |
| 326 | return false; | 329 | return false; |
| 327 | } | 330 | } |
| 328 | return true; | 331 | return true; |
| 329 | } | 332 | } |
| 330 | 333 | ||
| 334 | + /** | ||
| 335 | + * 是否营运 | ||
| 336 | + * @return | ||
| 337 | + */ | ||
| 338 | + public boolean isService(){ | ||
| 339 | + return state!=null && state==0; | ||
| 340 | + } | ||
| 341 | + | ||
| 331 | public boolean isOffline(){ | 342 | public boolean isOffline(){ |
| 332 | return this.getAbnormalStatus() != null && this.getAbnormalStatus().equals("offline"); | 343 | return this.getAbnormalStatus() != null && this.getAbnormalStatus().equals("offline"); |
| 333 | } | 344 | } |
| 345 | + | ||
| 346 | + public Long getServerTimestamp() { | ||
| 347 | + return serverTimestamp; | ||
| 348 | + } | ||
| 349 | + | ||
| 350 | + public void setServerTimestamp(Long serverTimestamp) { | ||
| 351 | + this.serverTimestamp = serverTimestamp; | ||
| 352 | + } | ||
| 334 | } | 353 | } |
src/main/java/com/bsth/data/gpsdata/GpsRealData.java
| @@ -110,6 +110,14 @@ public class GpsRealData { | @@ -110,6 +110,14 @@ public class GpsRealData { | ||
| 110 | return rs; | 110 | return rs; |
| 111 | } | 111 | } |
| 112 | 112 | ||
| 113 | + public GpsEntity getByNbbm(String nbbm){ | ||
| 114 | + String device = BasicData.deviceId2NbbmMap.inverse().get(nbbm); | ||
| 115 | + if(StringUtils.isNotBlank(device)) | ||
| 116 | + return get(device); | ||
| 117 | + else | ||
| 118 | + return null; | ||
| 119 | + } | ||
| 120 | + | ||
| 113 | /** | 121 | /** |
| 114 | * @Title: get @Description: TODO(线路编码获取GPS集合) @throws | 122 | * @Title: get @Description: TODO(线路编码获取GPS集合) @throws |
| 115 | */ | 123 | */ |
src/main/java/com/bsth/data/gpsdata/arrival/handlers/CorrectSignalHandle.java
| @@ -3,8 +3,8 @@ package com.bsth.data.gpsdata.arrival.handlers; | @@ -3,8 +3,8 @@ package com.bsth.data.gpsdata.arrival.handlers; | ||
| 3 | import com.bsth.data.gpsdata.GpsEntity; | 3 | import com.bsth.data.gpsdata.GpsEntity; |
| 4 | import com.bsth.data.gpsdata.arrival.SignalHandle; | 4 | import com.bsth.data.gpsdata.arrival.SignalHandle; |
| 5 | import com.bsth.data.gpsdata.arrival.utils.CircleQueue; | 5 | import com.bsth.data.gpsdata.arrival.utils.CircleQueue; |
| 6 | +import com.bsth.data.gpsdata.status_manager.GpsStatusManager; | ||
| 6 | import com.bsth.data.schedule.DayOfSchedule; | 7 | import com.bsth.data.schedule.DayOfSchedule; |
| 7 | -import com.bsth.entity.realcontrol.ChildTaskPlan; | ||
| 8 | import com.bsth.entity.realcontrol.ScheduleRealInfo; | 8 | import com.bsth.entity.realcontrol.ScheduleRealInfo; |
| 9 | import com.bsth.service.directive.DirectiveService; | 9 | import com.bsth.service.directive.DirectiveService; |
| 10 | import org.slf4j.Logger; | 10 | import org.slf4j.Logger; |
| @@ -24,28 +24,45 @@ public class CorrectSignalHandle extends SignalHandle { | @@ -24,28 +24,45 @@ public class CorrectSignalHandle extends SignalHandle { | ||
| 24 | @Autowired | 24 | @Autowired |
| 25 | DirectiveService directiveService; | 25 | DirectiveService directiveService; |
| 26 | 26 | ||
| 27 | + @Autowired | ||
| 28 | + GpsStatusManager gpsStatusManager; | ||
| 29 | + | ||
| 27 | Logger logger = LoggerFactory.getLogger(this.getClass()); | 30 | Logger logger = LoggerFactory.getLogger(this.getClass()); |
| 28 | 31 | ||
| 29 | @Override | 32 | @Override |
| 30 | public boolean handle(GpsEntity gps, CircleQueue<GpsEntity> prevs) { | 33 | public boolean handle(GpsEntity gps, CircleQueue<GpsEntity> prevs) { |
| 31 | - Object task = dayOfSchedule.executeCurr(gps.getNbbm()); | 34 | + ScheduleRealInfo task = dayOfSchedule.executeCurr(gps.getNbbm()); |
| 32 | if(task == null) | 35 | if(task == null) |
| 33 | return false; | 36 | return false; |
| 34 | - ScheduleRealInfo sch; | 37 | + //ScheduleRealInfo sch; |
| 35 | 38 | ||
| 36 | //子任务 | 39 | //子任务 |
| 37 | - if(task.getClass().isAssignableFrom(ChildTaskPlan.class)){ | 40 | + /*if(task.getClass().isAssignableFrom(ChildTaskPlan.class)){ |
| 38 | ChildTaskPlan childTask = (ChildTaskPlan) task; | 41 | ChildTaskPlan childTask = (ChildTaskPlan) task; |
| 39 | sch = childTask.getSchedule(); | 42 | sch = childTask.getSchedule(); |
| 40 | } | 43 | } |
| 41 | else | 44 | else |
| 42 | - sch = (ScheduleRealInfo) task; | 45 | + sch = (ScheduleRealInfo) task;*/ |
| 43 | 46 | ||
| 44 | - byte updown = Byte.parseByte(sch.getXlDir()); | 47 | + byte updown = Byte.parseByte(task.getXlDir()); |
| 45 | //走向 | 48 | //走向 |
| 46 | if(gps.getUpDown() != updown){ | 49 | if(gps.getUpDown() != updown){ |
| 47 | gps.setUpDown(updown); | 50 | gps.setUpDown(updown); |
| 48 | - gps.setState(0); | 51 | + //gps.setState(0); |
| 52 | + } | ||
| 53 | + | ||
| 54 | + //(转发的数据不管) | ||
| 55 | + if(gps.getSource() != 0){ | ||
| 56 | + //gps=非营运 && 班次=非空驶 ;切换到营运状态 | ||
| 57 | + if(!gps.isService() && | ||
| 58 | + !dayOfSchedule.emptyService(task)){ | ||
| 59 | + gpsStatusManager.changeServiceState(gps.getNbbm(), updown, 0, null); | ||
| 60 | + } | ||
| 61 | + | ||
| 62 | + //需要切换线路 | ||
| 63 | + if(!task.getXlBm().equals(gps.getLineId())){ | ||
| 64 | + gpsStatusManager.changeLine(gps.getNbbm(), task.getXlBm(), null); | ||
| 65 | + } | ||
| 49 | } | 66 | } |
| 50 | 67 | ||
| 51 | return true; | 68 | return true; |
src/main/java/com/bsth/data/gpsdata/arrival/handlers/InOutStationSignalHandle.java
| @@ -6,6 +6,7 @@ import com.bsth.data.gpsdata.arrival.SignalHandle; | @@ -6,6 +6,7 @@ import com.bsth.data.gpsdata.arrival.SignalHandle; | ||
| 6 | import com.bsth.data.gpsdata.arrival.utils.CircleQueue; | 6 | import com.bsth.data.gpsdata.arrival.utils.CircleQueue; |
| 7 | import com.bsth.data.gpsdata.arrival.utils.ScheduleSignalState; | 7 | import com.bsth.data.gpsdata.arrival.utils.ScheduleSignalState; |
| 8 | import com.bsth.data.gpsdata.arrival.utils.SignalSchPlanMatcher; | 8 | import com.bsth.data.gpsdata.arrival.utils.SignalSchPlanMatcher; |
| 9 | +import com.bsth.data.gpsdata.status_manager.GpsStatusManager; | ||
| 9 | import com.bsth.data.msg_queue.DirectivePushQueue; | 10 | import com.bsth.data.msg_queue.DirectivePushQueue; |
| 10 | import com.bsth.data.schedule.DayOfSchedule; | 11 | import com.bsth.data.schedule.DayOfSchedule; |
| 11 | import com.bsth.data.schedule.ScheduleComparator; | 12 | import com.bsth.data.schedule.ScheduleComparator; |
| @@ -46,6 +47,9 @@ public class InOutStationSignalHandle extends SignalHandle{ | @@ -46,6 +47,9 @@ public class InOutStationSignalHandle extends SignalHandle{ | ||
| 46 | @Autowired | 47 | @Autowired |
| 47 | SignalSchPlanMatcher signalSchPlanMatcher; | 48 | SignalSchPlanMatcher signalSchPlanMatcher; |
| 48 | 49 | ||
| 50 | + @Autowired | ||
| 51 | + GpsStatusManager gpsStatusManager; | ||
| 52 | + | ||
| 49 | private final static int MAX_BEFORE_TIME = 1000 * 60 * 120; | 53 | private final static int MAX_BEFORE_TIME = 1000 * 60 * 120; |
| 50 | 54 | ||
| 51 | //最大的班次时间差,防止异常的GPS时间打乱数据 | 55 | //最大的班次时间差,防止异常的GPS时间打乱数据 |
| @@ -57,10 +61,11 @@ public class InOutStationSignalHandle extends SignalHandle{ | @@ -57,10 +61,11 @@ public class InOutStationSignalHandle extends SignalHandle{ | ||
| 57 | if(isGpsOffline(gps)) | 61 | if(isGpsOffline(gps)) |
| 58 | return false; | 62 | return false; |
| 59 | 63 | ||
| 60 | - //从异常状态恢复的第一个信号 | 64 | + /*//从异常状态恢复的第一个信号*/ |
| 61 | if(abnormalRecovery(gps, prevs)){ | 65 | if(abnormalRecovery(gps, prevs)){ |
| 62 | //回溯一下之前的轨迹 | 66 | //回溯一下之前的轨迹 |
| 63 | - scheduleSignalState.signalRetrospect(gps); | 67 | + //scheduleSignalState.signalRetrospect(gps); |
| 68 | + return false; | ||
| 64 | } | 69 | } |
| 65 | 70 | ||
| 66 | if(isNotEmpty(prevs)){ | 71 | if(isNotEmpty(prevs)){ |
| @@ -154,10 +159,9 @@ public class InOutStationSignalHandle extends SignalHandle{ | @@ -154,10 +159,9 @@ public class InOutStationSignalHandle extends SignalHandle{ | ||
| 154 | //清理应发未发标记 | 159 | //清理应发未发标记 |
| 155 | LateAdjustHandle.remove(sch); | 160 | LateAdjustHandle.remove(sch); |
| 156 | 161 | ||
| 157 | - if(sch.getBcType().equals("out")){ | ||
| 158 | - //出场时,切换成营运状态 | ||
| 159 | - DirectivePushQueue.put6003(sch.getClZbh(), 0, Integer.parseInt(sch.getXlDir()), null, "出场@系统"); | ||
| 160 | - //directiveService.send60Operation(sch.getClZbh(), 0, Integer.parseInt(sch.getXlDir()), null, "出场@系统"); | 162 | + if(!gps.isService()){ |
| 163 | + //切换成营运状态 | ||
| 164 | + gpsStatusManager.changeServiceState(sch.getClZbh(), sch.getXlDir(), 0, "发车@系统"); | ||
| 161 | } | 165 | } |
| 162 | //出站既出场 | 166 | //出站既出场 |
| 163 | outStationAndOutPark(sch); | 167 | outStationAndOutPark(sch); |
| @@ -232,11 +236,13 @@ public class InOutStationSignalHandle extends SignalHandle{ | @@ -232,11 +236,13 @@ public class InOutStationSignalHandle extends SignalHandle{ | ||
| 232 | sendUtils.refreshSch(schPrev); | 236 | sendUtils.refreshSch(schPrev); |
| 233 | dayOfSchedule.save(schPrev); | 237 | dayOfSchedule.save(schPrev); |
| 234 | 238 | ||
| 235 | - if(schPrev.getBcType().equals("out")){ | 239 | + /*if(schPrev.getBcType().equals("out")){ |
| 236 | //出场时,切换成营运状态 | 240 | //出场时,切换成营运状态 |
| 237 | - DirectivePushQueue.put6003(schPrev.getClZbh(), 0, Integer.parseInt(schPrev.getXlDir()), null, "出场@系统"); | 241 | + String deviceId = BasicData.deviceId2NbbmMap.inverse().get(sch.getClZbh()); |
| 242 | + gpsStatusManager.changeServiceState(deviceId, schPrev.getXlDir(), 0, "出场@系统"); | ||
| 243 | + //DirectivePushQueue.put6003(schPrev.getClZbh(), 0, Integer.parseInt(schPrev.getXlDir()), "出场@系统"); | ||
| 238 | //directiveService.send60Operation(schPrev.getClZbh(), 0, Integer.parseInt(schPrev.getXlDir()), null, "出场@系统"); | 244 | //directiveService.send60Operation(schPrev.getClZbh(), 0, Integer.parseInt(schPrev.getXlDir()), null, "出场@系统"); |
| 239 | - } | 245 | + }*/ |
| 240 | } | 246 | } |
| 241 | } | 247 | } |
| 242 | } | 248 | } |
| @@ -265,6 +271,15 @@ public class InOutStationSignalHandle extends SignalHandle{ | @@ -265,6 +271,15 @@ public class InOutStationSignalHandle extends SignalHandle{ | ||
| 265 | if(Math.abs(diff) > MAX_NORMAL_DIFF) | 271 | if(Math.abs(diff) > MAX_NORMAL_DIFF) |
| 266 | return; | 272 | return; |
| 267 | 273 | ||
| 274 | + //环线或内外圈 ,飘出去再回来 | ||
| 275 | + if(sch.getQdzCode().equals(sch.getZdzCode()) | ||
| 276 | + && StringUtils.isNotEmpty(sch.getFcsjActual()) | ||
| 277 | + && gps.getTimestamp() - sch.getFcsjActualTime() < 1000 * 60 * 3){ | ||
| 278 | + sch.clearFcsjActual(); | ||
| 279 | + sendUtils.refreshSch(sch); | ||
| 280 | + return; | ||
| 281 | + } | ||
| 282 | + | ||
| 268 | //实达时间不覆盖 | 283 | //实达时间不覆盖 |
| 269 | if(StringUtils.isNotEmpty(sch.getZdsjActual())) | 284 | if(StringUtils.isNotEmpty(sch.getZdsjActual())) |
| 270 | return; | 285 | return; |
| @@ -304,26 +319,23 @@ public class InOutStationSignalHandle extends SignalHandle{ | @@ -304,26 +319,23 @@ public class InOutStationSignalHandle extends SignalHandle{ | ||
| 304 | transformUpdown(gps, next); | 319 | transformUpdown(gps, next); |
| 305 | //下发调度指令 | 320 | //下发调度指令 |
| 306 | DirectivePushQueue.put6002(next, doneSum, "到站@系统"); | 321 | DirectivePushQueue.put6002(next, doneSum, "到站@系统"); |
| 307 | - //directiveService.send60Dispatch(next, doneSum, "到站@系统"); | ||
| 308 | 322 | ||
| 309 | //套跑 -下发线路切换指令 | 323 | //套跑 -下发线路切换指令 |
| 310 | if(!next.getXlBm().equals(sch.getXlBm())){ | 324 | if(!next.getXlBm().equals(sch.getXlBm())){ |
| 311 | - DirectivePushQueue.put64(next.getClZbh(), next.getXlBm(), "套跑@系统"); | ||
| 312 | - //directiveService.lineChange(next.getClZbh(), next.getXlBm(), "套跑@系统"); | 325 | + gpsStatusManager.changeLine(next.getClZbh(), next.getXlBm(), "套跑@系统"); |
| 313 | } | 326 | } |
| 314 | } | 327 | } |
| 315 | else if(sch.getBcType().equals("in")){ | 328 | else if(sch.getBcType().equals("in")){ |
| 316 | - //终班进场,切换成非营运状态 | ||
| 317 | - DirectivePushQueue.put6003(sch.getClZbh(), 1, Integer.parseInt(sch.getXlDir()), null, "进场@系统"); | ||
| 318 | - //directiveService.send60Operation(sch.getClZbh(), 1, Integer.parseInt(sch.getXlDir()), null, "进场@系统"); | 329 | + //进场,切换成非营运状态 |
| 330 | + gpsStatusManager.changeServiceState(sch.getClZbh(), sch.getXlDir(), 1, "进场@系统"); | ||
| 319 | } | 331 | } |
| 320 | } | 332 | } |
| 321 | else { | 333 | else { |
| 322 | - if(sch.getFcsjActual() == null){ | 334 | + /*if(sch.getFcsjActual() == null){ |
| 323 | //有进站,但班次没有实发,向前追溯一下信号 | 335 | //有进站,但班次没有实发,向前追溯一下信号 |
| 324 | scheduleSignalState.signalRetrospect(gps, sch); | 336 | scheduleSignalState.signalRetrospect(gps, sch); |
| 325 | } | 337 | } |
| 326 | - | 338 | +*/ |
| 327 | //如果当前班次是出场,并且进的是下一个班次的终点 | 339 | //如果当前班次是出场,并且进的是下一个班次的终点 |
| 328 | if(sch.getBcType().equals("out")){ | 340 | if(sch.getBcType().equals("out")){ |
| 329 | ScheduleRealInfo next = dayOfSchedule.next(sch); | 341 | ScheduleRealInfo next = dayOfSchedule.next(sch); |
| @@ -397,6 +409,9 @@ public class InOutStationSignalHandle extends SignalHandle{ | @@ -397,6 +409,9 @@ public class InOutStationSignalHandle extends SignalHandle{ | ||
| 397 | next = dayOfSchedule.next(next); | 409 | next = dayOfSchedule.next(next); |
| 398 | if(next != null) | 410 | if(next != null) |
| 399 | dayOfSchedule.addExecPlan(next); | 411 | dayOfSchedule.addExecPlan(next); |
| 412 | + | ||
| 413 | + //进场,切换成非营运状态 | ||
| 414 | + gpsStatusManager.changeServiceState(sch.getClZbh(), sch.getXlDir(), 1, "进场@系统"); | ||
| 400 | } | 415 | } |
| 401 | } | 416 | } |
| 402 | 417 |
src/main/java/com/bsth/data/gpsdata/arrival/handlers/OfflineSignalHandle.java
| @@ -23,7 +23,7 @@ public class OfflineSignalHandle extends SignalHandle{ | @@ -23,7 +23,7 @@ public class OfflineSignalHandle extends SignalHandle{ | ||
| 23 | public boolean handle(GpsEntity gps, CircleQueue<GpsEntity> prevs) { | 23 | public boolean handle(GpsEntity gps, CircleQueue<GpsEntity> prevs) { |
| 24 | //掉线信号不管 | 24 | //掉线信号不管 |
| 25 | if(isGpsOffline(gps)){ | 25 | if(isGpsOffline(gps)){ |
| 26 | - gps.setSignalState("drift"); | 26 | + gps.setSignalState("gps-offline"); |
| 27 | gps.setAbnormalStatus("gps-offline"); | 27 | gps.setAbnormalStatus("gps-offline"); |
| 28 | return true; | 28 | return true; |
| 29 | } | 29 | } |
src/main/java/com/bsth/data/gpsdata/recovery/GpsDataRecovery.java
| @@ -84,7 +84,7 @@ public class GpsDataRecovery implements ApplicationContextAware { | @@ -84,7 +84,7 @@ public class GpsDataRecovery implements ApplicationContextAware { | ||
| 84 | Calendar calendar = Calendar.getInstance(); | 84 | Calendar calendar = Calendar.getInstance(); |
| 85 | int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR); | 85 | int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR); |
| 86 | 86 | ||
| 87 | - String sql = "select DEVICE_ID,LAT,LON,TS,SPEED_GPS,LINE_ID,SERVICE_STATE from bsth_c_gps_info where days_year=" + dayOfYear; | 87 | + String sql = "select DEVICE_ID,LAT,LON,TS,SPEED_GPS,LINE_ID,SERVICE_STATE from bsth_c_gps_info where days_year=194";// + dayOfYear; |
| 88 | JdbcTemplate jdbcTemplate = new JdbcTemplate(DBUtils_MS.getDataSource()); | 88 | JdbcTemplate jdbcTemplate = new JdbcTemplate(DBUtils_MS.getDataSource()); |
| 89 | 89 | ||
| 90 | List<GpsEntity> list = | 90 | List<GpsEntity> list = |
src/main/java/com/bsth/data/gpsdata/status_manager/GpsStatusManager.java
0 → 100644
| 1 | +package com.bsth.data.gpsdata.status_manager; | ||
| 2 | + | ||
| 3 | +import com.bsth.Application; | ||
| 4 | +import com.bsth.data.gpsdata.status_manager.gps_line_state.LineStateHandle; | ||
| 5 | +import com.bsth.data.gpsdata.status_manager.gps_service_state.ServiceStateHandle; | ||
| 6 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 7 | +import org.springframework.boot.CommandLineRunner; | ||
| 8 | +import org.springframework.stereotype.Component; | ||
| 9 | + | ||
| 10 | +import java.util.concurrent.TimeUnit; | ||
| 11 | + | ||
| 12 | +/** | ||
| 13 | + * GPS 状态管理 | ||
| 14 | + * Created by panzhao on 2017/7/13. | ||
| 15 | + */ | ||
| 16 | +@Component | ||
| 17 | +public class GpsStatusManager implements CommandLineRunner { | ||
| 18 | + | ||
| 19 | + @Autowired | ||
| 20 | + StatusCheckThread checkThread; | ||
| 21 | + | ||
| 22 | + @Autowired | ||
| 23 | + LineStateHandle lineStateHandle; | ||
| 24 | + | ||
| 25 | + @Autowired | ||
| 26 | + ServiceStateHandle serviceStateHandle; | ||
| 27 | + | ||
| 28 | + /** | ||
| 29 | + * 切换线路 | ||
| 30 | + * @param nbbm | ||
| 31 | + * @param lineCode | ||
| 32 | + * @param sender | ||
| 33 | + */ | ||
| 34 | + public void changeLine(String nbbm, String lineCode, String sender){ | ||
| 35 | + lineStateHandle.changeLine(nbbm, lineCode, sender); | ||
| 36 | + } | ||
| 37 | + | ||
| 38 | + /** | ||
| 39 | + * 切换营运状态 | ||
| 40 | + * @param nbbm | ||
| 41 | + * @param state 0 营运, 1:非营运 | ||
| 42 | + * @param sender | ||
| 43 | + */ | ||
| 44 | + public void changeServiceState(String nbbm, String upDown,int state, String sender){ | ||
| 45 | + changeServiceState(nbbm, Integer.parseInt(upDown), state, sender); | ||
| 46 | + } | ||
| 47 | + | ||
| 48 | + /** | ||
| 49 | + * 切换营运状态 | ||
| 50 | + * @param nbbm | ||
| 51 | + * @param state 0 营运, 1:非营运 | ||
| 52 | + * @param sender | ||
| 53 | + */ | ||
| 54 | + public void changeServiceState(String nbbm, int upDown,int state, String sender){ | ||
| 55 | + serviceStateHandle.changeState(nbbm, upDown, state, sender); | ||
| 56 | + } | ||
| 57 | + | ||
| 58 | + @Override | ||
| 59 | + public void run(String... strings) throws Exception { | ||
| 60 | + Application.mainServices.scheduleWithFixedDelay(checkThread, 120, 120, TimeUnit.SECONDS); | ||
| 61 | + } | ||
| 62 | + | ||
| 63 | + @Component | ||
| 64 | + public static class StatusCheckThread extends Thread{ | ||
| 65 | + | ||
| 66 | + @Autowired | ||
| 67 | + LineStateHandle lineStateHandle; | ||
| 68 | + | ||
| 69 | + @Autowired | ||
| 70 | + ServiceStateHandle serviceStateHandle; | ||
| 71 | + | ||
| 72 | + @Override | ||
| 73 | + public void run() { | ||
| 74 | + /** 检查线路切换结果 */ | ||
| 75 | + lineStateHandle.checkResultAll(); | ||
| 76 | + /** 检查营运状态切换结果 */ | ||
| 77 | + serviceStateHandle.checkResultAll(); | ||
| 78 | + } | ||
| 79 | + } | ||
| 80 | +} |
src/main/java/com/bsth/data/gpsdata/status_manager/gps_line_state/ChangeBean.java
0 → 100644
| 1 | +package com.bsth.data.gpsdata.status_manager.gps_line_state; | ||
| 2 | + | ||
| 3 | +/** | ||
| 4 | + * Created by panzhao on 2017/7/13. | ||
| 5 | + */ | ||
| 6 | +public class ChangeBean { | ||
| 7 | + | ||
| 8 | + /** | ||
| 9 | + * 车辆自编号 | ||
| 10 | + */ | ||
| 11 | + private String nbbm; | ||
| 12 | + | ||
| 13 | + /** | ||
| 14 | + * 要切换到的线路 | ||
| 15 | + */ | ||
| 16 | + private String lineCode; | ||
| 17 | + | ||
| 18 | + /** | ||
| 19 | + * 指令发送次数 | ||
| 20 | + */ | ||
| 21 | + private int sendCount; | ||
| 22 | + | ||
| 23 | + /** | ||
| 24 | + * 上次指令时间 | ||
| 25 | + */ | ||
| 26 | + private long st; | ||
| 27 | + | ||
| 28 | + /**发送人 */ | ||
| 29 | + private String sender; | ||
| 30 | + | ||
| 31 | + public static ChangeBean getInstance(String nbbm, String lineCode, String sender){ | ||
| 32 | + ChangeBean cb = new ChangeBean(); | ||
| 33 | + cb.setNbbm(nbbm); | ||
| 34 | + cb.setLineCode(lineCode); | ||
| 35 | + cb.setSendCount(0); | ||
| 36 | + cb.setSender(sender); | ||
| 37 | + return cb; | ||
| 38 | + } | ||
| 39 | + | ||
| 40 | + public void countPlus(){ | ||
| 41 | + sendCount ++; | ||
| 42 | + } | ||
| 43 | + | ||
| 44 | + public String getLineCode() { | ||
| 45 | + return lineCode; | ||
| 46 | + } | ||
| 47 | + | ||
| 48 | + public void setLineCode(String lineCode) { | ||
| 49 | + this.lineCode = lineCode; | ||
| 50 | + } | ||
| 51 | + | ||
| 52 | + public int getSendCount() { | ||
| 53 | + return sendCount; | ||
| 54 | + } | ||
| 55 | + | ||
| 56 | + public void setSendCount(int sendCount) { | ||
| 57 | + this.sendCount = sendCount; | ||
| 58 | + } | ||
| 59 | + | ||
| 60 | + public long getSt() { | ||
| 61 | + return st; | ||
| 62 | + } | ||
| 63 | + | ||
| 64 | + public void setSt(long st) { | ||
| 65 | + this.st = st; | ||
| 66 | + } | ||
| 67 | + | ||
| 68 | + public String getSender() { | ||
| 69 | + return sender; | ||
| 70 | + } | ||
| 71 | + | ||
| 72 | + public void setSender(String sender) { | ||
| 73 | + this.sender = sender; | ||
| 74 | + } | ||
| 75 | + | ||
| 76 | + public String getNbbm() { | ||
| 77 | + return nbbm; | ||
| 78 | + } | ||
| 79 | + | ||
| 80 | + public void setNbbm(String nbbm) { | ||
| 81 | + this.nbbm = nbbm; | ||
| 82 | + } | ||
| 83 | +} |
src/main/java/com/bsth/data/gpsdata/status_manager/gps_line_state/LineStateHandle.java
0 → 100644
| 1 | +package com.bsth.data.gpsdata.status_manager.gps_line_state; | ||
| 2 | + | ||
| 3 | +import com.bsth.data.gpsdata.GpsEntity; | ||
| 4 | +import com.bsth.data.gpsdata.GpsRealData; | ||
| 5 | +import com.bsth.data.msg_queue.DirectivePushQueue; | ||
| 6 | +import com.bsth.service.directive.DirectiveService; | ||
| 7 | +import org.slf4j.Logger; | ||
| 8 | +import org.slf4j.LoggerFactory; | ||
| 9 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 10 | +import org.springframework.stereotype.Component; | ||
| 11 | + | ||
| 12 | +import java.util.Collection; | ||
| 13 | +import java.util.concurrent.ConcurrentHashMap; | ||
| 14 | + | ||
| 15 | +/** | ||
| 16 | + * 设备线路状态处理 | ||
| 17 | + * Created by panzhao on 2017/7/13. | ||
| 18 | + */ | ||
| 19 | +@Component | ||
| 20 | +public class LineStateHandle { | ||
| 21 | + | ||
| 22 | + private static ConcurrentHashMap<String, ChangeBean> map; | ||
| 23 | + | ||
| 24 | + @Autowired | ||
| 25 | + DirectiveService directiveService; | ||
| 26 | + @Autowired | ||
| 27 | + GpsRealData gpsRealData; | ||
| 28 | + | ||
| 29 | + Logger logger = LoggerFactory.getLogger(this.getClass()); | ||
| 30 | + | ||
| 31 | + /** 重发次数 */ | ||
| 32 | + private final static int MAX_SEND_COUNT=3; | ||
| 33 | + /** 重发间隔 */ | ||
| 34 | + private final static int SEND_SPACE=1000 * 60 * 5; | ||
| 35 | + /** 最大有效时间 */ | ||
| 36 | + private final static int MAX_AVAIL_TIME=1000 * 60 * 60 * 2; | ||
| 37 | + | ||
| 38 | + static{ | ||
| 39 | + map = new ConcurrentHashMap(); | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + public void changeLine(String nbbm, String lineCode, String sender){ | ||
| 43 | + ChangeBean cb = map.get(nbbm); | ||
| 44 | + if(cb != null && cb.getLineCode().equals(lineCode)){ | ||
| 45 | + return; | ||
| 46 | + } | ||
| 47 | + | ||
| 48 | + cb = ChangeBean.getInstance(nbbm, lineCode, sender); | ||
| 49 | + map.put(nbbm, cb); | ||
| 50 | + | ||
| 51 | + changeLine(cb); | ||
| 52 | + } | ||
| 53 | + | ||
| 54 | + private void changeLine(ChangeBean cb){ | ||
| 55 | + cb.setSt(System.currentTimeMillis()); | ||
| 56 | + cb.countPlus(); | ||
| 57 | + DirectivePushQueue.put64(cb.getNbbm(), cb.getLineCode(), cb.getSender()); | ||
| 58 | + } | ||
| 59 | + | ||
| 60 | + | ||
| 61 | + public void checkResultAll(){ | ||
| 62 | + Collection<ChangeBean> cbs = map.values(); | ||
| 63 | + for(ChangeBean cb : cbs){ | ||
| 64 | + checkResult(cb); | ||
| 65 | + } | ||
| 66 | + } | ||
| 67 | + | ||
| 68 | + private void checkResult(ChangeBean cb){ | ||
| 69 | + try{ | ||
| 70 | + GpsEntity gps = gpsRealData.getByNbbm(cb.getNbbm()); | ||
| 71 | + if(gps == null) | ||
| 72 | + return; | ||
| 73 | + | ||
| 74 | + if(cb.getLineCode().equals(gps.getLineId())){ | ||
| 75 | + map.remove(cb.getNbbm()); | ||
| 76 | + logger.info("线路切换成功," + cb.getNbbm() + "、" + cb.getLineCode()); | ||
| 77 | + } | ||
| 78 | + else{ | ||
| 79 | + reSend(cb); | ||
| 80 | + } | ||
| 81 | + }catch (Exception e){ | ||
| 82 | + logger.error("", e); | ||
| 83 | + } | ||
| 84 | + } | ||
| 85 | + | ||
| 86 | + private void reSend(ChangeBean cb){ | ||
| 87 | + if(cb.getSendCount() >= MAX_SEND_COUNT){ | ||
| 88 | + map.remove(cb.getNbbm()); | ||
| 89 | + logger.info("超过重发次数," + cb.getNbbm() + "、" + cb.getLineCode()); | ||
| 90 | + return; | ||
| 91 | + } | ||
| 92 | + | ||
| 93 | + long diff = System.currentTimeMillis() - cb.getSt(); | ||
| 94 | + if(diff >= MAX_AVAIL_TIME){ | ||
| 95 | + map.remove(cb.getNbbm()); | ||
| 96 | + logger.info("超过有效时间," + cb.getNbbm() + "、" + cb.getLineCode() + "、" + cb.getSt()); | ||
| 97 | + return; | ||
| 98 | + } | ||
| 99 | + | ||
| 100 | + if(diff >= SEND_SPACE){ | ||
| 101 | + cb.setSender("补发@系统"); | ||
| 102 | + changeLine(cb); | ||
| 103 | + logger.info("重发线路切换指令," + cb.getNbbm() + "、" + cb.getLineCode()); | ||
| 104 | + return; | ||
| 105 | + } | ||
| 106 | + } | ||
| 107 | +} |
src/main/java/com/bsth/data/gpsdata/status_manager/gps_service_state/ServiceStateHandle.java
0 → 100644
| 1 | +package com.bsth.data.gpsdata.status_manager.gps_service_state; | ||
| 2 | + | ||
| 3 | +import com.bsth.data.gpsdata.GpsEntity; | ||
| 4 | +import com.bsth.data.gpsdata.GpsRealData; | ||
| 5 | +import com.bsth.data.msg_queue.DirectivePushQueue; | ||
| 6 | +import com.bsth.service.directive.DirectiveService; | ||
| 7 | +import org.slf4j.Logger; | ||
| 8 | +import org.slf4j.LoggerFactory; | ||
| 9 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 10 | +import org.springframework.stereotype.Component; | ||
| 11 | + | ||
| 12 | +import java.util.Collection; | ||
| 13 | +import java.util.concurrent.ConcurrentHashMap; | ||
| 14 | + | ||
| 15 | +/** | ||
| 16 | + * 设备营运状态处理 | ||
| 17 | + * Created by panzhao on 2017/7/13. | ||
| 18 | + */ | ||
| 19 | +@Component | ||
| 20 | +public class ServiceStateHandle { | ||
| 21 | + | ||
| 22 | + private static ConcurrentHashMap<String, StateBean> map; | ||
| 23 | + | ||
| 24 | + @Autowired | ||
| 25 | + DirectiveService directiveService; | ||
| 26 | + @Autowired | ||
| 27 | + GpsRealData gpsRealData; | ||
| 28 | + | ||
| 29 | + Logger logger = LoggerFactory.getLogger(this.getClass()); | ||
| 30 | + | ||
| 31 | + /** 重发次数 */ | ||
| 32 | + private final static int MAX_SEND_COUNT=3; | ||
| 33 | + /** 重发间隔 */ | ||
| 34 | + private final static int SEND_SPACE=1000 * 60 * 4; | ||
| 35 | + /** 最大有效时间 */ | ||
| 36 | + private final static int MAX_AVAIL_TIME=1000 * 60 * 60; | ||
| 37 | + | ||
| 38 | + static{ | ||
| 39 | + map = new ConcurrentHashMap(); | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + public void changeState(String nbbm, int upDown ,int state, String sender){ | ||
| 43 | + if(map.containsKey(nbbm)){ | ||
| 44 | + return; | ||
| 45 | + } | ||
| 46 | + StateBean sb = StateBean.getInstance(nbbm, upDown, state, sender); | ||
| 47 | + map.put(nbbm, sb); | ||
| 48 | + changeState(sb); | ||
| 49 | + } | ||
| 50 | + | ||
| 51 | + private void changeState(StateBean sb){ | ||
| 52 | + sb.setSt(System.currentTimeMillis()); | ||
| 53 | + sb.countPlus(); | ||
| 54 | + DirectivePushQueue.put6003(sb.getNbbm(), sb.getState(), sb.getUpDown(), sb.getSender()); | ||
| 55 | + } | ||
| 56 | + | ||
| 57 | + public void checkResultAll(){ | ||
| 58 | + Collection<StateBean> sbs = map.values(); | ||
| 59 | + for(StateBean sb : sbs){ | ||
| 60 | + checkResult(sb); | ||
| 61 | + } | ||
| 62 | + } | ||
| 63 | + | ||
| 64 | + private void checkResult(StateBean sb){ | ||
| 65 | + try{ | ||
| 66 | + GpsEntity gps = gpsRealData.getByNbbm(sb.getNbbm()); | ||
| 67 | + if(gps == null) | ||
| 68 | + return; | ||
| 69 | + | ||
| 70 | + if(gps.getState().equals(sb.getState())){ | ||
| 71 | + map.remove(sb.getNbbm()); | ||
| 72 | + logger.info("营运状态切换成功," + sb.getNbbm() + "、" + sb.getState()); | ||
| 73 | + } | ||
| 74 | + else | ||
| 75 | + reSend(sb); | ||
| 76 | + }catch (Exception e){ | ||
| 77 | + logger.error("", e); | ||
| 78 | + } | ||
| 79 | + } | ||
| 80 | + | ||
| 81 | + private void reSend(StateBean sb){ | ||
| 82 | + if(sb.getSendCount() >= MAX_SEND_COUNT){ | ||
| 83 | + map.remove(sb.getNbbm()); | ||
| 84 | + logger.info("超过重发次数," + sb.getNbbm() + "、" + sb.getState()); | ||
| 85 | + return; | ||
| 86 | + } | ||
| 87 | + | ||
| 88 | + long diff = System.currentTimeMillis() - sb.getSt(); | ||
| 89 | + if(diff >= MAX_AVAIL_TIME){ | ||
| 90 | + map.remove(sb.getNbbm()); | ||
| 91 | + logger.info("营运状态切换超过有效时间," + sb.getNbbm() + "、" + sb.getState() + "、" + sb.getSt()); | ||
| 92 | + return; | ||
| 93 | + } | ||
| 94 | + | ||
| 95 | + if(diff >= SEND_SPACE){ | ||
| 96 | + sb.setSender("补发@系统"); | ||
| 97 | + changeState(sb); | ||
| 98 | + logger.info("重发营运状态切换指令," + sb.getNbbm() + "、" + sb.getState()); | ||
| 99 | + return; | ||
| 100 | + } | ||
| 101 | + } | ||
| 102 | +} |
src/main/java/com/bsth/data/gpsdata/status_manager/gps_service_state/StateBean.java
0 → 100644
| 1 | +package com.bsth.data.gpsdata.status_manager.gps_service_state; | ||
| 2 | + | ||
| 3 | +/** | ||
| 4 | + * Created by panzhao on 2017/7/13. | ||
| 5 | + */ | ||
| 6 | +public class StateBean { | ||
| 7 | + | ||
| 8 | + /** | ||
| 9 | + * 车辆自编号 | ||
| 10 | + */ | ||
| 11 | + private String nbbm; | ||
| 12 | + | ||
| 13 | + /** | ||
| 14 | + * 要切换到营运状态 | ||
| 15 | + */ | ||
| 16 | + private int state; | ||
| 17 | + | ||
| 18 | + /** | ||
| 19 | + * 要切换到的上下行 | ||
| 20 | + */ | ||
| 21 | + private int upDown; | ||
| 22 | + | ||
| 23 | + /** | ||
| 24 | + * 指令发送次数 | ||
| 25 | + */ | ||
| 26 | + private int sendCount; | ||
| 27 | + | ||
| 28 | + /** | ||
| 29 | + * 上次指令时间 | ||
| 30 | + */ | ||
| 31 | + private long st; | ||
| 32 | + | ||
| 33 | + /**发送人 */ | ||
| 34 | + private String sender; | ||
| 35 | + | ||
| 36 | + public static StateBean getInstance(String nbbm, int upDown, int state, String sender){ | ||
| 37 | + StateBean sb = new StateBean(); | ||
| 38 | + sb.setNbbm(nbbm); | ||
| 39 | + sb.setState(state); | ||
| 40 | + sb.setSendCount(0); | ||
| 41 | + sb.setSender(sender); | ||
| 42 | + sb.setUpDown(upDown); | ||
| 43 | + return sb; | ||
| 44 | + } | ||
| 45 | + | ||
| 46 | + public int getState() { | ||
| 47 | + return state; | ||
| 48 | + } | ||
| 49 | + | ||
| 50 | + public void setState(int state) { | ||
| 51 | + this.state = state; | ||
| 52 | + } | ||
| 53 | + | ||
| 54 | + public int getSendCount() { | ||
| 55 | + return sendCount; | ||
| 56 | + } | ||
| 57 | + | ||
| 58 | + public void setSendCount(int sendCount) { | ||
| 59 | + this.sendCount = sendCount; | ||
| 60 | + } | ||
| 61 | + | ||
| 62 | + public long getSt() { | ||
| 63 | + return st; | ||
| 64 | + } | ||
| 65 | + | ||
| 66 | + public void setSt(long st) { | ||
| 67 | + this.st = st; | ||
| 68 | + } | ||
| 69 | + | ||
| 70 | + public String getSender() { | ||
| 71 | + return sender; | ||
| 72 | + } | ||
| 73 | + | ||
| 74 | + public void setSender(String sender) { | ||
| 75 | + this.sender = sender; | ||
| 76 | + } | ||
| 77 | + | ||
| 78 | + public void countPlus(){ | ||
| 79 | + sendCount ++; | ||
| 80 | + } | ||
| 81 | + | ||
| 82 | + public int getUpDown() { | ||
| 83 | + return upDown; | ||
| 84 | + } | ||
| 85 | + | ||
| 86 | + public void setUpDown(int upDown) { | ||
| 87 | + this.upDown = upDown; | ||
| 88 | + } | ||
| 89 | + | ||
| 90 | + public String getNbbm() { | ||
| 91 | + return nbbm; | ||
| 92 | + } | ||
| 93 | + | ||
| 94 | + public void setNbbm(String nbbm) { | ||
| 95 | + this.nbbm = nbbm; | ||
| 96 | + } | ||
| 97 | +} |
src/main/java/com/bsth/data/msg_queue/DirectivePushQueue.java
| @@ -39,12 +39,12 @@ public class DirectivePushQueue implements CommandLineRunner, ApplicationContext | @@ -39,12 +39,12 @@ public class DirectivePushQueue implements CommandLineRunner, ApplicationContext | ||
| 39 | linkedList.add(qd6002); | 39 | linkedList.add(qd6002); |
| 40 | } | 40 | } |
| 41 | 41 | ||
| 42 | - public static void put6003(String nbbm, int state, int upDown, ScheduleRealInfo sch, String sender){ | 42 | + public static void put6003(String nbbm, int state, int upDown, String sender){ |
| 43 | QueueData_Directive qd6003 = new QueueData_Directive(); | 43 | QueueData_Directive qd6003 = new QueueData_Directive(); |
| 44 | qd6003.setNbbm(nbbm); | 44 | qd6003.setNbbm(nbbm); |
| 45 | qd6003.setState(state); | 45 | qd6003.setState(state); |
| 46 | qd6003.setUpDown(upDown); | 46 | qd6003.setUpDown(upDown); |
| 47 | - qd6003.setSch(sch); | 47 | + //qd6003.setSch(sch); |
| 48 | qd6003.setSender(sender); | 48 | qd6003.setSender(sender); |
| 49 | 49 | ||
| 50 | qd6003.setCode("60_03"); | 50 | qd6003.setCode("60_03"); |
| @@ -111,7 +111,7 @@ public class DirectivePushQueue implements CommandLineRunner, ApplicationContext | @@ -111,7 +111,7 @@ public class DirectivePushQueue implements CommandLineRunner, ApplicationContext | ||
| 111 | log.info("directive 60_02 sch id: " + qd.getSch().getId()); | 111 | log.info("directive 60_02 sch id: " + qd.getSch().getId()); |
| 112 | } | 112 | } |
| 113 | else if(code.equals("60_03")){ | 113 | else if(code.equals("60_03")){ |
| 114 | - directiveService.send60Operation(qd.getNbbm(), qd.getState(), qd.getUpDown(), null, qd.getSender()); | 114 | + directiveService.send60Operation(qd.getNbbm(), qd.getState(), qd.getUpDown(), qd.getSender()); |
| 115 | log.info("directive 60_03 nbbm: " + qd.getNbbm()); | 115 | log.info("directive 60_03 nbbm: " + qd.getNbbm()); |
| 116 | } | 116 | } |
| 117 | else if(code.equals("64")){ | 117 | else if(code.equals("64")){ |
src/main/java/com/bsth/data/pilot80/PilotReport.java
| @@ -2,7 +2,9 @@ package com.bsth.data.pilot80; | @@ -2,7 +2,9 @@ package com.bsth.data.pilot80; | ||
| 2 | 2 | ||
| 3 | import com.bsth.data.BasicData; | 3 | import com.bsth.data.BasicData; |
| 4 | import com.bsth.data.LineConfigData; | 4 | import com.bsth.data.LineConfigData; |
| 5 | +import com.bsth.data.gpsdata.GpsEntity; | ||
| 5 | import com.bsth.data.gpsdata.GpsRealData; | 6 | import com.bsth.data.gpsdata.GpsRealData; |
| 7 | +import com.bsth.data.gpsdata.status_manager.GpsStatusManager; | ||
| 6 | import com.bsth.data.msg_queue.DirectivePushQueue; | 8 | import com.bsth.data.msg_queue.DirectivePushQueue; |
| 7 | import com.bsth.data.schedule.DayOfSchedule; | 9 | import com.bsth.data.schedule.DayOfSchedule; |
| 8 | import com.bsth.entity.Line; | 10 | import com.bsth.entity.Line; |
| @@ -51,6 +53,9 @@ public class PilotReport { | @@ -51,6 +53,9 @@ public class PilotReport { | ||
| 51 | @Autowired | 53 | @Autowired |
| 52 | DC0A4Repository dc0A4Repository; | 54 | DC0A4Repository dc0A4Repository; |
| 53 | 55 | ||
| 56 | + @Autowired | ||
| 57 | + GpsStatusManager gpsStatusManager; | ||
| 58 | + | ||
| 54 | //private static ArrayListMultimap<String, D80> d80MultiMap; | 59 | //private static ArrayListMultimap<String, D80> d80MultiMap; |
| 55 | 60 | ||
| 56 | private static ConcurrentHashMap<Integer, D80> d80Maps; | 61 | private static ConcurrentHashMap<Integer, D80> d80Maps; |
| @@ -80,14 +85,26 @@ public class PilotReport { | @@ -80,14 +85,26 @@ public class PilotReport { | ||
| 80 | ScheduleRealInfo outSch = dayOfSchedule.searchNearByBcType(nbbm, "out"); | 85 | ScheduleRealInfo outSch = dayOfSchedule.searchNearByBcType(nbbm, "out"); |
| 81 | //如果有对应出场班次 | 86 | //如果有对应出场班次 |
| 82 | if (outSch != null) { | 87 | if (outSch != null) { |
| 83 | - //没有计划里程的出场班次,出场既是首发站,发送下一班次的营运指令 | 88 | + //没有计划里程的出场班次,出场既是首发站,发送下一班次的调度指令 |
| 84 | if (outSch.getJhlc() == null) | 89 | if (outSch.getJhlc() == null) |
| 85 | outSch = dayOfSchedule.next(outSch); | 90 | outSch = dayOfSchedule.next(outSch); |
| 86 | 91 | ||
| 87 | //下发调度指令 | 92 | //下发调度指令 |
| 93 | + String deviceId = d80.getDeviceId(); | ||
| 88 | DirectivePushQueue.put6002(outSch, dayOfSchedule.doneSum(nbbm), "请出@系统"); | 94 | DirectivePushQueue.put6002(outSch, dayOfSchedule.doneSum(nbbm), "请出@系统"); |
| 95 | + | ||
| 89 | //下发线路切换指令 | 96 | //下发线路切换指令 |
| 90 | DirectivePushQueue.put64(outSch.getClZbh(), outSch.getXlBm(), "请出@系统"); | 97 | DirectivePushQueue.put64(outSch.getClZbh(), outSch.getXlBm(), "请出@系统"); |
| 98 | + | ||
| 99 | + try { | ||
| 100 | + GpsEntity gps = gpsRealData.get(deviceId); | ||
| 101 | + if(gps != null && !gps.isService()){ | ||
| 102 | + //切换到营运状态 | ||
| 103 | + gpsStatusManager.changeServiceState(nbbm, outSch.getXlDir() ,0, "请出@系统"); | ||
| 104 | + } | ||
| 105 | + }catch (Exception e){ | ||
| 106 | + logger.error("请出切换营运状态异常", e); | ||
| 107 | + } | ||
| 91 | } | 108 | } |
| 92 | break; | 109 | break; |
| 93 | } | 110 | } |
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
| @@ -4,12 +4,9 @@ import com.alibaba.fastjson.JSON; | @@ -4,12 +4,9 @@ import com.alibaba.fastjson.JSON; | ||
| 4 | import com.alibaba.fastjson.JSONArray; | 4 | import com.alibaba.fastjson.JSONArray; |
| 5 | import com.bsth.common.Constants; | 5 | import com.bsth.common.Constants; |
| 6 | import com.bsth.common.ResponseCode; | 6 | import com.bsth.common.ResponseCode; |
| 7 | -import com.bsth.data.BasicData; | ||
| 8 | import com.bsth.data.LineConfigData; | 7 | import com.bsth.data.LineConfigData; |
| 9 | -import com.bsth.data.gpsdata.GpsEntity; | ||
| 10 | import com.bsth.data.gpsdata.GpsRealData; | 8 | import com.bsth.data.gpsdata.GpsRealData; |
| 11 | import com.bsth.data.gpsdata.recovery.GpsDataRecovery; | 9 | import com.bsth.data.gpsdata.recovery.GpsDataRecovery; |
| 12 | -import com.bsth.data.msg_queue.DirectivePushQueue; | ||
| 13 | import com.bsth.entity.realcontrol.LineConfig; | 10 | import com.bsth.entity.realcontrol.LineConfig; |
| 14 | import com.bsth.entity.realcontrol.ScheduleRealInfo; | 11 | import com.bsth.entity.realcontrol.ScheduleRealInfo; |
| 15 | import com.bsth.entity.schedule.SchedulePlanInfo; | 12 | import com.bsth.entity.schedule.SchedulePlanInfo; |
| @@ -949,7 +946,31 @@ public class DayOfSchedule { | @@ -949,7 +946,31 @@ public class DayOfSchedule { | ||
| 949 | ScheduleRealInfo sch = schAttrCalculator.calcCurrentExecSch(list); | 946 | ScheduleRealInfo sch = schAttrCalculator.calcCurrentExecSch(list); |
| 950 | carExecutePlanMap.put(nbbm, sch); | 947 | carExecutePlanMap.put(nbbm, sch); |
| 951 | 948 | ||
| 952 | - try { | 949 | + |
| 950 | + /* try{ | ||
| 951 | + GpsEntity gps = gpsRealData.get(BasicData.deviceId2NbbmMap.inverse().get(nbbm)); | ||
| 952 | + if (gps == null || !gps.isOnline()) | ||
| 953 | + return;//设备不在线 | ||
| 954 | + | ||
| 955 | + *//*if(sch == null && gps.isService()) | ||
| 956 | + DirectivePushQueue.put6003(nbbm, 1, 0, null, "系统");//无任务*//* | ||
| 957 | + | ||
| 958 | + //String bcType = sch.getBcType(); | ||
| 959 | + *//*if(bcType.equals("normal") | ||
| 960 | + || bcType.equals("region") | ||
| 961 | + || bcType.equals("major")){ | ||
| 962 | + //全程、区间、放站,切换到营运状态 | ||
| 963 | + if(!gps.isService()){ | ||
| 964 | + DirectivePushQueue.put6003(nbbm, 0, Integer.parseInt(sch.getXlDir()), sch, "系统"); | ||
| 965 | + } | ||
| 966 | + } | ||
| 967 | + else if(gps.isService()){ | ||
| 968 | + DirectivePushQueue.put6003(nbbm, 1, 0, null, "系统");//空驶任务 | ||
| 969 | + }*//* | ||
| 970 | + }catch (Exception e){ | ||
| 971 | + logger.error("", e); | ||
| 972 | + } | ||
| 973 | + *//*try { | ||
| 953 | //切换设备状态 | 974 | //切换设备状态 |
| 954 | GpsEntity gps = gpsRealData.get(BasicData.deviceId2NbbmMap.inverse().get(nbbm)); | 975 | GpsEntity gps = gpsRealData.get(BasicData.deviceId2NbbmMap.inverse().get(nbbm)); |
| 955 | if (gps == null || !gps.isOnline()) | 976 | if (gps == null || !gps.isOnline()) |
| @@ -967,7 +988,18 @@ public class DayOfSchedule { | @@ -967,7 +988,18 @@ public class DayOfSchedule { | ||
| 967 | } | 988 | } |
| 968 | } catch (Exception e) { | 989 | } catch (Exception e) { |
| 969 | logger.error("", e); | 990 | logger.error("", e); |
| 970 | - } | 991 | + }*/ |
| 992 | + } | ||
| 993 | + | ||
| 994 | + /** | ||
| 995 | + * 空驶任务? | ||
| 996 | + * 出场、进场、直放、两点间空驶 | ||
| 997 | + * @param sch | ||
| 998 | + * @return | ||
| 999 | + */ | ||
| 1000 | + public static boolean emptyService(ScheduleRealInfo sch){ | ||
| 1001 | + String type = sch.getBcType(); | ||
| 1002 | + return type.equals("out") || type.equals("in") || type.equals("venting") || type.equals("ldks"); | ||
| 971 | } | 1003 | } |
| 972 | 1004 | ||
| 973 | /** | 1005 | /** |
| @@ -975,7 +1007,7 @@ public class DayOfSchedule { | @@ -975,7 +1007,7 @@ public class DayOfSchedule { | ||
| 975 | * | 1007 | * |
| 976 | * @param nbbm | 1008 | * @param nbbm |
| 977 | * @return | 1009 | * @return |
| 978 | - */ | 1010 | + |
| 979 | public boolean isExecFirstOut(String nbbm, long time) { | 1011 | public boolean isExecFirstOut(String nbbm, long time) { |
| 980 | try { | 1012 | try { |
| 981 | List<ScheduleRealInfo> list = nbbmScheduleMap.get(nbbm); | 1013 | List<ScheduleRealInfo> list = nbbmScheduleMap.get(nbbm); |
| @@ -991,7 +1023,7 @@ public class DayOfSchedule { | @@ -991,7 +1023,7 @@ public class DayOfSchedule { | ||
| 991 | } | 1023 | } |
| 992 | 1024 | ||
| 993 | return false; | 1025 | return false; |
| 994 | - } | 1026 | + }*/ |
| 995 | 1027 | ||
| 996 | 1028 | ||
| 997 | @Autowired | 1029 | @Autowired |
src/main/java/com/bsth/entity/realcontrol/ScheduleType.java deleted
100644 → 0
src/main/java/com/bsth/service/directive/DirectiveService.java
| @@ -44,7 +44,7 @@ public interface DirectiveService extends BaseService<D60, Integer>{ | @@ -44,7 +44,7 @@ public interface DirectiveService extends BaseService<D60, Integer>{ | ||
| 44 | int send60Dispatch(Long id, String sender); | 44 | int send60Dispatch(Long id, String sender); |
| 45 | 45 | ||
| 46 | //60营运指令 | 46 | //60营运指令 |
| 47 | - int send60Operation(String nbbm, int state, int upDown, ScheduleRealInfo sch, String sender); | 47 | + int send60Operation(String nbbm, int state, int upDown, String sender); |
| 48 | 48 | ||
| 49 | /** | 49 | /** |
| 50 | * | 50 | * |
| @@ -66,7 +66,7 @@ public interface DirectiveService extends BaseService<D60, Integer>{ | @@ -66,7 +66,7 @@ public interface DirectiveService extends BaseService<D60, Integer>{ | ||
| 66 | * @param @param upDonw 上下行 0 上行 1 下行 | 66 | * @param @param upDonw 上下行 0 上行 1 下行 |
| 67 | * @throws | 67 | * @throws |
| 68 | */ | 68 | */ |
| 69 | - int upDownChange(String nbbm, Integer upDown, String sender); | 69 | + //int upDownChange(String nbbm, Integer upDown, String sender); |
| 70 | 70 | ||
| 71 | /** | 71 | /** |
| 72 | * | 72 | * |
| @@ -94,7 +94,7 @@ public interface DirectiveService extends BaseService<D60, Integer>{ | @@ -94,7 +94,7 @@ public interface DirectiveService extends BaseService<D60, Integer>{ | ||
| 94 | 94 | ||
| 95 | int refreshLineFile(String deviceId); | 95 | int refreshLineFile(String deviceId); |
| 96 | 96 | ||
| 97 | - int stateChange(String nbbm, Integer upDown, Integer state, String userName); | 97 | + //int stateChange(String nbbm, Integer upDown, Integer state, String userName); |
| 98 | 98 | ||
| 99 | Map<String,Object> deviceCofigList(Map<String, String> map, int page, int size); | 99 | Map<String,Object> deviceCofigList(Map<String, String> map, int page, int size); |
| 100 | } | 100 | } |
src/main/java/com/bsth/service/directive/DirectiveServiceImpl.java
| @@ -188,7 +188,7 @@ public class DirectiveServiceImpl extends BaseServiceImpl<D60, Integer> implemen | @@ -188,7 +188,7 @@ public class DirectiveServiceImpl extends BaseServiceImpl<D60, Integer> implemen | ||
| 188 | } | 188 | } |
| 189 | 189 | ||
| 190 | @Override | 190 | @Override |
| 191 | - public int send60Operation(String nbbm, int state, int upDown, ScheduleRealInfo sch, String sender) { | 191 | + public int send60Operation(String nbbm, int state, int upDown, String sender) { |
| 192 | logger.info("切换运营状态, nbbm: " + nbbm + " ,state: " + state + " ,upDown:" + upDown); | 192 | logger.info("切换运营状态, nbbm: " + nbbm + " ,state: " + state + " ,upDown:" + upDown); |
| 193 | 193 | ||
| 194 | String text = "切换为 " + (upDown == 0 ? "上行" : "下行") + (state == 0 ? "营运" : "未营运"); | 194 | String text = "切换为 " + (upDown == 0 ? "上行" : "下行") + (state == 0 ? "营运" : "未营运"); |
| @@ -204,9 +204,10 @@ public class DirectiveServiceImpl extends BaseServiceImpl<D60, Integer> implemen | @@ -204,9 +204,10 @@ public class DirectiveServiceImpl extends BaseServiceImpl<D60, Integer> implemen | ||
| 204 | int code = GatewayHttpUtils.postJson(JSON.toJSONString(d60)); | 204 | int code = GatewayHttpUtils.postJson(JSON.toJSONString(d60)); |
| 205 | // 添加到缓存,等待入库 | 205 | // 添加到缓存,等待入库 |
| 206 | d60.setHttpCode(code); | 206 | d60.setHttpCode(code); |
| 207 | - if (null != sch) | 207 | + /*if (null != sch){ |
| 208 | d60.setSch(sch); | 208 | d60.setSch(sch); |
| 209 | - | 209 | + d60.setLineCode(sch.getXlBm()); |
| 210 | + }*/ | ||
| 210 | 211 | ||
| 211 | if (code == 0) { | 212 | if (code == 0) { |
| 212 | dayOfDirectives.put60(d60, true); | 213 | dayOfDirectives.put60(d60, true); |
| @@ -294,10 +295,10 @@ public class DirectiveServiceImpl extends BaseServiceImpl<D60, Integer> implemen | @@ -294,10 +295,10 @@ public class DirectiveServiceImpl extends BaseServiceImpl<D60, Integer> implemen | ||
| 294 | return new DirectiveCreator().createD60(nbbm, text, dispatchInstruct, upDown, state, lineCode); | 295 | return new DirectiveCreator().createD60(nbbm, text, dispatchInstruct, upDown, state, lineCode); |
| 295 | } | 296 | } |
| 296 | 297 | ||
| 297 | - @Override | 298 | +/* @Override |
| 298 | public int upDownChange(String nbbm, Integer upDown, String sender) { | 299 | public int upDownChange(String nbbm, Integer upDown, String sender) { |
| 299 | - return send60Operation(nbbm, 0, upDown, null, sender); | ||
| 300 | - } | 300 | + return send60Operation(nbbm, 0, upDown, sender); |
| 301 | + }*/ | ||
| 301 | 302 | ||
| 302 | 303 | ||
| 303 | @Override | 304 | @Override |
| @@ -540,10 +541,10 @@ public class DirectiveServiceImpl extends BaseServiceImpl<D60, Integer> implemen | @@ -540,10 +541,10 @@ public class DirectiveServiceImpl extends BaseServiceImpl<D60, Integer> implemen | ||
| 540 | return GatewayHttpUtils.postJson(new DirectiveCreator().createDeviceRefreshData(deviceId, gps.getLineId())); | 541 | return GatewayHttpUtils.postJson(new DirectiveCreator().createDeviceRefreshData(deviceId, gps.getLineId())); |
| 541 | } | 542 | } |
| 542 | 543 | ||
| 543 | - @Override | 544 | +/* @Override |
| 544 | public int stateChange(String nbbm, Integer upDown, Integer state, String userName) { | 545 | public int stateChange(String nbbm, Integer upDown, Integer state, String userName) { |
| 545 | - return send60Operation(nbbm, state, upDown, null, userName); | ||
| 546 | - } | 546 | + return send60Operation(nbbm, state, upDown, userName); |
| 547 | + }*/ | ||
| 547 | 548 | ||
| 548 | @Override | 549 | @Override |
| 549 | public Map<String, Object> deviceCofigList(Map<String, String> map, int page, int size) { | 550 | public Map<String, Object> deviceCofigList(Map<String, String> map, int page, int size) { |
src/main/java/com/bsth/service/gps/GpsServiceImpl.java
| @@ -152,6 +152,17 @@ public class GpsServiceImpl implements GpsService { | @@ -152,6 +152,17 @@ public class GpsServiceImpl implements GpsService { | ||
| 152 | return (byte) (((serviceState & 0x10000000) == 0x10000000) ? 1 : 0); | 152 | return (byte) (((serviceState & 0x10000000) == 0x10000000) ? 1 : 0); |
| 153 | } | 153 | } |
| 154 | 154 | ||
| 155 | + /** | ||
| 156 | + * 获取运营状态 | ||
| 157 | + * | ||
| 158 | + * @return -1无效 0运营 1未运营 | ||
| 159 | + */ | ||
| 160 | + public static byte getService(long serviceState) { | ||
| 161 | + if ((serviceState & 0x00020000) == 0x00020000 || (serviceState & 0x80000000) == 0x80000000) | ||
| 162 | + return -1; | ||
| 163 | + return (byte) (((serviceState & 0x02000000) == 0x02000000) ? 1 : 0); | ||
| 164 | + } | ||
| 165 | + | ||
| 155 | @Override | 166 | @Override |
| 156 | public List<Map<String, Object>> history(String[] nbbmArray, Long st, Long et) { | 167 | public List<Map<String, Object>> history(String[] nbbmArray, Long st, Long et) { |
| 157 | List<Map<String, Object>> list = new ArrayList<>(); | 168 | List<Map<String, Object>> list = new ArrayList<>(); |
| @@ -239,10 +250,11 @@ public class GpsServiceImpl implements GpsService { | @@ -239,10 +250,11 @@ public class GpsServiceImpl implements GpsService { | ||
| 239 | rs = ps.executeQuery(); | 250 | rs = ps.executeQuery(); |
| 240 | Float lon, lat; | 251 | Float lon, lat; |
| 241 | Location bdLoc, gdLoc; | 252 | Location bdLoc, gdLoc; |
| 242 | - int upDown, inOutStop; | 253 | + int inOutStop; |
| 254 | + long serviceState; | ||
| 243 | ArrivalEntity arrival; | 255 | ArrivalEntity arrival; |
| 244 | while (rs.next()) { | 256 | while (rs.next()) { |
| 245 | - upDown = getUpOrDown(rs.getLong("SERVICE_STATE")); | 257 | + serviceState = rs.getLong("SERVICE_STATE"); |
| 246 | map = new HashMap<>(); | 258 | map = new HashMap<>(); |
| 247 | 259 | ||
| 248 | lon = rs.getFloat("LON"); | 260 | lon = rs.getFloat("LON"); |
| @@ -278,9 +290,9 @@ public class GpsServiceImpl implements GpsService { | @@ -278,9 +290,9 @@ public class GpsServiceImpl implements GpsService { | ||
| 278 | } | 290 | } |
| 279 | 291 | ||
| 280 | map.put("nbbm", BasicData.deviceId2NbbmMap.get(rs.getString("DEVICE_ID"))); | 292 | map.put("nbbm", BasicData.deviceId2NbbmMap.get(rs.getString("DEVICE_ID"))); |
| 281 | - map.put("state", 0); | 293 | + map.put("state", getService(serviceState)); |
| 282 | // 上下行 | 294 | // 上下行 |
| 283 | - map.put("upDown", upDown); | 295 | + map.put("upDown", getUpOrDown(serviceState)); |
| 284 | //路段编码 | 296 | //路段编码 |
| 285 | map.put("section_code", rs.getString("SECTION_CODE")); | 297 | map.put("section_code", rs.getString("SECTION_CODE")); |
| 286 | list.add(map); | 298 | list.add(map); |
src/main/resources/logback.xml
| @@ -182,6 +182,28 @@ | @@ -182,6 +182,28 @@ | ||
| 182 | <appender-ref ref="GPS_COUNT" /> | 182 | <appender-ref ref="GPS_COUNT" /> |
| 183 | </logger> | 183 | </logger> |
| 184 | 184 | ||
| 185 | + <!-- 设备状态指令 --> | ||
| 186 | + <appender name="GPS_STATUS_DIRECTIVE" | ||
| 187 | + class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||
| 188 | + <file>${LOG_BASE}/gps_state/state_directive.log</file> | ||
| 189 | + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> | ||
| 190 | + <fileNamePattern>${LOG_BASE}/gps_state/state_directive-%d{yyyy-MM-dd}.%i.log</fileNamePattern> | ||
| 191 | + <timeBasedFileNamingAndTriggeringPolicy | ||
| 192 | + class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> | ||
| 193 | + <maxFileSize>100MB</maxFileSize> | ||
| 194 | + </timeBasedFileNamingAndTriggeringPolicy> | ||
| 195 | + </rollingPolicy> | ||
| 196 | + | ||
| 197 | + <layout class="ch.qos.logback.classic.PatternLayout"> | ||
| 198 | + <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%file:%line] %-5level -%msg%n | ||
| 199 | + </pattern> | ||
| 200 | + </layout> | ||
| 201 | + </appender> | ||
| 202 | + <logger name="com.bsth.data.gpsdata.status_manager" | ||
| 203 | + level="INFO" additivity="false"> | ||
| 204 | + <appender-ref ref="GPS_STATUS_DIRECTIVE" /> | ||
| 205 | + </logger> | ||
| 206 | + | ||
| 185 | <!-- 消息队列纪录 --> | 207 | <!-- 消息队列纪录 --> |
| 186 | <appender name="QUEUE_WEB_SOCKET" | 208 | <appender name="QUEUE_WEB_SOCKET" |
| 187 | class="ch.qos.logback.core.rolling.RollingFileAppender"> | 209 | class="ch.qos.logback.core.rolling.RollingFileAppender"> |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task_v2/add_in_out.html
| @@ -111,7 +111,7 @@ | @@ -111,7 +111,7 @@ | ||
| 111 | 111 | ||
| 112 | //起点改变 | 112 | //起点改变 |
| 113 | $f('startStation', f).on('change', function () { | 113 | $f('startStation', f).on('change', function () { |
| 114 | - $f('endStation', outf).val($(this).val());//.trigger('change'); | 114 | + $f('endStation', outf).val($(this).val()).trigger('change'); |
| 115 | }).trigger('change'); | 115 | }).trigger('change'); |
| 116 | } | 116 | } |
| 117 | 117 | ||
| @@ -149,13 +149,14 @@ | @@ -149,13 +149,14 @@ | ||
| 149 | } | 149 | } |
| 150 | if(eCode==sch.qdzCode || eCode==sch.zdzCode){ | 150 | if(eCode==sch.qdzCode || eCode==sch.zdzCode){ |
| 151 | $f('startStation',inf).val(eCode).trigger('change'); | 151 | $f('startStation',inf).val(eCode).trigger('change'); |
| 152 | - $f('type2',outf).trigger('change'); | 152 | + //$f('type2',outf).trigger('change'); |
| 153 | + $f('endStation',outf).val(eCode).trigger('change'); | ||
| 153 | return; | 154 | return; |
| 154 | } | 155 | } |
| 155 | 156 | ||
| 156 | //进场起点 | 157 | //进场起点 |
| 157 | $f('startStation',inf).val(eCode);//.trigger('change'); | 158 | $f('startStation',inf).val(eCode);//.trigger('change'); |
| 158 | - //终点trigger change 出发重计算 | 159 | + //终点trigger change 触发重计算 |
| 159 | $f('endStation',inf).trigger('change'); | 160 | $f('endStation',inf).trigger('change'); |
| 160 | 161 | ||
| 161 | //中途进场 | 162 | //中途进场 |
src/main/resources/static/real_control_v2/js/main.js
| @@ -47,7 +47,7 @@ var gb_main_ep = new EventProxy(), | @@ -47,7 +47,7 @@ var gb_main_ep = new EventProxy(), | ||
| 47 | $('li.map-panel', '#main-tab-content').load('/real_control_v2/mapmonitor/real.html'); | 47 | $('li.map-panel', '#main-tab-content').load('/real_control_v2/mapmonitor/real.html'); |
| 48 | }, 1000); | 48 | }, 1000); |
| 49 | //弹出更新说明 | 49 | //弹出更新说明 |
| 50 | - showUpdateDescription(); | 50 | + //showUpdateDescription(); |
| 51 | }); | 51 | }); |
| 52 | 52 | ||
| 53 | function g_emit(id) { | 53 | function g_emit(id) { |
| @@ -169,8 +169,8 @@ var disabled_submit_btn = function (form) { | @@ -169,8 +169,8 @@ var disabled_submit_btn = function (form) { | ||
| 169 | function showUpdateDescription() { | 169 | function showUpdateDescription() { |
| 170 | //更新说明 | 170 | //更新说明 |
| 171 | var updateDescription = { | 171 | var updateDescription = { |
| 172 | - date: '2017-07-05', | ||
| 173 | - text: '<h5>稍微调整了添加子任务的界面</h5><h5>1、现在进出场子任务也必须选择进场原因</h5><h5>2、现在进出场子任务可以勾选 “无售票员” 如果是无人售票线路,请忽略这个选项</h5><h5>3、现在做中途进场子任务时,可以勾选“换车出场至中途站继续营运”</h5>' | 172 | + date: '2017-07-14', |
| 173 | + text: '<h5></h5>' | ||
| 174 | }; | 174 | }; |
| 175 | 175 | ||
| 176 | var storage = window.localStorage | 176 | var storage = window.localStorage |