Commit d537398eb0521b8537e3c1fa9cb6d2224a5e4491

Authored by 潘钊
2 parents a119a6f9 36430cc8

Merge branch 'minhang' into pudong

Showing 32 changed files with 3555 additions and 413 deletions

Too many changes to show.

To preserve performance only 32 of 35 files are displayed.

src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
@@ -549,9 +549,9 @@ public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo, @@ -549,9 +549,9 @@ public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo,
549 public List<String> dateArray(@RequestParam(defaultValue = "0") int c){ 549 public List<String> dateArray(@RequestParam(defaultValue = "0") int c){
550 List<String> rs = new ArrayList<>(); 550 List<String> rs = new ArrayList<>();
551 551
552 - long t = new Date().getTime(); 552 + long t = System.currentTimeMillis();
553 if(c != 1) 553 if(c != 1)
554 - t -= ONE_DAY - (1000 * 60 * 60 * 2); 554 + t -= (ONE_DAY + (1000 * 60 * 60 * 2));
555 for(int i = 0; i < 3; i ++){ 555 for(int i = 0; i < 3; i ++){
556 rs.add(fmtyyyyMMdd.print(t)); 556 rs.add(fmtyyyyMMdd.print(t));
557 t -= ONE_DAY; 557 t -= ONE_DAY;
src/main/java/com/bsth/data/gpsdata/arrival/GpsRealAnalyse.java
@@ -41,7 +41,7 @@ public class GpsRealAnalyse { @@ -41,7 +41,7 @@ public class GpsRealAnalyse {
41 @Autowired 41 @Autowired
42 GpsRealData gpsRealData; 42 GpsRealData gpsRealData;
43 43
44 - final static int POOL_SIZE = 15; 44 + final static int POOL_SIZE = 30;
45 static ExecutorService threadPool = Executors.newFixedThreadPool(POOL_SIZE + 1); 45 static ExecutorService threadPool = Executors.newFixedThreadPool(POOL_SIZE + 1);
46 46
47 public static long st; 47 public static long st;
@@ -68,7 +68,7 @@ public class GpsRealAnalyse { @@ -68,7 +68,7 @@ public class GpsRealAnalyse {
68 } 68 }
69 List<String> deviceList = new ArrayList<>(multimap.keySet()); 69 List<String> deviceList = new ArrayList<>(multimap.keySet());
70 70
71 - //数据均分给20个线程 71 + //数据均分给线程
72 ArrayListMultimap dataListMap = ArrayListMultimap.create(); 72 ArrayListMultimap dataListMap = ArrayListMultimap.create();
73 int size = deviceList.size(), threadIndex=0, threadSize = size / POOL_SIZE; 73 int size = deviceList.size(), threadIndex=0, threadSize = size / POOL_SIZE;
74 for(int i = 0; i < size; i++){ 74 for(int i = 0; i < size; i++){
src/main/java/com/bsth/data/gpsdata/arrival/handlers/InOutStationSignalHandle.java
@@ -70,14 +70,18 @@ public class InOutStationSignalHandle extends SignalHandle{ @@ -70,14 +70,18 @@ public class InOutStationSignalHandle extends SignalHandle{
70 return false; 70 return false;
71 } 71 }
72 72
73 - if(isNotEmpty(prevs)){  
74 - GpsEntity prev = prevs.getTail();  
75 - if(isOutStation(gps, prev))  
76 - outStation(gps, prev); 73 + try{
  74 + if(isNotEmpty(prevs)){
  75 + GpsEntity prev = prevs.getTail();
  76 + if(isOutStation(gps, prev))
  77 + outStation(gps, prev);
77 78
78 79
79 - if(isInStation(gps, prev))  
80 - inStation(gps, prev); 80 + if(isInStation(gps, prev))
  81 + inStation(gps, prev);
  82 + }
  83 + }catch (Exception e){
  84 + logger.error("in out error info ..", e);
81 } 85 }
82 86
83 return true; 87 return true;
src/main/java/com/bsth/data/summary/entity/FastAndSlow.java
@@ -21,6 +21,22 @@ public class FastAndSlow { @@ -21,6 +21,22 @@ public class FastAndSlow {
21 private Long id; 21 private Long id;
22 22
23 /** 23 /**
  24 + * 驾驶员
  25 + */
  26 + private String jsy;
  27 +
  28 + /**
  29 + * 车辆自编号
  30 + */
  31 + private String nbbm;
  32 +
  33 + /**
  34 + * 路牌名称
  35 + */
  36 + @Column(name = "lp_name")
  37 + private String lpName;
  38 +
  39 + /**
24 * 发车站点 40 * 发车站点
25 */ 41 */
26 private String stationName; 42 private String stationName;
@@ -281,4 +297,28 @@ public class FastAndSlow { @@ -281,4 +297,28 @@ public class FastAndSlow {
281 public boolean isFast() { 297 public boolean isFast() {
282 return this.fcsjFast>0 || this.dfsjFast>0 || this.zdsjFast>0 || this.zdsjDfFast>0; 298 return this.fcsjFast>0 || this.dfsjFast>0 || this.zdsjFast>0 || this.zdsjDfFast>0;
283 } 299 }
  300 +
  301 + public String getLpName() {
  302 + return lpName;
  303 + }
  304 +
  305 + public void setLpName(String lpName) {
  306 + this.lpName = lpName;
  307 + }
  308 +
  309 + public String getNbbm() {
  310 + return nbbm;
  311 + }
  312 +
  313 + public void setNbbm(String nbbm) {
  314 + this.nbbm = nbbm;
  315 + }
  316 +
  317 + public String getJsy() {
  318 + return jsy;
  319 + }
  320 +
  321 + public void setJsy(String jsy) {
  322 + this.jsy = jsy;
  323 + }
284 } 324 }
285 \ No newline at end of file 325 \ No newline at end of file
src/main/java/com/bsth/data/summary/service/impl/FastAndSlowServiceImpl.java
@@ -119,29 +119,33 @@ public class FastAndSlowServiceImpl extends BaseServiceImpl&lt;FastAndSlow, Long&gt; i @@ -119,29 +119,33 @@ public class FastAndSlowServiceImpl extends BaseServiceImpl&lt;FastAndSlow, Long&gt; i
119 //前4行是表头 119 //前4行是表头
120 Row row; 120 Row row;
121 row = sheet.getRow(0); 121 row = sheet.getRow(0);
122 - row.getCell(4).setCellValue(list.get(0).getRq()); 122 + row.getCell(0).setCellValue(list.get(0).getRq());
123 row.getCell(13).setCellValue(BasicData.lineCode2NameMap.get(list.get(0).getLineCode())); 123 row.getCell(13).setCellValue(BasicData.lineCode2NameMap.get(list.get(0).getLineCode()));
124 FastAndSlow fas; 124 FastAndSlow fas;
125 for(int i = 0; i < list.size(); i++){ 125 for(int i = 0; i < list.size(); i++){
126 fas = list.get(i); 126 fas = list.get(i);
127 row = sheet.createRow(i + 4); 127 row = sheet.createRow(i + 4);
128 row.createCell(0).setCellValue(i + 1); 128 row.createCell(0).setCellValue(i + 1);
129 - row.createCell(1).setCellValue(fas.getStationName());  
130 - row.createCell(2).setCellValue(fas.getUpDown());  
131 - row.createCell(3).setCellValue(fas.getFcsj());  
132 - row.createCell(4).setCellValue(fas.getDfsj());  
133 - row.createCell(5).setCellValue(fas.getFcsjActual());  
134 - row.createCell(6).setCellValue(fas.getFcsjFast());  
135 - row.createCell(7).setCellValue(fas.getFcsjSlow());  
136 - row.createCell(8).setCellValue(fas.getDfsjFast());  
137 - row.createCell(9).setCellValue(fas.getDfsjSlow());  
138 - row.createCell(10).setCellValue(fas.getZdsj());  
139 - row.createCell(11).setCellValue(fas.getZdsjDf());  
140 - row.createCell(12).setCellValue(fas.getZdsjActual());  
141 - row.createCell(13).setCellValue(fas.getZdsjFast());  
142 - row.createCell(14).setCellValue(fas.getZdsjSlow());  
143 - row.createCell(15).setCellValue(fas.getZdsjDfFast());  
144 - row.createCell(16).setCellValue(fas.getZdsjDfSlow()); 129 + row.createCell(1).setCellValue(fas.getLpName());
  130 + row.createCell(2).setCellValue(fas.getNbbm());
  131 + row.createCell(3).setCellValue(fas.getJsy());
  132 +
  133 + row.createCell(4).setCellValue(fas.getStationName());
  134 + row.createCell(5).setCellValue(fas.getUpDown());
  135 + row.createCell(6).setCellValue(fas.getFcsj());
  136 + row.createCell(7).setCellValue(fas.getDfsj());
  137 + row.createCell(8).setCellValue(fas.getFcsjActual());
  138 + row.createCell(9).setCellValue(fas.getFcsjFast());
  139 + row.createCell(10).setCellValue(fas.getFcsjSlow());
  140 + row.createCell(11).setCellValue(fas.getDfsjFast());
  141 + row.createCell(12).setCellValue(fas.getDfsjSlow());
  142 + row.createCell(13).setCellValue(fas.getZdsj());
  143 + row.createCell(14).setCellValue(fas.getZdsjDf());
  144 + row.createCell(15).setCellValue(fas.getZdsjActual());
  145 + row.createCell(16).setCellValue(fas.getZdsjFast());
  146 + row.createCell(17).setCellValue(fas.getZdsjSlow());
  147 + row.createCell(18).setCellValue(fas.getZdsjDfFast());
  148 + row.createCell(19).setCellValue(fas.getZdsjDfSlow());
145 149
146 if(fas.getUpDown()==0) 150 if(fas.getUpDown()==0)
147 ups.add(fas); 151 ups.add(fas);
@@ -151,28 +155,28 @@ public class FastAndSlowServiceImpl extends BaseServiceImpl&lt;FastAndSlow, Long&gt; i @@ -151,28 +155,28 @@ public class FastAndSlowServiceImpl extends BaseServiceImpl&lt;FastAndSlow, Long&gt; i
151 //合计 155 //合计
152 int size = list.size(); 156 int size = list.size();
153 row = sheet.createRow(size + 4); 157 row = sheet.createRow(size + 4);
154 - row.createCell(1).setCellValue("发车:上行(计划快误点:"+jhfcFast(ups)+" 累计时间:"+jhfcFastTime(ups)+" 待发快误点:"+dffcFast(ups)+" 累计时间:"+dffcFastTime(ups)+") ");  
155 - row.createCell(9).setCellValue("下行(计划快误点:"+jhfcFast(downs)+" 累计时间:"+jhfcFastTime(downs)+" 待发快误点:"+dffcFast(downs)+" 累计时间:"+dffcFastTime(downs)+")"); 158 + row.createCell(2).setCellValue("发车:上行(计划快误点:"+jhfcFast(ups)+" 累计时间:"+jhfcFastTime(ups)+" 待发快误点:"+dffcFast(ups)+" 累计时间:"+dffcFastTime(ups)+") ");
  159 + row.createCell(12).setCellValue("下行(计划快误点:"+jhfcFast(downs)+" 累计时间:"+jhfcFastTime(downs)+" 待发快误点:"+dffcFast(downs)+" 累计时间:"+dffcFastTime(downs)+")");
156 row = sheet.createRow(size + 5); 160 row = sheet.createRow(size + 5);
157 - row.createCell(1).setCellValue("发车:上行(计划慢误点:"+jhfcSlow(ups)+" 累计时间:"+jhfcSlowTime(ups)+" 待发慢误点:"+dffcSlow(ups)+" 累计时间:"+dffcSlowTime(ups)+") ");  
158 - row.createCell(9).setCellValue("下行(计划慢误点:"+jhfcSlow(downs)+" 累计时间:"+jhfcSlowTime(downs)+" 待发慢误点:"+dffcSlow(downs)+" 累计时间:"+dffcSlowTime(downs)+")"); 161 + row.createCell(2).setCellValue("发车:上行(计划慢误点:"+jhfcSlow(ups)+" 累计时间:"+jhfcSlowTime(ups)+" 待发慢误点:"+dffcSlow(ups)+" 累计时间:"+dffcSlowTime(ups)+") ");
  162 + row.createCell(12).setCellValue("下行(计划慢误点:"+jhfcSlow(downs)+" 累计时间:"+jhfcSlowTime(downs)+" 待发慢误点:"+dffcSlow(downs)+" 累计时间:"+dffcSlowTime(downs)+")");
159 row = sheet.createRow(size + 6); 163 row = sheet.createRow(size + 6);
160 - row.createCell(1).setCellValue("到达:上行(计划快误点:"+jhzdFast(ups)+" 累计时间:"+jhzdFastTime(ups)+" 待发快误点:"+dfzdFast(ups)+" 累计时间:"+dfzdFastTime(ups)+") ");  
161 - row.createCell(9).setCellValue("下行(计划快误点:"+jhzdFast(downs)+" 累计时间:"+jhzdFastTime(downs)+" 待发快误点:"+dfzdFast(downs)+" 累计时间:"+dfzdFastTime(downs)+")"); 164 + row.createCell(2).setCellValue("到达:上行(计划快误点:"+jhzdFast(ups)+" 累计时间:"+jhzdFastTime(ups)+" 待发快误点:"+dfzdFast(ups)+" 累计时间:"+dfzdFastTime(ups)+") ");
  165 + row.createCell(12).setCellValue("下行(计划快误点:"+jhzdFast(downs)+" 累计时间:"+jhzdFastTime(downs)+" 待发快误点:"+dfzdFast(downs)+" 累计时间:"+dfzdFastTime(downs)+")");
162 row = sheet.createRow(size + 7); 166 row = sheet.createRow(size + 7);
163 - row.createCell(1).setCellValue("到达:上行(计划慢误点:"+jhzdSlow(ups)+" 累计时间:"+jhzdSlowTime(ups)+" 待发慢误点:"+dfzdSlow(ups)+" 累计时间:"+dfzdSlowTime(ups)+") ");  
164 - row.createCell(9).setCellValue("下行(计划慢误点:"+jhzdSlow(downs)+" 累计时间:"+jhzdSlowTime(downs)+" 待发慢误点:"+dfzdSlow(downs)+" 累计时间:"+dfzdSlowTime(downs)+")"); 167 + row.createCell(2).setCellValue("到达:上行(计划慢误点:"+jhzdSlow(ups)+" 累计时间:"+jhzdSlowTime(ups)+" 待发慢误点:"+dfzdSlow(ups)+" 累计时间:"+dfzdSlowTime(ups)+") ");
  168 + row.createCell(12).setCellValue("下行(计划慢误点:"+jhzdSlow(downs)+" 累计时间:"+jhzdSlowTime(downs)+" 待发慢误点:"+dfzdSlow(downs)+" 累计时间:"+dfzdSlowTime(downs)+")");
165 //合并单元格 169 //合并单元格
166 - sheet.addMergedRegion(new CellRangeAddress(size + 4, size + 4, 1, 8));  
167 - sheet.addMergedRegion(new CellRangeAddress(size + 4, size + 4, 9, 16));  
168 - sheet.addMergedRegion(new CellRangeAddress(size + 5, size + 5, 1, 8));  
169 - sheet.addMergedRegion(new CellRangeAddress(size + 5, size + 5, 9, 16));  
170 - sheet.addMergedRegion(new CellRangeAddress(size + 6, size + 6, 1, 8));  
171 - sheet.addMergedRegion(new CellRangeAddress(size + 6, size + 6, 9, 16));  
172 - sheet.addMergedRegion(new CellRangeAddress(size + 7, size + 7, 1, 8));  
173 - sheet.addMergedRegion(new CellRangeAddress(size + 7, size + 7, 9, 16));  
174 -  
175 - sheet.addMergedRegion(new CellRangeAddress(size + 4, size + 7, 0, 0)); 170 + sheet.addMergedRegion(new CellRangeAddress(size + 4, size + 4, 2, 11));
  171 + sheet.addMergedRegion(new CellRangeAddress(size + 4, size + 4, 12, 19));
  172 + sheet.addMergedRegion(new CellRangeAddress(size + 5, size + 5, 2, 11));
  173 + sheet.addMergedRegion(new CellRangeAddress(size + 5, size + 5, 12, 19));
  174 + sheet.addMergedRegion(new CellRangeAddress(size + 6, size + 6, 2, 11));
  175 + sheet.addMergedRegion(new CellRangeAddress(size + 6, size + 6, 12, 19));
  176 + sheet.addMergedRegion(new CellRangeAddress(size + 7, size + 7, 2, 11));
  177 + sheet.addMergedRegion(new CellRangeAddress(size + 7, size + 7, 12, 19));
  178 +
  179 + sheet.addMergedRegion(new CellRangeAddress(size + 4, size + 7, 0, 1));
176 } 180 }
177 181
178 private List<FastAndSlow> filterByType(List<FastAndSlow> all, String type) { 182 private List<FastAndSlow> filterByType(List<FastAndSlow> all, String type) {
src/main/java/com/bsth/entity/realcontrol/ChildTaskPlan.java
@@ -35,6 +35,7 @@ public class ChildTaskPlan { @@ -35,6 +35,7 @@ public class ChildTaskPlan {
35 35
36 /** 36 /**
37 * 任务类型2 37 * 任务类型2
  38 + * 1 正常 2 进场 3 出场
38 */ 39 */
39 private String type2; 40 private String type2;
40 41
@@ -99,6 +100,11 @@ public class ChildTaskPlan { @@ -99,6 +100,11 @@ public class ChildTaskPlan {
99 private String nbbm; 100 private String nbbm;
100 101
101 /** 102 /**
  103 + * 中途换车营运, 新车关联的主任务ID,子任务删除时,主任务ID将级联
  104 + */
  105 + private Long ccId;
  106 +
  107 + /**
102 * 为true 则无售票员, 否则继承主任务 108 * 为true 则无售票员, 否则继承主任务
103 */ 109 */
104 private boolean noClerk; 110 private boolean noClerk;
@@ -277,4 +283,12 @@ public class ChildTaskPlan { @@ -277,4 +283,12 @@ public class ChildTaskPlan {
277 public void setNoClerk(boolean noClerk) { 283 public void setNoClerk(boolean noClerk) {
278 this.noClerk = noClerk; 284 this.noClerk = noClerk;
279 } 285 }
  286 +
  287 + public Long getCcId() {
  288 + return ccId;
  289 + }
  290 +
  291 + public void setCcId(Long ccId) {
  292 + this.ccId = ccId;
  293 + }
280 } 294 }
src/main/java/com/bsth/entity/realcontrol/ScheduleRealInfo.java
@@ -225,6 +225,11 @@ public class ScheduleRealInfo { @@ -225,6 +225,11 @@ public class ScheduleRealInfo {
225 */ 225 */
226 private Integer driftStatus = 0; 226 private Integer driftStatus = 0;
227 227
  228 + /**
  229 + * 换车营运标记 true 表示该主任务由 【中途换车子任务】 级联生成
  230 + */
  231 + private boolean ccService;
  232 +
228 public boolean isDfAuto() { 233 public boolean isDfAuto() {
229 return dfAuto; 234 return dfAuto;
230 } 235 }
@@ -958,4 +963,12 @@ public class ScheduleRealInfo { @@ -958,4 +963,12 @@ public class ScheduleRealInfo {
958 public void setDriftStatus(Integer driftStatus) { 963 public void setDriftStatus(Integer driftStatus) {
959 this.driftStatus = driftStatus; 964 this.driftStatus = driftStatus;
960 } 965 }
  966 +
  967 + public boolean isCcService() {
  968 + return ccService;
  969 + }
  970 +
  971 + public void setCcService(boolean ccService) {
  972 + this.ccService = ccService;
  973 + }
961 } 974 }
src/main/java/com/bsth/repository/realcontrol/ScheduleRealInfoRepository.java
@@ -129,7 +129,7 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI @@ -129,7 +129,7 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI
129 int countByLineCodeAndDate(String xlBm, String schDate); 129 int countByLineCodeAndDate(String xlBm, String schDate);
130 130
131 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 131 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
132 - @Query(value = "select DISTINCT s from ScheduleRealInfo s where s.xlBm=?1 and s.scheduleDateStr=?2") 132 + @Query(value = "select DISTINCT s from ScheduleRealInfo s where s.xlBm=?1 and s.scheduleDateStr=?2 and ccService=false")
133 List<ScheduleRealInfo> findByLineCodeAndDate(String xlBm, String schDate); 133 List<ScheduleRealInfo> findByLineCodeAndDate(String xlBm, String schDate);
134 134
135 @Modifying 135 @Modifying
@@ -146,7 +146,14 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI @@ -146,7 +146,14 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI
146 @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm =?1 and s.scheduleDateStr = ?2 order by s.lpName, s.realExecDate,s.fcsj") 146 @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm =?1 and s.scheduleDateStr = ?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 - 149 + @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
  150 + @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm =?1 and s.scheduleDateStr = ?2 and s.ccService=false order by s.lpName, s.realExecDate,s.fcsj")
  151 + List<ScheduleRealInfo> scheduleDdrb(String line,String date);
  152 +
  153 + @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
  154 + @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm = ?1 and s.scheduleDateStr= ?2 and s.ccService=false order by s.xlDir,s.realExecDate,s.fcsj, s.lpName")
  155 + List<ScheduleRealInfo> scheduleDdrb2(String line,String date);
  156 +
150 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 157 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
151 @Query(value="select DISTINCT s from ScheduleRealInfo s where gsBm like %?1% and fgsBm like %?2% and s.scheduleDateStr = ?3 order by s.xlDir,s.realExecDate,s.fcsj, s.lpName") 158 @Query(value="select DISTINCT s from ScheduleRealInfo s where gsBm like %?1% and fgsBm like %?2% and s.scheduleDateStr = ?3 order by s.xlDir,s.realExecDate,s.fcsj, s.lpName")
152 List<ScheduleRealInfo> scheduleByDateAndLineByGs_(String gsdm,String fgsdm,String date); 159 List<ScheduleRealInfo> scheduleByDateAndLineByGs_(String gsdm,String fgsdm,String date);
@@ -170,7 +177,7 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI @@ -170,7 +177,7 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI
170 177
171 //按照时间段统计 178 //按照时间段统计
172 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 179 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
173 - @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm like %?1% and s.scheduleDateStr >= ?2 and s.scheduleDateStr<= ?3 and gsBm like %?4% and fgsBm like %?5% order by s.xlBm") 180 + @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm like %?1% and s.scheduleDateStr between ?2 and ?3 and gsBm = ?4 and fgsBm = ?5 order by s.xlBm")
174 List<ScheduleRealInfo> scheduleByDateAndLineTj(String line,String date,String date2,String gsdm,String fgsdm); 181 List<ScheduleRealInfo> scheduleByDateAndLineTj(String line,String date,String date2,String gsdm,String fgsdm);
175 182
176 //按照时间段统计 183 //按照时间段统计
src/main/java/com/bsth/service/forms/impl/FormsServiceImpl.java
@@ -744,7 +744,7 @@ public class FormsServiceImpl implements FormsService { @@ -744,7 +744,7 @@ public class FormsServiceImpl implements FormsService {
744 if(cts != null && cts.size() > 0){ 744 if(cts != null && cts.size() > 0){
745 newList_.add(s); 745 newList_.add(s);
746 }else{ 746 }else{
747 - if(s.getZdsjActual()!=null){ 747 + if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
748 newList_.add(s); 748 newList_.add(s);
749 } 749 }
750 } 750 }
@@ -798,7 +798,7 @@ public class FormsServiceImpl implements FormsService { @@ -798,7 +798,7 @@ public class FormsServiceImpl implements FormsService {
798 if(cts != null && cts.size() > 0){ 798 if(cts != null && cts.size() > 0){
799 newList_.add(s); 799 newList_.add(s);
800 }else{ 800 }else{
801 - if(s.getZdsjActual()!=null){ 801 + if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
802 newList_.add(s); 802 newList_.add(s);
803 } 803 }
804 } 804 }
@@ -884,7 +884,7 @@ public class FormsServiceImpl implements FormsService { @@ -884,7 +884,7 @@ public class FormsServiceImpl implements FormsService {
884 if(cts != null && cts.size() > 0){ 884 if(cts != null && cts.size() > 0){
885 newList_.add(s); 885 newList_.add(s);
886 }else{ 886 }else{
887 - if(s.getZdsjActual()!=null){ 887 + if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
888 newList_.add(s); 888 newList_.add(s);
889 } 889 }
890 } 890 }
@@ -1199,8 +1199,8 @@ public class FormsServiceImpl implements FormsService { @@ -1199,8 +1199,8 @@ public class FormsServiceImpl implements FormsService {
1199 1199
1200 String sql = "select gs_name, fgs_name, cl_zbh, fcsj, bc_type, xl_bm, xl_name, schedule_date" 1200 String sql = "select gs_name, fgs_name, cl_zbh, fcsj, bc_type, xl_bm, xl_name, schedule_date"
1201 + " from bsth_c_s_sp_info where gs_bm = '"+company+"' and fgs_bm = '"+subCompany+"' " 1201 + " from bsth_c_s_sp_info where gs_bm = '"+company+"' and fgs_bm = '"+subCompany+"' "
1202 - + "and schedule_date_str >= '"+startDate+"' "  
1203 - + "and schedule_date_str <= '"+endDate+"' "; 1202 + + "and DATE_FORMAT(schedule_date,'%Y-%m-%d') >= '"+startDate+"' "
  1203 + + "and DATE_FORMAT(schedule_date,'%Y-%m-%d') <= '"+endDate+"' ";
1204 if(line.trim().length() != 0){ 1204 if(line.trim().length() != 0){
1205 sql += "and xl_bm = '"+line+"' "; 1205 sql += "and xl_bm = '"+line+"' ";
1206 } 1206 }
@@ -1356,8 +1356,8 @@ public class FormsServiceImpl implements FormsService { @@ -1356,8 +1356,8 @@ public class FormsServiceImpl implements FormsService {
1356 1356
1357 String sql = " select b.xlgs, a.gs_bm,a.gs_name, a.fgs_bm,a.fgs_name , a.xl_bm,b.xl_name,b.sbc,b.sxl,b.scl,a.jbc ,a.jxl ,a.jcl,a.gslsbm,a.fgsbm,a.bc_type from " 1357 String sql = " select b.xlgs, a.gs_bm,a.gs_name, a.fgs_bm,a.fgs_name , a.xl_bm,b.xl_name,b.sbc,b.sxl,b.scl,a.jbc ,a.jxl ,a.jcl,a.gslsbm,a.fgsbm,a.bc_type from "
1358 + " (select count(DISTINCT gs_bm) gslsbm, gs_bm, count(DISTINCT fgs_bm) fgsbm,fgs_bm,gs_name,fgs_name ,xl_bm, count(*) as jbc,COUNT(DISTINCT xl_bm) as jxl ,COUNT(DISTINCT cl_zbh) as jcl,bc_type" 1358 + " (select count(DISTINCT gs_bm) gslsbm, gs_bm, count(DISTINCT fgs_bm) fgsbm,fgs_bm,gs_name,fgs_name ,xl_bm, count(*) as jbc,COUNT(DISTINCT xl_bm) as jxl ,COUNT(DISTINCT cl_zbh) as jcl,bc_type"
1359 - + " from bsth_c_s_sp_info" + " where schedule_date_str >= '"  
1360 - + map.get("startDate").toString() + "' and schedule_date_str <='" + map.get("endDate").toString() + "' and xl_bm='" 1359 + + " from bsth_c_s_sp_info" + " where DATE_FORMAT(schedule_date,'%Y-%m-%d') BETWEEN '"
  1360 + + map.get("startDate").toString() + "' and '" + map.get("endDate").toString() + "' and xl_bm='"
1361 + map.get("line").toString() + "' AND gs_bm is not null AND bc_type NOT IN ('in', 'out')" 1361 + map.get("line").toString() + "' AND gs_bm is not null AND bc_type NOT IN ('in', 'out')"
1362 + " and gs_bm='"+ map.get("gsdmEcecut").toString() + "'" 1362 + " and gs_bm='"+ map.get("gsdmEcecut").toString() + "'"
1363 + " and fgs_bm='"+ map.get("fgsdmEcecut").toString() + "'" 1363 + " and fgs_bm='"+ map.get("fgsdmEcecut").toString() + "'"
@@ -1440,8 +1440,8 @@ public class FormsServiceImpl implements FormsService { @@ -1440,8 +1440,8 @@ public class FormsServiceImpl implements FormsService {
1440 1440
1441 String sql = " select b.xlgs, a.gs_bm,a.gs_name, a.fgs_bm,a.fgs_name , a.xl_bm,b.xl_name,b.sbc,b.sxl,b.scl,a.jbc ,a.jxl ,a.jcl,a.gslsbm,a.fgsbm,a.bc_type from " 1441 String sql = " select b.xlgs, a.gs_bm,a.gs_name, a.fgs_bm,a.fgs_name , a.xl_bm,b.xl_name,b.sbc,b.sxl,b.scl,a.jbc ,a.jxl ,a.jcl,a.gslsbm,a.fgsbm,a.bc_type from "
1442 + " (select count(DISTINCT gs_bm) gslsbm, gs_bm, count(DISTINCT fgs_bm) fgsbm,fgs_bm,gs_name,fgs_name ,xl_bm, count(*) as jbc,COUNT(DISTINCT xl_bm) as jxl ,COUNT(DISTINCT cl_zbh) as jcl,bc_type" 1442 + " (select count(DISTINCT gs_bm) gslsbm, gs_bm, count(DISTINCT fgs_bm) fgsbm,fgs_bm,gs_name,fgs_name ,xl_bm, count(*) as jbc,COUNT(DISTINCT xl_bm) as jxl ,COUNT(DISTINCT cl_zbh) as jcl,bc_type"
1443 - + " from bsth_c_s_sp_info" + " where schedule_date_str >= '"  
1444 - + map.get("startDate").toString() + "' and schedule_date_str<= '" + map.get("endDate").toString() + "' and xl_bm='" 1443 + + " from bsth_c_s_sp_info" + " where DATE_FORMAT(schedule_date,'%Y-%m-%d') BETWEEN '"
  1444 + + map.get("startDate").toString() + "' and '" + map.get("endDate").toString() + "' and xl_bm='"
1445 + map.get("line").toString() + "' AND gs_bm is not null AND bc_type NOT IN ('in', 'out') " 1445 + map.get("line").toString() + "' AND gs_bm is not null AND bc_type NOT IN ('in', 'out') "
1446 + " and gs_bm='"+ map.get("gsdmAllline").toString() + "'" 1446 + " and gs_bm='"+ map.get("gsdmAllline").toString() + "'"
1447 + " and fgs_bm='"+ map.get("fgsdmAllline").toString() + "'" 1447 + " and fgs_bm='"+ map.get("fgsdmAllline").toString() + "'"
src/main/java/com/bsth/service/impl/BusIntervalServiceImpl.java
@@ -57,7 +57,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -57,7 +57,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
57 57
58 try { 58 try {
59 59
60 - String sql = "select * from bsth_c_s_sp_info_real where DATE_FORMAT(schedule_date,'%Y-%m-%d') >= '"+startDate+"' and DATE_FORMAT(schedule_date,'%Y-%m-%d') <= '"+endDate+"'"; 60 + String sql = "select * from bsth_c_s_sp_info_real where schedule_date_str >= '"+startDate+"' and schedule_date_str <= '"+endDate+"'";
61 if(line.length() != 0){ 61 if(line.length() != 0){
62 sql += " and xl_bm = '"+line+"'"; 62 sql += " and xl_bm = '"+line+"'";
63 } 63 }
@@ -86,7 +86,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -86,7 +86,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
86 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException { 86 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
87 ScheduleRealInfo schedule = new ScheduleRealInfo(); 87 ScheduleRealInfo schedule = new ScheduleRealInfo();
88 schedule.setId(rs.getLong("id")); 88 schedule.setId(rs.getLong("id"));
89 - schedule.setScheduleDateStr(rs.getString("schedule_date_Str")); 89 + schedule.setScheduleDateStr(rs.getString("schedule_date_str"));
90 schedule.setRealExecDate(rs.getString("real_exec_date")); 90 schedule.setRealExecDate(rs.getString("real_exec_date"));
91 schedule.setXlBm(rs.getString("xl_bm")); 91 schedule.setXlBm(rs.getString("xl_bm"));
92 schedule.setXlName(rs.getString("xl_name")); 92 schedule.setXlName(rs.getString("xl_name"));
@@ -117,6 +117,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -117,6 +117,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
117 schedule.setjName(rs.getString("j_name")); 117 schedule.setjName(rs.getString("j_name"));
118 schedule.setSpId(rs.getLong("sp_id")); 118 schedule.setSpId(rs.getLong("sp_id"));
119 schedule.setSflj(rs.getBoolean("sflj")); 119 schedule.setSflj(rs.getBoolean("sflj"));
  120 + schedule.setCcService(rs.getBoolean("cc_service"));
120 121
121 if(schedule.getFcsjActual() != null && schedule.getFcsjActual().trim().length() == 0){ 122 if(schedule.getFcsjActual() != null && schedule.getFcsjActual().trim().length() == 0){
122 schedule.setFcsjActual(null); 123 schedule.setFcsjActual(null);
@@ -371,6 +372,8 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -371,6 +372,8 @@ public class BusIntervalServiceImpl implements BusIntervalService {
371 // int endTime = Integer.valueOf(split[1].split(":")[0])*60 + Integer.valueOf(split[1].split(":")[1]); 372 // int endTime = Integer.valueOf(split[1].split(":")[0])*60 + Integer.valueOf(split[1].split(":")[1]);
372 373
373 for(ScheduleRealInfo schedule : list){ 374 for(ScheduleRealInfo schedule : list){
  375 + if(schedule.isCcService())
  376 + continue;
374 String[] split1 = schedule.getFcsj().split(":"); 377 String[] split1 = schedule.getFcsj().split(":");
375 String[] split2 = schedule.getZdsj().split(":"); 378 String[] split2 = schedule.getZdsj().split(":");
376 long fcsj = Long.valueOf(split1[0])*60 + Long.valueOf(split1[1]); 379 long fcsj = Long.valueOf(split1[0])*60 + Long.valueOf(split1[1]);
@@ -674,10 +677,10 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -674,10 +677,10 @@ public class BusIntervalServiceImpl implements BusIntervalService {
674 // where += " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'"; 677 // where += " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'";
675 where += " and bc_type != 'ldks'"; 678 where += " and bc_type != 'ldks'";
676 679
677 - String sql = "select id, schedule_date_Str, real_exec_date, xl_name, lp_name, bcs, bcsj, jhlc, bc_type," 680 + String sql = "select id, schedule_date_str, real_exec_date, xl_name, lp_name, bcs, bcsj, jhlc, bc_type,"
678 + " fcsj, fcsj_actual, zdsj, zdsj_actual, qdz_name, zdz_name, xl_dir, status, remarks, gs_name, fgs_name, sp_id" 681 + " fcsj, fcsj_actual, zdsj, zdsj_actual, qdz_name, zdz_name, xl_dir, status, remarks, gs_name, fgs_name, sp_id"
679 - + " from bsth_c_s_sp_info_real where DATE_FORMAT(schedule_date,'%Y-%m-%d') >= '"+startDate+"'"  
680 - + " and DATE_FORMAT(schedule_date,'%Y-%m-%d') <= '"+endDate+"'"+where+""; 682 + + " ,cc_service from bsth_c_s_sp_info_real where schedule_date_str >= '"+startDate+"'"
  683 + + " and schedule_date_str <= '"+endDate+"'"+where+"";
681 684
682 list = jdbcTemplate.query(sql, 685 list = jdbcTemplate.query(sql,
683 new RowMapper<ScheduleRealInfo>(){ 686 new RowMapper<ScheduleRealInfo>(){
@@ -685,7 +688,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -685,7 +688,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
685 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException { 688 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
686 ScheduleRealInfo schedule = new ScheduleRealInfo(); 689 ScheduleRealInfo schedule = new ScheduleRealInfo();
687 schedule.setId(rs.getLong("id")); 690 schedule.setId(rs.getLong("id"));
688 - schedule.setScheduleDateStr(rs.getString("schedule_date_Str")); 691 + schedule.setScheduleDateStr(rs.getString("schedule_date_str"));
689 schedule.setRealExecDate(rs.getString("real_exec_date")); 692 schedule.setRealExecDate(rs.getString("real_exec_date"));
690 schedule.setXlName(rs.getString("xl_name")); 693 schedule.setXlName(rs.getString("xl_name"));
691 schedule.setLpName(rs.getString("lp_name")); 694 schedule.setLpName(rs.getString("lp_name"));
@@ -705,6 +708,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -705,6 +708,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
705 schedule.setGsName(rs.getString("gs_name")); 708 schedule.setGsName(rs.getString("gs_name"));
706 schedule.setFgsName(rs.getString("fgs_name")); 709 schedule.setFgsName(rs.getString("fgs_name"));
707 schedule.setSpId(rs.getLong("sp_id")); 710 schedule.setSpId(rs.getLong("sp_id"));
  711 + schedule.setCcService(rs.getBoolean("cc_service"));
708 712
709 if(schedule.getFcsjActual() != null && schedule.getFcsjActual().trim().length() == 0){ 713 if(schedule.getFcsjActual() != null && schedule.getFcsjActual().trim().length() == 0){
710 schedule.setFcsjActual(null); 714 schedule.setFcsjActual(null);
@@ -885,7 +889,8 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -885,7 +889,8 @@ public class BusIntervalServiceImpl implements BusIntervalService {
885 } 889 }
886 890
887 for(ScheduleRealInfo schedule : list){ 891 for(ScheduleRealInfo schedule : list){
888 - if(schedule.getXlName()==null || schedule.getXlName().trim().length()==0) 892 + if(schedule.getXlName()==null || schedule.getXlName().trim().length()==0
  893 + || schedule.isCcService())
889 continue; 894 continue;
890 if(model.length() != 0){ 895 if(model.length() != 0){
891 if(ttSet.contains(schedule.getSpId())){ 896 if(ttSet.contains(schedule.getSpId())){
@@ -1393,6 +1398,9 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -1393,6 +1398,9 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1393 int endTime = Integer.valueOf(split[1].split(":")[0])*60 + Integer.valueOf(split[1].split(":")[1]); 1398 int endTime = Integer.valueOf(split[1].split(":")[0])*60 + Integer.valueOf(split[1].split(":")[1]);
1394 1399
1395 for(ScheduleRealInfo s : list){ 1400 for(ScheduleRealInfo s : list){
  1401 + if(s.isCcService()){
  1402 + continue;
  1403 + }
1396 String key = s.getScheduleDateStr() + "/" + s.getLpName(); 1404 String key = s.getScheduleDateStr() + "/" + s.getLpName();
1397 if(!keyMap.containsKey(key)) 1405 if(!keyMap.containsKey(key))
1398 keyMap.put(key, new ArrayList<ScheduleRealInfo>()); 1406 keyMap.put(key, new ArrayList<ScheduleRealInfo>());
@@ -1668,14 +1676,14 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -1668,14 +1676,14 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1668 lc = new BigDecimal("0"+schedule.getJhlc()); 1676 lc = new BigDecimal("0"+schedule.getJhlc());
1669 } 1677 }
1670 1678
1671 - if(!schedule.isSflj()){ 1679 + if(!schedule.isSflj() && !schedule.isCcService()){
1672 jhbc++; 1680 jhbc++;
1673 jhlc = jhlc.add(lc); 1681 jhlc = jhlc.add(lc);
1674 } 1682 }
1675 - if(schedule.getStatus() != -1){ 1683 + if(schedule.getStatus() != -1 && !schedule.isCcService()){
1676 sjbc++; 1684 sjbc++;
1677 sjlc = sjlc.add(lc); 1685 sjlc = sjlc.add(lc);
1678 - } else if(schedule.getStatus() == -1){ 1686 + } else if(schedule.getStatus() == -1 && !schedule.isCcService()){
1679 if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("路阻") != -1){ 1687 if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("路阻") != -1){
1680 lzbc++; 1688 lzbc++;
1681 lzlc = lzlc.add(lc); 1689 lzlc = lzlc.add(lc);
@@ -1811,8 +1819,8 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -1811,8 +1819,8 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1811 } 1819 }
1812 try { 1820 try {
1813 1821
1814 - String sql = "select * from bsth_c_s_sp_info_real where DATE_FORMAT(schedule_date,'%Y-%m-%d')"  
1815 - + " >= '"+startDate+"' and DATE_FORMAT(schedule_date,'%Y-%m-%d') <= '"+endDate+"'"; 1822 + String sql = "select * from bsth_c_s_sp_info_real where schedule_date_str"
  1823 + + " >= '"+startDate+"' and schedule_date_str <= '"+endDate+"'";
1816 if(line.length() != 0){ 1824 if(line.length() != 0){
1817 sql += " and xl_bm = '"+line+"'"; 1825 sql += " and xl_bm = '"+line+"'";
1818 } 1826 }
@@ -1829,7 +1837,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -1829,7 +1837,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1829 } 1837 }
1830 } 1838 }
1831 if(company.length() != 0){ 1839 if(company.length() != 0){
1832 - sql += " and gs_bm = '"+company+"' and fgs_bm = '"+subCompany+"'"; 1840 + sql += " and (gs_bm = '"+company+"' and fgs_bm = '"+subCompany+"')";
1833 } 1841 }
1834 sql += " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'"; 1842 sql += " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'";
1835 1843
@@ -1838,7 +1846,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -1838,7 +1846,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1838 @Override 1846 @Override
1839 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException { 1847 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
1840 ScheduleRealInfo schedule = new ScheduleRealInfo(); 1848 ScheduleRealInfo schedule = new ScheduleRealInfo();
1841 - schedule.setScheduleDateStr(rs.getString("schedule_date_Str")); 1849 + schedule.setScheduleDateStr(rs.getString("schedule_date_str"));
1842 schedule.setXlBm(rs.getString("xl_bm")); 1850 schedule.setXlBm(rs.getString("xl_bm"));
1843 schedule.setXlName(rs.getString("xl_name")); 1851 schedule.setXlName(rs.getString("xl_name"));
1844 schedule.setLpName(rs.getString("lp_name")); 1852 schedule.setLpName(rs.getString("lp_name"));
@@ -1864,6 +1872,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -1864,6 +1872,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1864 schedule.setjGh(rs.getString("j_gh")); 1872 schedule.setjGh(rs.getString("j_gh"));
1865 schedule.setjName(rs.getString("j_name")); 1873 schedule.setjName(rs.getString("j_name"));
1866 schedule.setUpdateDate(rs.getDate("update_date")); 1874 schedule.setUpdateDate(rs.getDate("update_date"));
  1875 + schedule.setCcService(rs.getBoolean("cc_service"));
1867 1876
1868 if(schedule.getFcsjActual() != null && schedule.getFcsjActual().trim().length() == 0){ 1877 if(schedule.getFcsjActual() != null && schedule.getFcsjActual().trim().length() == 0){
1869 schedule.setFcsjActual(null); 1878 schedule.setFcsjActual(null);
@@ -1905,7 +1914,8 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -1905,7 +1914,8 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1905 dxtz = 0, lbtz = 0; 1914 dxtz = 0, lbtz = 0;
1906 for(ScheduleRealInfo schedule : keyMap.get(key)){ 1915 for(ScheduleRealInfo schedule : keyMap.get(key)){
1907 boolean flag = false; 1916 boolean flag = false;
1908 - if(schedule.getFcsjActual() != null && schedule.getStatus() != -1){ 1917 + if(schedule.getFcsjActual() != null && schedule.getStatus() != -1
  1918 + && !schedule.isCcService()){
1909 sjbc++; 1919 sjbc++;
1910 if(schedule.getDfsj() != null && !schedule.getDfsj().equals(schedule.getFcsj())){ 1920 if(schedule.getDfsj() != null && !schedule.getDfsj().equals(schedule.getFcsj())){
1911 flag = true; 1921 flag = true;
@@ -1937,9 +1947,9 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -1937,9 +1947,9 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1937 // tempMap.put("dxtz", dxtz); 1947 // tempMap.put("dxtz", dxtz);
1938 tempMap.put("lbtz", lbtz); 1948 tempMap.put("lbtz", lbtz);
1939 tempMap.put("correct", sddf + zddf + lbtz); 1949 tempMap.put("correct", sddf + zddf + lbtz);
1940 - tempMap.put("dfbl", df.format((double)(sddf + zddf)/sjbc*100) + "%"); 1950 + tempMap.put("dfbl", sjbc>0?df.format((double)(sddf + zddf)/sjbc*100):0 + "%");
1941 // tempMap.put("dxbl", df.format((double)(dxtz)/sjbc*100) + "%"); 1951 // tempMap.put("dxbl", df.format((double)(dxtz)/sjbc*100) + "%");
1942 - tempMap.put("lbbl", df.format((double)(lbtz)/sjbc*100) + "%"); 1952 + tempMap.put("lbbl", sjbc>0?df.format((double)(lbtz)/sjbc*100):0 + "%");
1943 // tempMap.put("correctbl", df.format((double)(sddf + zddf + dxtz + lbtz)/sjbc*100) + "%"); 1953 // tempMap.put("correctbl", df.format((double)(sddf + zddf + dxtz + lbtz)/sjbc*100) + "%");
1944 // tempMap.put("workList", tempList); 1954 // tempMap.put("workList", tempList);
1945 1955
@@ -2069,9 +2079,9 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -2069,9 +2079,9 @@ public class BusIntervalServiceImpl implements BusIntervalService {
2069 // tempMap.put("dxtz", dxtz); 2079 // tempMap.put("dxtz", dxtz);
2070 tempMap.put("lbtz", lbtz); 2080 tempMap.put("lbtz", lbtz);
2071 tempMap.put("correct", sddf + zddf + lbtz); 2081 tempMap.put("correct", sddf + zddf + lbtz);
2072 - tempMap.put("dfbl", df.format((double)(sddf + zddf)/sjbc*100) + "%"); 2082 + tempMap.put("dfbl", sjbc>0?df.format((double)(sddf + zddf)/sjbc*100):0 + "%");
2073 2083
2074 - tempMap.put("lbbl", df.format((double)(lbtz)/sjbc*100) + "%"); 2084 + tempMap.put("lbbl", sjbc>0?df.format((double)(lbtz)/sjbc*100):0 + "%");
2075 // tempMap.put("correctbl", df.format((double)(sddf + zddf + dxtz + lbtz)/sjbc*100) + "%"); 2085 // tempMap.put("correctbl", df.format((double)(sddf + zddf + dxtz + lbtz)/sjbc*100) + "%");
2076 resList.add(tempMap); 2086 resList.add(tempMap);
2077 } 2087 }
@@ -2097,8 +2107,8 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -2097,8 +2107,8 @@ public class BusIntervalServiceImpl implements BusIntervalService {
2097 resMap.put("dxbl", "0"); 2107 resMap.put("dxbl", "0");
2098 resMap.put("correctbl", "0"); 2108 resMap.put("correctbl", "0");
2099 }else{ 2109 }else{
2100 - resMap.put("dxbl", df.format((double)(dxtzz)/sjbc*100) + "%");  
2101 - resMap.put("correctbl", df.format((double)(correct+dxtzz)/sjbc*100) + "%"); 2110 + resMap.put("dxbl", sjbc>0?df.format((double)(dxtzz)/sjbc*100):0 + "%");
  2111 + resMap.put("correctbl", sjbc>0?df.format((double)(correct+dxtzz)/sjbc*100):0 + "%");
2102 } 2112 }
2103 2113
2104 2114
@@ -2152,8 +2162,8 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -2152,8 +2162,8 @@ public class BusIntervalServiceImpl implements BusIntervalService {
2152 resMap.put("dxbl", "0"); 2162 resMap.put("dxbl", "0");
2153 resMap.put("correctbl", "0"); 2163 resMap.put("correctbl", "0");
2154 }else{ 2164 }else{
2155 - resMap.put("dxbl", df.format((double)(dxtzf)/sjbc*100) + "%");  
2156 - resMap.put("correctbl", df.format((double)(correct+dxtzf)/sjbc*100) + "%"); 2165 + resMap.put("dxbl", sjbc>0?df.format((double)(dxtzf)/sjbc*100):0 + "%");
  2166 + resMap.put("correctbl", sjbc>0?df.format((double)(correct+dxtzf)/sjbc*100):0 + "%");
2157 } 2167 }
2158 resMap.put("xlname",BasicData.lineCode2NameMap.get(xlbm)); 2168 resMap.put("xlname",BasicData.lineCode2NameMap.get(xlbm));
2159 } 2169 }
src/main/java/com/bsth/service/realcontrol/impl/ChildTaskPlanServiceImpl.java
@@ -46,14 +46,11 @@ public class ChildTaskPlanServiceImpl extends BaseServiceImpl&lt;ChildTaskPlan, Lon @@ -46,14 +46,11 @@ public class ChildTaskPlanServiceImpl extends BaseServiceImpl&lt;ChildTaskPlan, Lon
46 try { 46 try {
47 ScheduleRealInfo sch = dayOfSchedule.get(t.getSchedule().getId()); 47 ScheduleRealInfo sch = dayOfSchedule.get(t.getSchedule().getId());
48 //保存起终点名称 48 //保存起终点名称
49 - //String prefix = sch.getXlBm() + "_" + sch.getXlDir() + "_";  
50 if(StringUtils.isEmpty(t.getStartStationName())) 49 if(StringUtils.isEmpty(t.getStartStationName()))
51 t.setStartStationName(getStationName(sch.getXlBm(), t.getStartStation())); 50 t.setStartStationName(getStationName(sch.getXlBm(), t.getStartStation()));
52 - //t.setStartStationName(BasicData.getStationNameByCode(t.getStartStation(), prefix));  
53 51
54 if(StringUtils.isEmpty(t.getEndStationName())) 52 if(StringUtils.isEmpty(t.getEndStationName()))
55 t.setEndStationName(getStationName(sch.getXlBm(), t.getEndStation())); 53 t.setEndStationName(getStationName(sch.getXlBm(), t.getEndStation()));
56 - //t.setEndStationName(BasicData.getStationNameByCode(t.getEndStation(), prefix));  
57 if(t.getDestroyReason() == null) 54 if(t.getDestroyReason() == null)
58 t.setDestroyReason(""); 55 t.setDestroyReason("");
59 56
@@ -61,13 +58,63 @@ public class ChildTaskPlanServiceImpl extends BaseServiceImpl&lt;ChildTaskPlan, Lon @@ -61,13 +58,63 @@ public class ChildTaskPlanServiceImpl extends BaseServiceImpl&lt;ChildTaskPlan, Lon
61 if(t.isDestroy() && StringUtils.isEmpty(t.getDestroyReason())) 58 if(t.isDestroy() && StringUtils.isEmpty(t.getDestroyReason()))
62 t.setDestroyReason(t.getReason()); 59 t.setDestroyReason(t.getReason());
63 60
  61 + //中途换车出场子任务,级联生成一个主任务,供报表和对外接口计算用
  62 + if(StringUtils.isNotEmpty(t.getNbbm())){
  63 + ScheduleRealInfo ccServiceSch = new ScheduleRealInfo();
  64 + ccServiceSch.setSflj(sch.isSflj());
  65 + ccServiceSch.setjGh(sch.getjGh());
  66 + ccServiceSch.setjName(sch.getjName());
  67 + ccServiceSch.setsGh(sch.getsGh());
  68 + ccServiceSch.setsName(sch.getsName());
  69 + ccServiceSch.setGsBm(sch.getGsBm());
  70 + ccServiceSch.setFgsBm(sch.getFgsBm());
  71 + ccServiceSch.setGsName(sch.getGsName());
  72 + ccServiceSch.setFgsName(sch.getFgsName());
  73 + ccServiceSch.setLpName(sch.getLpName());
  74 + ccServiceSch.setXlBm(sch.getXlBm());
  75 + ccServiceSch.setXlName(sch.getXlName());
  76 + ccServiceSch.setXlDir(sch.getXlDir());
  77 + ccServiceSch.setScheduleDate(sch.getScheduleDate());
  78 + ccServiceSch.setScheduleDateStr(sch.getScheduleDateStr());
  79 + ccServiceSch.setRealExecDate(sch.getRealExecDate());
  80 +
  81 + ccServiceSch.setId(null);
  82 + ccServiceSch.setSpId(null);
  83 + ccServiceSch.setClZbh(t.getNbbm());
  84 + ccServiceSch.setCcService(true);
  85 + ccServiceSch.setFcsj(t.getStartDate());
  86 + ccServiceSch.setDfsj(t.getStartDate());
  87 + ccServiceSch.setZdsj(t.getEndDate());
  88 + ccServiceSch.setBcsj(0);
  89 + ccServiceSch.setJhlcOrig(Double.parseDouble(String.valueOf(t.getMileage())));
  90 + ccServiceSch.setJhlc(ccServiceSch.getJhlcOrig());
  91 + ccServiceSch.setQdzCode(t.getStartStation());
  92 + ccServiceSch.setZdzCode(t.getEndStation());
  93 + ccServiceSch.setQdzName(t.getStartStationName());
  94 + ccServiceSch.setZdzName(t.getEndStationName());
  95 + ccServiceSch.setFcsjActual(ccServiceSch.getDfsj());
  96 + ccServiceSch.setZdsjActual(ccServiceSch.getZdsj());
  97 + ccServiceSch.setRemarks(t.getRemarks());
  98 + ccServiceSch.setStatus(2);
  99 + if("1".equals(t.getType2())){
  100 + ccServiceSch.setBcType("normal");
  101 + }
  102 + else {
  103 + if("2".equals(t.getType2()))
  104 + ccServiceSch.setBcType("in");
  105 + else if("3".equals(t.getType2()))
  106 + ccServiceSch.setBcType("out");
  107 + }
  108 + //实时入库
  109 + ccServiceSch = scheduleRealInfoRepository.save(ccServiceSch);
  110 + t.setCcId(ccServiceSch.getId());
  111 + }
  112 +
64 //先持久化子任务 113 //先持久化子任务
65 rs = super.save(t); 114 rs = super.save(t);
66 //关联主任务 115 //关联主任务
67 sch.getcTasks().add(t); 116 sch.getcTasks().add(t);
68 dayOfSchedule.save(sch); 117 dayOfSchedule.save(sch);
69 - //直接持久化  
70 - //scheduleRealInfoRepository.save(sch);  
71 //站到场对照 118 //站到场对照
72 t.setSchedule(sch); 119 t.setSchedule(sch);
73 Station2ParkBuffer.put(t); 120 Station2ParkBuffer.put(t);
@@ -101,6 +148,11 @@ public class ChildTaskPlanServiceImpl extends BaseServiceImpl&lt;ChildTaskPlan, Lon @@ -101,6 +148,11 @@ public class ChildTaskPlanServiceImpl extends BaseServiceImpl&lt;ChildTaskPlan, Lon
101 148
102 //删除子任务 149 //删除子任务
103 rs = super.delete(id); 150 rs = super.delete(id);
  151 +
  152 + //删除级联生成的换车主任务
  153 + if(null != cPlan.getCcId()){
  154 + scheduleRealInfoRepository.delete(cPlan.getCcId());
  155 + }
104 //dayOfSchedule.save(sch); 156 //dayOfSchedule.save(sch);
105 //解除和主任务关联 157 //解除和主任务关联
106 ScheduleRealInfo sch = dayOfSchedule.get(cPlan.getSchedule().getId()); 158 ScheduleRealInfo sch = dayOfSchedule.get(cPlan.getSchedule().getId());
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
@@ -873,7 +873,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -873,7 +873,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
873 if(cts != null && cts.size() > 0){ 873 if(cts != null && cts.size() > 0){
874 lists.add(s); 874 lists.add(s);
875 }else{ 875 }else{
876 - if(s.getZdsjActual()!=null){ 876 + if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
877 lists.add(s); 877 lists.add(s);
878 } 878 }
879 } 879 }
@@ -1743,30 +1743,28 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1743,30 +1743,28 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1743 if(cts != null && cts.size() > 0){ 1743 if(cts != null && cts.size() > 0){
1744 lists.add(s); 1744 lists.add(s);
1745 }else{ 1745 }else{
1746 - if(s.getZdsjActual()!=null){ 1746 + if(s.getFcsjActual() !=null&&s.getZdsjActual()!=null){
1747 lists.add(s); 1747 lists.add(s);
1748 } 1748 }
1749 } 1749 }
1750 } 1750 }
1751 - double ksgl=culateService.culateKsgl(list);  
1752 - double sjgl=culateService.culateSjgl(lists);  
1753 - double jccgl=culateService.culateJccgl(lists);  
1754 - double ljgl=culateService.culateLjgl(lists);  
1755 -  
1756 - map.put("jhlc", Arith.add(culateService.culateJhgl(list),culateService.culateJhJccgl(list))); //计划里程 1751 + map.put("jhbc", culateService.culateJhbc(list,""));//计划班次
  1752 + map.put("jhlc", Arith.add(culateService.culateJhgl(list),
  1753 + culateService.culateJhJccgl(list))); //计划总里程
  1754 + map.put("cjbc", culateService.culateLbbc(list));//烂班班次
1757 map.put("remMileage", culateService.culateLbgl(list)); //烂班公里 1755 map.put("remMileage", culateService.culateLbgl(list)); //烂班公里
  1756 + map.put("ljbc", culateService.culateLjbc(lists,""));//临加班次
  1757 + double ljgl=culateService.culateLjgl(lists);
1758 map.put("addMileage", ljgl); //临加公里 1758 map.put("addMileage", ljgl); //临加公里
1759 - map.put("yygl",Arith.add(sjgl,ljgl)); //实际公里  
1760 - map.put("ksgl", ksgl);//空驶公里  
1761 - map.put("realMileage",Arith.add(Arith.add(ksgl,jccgl ),Arith.add(sjgl,ljgl)));  
1762 -// map.put("realMileage", format.format(yygl + ksgl + jcclc+addMileage));  
1763 - map.put("jhbc", culateService.culateJhbc(list,""));  
1764 - map.put("cjbc", culateService.culateLbbc(list));  
1765 - map.put("ljbc", culateService.culateLjbc(lists,""));  
1766 map.put("sjbc", culateService.culateSjbc(lists,"") + culateService.culateLjbc(lists,"")); 1759 map.put("sjbc", culateService.culateSjbc(lists,"") + culateService.culateLjbc(lists,""));
1767 - map.put("jcclc", jccgl); 1760 + double ksgl=culateService.culateKsgl(list);//子任务空驶公里
  1761 + double jccgl=culateService.culateJccgl(lists);//空驶班次公里
  1762 + map.put("ksgl", ksgl);//空驶公里
  1763 + double sjgl=culateService.culateSjgl(lists);//实际营运公里
  1764 + map.put("realMileage",Arith.add(Arith.add(ksgl,jccgl ),Arith.add(sjgl,ljgl)));//总公里
1768 map.put("zkslc", Arith.add(ksgl,jccgl)); 1765 map.put("zkslc", Arith.add(ksgl,jccgl));
1769 -// map.put("zkslc", format.format(ksgl + jcclc+addMileageJc)); 1766 + map.put("jcclc", jccgl);
  1767 + map.put("yygl",Arith.add(sjgl,ljgl)); //总营运公里
1770 return map; 1768 return map;
1771 } 1769 }
1772 1770
@@ -1789,7 +1787,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1789,7 +1787,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1789 if(cts != null && cts.size() > 0){ 1787 if(cts != null && cts.size() > 0){
1790 lists.add(s); 1788 lists.add(s);
1791 }else{ 1789 }else{
1792 - if(s.getZdsjActual()!=null){ 1790 + if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
1793 lists.add(s); 1791 lists.add(s);
1794 } 1792 }
1795 } 1793 }
@@ -2139,20 +2137,24 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2139,20 +2137,24 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2139 for (int j = 0; j < listit.size(); j++) { 2137 for (int j = 0; j < listit.size(); j++) {
2140 ScheduleRealInfo t = new ScheduleRealInfo(); 2138 ScheduleRealInfo t = new ScheduleRealInfo();
2141 ChildTaskPlan childTaskPlan = listit.get(j); 2139 ChildTaskPlan childTaskPlan = listit.get(j);
2142 - if (childTaskPlan.isDestroy()) {  
2143 - t.setFcsjActual("");  
2144 - t.setZdsjActual("");  
2145 - t.setJhlc(0.0);  
2146 - } else {  
2147 - t.setFcsjActual(childTaskPlan.getStartDate());  
2148 - t.setZdsjActual(childTaskPlan.getEndDate());  
2149 - t.setJhlc(Double.parseDouble(String.valueOf(childTaskPlan.getMileage()))); 2140 + if(childTaskPlan.getCcId()==null){
  2141 + if (childTaskPlan.isDestroy()) {
  2142 + t.setFcsjActual("");
  2143 + t.setZdsjActual("");
  2144 + t.setJhlc(0.0);
  2145 + } else {
  2146 + t.setFcsjActual(childTaskPlan.getStartDate());
  2147 + t.setZdsjActual(childTaskPlan.getEndDate());
  2148 + t.setJhlc(Double.parseDouble(String.valueOf(childTaskPlan.getMileage())));
  2149 + }
  2150 + t.setFcsj(childTaskPlan.getStartDate());
  2151 + t.setZdsj(childTaskPlan.getEndDate());
  2152 + t.setQdzName(childTaskPlan.getStartStationName());
  2153 + t.setZdzName(childTaskPlan.getEndStationName());
  2154 + t.setRemarks(childTaskPlan.getRemarks());
  2155 + t.setAdjustExps("子");
  2156 + listSchedule.add(t);
2150 } 2157 }
2151 - t.setQdzName(childTaskPlan.getStartStationName());  
2152 - t.setZdzName(childTaskPlan.getEndStationName());  
2153 - t.setRemarks(childTaskPlan.getRemarks());  
2154 - t.setAdjustExps("子");  
2155 - listSchedule.add(t);  
2156 } 2158 }
2157 } 2159 }
2158 } 2160 }
@@ -2295,7 +2297,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2295,7 +2297,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2295 if(cts != null && cts.size() > 0){ 2297 if(cts != null && cts.size() > 0){
2296 lists.add(s); 2298 lists.add(s);
2297 }else{ 2299 }else{
2298 - if(s.getZdsjActual()!=null){ 2300 + if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
2299 lists.add(s); 2301 lists.add(s);
2300 } 2302 }
2301 } 2303 }
@@ -2370,7 +2372,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2370,7 +2372,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2370 if(cts != null && cts.size() > 0){ 2372 if(cts != null && cts.size() > 0){
2371 lists.add(s); 2373 lists.add(s);
2372 }else{ 2374 }else{
2373 - if(s.getZdsjActual()!=null){ 2375 + if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
2374 lists.add(s); 2376 lists.add(s);
2375 } 2377 }
2376 } 2378 }
@@ -2433,7 +2435,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2433,7 +2435,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2433 if(cts != null && cts.size() > 0){ 2435 if(cts != null && cts.size() > 0){
2434 lists.add(s); 2436 lists.add(s);
2435 }else{ 2437 }else{
2436 - if(s.getZdsjActual()!=null){ 2438 + if(s.getZdsjActual()!=null&& s.getFcsjActual()!=null){
2437 lists.add(s); 2439 lists.add(s);
2438 } 2440 }
2439 } 2441 }
@@ -2487,10 +2489,11 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2487,10 +2489,11 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2487 map.put("dtbc", 0); 2489 map.put("dtbc", 0);
2488 map.put("dtbc_m", 0); 2490 map.put("dtbc_m", 0);
2489 map.put("dtbc_a", 0); 2491 map.put("dtbc_a", 0);
2490 - map.put("djg", 0);  
2491 - map.put("djg_m", 0);  
2492 - map.put("djg_a", 0);  
2493 - map.put("djg_time", 0); 2492 + Map<String, Object> m_=culateService.culateDjg(lists, list.get(0).getXlBm());
  2493 + map.put("djg", m_.get("djgcsq"));
  2494 + map.put("djg_m", m_.get("djgcsz"));
  2495 + map.put("djg_a", m_.get("djgcsw"));
  2496 + map.put("djg_time", m_.get("djgsj"));
2494 } 2497 }
2495 return map; 2498 return map;
2496 } 2499 }
@@ -2515,7 +2518,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2515,7 +2518,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2515 if(cts != null && cts.size() > 0){ 2518 if(cts != null && cts.size() > 0){
2516 list_s.add(s); 2519 list_s.add(s);
2517 }else{ 2520 }else{
2518 - if(s.getZdsjActual()!=null){ 2521 + if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
2519 list_s.add(s); 2522 list_s.add(s);
2520 } 2523 }
2521 } 2524 }
@@ -2592,10 +2595,11 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2592,10 +2595,11 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2592 map.put("dtbc", 0); 2595 map.put("dtbc", 0);
2593 map.put("dtbc_m", 0); 2596 map.put("dtbc_m", 0);
2594 map.put("dtbc_a", 0); 2597 map.put("dtbc_a", 0);
2595 - map.put("djg", 0);  
2596 - map.put("djg_m", 0);  
2597 - map.put("djg_a", 0);  
2598 - map.put("djg_time", 0); 2598 + Map<String, Object> m_=culateService.culateDjg(list_s, list.get(0).getXlBm());
  2599 + map.put("djg", m_.get("djgcsq"));
  2600 + map.put("djg_m", m_.get("djgcsz"));
  2601 + map.put("djg_a", m_.get("djgcsw"));
  2602 + map.put("djg_time", m_.get("djgsj"));
2599 lMap.add(map); 2603 lMap.add(map);
2600 if (type != null && type.length() != 0 && type.equals("export")) { 2604 if (type != null && type.length() != 0 && type.equals("export")) {
2601 SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), 2605 SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
@@ -2723,7 +2727,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2723,7 +2727,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2723 String zdsjActual = ""; 2727 String zdsjActual = "";
2724 String zdsj1 = ""; 2728 String zdsj1 = "";
2725 String zdsjActual1 = ""; 2729 String zdsjActual1 = "";
2726 - List<ScheduleRealInfo> listInfo = scheduleRealInfoRepository.scheduleByDateAndLineQp(line, date); 2730 + List<ScheduleRealInfo> listInfo = scheduleRealInfoRepository.scheduleDdrb(line, date);
2727 for (int i = 0; i < listInfo.size(); i++) { 2731 for (int i = 0; i < listInfo.size(); i++) {
2728 ScheduleRealInfo t = listInfo.get(i); 2732 ScheduleRealInfo t = listInfo.get(i);
2729 if (!lpName.equals(t.getLpName())) { 2733 if (!lpName.equals(t.getLpName())) {
@@ -2743,7 +2747,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2743,7 +2747,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2743 list.add(t); 2747 list.add(t);
2744 } 2748 }
2745 2749
2746 - List<ScheduleRealInfo> listInfo2 = scheduleRealInfoRepository.scheduleByDateAndLineQp2(line, date); 2750 + List<ScheduleRealInfo> listInfo2 = scheduleRealInfoRepository.scheduleDdrb2(line, date);
2747 List<ScheduleRealInfo> xList = new ArrayList<ScheduleRealInfo>(); 2751 List<ScheduleRealInfo> xList = new ArrayList<ScheduleRealInfo>();
2748 List<ScheduleRealInfo> yList = new ArrayList<ScheduleRealInfo>(); 2752 List<ScheduleRealInfo> yList = new ArrayList<ScheduleRealInfo>();
2749 List<ScheduleRealInfo> zList = new ArrayList<ScheduleRealInfo>(); 2753 List<ScheduleRealInfo> zList = new ArrayList<ScheduleRealInfo>();
@@ -4211,7 +4215,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -4211,7 +4215,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
4211 if(cts != null && cts.size() > 0){ 4215 if(cts != null && cts.size() > 0){
4212 lists.add(s); 4216 lists.add(s);
4213 }else{ 4217 }else{
4214 - if(s.getZdsjActual()!=null){ 4218 + if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
4215 lists.add(s); 4219 lists.add(s);
4216 } 4220 }
4217 } 4221 }
src/main/java/com/bsth/service/report/CulateMileageService.java
@@ -39,6 +39,8 @@ public interface CulateMileageService { @@ -39,6 +39,8 @@ public interface CulateMileageService {
39 Map<String, Object> culateWdbcs(List<ScheduleRealInfo> lists); 39 Map<String, Object> culateWdbcs(List<ScheduleRealInfo> lists);
40 40
41 int culateDtfzbc(List<ScheduleRealInfo> lists,String type,String status,String item); 41 int culateDtfzbc(List<ScheduleRealInfo> lists,String type,String status,String item);
  42 +
  43 +
42 //以下计算方法供新报表使用 44 //以下计算方法供新报表使用
43 Map<String, Double> culateSjlcMap(List<ScheduleRealInfo> lists);//计划内营运and计划外营运 45 Map<String, Double> culateSjlcMap(List<ScheduleRealInfo> lists);//计划内营运and计划外营运
44 46
src/main/java/com/bsth/service/report/impl/CulateMileageServiceImpl.java
1 package com.bsth.service.report.impl; 1 package com.bsth.service.report.impl;
2 2
3 -import java.sql.ResultSet;  
4 -import java.sql.SQLException;  
5 -import java.text.DecimalFormat;  
6 -import java.text.ParseException;  
7 -import java.text.SimpleDateFormat;  
8 -import java.util.ArrayList;  
9 -import java.util.Collections;  
10 -import java.util.HashMap;  
11 -import java.util.Iterator;  
12 -import java.util.List;  
13 -import java.util.Map;  
14 -import java.util.Set;  
15 -  
16 -import org.apache.commons.lang.StringUtils;  
17 -import org.springframework.beans.factory.annotation.Autowired;  
18 -import org.springframework.jdbc.core.JdbcTemplate;  
19 -import org.springframework.jdbc.core.RowMapper;  
20 -import org.springframework.stereotype.Service;  
21 -  
22 -import com.bsth.data.BasicData;  
23 import com.bsth.entity.realcontrol.ChildTaskPlan; 3 import com.bsth.entity.realcontrol.ChildTaskPlan;
24 import com.bsth.entity.realcontrol.ScheduleRealInfo; 4 import com.bsth.entity.realcontrol.ScheduleRealInfo;
25 import com.bsth.entity.sys.Interval; 5 import com.bsth.entity.sys.Interval;
@@ -27,8 +7,18 @@ import com.bsth.service.report.CulateMileageService; @@ -27,8 +7,18 @@ import com.bsth.service.report.CulateMileageService;
27 import com.bsth.util.Arith; 7 import com.bsth.util.Arith;
28 import com.bsth.util.ComparableChild; 8 import com.bsth.util.ComparableChild;
29 import com.bsth.util.ComparableJob; 9 import com.bsth.util.ComparableJob;
30 -import com.bsth.util.ReportUtils;  
31 -import com.google.common.util.concurrent.AbstractScheduledService.Scheduler; 10 +import org.apache.commons.lang.StringUtils;
  11 +import org.springframework.beans.factory.annotation.Autowired;
  12 +import org.springframework.jdbc.core.JdbcTemplate;
  13 +import org.springframework.jdbc.core.RowMapper;
  14 +import org.springframework.stereotype.Service;
  15 +
  16 +import java.sql.ResultSet;
  17 +import java.sql.SQLException;
  18 +import java.text.DecimalFormat;
  19 +import java.text.ParseException;
  20 +import java.text.SimpleDateFormat;
  21 +import java.util.*;
32 22
33 @Service 23 @Service
34 public class CulateMileageServiceImpl implements CulateMileageService{ 24 public class CulateMileageServiceImpl implements CulateMileageService{
@@ -179,10 +169,12 @@ public class CulateMileageServiceImpl implements CulateMileageService{ @@ -179,10 +169,12 @@ public class CulateMileageServiceImpl implements CulateMileageService{
179 Iterator<ChildTaskPlan> it = childTaskPlans.iterator(); 169 Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
180 while (it.hasNext()) { 170 while (it.hasNext()) {
181 ChildTaskPlan childTaskPlan = it.next(); 171 ChildTaskPlan childTaskPlan = it.next();
182 - if(childTaskPlan.getMileageType().equals("service")){  
183 - if (childTaskPlan.isDestroy()) {  
184 - zlblc=Arith.add(zlblc,childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage());  
185 - } 172 + if(childTaskPlan.getCcId()==null){
  173 + if(childTaskPlan.getMileageType().equals("service")){
  174 + if (childTaskPlan.isDestroy()) {
  175 + zlblc=Arith.add(zlblc,childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage());
  176 + }
  177 + }
186 } 178 }
187 } 179 }
188 } 180 }
@@ -198,30 +190,11 @@ public class CulateMileageServiceImpl implements CulateMileageService{ @@ -198,30 +190,11 @@ public class CulateMileageServiceImpl implements CulateMileageService{
198 for (int i = 0; i < lists.size(); i++) { 190 for (int i = 0; i < lists.size(); i++) {
199 ScheduleRealInfo scheduleRealInfo=lists.get(i); 191 ScheduleRealInfo scheduleRealInfo=lists.get(i);
200 if (!isInOut(scheduleRealInfo)) { 192 if (!isInOut(scheduleRealInfo)) {
201 -// Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();  
202 -// if(childTaskPlans.isEmpty()){ 193 + if(!scheduleRealInfo.isCcService()){
203 if(scheduleRealInfo.getStatus() == -1){ 194 if(scheduleRealInfo.getStatus() == -1){
204 lbbc++; 195 lbbc++;
205 } 196 }
206 -// }  
207 - /*else{  
208 - if(scheduleRealInfo.getStatus() == -1){  
209 - boolean fage=true;  
210 - Iterator<ChildTaskPlan> it = childTaskPlans.iterator();  
211 - if(it.hasNext()){  
212 - ChildTaskPlan childTaskPlan = it.next();  
213 - if(!childTaskPlan.isDestroy()){  
214 - if(childTaskPlan.getMileageType().equals("service")){  
215 - fage=false;  
216 - }  
217 - }  
218 -  
219 - }  
220 - if(fage){  
221 - lbbc++;  
222 - }  
223 - }  
224 - }*/ 197 + }
225 } 198 }
226 } 199 }
227 return lbbc; 200 return lbbc;
@@ -378,7 +351,7 @@ public class CulateMileageServiceImpl implements CulateMileageService{ @@ -378,7 +351,7 @@ public class CulateMileageServiceImpl implements CulateMileageService{
378 Iterator<ChildTaskPlan> it = childTaskPlans.iterator(); 351 Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
379 while (it.hasNext()) { 352 while (it.hasNext()) {
380 ChildTaskPlan childTaskPlan = it.next(); 353 ChildTaskPlan childTaskPlan = it.next();
381 - if(childTaskPlan.getMileageType().equals("service")){ 354 + if(childTaskPlan.getMileageType().equals("service") && childTaskPlan.getCcId()==null){
382 if (!childTaskPlan.isDestroy()) { 355 if (!childTaskPlan.isDestroy()) {
383 Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage(); 356 Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
384 ljgl=Arith.add(ljgl,jhgl); 357 ljgl=Arith.add(ljgl,jhgl);
@@ -399,11 +372,13 @@ public class CulateMileageServiceImpl implements CulateMileageService{ @@ -399,11 +372,13 @@ public class CulateMileageServiceImpl implements CulateMileageService{
399 Iterator<ChildTaskPlan> it = childTaskPlans.iterator(); 372 Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
400 while (it.hasNext()) { 373 while (it.hasNext()) {
401 ChildTaskPlan childTaskPlan = it.next(); 374 ChildTaskPlan childTaskPlan = it.next();
402 - if("service".equals(childTaskPlan.getMileageType())&&"临加".equals(childTaskPlan.getType1())){  
403 - if (!childTaskPlan.isDestroy()) {  
404 - Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();  
405 - ljgl=Arith.add(ljgl,jhgl);  
406 - } 375 + if(childTaskPlan.getCcId()==null){
  376 + if("service".equals(childTaskPlan.getMileageType())&&"临加".equals(childTaskPlan.getType1())){
  377 + if (!childTaskPlan.isDestroy()) {
  378 + Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
  379 + ljgl=Arith.add(ljgl,jhgl);
  380 + }
  381 + }
407 } 382 }
408 } 383 }
409 } 384 }
@@ -463,7 +438,7 @@ public class CulateMileageServiceImpl implements CulateMileageService{ @@ -463,7 +438,7 @@ public class CulateMileageServiceImpl implements CulateMileageService{
463 for (int i = 0; i < lists.size(); i++) { 438 for (int i = 0; i < lists.size(); i++) {
464 ScheduleRealInfo scheduleRealInfo=lists.get(i); 439 ScheduleRealInfo scheduleRealInfo=lists.get(i);
465 if (!isInOut(scheduleRealInfo)) { 440 if (!isInOut(scheduleRealInfo)) {
466 - if(!scheduleRealInfo.isSflj()){ 441 + if(!scheduleRealInfo.isSflj() && !scheduleRealInfo.isCcService()){
467 jhgl=Arith.add(jhgl,scheduleRealInfo.getJhlcOrig()==null?0:scheduleRealInfo.getJhlcOrig()); 442 jhgl=Arith.add(jhgl,scheduleRealInfo.getJhlcOrig()==null?0:scheduleRealInfo.getJhlcOrig());
468 } 443 }
469 } 444 }
@@ -504,7 +479,7 @@ public class CulateMileageServiceImpl implements CulateMileageService{ @@ -504,7 +479,7 @@ public class CulateMileageServiceImpl implements CulateMileageService{
504 for (int i = 0; i < lists.size(); i++) { 479 for (int i = 0; i < lists.size(); i++) {
505 ScheduleRealInfo scheduleRealInfo=lists.get(i); 480 ScheduleRealInfo scheduleRealInfo=lists.get(i);
506 if (!isInOut(scheduleRealInfo)) { 481 if (!isInOut(scheduleRealInfo)) {
507 - if(!scheduleRealInfo.isSflj()){ 482 + if(!scheduleRealInfo.isSflj() && !scheduleRealInfo.isCcService()){
508 String[] fcsjStr = scheduleRealInfo.getFcsj().split(":"); 483 String[] fcsjStr = scheduleRealInfo.getFcsj().split(":");
509 long fcsj= Long.parseLong(fcsjStr[0])*60+Long.parseLong(fcsjStr[1]); 484 long fcsj= Long.parseLong(fcsjStr[0])*60+Long.parseLong(fcsjStr[1]);
510 if(item.equals("zgf")){ 485 if(item.equals("zgf")){
@@ -535,21 +510,23 @@ public class CulateMileageServiceImpl implements CulateMileageService{ @@ -535,21 +510,23 @@ public class CulateMileageServiceImpl implements CulateMileageService{
535 Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks(); 510 Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
536 if(!scheduleRealInfo.isSflj()){ 511 if(!scheduleRealInfo.isSflj()){
537 if(childTaskPlans.isEmpty()){ 512 if(childTaskPlans.isEmpty()){
538 - if(!scheduleRealInfo.isDestroy()){  
539 - double jhlcOrig=scheduleRealInfo.getJhlcOrig()==null?0:scheduleRealInfo.getJhlcOrig();  
540 - double jhlc=scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc();  
541 - if(jhlc-jhlcOrig>0){  
542 - sjgl=Arith.add(sjgl,jhlcOrig);  
543 - }else{  
544 - sjgl=Arith.add(sjgl,jhlc);  
545 - }  
546 - 513 + if(!scheduleRealInfo.isDestroy()){
  514 + double jhlcOrig=scheduleRealInfo.getJhlcOrig()==null?0:scheduleRealInfo.getJhlcOrig();
  515 + double jhlc=scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc();
  516 + if(jhlc-jhlcOrig>0){
  517 + sjgl=Arith.add(sjgl,jhlcOrig);
  518 + }else{
  519 + sjgl=Arith.add(sjgl,jhlc);
547 } 520 }
  521 +
  522 + }
548 }else{ 523 }else{
549 Iterator<ChildTaskPlan> it = childTaskPlans.iterator(); 524 Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
550 while (it.hasNext()) { 525 while (it.hasNext()) {
551 ChildTaskPlan childTaskPlan = it.next(); 526 ChildTaskPlan childTaskPlan = it.next();
552 - if(childTaskPlan.getMileageType().equals("service")&&"正常".equals(childTaskPlan.getType1())){ 527 + if(childTaskPlan.getMileageType().equals("service")
  528 + &&"正常".equals(childTaskPlan.getType1())
  529 + && childTaskPlan.getCcId()==null){
553 if (!childTaskPlan.isDestroy()) { 530 if (!childTaskPlan.isDestroy()) {
554 Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage(); 531 Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
555 sjgl=Arith.add(sjgl,jhgl); 532 sjgl=Arith.add(sjgl,jhgl);
@@ -649,8 +626,7 @@ public class CulateMileageServiceImpl implements CulateMileageService{ @@ -649,8 +626,7 @@ public class CulateMileageServiceImpl implements CulateMileageService{
649 for (int i = 0; i < lists.size(); i++) { 626 for (int i = 0; i < lists.size(); i++) {
650 ScheduleRealInfo scheduleRealInfo=lists.get(i); 627 ScheduleRealInfo scheduleRealInfo=lists.get(i);
651 if (!isInOut(scheduleRealInfo)) { 628 if (!isInOut(scheduleRealInfo)) {
652 - Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();  
653 - if(!scheduleRealInfo.isSflj()){ 629 + if(!scheduleRealInfo.isSflj() && !scheduleRealInfo.isCcService()){
654 String time=""; 630 String time="";
655 if(item.equals("zgf") || item.equals("wgf")){ 631 if(item.equals("zgf") || item.equals("wgf")){
656 if(scheduleRealInfo.getFcsjActual()!=null){ 632 if(scheduleRealInfo.getFcsjActual()!=null){
@@ -681,62 +657,6 @@ public class CulateMileageServiceImpl implements CulateMileageService{ @@ -681,62 +657,6 @@ public class CulateMileageServiceImpl implements CulateMileageService{
681 } 657 }
682 658
683 } 659 }
684 - /*if(childTaskPlans.isEmpty()){  
685 - if(scheduleRealInfo.getStatus()!=-1){  
686 - if(item.equals("zgf")){  
687 - if(fcsj>=zgf1 && fcsj<=zgf2){  
688 - sjbc++;  
689 - }  
690 - }else if(item.equals("wgf")){  
691 - if(fcsj>=wgf1 && fcsj<=wgf2){  
692 - sjbc++;  
693 - }  
694 - }else{  
695 - sjbc++;  
696 - }  
697 -  
698 - }  
699 - }else{  
700 - if(scheduleRealInfo.getStatus() == -1){  
701 - boolean fage=false;  
702 - Iterator<ChildTaskPlan> it = childTaskPlans.iterator();  
703 - while(it.hasNext()){  
704 - ChildTaskPlan childTaskPlan = it.next();  
705 - if(!childTaskPlan.isDestroy()){  
706 - if(childTaskPlan.getMileageType().equals("service")){  
707 - fage=true;  
708 - }  
709 - }  
710 -  
711 - }  
712 - if(fage){  
713 - if(item.equals("zgf")){  
714 - if(fcsj>=zgf1 && fcsj<=zgf2){  
715 - sjbc++;  
716 - }  
717 - }else if(item.equals("wgf")){  
718 - if(fcsj>=wgf1 && fcsj<=wgf2){  
719 - sjbc++;  
720 - }  
721 - }else{  
722 - sjbc++;  
723 - }  
724 - }  
725 -  
726 - }else{  
727 - if(item.equals("zgf")){  
728 - if(fcsj>=zgf1 && fcsj<=zgf2){  
729 - sjbc++;  
730 - }  
731 - }else if(item.equals("wgf")){  
732 - if(fcsj>=wgf1 && fcsj<=wgf2){  
733 - sjbc++;  
734 - }  
735 - }else{  
736 - sjbc++;  
737 - }  
738 - }  
739 - }*/  
740 } 660 }
741 } 661 }
742 } 662 }
@@ -750,14 +670,13 @@ public class CulateMileageServiceImpl implements CulateMileageService{ @@ -750,14 +670,13 @@ public class CulateMileageServiceImpl implements CulateMileageService{
750 double ksgl =0; 670 double ksgl =0;
751 for (int i = 0; i < lists.size(); i++) { 671 for (int i = 0; i < lists.size(); i++) {
752 ScheduleRealInfo scheduleRealInfo=lists.get(i); 672 ScheduleRealInfo scheduleRealInfo=lists.get(i);
753 - if (!(scheduleRealInfo.getBcType().equals("in")  
754 - || scheduleRealInfo.getBcType().equals("out"))) { 673 + if (!isInOut(scheduleRealInfo)) {
755 Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks(); 674 Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
756 if(!childTaskPlans.isEmpty()){ 675 if(!childTaskPlans.isEmpty()){
757 Iterator<ChildTaskPlan> it = childTaskPlans.iterator(); 676 Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
758 while (it.hasNext()) { 677 while (it.hasNext()) {
759 ChildTaskPlan childTaskPlan = it.next(); 678 ChildTaskPlan childTaskPlan = it.next();
760 - if(childTaskPlan.getMileageType().equals("empty")){ 679 + if(childTaskPlan.getMileageType().equals("empty") && childTaskPlan.getCcId()==null){
761 if (!childTaskPlan.isDestroy()) { 680 if (!childTaskPlan.isDestroy()) {
762 Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage(); 681 Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
763 ksgl=Arith.add(ksgl,jhgl); 682 ksgl=Arith.add(ksgl,jhgl);
@@ -786,7 +705,7 @@ public class CulateMileageServiceImpl implements CulateMileageService{ @@ -786,7 +705,7 @@ public class CulateMileageServiceImpl implements CulateMileageService{
786 Iterator<ChildTaskPlan> it = childTaskPlans.iterator(); 705 Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
787 while (it.hasNext()) { 706 while (it.hasNext()) {
788 ChildTaskPlan childTaskPlan = it.next(); 707 ChildTaskPlan childTaskPlan = it.next();
789 - if(childTaskPlan.getMileageType().equals("empty")){ 708 + if(childTaskPlan.getMileageType().equals("empty") && childTaskPlan.getCcId()==null){
790 if (!childTaskPlan.isDestroy()) { 709 if (!childTaskPlan.isDestroy()) {
791 Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage(); 710 Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
792 jcclc=Arith.add(jcclc,jhgl); 711 jcclc=Arith.add(jcclc,jhgl);
@@ -907,7 +826,7 @@ public class CulateMileageServiceImpl implements CulateMileageService{ @@ -907,7 +826,7 @@ public class CulateMileageServiceImpl implements CulateMileageService{
907 double jcclc =0; 826 double jcclc =0;
908 for (int i = 0; i < lists.size(); i++) { 827 for (int i = 0; i < lists.size(); i++) {
909 ScheduleRealInfo scheduleRealInfo=lists.get(i); 828 ScheduleRealInfo scheduleRealInfo=lists.get(i);
910 - if(!scheduleRealInfo.isSflj()){ 829 + if(!scheduleRealInfo.isSflj() && !scheduleRealInfo.isCcService()){
911 if (scheduleRealInfo.getBcType().equals("in") 830 if (scheduleRealInfo.getBcType().equals("in")
912 || scheduleRealInfo.getBcType().equals("out")|| scheduleRealInfo.getBcType().equals("ldks")) { 831 || scheduleRealInfo.getBcType().equals("out")|| scheduleRealInfo.getBcType().equals("ldks")) {
913 if(!scheduleRealInfo.isSflj()){ 832 if(!scheduleRealInfo.isSflj()){
@@ -946,16 +865,17 @@ public class CulateMileageServiceImpl implements CulateMileageService{ @@ -946,16 +865,17 @@ public class CulateMileageServiceImpl implements CulateMileageService{
946 //有子任务 865 //有子任务
947 if (cts != null && cts.size() > 0) { 866 if (cts != null && cts.size() > 0) {
948 for(ChildTaskPlan c : cts){ 867 for(ChildTaskPlan c : cts){
949 - if(item.equals("其他")){  
950 - if(c.isDestroy() &&  
951 - ((c.getDestroyReason()==null?"": c.getDestroyReason()).equals(item)||  
952 - (c.getDestroyReason()==null?"": c.getDestroyReason()).equals("")))  
953 - sum = Arith.add(sum, c.getMileage());  
954 - }else{  
955 - if(c.isDestroy() && (c.getDestroyReason()==null?"": c.getDestroyReason()).equals(item))  
956 - sum = Arith.add(sum, c.getMileage()); 868 + if(c.getCcId()==null){
  869 + if(item.equals("其他")){
  870 + if(c.isDestroy() &&
  871 + ((c.getDestroyReason()==null?"": c.getDestroyReason()).equals(item)||
  872 + (c.getDestroyReason()==null?"": c.getDestroyReason()).equals("")))
  873 + sum = Arith.add(sum, c.getMileage());
  874 + }else{
  875 + if(c.isDestroy() && (c.getDestroyReason()==null?"": c.getDestroyReason()).equals(item))
  876 + sum = Arith.add(sum, c.getMileage());
  877 + }
957 } 878 }
958 -  
959 } 879 }
960 } 880 }
961 else if(isInOut(sch)) 881 else if(isInOut(sch))
@@ -984,7 +904,8 @@ public class CulateMileageServiceImpl implements CulateMileageService{ @@ -984,7 +904,8 @@ public class CulateMileageServiceImpl implements CulateMileageService{
984 int fzbc=0; 904 int fzbc=0;
985 for (int i = 0; i < lists.size(); i++) { 905 for (int i = 0; i < lists.size(); i++) {
986 ScheduleRealInfo scheduleRealInfo=lists.get(i); 906 ScheduleRealInfo scheduleRealInfo=lists.get(i);
987 - if (scheduleRealInfo.getBcType().equals("venting")) { 907 + if (scheduleRealInfo.getBcType().equals("venting")
  908 + || scheduleRealInfo.getBcType().equals("major")) {
988 // if(!scheduleRealInfo.isSflj()){ 909 // if(!scheduleRealInfo.isSflj()){
989 String[] fcsjStr = scheduleRealInfo.getFcsj().split(":"); 910 String[] fcsjStr = scheduleRealInfo.getFcsj().split(":");
990 long fcsj= Long.parseLong(fcsjStr[0])*60+Long.parseLong(fcsjStr[1]); 911 long fcsj= Long.parseLong(fcsjStr[0])*60+Long.parseLong(fcsjStr[1]);
src/main/java/com/bsth/service/report/impl/ReportServiceImpl.java
@@ -1838,7 +1838,7 @@ public class ReportServiceImpl implements ReportService{ @@ -1838,7 +1838,7 @@ public class ReportServiceImpl implements ReportService{
1838 || scheduleRealInfo.getBcType().equals("ldks"))) { 1838 || scheduleRealInfo.getBcType().equals("ldks"))) {
1839 // Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks(); 1839 // Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
1840 // if(childTaskPlans.isEmpty()){ 1840 // if(childTaskPlans.isEmpty()){
1841 - if(scheduleRealInfo.isSflj()){ 1841 + if(scheduleRealInfo.isSflj() && !scheduleRealInfo.isCcService()){
1842 Map<String, Object> newMap=new HashMap<String,Object>(); 1842 Map<String, Object> newMap=new HashMap<String,Object>();
1843 newMap.put("lp", scheduleRealInfo.getLpName()); 1843 newMap.put("lp", scheduleRealInfo.getLpName());
1844 newMap.put("nbbm", scheduleRealInfo.getClZbh()); 1844 newMap.put("nbbm", scheduleRealInfo.getClZbh());
@@ -1916,7 +1916,7 @@ public class ReportServiceImpl implements ReportService{ @@ -1916,7 +1916,7 @@ public class ReportServiceImpl implements ReportService{
1916 if(cts != null && cts.size() > 0){ 1916 if(cts != null && cts.size() > 0){
1917 lists.add(s); 1917 lists.add(s);
1918 }else{ 1918 }else{
1919 - if(s.getZdsjActual()!=null){ 1919 + if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
1920 lists.add(s); 1920 lists.add(s);
1921 } 1921 }
1922 } 1922 }
@@ -2534,7 +2534,7 @@ public class ReportServiceImpl implements ReportService{ @@ -2534,7 +2534,7 @@ public class ReportServiceImpl implements ReportService{
2534 if(cts != null && cts.size() > 0){ 2534 if(cts != null && cts.size() > 0){
2535 lists.add(s); 2535 lists.add(s);
2536 }else{ 2536 }else{
2537 - if(s.getZdsjActual()!=null){ 2537 + if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
2538 lists.add(s); 2538 lists.add(s);
2539 } 2539 }
2540 } 2540 }
src/main/java/com/bsth/service/schedule/impl/PeopleCarPlanServiceImpl.java
@@ -42,7 +42,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -42,7 +42,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
42 List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>(); 42 List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>();
43 43
44 try { 44 try {
45 - String sql = "select * from bsth_c_s_sp_info_real where DATE_FORMAT(schedule_date,'%Y-%m-%d') = '"+date+"'"; 45 + String sql = "select * from bsth_c_s_sp_info_real where schedule_date_str = '"+date+"'";
46 46
47 if(line.length() != 0) 47 if(line.length() != 0)
48 sql += " and xl_bm = '"+line+"'"; 48 sql += " and xl_bm = '"+line+"'";
@@ -54,7 +54,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -54,7 +54,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
54 @Override 54 @Override
55 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException { 55 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
56 ScheduleRealInfo schedule = new ScheduleRealInfo(); 56 ScheduleRealInfo schedule = new ScheduleRealInfo();
57 - schedule.setScheduleDateStr(rs.getString("schedule_date_Str")); 57 + schedule.setScheduleDateStr(rs.getString("schedule_date_str"));
58 schedule.setRealExecDate(rs.getString("real_exec_date")); 58 schedule.setRealExecDate(rs.getString("real_exec_date"));
59 schedule.setXlName(rs.getString("xl_name")); 59 schedule.setXlName(rs.getString("xl_name"));
60 schedule.setLpName(rs.getString("lp_name")); 60 schedule.setLpName(rs.getString("lp_name"));
@@ -80,6 +80,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -80,6 +80,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
80 schedule.setsGh(rs.getString("s_gh")); 80 schedule.setsGh(rs.getString("s_gh"));
81 schedule.setsName(rs.getString("s_name")); 81 schedule.setsName(rs.getString("s_name"));
82 schedule.setSpId(rs.getLong("sp_id")); 82 schedule.setSpId(rs.getLong("sp_id"));
  83 + schedule.setCcService(rs.getBoolean("cc_service"));
83 84
84 if(schedule.getFcsjActual() != null && schedule.getFcsjActual().trim().length() == 0){ 85 if(schedule.getFcsjActual() != null && schedule.getFcsjActual().trim().length() == 0){
85 schedule.setFcsjActual(null); 86 schedule.setFcsjActual(null);
@@ -175,7 +176,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -175,7 +176,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
175 } 176 }
176 177
177 if(map.get("subCompany")!=null){ 178 if(map.get("subCompany")!=null){
178 - subCompany=map.get("subCompany").toString(); 179 + subCompany = map.get("subCompany").toString();
179 } 180 }
180 String line = map.get("line").toString(); 181 String line = map.get("line").toString();
181 String date = map.get("date").toString(); 182 String date = map.get("date").toString();
@@ -187,7 +188,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -187,7 +188,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
187 188
188 try { 189 try {
189 190
190 - String sql = "select * from bsth_c_s_sp_info where DATE_FORMAT(schedule_date,'%Y-%m-%d') = '"+date+"'"; 191 + String sql = "select * from bsth_c_s_sp_info where schedule_date = '"+date+"'";
191 if(line.length() != 0){ 192 if(line.length() != 0){
192 sql += " and xl_bm = '"+line+"'"; 193 sql += " and xl_bm = '"+line+"'";
193 } 194 }
@@ -364,7 +365,10 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -364,7 +365,10 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
364 int jhsb = 0, sjsb = 0, jhmb = 0, sjmb = 0; 365 int jhsb = 0, sjsb = 0, jhmb = 0, sjmb = 0;
365 int jhzgf = 0, sjzgf = 0, jhwgf = 0, sjwgf = 0; 366 int jhzgf = 0, sjzgf = 0, jhwgf = 0, sjwgf = 0;
366 for(ScheduleRealInfo schedule : keyMap.get(key)){ 367 for(ScheduleRealInfo schedule : keyMap.get(key)){
367 -// schedule.setFcsjAll(schedule.getFcsj()); 368 + if(schedule.isCcService()){
  369 + continue;
  370 + }
  371 +
368 if(companyName.length() == 0 && schedule.getGsName() != null) 372 if(companyName.length() == 0 && schedule.getGsName() != null)
369 companyName = schedule.getGsName(); 373 companyName = schedule.getGsName();
370 if(subCompanyName.length() == 0 && schedule.getFgsName() != null) 374 if(subCompanyName.length() == 0 && schedule.getFgsName() != null)
@@ -547,7 +551,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -547,7 +551,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
547 } 551 }
548 try { 552 try {
549 553
550 - String sql = "select * from bsth_c_s_sp_info_real where DATE_FORMAT(schedule_date,'%Y-%m-%d') >= '"+startDate+"' and DATE_FORMAT(schedule_date,'%Y-%m-%d') <= '"+endDate+"'"; 554 + String sql = "select * from bsth_c_s_sp_info_real where schedule_date_str >= '"+startDate+"' and schedule_date_str <= '"+endDate+"'";
551 if(line.length() != 0){ 555 if(line.length() != 0){
552 sql += " and xl_bm = '"+line+"'"; 556 sql += " and xl_bm = '"+line+"'";
553 } 557 }
@@ -565,7 +569,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -565,7 +569,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
565 @Override 569 @Override
566 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException { 570 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
567 ScheduleRealInfo schedule = new ScheduleRealInfo(); 571 ScheduleRealInfo schedule = new ScheduleRealInfo();
568 - schedule.setScheduleDateStr(rs.getString("schedule_date_Str")); 572 + schedule.setScheduleDateStr(rs.getString("schedule_date_str"));
569 schedule.setXlName(rs.getString("xl_name")); 573 schedule.setXlName(rs.getString("xl_name"));
570 schedule.setBcType(rs.getString("bc_type")); 574 schedule.setBcType(rs.getString("bc_type"));
571 schedule.setGsName(rs.getString("gs_name")); 575 schedule.setGsName(rs.getString("gs_name"));
@@ -579,6 +583,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -579,6 +583,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
579 schedule.setBcsj(rs.getInt("bcsj")); 583 schedule.setBcsj(rs.getInt("bcsj"));
580 schedule.setQdzName(rs.getString("qdz_name")); 584 schedule.setQdzName(rs.getString("qdz_name"));
581 schedule.setSpId(rs.getLong("sp_id")); 585 schedule.setSpId(rs.getLong("sp_id"));
  586 + schedule.setCcService(rs.getBoolean("cc_service"));
582 587
583 if(schedule.getFcsjActual() != null && schedule.getFcsjActual().trim().length() == 0){ 588 if(schedule.getFcsjActual() != null && schedule.getFcsjActual().trim().length() == 0){
584 schedule.setFcsjActual(null); 589 schedule.setFcsjActual(null);
@@ -636,6 +641,9 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -636,6 +641,9 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
636 641
637 //分组计算 同时判断是否所选时刻信息 642 //分组计算 同时判断是否所选时刻信息
638 for(ScheduleRealInfo schedule : list){ 643 for(ScheduleRealInfo schedule : list){
  644 + if(schedule.isCcService()){
  645 + continue;
  646 + }
639 DO:{ 647 DO:{
640 if(model.length() != 0){ 648 if(model.length() != 0){
641 for(Long tt : ttList){ 649 for(Long tt : ttList){
@@ -840,7 +848,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -840,7 +848,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
840 } 848 }
841 try { 849 try {
842 850
843 - String sql = "select * from bsth_c_s_sp_info_real where DATE_FORMAT(schedule_date,'%Y-%m-%d') >= '"+startDate+"' and DATE_FORMAT(schedule_date,'%Y-%m-%d') <= '"+endDate+"'"; 851 + String sql = "select * from bsth_c_s_sp_info_real where schedule_date_str >= '"+startDate+"' and schedule_date_str <= '"+endDate+"'";
844 if(line.length() != 0){ 852 if(line.length() != 0){
845 sql += " and xl_bm = '"+line+"'"; 853 sql += " and xl_bm = '"+line+"'";
846 } 854 }
@@ -862,7 +870,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -862,7 +870,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
862 @Override 870 @Override
863 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException { 871 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
864 ScheduleRealInfo schedule = new ScheduleRealInfo(); 872 ScheduleRealInfo schedule = new ScheduleRealInfo();
865 - schedule.setScheduleDateStr(rs.getString("schedule_date_Str")); 873 + schedule.setScheduleDateStr(rs.getString("schedule_date_str"));
866 schedule.setRealExecDate(rs.getString("real_exec_date")); 874 schedule.setRealExecDate(rs.getString("real_exec_date"));
867 schedule.setXlName(rs.getString("xl_name")); 875 schedule.setXlName(rs.getString("xl_name"));
868 schedule.setBcType(rs.getString("bc_type")); 876 schedule.setBcType(rs.getString("bc_type"));
@@ -878,6 +886,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -878,6 +886,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
878 schedule.setBcsj(rs.getInt("bcsj")); 886 schedule.setBcsj(rs.getInt("bcsj"));
879 schedule.setQdzName(rs.getString("qdz_name")); 887 schedule.setQdzName(rs.getString("qdz_name"));
880 schedule.setSpId(rs.getLong("sp_id")); 888 schedule.setSpId(rs.getLong("sp_id"));
  889 + schedule.setCcService(rs.getBoolean("cc_service"));
881 890
882 if(schedule.getFcsjActual() != null && schedule.getFcsjActual().trim().length() == 0){ 891 if(schedule.getFcsjActual() != null && schedule.getFcsjActual().trim().length() == 0){
883 schedule.setFcsjActual(null); 892 schedule.setFcsjActual(null);
@@ -973,6 +982,10 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -973,6 +982,10 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
973 982
974 //按时间段分组 983 //按时间段分组
975 for(ScheduleRealInfo schedule : list){ 984 for(ScheduleRealInfo schedule : list){
  985 + if(schedule.isCcService()){
  986 + continue;
  987 + }
  988 +
976 if(companyName.length()==0&&schedule.getGsName()!=null 989 if(companyName.length()==0&&schedule.getGsName()!=null
977 &&schedule.getGsName().trim().length()!=0){ 990 &&schedule.getGsName().trim().length()!=0){
978 companyName = schedule.getGsName(); 991 companyName = schedule.getGsName();
@@ -1230,9 +1243,9 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -1230,9 +1243,9 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1230 date = sdf.format(new Date()); 1243 date = sdf.format(new Date());
1231 1244
1232 try { 1245 try {
1233 - String sql = "select a.schedule_date_Str, a.real_exec_date, a.xl_name, a.fcsj, a.fcsj_actual, a.zdsj, a.zdsj_actual, a.qdz_name, a.zdz_name, a.xl_dir, a.status, a.gs_name, a.fgs_name,"  
1234 - + " b.start_opt from bsth_c_s_sp_info_real a left join (select line, start_opt from bsth_c_line_config order by id desc) b on a.xl_bm = b.line"  
1235 - + " where DATE_FORMAT(schedule_date,'%Y-%m-%d') = '"+date+"'" 1246 + String sql = "select a.schedule_date_str, a.real_exec_date, a.xl_name, a.fcsj, a.fcsj_actual, a.zdsj, a.zdsj_actual, a.qdz_name, a.zdz_name, a.xl_dir, a.status, a.gs_name, a.fgs_name,"
  1247 + + " a.cc_service, b.start_opt from bsth_c_s_sp_info_real a left join (select line, start_opt from bsth_c_line_config order by id desc) b on a.xl_bm = b.line"
  1248 + + " where schedule_date_str = '"+date+"'"
1236 + " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks' and bc_type != 'region'"; 1249 + " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks' and bc_type != 'region'";
1237 if(line.trim().length() != 0) 1250 if(line.trim().length() != 0)
1238 sql += " and xl_bm = '"+line+"'"; 1251 sql += " and xl_bm = '"+line+"'";
@@ -1244,7 +1257,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -1244,7 +1257,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1244 @Override 1257 @Override
1245 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException { 1258 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
1246 ScheduleRealInfo schedule = new ScheduleRealInfo(); 1259 ScheduleRealInfo schedule = new ScheduleRealInfo();
1247 - schedule.setScheduleDateStr(rs.getString("schedule_date_Str")); 1260 + schedule.setScheduleDateStr(rs.getString("schedule_date_str"));
1248 schedule.setRealExecDate(rs.getString("real_exec_date")); 1261 schedule.setRealExecDate(rs.getString("real_exec_date"));
1249 schedule.setXlName(rs.getString("xl_name")); 1262 schedule.setXlName(rs.getString("xl_name"));
1250 schedule.setFcsj(rs.getString("fcsj")); 1263 schedule.setFcsj(rs.getString("fcsj"));
@@ -1257,6 +1270,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -1257,6 +1270,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1257 schedule.setStatus(rs.getInt("status")); 1270 schedule.setStatus(rs.getInt("status"));
1258 schedule.setGsName(rs.getString("gs_name")); 1271 schedule.setGsName(rs.getString("gs_name"));
1259 schedule.setFgsName(rs.getString("fgs_name")); 1272 schedule.setFgsName(rs.getString("fgs_name"));
  1273 + schedule.setCcService(rs.getBoolean("cc_service"));
1260 1274
1261 int startOpt = 0; 1275 int startOpt = 0;
1262 if(rs.getString("start_opt") != null && rs.getString("start_opt").trim().length() != 0){ 1276 if(rs.getString("start_opt") != null && rs.getString("start_opt").trim().length() != 0){
@@ -1298,7 +1312,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -1298,7 +1312,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1298 String companyName = "", subCompanyName = ""; 1312 String companyName = "", subCompanyName = "";
1299 1313
1300 for(ScheduleRealInfo s : list){ 1314 for(ScheduleRealInfo s : list){
1301 - if(lineSet.contains(s.getXlName())){ 1315 + if(lineSet.contains(s.getXlName()) || s.isCcService()){
1302 continue; 1316 continue;
1303 } 1317 }
1304 String xlName = s.getXlName(); 1318 String xlName = s.getXlName();
@@ -1456,9 +1470,9 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -1456,9 +1470,9 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1456 } 1470 }
1457 1471
1458 try { 1472 try {
1459 - String sql = "select a.schedule_date_Str, a.real_exec_date, a.xl_name, a.fcsj, a.fcsj_actual, a.zdsj, a.zdsj_actual, a.qdz_name, a.zdz_name, a.xl_dir, a.status, a.gs_name, a.fgs_name,"  
1460 - + " b.start_opt from bsth_c_s_sp_info_real a left join (select line, start_opt from bsth_c_line_config order by id desc) b on a.xl_bm = b.line"  
1461 - + " where DATE_FORMAT(schedule_date,'%Y-%m-%d') >= '"+startDate+"' and DATE_FORMAT(schedule_date,'%Y-%m-%d') <= '"+endDate+"'" 1473 + String sql = "select a.schedule_date_str, a.real_exec_date, a.xl_name, a.fcsj, a.fcsj_actual, a.zdsj, a.zdsj_actual, a.qdz_name, a.zdz_name, a.xl_dir, a.status, a.gs_name, a.fgs_name,"
  1474 + + " a.cc_service, b.start_opt from bsth_c_s_sp_info_real a left join (select line, start_opt from bsth_c_line_config order by id desc) b on a.xl_bm = b.line"
  1475 + + " where schedule_date_str >= '"+startDate+"' and schedule_date_str <= '"+endDate+"'"
1462 + " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks' and bc_type != 'region'"; 1476 + " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks' and bc_type != 'region'";
1463 if(line.length() != 0) 1477 if(line.length() != 0)
1464 sql += " and xl_bm = '"+line+"'"; 1478 sql += " and xl_bm = '"+line+"'";
@@ -1470,7 +1484,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -1470,7 +1484,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1470 @Override 1484 @Override
1471 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException { 1485 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
1472 ScheduleRealInfo schedule = new ScheduleRealInfo(); 1486 ScheduleRealInfo schedule = new ScheduleRealInfo();
1473 - schedule.setScheduleDateStr(rs.getString("schedule_date_Str")); 1487 + schedule.setScheduleDateStr(rs.getString("schedule_date_str"));
1474 schedule.setRealExecDate(rs.getString("real_exec_date")); 1488 schedule.setRealExecDate(rs.getString("real_exec_date"));
1475 schedule.setXlName(rs.getString("xl_name")); 1489 schedule.setXlName(rs.getString("xl_name"));
1476 schedule.setFcsj(rs.getString("fcsj")); 1490 schedule.setFcsj(rs.getString("fcsj"));
@@ -1483,6 +1497,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -1483,6 +1497,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1483 schedule.setStatus(rs.getInt("status")); 1497 schedule.setStatus(rs.getInt("status"));
1484 schedule.setGsName(rs.getString("gs_name")); 1498 schedule.setGsName(rs.getString("gs_name"));
1485 schedule.setFgsName(rs.getString("fgs_name")); 1499 schedule.setFgsName(rs.getString("fgs_name"));
  1500 + schedule.setCcService(rs.getBoolean("cc_service"));
1486 1501
1487 int startOpt = 0; 1502 int startOpt = 0;
1488 if(rs.getString("start_opt") != null && rs.getString("start_opt").trim().length() != 0){ 1503 if(rs.getString("start_opt") != null && rs.getString("start_opt").trim().length() != 0){
@@ -1524,7 +1539,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -1524,7 +1539,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1524 String companyName = "", subCompanyName = ""; 1539 String companyName = "", subCompanyName = "";
1525 1540
1526 for(ScheduleRealInfo s : list){ 1541 for(ScheduleRealInfo s : list){
1527 - if(lineSet.contains(s.getXlName())){ 1542 + if(lineSet.contains(s.getXlName()) || s.isCcService()){
1528 continue; 1543 continue;
1529 } 1544 }
1530 String xlName = s.getXlName(); 1545 String xlName = s.getXlName();
@@ -1716,7 +1731,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -1716,7 +1731,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1716 1731
1717 String sql = 1732 String sql =
1718 "select r.id, r.schedule_date_str, r.xl_name, r.cl_zbh, r.j_gh, r.j_name, r.fcsj, d.timestamp, d.reply46, d.reply47, d.reply46time, d.reply47time, r.gs_name, r.fgs_name " + 1733 "select r.id, r.schedule_date_str, r.xl_name, r.cl_zbh, r.j_gh, r.j_name, r.fcsj, d.timestamp, d.reply46, d.reply47, d.reply46time, d.reply47time, r.gs_name, r.fgs_name " +
1719 - "FROM bsth_c_s_sp_info_real as r left join bsth_v_directive_60 as d on r.id = d.sch and d.is_dispatch = 1 where DATE_FORMAT(schedule_date,'%Y-%m-%d') = '"+date+"'"; 1734 + "FROM bsth_c_s_sp_info_real as r left join bsth_v_directive_60 as d on r.id = d.sch and d.is_dispatch = 1 where schedule_date_str = '"+date+"'";
1720 if(line.length() != 0){ 1735 if(line.length() != 0){
1721 sql += " and xl_bm = '"+line+"'"; 1736 sql += " and xl_bm = '"+line+"'";
1722 } 1737 }
@@ -1728,7 +1743,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -1728,7 +1743,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1728 } 1743 }
1729 sql += " union " + 1744 sql += " union " +
1730 "select r.id, r.schedule_date_str, r.xl_name, r.cl_zbh, r.j_gh, r.j_name, r.fcsj, d.timestamp, d.reply46, d.reply47, d.reply46time, d.reply47time, r.gs_name, r.fgs_name " + 1745 "select r.id, r.schedule_date_str, r.xl_name, r.cl_zbh, r.j_gh, r.j_name, r.fcsj, d.timestamp, d.reply46, d.reply47, d.reply46time, d.reply47time, r.gs_name, r.fgs_name " +
1731 - "FROM bsth_c_s_sp_info_real as r right join bsth_v_directive_60 as d on r.id = d.sch where d.is_dispatch = 1 and DATE_FORMAT(schedule_date,'%Y-%m-%d') = '"+date+"'"; 1746 + "FROM bsth_c_s_sp_info_real as r right join bsth_v_directive_60 as d on r.id = d.sch where d.is_dispatch = 1 and schedule_date_str = '"+date+"'";
1732 if(line.length() != 0){ 1747 if(line.length() != 0){
1733 sql += " and xl_bm = '"+line+"'"; 1748 sql += " and xl_bm = '"+line+"'";
1734 } 1749 }
src/main/resources/static/pages/base/timesmodel/js/add-form-wizard.js
@@ -522,10 +522,16 @@ var SKBFormWizard = function() { @@ -522,10 +522,16 @@ var SKBFormWizard = function() {
522 'dgmaxtzsj' : {required : true,number : true}, // 低谷最大停站时间,必填项、必须为整数. 522 'dgmaxtzsj' : {required : true,number : true}, // 低谷最大停站时间,必填项、必须为整数.
523 523
524 // 发车间隙分析用参数 524 // 发车间隙分析用参数
525 - 'fcjx': {required: true}, // 时段发车间隙,TODO:貌似没发启用form验证 525 + //'fcjx': {required: true}, // 时段发车间隙,TODO:貌似没发启用form验证
526 'stt': {required: true}, // 停站类型,TODO:貌似没发启用form验证 526 'stt': {required: true}, // 停站类型,TODO:貌似没发启用form验证
  527 + 'zgffcjxmin' : {required : true,number : true,digits: true},// 早高峰最小发车间隔.
  528 + 'zgffcjxmax' : {required : true,number : true,digits: true},// 早高峰最大发车间隔.
  529 + 'wffcjxmin' : {required : true,number : true,digits: true},// 晚高峰最小发车间隔.
  530 + 'wffcjxmax' : {required : true,number : true,digits: true},// 晚高峰最大发车间隔.
  531 + 'dgfcjxmin' : {required : true,number : true,digits: true},// 低谷最小发车间隔.
  532 + 'dgfcjxmax' : {required : true,number : true,digits: true},// 低谷最大发车间隔.
527 'gfjypcs': {required : true,number : true,digits: true}, // 高峰建议配车数 533 'gfjypcs': {required : true,number : true,digits: true}, // 高峰建议配车数
528 - 'jblps': {required : true,number : true,digits: true} // 加班车路牌 534 + 'jbclcount': {required : true,number : true,digits: true} // 建议加班车
529 }, 535 },
530 536
531 /** 537 /**
@@ -934,7 +940,7 @@ var SKBFormWizard = function() { @@ -934,7 +940,7 @@ var SKBFormWizard = function() {
934 }); 940 });
935 941
936 // 发车间隙选择控件 942 // 发车间隙选择控件
937 - ComponentsBootstrapTagsinput.init_fcjx(); 943 + //ComponentsBootstrapTagsinput.init_fcjx();
938 // 停站类型选择控件 944 // 停站类型选择控件
939 ComponentsBootstrapTagsinput.init_stoptype(); 945 ComponentsBootstrapTagsinput.init_stoptype();
940 946
src/main/resources/static/pages/base/timesmodel/js/gantt.js
@@ -50,7 +50,7 @@ @@ -50,7 +50,7 @@
50 var CSMap = null,data = null; 50 var CSMap = null,data = null;
51 51
52 // 创建ParameterObj 52 // 创建ParameterObj
53 - var _paramObj = StrategyUtils.getFactory().createParameterObj(map, dataMap); 53 + var _paramObj;
54 54
55 if(map.baseRes== '0') { 55 if(map.baseRes== '0') {
56 CSMap = getMaxCarAndStopSpace0(map,seMap); 56 CSMap = getMaxCarAndStopSpace0(map,seMap);
@@ -62,6 +62,8 @@ @@ -62,6 +62,8 @@
62 map.fcjx = CSMap.fcjx; 62 map.fcjx = CSMap.fcjx;
63 }else if (map.baseRes == '2') { 63 }else if (map.baseRes == '2') {
64 // TODO:之后可能有新的参数加入 64 // TODO:之后可能有新的参数加入
  65 + _paramObj = StrategyUtils.getFactory().createParameterObj(map, dataMap);
  66 +
65 map.clzs = StrategyUtils.calcuClzx(_paramObj); 67 map.clzs = StrategyUtils.calcuClzx(_paramObj);
66 CSMap = getMaxCarAndStopSpace1(map); 68 CSMap = getMaxCarAndStopSpace1(map);
67 69
src/main/resources/static/pages/base/timesmodel/js/strategy/ParameterObj.js
@@ -105,7 +105,6 @@ var ParameterObj = function(formMap, dataMap) { @@ -105,7 +105,6 @@ var ParameterObj = function(formMap, dataMap) {
105 105
106 // 计算各个时段的发车间隙 106 // 计算各个时段的发车间隙
107 var _fcjxIntervalObj_fun = function() { 107 var _fcjxIntervalObj_fun = function() {
108 - var _fcjxes = _formMap.fcjx.split(",");  
109 var _rtn = { 108 var _rtn = {
110 mpeakfcjx : {}, // 早高峰 109 mpeakfcjx : {}, // 早高峰
111 epeakfcjx : {}, // 晚高峰 110 epeakfcjx : {}, // 晚高峰
@@ -114,32 +113,34 @@ var ParameterObj = function(formMap, dataMap) { @@ -114,32 +113,34 @@ var ParameterObj = function(formMap, dataMap) {
114 var _fcjx = []; 113 var _fcjx = [];
115 var i = 0; 114 var i = 0;
116 115
117 - // TODO:这里按照顺序判定发车间隔 116 + // TODO:这里只有3个间隔,以后加其他的
118 // 1、早高峰间隙 117 // 1、早高峰间隙
119 // 2、晚高峰间隙 118 // 2、晚高峰间隙
120 - // 3、早低谷  
121 - // 4、平峰  
122 - // 5、晚低谷  
123 -  
124 - // 至少3个,系统暂时使用3个,有最小间隔,有最大间隔  
125 - if (_fcjxes.length < 3) {  
126 - alert("发车间隙至少3个(早高峰,晚高峰,低谷)");  
127 - throw "发车间隙至少3个(早高峰,晚高峰,低谷)";  
128 - } else {  
129 - for (i = 0; i < 3; i++) {  
130 - _fcjx = _fcjxes[i].split("/");  
131 - if (i == 0) {  
132 - _rtn.mpeakfcjx.min = parseInt(_fcjx[2].split("-")[0]);  
133 - _rtn.mpeakfcjx.max = parseInt(_fcjx[2].split("-")[1]);  
134 - } else if (i == 1) {  
135 - _rtn.epeakfcjx.min = parseInt(_fcjx[2].split("-")[0]);  
136 - _rtn.epeakfcjx.max = parseInt(_fcjx[2].split("-")[1]);  
137 - } else {  
138 - _rtn.troughfcjx.min = parseInt(_fcjx[2].split("-")[0]);  
139 - _rtn.troughfcjx.max = parseInt(_fcjx[2].split("-")[1]);  
140 - }  
141 - } 119 + // 3、低谷
  120 +
  121 + _rtn.mpeakfcjx.min = parseInt(_formMap.zgffcjxmin);
  122 + _rtn.mpeakfcjx.max = parseInt(_formMap.zgffcjxmax);
  123 +
  124 + _rtn.epeakfcjx.min = parseInt(_formMap.wffcjxmin);
  125 + _rtn.epeakfcjx.max = parseInt(_formMap.wffcjxmax);
  126 +
  127 + _rtn.troughfcjx.min = parseInt(_formMap.dgfcjxmin);
  128 + _rtn.troughfcjx.max = parseInt(_formMap.dgfcjxmax);
  129 +
  130 + // 做一些逻辑检查
  131 + if (_rtn.mpeakfcjx.min > _rtn.mpeakfcjx.max) {
  132 + alert("早高峰最小间隔大于最大间隔");
  133 + throw "早高峰最小间隔大于最大间隔";
  134 + }
  135 + if (_rtn.epeakfcjx.min > _rtn.epeakfcjx.max) {
  136 + alert("晚高峰最小间隔大于最大间隔");
  137 + throw "晚高峰最小间隔大于最大间隔";
142 } 138 }
  139 + if (_rtn.troughfcjx.min > _rtn.troughfcjx.max) {
  140 + alert("低谷最小间隔大于最大间隔");
  141 + throw "低谷最小间隔大于最大间隔";
  142 + }
  143 +
143 144
144 return _rtn; 145 return _rtn;
145 }; 146 };
@@ -502,7 +503,7 @@ var ParameterObj = function(formMap, dataMap) { @@ -502,7 +503,7 @@ var ParameterObj = function(formMap, dataMap) {
502 * @returns {Number|*} 503 * @returns {Number|*}
503 */ 504 */
504 getJBLpes: function() { 505 getJBLpes: function() {
505 - return parseInt(_formMap.jblps); 506 + return parseInt(_formMap.jbclcount);
506 }, 507 },
507 508
508 //----------------- 获取关联数据信息 -----------------// 509 //----------------- 获取关联数据信息 -----------------//
src/main/resources/static/pages/base/timesmodel/tepms/fcjx_temp.html
@@ -144,44 +144,55 @@ @@ -144,44 +144,55 @@
144 </div> 144 </div>
145 145
146 <div class="form-group"> 146 <div class="form-group">
147 - <div class="col-md-6 ">  
148 - <label class="control-label col-md-5"><span class="required"> * </span>时段发车间隔 :</label>  
149 - <div class="col-md-5 tagsDiv">  
150 - <div class="row" style="margin-left: 15px;">  
151 - <input type="text" value="" name="fcjx" id="fcjx_tagsinput" style="display: none;">  
152 - </div>  
153 -  
154 - <div class="row" style="margin-top: 10px;">  
155 - <label class="control-label col-md-4">开始时间:</label>  
156 - <div class="col-md-8">  
157 - <input type="text" class="form-control" placeholder="时段开始时间" id="fcjx_tagsinput_starttime">  
158 - </div>  
159 - </div>  
160 -  
161 - <div class="row" style="margin-top: 10px;">  
162 - <label class="control-label col-md-4">结束时间:</label>  
163 - <div class="col-md-8">  
164 - <input type="text" class="form-control" placeholder="时段结束时间" id="fcjx_tagsinput_endtime">  
165 - </div>  
166 - </div>  
167 -  
168 - <div class="row" style="margin-top: 10px;">  
169 - <label class="control-label col-md-4">间隔值:</label>  
170 - <div class="col-md-4">  
171 - <input type="number" class="form-control" placeholder="开始" id="fcjx_tagsinput_fvalue" min="1">  
172 - </div>  
173 - <div class="col-md-4">  
174 - <input type="number" class="form-control" placeholder="结束" id="fcjx_tagsinput_tvalue" min="1">  
175 - </div>  
176 - </div>  
177 -  
178 - <div class="row" style="margin-top: 10px;margin-left: 116px;">  
179 - <a href="javascript:" class="btn red" id="fcjx_tagsinput_add">添加</a>  
180 - </div> 147 + <div class="col-md-6">
  148 + <label class="control-label col-md-5"><span class="required"> * </span>早高峰发车间隔 :</label>
  149 + <div class="col-md-3" style="padding-right: 0px;">
  150 + <input type="text" class="form-control" name="zgffcjxmin" id="zgffcjxmin_id"
  151 + placeholder="最小间隔">
  152 + </div>
  153 + <div class="col-md-1" style="padding-top: 10px; font-size: 85%;">至</div>
  154 + <div class="col-md-3" style="padding-left: 0px;">
  155 + <input type="text" class="form-control" name="zgffcjxmax" id="zgffcjxmax_id"
  156 + placeholder="最大间隔">
181 </div> 157 </div>
182 </div> 158 </div>
  159 + <div class="col-md-6">
  160 + <label class="control-label col-md-5"><span class="required"> * </span>晚高峰发车间隔 :</label>
  161 + <div class="col-md-3" style="padding-right: 0px;">
  162 + <input type="text" class="form-control" name="wffcjxmin" id="wffcjxmin_id"
  163 + placeholder="最小间隔">
  164 + </div>
  165 + <div class="col-md-1" style="padding-top: 10px; font-size: 85%;">至</div>
  166 + <div class="col-md-3" style="padding-left: 0px;">
  167 + <input type="text" class="form-control" name="wffcjxmax" id="wffcjxmax_id"
  168 + placeholder="最大间隔">
  169 + </div>
  170 + </div>
  171 + </div>
183 172
  173 + <div class="form-group">
  174 + <div class="col-md-6">
  175 + <label class="control-label col-md-5"><span class="required"> * </span>低谷发车间隔 :</label>
  176 + <div class="col-md-3" style="padding-right: 0px;">
  177 + <input type="text" class="form-control" name="dgfcjxmin" id="dgfcjxmin_id"
  178 + placeholder="最小间隔">
  179 + </div>
  180 + <div class="col-md-1" style="padding-top: 10px; font-size: 85%;">至</div>
  181 + <div class="col-md-3" style="padding-left: 0px;">
  182 + <input type="text" class="form-control" name="dgfcjxmax" id="dgfcjxmax_id"
  183 + placeholder="最大间隔">
  184 + </div>
  185 + </div>
  186 + <div class="col-md-6">
  187 + <label class="control-label col-md-5"><span class="required"> * </span>建议加班车数 :</label>
  188 + <div class="col-md-5">
  189 + <input type="text" class="form-control" name="jbclcount" id="jbclcount_id"
  190 + placeholder="间隔">
  191 + </div>
  192 + </div>
  193 + </div>
184 194
  195 + <div class="form-group">
185 <div class="col-md-6"> 196 <div class="col-md-6">
186 <label class="control-label col-md-5"><span class="required"> * </span>停站类型 :</label> 197 <label class="control-label col-md-5"><span class="required"> * </span>停站类型 :</label>
187 <div class="col-md-5 tagsDiv"> 198 <div class="col-md-5 tagsDiv">
@@ -218,25 +229,14 @@ @@ -218,25 +229,14 @@
218 229
219 </div> 230 </div>
220 231
221 - </div>  
222 -  
223 - <div class="form-group">  
224 <div class="col-md-6"> 232 <div class="col-md-6">
225 <label class="control-label col-md-5"> 233 <label class="control-label col-md-5">
226 - <span class="required"> * </span> 高峰建议配车数 :</label> 234 + <span class="required"> * </span> 高峰建议配车数 :</label>
227 <div class="col-md-5"> 235 <div class="col-md-5">
228 <input type="text" class="form-control" placeholder="车辆数" name="gfjypcs" id="gfjypcsInput" min="1"> 236 <input type="text" class="form-control" placeholder="车辆数" name="gfjypcs" id="gfjypcsInput" min="1">
229 </div> 237 </div>
230 </div> 238 </div>
231 239
232 - <div class="col-md-6">  
233 - <label class="control-label col-md-5">  
234 - <span class="required"> * </span> 加班车路牌数 :</label>  
235 - <div class="col-md-5">  
236 - <input type="text" class="form-control" placeholder="加班路牌数" name="jblps" id="jblpsInput" min="1">  
237 - </div>  
238 - </div>  
239 -  
240 </div> 240 </div>
241 241
242 <!-- 隐藏字段-时间 --> 242 <!-- 隐藏字段-时间 -->
@@ -412,38 +412,76 @@ @@ -412,38 +412,76 @@
412 412
413 <div class="form-group"> 413 <div class="form-group">
414 <div class="col-md-6"> 414 <div class="col-md-6">
415 - <label class="control-label col-md-5">  
416 - <span class="required"> * </span> 时段发车间隔 :  
417 - </label> 415 + <label class="control-label col-md-5">早高峰最小发车间隔 :</label>
418 <div class="col-md-4"> 416 <div class="col-md-4">
419 - <p class="form-control-static" data-display="fcjx"> </p> 417 + <p class="form-control-static" data-display="zgffcjxmin"> </p>
420 </div> 418 </div>
421 </div> 419 </div>
422 <div class="col-md-6"> 420 <div class="col-md-6">
423 - <label class="control-label col-md-5">  
424 - <span class="required"> * </span> 停站类型 :  
425 - </label> 421 + <label class="control-label col-md-5">早高峰最大发车间隔 :</label>
426 <div class="col-md-4"> 422 <div class="col-md-4">
427 - <p class="form-control-static" data-display="stt"> </p> 423 + <p class="form-control-static" data-display="zgffcjxmax"> </p>
428 </div> 424 </div>
429 </div> 425 </div>
  426 + </div>
430 427
  428 + <div class="form-group">
  429 + <div class="col-md-6">
  430 + <label class="control-label col-md-5">晚高峰最小发车间隔 :</label>
  431 + <div class="col-md-4">
  432 + <p class="form-control-static" data-display="wffcjxmin"> </p>
  433 + </div>
  434 + </div>
  435 + <div class="col-md-6">
  436 + <label class="control-label col-md-5">晚高峰最大发车间隔 :</label>
  437 + <div class="col-md-4">
  438 + <p class="form-control-static" data-display="wffcjxmax"> </p>
  439 + </div>
  440 + </div>
431 </div> 441 </div>
432 442
433 <div class="form-group"> 443 <div class="form-group">
434 <div class="col-md-6"> 444 <div class="col-md-6">
435 - <label class="control-label col-md-5"> 高峰建议配车数 : </label> 445 + <label class="control-label col-md-5">低谷最小发车间隔 :</label>
436 <div class="col-md-4"> 446 <div class="col-md-4">
437 - <p class="form-control-static" data-display="gfjypcs"> </p> 447 + <p class="form-control-static" data-display="dgfcjxmin"> </p>
  448 + </div>
  449 + </div>
  450 + <div class="col-md-6">
  451 + <label class="control-label col-md-5">低谷最大发车间隔 :</label>
  452 + <div class="col-md-4">
  453 + <p class="form-control-static" data-display="dgfcjxmax"> </p>
438 </div> 454 </div>
439 </div> 455 </div>
  456 + </div>
  457 +
  458 + <div class="form-group">
440 <div class="col-md-6"> 459 <div class="col-md-6">
441 - <label class="control-label col-md-5"> 加班车路牌数 : </label> 460 + <label class="control-label col-md-5">
  461 + <span class="required"> * </span> 建议加班车数 :
  462 + </label>
442 <div class="col-md-4"> 463 <div class="col-md-4">
443 - <p class="form-control-static" data-display="jblps"> </p> 464 + <p class="form-control-static" data-display="jbclcount"> </p>
444 </div> 465 </div>
445 </div> 466 </div>
  467 + </div>
446 468
  469 + <div class="form-group">
  470 + <div class="col-md-6">
  471 + <label class="control-label col-md-5">
  472 + <span class="required"> * </span> 停站类型 :
  473 + </label>
  474 + <div class="col-md-4">
  475 + <p class="form-control-static" data-display="stt"> </p>
  476 + </div>
  477 + </div>
  478 +
  479 + <div class="col-md-6">
  480 + <label class="control-label col-md-5"> 高峰建议配车数 : </label>
  481 + <div class="col-md-4">
  482 + <p class="form-control-static" data-display="gfjypcs"> </p>
  483 + </div>
  484 + </div>
447 </div> 485 </div>
448 486
449 </script> 487 </script>
450 \ No newline at end of file 488 \ No newline at end of file
src/main/resources/static/pages/forms/statement/jobSummary.html
@@ -273,7 +273,13 @@ @@ -273,7 +273,13 @@
273 }) 273 })
274 274
275 $get('/report/jobHzxx',{line:line,date:date},function(result){ 275 $get('/report/jobHzxx',{line:line,date:date},function(result){
276 - console 276 + //临加
  277 + $("#ljbcs").html(result.ljbc);
  278 + $("#ljgls").html(result.ljgl)
  279 +
  280 + //烂班
  281 + $("#lbbcs").html(result.lbbc);
  282 + $("#lbgls").html(result.lbgl)
277 var list_xxsj=template('list_xxsj',result); 283 var list_xxsj=template('list_xxsj',result);
278 $('#forms .list_xxsj').html(list_xxsj); 284 $('#forms .list_xxsj').html(list_xxsj);
279 285
src/main/resources/static/pages/history_sch/edit/css/main.css 0 → 100644
  1 +input::-webkit-outer-spin-button,
  2 +input::-webkit-inner-spin-button{
  3 + display: none;
  4 +}
  5 +
  6 +input::-webkit-calendar-picker-indicator {
  7 + display: none;
  8 +}
  9 +
  10 +input::-webkit-datetime-edit { padding: 1px; }
  11 +
  12 +.ps-container > .ps-scrollbar-y-rail{
  13 + z-index: 1 !important;
  14 +}
  15 +
  16 +.ps-container > .ps-scrollbar-x-rail,
  17 +.ps-container > .ps-scrollbar-y-rail {
  18 + opacity: 0.6 !important;
  19 + padding: 0 !important;
  20 +}
  21 +/* ^_^ baidu map hide logo */
  22 +.anchorBL, .anchorBL, .amap-logo, .amap-copyright {
  23 + display: none;
  24 +}
  25 +
  26 +audio, canvas, img, svg, video {
  27 + max-width: none;
  28 +}
  29 +
  30 +html, body {
  31 + width: 100%;
  32 + height: 100%;
  33 + overflow: hidden;
  34 + margin-left: 0 !important;
  35 +}
  36 +
  37 +.main-container {
  38 + height: calc(100% - 120px);
  39 +}
  40 +
  41 +#main-tab-content {
  42 + height: 100%;
  43 + margin-bottom: 0;
  44 +}
  45 +
  46 +.uk-modal .uk-form.fv-form, .uk-modal .ct-modal-body {
  47 + margin-bottom: -20px !important;
  48 +}
  49 +
  50 +.uk-modal .uk-form.fv-form.fixed-tool {
  51 + width: 100%;
  52 + position: relative;
  53 + height: 100%;
  54 +}
  55 +
  56 +.uk-modal .ct-modal-body .uk-modal-footer {
  57 + margin-left: 0;
  58 +}
  59 +
  60 +.uk-modal .uk-form.fv-form.fixed-tool .uk-modal-footer {
  61 + position: absolute;
  62 + bottom: 0;
  63 + width: calc(100% - 20px);
  64 +}
  65 +
  66 +table.ct-fixed-table {
  67 + table-layout: fixed;
  68 +}
  69 +
  70 +table.ct-fixed-table tr.context-menu-active {
  71 + background: #f0f0f0;
  72 +}
  73 +
  74 +table.ct-fixed-table.uk-table tr td {
  75 + white-space: nowrap;
  76 + overflow: hidden;
  77 + text-overflow: ellipsis;
  78 +}
  79 +
  80 +table.ct-fixed-table.uk-table .uk-badge {
  81 + padding: 2px 5px;
  82 +}
  83 +
  84 +.horizontal-field {
  85 + vertical-align: middle;
  86 + margin: 0 5px;
  87 +}
  88 +
  89 +.legend-tools {
  90 + float: right;
  91 + font-size: 11px;
  92 +}
  93 +
  94 +.legend-tools a.uk-icon-small {
  95 + margin: 0 5px;
  96 + cursor: pointer;
  97 +}
  98 +
  99 +.text-succ {
  100 + color: #659f13;
  101 +}
  102 +
  103 +.text-err {
  104 + color: red;
  105 +}
  106 +
  107 +.text-grey {
  108 + color: grey;
  109 +}
  110 +
  111 +svg.line-chart {
  112 + width: 100%;
  113 + height: 100%;
  114 + position: absolute;
  115 + left: 0;
  116 +}
  117 +
  118 +svg.line-chart circle.station_circle {
  119 + fill: #5e96d2;
  120 + r: 5.5;
  121 + stroke: rgb(253, 253, 253);
  122 + stroke-width: 3;
  123 + Pointer-events: none;
  124 +}
  125 +
  126 +svg.line-chart circle.station_circle.down {
  127 + fill: #c92121;
  128 +}
  129 +
  130 +svg.line-chart path.station_link {
  131 + stroke-width: 3.5px;
  132 + stroke: #5E96D2;
  133 + Pointer-events: none;
  134 +}
  135 +
  136 +svg.line-chart path.station_link.down {
  137 + stroke: #c92121;
  138 +}
  139 +
  140 +svg.line-chart path.station_link.down.loop_line {
  141 + stroke-dasharray: 4, 3;
  142 + stroke-width: 1px;
  143 +}
  144 +
  145 +svg.line-chart text.station_text {
  146 + writing-mode: tb;
  147 + fill: #3e3e3e;
  148 + letter-spacing: -.2px;
  149 + text-shadow: 0 0 2px #dadada;
  150 + Pointer-events: none;
  151 +}
  152 +
  153 +svg.line-chart text.station_text.up {
  154 + fill: #4556b6;
  155 +}
  156 +
  157 +svg.line-chart text.station_text.down {
  158 + fill: #c94f21;
  159 +}
  160 +
  161 +svg.line-chart g.item:first-child > text {
  162 + stroke: #6f6e6e;
  163 + fill: none;
  164 +}
  165 +
  166 +svg.line-chart g.item:nth-last-child(3) > text {
  167 + stroke: #6f6e6e;
  168 + fill: none;
  169 +}
  170 +
  171 +svg.line-chart g.item:first-child > text.up,
  172 +svg.line-chart g.item:nth-last-child(3) > text.up {
  173 + stroke: #4556b6;
  174 +}
  175 +
  176 +svg.line-chart g.item:first-child > text.down,
  177 +svg.line-chart g.item:nth-last-child(3) > text.down {
  178 + stroke: #c94f21;
  179 +}
  180 +
  181 +svg.line-chart g.gps-wrap > rect {
  182 + width: 30px;
  183 + height: 15px;
  184 + /* fill: #fff; */
  185 + rx: 2px;
  186 + cursor: pointer;
  187 +}
  188 +
  189 +svg.line-chart g.gps-wrap > rect[updown="0"] {
  190 + stroke: rgb(62, 80, 179);
  191 + fill: rgb(62, 80, 179);
  192 +}
  193 +
  194 +svg.line-chart g.gps-wrap > rect[updown="1"] {
  195 + stroke: #c94f21;
  196 + fill: #c94f21;
  197 +}
  198 +
  199 +svg.line-chart g.gps-wrap > rect.hover {
  200 + stroke-width: 2;
  201 +}
  202 +
  203 +svg.line-chart g.gps-wrap > text {
  204 + font-size: 12px;
  205 + transform: translate(0, 12px);
  206 + pointer-events: none;
  207 +}
  208 +
  209 +svg.line-chart g.gps-wrap > text[updown="0"] {
  210 + fill: #fff;
  211 +}
  212 +
  213 +svg.line-chart g.gps-wrap > text[updown="1"] {
  214 + fill: #fff;
  215 +}
  216 +
  217 +svg.line-chart g.gps-wrap > rect.abnormal[updown="0"],
  218 +svg.line-chart g.gps-wrap > rect.abnormal[updown="1"] {
  219 + width: 40px;
  220 + fill: yellow;
  221 + stroke: yellow;
  222 +}
  223 +
  224 +svg.line-chart g.gps-wrap > text.abnormal[updown="0"],
  225 +svg.line-chart g.gps-wrap > text.abnormal[updown="1"] {
  226 + fill: black;
  227 +}
  228 +
  229 +svg.line-chart .merge_hide {
  230 + display: none !important;
  231 +}
  232 +
  233 +svg.line-chart g.merge-item rect {
  234 + width: 22px;
  235 + height: 22px;
  236 + rx: 15px;
  237 + fill: #19a53a;
  238 + cursor: pointer;
  239 + stroke: #19a53a;
  240 + stroke-dasharray: 1, 2;
  241 + stroke-width: 3px;
  242 +}
  243 +
  244 +svg.line-chart g.merge-item text {
  245 + fill: #fff;
  246 + pointer-events: none;
  247 +}
  248 +
  249 +.qtip-multi-gps {
  250 + max-width: 720px !important;
  251 +}
  252 +
  253 +.qtip-bootstrap.qtip-multi-gps .qtip-content {
  254 + padding: 0;
  255 +}
  256 +
  257 +.tooltip {
  258 + position: relative;
  259 + padding-bottom: 160px;
  260 + width: 220px;
  261 +}
  262 +
  263 +.multi-tooltip-wrap {
  264 + width: 100%;
  265 + max-height: 350px;
  266 + overflow: auto;
  267 +}
  268 +
  269 +.tip_map_wrap.multi {
  270 + width: 100%;
  271 + height: 130px;
  272 +}
  273 +
  274 +.tooltip.multi-tooltip {
  275 + width: 160px;
  276 + display: inline-block;
  277 + padding: 10px 0 10px 15px;
  278 + border-right: 1px solid #eeeeee;
  279 + border-bottom: 1px solid #eeeeee;
  280 +}
  281 +
  282 +.tooltip hr {
  283 + border-top: 1px solid #eeeeee;
  284 + width: calc(100% + 30px);
  285 + margin: 7px 0 11px -15px;
  286 +}
  287 +
  288 +.tooltip.multi-tooltip hr {
  289 + width: calc(100% + 16px);
  290 +}
  291 +
  292 +.tooltip .tooltip-container {
  293 + padding: 1px;
  294 +}
  295 +
  296 +.tooltip .tooltip-container div, .tooltip .tooltip-container div a {
  297 + margin: 7px 1px;
  298 + font-size: 13px;
  299 + color: rgb(76, 76, 76);
  300 +}
  301 +
  302 +.tooltip .tooltip-container div.title {
  303 + margin: 8px 1px 12px;
  304 +}
  305 +
  306 +.tooltip .tooltip-container .title a {
  307 + font-size: 18px;
  308 + font-family: 微软雅黑;
  309 +}
  310 +
  311 +.tooltip span.field {
  312 + color: #7d7d7b;
  313 + margin-right: 5px;
  314 +}
  315 +
  316 +.tooltip .tip_map_wrap {
  317 + position: absolute;
  318 + bottom: -16px;
  319 + left: -15px;
  320 + width: calc(100% + 28px);
  321 + background: #fff;
  322 + height: 165px;
  323 + border-radius: 0 0 5px 5px;
  324 + border-top: 1px solid #e6e4e4;
  325 +}
  326 +
  327 +canvas.crosshair-layer {
  328 + position: absolute;
  329 + width: 100%;
  330 + height: 100%;
  331 + background: rgba(255, 255, 255, 0.33);
  332 + left: 0;
  333 +}
  334 +
  335 +li.map-panel {
  336 + height: 100%;
  337 + position: relative;
  338 +}
  339 +
  340 +.main-container .load-panel {
  341 + display: block;
  342 + color: #999797;
  343 +}
  344 +
  345 +.uk-panel-box-danger {
  346 + background-color: #fff1f0;
  347 + /*color: #d85030;*/
  348 + border-color: rgba(216, 80, 48, .3);
  349 +}
  350 +
  351 +/*.uk-panel-box-danger .uk-panel-title {
  352 + color: #d85030;
  353 +}*/
  354 +
  355 +.uk-badge-default {
  356 + background-color: #a09b9c;
  357 + background-image: -webkit-linear-gradient(top, #9a9898, #8c8687);
  358 + background-image: linear-gradient(to bottom, #9a9898, #8c8687);
  359 +}
  360 +
  361 +.ct-bottom-drawer {
  362 + width: 100%;
  363 + background: rgb(255, 255, 255);
  364 + position: fixed;
  365 + bottom: 0;
  366 + box-shadow: 0 0 10px rgba(0, 0, 0, .3);
  367 + transition: all .3s ease;
  368 + height: 0;
  369 +}
  370 +
  371 +.ct-bottom-drawer.open {
  372 + height: 320px;
  373 +}
  374 +
  375 +.ct-bottom-drawer a.ct-bottom-drawer-close {
  376 + position: absolute;
  377 + right: 10px;
  378 + top: 10px;
  379 + color: #c3c3c3;
  380 + width: 20px;
  381 + line-height: 20px;
  382 + background: #fff;
  383 + text-align: center;
  384 + z-index: 99;
  385 +}
  386 +
  387 +.ct-bottom-drawer a.ct-bottom-drawer-close:hover {
  388 + text-decoration: none;
  389 + color: grey;
  390 +}
  391 +
  392 +.ct-bottom-drawer a.ct-bottom-drawer-close:after {
  393 + display: block;
  394 + content: "\f00d";
  395 + font-family: FontAwesome;
  396 +}
  397 +
  398 +.ct-bottom-drawer-body {
  399 + width: 100%;
  400 + height: 100%;
  401 +}
  402 +
  403 +#station_route_spacing_chart_drawer .svg_wrap {
  404 + width: 80%;
  405 + height: 100%;
  406 + display: inline-block;
  407 + font-size: 14px;
  408 + overflow: hidden;
  409 + position: relative;
  410 +}
  411 +
  412 +#station_route_spacing_chart_drawer .drawer_right_map {
  413 + width: 20%;
  414 + height: 100%;
  415 + display: inline-block;
  416 +}
  417 +
  418 +#station_route_spacing_chart_drawer .svg_cont_body {
  419 + height: 100%;
  420 + position: absolute;
  421 + top: 0;
  422 + left: 0;
  423 +}
  424 +
  425 +#station_route_spacing_chart_drawer svg {
  426 + width: 100%;
  427 + height: 100%;
  428 +}
  429 +
  430 +#station_route_spacing_chart_drawer svg g._item rect {
  431 + stroke: rgb(62, 80, 179);
  432 + fill: rgb(62, 80, 179);
  433 + width: 30px;
  434 + height: 124px;
  435 + rx: 5;
  436 + transform: translate(-15px);
  437 +}
  438 +
  439 +#station_route_spacing_chart_drawer svg g._item text {
  440 + writing-mode: tb;
  441 + transform: translate(0, 9px);
  442 + fill: #fff;
  443 +}
  444 +
  445 +#station_route_spacing_chart_drawer svg g._item path {
  446 + stroke-width: 5.4px;
  447 + stroke: #3e50b3;
  448 +}
  449 +
  450 +#station_route_spacing_chart_drawer svg g._item circle {
  451 + r: 3px;
  452 + fill: #ffffff;
  453 +}
  454 +
  455 +#station_route_spacing_chart_drawer svg g._item path.arc_path {
  456 + stroke-width: 1.3px;
  457 + stroke: #3e50b3;
  458 + stroke-dasharray: 1000;
  459 + stroke-dashoffset: 1000;
  460 + fill: none;
  461 +
  462 + animation: dash .9s;
  463 + webkit-amimation: dash .9s;
  464 + animation-fill-mode: forwards;
  465 + -webkit-animation-fill-mode: forwards;
  466 +}
  467 +
  468 +@keyframes dash {
  469 + to {
  470 + stroke-dashoffset: 0;
  471 + stroke-dasharray: 4, 4;
  472 + }
  473 +}
  474 +
  475 +@-webkit-keyframes dash {
  476 + to {
  477 + stroke-dashoffset: 0;
  478 + stroke-dasharray: 4, 4;
  479 + }
  480 +}
  481 +
  482 +#station_route_spacing_chart_drawer svg g._item text.distance_text {
  483 + writing-mode: horizontal-tb;
  484 + fill: #3e50b3;
  485 +}
  486 +
  487 +#station_route_spacing_chart_drawer svg g._item rect.distance_rect {
  488 + height: 20px;
  489 + width: 40px;
  490 + fill: #fff !important;
  491 + stroke-width: 0;
  492 +}
  493 +
  494 +#station_route_spacing_chart_drawer .tl_desc_text {
  495 + position: absolute;
  496 + top: 5px;
  497 + left: 5px;
  498 + font-size: 12px;
  499 + color: #525050;
  500 + font-family: 微软雅黑;
  501 +}
  502 +
  503 +#station_route_spacing_chart_drawer svg g._item:first-child circle {
  504 + fill: #3e50b3;
  505 + r: 6px;
  506 +}
  507 +
  508 +#station_route_spacing_chart_drawer svg g._item:last-child circle {
  509 + fill: #3e50b3;
  510 + r: 6px;
  511 +}
  512 +
  513 +/* 下行 */
  514 +#station_route_spacing_chart_drawer svg.down g._item rect {
  515 + stroke: #dd3829;
  516 + fill: #dd3829;
  517 +}
  518 +
  519 +#station_route_spacing_chart_drawer svg.down g._item path {
  520 + stroke: #dd3829;
  521 +}
  522 +
  523 +#station_route_spacing_chart_drawer svg.down g._item:first-child circle {
  524 + fill: #dd3829;
  525 +}
  526 +
  527 +#station_route_spacing_chart_drawer svg.down g._item text.distance_text {
  528 + fill: #dd3829;
  529 +}
  530 +
  531 +#station_route_spacing_chart_drawer svg.down g._item path.arc_path {
  532 + stroke: #dd3829;
  533 +}
  534 +
  535 +#station_route_spacing_chart_drawer svg.down g._item:last-child circle {
  536 + fill: #dd3829;
  537 +}
  538 +
  539 +.svg-edit-panel-wrap {
  540 + width: 48%;
  541 + border: 1px solid #e1d3d3;
  542 + padding: 12px 0 0 0;
  543 + border-radius: 4px;
  544 + position: relative;
  545 + display: inline-block;
  546 + vertical-align: top;
  547 + height: 440px;
  548 +}
  549 +
  550 +.svg-edit-panel-wrap .title-badge {
  551 + position: absolute;
  552 + top: -10px;
  553 + left: 7px;
  554 + font-size: 13px;
  555 + background: #fff;
  556 + padding: 0 3px;
  557 + color: #888888;
  558 +}
  559 +
  560 +.svg-edit-panel-wrap .rename-tools {
  561 + height: 21px;
  562 + padding: 0 0 0 9px;
  563 +}
  564 +
  565 +.svg-edit-panel-wrap .rename-item-panel {
  566 + border-bottom: 1px solid #ede5e5;
  567 + padding: 4px;
  568 +}
  569 +
  570 +.svg-edit-panel-wrap .rename-item-panel select {
  571 + width: 150px;
  572 +}
  573 +
  574 +.svg-edit-panel-wrap .rename-item-panel input {
  575 + margin-left: 7px;
  576 +}
  577 +
  578 +.svg-edit-panel-wrap .rename-item-panel input[type=checkbox] {
  579 + margin-top: 2px;
  580 + margin-right: 4px;
  581 +}
  582 +
  583 +.svg-edit-panel-wrap .rename-item-panel.active {
  584 + background: #65c9f8;
  585 + box-shadow: 0px 3px 7px 0 rgba(101, 201, 248, 0.48), 0px 1px 4px 0 rgba(101, 201, 248, 0.32);
  586 +}
  587 +
  588 +.svg-edit-panel-wrap .rename-item-panel.active select,
  589 +.svg-edit-panel-wrap .rename-item-panel.active input {
  590 + background: #65c9f8;
  591 + color: #fff;
  592 +}
  593 +
  594 +.svg-edit-panel-wrap .rename-item-panel.active i {
  595 + color: #e4f6ff;
  596 +}
  597 +
  598 +.svg-edit-panel-wrap .rename-item-panel.active input[type=checkbox] {
  599 + border: none;
  600 +}
  601 +
  602 +.svg-edit-panel-wrap .rename-item-panel.active input[type=checkbox]:before {
  603 + color: #fff;
  604 +}
  605 +
  606 +.svg-edit-panel-wrap .rename-tools a {
  607 + font-size: 14px;
  608 + padding: 5px;
  609 +}
  610 +
  611 +.svg-edit-panel-wrap .rename-tools a:hover {
  612 + background: #e8edef;
  613 + border-radius: 5px;
  614 +}
  615 +
  616 +.station-list {
  617 + width: 190px;
  618 + padding: 2px 7px;
  619 + height: 100%;
  620 + overflow: auto;
  621 + display: inline-block;
  622 +}
  623 +
  624 +.station-list .station-item {
  625 + padding: 3px 0;
  626 + margin: 5px 0;
  627 + border-radius: 3px;
  628 + font-size: 13px;
  629 + text-indent: 7px;
  630 + cursor: pointer;
  631 + white-space: nowrap;
  632 + overflow: hidden;
  633 + text-overflow: ellipsis;
  634 +}
  635 +
  636 +.station-list .station-item.disable,
  637 +.station-list .station-item.disable:hover {
  638 + background: #d5c9c9 !important;
  639 + color: #686565 !important;
  640 +}
  641 +
  642 +.station-list.up .station-item {
  643 + background: #5364c3;
  644 + color: white;
  645 +}
  646 +
  647 +.station-list.up .station-item:hover {
  648 + box-shadow: 0px 3px 6px 0 rgba(0, 0, 0, 0.2), 0px 1px 4px 0 rgba(0, 0, 0, 0.19);
  649 + background: #4556b6;
  650 +}
  651 +
  652 +.station-list.down .station-item {
  653 + background: #f95858;
  654 + color: white;
  655 +}
  656 +
  657 +.station-list.down .station-item:hover {
  658 + box-shadow: 0px 3px 6px 0 rgba(0, 0, 0, 0.2), 0px 1px 4px 0 rgba(0, 0, 0, 0.19);
  659 + background: #e95151;
  660 +}
  661 +
  662 +.modal-dotted-hr {
  663 + height: 1px;
  664 + border: none;
  665 + border-top: 1px dashed #d1d1d1;
  666 + width: calc(100% + 40px);
  667 + margin-left: -20px;
  668 +}
  669 +
  670 +#add-sub-task-range_turn-modal .main-sch-panel {
  671 + height: 60px;
  672 + border: 1px solid #dddddd;
  673 + border-radius: 5px;
  674 + position: relative;
  675 + padding: 20px 0 0 8px;
  676 +}
  677 +
  678 +#add-sub-task-range_turn-modal .main-sch-panel:before {
  679 + content: '主任务';
  680 + position: absolute;
  681 + top: -10px;
  682 + left: 10px;
  683 + background: #fff;
  684 + padding: 0 4px;
  685 + font-size: 12px;
  686 + color: #adadad;
  687 +}
  688 +
  689 +.ct_row {
  690 + font-size: 0;
  691 +}
  692 +
  693 +.ct_row .ct_cell {
  694 + display: inline-block;
  695 + font-size: 13px;
  696 + white-space: nowrap;
  697 + overflow: hidden;
  698 + text-overflow: ellipsis;
  699 +}
  700 +
  701 +.ct_row .ct_cell label {
  702 + color: #979393;
  703 + margin-right: 3px;
  704 +}
  705 +
  706 +.ct_row .ct_cell.c_1_3 {
  707 + width: 33%;
  708 +}
  709 +
  710 +#schedule-lp_change-modal .sch-list dl dd {
  711 + font-size: 14px;
  712 +}
  713 +
  714 +#schedule-lp_change-modal .sch-list dl dt:nth-of-type(1), #schedule-lp_change-modal .sch-list dl dd:nth-of-type(1) {
  715 + width: 5%;
  716 + border-left: 1px solid #dedede;
  717 +}
  718 +
  719 +#schedule-lp_change-modal .sch-list dl dt:nth-of-type(2), #schedule-lp_change-modal .sch-list dl dd:nth-of-type(2) {
  720 + width: 22%;
  721 +}
  722 +
  723 +#schedule-lp_change-modal .sch-list dl dt:nth-of-type(3), #schedule-lp_change-modal .sch-list dl dd:nth-of-type(3) {
  724 + width: 17%;
  725 +}
  726 +
  727 +#schedule-lp_change-modal .sch-list dl dt:nth-of-type(4), #schedule-lp_change-modal .sch-list dl dd:nth-of-type(4) {
  728 + width: 10%;
  729 + }
  730 +
  731 +#schedule-lp_change-modal .sch-list dl dt:nth-of-type(5), #schedule-lp_change-modal .sch-list dl dd:nth-of-type(5) {
  732 + width: 21%;
  733 +}
  734 +
  735 +#schedule-lp_change-modal .sch-list dl dt:nth-of-type(6), #schedule-lp_change-modal .sch-list dl dd:nth-of-type(6) {
  736 + width: 10%;
  737 +}
  738 +
  739 +#schedule-lp_change-modal .sch-list dl dt:nth-of-type(7), #schedule-lp_change-modal .sch-list dl dd:nth-of-type(7) {
  740 + width: 14%;
  741 +}
  742 +
  743 +
  744 +
  745 +
  746 +#schedule-lp_change-modal .sch-list.reverse dl dt:nth-of-type(1), #schedule-lp_change-modal .sch-list.reverse dl dd:nth-of-type(1) {
  747 + width: 5%;
  748 + border-left: 1px solid #dedede;
  749 +}
  750 +
  751 +#schedule-lp_change-modal .sch-list.reverse dl dt:nth-of-type(2), #schedule-lp_change-modal .sch-list.reverse dl dd:nth-of-type(2) {
  752 + width: 14%;
  753 +}
  754 +
  755 +#schedule-lp_change-modal .sch-list.reverse dl dt:nth-of-type(3), #schedule-lp_change-modal .sch-list.reverse dl dd:nth-of-type(3) {
  756 + width: 10%;
  757 +}
  758 +
  759 +#schedule-lp_change-modal .sch-list.reverse dl dt:nth-of-type(4), #schedule-lp_change-modal .sch-list.reverse dl dd:nth-of-type(4) {
  760 + width: 21%;
  761 +}
  762 +
  763 +#schedule-lp_change-modal .sch-list.reverse dl dt:nth-of-type(5), #schedule-lp_change-modal .sch-list.reverse dl dd:nth-of-type(5) {
  764 + width: 10%;
  765 +}
  766 +
  767 +#schedule-lp_change-modal .sch-list.reverse dl dt:nth-of-type(6), #schedule-lp_change-modal .sch-list.reverse dl dd:nth-of-type(6) {
  768 + width: 17%;
  769 +}
  770 +
  771 +#schedule-lp_change-modal .sch-list.reverse dl dt:nth-of-type(7), #schedule-lp_change-modal .sch-list.reverse dl dd:nth-of-type(7) {
  772 + width: 22%;
  773 +}
  774 +
  775 +#schedule-lp_change-modal .ct_table.sch-list .ct_table_body dl.active {
  776 + background: #b9d2ff;
  777 +}
  778 +
  779 +#schedule-lp_change-modal .ct_table.sch-list .ct_table_body dl.active dd {
  780 + border-top: 1px solid #b9d2ff;
  781 +}
  782 +
  783 +#schedule-lp_change-modal .ct_table.sch-list dl.active input[type=checkbox] {
  784 + border: none;
  785 +}
  786 +
  787 +#schedule-lp_change-modal .ct_table.sch-list.reverse .ct_table_body dl.active {
  788 + background: #ffe2b9;
  789 +}
  790 +
  791 +#schedule-lp_change-modal .ct_table.sch-list.reverse .ct_table_body dl.active dd {
  792 + border-top: 1px solid #ffe2b9;
  793 +}
  794 +
  795 +#cache_data_manage-modal .uk-table td{
  796 + vertical-align: bottom;
  797 +}
  798 +
  799 +#cache_data_manage-modal .uk-table td,
  800 +#cache_data_manage-modal .uk-table th{
  801 + padding: 8px 8px 6px;
  802 +}
  803 +
  804 +
  805 +.ps-help-panel{
  806 + color: grey;
  807 + padding: 5px 2px;
  808 +}
  809 +
  810 +.ps-help-panel small{
  811 + display: block;
  812 +}
  813 +
  814 +
  815 +svg text.offline{
  816 + fill: #6f6a6a !important;
  817 +}
  818 +
  819 +svg rect.offline{
  820 + stroke: #dbdada !important;
  821 + fill: #dbdada !important;
  822 +}
  823 +
  824 +.tooltip .tooltip-container .title a>.abnormal-text{
  825 + font-size: 14px;
  826 + color: #ff5e5e;
  827 + font-weight: 600;
  828 +}
  829 +
  830 +#addChildTaskBtn{
  831 + margin-left: 5px;
  832 + color: #36729b;
  833 + padding: 1px 5px 1px 6px;
  834 +}
  835 +
  836 +#addChildTaskBtn:hover{
  837 + box-shadow: 2px 1px 3px 0 rgba(0, 0, 0, 0.2), 0px 3px 8px 0 rgba(0, 0, 0, 0.19);
  838 +}
  839 +
  840 +.edit-icon{
  841 + color: #aba9a9;
  842 + font-size: 12px;
  843 + margin-left: 5px;
  844 + display: none;
  845 +}
  846 +
  847 +.operation-real-text{
  848 + position: absolute;
  849 + top: 9px;
  850 + width: 100%;
  851 + left: 0;
  852 + text-align: center;
  853 + pointer-events: none;
  854 +}
  855 +
  856 +.operation-real-text span{
  857 + padding: 15px;
  858 + background: #ff4f4f;
  859 + color: white;
  860 + box-shadow: 0px 4px 6px 0 rgba(0, 0, 0, 0.2), 0px 4px 10px 0 rgba(0, 0, 0, 0.19);
  861 + border-radius: 1px 1px 4px 4px;
  862 +}
  863 +
  864 +#oil_station-modal.ct-form-modal form.uk-form-horizontal .uk-form-label{
  865 + width: 120px;
  866 +}
  867 +
  868 +#oil_station-modal.ct-form-modal form.uk-form-horizontal .uk-form-controls{
  869 + margin-left: 125px;
  870 +}
  871 +
  872 +#oil_station-modal .uk-form-icon>[class*=uk-icon-]{
  873 + right: 23px;
  874 +}
  875 +
  876 +#oil_station-modal .uk-form-icon:not(.uk-form-icon-flip)>input{
  877 + padding-left: 10px !important;
  878 +}
  879 +
  880 +#oil_station-modal .uk-form-icon{
  881 + width: calc(100% - 145px);
  882 +}
  883 +
  884 +#oil_station-modal .uk-icon-mile:before{
  885 + content: '公里';
  886 +}
  887 +
  888 +#oil_station-modal .uk-icon-minute:before{
  889 + content: '分钟';
  890 +}
  891 +
  892 +option.oil_station_opt{
  893 + color: red;
  894 +}
  895 +
  896 +#oil_station-modal .uk-modal .uk-form.fv-form{
  897 + margin-bottom: 0 !important;
  898 +}
  899 +
  900 +#gb_wait_modal .uk-modal-spinner{
  901 + top: 25px;
  902 + -webkit-transform: translate(-50%,0);
  903 + transform: translate(-50%,0);
  904 +}
  905 +
  906 +#gb_wait_modal .wait-modal-text{
  907 + text-align: center;
  908 + margin-top: 35px;
  909 + font-size: 15px;
  910 + color: #635e5e;
  911 +}
  912 +
  913 +.park-and-station-wrap{
  914 + margin-top: 9px;
  915 + border: 1px solid #3dce69;
  916 + width: 580px;
  917 + padding: 12px;
  918 + border-radius: 5px;
  919 +}
  920 +.park-and-station-wrap select{
  921 + width: auto !important;
  922 +}
  923 +
  924 +/** 安全驾驶相关css */
  925 +.safe_driv_pop_wrap{
  926 + position: absolute;
  927 + right: 12px;
  928 + bottom: 12px;
  929 + z-index: 99;
  930 +}
  931 +
  932 +.safe_driv_pop{
  933 + background: #d44b4b;
  934 + font-size: 15px;
  935 + padding: 9px 10px 0;
  936 + border: 1px solid #f4f0f0;
  937 + border-radius: 5px;
  938 + cursor: pointer;
  939 + box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
  940 + transition: all .03s;
  941 + color: #f2f2f2;
  942 +}
  943 +
  944 +.safe_driv_pop:hover{
  945 + background: #bc2a2a;
  946 +}
  947 +
  948 +.safe_driv_pop .title{
  949 +}
  950 +
  951 +.safe_driv_pop .desc{
  952 + display: block;
  953 + font-size: 12px;
  954 + color: #ff9d9d;
  955 + text-align: right;
  956 + margin-right: 5px;
  957 +}
  958 +
  959 +/** 嵌入表单modal滚动条样式 */
  960 +#formFragmentModal::-webkit-scrollbar {
  961 + width: 10px;
  962 + background-color: #F5F5F5;
  963 +}
  964 +#formFragmentModal::-webkit-scrollbar-thumb {
  965 + background-color: #000000;
  966 +}
  967 +#formFragmentModal::-webkit-scrollbar-track {
  968 + border: 0;
  969 + background-color: #F5F5F5;
  970 + border-radius: 0;
  971 +}
  972 +
  973 +#formFragmentModal::-webkit-scrollbar-thumb{
  974 + border: 5px solid rgb(226, 122, 122);
  975 +}
  976 +
  977 +#schedule-addsch_oil-modal select{
  978 + height: 30px !important;
  979 +}
  980 +
  981 +#oil_station-modal .input_clear_icon{
  982 + position: absolute;
  983 + top: 6px;
  984 + right: 108px;
  985 + color: #f75757;
  986 + height: 18px;
  987 + line-height: 18px;
  988 + border-radius: 7px;
  989 + font-size: 16px;
  990 + display: none;
  991 + cursor: pointer;
  992 +}
  993 +
  994 +#oil_station-modal .input_clear_icon:hover{
  995 + color: #de2020;
  996 +}
  997 +
  998 +#oil_station-modal .input_clear_icon:before{
  999 + display: block;
  1000 + font-family: FontAwesome;
  1001 + content: "\f057";
  1002 +}
  1003 +
  1004 +#oil_station-modal input.readonly{
  1005 + background: #dddddd;
  1006 +}
  1007 +
  1008 +
  1009 +.ct_tags{
  1010 + margin-bottom: 12px;
  1011 +}
  1012 +
  1013 +.ct_tags>span{
  1014 + padding: 3px 7px;
  1015 + background: #e8e8e8;
  1016 + color: #3a3939;
  1017 + cursor: pointer;
  1018 + margin-right: 5px;
  1019 +}
  1020 +
  1021 +.ct_tags>span.active{
  1022 + background: #62a9e1;
  1023 + color: white;
  1024 + box-shadow: 0 0 4px rgba(0, 0, 0, 0.35);
  1025 +}
  1026 +
  1027 +.ct_tags>span.active:before{
  1028 + content: "\f00c";
  1029 + font-family: FontAwesome;
  1030 + margin-right: 2px;
  1031 + font-size: 13px;
  1032 +}
  1033 +
  1034 +.ct_tags>span:hover{
  1035 + box-shadow: 0 0 4px rgba(0,0,0,.3);
  1036 +}
  1037 +
  1038 +span.late-badge {
  1039 + height: 20px;
  1040 + line-height: 20px;
  1041 + margin-top: 8px;
  1042 + color: grey;
  1043 + margin-left: 2px;
  1044 +}
  1045 +
  1046 +dl.intimity span.late-badge{
  1047 + color: #fbfbfb;
  1048 +}
  1049 +
  1050 +/** badge tooltip */
  1051 +.uk-badge.c_task:hover,
  1052 +.uk-badge.sch_region:hover{
  1053 + background-image: none;
  1054 + background: #38b3e1;
  1055 + border: 1px solid #7ebad1;
  1056 +}
  1057 +
  1058 +.uk-badge.out:hover{
  1059 + background-image: none;
  1060 + background: #8fc650;
  1061 + border: 1px solid #949f86;
  1062 +}
  1063 +
  1064 +.uk-badge.in:hover{
  1065 + background-image: none;
  1066 + background: #fabc64;
  1067 + border: 1px solid #a68c67;
  1068 +}
  1069 +
  1070 +.qtip.sch-badge-tip{
  1071 + max-width: 500px;
  1072 +}
  1073 +
  1074 +.tip_task_list {
  1075 + width: 460px;
  1076 + margin-bottom: -10px;
  1077 +}
  1078 +.tip_task_list dl{
  1079 + font-size: 0;
  1080 + border-bottom: 1px solid #e6e6e6;
  1081 + margin: 0;
  1082 +}
  1083 +.tip_task_list dl:last-child{
  1084 + border-bottom: none;
  1085 +}
  1086 +.tip_task_list dl dt,
  1087 +.tip_task_list dl dd{
  1088 + display: inline-block;
  1089 + font-size: 13px;
  1090 + white-space: nowrap;
  1091 + overflow: hidden;
  1092 + text-overflow: ellipsis;
  1093 + height: 24px;
  1094 + line-height: 24px;
  1095 +}
  1096 +
  1097 +.tip_task_list dl dt:nth-of-type(1), .tip_task_list dl dd:nth-of-type(1){
  1098 + width: 19%;
  1099 +}
  1100 +.tip_task_list dl dt:nth-of-type(2), .tip_task_list dl dd:nth-of-type(2){
  1101 + width: 12%;
  1102 +}
  1103 +.tip_task_list dl dt:nth-of-type(3), .tip_task_list dl dd:nth-of-type(3){
  1104 + width: 28%;
  1105 +}
  1106 +.tip_task_list dl dt:nth-of-type(4), .tip_task_list dl dd:nth-of-type(4){
  1107 + width: 28%;
  1108 +}
  1109 +.tip_task_list dl dt:nth-of-type(5), .tip_task_list dl dd:nth-of-type(5){
  1110 + width: 13%;
  1111 +}
  1112 +
  1113 +.tip_task_list dl.service{
  1114 + color: blue;
  1115 +}
  1116 +.tip_task_list dl.service.destroy{
  1117 + color: red;
  1118 +}
  1119 +
  1120 +.tip_task_list dl.service.temp_add{
  1121 + color: #9C27B0;
  1122 +}
  1123 +
  1124 +.tip_task_list dl span{
  1125 + margin: 0;
  1126 + width: auto;
  1127 +}
  1128 +
  1129 +ul.left_tabs_lg{
  1130 + border: 1px solid #efeded;
  1131 + height: 100%;
  1132 + background: #fafafa;
  1133 +}
  1134 +
  1135 +ul.left_tabs_lg li{
  1136 + line-height: 40px;
  1137 + font-size: 15px;
  1138 +}
  1139 +
  1140 +#schedule-addsch-modal .uk-modal-footer{
  1141 + border-top: none;
  1142 + background: none;
  1143 +}
  1144 +
  1145 +.ct_line_lp_badge{
  1146 + float: left;
  1147 + margin-top: 6px;
  1148 + background: #e0e0e0;
  1149 + padding: 2px 7px;
  1150 + border-radius: 3px;
  1151 +}
  1152 +
  1153 +.uk-badge.sch_ldks{
  1154 + background: #8c8c8c;
  1155 + background-image: linear-gradient(to bottom,#a7a7a7,#8c8c8c);
  1156 +}
  1157 +
  1158 +.ct_layer_modal{
  1159 + background: #e5e5e5;
  1160 + height: 100%;
  1161 + width: 100%;
  1162 + overflow: auto;
  1163 +}
  1164 +
  1165 +.layui-layer-setwin{
  1166 +
  1167 +}
  1168 +
  1169 +.device_config_table dl dt:nth-of-type(1), .device_config_table dl dd:nth-of-type(1){
  1170 + width: 7%;
  1171 + text-indent: 10px;
  1172 +}
  1173 +.device_config_table dl dt:nth-of-type(2), .device_config_table dl dd:nth-of-type(2){
  1174 + width: 7%;
  1175 +}
  1176 +.device_config_table dl dt:nth-of-type(3), .device_config_table dl dd:nth-of-type(3){
  1177 + width: 8%;
  1178 +}
  1179 +.device_config_table dl dt:nth-of-type(4), .device_config_table dl dd:nth-of-type(4){
  1180 + width: 5%;
  1181 +}
  1182 +.device_config_table dl dt:nth-of-type(5), .device_config_table dl dd:nth-of-type(5){
  1183 + width: 4%;
  1184 +}
  1185 +.device_config_table dl dt:nth-of-type(6), .device_config_table dl dd:nth-of-type(6){
  1186 + width: 4%;
  1187 +}
  1188 +.device_config_table dl dt:nth-of-type(7), .device_config_table dl dd:nth-of-type(7){
  1189 + width: 4%;
  1190 +}
  1191 +.device_config_table dl dt:nth-of-type(8), .device_config_table dl dd:nth-of-type(8){
  1192 + width: 5%;
  1193 +}
  1194 +.device_config_table dl dt:nth-of-type(9), .device_config_table dl dd:nth-of-type(9){
  1195 + width: 5%;
  1196 +}
  1197 +.device_config_table dl dt:nth-of-type(10), .device_config_table dl dd:nth-of-type(10){
  1198 + width: 8%;
  1199 +}
  1200 +.device_config_table dl dt:nth-of-type(11), .device_config_table dl dd:nth-of-type(11){
  1201 + width: 5%;
  1202 +}
  1203 +.device_config_table dl dt:nth-of-type(12), .device_config_table dl dd:nth-of-type(12){
  1204 + width: 5%;
  1205 +}
  1206 +.device_config_table dl dt:nth-of-type(13), .device_config_table dl dd:nth-of-type(13){
  1207 + width: 4%;
  1208 +}
  1209 +.device_config_table dl dt:nth-of-type(14), .device_config_table dl dd:nth-of-type(14){
  1210 + width: 4%;
  1211 +}
  1212 +.device_config_table dl dt:nth-of-type(15), .device_config_table dl dd:nth-of-type(15){
  1213 + width: 4%;
  1214 +}
  1215 +.device_config_table dl dt:nth-of-type(16), .device_config_table dl dd:nth-of-type(16){
  1216 + width: 3%;
  1217 +}
  1218 +.device_config_table dl dt:nth-of-type(17), .device_config_table dl dd:nth-of-type(17){
  1219 + width: 4%;
  1220 +}
  1221 +.device_config_table dl dt:nth-of-type(18), .device_config_table dl dd:nth-of-type(18){
  1222 + width: 13%;
  1223 +}
  1224 +
  1225 +.uk-tooltip{
  1226 + z-index: 29999999 !important;
  1227 +}
  1228 +
  1229 +.device_config_table.ct_table dl dd,
  1230 +.device_config_table.ct_table dl dt{
  1231 + border-right: 1px solid #dedede !important;
  1232 +}
  1233 +
  1234 +.device_configs_manager .search_form{
  1235 + text-indent: 12px;
  1236 + margin-bottom: 0;
  1237 + padding: 18px 5px;
  1238 +}
  1239 +
  1240 +.sub_task_form_v2{
  1241 + background: #f9f9f9;
  1242 + padding: 12px 15px;
  1243 + border-radius: 5px 0 5px 5px;
  1244 + border: 1px solid #dfdfdf;
  1245 + position: relative;
  1246 + margin-bottom: 20px;
  1247 +}
  1248 +
  1249 +.task_form_close_icon{
  1250 + background: #f9f9f9;
  1251 + padding: 0px 4px;
  1252 + position: absolute;
  1253 + top: -8px;
  1254 + right: -8px;
  1255 + color: #898989;
  1256 + font-size: 15px;
  1257 + border: 1px solid #dfdfdf;
  1258 + border-radius: 100%;
  1259 + border-left: none;
  1260 + border-bottom: none;
  1261 + transition: all .03s;
  1262 +}
  1263 +
  1264 +.task_form_close_icon:hover{
  1265 + border: 1px solid #ff1515;
  1266 + border-left: none;
  1267 + border-bottom: none;
  1268 + color: #e03e3e;
  1269 +}
  1270 +
  1271 +.sub_task_form_v2:hover::after{
  1272 + color: #5f5b5b;
  1273 +}
  1274 +
  1275 +.sub_task_form_v2.uk-form-horizontal .uk-form-label{
  1276 + width: 80px;
  1277 +}
  1278 +
  1279 +.sub_task_form_v2.uk-form-horizontal .uk-form-controls{
  1280 + margin-left: 85px;
  1281 +}
  1282 +
  1283 +.sub_task_form_v2.uk-form-horizontal .uk-form-controls input[type=text],
  1284 +.sub_task_form_v2.uk-form-horizontal .uk-form-controls input[type=time],
  1285 +.sub_task_form_v2.uk-form-horizontal .uk-form-controls select{
  1286 + width: 100%;
  1287 +}
  1288 +
  1289 +#add-sub-task-main-modal .uk-modal-footer{
  1290 + background: none;
  1291 + border-top: none;
  1292 +}
  1293 +
  1294 +#add-sub-task-main-modal .uk-grid+.uk-grid{
  1295 + margin-top: 12px;
  1296 +}
  1297 +
  1298 +#add-sub-task-main-modal .plus_icon_span{
  1299 + font-size: 26px;
  1300 + color: #b2b2b2;
  1301 + padding: 10px 64px;
  1302 + display: inline-block;
  1303 + border: 1px dashed grey;
  1304 + margin: 15px 0;
  1305 + border-radius: 5px;
  1306 + cursor: pointer;
  1307 +}
  1308 +
  1309 +#add-sub-task-main-modal .uk-animation-fade{
  1310 + animation-duration: .3s;
  1311 +}
  1312 +
  1313 +#add-sub-task-main-modal .forms{
  1314 + max-height: 488px;
  1315 + overflow-y: auto;
  1316 + overflow-x: hidden;
  1317 + padding: 8px 8px 0 0;
  1318 +}
  1319 +
  1320 +.add_custom_wrap .forms .sub_task_form_v2:last-child{
  1321 + margin-bottom: 0;
  1322 +}
  1323 +
  1324 +.sub_task_form_v2.destroy_form{
  1325 + background-color: #fff5f4 !important;
  1326 +}
  1327 +
  1328 +.uk-form>.half_change_car_box{
  1329 + margin: -10px 0 15px;
  1330 + padding: 3px 5px;
  1331 + display: inline-block;
  1332 + border: 1px solid #dfdddd;
  1333 + color: #918f8f;
  1334 +}
  1335 +
  1336 +.half_change_car_box input[type=checkbox]{
  1337 + vertical-align: top;
  1338 +}
  1339 +
  1340 +.uk-form>.half_change_car_box.active{
  1341 + background: #4CAF50;
  1342 + color: #fff;
  1343 +}
  1344 +
  1345 +.uk-form>.half_change_car_box.active input[type=checkbox]{
  1346 + background: #4caf50;
  1347 + border-color: #4caf50;
  1348 +}
  1349 +
  1350 +.uk-form>.half_change_car_box.active input[type=checkbox]:before{
  1351 + color: #ffffff;
  1352 +}
  1353 +
  1354 +.sub_task_form_v2.change_car{
  1355 + z-index: 99;
  1356 +}
  1357 +
  1358 +.st_range_top_form{
  1359 + padding: 0 0 15px 5px;
  1360 + border: 1px solid #c4bb76;
  1361 + background: #e5e1c1;
  1362 + margin-bottom: 15px;
  1363 + box-shadow: 0px 4px 3px 0 rgba(142, 138, 138, 0.2), 0px 4px 5px 0 rgba(157, 156, 156, 0.19);
  1364 +}
  1365 +
  1366 +.st_range_top_form .uk-form-row{
  1367 + margin-top: 20px;
  1368 +}
  1369 +
  1370 +.uk-form-horizontal.st_range_top_form .uk-form-label{
  1371 + width: 80px;
  1372 +}
  1373 +
  1374 +.uk-form-horizontal.st_range_top_form .uk-form-controls{
  1375 + margin-left: 84px;
  1376 +}
  1377 +
  1378 +.uk-form-horizontal.st_range_top_form .uk-form-controls select{
  1379 + width: calc(100% - 2px);
  1380 +}
  1381 +
  1382 +.sub_task_form_v2.service_st_form{
  1383 + background: #f4faff;
  1384 +}
  1385 +
  1386 +.uk-modal .uk-form.fv-form.sub_task_form_v2{
  1387 + margin-bottom: 20px !important;
  1388 +}
  1389 +
  1390 +.sub_task_table_wrap .ct_table>.ct_table_body{
  1391 + border-bottom: none;
  1392 +}
  1393 +
  1394 +.err_panel{
  1395 + font-size: 12px;
  1396 + color: #7e7d7d;
  1397 + font-family: 微软雅黑;
  1398 + margin-top: 5px;
  1399 +}
  1400 +
  1401 +#schedule-lp_change-modal .ct_table dl{
  1402 + height: 35px;
  1403 +}
  1404 +
  1405 +#schedule-lp_change-modal .ct_table dl dd, #schedule-lp_change-modal .ct_table dl dt{
  1406 + line-height: 35px;
  1407 +}
  1408 +
  1409 +/*
  1410 +.sub_task_form_v2.repeat_main:before{
  1411 + content: '复';
  1412 + position: absolute;
  1413 + top: -10px;
  1414 + font-size: 12px;
  1415 + color: #2196F3;
  1416 + background: #ffffff;
  1417 + padding: 0 3px;
  1418 + font-weight: 600;
  1419 +}*/
  1420 +
  1421 +.sub_task_form_v2:before{
  1422 + position: absolute;
  1423 + top: -7px;
  1424 + font-size: 12px;
  1425 + padding: 0 3px;
  1426 + font-weight: 600;
  1427 + line-height: 14px;
  1428 +}
  1429 +
  1430 +.sub_task_form_v2.destroy_form:before{
  1431 + content: '烂班' !important;
  1432 + color: #f14235 !important;
  1433 + background: #ffffff !important;
  1434 +}
  1435 +
  1436 +.sub_task_form_v2.service_form:before{
  1437 + content: '营运';
  1438 + color: #2196F3;
  1439 + background: #ffffff;
  1440 +}
  1441 +
  1442 +.sub_task_form_v2.service_form.temp_service:before{
  1443 + content: '营运 (临加)';
  1444 + color: #9C27B0;
  1445 + background: #ffffff;
  1446 +}
  1447 +
  1448 +.sub_task_form_v2.service_form.temp_service {
  1449 + background: #faf0fd;
  1450 +}
  1451 +
  1452 +.sub_task_form_v2.empty_form:before{
  1453 + content: '空驶';
  1454 + color: #928f92;
  1455 + background: #ffffff;
  1456 +}
  1457 +
  1458 +.sub_task_form_v2.service_form{
  1459 + background: #f4faff;
  1460 +}
  1461 +
  1462 +/*.sub_task_form_v2.repeat_main.destroy_form:before{
  1463 + color: #F44336;
  1464 +}
  1465 +
  1466 +.sub_task_form_v2.repeat_main{
  1467 + background: #f4faff;
  1468 +}*/
  1469 +.footer_tools{
  1470 + position: absolute;
  1471 + left: 235px;
  1472 + bottom: 19px;
  1473 +}
  1474 +
  1475 +.footer_mileage_count{
  1476 + border: 1px solid #f2f2f2;
  1477 + padding: 5px;
  1478 + box-shadow: 0px 2px 5px 0 rgba(0, 0, 0, 0.2), 0px 2px 7px 0 rgba(0, 0, 0, 0.19);
  1479 + display: inline-block;
  1480 +}
  1481 +
  1482 +.footer_mileage_count>span{
  1483 + padding: 2px 5px;
  1484 +}
  1485 +
  1486 +.footer_mileage_count>span.service_sum{
  1487 + color: #2196F3;
  1488 +}
  1489 +
  1490 +.footer_mileage_count>span.empty_sum{
  1491 + color: #636363;
  1492 +}
  1493 +
  1494 +.footer_mileage_count>span.destroy_sum{
  1495 + color: #f5574b;
  1496 +}
  1497 +
  1498 +.station_to_park_link{
  1499 + display: inline-block;
  1500 + margin-left: 15px;
  1501 + vertical-align: bottom;
  1502 + font-size: 12px;
  1503 +}
  1504 +
  1505 +.station_to_park_link>a{
  1506 + color: #607D8B;
  1507 +}
  1508 +
  1509 +#station_to_park-modal.ct-form-modal form input[type=text],
  1510 +#station_to_park-modal.ct-form-modal form select{
  1511 + width: auto;
  1512 +}
  1513 +
  1514 +.s_2_park_form_wrap{
  1515 + background: #fafafa;
  1516 + border: 1px solid #e5e5e5;
  1517 + padding: 7px 16px;
  1518 + margin: 15px 0;
  1519 + position: relative;
  1520 +}
  1521 +
  1522 +.s_2_park_form_wrap .ct_close{
  1523 + position: absolute;
  1524 + top: -12px;
  1525 + padding: 0 4px;
  1526 + right: -8px;
  1527 + color: #939393;
  1528 + border: 1px solid #f7dfdf;
  1529 + border-radius: 25px;
  1530 + cursor: pointer;
  1531 +}
  1532 +
  1533 +.s_2_park_form_wrap .ct_close:hover{
  1534 + background: #e5e5e5;
  1535 + color: #fd6e6e;
  1536 +}
  1537 +
  1538 +.s_2_park_form_wrap label{
  1539 + color: #666;
  1540 + font-size: 13px;
  1541 +}
  1542 +
  1543 +#station_to_park-modal.ct-form-modal form input[readonly]{
  1544 + background: #fafafa;
  1545 +}
  1546 +
  1547 +.s_2_park_form_wrap .bottom_label{
  1548 + margin-top: 25px;
  1549 + display: block;
  1550 +}
  1551 +
  1552 +.s_2_park_form_wrap .bottom_label_2{
  1553 + margin-top: 4px;
  1554 + display: block;
  1555 +}
  1556 +
  1557 +.ct_describe{
  1558 + font-size: 12px;
  1559 + color: #909090;
  1560 + font-family: FontAwesome;
  1561 +}
  1562 +
  1563 +.ct_describe:before{
  1564 + content: "\f059";
  1565 + margin-right: 3px;
  1566 +}
  1567 +
  1568 +#add-sub-task-main-modal abbr{
  1569 + display: inline-block;
  1570 + font-size: 12px;
  1571 + margin-left: 25px;
  1572 + vertical-align: bottom;
  1573 + color: #929292;
  1574 +}
  1575 +
  1576 +#all-devices-modal .search-form input[type=text]{
  1577 + width: 100px;
  1578 +}
  1579 +
  1580 +#all-devices-modal .auto-refresh{
  1581 + vertical-align: middle;margin-left: 5px;color: grey;
  1582 +}
  1583 +
  1584 +#all-devices-modal .auto-refresh.active{
  1585 + color: #405dff;
  1586 +}
  1587 +
  1588 +#all-devices-modal .uk-margin-small-top {
  1589 + margin-top: 0 !important;
  1590 +}
  1591 +
  1592 +#history-sch-maintain-modal .add_lp_link{
  1593 + display: inline-block;
  1594 + vertical-align: bottom;
  1595 + margin-left: 15px;
  1596 + text-decoration: underline;
  1597 + font-size: 13px;
  1598 +}
  1599 +
  1600 +#schedule-tzrc-modal input[type=checkbox]{
  1601 + margin-right: 9px;
  1602 +}
  1603 +
  1604 +#schedule-tzrc-modal span.ct_zt_yzx{
  1605 + color: #2196F3;
  1606 + font-size: 12px;
  1607 +}
  1608 +
  1609 +#schedule-tzrc-modal span.ct_zt_lb{
  1610 + color: red;
  1611 + font-size: 12px;
  1612 +}
  1613 +
  1614 +#schedule-tzrc-modal span.ct_zt_zzzx{
  1615 + font-size: 12px;
  1616 + color: #38ad3c;
  1617 +}
  1618 +
  1619 +#schedule-tzrc-modal .tzrc_form{
  1620 + padding: 20px;
  1621 + border: 1px solid #f0eded;
  1622 + box-shadow: 0px -3px 15px rgba(0,0,0,0.08);
  1623 + background: #f9f9f9;
  1624 +}
  1625 +
  1626 +.uk-panel.ct_search_panel{
  1627 + padding: 15px;
  1628 + border: 1px solid #f0eded;
  1629 + box-shadow: 0px 3px 15px rgba(0,0,0,0.08);
  1630 + background: #f9f9f9;
  1631 +}
  1632 +
  1633 +.sch-tzrc-table.ct_table dl.active,
  1634 +.sch-tzrc-table.ct_table>.ct_table_body dl.active:hover{
  1635 + background: #5bd460;
  1636 + color: white;
  1637 +}
  1638 +
  1639 +#schedule-tzrc-modal dl.active span.ct_zt_yzx{
  1640 + color: #545252;
  1641 +}
  1642 +
  1643 +#schedule-tzrc-modal dl.active span.ct_zt_lb{
  1644 + color: #d64949;
  1645 +}
  1646 +
  1647 +#schedule-tzrc-modal dl.active span.ct_zt_zzzx{
  1648 + color: white;
  1649 +}
  1650 +
  1651 +#schedule-tzrc-modal dl.active input[type=checkbox]{
  1652 + border: 0;
  1653 +}
  1654 +
  1655 +#schedule-tzrc-modal dl.active input[type=checkbox]:before{
  1656 + color: #ffffff;
  1657 +}
  1658 +
  1659 +.sch-search-autocom input{
  1660 + padding: 0 !important;
  1661 + height: 100% !important;
  1662 +}
  1663 +
  1664 +label.blue_checkbox{
  1665 + margin-left: 12px;
  1666 +}
  1667 +
  1668 +label.blue_checkbox>input{
  1669 + width: 17px !important;
  1670 + height: 17px !important;
  1671 +}
  1672 +
  1673 +label.blue_checkbox>input:checked:before,
  1674 +label.blue_checkbox>input:indeterminate:before{
  1675 + line-height: 15px !important;
  1676 +}
  1677 +
  1678 +dd.disabled{
  1679 + color: #b5b3b3;
  1680 +}
  1681 +
  1682 +dl.active>dd.disabled{
  1683 + color: #ececec;
  1684 +}
  1685 +
  1686 +#change_user_options-modal .user_info{
  1687 + width: 360px;
  1688 + margin: auto;
  1689 +}
  1690 +
  1691 +.display_hide{
  1692 + display: none;
  1693 +}
  1694 +
  1695 +.ct_eye_icon{
  1696 + font-size: 16px;
  1697 + cursor: pointer;
  1698 +}
  1699 +
  1700 +.ct_eye_icon.active{
  1701 + color: #444;
  1702 +}
  1703 +
  1704 +#tempScheduleContent .forms::-webkit-scrollbar {
  1705 + width: 19px;
  1706 + height: 16px;
  1707 +}
  1708 +
  1709 +.range_2_normal_tt{
  1710 + margin-bottom: 15px;
  1711 + border-top: 1px dashed #c7c7c7;
  1712 + color: #a6a6a6;
  1713 + text-indent: 7px;
  1714 + padding-bottom: 5px;
  1715 +}
  1716 +
  1717 +.cancel_link{
  1718 + font-size: 12px;
  1719 + margin-left: 15px;
  1720 + vertical-align: bottom;
  1721 + color: #8d8d8d;
  1722 + text-decoration: underline;
  1723 + position: absolute;
  1724 + right: 0;
  1725 +}
  1726 +
  1727 +.edit_link{
  1728 + font-size: 12px;
  1729 + margin-left: 15px;
  1730 + vertical-align: bottom;
  1731 + color: #ff2f2f;
  1732 + text-decoration: underline;
  1733 +}
0 \ No newline at end of file 1734 \ No newline at end of file
src/main/resources/static/pages/history_sch/edit/history_sch_maintain.html 0 → 100644
  1 +<div class="uk-modal " id="history-sch-maintain-modal" style="">
  2 + <div class="uk-modal-dialog" style="width: 95%;margin: 20px auto;">
  3 + <a href="" class="uk-modal-close uk-close"></a>
  4 + <div class="uk-modal-header">
  5 + <h2>历史路单维护</h2>
  6 + </div>
  7 +
  8 + <div style="padding-left: 12px;margin: 20px 0">
  9 + <ul class="uk-subnav uk-subnav-pill h-s-time">
  10 + </ul>
  11 + </div>
  12 +
  13 + <div class="uk-panel uk-panel-box uk-panel-box-primary">
  14 + <form class="uk-form search-form">
  15 + <fieldset data-uk-margin>
  16 + <span class="horizontal-field">公司</span>
  17 + <select name="companyId" style="width: 110px;"></select>
  18 + <span class="horizontal-field">分公司</span>
  19 + <select name="subCompanyId" style="width: 110px;"></select>
  20 + <span class="horizontal-field">线路</span>
  21 + <select name="xlBm_eq" style="width: 120px;"></select>
  22 + <span class="horizontal-field">路牌</span>
  23 + <select name="lpName_eq" style="width: 80px;"></select>
  24 + <span class="horizontal-field">上下行</span>
  25 + <select name="xlDir_eq">
  26 + <option value="">全部</option>
  27 + <option value="0">上行</option>
  28 + <option value="1">下行</option>
  29 + </select>
  30 + &nbsp;
  31 + <span class="horizontal-field">车辆</span>
  32 + <div class="uk-autocomplete uk-form autocomplete-cars">
  33 + <input type="text" name="clZbh_like" placeholder="自编号" style="width: 80px;">
  34 + </div>
  35 + <span class="horizontal-field">驾驶员</span>
  36 + <div class="uk-autocomplete uk-form autocomplete-jsy">
  37 + <input type="text" name="jGh_like" placeholder="驾驶员" style="width: 80px;">
  38 + </div>
  39 + <button class="uk-button">检索</button>
  40 + <a class="add_lp_link" title="先点击检索后再临加路牌"><i class="uk-icon-plus"></i> 临加路牌</a>
  41 + </fieldset>
  42 + </form>
  43 + </div>
  44 +
  45 + <div class="ct_table_wrap ct_table_no_border history-sch-wrap" style="height: 510px;">
  46 + <div class="ct_table history-sch-table">
  47 + <div class="ct_table_head">
  48 + <dl>
  49 + <dt>序号</dt>
  50 + <dt>路牌</dt>
  51 + <dt>车辆</dt>
  52 + <dt>驾驶员</dt>
  53 + <dt>起点</dt>
  54 + <dt>终点</dt>
  55 + <dt>计发</dt>
  56 + <dt>待发</dt>
  57 + <dt>实发</dt>
  58 + <dt>终点实达</dt>
  59 + <dt>备注</dt>
  60 + </dl>
  61 + </div>
  62 + <div class="ct_table_body">
  63 + </div>
  64 + </div>
  65 + </div>
  66 +
  67 + <div class="load-panel">
  68 + <i class="uk-icon-spinner uk-icon-spin"></i>
  69 + 正在加载数据
  70 + </div>
  71 + </div>
  72 +
  73 + <script id="history-sch-maintain-table-temp" type="text/html">
  74 + {{each list as sch i}}
  75 + <dl data-id="{{sch.id}}">
  76 + <dd>{{i + 1}}</dd>
  77 + <dd>{{sch.lpName}}</dd>
  78 + <dd>{{sch.clZbh}}</dd>
  79 + <dd>{{sch.jGh}}/{{sch.jName}}</dd>
  80 + <dd title="{{sch.qdzName}}">{{sch.qdzName}}</dd>
  81 + <dd title="{{sch.zdzName}}">{{sch.zdzName}}</dd>
  82 + <dd>{{sch.fcsj}}
  83 + {{if sch.bcType == "out"}}
  84 + <span class="uk-badge uk-badge-success">出场</span>
  85 + {{else if sch.bcType == "in"}}
  86 + <span class="uk-badge uk-badge-warning">进场</span>
  87 + {{else if sch.bcType == "venting"}}
  88 + <span class="uk-badge uk-badge-danger">直放</span>
  89 + {{else if sch.bcType == "major"}}
  90 + <span class="uk-badge uk-badge-danger">放站</span>
  91 + {{else if sch.bcType == "region"}}
  92 + <span class="uk-badge sch_region">区间</span>
  93 + {{else if sch.bcType == "ldks"}}
  94 + <span class="uk-badge sch_ldks">空驶</span>
  95 + {{/if}}
  96 + {{if sch.sflj}}
  97 + <span class="uk-badge uk-badge-danger">临加</span>
  98 + {{/if}}
  99 + {{if sch.cTasks.length > 0}}
  100 + <span class="uk-badge uk-badge-notification">{{sch.cTasks.length}}</span>
  101 + {{/if}}</dd>
  102 + <dd>
  103 + {{sch.dfsj}}
  104 + {{if sch.status==-1}}
  105 + <span class="uk-badge uk-badge-danger">烂班</span>
  106 + {{/if}}
  107 + </dd>
  108 + <dd>{{sch.fcsjActual}}<span class="fcsj-diff">{{sch.fcsj_diff}}</span></dd>
  109 + <dd>{{sch.zdsjActual}}</dd>
  110 + <dd title="{{sch.remarks}}">{{sch.remarks}}</dd>
  111 + </dl>
  112 + {{/each}}
  113 + </script>
  114 +
  115 + <script>
  116 + (function () {
  117 + var modal = '#history-sch-maintain-modal';
  118 +
  119 + //滚动条
  120 + $('.history-sch-wrap', modal).perfectScrollbar({suppressScrollX: true});
  121 + //history-sch-wrap
  122 + $(modal).on('init', function (e, data) {
  123 + e.stopPropagation();
  124 + $.get('/realSchedule/dateArray', function (rs) {
  125 + //日期tab
  126 + var tsStr = '';
  127 + $.each(rs, function (i) {
  128 + tsStr += '<li ' + (i == 0 ? 'class="uk-active"' : '') + '><a>' + this + '</a></li>';
  129 + });
  130 +
  131 + $('.h-s-time', modal).html(tsStr);
  132 + clearLpSelect();
  133 + //reLoadLp=true;
  134 + //jsQuery();
  135 + });
  136 + });
  137 +
  138 + $(modal).on('refresh', function (e, data) {
  139 + if(data){
  140 + var lpName = data.lpName;
  141 + if(is_new_temp_lp(lpName)){
  142 + $('[name=lpName_eq]', modal).append('<option value="'+lpName+'" selected>'+lpName+'</option>');
  143 + }
  144 + }
  145 + jsQuery();
  146 + });
  147 +
  148 + $(modal).on('click', '.h-s-time li,.h-s-line li', function () {
  149 + if(loading)
  150 + return;
  151 + $(this).parent().find('li.uk-active').removeClass('uk-active');
  152 + $(this).addClass('uk-active');
  153 + clearLpSelect();
  154 + //检索之前将滚动条置顶
  155 + $('.history-sch-wrap', modal)[0].scrollTop = 0;
  156 + jsQuery();
  157 + });
  158 +
  159 + $('.search-form', modal).on('submit', function (e) {
  160 + try {
  161 + //检索之前将滚动条置顶
  162 + $('.history-sch-wrap', modal)[0].scrollTop = 0;
  163 + jsQuery();
  164 + }catch(e){
  165 + console.log(e);
  166 + }
  167 + return false;
  168 + });
  169 +
  170 + var reLoadLp;
  171 + var nbbmArray,jsyArray,lpArray,loading;
  172 + var schArray;//主键映射
  173 + function jsQuery(cb) {
  174 + var data = $('.search-form', modal).serializeJSON();
  175 + data.companyId=null;
  176 + data.subCompanyId=null;
  177 + var rq = $('.h-s-time li.uk-active', modal).text();
  178 + data.scheduleDateStr_eq = rq;
  179 + if(!data.xlBm_eq)
  180 + return notify_err('请选择线路...');
  181 + if(data.jGh_like.indexOf('/')!=-1){
  182 + var jsy=data.jGh_like.split('/');
  183 + data.jGh_like=jsy[0];
  184 + data.jName_like=jsy[1];
  185 + }
  186 +
  187 + $('.load-panel', modal).show();
  188 + loading=true;
  189 + $.get('/realSchedule/all', data, function (rs) {
  190 + rs.sort(schedule_sort);
  191 + //可搜索的车辆自编号和驾驶员
  192 + nbbmArray=[];
  193 + jsyArray=[];
  194 + lpArray = [];
  195 + schArray = {};
  196 + $.each(rs, function () {
  197 + nbbmArray.push({value: this.clZbh});
  198 + jsyArray.push({value: this.jGh+'/'+this.jName,
  199 + fullChars: pinyin.getFullChars(this.jName).toUpperCase(),
  200 + camelChars: pinyin.getCamelChars(this.jName)});
  201 + lpArray.push({value: this.lpName});
  202 + calc_sch_real_shift(this);
  203 + schArray[this.id] = this;
  204 + });
  205 +
  206 + var tbodyStr = template('history-sch-maintain-table-temp', {list: rs});
  207 + $('.history-sch-table .ct_table_body', modal).html(tbodyStr);
  208 + //value
  209 + nbbmArray=distinctByField(nbbmArray);
  210 + jsyArray=distinctByField(jsyArray);
  211 + lpArray=distinctByField(lpArray);
  212 +
  213 + if(reLoadLp){
  214 + //路牌下拉框
  215 + var ops = '<option value="">全部</option>';
  216 + $.each(lpArray, function () {
  217 + ops += '<option value="'+this.value+'">'+this.value+'</option>';
  218 + });
  219 + $('[name=lpName_eq]', modal).html(ops);
  220 + reLoadLp = false;
  221 + }
  222 +
  223 + //lpName_eq
  224 + $('.load-panel', modal).hide();
  225 + loading=false;
  226 +
  227 + //更新滚动条高度
  228 + $('.history-sch-wrap', modal).perfectScrollbar('update');
  229 +
  230 + cb && cb();
  231 +
  232 + //初始化依赖数据
  233 + gb_data_basic.initData(data.xlBm_eq);
  234 + });
  235 + }
  236 +
  237 + function clearLpSelect() {
  238 + $('[name=lpName_eq]', modal).val('').html('');
  239 + reLoadLp = true;
  240 + }
  241 +
  242 + //nbbm autocomplete
  243 + var carAutoCom=$('.autocomplete-cars', modal);
  244 + UIkit.autocomplete(carAutoCom, {
  245 + minLength: 1,
  246 + delay: 50,
  247 + source: function(release) {
  248 + var q = $('input', carAutoCom).val().toUpperCase()
  249 + ,rs = [],
  250 + count = 0;
  251 + $.each(nbbmArray, function () {
  252 + if(this.value.indexOf(q) != -1){
  253 + rs.push(this);
  254 + count++;
  255 + }
  256 + if (count >= 15)
  257 + return false;
  258 + });
  259 + release && release(rs);
  260 + }
  261 + });
  262 +
  263 + //jsy autocomplete
  264 + var jsyAutoCom=$('.autocomplete-jsy', modal);
  265 + UIkit.autocomplete(jsyAutoCom, {
  266 + minLength: 1,
  267 + delay: 50,
  268 + source: function(release) {
  269 + var q = $('input', jsyAutoCom).val().toUpperCase()
  270 + ,rs = [],
  271 + count = 0;
  272 +
  273 + $.each(jsyArray, function() {
  274 + if (this.value.indexOf(q) != -1 || this.fullChars.indexOf(q) != -1 || this.camelChars.indexOf(q) != -1){
  275 + rs.push(this);
  276 + count++;
  277 + }
  278 +
  279 + if (count >= 10)
  280 + return false;
  281 + });
  282 + release && release(rs);
  283 + }
  284 + });
  285 +
  286 + function schedule_sort(s1, s2) {
  287 + return (s1.realExecDate+s1.fcsj).localeCompare(s2.realExecDate+s2.fcsj);
  288 + }
  289 +
  290 + function distinctByField(arr, f){
  291 + if(!f)
  292 + f = 'value';
  293 + var rs = {};
  294 + $.each(arr, function () {
  295 + rs[this[f]]=this;
  296 + });
  297 + return gb_common.get_vals(rs);
  298 + }
  299 +
  300 + gb_ct_table.fixedHead($('.ct_table_wrap', modal));
  301 +
  302 + //班次点击
  303 + $(modal).on('click contextmenu', '.history-sch-table .ct_table_body dl', function() {
  304 + $(this).parent().find('.active').removeClass('active');
  305 + $(this).addClass('active');
  306 + });
  307 +
  308 + var modal_opts = {center: false,bgclose: false, modal: false};
  309 + var folder = '/real_control_v2/fragments/north/nav/history_sch';
  310 + var callbackHandler={
  311 + edit: function(id){
  312 + open_modal(folder + '/editor.html', {id: id, parentModal: modal}, modal_opts);
  313 + },
  314 + add: function (id) {
  315 + open_modal(folder + '/h_add_temp_sch.html', {
  316 + sch: schArray[id]
  317 + }, modal_opts);
  318 + },
  319 + delete: function (id) {
  320 + var sch = schArray[id];
  321 + if (!sch || !sch.sflj)
  322 + return notify_err('只能删除临加班次!');
  323 + var str = '<h3>确定要删除临加班次<span style="color:red;margin: 0 5px;">' + sch.clZbh + '( ' + sch.dfsj + ' )</span>?</h3><h5 style="color: #6c6c6c;font-size: 12px;">班次删除后,调度指令会保留</h5>';
  324 + alt_confirm(str, function () {
  325 + gb_common.$del('/realSchedule/history/' + sch.id, function (rs) {
  326 + if($('.history-sch-table .ct_table_body dl', modal).length == 1){
  327 + $('[name=lpName_eq]', modal).val('');
  328 + reLoadLp = true;
  329 + }
  330 +
  331 + jsQuery();
  332 + });
  333 + }, '确定删除');
  334 + }
  335 + };
  336 +
  337 + //计算实发时间差值
  338 + var calc_sch_real_shift = function (sch) {
  339 + if (sch.fcsjActualTime) {
  340 + var diff = parseInt((sch.fcsjActualTime - sch.dfsjT) / 1000 / 60);
  341 + if (diff > 0)
  342 + sch.fcsj_diff = '( +' + diff + ' )';
  343 + else if (diff < 0)
  344 + sch.fcsj_diff = '( ' + diff + ' )';
  345 + else
  346 + sch.fcsj_diff = '';
  347 + }
  348 + };
  349 +
  350 + //右键菜单
  351 + $.contextMenu({
  352 + selector: modal+' .history-sch-table .ct_table_body dl',
  353 + className: 'schedule-ct-menu',
  354 + callback: function(key, options) {
  355 + var id = $('.context-menu-active', modal).data('id');
  356 + callbackHandler[key] && callbackHandler[key](id);
  357 + },
  358 + items: {
  359 + 'edit': {
  360 + name: '编辑'
  361 + },
  362 + 'add': {
  363 + name: '新增临加班次'
  364 + },
  365 + 'delete':{
  366 + name: '删除'
  367 + }
  368 + }
  369 + });
  370 +
  371 + //临加路牌
  372 + $('.add_lp_link', modal).on('click', function () {
  373 + var index = 0, max;
  374 + $.each(lpArray, function (i, obj) {
  375 + var lp = obj.value;
  376 + if (lp.indexOf('临') != -1) {
  377 + max = lp.substr(lp.indexOf('临') + 1);
  378 + if (!isNaN(max))
  379 + index = parseInt(max);
  380 + }
  381 + });
  382 +
  383 + var lpName = '临' + (index + 1);
  384 + var lineSelect = $('[name=xlBm_eq]', modal);
  385 + var rq = $('.h-s-time li.uk-active', modal).text(),
  386 + lineName = lineSelect[0].options[lineSelect[0].selectedIndex].text,//$('.h-s-line li.uk-active', modal).text(),
  387 + lineCode = lineSelect.val();
  388 +
  389 + var sch = {
  390 + scheduleDateStr: rq,
  391 + xlBm: lineCode,
  392 + xlName: lineName,
  393 + lpName: lpName
  394 + };
  395 +
  396 + open_modal(folder + '/h_add_temp_sch.html', {
  397 + sch: sch
  398 + }, modal_opts);
  399 + });
  400 +
  401 + /**
  402 + * 是否是临加路牌
  403 + * @param lpName
  404 + */
  405 + function is_new_temp_lp(lpName) {
  406 + if(lpName.indexOf('临') ==-1)
  407 + return false;
  408 +
  409 + for(var i=0,obj;obj=lpArray[i++];){
  410 + if(obj.value==lpName)
  411 + return false;
  412 + }
  413 +
  414 + return true;
  415 + }
  416 +
  417 +
  418 + var f = $('.search-form', modal);
  419 + var ep = EventProxy.create('query_comps', 'query_lines', function () {
  420 + $('[name=companyId]', f).trigger('change');//公司change
  421 + });
  422 + var comps;
  423 + //构建公司级联下拉框
  424 + $.get('/user/companyData', function (rs) {
  425 + comps = rs;
  426 + var opts = '';
  427 + for(var i=0,obj;obj=comps[i++];){
  428 + opts += '<option value="'+obj.companyCode+'">'+obj.companyName+'</option>';
  429 + }
  430 + $('[name=companyId]', f).html(opts);
  431 + ep.emit('query_comps');
  432 + });
  433 + var lineMapps;
  434 + //加载线路信息
  435 + $.get('/line/all', {'destroy_eq': 0}, function (rs) {
  436 + rs.sort(function (a, b) {
  437 + return a.name.localeCompare(b.name);
  438 + });
  439 + lineMapps={};
  440 + var k;
  441 + $.each(rs, function () {
  442 + k = this.company+'_'+this.brancheCompany;
  443 + if(!lineMapps[k])
  444 + lineMapps[k]=[];
  445 + lineMapps[k].push(this);
  446 + });
  447 +
  448 + ep.emit('query_lines');
  449 + });
  450 +
  451 + $('[name=companyId]', f).on('change', function () {
  452 + var code = $(this).val(), subs=[];
  453 + $.each(comps, function () {
  454 + if(this.companyCode==code)
  455 + subs=this.children;
  456 + });
  457 +
  458 + var opts='';
  459 + $.each(subs, function () {
  460 + opts += '<option value="'+this.code+'">'+this.name+'</option>';
  461 + });
  462 + $('[name=subCompanyId]', f).html(opts).trigger('change');
  463 + });
  464 +
  465 + $('[name=subCompanyId]', f).on('change', function () {
  466 + var k = $('[name=companyId]', f).val() + '_' + $(this).val();
  467 + var array = lineMapps[k];
  468 + var opts = '';
  469 + if(array){
  470 + $.each(array, function () {
  471 + opts += '<option value="'+this.lineCode+'">'+this.name+'</option>';
  472 + });
  473 + }
  474 + $('[name=xlBm_eq]', f).html(opts);
  475 + });
  476 +
  477 + $('[name=xlBm_eq]', f).on('change', clearLpSelect);
  478 + //clearLpSelect
  479 + })();
  480 + </script>
  481 +</div>
0 \ No newline at end of file 482 \ No newline at end of file
src/main/resources/static/pages/history_sch/edit/js/data_basic.js 0 → 100644
  1 +/* 基础数据管理模块 */
  2 +
  3 +var gb_data_basic = (function () {
  4 +
  5 + var allPersonnel;
  6 + var stationRoutes, lineInformations, codeToLine={};
  7 + var ep = EventProxy.create("all_personnel"
  8 + , function (all_personnel) {
  9 + allPersonnel = all_personnel;
  10 + //gb_main_ep.emitLater('data-basic');
  11 + });
  12 +
  13 +/* //线路标准信息
  14 + gb_common.$get('/lineInformation/line/multi', {lineCodes: line_idx}, function (rs) {
  15 + var informations = {};
  16 + $.each(rs, function () {
  17 + informations[this.line.lineCode] = this;
  18 + delete this['line'];
  19 + });
  20 + ep.emit('lineInformations', informations);
  21 + });*/
  22 +
  23 + //人员信息
  24 + loadAllPersonnel(function (data) {
  25 + ep.emit('all_personnel', data);
  26 + });
  27 + function loadAllPersonnel(cb) {
  28 + $.get('/personnel/all_py', function (rs) {
  29 + //转换成自动补全组件需要的数据
  30 + var data = [], code;
  31 + for(var i =0, p; p = rs[i++];){
  32 + code = p['workId'].indexOf('-')!=-1?p['workId'].split('-')[1]:p['workId'];
  33 + data.push({
  34 + value: code + '/' + p.name,
  35 + fullChars: p.fullChars.toUpperCase(),
  36 + camelChars: p.camelChars.toUpperCase()
  37 + });
  38 + }
  39 + cb && cb(data);
  40 + });
  41 + }
  42 +
  43 + var carparks = {};
  44 + //停车场数据
  45 + gb_common.$get('/realMap/carParkSpatialData', {}, function (rs) {
  46 + rs.list.sort(function (a, b) {
  47 + return a.parkName.localeCompare(b.parkName);
  48 + });
  49 + $.each(rs.list, function () {
  50 + carparks[this.parkCode] = this;
  51 + });
  52 + });
  53 +
  54 + //车辆数据
  55 + var carsArray;
  56 + $.get('/basic/cars?t=' + Math.random(), function (rs) {
  57 + carsArray = rs;
  58 + });
  59 +
  60 + var getCarparkByCode = function (code) {
  61 + return carparks[code];
  62 + };
  63 +
  64 + //line code to name
  65 + $.get('/basic/lineCode2Name', function (rs) {
  66 + ep.emit('lineCode2Name', rs);
  67 + });
  68 +
  69 + var getLineInformation = function (lineCode) {
  70 + return lineInformations[lineCode];
  71 + };
  72 +
  73 + var stationRouteSort = function (a, b) {
  74 + return a.stationRouteCode - b.stationRouteCode;
  75 + };
  76 +
  77 + function findLineByCodes(codeArr) {
  78 + var rs = [];
  79 + $.each(codeArr, function () {
  80 + rs.push(codeToLine[this]);
  81 + });
  82 + return rs;
  83 + }
  84 +
  85 + return {
  86 + getLineInformation: getLineInformation,
  87 + allInformations: function () {
  88 + return {};
  89 + },
  90 + allPersonnel: function () {
  91 + return allPersonnel;
  92 + },
  93 + getSvgAttr: function (lineCode) {
  94 + return svgAttrs[lineCode];
  95 + },
  96 + //刷新员工信息
  97 + refreshAllPersonnel: function (cb) {
  98 + loadAllPersonnel(function (data) {
  99 + allPersonnel = data;
  100 + cb && cb();
  101 + });
  102 + },
  103 + carsArray: function () {
  104 + return carsArray;
  105 + },
  106 + simpleParksArray: function () {
  107 + var map = {};
  108 + for(var code in carparks)
  109 + map[code] = carparks[code].parkName;
  110 + return map;
  111 + },
  112 + getLineInformation: getLineInformation,
  113 + allInformations: function () {
  114 + return lineInformations;
  115 + },
  116 + stationRoutes: function (lineCode) {
  117 + return stationRoutes[lineCode]
  118 + },
  119 + remarksMapps: function () {
  120 + return "";
  121 + },
  122 + findLineByCodes: findLineByCodes,
  123 + //初始化依赖数据
  124 + initData: function (lineCode) {
  125 + var ep = EventProxy.create("stationRoutes", "lineInformations", "codeToLineMap", function (routes, informations, _codeToLine) {
  126 + stationRoutes = routes;
  127 + lineInformations = informations;
  128 + codeToLine[_codeToLine.lineCode] = _codeToLine;
  129 + });
  130 +
  131 + //站点路由
  132 + gb_common.$get('/stationroute/multiLine', {lineIds: lineCode}, function (rs) {
  133 + var list = rs.list;
  134 + var routeData = gb_common.groupBy(list, 'lineCode');
  135 + //排序
  136 + for (var lineCode in routeData) {
  137 + routeData[lineCode].sort(stationRouteSort);
  138 + }
  139 + ep.emitLater('stationRoutes', routeData);
  140 + });
  141 +
  142 + //线路标准信息
  143 + gb_common.$get('/lineInformation/line/multi', {lineCodes: lineCode}, function (rs) {
  144 + var _informations = {};
  145 + $.each(rs, function () {
  146 + _informations[this.line.lineCode] = this;
  147 + delete this['line'];
  148 + });
  149 + ep.emitLater('lineInformations', _informations);
  150 + });
  151 +
  152 + //线路基础信息
  153 + gb_common.$get('/line/' + lineCode, {}, function (rs) {
  154 + ep.emitLater('codeToLineMap', rs);
  155 + });
  156 + }
  157 + };
  158 +})();
src/main/resources/static/pages/history_sch/edit/js/modal_extend.js 0 → 100644
  1 +//modal hide remove dom
  2 +$(document).on('hide.uk.modal', '.uk-modal', function () {
  3 + $(this).trigger('ct-destroy').remove();
  4 +});
  5 +
  6 +
  7 +var show_modal = function (id, dom) {
  8 + $(document.body).append(dom);
  9 + return UIkit.modal(id, {
  10 + bgclose: false, modal: false
  11 + }).show();
  12 +};
  13 +
  14 +var open_modal = function (pageUrl, data, opt) {
  15 + $.get(pageUrl, function (dom) {
  16 + open_modal_dom(dom, data, opt);
  17 + });
  18 +};
  19 +
  20 +var open_modal_dom = function (dom, data, opt) {
  21 + if (!$(dom).hasClass('uk-modal')) {
  22 + alert('无效的dom片段!');
  23 + return;
  24 + }
  25 + var id = '#' + $(dom).attr('id');
  26 +
  27 + $(document.body).append(dom);
  28 + UIkit.modal(id, opt).show();
  29 +
  30 + if (data)
  31 + $(id).trigger('init', data);
  32 +};
src/main/resources/static/pages/history_sch/edit/main_page.html 0 → 100644
  1 +<!DOCTYPE html>
  2 +<html lang="zh-cn">
  3 +
  4 +<head>
  5 + <meta charset="UTF-8">
  6 + <!-- uikit core style-->
  7 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/css/uikit.gradient.min.css" />
  8 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/notify.gradient.min.css" />
  9 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/tooltip.gradient.min.css" />
  10 + <link rel="stylesheet"
  11 + href="/real_control_v2/assets/plugins/uikit-2.27.1/components/autocomplete.gradient.min.css" />
  12 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/accordion.gradient.min.css" />
  13 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/slidenav.gradient.min.css" />
  14 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/uikit-2.27.1/components/sticky.gradient.min.css" />
  15 +
  16 + <!-- main style -->
  17 + <link rel="stylesheet" href="/pages/history_sch/edit/css/main.css" />
  18 + <!-- north style -->
  19 + <link rel="stylesheet" href="/real_control_v2/css/north.css" merge="custom_style"/>
  20 + <!-- line style -->
  21 + <link rel="stylesheet" href="/real_control_v2/css/line_schedule.css" merge="custom_style"/>
  22 +
  23 + <!-- custom table -->
  24 + <link rel="stylesheet" href="/real_control_v2/css/ct_table.css" merge="custom_style"/>
  25 + <!-- jquery contextMenu style -->
  26 + <link rel="stylesheet" href="/real_control_v2/assets/css/jquery.contextMenu.min.css" merge="plugins"/>
  27 + <!-- formvalidation style -->
  28 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/formvalidation/formValidation.min.css" merge="plugins"/>
  29 +
  30 + <link rel="stylesheet" href="/real_control_v2/css/modal_extend.css" merge="custom_style"/>
  31 + <!-- perfect-scrollbar style -->
  32 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.css" merge="plugins"/>
  33 + <style>
  34 + .uk-modal.ct_move_modal .uk-modal-header {
  35 + cursor: default;
  36 + user-select: none;
  37 + }
  38 + .uk-modal.ct_move_modal .uk-modal-dialog {
  39 + position: relative !important;
  40 + margin: 50px auto !important;
  41 + }
  42 + </style>
  43 +</head>
  44 +
  45 +<body>
  46 +<div class="ct_page" >
  47 +</div>
  48 +<!-- jquery -->
  49 +<script src="/real_control_v2/assets/js/jquery.min.js"></script>
  50 +<!-- jquery actual -->
  51 +<script src="/real_control_v2/assets/js/jquery.actual.min.js" merge="plugins"></script>
  52 +<!-- jquery.serializejson JSON序列化插件 -->
  53 +<script src="/assets/plugins/jquery.serializejson.js" merge="plugins"></script>
  54 +<!-- moment.js 日期处理类库 -->
  55 +<script src="/real_control_v2/assets/plugins/moment/moment.min.js"></script>
  56 +<script src="/real_control_v2/assets/plugins/moment/zh-cn.js"></script>
  57 +
  58 +<!-- flatpickr -->
  59 +<script src="/real_control_v2/assets/plugins/flatpickr/flatpickr.min.js" merge="plugins"></script>
  60 +<script src="/real_control_v2/assets/plugins/flatpickr/l10n/zh.js" merge="plugins"></script>
  61 +
  62 +<!-- perfect-scrollbar -->
  63 +<script src="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.jquery.js" merge="plugins"></script>
  64 +<!-- common js -->
  65 +<script src="/real_control_v2/js/common.js"></script>
  66 +<!-- art-template 模版引擎 -->
  67 +<script src="/assets/plugins/template.js" merge="plugins"></script>
  68 +<!-- d3 -->
  69 +<script src="/assets/js/d3.min.js"></script>
  70 +<!-- EventProxy -->
  71 +<script src="/assets/js/eventproxy.js"></script>
  72 +<!-- uikit core -->
  73 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/uikit.min.js" merge="uikit_js"></script>
  74 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/notify.min.js" merge="uikit_js"></script>
  75 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/pagination.min.js" merge="uikit_js"></script>
  76 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/tooltip.min.js" merge="uikit_js"></script>
  77 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/autocomplete.min.js" merge="uikit_js"></script>
  78 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/accordion.min.js" merge="uikit_js"></script>
  79 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/timepicker.min.js" merge="uikit_js"></script>
  80 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/lightbox.min.js" merge="uikit_js"></script>
  81 +<script src="/real_control_v2/assets/plugins/uikit-2.27.1/components/sticky.min.js" merge="uikit_js"></script>
  82 +
  83 +<!-- jquery contextMenu -->
  84 +<script src="/real_control_v2/assets/js/jquery.contextMenu.min.js" merge="plugins"></script>
  85 +<script src="/real_control_v2/assets/js/jquery.ui.position.min.js" merge="plugins"></script>
  86 +<!-- formvalidation- -->
  87 +<script src="/real_control_v2/assets/plugins/formvalidation/formValidation.min.js" merge="plugins"></script>
  88 +<script src="/real_control_v2/assets/plugins/formvalidation/zh_CN.js" merge="plugins"></script>
  89 +<script src="/real_control_v2/assets/plugins/formvalidation/uikit.min.js" merge="plugins"></script>
  90 +<!-- js tree -->
  91 +<script src="/real_control_v2/assets/plugins/jstree/jstree.min.js" merge="plugins"></script>
  92 +<!-- simple pinyin -->
  93 +<script src="/assets/plugins/pinyin.js" merge="plugins"></script>
  94 +<!-- qtip -->
  95 +<script src="/real_control_v2/assets/plugins/qtip/jquery.qtip.min.js" merge="plugins"></script>
  96 +<!-- layer 3.0.3 -->
  97 +<script src="/real_control_v2/assets/plugins/layer3.0.3/layer.js" merge="plugins"></script>
  98 +
  99 +<!-- custom table js -->
  100 +<script src="/real_control_v2/js/utils/ct_table.js" merge="custom_js"></script>
  101 +<script src="/pages/history_sch/edit/js/modal_extend.js" merge="custom_js"></script>
  102 +<!-- 字典相关 -->
  103 +<script src="/assets/js/dictionary.js" merge="custom_js"></script>
  104 +<!-- 数据 -->
  105 +<script src="/pages/history_sch/edit/js/data_basic.js" merge="custom_js"></script>
  106 +<script>
  107 +
  108 + (function () {
  109 + open_modal('/pages/history_sch/edit/history_sch_maintain.html', {}, {
  110 + center: false,
  111 + bgclose: false
  112 + });
  113 + })();
  114 +
  115 + var notify_err = function (t) {
  116 + UIkit.notify("<i class='uk-icon-times'></i> " + t, {
  117 + status: 'danger'
  118 + });
  119 + };
  120 +
  121 + var gb_form_validation_opts = {
  122 + framework: 'uikit',
  123 + locale: 'zh_CN',
  124 + icon: {
  125 + valid: 'uk-icon-check',
  126 + invalid: 'uk-icon-times',
  127 + validating: 'uk-icon-refresh'
  128 + }
  129 + };
  130 +
  131 + var disabled_submit_btn = function (form) {
  132 + var subBtn = $('button[type=submit]', form);
  133 + if (subBtn) {
  134 + subBtn.addClass('disabled').attr('disabled', 'disabled');
  135 + }
  136 + };
  137 +
  138 + var notify_succ = function (t) {
  139 + UIkit.notify("<i class='uk-icon-check'></i> " + t, {
  140 + status: 'success'
  141 + });
  142 + };
  143 +
  144 + var hide_wait_modal = function () {
  145 + UIkit.modal('#gb_wait_modal').hide();
  146 + };
  147 +</script>
  148 +</body>
  149 +</html>
0 \ No newline at end of file 150 \ No newline at end of file
src/main/resources/static/pages/history_sch/edit/wrap.html 0 → 100644
  1 +<!-- 历史路单维护 -->
  2 +<iframe src="/pages/history_sch/edit/main_page.html?origin=real_control_iframe" frameborder="0" style="height: 100%;width: 100%;"></iframe>
0 \ No newline at end of file 3 \ No newline at end of file
src/main/resources/static/pages/summary/destory_sch_detail/d_s_d_wrap.html 0 → 100644
  1 +<!-- 烂班明细统计 -->
  2 +<iframe src="/pages/summary/destory_sch_detail/list.html?origin=real_control_iframe" frameborder="0" style="height: 100%;width: 100%;"></iframe>
0 \ No newline at end of file 3 \ No newline at end of file
src/main/resources/static/pages/summary/destory_sch_detail/list.html 0 → 100644
  1 +<!DOCTYPE html>
  2 +<html lang="zh-cn">
  3 +
  4 +<head>
  5 + <meta charset="UTF-8">
  6 + <link rel="stylesheet" href="/assets/plugins/uk3.0/uikit.min.css"/>
  7 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.css" />
  8 + <!-- flatpickr -->
  9 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/flatpickr/flatpickr.min.css">
  10 + <style>
  11 + html,body{
  12 + height: 100%;
  13 + }
  14 + .ct_page{
  15 + padding: 25px 15px;
  16 + height: 100%;
  17 + height: calc(100% - 50px);
  18 + }
  19 +
  20 + .ct_cont{
  21 + height: calc(100% - 35px);
  22 + }
  23 +
  24 + .ct_cont>div>div.uk-card{
  25 + height: 99%;
  26 + }
  27 +
  28 + .loading{
  29 + height: 100%;
  30 + text-align: center;
  31 + }
  32 + .loading .uk-spinner{
  33 + margin-top: 200px;
  34 + }
  35 + .loading circle{
  36 + stroke: red;
  37 + }
  38 +
  39 + .ps-container > .ps-scrollbar-x-rail, .ps-container > .ps-scrollbar-y-rail{
  40 + opacity: 0.6 !important;
  41 + padding: 0 !important;
  42 + }
  43 +
  44 + .ct_destroy_sch_table_width th:nth-of-type(1),.ct_destroy_sch_table_width td:nth-of-type(1){
  45 + width: 10%;
  46 + }
  47 + .ct_destroy_sch_table_width th:nth-of-type(2),.ct_destroy_sch_table_width td:nth-of-type(2){
  48 + width: 10%;
  49 + }
  50 + .ct_destroy_sch_table_width th:nth-of-type(3),.ct_destroy_sch_table_width td:nth-of-type(3){
  51 + width: 10%;
  52 + }
  53 + .ct_destroy_sch_table_width th:nth-of-type(4),.ct_destroy_sch_table_width td:nth-of-type(4){
  54 + width: 10%;
  55 + }
  56 + .ct_destroy_sch_table_width th:nth-of-type(5),.ct_destroy_sch_table_width td:nth-of-type(5){
  57 + width: 10%;
  58 + }
  59 + .ct_destroy_sch_table_width th:nth-of-type(6),.ct_destroy_sch_table_width td:nth-of-type(6){
  60 + width: 10%;
  61 + }
  62 + .ct_destroy_sch_table_width th:nth-of-type(7),.ct_destroy_sch_table_width td:nth-of-type(7){
  63 + width: 10%;
  64 + }
  65 + .ct_destroy_sch_table_width th:nth-of-type(8),.ct_destroy_sch_table_width td:nth-of-type(8){
  66 + width: 10%;
  67 + }
  68 + .ct_destroy_sch_table_width th:nth-of-type(9),.ct_destroy_sch_table_width td:nth-of-type(9){
  69 + width: 10%;
  70 + }
  71 + .ct_destroy_sch_table_width th:nth-of-type(10),.ct_destroy_sch_table_width td:nth-of-type(10){
  72 + width: 10%;
  73 + }
  74 +
  75 +/* .ct_table_wrap.day th:nth-of-type(1),.ct_table_wrap.day td:nth-of-type(1){
  76 + width: 10%;
  77 + }
  78 + .ct_table_wrap.day th:nth-of-type(2),.ct_table_wrap.day td:nth-of-type(2){
  79 + width: 10%;
  80 + }
  81 + .ct_table_wrap.day th:nth-of-type(3),.ct_table_wrap.day td:nth-of-type(3){
  82 + width: 10%;
  83 + }
  84 + .ct_table_wrap.day th:nth-of-type(4),.ct_table_wrap.day td:nth-of-type(4){
  85 + width: 10%;
  86 + }
  87 + .ct_table_wrap.day th:nth-of-type(5),.ct_table_wrap.day td:nth-of-type(5){
  88 + width: 5%;
  89 + }
  90 + .ct_table_wrap.day th:nth-of-type(6),.ct_table_wrap.day td:nth-of-type(6){
  91 + width: 15%;
  92 + }
  93 + .ct_table_wrap.day th:nth-of-type(7),.ct_table_wrap.day td:nth-of-type(7){
  94 + width: 10%;
  95 + }
  96 + .ct_table_wrap.day th:nth-of-type(8),.ct_table_wrap.day td:nth-of-type(8){
  97 + width: 10%;
  98 + }
  99 + .ct_table_wrap.day th:nth-of-type(9),.ct_table_wrap.day td:nth-of-type(9){
  100 + width: 10%;
  101 + }
  102 + .ct_table_wrap.day th:nth-of-type(10),.ct_table_wrap.day td:nth-of-type(10){
  103 + width: 10%;
  104 + }*/
  105 +
  106 + .ct_search_form_wrap{
  107 + border-bottom: 1px solid #e5e5e5;
  108 + padding: 10px 0 25px 10px;
  109 + }
  110 + .ct_search_form_wrap .ct_field{
  111 + display: inline-block;
  112 + margin: 0 5px;
  113 + }
  114 +
  115 + .ct_search_form_wrap .ct_field label{
  116 + font-size: 14px;
  117 + }
  118 +
  119 + .ct_search_form_wrap .ct_field input{
  120 + width: 110px;
  121 + }
  122 +
  123 + .ct_search_form_wrap .ct_field select{
  124 + width: auto;
  125 + min-width: 100px;
  126 + }
  127 +
  128 + .ct_search_form_wrap .uk-button{
  129 + padding: 0 14px;
  130 + }
  131 +
  132 + .ct_search_form_wrap .uk-button i{
  133 + vertical-align: middle;
  134 + margin-top: -2px;
  135 + margin-right: 7px;
  136 + }
  137 +
  138 + .ct_table_wrap{
  139 + font-size: 14px;
  140 + height: calc(100% - 77px);
  141 + }
  142 +
  143 + .t_body_wrap{
  144 + height: calc(100% - 41px);
  145 + overflow: auto;
  146 + position: relative;
  147 + }
  148 +
  149 + .ct_field.ct_field_bottom{
  150 + vertical-align: bottom;
  151 + font-size: 12px;
  152 + margin-left: 0;
  153 + }
  154 + </style>
  155 +</head>
  156 +
  157 +<body>
  158 +<div class="loading">
  159 + <div uk-spinner></div>
  160 +</div>
  161 +<div class="ct_page" style="display: none;">
  162 + <h3 class="uk-heading-line uk-heading-bullet"><span>烂班明细统计</span></h3>
  163 + <div class="ct_cont" >
  164 + <div class="ct_search_form_wrap">
  165 + <form>
  166 + <input type="hidden" name="status_eq" value="-1">
  167 + <div class="ct_field">
  168 + <label>公司:
  169 + <select class="uk-select" name="gsBm_eq">
  170 + </select>
  171 + </label>
  172 + </div>
  173 + <div class="ct_field">
  174 + <label>分公司:
  175 + <select class="uk-select" name="fgsBm_eq">
  176 + </select>
  177 + </label>
  178 + </div>
  179 + <div class="ct_field">
  180 + <label>线路:
  181 + <select class="uk-select" name="xlBm_eq">
  182 + </select>
  183 + </label>
  184 + </div>
  185 + <div class="ct_field">
  186 + <label>日期:
  187 + <input class="uk-input" name="rq" style="width: 220px;">
  188 + </label>
  189 + </div>
  190 + <div class="ct_field">
  191 + <button class="uk-button uk-button-primary search"><i uk-icon="icon: search"></i>搜索</button>
  192 + </div>
  193 + <div class="ct_field ct_field_bottom">
  194 + <span uk-icon="icon: question" title="暂时只支持单线路查询,目前实时汇总。导出功能先等等" uk-tooltip="pos: bottom"></span>
  195 + </div>
  196 + </form>
  197 + </div>
  198 + <div class="ct_table_wrap day">
  199 + <table class="uk-table uk-table-small ct_destroy_sch_table_width" style="margin-bottom: 0;">
  200 + <thead>
  201 + <tr>
  202 + <th>日期</th>
  203 + <th>线路</th>
  204 + <th>车号</th>
  205 + <th>司机</th>
  206 + <th>售票员</th>
  207 + <th>原因</th>
  208 + <th>班次</th>
  209 + <th>烂班公里</th>
  210 + <th>烂班时间</th>
  211 + <th>备注</th>
  212 + </tr>
  213 + </thead>
  214 + </table>
  215 + <div class="t_body_wrap">
  216 + <table class="uk-table uk-table-divider uk-table-hover uk-table-small ct_destroy_sch_table ct_destroy_sch_table_width">
  217 + <tbody>
  218 + </tbody>
  219 + </table>
  220 + </div>
  221 + </div>
  222 + </div>
  223 +</div>
  224 +
  225 +<script id="destroy_sch_list_temp" type="text/html">
  226 + {{each list as obj i}}
  227 + <tr>
  228 + <td>{{obj.scheduleDateStr}}</td>
  229 + <td>{{obj.xlName}}</td>
  230 + <td>{{obj.clZbh}}</td>
  231 + <td>{{obj.jGh}}</td>
  232 + <td>{{obj.sGh}}</td>
  233 + <td>{{obj.adjustExps}}</td>
  234 + <td><a>{{obj.destroySize}}</a></td>
  235 + <td>{{obj.destroyMileageSum}}</td>
  236 + <td>{{obj.dfsj}}</td>
  237 + <td>{{obj.remarks}}</td>
  238 + </tr>
  239 + {{/each}}
  240 +</script>
  241 +
  242 +<script src="/metronic_v4.5.4/plugins/jquery.min.js"></script>
  243 +<script src="/assets/plugins/uk3.0/uikit.min.js"></script>
  244 +<script src="/assets/plugins/uk3.0/uikit-icons.min.js"></script>
  245 +<script src="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.jquery.js" ></script>
  246 +<!-- EventProxy -->
  247 +<script src="/assets/js/eventproxy.js"></script>
  248 +<!-- art-template 模版引擎 -->
  249 +<script src="/assets/plugins/template.js"></script>
  250 +<script src="/real_control_v2/assets/plugins/moment/moment.min.js"></script>
  251 +<!-- jquery.serializejson JSON序列化插件 -->
  252 +<script src="/assets/plugins/jquery.serializejson.js" merge="plugins"></script>
  253 +<!-- flatpickr -->
  254 +<script src="/real_control_v2/assets/plugins/flatpickr/flatpickr.min.js" ></script>
  255 +<script src="/real_control_v2/assets/plugins/flatpickr/l10n/zh.js" ></script>
  256 +<script>
  257 +
  258 + var f = $('form', '');
  259 + //var page=0, pageSize=120;
  260 +
  261 + var ep = EventProxy.create('query_comps', 'query_lines', function () {
  262 + $('[name=gsBm_eq]', f).trigger('change');//公司change
  263 + query();
  264 +
  265 + $('.loading').remove();
  266 + $('.ct_page').show();
  267 + });
  268 +
  269 + //点击搜索
  270 + $('button.search', f).on('click', query);
  271 +
  272 + function query() {
  273 + $('button.search', f).attr('disabled', 'disabled');
  274 + var data = f.serializeJSON();
  275 + //data.page = page;
  276 + //data.size = pageSize;
  277 +
  278 + //开始结束时间
  279 + data.scheduleDateStr_ge = data.rq.substr(0, 10);
  280 + data.scheduleDateStr_le = data.rq.substr(13);
  281 +
  282 + delete data.rq;
  283 +
  284 + $.get('/realSchedule/all', data, function (rs) {
  285 + console.log('rs', rs);
  286 + $('button.search', f).removeAttr('disabled');
  287 +
  288 + //按线路、车、人、烂班原因分组
  289 + var groupData = {}, key;
  290 + $.each(rs, function () {
  291 + key=this.xlBm+'_'+this.clZbh+'_'+this.jGh+'_'+this.adjustExps;
  292 + if(!groupData[key])
  293 + groupData[key] = [];
  294 +
  295 + groupData[key].push(this);
  296 + });
  297 +
  298 + var list = [], sch;
  299 + for(var k in groupData){
  300 + //排序
  301 + groupData[k].sort(sch_sort_fun);
  302 + sch=groupData[k][0];
  303 + sch.destroySize=groupData[k].length;
  304 + sch.destroyMileageSum=countMileage(groupData[k]);
  305 + list.push(sch);
  306 + }
  307 +
  308 + var htmlStr = template('destroy_sch_list_temp', {list: list});
  309 + $('.ct_destroy_sch_table tbody').html(htmlStr);
  310 + $('.t_body_wrap').perfectScrollbar('update');
  311 + });
  312 + }
  313 +
  314 +
  315 + function sch_sort_fun(a, b) {
  316 + return a.dfsjT - b.dfsjT;
  317 + }
  318 +
  319 + function countMileage(array) {
  320 + var sum=0;
  321 + $.each(array, function () {
  322 + sum = accAdd(sum, this.jhlcOrig);
  323 + });
  324 + return sum;
  325 + }
  326 +
  327 + var accAdd = function (a, b) {
  328 + var c, d, e;
  329 + try {
  330 + c = a.toString().split(".")[1].length;
  331 + } catch (f) {
  332 + c = 0;
  333 + }
  334 + try {
  335 + d = b.toString().split(".")[1].length;
  336 + } catch (f) {
  337 + d = 0;
  338 + }
  339 + return e = Math.pow(10, Math.max(c, d)), (mul(a, e) + mul(b, e)) / e;
  340 + };
  341 +
  342 + function mul(a, b) {
  343 + var c = 0,
  344 + d = a.toString(),
  345 + e = b.toString();
  346 + try {
  347 + c += d.split(".")[1].length;
  348 + } catch (f) {
  349 + }
  350 + try {
  351 + c += e.split(".")[1].length;
  352 + } catch (f) {
  353 + }
  354 + return Number(d.replace(".", "")) * Number(e.replace(".", "")) / Math.pow(10, c);
  355 + }
  356 +
  357 + //日期选择框
  358 + var fs='YYYY-MM-DD'
  359 + , ets=moment().subtract(1, 'days').format(fs)
  360 + , sts=moment().subtract(3, 'days').format(fs);
  361 + flatpickr('.ct_search_form_wrap [name=rq]', {
  362 + mode: "range", dateFormat: "Y-m-d","locale": "zh", defaultDate: [sts, ets]
  363 + });
  364 + var comps;
  365 + //构建公司级联下拉框
  366 + $.get('/user/companyData', function (rs) {
  367 + comps = rs;
  368 + var opts = '';
  369 + for(var i=0,obj;obj=comps[i++];){
  370 + opts += '<option value="'+obj.companyCode+'">'+obj.companyName+'</option>';
  371 + }
  372 + $('[name=gsBm_eq]', f).html(opts);
  373 + ep.emit('query_comps');
  374 + });
  375 +
  376 + var lineMapps;
  377 + //加载线路信息
  378 + $.get('/line/all', {'destroy_eq': 0}, function (rs) {
  379 + rs.sort(function (a, b) {
  380 + return a.name.localeCompare(b.name);
  381 + });
  382 + lineMapps={};
  383 + var k;
  384 + $.each(rs, function () {
  385 + k = this.company+'_'+this.brancheCompany;
  386 + if(!lineMapps[k])
  387 + lineMapps[k]=[];
  388 + lineMapps[k].push(this);
  389 + });
  390 +
  391 + ep.emit('query_lines');
  392 + });
  393 +
  394 + $('[name=gsBm_eq]', f).on('change', function () {
  395 + var code = $(this).val(), subs=[];
  396 + $.each(comps, function () {
  397 + if(this.companyCode==code)
  398 + subs=this.children;
  399 + });
  400 +
  401 + var opts='';
  402 + $.each(subs, function () {
  403 + opts += '<option value="'+this.code+'">'+this.name+'</option>';
  404 + });
  405 + $('[name=fgsBm_eq]', f).html(opts).trigger('change');
  406 + });
  407 +
  408 + $('[name=fgsBm_eq]', f).on('change', function () {
  409 + var k = $('[name=gsBm_eq]', f).val() + '_' + $(this).val();
  410 + var array = lineMapps[k];
  411 + var opts = '';
  412 + if(array){
  413 + $.each(array, function () {
  414 + opts += '<option value="'+this.lineCode+'">'+this.name+'</option>';
  415 + });
  416 + }
  417 + $('[name=xlBm_eq]', f).html(opts);
  418 + });
  419 +
  420 + //
  421 + //滚动条
  422 + $('.t_body_wrap').perfectScrollbar({suppressScrollX: true});
  423 +
  424 + $(document).on('submit', 'form', function () {
  425 + return false;
  426 + });
  427 +
  428 + $('#add_hours_icon').on('click', function () {
  429 + UIkit.notification('暂不开放!', 'danger');
  430 + });
  431 +</script>
  432 +</body>
  433 +</html>
0 \ No newline at end of file 434 \ No newline at end of file
src/main/resources/static/pages/summary/excel/快慢误点报表.xls
No preview for this file type
src/main/resources/static/pages/summary/fast_and_slow/data.html
@@ -18,24 +18,30 @@ @@ -18,24 +18,30 @@
18 <div class="data_table_wrap head"> 18 <div class="data_table_wrap head">
19 <table cellspacing="1" class="data_table"> 19 <table cellspacing="1" class="data_table">
20 <col /> 20 <col />
21 - <col width="14%"/>  
22 - <col width="4%"/>  
23 - <col width="6%"/>  
24 - <col width="6%"/>  
25 - <col width="6%"/>  
26 <col width="5%"/> 21 <col width="5%"/>
27 <col width="5%"/> 22 <col width="5%"/>
28 <col width="5%"/> 23 <col width="5%"/>
  24 + <col width="13%"/>
  25 + <col width="4%"/>
29 <col width="5%"/> 26 <col width="5%"/>
30 - <col width="6%"/>  
31 - <col width="6%"/>  
32 - <col width="6%"/>  
33 <col width="5%"/> 27 <col width="5%"/>
34 <col width="5%"/> 28 <col width="5%"/>
  29 + <col width="4%"/>
  30 + <col width="4%"/>
  31 + <col width="4%"/>
  32 + <col width="4%"/>
35 <col width="5%"/> 33 <col width="5%"/>
36 <col width="5%"/> 34 <col width="5%"/>
  35 + <col width="5%"/>
  36 + <col width="4%"/>
  37 + <col width="4%"/>
  38 + <col width="4%"/>
  39 + <col width="4%"/>
37 <tr> 40 <tr>
38 <td rowspan="3">序号</td> 41 <td rowspan="3">序号</td>
  42 + <td rowspan="3">路牌</td>
  43 + <td rowspan="3">车辆</td>
  44 + <td rowspan="3">人员</td>
39 <td rowspan="3">发车站点</td> 45 <td rowspan="3">发车站点</td>
40 <td rowspan="3">方向</td> 46 <td rowspan="3">方向</td>
41 <td colspan="7">发车时间</td> 47 <td colspan="7">发车时间</td>
@@ -70,25 +76,31 @@ @@ -70,25 +76,31 @@
70 <div class="data_table_wrap data" id="table_{{k}}"> 76 <div class="data_table_wrap data" id="table_{{k}}">
71 <table cellspacing="1" class="data_table"> 77 <table cellspacing="1" class="data_table">
72 <col /> 78 <col />
73 - <col width="14%"/>  
74 - <col width="4%"/>  
75 - <col width="6%"/>  
76 - <col width="6%"/>  
77 - <col width="6%"/>  
78 <col width="5%"/> 79 <col width="5%"/>
79 <col width="5%"/> 80 <col width="5%"/>
80 <col width="5%"/> 81 <col width="5%"/>
  82 + <col width="13%"/>
  83 + <col width="4%"/>
81 <col width="5%"/> 84 <col width="5%"/>
82 - <col width="6%"/>  
83 - <col width="6%"/>  
84 - <col width="6%"/>  
85 <col width="5%"/> 85 <col width="5%"/>
86 <col width="5%"/> 86 <col width="5%"/>
  87 + <col width="4%"/>
  88 + <col width="4%"/>
  89 + <col width="4%"/>
  90 + <col width="4%"/>
87 <col width="5%"/> 91 <col width="5%"/>
88 <col width="5%"/> 92 <col width="5%"/>
  93 + <col width="5%"/>
  94 + <col width="4%"/>
  95 + <col width="4%"/>
  96 + <col width="4%"/>
  97 + <col width="4%"/>
89 {{each listMap[k] as obj i}} 98 {{each listMap[k] as obj i}}
90 <tr> 99 <tr>
91 <td>{{i+1}}</td> 100 <td>{{i+1}}</td>
  101 + <td>{{obj.lpName}}</td>
  102 + <td>{{obj.nbbm}}</td>
  103 + <td>{{obj.jsy}}</td>
92 <td>{{obj.stationName}}</td> 104 <td>{{obj.stationName}}</td>
93 <td class="cell_dir_{{obj.upDown}}">{{obj.upDown==0?"上行":"下行"}}</td> 105 <td class="cell_dir_{{obj.upDown}}">{{obj.upDown==0?"上行":"下行"}}</td>
94 <td>{{obj.fcsj}}</td> 106 <td>{{obj.fcsj}}</td>
@@ -108,21 +120,21 @@ @@ -108,21 +120,21 @@
108 </tr> 120 </tr>
109 {{/each}} 121 {{/each}}
110 <tr> 122 <tr>
111 - <td rowspan="4">合计:</td>  
112 - <td colspan="8" class="count_col">发车:上行(计划快误点:<a class="c_c_0">{{countMap[k][0]['fast'][0]}}</a> &nbsp;累计时间:<a class="c_c_0">{{timeCountMap[k][0]['fast'][0]}}</a> &nbsp;待发快误点:<a class="c_c_0">{{countMap[k][0]['fast'][1]}}</a> &nbsp;累计时间:<a class="c_c_0">{{timeCountMap[k][0]['fast'][1]}}</a>)</td>  
113 - <td colspan="8" class="count_col">发车:下行(计划快误点:<a class="c_c_1">{{countMap[k][1]['fast'][0]}}</a> &nbsp;累计时间:<a class="c_c_1">{{timeCountMap[k][1]['fast'][0]}}</a> 待发快误点:<a class="c_c_1">{{countMap[k][1]['fast'][1]}}</a> &nbsp;累计时间:<a class="c_c_1">{{timeCountMap[k][1]['fast'][1]}}</a>)</td> 123 + <td rowspan="4" colspan="2">合计:</td>
  124 + <td colspan="9" class="count_col">发车:上行(计划快误点:<a class="c_c_0">{{countMap[k][0]['fast'][0]}}</a> &nbsp;累计时间:<a class="c_c_0">{{timeCountMap[k][0]['fast'][0]}}</a> &nbsp;待发快误点:<a class="c_c_0">{{countMap[k][0]['fast'][1]}}</a> &nbsp;累计时间:<a class="c_c_0">{{timeCountMap[k][0]['fast'][1]}}</a>)</td>
  125 + <td colspan="9" class="count_col">发车:下行(计划快误点:<a class="c_c_1">{{countMap[k][1]['fast'][0]}}</a> &nbsp;累计时间:<a class="c_c_1">{{timeCountMap[k][1]['fast'][0]}}</a> 待发快误点:<a class="c_c_1">{{countMap[k][1]['fast'][1]}}</a> &nbsp;累计时间:<a class="c_c_1">{{timeCountMap[k][1]['fast'][1]}}</a>)</td>
114 </tr> 126 </tr>
115 <tr> 127 <tr>
116 - <td colspan="8" class="count_col">发车:上行(计划慢误点:<a class="c_c_0">{{countMap[k][0]['slow'][0]}}</a> &nbsp;累计时间:<a class="c_c_0">{{timeCountMap[k][0]['slow'][0]}}</a> &nbsp;待发慢误点:<a class="c_c_0">{{countMap[k][0]['slow'][1]}}</a> &nbsp;累计时间:<a class="c_c_0">{{timeCountMap[k][0]['slow'][1]}}</a>)</td>  
117 - <td colspan="8" class="count_col">发车:下行(计划慢误点:<a class="c_c_1">{{countMap[k][1]['slow'][0]}}</a> &nbsp;累计时间:<a class="c_c_1">{{timeCountMap[k][1]['slow'][0]}}</a> &nbsp;待发慢误点:<a class="c_c_1">{{countMap[k][1]['slow'][1]}}</a> &nbsp;累计时间:<a class="c_c_1">{{timeCountMap[k][1]['slow'][1]}}</a>)</td> 128 + <td colspan="9" class="count_col">发车:上行(计划慢误点:<a class="c_c_0">{{countMap[k][0]['slow'][0]}}</a> &nbsp;累计时间:<a class="c_c_0">{{timeCountMap[k][0]['slow'][0]}}</a> &nbsp;待发慢误点:<a class="c_c_0">{{countMap[k][0]['slow'][1]}}</a> &nbsp;累计时间:<a class="c_c_0">{{timeCountMap[k][0]['slow'][1]}}</a>)</td>
  129 + <td colspan="9" class="count_col">发车:下行(计划慢误点:<a class="c_c_1">{{countMap[k][1]['slow'][0]}}</a> &nbsp;累计时间:<a class="c_c_1">{{timeCountMap[k][1]['slow'][0]}}</a> &nbsp;待发慢误点:<a class="c_c_1">{{countMap[k][1]['slow'][1]}}</a> &nbsp;累计时间:<a class="c_c_1">{{timeCountMap[k][1]['slow'][1]}}</a>)</td>
118 </tr> 130 </tr>
119 <tr> 131 <tr>
120 - <td colspan="8" class="count_col">到达:上行(计划快误点:<a class="c_c_0">{{countMap[k][0]['fast'][2]}}</a> &nbsp;累计时间:<a class="c_c_0">{{timeCountMap[k][0]['fast'][2]}}</a> &nbsp;待发快误点:<a class="c_c_0">{{countMap[k][0]['fast'][3]}}</a> &nbsp;累计时间:<a class="c_c_0">{{timeCountMap[k][0]['fast'][3]}}</a>)</td>  
121 - <td colspan="8" class="count_col">到达:下行(计划快误点:<a class="c_c_1">{{countMap[k][1]['fast'][2]}}</a> &nbsp;累计时间:<a class="c_c_1">{{timeCountMap[k][1]['fast'][2]}}</a> &nbsp;待发快误点:<a class="c_c_1">{{countMap[k][1]['fast'][3]}}</a> &nbsp;累计时间:<a class="c_c_1">{{timeCountMap[k][1]['fast'][3]}}</a>)</td> 132 + <td colspan="9" class="count_col">到达:上行(计划快误点:<a class="c_c_0">{{countMap[k][0]['fast'][2]}}</a> &nbsp;累计时间:<a class="c_c_0">{{timeCountMap[k][0]['fast'][2]}}</a> &nbsp;待发快误点:<a class="c_c_0">{{countMap[k][0]['fast'][3]}}</a> &nbsp;累计时间:<a class="c_c_0">{{timeCountMap[k][0]['fast'][3]}}</a>)</td>
  133 + <td colspan="9" class="count_col">到达:下行(计划快误点:<a class="c_c_1">{{countMap[k][1]['fast'][2]}}</a> &nbsp;累计时间:<a class="c_c_1">{{timeCountMap[k][1]['fast'][2]}}</a> &nbsp;待发快误点:<a class="c_c_1">{{countMap[k][1]['fast'][3]}}</a> &nbsp;累计时间:<a class="c_c_1">{{timeCountMap[k][1]['fast'][3]}}</a>)</td>
122 </tr> 134 </tr>
123 <tr> 135 <tr>
124 - <td colspan="8" class="count_col">到达:上行(计划慢误点:<a class="c_c_0">{{countMap[k][0]['slow'][2]}}</a> &nbsp;累计时间:<a class="c_c_0">{{timeCountMap[k][0]['slow'][2]}}</a> &nbsp;待发慢误点:<a class="c_c_0">{{countMap[k][0]['slow'][3]}}</a> &nbsp;累计时间:<a class="c_c_0">{{timeCountMap[k][0]['slow'][3]}}</a>)</td>  
125 - <td colspan="8" class="count_col">到达:下行(计划慢误点:<a class="c_c_1">{{countMap[k][1]['slow'][2]}}</a> &nbsp;累计时间:<a class="c_c_1">{{timeCountMap[k][1]['slow'][2]}}</a> &nbsp;待发慢误点:<a class="c_c_1">{{countMap[k][1]['slow'][3]}}</a> &nbsp;累计时间:<a class="c_c_1">{{timeCountMap[k][1]['slow'][3]}}</a>)</td> 136 + <td colspan="9" class="count_col">到达:上行(计划慢误点:<a class="c_c_0">{{countMap[k][0]['slow'][2]}}</a> &nbsp;累计时间:<a class="c_c_0">{{timeCountMap[k][0]['slow'][2]}}</a> &nbsp;待发慢误点:<a class="c_c_0">{{countMap[k][0]['slow'][3]}}</a> &nbsp;累计时间:<a class="c_c_0">{{timeCountMap[k][0]['slow'][3]}}</a>)</td>
  137 + <td colspan="9" class="count_col">到达:下行(计划慢误点:<a class="c_c_1">{{countMap[k][1]['slow'][2]}}</a> &nbsp;累计时间:<a class="c_c_1">{{timeCountMap[k][1]['slow'][2]}}</a> &nbsp;待发慢误点:<a class="c_c_1">{{countMap[k][1]['slow'][3]}}</a> &nbsp;累计时间:<a class="c_c_1">{{timeCountMap[k][1]['slow'][3]}}</a>)</td>
126 </tr> 138 </tr>
127 </table> 139 </table>
128 </div> 140 </div>
src/main/resources/static/pages/summary/fast_and_slow/main.html
@@ -91,19 +91,20 @@ @@ -91,19 +91,20 @@
91 } 91 }
92 92
93 .ct_rq_left{ 93 .ct_rq_left{
94 - width: 200px; 94 + width: 130px;
95 display: inline-block; 95 display: inline-block;
96 vertical-align: top; 96 vertical-align: top;
97 height: calc(100% - 184px); 97 height: calc(100% - 184px);
98 position: fixed; 98 position: fixed;
99 left: 25px; 99 left: 25px;
  100 + padding: 40px 15px;
100 } 101 }
101 102
102 .ct_right_tables{ 103 .ct_right_tables{
103 - width: calc(100% - 220px); 104 + width: calc(100% - 160px);
104 display: inline-block; 105 display: inline-block;
105 - margin-left: 232px;  
106 - padding: 25px; 106 + margin-left: 152px;
  107 + padding: 25px 0;
107 margin-bottom: 18px; 108 margin-bottom: 18px;
108 } 109 }
109 110
@@ -117,7 +118,7 @@ @@ -117,7 +118,7 @@
117 width: 15px; 118 width: 15px;
118 border-top: 1px solid #1e87f0; 119 border-top: 1px solid #1e87f0;
119 z-index: 9; 120 z-index: 9;
120 - right: 60px; 121 + right: 40px;
121 top: 15px; 122 top: 15px;
122 } 123 }
123 .uk-nav-default>li.uk-active>a { 124 .uk-nav-default>li.uk-active>a {
@@ -126,7 +127,7 @@ @@ -126,7 +127,7 @@
126 } 127 }
127 128
128 .data_table_wrap{ 129 .data_table_wrap{
129 - min-width: 1170px; 130 + min-width: 1070px;
130 } 131 }
131 132
132 .ct_right_tables table{ 133 .ct_right_tables table{
@@ -156,7 +157,7 @@ @@ -156,7 +157,7 @@
156 157
157 .data_table_wrap.head{ 158 .data_table_wrap.head{
158 position: fixed; 159 position: fixed;
159 - width: calc(100% - 300px); 160 + width: calc(100% - 190px);
160 top: 155px; 161 top: 155px;
161 padding-top: 25px; 162 padding-top: 25px;
162 background: #fff; 163 background: #fff;