Commit d537398eb0521b8537e3c1fa9cb6d2224a5e4491

Authored by 潘钊
2 parents a119a6f9 36430cc8

Merge branch 'minhang' into pudong

Showing 32 changed files with 3555 additions and 413 deletions

Too many changes to show.

To preserve performance only 32 of 35 files are displayed.

src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
... ... @@ -549,9 +549,9 @@ public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo,
549 549 public List<String> dateArray(@RequestParam(defaultValue = "0") int c){
550 550 List<String> rs = new ArrayList<>();
551 551  
552   - long t = new Date().getTime();
  552 + long t = System.currentTimeMillis();
553 553 if(c != 1)
554   - t -= ONE_DAY - (1000 * 60 * 60 * 2);
  554 + t -= (ONE_DAY + (1000 * 60 * 60 * 2));
555 555 for(int i = 0; i < 3; i ++){
556 556 rs.add(fmtyyyyMMdd.print(t));
557 557 t -= ONE_DAY;
... ...
src/main/java/com/bsth/data/gpsdata/arrival/GpsRealAnalyse.java
... ... @@ -41,7 +41,7 @@ public class GpsRealAnalyse {
41 41 @Autowired
42 42 GpsRealData gpsRealData;
43 43  
44   - final static int POOL_SIZE = 15;
  44 + final static int POOL_SIZE = 30;
45 45 static ExecutorService threadPool = Executors.newFixedThreadPool(POOL_SIZE + 1);
46 46  
47 47 public static long st;
... ... @@ -68,7 +68,7 @@ public class GpsRealAnalyse {
68 68 }
69 69 List<String> deviceList = new ArrayList<>(multimap.keySet());
70 70  
71   - //数据均分给20个线程
  71 + //数据均分给线程
72 72 ArrayListMultimap dataListMap = ArrayListMultimap.create();
73 73 int size = deviceList.size(), threadIndex=0, threadSize = size / POOL_SIZE;
74 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 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 87 return true;
... ...
src/main/java/com/bsth/data/summary/entity/FastAndSlow.java
... ... @@ -21,6 +21,22 @@ public class FastAndSlow {
21 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 42 private String stationName;
... ... @@ -281,4 +297,28 @@ public class FastAndSlow {
281 297 public boolean isFast() {
282 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 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 119 //前4行是表头
120 120 Row row;
121 121 row = sheet.getRow(0);
122   - row.getCell(4).setCellValue(list.get(0).getRq());
  122 + row.getCell(0).setCellValue(list.get(0).getRq());
123 123 row.getCell(13).setCellValue(BasicData.lineCode2NameMap.get(list.get(0).getLineCode()));
124 124 FastAndSlow fas;
125 125 for(int i = 0; i < list.size(); i++){
126 126 fas = list.get(i);
127 127 row = sheet.createRow(i + 4);
128 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 150 if(fas.getUpDown()==0)
147 151 ups.add(fas);
... ... @@ -151,28 +155,28 @@ public class FastAndSlowServiceImpl extends BaseServiceImpl&lt;FastAndSlow, Long&gt; i
151 155 //合计
152 156 int size = list.size();
153 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 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 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 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 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 35  
36 36 /**
37 37 * 任务类型2
  38 + * 1 正常 2 进场 3 出场
38 39 */
39 40 private String type2;
40 41  
... ... @@ -99,6 +100,11 @@ public class ChildTaskPlan {
99 100 private String nbbm;
100 101  
101 102 /**
  103 + * 中途换车营运, 新车关联的主任务ID,子任务删除时,主任务ID将级联
  104 + */
  105 + private Long ccId;
  106 +
  107 + /**
102 108 * 为true 则无售票员, 否则继承主任务
103 109 */
104 110 private boolean noClerk;
... ... @@ -277,4 +283,12 @@ public class ChildTaskPlan {
277 283 public void setNoClerk(boolean noClerk) {
278 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 225 */
226 226 private Integer driftStatus = 0;
227 227  
  228 + /**
  229 + * 换车营运标记 true 表示该主任务由 【中途换车子任务】 级联生成
  230 + */
  231 + private boolean ccService;
  232 +
228 233 public boolean isDfAuto() {
229 234 return dfAuto;
230 235 }
... ... @@ -958,4 +963,12 @@ public class ScheduleRealInfo {
958 963 public void setDriftStatus(Integer driftStatus) {
959 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 129 int countByLineCodeAndDate(String xlBm, String schDate);
130 130  
131 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 133 List<ScheduleRealInfo> findByLineCodeAndDate(String xlBm, String schDate);
134 134  
135 135 @Modifying
... ... @@ -146,7 +146,14 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI
146 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 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 157 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
151 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 159 List<ScheduleRealInfo> scheduleByDateAndLineByGs_(String gsdm,String fgsdm,String date);
... ... @@ -170,7 +177,7 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI
170 177  
171 178 //按照时间段统计
172 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 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 744 if(cts != null && cts.size() > 0){
745 745 newList_.add(s);
746 746 }else{
747   - if(s.getZdsjActual()!=null){
  747 + if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
748 748 newList_.add(s);
749 749 }
750 750 }
... ... @@ -798,7 +798,7 @@ public class FormsServiceImpl implements FormsService {
798 798 if(cts != null && cts.size() > 0){
799 799 newList_.add(s);
800 800 }else{
801   - if(s.getZdsjActual()!=null){
  801 + if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
802 802 newList_.add(s);
803 803 }
804 804 }
... ... @@ -884,7 +884,7 @@ public class FormsServiceImpl implements FormsService {
884 884 if(cts != null && cts.size() > 0){
885 885 newList_.add(s);
886 886 }else{
887   - if(s.getZdsjActual()!=null){
  887 + if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
888 888 newList_.add(s);
889 889 }
890 890 }
... ... @@ -1199,8 +1199,8 @@ public class FormsServiceImpl implements FormsService {
1199 1199  
1200 1200 String sql = "select gs_name, fgs_name, cl_zbh, fcsj, bc_type, xl_bm, xl_name, schedule_date"
1201 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 1204 if(line.trim().length() != 0){
1205 1205 sql += "and xl_bm = '"+line+"' ";
1206 1206 }
... ... @@ -1356,8 +1356,8 @@ public class FormsServiceImpl implements FormsService {
1356 1356  
1357 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 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 1361 + map.get("line").toString() + "' AND gs_bm is not null AND bc_type NOT IN ('in', 'out')"
1362 1362 + " and gs_bm='"+ map.get("gsdmEcecut").toString() + "'"
1363 1363 + " and fgs_bm='"+ map.get("fgsdmEcecut").toString() + "'"
... ... @@ -1440,8 +1440,8 @@ public class FormsServiceImpl implements FormsService {
1440 1440  
1441 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 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 1445 + map.get("line").toString() + "' AND gs_bm is not null AND bc_type NOT IN ('in', 'out') "
1446 1446 + " and gs_bm='"+ map.get("gsdmAllline").toString() + "'"
1447 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 57  
58 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 61 if(line.length() != 0){
62 62 sql += " and xl_bm = '"+line+"'";
63 63 }
... ... @@ -86,7 +86,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
86 86 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
87 87 ScheduleRealInfo schedule = new ScheduleRealInfo();
88 88 schedule.setId(rs.getLong("id"));
89   - schedule.setScheduleDateStr(rs.getString("schedule_date_Str"));
  89 + schedule.setScheduleDateStr(rs.getString("schedule_date_str"));
90 90 schedule.setRealExecDate(rs.getString("real_exec_date"));
91 91 schedule.setXlBm(rs.getString("xl_bm"));
92 92 schedule.setXlName(rs.getString("xl_name"));
... ... @@ -117,6 +117,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
117 117 schedule.setjName(rs.getString("j_name"));
118 118 schedule.setSpId(rs.getLong("sp_id"));
119 119 schedule.setSflj(rs.getBoolean("sflj"));
  120 + schedule.setCcService(rs.getBoolean("cc_service"));
120 121  
121 122 if(schedule.getFcsjActual() != null && schedule.getFcsjActual().trim().length() == 0){
122 123 schedule.setFcsjActual(null);
... ... @@ -371,6 +372,8 @@ public class BusIntervalServiceImpl implements BusIntervalService {
371 372 // int endTime = Integer.valueOf(split[1].split(":")[0])*60 + Integer.valueOf(split[1].split(":")[1]);
372 373  
373 374 for(ScheduleRealInfo schedule : list){
  375 + if(schedule.isCcService())
  376 + continue;
374 377 String[] split1 = schedule.getFcsj().split(":");
375 378 String[] split2 = schedule.getZdsj().split(":");
376 379 long fcsj = Long.valueOf(split1[0])*60 + Long.valueOf(split1[1]);
... ... @@ -674,10 +677,10 @@ public class BusIntervalServiceImpl implements BusIntervalService {
674 677 // where += " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'";
675 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 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 685 list = jdbcTemplate.query(sql,
683 686 new RowMapper<ScheduleRealInfo>(){
... ... @@ -685,7 +688,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
685 688 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
686 689 ScheduleRealInfo schedule = new ScheduleRealInfo();
687 690 schedule.setId(rs.getLong("id"));
688   - schedule.setScheduleDateStr(rs.getString("schedule_date_Str"));
  691 + schedule.setScheduleDateStr(rs.getString("schedule_date_str"));
689 692 schedule.setRealExecDate(rs.getString("real_exec_date"));
690 693 schedule.setXlName(rs.getString("xl_name"));
691 694 schedule.setLpName(rs.getString("lp_name"));
... ... @@ -705,6 +708,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
705 708 schedule.setGsName(rs.getString("gs_name"));
706 709 schedule.setFgsName(rs.getString("fgs_name"));
707 710 schedule.setSpId(rs.getLong("sp_id"));
  711 + schedule.setCcService(rs.getBoolean("cc_service"));
708 712  
709 713 if(schedule.getFcsjActual() != null && schedule.getFcsjActual().trim().length() == 0){
710 714 schedule.setFcsjActual(null);
... ... @@ -885,7 +889,8 @@ public class BusIntervalServiceImpl implements BusIntervalService {
885 889 }
886 890  
887 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 894 continue;
890 895 if(model.length() != 0){
891 896 if(ttSet.contains(schedule.getSpId())){
... ... @@ -1393,6 +1398,9 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1393 1398 int endTime = Integer.valueOf(split[1].split(":")[0])*60 + Integer.valueOf(split[1].split(":")[1]);
1394 1399  
1395 1400 for(ScheduleRealInfo s : list){
  1401 + if(s.isCcService()){
  1402 + continue;
  1403 + }
1396 1404 String key = s.getScheduleDateStr() + "/" + s.getLpName();
1397 1405 if(!keyMap.containsKey(key))
1398 1406 keyMap.put(key, new ArrayList<ScheduleRealInfo>());
... ... @@ -1668,14 +1676,14 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1668 1676 lc = new BigDecimal("0"+schedule.getJhlc());
1669 1677 }
1670 1678  
1671   - if(!schedule.isSflj()){
  1679 + if(!schedule.isSflj() && !schedule.isCcService()){
1672 1680 jhbc++;
1673 1681 jhlc = jhlc.add(lc);
1674 1682 }
1675   - if(schedule.getStatus() != -1){
  1683 + if(schedule.getStatus() != -1 && !schedule.isCcService()){
1676 1684 sjbc++;
1677 1685 sjlc = sjlc.add(lc);
1678   - } else if(schedule.getStatus() == -1){
  1686 + } else if(schedule.getStatus() == -1 && !schedule.isCcService()){
1679 1687 if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("路阻") != -1){
1680 1688 lzbc++;
1681 1689 lzlc = lzlc.add(lc);
... ... @@ -1811,8 +1819,8 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1811 1819 }
1812 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 1824 if(line.length() != 0){
1817 1825 sql += " and xl_bm = '"+line+"'";
1818 1826 }
... ... @@ -1829,7 +1837,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1829 1837 }
1830 1838 }
1831 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 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 1846 @Override
1839 1847 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
1840 1848 ScheduleRealInfo schedule = new ScheduleRealInfo();
1841   - schedule.setScheduleDateStr(rs.getString("schedule_date_Str"));
  1849 + schedule.setScheduleDateStr(rs.getString("schedule_date_str"));
1842 1850 schedule.setXlBm(rs.getString("xl_bm"));
1843 1851 schedule.setXlName(rs.getString("xl_name"));
1844 1852 schedule.setLpName(rs.getString("lp_name"));
... ... @@ -1864,6 +1872,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1864 1872 schedule.setjGh(rs.getString("j_gh"));
1865 1873 schedule.setjName(rs.getString("j_name"));
1866 1874 schedule.setUpdateDate(rs.getDate("update_date"));
  1875 + schedule.setCcService(rs.getBoolean("cc_service"));
1867 1876  
1868 1877 if(schedule.getFcsjActual() != null && schedule.getFcsjActual().trim().length() == 0){
1869 1878 schedule.setFcsjActual(null);
... ... @@ -1905,7 +1914,8 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1905 1914 dxtz = 0, lbtz = 0;
1906 1915 for(ScheduleRealInfo schedule : keyMap.get(key)){
1907 1916 boolean flag = false;
1908   - if(schedule.getFcsjActual() != null && schedule.getStatus() != -1){
  1917 + if(schedule.getFcsjActual() != null && schedule.getStatus() != -1
  1918 + && !schedule.isCcService()){
1909 1919 sjbc++;
1910 1920 if(schedule.getDfsj() != null && !schedule.getDfsj().equals(schedule.getFcsj())){
1911 1921 flag = true;
... ... @@ -1937,9 +1947,9 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1937 1947 // tempMap.put("dxtz", dxtz);
1938 1948 tempMap.put("lbtz", lbtz);
1939 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 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 1953 // tempMap.put("correctbl", df.format((double)(sddf + zddf + dxtz + lbtz)/sjbc*100) + "%");
1944 1954 // tempMap.put("workList", tempList);
1945 1955  
... ... @@ -2069,9 +2079,9 @@ public class BusIntervalServiceImpl implements BusIntervalService {
2069 2079 // tempMap.put("dxtz", dxtz);
2070 2080 tempMap.put("lbtz", lbtz);
2071 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 2085 // tempMap.put("correctbl", df.format((double)(sddf + zddf + dxtz + lbtz)/sjbc*100) + "%");
2076 2086 resList.add(tempMap);
2077 2087 }
... ... @@ -2097,8 +2107,8 @@ public class BusIntervalServiceImpl implements BusIntervalService {
2097 2107 resMap.put("dxbl", "0");
2098 2108 resMap.put("correctbl", "0");
2099 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 2162 resMap.put("dxbl", "0");
2153 2163 resMap.put("correctbl", "0");
2154 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 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 46 try {
47 47 ScheduleRealInfo sch = dayOfSchedule.get(t.getSchedule().getId());
48 48 //保存起终点名称
49   - //String prefix = sch.getXlBm() + "_" + sch.getXlDir() + "_";
50 49 if(StringUtils.isEmpty(t.getStartStationName()))
51 50 t.setStartStationName(getStationName(sch.getXlBm(), t.getStartStation()));
52   - //t.setStartStationName(BasicData.getStationNameByCode(t.getStartStation(), prefix));
53 51  
54 52 if(StringUtils.isEmpty(t.getEndStationName()))
55 53 t.setEndStationName(getStationName(sch.getXlBm(), t.getEndStation()));
56   - //t.setEndStationName(BasicData.getStationNameByCode(t.getEndStation(), prefix));
57 54 if(t.getDestroyReason() == null)
58 55 t.setDestroyReason("");
59 56  
... ... @@ -61,13 +58,63 @@ public class ChildTaskPlanServiceImpl extends BaseServiceImpl&lt;ChildTaskPlan, Lon
61 58 if(t.isDestroy() && StringUtils.isEmpty(t.getDestroyReason()))
62 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 114 rs = super.save(t);
66 115 //关联主任务
67 116 sch.getcTasks().add(t);
68 117 dayOfSchedule.save(sch);
69   - //直接持久化
70   - //scheduleRealInfoRepository.save(sch);
71 118 //站到场对照
72 119 t.setSchedule(sch);
73 120 Station2ParkBuffer.put(t);
... ... @@ -101,6 +148,11 @@ public class ChildTaskPlanServiceImpl extends BaseServiceImpl&lt;ChildTaskPlan, Lon
101 148  
102 149 //删除子任务
103 150 rs = super.delete(id);
  151 +
  152 + //删除级联生成的换车主任务
  153 + if(null != cPlan.getCcId()){
  154 + scheduleRealInfoRepository.delete(cPlan.getCcId());
  155 + }
104 156 //dayOfSchedule.save(sch);
105 157 //解除和主任务关联
106 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 873 if(cts != null && cts.size() > 0){
874 874 lists.add(s);
875 875 }else{
876   - if(s.getZdsjActual()!=null){
  876 + if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
877 877 lists.add(s);
878 878 }
879 879 }
... ... @@ -1743,30 +1743,28 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1743 1743 if(cts != null && cts.size() > 0){
1744 1744 lists.add(s);
1745 1745 }else{
1746   - if(s.getZdsjActual()!=null){
  1746 + if(s.getFcsjActual() !=null&&s.getZdsjActual()!=null){
1747 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 1755 map.put("remMileage", culateService.culateLbgl(list)); //烂班公里
  1756 + map.put("ljbc", culateService.culateLjbc(lists,""));//临加班次
  1757 + double ljgl=culateService.culateLjgl(lists);
1758 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 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 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 1768 return map;
1771 1769 }
1772 1770  
... ... @@ -1789,7 +1787,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1789 1787 if(cts != null && cts.size() > 0){
1790 1788 lists.add(s);
1791 1789 }else{
1792   - if(s.getZdsjActual()!=null){
  1790 + if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
1793 1791 lists.add(s);
1794 1792 }
1795 1793 }
... ... @@ -2139,20 +2137,24 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2139 2137 for (int j = 0; j < listit.size(); j++) {
2140 2138 ScheduleRealInfo t = new ScheduleRealInfo();
2141 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 2297 if(cts != null && cts.size() > 0){
2296 2298 lists.add(s);
2297 2299 }else{
2298   - if(s.getZdsjActual()!=null){
  2300 + if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
2299 2301 lists.add(s);
2300 2302 }
2301 2303 }
... ... @@ -2370,7 +2372,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2370 2372 if(cts != null && cts.size() > 0){
2371 2373 lists.add(s);
2372 2374 }else{
2373   - if(s.getZdsjActual()!=null){
  2375 + if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
2374 2376 lists.add(s);
2375 2377 }
2376 2378 }
... ... @@ -2433,7 +2435,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2433 2435 if(cts != null && cts.size() > 0){
2434 2436 lists.add(s);
2435 2437 }else{
2436   - if(s.getZdsjActual()!=null){
  2438 + if(s.getZdsjActual()!=null&& s.getFcsjActual()!=null){
2437 2439 lists.add(s);
2438 2440 }
2439 2441 }
... ... @@ -2487,10 +2489,11 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2487 2489 map.put("dtbc", 0);
2488 2490 map.put("dtbc_m", 0);
2489 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 2498 return map;
2496 2499 }
... ... @@ -2515,7 +2518,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2515 2518 if(cts != null && cts.size() > 0){
2516 2519 list_s.add(s);
2517 2520 }else{
2518   - if(s.getZdsjActual()!=null){
  2521 + if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
2519 2522 list_s.add(s);
2520 2523 }
2521 2524 }
... ... @@ -2592,10 +2595,11 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2592 2595 map.put("dtbc", 0);
2593 2596 map.put("dtbc_m", 0);
2594 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 2603 lMap.add(map);
2600 2604 if (type != null && type.length() != 0 && type.equals("export")) {
2601 2605 SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
... ... @@ -2723,7 +2727,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2723 2727 String zdsjActual = "";
2724 2728 String zdsj1 = "";
2725 2729 String zdsjActual1 = "";
2726   - List<ScheduleRealInfo> listInfo = scheduleRealInfoRepository.scheduleByDateAndLineQp(line, date);
  2730 + List<ScheduleRealInfo> listInfo = scheduleRealInfoRepository.scheduleDdrb(line, date);
2727 2731 for (int i = 0; i < listInfo.size(); i++) {
2728 2732 ScheduleRealInfo t = listInfo.get(i);
2729 2733 if (!lpName.equals(t.getLpName())) {
... ... @@ -2743,7 +2747,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2743 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 2751 List<ScheduleRealInfo> xList = new ArrayList<ScheduleRealInfo>();
2748 2752 List<ScheduleRealInfo> yList = new ArrayList<ScheduleRealInfo>();
2749 2753 List<ScheduleRealInfo> zList = new ArrayList<ScheduleRealInfo>();
... ... @@ -4211,7 +4215,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
4211 4215 if(cts != null && cts.size() > 0){
4212 4216 lists.add(s);
4213 4217 }else{
4214   - if(s.getZdsjActual()!=null){
  4218 + if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
4215 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 39 Map<String, Object> culateWdbcs(List<ScheduleRealInfo> lists);
40 40  
41 41 int culateDtfzbc(List<ScheduleRealInfo> lists,String type,String status,String item);
  42 +
  43 +
42 44 //以下计算方法供新报表使用
43 45 Map<String, Double> culateSjlcMap(List<ScheduleRealInfo> lists);//计划内营运and计划外营运
44 46  
... ...
src/main/java/com/bsth/service/report/impl/CulateMileageServiceImpl.java
1 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 3 import com.bsth.entity.realcontrol.ChildTaskPlan;
24 4 import com.bsth.entity.realcontrol.ScheduleRealInfo;
25 5 import com.bsth.entity.sys.Interval;
... ... @@ -27,8 +7,18 @@ import com.bsth.service.report.CulateMileageService;
27 7 import com.bsth.util.Arith;
28 8 import com.bsth.util.ComparableChild;
29 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 23 @Service
34 24 public class CulateMileageServiceImpl implements CulateMileageService{
... ... @@ -179,10 +169,12 @@ public class CulateMileageServiceImpl implements CulateMileageService{
179 169 Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
180 170 while (it.hasNext()) {
181 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 190 for (int i = 0; i < lists.size(); i++) {
199 191 ScheduleRealInfo scheduleRealInfo=lists.get(i);
200 192 if (!isInOut(scheduleRealInfo)) {
201   -// Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
202   -// if(childTaskPlans.isEmpty()){
  193 + if(!scheduleRealInfo.isCcService()){
203 194 if(scheduleRealInfo.getStatus() == -1){
204 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 200 return lbbc;
... ... @@ -378,7 +351,7 @@ public class CulateMileageServiceImpl implements CulateMileageService{
378 351 Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
379 352 while (it.hasNext()) {
380 353 ChildTaskPlan childTaskPlan = it.next();
381   - if(childTaskPlan.getMileageType().equals("service")){
  354 + if(childTaskPlan.getMileageType().equals("service") && childTaskPlan.getCcId()==null){
382 355 if (!childTaskPlan.isDestroy()) {
383 356 Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
384 357 ljgl=Arith.add(ljgl,jhgl);
... ... @@ -399,11 +372,13 @@ public class CulateMileageServiceImpl implements CulateMileageService{
399 372 Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
400 373 while (it.hasNext()) {
401 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 438 for (int i = 0; i < lists.size(); i++) {
464 439 ScheduleRealInfo scheduleRealInfo=lists.get(i);
465 440 if (!isInOut(scheduleRealInfo)) {
466   - if(!scheduleRealInfo.isSflj()){
  441 + if(!scheduleRealInfo.isSflj() && !scheduleRealInfo.isCcService()){
467 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 479 for (int i = 0; i < lists.size(); i++) {
505 480 ScheduleRealInfo scheduleRealInfo=lists.get(i);
506 481 if (!isInOut(scheduleRealInfo)) {
507   - if(!scheduleRealInfo.isSflj()){
  482 + if(!scheduleRealInfo.isSflj() && !scheduleRealInfo.isCcService()){
508 483 String[] fcsjStr = scheduleRealInfo.getFcsj().split(":");
509 484 long fcsj= Long.parseLong(fcsjStr[0])*60+Long.parseLong(fcsjStr[1]);
510 485 if(item.equals("zgf")){
... ... @@ -535,21 +510,23 @@ public class CulateMileageServiceImpl implements CulateMileageService{
535 510 Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
536 511 if(!scheduleRealInfo.isSflj()){
537 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 523 }else{
549 524 Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
550 525 while (it.hasNext()) {
551 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 530 if (!childTaskPlan.isDestroy()) {
554 531 Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
555 532 sjgl=Arith.add(sjgl,jhgl);
... ... @@ -649,8 +626,7 @@ public class CulateMileageServiceImpl implements CulateMileageService{
649 626 for (int i = 0; i < lists.size(); i++) {
650 627 ScheduleRealInfo scheduleRealInfo=lists.get(i);
651 628 if (!isInOut(scheduleRealInfo)) {
652   - Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
653   - if(!scheduleRealInfo.isSflj()){
  629 + if(!scheduleRealInfo.isSflj() && !scheduleRealInfo.isCcService()){
654 630 String time="";
655 631 if(item.equals("zgf") || item.equals("wgf")){
656 632 if(scheduleRealInfo.getFcsjActual()!=null){
... ... @@ -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 670 double ksgl =0;
751 671 for (int i = 0; i < lists.size(); i++) {
752 672 ScheduleRealInfo scheduleRealInfo=lists.get(i);
753   - if (!(scheduleRealInfo.getBcType().equals("in")
754   - || scheduleRealInfo.getBcType().equals("out"))) {
  673 + if (!isInOut(scheduleRealInfo)) {
755 674 Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
756 675 if(!childTaskPlans.isEmpty()){
757 676 Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
758 677 while (it.hasNext()) {
759 678 ChildTaskPlan childTaskPlan = it.next();
760   - if(childTaskPlan.getMileageType().equals("empty")){
  679 + if(childTaskPlan.getMileageType().equals("empty") && childTaskPlan.getCcId()==null){
761 680 if (!childTaskPlan.isDestroy()) {
762 681 Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
763 682 ksgl=Arith.add(ksgl,jhgl);
... ... @@ -786,7 +705,7 @@ public class CulateMileageServiceImpl implements CulateMileageService{
786 705 Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
787 706 while (it.hasNext()) {
788 707 ChildTaskPlan childTaskPlan = it.next();
789   - if(childTaskPlan.getMileageType().equals("empty")){
  708 + if(childTaskPlan.getMileageType().equals("empty") && childTaskPlan.getCcId()==null){
790 709 if (!childTaskPlan.isDestroy()) {
791 710 Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
792 711 jcclc=Arith.add(jcclc,jhgl);
... ... @@ -907,7 +826,7 @@ public class CulateMileageServiceImpl implements CulateMileageService{
907 826 double jcclc =0;
908 827 for (int i = 0; i < lists.size(); i++) {
909 828 ScheduleRealInfo scheduleRealInfo=lists.get(i);
910   - if(!scheduleRealInfo.isSflj()){
  829 + if(!scheduleRealInfo.isSflj() && !scheduleRealInfo.isCcService()){
911 830 if (scheduleRealInfo.getBcType().equals("in")
912 831 || scheduleRealInfo.getBcType().equals("out")|| scheduleRealInfo.getBcType().equals("ldks")) {
913 832 if(!scheduleRealInfo.isSflj()){
... ... @@ -946,16 +865,17 @@ public class CulateMileageServiceImpl implements CulateMileageService{
946 865 //有子任务
947 866 if (cts != null && cts.size() > 0) {
948 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 881 else if(isInOut(sch))
... ... @@ -984,7 +904,8 @@ public class CulateMileageServiceImpl implements CulateMileageService{
984 904 int fzbc=0;
985 905 for (int i = 0; i < lists.size(); i++) {
986 906 ScheduleRealInfo scheduleRealInfo=lists.get(i);
987   - if (scheduleRealInfo.getBcType().equals("venting")) {
  907 + if (scheduleRealInfo.getBcType().equals("venting")
  908 + || scheduleRealInfo.getBcType().equals("major")) {
988 909 // if(!scheduleRealInfo.isSflj()){
989 910 String[] fcsjStr = scheduleRealInfo.getFcsj().split(":");
990 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 1838 || scheduleRealInfo.getBcType().equals("ldks"))) {
1839 1839 // Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
1840 1840 // if(childTaskPlans.isEmpty()){
1841   - if(scheduleRealInfo.isSflj()){
  1841 + if(scheduleRealInfo.isSflj() && !scheduleRealInfo.isCcService()){
1842 1842 Map<String, Object> newMap=new HashMap<String,Object>();
1843 1843 newMap.put("lp", scheduleRealInfo.getLpName());
1844 1844 newMap.put("nbbm", scheduleRealInfo.getClZbh());
... ... @@ -1916,7 +1916,7 @@ public class ReportServiceImpl implements ReportService{
1916 1916 if(cts != null && cts.size() > 0){
1917 1917 lists.add(s);
1918 1918 }else{
1919   - if(s.getZdsjActual()!=null){
  1919 + if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
1920 1920 lists.add(s);
1921 1921 }
1922 1922 }
... ... @@ -2534,7 +2534,7 @@ public class ReportServiceImpl implements ReportService{
2534 2534 if(cts != null && cts.size() > 0){
2535 2535 lists.add(s);
2536 2536 }else{
2537   - if(s.getZdsjActual()!=null){
  2537 + if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){
2538 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 42 List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>();
43 43  
44 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 47 if(line.length() != 0)
48 48 sql += " and xl_bm = '"+line+"'";
... ... @@ -54,7 +54,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
54 54 @Override
55 55 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
56 56 ScheduleRealInfo schedule = new ScheduleRealInfo();
57   - schedule.setScheduleDateStr(rs.getString("schedule_date_Str"));
  57 + schedule.setScheduleDateStr(rs.getString("schedule_date_str"));
58 58 schedule.setRealExecDate(rs.getString("real_exec_date"));
59 59 schedule.setXlName(rs.getString("xl_name"));
60 60 schedule.setLpName(rs.getString("lp_name"));
... ... @@ -80,6 +80,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
80 80 schedule.setsGh(rs.getString("s_gh"));
81 81 schedule.setsName(rs.getString("s_name"));
82 82 schedule.setSpId(rs.getLong("sp_id"));
  83 + schedule.setCcService(rs.getBoolean("cc_service"));
83 84  
84 85 if(schedule.getFcsjActual() != null && schedule.getFcsjActual().trim().length() == 0){
85 86 schedule.setFcsjActual(null);
... ... @@ -175,7 +176,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
175 176 }
176 177  
177 178 if(map.get("subCompany")!=null){
178   - subCompany=map.get("subCompany").toString();
  179 + subCompany = map.get("subCompany").toString();
179 180 }
180 181 String line = map.get("line").toString();
181 182 String date = map.get("date").toString();
... ... @@ -187,7 +188,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
187 188  
188 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 192 if(line.length() != 0){
192 193 sql += " and xl_bm = '"+line+"'";
193 194 }
... ... @@ -364,7 +365,10 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
364 365 int jhsb = 0, sjsb = 0, jhmb = 0, sjmb = 0;
365 366 int jhzgf = 0, sjzgf = 0, jhwgf = 0, sjwgf = 0;
366 367 for(ScheduleRealInfo schedule : keyMap.get(key)){
367   -// schedule.setFcsjAll(schedule.getFcsj());
  368 + if(schedule.isCcService()){
  369 + continue;
  370 + }
  371 +
368 372 if(companyName.length() == 0 && schedule.getGsName() != null)
369 373 companyName = schedule.getGsName();
370 374 if(subCompanyName.length() == 0 && schedule.getFgsName() != null)
... ... @@ -547,7 +551,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
547 551 }
548 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 555 if(line.length() != 0){
552 556 sql += " and xl_bm = '"+line+"'";
553 557 }
... ... @@ -565,7 +569,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
565 569 @Override
566 570 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
567 571 ScheduleRealInfo schedule = new ScheduleRealInfo();
568   - schedule.setScheduleDateStr(rs.getString("schedule_date_Str"));
  572 + schedule.setScheduleDateStr(rs.getString("schedule_date_str"));
569 573 schedule.setXlName(rs.getString("xl_name"));
570 574 schedule.setBcType(rs.getString("bc_type"));
571 575 schedule.setGsName(rs.getString("gs_name"));
... ... @@ -579,6 +583,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
579 583 schedule.setBcsj(rs.getInt("bcsj"));
580 584 schedule.setQdzName(rs.getString("qdz_name"));
581 585 schedule.setSpId(rs.getLong("sp_id"));
  586 + schedule.setCcService(rs.getBoolean("cc_service"));
582 587  
583 588 if(schedule.getFcsjActual() != null && schedule.getFcsjActual().trim().length() == 0){
584 589 schedule.setFcsjActual(null);
... ... @@ -636,6 +641,9 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
636 641  
637 642 //分组计算 同时判断是否所选时刻信息
638 643 for(ScheduleRealInfo schedule : list){
  644 + if(schedule.isCcService()){
  645 + continue;
  646 + }
639 647 DO:{
640 648 if(model.length() != 0){
641 649 for(Long tt : ttList){
... ... @@ -840,7 +848,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
840 848 }
841 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 852 if(line.length() != 0){
845 853 sql += " and xl_bm = '"+line+"'";
846 854 }
... ... @@ -862,7 +870,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
862 870 @Override
863 871 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
864 872 ScheduleRealInfo schedule = new ScheduleRealInfo();
865   - schedule.setScheduleDateStr(rs.getString("schedule_date_Str"));
  873 + schedule.setScheduleDateStr(rs.getString("schedule_date_str"));
866 874 schedule.setRealExecDate(rs.getString("real_exec_date"));
867 875 schedule.setXlName(rs.getString("xl_name"));
868 876 schedule.setBcType(rs.getString("bc_type"));
... ... @@ -878,6 +886,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
878 886 schedule.setBcsj(rs.getInt("bcsj"));
879 887 schedule.setQdzName(rs.getString("qdz_name"));
880 888 schedule.setSpId(rs.getLong("sp_id"));
  889 + schedule.setCcService(rs.getBoolean("cc_service"));
881 890  
882 891 if(schedule.getFcsjActual() != null && schedule.getFcsjActual().trim().length() == 0){
883 892 schedule.setFcsjActual(null);
... ... @@ -973,6 +982,10 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
973 982  
974 983 //按时间段分组
975 984 for(ScheduleRealInfo schedule : list){
  985 + if(schedule.isCcService()){
  986 + continue;
  987 + }
  988 +
976 989 if(companyName.length()==0&&schedule.getGsName()!=null
977 990 &&schedule.getGsName().trim().length()!=0){
978 991 companyName = schedule.getGsName();
... ... @@ -1230,9 +1243,9 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1230 1243 date = sdf.format(new Date());
1231 1244  
1232 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 1249 + " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks' and bc_type != 'region'";
1237 1250 if(line.trim().length() != 0)
1238 1251 sql += " and xl_bm = '"+line+"'";
... ... @@ -1244,7 +1257,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1244 1257 @Override
1245 1258 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
1246 1259 ScheduleRealInfo schedule = new ScheduleRealInfo();
1247   - schedule.setScheduleDateStr(rs.getString("schedule_date_Str"));
  1260 + schedule.setScheduleDateStr(rs.getString("schedule_date_str"));
1248 1261 schedule.setRealExecDate(rs.getString("real_exec_date"));
1249 1262 schedule.setXlName(rs.getString("xl_name"));
1250 1263 schedule.setFcsj(rs.getString("fcsj"));
... ... @@ -1257,6 +1270,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1257 1270 schedule.setStatus(rs.getInt("status"));
1258 1271 schedule.setGsName(rs.getString("gs_name"));
1259 1272 schedule.setFgsName(rs.getString("fgs_name"));
  1273 + schedule.setCcService(rs.getBoolean("cc_service"));
1260 1274  
1261 1275 int startOpt = 0;
1262 1276 if(rs.getString("start_opt") != null && rs.getString("start_opt").trim().length() != 0){
... ... @@ -1298,7 +1312,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1298 1312 String companyName = "", subCompanyName = "";
1299 1313  
1300 1314 for(ScheduleRealInfo s : list){
1301   - if(lineSet.contains(s.getXlName())){
  1315 + if(lineSet.contains(s.getXlName()) || s.isCcService()){
1302 1316 continue;
1303 1317 }
1304 1318 String xlName = s.getXlName();
... ... @@ -1456,9 +1470,9 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1456 1470 }
1457 1471  
1458 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 1476 + " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks' and bc_type != 'region'";
1463 1477 if(line.length() != 0)
1464 1478 sql += " and xl_bm = '"+line+"'";
... ... @@ -1470,7 +1484,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1470 1484 @Override
1471 1485 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
1472 1486 ScheduleRealInfo schedule = new ScheduleRealInfo();
1473   - schedule.setScheduleDateStr(rs.getString("schedule_date_Str"));
  1487 + schedule.setScheduleDateStr(rs.getString("schedule_date_str"));
1474 1488 schedule.setRealExecDate(rs.getString("real_exec_date"));
1475 1489 schedule.setXlName(rs.getString("xl_name"));
1476 1490 schedule.setFcsj(rs.getString("fcsj"));
... ... @@ -1483,6 +1497,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1483 1497 schedule.setStatus(rs.getInt("status"));
1484 1498 schedule.setGsName(rs.getString("gs_name"));
1485 1499 schedule.setFgsName(rs.getString("fgs_name"));
  1500 + schedule.setCcService(rs.getBoolean("cc_service"));
1486 1501  
1487 1502 int startOpt = 0;
1488 1503 if(rs.getString("start_opt") != null && rs.getString("start_opt").trim().length() != 0){
... ... @@ -1524,7 +1539,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1524 1539 String companyName = "", subCompanyName = "";
1525 1540  
1526 1541 for(ScheduleRealInfo s : list){
1527   - if(lineSet.contains(s.getXlName())){
  1542 + if(lineSet.contains(s.getXlName()) || s.isCcService()){
1528 1543 continue;
1529 1544 }
1530 1545 String xlName = s.getXlName();
... ... @@ -1716,7 +1731,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1716 1731  
1717 1732 String sql =
1718 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 1735 if(line.length() != 0){
1721 1736 sql += " and xl_bm = '"+line+"'";
1722 1737 }
... ... @@ -1728,7 +1743,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1728 1743 }
1729 1744 sql += " union " +
1730 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 1747 if(line.length() != 0){
1733 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 522 'dgmaxtzsj' : {required : true,number : true}, // 低谷最大停站时间,必填项、必须为整数.
523 523  
524 524 // 发车间隙分析用参数
525   - 'fcjx': {required: true}, // 时段发车间隙,TODO:貌似没发启用form验证
  525 + //'fcjx': {required: true}, // 时段发车间隙,TODO:貌似没发启用form验证
526 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 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 940 });
935 941  
936 942 // 发车间隙选择控件
937   - ComponentsBootstrapTagsinput.init_fcjx();
  943 + //ComponentsBootstrapTagsinput.init_fcjx();
938 944 // 停站类型选择控件
939 945 ComponentsBootstrapTagsinput.init_stoptype();
940 946  
... ...
src/main/resources/static/pages/base/timesmodel/js/gantt.js
... ... @@ -50,7 +50,7 @@
50 50 var CSMap = null,data = null;
51 51  
52 52 // 创建ParameterObj
53   - var _paramObj = StrategyUtils.getFactory().createParameterObj(map, dataMap);
  53 + var _paramObj;
54 54  
55 55 if(map.baseRes== '0') {
56 56 CSMap = getMaxCarAndStopSpace0(map,seMap);
... ... @@ -62,6 +62,8 @@
62 62 map.fcjx = CSMap.fcjx;
63 63 }else if (map.baseRes == '2') {
64 64 // TODO:之后可能有新的参数加入
  65 + _paramObj = StrategyUtils.getFactory().createParameterObj(map, dataMap);
  66 +
65 67 map.clzs = StrategyUtils.calcuClzx(_paramObj);
66 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 105  
106 106 // 计算各个时段的发车间隙
107 107 var _fcjxIntervalObj_fun = function() {
108   - var _fcjxes = _formMap.fcjx.split(",");
109 108 var _rtn = {
110 109 mpeakfcjx : {}, // 早高峰
111 110 epeakfcjx : {}, // 晚高峰
... ... @@ -114,32 +113,34 @@ var ParameterObj = function(formMap, dataMap) {
114 113 var _fcjx = [];
115 114 var i = 0;
116 115  
117   - // TODO:这里按照顺序判定发车间隔
  116 + // TODO:这里只有3个间隔,以后加其他的
118 117 // 1、早高峰间隙
119 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 145 return _rtn;
145 146 };
... ... @@ -502,7 +503,7 @@ var ParameterObj = function(formMap, dataMap) {
502 503 * @returns {Number|*}
503 504 */
504 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 144 </div>
145 145  
146 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 157 </div>
182 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 196 <div class="col-md-6">
186 197 <label class="control-label col-md-5"><span class="required"> * </span>停站类型 :</label>
187 198 <div class="col-md-5 tagsDiv">
... ... @@ -218,25 +229,14 @@
218 229  
219 230 </div>
220 231  
221   - </div>
222   -
223   - <div class="form-group">
224 232 <div class="col-md-6">
225 233 <label class="control-label col-md-5">
226   - <span class="required"> * </span> 高峰建议配车数 :</label>
  234 + <span class="required"> * </span> 高峰建议配车数 :</label>
227 235 <div class="col-md-5">
228 236 <input type="text" class="form-control" placeholder="车辆数" name="gfjypcs" id="gfjypcsInput" min="1">
229 237 </div>
230 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 240 </div>
241 241  
242 242 <!-- 隐藏字段-时间 -->
... ... @@ -412,38 +412,76 @@
412 412  
413 413 <div class="form-group">
414 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 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 418 </div>
421 419 </div>
422 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 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 424 </div>
429 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 441 </div>
432 442  
433 443 <div class="form-group">
434 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 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 454 </div>
439 455 </div>
  456 + </div>
  457 +
  458 + <div class="form-group">
440 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 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 465 </div>
445 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 485 </div>
448 486  
449 487 </script>
450 488 \ No newline at end of file
... ...
src/main/resources/static/pages/forms/statement/jobSummary.html
... ... @@ -273,7 +273,13 @@
273 273 })
274 274  
275 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 283 var list_xxsj=template('list_xxsj',result);
278 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 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 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 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 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 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 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 18 <div class="data_table_wrap head">
19 19 <table cellspacing="1" class="data_table">
20 20 <col />
21   - <col width="14%"/>
22   - <col width="4%"/>
23   - <col width="6%"/>
24   - <col width="6%"/>
25   - <col width="6%"/>
26 21 <col width="5%"/>
27 22 <col width="5%"/>
28 23 <col width="5%"/>
  24 + <col width="13%"/>
  25 + <col width="4%"/>
29 26 <col width="5%"/>
30   - <col width="6%"/>
31   - <col width="6%"/>
32   - <col width="6%"/>
33 27 <col width="5%"/>
34 28 <col width="5%"/>
  29 + <col width="4%"/>
  30 + <col width="4%"/>
  31 + <col width="4%"/>
  32 + <col width="4%"/>
35 33 <col width="5%"/>
36 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 40 <tr>
38 41 <td rowspan="3">序号</td>
  42 + <td rowspan="3">路牌</td>
  43 + <td rowspan="3">车辆</td>
  44 + <td rowspan="3">人员</td>
39 45 <td rowspan="3">发车站点</td>
40 46 <td rowspan="3">方向</td>
41 47 <td colspan="7">发车时间</td>
... ... @@ -70,25 +76,31 @@
70 76 <div class="data_table_wrap data" id="table_{{k}}">
71 77 <table cellspacing="1" class="data_table">
72 78 <col />
73   - <col width="14%"/>
74   - <col width="4%"/>
75   - <col width="6%"/>
76   - <col width="6%"/>
77   - <col width="6%"/>
78 79 <col width="5%"/>
79 80 <col width="5%"/>
80 81 <col width="5%"/>
  82 + <col width="13%"/>
  83 + <col width="4%"/>
81 84 <col width="5%"/>
82   - <col width="6%"/>
83   - <col width="6%"/>
84   - <col width="6%"/>
85 85 <col width="5%"/>
86 86 <col width="5%"/>
  87 + <col width="4%"/>
  88 + <col width="4%"/>
  89 + <col width="4%"/>
  90 + <col width="4%"/>
87 91 <col width="5%"/>
88 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 98 {{each listMap[k] as obj i}}
90 99 <tr>
91 100 <td>{{i+1}}</td>
  101 + <td>{{obj.lpName}}</td>
  102 + <td>{{obj.nbbm}}</td>
  103 + <td>{{obj.jsy}}</td>
92 104 <td>{{obj.stationName}}</td>
93 105 <td class="cell_dir_{{obj.upDown}}">{{obj.upDown==0?"上行":"下行"}}</td>
94 106 <td>{{obj.fcsj}}</td>
... ... @@ -108,21 +120,21 @@
108 120 </tr>
109 121 {{/each}}
110 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 126 </tr>
115 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 130 </tr>
119 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 134 </tr>
123 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 138 </tr>
127 139 </table>
128 140 </div>
... ...
src/main/resources/static/pages/summary/fast_and_slow/main.html
... ... @@ -91,19 +91,20 @@
91 91 }
92 92  
93 93 .ct_rq_left{
94   - width: 200px;
  94 + width: 130px;
95 95 display: inline-block;
96 96 vertical-align: top;
97 97 height: calc(100% - 184px);
98 98 position: fixed;
99 99 left: 25px;
  100 + padding: 40px 15px;
100 101 }
101 102  
102 103 .ct_right_tables{
103   - width: calc(100% - 220px);
  104 + width: calc(100% - 160px);
104 105 display: inline-block;
105   - margin-left: 232px;
106   - padding: 25px;
  106 + margin-left: 152px;
  107 + padding: 25px 0;
107 108 margin-bottom: 18px;
108 109 }
109 110  
... ... @@ -117,7 +118,7 @@
117 118 width: 15px;
118 119 border-top: 1px solid #1e87f0;
119 120 z-index: 9;
120   - right: 60px;
  121 + right: 40px;
121 122 top: 15px;
122 123 }
123 124 .uk-nav-default>li.uk-active>a {
... ... @@ -126,7 +127,7 @@
126 127 }
127 128  
128 129 .data_table_wrap{
129   - min-width: 1170px;
  130 + min-width: 1070px;
130 131 }
131 132  
132 133 .ct_right_tables table{
... ... @@ -156,7 +157,7 @@
156 157  
157 158 .data_table_wrap.head{
158 159 position: fixed;
159   - width: calc(100% - 300px);
  160 + width: calc(100% - 190px);
160 161 top: 155px;
161 162 padding-top: 25px;
162 163 background: #fff;
... ...