Commit 5d49c86acf31e9aba47d208f83bd363265d0907b
Merge branch 'minhang' of
http://222.66.0.204:8090/panzhaov5/bsth_control into minhang
Showing
16 changed files
with
313 additions
and
294 deletions
src/main/java/com/bsth/controller/realcontrol/anomalyCheckController.java
| ... | ... | @@ -95,4 +95,14 @@ public class anomalyCheckController { |
| 95 | 95 | public void updateCacheBuff(){ |
| 96 | 96 | geoCacheData.loadData(); |
| 97 | 97 | } |
| 98 | + | |
| 99 | + @RequestMapping(value = "/reCalcLpSch") | |
| 100 | + public void reCalcLpSch(){ | |
| 101 | + dayOfSchedule._test_reCalcLpSch(); | |
| 102 | + } | |
| 103 | + | |
| 104 | + @RequestMapping(value = "/findSchByLpName") | |
| 105 | + public List<ScheduleRealInfo> findSchByLpName(String lpName){ | |
| 106 | + return dayOfSchedule.getLpScheduleMap().get(lpName); | |
| 107 | + } | |
| 98 | 108 | } | ... | ... |
src/main/java/com/bsth/data/car_out_info/CarOutInfoHandler.java
| ... | ... | @@ -54,27 +54,19 @@ public class CarOutInfoHandler { |
| 54 | 54 | * 全量更新发车信息表 |
| 55 | 55 | */ |
| 56 | 56 | public void updateAll() { |
| 57 | - Set<String> ks = BasicData.lineCode2NameMap.keySet(); | |
| 58 | - for (String lineCode : ks) { | |
| 59 | - update(lineCode); | |
| 60 | - } | |
| 61 | - } | |
| 62 | - | |
| 63 | - public void update(String lineCode) { | |
| 64 | - try { | |
| 65 | - ArrayListMultimap<String, ScheduleRealInfo> lpScheduleMap = dayOfSchedule.getLpScheduleMap(); | |
| 66 | - List<ScheduleRealInfo> list = new ArrayList<>(); | |
| 57 | + try{ | |
| 58 | + //将班次按线路分组 | |
| 59 | + List<ScheduleRealInfo> all = new ArrayList<>(dayOfSchedule.findAll()); | |
| 60 | + ArrayListMultimap<String, ScheduleRealInfo> xlMaps = ArrayListMultimap.create(); | |
| 61 | + for(ScheduleRealInfo sch : all){ | |
| 62 | + xlMaps.put(sch.getXlBm(), sch); | |
| 63 | + } | |
| 67 | 64 | |
| 68 | - Set<String> ks = lpScheduleMap.keySet(); | |
| 69 | - String prefix = lineCode + "_"; | |
| 65 | + Set<String> ks = xlMaps.keySet(); | |
| 70 | 66 | for (String k : ks) { |
| 71 | - if (k.startsWith(prefix)) { | |
| 72 | - list.addAll(lpScheduleMap.get(k)); | |
| 73 | - } | |
| 67 | + update(xlMaps.get(k)); | |
| 74 | 68 | } |
| 75 | - | |
| 76 | - update(list); | |
| 77 | - } catch (Exception e) { | |
| 69 | + }catch (Exception e){ | |
| 78 | 70 | logger.error("", e); |
| 79 | 71 | } |
| 80 | 72 | } | ... | ... |
src/main/java/com/bsth/data/gpsdata/arrival/handlers/InOutStationSignalHandle.java
| ... | ... | @@ -338,6 +338,9 @@ public class InOutStationSignalHandle extends SignalHandle{ |
| 338 | 338 | if(lpNext != null){ |
| 339 | 339 | lpNext.setQdzArrDatesj(sch.getZdsjActual()); |
| 340 | 340 | } |
| 341 | + else{ | |
| 342 | + logger.info(sch.getClZbh() + " 到终点,无下一班"); | |
| 343 | + } | |
| 341 | 344 | |
| 342 | 345 | //通知客户端 |
| 343 | 346 | sendUtils.sendZdsj(sch, lpNext, doneSum); | ... | ... |
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
| ... | ... | @@ -1137,4 +1137,16 @@ public class DayOfSchedule { |
| 1137 | 1137 | public ArrayListMultimap<String, ScheduleRealInfo> getLpScheduleMap() { |
| 1138 | 1138 | return lpScheduleMap; |
| 1139 | 1139 | } |
| 1140 | + | |
| 1141 | + /** | |
| 1142 | + * 重新全量计算路牌下的班次关联性 | |
| 1143 | + * 临时性的函数 | |
| 1144 | + */ | |
| 1145 | + public void _test_reCalcLpSch() { | |
| 1146 | + Map<String ,Collection<ScheduleRealInfo>> map = lpScheduleMap.asMap(); | |
| 1147 | + Set<String> ks = map.keySet(); | |
| 1148 | + for(String k : ks){ | |
| 1149 | + schAttrCalculator.calcQdzTimePlan(new ArrayList<ScheduleRealInfo>(map.get(k))); | |
| 1150 | + } | |
| 1151 | + } | |
| 1140 | 1152 | } |
| 1141 | 1153 | \ No newline at end of file | ... | ... |
src/main/java/com/bsth/repository/realcontrol/ScheduleRealInfoRepository.java
| ... | ... | @@ -139,19 +139,19 @@ public interface ScheduleRealInfoRepository extends BaseRepository<ScheduleRealI |
| 139 | 139 | |
| 140 | 140 | //去掉了 xlBm is not null |
| 141 | 141 | @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) |
| 142 | - @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm like %?1% and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 order by s.xlDir,s.realExecDate,s.dfsj, (s.lpName+1)") | |
| 142 | + @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm like %?1% and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 order by s.xlDir,s.realExecDate,s.fcsj, lpName") | |
| 143 | 143 | List<ScheduleRealInfo> scheduleByDateAndLine(String line,String date); |
| 144 | 144 | |
| 145 | 145 | @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) |
| 146 | - @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm =?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 order by (s.lpName+1), s.realExecDate,s.dfsj") | |
| 146 | + @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm =?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 order by s.lpName, s.realExecDate,s.fcsj") | |
| 147 | 147 | List<ScheduleRealInfo> scheduleByDateAndLineQp(String line,String date); |
| 148 | 148 | |
| 149 | 149 | @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) |
| 150 | - @Query(value="select DISTINCT s from ScheduleRealInfo s where gsBm like %?1% and fgsBm like %?2% and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?3 and s.bcType not in ('in','out','ldks') order by s.xlDir,s.realExecDate,s.dfsj, (s.lpName+1)") | |
| 150 | + @Query(value="select DISTINCT s from ScheduleRealInfo s where gsBm like %?1% and fgsBm like %?2% and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?3 and s.bcType not in ('in','out','ldks') order by s.xlDir,s.realExecDate,s.fcsj, s.lpName") | |
| 151 | 151 | List<ScheduleRealInfo> scheduleByDateAndLineByGs(String gsdm,String fgsdm,String date); |
| 152 | 152 | |
| 153 | 153 | @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) |
| 154 | - @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 order by s.xlDir,s.realExecDate,s.dfsj, (s.lpName+1)") | |
| 154 | + @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 order by s.xlDir,s.realExecDate,s.fcsj, s.lpName") | |
| 155 | 155 | List<ScheduleRealInfo> scheduleByDateAndLineQp2(String line,String date); |
| 156 | 156 | |
| 157 | 157 | @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) | ... | ... |
src/main/java/com/bsth/service/impl/BusIntervalServiceImpl.java
| ... | ... | @@ -141,7 +141,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { |
| 141 | 141 | long dfsj = Long.valueOf(split0[0]) * 60 + Long.valueOf(split0[1]); |
| 142 | 142 | if(!schedule.getScheduleDateStr().equals(schedule.getRealExecDate())&&dfsj<23*60) |
| 143 | 143 | dfsj += 1440l; |
| 144 | - schedule.setDfsj(dfsj/60 + ":" + dfsj%60); | |
| 144 | + schedule.setDfsj((dfsj/60>9?"":"0")+dfsj/60+ ":" +(dfsj%60>9?"":"0")+dfsj%60); | |
| 145 | 145 | schedule.setDfsjT(dfsj); |
| 146 | 146 | } |
| 147 | 147 | if(schedule.getFcsjActual() != null){ |
| ... | ... | @@ -149,7 +149,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { |
| 149 | 149 | long fcsjA = Long.valueOf(split2[0]) * 60 + Long.valueOf(split2[1]); |
| 150 | 150 | if(!schedule.getScheduleDateStr().equals(schedule.getRealExecDate())&&fcsjA<23*60) |
| 151 | 151 | fcsjA += 1440l; |
| 152 | - schedule.setFcsjActual(fcsjA/60 + ":" + fcsjA%60); | |
| 152 | + schedule.setFcsjActual((fcsjA/60>9?"":"0")+fcsjA/60+ ":" +(fcsjA%60>9?"":"0")+fcsjA%60); | |
| 153 | 153 | schedule.setFcsjActualTime(fcsjA); |
| 154 | 154 | } |
| 155 | 155 | if(schedule.getZdsjActual() != null){ |
| ... | ... | @@ -159,11 +159,11 @@ public class BusIntervalServiceImpl implements BusIntervalService { |
| 159 | 159 | zdsjA += 1440l; |
| 160 | 160 | if(schedule.getFcsjActualTime() != null && zdsjA < schedule.getFcsjActualTime()) |
| 161 | 161 | zdsjA += 1440l; |
| 162 | - schedule.setZdsjActual(zdsjA/60 + ":" + zdsjA%60); | |
| 162 | + schedule.setZdsjActual((zdsjA/60>9?"":"0")+zdsjA/60+ ":" +(zdsjA%60>9?"":"0")+zdsjA%60); | |
| 163 | 163 | schedule.setZdsjActualTime(zdsjA); |
| 164 | 164 | } |
| 165 | - schedule.setFcsj((fcsj/60<10?"0"+fcsj/60:fcsj/60) + ":" + (fcsj%60<10?"0"+fcsj%60:fcsj%60)); | |
| 166 | - schedule.setZdsj((zdsj/60<10?"0"+zdsj/60:zdsj/60) + ":" + (zdsj%60<10?"0"+zdsj%60:zdsj%60)); | |
| 165 | + schedule.setFcsj((fcsj/60<10?"0"+fcsj/60:fcsj/60)+ ":" +(fcsj%60<10?"0"+fcsj%60:fcsj%60)); | |
| 166 | + schedule.setZdsj((zdsj/60<10?"0"+zdsj/60:zdsj/60)+ ":" +(zdsj%60<10?"0"+zdsj%60:zdsj%60)); | |
| 167 | 167 | schedule.setFcsjT(fcsj); |
| 168 | 168 | schedule.setZdsjT(zdsj); |
| 169 | 169 | return schedule; |
| ... | ... | @@ -1379,249 +1379,214 @@ public class BusIntervalServiceImpl implements BusIntervalService { |
| 1379 | 1379 | times = "05:00-23:00"; |
| 1380 | 1380 | } |
| 1381 | 1381 | |
| 1382 | - list = getSchedule(company, subCompany, line, startDate, endDate, model, times, true); | |
| 1382 | + list = getSchedule(company, subCompany, line, startDate, endDate, model, times, false); | |
| 1383 | 1383 | |
| 1384 | 1384 | String[] date1 = startDate.split("-"); |
| 1385 | 1385 | String[] date2 = endDate.split("-"); |
| 1386 | 1386 | startDate = date1[0] + "年" + date1[1] + "月" + date1[2] + "日"; |
| 1387 | 1387 | endDate = date2[0] + "年" + date2[1] + "月" + date2[2] + "日"; |
| 1388 | + String date = startDate + "-" + endDate; | |
| 1389 | + if(startDate.equals(endDate)){ | |
| 1390 | + date = startDate; | |
| 1391 | + } | |
| 1388 | 1392 | |
| 1389 | 1393 | String[] split = times.split("-"); |
| 1390 | 1394 | int startTime = Integer.valueOf(split[0].split(":")[0])*60 + Integer.valueOf(split[0].split(":")[1]); |
| 1391 | 1395 | int endTime = Integer.valueOf(split[1].split(":")[0])*60 + Integer.valueOf(split[1].split(":")[1]); |
| 1392 | 1396 | |
| 1393 | - for(ScheduleRealInfo schedule : list){ | |
| 1394 | - if(qdzName.length() != 0 && !qdzName.equals(schedule.getQdzName())){ | |
| 1395 | - continue; | |
| 1396 | - } | |
| 1397 | - Long fcsj = schedule.getFcsjT(); | |
| 1398 | - if(!(endTime!=0?fcsj>=startTime&&fcsj<endTime:fcsj>=startTime)){ | |
| 1399 | - continue; | |
| 1400 | - } | |
| 1401 | - String key = schedule.getScheduleDateStr() + "/" + schedule.getXlName() + "/" + schedule.getLpName() + "/" + schedule.getFcsj() + "/" + schedule.getQdzName(); | |
| 1397 | + for(ScheduleRealInfo s : list){ | |
| 1398 | + String key = s.getScheduleDateStr() + "/" + s.getLpName(); | |
| 1402 | 1399 | if(!keyMap.containsKey(key)) |
| 1403 | 1400 | keyMap.put(key, new ArrayList<ScheduleRealInfo>()); |
| 1404 | - keyMap.get(key).add(schedule); | |
| 1401 | + keyMap.get(key).add(s); | |
| 1405 | 1402 | } |
| 1403 | + | |
| 1406 | 1404 | for(String key : keyMap.keySet()){ |
| 1407 | - Map<String, Object> tempMap = new HashMap<String, Object>(); | |
| 1408 | - int jhbc = 0, sjbc = 0, wdfz = 0; | |
| 1409 | - long jhdf = 0l, sjdf = 0l, wddf1 = 0l, wddf2 = 0l; | |
| 1410 | - long jhfc = 0l, sjfc = 0l, wdfc1 = 0l, wdfc2 = 0l; | |
| 1411 | - long jhys = 0l, sjys = 0l, yssjMax = 0l, yssjMin = 0l; | |
| 1412 | - long jhtz = 0l, sjtz = 0l, tzsjMax = 0l, tzsjMin = 0l; | |
| 1413 | - String companyName = "", subCompanyName = ""; | |
| 1414 | - for(ScheduleRealInfo schedule : keyMap.get(key)){ | |
| 1415 | - if(schedule.getGsName() != null && companyName.length() == 0) | |
| 1416 | - companyName = schedule.getGsName(); | |
| 1417 | - if(schedule.getFgsName() != null && subCompanyName.length() == 0) | |
| 1418 | - subCompanyName = schedule.getFgsName(); | |
| 1419 | - long tzsj = 0l; | |
| 1420 | - long yssj = 0l; | |
| 1421 | - jhbc++; | |
| 1422 | - if(schedule.getDfsj() != null){ | |
| 1423 | - jhtz += schedule.getFcsjT() - schedule.getDfsjT(); | |
| 1405 | + List<ScheduleRealInfo> list1 = keyMap.get(key); | |
| 1406 | + Map<String, List<ScheduleRealInfo>> keyMap_ = new HashMap<String, List<ScheduleRealInfo>>(); | |
| 1407 | + for(ScheduleRealInfo s : list1){ | |
| 1408 | + String dateStr = s.getScheduleDateStr(); | |
| 1409 | + if(!keyMap_.containsKey(dateStr)) | |
| 1410 | + keyMap_.put(dateStr, new ArrayList<ScheduleRealInfo>()); | |
| 1411 | + keyMap_.get(dateStr).add(s); | |
| 1412 | + } | |
| 1413 | + | |
| 1414 | + Set<String> keySet1 = keyMap_.keySet(); | |
| 1415 | + Map<Long, String> Map = new HashMap<Long, String>(); | |
| 1416 | + for(String key1 : keySet1){ | |
| 1417 | + Map.put(Long.valueOf(key1.replaceAll("-", "")), key1); | |
| 1418 | + } | |
| 1419 | + Set<Long> keySet2 = Map.keySet(); | |
| 1420 | + | |
| 1421 | + for(Long l : keySet2){ | |
| 1422 | + List<ScheduleRealInfo> list2 = keyMap_.get(Map.get(l)); | |
| 1423 | + List<ScheduleRealInfo> list3 = new ArrayList<ScheduleRealInfo>(); | |
| 1424 | + List<Long> fcsjs = new ArrayList<Long>(); | |
| 1425 | + List<Long> zdsjs = new ArrayList<Long>(); | |
| 1426 | + List<Long> fcsjAs = new ArrayList<Long>(); | |
| 1427 | + List<Long> zdsjAs = new ArrayList<Long>(); | |
| 1428 | + Map<Long, ScheduleRealInfo> fcsjMap = new HashMap<Long, ScheduleRealInfo>(); | |
| 1429 | + Map<Long, ScheduleRealInfo> zdsjMap = new HashMap<Long, ScheduleRealInfo>(); | |
| 1430 | + Map<Long, ScheduleRealInfo> fcsjAMap = new HashMap<Long, ScheduleRealInfo>(); | |
| 1431 | + Map<Long, ScheduleRealInfo> zdsjAMap = new HashMap<Long, ScheduleRealInfo>(); | |
| 1432 | + for(ScheduleRealInfo schedule : list2){ | |
| 1433 | + if(schedule.getStatus() != -1){ | |
| 1434 | + if(schedule.getFcsj()!=null&&schedule.getFcsjActual()!=null&& | |
| 1435 | + schedule.getZdsj()!=null&&schedule.getZdsjActual()!=null){ | |
| 1436 | + Long fcsj = schedule.getFcsjT(); | |
| 1437 | + Long zdsj = schedule.getZdsjT(); | |
| 1438 | + Long fcsjA = schedule.getFcsjActualTime(); | |
| 1439 | + Long zdsjA = schedule.getZdsjActualTime(); | |
| 1440 | + fcsjs.add(fcsj); | |
| 1441 | + zdsjs.add(zdsj); | |
| 1442 | + fcsjAs.add(fcsjA); | |
| 1443 | + zdsjAs.add(zdsjA); | |
| 1444 | + fcsjMap.put(fcsj, schedule); | |
| 1445 | + zdsjMap.put(zdsj, schedule); | |
| 1446 | + fcsjAMap.put(fcsjA, schedule); | |
| 1447 | + zdsjAMap.put(zdsjA, schedule); | |
| 1448 | + } | |
| 1449 | + } | |
| 1450 | + } | |
| 1451 | + Collections.sort(fcsjs); | |
| 1452 | + Collections.sort(zdsjs); | |
| 1453 | + Collections.sort(fcsjAs); | |
| 1454 | + Collections.sort(zdsjAs); | |
| 1455 | + for(int i = 0; i < fcsjs.size(); i++){ | |
| 1456 | + Long fcsj = fcsjs.get(i); | |
| 1457 | + Long zdsj = zdsjs.get(i); | |
| 1458 | + Long fcsjA = fcsjAs.get(i); | |
| 1459 | + Long zdsjA = zdsjAs.get(i); | |
| 1460 | + ScheduleRealInfo s = fcsjMap.get(fcsj); | |
| 1461 | + s.setFcsjActual(fcsjAMap.get(fcsjA).getFcsjActual()); | |
| 1462 | + s.setFcsjActualTime(fcsjAMap.get(fcsjA).getFcsjActualTime()); | |
| 1463 | + s.setZdsjActual(zdsjAMap.get(zdsjA).getZdsjActual()); | |
| 1464 | + s.setZdsjActualTime(zdsjAMap.get(zdsjA).getZdsjActualTime()); | |
| 1465 | + list3.add(s); | |
| 1424 | 1466 | } |
| 1425 | - jhys += schedule.getZdsjT() - schedule.getFcsjT(); | |
| 1426 | 1467 | |
| 1427 | - if(schedule.getFcsjActual() != null && schedule.getZdsjActual() != null){ | |
| 1428 | - sjbc++; | |
| 1429 | - sjfc += schedule.getFcsjActualTime(); | |
| 1430 | - yssj += schedule.getZdsjActualTime() - schedule.getFcsjActualTime(); | |
| 1431 | - if(schedule.getFcsjActualTime() - schedule.getFcsjT() < 0){ | |
| 1432 | - wdfc1 += schedule.getFcsjT() - schedule.getFcsjActualTime(); | |
| 1433 | -// kbc++; | |
| 1434 | - } else if(schedule.getFcsjActualTime() - schedule.getFcsjT() > 0){ | |
| 1435 | - wdfc2 += schedule.getFcsjActualTime() - schedule.getFcsjT(); | |
| 1436 | -// mbc++; | |
| 1437 | - } | |
| 1438 | - | |
| 1439 | - if(schedule.getDfsj() != null){ | |
| 1440 | - sjdf += schedule.getDfsjT(); | |
| 1441 | - tzsj += schedule.getFcsjActualTime() - schedule.getDfsjT(); | |
| 1442 | - if(schedule.getDfsjT() - schedule.getFcsjT() < 0) | |
| 1443 | - wddf1 += schedule.getFcsjT() - schedule.getDfsjT(); | |
| 1444 | - else | |
| 1445 | - wddf2 += schedule.getDfsjT() - schedule.getFcsjT(); | |
| 1446 | - } else { | |
| 1447 | - sjdf += schedule.getFcsjT(); | |
| 1448 | - tzsj += schedule.getFcsjActualTime() - schedule.getFcsjT(); | |
| 1468 | + for(int i = 0; i < list3.size(); i++){ | |
| 1469 | + ScheduleRealInfo s = list3.get(i); | |
| 1470 | + long fcwd = s.getFcsjActualTime() - s.getFcsjT(); | |
| 1471 | + long jhys = s.getBcsj(); | |
| 1472 | + long sjys = s.getZdsjActualTime() - s.getFcsjActualTime(); | |
| 1473 | + if(i > 0){ | |
| 1474 | + ScheduleRealInfo s1 = list3.get(i - 1); | |
| 1475 | + long ddwd = s1.getZdsjActualTime() - s1.getZdsjT(); | |
| 1476 | + long jhtz = s.getFcsjT() - s1.getZdsjT(); | |
| 1477 | + long sjtz = s.getFcsjActualTime() - s1.getZdsjActualTime(); | |
| 1478 | + | |
| 1479 | + if(s.getBcType().equals("normal")){ | |
| 1480 | + Map<String, Object> tempMap = new HashMap<String, Object>(); | |
| 1481 | + tempMap.put("dates", date); | |
| 1482 | + tempMap.put("line", s.getXlName()); | |
| 1483 | + tempMap.put("lp", s.getLpName()); | |
| 1484 | + tempMap.put("station", s.getQdzName()); | |
| 1485 | + tempMap.put("date", s.getScheduleDateStr()); | |
| 1486 | + tempMap.put("jhdd", s1.getZdsj()); | |
| 1487 | + tempMap.put("sjdd", s1.getZdsjActual()); | |
| 1488 | + tempMap.put("ddwd", ddwd); | |
| 1489 | + tempMap.put("jhfc", s.getFcsj()); | |
| 1490 | + tempMap.put("sjfc", s.getFcsjActual()); | |
| 1491 | + tempMap.put("fcwd", fcwd); | |
| 1492 | + tempMap.put("jhys", jhys); | |
| 1493 | + tempMap.put("sjys", sjys); | |
| 1494 | + tempMap.put("jhtz", jhtz); | |
| 1495 | + tempMap.put("sjtz", sjtz); | |
| 1496 | + | |
| 1497 | + String key0 = s.getLpName() + "/" + s.getQdzName(); | |
| 1498 | + if(!keyMap0.containsKey(key0)) | |
| 1499 | + keyMap0.put(key0, new ArrayList<Map<String, Object>>()); | |
| 1500 | + keyMap0.get(key0).add(tempMap); | |
| 1501 | + } | |
| 1449 | 1502 | } |
| 1450 | 1503 | } |
| 1451 | - | |
| 1452 | - sjys += yssj; | |
| 1453 | - if(yssj > yssjMax || yssjMax == 0l) | |
| 1454 | - yssjMax = yssj; | |
| 1455 | - if(yssj < yssjMin || yssjMin == 0l) | |
| 1456 | - yssjMin = yssj; | |
| 1457 | - | |
| 1458 | - sjtz += tzsj; | |
| 1459 | - if(tzsj > tzsjMax || tzsjMax == 0l) | |
| 1460 | - tzsjMax = tzsj; | |
| 1461 | - if(tzsj < tzsjMin || tzsjMin == 0l) | |
| 1462 | - tzsjMin = tzsj; | |
| 1463 | 1504 | } |
| 1464 | - String[] keys = key.split("/"); | |
| 1465 | - tempMap.put("date", keys[0]); | |
| 1466 | - tempMap.put("line", keys[1]); | |
| 1467 | - tempMap.put("lp", keys[2]); | |
| 1468 | - tempMap.put("jhdf", keys[3]); | |
| 1469 | - tempMap.put("jhfc", keys[3]); | |
| 1470 | - tempMap.put("station", keys[4]); | |
| 1471 | - tempMap.put("times", times); | |
| 1472 | - tempMap.put("company", companyName); | |
| 1473 | - tempMap.put("subCompany", subCompanyName); | |
| 1474 | - if(startDate.equals(endDate)) | |
| 1475 | - tempMap.put("dates", startDate); | |
| 1476 | - else | |
| 1477 | - tempMap.put("dates", startDate + "--" + endDate); | |
| 1478 | - tempMap.put("jhbc", jhbc); | |
| 1479 | - tempMap.put("sjbc", sjbc); | |
| 1480 | - if(sjbc != 0){ | |
| 1481 | - tempMap.put("sjdf", ((sjdf/sjbc)/60<10?"0"+(sjdf/sjbc)/60:(sjdf/sjbc)/60) + ":" + ((sjdf/sjbc)%60<10?"0"+(sjdf/sjbc)%60:(sjdf/sjbc)%60)); | |
| 1482 | - tempMap.put("wddf1", wddf1 / sjbc + "分"); | |
| 1483 | - tempMap.put("wddf2", wddf2 / sjbc + "分"); | |
| 1484 | - tempMap.put("sjfc", ((sjfc/sjbc)/60<10?"0"+(sjfc/sjbc)/60:(sjfc/sjbc)/60) + ":" + ((sjfc/sjbc)%60<10?"0"+(sjfc/sjbc)%60:(sjfc/sjbc)%60)); | |
| 1485 | - tempMap.put("wdfc1", wdfc1 / sjbc + "分"); | |
| 1486 | - tempMap.put("wdfc2", wdfc2 / sjbc + "分"); | |
| 1487 | -// tempMap.put("kbc", df.format((((double) kbc)/sjbc)*100)+"%"); | |
| 1488 | -// tempMap.put("mbc", df.format((((double) mbc)/sjbc)*100)+"%"); | |
| 1489 | - tempMap.put("pjys", sjys / sjbc + "分"); | |
| 1490 | - tempMap.put("pjtz", sjtz / sjbc + "分"); | |
| 1491 | - } else { | |
| 1492 | - tempMap.put("sjdf", "/"); | |
| 1493 | - tempMap.put("wddf1", "0分"); | |
| 1494 | - tempMap.put("wddf2", "0分"); | |
| 1495 | - tempMap.put("sjfc", "/"); | |
| 1496 | - tempMap.put("wdfc1", "0分"); | |
| 1497 | - tempMap.put("wdfc2", "0分"); | |
| 1498 | -// tempMap.put("kbc", "0%"); | |
| 1499 | -// tempMap.put("mbc", "0%"); | |
| 1500 | - tempMap.put("pjys", "0分"); | |
| 1501 | - tempMap.put("pjtz", "0分"); | |
| 1502 | - } | |
| 1503 | -// tempMap.put("kbc", kbc); | |
| 1504 | -// tempMap.put("mbc", mbc); | |
| 1505 | - if(!tempMap.get("jhfc").toString().equals("/") && !tempMap.get("sjfc").toString().equals("/")){ | |
| 1506 | - String[] temp1 = tempMap.get("jhfc").toString().split(":"); | |
| 1507 | - String[] temp2 = tempMap.get("sjfc").toString().split(":"); | |
| 1508 | - tempMap.put("wdfz", (Integer.valueOf(temp2[0])*60 + Integer.valueOf(temp2[1])) | |
| 1509 | - - (Integer.valueOf(temp1[0])*60 + Integer.valueOf(temp1[1]))); | |
| 1510 | - }else{ | |
| 1511 | - tempMap.put("wdfz", "/"); | |
| 1512 | - } | |
| 1513 | - tempMap.put("jhys", jhys); | |
| 1514 | - tempMap.put("sjys", sjys); | |
| 1515 | - tempMap.put("yssjMin", yssjMin); | |
| 1516 | - tempMap.put("yssjMax", yssjMax); | |
| 1517 | - tempMap.put("jhtz", jhtz); | |
| 1518 | - tempMap.put("sjtz", sjtz); | |
| 1519 | - tempMap.put("tzsjMax", tzsjMax); | |
| 1520 | - tempMap.put("tzsjMin", tzsjMin); | |
| 1521 | - list0.add(tempMap); | |
| 1522 | 1505 | } |
| 1523 | 1506 | |
| 1524 | - Collections.sort(list0, new Comparator<Map<String, Object>>() { | |
| 1525 | - | |
| 1526 | - public int compare(Map<String, Object> o1, Map<String, Object> o2) { | |
| 1527 | - | |
| 1528 | - String[] split1 = o1.get("date").toString().split("-"); | |
| 1529 | - String[] split2 = o2.get("date").toString().split("-"); | |
| 1530 | - Long a = Long.valueOf(split1[0])*10000 + Long.valueOf(split1[1])*100 + Long.valueOf(split1[2]); | |
| 1531 | - Long b = Long.valueOf(split2[0])*10000 + Long.valueOf(split2[1])*100 + Long.valueOf(split2[2]); | |
| 1532 | - | |
| 1533 | - // 升序 | |
| 1534 | - return a.compareTo(b); | |
| 1535 | - } | |
| 1536 | - }); | |
| 1537 | 1507 | |
| 1538 | - for(Map<String, Object> m : list0){ | |
| 1539 | - String key = m.get("line").toString() + "/" + m.get("lp").toString() + "/" + m.get("station").toString(); | |
| 1540 | - if(!keyMap0.containsKey(key)) | |
| 1541 | - keyMap0.put(key, new ArrayList<Map<String, Object>>()); | |
| 1542 | - keyMap0.get(key).add(m); | |
| 1543 | - } | |
| 1544 | - for(String key : keyMap0.keySet()){ | |
| 1545 | - Map<String, Object> tempMap = new HashMap<String, Object>(); | |
| 1546 | - int jhbc = 0; | |
| 1547 | - int sjbc = 0; | |
| 1548 | - int wddf1 = 0; | |
| 1549 | - int wddf2 = 0; | |
| 1550 | - int wdfc1 = 0; | |
| 1551 | - int wdfc2 = 0; | |
| 1552 | - int ys = 0; | |
| 1553 | - int tz = 0; | |
| 1554 | - String companyName = "", subCompanyName = ""; | |
| 1555 | - for(Map<String, Object> m : keyMap0.get(key)){ | |
| 1556 | - if(m.containsKey("company") && companyName.length() == 0) | |
| 1557 | - companyName = m.get("company").toString(); | |
| 1558 | - if(m.containsKey("subCompany") && subCompanyName.length() == 0) | |
| 1559 | - subCompanyName = m.get("subCompany").toString(); | |
| 1560 | - jhbc += Integer.valueOf(m.get("jhbc").toString()); | |
| 1561 | - sjbc += Integer.valueOf(m.get("sjbc").toString()); | |
| 1562 | - wddf1 += Integer.valueOf(m.get("wddf1").toString().substring(0, m.get("wddf1").toString().length() - 1)); | |
| 1563 | - wddf2 += Integer.valueOf(m.get("wddf2").toString().substring(0, m.get("wddf2").toString().length() - 1)); | |
| 1564 | - wdfc1 += Integer.valueOf(m.get("wdfc1").toString().substring(0, m.get("wdfc1").toString().length() - 1)); | |
| 1565 | - wdfc2 += Integer.valueOf(m.get("wdfc2").toString().substring(0, m.get("wdfc2").toString().length() - 1)); | |
| 1566 | - ys += Integer.valueOf(m.get("pjys").toString().substring(0, m.get("pjys").toString().length() - 1)); | |
| 1567 | - tz += Integer.valueOf(m.get("pjtz").toString().substring(0, m.get("pjtz").toString().length() - 1)); | |
| 1568 | - } | |
| 1569 | - if(startDate.equals(endDate)) | |
| 1570 | - tempMap.put("dates", startDate); | |
| 1571 | - else | |
| 1572 | - tempMap.put("dates", startDate + "--" + endDate); | |
| 1573 | - tempMap.put("company", companyName); | |
| 1574 | - tempMap.put("subCompany", subCompanyName); | |
| 1575 | - String[] keys = key.split("/"); | |
| 1576 | - tempMap.put("line", keys[0]); | |
| 1577 | - tempMap.put("lp", keys[1]); | |
| 1578 | - tempMap.put("station", keys[2]); | |
| 1579 | - tempMap.put("times", times); | |
| 1580 | - tempMap.put("jhbc", jhbc); | |
| 1581 | - tempMap.put("sjbc", sjbc); | |
| 1582 | - tempMap.put("wddf1", wddf1/keyMap0.get(key).size()+"分"); | |
| 1583 | - tempMap.put("wddf2", wddf2/keyMap0.get(key).size()+"分"); | |
| 1584 | - tempMap.put("wdfc1", wdfc1/keyMap0.get(key).size()+"分"); | |
| 1585 | - tempMap.put("wdfc2", wdfc2/keyMap0.get(key).size()+"分"); | |
| 1586 | - tempMap.put("pjys", ys/keyMap0.get(key).size()+"分"); | |
| 1587 | - tempMap.put("pjtz", tz/keyMap0.get(key).size()+"分"); | |
| 1588 | - tempMap.put("workList", keyMap0.get(key)); | |
| 1589 | - | |
| 1590 | - String key1 = tempMap.get("line").toString(); | |
| 1591 | - if(!keyMap1.containsKey(key1)) | |
| 1592 | - keyMap1.put(key1, new ArrayList<Map<String, Object>>()); | |
| 1593 | - keyMap1.get(key1).add(tempMap); | |
| 1594 | - } | |
| 1595 | 1508 | |
| 1596 | - for(String key : keyMap1.keySet()){ | |
| 1597 | - Collections.sort(keyMap1.get(key), new Comparator<Map<String, Object>>() { | |
| 1509 | + if(keyMap0.keySet().size() > 0){ | |
| 1510 | + Set<String> keySet = keyMap0.keySet(); | |
| 1511 | + List<String> keyList = new ArrayList<String>(); | |
| 1512 | + keyList.addAll(keySet); | |
| 1513 | + Collections.sort(keyList, new Comparator<String>() { | |
| 1598 | 1514 | |
| 1599 | - public int compare(Map<String, Object> o1, Map<String, Object> o2) { | |
| 1515 | + public int compare(String o1, String o2) { | |
| 1600 | 1516 | Long a; |
| 1601 | 1517 | Long b; |
| 1602 | - String lp1 = o1.get("lp").toString(); | |
| 1603 | - String lp2 = o2.get("lp").toString(); | |
| 1518 | + o1 = o1.split("/")[0]; | |
| 1519 | + o2 = o2.split("/")[0]; | |
| 1604 | 1520 | String str1 = ""; |
| 1605 | 1521 | String str2 = ""; |
| 1606 | - for(int i = 0; i < lp1.length(); i++){ | |
| 1607 | - str1 += (int)lp1.charAt(i); | |
| 1522 | + for(int i = 0; i < o1.length(); i++){ | |
| 1523 | + str1 += (int)o1.charAt(i); | |
| 1608 | 1524 | } |
| 1609 | - for(int i = 0; i < lp2.length(); i++){ | |
| 1610 | - str2 += (int)lp2.charAt(i); | |
| 1525 | + for(int i = 0; i < o2.length(); i++){ | |
| 1526 | + str2 += (int)o2.charAt(i); | |
| 1611 | 1527 | } |
| 1612 | 1528 | |
| 1613 | 1529 | a = Long.valueOf(str1); |
| 1614 | 1530 | b = Long.valueOf(str2); |
| 1615 | - | |
| 1531 | + | |
| 1616 | 1532 | // 升序 |
| 1617 | 1533 | return a.compareTo(b); |
| 1618 | 1534 | } |
| 1619 | 1535 | }); |
| 1620 | 1536 | |
| 1621 | - resList.addAll(keyMap1.get(key)); | |
| 1537 | + for(String key : keyList){ | |
| 1538 | + List<Map<String, Object>> mapList = keyMap0.get(key); | |
| 1539 | + Map<String, Object> tempMap = new HashMap<String, Object>(); | |
| 1540 | + int ddtq_ = 0, ddtqs = 0, ddyw_ = 0, ddyws = 0; | |
| 1541 | + int fctq_ = 0, fctqs = 0, fcyw_ = 0, fcyws = 0; | |
| 1542 | + int yssj_ = 0, yssjs = 0, tzsj_ = 0, tzsjs = 0; | |
| 1543 | + for(Map<String, Object> m : mapList){ | |
| 1544 | + int ddwd = Integer.valueOf(m.get("ddwd").toString()); | |
| 1545 | + if(ddwd < 0){ | |
| 1546 | + ddtq_ += 0 - ddwd; | |
| 1547 | + ++ddtqs; | |
| 1548 | + } else if(ddwd > 0){ | |
| 1549 | + ddyw_ += ddwd; | |
| 1550 | + ++ddyws; | |
| 1551 | + } | |
| 1552 | + int fcwd = Integer.valueOf(m.get("fcwd").toString()); | |
| 1553 | + if(fcwd < 0){ | |
| 1554 | + fctq_ += 0 - fcwd; | |
| 1555 | + ++fctqs; | |
| 1556 | + } else if(fcwd > 0){ | |
| 1557 | + fcyw_ += fcwd; | |
| 1558 | + ++fcyws; | |
| 1559 | + } | |
| 1560 | + int sjys = Integer.valueOf(m.get("sjys").toString()); | |
| 1561 | + yssj_ += sjys; | |
| 1562 | + ++yssjs; | |
| 1563 | + int sjtz = Integer.valueOf(m.get("sjtz").toString()); | |
| 1564 | + tzsj_ += sjtz; | |
| 1565 | + ++tzsjs; | |
| 1566 | + } | |
| 1567 | + tempMap.put("ddwd1", (ddtqs!=0?ddtq_/ddtqs:0) + "分"); | |
| 1568 | + tempMap.put("ddwd2", (ddyws!=0?ddyw_/ddyws:0) + "分"); | |
| 1569 | + tempMap.put("wdfc1", (fctqs!=0?fctq_/fctqs:0) + "分"); | |
| 1570 | + tempMap.put("wdfc2", (fcyws!=0?fcyw_/fcyws:0) + "分"); | |
| 1571 | + tempMap.put("pjys", (yssjs!=0?yssj_/yssjs:0) + "分"); | |
| 1572 | + tempMap.put("pjtz", (tzsjs!=0?tzsj_/tzsjs:0) + "分"); | |
| 1573 | + | |
| 1574 | + Map<String, Object> m = mapList.get(0); | |
| 1575 | + tempMap.put("dates", date); | |
| 1576 | + tempMap.put("times", times); | |
| 1577 | + tempMap.put("line", m.get("line")); | |
| 1578 | + tempMap.put("lp", m.get("lp")); | |
| 1579 | + tempMap.put("station", m.get("station")); | |
| 1580 | + tempMap.put("bcs", mapList.size()); | |
| 1581 | + tempMap.put("workList", mapList); | |
| 1582 | + if(qdzName != null && qdzName.trim().length() != 0){ | |
| 1583 | + if(!tempMap.get("station").equals(qdzName)){ | |
| 1584 | + continue; | |
| 1585 | + } | |
| 1586 | + } | |
| 1587 | + resList.add(tempMap); | |
| 1588 | + } | |
| 1622 | 1589 | } |
| 1623 | - | |
| 1624 | - | |
| 1625 | 1590 | return resList; |
| 1626 | 1591 | } |
| 1627 | 1592 | ... | ... |
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
| ... | ... | @@ -2711,6 +2711,8 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 2711 | 2711 | List<ScheduleRealInfo> listInfo = scheduleRealInfoRepository.scheduleByDateAndLineQp(line, date); |
| 2712 | 2712 | for (int i = 0; i < listInfo.size(); i++) { |
| 2713 | 2713 | ScheduleRealInfo t = listInfo.get(i); |
| 2714 | + if(t.getLpName().equals("古4")) | |
| 2715 | + System.out.println(); | |
| 2714 | 2716 | if (!lpName.equals(t.getLpName())) { |
| 2715 | 2717 | zdsjActual = t.getZdsjActual(); |
| 2716 | 2718 | zdsj = t.getZdsj(); | ... | ... |
src/main/java/com/bsth/service/schedule/impl/TTInfoDetailServiceImpl.java
| ... | ... | @@ -192,7 +192,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl<TTInfoDetail, Long> im |
| 192 | 192 | (!"进场".equals(cell_con.trim()))) { |
| 193 | 193 | Map<String, Object> p1 = new HashMap<>(); |
| 194 | 194 | p1.put("line.id_eq", lineid); |
| 195 | - p1.put("stationName_eq", cell_con.trim()); | |
| 195 | + p1.put("stationName_like", cell_con.trim() + "%"); // 使用模糊匹配 | |
| 196 | 196 | p1.put("stationMark_eq", "B"); |
| 197 | 197 | p1.put("destroy_eq", 0); // 未撤销 |
| 198 | 198 | ... | ... |
src/main/resources/datatools/ktrs/ttinfodetailDataInput.ktr
| ... | ... | @@ -828,7 +828,7 @@ |
| 828 | 828 | <optimizationLevel>9</optimizationLevel> |
| 829 | 829 | <jsScripts> <jsScript> <jsScript_type>0</jsScript_type> |
| 830 | 830 | <jsScript_name>Script 1</jsScript_name> |
| 831 | - <jsScript_script>//Script here

// 使用正则表达式去除站点名称右侧多余的数字
qdzname = qdzname.replace(/(\d+$)/g,'');

// sendtime处理,hhmm,hh:mm,hh,mm
var sendtime_calcu;
if (sendtime.length == 5) { // 最长格式,包括分隔符,统一把分隔符替换成冒号
 sendtime_calcu = sendtime.substr(0, 2) + ":" + sendtime.substr(3, 2);
} else if (sendtime.length == 4) {
 if (sendtime.indexOf(":") > 0) { // 冒号分隔,无需修改
 sendtime_calcu = sendtime;
 } else if (sendtime.indexOf(",") > 0) { // 逗号分隔,改成冒号分隔
 sendtime_calcu = sendtime.substr(0, 1) + ":" + sendtime.substr(2, 2);
 } else { // 无分隔符,改成冒号分隔
 sendtime_calcu = sendtime.substr(0, 2) + ":" + sendtime.substr(2, 2);
 }
} else if (sendtime.length == 3) { // 无分隔符,改成冒号分隔
 sendtime_calcu = sendtime.substr(0, 1) + ":" + sendtime.substr(1, 2);
}

// 全部修正完毕后,如果长度不是5,前面补0
if (sendtime_calcu.length != 5) {
 sendtime_calcu = "0" + sendtime_calcu;
}

// 设置分班
var isfb = 0;

// 设置停驶
var ists = 0;

// 设置isCanceled
var iscanceled = 0;</jsScript_script> | |
| 831 | + <jsScript_script>//Script here

// 使用正则表达式去除站点名称右侧多余的数字
qdzname = qdzname.replace(/(\d+$)/g,'');
if (qdzname != "出场" && qdzname != "进场") {
 qdzname = qdzname + "%"; // 模糊匹配标识符
}

// sendtime处理,hhmm,hh:mm,hh,mm
var sendtime_calcu;
if (sendtime.length == 5) { // 最长格式,包括分隔符,统一把分隔符替换成冒号
 sendtime_calcu = sendtime.substr(0, 2) + ":" + sendtime.substr(3, 2);
} else if (sendtime.length == 4) {
 if (sendtime.indexOf(":") > 0) { // 冒号分隔,无需修改
 sendtime_calcu = sendtime;
 } else if (sendtime.indexOf(",") > 0) { // 逗号分隔,改成冒号分隔
 sendtime_calcu = sendtime.substr(0, 1) + ":" + sendtime.substr(2, 2);
 } else { // 无分隔符,改成冒号分隔
 sendtime_calcu = sendtime.substr(0, 2) + ":" + sendtime.substr(2, 2);
 }
} else if (sendtime.length == 3) { // 无分隔符,改成冒号分隔
 sendtime_calcu = sendtime.substr(0, 1) + ":" + sendtime.substr(1, 2);
}

// 全部修正完毕后,如果长度不是5,前面补0
if (sendtime_calcu.length != 5) {
 sendtime_calcu = "0" + sendtime_calcu;
}

// 设置分班
var isfb = 0;

// 设置停驶
var ists = 0;

// 设置isCanceled
var iscanceled = 0;</jsScript_script> | |
| 832 | 832 | </jsScript> </jsScripts> <fields> <field> <name>qdzname</name> |
| 833 | 833 | <rename>qdzname</rename> |
| 834 | 834 | <type>String</type> |
| ... | ... | @@ -1076,7 +1076,7 @@ |
| 1076 | 1076 | </value> |
| 1077 | 1077 | <value> |
| 1078 | 1078 | <name>qdz_name</name> |
| 1079 | - <rename>qdzname</rename> | |
| 1079 | + <rename>qdzname_</rename> | |
| 1080 | 1080 | <update>Y</update> |
| 1081 | 1081 | </value> |
| 1082 | 1082 | <value> |
| ... | ... | @@ -1232,7 +1232,7 @@ |
| 1232 | 1232 | </value> |
| 1233 | 1233 | <value> |
| 1234 | 1234 | <name>zdz_name</name> |
| 1235 | - <rename>zdzname</rename> | |
| 1235 | + <rename>zdzname_</rename> | |
| 1236 | 1236 | <update>Y</update> |
| 1237 | 1237 | </value> |
| 1238 | 1238 | <value> |
| ... | ... | @@ -1601,7 +1601,7 @@ |
| 1601 | 1601 | <key> |
| 1602 | 1602 | <name>zdzname</name> |
| 1603 | 1603 | <field>station_name</field> |
| 1604 | - <condition>=</condition> | |
| 1604 | + <condition>LIKE</condition> | |
| 1605 | 1605 | <name2/> |
| 1606 | 1606 | </key> |
| 1607 | 1607 | <key> |
| ... | ... | @@ -1634,6 +1634,12 @@ |
| 1634 | 1634 | <default/> |
| 1635 | 1635 | <type>String</type> |
| 1636 | 1636 | </value> |
| 1637 | + <value> | |
| 1638 | + <name>station_name</name> | |
| 1639 | + <rename>zdzname_</rename> | |
| 1640 | + <default/> | |
| 1641 | + <type>String</type> | |
| 1642 | + </value> | |
| 1637 | 1643 | </lookup> |
| 1638 | 1644 | <cluster_schema/> |
| 1639 | 1645 | <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> |
| ... | ... | @@ -2075,7 +2081,7 @@ |
| 2075 | 2081 | <key> |
| 2076 | 2082 | <name>qdzname</name> |
| 2077 | 2083 | <field>station_name</field> |
| 2078 | - <condition>=</condition> | |
| 2084 | + <condition>LIKE</condition> | |
| 2079 | 2085 | <name2/> |
| 2080 | 2086 | </key> |
| 2081 | 2087 | <key> |
| ... | ... | @@ -2108,6 +2114,12 @@ |
| 2108 | 2114 | <default/> |
| 2109 | 2115 | <type>String</type> |
| 2110 | 2116 | </value> |
| 2117 | + <value> | |
| 2118 | + <name>station_name</name> | |
| 2119 | + <rename>qdzname_</rename> | |
| 2120 | + <default/> | |
| 2121 | + <type>String</type> | |
| 2122 | + </value> | |
| 2111 | 2123 | </lookup> |
| 2112 | 2124 | <cluster_schema/> |
| 2113 | 2125 | <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> |
| ... | ... | @@ -2207,7 +2219,7 @@ |
| 2207 | 2219 | <key> |
| 2208 | 2220 | <name>qdzname_calcu</name> |
| 2209 | 2221 | <field>station_name</field> |
| 2210 | - <condition>=</condition> | |
| 2222 | + <condition>LIKE</condition> | |
| 2211 | 2223 | <name2/> |
| 2212 | 2224 | </key> |
| 2213 | 2225 | <key> | ... | ... |
src/main/resources/datatools/ktrs/ttinfodetailDataInput2.ktr
| ... | ... | @@ -828,7 +828,7 @@ |
| 828 | 828 | <optimizationLevel>9</optimizationLevel> |
| 829 | 829 | <jsScripts> <jsScript> <jsScript_type>0</jsScript_type> |
| 830 | 830 | <jsScript_name>Script 1</jsScript_name> |
| 831 | - <jsScript_script>//Script here

// 使用正则表达式去除站点名称右侧多余的数字
qdzname = qdzname.replace(/(\d+$)/g,'');

// sendtime处理,hhmm,hh:mm,hh,mm
var sendtime_calcu;
if (sendtime.length == 5) { // 最长格式,包括分隔符,统一把分隔符替换成冒号
 sendtime_calcu = sendtime.substr(0, 2) + ":" + sendtime.substr(3, 2);
} else if (sendtime.length == 4) {
 if (sendtime.indexOf(":") > 0) { // 冒号分隔,无需修改
 sendtime_calcu = sendtime;
 } else if (sendtime.indexOf(",") > 0) { // 逗号分隔,改成冒号分隔
 sendtime_calcu = sendtime.substr(0, 1) + ":" + sendtime.substr(2, 2);
 } else { // 无分隔符,改成冒号分隔
 sendtime_calcu = sendtime.substr(0, 2) + ":" + sendtime.substr(2, 2);
 }
} else if (sendtime.length == 3) { // 无分隔符,改成冒号分隔
 sendtime_calcu = sendtime.substr(0, 1) + ":" + sendtime.substr(1, 2);
}

// 全部修正完毕后,如果长度不是5,前面补0
if (sendtime_calcu.length != 5) {
 sendtime_calcu = "0" + sendtime_calcu;
}

// 设置分班
var isfb = 0;

// 设置停驶
var ists = 0;

// 设置isCanceled
var iscanceled = 0;</jsScript_script> | |
| 831 | + <jsScript_script>//Script here

// 使用正则表达式去除站点名称右侧多余的数字
qdzname = qdzname.replace(/(\d+$)/g,'');
if (qdzname != "出场" && qdzname != "进场") {
 qdzname = qdzname + "%"; // 模糊匹配标识符
}

// sendtime处理,hhmm,hh:mm,hh,mm
var sendtime_calcu;
if (sendtime.length == 5) { // 最长格式,包括分隔符,统一把分隔符替换成冒号
 sendtime_calcu = sendtime.substr(0, 2) + ":" + sendtime.substr(3, 2);
} else if (sendtime.length == 4) {
 if (sendtime.indexOf(":") > 0) { // 冒号分隔,无需修改
 sendtime_calcu = sendtime;
 } else if (sendtime.indexOf(",") > 0) { // 逗号分隔,改成冒号分隔
 sendtime_calcu = sendtime.substr(0, 1) + ":" + sendtime.substr(2, 2);
 } else { // 无分隔符,改成冒号分隔
 sendtime_calcu = sendtime.substr(0, 2) + ":" + sendtime.substr(2, 2);
 }
} else if (sendtime.length == 3) { // 无分隔符,改成冒号分隔
 sendtime_calcu = sendtime.substr(0, 1) + ":" + sendtime.substr(1, 2);
}

// 全部修正完毕后,如果长度不是5,前面补0
if (sendtime_calcu.length != 5) {
 sendtime_calcu = "0" + sendtime_calcu;
}

// 设置分班
var isfb = 0;

// 设置停驶
var ists = 0;

// 设置isCanceled
var iscanceled = 0;</jsScript_script> | |
| 832 | 832 | </jsScript> </jsScripts> <fields> <field> <name>qdzname</name> |
| 833 | 833 | <rename>qdzname</rename> |
| 834 | 834 | <type>String</type> |
| ... | ... | @@ -1076,7 +1076,7 @@ |
| 1076 | 1076 | </value> |
| 1077 | 1077 | <value> |
| 1078 | 1078 | <name>qdz_name</name> |
| 1079 | - <rename>qdzname</rename> | |
| 1079 | + <rename>qdzname_</rename> | |
| 1080 | 1080 | <update>Y</update> |
| 1081 | 1081 | </value> |
| 1082 | 1082 | <value> |
| ... | ... | @@ -1232,7 +1232,7 @@ |
| 1232 | 1232 | </value> |
| 1233 | 1233 | <value> |
| 1234 | 1234 | <name>zdz_name</name> |
| 1235 | - <rename>zdzname</rename> | |
| 1235 | + <rename>zdzname_</rename> | |
| 1236 | 1236 | <update>Y</update> |
| 1237 | 1237 | </value> |
| 1238 | 1238 | <value> |
| ... | ... | @@ -1601,7 +1601,7 @@ |
| 1601 | 1601 | <key> |
| 1602 | 1602 | <name>zdzname</name> |
| 1603 | 1603 | <field>station_name</field> |
| 1604 | - <condition>=</condition> | |
| 1604 | + <condition>LIKE</condition> | |
| 1605 | 1605 | <name2/> |
| 1606 | 1606 | </key> |
| 1607 | 1607 | <key> |
| ... | ... | @@ -1634,6 +1634,12 @@ |
| 1634 | 1634 | <default/> |
| 1635 | 1635 | <type>String</type> |
| 1636 | 1636 | </value> |
| 1637 | + <value> | |
| 1638 | + <name>station_name</name> | |
| 1639 | + <rename>zdzname_</rename> | |
| 1640 | + <default/> | |
| 1641 | + <type>String</type> | |
| 1642 | + </value> | |
| 1637 | 1643 | </lookup> |
| 1638 | 1644 | <cluster_schema/> |
| 1639 | 1645 | <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> |
| ... | ... | @@ -2075,7 +2081,7 @@ |
| 2075 | 2081 | <key> |
| 2076 | 2082 | <name>qdzname</name> |
| 2077 | 2083 | <field>station_name</field> |
| 2078 | - <condition>=</condition> | |
| 2084 | + <condition>LIKE</condition> | |
| 2079 | 2085 | <name2/> |
| 2080 | 2086 | </key> |
| 2081 | 2087 | <key> |
| ... | ... | @@ -2108,6 +2114,12 @@ |
| 2108 | 2114 | <default/> |
| 2109 | 2115 | <type>String</type> |
| 2110 | 2116 | </value> |
| 2117 | + <value> | |
| 2118 | + <name>station_name</name> | |
| 2119 | + <rename>qdzname_</rename> | |
| 2120 | + <default/> | |
| 2121 | + <type>String</type> | |
| 2122 | + </value> | |
| 2111 | 2123 | </lookup> |
| 2112 | 2124 | <cluster_schema/> |
| 2113 | 2125 | <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> |
| ... | ... | @@ -2207,7 +2219,7 @@ |
| 2207 | 2219 | <key> |
| 2208 | 2220 | <name>qdzname_calcu</name> |
| 2209 | 2221 | <field>station_name</field> |
| 2210 | - <condition>=</condition> | |
| 2222 | + <condition>LIKE</condition> | |
| 2211 | 2223 | <name2/> |
| 2212 | 2224 | </key> |
| 2213 | 2225 | <key> | ... | ... |
src/main/resources/static/pages/base/timesmodel/add.html
| 1 | -<style> | |
| 2 | -.form-control:focus { | |
| 3 | - border-color: #53ced9; | |
| 4 | -} | |
| 5 | -.tagsDiv { | |
| 6 | - border: 1px solid #c2cad8; | |
| 7 | - margin-left: 15px; | |
| 8 | - padding: 4px 15px 4px 15px; | |
| 9 | - width: 50%; | |
| 10 | -} | |
| 1 | +<style> | |
| 2 | +.form-control:focus { | |
| 3 | + border-color: #53ced9; | |
| 4 | +} | |
| 5 | +.tagsDiv { | |
| 6 | + border: 1px solid #c2cad8; | |
| 7 | + margin-left: 15px; | |
| 8 | + padding: 4px 15px 4px 15px; | |
| 9 | + width: 50%; | |
| 10 | +} | |
| 11 | 11 | </style> |
| 12 | 12 | <!-- 片段标题 START --> |
| 13 | 13 | <div class="page-head"> |
| ... | ... | @@ -20,6 +20,10 @@ |
| 20 | 20 | <ul class="page-breadcrumb breadcrumb"> |
| 21 | 21 | <li><a href="/pages/home.html" data-pjax>首页</a> <i class="fa fa-circle"></i></li> |
| 22 | 22 | <li><span class="active">运营计划管理</span> <i class="fa fa-circle"></i></li> |
| 23 | + <li> | |
| 24 | + <a href="/#/ttInfoManage">时刻表管理</a> | |
| 25 | + <i class="fa fa-circle"></i> | |
| 26 | + </li> | |
| 23 | 27 | <li><span class="active">时刻表明细制作建模</span></li> |
| 24 | 28 | </ul> |
| 25 | 29 | <!-- 线路信息导航栏组件 END --> |
| ... | ... | @@ -32,9 +36,9 @@ |
| 32 | 36 | </span> |
| 33 | 37 | </div> |
| 34 | 38 | |
| 35 | - <div class="actions"> | |
| 36 | - <div class="btn-group btn-group-devided" data-toggle="buttons"> | |
| 37 | - <a class="btn btn-circle blue openHaveSkb" href="javascript:;" data-pjax><i class="fa fa-check"></i> 打开现有时刻表明细</a> | |
| 39 | + <div class="actions"> | |
| 40 | + <div class="btn-group btn-group-devided" data-toggle="buttons"> | |
| 41 | + <a class="btn btn-circle blue openHaveSkb" href="javascript:;" data-pjax><i class="fa fa-check"></i> 打开现有时刻表明细</a> | |
| 38 | 42 | </div> |
| 39 | 43 | <div class="btn-group btn-group-devided" data-toggle="buttons"> |
| 40 | 44 | <a class="btn btn-circle default" href="/pages/base/timesmodel/index.html" style="float: right;padding: 4px 23px;" data-pjax=""><i class="fa fa-reply"></i> 退出</a> |
| ... | ... | @@ -172,7 +176,7 @@ |
| 172 | 176 | </form> |
| 173 | 177 | <!-- END FORM--> |
| 174 | 178 | </div> |
| 175 | -</div> | |
| 179 | +</div> | |
| 176 | 180 | <script src="/pages/base/timesmodel/js/add-form-wizard.js"></script> |
| 177 | -<script src="/pages/base/timesmodel/js/add-form-reload.js"></script> | |
| 181 | +<script src="/pages/base/timesmodel/js/add-form-reload.js"></script> | |
| 178 | 182 | <script src="/pages/base/timesmodel/js/tagsinput.js"></script> |
| 179 | 183 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/base/timesmodel/gantt.html
| ... | ... | @@ -13,6 +13,10 @@ |
| 13 | 13 | <ul class="page-breadcrumb breadcrumb"> |
| 14 | 14 | <li><a href="/pages/home.html" data-pjax>首页</a> <i class="fa fa-circle"></i></li> |
| 15 | 15 | <li><span class="active">运营计划管理</span> <i class="fa fa-circle"></i></li> |
| 16 | + <li> | |
| 17 | + <a href="/#/ttInfoManage">时刻表管理</a> | |
| 18 | + <i class="fa fa-circle"></i> | |
| 19 | + </li> | |
| 16 | 20 | <li><span class="active">时刻表明细模型</span></li> |
| 17 | 21 | </ul> |
| 18 | 22 | <!-- 线路信息导航栏组件 END --> | ... | ... |
src/main/resources/static/pages/base/timesmodel/js/base-fun.js
| ... | ... | @@ -824,10 +824,12 @@ var BaseFun = function() { |
| 824 | 824 | var tempA = baseF.abstractCar(list , markArray , cara , saa , dataMap , map); |
| 825 | 825 | // return {'json':tempA,'bxrcgs':null}; |
| 826 | 826 | // 第七步 确定吃饭时间. |
| 827 | - baseF.markeEatTime(list , tempA , cara , saa , dataMap ,map); | |
| 827 | + if (map.cfdd) { // NEW,没有选择吃饭地点,不设定吃饭班次 | |
| 828 | + baseF.markeEatTime(list , tempA , cara , saa , dataMap ,map); | |
| 829 | + } | |
| 828 | 830 | baseF.resizeByPitStopTime(cara , tempA , dataMap); |
| 829 | 831 | baseF.updfcno01(tempA,0); |
| 830 | - // return {'json':tempA,'bxrcgs':null}; | |
| 832 | + //return {'json':tempA,'bxrcgs':null}; | |
| 831 | 833 | // 确定进出场、早晚例保时间.并返回班次数组集合 |
| 832 | 834 | return {'json':baseF.addInOutFieldBc(cara,tempA,dataMap,saa,map),'bxrcgs':null}; |
| 833 | 835 | }, |
| ... | ... | @@ -862,22 +864,25 @@ var BaseFun = function() { |
| 862 | 864 | var canCf = new Array(), countTzsj = 0, isLast = new Array(); |
| 863 | 865 | for(var b = 0 ; b<bcArray.length;b++) { |
| 864 | 866 | var bcddsj = baseF.getDateTime(bcArray[b].ARRIVALTIME); |
| 865 | - if(bcddsj<=jssj) { | |
| 867 | + //if(bcddsj<=jssj) { | |
| 868 | + // countTzsj += bcArray[b].STOPTIME; | |
| 869 | + // canCf.push(bcArray[b]); | |
| 870 | + //} | |
| 871 | + if(bcddsj>= kssj && bcddsj<=jssj) { // NEW,使用开始时间,结束时间限定可以吃饭的班次 | |
| 866 | 872 | countTzsj += bcArray[b].STOPTIME; |
| 867 | 873 | canCf.push(bcArray[b]); |
| 868 | 874 | } |
| 869 | - /*if(bcddsj>= kssj && bcddsj<=jssj) { | |
| 870 | - countTzsj += bcArray[b].STOPTIME; | |
| 871 | - canCf.push(bcArray[b]); | |
| 872 | - } | |
| 873 | - if(bcddsj < kssj) | |
| 874 | - isLast.push(bcArray[b]);*/ | |
| 875 | + //if(bcddsj < kssj) | |
| 876 | + // isLast.push(bcArray[b]); | |
| 875 | 877 | } |
| 876 | 878 | if(canCf.length>0) { |
| 877 | 879 | console.log('countTzsj:' + countTzsj + 'length:' + canCf.length); |
| 878 | 880 | var fxDm = baseF.dirDmToIndex(canCf[canCf.length-1].xlDir); |
| 881 | + if (map.cfdd == "allYes") { // NEW,如果选择的吃饭地点是所有,则使用班次的方向作为吃饭班次的方向 | |
| 882 | + cfddDm = fxDm; | |
| 883 | + } | |
| 879 | 884 | // console.log(countTzsj , canCf[canCf.length-1].fcsj); |
| 880 | - if(cfddDm == fxDm && canCf.length>2) { | |
| 885 | + if(canCf.length>2) { | |
| 881 | 886 | var tzdx = canCf[canCf.length-2].STOPTIME - dataMap.zwcArr[cfIndex]; |
| 882 | 887 | canCf[canCf.length-2].STOPTIME = tzdx >= 0 ? tzdx : 0; |
| 883 | 888 | var obj = baseF.getbcObj( | ... | ... |
src/main/resources/static/pages/forms/statement/lineTimeAnaly.html
| ... | ... | @@ -87,14 +87,15 @@ |
| 87 | 87 | <table class="table table-bordered table-hover table-checkable" id="forms"> |
| 88 | 88 | <thead> |
| 89 | 89 | <tr class="hidden"> |
| 90 | - <th >公司</th> | |
| 90 | +<!-- <th >公司</th> --> | |
| 91 | 91 | <th width="30%">日期分段</th> |
| 92 | - <th >时段</th> | |
| 92 | + <th>时段</th> | |
| 93 | 93 | <th width="20%">线路</th> |
| 94 | - <th >路牌</th> | |
| 94 | + <th>路牌</th> | |
| 95 | 95 | <th width="20%">站点</th> |
| 96 | - <th >计划发车班次数</th> | |
| 97 | - <th>实际完成班次数</th> | |
| 96 | + <th>班次数</th> | |
| 97 | +<!-- <th>计划发车班次数</th> --> | |
| 98 | +<!-- <th>实际完成班次数</th> --> | |
| 98 | 99 | </tr> |
| 99 | 100 | </thead> |
| 100 | 101 | <tbody> |
| ... | ... | @@ -120,10 +121,11 @@ |
| 120 | 121 | <tr class="hidden"> |
| 121 | 122 | <th rowspan="2">日期</th> |
| 122 | 123 | <th colspan="4">到达时间</th> |
| 124 | + <th rowspan="2">误点分钟</th> | |
| 123 | 125 | <th colspan="4">发车时间</th> |
| 124 | 126 | <th rowspan="2">误点分钟</th> |
| 125 | - <th colspan="5">运送时间</th> | |
| 126 | - <th colspan="5">停站时间</th> | |
| 127 | + <th colspan="3">运送时间</th> | |
| 128 | + <th colspan="3">停站时间</th> | |
| 127 | 129 | </tr> |
| 128 | 130 | <tr class="hidden"> |
| 129 | 131 | <th>计划</th> |
| ... | ... | @@ -136,13 +138,13 @@ |
| 136 | 138 | <th>平均延误</th> |
| 137 | 139 | <th>计划</th> |
| 138 | 140 | <th>实际</th> |
| 139 | - <th>最快</th> | |
| 140 | - <th>最慢</th> | |
| 141 | +<!-- <th>最快</th> --> | |
| 142 | +<!-- <th>最慢</th> --> | |
| 141 | 143 | <th>平均</th> |
| 142 | 144 | <th>计划</th> |
| 143 | 145 | <th>实际</th> |
| 144 | - <th>最大</th> | |
| 145 | - <th>最小</th> | |
| 146 | +<!-- <th>最大</th> --> | |
| 147 | +<!-- <th>最小</th> --> | |
| 146 | 148 | <th>平均</th> |
| 147 | 149 | </tr> |
| 148 | 150 | </thead> |
| ... | ... | @@ -406,7 +408,7 @@ |
| 406 | 408 | } |
| 407 | 409 | }); |
| 408 | 410 | $.each(list, function(i, g){ |
| 409 | - if(g.line == params[3] && g.lp == params[4] &&g.station == params[5]){ | |
| 411 | + if(g.line == params[2] && g.lp == params[3] &&g.station == params[4]){ | |
| 410 | 412 | var tbodyHtml = template('list_workList',{list:g}); |
| 411 | 413 | $('#works tbody').html(tbodyHtml); |
| 412 | 414 | $("#works_hidden").removeClass("hidden"); |
| ... | ... | @@ -483,14 +485,12 @@ |
| 483 | 485 | <script type="text/html" id="list_lineTimeAnaly"> |
| 484 | 486 | {{each list as obj i}} |
| 485 | 487 | <tr> |
| 486 | - <td>{{obj.company}}</td> | |
| 487 | 488 | <td>{{obj.dates}}</td> |
| 488 | 489 | <td>{{obj.times}}</td> |
| 489 | 490 | <td>{{obj.line}}</td> |
| 490 | 491 | <td>{{obj.lp}}</td> |
| 491 | 492 | <td>{{obj.station}}</td> |
| 492 | - <td>{{obj.jhbc}}</td> | |
| 493 | - <td>{{obj.sjbc}}</td> | |
| 493 | + <td>{{obj.bcs}}</td> | |
| 494 | 494 | </tr> |
| 495 | 495 | {{/each}} |
| 496 | 496 | {{if list.length == 0}} |
| ... | ... | @@ -503,30 +503,27 @@ |
| 503 | 503 | {{each list.workList as obj i}} |
| 504 | 504 | <tr> |
| 505 | 505 | <td>{{obj.date}}</td> |
| 506 | - <td>{{obj.jhdf}}</td> | |
| 507 | - <td>{{obj.sjdf}}</td> | |
| 506 | + <td>{{obj.jhdd}}</td> | |
| 507 | + <td>{{obj.sjdd}}</td> | |
| 508 | 508 | {{if i == 0}} |
| 509 | - <td rowspan="{{list.workList.length}}" class="merge">{{list.wddf1}}</td> | |
| 510 | - <td rowspan="{{list.workList.length}}" class="merge">{{list.wddf2}}</td> | |
| 509 | + <td rowspan="{{list.workList.length}}" class="merge">{{list.ddwd1}}</td> | |
| 510 | + <td rowspan="{{list.workList.length}}" class="merge">{{list.ddwd2}}</td> | |
| 511 | 511 | {{/if}} |
| 512 | + <td class="merge">{{obj.ddwd}}</td> | |
| 512 | 513 | <td>{{obj.jhfc}}</td> |
| 513 | 514 | <td>{{obj.sjfc}}</td> |
| 514 | 515 | {{if i == 0}} |
| 515 | 516 | <td rowspan="{{list.workList.length}}" class="merge">{{list.wdfc1}}</td> |
| 516 | 517 | <td rowspan="{{list.workList.length}}" class="merge">{{list.wdfc2}}</td> |
| 517 | 518 | {{/if}} |
| 518 | - <td class="merge">{{obj.wdfz}}</td> | |
| 519 | + <td class="merge">{{obj.fcwd}}</td> | |
| 519 | 520 | <td>{{obj.jhys}}</td> |
| 520 | 521 | <td>{{obj.sjys}}</td> |
| 521 | - <td>{{obj.yssjMin}}</td> | |
| 522 | - <td>{{obj.yssjMax}}</td> | |
| 523 | 522 | {{if i == 0}} |
| 524 | 523 | <td rowspan="{{list.workList.length}}" class="merge">{{list.pjys}}</td> |
| 525 | 524 | {{/if}} |
| 526 | 525 | <td>{{obj.jhtz}}</td> |
| 527 | 526 | <td>{{obj.sjtz}}</td> |
| 528 | - <td>{{obj.tzsjMax}}</td> | |
| 529 | - <td>{{obj.tzsjMin}}</td> | |
| 530 | 527 | {{if i == 0}} |
| 531 | 528 | <td rowspan="{{list.workList.length}}" class="merge">{{list.pjtz}}</td> |
| 532 | 529 | {{/if}} | ... | ... |
src/main/resources/static/real_control_v2/css/line_schedule.css