Commit 5d49c86acf31e9aba47d208f83bd363265d0907b

Authored by 廖磊
2 parents 70c7c00c f7699dc0

Merge branch 'minhang' of

http://222.66.0.204:8090/panzhaov5/bsth_control into minhang
src/main/java/com/bsth/controller/realcontrol/anomalyCheckController.java
@@ -95,4 +95,14 @@ public class anomalyCheckController { @@ -95,4 +95,14 @@ public class anomalyCheckController {
95 public void updateCacheBuff(){ 95 public void updateCacheBuff(){
96 geoCacheData.loadData(); 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,27 +54,19 @@ public class CarOutInfoHandler {
54 * 全量更新发车信息表 54 * 全量更新发车信息表
55 */ 55 */
56 public void updateAll() { 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 for (String k : ks) { 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 logger.error("", e); 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,6 +338,9 @@ public class InOutStationSignalHandle extends SignalHandle{
338 if(lpNext != null){ 338 if(lpNext != null){
339 lpNext.setQdzArrDatesj(sch.getZdsjActual()); 339 lpNext.setQdzArrDatesj(sch.getZdsjActual());
340 } 340 }
  341 + else{
  342 + logger.info(sch.getClZbh() + " 到终点,无下一班");
  343 + }
341 344
342 //通知客户端 345 //通知客户端
343 sendUtils.sendZdsj(sch, lpNext, doneSum); 346 sendUtils.sendZdsj(sch, lpNext, doneSum);
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
@@ -1137,4 +1137,16 @@ public class DayOfSchedule { @@ -1137,4 +1137,16 @@ public class DayOfSchedule {
1137 public ArrayListMultimap<String, ScheduleRealInfo> getLpScheduleMap() { 1137 public ArrayListMultimap<String, ScheduleRealInfo> getLpScheduleMap() {
1138 return lpScheduleMap; 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 \ No newline at end of file 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&lt;ScheduleRealI @@ -139,19 +139,19 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI
139 139
140 //去掉了 xlBm is not null 140 //去掉了 xlBm is not null
141 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 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 List<ScheduleRealInfo> scheduleByDateAndLine(String line,String date); 143 List<ScheduleRealInfo> scheduleByDateAndLine(String line,String date);
144 144
145 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 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 List<ScheduleRealInfo> scheduleByDateAndLineQp(String line,String date); 147 List<ScheduleRealInfo> scheduleByDateAndLineQp(String line,String date);
148 148
149 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 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 List<ScheduleRealInfo> scheduleByDateAndLineByGs(String gsdm,String fgsdm,String date); 151 List<ScheduleRealInfo> scheduleByDateAndLineByGs(String gsdm,String fgsdm,String date);
152 152
153 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 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 List<ScheduleRealInfo> scheduleByDateAndLineQp2(String line,String date); 155 List<ScheduleRealInfo> scheduleByDateAndLineQp2(String line,String date);
156 156
157 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 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,7 +141,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
141 long dfsj = Long.valueOf(split0[0]) * 60 + Long.valueOf(split0[1]); 141 long dfsj = Long.valueOf(split0[0]) * 60 + Long.valueOf(split0[1]);
142 if(!schedule.getScheduleDateStr().equals(schedule.getRealExecDate())&&dfsj<23*60) 142 if(!schedule.getScheduleDateStr().equals(schedule.getRealExecDate())&&dfsj<23*60)
143 dfsj += 1440l; 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 schedule.setDfsjT(dfsj); 145 schedule.setDfsjT(dfsj);
146 } 146 }
147 if(schedule.getFcsjActual() != null){ 147 if(schedule.getFcsjActual() != null){
@@ -149,7 +149,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -149,7 +149,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
149 long fcsjA = Long.valueOf(split2[0]) * 60 + Long.valueOf(split2[1]); 149 long fcsjA = Long.valueOf(split2[0]) * 60 + Long.valueOf(split2[1]);
150 if(!schedule.getScheduleDateStr().equals(schedule.getRealExecDate())&&fcsjA<23*60) 150 if(!schedule.getScheduleDateStr().equals(schedule.getRealExecDate())&&fcsjA<23*60)
151 fcsjA += 1440l; 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 schedule.setFcsjActualTime(fcsjA); 153 schedule.setFcsjActualTime(fcsjA);
154 } 154 }
155 if(schedule.getZdsjActual() != null){ 155 if(schedule.getZdsjActual() != null){
@@ -159,11 +159,11 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -159,11 +159,11 @@ public class BusIntervalServiceImpl implements BusIntervalService {
159 zdsjA += 1440l; 159 zdsjA += 1440l;
160 if(schedule.getFcsjActualTime() != null && zdsjA < schedule.getFcsjActualTime()) 160 if(schedule.getFcsjActualTime() != null && zdsjA < schedule.getFcsjActualTime())
161 zdsjA += 1440l; 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 schedule.setZdsjActualTime(zdsjA); 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 schedule.setFcsjT(fcsj); 167 schedule.setFcsjT(fcsj);
168 schedule.setZdsjT(zdsj); 168 schedule.setZdsjT(zdsj);
169 return schedule; 169 return schedule;
@@ -1379,249 +1379,214 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -1379,249 +1379,214 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1379 times = "05:00-23:00"; 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 String[] date1 = startDate.split("-"); 1384 String[] date1 = startDate.split("-");
1385 String[] date2 = endDate.split("-"); 1385 String[] date2 = endDate.split("-");
1386 startDate = date1[0] + "年" + date1[1] + "月" + date1[2] + "日"; 1386 startDate = date1[0] + "年" + date1[1] + "月" + date1[2] + "日";
1387 endDate = date2[0] + "年" + date2[1] + "月" + date2[2] + "日"; 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 String[] split = times.split("-"); 1393 String[] split = times.split("-");
1390 int startTime = Integer.valueOf(split[0].split(":")[0])*60 + Integer.valueOf(split[0].split(":")[1]); 1394 int startTime = Integer.valueOf(split[0].split(":")[0])*60 + Integer.valueOf(split[0].split(":")[1]);
1391 int endTime = Integer.valueOf(split[1].split(":")[0])*60 + Integer.valueOf(split[1].split(":")[1]); 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 if(!keyMap.containsKey(key)) 1399 if(!keyMap.containsKey(key))
1403 keyMap.put(key, new ArrayList<ScheduleRealInfo>()); 1400 keyMap.put(key, new ArrayList<ScheduleRealInfo>());
1404 - keyMap.get(key).add(schedule); 1401 + keyMap.get(key).add(s);
1405 } 1402 }
  1403 +
1406 for(String key : keyMap.keySet()){ 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 Long a; 1516 Long a;
1601 Long b; 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 String str1 = ""; 1520 String str1 = "";
1605 String str2 = ""; 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 a = Long.valueOf(str1); 1529 a = Long.valueOf(str1);
1614 b = Long.valueOf(str2); 1530 b = Long.valueOf(str2);
1615 - 1531 +
1616 // 升序 1532 // 升序
1617 return a.compareTo(b); 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 return resList; 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&lt;ScheduleRealInf @@ -2711,6 +2711,8 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2711 List<ScheduleRealInfo> listInfo = scheduleRealInfoRepository.scheduleByDateAndLineQp(line, date); 2711 List<ScheduleRealInfo> listInfo = scheduleRealInfoRepository.scheduleByDateAndLineQp(line, date);
2712 for (int i = 0; i < listInfo.size(); i++) { 2712 for (int i = 0; i < listInfo.size(); i++) {
2713 ScheduleRealInfo t = listInfo.get(i); 2713 ScheduleRealInfo t = listInfo.get(i);
  2714 + if(t.getLpName().equals("古4"))
  2715 + System.out.println();
2714 if (!lpName.equals(t.getLpName())) { 2716 if (!lpName.equals(t.getLpName())) {
2715 zdsjActual = t.getZdsjActual(); 2717 zdsjActual = t.getZdsjActual();
2716 zdsj = t.getZdsj(); 2718 zdsj = t.getZdsj();
src/main/java/com/bsth/service/schedule/impl/TTInfoDetailServiceImpl.java
@@ -192,7 +192,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -192,7 +192,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
192 (!"进场".equals(cell_con.trim()))) { 192 (!"进场".equals(cell_con.trim()))) {
193 Map<String, Object> p1 = new HashMap<>(); 193 Map<String, Object> p1 = new HashMap<>();
194 p1.put("line.id_eq", lineid); 194 p1.put("line.id_eq", lineid);
195 - p1.put("stationName_eq", cell_con.trim()); 195 + p1.put("stationName_like", cell_con.trim() + "%"); // 使用模糊匹配
196 p1.put("stationMark_eq", "B"); 196 p1.put("stationMark_eq", "B");
197 p1.put("destroy_eq", 0); // 未撤销 197 p1.put("destroy_eq", 0); // 未撤销
198 198
src/main/resources/datatools/ktrs/ttinfodetailDataInput.ktr
@@ -828,7 +828,7 @@ @@ -828,7 +828,7 @@
828 <optimizationLevel>9</optimizationLevel> 828 <optimizationLevel>9</optimizationLevel>
829 <jsScripts> <jsScript> <jsScript_type>0</jsScript_type> 829 <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
830 <jsScript_name>Script 1</jsScript_name> 830 <jsScript_name>Script 1</jsScript_name>
831 - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x4f7f;&#x7528;&#x6b63;&#x5219;&#x8868;&#x8fbe;&#x5f0f;&#x53bb;&#x9664;&#x7ad9;&#x70b9;&#x540d;&#x79f0;&#x53f3;&#x4fa7;&#x591a;&#x4f59;&#x7684;&#x6570;&#x5b57;&#xa;qdzname &#x3d; qdzname.replace&#x28;&#x2f;&#x28;&#x5c;d&#x2b;&#x24;&#x29;&#x2f;g,&#x27;&#x27;&#x29;&#x3b;&#xa;&#xa;&#x2f;&#x2f; sendtime&#x5904;&#x7406;&#xff0c;hhmm&#xff0c;hh&#x3a;mm&#xff0c;hh,mm&#xa;var sendtime_calcu&#x3b;&#xa;if &#x28;sendtime.length &#x3d;&#x3d; 5&#x29; &#x7b; &#x2f;&#x2f; &#x6700;&#x957f;&#x683c;&#x5f0f;&#xff0c;&#x5305;&#x62ec;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x7edf;&#x4e00;&#x628a;&#x5206;&#x9694;&#x7b26;&#x66ff;&#x6362;&#x6210;&#x5192;&#x53f7;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 2&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;3, 2&#x29;&#x3b;&#xa;&#x7d; else if &#x28;sendtime.length &#x3d;&#x3d; 4&#x29; &#x7b;&#xa; if &#x28;sendtime.indexOf&#x28;&#x22;&#x3a;&#x22;&#x29; &#x3e; 0&#x29; &#x7b; &#x2f;&#x2f; &#x5192;&#x53f7;&#x5206;&#x9694;&#xff0c;&#x65e0;&#x9700;&#x4fee;&#x6539;&#xa; sendtime_calcu &#x3d; sendtime&#x3b;&#xa; &#x7d; else if &#x28;sendtime.indexOf&#x28;&#x22;,&#x22;&#x29; &#x3e; 0&#x29; &#x7b; &#x2f;&#x2f; &#x9017;&#x53f7;&#x5206;&#x9694;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 1&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;2, 2&#x29;&#x3b;&#xa; &#x7d; else &#x7b; &#x2f;&#x2f; &#x65e0;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 2&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;2, 2&#x29;&#x3b;&#xa; &#x7d;&#xa;&#x7d; else if &#x28;sendtime.length &#x3d;&#x3d; 3&#x29; &#x7b; &#x2f;&#x2f; &#x65e0;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 1&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;1, 2&#x29;&#x3b;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x5168;&#x90e8;&#x4fee;&#x6b63;&#x5b8c;&#x6bd5;&#x540e;&#xff0c;&#x5982;&#x679c;&#x957f;&#x5ea6;&#x4e0d;&#x662f;5&#xff0c;&#x524d;&#x9762;&#x8865;0&#xa;if &#x28;sendtime_calcu.length &#x21;&#x3d; 5&#x29; &#x7b;&#xa; sendtime_calcu &#x3d; &#x22;0&#x22; &#x2b; sendtime_calcu&#x3b;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;&#x5206;&#x73ed;&#xa;var isfb &#x3d; 0&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;&#x505c;&#x9a76;&#xa;var ists &#x3d; 0&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;isCanceled&#xa;var iscanceled &#x3d; 0&#x3b;</jsScript_script> 831 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x4f7f;&#x7528;&#x6b63;&#x5219;&#x8868;&#x8fbe;&#x5f0f;&#x53bb;&#x9664;&#x7ad9;&#x70b9;&#x540d;&#x79f0;&#x53f3;&#x4fa7;&#x591a;&#x4f59;&#x7684;&#x6570;&#x5b57;&#xa;qdzname &#x3d; qdzname.replace&#x28;&#x2f;&#x28;&#x5c;d&#x2b;&#x24;&#x29;&#x2f;g,&#x27;&#x27;&#x29;&#x3b;&#xa;if &#x28;qdzname &#x21;&#x3d; &#x22;&#x51fa;&#x573a;&#x22; &#x26;&#x26; qdzname &#x21;&#x3d; &#x22;&#x8fdb;&#x573a;&#x22;&#x29; &#x7b;&#xa; qdzname &#x3d; qdzname &#x2b; &#x22;&#x25;&#x22;&#x3b; &#x2f;&#x2f; &#x6a21;&#x7cca;&#x5339;&#x914d;&#x6807;&#x8bc6;&#x7b26;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; sendtime&#x5904;&#x7406;&#xff0c;hhmm&#xff0c;hh&#x3a;mm&#xff0c;hh,mm&#xa;var sendtime_calcu&#x3b;&#xa;if &#x28;sendtime.length &#x3d;&#x3d; 5&#x29; &#x7b; &#x2f;&#x2f; &#x6700;&#x957f;&#x683c;&#x5f0f;&#xff0c;&#x5305;&#x62ec;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x7edf;&#x4e00;&#x628a;&#x5206;&#x9694;&#x7b26;&#x66ff;&#x6362;&#x6210;&#x5192;&#x53f7;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 2&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;3, 2&#x29;&#x3b;&#xa;&#x7d; else if &#x28;sendtime.length &#x3d;&#x3d; 4&#x29; &#x7b;&#xa; if &#x28;sendtime.indexOf&#x28;&#x22;&#x3a;&#x22;&#x29; &#x3e; 0&#x29; &#x7b; &#x2f;&#x2f; &#x5192;&#x53f7;&#x5206;&#x9694;&#xff0c;&#x65e0;&#x9700;&#x4fee;&#x6539;&#xa; sendtime_calcu &#x3d; sendtime&#x3b;&#xa; &#x7d; else if &#x28;sendtime.indexOf&#x28;&#x22;,&#x22;&#x29; &#x3e; 0&#x29; &#x7b; &#x2f;&#x2f; &#x9017;&#x53f7;&#x5206;&#x9694;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 1&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;2, 2&#x29;&#x3b;&#xa; &#x7d; else &#x7b; &#x2f;&#x2f; &#x65e0;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 2&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;2, 2&#x29;&#x3b;&#xa; &#x7d;&#xa;&#x7d; else if &#x28;sendtime.length &#x3d;&#x3d; 3&#x29; &#x7b; &#x2f;&#x2f; &#x65e0;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 1&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;1, 2&#x29;&#x3b;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x5168;&#x90e8;&#x4fee;&#x6b63;&#x5b8c;&#x6bd5;&#x540e;&#xff0c;&#x5982;&#x679c;&#x957f;&#x5ea6;&#x4e0d;&#x662f;5&#xff0c;&#x524d;&#x9762;&#x8865;0&#xa;if &#x28;sendtime_calcu.length &#x21;&#x3d; 5&#x29; &#x7b;&#xa; sendtime_calcu &#x3d; &#x22;0&#x22; &#x2b; sendtime_calcu&#x3b;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;&#x5206;&#x73ed;&#xa;var isfb &#x3d; 0&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;&#x505c;&#x9a76;&#xa;var ists &#x3d; 0&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;isCanceled&#xa;var iscanceled &#x3d; 0&#x3b;</jsScript_script>
832 </jsScript> </jsScripts> <fields> <field> <name>qdzname</name> 832 </jsScript> </jsScripts> <fields> <field> <name>qdzname</name>
833 <rename>qdzname</rename> 833 <rename>qdzname</rename>
834 <type>String</type> 834 <type>String</type>
@@ -1076,7 +1076,7 @@ @@ -1076,7 +1076,7 @@
1076 </value> 1076 </value>
1077 <value> 1077 <value>
1078 <name>qdz_name</name> 1078 <name>qdz_name</name>
1079 - <rename>qdzname</rename> 1079 + <rename>qdzname_</rename>
1080 <update>Y</update> 1080 <update>Y</update>
1081 </value> 1081 </value>
1082 <value> 1082 <value>
@@ -1232,7 +1232,7 @@ @@ -1232,7 +1232,7 @@
1232 </value> 1232 </value>
1233 <value> 1233 <value>
1234 <name>zdz_name</name> 1234 <name>zdz_name</name>
1235 - <rename>zdzname</rename> 1235 + <rename>zdzname_</rename>
1236 <update>Y</update> 1236 <update>Y</update>
1237 </value> 1237 </value>
1238 <value> 1238 <value>
@@ -1601,7 +1601,7 @@ @@ -1601,7 +1601,7 @@
1601 <key> 1601 <key>
1602 <name>zdzname</name> 1602 <name>zdzname</name>
1603 <field>station_name</field> 1603 <field>station_name</field>
1604 - <condition>&#x3d;</condition> 1604 + <condition>LIKE</condition>
1605 <name2/> 1605 <name2/>
1606 </key> 1606 </key>
1607 <key> 1607 <key>
@@ -1634,6 +1634,12 @@ @@ -1634,6 +1634,12 @@
1634 <default/> 1634 <default/>
1635 <type>String</type> 1635 <type>String</type>
1636 </value> 1636 </value>
  1637 + <value>
  1638 + <name>station_name</name>
  1639 + <rename>zdzname_</rename>
  1640 + <default/>
  1641 + <type>String</type>
  1642 + </value>
1637 </lookup> 1643 </lookup>
1638 <cluster_schema/> 1644 <cluster_schema/>
1639 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1645 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
@@ -2075,7 +2081,7 @@ @@ -2075,7 +2081,7 @@
2075 <key> 2081 <key>
2076 <name>qdzname</name> 2082 <name>qdzname</name>
2077 <field>station_name</field> 2083 <field>station_name</field>
2078 - <condition>&#x3d;</condition> 2084 + <condition>LIKE</condition>
2079 <name2/> 2085 <name2/>
2080 </key> 2086 </key>
2081 <key> 2087 <key>
@@ -2108,6 +2114,12 @@ @@ -2108,6 +2114,12 @@
2108 <default/> 2114 <default/>
2109 <type>String</type> 2115 <type>String</type>
2110 </value> 2116 </value>
  2117 + <value>
  2118 + <name>station_name</name>
  2119 + <rename>qdzname_</rename>
  2120 + <default/>
  2121 + <type>String</type>
  2122 + </value>
2111 </lookup> 2123 </lookup>
2112 <cluster_schema/> 2124 <cluster_schema/>
2113 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 2125 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
@@ -2207,7 +2219,7 @@ @@ -2207,7 +2219,7 @@
2207 <key> 2219 <key>
2208 <name>qdzname_calcu</name> 2220 <name>qdzname_calcu</name>
2209 <field>station_name</field> 2221 <field>station_name</field>
2210 - <condition>&#x3d;</condition> 2222 + <condition>LIKE</condition>
2211 <name2/> 2223 <name2/>
2212 </key> 2224 </key>
2213 <key> 2225 <key>
src/main/resources/datatools/ktrs/ttinfodetailDataInput2.ktr
@@ -828,7 +828,7 @@ @@ -828,7 +828,7 @@
828 <optimizationLevel>9</optimizationLevel> 828 <optimizationLevel>9</optimizationLevel>
829 <jsScripts> <jsScript> <jsScript_type>0</jsScript_type> 829 <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
830 <jsScript_name>Script 1</jsScript_name> 830 <jsScript_name>Script 1</jsScript_name>
831 - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x4f7f;&#x7528;&#x6b63;&#x5219;&#x8868;&#x8fbe;&#x5f0f;&#x53bb;&#x9664;&#x7ad9;&#x70b9;&#x540d;&#x79f0;&#x53f3;&#x4fa7;&#x591a;&#x4f59;&#x7684;&#x6570;&#x5b57;&#xa;qdzname &#x3d; qdzname.replace&#x28;&#x2f;&#x28;&#x5c;d&#x2b;&#x24;&#x29;&#x2f;g,&#x27;&#x27;&#x29;&#x3b;&#xa;&#xa;&#x2f;&#x2f; sendtime&#x5904;&#x7406;&#xff0c;hhmm&#xff0c;hh&#x3a;mm&#xff0c;hh,mm&#xa;var sendtime_calcu&#x3b;&#xa;if &#x28;sendtime.length &#x3d;&#x3d; 5&#x29; &#x7b; &#x2f;&#x2f; &#x6700;&#x957f;&#x683c;&#x5f0f;&#xff0c;&#x5305;&#x62ec;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x7edf;&#x4e00;&#x628a;&#x5206;&#x9694;&#x7b26;&#x66ff;&#x6362;&#x6210;&#x5192;&#x53f7;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 2&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;3, 2&#x29;&#x3b;&#xa;&#x7d; else if &#x28;sendtime.length &#x3d;&#x3d; 4&#x29; &#x7b;&#xa; if &#x28;sendtime.indexOf&#x28;&#x22;&#x3a;&#x22;&#x29; &#x3e; 0&#x29; &#x7b; &#x2f;&#x2f; &#x5192;&#x53f7;&#x5206;&#x9694;&#xff0c;&#x65e0;&#x9700;&#x4fee;&#x6539;&#xa; sendtime_calcu &#x3d; sendtime&#x3b;&#xa; &#x7d; else if &#x28;sendtime.indexOf&#x28;&#x22;,&#x22;&#x29; &#x3e; 0&#x29; &#x7b; &#x2f;&#x2f; &#x9017;&#x53f7;&#x5206;&#x9694;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 1&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;2, 2&#x29;&#x3b;&#xa; &#x7d; else &#x7b; &#x2f;&#x2f; &#x65e0;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 2&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;2, 2&#x29;&#x3b;&#xa; &#x7d;&#xa;&#x7d; else if &#x28;sendtime.length &#x3d;&#x3d; 3&#x29; &#x7b; &#x2f;&#x2f; &#x65e0;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 1&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;1, 2&#x29;&#x3b;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x5168;&#x90e8;&#x4fee;&#x6b63;&#x5b8c;&#x6bd5;&#x540e;&#xff0c;&#x5982;&#x679c;&#x957f;&#x5ea6;&#x4e0d;&#x662f;5&#xff0c;&#x524d;&#x9762;&#x8865;0&#xa;if &#x28;sendtime_calcu.length &#x21;&#x3d; 5&#x29; &#x7b;&#xa; sendtime_calcu &#x3d; &#x22;0&#x22; &#x2b; sendtime_calcu&#x3b;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;&#x5206;&#x73ed;&#xa;var isfb &#x3d; 0&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;&#x505c;&#x9a76;&#xa;var ists &#x3d; 0&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;isCanceled&#xa;var iscanceled &#x3d; 0&#x3b;</jsScript_script> 831 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x4f7f;&#x7528;&#x6b63;&#x5219;&#x8868;&#x8fbe;&#x5f0f;&#x53bb;&#x9664;&#x7ad9;&#x70b9;&#x540d;&#x79f0;&#x53f3;&#x4fa7;&#x591a;&#x4f59;&#x7684;&#x6570;&#x5b57;&#xa;qdzname &#x3d; qdzname.replace&#x28;&#x2f;&#x28;&#x5c;d&#x2b;&#x24;&#x29;&#x2f;g,&#x27;&#x27;&#x29;&#x3b;&#xa;if &#x28;qdzname &#x21;&#x3d; &#x22;&#x51fa;&#x573a;&#x22; &#x26;&#x26; qdzname &#x21;&#x3d; &#x22;&#x8fdb;&#x573a;&#x22;&#x29; &#x7b;&#xa; qdzname &#x3d; qdzname &#x2b; &#x22;&#x25;&#x22;&#x3b; &#x2f;&#x2f; &#x6a21;&#x7cca;&#x5339;&#x914d;&#x6807;&#x8bc6;&#x7b26;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; sendtime&#x5904;&#x7406;&#xff0c;hhmm&#xff0c;hh&#x3a;mm&#xff0c;hh,mm&#xa;var sendtime_calcu&#x3b;&#xa;if &#x28;sendtime.length &#x3d;&#x3d; 5&#x29; &#x7b; &#x2f;&#x2f; &#x6700;&#x957f;&#x683c;&#x5f0f;&#xff0c;&#x5305;&#x62ec;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x7edf;&#x4e00;&#x628a;&#x5206;&#x9694;&#x7b26;&#x66ff;&#x6362;&#x6210;&#x5192;&#x53f7;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 2&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;3, 2&#x29;&#x3b;&#xa;&#x7d; else if &#x28;sendtime.length &#x3d;&#x3d; 4&#x29; &#x7b;&#xa; if &#x28;sendtime.indexOf&#x28;&#x22;&#x3a;&#x22;&#x29; &#x3e; 0&#x29; &#x7b; &#x2f;&#x2f; &#x5192;&#x53f7;&#x5206;&#x9694;&#xff0c;&#x65e0;&#x9700;&#x4fee;&#x6539;&#xa; sendtime_calcu &#x3d; sendtime&#x3b;&#xa; &#x7d; else if &#x28;sendtime.indexOf&#x28;&#x22;,&#x22;&#x29; &#x3e; 0&#x29; &#x7b; &#x2f;&#x2f; &#x9017;&#x53f7;&#x5206;&#x9694;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 1&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;2, 2&#x29;&#x3b;&#xa; &#x7d; else &#x7b; &#x2f;&#x2f; &#x65e0;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 2&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;2, 2&#x29;&#x3b;&#xa; &#x7d;&#xa;&#x7d; else if &#x28;sendtime.length &#x3d;&#x3d; 3&#x29; &#x7b; &#x2f;&#x2f; &#x65e0;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 1&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;1, 2&#x29;&#x3b;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x5168;&#x90e8;&#x4fee;&#x6b63;&#x5b8c;&#x6bd5;&#x540e;&#xff0c;&#x5982;&#x679c;&#x957f;&#x5ea6;&#x4e0d;&#x662f;5&#xff0c;&#x524d;&#x9762;&#x8865;0&#xa;if &#x28;sendtime_calcu.length &#x21;&#x3d; 5&#x29; &#x7b;&#xa; sendtime_calcu &#x3d; &#x22;0&#x22; &#x2b; sendtime_calcu&#x3b;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;&#x5206;&#x73ed;&#xa;var isfb &#x3d; 0&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;&#x505c;&#x9a76;&#xa;var ists &#x3d; 0&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;isCanceled&#xa;var iscanceled &#x3d; 0&#x3b;</jsScript_script>
832 </jsScript> </jsScripts> <fields> <field> <name>qdzname</name> 832 </jsScript> </jsScripts> <fields> <field> <name>qdzname</name>
833 <rename>qdzname</rename> 833 <rename>qdzname</rename>
834 <type>String</type> 834 <type>String</type>
@@ -1076,7 +1076,7 @@ @@ -1076,7 +1076,7 @@
1076 </value> 1076 </value>
1077 <value> 1077 <value>
1078 <name>qdz_name</name> 1078 <name>qdz_name</name>
1079 - <rename>qdzname</rename> 1079 + <rename>qdzname_</rename>
1080 <update>Y</update> 1080 <update>Y</update>
1081 </value> 1081 </value>
1082 <value> 1082 <value>
@@ -1232,7 +1232,7 @@ @@ -1232,7 +1232,7 @@
1232 </value> 1232 </value>
1233 <value> 1233 <value>
1234 <name>zdz_name</name> 1234 <name>zdz_name</name>
1235 - <rename>zdzname</rename> 1235 + <rename>zdzname_</rename>
1236 <update>Y</update> 1236 <update>Y</update>
1237 </value> 1237 </value>
1238 <value> 1238 <value>
@@ -1601,7 +1601,7 @@ @@ -1601,7 +1601,7 @@
1601 <key> 1601 <key>
1602 <name>zdzname</name> 1602 <name>zdzname</name>
1603 <field>station_name</field> 1603 <field>station_name</field>
1604 - <condition>&#x3d;</condition> 1604 + <condition>LIKE</condition>
1605 <name2/> 1605 <name2/>
1606 </key> 1606 </key>
1607 <key> 1607 <key>
@@ -1634,6 +1634,12 @@ @@ -1634,6 +1634,12 @@
1634 <default/> 1634 <default/>
1635 <type>String</type> 1635 <type>String</type>
1636 </value> 1636 </value>
  1637 + <value>
  1638 + <name>station_name</name>
  1639 + <rename>zdzname_</rename>
  1640 + <default/>
  1641 + <type>String</type>
  1642 + </value>
1637 </lookup> 1643 </lookup>
1638 <cluster_schema/> 1644 <cluster_schema/>
1639 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1645 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
@@ -2075,7 +2081,7 @@ @@ -2075,7 +2081,7 @@
2075 <key> 2081 <key>
2076 <name>qdzname</name> 2082 <name>qdzname</name>
2077 <field>station_name</field> 2083 <field>station_name</field>
2078 - <condition>&#x3d;</condition> 2084 + <condition>LIKE</condition>
2079 <name2/> 2085 <name2/>
2080 </key> 2086 </key>
2081 <key> 2087 <key>
@@ -2108,6 +2114,12 @@ @@ -2108,6 +2114,12 @@
2108 <default/> 2114 <default/>
2109 <type>String</type> 2115 <type>String</type>
2110 </value> 2116 </value>
  2117 + <value>
  2118 + <name>station_name</name>
  2119 + <rename>qdzname_</rename>
  2120 + <default/>
  2121 + <type>String</type>
  2122 + </value>
2111 </lookup> 2123 </lookup>
2112 <cluster_schema/> 2124 <cluster_schema/>
2113 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 2125 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
@@ -2207,7 +2219,7 @@ @@ -2207,7 +2219,7 @@
2207 <key> 2219 <key>
2208 <name>qdzname_calcu</name> 2220 <name>qdzname_calcu</name>
2209 <field>station_name</field> 2221 <field>station_name</field>
2210 - <condition>&#x3d;</condition> 2222 + <condition>LIKE</condition>
2211 <name2/> 2223 <name2/>
2212 </key> 2224 </key>
2213 <key> 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 </style> 11 </style>
12 <!-- 片段标题 START --> 12 <!-- 片段标题 START -->
13 <div class="page-head"> 13 <div class="page-head">
@@ -20,6 +20,10 @@ @@ -20,6 +20,10 @@
20 <ul class="page-breadcrumb breadcrumb"> 20 <ul class="page-breadcrumb breadcrumb">
21 <li><a href="/pages/home.html" data-pjax>首页</a> <i class="fa fa-circle"></i></li> 21 <li><a href="/pages/home.html" data-pjax>首页</a> <i class="fa fa-circle"></i></li>
22 <li><span class="active">运营计划管理</span> <i class="fa fa-circle"></i></li> 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 <li><span class="active">时刻表明细制作建模</span></li> 27 <li><span class="active">时刻表明细制作建模</span></li>
24 </ul> 28 </ul>
25 <!-- 线路信息导航栏组件 END --> 29 <!-- 线路信息导航栏组件 END -->
@@ -32,9 +36,9 @@ @@ -32,9 +36,9 @@
32 </span> 36 </span>
33 </div> 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 </div> 42 </div>
39 <div class="btn-group btn-group-devided" data-toggle="buttons"> 43 <div class="btn-group btn-group-devided" data-toggle="buttons">
40 <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> 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,7 +176,7 @@
172 </form> 176 </form>
173 <!-- END FORM--> 177 <!-- END FORM-->
174 </div> 178 </div>
175 -</div> 179 +</div>
176 <script src="/pages/base/timesmodel/js/add-form-wizard.js"></script> 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 <script src="/pages/base/timesmodel/js/tagsinput.js"></script> 182 <script src="/pages/base/timesmodel/js/tagsinput.js"></script>
179 \ No newline at end of file 183 \ No newline at end of file
src/main/resources/static/pages/base/timesmodel/gantt.html
@@ -13,6 +13,10 @@ @@ -13,6 +13,10 @@
13 <ul class="page-breadcrumb breadcrumb"> 13 <ul class="page-breadcrumb breadcrumb">
14 <li><a href="/pages/home.html" data-pjax>首页</a> <i class="fa fa-circle"></i></li> 14 <li><a href="/pages/home.html" data-pjax>首页</a> <i class="fa fa-circle"></i></li>
15 <li><span class="active">运营计划管理</span> <i class="fa fa-circle"></i></li> 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 <li><span class="active">时刻表明细模型</span></li> 20 <li><span class="active">时刻表明细模型</span></li>
17 </ul> 21 </ul>
18 <!-- 线路信息导航栏组件 END --> 22 <!-- 线路信息导航栏组件 END -->
src/main/resources/static/pages/base/timesmodel/js/base-fun.js
@@ -824,10 +824,12 @@ var BaseFun = function() { @@ -824,10 +824,12 @@ var BaseFun = function() {
824 var tempA = baseF.abstractCar(list , markArray , cara , saa , dataMap , map); 824 var tempA = baseF.abstractCar(list , markArray , cara , saa , dataMap , map);
825 // return {'json':tempA,'bxrcgs':null}; 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 baseF.resizeByPitStopTime(cara , tempA , dataMap); 830 baseF.resizeByPitStopTime(cara , tempA , dataMap);
829 baseF.updfcno01(tempA,0); 831 baseF.updfcno01(tempA,0);
830 - // return {'json':tempA,'bxrcgs':null}; 832 + //return {'json':tempA,'bxrcgs':null};
831 // 确定进出场、早晚例保时间.并返回班次数组集合 833 // 确定进出场、早晚例保时间.并返回班次数组集合
832 return {'json':baseF.addInOutFieldBc(cara,tempA,dataMap,saa,map),'bxrcgs':null}; 834 return {'json':baseF.addInOutFieldBc(cara,tempA,dataMap,saa,map),'bxrcgs':null};
833 }, 835 },
@@ -862,22 +864,25 @@ var BaseFun = function() { @@ -862,22 +864,25 @@ var BaseFun = function() {
862 var canCf = new Array(), countTzsj = 0, isLast = new Array(); 864 var canCf = new Array(), countTzsj = 0, isLast = new Array();
863 for(var b = 0 ; b<bcArray.length;b++) { 865 for(var b = 0 ; b<bcArray.length;b++) {
864 var bcddsj = baseF.getDateTime(bcArray[b].ARRIVALTIME); 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 countTzsj += bcArray[b].STOPTIME; 872 countTzsj += bcArray[b].STOPTIME;
867 canCf.push(bcArray[b]); 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 if(canCf.length>0) { 878 if(canCf.length>0) {
877 console.log('countTzsj:' + countTzsj + 'length:' + canCf.length); 879 console.log('countTzsj:' + countTzsj + 'length:' + canCf.length);
878 var fxDm = baseF.dirDmToIndex(canCf[canCf.length-1].xlDir); 880 var fxDm = baseF.dirDmToIndex(canCf[canCf.length-1].xlDir);
  881 + if (map.cfdd == "allYes") { // NEW,如果选择的吃饭地点是所有,则使用班次的方向作为吃饭班次的方向
  882 + cfddDm = fxDm;
  883 + }
879 // console.log(countTzsj , canCf[canCf.length-1].fcsj); 884 // console.log(countTzsj , canCf[canCf.length-1].fcsj);
880 - if(cfddDm == fxDm && canCf.length>2) { 885 + if(canCf.length>2) {
881 var tzdx = canCf[canCf.length-2].STOPTIME - dataMap.zwcArr[cfIndex]; 886 var tzdx = canCf[canCf.length-2].STOPTIME - dataMap.zwcArr[cfIndex];
882 canCf[canCf.length-2].STOPTIME = tzdx >= 0 ? tzdx : 0; 887 canCf[canCf.length-2].STOPTIME = tzdx >= 0 ? tzdx : 0;
883 var obj = baseF.getbcObj( 888 var obj = baseF.getbcObj(
src/main/resources/static/pages/forms/statement/lineTimeAnaly.html
@@ -87,14 +87,15 @@ @@ -87,14 +87,15 @@
87 <table class="table table-bordered table-hover table-checkable" id="forms"> 87 <table class="table table-bordered table-hover table-checkable" id="forms">
88 <thead> 88 <thead>
89 <tr class="hidden"> 89 <tr class="hidden">
90 - <th >公司</th> 90 +<!-- <th >公司</th> -->
91 <th width="30%">日期分段</th> 91 <th width="30%">日期分段</th>
92 - <th >时段</th> 92 + <th>时段</th>
93 <th width="20%">线路</th> 93 <th width="20%">线路</th>
94 - <th >路牌</th> 94 + <th>路牌</th>
95 <th width="20%">站点</th> 95 <th width="20%">站点</th>
96 - <th >计划发车班次数</th>  
97 - <th>实际完成班次数</th> 96 + <th>班次数</th>
  97 +<!-- <th>计划发车班次数</th> -->
  98 +<!-- <th>实际完成班次数</th> -->
98 </tr> 99 </tr>
99 </thead> 100 </thead>
100 <tbody> 101 <tbody>
@@ -120,10 +121,11 @@ @@ -120,10 +121,11 @@
120 <tr class="hidden"> 121 <tr class="hidden">
121 <th rowspan="2">日期</th> 122 <th rowspan="2">日期</th>
122 <th colspan="4">到达时间</th> 123 <th colspan="4">到达时间</th>
  124 + <th rowspan="2">误点分钟</th>
123 <th colspan="4">发车时间</th> 125 <th colspan="4">发车时间</th>
124 <th rowspan="2">误点分钟</th> 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 </tr> 129 </tr>
128 <tr class="hidden"> 130 <tr class="hidden">
129 <th>计划</th> 131 <th>计划</th>
@@ -136,13 +138,13 @@ @@ -136,13 +138,13 @@
136 <th>平均延误</th> 138 <th>平均延误</th>
137 <th>计划</th> 139 <th>计划</th>
138 <th>实际</th> 140 <th>实际</th>
139 - <th>最快</th>  
140 - <th>最慢</th> 141 +<!-- <th>最快</th> -->
  142 +<!-- <th>最慢</th> -->
141 <th>平均</th> 143 <th>平均</th>
142 <th>计划</th> 144 <th>计划</th>
143 <th>实际</th> 145 <th>实际</th>
144 - <th>最大</th>  
145 - <th>最小</th> 146 +<!-- <th>最大</th> -->
  147 +<!-- <th>最小</th> -->
146 <th>平均</th> 148 <th>平均</th>
147 </tr> 149 </tr>
148 </thead> 150 </thead>
@@ -406,7 +408,7 @@ @@ -406,7 +408,7 @@
406 } 408 }
407 }); 409 });
408 $.each(list, function(i, g){ 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 var tbodyHtml = template('list_workList',{list:g}); 412 var tbodyHtml = template('list_workList',{list:g});
411 $('#works tbody').html(tbodyHtml); 413 $('#works tbody').html(tbodyHtml);
412 $("#works_hidden").removeClass("hidden"); 414 $("#works_hidden").removeClass("hidden");
@@ -483,14 +485,12 @@ @@ -483,14 +485,12 @@
483 <script type="text/html" id="list_lineTimeAnaly"> 485 <script type="text/html" id="list_lineTimeAnaly">
484 {{each list as obj i}} 486 {{each list as obj i}}
485 <tr> 487 <tr>
486 - <td>{{obj.company}}</td>  
487 <td>{{obj.dates}}</td> 488 <td>{{obj.dates}}</td>
488 <td>{{obj.times}}</td> 489 <td>{{obj.times}}</td>
489 <td>{{obj.line}}</td> 490 <td>{{obj.line}}</td>
490 <td>{{obj.lp}}</td> 491 <td>{{obj.lp}}</td>
491 <td>{{obj.station}}</td> 492 <td>{{obj.station}}</td>
492 - <td>{{obj.jhbc}}</td>  
493 - <td>{{obj.sjbc}}</td> 493 + <td>{{obj.bcs}}</td>
494 </tr> 494 </tr>
495 {{/each}} 495 {{/each}}
496 {{if list.length == 0}} 496 {{if list.length == 0}}
@@ -503,30 +503,27 @@ @@ -503,30 +503,27 @@
503 {{each list.workList as obj i}} 503 {{each list.workList as obj i}}
504 <tr> 504 <tr>
505 <td>{{obj.date}}</td> 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 {{if i == 0}} 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 {{/if}} 511 {{/if}}
  512 + <td class="merge">{{obj.ddwd}}</td>
512 <td>{{obj.jhfc}}</td> 513 <td>{{obj.jhfc}}</td>
513 <td>{{obj.sjfc}}</td> 514 <td>{{obj.sjfc}}</td>
514 {{if i == 0}} 515 {{if i == 0}}
515 <td rowspan="{{list.workList.length}}" class="merge">{{list.wdfc1}}</td> 516 <td rowspan="{{list.workList.length}}" class="merge">{{list.wdfc1}}</td>
516 <td rowspan="{{list.workList.length}}" class="merge">{{list.wdfc2}}</td> 517 <td rowspan="{{list.workList.length}}" class="merge">{{list.wdfc2}}</td>
517 {{/if}} 518 {{/if}}
518 - <td class="merge">{{obj.wdfz}}</td> 519 + <td class="merge">{{obj.fcwd}}</td>
519 <td>{{obj.jhys}}</td> 520 <td>{{obj.jhys}}</td>
520 <td>{{obj.sjys}}</td> 521 <td>{{obj.sjys}}</td>
521 - <td>{{obj.yssjMin}}</td>  
522 - <td>{{obj.yssjMax}}</td>  
523 {{if i == 0}} 522 {{if i == 0}}
524 <td rowspan="{{list.workList.length}}" class="merge">{{list.pjys}}</td> 523 <td rowspan="{{list.workList.length}}" class="merge">{{list.pjys}}</td>
525 {{/if}} 524 {{/if}}
526 <td>{{obj.jhtz}}</td> 525 <td>{{obj.jhtz}}</td>
527 <td>{{obj.sjtz}}</td> 526 <td>{{obj.sjtz}}</td>
528 - <td>{{obj.tzsjMax}}</td>  
529 - <td>{{obj.tzsjMin}}</td>  
530 {{if i == 0}} 527 {{if i == 0}}
531 <td rowspan="{{list.workList.length}}" class="merge">{{list.pjtz}}</td> 528 <td rowspan="{{list.workList.length}}" class="merge">{{list.pjtz}}</td>
532 {{/if}} 529 {{/if}}
src/main/resources/static/real_control_v2/css/line_schedule.css
@@ -44,6 +44,7 @@ @@ -44,6 +44,7 @@
44 44
45 .line_schedule .ct_table { 45 .line_schedule .ct_table {
46 padding-top: 36px; 46 padding-top: 36px;
  47 + color: #000;
47 } 48 }
48 49
49 .line_schedule .ct_table>.ct_table_head { 50 .line_schedule .ct_table>.ct_table_head {
src/main/resources/static/real_control_v2/css/north.css
@@ -358,7 +358,7 @@ @@ -358,7 +358,7 @@
358 358
359 .op-beijingtime-time{ 359 .op-beijingtime-time{
360 padding-left: 0px; 360 padding-left: 0px;
361 - width: 107px; 361 + width: 109px;
362 } 362 }
363 363
364 .op-beijingtime-time>span{ 364 .op-beijingtime-time>span{