Commit 87c2836146339c14ee862078e330822c7829c0ef
1 parent
3eb5c3a9
自动调度全部上线更新
Showing
15 changed files
with
319 additions
and
122 deletions
src/main/java/com/bsth/XDApplication.java
| ... | ... | @@ -145,7 +145,7 @@ public class XDApplication implements CommandLineRunner { |
| 145 | 145 | //dayOfSchedule.dataRecovery(); |
| 146 | 146 | |
| 147 | 147 | //智能调度 |
| 148 | - sexec.scheduleWithFixedDelay(znddThread, 15, 25, TimeUnit.SECONDS); | |
| 148 | + sexec.scheduleWithFixedDelay(znddThread, 60, 25, TimeUnit.SECONDS); | |
| 149 | 149 | |
| 150 | 150 | //安全驾驶 |
| 151 | 151 | sexec.scheduleWithFixedDelay(safeDrivDataLoadThread, 180, 10, TimeUnit.SECONDS); |
| ... | ... | @@ -193,7 +193,7 @@ public class XDApplication implements CommandLineRunner { |
| 193 | 193 | //安全驾驶 |
| 194 | 194 | sexec.scheduleWithFixedDelay(safeDrivDataLoadThread, 180, 10, TimeUnit.SECONDS); |
| 195 | 195 | //智能调度 |
| 196 | - sexec.scheduleWithFixedDelay(znddThread, 15, 25, TimeUnit.SECONDS); | |
| 196 | + sexec.scheduleWithFixedDelay(znddThread, 60, 25, TimeUnit.SECONDS); | |
| 197 | 197 | GpsDataLoaderThread.setFlag(-1); |
| 198 | 198 | /** 线调业务 */ |
| 199 | 199 | sexec.scheduleWithFixedDelay(scheduleRefreshThread, 10, 120, TimeUnit.SECONDS);//班次更新线程 |
| ... | ... | @@ -238,7 +238,7 @@ public class XDApplication implements CommandLineRunner { |
| 238 | 238 | //安全驾驶 |
| 239 | 239 | sexec.scheduleWithFixedDelay(safeDrivDataLoadThread, 180, 10, TimeUnit.SECONDS); |
| 240 | 240 | //智能调度 |
| 241 | - sexec.scheduleWithFixedDelay(znddThread, 15, 25, TimeUnit.SECONDS); | |
| 241 | + sexec.scheduleWithFixedDelay(znddThread, 60, 25, TimeUnit.SECONDS); | |
| 242 | 242 | GpsDataLoaderThread.setFlag(-1); |
| 243 | 243 | //dayOfSchedule.dataRecovery(); |
| 244 | 244 | /** 线调业务 */ |
| ... | ... | @@ -260,7 +260,7 @@ public class XDApplication implements CommandLineRunner { |
| 260 | 260 | WebSocketPushQueue.start();//消息队列 -webSocket ,推送至线调web页面的 |
| 261 | 261 | |
| 262 | 262 | /** 线调为其他程序提供的数据 --写入数据库 */ |
| 263 | - sexec.scheduleWithFixedDelay(fcxxUpdateThread, 160, 30, TimeUnit.SECONDS);//发车信息(发车屏、信息发布) | |
| 263 | + //sexec.scheduleWithFixedDelay(fcxxUpdateThread, 160, 30, TimeUnit.SECONDS);//发车信息(发车屏、信息发布) | |
| 264 | 264 | //线路首末班数据(网关用,班次更新时写入) |
| 265 | 265 | //com.bsth.data.schedule.f_a_l.FirstAndLastHandler |
| 266 | 266 | sexec.scheduleWithFixedDelay(schSiginUpdateDBThread, 160, 60 * 30, TimeUnit.SECONDS);//无法自动完成的班次信息(网关用,补信号) | ... | ... |
src/main/java/com/bsth/data/kl/KlData.java
| ... | ... | @@ -6,9 +6,10 @@ import org.slf4j.Logger; |
| 6 | 6 | import org.slf4j.LoggerFactory; |
| 7 | 7 | import org.springframework.beans.factory.annotation.Autowired; |
| 8 | 8 | import org.springframework.beans.factory.annotation.Value; |
| 9 | -import org.springframework.scheduling.annotation.Scheduled; | |
| 10 | 9 | import org.springframework.stereotype.Component; |
| 11 | -import java.util.*; | |
| 10 | + | |
| 11 | +import java.util.HashMap; | |
| 12 | +import java.util.Map; | |
| 12 | 13 | |
| 13 | 14 | /** |
| 14 | 15 | * @author ym |
| ... | ... | @@ -30,7 +31,7 @@ public class KlData { |
| 30 | 31 | @Value("${passengerFlow.url}") |
| 31 | 32 | private String url; |
| 32 | 33 | |
| 33 | - @Scheduled(cron = "0/10 * * * * ?") | |
| 34 | + /* @Scheduled(cron = "0/10 * * * * ?") | |
| 34 | 35 | public void loadKl() { |
| 35 | 36 | Map<String,Kl> map= new HashMap<>(); |
| 36 | 37 | List<Kl> list = klService.loadKl(); |
| ... | ... | @@ -40,7 +41,7 @@ public class KlData { |
| 40 | 41 | map.put(kl.getDeviceId(),kl); |
| 41 | 42 | } |
| 42 | 43 | KlData =map; |
| 43 | - } | |
| 44 | + }*/ | |
| 44 | 45 | |
| 45 | 46 | public static Kl getKl(String deviceId){ |
| 46 | 47 | //return KlData.get( KlData.keySet().toArray()[0]); | ... | ... |
src/main/java/com/bsth/data/zndd/AutomaticSch.java
| ... | ... | @@ -8,16 +8,23 @@ import com.bsth.data.adjg.domain.LargeGap; |
| 8 | 8 | import com.bsth.data.directive.DayOfDirectives; |
| 9 | 9 | import com.bsth.data.gpsdata_v2.GpsRealData; |
| 10 | 10 | import com.bsth.data.gpsdata_v2.entity.GpsEntity; |
| 11 | +import com.bsth.data.gpsdata_v2.rfid.RfidHttpLoader; | |
| 12 | +import com.bsth.data.gpsdata_v2.rfid.entity.RfidInfo; | |
| 11 | 13 | import com.bsth.data.schedule.DayOfSchedule; |
| 12 | 14 | import com.bsth.data.schedule.ScheduleComparator; |
| 15 | +import com.bsth.data.schedule.edit_logs.entity.SchEditInfo; | |
| 16 | +import com.bsth.data.schedule.edit_logs.service.SchEditInfoService; | |
| 13 | 17 | import com.bsth.data.schedule.late_adjust.LateAdjustHandle; |
| 14 | 18 | import com.bsth.entity.directive.D60; |
| 15 | 19 | import com.bsth.entity.realcontrol.ScheduleRealInfo; |
| 20 | +import com.bsth.entity.zndd.StationPeopleLogger; | |
| 16 | 21 | import com.bsth.entity.zndd.ZnddYuAn; |
| 17 | 22 | import com.bsth.repository.StationRouteRepository; |
| 18 | 23 | import com.bsth.service.directive.DirectiveService; |
| 19 | 24 | import com.bsth.service.realcontrol.ScheduleRealInfoService; |
| 25 | +import com.bsth.service.zndd.ZnddLoggerService; | |
| 20 | 26 | import com.bsth.service.zndd.ZnddYuAnService; |
| 27 | +import com.bsth.util.DateUtils; | |
| 21 | 28 | import com.bsth.util.HttpClientUtils; |
| 22 | 29 | import com.google.gson.Gson; |
| 23 | 30 | import org.apache.commons.lang3.StringUtils; |
| ... | ... | @@ -60,17 +67,24 @@ public class AutomaticSch { |
| 60 | 67 | @Autowired |
| 61 | 68 | ZnddYuAnService znddYuAnService; |
| 62 | 69 | |
| 70 | + @Autowired | |
| 71 | + ZnddLoggerService znddLoggerService; | |
| 72 | + @Autowired | |
| 73 | + SchEditInfoService schEditInfoService; | |
| 74 | + | |
| 75 | + | |
| 63 | 76 | private static SimpleDateFormat sdfHHmm = new SimpleDateFormat("HH:mm"); |
| 77 | + private static SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"); | |
| 64 | 78 | SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm"); |
| 65 | 79 | |
| 66 | 80 | private static Comparator<ScheduleRealInfo> cpm = new ScheduleComparator.DFSJ2(); |
| 67 | 81 | private Map<String,Long> drivreMap =new HashMap<>(); //自动重发map |
| 68 | 82 | |
| 69 | - String urldkl = "http://10.10.200.202:5580/monitor/api/getMonitorInfoByDay?key=1&solt=1111&t=1&dayStr=2024-12-04"; //大间隔接口 | |
| 83 | + String urldkl = "http://10.10.200.202:5580/monitor/api/getMonitorInfoByDay?key=1&solt=1111&t=1&dayStr="; //大间隔接口 | |
| 70 | 84 | |
| 71 | 85 | //http://10.10.200.201:8083/wxk-prod-api/service-api/lggj/schedule/drByInfo 维修接口 |
| 72 | 86 | String urldkls = "http://10.10.200.140:13089/bsth_passengerflow/klbus/currentInsideNum.do"; //满载接口 |
| 73 | - private Map<String,Long> SFMAP = new HashMap<>(); | |
| 87 | + private Map<Long,Long> SFMAP = new HashMap<>(); | |
| 74 | 88 | |
| 75 | 89 | //满载 |
| 76 | 90 | public void mz(){ |
| ... | ... | @@ -90,7 +104,7 @@ public class AutomaticSch { |
| 90 | 104 | //大间隔的情况 |
| 91 | 105 | public void dfTz(int k ){ |
| 92 | 106 | try{ |
| 93 | - StringBuilder sb = HttpClientUtils.get(urldkl /*+ sdfMonth.format(new Date())*/); | |
| 107 | + StringBuilder sb = HttpClientUtils.get(urldkl + sdfMonth.format(new Date())); | |
| 94 | 108 | if (sb == null) |
| 95 | 109 | return; |
| 96 | 110 | JSONObject obj = JSON.parseObject(sb.toString()); |
| ... | ... | @@ -103,20 +117,35 @@ public class AutomaticSch { |
| 103 | 117 | }else { |
| 104 | 118 | continue; |
| 105 | 119 | } |
| 106 | - if (k == 0 ){ | |
| 107 | - if(lg.getlGType() == 0){ | |
| 108 | - ts(ConvertDJK(lg,sch,"FCJG")); | |
| 109 | - String chartStr = JSON.toJSONString(sch); | |
| 110 | - logger.info("发车大间隔--"+chartStr); | |
| 120 | + Long t0 = new Date().getTime() - (1000 * 60 * 2); | |
| 121 | + Long t1 = t0 - (1000 * 60 * 2); | |
| 122 | + Long t2 = t0 + (1000 * 60 * 2); | |
| 123 | + //判断当前间隔是否出现过并且在当前时间段内 大于2分钟 小于1分钟的时间之内 | |
| 124 | + //if ( lg.getTsTime() > t1 && lg.getTsTime() < t2 && SFMAP.get(lg.getId()) == null ) { | |
| 125 | + if (k == 0) { | |
| 126 | + if (lg.getlGType() == 0) { | |
| 127 | + ts(ConvertDJK(lg, sch, "FCJG")); | |
| 128 | + SFMAP.put(lg.getId(), lg.getTsTime()); | |
| 129 | + String chartStr = JSON.toJSONString(sch); | |
| 130 | + logger.info("发车大间隔--" + chartStr); | |
| 131 | + } | |
| 132 | + } else { | |
| 133 | + if (lg.getlGType() != 0) { | |
| 134 | + ts(ConvertDJK(lg, sch, "DJG")); | |
| 135 | + SFMAP.put(lg.getId(), lg.getTsTime()); | |
| 136 | + String chartStr = JSON.toJSONString(sch); | |
| 137 | + logger.info("行车大间隔--" + chartStr); | |
| 138 | + } | |
| 111 | 139 | } |
| 112 | - }else { | |
| 113 | - if(lg.getlGType() != 0){ | |
| 114 | - ts(ConvertDJK(lg,sch,"DJG")); | |
| 115 | - String chartStr = JSON.toJSONString(sch); | |
| 116 | - logger.info("行车大间隔--"+chartStr); | |
| 140 | + // } | |
| 141 | + //大于10000条的时候开始清理map | |
| 142 | + if (SFMAP.size() > 10000){ | |
| 143 | + for (Map.Entry<Long, Long> m : SFMAP.entrySet()){ | |
| 144 | + if(m.getValue() < DateUtils.getTimestamp()){ | |
| 145 | + SFMAP.remove(m.getKey()); | |
| 146 | + } | |
| 117 | 147 | } |
| 118 | 148 | } |
| 119 | - | |
| 120 | 149 | } |
| 121 | 150 | |
| 122 | 151 | }catch (Exception e){ |
| ... | ... | @@ -154,7 +183,21 @@ public class AutomaticSch { |
| 154 | 183 | //1。一直没收到gps |
| 155 | 184 | //2.gps长时间离线的情况下 |
| 156 | 185 | //3.人为调整过的都跳过 |
| 157 | - if (gps == null || gps.getTimestamp() + (1000 * 60 * 3) < time || (gps.getAbnormalStatus() != null && gps.getAbnormalStatus().equals("offline"))) { | |
| 186 | + if (gps == null || gps.getTimestamp() + (1000 * 60 * 5) < time || (gps.getAbnormalStatus() != null && gps.getAbnormalStatus().equals("offline"))) { | |
| 187 | + String sfsj = null; | |
| 188 | + //rfid 判断 | |
| 189 | + List<RfidInfo> list = RfidHttpLoader.load(); | |
| 190 | + for (RfidInfo ri : list) { | |
| 191 | + //最新的rfid是出站状态 | |
| 192 | + if (ri.getNbbm().equals(sr.getClZbh())){ | |
| 193 | + sfsj = sdfHHmm.format(ri.getInoutStation().getTimestamp()); | |
| 194 | + } | |
| 195 | + if (ri.getNbbm().equals(sr.getClZbh()) && ri.getInoutStation().getInout() == 0) { | |
| 196 | + sfsj = sdfHHmm.format(ri.getInoutStation().getTimestamp()); | |
| 197 | + } | |
| 198 | + | |
| 199 | + } | |
| 200 | + sr.setFcsjActual(sfsj); | |
| 158 | 201 | ts(addStationPeople(sr, "SFTZ_1", 0L)); |
| 159 | 202 | Gson gson = new Gson(); |
| 160 | 203 | String chartStr = gson.toJsonTree(sr).toString(); |
| ... | ... | @@ -190,8 +233,7 @@ public class AutomaticSch { |
| 190 | 233 | for (ScheduleRealInfo t : oldSchDateList){ |
| 191 | 234 | // 发车误点 |
| 192 | 235 | if (t.getDfsj() != null && t.getFcsjActual() != null |
| 193 | - && (t.getBcType().equals("normal") || t.getBcType().equals("region")) | |
| 194 | - && (StringUtils.isEmpty(t.getRemarks()) || t.getRemarks().equals("_智能调度-异常实发"))) { | |
| 236 | + && (t.getBcType().equals("normal") || t.getBcType().equals("region"))) { | |
| 195 | 237 | |
| 196 | 238 | long sjc = t.getFcsjActualTime() - t.getDfsjT(); |
| 197 | 239 | long time = System.currentTimeMillis();//当前时间 |
| ... | ... | @@ -201,6 +243,16 @@ public class AutomaticSch { |
| 201 | 243 | if (sjc >= -1 * 60 * 1000 && sjc <= 3 * 60 * 1000) { |
| 202 | 244 | continue; |
| 203 | 245 | } else { |
| 246 | + //备注不为null时,查询是否有调度操作记录 | |
| 247 | + List<SchEditInfo> seiList = new ArrayList<>(); | |
| 248 | + if (!StringUtils.isEmpty(t.getRemarks())){ | |
| 249 | + Map msp = new HashMap(); | |
| 250 | + msp.put("schId_eq",t.getId()); | |
| 251 | + seiList = (List<SchEditInfo>) schEditInfoService.list(msp); | |
| 252 | + //有操作记录的跳过 | |
| 253 | + if (seiList.size() > 0) | |
| 254 | + continue; | |
| 255 | + } | |
| 204 | 256 | //异常实发 |
| 205 | 257 | ts(addStationPeople(t, "YCSF", 0l)); |
| 206 | 258 | Gson gson = new Gson(); |
| ... | ... | @@ -252,8 +304,7 @@ public class AutomaticSch { |
| 252 | 304 | String lineCode; |
| 253 | 305 | for (Map.Entry<String, String> ts : lineMap.entrySet()) { |
| 254 | 306 | lineCode = ts.getKey(); |
| 255 | - if(isLines(lineCode)) { | |
| 256 | - | |
| 307 | + /* if(isLines(lineCode)) {*/ | |
| 257 | 308 | oldSchDateList = dayOfSchedule.findByLineCode(lineCode); |
| 258 | 309 | for (ScheduleRealInfo t : oldSchDateList) { |
| 259 | 310 | //指令重发 |
| ... | ... | @@ -276,7 +327,7 @@ public class AutomaticSch { |
| 276 | 327 | //下发时间未超过5分钟返回 |
| 277 | 328 | } |
| 278 | 329 | } |
| 279 | - } | |
| 330 | + /*}*/ | |
| 280 | 331 | } |
| 281 | 332 | } |
| 282 | 333 | }catch (Exception e){ |
| ... | ... | @@ -298,8 +349,8 @@ public class AutomaticSch { |
| 298 | 349 | if(sch.getDfsjT() > t) |
| 299 | 350 | break; |
| 300 | 351 | |
| 301 | - /*if(sch.isLate()) //演示使用 不跳过 | |
| 302 | - continue;*/ | |
| 352 | + if(sch.isLate()) //演示使用 不跳过 | |
| 353 | + continue; | |
| 303 | 354 | |
| 304 | 355 | if(sch.getStatus() == 0 |
| 305 | 356 | && StringUtils.isEmpty(sch.getFcsjActual())){ |
| ... | ... | @@ -333,29 +384,20 @@ public class AutomaticSch { |
| 333 | 384 | |
| 334 | 385 | |
| 335 | 386 | public void ts(Map m) throws ParseException { |
| 336 | - //记录存一下 --超过当前时间的是否推送? | |
| 337 | - String st = m.get("lineCode")+"_"+m.get("type")+"_"+m.get("rqStr"); | |
| 338 | - Long sj = sdf.parse(m.get("rqStr").toString() +" "+ m.get("rq")).getTime(); | |
| 339 | - Long dsj = new Date().getTime(); | |
| 340 | - List<Long> list = new ArrayList(); | |
| 341 | - //111_DJG_2024-06-24 | |
| 342 | - if (ZnddThread.ZNDDTYPEMAP.get(st) != null ) { | |
| 343 | - list = ZnddThread.ZNDDTYPEMAP.get(st); | |
| 344 | - int i = 0; | |
| 345 | - | |
| 346 | - for (Long s : list){ //推送过的同样情况1小时内 &&//超过当前时间的不推送&& sj < dsj | |
| 347 | - if (Math.abs(s - sj) > (60 * 60 * 1000)){ | |
| 348 | - i ++ ; | |
| 349 | - } | |
| 350 | - } | |
| 351 | - outEntrance.Znddjk(m);//测试推送 | |
| 352 | - }else { | |
| 353 | - list.add(sj); | |
| 354 | - ZnddThread.ZNDDTYPEMAP.put(st,list);//存记录 | |
| 355 | - outEntrance.Znddjk(m);//推送 | |
| 356 | - } | |
| 357 | - | |
| 358 | 387 | |
| 388 | + //储存日志 | |
| 389 | + StationPeopleLogger splogger = new StationPeopleLogger(); | |
| 390 | + splogger.setType(m.get("type").toString()); | |
| 391 | + splogger.setLineName(m.get("lineName").toString()); | |
| 392 | + splogger.setLineCode(m.get("lineCode").toString()); | |
| 393 | + splogger.setRq(sdf.format(new Date())); | |
| 394 | + splogger.setRqStr(m.get("rqStr").toString()); | |
| 395 | + splogger.setXlDir(m.get("xlDir").toString()); | |
| 396 | + splogger.setFcsj(m.get("fcsj").toString()); | |
| 397 | + splogger.setClZbh(m.get("clzbh").toString()); | |
| 398 | + znddLoggerService.save(splogger); | |
| 399 | + | |
| 400 | + outEntrance.Znddjk(m);//推送 | |
| 359 | 401 | } |
| 360 | 402 | |
| 361 | 403 | ... | ... |
src/main/java/com/bsth/data/zndd/OutEntrance.java
| ... | ... | @@ -6,10 +6,12 @@ import com.bsth.common.ResponseCode; |
| 6 | 6 | import com.bsth.data.BasicData; |
| 7 | 7 | import com.bsth.data.schedule.DayOfSchedule; |
| 8 | 8 | import com.bsth.data.schedule.ScheduleComparator; |
| 9 | +import com.bsth.data.schedule.late_adjust.LateAdjustHandle; | |
| 9 | 10 | import com.bsth.entity.DKLInfo; |
| 10 | 11 | import com.bsth.entity.realcontrol.ScheduleRealInfo; |
| 11 | -import com.bsth.entity.zndd.StationPeopleLogger; | |
| 12 | 12 | import com.bsth.entity.zndd.StationSignsLogger; |
| 13 | +import com.bsth.entity.zndd.znddStatus; | |
| 14 | +import com.bsth.repository.zndd.ZnddStatusRepository; | |
| 13 | 15 | import com.bsth.service.DKLInfoService; |
| 14 | 16 | import com.bsth.util.HttpClientUtils; |
| 15 | 17 | import com.bsth.util.SignUtils; |
| ... | ... | @@ -75,6 +77,12 @@ public class OutEntrance { |
| 75 | 77 | @Autowired |
| 76 | 78 | JdbcTemplate jdbcTemplate; |
| 77 | 79 | |
| 80 | + @Autowired | |
| 81 | + ZnddStatusRepository znddStatusRepository; | |
| 82 | + | |
| 83 | + @Autowired | |
| 84 | + BasicData basicData; | |
| 85 | + | |
| 78 | 86 | //调度屏小程序接口。 |
| 79 | 87 | @RequestMapping(value = "/OutCar", method = RequestMethod.POST) |
| 80 | 88 | public Map OutCarOutCar(@RequestParam Map m,@RequestBody StationSignsLogger ssLogger) { |
| ... | ... | @@ -114,6 +122,31 @@ public class OutEntrance { |
| 114 | 122 | } |
| 115 | 123 | rtn.put("message",s+"亲爱的乘客,我们的调度员已接收到通知,车辆预计还有"+dzList.get(0).get("sj")+"抵达,请稍等片刻"); |
| 116 | 124 | }else { |
| 125 | + //第一个班次 | |
| 126 | + //所有应发未到的班次 | |
| 127 | + Collection<ScheduleRealInfo> all = LateAdjustHandle.allLateSch(); | |
| 128 | + for (ScheduleRealInfo schc : all) { | |
| 129 | + Long schId = (Long) dzList.get(0).get("schId"); | |
| 130 | + ScheduleRealInfo sch = null; | |
| 131 | + if (schId != null) | |
| 132 | + sch = dayOfSchedule.get(schId); | |
| 133 | + | |
| 134 | + ScheduleRealInfo prev = dayOfSchedule.prev(sch); | |
| 135 | + List<Map> dzLists = carMonitor.carMonitor(prev.getXlBm(), prev.getXlDir(), prev.getZdzCode()); //信息发布接口 | |
| 136 | + for (Map mst : dzLists) { | |
| 137 | + //匹配到当前车辆 | |
| 138 | + if (basicData.nbbmCompanyPlateMap.get(prev.getClZbh()) != null && mst.get("terminal").equals(basicData.nbbmCompanyPlateMap.get(prev.getClZbh()).replaceAll("-", ""))) { | |
| 139 | + if (sch.getXlBm().equals(schc.getXlBm())) { | |
| 140 | + rtn.put("message", "非常抱歉,车辆因路上交通拥堵,预计还需要" + m.get("sj").toString() + "抵达,请稍等片刻"); | |
| 141 | + rtn.put("status", ResponseCode.SUCCESS); | |
| 142 | + return rtn; | |
| 143 | + } | |
| 144 | + } | |
| 145 | + } | |
| 146 | + } | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 117 | 150 | //筛选方向 |
| 118 | 151 | List<ScheduleRealInfo> rs = dayOfSchedule.findByLineAndUpDown(ssLogger.getLineCode(),Integer.parseInt(ssLogger.getDir())); |
| 119 | 152 | if(rs.size()>0){ |
| ... | ... | @@ -159,6 +192,23 @@ public class OutEntrance { |
| 159 | 192 | rtn.put("status", "验证失败"); |
| 160 | 193 | return rtn; |
| 161 | 194 | } |
| 195 | + //大客流开关 | |
| 196 | + List<znddStatus> znddStatusList = (List<znddStatus>) znddStatusRepository.findAll(); | |
| 197 | + Boolean isType = false; | |
| 198 | + String excuteStatus = null; | |
| 199 | + for (znddStatus zs : znddStatusList) { | |
| 200 | + if (zs.getType().equals("dkl")) { | |
| 201 | + isType = true; | |
| 202 | + excuteStatus = zs.getExcuteStatus(); | |
| 203 | + } | |
| 204 | + } | |
| 205 | + | |
| 206 | + if (!isType){ | |
| 207 | + logger.info("大客流接口未开启--------------"); | |
| 208 | + rtn.put("status",ResponseCode.SUCCESS); | |
| 209 | + return rtn; | |
| 210 | + } | |
| 211 | + | |
| 162 | 212 | String num=jsonObject.getString("num"); |
| 163 | 213 | int count=automaticSch.getPenum("DKL","0"); |
| 164 | 214 | if(Integer.parseInt(num)<count){ |
| ... | ... | @@ -198,6 +248,7 @@ public class OutEntrance { |
| 198 | 248 | m.put("lineName",lineName); |
| 199 | 249 | m.put("num",num); |
| 200 | 250 | m.put("xlDir",dir); |
| 251 | + m.put("excuteStatus",excuteStatus); | |
| 201 | 252 | List<ScheduleRealInfo> srList=dayOfSchedule.findByLineAndUpDown(lineCode,Integer.parseInt(dir)); |
| 202 | 253 | List<ScheduleRealInfo> sl=new ArrayList<>(); |
| 203 | 254 | for (ScheduleRealInfo scheduleRealInfo : srList) {//筛选出运营班次 |
| ... | ... | @@ -273,33 +324,6 @@ public class OutEntrance { |
| 273 | 324 | } |
| 274 | 325 | |
| 275 | 326 | |
| 276 | - //智能调度接口-大客流 | |
| 277 | - @RequestMapping(value="/dkl",method = RequestMethod.POST) | |
| 278 | - public Map ddkl(@RequestParam Map m) { | |
| 279 | - Map rtn = new HashMap<>(); | |
| 280 | - | |
| 281 | - try { | |
| 282 | - ObjectMapper mapper = new ObjectMapper(); | |
| 283 | - //map转换实体类 | |
| 284 | - StationPeopleLogger ssLogger = mapper.convertValue(m, StationPeopleLogger.class); | |
| 285 | - | |
| 286 | - ssLogger.setType("大客流"); | |
| 287 | - | |
| 288 | - //保存记录 | |
| 289 | - //znddLoggerService.save(ssLogger); | |
| 290 | - //线调页面推送 | |
| 291 | - //sendUtils.sendzndd(ssLogger); | |
| 292 | - | |
| 293 | - rtn.put("status",ResponseCode.SUCCESS); | |
| 294 | - } catch (Exception e) { | |
| 295 | - rtn.put("status", ResponseCode.ERROR); | |
| 296 | - logger.error("大客流推送异常----",e); | |
| 297 | - } | |
| 298 | - return rtn; | |
| 299 | - } | |
| 300 | - | |
| 301 | - | |
| 302 | - | |
| 303 | 327 | |
| 304 | 328 | /** |
| 305 | 329 | * 保存base64图片 | ... | ... |
src/main/java/com/bsth/data/zndd/carMonitor.java
| ... | ... | @@ -81,6 +81,7 @@ public class carMonitor { |
| 81 | 81 | map.put("lat",responseEle.elementTextTrim("lat")); |
| 82 | 82 | map.put("nbbm",responseEle.elementTextTrim("insidecode")); |
| 83 | 83 | map.put("road",responseEle.elementTextTrim("road")); |
| 84 | + map.put("schId",responseEle.elementTextTrim("schId")); | |
| 84 | 85 | list.add(map); |
| 85 | 86 | } |
| 86 | 87 | } | ... | ... |
src/main/java/com/bsth/entity/zndd/StationPeopleLogger.java
| ... | ... | @@ -7,7 +7,7 @@ import javax.persistence.*; |
| 7 | 7 | import java.io.Serializable; |
| 8 | 8 | |
| 9 | 9 | @Entity |
| 10 | -@Table(name = "bsth_c_t_station_people_logger") //智能调度记录查询表 | |
| 10 | +@Table(name = "bsth_c_t_station_people_logger") //智能调度记录检测表 | |
| 11 | 11 | @JsonIgnoreProperties(value={"hibernateLazyInitializer","handler","fieldHandler"}) |
| 12 | 12 | public class StationPeopleLogger implements Serializable { |
| 13 | 13 | // ID |
| ... | ... | @@ -19,8 +19,10 @@ public class StationPeopleLogger implements Serializable { |
| 19 | 19 | //线路名称 |
| 20 | 20 | private String lineName; |
| 21 | 21 | //站点code |
| 22 | + @Transient | |
| 22 | 23 | private String station; |
| 23 | 24 | //站点名称 |
| 25 | + @Transient | |
| 24 | 26 | private String stationName; |
| 25 | 27 | //日期 |
| 26 | 28 | private String rqStr; |
| ... | ... | @@ -31,8 +33,19 @@ public class StationPeopleLogger implements Serializable { |
| 31 | 33 | //上下行 |
| 32 | 34 | private String xlDir; |
| 33 | 35 | //人数 or 差距时间 or 站点差数 根据类型判断 |
| 34 | - private Long numType; | |
| 35 | - | |
| 36 | + private String fcsj; | |
| 37 | + | |
| 38 | + private String clZbh; | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + public String getClZbh() { | |
| 43 | + return clZbh; | |
| 44 | + } | |
| 45 | + | |
| 46 | + public void setClZbh(String clZbh) { | |
| 47 | + this.clZbh = clZbh; | |
| 48 | + } | |
| 36 | 49 | |
| 37 | 50 | public void setId(Long id) { |
| 38 | 51 | this.id = id; |
| ... | ... | @@ -90,8 +103,12 @@ public class StationPeopleLogger implements Serializable { |
| 90 | 103 | this.rq = rq; |
| 91 | 104 | } |
| 92 | 105 | |
| 93 | - public Long getNumType() { | |
| 94 | - return numType; | |
| 106 | + public String getFcsj() { | |
| 107 | + return fcsj; | |
| 108 | + } | |
| 109 | + | |
| 110 | + public void setFcsj(String fcsj) { | |
| 111 | + this.fcsj = fcsj; | |
| 95 | 112 | } |
| 96 | 113 | |
| 97 | 114 | public String getStation() { |
| ... | ... | @@ -110,8 +127,5 @@ public class StationPeopleLogger implements Serializable { |
| 110 | 127 | this.stationName = stationName; |
| 111 | 128 | } |
| 112 | 129 | |
| 113 | - public void setNumType(Long numType) { | |
| 114 | - this.numType = numType; | |
| 115 | - } | |
| 116 | 130 | |
| 117 | 131 | } | ... | ... |
src/main/java/com/bsth/repository/zndd/ZnddLoggerRepository.java
0 → 100644
src/main/java/com/bsth/service/zndd/ZnddLoggerService.java
0 → 100644
src/main/java/com/bsth/service/zndd/impl/LoggerZnddServiceImpl.java
| ... | ... | @@ -135,7 +135,7 @@ public class LoggerZnddServiceImpl extends BaseServiceImpl<LoggerZndd, Integer> |
| 135 | 135 | int ms = mis[i]; |
| 136 | 136 | //未发车时 才可改变 |
| 137 | 137 | if (info.getFcsjActual() == null || info.getFcsjActual().equals("")){ |
| 138 | - String dfsj = sdfMonth.format(sdf.parse(info.getScheduleDateStr()+ " " + info.getDfsj()).getTime() + (ms * 60 * 1000)); //延后几分钟 | |
| 138 | + String dfsj = sdfMonth.format(sdf.parse(info.getScheduleDateStr()+ " " + info.getDfsj()).getTime() - (ms * 60 * 1000)); //延后几分钟 | |
| 139 | 139 | cl.setSchId(info.getId()); |
| 140 | 140 | cl.setOld_dfsj(info.getDfsj()); |
| 141 | 141 | cl.setNew_dfsj(dfsj); | ... | ... |
src/main/java/com/bsth/service/zndd/impl/ZnddLoggerServiceImpl.java
0 → 100644
| 1 | +package com.bsth.service.zndd.impl; | |
| 2 | + | |
| 3 | +import com.bsth.entity.zndd.StationPeopleLogger; | |
| 4 | +import com.bsth.service.impl.BaseServiceImpl; | |
| 5 | +import com.bsth.service.zndd.ZnddLoggerService; | |
| 6 | +import org.springframework.stereotype.Service; | |
| 7 | + | |
| 8 | +@Service | |
| 9 | +public class ZnddLoggerServiceImpl extends BaseServiceImpl<StationPeopleLogger, Integer> implements ZnddLoggerService { | |
| 10 | +} | ... | ... |
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/temp_sch_v2/add_two_way_znddType.html
| ... | ... | @@ -263,7 +263,7 @@ |
| 263 | 263 | </script> |
| 264 | 264 | |
| 265 | 265 | <script> |
| 266 | - (function () { | |
| 266 | + var addTwoWayZnddType = (function () { | |
| 267 | 267 | var wrap = '#schedule-addsch-modal .toAndFroCont', sch, f1, f2, submitFun, stationRoutes; |
| 268 | 268 | |
| 269 | 269 | $(wrap).on('init', function (e, data) { |
| ... | ... | @@ -311,7 +311,7 @@ |
| 311 | 311 | $f('zdsj',f1).on('input', synchroFormData); |
| 312 | 312 | |
| 313 | 313 | //表单校验提交相关 |
| 314 | - var dataArray; | |
| 314 | + | |
| 315 | 315 | var fs = $('.add-sch-form', wrap); |
| 316 | 316 | fs.on('success.form.fv', function (e) { |
| 317 | 317 | e.preventDefault(); |
| ... | ... | @@ -352,6 +352,7 @@ |
| 352 | 352 | })(); |
| 353 | 353 | } |
| 354 | 354 | }); |
| 355 | + | |
| 355 | 356 | //提交 |
| 356 | 357 | $('[type=submit]', wrap).on('click', function () { |
| 357 | 358 | $(this).addClass('disabled').attr('disabled', 'disabled'); |
| ... | ... | @@ -360,6 +361,57 @@ |
| 360 | 361 | fs.formValidation('validate'); |
| 361 | 362 | }); |
| 362 | 363 | }); |
| 364 | + var dataArray; | |
| 365 | + | |
| 366 | + var submit = function () { | |
| 367 | + debugger | |
| 368 | + $(this).addClass('disabled').attr('disabled', 'disabled'); | |
| 369 | + dataArray = []; | |
| 370 | + var fs = $('.add-sch-form', wrap); | |
| 371 | + fs.data('valid', false); | |
| 372 | + fs.formValidation('validate'); | |
| 373 | + | |
| 374 | + | |
| 375 | + fs.on('success.form.fv', function (e) { | |
| 376 | + e.preventDefault(); | |
| 377 | + dataArray.push($(this).serializeJSON()); | |
| 378 | + $(this).data('valid', true); | |
| 379 | + if (allValidSuccess()) { | |
| 380 | + //开始post | |
| 381 | + var i = 0; | |
| 382 | + var inArr = []; | |
| 383 | + var upArr = []; | |
| 384 | + (function () { | |
| 385 | + var f = arguments.callee; | |
| 386 | + if (i >= dataArray.length) { | |
| 387 | + //前端数据更新 | |
| 388 | + var last = inArr.pop(); | |
| 389 | + gb_schedule_table.insertSchedule(last, upArr); | |
| 390 | + $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: last}); | |
| 391 | + | |
| 392 | + try { | |
| 393 | + if(last.bcType=='in' || last.bcType=='out') | |
| 394 | + gb_data_basic.reload_stat_park_data(); | |
| 395 | + }catch (e){ | |
| 396 | + console.log(e);} | |
| 397 | + UIkit.modal('#schedule-addsch-modal').hide(); | |
| 398 | + //更新路牌公里统计面板 | |
| 399 | + gb_schedule_table.showLpMileageTipBySch(last); | |
| 400 | + return; | |
| 401 | + } | |
| 402 | + submitFun(dataArray[i], function (rs) { | |
| 403 | + inArr.push(rs.t); | |
| 404 | + upArr = upArr.concat(rs.ts); | |
| 405 | + upArr.push(rs.t); | |
| 406 | + i++; | |
| 407 | + f(); | |
| 408 | + }, function () { | |
| 409 | + $('[type=submit]', wrap).removeClass('disabled').removeAttr('disabled'); | |
| 410 | + }); | |
| 411 | + })(); | |
| 412 | + } | |
| 413 | + }); | |
| 414 | + } | |
| 363 | 415 | |
| 364 | 416 | function $f(name, f) { |
| 365 | 417 | return $('[name=' + name + ']', f); |
| ... | ... | @@ -422,5 +474,9 @@ |
| 422 | 474 | return routes[i].stationCode; |
| 423 | 475 | } |
| 424 | 476 | } |
| 477 | + | |
| 478 | + return { | |
| 479 | + submit : submit | |
| 480 | + } | |
| 425 | 481 | })(); |
| 426 | 482 | </script> |
| 427 | 483 | \ No newline at end of file | ... | ... |
src/main/resources/static/real_control_v2/js/zndd/data_zndd.js
| 1 | 1 | var gb_dataZndd = (function (){ |
| 2 | 2 | |
| 3 | - var max = 1; | |
| 3 | + var max = 3; | |
| 4 | 4 | var $pop =$('.multi_plat_msg_pop_zndd'); |
| 5 | 5 | |
| 6 | 6 | var codes = { |
| ... | ... | @@ -18,15 +18,17 @@ var gb_dataZndd = (function (){ |
| 18 | 18 | var dataMap = new Map(); |
| 19 | 19 | var leftTime = 1000 * 10;//剩余的毫秒数 |
| 20 | 20 | var sop = function (data) { |
| 21 | - | |
| 22 | 21 | //时间格式化 |
| 23 | 22 | data.types = codes[data.type]; |
| 24 | 23 | |
| 25 | - | |
| 26 | - if (data.type == 'SFTZ_1' && sf_tz(data.lineCode) == false){ | |
| 24 | + /* if (data.type == 'SFTZ_1' && sf_tz(data.lineCode) == false){ | |
| 27 | 25 | return |
| 28 | 26 | } |
| 27 | +*/ | |
| 29 | 28 | |
| 29 | + if ((data.type == 'WD' || data.type == 'MZ' || data.type == 'FCJG' || data.type == 'DJG') && ycsf_sx(data.lineCode) == false){ | |
| 30 | + return | |
| 31 | + } | |
| 30 | 32 | |
| 31 | 33 | |
| 32 | 34 | var stm = moment(new Date()); |
| ... | ... | @@ -94,7 +96,7 @@ var gb_dataZndd = (function (){ |
| 94 | 96 | } |
| 95 | 97 | |
| 96 | 98 | |
| 97 | - //1078路,1135路,南临专线,临港4路,浦东111路,浦东74路,临港13路,申港3路,浦东29路,新芦专线 | |
| 99 | + //芦潮港1路 新临专线,临港10路, 浦东107路, 浦东91路,1078路,1135路,南临专线,临港4路,浦东111路,浦东74路,临港13路,申港3路,浦东29路,新芦专线 | |
| 98 | 100 | function ycsf_sx(line){ |
| 99 | 101 | var t =['12101','200828','230308','220826','201012','10636','60033','88814','88818','180926','191221','210821','230311','230329','803111']; |
| 100 | 102 | |
| ... | ... | @@ -105,16 +107,7 @@ var gb_dataZndd = (function (){ |
| 105 | 107 | return false; |
| 106 | 108 | } |
| 107 | 109 | |
| 108 | - //1078路,1135路,南临专线,临港4路,浦东111路,浦东74路,临港13路,申港3路,浦东29路,新芦专线 | |
| 109 | - function sf_tz(line){ | |
| 110 | - var t =['80301']; | |
| 111 | 110 | |
| 112 | - for (var lines in t){ | |
| 113 | - if(line == t[lines]) | |
| 114 | - return true; | |
| 115 | - } | |
| 116 | - return false; | |
| 117 | - } | |
| 118 | 111 | //发车信息微调 |
| 119 | 112 | $pop.on('click', '.fcxxwts', function () { |
| 120 | 113 | if (close) close = false |
| ... | ... | @@ -161,9 +154,9 @@ var gb_dataZndd = (function (){ |
| 161 | 154 | alt_confirm(content, function () { |
| 162 | 155 | gb_common.$post('/realSchedule/realOutAdjust_zndd', { |
| 163 | 156 | id: that.data('id'), |
| 164 | - remarks:'自动调度实发未发-车辆掉线', | |
| 165 | - fcsjActual:that.data('fcsj') | |
| 166 | - | |
| 157 | + remarks:that.data('fcsjactual') != null ? '实发未发-车辆掉线-rfid' : '实发未发-车辆掉线' , | |
| 158 | + fcsjActual: that.data('fcsjactual') != null ? that.data('fcsjactual') : that.data('fcsj'), | |
| 159 | + | |
| 167 | 160 | }, function (rs) { |
| 168 | 161 | if(rs.length != 0) { |
| 169 | 162 | gb_schedule_table.updateSchedule(rs.ts); |
| ... | ... | @@ -360,8 +353,8 @@ var gb_dataZndd = (function (){ |
| 360 | 353 | |
| 361 | 354 | gb_common.$post('/realSchedule/realOutAdjust_zndd', { |
| 362 | 355 | id: sch.sch.id, |
| 363 | - remarks:'自动调度实发未发-车辆掉线', | |
| 364 | - fcsjActual: sch.sch.dfsj, | |
| 356 | + remarks:sch.sch.fcsjActual != null? '实发未发-车辆掉线-rfid' : '实发未发-车辆掉线' , | |
| 357 | + fcsjActual: sch.sch.fcsjActual != null ? sch.sch.fcsjActual : sch.sch.dfsj, | |
| 365 | 358 | }, function (rs) { |
| 366 | 359 | gb_schedule_table.updateSchedule(rs.ts); |
| 367 | 360 | notify_succ('实发未发操作成功!'); |
| ... | ... | @@ -377,10 +370,14 @@ var gb_dataZndd = (function (){ |
| 377 | 370 | } |
| 378 | 371 | });*/ |
| 379 | 372 | } else if (type == "KLYJ"){ |
| 380 | - if(!$('#schedule-addsch-modal').hasClass('uk-open')){ | |
| 381 | - open_modal("/real_control_v2/zndd/type/dkl.html", { | |
| 382 | - data: data | |
| 383 | - }, {center: true, bgclose: false, modal: true}); | |
| 373 | + if (data.excuteStatus == 0){ | |
| 374 | + if(!$('#schedule-addsch-modal').hasClass('uk-open')){ | |
| 375 | + let ljtype = $('#ljtype').val(); | |
| 376 | + data.ljtype = ljtype; | |
| 377 | + open_modal("/real_control_v2/zndd/type/dkl.html", { | |
| 378 | + data: data | |
| 379 | + }, {center: true, bgclose: false, modal: true}); | |
| 380 | + } | |
| 384 | 381 | } |
| 385 | 382 | } |
| 386 | 383 | } | ... | ... |
src/main/resources/static/real_control_v2/main.html
| ... | ... | @@ -289,7 +289,7 @@ |
| 289 | 289 | <script id="zndd_plat_msg_template_config" type="text/html"> |
| 290 | 290 | <div class="multi_plat_config" data-linecode="{{lineCode}}" data-station="{{station}}" data-stationname="{{stationName}}" data-numtype="{{numType}}" |
| 291 | 291 | data-xlname="{{lineName}}" data-type="{{type}}" data-xldir="{{xlDir}}" data-rqstr="{{rqStr}}" data-types ="{{types}}" data-regionstopid="{{lg != null?lg.regionStopid:''}}" data-lgtype ="{{lg != null?lg.lGType:''}}" |
| 292 | - data-rq="{{rq}}" data-ids="{{ids}}" data-uuid="{{uuid}}"> | |
| 292 | + data-rq="{{rq}}" data-ids="{{ids}}" data-uuid="{{uuid}}" data-fcsjactual="{{fcsjActual}}"> | |
| 293 | 293 | <div id ={{uuid}} class="timer"></div> |
| 294 | 294 | <div class="msg-popup warning-color"> |
| 295 | 295 | <div class="msg-times" style="cursor: pointer;">×</div> |
| ... | ... | @@ -313,7 +313,7 @@ |
| 313 | 313 | <div class="centerSpace msg-title"> |
| 314 | 314 | <div></div> |
| 315 | 315 | <div class="msg-date-infos" style="display:{{type == 'SFTZ_1'?'':'none'}}" > |
| 316 | - <button class="uk-button uk-button-primary sfTzbc" data-fcsj="{{fcsj}}" data-clzbh="{{clzbh}}" data-id="{{id}}">补入发车时间</button> | |
| 316 | + <button class="uk-button uk-button-primary sfTzbc" data-fcsj="{{fcsj}}" data-fcsjactual="{{fcsjActual}}" data-clzbh="{{clzbh}}" data-id="{{id}}">补入发车时间</button> | |
| 317 | 317 | </div> |
| 318 | 318 | </div> |
| 319 | 319 | </div> | ... | ... |
src/main/resources/static/real_control_v2/zndd/type/dkl.html
| ... | ... | @@ -2,7 +2,9 @@ |
| 2 | 2 | <div class="uk-modal-dialog" style="width: 1400px;"> |
| 3 | 3 | <a href="" class="uk-modal-close uk-close"></a> |
| 4 | 4 | <div class="uk-modal-header"> |
| 5 | - <h2>新增临加班次<i class="uk-icon-question-circle uk-icon-hover"></i></h2></div> | |
| 5 | + <h2 style="width: 40%;float: left;">新增临加班次<i class="uk-icon-question-circle uk-icon-hover"></i></h2> | |
| 6 | + <span style="color: red;font-weight: 700;"><div id ="xztimes" class="timer">------</div></span> | |
| 7 | + </div> | |
| 6 | 8 | <div class="uk-grid uk-width-1-6" style="float: left"> |
| 7 | 9 | <div class="uk-width-5-5 sjzlist"> |
| 8 | 10 | |
| ... | ... | @@ -44,6 +46,10 @@ |
| 44 | 46 | </div> |
| 45 | 47 | |
| 46 | 48 | <script> |
| 49 | + | |
| 50 | + | |
| 51 | + var timemm = 1000 * 30 ; //定时器 自动执行 | |
| 52 | + | |
| 47 | 53 | (function () { |
| 48 | 54 | var modal = '#schedule-addsch-modal', |
| 49 | 55 | sch, stationRoutes, parks, information, carsArray, st_park_data,conf; |
| ... | ... | @@ -76,9 +82,8 @@ |
| 76 | 82 | framework: 'uikit', |
| 77 | 83 | locale: 'zh_CN' |
| 78 | 84 | }); |
| 79 | - $("#form-s-t").val("大客流情况"); | |
| 85 | + $("#form-s-t").val("站点遭遇大客流"); | |
| 80 | 86 | f.on('success.form.fv', function(e) { |
| 81 | - debugger | |
| 82 | 87 | e.preventDefault(); |
| 83 | 88 | $('[type=submit]', f).attr('disabled', 'disabled'); |
| 84 | 89 | var data = $(this).serializeJSON(); |
| ... | ... | @@ -97,6 +102,10 @@ |
| 97 | 102 | }); |
| 98 | 103 | }); |
| 99 | 104 | } |
| 105 | + //定时器启动开关判定条件0开 1关 | |
| 106 | + if (sch.excuteStatus == 0 && sch.ljtype == "lin1"){ | |
| 107 | + var sntts = setInterval(function(){leftTimer();},1000); //开始倒计时 | |
| 108 | + } | |
| 100 | 109 | |
| 101 | 110 | |
| 102 | 111 | $("#destroySelect").on('change',function(){ |
| ... | ... | @@ -175,7 +184,9 @@ |
| 175 | 184 | document.getElementById("nbbms").innerHTML=s; |
| 176 | 185 | }); |
| 177 | 186 | |
| 178 | - }); | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 179 | 190 | |
| 180 | 191 | //init-autoCom |
| 181 | 192 | $(modal).on('init-autoCom', '.add-sch-form', function () { |
| ... | ... | @@ -403,7 +414,6 @@ |
| 403 | 414 | }); |
| 404 | 415 | } |
| 405 | 416 | |
| 406 | - //debugger | |
| 407 | 417 | array.sort(function (a, b) { |
| 408 | 418 | if(a.code==information.carPark) |
| 409 | 419 | return -1; |
| ... | ... | @@ -466,6 +476,8 @@ |
| 466 | 476 | open_modal(folder + '/yanshi.html', { |
| 467 | 477 | }, {center: true, bgclose: false, modal: true});*/ |
| 468 | 478 | }, err); |
| 479 | + //手动提交的时候清除一下,防止二次提交 | |
| 480 | + clearInterval(sntts); | |
| 469 | 481 | } |
| 470 | 482 | |
| 471 | 483 | function enableYjtkForm() { |
| ... | ... | @@ -523,8 +535,34 @@ |
| 523 | 535 | }); |
| 524 | 536 | }); |
| 525 | 537 | |
| 538 | + //定时器 | |
| 539 | + function leftTimer(){ | |
| 540 | + getTimerstring(timemm ? timemm -= 1000 : 0); | |
| 541 | + if (!timemm){ | |
| 542 | + addTwoWayZnddType.submit(); | |
| 543 | + clearInterval(sntts); | |
| 544 | + $("#xztimes").html("已自动执行"); | |
| 545 | + } | |
| 546 | + } | |
| 547 | + //倒计时时间 | |
| 548 | + function getTimerstring(leftTime){ | |
| 549 | + var days = checkTime(parseInt(leftTime / 1000 / 60 / 60 / 24 , 10)); //计算剩余的天数 | |
| 550 | + var hours = checkTime(parseInt(leftTime / 1000 / 60 / 60 % 24 , 10)); //计算剩余的小时 | |
| 551 | + var minutes = checkTime(parseInt(leftTime / 1000 / 60 % 60, 10));//计算剩余的分钟 | |
| 552 | + var seconds = checkTime(parseInt(leftTime / 1000 % 60, 10));//计算剩余的秒数 | |
| 553 | + $("#xztimes").html(seconds+"秒后将自动执行"); | |
| 554 | + } | |
| 555 | + | |
| 556 | + }); | |
| 557 | + function checkTime(i){ //将0-9的数字前面加上0,例1变为01 | |
| 526 | 558 | |
| 559 | + if(i<10) | |
| 560 | + { | |
| 561 | + i = "0" + i; | |
| 562 | + } | |
| 563 | + return i; | |
| 527 | 564 | |
| 565 | + } | |
| 528 | 566 | |
| 529 | 567 | })(); |
| 530 | 568 | </script> | ... | ... |
src/main/resources/static/real_control_v2/zndd/type/sftz_1.html
| ... | ... | @@ -251,7 +251,7 @@ |
| 251 | 251 | <div class="uk-form-row"> |
| 252 | 252 | <label class="uk-form-label">实发时间</label> |
| 253 | 253 | <div class="uk-form-controls"> |
| 254 | - <input type="time" value="{{sch.sch.fcsj}}" name="fcsjActual"> | |
| 254 | + <input type="time" value="{{sch.sch.fcsjActual != null ? sch.sch.fcsjActual : sch.sch.dfsj}}" name="fcsjActual"> | |
| 255 | 255 | </div> |
| 256 | 256 | </div> |
| 257 | 257 | </div> | ... | ... |