Commit 477fa9149270468e5bc29cd35dc9023b47a9e2ec
1 parent
2f612948
update...
Showing
13 changed files
with
522 additions
and
231 deletions
src/main/java/com/bsth/Application.java
| ... | ... | @@ -2,10 +2,6 @@ package com.bsth; |
| 2 | 2 | |
| 3 | 3 | import com.fasterxml.jackson.databind.ObjectMapper; |
| 4 | 4 | import com.fasterxml.jackson.databind.SerializationFeature; |
| 5 | - | |
| 6 | -import java.util.concurrent.Executors; | |
| 7 | -import java.util.concurrent.ScheduledExecutorService; | |
| 8 | - | |
| 9 | 5 | import org.springframework.boot.SpringApplication; |
| 10 | 6 | import org.springframework.boot.autoconfigure.SpringBootApplication; |
| 11 | 7 | import org.springframework.boot.builder.SpringApplicationBuilder; |
| ... | ... | @@ -13,10 +9,13 @@ import org.springframework.boot.context.web.SpringBootServletInitializer; |
| 13 | 9 | import org.springframework.context.annotation.Bean; |
| 14 | 10 | import org.springframework.context.annotation.Primary; |
| 15 | 11 | |
| 12 | +import java.util.concurrent.Executors; | |
| 13 | +import java.util.concurrent.ScheduledExecutorService; | |
| 14 | + | |
| 16 | 15 | @SpringBootApplication |
| 17 | 16 | public class Application extends SpringBootServletInitializer { |
| 18 | 17 | |
| 19 | - public static ScheduledExecutorService mainServices = Executors.newScheduledThreadPool(12); | |
| 18 | + public static ScheduledExecutorService mainServices = Executors.newScheduledThreadPool(13); | |
| 20 | 19 | |
| 21 | 20 | @Override |
| 22 | 21 | protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { | ... | ... |
src/main/java/com/bsth/controller/realcontrol/LineConfigController.java
| ... | ... | @@ -14,39 +14,91 @@ public class LineConfigController extends BaseController<LineConfig, Integer>{ |
| 14 | 14 | |
| 15 | 15 | @Autowired |
| 16 | 16 | LineConfigService lineConfigService; |
| 17 | - | |
| 17 | + | |
| 18 | + /** | |
| 19 | + * 检查是否有线路配置信息 | |
| 20 | + * @param codeArray | |
| 21 | + * @return | |
| 22 | + */ | |
| 18 | 23 | @RequestMapping("/check") |
| 19 | 24 | public Map<String, Object> check(@RequestParam String[] codeArray){ |
| 20 | 25 | return lineConfigService.check(codeArray); |
| 21 | 26 | } |
| 22 | - | |
| 27 | + | |
| 28 | + /** | |
| 29 | + * 初始化线路配置 | |
| 30 | + * @param lineCode | |
| 31 | + * @return | |
| 32 | + * @throws Exception | |
| 33 | + */ | |
| 23 | 34 | @RequestMapping("/init/{lineCode}") |
| 24 | 35 | public Integer init(@PathVariable("lineCode") String lineCode) throws Exception{ |
| 25 | 36 | return lineConfigService.init(lineCode); |
| 26 | 37 | } |
| 27 | - | |
| 38 | + | |
| 39 | + /** | |
| 40 | + * 修改班次刷新时间 | |
| 41 | + * @param time | |
| 42 | + * @param lineCode | |
| 43 | + * @return | |
| 44 | + */ | |
| 28 | 45 | @RequestMapping(value = "/editTime", method = RequestMethod.POST) |
| 29 | 46 | public Map<String, Object> editStartOptTime(@RequestParam String time,@RequestParam String lineCode){ |
| 30 | 47 | return lineConfigService.editStartOptTime(time, lineCode); |
| 31 | 48 | } |
| 32 | - | |
| 49 | + | |
| 50 | + /** | |
| 51 | + * 修改出场时间类型 | |
| 52 | + * @param lineCode | |
| 53 | + * @param type | |
| 54 | + * @return | |
| 55 | + */ | |
| 33 | 56 | @RequestMapping(value = "/editOutTimeType", method = RequestMethod.POST) |
| 34 | 57 | public Map<String, Object> editOutTimeType(@RequestParam String lineCode, @RequestParam int type){ |
| 35 | 58 | return lineConfigService.editOutTimeType(lineCode, type); |
| 36 | 59 | } |
| 37 | 60 | |
| 61 | + /** | |
| 62 | + * 启用原线路回场 | |
| 63 | + * @param lineCode | |
| 64 | + * @param enable | |
| 65 | + * @return | |
| 66 | + */ | |
| 38 | 67 | @RequestMapping(value = "/enableInParkForSource", method = RequestMethod.POST) |
| 39 | 68 | public Map<String, Object> enableInParkForSource(@RequestParam String lineCode, @RequestParam int enable){ |
| 40 | 69 | return lineConfigService.enableInParkForSource(lineCode, enable); |
| 41 | 70 | } |
| 42 | 71 | |
| 72 | + /** | |
| 73 | + * 根据线路编码获取配置信息 | |
| 74 | + * @param lineCode | |
| 75 | + * @return | |
| 76 | + */ | |
| 43 | 77 | @RequestMapping(value = "/getByLineCode") |
| 44 | 78 | public LineConfig getByLineCode(@RequestParam String lineCode){ |
| 45 | 79 | return lineConfigService.getByLineCode(lineCode); |
| 46 | 80 | } |
| 47 | 81 | |
| 82 | + /** | |
| 83 | + * 到站缓冲区设置 | |
| 84 | + * @param lineCode | |
| 85 | + * @param field | |
| 86 | + * @param value | |
| 87 | + * @return | |
| 88 | + */ | |
| 48 | 89 | @RequestMapping(value = "/bufferTimeDiff", method = RequestMethod.POST) |
| 49 | 90 | public Map<String, Object> bufferTimeDiff(@RequestParam String lineCode, @RequestParam String field,@RequestParam String value){ |
| 50 | 91 | return lineConfigService.bufferTimeDiff(lineCode, field, value); |
| 51 | 92 | } |
| 93 | + | |
| 94 | + /** | |
| 95 | + * 应急停靠设置 | |
| 96 | + * @param map | |
| 97 | + * @return | |
| 98 | + */ | |
| 99 | + @RequestMapping(value = "/yjtkSet", method = RequestMethod.POST) | |
| 100 | + public Map<String, Object> yjtkSet(@RequestParam Map<String, String> map){ | |
| 101 | + //System.out.println(map); | |
| 102 | + return lineConfigService.yjtkSet(map); | |
| 103 | + } | |
| 52 | 104 | } | ... | ... |
src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
| 1 | 1 | package com.bsth.controller.realcontrol; |
| 2 | 2 | |
| 3 | 3 | import com.alibaba.fastjson.JSONArray; |
| 4 | +import com.bsth.common.ResponseCode; | |
| 4 | 5 | import com.bsth.controller.BaseController; |
| 5 | 6 | import com.bsth.controller.realcontrol.dto.ChangePersonCar; |
| 6 | 7 | import com.bsth.controller.realcontrol.dto.DfsjChange; |
| ... | ... | @@ -486,4 +487,33 @@ public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo, |
| 486 | 487 | public Map<String, Object> lpChangeMulti(@RequestParam String leftIdx, @RequestParam String rightIdx,@RequestParam int type){ |
| 487 | 488 | return scheduleRealInfoService.lpChangeMulti(leftIdx, rightIdx, type); |
| 488 | 489 | } |
| 490 | + | |
| 491 | + /** | |
| 492 | + * 删除当日实际排班 | |
| 493 | + * @return | |
| 494 | + */ | |
| 495 | + @RequestMapping(value = "deleteRealSchedule", method = RequestMethod.POST) | |
| 496 | + public Map<String, Object> deleteRealSchedule(@RequestParam String lineCode){ | |
| 497 | + return dayOfSchedule.deleteRealSchedule(lineCode); | |
| 498 | + } | |
| 499 | + | |
| 500 | + /** | |
| 501 | + * 从计划表重新加载当日排班 | |
| 502 | + * @param lineCode | |
| 503 | + * @return | |
| 504 | + */ | |
| 505 | + @RequestMapping(value = "reLoadRealSchedule", method = RequestMethod.POST) | |
| 506 | + public Map<String, Object> reLoadRealSchedule(@RequestParam String lineCode){ | |
| 507 | + Map<String, Object> rs = new HashMap<>(); | |
| 508 | + List<ScheduleRealInfo> list = dayOfSchedule.findByLineCode(lineCode); | |
| 509 | + if(list != null && list.size() > 0){ | |
| 510 | + rs.put("status", ResponseCode.ERROR); | |
| 511 | + rs.put("msg", "失败," + list.get(0).getXlName() + "当日存在实际排班,无法重新加载。"); | |
| 512 | + return rs; | |
| 513 | + } | |
| 514 | + | |
| 515 | + int code = dayOfSchedule.reloadSch(lineCode); | |
| 516 | + rs.put("status", code==0? ResponseCode.SUCCESS: ResponseCode.ERROR); | |
| 517 | + return rs; | |
| 518 | + } | |
| 489 | 519 | } | ... | ... |
src/main/java/com/bsth/data/LineConfigData.java
| 1 | 1 | package com.bsth.data; |
| 2 | 2 | |
| 3 | +import com.bsth.Application; | |
| 3 | 4 | import com.bsth.entity.Line; |
| 4 | 5 | import com.bsth.entity.realcontrol.D80ReplyTemp; |
| 5 | 6 | import com.bsth.entity.realcontrol.LineConfig; |
| 6 | -import com.bsth.oplog.normal.OpLogger; | |
| 7 | +import com.bsth.entity.realcontrol.ScheduleRealInfo; | |
| 7 | 8 | import com.bsth.service.LineService; |
| 8 | 9 | import com.bsth.service.realcontrol.LineConfigService; |
| 9 | 10 | import org.slf4j.Logger; |
| ... | ... | @@ -14,101 +15,151 @@ import org.springframework.core.annotation.Order; |
| 14 | 15 | import org.springframework.stereotype.Component; |
| 15 | 16 | |
| 16 | 17 | import java.util.*; |
| 18 | +import java.util.concurrent.TimeUnit; | |
| 17 | 19 | |
| 18 | 20 | /** |
| 19 | - * | |
| 21 | + * @author PanZhao | |
| 20 | 22 | * @ClassName: LineConfigData |
| 21 | 23 | * @Description: TODO(线路配置数据管理) |
| 22 | - * @author PanZhao | |
| 23 | 24 | * @date 2016年8月15日 下午2:50:19 |
| 24 | - * | |
| 25 | 25 | */ |
| 26 | 26 | @Component |
| 27 | 27 | @Order(value = 2) |
| 28 | 28 | public class LineConfigData implements CommandLineRunner { |
| 29 | - | |
| 30 | - Logger logger = LoggerFactory.getLogger(this.getClass()); | |
| 31 | - | |
| 32 | - // 线路编码和配置 | |
| 33 | - private Map<String, LineConfig> lineConfMap; | |
| 34 | - | |
| 35 | - @Autowired | |
| 36 | - LineConfigService lineConfigService; | |
| 37 | - | |
| 38 | - @Autowired | |
| 39 | - LineService lineService; | |
| 40 | - | |
| 41 | - @Autowired | |
| 42 | - OpLogger opLog; | |
| 43 | - | |
| 44 | - @Override | |
| 45 | - public void run(String... arg0) throws Exception { | |
| 46 | - lineConfMap = new HashMap<>(); | |
| 47 | - | |
| 48 | - Iterator<LineConfig> itr = lineConfigService.findAll().iterator(); | |
| 49 | - while (itr.hasNext()) | |
| 50 | - setBuffer(itr.next()); | |
| 51 | - | |
| 52 | - opLog.info("Line_config_data"); | |
| 53 | - } | |
| 54 | - | |
| 55 | - public LineConfig get(String lineCode){ | |
| 56 | - return lineConfMap.get(lineCode); | |
| 57 | - } | |
| 58 | - | |
| 59 | - public Collection<LineConfig> getAll(){ | |
| 60 | - return lineConfMap.values(); | |
| 61 | - } | |
| 62 | - | |
| 63 | - public void set(LineConfig conf){ | |
| 64 | - lineConfigService.save(conf); | |
| 65 | - setBuffer(conf); | |
| 66 | - } | |
| 67 | - | |
| 68 | - public void setBuffer(LineConfig conf){ | |
| 69 | - lineConfMap.put(conf.getLine().getLineCode(), conf); | |
| 70 | - } | |
| 71 | - | |
| 72 | - /** | |
| 73 | - * | |
| 74 | - * @Title: init | |
| 75 | - * @Description: TODO(初始化配置信息) | |
| 76 | - */ | |
| 77 | - public void init(String lineCode) throws Exception{ | |
| 78 | - LineConfig conf = new LineConfig(); | |
| 79 | - //线路 | |
| 80 | - Line line = lineService.findByLineCode(lineCode); | |
| 81 | - if(null == line) | |
| 82 | - throw new NullPointerException("异常的lineCode"); | |
| 83 | - | |
| 84 | - conf.setLine(line); | |
| 85 | - //开始运营时间 | |
| 86 | - conf.setStartOpt("02:00"); | |
| 87 | - //托管状态 | |
| 88 | - conf.setTrust(true); | |
| 89 | - //出场时间类型 | |
| 90 | - conf.setOutConfig(0); | |
| 91 | - //进场时间类型 | |
| 92 | - //conf.setInConfig(1); | |
| 93 | - //短语模板 | |
| 94 | - conf.setPhraseTemps(""); | |
| 95 | - //调度指令模板 | |
| 96 | - conf.setSchDirectiveTemp(""); | |
| 97 | - | |
| 98 | - //80指令回复 | |
| 99 | - D80ReplyTemp t50 = new D80ReplyTemp(conf, (short)0x50, "同意,回电详谈", "不同意,请回电") | |
| 100 | - ,t60 = new D80ReplyTemp(conf, (short)0x60, "同意,回电详谈", "不同意,请回电") | |
| 101 | - ,tA2 = new D80ReplyTemp(conf, (short)0xA2, "同意,回电详谈", "不同意,请回电") | |
| 102 | - ,t70 = new D80ReplyTemp(conf, (short)0x70, "同意,回电详谈", "不同意,请回电") | |
| 103 | - ,t11 = new D80ReplyTemp(conf, (short)0x11, "同意,回电详谈", "不同意,请回电"); | |
| 104 | - | |
| 105 | - Set<D80ReplyTemp> temps = conf.getD80Temps(); | |
| 106 | - temps.add(t50); | |
| 107 | - temps.add(t60); | |
| 108 | - temps.add(tA2); | |
| 109 | - temps.add(t70); | |
| 110 | - temps.add(t11); | |
| 111 | - | |
| 112 | - set(conf); | |
| 113 | - } | |
| 29 | + | |
| 30 | + static Logger logger = LoggerFactory.getLogger(LineConfigData.class); | |
| 31 | + | |
| 32 | + // 线路编码和配置 | |
| 33 | + private Map<String, LineConfig> lineConfMap; | |
| 34 | + | |
| 35 | + @Autowired | |
| 36 | + LineConfigService lineConfigService; | |
| 37 | + | |
| 38 | + @Autowired | |
| 39 | + LineService lineService; | |
| 40 | + | |
| 41 | + //入库缓冲 | |
| 42 | + static LinkedList<LineConfig> saveBuffers = new LinkedList<>(); | |
| 43 | + | |
| 44 | + @Autowired | |
| 45 | + LineConfigPersistThread configPersistThread; | |
| 46 | + | |
| 47 | + @Override | |
| 48 | + public void run(String... arg0) throws Exception { | |
| 49 | + lineConfMap = new HashMap<>(); | |
| 50 | + | |
| 51 | + Iterator<LineConfig> itr = lineConfigService.findAll().iterator(); | |
| 52 | + while (itr.hasNext()) | |
| 53 | + setBuffer(itr.next()); | |
| 54 | + | |
| 55 | + //异步入库 | |
| 56 | + Application.mainServices.scheduleWithFixedDelay(configPersistThread, 60, 60, TimeUnit.SECONDS); | |
| 57 | + } | |
| 58 | + | |
| 59 | + /** | |
| 60 | + * 起点发出,应用缓冲区设置参数 | |
| 61 | + * @param sch | |
| 62 | + * @param timestamp | |
| 63 | + * @return | |
| 64 | + */ | |
| 65 | + public long applyOut(ScheduleRealInfo sch, Long timestamp) { | |
| 66 | + LineConfig config = lineConfMap.get(sch.getXlBm()); | |
| 67 | + int diff = sch.getXlDir()=="0"?config.getUpOutDiff():config.getDownOutDiff(); | |
| 68 | + return timestamp - (diff * 60 * 1000); | |
| 69 | + } | |
| 70 | + | |
| 71 | + /** | |
| 72 | + * 终点到达,应用缓冲区设置参数 | |
| 73 | + * @param sch | |
| 74 | + * @param timestamp | |
| 75 | + * @return | |
| 76 | + */ | |
| 77 | + public long applyIn(ScheduleRealInfo sch, Long timestamp){ | |
| 78 | + LineConfig config = lineConfMap.get(sch.getXlBm()); | |
| 79 | + int diff = sch.getXlDir()=="0"?config.getUpInDiff():config.getDownInDiff(); | |
| 80 | + return timestamp - (diff * 60 * 1000); | |
| 81 | + } | |
| 82 | + | |
| 83 | + @Component | |
| 84 | + private static class LineConfigPersistThread extends Thread { | |
| 85 | + | |
| 86 | + @Autowired | |
| 87 | + LineConfigService lineConfigService; | |
| 88 | + | |
| 89 | + @Override | |
| 90 | + public void run() { | |
| 91 | + LineConfig config; | |
| 92 | + for (int i = 0; i < 800; i++) { | |
| 93 | + config = saveBuffers.poll(); | |
| 94 | + if (config == null) | |
| 95 | + break; | |
| 96 | + | |
| 97 | + try { | |
| 98 | + lineConfigService.save(config); | |
| 99 | + }catch (Exception e){ | |
| 100 | + logger.error("", e); | |
| 101 | + } | |
| 102 | + } | |
| 103 | + } | |
| 104 | + } | |
| 105 | + | |
| 106 | + public LineConfig get(String lineCode) { | |
| 107 | + return lineConfMap.get(lineCode); | |
| 108 | + } | |
| 109 | + | |
| 110 | + public Collection<LineConfig> getAll() { | |
| 111 | + return lineConfMap.values(); | |
| 112 | + } | |
| 113 | + | |
| 114 | + public void set(LineConfig conf) { | |
| 115 | + //lineConfigService.save(conf); | |
| 116 | + saveBuffers.add(conf); | |
| 117 | + setBuffer(conf); | |
| 118 | + } | |
| 119 | + | |
| 120 | + public void setBuffer(LineConfig conf) { | |
| 121 | + lineConfMap.put(conf.getLine().getLineCode(), conf); | |
| 122 | + } | |
| 123 | + | |
| 124 | + /** | |
| 125 | + * @Title: init | |
| 126 | + * @Description: TODO(初始化配置信息) | |
| 127 | + */ | |
| 128 | + public void init(String lineCode) throws Exception { | |
| 129 | + LineConfig conf = new LineConfig(); | |
| 130 | + //线路 | |
| 131 | + Line line = lineService.findByLineCode(lineCode); | |
| 132 | + if (null == line) | |
| 133 | + throw new NullPointerException("异常的lineCode"); | |
| 134 | + | |
| 135 | + conf.setLine(line); | |
| 136 | + //开始运营时间 | |
| 137 | + conf.setStartOpt("02:00"); | |
| 138 | + //托管状态 | |
| 139 | + conf.setTrust(true); | |
| 140 | + //出场时间类型 | |
| 141 | + conf.setOutConfig(0); | |
| 142 | + //进场时间类型 | |
| 143 | + //conf.setInConfig(1); | |
| 144 | + //短语模板 | |
| 145 | + conf.setPhraseTemps(""); | |
| 146 | + //调度指令模板 | |
| 147 | + conf.setSchDirectiveTemp(""); | |
| 148 | + | |
| 149 | + //80指令回复 闵行用 | |
| 150 | + D80ReplyTemp t50 = new D80ReplyTemp(conf, (short) 0x50, "同意,回电详谈", "不同意,请回电"), t60 = new D80ReplyTemp(conf, (short) 0x60, "同意,回电详谈", "不同意,请回电"), tA2 = new D80ReplyTemp(conf, (short) 0xA2, "同意,回电详谈", "不同意,请回电"), t70 = new D80ReplyTemp(conf, (short) 0x70, "同意,回电详谈", "不同意,请回电"), t11 = new D80ReplyTemp(conf, (short) 0x11, "同意,回电详谈", "不同意,请回电"); | |
| 151 | + | |
| 152 | + //应急停靠默认值 | |
| 153 | + conf.setYjtkStart("00:00"); | |
| 154 | + conf.setYjtkEnd("23:59"); | |
| 155 | + | |
| 156 | + Set<D80ReplyTemp> temps = conf.getD80Temps(); | |
| 157 | + temps.add(t50); | |
| 158 | + temps.add(t60); | |
| 159 | + temps.add(tA2); | |
| 160 | + temps.add(t70); | |
| 161 | + temps.add(t11); | |
| 162 | + | |
| 163 | + set(conf); | |
| 164 | + } | |
| 114 | 165 | } | ... | ... |
src/main/java/com/bsth/data/gpsdata/arrival/handlers/InOutStationSignalHandle.java
| ... | ... | @@ -135,8 +135,11 @@ public class InOutStationSignalHandle extends SignalHandle{ |
| 135 | 135 | if(StringUtils.isNotEmpty(sch.getFcsjActual())) |
| 136 | 136 | return; |
| 137 | 137 | |
| 138 | + //应用到离站缓冲区设置参数 | |
| 139 | + long rsT = lineConfigData.applyOut(sch, gps.getTimestamp()); | |
| 140 | + | |
| 138 | 141 | //实发时间 |
| 139 | - sch.setFcsjActualAll(gps.getTimestamp()); | |
| 142 | + sch.setFcsjActualAll(rsT); | |
| 140 | 143 | //通知客户端 |
| 141 | 144 | sendUtils.sendFcsj(sch); |
| 142 | 145 | //持久化 |
| ... | ... | @@ -215,7 +218,10 @@ public class InOutStationSignalHandle extends SignalHandle{ |
| 215 | 218 | if(StringUtils.isNotEmpty(sch.getZdsjActual())) |
| 216 | 219 | return; |
| 217 | 220 | |
| 218 | - sch.setZdsjActualAll(gps.getTimestamp()); | |
| 221 | + //应用到离站缓冲区设置参数 | |
| 222 | + long rsT = lineConfigData.applyIn(sch, gps.getTimestamp()); | |
| 223 | + | |
| 224 | + sch.setZdsjActualAll(rsT); | |
| 219 | 225 | //已完成班次数 |
| 220 | 226 | int doneSum = dayOfSchedule.doneSum(sch.getClZbh()); |
| 221 | 227 | ScheduleRealInfo next = dayOfSchedule.next(sch); | ... | ... |
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
| ... | ... | @@ -3,6 +3,7 @@ package com.bsth.data.schedule; |
| 3 | 3 | import com.alibaba.fastjson.JSON; |
| 4 | 4 | import com.alibaba.fastjson.JSONArray; |
| 5 | 5 | import com.bsth.Application; |
| 6 | +import com.bsth.common.ResponseCode; | |
| 6 | 7 | import com.bsth.data.BasicData; |
| 7 | 8 | import com.bsth.data.LineConfigData; |
| 8 | 9 | import com.bsth.data.directive.DirectivesPstThread; |
| ... | ... | @@ -18,7 +19,6 @@ import com.bsth.util.BatchSaveUtils; |
| 18 | 19 | import com.bsth.util.DateUtils; |
| 19 | 20 | import com.bsth.websocket.handler.SendUtils; |
| 20 | 21 | import com.google.common.collect.ArrayListMultimap; |
| 21 | -import com.google.common.collect.TreeMultimap; | |
| 22 | 22 | import org.apache.commons.lang3.StringUtils; |
| 23 | 23 | import org.joda.time.format.DateTimeFormat; |
| 24 | 24 | import org.joda.time.format.DateTimeFormatter; |
| ... | ... | @@ -56,7 +56,7 @@ public class DayOfSchedule implements CommandLineRunner { |
| 56 | 56 | private static Map<Long, ScheduleRealInfo> id2SchedulMap; |
| 57 | 57 | |
| 58 | 58 | // 车辆和排班起终点站对照(包括进出的停车场,区间起终点) |
| 59 | - private static TreeMultimap<String, String> nbbm2SEStationMap; | |
| 59 | + //private static TreeMultimap<String, String> nbbm2SEStationMap; | |
| 60 | 60 | |
| 61 | 61 | //车辆 ——> 当前执行班次 |
| 62 | 62 | private static Map<String, ScheduleRealInfo> carExecutePlanMap; |
| ... | ... | @@ -99,7 +99,7 @@ public class DayOfSchedule implements CommandLineRunner { |
| 99 | 99 | pstBuffer = new LinkedList<>(); |
| 100 | 100 | schFCSJComparator = new ScheduleComparator.FCSJ(); |
| 101 | 101 | currSchDateMap = new HashMap<>(); |
| 102 | - nbbm2SEStationMap = TreeMultimap.create(); | |
| 102 | + //nbbm2SEStationMap = TreeMultimap.create(); | |
| 103 | 103 | carExecutePlanMap = new HashMap<>(); |
| 104 | 104 | |
| 105 | 105 | schedulePlanMap = new HashMap<>(); |
| ... | ... | @@ -244,6 +244,10 @@ public class DayOfSchedule implements CommandLineRunner { |
| 244 | 244 | return 0; |
| 245 | 245 | } |
| 246 | 246 | |
| 247 | + public int reloadSch(String lineCode){ | |
| 248 | + return reloadSch(lineCode, calcSchDate(lineCode), true); | |
| 249 | + } | |
| 250 | + | |
| 247 | 251 | /** |
| 248 | 252 | * @Title: searchAllCars |
| 249 | 253 | * @Description: TODO(搜索班次集合中的车辆) |
| ... | ... | @@ -480,9 +484,9 @@ public class DayOfSchedule implements CommandLineRunner { |
| 480 | 484 | return id2SchedulMap.get(id); |
| 481 | 485 | } |
| 482 | 486 | |
| 483 | - public Set<String> getSEStationList(String nbbm) { | |
| 487 | + /* public Set<String> getSEStationList(String nbbm) { | |
| 484 | 488 | return nbbm2SEStationMap.get(nbbm); |
| 485 | - } | |
| 489 | + }*/ | |
| 486 | 490 | |
| 487 | 491 | /** |
| 488 | 492 | * @Title: next |
| ... | ... | @@ -610,8 +614,8 @@ public class DayOfSchedule implements CommandLineRunner { |
| 610 | 614 | |
| 611 | 615 | String nbbm = sch.getClZbh(); |
| 612 | 616 | nbbmScheduleMap.put(nbbm, sch); |
| 613 | - nbbm2SEStationMap.put(nbbm, sch.getQdzCode()); | |
| 614 | - nbbm2SEStationMap.put(nbbm, sch.getZdzCode()); | |
| 617 | + //nbbm2SEStationMap.put(nbbm, sch.getQdzCode()); | |
| 618 | + //nbbm2SEStationMap.put(nbbm, sch.getZdzCode()); | |
| 615 | 619 | |
| 616 | 620 | //主键索引 |
| 617 | 621 | id2SchedulMap.put(sch.getId(), sch); |
| ... | ... | @@ -630,9 +634,6 @@ public class DayOfSchedule implements CommandLineRunner { |
| 630 | 634 | //return sch; |
| 631 | 635 | } |
| 632 | 636 | |
| 633 | -// public void calcQdzTimePlan(String nbbm){ | |
| 634 | -// schAttrCalculator.calcQdzTimePlan(nbbmScheduleMap.get(nbbm)); | |
| 635 | -// } | |
| 636 | 637 | |
| 637 | 638 | public List<ScheduleRealInfo> updateQdzTimePlan(String nbbm) { |
| 638 | 639 | Collections.sort(nbbmScheduleMap.get(nbbm), schFCSJComparator); |
| ... | ... | @@ -640,27 +641,6 @@ public class DayOfSchedule implements CommandLineRunner { |
| 640 | 641 | } |
| 641 | 642 | |
| 642 | 643 | /** |
| 643 | - * | |
| 644 | - * @Title: nextAll | |
| 645 | - * @Description: TODO(之后的所有班次) | |
| 646 | - */ | |
| 647 | -/* public List<ScheduleRealInfo> nextAll(ScheduleRealInfo sch) { | |
| 648 | - List<ScheduleRealInfo> list = nbbmScheduleMap.get(sch.getClZbh()); | |
| 649 | - // 排序 | |
| 650 | - Collections.sort(list, schFCSJComparator); | |
| 651 | - | |
| 652 | - List<ScheduleRealInfo> rs = new ArrayList<>(); | |
| 653 | - ScheduleRealInfo temp; | |
| 654 | - for (int i = 0; i < list.size() - 1; i++) { | |
| 655 | - temp = list.get(i); | |
| 656 | - if(temp.getFcsjT() > sch.getFcsjT()) | |
| 657 | - rs.add(temp); | |
| 658 | - | |
| 659 | - } | |
| 660 | - return rs; | |
| 661 | - }*/ | |
| 662 | - | |
| 663 | - /** | |
| 664 | 644 | * @Title: doneSum |
| 665 | 645 | * @Description: TODO(已完成班次总数) |
| 666 | 646 | */ |
| ... | ... | @@ -828,8 +808,8 @@ public class DayOfSchedule implements CommandLineRunner { |
| 828 | 808 | |
| 829 | 809 | sch.setClZbh(newClZbh); |
| 830 | 810 | nbbmScheduleMap.put(newClZbh, sch); |
| 831 | - nbbm2SEStationMap.put(newClZbh, sch.getQdzCode()); | |
| 832 | - nbbm2SEStationMap.put(newClZbh, sch.getZdzCode()); | |
| 811 | + //nbbm2SEStationMap.put(newClZbh, sch.getQdzCode()); | |
| 812 | + //nbbm2SEStationMap.put(newClZbh, sch.getZdzCode()); | |
| 833 | 813 | |
| 834 | 814 | //重新计算班次应到时间 |
| 835 | 815 | ups.addAll(updateQdzTimePlan(oldClzbh)); |
| ... | ... | @@ -876,43 +856,50 @@ public class DayOfSchedule implements CommandLineRunner { |
| 876 | 856 | } |
| 877 | 857 | |
| 878 | 858 | /** |
| 879 | - * 获取班次的计划停站时间 | |
| 880 | - * @param sch | |
| 859 | + * 删除实际排班 | |
| 860 | + * @param lineCode | |
| 881 | 861 | * @return |
| 862 | + */ | |
| 863 | + public Map<String, Object> deleteRealSchedule(String lineCode) { | |
| 864 | + Map<String, Object> rs = new HashMap<>(); | |
| 882 | 865 | |
| 883 | - public int stopTimePlan(Object task) { | |
| 866 | + try { | |
| 867 | + String rq = currSchDateMap.get(lineCode); | |
| 868 | + if(StringUtils.isNotEmpty(rq)){ | |
| 869 | + //解除gps 和班次之间的关联 | |
| 870 | + List<ScheduleRealInfo> unions = calcUnion(findByLineCode(lineCode), carExecutePlanMap.values()); | |
| 871 | + for(ScheduleRealInfo sch : unions){ | |
| 872 | + removeExecPlan(sch.getClZbh()); | |
| 873 | + } | |
| 884 | 874 | |
| 885 | - ScheduleRealInfo sch = prev((ScheduleRealInfo) task); | |
| 875 | + //删除班次数据 | |
| 876 | + removeRealSch(lineCode, rq); | |
| 877 | + //删除相关班次修正记录 | |
| 878 | + } | |
| 879 | + rs.put("status", ResponseCode.SUCCESS); | |
| 880 | + }catch (Exception e){ | |
| 881 | + logger.error("", e); | |
| 882 | + rs.put("status", ResponseCode.ERROR); | |
| 883 | + } | |
| 886 | 884 | |
| 887 | - sch.getzdsj | |
| 888 | - return -1; | |
| 889 | - }*/ | |
| 885 | + return rs; | |
| 886 | + } | |
| 890 | 887 | |
| 891 | 888 | /** |
| 889 | + * 计算并集 | |
| 892 | 890 | * |
| 893 | - * @Title: linkToSchPlan | |
| 894 | - * @Description: TODO(车辆关联到班次) | |
| 891 | + * @param all | |
| 892 | + * @param sub | |
| 893 | + * @return | |
| 895 | 894 | */ |
| 896 | -/* public void linkToSchPlan(String nbbm) { | |
| 897 | - //当前GPS状态 | |
| 898 | - GpsEntity gps = gpsRealData.get(BasicData.deviceId2NbbmMap.inverse().get(nbbm)); | |
| 899 | - if(null == gps) | |
| 900 | - return; | |
| 901 | - | |
| 902 | - //班次集合 | |
| 903 | - List<ScheduleRealInfo> schArr = nbbmScheduleMap.get(nbbm); | |
| 904 | - | |
| 905 | - for(ScheduleRealInfo sch : schArr){ | |
| 906 | - if(sch.getStatus() == 2) | |
| 907 | - continue; | |
| 908 | - if(sch.isDestroy()) | |
| 909 | - continue; | |
| 910 | - if(!sch.getXlBm().equals(gps.getLineId()) | |
| 911 | - || Integer.parseInt(sch.getXlDir()) != gps.getUpDown().intValue()) | |
| 912 | - continue; | |
| 913 | - | |
| 914 | - addExecPlan(sch); | |
| 915 | - break; | |
| 916 | - } | |
| 917 | - }*/ | |
| 895 | + public List<ScheduleRealInfo> calcUnion(Collection<ScheduleRealInfo> c1, Collection<ScheduleRealInfo> c2) { | |
| 896 | + List<ScheduleRealInfo> rs = new ArrayList<>(); | |
| 897 | + | |
| 898 | + for (ScheduleRealInfo sch : c1) { | |
| 899 | + if(c2.contains(sch)){ | |
| 900 | + rs.add(sch); | |
| 901 | + } | |
| 902 | + } | |
| 903 | + return rs; | |
| 904 | + } | |
| 918 | 905 | } |
| 919 | 906 | \ No newline at end of file | ... | ... |
src/main/java/com/bsth/data/schedule/thread/ScheduleRefreshThread.java
| ... | ... | @@ -2,7 +2,6 @@ package com.bsth.data.schedule.thread; |
| 2 | 2 | |
| 3 | 3 | import com.bsth.data.BasicData; |
| 4 | 4 | import com.bsth.data.LineConfigData; |
| 5 | -import com.bsth.data.arrival.ArrivalData_GPS; | |
| 6 | 5 | import com.bsth.data.directive.DayOfDirectives; |
| 7 | 6 | import com.bsth.data.pilot80.PilotReport; |
| 8 | 7 | import com.bsth.data.schedule.DayOfSchedule; |
| ... | ... | @@ -29,8 +28,8 @@ public class ScheduleRefreshThread extends Thread{ |
| 29 | 28 | @Autowired |
| 30 | 29 | DayOfSchedule dayOfSchedule; |
| 31 | 30 | |
| 32 | - @Autowired | |
| 33 | - ArrivalData_GPS arrivalData; | |
| 31 | + /*@Autowired | |
| 32 | + ArrivalData_GPS arrivalData;*/ | |
| 34 | 33 | |
| 35 | 34 | @Autowired |
| 36 | 35 | LineConfigData lineConfs; |
| ... | ... | @@ -59,7 +58,7 @@ public class ScheduleRefreshThread extends Thread{ |
| 59 | 58 | |
| 60 | 59 | logger.info(lineCode + "开始翻班, " + currSchDate); |
| 61 | 60 | //清除进出站数据 |
| 62 | - arrivalData.clearRAMData(lineCode); | |
| 61 | + //arrivalData.clearRAMData(lineCode); | |
| 63 | 62 | //清除指令数据 |
| 64 | 63 | Set<String> cars = dayOfSchedule.findCarByLineCode(lineCode); |
| 65 | 64 | for(String car : cars) | ... | ... |
src/main/java/com/bsth/service/realcontrol/LineConfigService.java
| ... | ... | @@ -20,4 +20,6 @@ public interface LineConfigService extends BaseService<LineConfig, Integer>{ |
| 20 | 20 | Map<String,Object> enableInParkForSource(String lineCode, int enable); |
| 21 | 21 | |
| 22 | 22 | Map<String,Object> bufferTimeDiff(String lineCode, String field, String value); |
| 23 | + | |
| 24 | + Map<String,Object> yjtkSet(Map<String, String> map); | |
| 23 | 25 | } | ... | ... |
src/main/java/com/bsth/service/realcontrol/impl/LineConfigServiceImpl.java
| ... | ... | @@ -140,4 +140,40 @@ public class LineConfigServiceImpl extends BaseServiceImpl<LineConfig, Integer> |
| 140 | 140 | } |
| 141 | 141 | return rs; |
| 142 | 142 | } |
| 143 | + | |
| 144 | + @Override | |
| 145 | + public Map<String, Object> yjtkSet(Map<String, String> map) { | |
| 146 | + String lineCode = map.get("lineCode").toString(); | |
| 147 | + int enableYjtk = Integer.parseInt(map.get("enableYjtk").toString()); | |
| 148 | + | |
| 149 | + Map<String, Object> rs = new HashMap<>(); | |
| 150 | + try { | |
| 151 | + LineConfig conf = lineConfigData.get(lineCode); | |
| 152 | + | |
| 153 | + if(enableYjtk == 1){ | |
| 154 | + String yjtkStart = map.containsKey("yjtkStart") ? map.get("yjtkStart").toString() : "00:00"; | |
| 155 | + String yjtkEnd = map.containsKey("yjtkEnd") ? map.get("yjtkEnd").toString() : "23:59"; | |
| 156 | + int upStopMinute = Integer.parseInt(map.get("upStopMinute").toString()); | |
| 157 | + int downStopMinute = Integer.parseInt(map.get("downStopMinute").toString()); | |
| 158 | + | |
| 159 | + conf.setEnableYjtk(true); | |
| 160 | + conf.setYjtkStart(yjtkStart); | |
| 161 | + conf.setYjtkEnd(yjtkEnd); | |
| 162 | + conf.setUpStopMinute(upStopMinute); | |
| 163 | + conf.setDownStopMinute(downStopMinute); | |
| 164 | + } | |
| 165 | + else | |
| 166 | + conf.setEnableYjtk(false); | |
| 167 | + | |
| 168 | + lineConfigData.set(conf); | |
| 169 | + | |
| 170 | + rs.put("status", ResponseCode.SUCCESS); | |
| 171 | + rs.put("conf", conf); | |
| 172 | + } catch (Exception e) { | |
| 173 | + rs.put("status", ResponseCode.ERROR); | |
| 174 | + rs.put("msg", e.getMessage()); | |
| 175 | + logger.error("", e); | |
| 176 | + } | |
| 177 | + return rs; | |
| 178 | + } | |
| 143 | 179 | } | ... | ... |
src/main/resources/static/real_control_v2/fragments/north/nav/line_config/buffer_config.html
| ... | ... | @@ -43,14 +43,14 @@ |
| 43 | 43 | <a class="uk-link-reset">应急停靠</a> |
| 44 | 44 | </h2> |
| 45 | 45 | <div> |
| 46 | - <form class="uk-form"> | |
| 46 | + <form class="uk-form" name="yjtkForm"> | |
| 47 | 47 | <table> |
| 48 | 48 | <tr> |
| 49 | 49 | <td colspan="2" style="padding-left: 30px;"> |
| 50 | 50 | 是否启用 |
| 51 | 51 | <select class="z-depth-input" name="enableYjtk"> |
| 52 | - <option>禁用</option> | |
| 53 | - <option>启用</option> | |
| 52 | + <option value="0" >禁用</option> | |
| 53 | + <option value="1" {{if enableYjtk}}selected{{/if}}>启用</option> | |
| 54 | 54 | </select> |
| 55 | 55 | </td> |
| 56 | 56 | </tr> |
| ... | ... | @@ -113,12 +113,56 @@ |
| 113 | 113 | } |
| 114 | 114 | }); |
| 115 | 115 | |
| 116 | - //应急停靠 | |
| 116 | + //启禁用应急停靠 | |
| 117 | 117 | $('[name=enableYjtk]', wrap).on('change', function () { |
| 118 | - | |
| 118 | + if($(this).val() == '1'){ | |
| 119 | + enableYjtkForm(); | |
| 120 | + } | |
| 121 | + else | |
| 122 | + disabledYjtkForm(); | |
| 123 | + }); | |
| 124 | + //参数改变 | |
| 125 | + $('form[name=yjtkForm] input', wrap).on('blur', function () { | |
| 126 | + var field = $(this).attr('name'); | |
| 127 | + var val = $(this).val(); | |
| 128 | + if (conf[field] != val) { | |
| 129 | + var data = $('form[name=yjtkForm]', wrap).serializeJSON(); | |
| 130 | + data.lineCode = conf.line.lineCode; | |
| 131 | + gb_common.$post('/lineConfig/yjtkSet', data, function (rs) { | |
| 132 | + conf = rs.conf; | |
| 133 | + notify_succ('调整应急停靠参数'); | |
| 134 | + }); | |
| 135 | + } | |
| 119 | 136 | }); |
| 120 | 137 | }); |
| 121 | 138 | |
| 139 | + function enableYjtkForm() { | |
| 140 | + var f = $('form[name=yjtkForm]', wrap); | |
| 141 | + $('input', f).removeAttr('disabled'); | |
| 142 | + | |
| 143 | + var data = f.serializeJSON(); | |
| 144 | + data.lineCode = conf.line.lineCode; | |
| 145 | + gb_common.$post('/lineConfig/yjtkSet', data, function (rs) { | |
| 146 | + conf = rs.conf; | |
| 147 | + notify_succ('启用应急停靠'); | |
| 148 | + }); | |
| 149 | + } | |
| 150 | + | |
| 151 | + function disabledYjtkForm() { | |
| 152 | + var f = $('form[name=yjtkForm]', wrap); | |
| 153 | + $('input', f).attr('disabled', 'disabled'); | |
| 154 | + //恢复val | |
| 155 | + $('[name=yjtkStart]',f).val(conf.yjtkStart); | |
| 156 | + $('[name=yjtkEnd]',f).val(conf.yjtkEnd); | |
| 157 | + $('[name=upStopMinute]',f).val(conf.upStopMinute); | |
| 158 | + $('[name=downStopMinute]',f).val(conf.downStopMinute); | |
| 159 | + | |
| 160 | + var data = {enableYjtk: 0, lineCode: conf.line.lineCode}; | |
| 161 | + gb_common.$post('/lineConfig/yjtkSet', data, function (rs) { | |
| 162 | + conf = rs.conf; | |
| 163 | + notify_succ('禁用应急停靠'); | |
| 164 | + }); | |
| 165 | + } | |
| 122 | 166 | })(); |
| 123 | 167 | </script> |
| 124 | 168 | </div> |
| 125 | 169 | \ No newline at end of file | ... | ... |
src/main/resources/static/real_control_v2/fragments/north/nav/line_config/line_config.html
| ... | ... | @@ -11,10 +11,6 @@ |
| 11 | 11 | <div id="buffer_config_panel"></div> |
| 12 | 12 | </div> |
| 13 | 13 | </div> |
| 14 | - | |
| 15 | - <div style="position: absolute;top: 10px;left: 40%;padding: 10px;color: #fe4242;background: #f2f2f2;box-shadow: 3px 1px 4px 0 rgba(0, 0, 0, 0.2), 1px 0px 5px 0 rgba(0, 0, 0, 0.19);font-size: 16px;"> | |
| 16 | - 功能调试中,当前页面暂不可用!!! | |
| 17 | - </div> | |
| 18 | 14 | </div> |
| 19 | 15 | |
| 20 | 16 | |
| ... | ... | @@ -42,27 +38,6 @@ |
| 42 | 38 | var modal = '#nav-line_config-modal', |
| 43 | 39 | lineConfig, activeCode; |
| 44 | 40 | |
| 45 | - $(modal).on('init', function (e, data) { | |
| 46 | - e.stopPropagation(); | |
| 47 | - var htmlStr = template('nav-line_config-modal-tree-temp', {array: gb_data_basic.activeLines}); | |
| 48 | - $('.line-config-tree .uk-accordion', modal).html(htmlStr); | |
| 49 | - | |
| 50 | - if(data.activeCode){ | |
| 51 | - | |
| 52 | - } | |
| 53 | - else{ | |
| 54 | - //没有指定线路,默认展开第一条 | |
| 55 | - var $first = $('.uk-accordion-title:eq(0)', modal); | |
| 56 | - activeCode = $first.data('id'); | |
| 57 | - load(); | |
| 58 | - | |
| 59 | - setTimeout(function () { | |
| 60 | - //选中第一条线路 | |
| 61 | - $first.trigger('click'); | |
| 62 | - }, 400); | |
| 63 | - } | |
| 64 | - }); | |
| 65 | - | |
| 66 | 41 | /** |
| 67 | 42 | * 手风琴拨动 |
| 68 | 43 | */ |
| ... | ... | @@ -73,6 +48,31 @@ |
| 73 | 48 | } |
| 74 | 49 | }); |
| 75 | 50 | |
| 51 | + $(modal).on('init', function (e, data) { | |
| 52 | + e.stopPropagation(); | |
| 53 | + var htmlStr = template('nav-line_config-modal-tree-temp', {array: gb_data_basic.activeLines}); | |
| 54 | + $('.line-config-tree .uk-accordion', modal).html(htmlStr); | |
| 55 | + | |
| 56 | + if(data.activeCode) | |
| 57 | + activeCode = data.activeCode; | |
| 58 | + else{ | |
| 59 | + //展开tab激活的线路 | |
| 60 | + var $activeTab = $('#main-tab-content>li.line_schedule.uk-active'); | |
| 61 | + if($activeTab.length > 0) | |
| 62 | + activeCode = $activeTab.data('id'); | |
| 63 | + else{ | |
| 64 | + //展开第一个 | |
| 65 | + var $first = $('.uk-accordion-title:eq(0)', modal); | |
| 66 | + activeCode = $first.data('id'); | |
| 67 | + } | |
| 68 | + } | |
| 69 | + | |
| 70 | + setTimeout(function () { | |
| 71 | + $('.uk-accordion-title[data-id='+activeCode+']', modal).trigger('click'); | |
| 72 | + }, 500); | |
| 73 | + }); | |
| 74 | + | |
| 75 | + | |
| 76 | 76 | var load = function () { |
| 77 | 77 | //获取线路配置信息 |
| 78 | 78 | $.get('/lineConfig/getByLineCode', {lineCode: activeCode}, function (conf) { | ... | ... |
src/main/resources/static/real_control_v2/fragments/north/nav/line_config/line_config_entity.html
| ... | ... | @@ -23,9 +23,9 @@ |
| 23 | 23 | <small><i class="uk-icon-question-circle"></i> 所有发车时间小于该时间的班次都默认跨过24点,手动调整的实发实达均应用此规则。</small> |
| 24 | 24 | </li> |
| 25 | 25 | </ul> |
| 26 | - <a class="uk-button uk-button-mini">删除实际排班</a> | |
| 27 | - <a class="uk-button uk-button-mini">重新加载实际排班</a> | |
| 28 | - <a class="uk-button uk-button-mini">加载历史GPS恢复到离站</a> | |
| 26 | + <button class="uk-button uk-button-mini" id="clearRealScheduleBtn">删除实际排班</button> | |
| 27 | + <button class="uk-button uk-button-mini" id="reLoadRealScheduleBtn">重新加载实际排班</button> | |
| 28 | + <button class="uk-button uk-button-mini" disabled>加载历史GPS恢复到离站</button> | |
| 29 | 29 | </div> |
| 30 | 30 | </div> |
| 31 | 31 | <div id="out_time_type_panel"> |
| ... | ... | @@ -81,9 +81,42 @@ |
| 81 | 81 | |
| 82 | 82 | var wrap = '#line_config_entity_wrap', conf; |
| 83 | 83 | |
| 84 | + /** | |
| 85 | + * 删除实际排班 | |
| 86 | + */ | |
| 87 | + var clearRealSchedule = function (e) { | |
| 88 | + e.stopPropagation(); | |
| 89 | + var lineCode = conf.line.lineCode; | |
| 90 | + var htmlStr = '<h4 style="color: red;">你确定要删除【' + conf.line.name + '】今日的实际排班?</h4><h5>人车、路牌、待发等相关班次调整信息会被删除。</h5><h5>调度指令和期间与设备的通讯记录被保留</h5><h5>后台日志中的人工操作痕迹被保留</h5>'; | |
| 91 | + alt_confirm(htmlStr, function () { | |
| 92 | + gb_common.$post('/realSchedule/deleteRealSchedule', {lineCode: lineCode}, function () { | |
| 93 | + //刷新班次表格 | |
| 94 | + gb_schedule_table.reLoadAndRefresh(lineCode); | |
| 95 | + notify_succ('删除班次成功!!!'); | |
| 96 | + }); | |
| 97 | + }, '确认删除' + conf.line.name + '的实际排班'); | |
| 98 | + | |
| 99 | + return false; | |
| 100 | + }; | |
| 101 | + | |
| 102 | + /** | |
| 103 | + * 重新载入实际排班 | |
| 104 | + */ | |
| 105 | + var reLoadRealSchedule = function (e) { | |
| 106 | + e.stopPropagation(); | |
| 107 | + var lineCode = conf.line.lineCode; | |
| 108 | + gb_common.$post('/realSchedule/reLoadRealSchedule', {lineCode: lineCode}, function () { | |
| 109 | + //刷新班次表格 | |
| 110 | + gb_schedule_table.reLoadAndRefresh(lineCode); | |
| 111 | + notify_succ('重新载入班次成功'); | |
| 112 | + }); | |
| 113 | + return false; | |
| 114 | + }; | |
| 115 | + | |
| 84 | 116 | $(wrap).on('init', function (e, data) { |
| 85 | 117 | e.stopPropagation(); |
| 86 | 118 | conf = data.lineConfig; |
| 119 | + | |
| 87 | 120 | var htmlStr = template('line_config_entity_form-temp', conf); |
| 88 | 121 | $('form', wrap).html(htmlStr); |
| 89 | 122 | |
| ... | ... | @@ -93,7 +126,11 @@ |
| 93 | 126 | //出场时间类型 |
| 94 | 127 | $('select[name=outParkTypeSelect]', wrap).on('change', updateOutParkType); |
| 95 | 128 | //原线路回场 |
| 96 | - $('select[name=inParkForSourceSelect]', wrap).on('change', enableInParkForSource) | |
| 129 | + $('select[name=inParkForSourceSelect]', wrap).on('change', enableInParkForSource); | |
| 130 | + //删除班次 | |
| 131 | + $('#clearRealScheduleBtn', wrap).on('click', clearRealSchedule); | |
| 132 | + //重新载入实际排班 | |
| 133 | + $('#reLoadRealScheduleBtn', wrap).on('click', reLoadRealSchedule); | |
| 97 | 134 | }); |
| 98 | 135 | |
| 99 | 136 | //更新排班时间 |
| ... | ... | @@ -110,39 +147,23 @@ |
| 110 | 147 | conf.startOpt = rs.time; |
| 111 | 148 | }); |
| 112 | 149 | startOptFlag = false; |
| 113 | - }, 500); | |
| 150 | + }, 300); | |
| 114 | 151 | } |
| 115 | 152 | |
| 116 | - var outParkFlag; | |
| 117 | 153 | function updateOutParkType() { |
| 118 | - if (outParkFlag) | |
| 119 | - return; | |
| 120 | - outParkFlag = true; | |
| 121 | - var that = this; | |
| 122 | - setTimeout(function () { | |
| 123 | - var type = $(that).val(); | |
| 124 | - gb_common.$post('/lineConfig/editOutTimeType', {lineCode: conf.line.lineCode, type: type}, function () { | |
| 125 | - notify_succ('调整出场时间类型成功!'); | |
| 126 | - conf.outConfig = type; | |
| 127 | - }); | |
| 128 | - outParkFlag = false; | |
| 129 | - }, 500); | |
| 154 | + var type = $(this).val(); | |
| 155 | + gb_common.$post('/lineConfig/editOutTimeType', {lineCode: conf.line.lineCode, type: type}, function () { | |
| 156 | + notify_succ('调整出场时间类型成功!'); | |
| 157 | + conf.outConfig = type; | |
| 158 | + }); | |
| 130 | 159 | } |
| 131 | 160 | |
| 132 | - var inParkSourceFlag; | |
| 133 | 161 | function enableInParkForSource() { |
| 134 | - if(inParkSourceFlag) | |
| 135 | - return; | |
| 136 | - inParkSourceFlag = true; | |
| 137 | - var that = this; | |
| 138 | - setTimeout(function () { | |
| 139 | - var enable = $(that).val(); | |
| 140 | - gb_common.$post('/lineConfig/enableInParkForSource', {lineCode: conf.line.lineCode, enable: enable}, function () { | |
| 141 | - notify_succ((enable==1?'启用':'禁用') + '原线路回场'); | |
| 142 | - conf.inParkForSource = enable; | |
| 143 | - }); | |
| 144 | - inParkSourceFlag = false; | |
| 145 | - }, 500); | |
| 162 | + var enable = $(this).val(); | |
| 163 | + gb_common.$post('/lineConfig/enableInParkForSource', {lineCode: conf.line.lineCode, enable: enable}, function () { | |
| 164 | + notify_succ((enable==1?'启用':'禁用') + '原线路回场'); | |
| 165 | + conf.inParkForSource = enable; | |
| 166 | + }); | |
| 146 | 167 | } |
| 147 | 168 | })(); |
| 148 | 169 | </script> | ... | ... |
src/main/resources/static/real_control_v2/js/line_schedule/sch_table.js
| ... | ... | @@ -152,6 +152,8 @@ var gb_schedule_table = (function () { |
| 152 | 152 | } |
| 153 | 153 | |
| 154 | 154 | //重新渲染表格 |
| 155 | + reRenderTable(sch.xlBm); | |
| 156 | + /*//重新渲染表格 | |
| 155 | 157 | var data = gb_common.get_vals(line2Schedule[sch.xlBm]).sort(schedule_sort), |
| 156 | 158 | dirData = gb_common.groupBy(data, 'xlDir'), |
| 157 | 159 | tabCont = $('li.line_schedule[data-id=' + sch.xlBm + ']'); |
| ... | ... | @@ -171,11 +173,72 @@ var gb_schedule_table = (function () { |
| 171 | 173 | //计算应发未发 |
| 172 | 174 | calc_yfwf_num(sch.xlBm); |
| 173 | 175 | //重新固定表头 |
| 174 | - gb_ct_table.fixedHead($('.line_schedule .ct_table_wrap')); | |
| 176 | + gb_ct_table.fixedHead($('.line_schedule .ct_table_wrap'));*/ | |
| 175 | 177 | //定位到新添加的班次 |
| 176 | 178 | scroToDl(sch); |
| 177 | 179 | }; |
| 178 | 180 | |
| 181 | + /** | |
| 182 | + * 重新渲染表格 | |
| 183 | + */ | |
| 184 | + var reRenderTable = function (lineCode) { | |
| 185 | + var data = gb_common.get_vals(line2Schedule[lineCode]).sort(schedule_sort), | |
| 186 | + dirData = gb_common.groupBy(data, 'xlDir'), | |
| 187 | + tabCont = $('li.line_schedule[data-id=' + lineCode + ']'), | |
| 188 | + htmlStr; | |
| 189 | + | |
| 190 | + if($.isEmptyObject(dirData)){ | |
| 191 | + $('.schedule-wrap .card-panel', tabCont).html(''); | |
| 192 | + } | |
| 193 | + else { | |
| 194 | + for (var upDown in dirData) { | |
| 195 | + htmlStr = temps['line-schedule-table-temp']({ | |
| 196 | + dir: upDown, | |
| 197 | + line: gb_data_basic.codeToLine[lineCode], | |
| 198 | + list: dirData[upDown] | |
| 199 | + }); | |
| 200 | + $('.schedule-wrap .card-panel:eq(' + upDown + ')', tabCont).html(htmlStr); | |
| 201 | + } | |
| 202 | + //图例相关 | |
| 203 | + gb_sch_legend.init(tabCont); | |
| 204 | + //标记末班 | |
| 205 | + markerLastByLine(lineCode); | |
| 206 | + //计算应发未发 | |
| 207 | + calc_yfwf_num(lineCode); | |
| 208 | + //重新固定表头 | |
| 209 | + gb_ct_table.fixedHead($('.line_schedule .ct_table_wrap')); | |
| 210 | + } | |
| 211 | + }; | |
| 212 | + | |
| 213 | + | |
| 214 | + /** | |
| 215 | + * 重新从服务器加载数据,并刷新表格 | |
| 216 | + * @param lineCode | |
| 217 | + */ | |
| 218 | + var reLoadAndRefresh = function (lineCode) { | |
| 219 | + $.get('/realSchedule/lines', { | |
| 220 | + lines: lineCode + ',' | |
| 221 | + }, function (rs) { | |
| 222 | + if(!rs || $.isEmptyObject(rs)){ | |
| 223 | + line2Schedule[lineCode] = {}; | |
| 224 | + } | |
| 225 | + else{ | |
| 226 | + //排序 | |
| 227 | + rs[lineCode].sort(schedule_sort); | |
| 228 | + line2Schedule[lineCode] = {}; | |
| 229 | + //calc shift | |
| 230 | + $.each(rs[lineCode], function () { | |
| 231 | + calc_sch_real_shift(this); | |
| 232 | + line2Schedule[lineCode][this.id] = this; | |
| 233 | + }); | |
| 234 | + } | |
| 235 | + //计算应发未发 | |
| 236 | + calc_yfwf_num(lineCode); | |
| 237 | + //重新渲染 | |
| 238 | + reRenderTable(lineCode); | |
| 239 | + }); | |
| 240 | + }; | |
| 241 | + | |
| 179 | 242 | //删除一个班次 |
| 180 | 243 | var deheteSchedule = function (sch) { |
| 181 | 244 | sch = line2Schedule[sch.xlBm][sch.id]; |
| ... | ... | @@ -494,6 +557,7 @@ var gb_schedule_table = (function () { |
| 494 | 557 | reset_drag_active_all: reset_drag_active_all, |
| 495 | 558 | getDl: getDl, |
| 496 | 559 | getNextSch: getNextSch, |
| 497 | - addRemarks: addRemarks | |
| 560 | + addRemarks: addRemarks, | |
| 561 | + reLoadAndRefresh: reLoadAndRefresh | |
| 498 | 562 | }; |
| 499 | 563 | })(); | ... | ... |