Commit d537398eb0521b8537e3c1fa9cb6d2224a5e4491

Authored by 潘钊
2 parents a119a6f9 36430cc8

Merge branch 'minhang' into pudong

Showing 35 changed files with 3558 additions and 430 deletions
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;
src/main/resources/static/real_control_v2/fragments/north/nav/history_sch/editor.html
@@ -186,9 +186,9 @@ @@ -186,9 +186,9 @@
186 <a class="uk-button uk-button-success"><i class="uk-icon-pencil-square-o"></i> 添加子任务 <i class="uk-icon-caret-down"></i></a> 186 <a class="uk-button uk-button-success"><i class="uk-icon-pencil-square-o"></i> 添加子任务 <i class="uk-icon-caret-down"></i></a>
187 <div class="uk-dropdown" style="text-align: left;"> 187 <div class="uk-dropdown" style="text-align: left;">
188 <ul class="uk-nav uk-nav-dropdown child_task_list"> 188 <ul class="uk-nav uk-nav-dropdown child_task_list">
189 - <li data-method="add_oil"><a>空驶进出场</a></li> 189 + <!--<li data-method="add_oil"><a>空驶进出场</a></li>
190 <li data-method="in_park"><a>进场</a></li> 190 <li data-method="in_park"><a>进场</a></li>
191 - <li data-method="out_park"><a>出场</a></li> 191 + <li data-method="out_park"><a>出场</a></li>-->
192 <li data-method="other"><a>自定义</a></li> 192 <li data-method="other"><a>自定义</a></li>
193 </ul> 193 </ul>
194 </div> 194 </div>
src/main/resources/static/real_control_v2/fragments/north/nav/history_sch_maintain.html
@@ -126,20 +126,6 @@ @@ -126,20 +126,6 @@
126 $.each(rs, function (i) { 126 $.each(rs, function (i) {
127 tsStr += '<li ' + (i == 0 ? 'class="uk-active"' : '') + '><a>' + this + '</a></li>'; 127 tsStr += '<li ' + (i == 0 ? 'class="uk-active"' : '') + '><a>' + this + '</a></li>';
128 }); 128 });
129 - //临时放开闵行39路的日期权限  
130 - /*if(gb_data_basic.line_idx=='100001'){  
131 - var st = moment('2017-08-29', 'YYYY-MM-DD');  
132 - var et = moment().format('YYYY-MM-DD');  
133 - tsStr = '';  
134 - while(true){  
135 - var rq = st.format('YYYY-MM-DD');  
136 - tsStr += '<li ' + (rq == et ? 'class="uk-active"' : '') + '><a>' + rq + '</a></li>';  
137 - st.add(1, 'days');  
138 -  
139 - if(rq == et)  
140 - break;  
141 - }  
142 - }*/  
143 129
144 $('.h-s-time', modal).html(tsStr); 130 $('.h-s-time', modal).html(tsStr);
145 131
src/main/resources/static/real_control_v2/js/north/toolbar.js
@@ -126,7 +126,7 @@ var gb_northToolbar = (function () { @@ -126,7 +126,7 @@ var gb_northToolbar = (function () {
126 open_modal('/real_control_v2/fragments/north/nav/cache_data/list.html', {}, modal_opts); 126 open_modal('/real_control_v2/fragments/north/nav/cache_data/list.html', {}, modal_opts);
127 }, 127 },
128 form_waybill: function () { 128 form_waybill: function () {
129 - gb_embed_form_hanlde.open_modal_form_fragment('/pages/forms/statement/waybill.html', '行车路单'); 129 + gb_embed_form_hanlde.open_modal_form_fragment('/pages/forms/statement/<dd>上行</dd>', '行车路单');
130 }, 130 },
131 form_waybillQp: function () { 131 form_waybillQp: function () {
132 gb_embed_form_hanlde.open_modal_form_fragment('/pages/forms/statement/waybillQp.html', '行车路单'); 132 gb_embed_form_hanlde.open_modal_form_fragment('/pages/forms/statement/waybillQp.html', '行车路单');