Commit 7aa83666d8aa4064369907f8fd9b049345e7678c

Authored by 王通
2 parents ff49e9eb ed1eda3a

1.合并闵行变更内容

Showing 30 changed files with 2009 additions and 1828 deletions

Too many changes to show.

To preserve performance only 30 of 35 files are displayed.

@@ -315,13 +315,15 @@ @@ -315,13 +315,15 @@
315 <plugins> 315 <plugins>
316 <plugin> 316 <plugin>
317 <artifactId>maven-compiler-plugin</artifactId> 317 <artifactId>maven-compiler-plugin</artifactId>
  318 + <version>2.3.2</version><!--$NO-MVN-MAN-VER$ -->
318 <configuration> 319 <configuration>
319 - <source>1.7</source>  
320 - <target>1.7</target> 320 + <source>1.8</source>
  321 + <target>1.8</target>
321 </configuration> 322 </configuration>
322 </plugin> 323 </plugin>
323 <plugin> 324 <plugin>
324 <artifactId>maven-war-plugin</artifactId> 325 <artifactId>maven-war-plugin</artifactId>
  326 + <version>2.2</version><!--$NO-MVN-MAN-VER$ -->
325 <configuration> 327 <configuration>
326 <failOnMissingWebXml>false</failOnMissingWebXml> 328 <failOnMissingWebXml>false</failOnMissingWebXml>
327 </configuration> 329 </configuration>
src/main/java/com/bsth/controller/realcontrol/PageForwardingController.java
@@ -83,10 +83,10 @@ public class PageForwardingController { @@ -83,10 +83,10 @@ public class PageForwardingController {
83 83
84 if ("v2_mobile".equals(type)) { 84 if ("v2_mobile".equals(type)) {
85 mv.setViewName("/real_control_v2_mobile/main"); 85 mv.setViewName("/real_control_v2_mobile/main");
86 - } else if("v2_".equals(type)) { 86 + } else if ("v2_".equals(type)) {
  87 + //正常线调主页
87 mv.setViewName("/real_control_v2/main_"); 88 mv.setViewName("/real_control_v2/main_");
88 } else { 89 } else {
89 - //正常线调主页  
90 mv.setViewName("/real_control_v2/main"); 90 mv.setViewName("/real_control_v2/main");
91 } 91 }
92 92
src/main/java/com/bsth/data/directive/DayOfDirectives.java
1 -package com.bsth.data.directive;  
2 -  
3 -import com.alibaba.fastjson.JSONObject;  
4 -import com.bsth.data.LineConfigData;  
5 -import com.bsth.entity.directive.D60;  
6 -import com.bsth.entity.directive.D64;  
7 -import com.bsth.entity.directive.Directive;  
8 -import com.bsth.entity.directive.DirectiveReponse;  
9 -import com.bsth.entity.realcontrol.ScheduleRealInfo;  
10 -import com.bsth.service.directive.DirectiveService;  
11 -import com.bsth.websocket.handler.SendUtils;  
12 -import org.slf4j.Logger;  
13 -import org.slf4j.LoggerFactory;  
14 -import org.springframework.beans.factory.annotation.Autowired;  
15 -import org.springframework.stereotype.Component;  
16 -  
17 -import java.util.*;  
18 -import java.util.concurrent.ConcurrentHashMap;  
19 -import java.util.concurrent.ConcurrentLinkedQueue;  
20 -import java.util.concurrent.ConcurrentMap;  
21 -  
22 -/**  
23 - *  
24 - * @ClassName: CurrDayDirectives  
25 - * @Description: TODO(当天指令数据)  
26 - * @author PanZhao  
27 - * @date 2016年8月14日 下午5:23:59  
28 - *  
29 - */  
30 -@Component  
31 -public class DayOfDirectives {  
32 -  
33 - // 当日60指令缓存  
34 - private static ConcurrentMap<Integer, D60> d60Map;  
35 -  
36 - // 线路切换指令 64  
37 - public static ConcurrentMap<String, D64> d64Map;  
38 -  
39 - //等待插入的指令  
40 - public static ConcurrentLinkedQueue<Directive> pstDirectives;  
41 - //等待更新的指令  
42 - public static ConcurrentLinkedQueue<D60> pstD60s;  
43 -  
44 - @Autowired  
45 - DirectiveService directiveService;  
46 -  
47 - @Autowired  
48 - SendUtils sendUtils;  
49 -  
50 - @Autowired  
51 - LineConfigData lineConfigData;  
52 -  
53 - static Logger logger = LoggerFactory.getLogger(DayOfDirectives.class);  
54 -  
55 -  
56 - static{  
57 - d60Map = new ConcurrentHashMap<>();  
58 - d64Map = new ConcurrentHashMap<>();  
59 - pstDirectives = new ConcurrentLinkedQueue<>();  
60 - pstD60s = new ConcurrentLinkedQueue<>();  
61 - }  
62 -  
63 - public void put60(D60 d60) {  
64 - d60Map.put(d60.getMsgId(), d60);  
65 - //等待持久化  
66 - pstDirectives.add(d60);  
67 - }  
68 -  
69 - public void put64(D64 d64) {  
70 - d64Map.put(d64.getKey(), d64);  
71 - //等待持久化  
72 - pstDirectives.add(d64);  
73 - }  
74 -  
75 - /**  
76 - *  
77 - * @Title: reply @Description: TODO(指令 46,47 响应) @throws  
78 - */  
79 - public void reply(DirectiveReponse res) {  
80 - Integer msgId = res.getMsgId();  
81 - if (msgId == null) {  
82 - logger.error("reply error , msgId is null.");  
83 - return;  
84 - }  
85 -  
86 - D60 d60 = d60Map.get(msgId);  
87 -  
88 - if (null == d60) {  
89 - logger.error("找不到msgId: " + msgId + " 对应的指令数据");  
90 - return;  
91 - }  
92 -  
93 - switch (res.getStatus()) {  
94 - case 0:  
95 - d60.setReply46((short) -1);// 失败  
96 - break;  
97 - case 1:  
98 - d60.setReply46((short) 0);// 发送成功  
99 - d60.setReply46Time(System.currentTimeMillis());  
100 - break;  
101 - case 2:  
102 - d60.setReply47((short) 0);// 驾驶员阅读  
103 - d60.setReply47Time(System.currentTimeMillis());  
104 - break;  
105 - }  
106 -  
107 - //更新60数据  
108 - pstD60s.add(d60);  
109 -  
110 - ScheduleRealInfo sch = d60.getSch();  
111 - if (null == sch)  
112 - return;  
113 -  
114 - if (d60.isDispatch()) {  
115 - // 更新班次状态  
116 - sch.setDirectiveState(res.getStatus() * 100);  
117 - // 通知页面  
118 - sendUtils.sendDirectiveToPage(sch);  
119 - }  
120 - }  
121 -  
122 - /**  
123 - *  
124 - * @Title: reply64 @Description: TODO(64 协议响应) @throws  
125 - */  
126 - public void reply64(JSONObject json) {  
127 - String key = json.getString("deviceId") + "_" + json.getString("timestamp");  
128 -  
129 - D64 d64 = d64Map.get(key);  
130 -  
131 - if (null == d64)  
132 - logger.warn("64响应 -找不到请求源,json: " + json);  
133 - else {  
134 - JSONObject data = json.getJSONObject("data");  
135 -  
136 - if (null == data)  
137 - logger.warn("64响应 data is null ,json: " + json);  
138 - else {  
139 - logger.info(d64.getDeviceId() + "_" + d64.getData().getLineId() + "响应:" + data.getShort("requestAck"));  
140 - /*d64.setRespAck(data.getShort("requestAck"));  
141 - // 持久化*/  
142 - //64 响应不入库了...  
143 - }  
144 - }  
145 - }  
146 -  
147 - @Autowired  
148 - DirectivesPstThread directivesPstThread;  
149 - public void clearAll(){  
150 - d60Map = new ConcurrentHashMap<>();  
151 - d64Map = new ConcurrentHashMap<>();  
152 - logger.info("清除指令数据 ,,,");  
153 - }  
154 -  
155 - public Collection<D60> all60(){  
156 - return d60Map.values();  
157 - }  
158 -  
159 - public Collection<D64> all64(){  
160 - return d64Map.values();  
161 - }  
162 -  
163 - public D60 get(Integer msgId){  
164 - return d60Map.get(msgId);  
165 - }  
166 -  
167 - public Collection<Directive> all(){  
168 - List<Directive> all = new ArrayList<>();  
169 - all.addAll(d60Map.values());  
170 - all.addAll(d64Map.values());  
171 -  
172 - return all;  
173 - }  
174 -  
175 - public static class DComparator implements Comparator<Directive>{  
176 -  
177 - @Override  
178 - public int compare(Directive d1, Directive d2) {  
179 - return (int) (d2.getTimestamp() - d1.getTimestamp());  
180 - }  
181 - }  
182 - } 1 +package com.bsth.data.directive;
  2 +
  3 +import com.alibaba.fastjson.JSONObject;
  4 +import com.bsth.data.LineConfigData;
  5 +import com.bsth.data.schedule.DayOfSchedule;
  6 +import com.bsth.entity.directive.D60;
  7 +import com.bsth.entity.directive.D64;
  8 +import com.bsth.entity.directive.Directive;
  9 +import com.bsth.entity.directive.DirectiveReponse;
  10 +import com.bsth.entity.realcontrol.ScheduleRealInfo;
  11 +import com.bsth.service.directive.DirectiveService;
  12 +import com.bsth.websocket.handler.SendUtils;
  13 +import org.slf4j.Logger;
  14 +import org.slf4j.LoggerFactory;
  15 +import org.springframework.beans.factory.annotation.Autowired;
  16 +import org.springframework.stereotype.Component;
  17 +
  18 +import java.util.*;
  19 +import java.util.concurrent.ConcurrentHashMap;
  20 +import java.util.concurrent.ConcurrentLinkedQueue;
  21 +import java.util.concurrent.ConcurrentMap;
  22 +
  23 +/**
  24 + *
  25 + * @ClassName: CurrDayDirectives
  26 + * @Description: TODO(当天指令数据)
  27 + * @author PanZhao
  28 + * @date 2016年8月14日 下午5:23:59
  29 + *
  30 + */
  31 +@Component
  32 +public class DayOfDirectives {
  33 +
  34 + // 当日60指令缓存
  35 + private static ConcurrentMap<Integer, D60> d60Map;
  36 +
  37 + // 线路切换指令 64
  38 + public static ConcurrentMap<String, D64> d64Map;
  39 +
  40 + //等待插入的指令
  41 + public static ConcurrentLinkedQueue<Directive> pstDirectives;
  42 + //等待更新的指令
  43 + public static ConcurrentLinkedQueue<D60> pstD60s;
  44 +
  45 + @Autowired
  46 + DirectiveService directiveService;
  47 +
  48 + @Autowired
  49 + SendUtils sendUtils;
  50 +
  51 + @Autowired
  52 + LineConfigData lineConfigData;
  53 +
  54 + @Autowired
  55 + private DayOfSchedule dayOfSchedule;
  56 +
  57 + static Logger logger = LoggerFactory.getLogger(DayOfDirectives.class);
  58 +
  59 +
  60 + static{
  61 + d60Map = new ConcurrentHashMap<>();
  62 + d64Map = new ConcurrentHashMap<>();
  63 + pstDirectives = new ConcurrentLinkedQueue<>();
  64 + pstD60s = new ConcurrentLinkedQueue<>();
  65 + }
  66 +
  67 + public void put60(D60 d60) {
  68 + d60Map.put(d60.getMsgId(), d60);
  69 + //等待持久化
  70 + pstDirectives.add(d60);
  71 + }
  72 +
  73 + public void put64(D64 d64) {
  74 + d64Map.put(d64.getKey(), d64);
  75 + //等待持久化
  76 + pstDirectives.add(d64);
  77 + }
  78 +
  79 + /**
  80 + *
  81 + * @Title: reply @Description: TODO(指令 46,47 响应) @throws
  82 + */
  83 + public void reply(DirectiveReponse res) {
  84 + Integer msgId = res.getMsgId();
  85 + if (msgId == null) {
  86 + logger.error("reply error , msgId is null.");
  87 + return;
  88 + }
  89 +
  90 + D60 d60 = d60Map.get(msgId);
  91 +
  92 + if (null == d60) {
  93 + logger.error("找不到msgId: " + msgId + " 对应的指令数据");
  94 + return;
  95 + }
  96 +
  97 + switch (res.getStatus()) {
  98 + case 0:
  99 + d60.setReply46((short) -1);// 失败
  100 + break;
  101 + case 1:
  102 + d60.setReply46((short) 0);// 发送成功
  103 + d60.setReply46Time(System.currentTimeMillis());
  104 + break;
  105 + case 2:
  106 + d60.setReply47((short) 0);// 驾驶员阅读
  107 + d60.setReply47Time(System.currentTimeMillis());
  108 + break;
  109 + }
  110 +
  111 + //更新60数据
  112 + pstD60s.add(d60);
  113 +
  114 + ScheduleRealInfo sch = d60.getSch();
  115 + if (null == sch)
  116 + return;
  117 +
  118 + if (d60.isDispatch()) {
  119 + // 更新班次状态
  120 + sch.setDirectiveState(res.getStatus() * 100);
  121 + dayOfSchedule.save(sch);
  122 + // 通知页面
  123 + sendUtils.sendDirectiveToPage(sch);
  124 + }
  125 + }
  126 +
  127 + /**
  128 + *
  129 + * @Title: reply64 @Description: TODO(64 协议响应) @throws
  130 + */
  131 + public void reply64(JSONObject json) {
  132 + String key = json.getString("deviceId") + "_" + json.getString("timestamp");
  133 +
  134 + D64 d64 = d64Map.get(key);
  135 +
  136 + if (null == d64)
  137 + logger.warn("64响应 -找不到请求源,json: " + json);
  138 + else {
  139 + JSONObject data = json.getJSONObject("data");
  140 +
  141 + if (null == data)
  142 + logger.warn("64响应 data is null ,json: " + json);
  143 + else {
  144 + logger.info(d64.getDeviceId() + "_" + d64.getData().getLineId() + "响应:" + data.getShort("requestAck"));
  145 + /*d64.setRespAck(data.getShort("requestAck"));
  146 + // 持久化*/
  147 + //64 响应不入库了...
  148 + }
  149 + }
  150 + }
  151 +
  152 + @Autowired
  153 + DirectivesPstThread directivesPstThread;
  154 + public void clearAll(){
  155 + d60Map = new ConcurrentHashMap<>();
  156 + d64Map = new ConcurrentHashMap<>();
  157 + logger.info("清除指令数据 ,,,");
  158 + }
  159 +
  160 + public Collection<D60> all60(){
  161 + return d60Map.values();
  162 + }
  163 +
  164 + public Collection<D64> all64(){
  165 + return d64Map.values();
  166 + }
  167 +
  168 + public D60 get(Integer msgId){
  169 + return d60Map.get(msgId);
  170 + }
  171 +
  172 + public Collection<Directive> all(){
  173 + List<Directive> all = new ArrayList<>();
  174 + all.addAll(d60Map.values());
  175 + all.addAll(d64Map.values());
  176 +
  177 + return all;
  178 + }
  179 +
  180 + public static class DComparator implements Comparator<Directive>{
  181 +
  182 + @Override
  183 + public int compare(Directive d1, Directive d2) {
  184 + return (int) (d2.getTimestamp() - d1.getTimestamp());
  185 + }
  186 + }
  187 + }
src/main/java/com/bsth/repository/realcontrol/ScheduleRealInfoRepository.java
@@ -47,15 +47,15 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI @@ -47,15 +47,15 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI
47 List<Map<String, Object>> dailyInfo(String line,String date); 47 List<Map<String, Object>> dailyInfo(String line,String date);
48 48
49 @Query(value="select d.device_id,d.sender,d.txt_content,d.timestamp,d.line_code from " 49 @Query(value="select d.device_id,d.sender,d.txt_content,d.timestamp,d.line_code from "
50 - + " bsth_v_directive_60 d where d.line_code=?1 and d.timestamp >=?2 and "  
51 - + "d.timestamp <=?3 and d.device_id like %?4% ",nativeQuery=true)  
52 - List<Object[]> historyMessage(String line,long d,long t,String code); 50 + + " bsth_v_directive_60 d where d.rq = ?1 and d.line_code = ?2 "
  51 + + " and d.device_id like %?3% ",nativeQuery=true)
  52 + List<Object[]> historyMessage(String rq, String line, String code);
53 53
54 //带指令类型字段 54 //带指令类型字段
55 @Query(value="select d.device_id,d.sender,d.txt_content,d.timestamp,d.line_code from " 55 @Query(value="select d.device_id,d.sender,d.txt_content,d.timestamp,d.line_code from "
56 - + " bsth_v_directive_60 d where d.line_code=?1 and d.timestamp >=?2 and "  
57 - + "d.timestamp <=?3 and d.device_id like %?4% and d.dispatch_instruct =?5 ",nativeQuery=true)  
58 - List<Object[]> historyMessage(String line,long d,long t,String code,short dispatchInstruct); 56 + + " bsth_v_directive_60 d where d.rq = ?1 and d.line_code = ?2 "
  57 + + " and d.device_id like %?3% and d.dispatch_instruct =?4 ",nativeQuery=true)
  58 + List<Object[]> historyMessage(String rq, String line, String code, short dispatchInstruct);
59 59
60 @Query(value="SELECT r.xl_name,r.lp_name,r.cl_zbh,count(*) as cs " 60 @Query(value="SELECT r.xl_name,r.lp_name,r.cl_zbh,count(*) as cs "
61 + " FROM bsth_c_s_sp_info_real r RIGHT JOIN bsth_v_directive_60 d " 61 + " FROM bsth_c_s_sp_info_real r RIGHT JOIN bsth_v_directive_60 d "
src/main/java/com/bsth/service/calc/impl/CalcToolServiceImpl.java
@@ -236,21 +236,16 @@ public class CalcToolServiceImpl implements CalcToolService { @@ -236,21 +236,16 @@ public class CalcToolServiceImpl implements CalcToolService {
236 int lbbc=culateMileageService.culateLbbc(list_); 236 int lbbc=culateMileageService.culateLbbc(list_);
237 double lblc=culateMileageService.culateLbgl(list_); 237 double lblc=culateMileageService.culateLbgl(list_);
238 double ssgl_lz= culateMileageService.culateCJLC(list_, "路阻"); 238 double ssgl_lz= culateMileageService.culateCJLC(list_, "路阻");
239 - double ssgl_dm= culateMileageService.culateCJLC(list_, "吊慢"); 239 + double ssgl_dm= culateMileageService.culateCJLC(list_, "借调");
240 double ssgl_gz= culateMileageService.culateCJLC(list_, "故障"); 240 double ssgl_gz= culateMileageService.culateCJLC(list_, "故障");
241 double ssgl_jf= culateMileageService.culateCJLC(list_, "纠纷"); 241 double ssgl_jf= culateMileageService.culateCJLC(list_, "纠纷");
242 - double ssgl_zs= culateMileageService.culateCJLC(list_, "肇事"); 242 + double ssgl_zs= culateMileageService.culateCJLC(list_, "事故");
243 double ssgl_qr= culateMileageService.culateCJLC(list_, "缺人"); 243 double ssgl_qr= culateMileageService.culateCJLC(list_, "缺人");
244 - double ssgl_qc= culateMileageService.culateCJLC(list_, "缺车");  
245 - double ssgl_kx= culateMileageService.culateCJLC(list_, "客稀");  
246 - double ssgl_qh= culateMileageService.culateCJLC(list_, "气候");  
247 - double ssgl_yw= culateMileageService.culateCJLC(list_, "援外");  
248 -  
249 - double ssgl_pc=culateMileageService.culateCJLC(list_, "配车");  
250 - double ssgl_by=culateMileageService.culateCJLC(list_, "保养");  
251 - double ssgl_cj=culateMileageService.culateCJLC(list_, "抽减");  
252 - double ssgl_qt=culateMileageService.culateCJLC(list_, "其他");  
253 - double ssgl_qtz=Arith.add(Arith.add(ssgl_pc, ssgl_by), Arith.add(ssgl_cj,ssgl_qt)); 244 + double ssgl_qc= culateMileageService.culateCJLC(list_, "验车");
  245 + double ssgl_kx= culateMileageService.culateCJLC(list_, "保养");
  246 + double ssgl_qh= culateMileageService.culateCJLC(list_, "天气");
  247 + double ssgl_yw= culateMileageService.culateCJLC(list_, "支援");
  248 + double ssgl_qtz=culateMileageService.culateCJLC(list_, "其他");
254 int fzbc=culateMileageService.culateDtfzbc(list_s, "major", "");//放站 249 int fzbc=culateMileageService.culateDtfzbc(list_s, "major", "");//放站
255 int fzbcZgf=culateMileageService.culateDtfzbc(list_s, "major", "zgf"); 250 int fzbcZgf=culateMileageService.culateDtfzbc(list_s, "major", "zgf");
256 int fzbcWgf=culateMileageService.culateDtfzbc(list_s, "major", "wgf"); 251 int fzbcWgf=culateMileageService.culateDtfzbc(list_s, "major", "wgf");
src/main/java/com/bsth/service/calc/impl/CalcWaybillServiceImpl.java
@@ -666,20 +666,16 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer @@ -666,20 +666,16 @@ public class CalcWaybillServiceImpl extends BaseServiceImpl&lt;CalcWaybill, Integer
666 // } 666 // }
667 667
668 s.setLzlc(culateService.culateCJLC(list, "路阻")); 668 s.setLzlc(culateService.culateCJLC(list, "路阻"));
669 - s.setDmlc(culateService.culateCJLC(list, "吊慢")); 669 + s.setDmlc(culateService.culateCJLC(list, "借调"));
670 s.setGzlc(culateService.culateCJLC(list, "故障")); 670 s.setGzlc(culateService.culateCJLC(list, "故障"));
671 s.setJflc(culateService.culateCJLC(list, "纠纷")); 671 s.setJflc(culateService.culateCJLC(list, "纠纷"));
672 - s.setZslc(culateService.culateCJLC(list, "肇事")); 672 + s.setZslc(culateService.culateCJLC(list, "事故"));
673 s.setQrlc(culateService.culateCJLC(list, "缺人")); 673 s.setQrlc(culateService.culateCJLC(list, "缺人"));
674 - s.setQclc(culateService.culateCJLC(list, "缺车"));  
675 - s.setKxlc(culateService.culateCJLC(list, "客稀"));  
676 - s.setQhlc(culateService.culateCJLC(list, "气候"));  
677 - s.setYwlc(culateService.culateCJLC(list, "援外"));  
678 - double ssgl_pc=culateService.culateCJLC(list, "配车");  
679 - double ssgl_by=culateService.culateCJLC(list, "保养");  
680 - double ssgl_cj=culateService.culateCJLC(list, "抽减");  
681 - double ssgl_qt=culateService.culateCJLC(list, "其他");  
682 - s.setQtlc(Arith.add(Arith.add(ssgl_pc, ssgl_by),Arith.add(ssgl_cj, ssgl_qt))); 674 + s.setQclc(culateService.culateCJLC(list, "验车"));
  675 + s.setKxlc(culateService.culateCJLC(list, "保养"));
  676 + s.setQhlc(culateService.culateCJLC(list, "天气"));
  677 + s.setYwlc(culateService.culateCJLC(list, "支援"));
  678 + s.setQtlc(culateService.culateCJLC(list, "其他"));
683 s.setLjlc(ljgl); 679 s.setLjlc(ljgl);
684 680
685 s.setJhbcq(culateService.culateJhbc(list,"")); 681 s.setJhbcq(culateService.culateJhbc(list,""));
src/main/java/com/bsth/service/impl/BusIntervalServiceImpl.java
@@ -100,9 +100,14 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -100,9 +100,14 @@ public class BusIntervalServiceImpl implements BusIntervalService {
100 100
101 try { 101 try {
102 102
103 - String sql = "select * from bsth_c_s_sp_info_real where schedule_date_str >= '"+startDate+"' and schedule_date_str <= '"+endDate+"'"; 103 + List<String> objList = new ArrayList<String>();
  104 + String sql = "select * from bsth_c_s_sp_info_real where schedule_date_str >= ? and schedule_date_str <= ?";
  105 + objList.add(startDate);
  106 + objList.add(endDate);
  107 +
104 if(line.length() != 0){ 108 if(line.length() != 0){
105 - sql += " and xl_bm = '"+line+"'"; 109 + sql += " and xl_bm = ?";
  110 + objList.add(line);
106 } 111 }
107 if(times.length() != 0){ 112 if(times.length() != 0){
108 String[] split = times.split("-"); 113 String[] split = times.split("-");
@@ -117,16 +122,19 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -117,16 +122,19 @@ public class BusIntervalServiceImpl implements BusIntervalService {
117 } 122 }
118 } 123 }
119 if(company.length() != 0){ 124 if(company.length() != 0){
120 - sql += " and gs_bm = '"+company+"'"; 125 + sql += " and gs_bm = ?";
  126 + objList.add(company);
121 } 127 }
122 if(subCompany.length() != 0){ 128 if(subCompany.length() != 0){
123 - sql += " and fgs_bm = '"+subCompany+"'"; 129 + sql += " and fgs_bm = ?";
  130 + objList.add(subCompany);
124 } 131 }
125 if(normal){ 132 if(normal){
126 sql += " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'"; 133 sql += " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'";
127 } 134 }
128 135
129 list = jdbcTemplate.query(sql, 136 list = jdbcTemplate.query(sql,
  137 + objList.toArray(),
130 new RowMapper<ScheduleRealInfo>(){ 138 new RowMapper<ScheduleRealInfo>(){
131 @Override 139 @Override
132 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException { 140 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
@@ -222,14 +230,20 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -222,14 +230,20 @@ public class BusIntervalServiceImpl implements BusIntervalService {
222 }); 230 });
223 231
224 if(model.length() != 0){ 232 if(model.length() != 0){
225 -// sql = "select * from bsth_c_s_ttinfo_detail where ttinfo = '"+model+"' and bc_type != 'in' and bc_type != 'out'";  
226 - sql = "select id from bsth_c_s_sp_info where tt_info = '" + model + "' and bc_type != 'in' and bc_type != 'out'" +  
227 - " and bc_type != 'ldks' and schedule_date >= '"+startDate+"' and schedule_date <= '"+endDate+"'"; 233 + List<String> objList2 = new ArrayList<String>();
  234 + sql = "select id from bsth_c_s_sp_info where tt_info = ? and bc_type != 'in' and bc_type != 'out'" +
  235 + " and bc_type != 'ldks' and schedule_date >= ? and schedule_date <= ?";
  236 + objList2.add(model);
  237 + objList2.add(startDate);
  238 + objList2.add(endDate);
  239 +
228 if(line.length() != 0){ 240 if(line.length() != 0){
229 - sql += " and xl_bm = '"+line+"'"; 241 + sql += " and xl_bm = ?";
  242 + objList2.add(line);
230 } 243 }
231 244
232 ttList = jdbcTemplate.query(sql, 245 ttList = jdbcTemplate.query(sql,
  246 + objList2.toArray(),
233 new RowMapper<Long>(){ 247 new RowMapper<Long>(){
234 @Override 248 @Override
235 public Long mapRow(ResultSet rs, int rowNum) throws SQLException { 249 public Long mapRow(ResultSet rs, int rowNum) throws SQLException {
@@ -303,17 +317,22 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -303,17 +317,22 @@ public class BusIntervalServiceImpl implements BusIntervalService {
303 Map<Long, Set<ChildTaskPlan>> schMap = new HashMap<Long, Set<ChildTaskPlan>>(); 317 Map<Long, Set<ChildTaskPlan>> schMap = new HashMap<Long, Set<ChildTaskPlan>>();
304 List<ChildTaskPlan> list = new ArrayList<ChildTaskPlan>(); 318 List<ChildTaskPlan> list = new ArrayList<ChildTaskPlan>();
305 319
  320 + List<Object> objList = new ArrayList<Object>();
306 String sql = "select id,cc_id,mileage_type,destroy,destroy_reason," + 321 String sql = "select id,cc_id,mileage_type,destroy,destroy_reason," +
307 " mileage,type1,type2,schedule from bsth_c_s_child_task" + 322 " mileage,type1,type2,schedule from bsth_c_s_child_task" +
308 " where 1=1"; 323 " where 1=1";
  324 +
309 if(schedule1 != null && schedule1 > 0){ 325 if(schedule1 != null && schedule1 > 0){
310 - sql += " and schedule >= '"+schedule1+"'"; 326 + sql += " and schedule >= ?";
  327 + objList.add(schedule1);
311 } 328 }
312 if(schedule2 != null && schedule2 > 0){ 329 if(schedule2 != null && schedule2 > 0){
313 - sql += " and schedule <= '"+schedule2+"'"; 330 + sql += " and schedule <= ?";
  331 + objList.add(schedule2);
314 } 332 }
315 333
316 list = jdbcTemplate.query(sql, 334 list = jdbcTemplate.query(sql,
  335 + objList.toArray(),
317 new RowMapper<ChildTaskPlan>(){ 336 new RowMapper<ChildTaskPlan>(){
318 @Override 337 @Override
319 public ChildTaskPlan mapRow(ResultSet rs, int rowNum) throws SQLException { 338 public ChildTaskPlan mapRow(ResultSet rs, int rowNum) throws SQLException {
@@ -354,10 +373,12 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -354,10 +373,12 @@ public class BusIntervalServiceImpl implements BusIntervalService {
354 String line = map.get("line").toString(); 373 String line = map.get("line").toString();
355 374
356 try { 375 try {
357 -  
358 - String sql = "select start_station_name, end_station_name from bsth_c_line where line_code = '"+line+"'"; 376 + List<String> objList = new ArrayList<String>();
  377 + String sql = "select start_station_name, end_station_name from bsth_c_line where line_code = ?";
  378 + objList.add(line);
359 379
360 list = jdbcTemplate.query(sql, 380 list = jdbcTemplate.query(sql,
  381 + objList.toArray(),
361 new RowMapper<Map<String, Object>>(){ 382 new RowMapper<Map<String, Object>>(){
362 @Override 383 @Override
363 public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException { 384 public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
@@ -393,16 +414,22 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -393,16 +414,22 @@ public class BusIntervalServiceImpl implements BusIntervalService {
393 String ttId = map.get("ttId").toString(); 414 String ttId = map.get("ttId").toString();
394 415
395 try { 416 try {
  417 + List<String> objList = new ArrayList<String>();
396 String sql = "select td.lp, lp.lp_name from bsth_c_s_ttinfo_detail td" + 418 String sql = "select td.lp, lp.lp_name from bsth_c_s_ttinfo_detail td" +
397 " left join bsth_c_s_gbi lp on td.lp = lp.id" + 419 " left join bsth_c_s_gbi lp on td.lp = lp.id" +
398 " left join bsth_c_line cl on cl.id = td.xl where 1=1"; 420 " left join bsth_c_line cl on cl.id = td.xl where 1=1";
399 - if(line.length() != 0)  
400 - sql += " and cl.line_code = '"+line+"'";  
401 - if(ttId.length() != 0)  
402 - sql += " and td.ttinfo = '"+ttId+"'"; 421 + if(line.length() != 0){
  422 + sql += " and cl.line_code = ?";
  423 + objList.add(line);
  424 + }
  425 + if(ttId.length() != 0){
  426 + sql += " and td.ttinfo = ?";
  427 + objList.add(ttId);
  428 + }
403 sql += " group by td.lp, lp.lp_name"; 429 sql += " group by td.lp, lp.lp_name";
404 430
405 list = jdbcTemplate.query(sql, 431 list = jdbcTemplate.query(sql,
  432 + objList.toArray(),
406 new RowMapper<Map<String, Object>>(){ 433 new RowMapper<Map<String, Object>>(){
407 @Override 434 @Override
408 public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException { 435 public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
@@ -2123,7 +2150,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -2123,7 +2150,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
2123 if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("路阻") != -1){ 2150 if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("路阻") != -1){
2124 lzbc++; 2151 lzbc++;
2125 // lzlc = lzlc.add(lc); 2152 // lzlc = lzlc.add(lc);
2126 - }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("吊慢") != -1){ 2153 + }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("借调") != -1){
2127 dmbc++; 2154 dmbc++;
2128 // dmlc = dmlc.add(lc); 2155 // dmlc = dmlc.add(lc);
2129 }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("故障") != -1){ 2156 }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("故障") != -1){
@@ -2132,25 +2159,25 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -2132,25 +2159,25 @@ public class BusIntervalServiceImpl implements BusIntervalService {
2132 }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("纠纷") != -1){ 2159 }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("纠纷") != -1){
2133 jfbc++; 2160 jfbc++;
2134 // jflc = jflc.add(lc); 2161 // jflc = jflc.add(lc);
2135 - }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("肇事") != -1){ 2162 + }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("事故") != -1){
2136 zsbc++; 2163 zsbc++;
2137 // zslc = zslc.add(lc); 2164 // zslc = zslc.add(lc);
2138 }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("缺人") != -1){ 2165 }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("缺人") != -1){
2139 qrbc++; 2166 qrbc++;
2140 // qrlc = qrlc.add(lc); 2167 // qrlc = qrlc.add(lc);
2141 - }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("车") != -1){ 2168 + }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("车") != -1){
2142 qcbc++; 2169 qcbc++;
2143 // qclc = qclc.add(lc); 2170 // qclc = qclc.add(lc);
2144 - }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("客稀") != -1){ 2171 + }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("保养") != -1){
2145 kxbc++; 2172 kxbc++;
2146 // kxlc = kxlc.add(lc); 2173 // kxlc = kxlc.add(lc);
2147 - }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("气候") != -1){ 2174 + }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("天气") != -1){
2148 qhbc++; 2175 qhbc++;
2149 // qhlc = qhlc.add(lc); 2176 // qhlc = qhlc.add(lc);
2150 - }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("援外") != -1){ 2177 + }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("支援") != -1){
2151 wybc++; 2178 wybc++;
2152 // wylc = wylc.add(lc); 2179 // wylc = wylc.add(lc);
2153 - } else { 2180 + }else if(schedule.getAdjustExps() != null && schedule.getAdjustExps().indexOf("其他") != -1){
2154 qtbc++; 2181 qtbc++;
2155 // qtlc = qtlc.add(lc); 2182 // qtlc = qtlc.add(lc);
2156 } 2183 }
@@ -2171,19 +2198,16 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -2171,19 +2198,16 @@ public class BusIntervalServiceImpl implements BusIntervalService {
2171 2198
2172 sjlc = new BigDecimal(culateService.culateSjgl(tempList) + culateService.culateLjgl(tempList)); 2199 sjlc = new BigDecimal(culateService.culateSjgl(tempList) + culateService.culateLjgl(tempList));
2173 lzlc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "路阻")); 2200 lzlc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "路阻"));
2174 - dmlc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "吊慢")); 2201 + dmlc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "借调"));
2175 gzlc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "故障")); 2202 gzlc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "故障"));
2176 jflc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "纠纷")); 2203 jflc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "纠纷"));
2177 - zslc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "肇事")); 2204 + zslc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "事故"));
2178 qrlc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "缺人")); 2205 qrlc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "缺人"));
2179 - qclc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "缺车"));  
2180 - kxlc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "客稀"));  
2181 - qhlc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "气候"));  
2182 - wylc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "援外"));  
2183 - qtlc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "配车")).add(  
2184 - new BigDecimal(culateService.culateCJLC(keyMap.get(key), "保养"))).add(  
2185 - new BigDecimal(culateService.culateCJLC(keyMap.get(key), "抽减"))).add(  
2186 - new BigDecimal(culateService.culateCJLC(keyMap.get(key), "其他"))); 2206 + qclc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "验车"));
  2207 + kxlc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "保养"));
  2208 + qhlc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "天气"));
  2209 + wylc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "支援"));
  2210 + qtlc = new BigDecimal(culateService.culateCJLC(keyMap.get(key), "其他"));
2187 2211
2188 boolean flag = true; 2212 boolean flag = true;
2189 if(jhlc.doubleValue() == 0d){ 2213 if(jhlc.doubleValue() == 0d){
@@ -2359,11 +2383,14 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -2359,11 +2383,14 @@ public class BusIntervalServiceImpl implements BusIntervalService {
2359 endDate = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); 2383 endDate = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
2360 } 2384 }
2361 try { 2385 try {
2362 -  
2363 - String sql = "select * from bsth_c_s_sp_info_real where schedule_date_str"  
2364 - + " >= '"+startDate+"' and schedule_date_str <= '"+endDate+"'"; 2386 + List<String> objList = new ArrayList<String>();
  2387 + String sql = "select * from bsth_c_s_sp_info_real where schedule_date_str >= ? and schedule_date_str <= ?";
  2388 + objList.add(startDate);
  2389 + objList.add(endDate);
  2390 +
2365 if(line.length() != 0){ 2391 if(line.length() != 0){
2366 - sql += " and xl_bm = '"+line+"'"; 2392 + sql += " and xl_bm = ?";
  2393 + objList.add(line);
2367 } 2394 }
2368 if(sfqr == 1 && times.length() != 0){ 2395 if(sfqr == 1 && times.length() != 0){
2369 String[] split = times.split("-"); 2396 String[] split = times.split("-");
@@ -2378,14 +2405,17 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -2378,14 +2405,17 @@ public class BusIntervalServiceImpl implements BusIntervalService {
2378 } 2405 }
2379 } 2406 }
2380 if(company.length() != 0){ 2407 if(company.length() != 0){
2381 - sql += " and gs_bm = '"+company+"'"; 2408 + sql += " and gs_bm = ?";
  2409 + objList.add(company);
2382 } 2410 }
2383 if(subCompany.length() != 0){ 2411 if(subCompany.length() != 0){
2384 - sql += " and fgs_bm = '"+subCompany+"'"; 2412 + sql += " and fgs_bm = ?";
  2413 + objList.add(subCompany);
2385 } 2414 }
2386 sql += " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'"; 2415 sql += " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'";
2387 2416
2388 list = jdbcTemplate.query(sql, 2417 list = jdbcTemplate.query(sql,
  2418 + objList.toArray(),
2389 new RowMapper<ScheduleRealInfo>(){ 2419 new RowMapper<ScheduleRealInfo>(){
2390 @Override 2420 @Override
2391 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException { 2421 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
@@ -3173,20 +3203,30 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -3173,20 +3203,30 @@ public class BusIntervalServiceImpl implements BusIntervalService {
3173 if(map.get("sfyy")!=null) 3203 if(map.get("sfyy")!=null)
3174 sfyy = map.get("sfyy").toString().trim(); 3204 sfyy = map.get("sfyy").toString().trim();
3175 3205
  3206 + List<String> objList = new ArrayList<String>();
3176 String sql = "select id, cl_zbh, fcsj, fcsj_actual, j_gh, j_name, lp_name, qdz_name, " + 3207 String sql = "select id, cl_zbh, fcsj, fcsj_actual, j_gh, j_name, lp_name, qdz_name, " +
3177 "schedule_date_str, xl_name, zdsj, zdsj_actual, fgs_bm, fgs_name, gs_name, xl_dir, xl_bm " + 3208 "schedule_date_str, xl_name, zdsj, zdsj_actual, fgs_bm, fgs_name, gs_name, xl_dir, xl_bm " +
3178 "from bsth_c_s_sp_info_real " + 3209 "from bsth_c_s_sp_info_real " +
3179 - "where schedule_date_str >= '"+startDate+"' and schedule_date_str <= '"+endDate+"' " + 3210 + "where schedule_date_str >= ? and schedule_date_str <= ? " +
3180 "and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks' and cc_service = 0"; 3211 "and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks' and cc_service = 0";
  3212 + objList.add(startDate);
  3213 + objList.add(endDate);
3181 3214
3182 - if(company.length() != 0)  
3183 - sql += " and gs_bm = '"+company+"'";  
3184 - if(subCompany.length() != 0)  
3185 - sql += " and fgs_bm = '"+subCompany+"'";  
3186 - if(line.length() != 0)  
3187 - sql += " and xl_bm = '"+line+"'"; 3215 + if(company.length() != 0){
  3216 + sql += " and gs_bm = ?";
  3217 + objList.add(company);
  3218 + }
  3219 + if(subCompany.length() != 0){
  3220 + sql += " and fgs_bm = ?";
  3221 + objList.add(subCompany);
  3222 + }
  3223 + if(line.length() != 0){
  3224 + sql += " and xl_bm = ?";
  3225 + objList.add(line);
  3226 + }
3188 3227
3189 List<ScheduleRealInfo> list = jdbcTemplate.query(sql, 3228 List<ScheduleRealInfo> list = jdbcTemplate.query(sql,
  3229 + objList.toArray(),
3190 new RowMapper<ScheduleRealInfo>(){ 3230 new RowMapper<ScheduleRealInfo>(){
3191 @Override 3231 @Override
3192 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException { 3232 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
@@ -1286,9 +1286,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1286,9 +1286,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1286 1286
1287 List<Object[]> list0 = new ArrayList<Object[]>(); 1287 List<Object[]> list0 = new ArrayList<Object[]>();
1288 if(instructType > -1){ 1288 if(instructType > -1){
1289 - list0 = scheduleRealInfoRepository.historyMessage(line, d, t, device, instructType); 1289 + list0 = scheduleRealInfoRepository.historyMessage(date, line, device, instructType);
1290 } else { 1290 } else {
1291 - list0 = scheduleRealInfoRepository.historyMessage(line, d, t, device); 1291 + list0 = scheduleRealInfoRepository.historyMessage(date, line, device);
1292 } 1292 }
1293 for (Object[] obj : list0) { 1293 for (Object[] obj : list0) {
1294 if (obj != null) { 1294 if (obj != null) {
@@ -1325,9 +1325,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1325,9 +1325,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1325 if(!device2.equals("")){ 1325 if(!device2.equals("")){
1326 List<Object[]> list1 = new ArrayList<Object[]>(); 1326 List<Object[]> list1 = new ArrayList<Object[]>();
1327 if(instructType > -1){ 1327 if(instructType > -1){
1328 - list1 =scheduleRealInfoRepository.historyMessage(line, d, t, device2, instructType); 1328 + list1 =scheduleRealInfoRepository.historyMessage(date, line, device2, instructType);
1329 } else { 1329 } else {
1330 - list1 =scheduleRealInfoRepository.historyMessage(line, d, t, device2); 1330 + list1 =scheduleRealInfoRepository.historyMessage(date, line, device2);
1331 } 1331 }
1332 for (Object[] obj : list1) { 1332 for (Object[] obj : list1) {
1333 if (obj != null) { 1333 if (obj != null) {
@@ -2618,20 +2618,16 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2618,20 +2618,16 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2618 double lbgl = culateService.culateLbgl(list_s); 2618 double lbgl = culateService.culateLbgl(list_s);
2619 map.put("ssgl", lbgl); 2619 map.put("ssgl", lbgl);
2620 map.put("ssgl_lz", culateService.culateCJLC(list_s, "路阻")); 2620 map.put("ssgl_lz", culateService.culateCJLC(list_s, "路阻"));
2621 - map.put("ssgl_dm", culateService.culateCJLC(list_s, "吊慢")); 2621 + map.put("ssgl_dm", culateService.culateCJLC(list_s, "借调"));
2622 map.put("ssgl_gz", culateService.culateCJLC(list_s, "故障")); 2622 map.put("ssgl_gz", culateService.culateCJLC(list_s, "故障"));
2623 map.put("ssgl_jf", culateService.culateCJLC(list_s, "纠纷")); 2623 map.put("ssgl_jf", culateService.culateCJLC(list_s, "纠纷"));
2624 - map.put("ssgl_zs", culateService.culateCJLC(list_s, "肇事")); 2624 + map.put("ssgl_zs", culateService.culateCJLC(list_s, "事故"));
2625 map.put("ssgl_qr", culateService.culateCJLC(list_s, "缺人")); 2625 map.put("ssgl_qr", culateService.culateCJLC(list_s, "缺人"));
2626 - map.put("ssgl_qc", culateService.culateCJLC(list_s, "缺车"));  
2627 - map.put("ssgl_kx", culateService.culateCJLC(list_s, "客稀"));  
2628 - map.put("ssgl_qh", culateService.culateCJLC(list_s, "气候"));  
2629 - map.put("ssgl_yw", culateService.culateCJLC(list_s, "援外"));  
2630 - double ssgl_pc = culateService.culateCJLC(list_s, "配车");  
2631 - double ssgl_by = culateService.culateCJLC(list_s, "保养");  
2632 - double ssgl_cj = culateService.culateCJLC(list_s, "抽减");  
2633 - double ssgl_qt = culateService.culateCJLC(list_s, "其他");  
2634 - map.put("ssgl_other", Arith.add(Arith.add(ssgl_pc, ssgl_by), Arith.add(ssgl_cj, ssgl_qt))); 2626 + map.put("ssgl_qc", culateService.culateCJLC(list_s, "验车"));
  2627 + map.put("ssgl_kx", culateService.culateCJLC(list_s, "保养"));
  2628 + map.put("ssgl_qh", culateService.culateCJLC(list_s, "天气"));
  2629 + map.put("ssgl_yw", culateService.culateCJLC(list_s, "支援"));
  2630 + map.put("ssgl_other", culateService.culateCJLC(list_s, "其他"));
2635 map.put("ssbc", culateService.culateLbbc(list_s)); 2631 map.put("ssbc", culateService.culateLbbc(list_s));
2636 double ljgl = culateService.culateLjgl(lists); 2632 double ljgl = culateService.culateLjgl(lists);
2637 map.put("ljgl", ljgl); 2633 map.put("ljgl", ljgl);
@@ -2715,20 +2711,16 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2715,20 +2711,16 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2715 double lbgl = culateService.culateLbgl(list_s); 2711 double lbgl = culateService.culateLbgl(list_s);
2716 map.put("ssgl", lbgl); 2712 map.put("ssgl", lbgl);
2717 map.put("ssgl_lz", culateService.culateCJLC(list_s, "路阻")); 2713 map.put("ssgl_lz", culateService.culateCJLC(list_s, "路阻"));
2718 - map.put("ssgl_dm", culateService.culateCJLC(list_s, "吊慢")); 2714 + map.put("ssgl_dm", culateService.culateCJLC(list_s, "借调"));
2719 map.put("ssgl_gz", culateService.culateCJLC(list_s, "故障")); 2715 map.put("ssgl_gz", culateService.culateCJLC(list_s, "故障"));
2720 map.put("ssgl_jf", culateService.culateCJLC(list_s, "纠纷")); 2716 map.put("ssgl_jf", culateService.culateCJLC(list_s, "纠纷"));
2721 - map.put("ssgl_zs", culateService.culateCJLC(list_s, "肇事")); 2717 + map.put("ssgl_zs", culateService.culateCJLC(list_s, "事故"));
2722 map.put("ssgl_qr", culateService.culateCJLC(list_s, "缺人")); 2718 map.put("ssgl_qr", culateService.culateCJLC(list_s, "缺人"));
2723 - map.put("ssgl_qc", culateService.culateCJLC(list_s, "缺车"));  
2724 - map.put("ssgl_kx", culateService.culateCJLC(list_s, "客稀"));  
2725 - map.put("ssgl_qh", culateService.culateCJLC(list_s, "气候"));  
2726 - map.put("ssgl_yw", culateService.culateCJLC(list_s, "援外"));  
2727 - double ssgl_pc = culateService.culateCJLC(list_s, "配车");  
2728 - double ssgl_by = culateService.culateCJLC(list_s, "保养");  
2729 - double ssgl_cj = culateService.culateCJLC(list_s, "抽减");  
2730 - double ssgl_qt = culateService.culateCJLC(list_s, "其他");  
2731 - map.put("ssgl_other", Arith.add(Arith.add(ssgl_pc, ssgl_by), Arith.add(ssgl_cj, ssgl_qt))); 2719 + map.put("ssgl_qc", culateService.culateCJLC(list_s, "验车"));
  2720 + map.put("ssgl_kx", culateService.culateCJLC(list_s, "保养"));
  2721 + map.put("ssgl_qh", culateService.culateCJLC(list_s, "天气"));
  2722 + map.put("ssgl_yw", culateService.culateCJLC(list_s, "支援"));
  2723 + map.put("ssgl_other", culateService.culateCJLC(list_s, "其他"));
2732 map.put("ssbc", culateService.culateLbbc(list_s)); 2724 map.put("ssbc", culateService.culateLbbc(list_s));
2733 double ljgl = culateService.culateLjgl(lists); 2725 double ljgl = culateService.culateLjgl(lists);
2734 map.put("ljgl", ljgl); 2726 map.put("ljgl", ljgl);
@@ -2811,20 +2803,16 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2811,20 +2803,16 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2811 } 2803 }
2812 2804
2813 map.put("ssgl_lz", culateService.culateCJLC(list, "路阻")); 2805 map.put("ssgl_lz", culateService.culateCJLC(list, "路阻"));
2814 - map.put("ssgl_dm", culateService.culateCJLC(list, "吊慢")); 2806 + map.put("ssgl_dm", culateService.culateCJLC(list, "借调"));
2815 map.put("ssgl_gz", culateService.culateCJLC(list, "故障")); 2807 map.put("ssgl_gz", culateService.culateCJLC(list, "故障"));
2816 map.put("ssgl_jf", culateService.culateCJLC(list, "纠纷")); 2808 map.put("ssgl_jf", culateService.culateCJLC(list, "纠纷"));
2817 - map.put("ssgl_zs", culateService.culateCJLC(list, "肇事")); 2809 + map.put("ssgl_zs", culateService.culateCJLC(list, "事故"));
2818 map.put("ssgl_qr", culateService.culateCJLC(list, "缺人")); 2810 map.put("ssgl_qr", culateService.culateCJLC(list, "缺人"));
2819 - map.put("ssgl_qc", culateService.culateCJLC(list, "缺车"));  
2820 - map.put("ssgl_kx", culateService.culateCJLC(list, "客稀"));  
2821 - map.put("ssgl_qh", culateService.culateCJLC(list, "气候"));  
2822 - map.put("ssgl_yw", culateService.culateCJLC(list, "援外"));  
2823 - double ssgl_pc = culateService.culateCJLC(list, "配车");  
2824 - double ssgl_by = culateService.culateCJLC(list, "保养");  
2825 - double ssgl_cj = culateService.culateCJLC(list, "抽减");  
2826 - double ssgl_qt = culateService.culateCJLC(list, "其他");  
2827 - map.put("ssgl_other", Arith.add(Arith.add(ssgl_pc, ssgl_by), Arith.add(ssgl_cj, ssgl_qt))); 2811 + map.put("ssgl_qc", culateService.culateCJLC(list, "验车"));
  2812 + map.put("ssgl_kx", culateService.culateCJLC(list, "保养"));
  2813 + map.put("ssgl_qh", culateService.culateCJLC(list, "天气"));
  2814 + map.put("ssgl_yw", culateService.culateCJLC(list, "支援"));
  2815 + map.put("ssgl_other", culateService.culateCJLC(list, "其他"));
2828 map.put("ssbc", culateService.culateLbbc(list)); 2816 map.put("ssbc", culateService.culateLbbc(list));
2829 map.put("ljgl", ljgl); 2817 map.put("ljgl", ljgl);
2830 map.put("jhbc", culateService.culateJhbc(list, "")); 2818 map.put("jhbc", culateService.culateJhbc(list, ""));
@@ -2953,20 +2941,16 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2953,20 +2941,16 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2953 map.put("zt", 1); 2941 map.put("zt", 1);
2954 } 2942 }
2955 map.put("ssgl_lz", culateService.culateCJLC(list, "路阻")); 2943 map.put("ssgl_lz", culateService.culateCJLC(list, "路阻"));
2956 - map.put("ssgl_dm", culateService.culateCJLC(list, "吊慢")); 2944 + map.put("ssgl_dm", culateService.culateCJLC(list, "借调"));
2957 map.put("ssgl_gz", culateService.culateCJLC(list, "故障")); 2945 map.put("ssgl_gz", culateService.culateCJLC(list, "故障"));
2958 map.put("ssgl_jf", culateService.culateCJLC(list, "纠纷")); 2946 map.put("ssgl_jf", culateService.culateCJLC(list, "纠纷"));
2959 - map.put("ssgl_zs", culateService.culateCJLC(list, "肇事")); 2947 + map.put("ssgl_zs", culateService.culateCJLC(list, "事故"));
2960 map.put("ssgl_qr", culateService.culateCJLC(list, "缺人")); 2948 map.put("ssgl_qr", culateService.culateCJLC(list, "缺人"));
2961 - map.put("ssgl_qc", culateService.culateCJLC(list, "缺车"));  
2962 - map.put("ssgl_kx", culateService.culateCJLC(list, "客稀"));  
2963 - map.put("ssgl_qh", culateService.culateCJLC(list, "气候"));  
2964 - map.put("ssgl_yw", culateService.culateCJLC(list, "援外"));  
2965 - double ssgl_pc = culateService.culateCJLC(list, "配车");  
2966 - double ssgl_by = culateService.culateCJLC(list, "保养");  
2967 - double ssgl_cj = culateService.culateCJLC(list, "抽减");  
2968 - double ssgl_qt = culateService.culateCJLC(list, "其他");  
2969 - map.put("ssgl_other", Arith.add(Arith.add(ssgl_pc, ssgl_by), Arith.add(ssgl_cj, ssgl_qt))); 2949 + map.put("ssgl_qc", culateService.culateCJLC(list, "验车"));
  2950 + map.put("ssgl_kx", culateService.culateCJLC(list, "保养"));
  2951 + map.put("ssgl_qh", culateService.culateCJLC(list, "天气"));
  2952 + map.put("ssgl_yw", culateService.culateCJLC(list, "支援"));
  2953 + map.put("ssgl_other", culateService.culateCJLC(list, "其他"));
2970 2954
2971 map.put("ssbc", culateService.culateLbbc(list)); 2955 map.put("ssbc", culateService.culateLbbc(list));
2972 map.put("ljgl", ljgl); 2956 map.put("ljgl", ljgl);
@@ -3147,20 +3131,16 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -3147,20 +3131,16 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
3147 map.put("zt", 1); 3131 map.put("zt", 1);
3148 } 3132 }
3149 map.put("ssgl_lz", culateService.culateCJLC(list, "路阻")); 3133 map.put("ssgl_lz", culateService.culateCJLC(list, "路阻"));
3150 - map.put("ssgl_dm", culateService.culateCJLC(list, "吊慢")); 3134 + map.put("ssgl_dm", culateService.culateCJLC(list, "借调"));
3151 map.put("ssgl_gz", culateService.culateCJLC(list, "故障")); 3135 map.put("ssgl_gz", culateService.culateCJLC(list, "故障"));
3152 map.put("ssgl_jf", culateService.culateCJLC(list, "纠纷")); 3136 map.put("ssgl_jf", culateService.culateCJLC(list, "纠纷"));
3153 - map.put("ssgl_zs", culateService.culateCJLC(list, "肇事")); 3137 + map.put("ssgl_zs", culateService.culateCJLC(list, "事故"));
3154 map.put("ssgl_qr", culateService.culateCJLC(list, "缺人")); 3138 map.put("ssgl_qr", culateService.culateCJLC(list, "缺人"));
3155 - map.put("ssgl_qc", culateService.culateCJLC(list, "缺车"));  
3156 - map.put("ssgl_kx", culateService.culateCJLC(list, "客稀"));  
3157 - map.put("ssgl_qh", culateService.culateCJLC(list, "气候"));  
3158 - map.put("ssgl_yw", culateService.culateCJLC(list, "援外"));  
3159 - double ssgl_pc = culateService.culateCJLC(list, "配车");  
3160 - double ssgl_by = culateService.culateCJLC(list, "保养");  
3161 - double ssgl_cj = culateService.culateCJLC(list, "抽减");  
3162 - double ssgl_qt = culateService.culateCJLC(list, "其他");  
3163 - map.put("ssgl_other", Arith.add(Arith.add(ssgl_pc, ssgl_by), Arith.add(ssgl_cj, ssgl_qt))); 3139 + map.put("ssgl_qc", culateService.culateCJLC(list, "验车"));
  3140 + map.put("ssgl_kx", culateService.culateCJLC(list, "保养"));
  3141 + map.put("ssgl_qh", culateService.culateCJLC(list, "天气"));
  3142 + map.put("ssgl_yw", culateService.culateCJLC(list, "支援"));
  3143 + map.put("ssgl_other", culateService.culateCJLC(list, "其他"));
3164 3144
3165 map.put("ssbc", culateService.culateLbbc(list)); 3145 map.put("ssbc", culateService.culateLbbc(list));
3166 map.put("ljgl", ljgl); 3146 map.put("ljgl", ljgl);
@@ -3232,23 +3212,23 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -3232,23 +3212,23 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
3232 ssgl += childTaskPlan.getMileage(); 3212 ssgl += childTaskPlan.getMileage();
3233 if (childTaskPlan.getDestroyReason().equals("路阻")) { 3213 if (childTaskPlan.getDestroyReason().equals("路阻")) {
3234 ssgl_lz += childTaskPlan.getMileage(); 3214 ssgl_lz += childTaskPlan.getMileage();
3235 - } else if (childTaskPlan.getDestroyReason().equals("吊慢")) { 3215 + } else if (childTaskPlan.getDestroyReason().equals("借调")) {
3236 ssgl_dm += childTaskPlan.getMileage(); 3216 ssgl_dm += childTaskPlan.getMileage();
3237 } else if (childTaskPlan.getDestroyReason().equals("故障")) { 3217 } else if (childTaskPlan.getDestroyReason().equals("故障")) {
3238 ssgl_gz += childTaskPlan.getMileage(); 3218 ssgl_gz += childTaskPlan.getMileage();
3239 } else if (childTaskPlan.getDestroyReason().equals("纠纷")) { 3219 } else if (childTaskPlan.getDestroyReason().equals("纠纷")) {
3240 ssgl_jf += childTaskPlan.getMileage(); 3220 ssgl_jf += childTaskPlan.getMileage();
3241 - } else if (childTaskPlan.getDestroyReason().equals("肇事")) { 3221 + } else if (childTaskPlan.getDestroyReason().equals("事故")) {
3242 ssgl_zs += childTaskPlan.getMileage(); 3222 ssgl_zs += childTaskPlan.getMileage();
3243 } else if (childTaskPlan.getDestroyReason().equals("缺人")) { 3223 } else if (childTaskPlan.getDestroyReason().equals("缺人")) {
3244 ssgl_qr += childTaskPlan.getMileage(); 3224 ssgl_qr += childTaskPlan.getMileage();
3245 - } else if (childTaskPlan.getDestroyReason().equals("车")) { 3225 + } else if (childTaskPlan.getDestroyReason().equals("车")) {
3246 ssgl_qc += childTaskPlan.getMileage(); 3226 ssgl_qc += childTaskPlan.getMileage();
3247 - } else if (childTaskPlan.getDestroyReason().equals("客稀")) { 3227 + } else if (childTaskPlan.getDestroyReason().equals("保养")) {
3248 ssgl_kx += childTaskPlan.getMileage(); 3228 ssgl_kx += childTaskPlan.getMileage();
3249 - } else if (childTaskPlan.getDestroyReason().equals("气候")) { 3229 + } else if (childTaskPlan.getDestroyReason().equals("天气")) {
3250 ssgl_qh += childTaskPlan.getMileage(); 3230 ssgl_qh += childTaskPlan.getMileage();
3251 - } else if (childTaskPlan.getDestroyReason().equals("援外")) { 3231 + } else if (childTaskPlan.getDestroyReason().equals("支援")) {
3252 ssgl_yw += childTaskPlan.getMileage(); 3232 ssgl_yw += childTaskPlan.getMileage();
3253 } else { 3233 } else {
3254 ssgl_other += childTaskPlan.getMileage(); 3234 ssgl_other += childTaskPlan.getMileage();
src/main/java/com/bsth/service/report/impl/CulateMileageServiceImpl.java
@@ -31,7 +31,8 @@ public class CulateMileageServiceImpl implements CulateMileageService{ @@ -31,7 +31,8 @@ public class CulateMileageServiceImpl implements CulateMileageService{
31 @Override 31 @Override
32 public List<Map<String, Object>> jobFwqk(List<ScheduleRealInfo> lists) { 32 public List<Map<String, Object>> jobFwqk(List<ScheduleRealInfo> lists) {
33 // TODO Auto-generated method stub 33 // TODO Auto-generated method stub
34 - String[] lblxs = {"配车", "保养","故障","肇事","路阻","纠纷","缺人","客稀","缺车","气候","援外","吊慢","抽减","其他" }; 34 +// String[] lblxs = {"配车","保养","故障","肇事","路阻","纠纷","缺人","客稀","缺车","气候","援外","吊慢","抽减","其他" };
  35 + String[] lblxs = {"路阻","借调","故障","纠纷","事故","缺人","验车","保养","天气","支援","其他"};
35 List<Map<String, Object>> list=new ArrayList<Map<String,Object>>(); 36 List<Map<String, Object>> list=new ArrayList<Map<String,Object>>();
36 for (int i = 0; i < lists.size(); i++) { 37 for (int i = 0; i < lists.size(); i++) {
37 ScheduleRealInfo scheduleRealInfo = lists.get(i); 38 ScheduleRealInfo scheduleRealInfo = lists.get(i);
src/main/java/com/bsth/service/report/impl/ReportServiceImpl.java
@@ -1671,7 +1671,8 @@ public class ReportServiceImpl implements ReportService{ @@ -1671,7 +1671,8 @@ public class ReportServiceImpl implements ReportService{
1671 @Override 1671 @Override
1672 public List<Map<String, Object>> jobFwqk(Map<String, Object> map) { 1672 public List<Map<String, Object>> jobFwqk(Map<String, Object> map) {
1673 // TODO Auto-generated method stub 1673 // TODO Auto-generated method stub
1674 - String[] lblxs = {"配车", "保养","故障","肇事","路阻","纠纷","缺人","客稀","缺车","气候","援外","吊慢","抽减","其他" }; 1674 +// String[] lblxs = {"配车","保养","故障","肇事","路阻","纠纷","缺人","客稀","缺车","气候","援外","吊慢","抽减","其他" };
  1675 + String[] lblxs = {"路阻","借调","故障","纠纷","事故","缺人","验车","保养","天气","支援","其他"};
1675 String line=map.get("line").toString(); 1676 String line=map.get("line").toString();
1676 String date=map.get("date").toString(); 1677 String date=map.get("date").toString();
1677 map.put("bcType", "normal"); 1678 map.put("bcType", "normal");
@@ -2694,20 +2695,20 @@ public class ReportServiceImpl implements ReportService{ @@ -2694,20 +2695,20 @@ public class ReportServiceImpl implements ReportService{
2694 double lbss=culateService.culateSsMile(list);//烂班少驶 2695 double lbss=culateService.culateSsMile(list);//烂班少驶
2695 map.put("lbss", lbss); 2696 map.put("lbss", lbss);
2696 map.put("ssgl_lz", culateService.culateSsMileXx(list, "路阻")); 2697 map.put("ssgl_lz", culateService.culateSsMileXx(list, "路阻"));
2697 - map.put("ssgl_dm", culateService.culateSsMileXx(list, "吊慢")); 2698 + map.put("ssgl_dm", culateService.culateSsMileXx(list, "借调"));
2698 map.put("ssgl_gz", culateService.culateSsMileXx(list, "故障")); 2699 map.put("ssgl_gz", culateService.culateSsMileXx(list, "故障"));
2699 map.put("ssgl_jf", culateService.culateSsMileXx(list, "纠纷")); 2700 map.put("ssgl_jf", culateService.culateSsMileXx(list, "纠纷"));
2700 - map.put("ssgl_zs", culateService.culateSsMileXx(list, "肇事")); 2701 + map.put("ssgl_zs", culateService.culateSsMileXx(list, "事故"));
2701 map.put("ssgl_qr", culateService.culateSsMileXx(list, "缺人")); 2702 map.put("ssgl_qr", culateService.culateSsMileXx(list, "缺人"));
2702 - map.put("ssgl_qc", culateService.culateSsMileXx(list, "缺车"));  
2703 - map.put("ssgl_kx", culateService.culateSsMileXx(list, "客稀"));  
2704 - map.put("ssgl_qh", culateService.culateSsMileXx(list, "气候"));  
2705 - map.put("ssgl_yw", culateService.culateSsMileXx(list, "援外")); 2703 + map.put("ssgl_qc", culateService.culateSsMileXx(list, "验车"));
  2704 + map.put("ssgl_kx", culateService.culateSsMileXx(list, "保养"));
  2705 + map.put("ssgl_qh", culateService.culateSsMileXx(list, "天气"));
  2706 + map.put("ssgl_yw", culateService.culateSsMileXx(list, "支援"));
2706 map.put("ssgl_other", culateService.culateSsMileXx(list, "其他")); 2707 map.put("ssgl_other", culateService.culateSsMileXx(list, "其他"));
2707 2708
2708 2709
2709 double zrwjcclc=culateService.culateZrwJccLc(list, "故障"); 2710 double zrwjcclc=culateService.culateZrwJccLc(list, "故障");
2710 - double zrwjcclc1=culateService.culateZrwJccLc(list, "肇事"); 2711 + double zrwjcclc1=Arith.add(culateService.culateZrwJccLc(list, "肇事"), culateService.culateZrwJccLc(list, "事故"));
2711 double zrwjcclc2=culateService.culateZrwJccLc(list, "纠纷"); 2712 double zrwjcclc2=culateService.culateZrwJccLc(list, "纠纷");
2712 double zrwjcclcqt=Arith.add(culateService.culateZrwJccLc(list, "其他"),culateService.culateZrwJccLc(list, "")); 2713 double zrwjcclcqt=Arith.add(culateService.culateZrwJccLc(list, "其他"),culateService.culateZrwJccLc(list, ""));
2713 map.put("jhwjcclc_z", Arith.add(jhwjcclc,zrwjcclcqt)); 2714 map.put("jhwjcclc_z", Arith.add(jhwjcclc,zrwjcclcqt));
src/main/java/com/bsth/service/schedule/impl/PeopleCarPlanServiceImpl.java
@@ -46,18 +46,27 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -46,18 +46,27 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
46 List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>(); 46 List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>();
47 47
48 try { 48 try {
49 - String sql = "select * from bsth_c_s_sp_info_real where schedule_date_str = '"+date+"'"; 49 + List<String> objList = new ArrayList<String>();
  50 + String sql = "select * from bsth_c_s_sp_info_real where schedule_date_str = ?";
  51 + objList.add(date);
50 52
51 - if(line.length() != 0)  
52 - sql += " and xl_bm = '"+line+"'";  
53 - if(company.length() != 0)  
54 - sql += " and gs_bm = '"+company+"'";  
55 - if(subCompany.length() != 0)  
56 - sql += " and fgs_bm = '"+subCompany+"'"; 53 + if(line.length() != 0){
  54 + sql += " and xl_bm = ?";
  55 + objList.add(line);
  56 + }
  57 + if(company.length() != 0){
  58 + sql += " and gs_bm = ?";
  59 + objList.add(company);
  60 + }
  61 + if(subCompany.length() != 0){
  62 + sql += " and fgs_bm = ?";
  63 + objList.add(subCompany);
  64 + }
57 65
58 sql += " order by gs_bm, fgs_bm, xl_bm"; 66 sql += " order by gs_bm, fgs_bm, xl_bm";
59 67
60 list = jdbcTemplate.query(sql, 68 list = jdbcTemplate.query(sql,
  69 + objList.toArray(),
61 new RowMapper<ScheduleRealInfo>(){ 70 new RowMapper<ScheduleRealInfo>(){
62 @Override 71 @Override
63 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException { 72 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
@@ -193,17 +202,25 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -193,17 +202,25 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
193 } 202 }
194 203
195 try { 204 try {
196 -  
197 - String sql = "select * from bsth_c_s_sp_info where schedule_date = '"+date+"'"; 205 + List<String> objList = new ArrayList<String>();
  206 + String sql = "select * from bsth_c_s_sp_info where schedule_date = ?";
  207 + objList.add(date);
  208 +
198 if(line.length() != 0){ 209 if(line.length() != 0){
199 - sql += " and xl_bm = '"+line+"'"; 210 + sql += " and xl_bm = ?";
  211 + objList.add(line);
  212 + }
  213 + if(company.length() != 0){
  214 + sql += " and gs_bm = ?";
  215 + objList.add(company);
  216 + }
  217 + if(subCompany.length() != 0){
  218 + sql += " and fgs_bm = ?";
  219 + objList.add(subCompany);
200 } 220 }
201 - if(company.length() != 0)  
202 - sql += " and gs_bm = '"+company+"'";  
203 - if(subCompany.length() != 0)  
204 - sql += " and fgs_bm = '"+subCompany+"'";  
205 221
206 list = jdbcTemplate.query(sql, 222 list = jdbcTemplate.query(sql,
  223 + objList.toArray(),
207 new RowMapper<SchedulePlanInfo>(){ 224 new RowMapper<SchedulePlanInfo>(){
208 @Override 225 @Override
209 public SchedulePlanInfo mapRow(ResultSet rs, int rowNum) throws SQLException { 226 public SchedulePlanInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
@@ -601,19 +618,25 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -601,19 +618,25 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
601 endDate = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); 618 endDate = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
602 } 619 }
603 try { 620 try {
604 - 621 + List<String> objList = new ArrayList<String>();
605 String sql = "select schedule_date_str,xl_name,bc_type,gs_name,fgs_name,fgs_bm,bcs," 622 String sql = "select schedule_date_str,xl_name,bc_type,gs_name,fgs_name,fgs_bm,bcs,"
606 +"fcno,fcsj,fcsj_actual,zdsj,zdsj_actual,bcsj,qdz_name,sp_id,cc_service" 623 +"fcno,fcsj,fcsj_actual,zdsj,zdsj_actual,bcsj,qdz_name,sp_id,cc_service"
607 - +" from bsth_c_s_sp_info_real where schedule_date_str >= '"+startDate  
608 - +"' and schedule_date_str <= '"+endDate+"'"; 624 + +" from bsth_c_s_sp_info_real where schedule_date_str >= ?"
  625 + +" and schedule_date_str <= ?";
  626 + objList.add(startDate);
  627 + objList.add(endDate);
  628 +
609 if(line.length() != 0){ 629 if(line.length() != 0){
610 - sql += " and xl_bm = '"+line+"'"; 630 + sql += " and xl_bm = ?";
  631 + objList.add(line);
611 } 632 }
612 if(company.length() != 0){ 633 if(company.length() != 0){
613 - sql += " and gs_bm = '"+company+"'"; 634 + sql += " and gs_bm = ?";
  635 + objList.add(company);
614 } 636 }
615 if(subCompany.length() != 0){ 637 if(subCompany.length() != 0){
616 - sql += " and fgs_bm = '"+subCompany+"'"; 638 + sql += " and fgs_bm = ?";
  639 + objList.add(subCompany);
617 } 640 }
618 sql += " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'"; 641 sql += " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'";
619 if(Integer.valueOf(bcType) == 1){ 642 if(Integer.valueOf(bcType) == 1){
@@ -622,6 +645,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -622,6 +645,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
622 sql += " and bc_type = 'region'"; 645 sql += " and bc_type = 'region'";
623 } 646 }
624 list = jdbcTemplate.query(sql, 647 list = jdbcTemplate.query(sql,
  648 + objList.toArray(),
625 new RowMapper<ScheduleRealInfo>(){ 649 new RowMapper<ScheduleRealInfo>(){
626 @Override 650 @Override
627 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException { 651 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
@@ -915,19 +939,26 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -915,19 +939,26 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
915 endDate = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); 939 endDate = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
916 } 940 }
917 try { 941 try {
918 -  
919 - String sql = "select * from bsth_c_s_sp_info_real where schedule_date_str >= '"+startDate+"' and schedule_date_str <= '"+endDate+"'"; 942 + List<String> objList = new ArrayList<String>();
  943 + String sql = "select * from bsth_c_s_sp_info_real where schedule_date_str >= ? and schedule_date_str <= ?";
  944 + objList.add(startDate);
  945 + objList.add(endDate);
  946 +
920 if(line.length() != 0){ 947 if(line.length() != 0){
921 - sql += " and xl_bm = '"+line+"'"; 948 + sql += " and xl_bm = ?";
  949 + objList.add(line);
922 } 950 }
923 if(nbbm.length() != 0){ 951 if(nbbm.length() != 0){
924 - sql += " and cl_zbh like '%"+nbbm+"%'"; 952 + sql += " and cl_zbh like ?";
  953 + objList.add("%" + nbbm + "%");
925 } 954 }
926 if(company.length() != 0){ 955 if(company.length() != 0){
927 - sql += " and gs_bm like '"+company+"'"; 956 + sql += " and gs_bm = ?";
  957 + objList.add(company);
928 } 958 }
929 if(subCompany.length() != 0){ 959 if(subCompany.length() != 0){
930 - sql += " and fgs_bm like '"+subCompany+"'"; 960 + sql += " and fgs_bm = ?";
  961 + objList.add(subCompany);
931 } 962 }
932 sql += " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'"; 963 sql += " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'";
933 if(bcType.trim().equals("1")){ 964 if(bcType.trim().equals("1")){
@@ -937,6 +968,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -937,6 +968,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
937 } 968 }
938 969
939 list = jdbcTemplate.query(sql, 970 list = jdbcTemplate.query(sql,
  971 + objList.toArray(),
940 new RowMapper<ScheduleRealInfo>(){ 972 new RowMapper<ScheduleRealInfo>(){
941 @Override 973 @Override
942 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException { 974 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
@@ -1206,20 +1238,28 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -1206,20 +1238,28 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1206 isCancel = map.get("isCancel").toString().trim(); 1238 isCancel = map.get("isCancel").toString().trim();
1207 } 1239 }
1208 try { 1240 try {
  1241 + List<String> objList = new ArrayList<String>();
1209 String sql = "select tt.id, tt.name from bsth_c_s_ttinfo tt left join" + 1242 String sql = "select tt.id, tt.name from bsth_c_s_ttinfo tt left join" +
1210 " (select tt_info from bsth_c_s_sp_info where 1=1"; 1243 " (select tt_info from bsth_c_s_sp_info where 1=1";
1211 - if(startDate.trim().length() > 0)  
1212 - sql += " and schedule_date >= '"+startDate+"'";  
1213 - if(endDate.trim().length() > 0)  
1214 - sql += " and schedule_date <= '"+endDate+"'"; 1244 +
  1245 + if(startDate.trim().length() > 0){
  1246 + sql += " and schedule_date >= ?";
  1247 + objList.add(startDate);
  1248 + }
  1249 + if(endDate.trim().length() > 0){
  1250 + sql += " and schedule_date <= ?";
  1251 + objList.add(endDate);
  1252 + }
1215 if(line.trim().length() != 0){ 1253 if(line.trim().length() != 0){
1216 - sql += " and xl_bm = '"+line+"'"; 1254 + sql += " and xl_bm = ?";
  1255 + objList.add(line);
1217 } else { 1256 } else {
1218 return resList; 1257 return resList;
1219 } 1258 }
1220 sql += " ) sp on sp.tt_info = tt.id where sp.tt_info is not null group by tt.id, tt.name"; 1259 sql += " ) sp on sp.tt_info = tt.id where sp.tt_info is not null group by tt.id, tt.name";
1221 1260
1222 resList = jdbcTemplate.query(sql, 1261 resList = jdbcTemplate.query(sql,
  1262 + objList.toArray(),
1223 new RowMapper<Map<String, Object>>(){ 1263 new RowMapper<Map<String, Object>>(){
1224 @Override 1264 @Override
1225 public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException { 1265 public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
@@ -1261,18 +1301,28 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -1261,18 +1301,28 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1261 date = sdf.format(new Date()); 1301 date = sdf.format(new Date());
1262 1302
1263 try { 1303 try {
  1304 + List<String> objList = new ArrayList<String>();
1264 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," 1305 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,"
1265 + " a.xl_bm, a.fgs_bm, 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" 1306 + " a.xl_bm, a.fgs_bm, 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"
1266 - + " where schedule_date_str = '"+date+"'" 1307 + + " where schedule_date_str = ?"
1267 + " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks' and bc_type != 'region'"; 1308 + " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks' and bc_type != 'region'";
1268 - if(line.trim().length() != 0)  
1269 - sql += " and xl_bm = '"+line+"'";  
1270 - if(company.length() != 0)  
1271 - sql += " and gs_bm = '"+company+"'";  
1272 - if(subCompany.length() != 0)  
1273 - sql += " and fgs_bm = '"+subCompany+"'"; 1309 + objList.add(date);
  1310 +
  1311 + if(line.trim().length() != 0){
  1312 + sql += " and xl_bm = ?";
  1313 + objList.add(line);
  1314 + }
  1315 + if(company.length() != 0){
  1316 + sql += " and gs_bm = ?";
  1317 + objList.add(company);
  1318 + }
  1319 + if(subCompany.length() != 0){
  1320 + sql += " and fgs_bm = ?";
  1321 + objList.add(subCompany);
  1322 + }
1274 1323
1275 list = jdbcTemplate.query(sql, 1324 list = jdbcTemplate.query(sql,
  1325 + objList.toArray(),
1276 new RowMapper<ScheduleRealInfo>(){ 1326 new RowMapper<ScheduleRealInfo>(){
1277 @Override 1327 @Override
1278 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException { 1328 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
@@ -1532,19 +1582,30 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -1532,19 +1582,30 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1532 } 1582 }
1533 1583
1534 try { 1584 try {
  1585 + List<String> objList = new ArrayList<String>();
1535 String sql = "select a.schedule_date_str, a.real_exec_date, a.xl_bm, 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," 1586 String sql = "select a.schedule_date_str, a.real_exec_date, a.xl_bm, 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,"
1536 + " a.fgs_bm, a.cc_service, a.remarks, a.adjust_exps, 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 " 1587 + " a.fgs_bm, a.cc_service, a.remarks, a.adjust_exps, 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 "
1537 + " on a.xl_bm = b.line" 1588 + " on a.xl_bm = b.line"
1538 - + " where schedule_date_str >= '"+startDate+"' and schedule_date_str <= '"+endDate+"'" 1589 + + " where schedule_date_str >= ? and schedule_date_str <= ?"
1539 + " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks' and bc_type != 'region'"; 1590 + " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks' and bc_type != 'region'";
1540 - if(line.length() != 0)  
1541 - sql += " and xl_bm = '"+line+"'";  
1542 - if(company.length() != 0)  
1543 - sql += " and gs_bm = '"+company+"'";  
1544 - if(subCompany.length() != 0)  
1545 - sql += " and fgs_bm = '"+subCompany+"'"; 1591 + objList.add(startDate);
  1592 + objList.add(endDate);
  1593 +
  1594 + if(line.length() != 0){
  1595 + sql += " and xl_bm = ?";
  1596 + objList.add(line);
  1597 + }
  1598 + if(company.length() != 0){
  1599 + sql += " and gs_bm = ?";
  1600 + objList.add(company);
  1601 + }
  1602 + if(subCompany.length() != 0){
  1603 + sql += " and fgs_bm = ?";
  1604 + objList.add(subCompany);
  1605 + }
1546 1606
1547 list = jdbcTemplate.query(sql, 1607 list = jdbcTemplate.query(sql,
  1608 + objList.toArray(),
1548 new RowMapper<ScheduleRealInfo>(){ 1609 new RowMapper<ScheduleRealInfo>(){
1549 @Override 1610 @Override
1550 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException { 1611 public ScheduleRealInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
@@ -2150,24 +2211,30 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -2150,24 +2211,30 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
2150 // String code = map.get("code").toString(); 2211 // String code = map.get("code").toString();
2151 String type = map.get("type").toString(); 2212 String type = map.get("type").toString();
2152 2213
  2214 + List<String> objList = new ArrayList<String>();
2153 String sql_="select * from bsth_c_s_sp_info_real " 2215 String sql_="select * from bsth_c_s_sp_info_real "
2154 - + " WHERE schedule_date_str = '"+date+"' "; 2216 + + " WHERE schedule_date_str = ? ";
  2217 + objList.add(date);
  2218 +
2155 if(!line.equals("")){ 2219 if(!line.equals("")){
2156 - sql_ += " and xl_bm = '"+line+"'"; 2220 + sql_ += " and xl_bm = ?";
  2221 + objList.add(line);
2157 } 2222 }
2158 if(company.length() != 0){ 2223 if(company.length() != 0){
2159 - sql_ += " and gs_bm='"+company+"'"; 2224 + sql_ += " and gs_bm = ?";
  2225 + objList.add(company);
2160 } 2226 }
2161 if(subCompany.length() != 0){ 2227 if(subCompany.length() != 0){
2162 - sql_ += " and fgs_bm='"+subCompany+"'"; 2228 + sql_ += " and fgs_bm = ?";
  2229 + objList.add(subCompany);
2163 } 2230 }
2164 2231
2165 -  
2166 String sql="SELECT r.id,r.schedule_date_str,r.xl_name,r.xl_bm,r.cl_zbh,r.j_gh,r.j_name,r.fcsj," 2232 String sql="SELECT r.id,r.schedule_date_str,r.xl_name,r.xl_bm,r.cl_zbh,r.j_gh,r.j_name,r.fcsj,"
2167 + " r.gs_name,r.fgs_name,CONCAT(r.xl_bm,'_',r.id) as line_sch FROM ("+sql_+") AS r" 2233 + " r.gs_name,r.fgs_name,CONCAT(r.xl_bm,'_',r.id) as line_sch FROM ("+sql_+") AS r"
2168 + " order by r.gs_bm,r.fgs_bm,r.xl_bm,r.id "; 2234 + " order by r.gs_bm,r.fgs_bm,r.xl_bm,r.id ";
2169 2235
2170 List<Map<String, Object>> tempList = jdbcTemplate.query(sql, 2236 List<Map<String, Object>> tempList = jdbcTemplate.query(sql,
  2237 + objList.toArray(),
2171 new RowMapper<Map<String, Object>>(){ 2238 new RowMapper<Map<String, Object>>(){
2172 @Override 2239 @Override
2173 public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException { 2240 public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
@@ -2372,14 +2439,18 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -2372,14 +2439,18 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
2372 // String code = map.get("code").toString(); 2439 // String code = map.get("code").toString();
2373 String type = map.get("type").toString(); 2440 String type = map.get("type").toString();
2374 2441
  2442 + List<String> objList = new ArrayList<String>();
2375 String sql_="select * from bsth_c_s_sp_info_real " 2443 String sql_="select * from bsth_c_s_sp_info_real "
2376 - + " WHERE schedule_date_str = '"+date+"' and xl_bm = '"+line+"'"; 2444 + + " WHERE schedule_date_str = ? and xl_bm = ?";
  2445 + objList.add(date);
  2446 + objList.add(line);
2377 2447
2378 String sql="SELECT r.id,r.schedule_date_str,r.xl_name,r.xl_bm,r.cl_zbh,r.j_gh,r.j_name,r.fcsj," 2448 String sql="SELECT r.id,r.schedule_date_str,r.xl_name,r.xl_bm,r.cl_zbh,r.j_gh,r.j_name,r.fcsj,"
2379 + " r.gs_name,r.fgs_name,CONCAT(r.xl_bm,'_',r.id) as gh_sch FROM ("+sql_+") AS r" 2449 + " r.gs_name,r.fgs_name,CONCAT(r.xl_bm,'_',r.id) as gh_sch FROM ("+sql_+") AS r"
2380 + " order by r.xl_name,r.id "; 2450 + " order by r.xl_name,r.id ";
2381 2451
2382 List<Map<String, Object>> list = jdbcTemplate.query(sql, 2452 List<Map<String, Object>> list = jdbcTemplate.query(sql,
  2453 + objList.toArray(),
2383 new RowMapper<Map<String, Object>>(){ 2454 new RowMapper<Map<String, Object>>(){
2384 @Override 2455 @Override
2385 public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException { 2456 public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
@@ -2577,14 +2648,17 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -2577,14 +2648,17 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
2577 if(map.get("type")!=null) 2648 if(map.get("type")!=null)
2578 type = map.get("type").toString().trim(); 2649 type = map.get("type").toString().trim();
2579 2650
2580 - String sql_="select * from bsth_c_s_sp_info_real "  
2581 - + " WHERE schedule_date_str = '"+date+"' and j_gh = '"+jgh+"'"; 2651 + List<String> objList = new ArrayList<String>();
  2652 + String sql_ = "select * from bsth_c_s_sp_info_real "
  2653 + + " WHERE schedule_date_str = ? and j_gh = ?";
  2654 + objList.add(date);
  2655 + objList.add(jgh);
2582 2656
2583 if(!line.equals("")){ 2657 if(!line.equals("")){
2584 - sql_ +=" and xl_bm = '"+line+"'"; 2658 + sql_ +=" and xl_bm = ?";
  2659 + objList.add(line);
2585 } 2660 }
2586 2661
2587 -  
2588 String sql="SELECT r.id,r.schedule_date_str,r.fcsj,r.xl_name,r.xl_bm,r.cl_zbh,r.j_gh,r.j_name," 2662 String sql="SELECT r.id,r.schedule_date_str,r.fcsj,r.xl_name,r.xl_bm,r.cl_zbh,r.j_gh,r.j_name,"
2589 + " r.fcsj,d. TIMESTAMP,d.reply46,d.reply47,d.reply46time,d.reply47time," 2663 + " r.fcsj,d. TIMESTAMP,d.reply46,d.reply47,d.reply46time,d.reply47time,"
2590 + " r.gs_name,r.fgs_name FROM ("+sql_+") " 2664 + " r.gs_name,r.fgs_name FROM ("+sql_+") "
@@ -2593,6 +2667,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -2593,6 +2667,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
2593 2667
2594 2668
2595 List<Map<String, Object>> list = jdbcTemplate.query(sql, 2669 List<Map<String, Object>> list = jdbcTemplate.query(sql,
  2670 + objList.toArray(),
2596 new RowMapper<Map<String, Object>>(){ 2671 new RowMapper<Map<String, Object>>(){
2597 @Override 2672 @Override
2598 public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException { 2673 public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
src/main/resources/static/pages/base/stationroute/add.html
@@ -381,7 +381,7 @@ $(&#39;#add_station_mobal&#39;).on(&#39;AddStationMobal.show&#39;, function(e, addMap,ajaxd,stao @@ -381,7 +381,7 @@ $(&#39;#add_station_mobal&#39;).on(&#39;AddStationMobal.show&#39;, function(e, addMap,ajaxd,stao
381 staobj.setAddStation({}); 381 staobj.setAddStation({});
382 var add_direction_v = $('#stationdirSelect').val(); 382 var add_direction_v = $('#stationdirSelect').val();
383 var version = $("#versions").val(); 383 var version = $("#versions").val();
384 - PublicFunctions.resjtreeDate(Line.id,add_direction_v,version); 384 + fun.resjtreeDate(Line.id,add_direction_v,version);
385 //ajaxd.getSectionRouteInfo(Line.id,add_direction_v,version,function(data) { 385 //ajaxd.getSectionRouteInfo(Line.id,add_direction_v,version,function(data) {
386 // fun.linePanlThree(Line.id,data,add_direction_v,version); 386 // fun.linePanlThree(Line.id,data,add_direction_v,version);
387 //}); 387 //});
src/main/resources/static/pages/base/stationroute/js/stationroute-ajax-getdata.js
@@ -98,12 +98,12 @@ var GetAjaxData = function(){ @@ -98,12 +98,12 @@ var GetAjaxData = function(){
98 }); 98 });
99 }, 99 },
100 findUpStationRouteCode : function(lineId,diraction,stationRouteCode,callback) { 100 findUpStationRouteCode : function(lineId,diraction,stationRouteCode,callback) {
101 - $get('/stationroute/findUpStationRouteCode',{lineId:lineId,direction:diraction,stationRouteCode:stationRouteCode,version:version},function(result) { 101 + $get('/stationroute/findUpStationRouteCode',{lineId:lineId,direction:diraction,stationRouteCode:stationRouteCode},function(result) {
102 callback && callback(result); 102 callback && callback(result);
103 }); 103 });
104 }, 104 },
105 findUpSectionRouteCode : function(lineId,diraction,sectionRouteCode,callback) { 105 findUpSectionRouteCode : function(lineId,diraction,sectionRouteCode,callback) {
106 - $get('/sectionroute/findUpSectionRouteCode',{lineId:lineId,direction:diraction,sectionRouteCode:sectionRouteCode,version:version},function(result) { 106 + $get('/sectionroute/findUpSectionRouteCode',{lineId:lineId,direction:diraction,sectionRouteCode:sectionRouteCode},function(result) {
107 callback && callback(result); 107 callback && callback(result);
108 }); 108 });
109 }, 109 },
src/main/resources/static/pages/base/stationroute/js/stationroute-list-function.js
@@ -118,7 +118,7 @@ var PublicFunctions = function () { @@ -118,7 +118,7 @@ var PublicFunctions = function () {
118 $('#inout_carpark_tree').show(); 118 $('#inout_carpark_tree').show();
119 $('#InoutCarparktreeMobal .table-toolbar').show(); 119 $('#InoutCarparktreeMobal .table-toolbar').show();
120 120
121 - GetAjaxData.getRouteByStartEnd(id, version, start[0], end[0], function (result1) { 121 + GetAjaxData.getRouteByStartEnd(id, version, start[0], end[0], function (result1){
122 var routes = result1.data.routes, rootNode; 122 var routes = result1.data.routes, rootNode;
123 WorldsBMap.clearMarkAndOverlays(); 123 WorldsBMap.clearMarkAndOverlays();
124 var startPoint = mapData[start.join('_')], endPoint = mapData[end.join('_')], point, points; 124 var startPoint = mapData[start.join('_')], endPoint = mapData[end.join('_')], point, points;
src/main/resources/static/pages/base/stationroute/js/stationroute-list-map.js
@@ -549,7 +549,7 @@ window.WorldsBMap = function () { @@ -549,7 +549,7 @@ window.WorldsBMap = function () {
549 var html2 = '<div style="position: absolute; margin: 0pt; padding: 0pt; width: 160px; height: 26px; left: -10px; top: -35px; overflow: hidden;">' 549 var html2 = '<div style="position: absolute; margin: 0pt; padding: 0pt; width: 160px; height: 26px; left: -10px; top: -35px; overflow: hidden;">'
550 + '<img class="rm3_image" style="border:none;left:0px; top:0px; position:absolute;" src="/pages/base/stationroute/css/img/back160.png">' 550 + '<img class="rm3_image" style="border:none;left:0px; top:0px; position:absolute;" src="/pages/base/stationroute/css/img/back160.png">'
551 + '</div>' 551 + '</div>'
552 - + '<label class=" BMapLabel" unselectable="on" style="position: absolute; -moz-user-select: none; display: inline; cursor: inherit; border: 0px none; padding: 2px 1px 1px; white-space: nowrap; font: 12px arial,simsun; z-index: 80; color: rgb(255, 102, 0); left: 15px; top: -35px;"><span style="float: left; color: #fdfdfd; margin-left: -22px; font-size: 6px;">' + s + '</span>' + stationName + '</label>'; 552 + + '<label class=" BMapLabel" unselectable="on" style="position: absolute; -moz-user-select: none; display: inline; cursor: inherit; border: 0px none; padding: 2px 1px 1px; white-space: nowrap; font: 12px arial,simsun; z-index: 80; color: rgb(255, 102, 0); left: 15px; top: -35px;"><span style="float: left; color: #fdfdfd; margin-left: -22px; font-size: 11px;">' + s + '</span>' + stationName + '</label>';
553 553
554 var myRichMarker1 = new BMapLib.RichMarker(html2, point_center, { 554 var myRichMarker1 = new BMapLib.RichMarker(html2, point_center, {
555 "title": stationName, 555 "title": stationName,
src/main/resources/static/pages/forms/mh_sj/scheduleDaily/scheduleDaily_mh.html
@@ -95,16 +95,16 @@ word-wrap: break-word; @@ -95,16 +95,16 @@ word-wrap: break-word;
95 <td colspan="5" rowspan="2">原因</td> 95 <td colspan="5" rowspan="2">原因</td>
96 </tr> 96 </tr>
97 <tr> 97 <tr>
98 - <td><span >路阻</span></td>  
99 - <td><span>吊慢</span></td>  
100 - <td><span >故障</span></td>  
101 - <td><span >纠纷</span></td>  
102 - <td><span >肇事</span></td> 98 + <td><span>路阻</span></td>
  99 + <td><span>借调</span></td>
  100 + <td><span>故障</span></td>
  101 + <td><span>纠纷</span></td>
  102 + <td><span>事故</span></td>
103 <td><span>缺人</span></td> 103 <td><span>缺人</span></td>
104 - <td><span>缺车</span></td>  
105 - <td><span >客稀</span></td>  
106 - <td><span>气候</span></td>  
107 - <td><span>援外</span></td> 104 + <td><span>验车</span></td>
  105 + <td><span>保养</span></td>
  106 + <td><span>天气</span></td>
  107 + <td><span>支援</span></td>
108 <td><span>其他</span></td> 108 <td><span>其他</span></td>
109 <td><span ><c>全日</c></span></td> 109 <td><span ><c>全日</c></span></td>
110 <td><span >早高峰</span></td> 110 <td><span >早高峰</span></td>
src/main/resources/static/pages/forms/mould/lbStatuAnaly.xls
No preview for this file type
src/main/resources/static/pages/forms/mould/scheduleDaily.xls
No preview for this file type
src/main/resources/static/pages/forms/mould/scheduleDaily_m.xls
No preview for this file type
src/main/resources/static/pages/forms/mould/statisticsDaily_2.xls
No preview for this file type
src/main/resources/static/pages/forms/statement/historyMessage.html
@@ -31,10 +31,9 @@ @@ -31,10 +31,9 @@
31 <span class="item-label" style="width: 80px;">指令类型: </span> 31 <span class="item-label" style="width: 80px;">指令类型: </span>
32 <select class="form-control" id="directiveSelect" name="dType"> 32 <select class="form-control" id="directiveSelect" name="dType">
33 <option value="-1">全部</option> 33 <option value="-1">全部</option>
34 - <option value="0">调度指令</option>  
35 - <option value="1">运营指令</option>  
36 - <option value="2">线路切换指令</option>  
37 - <option value="3">消息短语</option> 34 + <option value="2">调度指令</option>
  35 + <option value="3">运营指令</option>
  36 + <option value="0">消息短语</option>
38 </select> 37 </select>
39 </div> 38 </div>
40 <div style="display: inline-block;margin-left: 12px;"> 39 <div style="display: inline-block;margin-left: 12px;">
src/main/resources/static/pages/forms/statement/lbStatuAnaly.html
@@ -33,15 +33,15 @@ @@ -33,15 +33,15 @@
33 <span class="item-label" style="width: 80px;">烂班原因: </span> 33 <span class="item-label" style="width: 80px;">烂班原因: </span>
34 <input class="form-control" type="checkbox" id="totalLb" style="width: 20px;" checked="true"/>全选 34 <input class="form-control" type="checkbox" id="totalLb" style="width: 20px;" checked="true"/>全选
35 <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="0" checked="true"/>路阻 35 <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="0" checked="true"/>路阻
36 - <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="1" checked="true"/>吊慢 36 + <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="1" checked="true"/>借调
37 <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="2" checked="true"/>故障 37 <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="2" checked="true"/>故障
38 <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="3" checked="true"/>纠纷 38 <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="3" checked="true"/>纠纷
39 - <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="4" checked="true"/>肇事 39 + <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="4" checked="true"/>事故
40 <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="5" checked="true"/>缺人 40 <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="5" checked="true"/>缺人
41 - <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="6" checked="true"/>缺车  
42 - <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="7" checked="true"/>客稀  
43 - <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="8" checked="true"/>气候  
44 - <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="9" checked="true"/>援外 41 + <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="6" checked="true"/>验车
  42 + <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="7" checked="true"/>保养
  43 + <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="8" checked="true"/>天气
  44 + <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="9" checked="true"/>支援
45 <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="10" checked="true"/>其他 45 <input class="form-control" type="checkbox" name="reason" style="width: 20px;" value="10" checked="true"/>其他
46 </div> 46 </div>
47 <div style="margin-top: 5px"></div> 47 <div style="margin-top: 5px"></div>
@@ -538,15 +538,15 @@ @@ -538,15 +538,15 @@
538 <tr> 538 <tr>
539 <th class="hidden"></th> 539 <th class="hidden"></th>
540 {{if reason[0].checked == true}}<th colspan="3">路阻</th>{{/if}} 540 {{if reason[0].checked == true}}<th colspan="3">路阻</th>{{/if}}
541 - {{if reason[1].checked == true}}<th colspan="3">吊慢</th>{{/if}} 541 + {{if reason[1].checked == true}}<th colspan="3">借调</th>{{/if}}
542 {{if reason[2].checked == true}}<th colspan="3">故障</th>{{/if}} 542 {{if reason[2].checked == true}}<th colspan="3">故障</th>{{/if}}
543 {{if reason[3].checked == true}}<th colspan="3">纠纷</th>{{/if}} 543 {{if reason[3].checked == true}}<th colspan="3">纠纷</th>{{/if}}
544 - {{if reason[4].checked == true}}<th colspan="3">肇事</th>{{/if}} 544 + {{if reason[4].checked == true}}<th colspan="3">事故</th>{{/if}}
545 {{if reason[5].checked == true}}<th colspan="3">缺人</th>{{/if}} 545 {{if reason[5].checked == true}}<th colspan="3">缺人</th>{{/if}}
546 - {{if reason[6].checked == true}}<th colspan="3">缺车</th>{{/if}}  
547 - {{if reason[7].checked == true}}<th colspan="3">客稀</th>{{/if}}  
548 - {{if reason[8].checked == true}}<th colspan="3">气候</th>{{/if}}  
549 - {{if reason[9].checked == true}}<th colspan="3">援外</th>{{/if}} 546 + {{if reason[6].checked == true}}<th colspan="3">验车</th>{{/if}}
  547 + {{if reason[7].checked == true}}<th colspan="3">保养</th>{{/if}}
  548 + {{if reason[8].checked == true}}<th colspan="3">天气</th>{{/if}}
  549 + {{if reason[9].checked == true}}<th colspan="3">支援</th>{{/if}}
550 {{if reason[10].checked == true}}<th colspan="3">其他</th>{{/if}} 550 {{if reason[10].checked == true}}<th colspan="3">其他</th>{{/if}}
551 </tr> 551 </tr>
552 <tr> 552 <tr>
src/main/resources/static/pages/forms/statement/scheduleDaily.html
@@ -92,15 +92,15 @@ @@ -92,15 +92,15 @@
92 </tr> 92 </tr>
93 <tr> 93 <tr>
94 <td><span>路阻</span></td> 94 <td><span>路阻</span></td>
95 - <td><span>吊慢</span></td> 95 + <td><span>借调</span></td>
96 <td><span>故障</span></td> 96 <td><span>故障</span></td>
97 <td><span>纠纷</span></td> 97 <td><span>纠纷</span></td>
98 - <td><span>肇事</span></td> 98 + <td><span>事故</span></td>
99 <td><span>缺人</span></td> 99 <td><span>缺人</span></td>
100 - <td><span>缺车</span></td>  
101 - <td><span>客稀</span></td>  
102 - <td><span>气候</span></td>  
103 - <td><span>援外</span></td> 100 + <td><span>验车</span></td>
  101 + <td><span>保养</span></td>
  102 + <td><span>天气</span></td>
  103 + <td><span>支援</span></td>
104 <td><span>其他</span></td> 104 <td><span>其他</span></td>
105 <td><span>全日</span></td> 105 <td><span>全日</span></td>
106 <td><span>早高峰</span></td> 106 <td><span>早高峰</span></td>
src/main/resources/static/pages/forms/statement/scheduleDailyQp.html
@@ -74,15 +74,15 @@ @@ -74,15 +74,15 @@
74 </tr> 74 </tr>
75 <tr> 75 <tr>
76 <td>路阻</td> 76 <td>路阻</td>
77 - <td>吊慢</td> 77 + <td>借调</td>
78 <td>故障</td> 78 <td>故障</td>
79 <td>纠纷</td> 79 <td>纠纷</td>
80 - <td>肇事</td> 80 + <td>事故</td>
81 <td>缺人</td> 81 <td>缺人</td>
82 - <td>缺车</td>  
83 - <td>客稀</td>  
84 - <td>气候</td>  
85 - <td>援外</td> 82 + <td>验车</td>
  83 + <td>保养</td>
  84 + <td>天气</td>
  85 + <td>支援</td>
86 <td>其他</td> 86 <td>其他</td>
87 <td><c>全日</c></td> 87 <td><c>全日</c></td>
88 <td>早高峰</td> 88 <td>早高峰</td>
src/main/resources/static/pages/forms/statement/statisticsDaily.html
@@ -111,16 +111,16 @@ @@ -111,16 +111,16 @@
111 <td rowspan="2">原因</td> 111 <td rowspan="2">原因</td>
112 </tr> 112 </tr>
113 <tr> 113 <tr>
114 - <td><span >路阻</span></td>  
115 - <td><span>吊慢</span></td>  
116 - <td><span >故障</span></td>  
117 - <td><span >纠纷</span></td>  
118 - <td><span >肇事</span></td> 114 + <td><span>路阻</span></td>
  115 + <td><span>借调</span></td>
  116 + <td><span>故障</span></td>
  117 + <td><span>纠纷</span></td>
  118 + <td><span>事故</span></td>
119 <td><span>缺人</span></td> 119 <td><span>缺人</span></td>
120 - <td><span>缺车</span></td>  
121 - <td><span >客稀</span></td>  
122 - <td><span>气候</span></td>  
123 - <td><span>援外</span></td> 120 + <td><span>验车</span></td>
  121 + <td><span>保养</span></td>
  122 + <td><span>天气</span></td>
  123 + <td><span>支援</span></td>
124 <td><span>其他</span></td> 124 <td><span>其他</span></td>
125 <td><span>营运</span></td> 125 <td><span>营运</span></td>
126 <td><span>空驶</span></td> 126 <td><span>空驶</span></td>
src/main/resources/static/pages/permission/user/changePWD.html
1 -<div class="row">  
2 -<div class="col-md-12">  
3 -<!-- BEGIN VALIDATION STATES-->  
4 -<div class="portlet light portlet-fit portlet-form bordered">  
5 -<div class="portlet-body">  
6 - <form class="form-horizontal" id="changePWDForm">  
7 - <div class="form-group" style="margin-top: 60px">  
8 - <label class="control-label col-md-5">原始密码:  
9 - </label>  
10 - <div class="col-md-4">  
11 - <div class="input-icon right">  
12 - <i class="fa"></i>  
13 - <input type="password" class="form-control" name="oldPWD" /> </div>  
14 - </div>  
15 - </div>  
16 - <div class="form-group">  
17 - <label class="control-label col-md-5">输入新密码:  
18 - </label>  
19 - <div class="col-md-4">  
20 - <div class="input-icon right">  
21 - <i class="fa"></i>  
22 - <input type="password" class="form-control" name="newPWD" /> </div>  
23 - </div>  
24 - </div>  
25 - <div class="form-group">  
26 - <label class="control-label col-md-5">确认新密码:  
27 - </label>  
28 - <div class="col-md-4">  
29 - <div class="input-icon right">  
30 - <i class="fa"></i>  
31 - <input type="password" class="form-control" name="cnewPWD" /> </div>  
32 - </div>  
33 - </div>  
34 - <div class="form-actions">  
35 - <div class="row">  
36 - <div class="col-md-offset-5 col-md-7">  
37 - <button type="button" id="confirm" class="btn green">确定</button>  
38 - <button type="reset" class="btn default">取消</button>  
39 - </div>  
40 - </div>  
41 - </div>  
42 - </form>  
43 -</div>  
44 -</div>  
45 -</div>  
46 -</div>  
47 -  
48 -<script>  
49 -$(function(){  
50 - $("#confirm").on("click",function(){  
51 - var data = $('#changePWDForm').serializeJSON();  
52 - $.post('/user/changePWD',data,function(msg){  
53 - layer.alert(msg);  
54 - });  
55 - });  
56 -}); 1 +<div class="row">
  2 +<div class="col-md-12">
  3 +<!-- BEGIN VALIDATION STATES-->
  4 +<div class="portlet light portlet-fit portlet-form bordered">
  5 +<div class="portlet-body">
  6 + <form class="form-horizontal" id="changePWDForm">
  7 + <div class="alert alert-danger display-hide">
  8 + <button class="close" data-close="alert"></button>您的输入有误,请检查下面的输入项
  9 + </div>
  10 + <div class="form-group" style="margin-top: 60px">
  11 + <label class="control-label col-md-5">原始密码:
  12 + </label>
  13 + <div class="col-md-4">
  14 + <div class="input-icon right">
  15 + <i class="fa"></i>
  16 + <input type="password" class="form-control" name="oldPWD" /> </div>
  17 + </div>
  18 + </div>
  19 + <div class="form-group">
  20 + <label class="control-label col-md-5">输入新密码:
  21 + </label>
  22 + <div class="col-md-4">
  23 + <div class="input-icon right">
  24 + <i class="fa"></i>
  25 + <input type="password" class="form-control" name="newPWD" id="newPWD"/> </div>
  26 + </div>
  27 + </div>
  28 + <div class="form-group">
  29 + <label class="control-label col-md-5">确认新密码:
  30 + </label>
  31 + <div class="col-md-4">
  32 + <div class="input-icon right">
  33 + <i class="fa"></i>
  34 + <input type="password" class="form-control" name="cnewPWD" /> </div>
  35 + </div>
  36 + </div>
  37 + <div class="form-actions">
  38 + <div class="row">
  39 + <div class="col-md-offset-5 col-md-7">
  40 + <button type="submit" id="confirm" class="btn green">确定</button>
  41 + <button type="reset" class="btn default">取消</button>
  42 + </div>
  43 + </div>
  44 + </div>
  45 + </form>
  46 +</div>
  47 +</div>
  48 +</div>
  49 +</div>
  50 +
  51 +<script>
  52 +$(function(){
  53 + var form = $('#changePWDForm');
  54 + //表单 validate
  55 + var error = $('.alert-danger', form);
  56 +
  57 + var validate = function (pwd) {
  58 + var flag = true;
  59 + for (var i = 1; i < pwd.length - 1; i++) {
  60 + var first = pwd.charCodeAt(i - 1);
  61 + var second = pwd.charCodeAt(i);
  62 + var third = pwd.charCodeAt(i + 1);
  63 + if (!(first >= 48 && third <= 57 || first >= 65 && third <= 90 || first >= 97 && third <= 122)) {
  64 + continue;
  65 + }
  66 + if (third - second == 1 && second - first == 1) {
  67 + flag = false;
  68 + }
  69 + }
  70 +
  71 + return flag;
  72 + }
  73 +
  74 + $.validator.addMethod("passwordrule", function(value, element) {
  75 + var reg = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*?[#?!@$%^&*-.]).{8,16}$/;
  76 + return this.optional(element) || reg.test(value) && validate(value);
  77 + }, "需包含大小写字母、数字、以及特殊符号的8-16位字符,并不能有123、abc这样的连续字符");
  78 +
  79 + //表单 validate
  80 + form.validate({
  81 + errorElement : 'span',
  82 + errorClass : 'help-block help-block-error',
  83 + focusInvalid : false,
  84 + rules : {
  85 + 'newPWD' : {
  86 + required : true,
  87 + minlength: 6,
  88 + maxlength: 16,
  89 + passwordrule:true
  90 + },
  91 + 'cnewPWD' : {
  92 + equalTo: '#newPWD'
  93 + }
  94 + },
  95 + invalidHandler : function(event, validator) {
  96 + error.show();
  97 + App.scrollTo(error, -200);
  98 + },
  99 +
  100 + highlight : function(element) {
  101 + $(element).closest('.form-group').addClass('has-error');
  102 + },
  103 +
  104 + unhighlight : function(element) {
  105 + $(element).closest('.form-group').removeClass('has-error');
  106 + },
  107 +
  108 + success : function(label) {
  109 + label.closest('.form-group').removeClass('has-error');
  110 + },
  111 +
  112 + submitHandler : function(f) {
  113 + var params = form.serializeJSON();
  114 + error.hide();
  115 + var keys;
  116 + $.ajax({
  117 + url: "/user/login/jCryptionKey?t="+Math.random(),
  118 + type: "Get",
  119 + async:false,
  120 + data: null,
  121 + success: function(data) {
  122 + keys = data.publickey;
  123 + }
  124 + });
  125 + //RSA加密
  126 + var encrypt = new JSEncrypt();
  127 + encrypt.setPublicKey(keys);
  128 + params.oldPWD = encrypt.encrypt(params.oldPWD);
  129 + params.newPWD = encrypt.encrypt(params.newPWD);
  130 + params.cnewPWD = encrypt.encrypt(params.cnewPWD);
  131 + $.ajax({
  132 + url: '/user/changePWD',
  133 + type: 'POST',
  134 + traditional: true,
  135 + data: params,
  136 + success: function(msg){
  137 + layer.alert(msg);
  138 + layer.closeAll('page');
  139 + }
  140 + });
  141 + }
  142 + });
  143 +});
57 </script> 144 </script>
58 \ No newline at end of file 145 \ No newline at end of file
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/fcxxwt.html
1 -<div class="uk-modal ct-form-modal ct_move_modal" id="schedule-fcxxwt-modal">  
2 - <div class="uk-modal-dialog">  
3 - <a href="" class="uk-modal-close uk-close"></a>  
4 - <div class="uk-modal-header">  
5 - <h2>发车信息微调</h2></div>  
6 - <form class="uk-form uk-form-horizontal">  
7 - </form>  
8 - </div>  
9 -  
10 - <script id="schedule-fcxxwt-form-temp" type="text/html">  
11 - <input type="hidden" name="id" value="{{sch.id}}"/>  
12 -  
13 - <div class="uk-grid">  
14 - <div class="uk-width-1-2">  
15 - <div class="uk-form-row">  
16 - <label class="uk-form-label" >发车站点</label>  
17 - <div class="uk-form-controls">  
18 - <input type="text" value="{{sch.qdzName}}" disabled>  
19 - </div>  
20 - </div>  
21 - </div>  
22 - <div class="uk-width-1-2">  
23 - <div class="uk-form-row">  
24 - <label class="uk-form-label" >结束站点</label>  
25 - <div class="uk-form-controls">  
26 - <input type="text" value="{{sch.zdzName}}" disabled>  
27 - </div>  
28 - </div>  
29 - </div>  
30 - </div>  
31 - <div class="uk-grid">  
32 - <div class="uk-width-1-2">  
33 - <div class="uk-form-row">  
34 - <label class="uk-form-label" >车辆编码</label>  
35 - <div class="uk-form-controls">  
36 - <div class="uk-autocomplete uk-form car-autocom">  
37 - <input type="text" value="{{sch.clZbh}}" name="clZbh" required>  
38 - </div>  
39 - </div>  
40 - </div>  
41 - </div>  
42 - <div class="uk-width-1-2">  
43 - <div class="uk-form-row">  
44 - <label class="uk-form-label" >路 牌</label>  
45 - <div class="uk-form-controls">  
46 - <input type="text" value="{{sch.lpName}}" disabled>  
47 - </div>  
48 - </div>  
49 - </div>  
50 - </div>  
51 -  
52 - <div class="uk-grid">  
53 - <div class="uk-width-1-2">  
54 - <div class="uk-form-row">  
55 - <label class="uk-form-label" >驾驶员</label>  
56 - <div class="uk-form-controls">  
57 - <div class="uk-autocomplete uk-form jsy-autocom">  
58 - <input type="text" value="{{sch.jGh}}/{{sch.jName}}" name="jsy" required>  
59 - </div>  
60 - </div>  
61 - </div>  
62 - </div>  
63 - <div class="uk-width-1-2">  
64 - <div class="uk-form-row">  
65 - <label class="uk-form-label" >售票员</label>  
66 - <div class="uk-form-controls">  
67 - <div class="uk-autocomplete uk-form spy-autocom">  
68 - <input type="text" value="{{sch.sGh}}/{{sch.sName}}" name="spy">  
69 - </div>  
70 - </div>  
71 - </div>  
72 - </div>  
73 - </div>  
74 -  
75 - <div class="uk-grid">  
76 - <div class="uk-width-1-2">  
77 - <div class="uk-form-row">  
78 - <label class="uk-form-label" >计发时刻</label>  
79 - <div class="uk-form-controls">  
80 - <input type="text" value="{{sch.fcsj}}" disabled>  
81 - </div>  
82 - </div>  
83 - </div>  
84 - <div class="uk-width-1-2">  
85 - <div class="uk-form-row">  
86 - <label class="uk-form-label" >实际时刻</label>  
87 - <div class="uk-form-controls">  
88 - <input type="time" value="{{sch.fcsjActual}}" name="fcsjActual" {{if sch.status==0}}autofocus{{/if}}>  
89 - </div>  
90 - </div>  
91 - </div>  
92 - </div>  
93 -  
94 - <div class="uk-grid">  
95 - <div class="uk-width-1-2">  
96 - <div class="uk-form-row">  
97 - <label class="uk-form-label" >到达时刻</label>  
98 - <div class="uk-form-controls">  
99 - <input type="time" value="{{sch.zdsjActual}}" name="zdsjActual" {{if sch.status==1}}autofocus{{/if}}>  
100 - </div>  
101 - </div>  
102 - </div>  
103 - <div class="uk-width-1-2">  
104 - <div class="uk-form-row">  
105 - <label class="uk-form-label" >班次类型</label>  
106 - <div class="uk-form-controls">  
107 - <select class="form-control nt-dictionary" data-code="{{sch.bcType}}" name="bcType" data-group=ScheduleType></select>  
108 - </div>  
109 - </div>  
110 - </div>  
111 - </div>  
112 -  
113 - <div class="uk-grid">  
114 - <div class="uk-width-1-1">  
115 - <div class="uk-form-row">  
116 - <label class="uk-form-label" >调整说明</label>  
117 - <div class="uk-form-controls">  
118 - <select name="adjustExps">  
119 - <option value="">请选择..</option>  
120 - {{each adjustExps as exp i}}  
121 - <option value="{{exp}}">{{exp}}</option>  
122 - {{/each}}  
123 - </select>  
124 - </div>  
125 - </div>  
126 - </div>  
127 - </div>  
128 - <div class="uk-grid">  
129 - <div class="uk-width-1-1">  
130 - <div class="uk-form-row ct-stacked">  
131 - <div class="uk-form-controls" style="margin-top: 5px;">  
132 - <textarea id="form-s-t" cols="30" rows="5" name="remarks" data-fv-stringlength="true" data-fv-stringlength-max="50" placeholder="备注,不超过50个字符">{{sch.remarks}}</textarea>  
133 - </div>  
134 - </div>  
135 - </div>  
136 - </div>  
137 -  
138 - <hr class="modal-dotted-hr">  
139 - <div class="uk-grid">  
140 - <div class="uk-width-1-2">  
141 - <div class="uk-form-row">  
142 - <label class="uk-form-label" >里程</label>  
143 - <div class="uk-form-controls">  
144 - <input type="text" value="{{if sch.status==-1}}0{{else}}{{sch.jhlc}}{{/if}}" name="jhlc" required>  
145 - </div>  
146 - </div>  
147 - </div>  
148 - <div class="uk-width-1-2">  
149 - <div class="uk-form-row">  
150 - <div class="uk-form-controls" style="margin-left: 0;margin-top: 9px;">  
151 - <label>  
152 - <input class="i-cbox destroy-box" type="checkbox" name="status" value="-1" {{if sch.status==-1}}checked disabled{{/if}}>  
153 - 是否烂班  
154 - </label>  
155 - </div>  
156 - </div>  
157 - </div>  
158 - </div>  
159 -  
160 - <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;">  
161 - <button type="button" class="uk-button uk-modal-close">取消</button>  
162 - <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button>  
163 - </div>  
164 - </script>  
165 -  
166 - <script>  
167 - (function() {  
168 - var adjustExps = ['配车', '保养', '故障', '肇事', '路阻', '纠纷', '缺人', '客稀', '缺车', '气候', '援外', '吊慢', '抽减', '其他'];  
169 - var modal = '#schedule-fcxxwt-modal'  
170 - ,sch;  
171 - $(modal).on('init', function(e, data) {  
172 - e.stopPropagation();  
173 - sch=data.sch;  
174 - var formHtml = template('schedule-fcxxwt-form-temp', {sch: sch, adjustExps:adjustExps});  
175 - $('form', modal).html(formHtml);  
176 - //字典转换  
177 - dictionaryUtils.transformDom($('.nt-dictionary', modal));  
178 -  
179 - //车辆自动补全  
180 - $.get('/basic/cars', function (rs) {  
181 - gb_common.carAutocomplete($('.car-autocom', modal), rs);  
182 - });  
183 - //驾驶员自动补全  
184 - gb_common.personAutocomplete($('.jsy-autocom', modal));  
185 - //售票员  
186 - gb_common.personAutocomplete($('.spy-autocom', modal));  
187 -  
188 - //submit  
189 - var f = $('form', modal).formValidation(gb_form_validation_opts);  
190 - f.on('success.form.fv', function(e) {  
191 - e.preventDefault();  
192 - var data = $(this).serializeJSON();  
193 -  
194 - //校验实发实达时间  
195 - if(!validation_s_e_Time(data)){  
196 - notify_err("实发时间不能晚于实达时间!");  
197 - return;  
198 - }  
199 -  
200 - //正常班次里程修改为0  
201 - var normalDestory = data.jhlc==0 && sch.bcType != 'in' && sch.bcType != 'out';  
202 - //修改里程  
203 - var editJhlc = data.jhlc != sch.jhlc && data.jhlc != 0;  
204 - if(!data.adjustExps && (data.status==-1 || normalDestory || editJhlc)){  
205 - notify_err("当前操作需要选择调整原因!");  
206 - return;  
207 - }  
208 - postData(data);  
209 - });  
210 -  
211 - var postData = function (data) {  
212 - gb_common.$post('/realSchedule/schInfoFineTune', data, function(rs){  
213 - gb_schedule_table.updateSchedule(rs.ts);  
214 - UIkit.modal(modal).hide();  
215 - notify_succ('操作成功!');  
216 - //计算应发未发  
217 - gb_schedule_table.calc_yfwf_num(sch.xlBm);  
218 - //更新路牌公里统计面板  
219 - gb_schedule_table.showLpMileageTipBySch(sch);  
220 - });  
221 - };  
222 -  
223 - //班次类型  
224 - $('select[name=bcType] option', f).each(function(){  
225 - var whiteList=['venting', 'major', 'normal', sch.bcType];  
226 - if(whiteList.indexOf($(this).val()) == -1)  
227 - $(this).remove();  
228 - });  
229 - if(sch.bcType == 'out' || sch.bcType == 'in'){  
230 - $('[name=bcType]', f).attr('disabled', 'disabled');  
231 - }  
232 -  
233 - //是否烂班  
234 - $('.destroy-box', f).on('click', function () {  
235 - if($(this)[0].checked)  
236 - $('input[name=jhlc]', f).val(0);  
237 - else  
238 - $('input[name=jhlc]', f).val(sch.jhlc);  
239 - });  
240 -  
241 - $('[name=adjustExps]', f).on('change', function(){  
242 - var rem=$('[name=remarks]', f);  
243 - rem.val(rem.val() + $(this).val() + ',').trigger('input');  
244 - });  
245 -  
246 -  
247 - $('select[name=bcType]', modal).on('change', function(){  
248 - var type = $(this).val();  
249 - if(sch.bcType == 'in' || sch.bcType == 'out')  
250 - return;  
251 -  
252 - var url, detailModal;  
253 - if(type=='venting'){  
254 - url='/real_control_v2/fragments/line_schedule/context_menu/bc_type_venting.html';  
255 - detailModal='#bctype-venting-modal';  
256 - }  
257 - else if(type=='major'){  
258 - detailModal='#bctype-major-modal';  
259 - url='/real_control_v2/fragments/line_schedule/context_menu/bc_type_major.html';  
260 - }  
261 - else return;  
262 -  
263 - //重置类型,等待调整界面触发刷新事件  
264 - $(this).val(sch.bcType);  
265 -  
266 - $.get(url, function(htmlStr){  
267 - $(document.body).append(htmlStr);  
268 -  
269 - UIkit.modal(detailModal, {bgclose: true,modal:false}).show();  
270 - $(detailModal).trigger('init', {sch: sch, parentModal: modal});  
271 - })  
272 - });  
273 -  
274 - /**  
275 - * 相同选项 也触发 onchange  
276 - */  
277 - $('select[name=bcType]', modal).mousedown(function () {  
278 - this.sindex = $(this)[0].selectedIndex;  
279 - $(this)[0].selectedIndex = -1;  
280 - }).mouseout(function () {  
281 - if ($(this)[0].selectedIndex === -1) {  
282 - $(this)[0].selectedIndex = this.sindex;  
283 - }  
284 - });  
285 - });  
286 -  
287 - function validation_s_e_Time(data) {  
288 - var config = gb_data_line_config.get(sch.xlBm);  
289 - var st = get_time(sch.scheduleDateStr, data.fcsjActual, config);  
290 - var et = get_time(sch.scheduleDateStr, data.zdsjActual, config);  
291 - if(st && et && st > et)  
292 - return false;  
293 - return true;  
294 - }  
295 -  
296 - var DAY_TIME = 1000 * 60 * 60 * 24;  
297 - function get_time(rq, timeStr, config) {  
298 - var t = null;  
299 - if(timeStr){  
300 - t = moment(rq + timeStr, 'YYYY-MM-DDHH:mm');  
301 - if(timeStr.localeCompare(config.startOpt) < 0)  
302 - return t + DAY_TIME;  
303 - }  
304 -  
305 - return t;  
306 - }  
307 - })();  
308 - </script>  
309 -</div> 1 +<div class="uk-modal ct-form-modal ct_move_modal" id="schedule-fcxxwt-modal">
  2 + <div class="uk-modal-dialog">
  3 + <a href="" class="uk-modal-close uk-close"></a>
  4 + <div class="uk-modal-header">
  5 + <h2>发车信息微调</h2></div>
  6 + <form class="uk-form uk-form-horizontal">
  7 + </form>
  8 + </div>
  9 +
  10 + <script id="schedule-fcxxwt-form-temp" type="text/html">
  11 + <input type="hidden" name="id" value="{{sch.id}}"/>
  12 +
  13 + <div class="uk-grid">
  14 + <div class="uk-width-1-2">
  15 + <div class="uk-form-row">
  16 + <label class="uk-form-label" >发车站点</label>
  17 + <div class="uk-form-controls">
  18 + <input type="text" value="{{sch.qdzName}}" disabled>
  19 + </div>
  20 + </div>
  21 + </div>
  22 + <div class="uk-width-1-2">
  23 + <div class="uk-form-row">
  24 + <label class="uk-form-label" >结束站点</label>
  25 + <div class="uk-form-controls">
  26 + <input type="text" value="{{sch.zdzName}}" disabled>
  27 + </div>
  28 + </div>
  29 + </div>
  30 + </div>
  31 + <div class="uk-grid">
  32 + <div class="uk-width-1-2">
  33 + <div class="uk-form-row">
  34 + <label class="uk-form-label" >车辆编码</label>
  35 + <div class="uk-form-controls">
  36 + <div class="uk-autocomplete uk-form car-autocom">
  37 + <input type="text" value="{{sch.clZbh}}" name="clZbh" required>
  38 + </div>
  39 + </div>
  40 + </div>
  41 + </div>
  42 + <div class="uk-width-1-2">
  43 + <div class="uk-form-row">
  44 + <label class="uk-form-label" >路 牌</label>
  45 + <div class="uk-form-controls">
  46 + <input type="text" value="{{sch.lpName}}" disabled>
  47 + </div>
  48 + </div>
  49 + </div>
  50 + </div>
  51 +
  52 + <div class="uk-grid">
  53 + <div class="uk-width-1-2">
  54 + <div class="uk-form-row">
  55 + <label class="uk-form-label" >驾驶员</label>
  56 + <div class="uk-form-controls">
  57 + <div class="uk-autocomplete uk-form jsy-autocom">
  58 + <input type="text" value="{{sch.jGh}}/{{sch.jName}}" name="jsy" required>
  59 + </div>
  60 + </div>
  61 + </div>
  62 + </div>
  63 + <div class="uk-width-1-2">
  64 + <div class="uk-form-row">
  65 + <label class="uk-form-label" >售票员</label>
  66 + <div class="uk-form-controls">
  67 + <div class="uk-autocomplete uk-form spy-autocom">
  68 + <input type="text" value="{{sch.sGh}}/{{sch.sName}}" name="spy">
  69 + </div>
  70 + </div>
  71 + </div>
  72 + </div>
  73 + </div>
  74 +
  75 + <div class="uk-grid">
  76 + <div class="uk-width-1-2">
  77 + <div class="uk-form-row">
  78 + <label class="uk-form-label" >计发时刻</label>
  79 + <div class="uk-form-controls">
  80 + <input type="text" value="{{sch.fcsj}}" disabled>
  81 + </div>
  82 + </div>
  83 + </div>
  84 + <div class="uk-width-1-2">
  85 + <div class="uk-form-row">
  86 + <label class="uk-form-label" >实际时刻</label>
  87 + <div class="uk-form-controls">
  88 + <input type="time" value="{{sch.fcsjActual}}" name="fcsjActual" {{if sch.status==0}}autofocus{{/if}}>
  89 + </div>
  90 + </div>
  91 + </div>
  92 + </div>
  93 +
  94 + <div class="uk-grid">
  95 + <div class="uk-width-1-2">
  96 + <div class="uk-form-row">
  97 + <label class="uk-form-label" >到达时刻</label>
  98 + <div class="uk-form-controls">
  99 + <input type="time" value="{{sch.zdsjActual}}" name="zdsjActual" {{if sch.status==1}}autofocus{{/if}}>
  100 + </div>
  101 + </div>
  102 + </div>
  103 + <div class="uk-width-1-2">
  104 + <div class="uk-form-row">
  105 + <label class="uk-form-label" >班次类型</label>
  106 + <div class="uk-form-controls">
  107 + <select class="form-control nt-dictionary" data-code="{{sch.bcType}}" name="bcType" data-group=ScheduleType></select>
  108 + </div>
  109 + </div>
  110 + </div>
  111 + </div>
  112 +
  113 + <div class="uk-grid">
  114 + <div class="uk-width-1-1">
  115 + <div class="uk-form-row">
  116 + <label class="uk-form-label" >调整说明</label>
  117 + <div class="uk-form-controls">
  118 + <select name="adjustExps">
  119 + <option value="">请选择..</option>
  120 + {{each adjustExps as exp i}}
  121 + <option value="{{exp}}">{{exp}}</option>
  122 + {{/each}}
  123 + </select>
  124 + </div>
  125 + </div>
  126 + </div>
  127 + </div>
  128 + <div class="uk-grid">
  129 + <div class="uk-width-1-1">
  130 + <div class="uk-form-row ct-stacked">
  131 + <div class="uk-form-controls" style="margin-top: 5px;">
  132 + <textarea id="form-s-t" cols="30" rows="5" name="remarks" data-fv-stringlength="true" data-fv-stringlength-max="50" placeholder="备注,不超过50个字符">{{sch.remarks}}</textarea>
  133 + </div>
  134 + </div>
  135 + </div>
  136 + </div>
  137 +
  138 + <hr class="modal-dotted-hr">
  139 + <div class="uk-grid">
  140 + <div class="uk-width-1-2">
  141 + <div class="uk-form-row">
  142 + <label class="uk-form-label" >里程</label>
  143 + <div class="uk-form-controls">
  144 + <input type="text" value="{{if sch.status==-1}}0{{else}}{{sch.jhlc}}{{/if}}" name="jhlc" required>
  145 + </div>
  146 + </div>
  147 + </div>
  148 + <div class="uk-width-1-2">
  149 + <div class="uk-form-row">
  150 + <div class="uk-form-controls" style="margin-left: 0;margin-top: 9px;">
  151 + <label>
  152 + <input class="i-cbox destroy-box" type="checkbox" name="status" value="-1" {{if sch.status==-1}}checked disabled{{/if}}>
  153 + 是否烂班
  154 + </label>
  155 + </div>
  156 + </div>
  157 + </div>
  158 + </div>
  159 +
  160 + <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;">
  161 + <button type="button" class="uk-button uk-modal-close">取消</button>
  162 + <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button>
  163 + </div>
  164 + </script>
  165 +
  166 + <script>
  167 + (function() {
  168 + var adjustExps = ['保养', '故障', '事故', '路阻', '纠纷', '缺人', '验车', '天气', '支援', '借调', '其他'];
  169 + var modal = '#schedule-fcxxwt-modal'
  170 + ,sch;
  171 + $(modal).on('init', function(e, data) {
  172 + e.stopPropagation();
  173 + sch=data.sch;
  174 + var formHtml = template('schedule-fcxxwt-form-temp', {sch: sch, adjustExps:adjustExps});
  175 + $('form', modal).html(formHtml);
  176 + //字典转换
  177 + dictionaryUtils.transformDom($('.nt-dictionary', modal));
  178 +
  179 + //车辆自动补全
  180 + $.get('/basic/cars', function (rs) {
  181 + gb_common.carAutocomplete($('.car-autocom', modal), rs);
  182 + });
  183 + //驾驶员自动补全
  184 + gb_common.personAutocomplete($('.jsy-autocom', modal));
  185 + //售票员
  186 + gb_common.personAutocomplete($('.spy-autocom', modal));
  187 +
  188 + //submit
  189 + var f = $('form', modal).formValidation(gb_form_validation_opts);
  190 + f.on('success.form.fv', function(e) {
  191 + e.preventDefault();
  192 + var data = $(this).serializeJSON();
  193 +
  194 + //校验实发实达时间
  195 + if(!validation_s_e_Time(data)){
  196 + notify_err("实发时间不能晚于实达时间!");
  197 + return;
  198 + }
  199 +
  200 + //正常班次里程修改为0
  201 + var normalDestory = data.jhlc==0 && sch.bcType != 'in' && sch.bcType != 'out';
  202 + //修改里程
  203 + var editJhlc = data.jhlc != sch.jhlc && data.jhlc != 0;
  204 + if(!data.adjustExps && (data.status==-1 || normalDestory || editJhlc)){
  205 + notify_err("当前操作需要选择调整原因!");
  206 + return;
  207 + }
  208 + postData(data);
  209 + });
  210 +
  211 + var postData = function (data) {
  212 + gb_common.$post('/realSchedule/schInfoFineTune', data, function(rs){
  213 + gb_schedule_table.updateSchedule(rs.ts);
  214 + UIkit.modal(modal).hide();
  215 + notify_succ('操作成功!');
  216 + //计算应发未发
  217 + gb_schedule_table.calc_yfwf_num(sch.xlBm);
  218 + //更新路牌公里统计面板
  219 + gb_schedule_table.showLpMileageTipBySch(sch);
  220 + });
  221 + };
  222 +
  223 + //班次类型
  224 + $('select[name=bcType] option', f).each(function(){
  225 + var whiteList=['venting', 'major', 'normal', sch.bcType];
  226 + if(whiteList.indexOf($(this).val()) == -1)
  227 + $(this).remove();
  228 + });
  229 + if(sch.bcType == 'out' || sch.bcType == 'in'){
  230 + $('[name=bcType]', f).attr('disabled', 'disabled');
  231 + }
  232 +
  233 + //是否烂班
  234 + $('.destroy-box', f).on('click', function () {
  235 + if($(this)[0].checked)
  236 + $('input[name=jhlc]', f).val(0);
  237 + else
  238 + $('input[name=jhlc]', f).val(sch.jhlc);
  239 + });
  240 +
  241 + $('[name=adjustExps]', f).on('change', function(){
  242 + var rem=$('[name=remarks]', f);
  243 + rem.val(rem.val() + $(this).val() + ',').trigger('input');
  244 + });
  245 +
  246 +
  247 + $('select[name=bcType]', modal).on('change', function(){
  248 + var type = $(this).val();
  249 + if(sch.bcType == 'in' || sch.bcType == 'out')
  250 + return;
  251 +
  252 + var url, detailModal;
  253 + if(type=='venting'){
  254 + url='/real_control_v2/fragments/line_schedule/context_menu/bc_type_venting.html';
  255 + detailModal='#bctype-venting-modal';
  256 + }
  257 + else if(type=='major'){
  258 + detailModal='#bctype-major-modal';
  259 + url='/real_control_v2/fragments/line_schedule/context_menu/bc_type_major.html';
  260 + }
  261 + else return;
  262 +
  263 + //重置类型,等待调整界面触发刷新事件
  264 + $(this).val(sch.bcType);
  265 +
  266 + $.get(url, function(htmlStr){
  267 + $(document.body).append(htmlStr);
  268 +
  269 + UIkit.modal(detailModal, {bgclose: true,modal:false}).show();
  270 + $(detailModal).trigger('init', {sch: sch, parentModal: modal});
  271 + })
  272 + });
  273 +
  274 + /**
  275 + * 相同选项 也触发 onchange
  276 + */
  277 + $('select[name=bcType]', modal).mousedown(function () {
  278 + this.sindex = $(this)[0].selectedIndex;
  279 + $(this)[0].selectedIndex = -1;
  280 + }).mouseout(function () {
  281 + if ($(this)[0].selectedIndex === -1) {
  282 + $(this)[0].selectedIndex = this.sindex;
  283 + }
  284 + });
  285 + });
  286 +
  287 + function validation_s_e_Time(data) {
  288 + var config = gb_data_line_config.get(sch.xlBm);
  289 + var st = get_time(sch.scheduleDateStr, data.fcsjActual, config);
  290 + var et = get_time(sch.scheduleDateStr, data.zdsjActual, config);
  291 + if(st && et && st > et)
  292 + return false;
  293 + return true;
  294 + }
  295 +
  296 + var DAY_TIME = 1000 * 60 * 60 * 24;
  297 + function get_time(rq, timeStr, config) {
  298 + var t = null;
  299 + if(timeStr){
  300 + t = moment(rq + timeStr, 'YYYY-MM-DDHH:mm');
  301 + if(timeStr.localeCompare(config.startOpt) < 0)
  302 + return t + DAY_TIME;
  303 + }
  304 +
  305 + return t;
  306 + }
  307 + })();
  308 + </script>
  309 +</div>
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/jhlb.html
1 -<div class="uk-modal ct-form-modal ct_move_modal" id="schedule-jhlb-modal">  
2 - <div class="uk-modal-dialog" style="width: 370px;">  
3 - <a href="" class="uk-modal-close uk-close"></a>  
4 - <div class="uk-modal-header">  
5 - <h2>计划烂班</h2></div>  
6 - <form class="uk-form uk-form-horizontal">  
7 - </form>  
8 - </div>  
9 -  
10 - <script id="schedule-jhlb-form-temp" type="text/html">  
11 - <div class="uk-grid">  
12 - <div class="uk-width-1-1">  
13 - <div class="uk-form-row">  
14 - <label class="uk-form-label" >内部编码</label>  
15 - <div class="uk-form-controls">  
16 - <input value="{{sch.clZbh}}" disabled/>  
17 - </div>  
18 - </div>  
19 - </div>  
20 - </div>  
21 -  
22 - <div class="uk-grid">  
23 - <div class="uk-width-1-1">  
24 - <div class="uk-form-row">  
25 - <label class="uk-form-label" >路牌</label>  
26 - <div class="uk-form-controls">  
27 - <select name="lpName">  
28 - {{if lps.length > 1}}  
29 - <option value="-100">全部</option>  
30 - {{/if}}  
31 - {{each lps as lpName i}}  
32 - <option value="{{lpName}}">{{lpName}}</option>  
33 - {{/each}}  
34 - </select>  
35 - </div>  
36 - </div>  
37 - </div>  
38 - </div>  
39 -  
40 - <div class="uk-grid">  
41 - <div class="uk-width-1-1">  
42 - <div class="uk-form-row">  
43 - <label class="uk-form-label" >班次  
44 - <hr>  
45 - <label>全选  
46 - <input class="i-cbox" name="allCheck" type="checkbox" >  
47 - </label>  
48 - </label>  
49 - <div class="uk-form-controls sch-time-checkbox-list">  
50 - {{each list as sch i}}  
51 - <label data-lp="{{sch.lpName}}" {{if sch.destroy}}class="destroy-sch"{{/if}}>  
52 - <input class="i-cbox" name="ids[]" value="{{sch.id}}" type="checkbox" {{if sch.destroy}}disabled{{/if}}>  
53 - {{sch.dfsj}}  
54 -  
55 - {{if sch.bcType == "out"}}  
56 - <span class="uk-badge uk-badge-success">出场</span>  
57 - {{else if sch.bcType == "in"}}  
58 - <span class="uk-badge uk-badge-warning">进场</span>  
59 - {{else if sch.bcType == "venting"}}  
60 - <span class="uk-badge uk-badge-danger">直放</span>  
61 - {{else if sch.bcType == "major"}}  
62 - <span class="uk-badge uk-badge-danger">放站</span>  
63 - {{/if}}  
64 - {{if sch.sflj}}  
65 - <span class="uk-badge uk-badge-danger">临加</span>  
66 - {{/if}}  
67 - {{if sch.destroy}}  
68 - <small>已烂班</small>  
69 - {{/if}}  
70 - </label>  
71 - {{/each}}  
72 - </div>  
73 - </div>  
74 - </div>  
75 - </div>  
76 - <div class="uk-grid">  
77 - <div class="uk-width-1-1">  
78 - <div class="uk-form-row">  
79 - <label class="uk-form-label" >调整说明</label>  
80 - <div class="uk-form-controls">  
81 - <select name="adjustExps" required>  
82 - <option value="">请选择..</option>  
83 - {{each adjustExps as exp i}}  
84 - <option value="{{exp}}">{{exp}}</option>  
85 - {{/each}}  
86 - </select>  
87 - </div>  
88 - </div>  
89 - </div>  
90 - </div>  
91 - <div class="uk-grid">  
92 - <div class="uk-width-1-1">  
93 - <div class="uk-form-row ct-stacked">  
94 - <div class="uk-form-controls" style="margin-top: 5px;">  
95 - <textarea id="form-s-t" cols="30" rows="5" name="remarks" data-fv-stringlength="true" data-fv-stringlength-max="20" placeholder="烂班说明,不超过20个字符"></textarea>  
96 - </div>  
97 - </div>  
98 - </div>  
99 - </div>  
100 -  
101 - <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;">  
102 - <button type="button" class="uk-button uk-modal-close">取消</button>  
103 - <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button>  
104 - </div>  
105 - </script>  
106 -  
107 - <script>  
108 - (function() {  
109 - var adjustExps = ['配车', '保养', '故障', '肇事', '路阻', '纠纷', '缺人', '客稀', '缺车', '气候', '援外', '吊慢', '抽减', '其他'];  
110 - var modal = '#schedule-jhlb-modal',  
111 - sch;  
112 - $(modal).on('init', function(e, data) {  
113 - e.stopPropagation();  
114 - sch = data.sch;  
115 - //获取车辆所有班次  
116 - var schArr = gb_common.get_vals(gb_schedule_table.findScheduleByLine(sch.xlBm)).filter(function(item) {  
117 - return item.clZbh == sch.clZbh;  
118 - }).sort(gb_schedule_table.schedule_sort);  
119 -  
120 - //获取路牌  
121 - var lps = {};  
122 - $.each(schArr, function () {  
123 - lps[this.lpName]=1;  
124 - });  
125 -  
126 - var formHtml = template('schedule-jhlb-form-temp', {  
127 - sch: sch,  
128 - list: schArr,  
129 - adjustExps:adjustExps,  
130 - lps: gb_common.get_keys(lps)  
131 - });  
132 - $('form', modal).html(formHtml);  
133 -  
134 - if(!sch.destroy){  
135 - //选中班次  
136 - var ckbox=$('input[type=checkbox][value='+sch.id+']', f).attr('checked', 'checked');  
137 - //滚动到可视区域  
138 - var cont=$('.sch-time-checkbox-list', f);  
139 - cont.animate({  
140 - scrollTop: ckbox.offset().top - cont.offset().top + cont.scrollTop() - 10  
141 - }, 500);  
142 - }  
143 -  
144 - //submit  
145 - var f = $('form', modal).formValidation(gb_form_validation_opts);  
146 - f.on('success.form.fv', function(e) {  
147 - e.preventDefault();  
148 - var data = $(this).serializeJSON();  
149 - if(!data.ids || data.ids.length==0){  
150 - UIkit.modal(modal).hide();  
151 - return;  
152 - }  
153 - var idsStr='';  
154 - $.each(data.ids, function(){idsStr+=(','+this)});  
155 - data.idsStr=idsStr.substr(1);  
156 - //提交  
157 - gb_common.$post('/realSchedule/destroy', data, function(rs){  
158 - gb_schedule_table.updateSchedule(rs.ts);  
159 - UIkit.modal(modal).hide();  
160 - notify_succ('烂班操作成功!');  
161 - //calc 应发未发  
162 - gb_schedule_table.calc_yfwf_num(sch.xlBm);  
163 - });  
164 - });  
165 -  
166 - $('[name=adjustExps]', f).on('change', function(){  
167 - var rem=$('[name=remarks]', f);  
168 - rem.val(rem.val() + $(this).val() + ',').trigger('input');  
169 - });  
170 -  
171 - //路牌切换事件  
172 - $('[name=lpName]', f).on('change', function () {  
173 - var v = $(this).val();  
174 - var lbs = $('.sch-time-checkbox-list label', modal);  
175 - if(v=='-100'){  
176 - //显示全部  
177 - lbs.show();  
178 - }  
179 - else {  
180 - lbs.hide().each(function () {  
181 - if($(this).data('lp')==v)  
182 - $(this).show();  
183 - else{  
184 - //将隐藏的checkbox取消选中  
185 - $(this).find('input[type=checkbox]')[0].checked=false;  
186 - }  
187 - });  
188 - }  
189 - });  
190 -  
191 - //全选  
192 - $('[name=allCheck]', f).on('click', function () {  
193 - var cbs = $('.sch-time-checkbox-list label input[type=checkbox]:visible:enabled', modal);  
194 - var status = this.checked;  
195 - cbs.each(function () {  
196 - this.checked = status;  
197 - });  
198 - });  
199 - });  
200 - })();  
201 - </script>  
202 -</div> 1 +<div class="uk-modal ct-form-modal ct_move_modal" id="schedule-jhlb-modal">
  2 + <div class="uk-modal-dialog" style="width: 370px;">
  3 + <a href="" class="uk-modal-close uk-close"></a>
  4 + <div class="uk-modal-header">
  5 + <h2>计划烂班</h2></div>
  6 + <form class="uk-form uk-form-horizontal">
  7 + </form>
  8 + </div>
  9 +
  10 + <script id="schedule-jhlb-form-temp" type="text/html">
  11 + <div class="uk-grid">
  12 + <div class="uk-width-1-1">
  13 + <div class="uk-form-row">
  14 + <label class="uk-form-label" >内部编码</label>
  15 + <div class="uk-form-controls">
  16 + <input value="{{sch.clZbh}}" disabled/>
  17 + </div>
  18 + </div>
  19 + </div>
  20 + </div>
  21 +
  22 + <div class="uk-grid">
  23 + <div class="uk-width-1-1">
  24 + <div class="uk-form-row">
  25 + <label class="uk-form-label" >路牌</label>
  26 + <div class="uk-form-controls">
  27 + <select name="lpName">
  28 + {{if lps.length > 1}}
  29 + <option value="-100">全部</option>
  30 + {{/if}}
  31 + {{each lps as lpName i}}
  32 + <option value="{{lpName}}">{{lpName}}</option>
  33 + {{/each}}
  34 + </select>
  35 + </div>
  36 + </div>
  37 + </div>
  38 + </div>
  39 +
  40 + <div class="uk-grid">
  41 + <div class="uk-width-1-1">
  42 + <div class="uk-form-row">
  43 + <label class="uk-form-label" >班次
  44 + <hr>
  45 + <label>全选
  46 + <input class="i-cbox" name="allCheck" type="checkbox" >
  47 + </label>
  48 + </label>
  49 + <div class="uk-form-controls sch-time-checkbox-list">
  50 + {{each list as sch i}}
  51 + <label data-lp="{{sch.lpName}}" {{if sch.destroy}}class="destroy-sch"{{/if}}>
  52 + <input class="i-cbox" name="ids[]" value="{{sch.id}}" type="checkbox" {{if sch.destroy}}disabled{{/if}}>
  53 + {{sch.dfsj}}
  54 +
  55 + {{if sch.bcType == "out"}}
  56 + <span class="uk-badge uk-badge-success">出场</span>
  57 + {{else if sch.bcType == "in"}}
  58 + <span class="uk-badge uk-badge-warning">进场</span>
  59 + {{else if sch.bcType == "venting"}}
  60 + <span class="uk-badge uk-badge-danger">直放</span>
  61 + {{else if sch.bcType == "major"}}
  62 + <span class="uk-badge uk-badge-danger">放站</span>
  63 + {{/if}}
  64 + {{if sch.sflj}}
  65 + <span class="uk-badge uk-badge-danger">临加</span>
  66 + {{/if}}
  67 + {{if sch.destroy}}
  68 + <small>已烂班</small>
  69 + {{/if}}
  70 + </label>
  71 + {{/each}}
  72 + </div>
  73 + </div>
  74 + </div>
  75 + </div>
  76 + <div class="uk-grid">
  77 + <div class="uk-width-1-1">
  78 + <div class="uk-form-row">
  79 + <label class="uk-form-label" >调整说明</label>
  80 + <div class="uk-form-controls">
  81 + <select name="adjustExps" required>
  82 + <option value="">请选择..</option>
  83 + {{each adjustExps as exp i}}
  84 + <option value="{{exp}}">{{exp}}</option>
  85 + {{/each}}
  86 + </select>
  87 + </div>
  88 + </div>
  89 + </div>
  90 + </div>
  91 + <div class="uk-grid">
  92 + <div class="uk-width-1-1">
  93 + <div class="uk-form-row ct-stacked">
  94 + <div class="uk-form-controls" style="margin-top: 5px;">
  95 + <textarea id="form-s-t" cols="30" rows="5" name="remarks" data-fv-stringlength="true" data-fv-stringlength-max="20" placeholder="烂班说明,不超过20个字符"></textarea>
  96 + </div>
  97 + </div>
  98 + </div>
  99 + </div>
  100 +
  101 + <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;">
  102 + <button type="button" class="uk-button uk-modal-close">取消</button>
  103 + <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button>
  104 + </div>
  105 + </script>
  106 +
  107 + <script>
  108 + (function() {
  109 + var adjustExps = ['保养', '故障', '事故', '路阻', '纠纷', '缺人', '验车', '天气', '支援', '借调', '其他'];
  110 + var modal = '#schedule-jhlb-modal',
  111 + sch;
  112 + $(modal).on('init', function(e, data) {
  113 + e.stopPropagation();
  114 + sch = data.sch;
  115 + //获取车辆所有班次
  116 + var schArr = gb_common.get_vals(gb_schedule_table.findScheduleByLine(sch.xlBm)).filter(function(item) {
  117 + return item.clZbh == sch.clZbh;
  118 + }).sort(gb_schedule_table.schedule_sort);
  119 +
  120 + //获取路牌
  121 + var lps = {};
  122 + $.each(schArr, function () {
  123 + lps[this.lpName]=1;
  124 + });
  125 +
  126 + var formHtml = template('schedule-jhlb-form-temp', {
  127 + sch: sch,
  128 + list: schArr,
  129 + adjustExps:adjustExps,
  130 + lps: gb_common.get_keys(lps)
  131 + });
  132 + $('form', modal).html(formHtml);
  133 +
  134 + if(!sch.destroy){
  135 + //选中班次
  136 + var ckbox=$('input[type=checkbox][value='+sch.id+']', f).attr('checked', 'checked');
  137 + //滚动到可视区域
  138 + var cont=$('.sch-time-checkbox-list', f);
  139 + cont.animate({
  140 + scrollTop: ckbox.offset().top - cont.offset().top + cont.scrollTop() - 10
  141 + }, 500);
  142 + }
  143 +
  144 + //submit
  145 + var f = $('form', modal).formValidation(gb_form_validation_opts);
  146 + f.on('success.form.fv', function(e) {
  147 + e.preventDefault();
  148 + var data = $(this).serializeJSON();
  149 + if(!data.ids || data.ids.length==0){
  150 + UIkit.modal(modal).hide();
  151 + return;
  152 + }
  153 + var idsStr='';
  154 + $.each(data.ids, function(){idsStr+=(','+this)});
  155 + data.idsStr=idsStr.substr(1);
  156 + //提交
  157 + gb_common.$post('/realSchedule/destroy', data, function(rs){
  158 + gb_schedule_table.updateSchedule(rs.ts);
  159 + UIkit.modal(modal).hide();
  160 + notify_succ('烂班操作成功!');
  161 + //calc 应发未发
  162 + gb_schedule_table.calc_yfwf_num(sch.xlBm);
  163 + });
  164 + });
  165 +
  166 + $('[name=adjustExps]', f).on('change', function(){
  167 + var rem=$('[name=remarks]', f);
  168 + rem.val(rem.val() + $(this).val() + ',').trigger('input');
  169 + });
  170 +
  171 + //路牌切换事件
  172 + $('[name=lpName]', f).on('change', function () {
  173 + var v = $(this).val();
  174 + var lbs = $('.sch-time-checkbox-list label', modal);
  175 + if(v=='-100'){
  176 + //显示全部
  177 + lbs.show();
  178 + }
  179 + else {
  180 + lbs.hide().each(function () {
  181 + if($(this).data('lp')==v)
  182 + $(this).show();
  183 + else{
  184 + //将隐藏的checkbox取消选中
  185 + $(this).find('input[type=checkbox]')[0].checked=false;
  186 + }
  187 + });
  188 + }
  189 + });
  190 +
  191 + //全选
  192 + $('[name=allCheck]', f).on('click', function () {
  193 + var cbs = $('.sch-time-checkbox-list label input[type=checkbox]:visible:enabled', modal);
  194 + var status = this.checked;
  195 + cbs.each(function () {
  196 + this.checked = status;
  197 + });
  198 + });
  199 + });
  200 + })();
  201 + </script>
  202 +</div>
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task/add_sub_task_inpark.html
1 -<div class="uk-modal ct_move_modal" id="add-sub-task-inpark-modal">  
2 - <div class="uk-modal-dialog">  
3 - <a href="" class="uk-modal-close uk-close"></a>  
4 - <div class="uk-modal-header">  
5 - <h2>回场子任务</h2></div>  
6 -  
7 - <div style="width: 100%;padding-left: 1%;">  
8 - <div class="sub-task-card">  
9 - <div class="uk-panel uk-panel-box uk-panel-box-primary twins_task_panel">  
10 - <div class="uk-panel-badge uk-badge">营运</div>  
11 - <h3 class="uk-panel-title">线路上站点间</h3>  
12 - <form class="uk-form uk-form-horizontal inpark_form" service_form>  
13 - <input type="hidden" name="type2" value="1">  
14 - <input type="hidden" name="mileageType" value="service">  
15 - <div class="uk-grid">  
16 - <div class="uk-width-3-10">  
17 - <div class="uk-form-row">  
18 - <label class="uk-form-label">班次类型 </label>  
19 - </div>  
20 - </div>  
21 - <div class="uk-width-7-10 pl5">  
22 - <select name="type1" class="ct_focus" disabled>  
23 - <option value="正常">正常</option>  
24 - <option value="临加">临加</option>  
25 - </select>  
26 - </div>  
27 - </div>  
28 - <div class="uk-grid">  
29 - <div class="uk-width-3-10">  
30 - <div class="uk-form-row">  
31 - <label class="uk-form-label">起点 </label>  
32 - </div>  
33 - </div>  
34 - <div class="uk-width-7-10 pl5">  
35 - <select name="startStation" disabled></select>  
36 - </div>  
37 - </div>  
38 - <div class="uk-grid">  
39 - <div class="uk-width-3-10">  
40 - <div class="uk-form-row">  
41 - <label class="uk-form-label">终点 </label>  
42 - </div>  
43 - </div>  
44 - <div class="uk-width-7-10 pl5">  
45 - <select name="endStation" class="ct_focus"></select>  
46 - </div>  
47 - </div>  
48 - <div class="uk-grid">  
49 - <div class="uk-width-3-10">  
50 - <div class="uk-form-row">  
51 - <label class="uk-form-label">营运里程</label>  
52 - </div>  
53 - </div>  
54 - <div class="uk-width-7-10 pl5">  
55 - <input type="number" step="0.01" name="mileage" required>  
56 - </div>  
57 - </div>  
58 - <div class="uk-grid">  
59 - <div class="uk-width-3-10">  
60 - <div class="uk-form-row">  
61 - <label class="uk-form-label">开始时间</label>  
62 - </div>  
63 - </div>  
64 - <div class="uk-width-7-10 pl5">  
65 - <input type="time" name="startDate" required>  
66 - </div>  
67 - </div>  
68 - <div class="uk-grid">  
69 - <div class="uk-width-3-10">  
70 - <div class="uk-form-row">  
71 - <label class="uk-form-label">结束时间</label>  
72 - </div>  
73 - </div>  
74 - <div class="uk-width-7-10 pl5">  
75 - <input type="time" name="endDate" required>  
76 - </div>  
77 - </div>  
78 - </form>  
79 - </div>  
80 - </div>  
81 - <div class="sub-task-card">  
82 - <div class="uk-panel uk-panel-box uk-panel-box-secondary">  
83 - <div class="uk-panel-badge uk-badge uk-badge-default">空驶</div>  
84 - <h3 class="uk-panel-title">进场</h3>  
85 - <form class="uk-form uk-form-horizontal inpark_form" empty_form>  
86 - <input type="hidden" name="type2" value="2">  
87 - <input type="hidden" name="mileageType" value="empty">  
88 - <div class="uk-grid">  
89 - <div class="uk-width-3-10">  
90 - <div class="uk-form-row">  
91 - <label class="uk-form-label">班次类型 </label>  
92 - </div>  
93 - </div>  
94 - <div class="uk-width-7-10 pl5">  
95 - <select name="type1" class="ct_focus">  
96 - <option value="正常">正常</option>  
97 - <option value="临加">临加</option>  
98 - </select>  
99 - </div>  
100 - </div>  
101 - <div class="uk-grid">  
102 - <div class="uk-width-3-10">  
103 - <div class="uk-form-row">  
104 - <label class="uk-form-label">起点 </label>  
105 - </div>  
106 - </div>  
107 - <div class="uk-width-7-10 pl5">  
108 - <select name="startStation" ></select>  
109 - </div>  
110 - </div>  
111 - <div class="uk-grid">  
112 - <div class="uk-width-3-10">  
113 - <div class="uk-form-row">  
114 - <label class="uk-form-label">终点 </label>  
115 - </div>  
116 - </div>  
117 - <div class="uk-width-7-10 pl5">  
118 - <select name="endStation" class="ct_focus"></select>  
119 - </div>  
120 - </div>  
121 - <div class="uk-grid">  
122 - <div class="uk-width-3-10">  
123 - <div class="uk-form-row">  
124 - <label class="uk-form-label">空驶里程</label>  
125 - </div>  
126 - </div>  
127 - <div class="uk-width-7-10 pl5">  
128 - <input type="number" step="0.01" name="mileage" required style="width: calc(100% - 62px);">  
129 - <a style="font-size: 12px;color: grey;cursor: default;" data-uk-tooltip title="可选择回场路径,设置途径点位。暂不开放" id="inpark_paths_link">路径(<span>0</span>)</a>  
130 - </div>  
131 - </div>  
132 - <div class="uk-grid">  
133 - <div class="uk-width-3-10">  
134 - <div class="uk-form-row">  
135 - <label class="uk-form-label">开始时间</label>  
136 - </div>  
137 - </div>  
138 - <div class="uk-width-7-10 pl5">  
139 - <input type="time" name="startDate" required>  
140 - </div>  
141 - </div>  
142 - <div class="uk-grid">  
143 - <div class="uk-width-3-10">  
144 - <div class="uk-form-row">  
145 - <label class="uk-form-label">结束时间</label>  
146 - </div>  
147 - </div>  
148 - <div class="uk-width-7-10 pl5">  
149 - <input type="time" name="endDate" required>  
150 - </div>  
151 - </div>  
152 - </form>  
153 - </div>  
154 - </div>  
155 - <div class="sub-task-card destroy-card uk-animation-scale">  
156 - <div class="uk-panel uk-panel-box uk-panel-box-danger">  
157 - <div class="uk-panel-badge uk-badge uk-badge-danger">烂班</div>  
158 - <h3 class="uk-panel-title">线路上站点间</h3>  
159 - <form class="uk-form uk-form-horizontal inpark_form" destroy_form>  
160 - <input type="hidden" value="正常" name="type1">  
161 - <input type="hidden" value="1" name="type2">  
162 - <input type="hidden" name="mileageType" value="service">  
163 - <input type="hidden" name="destroy" value="true">  
164 - <div class="uk-grid" style="height: 30px;">  
165 - </div>  
166 - <div class="uk-grid">  
167 - <div class="uk-width-3-10">  
168 - <div class="uk-form-row">  
169 - <label class="uk-form-label">起点 </label>  
170 - </div>  
171 - </div>  
172 - <div class="uk-width-7-10 pl5">  
173 - <select name="startStation" disabled></select>  
174 - </div>  
175 - </div>  
176 - <div class="uk-grid">  
177 - <div class="uk-width-3-10">  
178 - <div class="uk-form-row">  
179 - <label class="uk-form-label">终点 </label>  
180 - </div>  
181 - </div>  
182 - <div class="uk-width-7-10 pl5">  
183 - <select name="endStation" class="ct_focus" disabled></select>  
184 - </div>  
185 - </div>  
186 - <div class="uk-grid">  
187 - <div class="uk-width-3-10">  
188 - <div class="uk-form-row">  
189 - <label class="uk-form-label">烂班里程</label>  
190 - </div>  
191 - </div>  
192 - <div class="uk-width-7-10 pl5">  
193 - <input type="number" step="0.01" name="mileage" required>  
194 - </div>  
195 - </div>  
196 - <div class="uk-grid">  
197 - <div class="uk-width-3-10">  
198 - <div class="uk-form-row">  
199 - <label class="uk-form-label">开始时间</label>  
200 - </div>  
201 - </div>  
202 - <div class="uk-width-7-10 pl5">  
203 - <input type="time" name="startDate" required>  
204 - </div>  
205 - </div>  
206 - <div class="uk-grid">  
207 - <div class="uk-width-3-10">  
208 - <div class="uk-form-row">  
209 - <label class="uk-form-label">烂班原因</label>  
210 - </div>  
211 - </div>  
212 - <div class="uk-width-7-10 pl5">  
213 - <select name="destroyReason" required></select>  
214 - </div>  
215 - </div>  
216 - </form>  
217 - </div>  
218 - </div>  
219 -  
220 - <form class="uk-form" style="margin-top: 15px; padding: 0 10px 0 0;">  
221 - <textarea placeholder="备注" style="width: 100%;height: 70px;" id="globalRemarks"></textarea>  
222 - </form>  
223 - </div>  
224 -  
225 - <div class="uk-modal-footer uk-text-right">  
226 - <button type="button" class="uk-button uk-modal-close">取消</button>  
227 - <button type="button" class="uk-button uk-button-primary" id="submitChildTaskBtn">提交子任务</button>  
228 -  
229 - <div class="ct-footer-left">  
230 - <a id="betweenStationRangeCalc" data-drawer-id="station_route_spacing_chart_drawer">站点间公里不准?</a>  
231 - </div>  
232 - </div>  
233 - </div>  
234 -  
235 - <div class="ct-bottom-drawer">  
236 - <div class="ct-bottom-drawer-body"></div>  
237 - </div>  
238 -  
239 - <script id="sub-task-inpark-form-temp" type="text/html">  
240 - </script>  
241 -  
242 - <script>  
243 - (function () {  
244 - var modal = '#add-sub-task-inpark-modal',  
245 - serviceForm = $('form[service_form]', modal),  
246 - emptyForm = $('form[empty_form]', modal),  
247 - destroyForm = $('form[destroy_form]', modal),  
248 - sch, stationRoutes, parks, information, esCode, timeLocStations;  
249 - var adjustExps = ['配车', '保养', '故障', '肇事', '路阻', '纠纷', '缺人', '客稀', '缺车', '气候', '援外', '吊慢', '抽减', '其他'];  
250 - $(modal).on('init', function (e, data) {  
251 - e.stopPropagation();  
252 - sch = data.sch;  
253 -  
254 - //站点路由  
255 - stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) {  
256 - return a.stationRouteCode - b.stationRouteCode;  
257 - }), 'directions')[sch.xlDir];  
258 - //空驶终点(停车场)  
259 - //切换进场终点  
260 - $('select[name=endStation]', emptyForm).on('change', inparkNavigation);  
261 - $.get('/basic/parks', function (rs) {  
262 - parks = rs;  
263 - var opts = '';  
264 - for (var code in parks) {  
265 - opts += '<option value="' + code + '">' + parks[code] + '</option>';  
266 - }  
267 - $('select[name=endStation]', emptyForm).html(opts).val(information.carPark).trigger('change');  
268 - });  
269 - //线路标准  
270 - information = gb_data_basic.getLineInformation(sch.xlBm);  
271 - //本地存储的站点耗时  
272 - getLocStationsSpace();  
273 -  
274 - //设置默认值  
275 - setDefaultVal();  
276 -  
277 - //切换营运终点  
278 - $('select[name=endStation]', serviceForm).val(esCode).on('change', function () {  
279 - var val = $(this).val();  
280 - if (val == esCode) {  
281 - $('.uk-modal-dialog', modal).removeClass('three-children');  
282 - $('.sub-task-card.destroy-card').css("display", "none");  
283 - }  
284 - else {  
285 - $('.uk-modal-dialog', modal).addClass('three-children');  
286 - $('.sub-task-card.destroy-card').css("display", "inline-block");  
287 - }  
288 -  
289 - reClac();  
290 - }).trigger('change');  
291 -  
292 -  
293 - var dataArray = [];  
294 - var fs = $('form.inpark_form', modal).formValidation({  
295 - framework: 'uikit',  
296 - locale: 'zh_CN'  
297 - });  
298 - fs.on('success.form.fv', function(e) {  
299 - e.preventDefault();  
300 - if($(this).is(':hidden'))  
301 - return;  
302 - dataArray.push($.extend($(this).serializeJSON(), getDisabledVal(this)  
303 - , {remarks: $('#globalRemarks',modal).val(), 'schedule.id': sch.id}));  
304 - $(this).data('valid', true);  
305 -  
306 - if(allValidSuccess()){  
307 - var i = 0, rst;  
308 - (function () {  
309 - var f = arguments.callee;  
310 - if(i >= dataArray.length){  
311 - //完成后更新前端数据  
312 - gb_schedule_table.updateSchedule(rst);  
313 - UIkit.modal(modal).hide();  
314 - $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch});  
315 - return;  
316 - }  
317 - var data = dataArray[i];  
318 - //里程为0的不保存  
319 - if(data.mileage==0){  
320 - i++;  
321 - f();  
322 - }  
323 - else{  
324 - //营运子任务不写备注  
325 - if(data.mileageType == 'service' && !data.destroy)  
326 - data.remarks = '';  
327 - gb_common.$post('/childTask', data, function (rs) {  
328 - notify_succ('子任务添加成功');  
329 - rst = rs.t;  
330 - i++;  
331 - f();  
332 - });  
333 - }  
334 - })();  
335 - }  
336 - });  
337 -  
338 - //校验不过  
339 - fs.on('err.field.fv', function () {  
340 - $('#submitChildTaskBtn', modal).removeClass('disabled').removeAttr('disabled');  
341 - });  
342 -  
343 - //submit  
344 - $('#submitChildTaskBtn', modal).on('click', function () {  
345 - $(this).addClass('disabled').attr('disabled','disabled');  
346 - dataArray = [];  
347 - fs.data('valid', false);  
348 - fs.formValidation('validate');  
349 - //fs.submit();  
350 - });  
351 -  
352 - //选择烂班原因  
353 - $('select[name=destroyReason]', destroyForm).on('change', function () {  
354 - var e =$('#globalRemarks', modal);  
355 - e.val(e.val() + $(this).val() + ',');  
356 - });  
357 -  
358 - //根据主任务状态,复子任务  
359 - updateTwinsTaskBySch(sch);  
360 - });  
361 -  
362 - function allValidSuccess() {  
363 - var flag = true;  
364 - $('form.inpark_form:visible', modal).each(function (i, f) {  
365 - if(!$(f).data('valid')){  
366 - flag = false;  
367 - return false;  
368 - }  
369 - });  
370 - return flag;  
371 - }  
372 -  
373 - //获取表单disabled 项的值  
374 - function getDisabledVal(f) {  
375 - var rs = {};  
376 - $('input,select', f).each(function () {  
377 - if($(this).attr('disabled')){  
378 - rs[$(this).attr('name')]=$(this).val();  
379 - }  
380 - });  
381 - return rs;  
382 - }  
383 -  
384 - function setDefaultVal() {  
385 - var routeOpts = '';  
386 - $.each(stationRoutes, function () {  
387 - routeOpts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>';  
388 - });  
389 - esCode = stationRoutes[stationRoutes.length - 1].stationCode;  
390 -  
391 - //营运起终点  
392 - $('select[name=startStation],select[name=endStation]', serviceForm).html(routeOpts);  
393 - //空驶起点  
394 - $('select[name=startStation]', emptyForm).html(routeOpts).val(esCode);  
395 - //烂班起终点  
396 - $('select[name=startStation],select[name=endStation]', destroyForm).html(routeOpts).val(esCode);  
397 -  
398 - //烂班原因  
399 - var adjustExpsOpts = '<option value="">请选择...</option>';  
400 - $.each(adjustExps, function (i, str) {  
401 - adjustExpsOpts += '<option value="' + str + '">' + str + '</option>';  
402 - });  
403 - $('select[name=destroyReason]', destroyForm).html(adjustExpsOpts);  
404 -  
405 - //营运开始时间  
406 - $('input[name=startDate]', serviceForm).val(sch.fcsjActual?sch.fcsjActual:sch.dfsj);  
407 -  
408 - //营运班次类型  
409 - $('select[name=type1]', serviceForm).val(sch['sflj']?'临加':'正常');  
410 - }  
411 -  
412 - //点击 路径  
413 - $('#inpark_paths_link', modal).on('click', function () {  
414 -  
415 - });  
416 -  
417 - //进场导航  
418 - var drivingRouteResult;  
419 - function inparkNavigation() {  
420 - var start = $('select[name=startStation]', emptyForm).val()  
421 - ,end = $('select[name=endStation]', emptyForm).val();  
422 -  
423 - if(!end) return;  
424 -  
425 - var station = getStationByCode(start).station  
426 - ,park = gb_data_basic.getCarparkByCode(end);  
427 -  
428 - if(!park){  
429 - notify_err('无法找到停车场的坐标对照!!!');  
430 - return;  
431 - }  
432 - var tArray = park['gCenterPoint'].split(' ');  
433 - var sCoord = TransGPS.wgsToBD(station['gLaty'], station['gLonx'])  
434 - ,eCoord = TransGPS.wgsToBD(parseFloat(tArray[1]), parseFloat(tArray[0]));  
435 -  
436 - var sp = new BMap.Point(sCoord.lng,sCoord.lat);  
437 - var ep = new BMap.Point(eCoord.lng,eCoord.lat);  
438 -  
439 - var driving = new BMap.DrivingRoute('上海', {  
440 - onSearchComplete: function (rs) {  
441 - drivingRouteResult = rs;  
442 - calcInparkMileage(0);  
443 - }  
444 - });  
445 - driving.search(sp,ep);  
446 - }  
447 -  
448 - function calcInparkMileage(index) {  
449 - var count = drivingRouteResult.getNumPlans();  
450 -  
451 - //选择方案  
452 - var routePlan = drivingRouteResult.getPlan(index);  
453 - //里程  
454 - var mileage = routePlan.getDistance(false);  
455 - $('input[name=mileage]', emptyForm).val(mileage / 1000);  
456 - //结束时间  
457 - var duratio = routePlan.getDuration(false);  
458 - var st = $('input[name=startDate]', emptyForm).val();  
459 - var ets = moment(st, 'HH:mm').add(duratio, 'seconds').format('HH:mm');  
460 - $('input[name=endDate]', emptyForm).val(ets);  
461 -  
462 -  
463 - $('#inpark_paths_link span', modal).text(count);  
464 - }  
465 -  
466 - function getStationByCode(code) {  
467 - for(var i = 0; i < stationRoutes.length; i++){  
468 - if(stationRoutes[i]['stationCode']==code)  
469 - return stationRoutes[i];  
470 - }  
471 - return null;  
472 - }  
473 -  
474 - function reClac() {  
475 - var serviceEnd = $('select[name=endStation]', serviceForm).val();  
476 - //空驶起点 == 营运终点  
477 - $('select[name=startStation]', emptyForm).val(serviceEnd);  
478 -  
479 - //计算营运里程  
480 - var s = $('select[name=startStation]', serviceForm).val(),  
481 - e = $('select[name=endStation]', serviceForm).val();  
482 - var sMileage = calcMileage(s, e);  
483 - if(sMileage >= 0)  
484 - $('input[name=mileage]', serviceForm).val(sMileage);  
485 -  
486 - //营运结束时间  
487 - var et = sch.dfsjT + (parseInt(sMileage / sch.jhlcOrig * sch.bcsj) * 60 * 1000)  
488 - ,ets = et > sch.zdsjT?sch.zdsj:moment(et).format('HH:mm');  
489 - $('input[name=endDate]', serviceForm).val(ets);  
490 -  
491 - //有烂班  
492 - if (serviceEnd != esCode) {  
493 - //烂班起点 == 营运终点  
494 - $('select[name=startStation]', destroyForm).val(serviceEnd);  
495 - //计算烂班公里  
496 - s = $('select[name=startStation]', destroyForm).val();  
497 - e = $('select[name=endStation]', destroyForm).val();  
498 - var dMileage = calcMileage(s, e);  
499 - $('input[name=mileage]', destroyForm).val(dMileage);  
500 - //烂班开始时间  
501 - $('input[name=startDate]', destroyForm).val(ets);  
502 - }  
503 -  
504 - //进场开始时间  
505 - $('input[name=startDate]', emptyForm).val(ets);  
506 -  
507 - //重新导航  
508 - inparkNavigation();  
509 - }  
510 -  
511 - function calcMileage(s, e) {  
512 - var mileage = 0, flag, code;  
513 - if (timeLocStations) {  
514 - //空间坐标计算的站距  
515 - $.each(timeLocStations, function () {  
516 - code = this.station['STATION_CODE'];  
517 - if (flag)  
518 - mileage = gb_common.accAdd(mileage, this.toDistanceGl);  
519 - if (code == s)  
520 - flag = true;  
521 - if (code == e)  
522 - return false;  
523 - });  
524 - }  
525 - else{  
526 - //从原始站点路由字段里取值  
527 - $.each(stationRoutes, function () {  
528 - code = this['stationCode'];  
529 - if (flag)  
530 - mileage = gb_common.accAdd(mileage, this.distances);  
531 - if (code == s)  
532 - flag = true;  
533 - if (code == e)  
534 - return false;  
535 - });  
536 - }  
537 - return mileage;  
538 - }  
539 -  
540 - //从本地localStorage获取站间距数据  
541 - function getLocStationsSpace() {  
542 - try {  
543 - timeLocStations = window.localStorage.getItem('control_route_distance_' + sch.xlBm);  
544 - if (timeLocStations)  
545 - timeLocStations = JSON.parse(timeLocStations).stations[sch.xlDir == 0 ? 'up' : 'down'];  
546 - } catch (e) {  
547 - console.log(e);  
548 - }  
549 - }  
550 -  
551 - //站间距计算后刷新  
552 - $(modal).on('refresh_station_space', function () {  
553 - getLocStationsSpace();  
554 - reClac();  
555 - });  
556 -  
557 - //------ 下抽屉 ------  
558 - $('#betweenStationRangeCalc', modal).on('click', function () {  
559 - var id = $(this).data('drawer-id');  
560 - switchBtmDrawer(id, '/real_control_v2/fragments/line_schedule/context_menu/sub_task/station_route_spacing_chart.html');  
561 - });  
562 -  
563 - var btmDrawer = $('.ct-bottom-drawer', modal);  
564 - //打开事件  
565 - btmDrawer.on('drawer_show', function () {  
566 - var url = $(this).data('url');  
567 - if (!url) {  
568 - alert('无效的地址');  
569 - }  
570 -  
571 - var drawerPanel = $(this).data('name');  
572 - $('.ct-bottom-drawer-body', btmDrawer).load(url, function () {  
573 - $('#' + drawerPanel).trigger('drawer-init', {sch: sch});  
574 - });  
575 - });  
576 -  
577 - function switchBtmDrawer(id, url) {  
578 - if (btmDrawer.hasClass('open') && btmDrawer.data('name') == id) {  
579 - btmDrawer.removeClass('open');  
580 - btmDrawer.removeData('name').removeData('url');  
581 - }  
582 - else {  
583 - btmDrawer.addClass('open');  
584 - btmDrawer.data('name', id).data('url', url).trigger('drawer_show');  
585 - }  
586 - }  
587 -  
588 -  
589 - function updateTwinsTaskBySch(sch) {  
590 - //主任务是烂班  
591 - if(sch.destroy){  
592 - serviceForm.prepend('<input type="hidden" name="destroy" value="true">');  
593 - $('[name=mileage]', serviceForm).val(sch.jhlcOrig).attr('disabled', 'disabled');  
594 - $('.twins_task_panel .uk-badge', modal).addClass('uk-badge-danger').text('烂班');  
595 - //终点禁选  
596 - $('select[name=endStation]', serviceForm).attr('disabled', 'disabled');  
597 - //开始结束时间禁选  
598 -  
599 - //空驶起点  
600 - $('select[name=startStation]', emptyForm).val(sch.qdzCode);  
601 - }  
602 - }  
603 - })();  
604 - </script> 1 +<div class="uk-modal ct_move_modal" id="add-sub-task-inpark-modal">
  2 + <div class="uk-modal-dialog">
  3 + <a href="" class="uk-modal-close uk-close"></a>
  4 + <div class="uk-modal-header">
  5 + <h2>回场子任务</h2></div>
  6 +
  7 + <div style="width: 100%;padding-left: 1%;">
  8 + <div class="sub-task-card">
  9 + <div class="uk-panel uk-panel-box uk-panel-box-primary twins_task_panel">
  10 + <div class="uk-panel-badge uk-badge">营运</div>
  11 + <h3 class="uk-panel-title">线路上站点间</h3>
  12 + <form class="uk-form uk-form-horizontal inpark_form" service_form>
  13 + <input type="hidden" name="type2" value="1">
  14 + <input type="hidden" name="mileageType" value="service">
  15 + <div class="uk-grid">
  16 + <div class="uk-width-3-10">
  17 + <div class="uk-form-row">
  18 + <label class="uk-form-label">班次类型 </label>
  19 + </div>
  20 + </div>
  21 + <div class="uk-width-7-10 pl5">
  22 + <select name="type1" class="ct_focus" disabled>
  23 + <option value="正常">正常</option>
  24 + <option value="临加">临加</option>
  25 + </select>
  26 + </div>
  27 + </div>
  28 + <div class="uk-grid">
  29 + <div class="uk-width-3-10">
  30 + <div class="uk-form-row">
  31 + <label class="uk-form-label">起点 </label>
  32 + </div>
  33 + </div>
  34 + <div class="uk-width-7-10 pl5">
  35 + <select name="startStation" disabled></select>
  36 + </div>
  37 + </div>
  38 + <div class="uk-grid">
  39 + <div class="uk-width-3-10">
  40 + <div class="uk-form-row">
  41 + <label class="uk-form-label">终点 </label>
  42 + </div>
  43 + </div>
  44 + <div class="uk-width-7-10 pl5">
  45 + <select name="endStation" class="ct_focus"></select>
  46 + </div>
  47 + </div>
  48 + <div class="uk-grid">
  49 + <div class="uk-width-3-10">
  50 + <div class="uk-form-row">
  51 + <label class="uk-form-label">营运里程</label>
  52 + </div>
  53 + </div>
  54 + <div class="uk-width-7-10 pl5">
  55 + <input type="number" step="0.01" name="mileage" required>
  56 + </div>
  57 + </div>
  58 + <div class="uk-grid">
  59 + <div class="uk-width-3-10">
  60 + <div class="uk-form-row">
  61 + <label class="uk-form-label">开始时间</label>
  62 + </div>
  63 + </div>
  64 + <div class="uk-width-7-10 pl5">
  65 + <input type="time" name="startDate" required>
  66 + </div>
  67 + </div>
  68 + <div class="uk-grid">
  69 + <div class="uk-width-3-10">
  70 + <div class="uk-form-row">
  71 + <label class="uk-form-label">结束时间</label>
  72 + </div>
  73 + </div>
  74 + <div class="uk-width-7-10 pl5">
  75 + <input type="time" name="endDate" required>
  76 + </div>
  77 + </div>
  78 + </form>
  79 + </div>
  80 + </div>
  81 + <div class="sub-task-card">
  82 + <div class="uk-panel uk-panel-box uk-panel-box-secondary">
  83 + <div class="uk-panel-badge uk-badge uk-badge-default">空驶</div>
  84 + <h3 class="uk-panel-title">进场</h3>
  85 + <form class="uk-form uk-form-horizontal inpark_form" empty_form>
  86 + <input type="hidden" name="type2" value="2">
  87 + <input type="hidden" name="mileageType" value="empty">
  88 + <div class="uk-grid">
  89 + <div class="uk-width-3-10">
  90 + <div class="uk-form-row">
  91 + <label class="uk-form-label">班次类型 </label>
  92 + </div>
  93 + </div>
  94 + <div class="uk-width-7-10 pl5">
  95 + <select name="type1" class="ct_focus">
  96 + <option value="正常">正常</option>
  97 + <option value="临加">临加</option>
  98 + </select>
  99 + </div>
  100 + </div>
  101 + <div class="uk-grid">
  102 + <div class="uk-width-3-10">
  103 + <div class="uk-form-row">
  104 + <label class="uk-form-label">起点 </label>
  105 + </div>
  106 + </div>
  107 + <div class="uk-width-7-10 pl5">
  108 + <select name="startStation" ></select>
  109 + </div>
  110 + </div>
  111 + <div class="uk-grid">
  112 + <div class="uk-width-3-10">
  113 + <div class="uk-form-row">
  114 + <label class="uk-form-label">终点 </label>
  115 + </div>
  116 + </div>
  117 + <div class="uk-width-7-10 pl5">
  118 + <select name="endStation" class="ct_focus"></select>
  119 + </div>
  120 + </div>
  121 + <div class="uk-grid">
  122 + <div class="uk-width-3-10">
  123 + <div class="uk-form-row">
  124 + <label class="uk-form-label">空驶里程</label>
  125 + </div>
  126 + </div>
  127 + <div class="uk-width-7-10 pl5">
  128 + <input type="number" step="0.01" name="mileage" required style="width: calc(100% - 62px);">
  129 + <a style="font-size: 12px;color: grey;cursor: default;" data-uk-tooltip title="可选择回场路径,设置途径点位。暂不开放" id="inpark_paths_link">路径(<span>0</span>)</a>
  130 + </div>
  131 + </div>
  132 + <div class="uk-grid">
  133 + <div class="uk-width-3-10">
  134 + <div class="uk-form-row">
  135 + <label class="uk-form-label">开始时间</label>
  136 + </div>
  137 + </div>
  138 + <div class="uk-width-7-10 pl5">
  139 + <input type="time" name="startDate" required>
  140 + </div>
  141 + </div>
  142 + <div class="uk-grid">
  143 + <div class="uk-width-3-10">
  144 + <div class="uk-form-row">
  145 + <label class="uk-form-label">结束时间</label>
  146 + </div>
  147 + </div>
  148 + <div class="uk-width-7-10 pl5">
  149 + <input type="time" name="endDate" required>
  150 + </div>
  151 + </div>
  152 + </form>
  153 + </div>
  154 + </div>
  155 + <div class="sub-task-card destroy-card uk-animation-scale">
  156 + <div class="uk-panel uk-panel-box uk-panel-box-danger">
  157 + <div class="uk-panel-badge uk-badge uk-badge-danger">烂班</div>
  158 + <h3 class="uk-panel-title">线路上站点间</h3>
  159 + <form class="uk-form uk-form-horizontal inpark_form" destroy_form>
  160 + <input type="hidden" value="正常" name="type1">
  161 + <input type="hidden" value="1" name="type2">
  162 + <input type="hidden" name="mileageType" value="service">
  163 + <input type="hidden" name="destroy" value="true">
  164 + <div class="uk-grid" style="height: 30px;">
  165 + </div>
  166 + <div class="uk-grid">
  167 + <div class="uk-width-3-10">
  168 + <div class="uk-form-row">
  169 + <label class="uk-form-label">起点 </label>
  170 + </div>
  171 + </div>
  172 + <div class="uk-width-7-10 pl5">
  173 + <select name="startStation" disabled></select>
  174 + </div>
  175 + </div>
  176 + <div class="uk-grid">
  177 + <div class="uk-width-3-10">
  178 + <div class="uk-form-row">
  179 + <label class="uk-form-label">终点 </label>
  180 + </div>
  181 + </div>
  182 + <div class="uk-width-7-10 pl5">
  183 + <select name="endStation" class="ct_focus" disabled></select>
  184 + </div>
  185 + </div>
  186 + <div class="uk-grid">
  187 + <div class="uk-width-3-10">
  188 + <div class="uk-form-row">
  189 + <label class="uk-form-label">烂班里程</label>
  190 + </div>
  191 + </div>
  192 + <div class="uk-width-7-10 pl5">
  193 + <input type="number" step="0.01" name="mileage" required>
  194 + </div>
  195 + </div>
  196 + <div class="uk-grid">
  197 + <div class="uk-width-3-10">
  198 + <div class="uk-form-row">
  199 + <label class="uk-form-label">开始时间</label>
  200 + </div>
  201 + </div>
  202 + <div class="uk-width-7-10 pl5">
  203 + <input type="time" name="startDate" required>
  204 + </div>
  205 + </div>
  206 + <div class="uk-grid">
  207 + <div class="uk-width-3-10">
  208 + <div class="uk-form-row">
  209 + <label class="uk-form-label">烂班原因</label>
  210 + </div>
  211 + </div>
  212 + <div class="uk-width-7-10 pl5">
  213 + <select name="destroyReason" required></select>
  214 + </div>
  215 + </div>
  216 + </form>
  217 + </div>
  218 + </div>
  219 +
  220 + <form class="uk-form" style="margin-top: 15px; padding: 0 10px 0 0;">
  221 + <textarea placeholder="备注" style="width: 100%;height: 70px;" id="globalRemarks"></textarea>
  222 + </form>
  223 + </div>
  224 +
  225 + <div class="uk-modal-footer uk-text-right">
  226 + <button type="button" class="uk-button uk-modal-close">取消</button>
  227 + <button type="button" class="uk-button uk-button-primary" id="submitChildTaskBtn">提交子任务</button>
  228 +
  229 + <div class="ct-footer-left">
  230 + <a id="betweenStationRangeCalc" data-drawer-id="station_route_spacing_chart_drawer">站点间公里不准?</a>
  231 + </div>
  232 + </div>
  233 + </div>
  234 +
  235 + <div class="ct-bottom-drawer">
  236 + <div class="ct-bottom-drawer-body"></div>
  237 + </div>
  238 +
  239 + <script id="sub-task-inpark-form-temp" type="text/html">
  240 + </script>
  241 +
  242 + <script>
  243 + (function () {
  244 + var modal = '#add-sub-task-inpark-modal',
  245 + serviceForm = $('form[service_form]', modal),
  246 + emptyForm = $('form[empty_form]', modal),
  247 + destroyForm = $('form[destroy_form]', modal),
  248 + sch, stationRoutes, parks, information, esCode, timeLocStations;
  249 + var adjustExps = ['保养', '故障', '事故', '路阻', '纠纷', '缺人', '验车', '天气', '支援', '借调', '其他'];
  250 + $(modal).on('init', function (e, data) {
  251 + e.stopPropagation();
  252 + sch = data.sch;
  253 +
  254 + //站点路由
  255 + stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) {
  256 + return a.stationRouteCode - b.stationRouteCode;
  257 + }), 'directions')[sch.xlDir];
  258 + //空驶终点(停车场)
  259 + //切换进场终点
  260 + $('select[name=endStation]', emptyForm).on('change', inparkNavigation);
  261 + $.get('/basic/parks', function (rs) {
  262 + parks = rs;
  263 + var opts = '';
  264 + for (var code in parks) {
  265 + opts += '<option value="' + code + '">' + parks[code] + '</option>';
  266 + }
  267 + $('select[name=endStation]', emptyForm).html(opts).val(information.carPark).trigger('change');
  268 + });
  269 + //线路标准
  270 + information = gb_data_basic.getLineInformation(sch.xlBm);
  271 + //本地存储的站点耗时
  272 + getLocStationsSpace();
  273 +
  274 + //设置默认值
  275 + setDefaultVal();
  276 +
  277 + //切换营运终点
  278 + $('select[name=endStation]', serviceForm).val(esCode).on('change', function () {
  279 + var val = $(this).val();
  280 + if (val == esCode) {
  281 + $('.uk-modal-dialog', modal).removeClass('three-children');
  282 + $('.sub-task-card.destroy-card').css("display", "none");
  283 + }
  284 + else {
  285 + $('.uk-modal-dialog', modal).addClass('three-children');
  286 + $('.sub-task-card.destroy-card').css("display", "inline-block");
  287 + }
  288 +
  289 + reClac();
  290 + }).trigger('change');
  291 +
  292 +
  293 + var dataArray = [];
  294 + var fs = $('form.inpark_form', modal).formValidation({
  295 + framework: 'uikit',
  296 + locale: 'zh_CN'
  297 + });
  298 + fs.on('success.form.fv', function(e) {
  299 + e.preventDefault();
  300 + if($(this).is(':hidden'))
  301 + return;
  302 + dataArray.push($.extend($(this).serializeJSON(), getDisabledVal(this)
  303 + , {remarks: $('#globalRemarks',modal).val(), 'schedule.id': sch.id}));
  304 + $(this).data('valid', true);
  305 +
  306 + if(allValidSuccess()){
  307 + var i = 0, rst;
  308 + (function () {
  309 + var f = arguments.callee;
  310 + if(i >= dataArray.length){
  311 + //完成后更新前端数据
  312 + gb_schedule_table.updateSchedule(rst);
  313 + UIkit.modal(modal).hide();
  314 + $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch});
  315 + return;
  316 + }
  317 + var data = dataArray[i];
  318 + //里程为0的不保存
  319 + if(data.mileage==0){
  320 + i++;
  321 + f();
  322 + }
  323 + else{
  324 + //营运子任务不写备注
  325 + if(data.mileageType == 'service' && !data.destroy)
  326 + data.remarks = '';
  327 + gb_common.$post('/childTask', data, function (rs) {
  328 + notify_succ('子任务添加成功');
  329 + rst = rs.t;
  330 + i++;
  331 + f();
  332 + });
  333 + }
  334 + })();
  335 + }
  336 + });
  337 +
  338 + //校验不过
  339 + fs.on('err.field.fv', function () {
  340 + $('#submitChildTaskBtn', modal).removeClass('disabled').removeAttr('disabled');
  341 + });
  342 +
  343 + //submit
  344 + $('#submitChildTaskBtn', modal).on('click', function () {
  345 + $(this).addClass('disabled').attr('disabled','disabled');
  346 + dataArray = [];
  347 + fs.data('valid', false);
  348 + fs.formValidation('validate');
  349 + //fs.submit();
  350 + });
  351 +
  352 + //选择烂班原因
  353 + $('select[name=destroyReason]', destroyForm).on('change', function () {
  354 + var e =$('#globalRemarks', modal);
  355 + e.val(e.val() + $(this).val() + ',');
  356 + });
  357 +
  358 + //根据主任务状态,复子任务
  359 + updateTwinsTaskBySch(sch);
  360 + });
  361 +
  362 + function allValidSuccess() {
  363 + var flag = true;
  364 + $('form.inpark_form:visible', modal).each(function (i, f) {
  365 + if(!$(f).data('valid')){
  366 + flag = false;
  367 + return false;
  368 + }
  369 + });
  370 + return flag;
  371 + }
  372 +
  373 + //获取表单disabled 项的值
  374 + function getDisabledVal(f) {
  375 + var rs = {};
  376 + $('input,select', f).each(function () {
  377 + if($(this).attr('disabled')){
  378 + rs[$(this).attr('name')]=$(this).val();
  379 + }
  380 + });
  381 + return rs;
  382 + }
  383 +
  384 + function setDefaultVal() {
  385 + var routeOpts = '';
  386 + $.each(stationRoutes, function () {
  387 + routeOpts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>';
  388 + });
  389 + esCode = stationRoutes[stationRoutes.length - 1].stationCode;
  390 +
  391 + //营运起终点
  392 + $('select[name=startStation],select[name=endStation]', serviceForm).html(routeOpts);
  393 + //空驶起点
  394 + $('select[name=startStation]', emptyForm).html(routeOpts).val(esCode);
  395 + //烂班起终点
  396 + $('select[name=startStation],select[name=endStation]', destroyForm).html(routeOpts).val(esCode);
  397 +
  398 + //烂班原因
  399 + var adjustExpsOpts = '<option value="">请选择...</option>';
  400 + $.each(adjustExps, function (i, str) {
  401 + adjustExpsOpts += '<option value="' + str + '">' + str + '</option>';
  402 + });
  403 + $('select[name=destroyReason]', destroyForm).html(adjustExpsOpts);
  404 +
  405 + //营运开始时间
  406 + $('input[name=startDate]', serviceForm).val(sch.fcsjActual?sch.fcsjActual:sch.dfsj);
  407 +
  408 + //营运班次类型
  409 + $('select[name=type1]', serviceForm).val(sch['sflj']?'临加':'正常');
  410 + }
  411 +
  412 + //点击 路径
  413 + $('#inpark_paths_link', modal).on('click', function () {
  414 +
  415 + });
  416 +
  417 + //进场导航
  418 + var drivingRouteResult;
  419 + function inparkNavigation() {
  420 + var start = $('select[name=startStation]', emptyForm).val()
  421 + ,end = $('select[name=endStation]', emptyForm).val();
  422 +
  423 + if(!end) return;
  424 +
  425 + var station = getStationByCode(start).station
  426 + ,park = gb_data_basic.getCarparkByCode(end);
  427 +
  428 + if(!park){
  429 + notify_err('无法找到停车场的坐标对照!!!');
  430 + return;
  431 + }
  432 + var tArray = park['gCenterPoint'].split(' ');
  433 + var sCoord = TransGPS.wgsToBD(station['gLaty'], station['gLonx'])
  434 + ,eCoord = TransGPS.wgsToBD(parseFloat(tArray[1]), parseFloat(tArray[0]));
  435 +
  436 + var sp = new BMap.Point(sCoord.lng,sCoord.lat);
  437 + var ep = new BMap.Point(eCoord.lng,eCoord.lat);
  438 +
  439 + var driving = new BMap.DrivingRoute('上海', {
  440 + onSearchComplete: function (rs) {
  441 + drivingRouteResult = rs;
  442 + calcInparkMileage(0);
  443 + }
  444 + });
  445 + driving.search(sp,ep);
  446 + }
  447 +
  448 + function calcInparkMileage(index) {
  449 + var count = drivingRouteResult.getNumPlans();
  450 +
  451 + //选择方案
  452 + var routePlan = drivingRouteResult.getPlan(index);
  453 + //里程
  454 + var mileage = routePlan.getDistance(false);
  455 + $('input[name=mileage]', emptyForm).val(mileage / 1000);
  456 + //结束时间
  457 + var duratio = routePlan.getDuration(false);
  458 + var st = $('input[name=startDate]', emptyForm).val();
  459 + var ets = moment(st, 'HH:mm').add(duratio, 'seconds').format('HH:mm');
  460 + $('input[name=endDate]', emptyForm).val(ets);
  461 +
  462 +
  463 + $('#inpark_paths_link span', modal).text(count);
  464 + }
  465 +
  466 + function getStationByCode(code) {
  467 + for(var i = 0; i < stationRoutes.length; i++){
  468 + if(stationRoutes[i]['stationCode']==code)
  469 + return stationRoutes[i];
  470 + }
  471 + return null;
  472 + }
  473 +
  474 + function reClac() {
  475 + var serviceEnd = $('select[name=endStation]', serviceForm).val();
  476 + //空驶起点 == 营运终点
  477 + $('select[name=startStation]', emptyForm).val(serviceEnd);
  478 +
  479 + //计算营运里程
  480 + var s = $('select[name=startStation]', serviceForm).val(),
  481 + e = $('select[name=endStation]', serviceForm).val();
  482 + var sMileage = calcMileage(s, e);
  483 + if(sMileage >= 0)
  484 + $('input[name=mileage]', serviceForm).val(sMileage);
  485 +
  486 + //营运结束时间
  487 + var et = sch.dfsjT + (parseInt(sMileage / sch.jhlcOrig * sch.bcsj) * 60 * 1000)
  488 + ,ets = et > sch.zdsjT?sch.zdsj:moment(et).format('HH:mm');
  489 + $('input[name=endDate]', serviceForm).val(ets);
  490 +
  491 + //有烂班
  492 + if (serviceEnd != esCode) {
  493 + //烂班起点 == 营运终点
  494 + $('select[name=startStation]', destroyForm).val(serviceEnd);
  495 + //计算烂班公里
  496 + s = $('select[name=startStation]', destroyForm).val();
  497 + e = $('select[name=endStation]', destroyForm).val();
  498 + var dMileage = calcMileage(s, e);
  499 + $('input[name=mileage]', destroyForm).val(dMileage);
  500 + //烂班开始时间
  501 + $('input[name=startDate]', destroyForm).val(ets);
  502 + }
  503 +
  504 + //进场开始时间
  505 + $('input[name=startDate]', emptyForm).val(ets);
  506 +
  507 + //重新导航
  508 + inparkNavigation();
  509 + }
  510 +
  511 + function calcMileage(s, e) {
  512 + var mileage = 0, flag, code;
  513 + if (timeLocStations) {
  514 + //空间坐标计算的站距
  515 + $.each(timeLocStations, function () {
  516 + code = this.station['STATION_CODE'];
  517 + if (flag)
  518 + mileage = gb_common.accAdd(mileage, this.toDistanceGl);
  519 + if (code == s)
  520 + flag = true;
  521 + if (code == e)
  522 + return false;
  523 + });
  524 + }
  525 + else{
  526 + //从原始站点路由字段里取值
  527 + $.each(stationRoutes, function () {
  528 + code = this['stationCode'];
  529 + if (flag)
  530 + mileage = gb_common.accAdd(mileage, this.distances);
  531 + if (code == s)
  532 + flag = true;
  533 + if (code == e)
  534 + return false;
  535 + });
  536 + }
  537 + return mileage;
  538 + }
  539 +
  540 + //从本地localStorage获取站间距数据
  541 + function getLocStationsSpace() {
  542 + try {
  543 + timeLocStations = window.localStorage.getItem('control_route_distance_' + sch.xlBm);
  544 + if (timeLocStations)
  545 + timeLocStations = JSON.parse(timeLocStations).stations[sch.xlDir == 0 ? 'up' : 'down'];
  546 + } catch (e) {
  547 + console.log(e);
  548 + }
  549 + }
  550 +
  551 + //站间距计算后刷新
  552 + $(modal).on('refresh_station_space', function () {
  553 + getLocStationsSpace();
  554 + reClac();
  555 + });
  556 +
  557 + //------ 下抽屉 ------
  558 + $('#betweenStationRangeCalc', modal).on('click', function () {
  559 + var id = $(this).data('drawer-id');
  560 + switchBtmDrawer(id, '/real_control_v2/fragments/line_schedule/context_menu/sub_task/station_route_spacing_chart.html');
  561 + });
  562 +
  563 + var btmDrawer = $('.ct-bottom-drawer', modal);
  564 + //打开事件
  565 + btmDrawer.on('drawer_show', function () {
  566 + var url = $(this).data('url');
  567 + if (!url) {
  568 + alert('无效的地址');
  569 + }
  570 +
  571 + var drawerPanel = $(this).data('name');
  572 + $('.ct-bottom-drawer-body', btmDrawer).load(url, function () {
  573 + $('#' + drawerPanel).trigger('drawer-init', {sch: sch});
  574 + });
  575 + });
  576 +
  577 + function switchBtmDrawer(id, url) {
  578 + if (btmDrawer.hasClass('open') && btmDrawer.data('name') == id) {
  579 + btmDrawer.removeClass('open');
  580 + btmDrawer.removeData('name').removeData('url');
  581 + }
  582 + else {
  583 + btmDrawer.addClass('open');
  584 + btmDrawer.data('name', id).data('url', url).trigger('drawer_show');
  585 + }
  586 + }
  587 +
  588 +
  589 + function updateTwinsTaskBySch(sch) {
  590 + //主任务是烂班
  591 + if(sch.destroy){
  592 + serviceForm.prepend('<input type="hidden" name="destroy" value="true">');
  593 + $('[name=mileage]', serviceForm).val(sch.jhlcOrig).attr('disabled', 'disabled');
  594 + $('.twins_task_panel .uk-badge', modal).addClass('uk-badge-danger').text('烂班');
  595 + //终点禁选
  596 + $('select[name=endStation]', serviceForm).attr('disabled', 'disabled');
  597 + //开始结束时间禁选
  598 +
  599 + //空驶起点
  600 + $('select[name=startStation]', emptyForm).val(sch.qdzCode);
  601 + }
  602 + }
  603 + })();
  604 + </script>
605 </div> 605 </div>
606 \ No newline at end of file 606 \ No newline at end of file
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task/add_sub_task_other.html
1 -<div class="uk-modal ct-form-modal ct_move_modal" id="add-sub-task-other-modal">  
2 - <div class="uk-modal-dialog" style="width: 635px;">  
3 - <a href="" class="uk-modal-close uk-close"></a>  
4 - <div class="uk-modal-header">  
5 - <h2>自定义子任务</h2></div>  
6 - <form class="uk-form uk-form-horizontal">  
7 - </form>  
8 - </div>  
9 -  
10 - <script id="sub-task-other-form-temp" type="text/html">  
11 - <input type="hidden" value="{{sch.id}}" name="schedule.id">  
12 - <div class="uk-grid">  
13 - <div class="uk-width-1-1">  
14 - <div class="uk-form-row">  
15 - <label class="uk-form-label">班次类型</label>  
16 - <div class="uk-form-controls">  
17 - <select class="form-control" name="type1" style="width: 65px;">  
18 - <option>正常</option>  
19 - <option>临加</option>  
20 - </select>  
21 - <select class="form-control nt-dictionary" name="type2" data-group=ChildTaskType  
22 - style="width: 126px;;"></select>  
23 - </div>  
24 - </div>  
25 - </div>  
26 - </div>  
27 - <div class="uk-grid">  
28 - <div class="uk-width-1-2">  
29 - <div class="uk-form-row">  
30 - <label class="uk-form-label">起点 </label>  
31 - <div class="uk-form-controls">  
32 - <select name="startStation" required></select>  
33 - </div>  
34 - </div>  
35 - </div>  
36 - <div class="uk-width-1-2">  
37 - <div class="uk-form-row">  
38 - <label class="uk-form-label">终点</label>  
39 - <div class="uk-form-controls">  
40 - <select name="endStation" required></select>  
41 - </div>  
42 - </div>  
43 - </div>  
44 - </div>  
45 -  
46 - <div class="uk-grid">  
47 - <div class="uk-width-1-2">  
48 - <div class="uk-form-row">  
49 - <label class="uk-form-label">里程类型</label>  
50 - <div class="uk-form-controls">  
51 - <select class="form-control nt-dictionary" required name="mileageType"  
52 - data-group="MileageType"></select>  
53 - </div>  
54 - </div>  
55 - </div>  
56 - <div class="uk-width-1-2">  
57 - <div class="uk-form-row">  
58 - <label class="uk-form-label">公里数</label>  
59 - <div class="uk-form-controls">  
60 - <input class="form-control" name="mileage" max=222 data-fv-lessthan-inclusive="false" required>  
61 - </div>  
62 - </div>  
63 - </div>  
64 - </div>  
65 -  
66 - <div class="uk-grid">  
67 - <div class="uk-width-1-2">  
68 - <div class="uk-form-row">  
69 - <label class="uk-form-label">开始时间</label>  
70 - <div class="uk-form-controls">  
71 - <input name="startDate" value="{{sch.fcsj}}" type="time" required>  
72 - </div>  
73 - </div>  
74 - </div>  
75 - <div class="uk-width-1-2">  
76 - <div class="uk-form-row">  
77 - <label class="uk-form-label">结束时间</label>  
78 - <div class="uk-form-controls">  
79 - <input name="endDate" value="{{sch.zdsj}}" type="time" required>  
80 - </div>  
81 - </div>  
82 - </div>  
83 - </div>  
84 -  
85 - <div class="uk-grid">  
86 - <div class="uk-width-1-2">  
87 - <div class="uk-form-row" style="padding-top: 5px;">  
88 - <label class="uk-form-label"></label>  
89 - <div class="uk-form-controls">  
90 - <label>  
91 - <input type="checkbox" value=1 name="destroy" class="i-cbox"> 是否烂班  
92 - </label>  
93 - </div>  
94 - </div>  
95 - </div>  
96 - <div class="uk-width-1-2 destroy_reason_wrap" style="display: none;">  
97 - <div class="uk-form-row">  
98 - <label class="uk-form-label">烂班原因</label>  
99 - <div class="uk-form-controls">  
100 - <select class="form-control" name="destroyReason" required>  
101 - <option value="">请选择...</option>  
102 - {{each adjustExps as exp i}}  
103 - <option value="{{exp}}">{{exp}}</option>  
104 - {{/each}}  
105 - </select>  
106 - </div>  
107 - </div>  
108 - </div>  
109 - </div>  
110 -  
111 - <div class="uk-grid">  
112 - <div class="uk-width-1-1">  
113 - <div class="uk-form-row ct-stacked">  
114 - <div class="uk-form-controls" style="margin-top: 5px;">  
115 - <textarea id="form-s-t" cols="30" rows="5" name="remarks" data-fv-stringlength="true"  
116 - data-fv-stringlength-max="50" placeholder="备注,不超过50个字符"></textarea>  
117 - </div>  
118 - </div>  
119 - </div>  
120 - </div>  
121 - <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;">  
122 - <button type="button" class="uk-button uk-modal-close">取消</button>  
123 - <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button>  
124 - </div>  
125 - </script>  
126 -  
127 - <script>  
128 - (function () {  
129 - var modal = '#add-sub-task-other-modal',  
130 - sch, stationRoutes, parks, information;  
131 - var adjustExps = ['配车', '保养', '故障', '肇事', '路阻', '纠纷', '缺人', '客稀', '缺车', '气候', '援外', '吊慢', '抽减', '其他'];  
132 - $(modal).on('init', function (e, data) {  
133 - e.stopPropagation();  
134 - sch = data.sch;  
135 - var formHtml = template('sub-task-other-form-temp', {sch: sch, adjustExps: adjustExps});  
136 - $('form', modal).html(formHtml);  
137 - //字典转换  
138 - dictionaryUtils.transformDom($('.nt-dictionary', modal));  
139 -  
140 - //站点路由  
141 - stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) {  
142 - return a.stationRouteCode - b.stationRouteCode;  
143 - }), 'directions');  
144 - //停车场  
145 - $.get('/basic/parks', function (rs) {  
146 - parks = rs;  
147 - });  
148 - //线路标准  
149 - information = gb_data_basic.getLineInformation(sch.xlBm);  
150 -  
151 - //submit  
152 - var f = $('form', modal).formValidation(gb_form_validation_opts);  
153 - f.on('success.form.fv', function (e) {  
154 - disabled_submit_btn(this);  
155 - e.preventDefault();  
156 - var data = $(this).serializeJSON();  
157 -  
158 - gb_common.$post('/childTask', data, function (rs) {  
159 - notify_succ('子任务添加成功');  
160 - gb_schedule_table.updateSchedule(rs.t);  
161 - $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: rs.t});  
162 - UIkit.modal(modal).hide();  
163 - });  
164 - });  
165 -  
166 - //班次类型  
167 - $('[name=type2]', f).on('change', function () {  
168 - var routes = stationRoutes[sch.xlDir]  
169 - , lastCode = routes[routes.length - 1].stationCode  
170 - , opts = '', park_opts = '';  
171 - //station options  
172 - $.each(routes, function () {  
173 - opts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>'  
174 - });  
175 - //park options  
176 - for (var code in parks)  
177 - park_opts += '<option value="' + code + '">' + parks[code] + '</option>';  
178 -  
179 - var qdz = $('[name=startStation]', f), zdz = $('[name=endStation]', f), mType = $('[name=mileageType]', f);  
180 - switch ($(this).val()) {  
181 - case '3'://出场  
182 - qdz.html(park_opts).val(information.carPark);  
183 - zdz.html(opts);  
184 - mType.val('empty');  
185 - break;  
186 - case '2'://进场  
187 - qdz.html(opts);  
188 - zdz.html(park_opts).val(information.carPark);  
189 - mType.val('empty');  
190 - break;  
191 - default:  
192 - qdz.html(opts);  
193 - zdz.html(opts).val(lastCode);  
194 - mType.val('service');  
195 -  
196 - }  
197 - });  
198 -  
199 - //是否烂班  
200 - $('[name=destroy]', f).on('click', function () {  
201 - if (this.checked) {  
202 - $('.destroy_reason_wrap', modal).show();//.find('[name=destroyReason]').attr('required', 'required');  
203 - }  
204 - else {  
205 - $('.destroy_reason_wrap', modal).hide();//.find('[name=destroyReason]').removeAttr('required');  
206 - }  
207 - });  
208 -  
209 - $('[name=destroyReason]', f).on('change', function () {  
210 - var rem = $('[name=remarks]', f);  
211 - rem.val(rem.val() + $(this).val() + ',');  
212 - });  
213 - });  
214 - })();  
215 - </script>  
216 -</div> 1 +<div class="uk-modal ct-form-modal ct_move_modal" id="add-sub-task-other-modal">
  2 + <div class="uk-modal-dialog" style="width: 635px;">
  3 + <a href="" class="uk-modal-close uk-close"></a>
  4 + <div class="uk-modal-header">
  5 + <h2>自定义子任务</h2></div>
  6 + <form class="uk-form uk-form-horizontal">
  7 + </form>
  8 + </div>
  9 +
  10 + <script id="sub-task-other-form-temp" type="text/html">
  11 + <input type="hidden" value="{{sch.id}}" name="schedule.id">
  12 + <div class="uk-grid">
  13 + <div class="uk-width-1-1">
  14 + <div class="uk-form-row">
  15 + <label class="uk-form-label">班次类型</label>
  16 + <div class="uk-form-controls">
  17 + <select class="form-control" name="type1" style="width: 65px;">
  18 + <option>正常</option>
  19 + <option>临加</option>
  20 + </select>
  21 + <select class="form-control nt-dictionary" name="type2" data-group=ChildTaskType
  22 + style="width: 126px;;"></select>
  23 + </div>
  24 + </div>
  25 + </div>
  26 + </div>
  27 + <div class="uk-grid">
  28 + <div class="uk-width-1-2">
  29 + <div class="uk-form-row">
  30 + <label class="uk-form-label">起点 </label>
  31 + <div class="uk-form-controls">
  32 + <select name="startStation" required></select>
  33 + </div>
  34 + </div>
  35 + </div>
  36 + <div class="uk-width-1-2">
  37 + <div class="uk-form-row">
  38 + <label class="uk-form-label">终点</label>
  39 + <div class="uk-form-controls">
  40 + <select name="endStation" required></select>
  41 + </div>
  42 + </div>
  43 + </div>
  44 + </div>
  45 +
  46 + <div class="uk-grid">
  47 + <div class="uk-width-1-2">
  48 + <div class="uk-form-row">
  49 + <label class="uk-form-label">里程类型</label>
  50 + <div class="uk-form-controls">
  51 + <select class="form-control nt-dictionary" required name="mileageType"
  52 + data-group="MileageType"></select>
  53 + </div>
  54 + </div>
  55 + </div>
  56 + <div class="uk-width-1-2">
  57 + <div class="uk-form-row">
  58 + <label class="uk-form-label">公里数</label>
  59 + <div class="uk-form-controls">
  60 + <input class="form-control" name="mileage" max=222 data-fv-lessthan-inclusive="false" required>
  61 + </div>
  62 + </div>
  63 + </div>
  64 + </div>
  65 +
  66 + <div class="uk-grid">
  67 + <div class="uk-width-1-2">
  68 + <div class="uk-form-row">
  69 + <label class="uk-form-label">开始时间</label>
  70 + <div class="uk-form-controls">
  71 + <input name="startDate" value="{{sch.fcsj}}" type="time" required>
  72 + </div>
  73 + </div>
  74 + </div>
  75 + <div class="uk-width-1-2">
  76 + <div class="uk-form-row">
  77 + <label class="uk-form-label">结束时间</label>
  78 + <div class="uk-form-controls">
  79 + <input name="endDate" value="{{sch.zdsj}}" type="time" required>
  80 + </div>
  81 + </div>
  82 + </div>
  83 + </div>
  84 +
  85 + <div class="uk-grid">
  86 + <div class="uk-width-1-2">
  87 + <div class="uk-form-row" style="padding-top: 5px;">
  88 + <label class="uk-form-label"></label>
  89 + <div class="uk-form-controls">
  90 + <label>
  91 + <input type="checkbox" value=1 name="destroy" class="i-cbox"> 是否烂班
  92 + </label>
  93 + </div>
  94 + </div>
  95 + </div>
  96 + <div class="uk-width-1-2 destroy_reason_wrap" style="display: none;">
  97 + <div class="uk-form-row">
  98 + <label class="uk-form-label">烂班原因</label>
  99 + <div class="uk-form-controls">
  100 + <select class="form-control" name="destroyReason" required>
  101 + <option value="">请选择...</option>
  102 + {{each adjustExps as exp i}}
  103 + <option value="{{exp}}">{{exp}}</option>
  104 + {{/each}}
  105 + </select>
  106 + </div>
  107 + </div>
  108 + </div>
  109 + </div>
  110 +
  111 + <div class="uk-grid">
  112 + <div class="uk-width-1-1">
  113 + <div class="uk-form-row ct-stacked">
  114 + <div class="uk-form-controls" style="margin-top: 5px;">
  115 + <textarea id="form-s-t" cols="30" rows="5" name="remarks" data-fv-stringlength="true"
  116 + data-fv-stringlength-max="50" placeholder="备注,不超过50个字符"></textarea>
  117 + </div>
  118 + </div>
  119 + </div>
  120 + </div>
  121 + <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;">
  122 + <button type="button" class="uk-button uk-modal-close">取消</button>
  123 + <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button>
  124 + </div>
  125 + </script>
  126 +
  127 + <script>
  128 + (function () {
  129 + var modal = '#add-sub-task-other-modal',
  130 + sch, stationRoutes, parks, information;
  131 + var adjustExps = ['保养', '故障', '事故', '路阻', '纠纷', '缺人', '验车', '天气', '支援', '借调', '其他'];
  132 + $(modal).on('init', function (e, data) {
  133 + e.stopPropagation();
  134 + sch = data.sch;
  135 + var formHtml = template('sub-task-other-form-temp', {sch: sch, adjustExps: adjustExps});
  136 + $('form', modal).html(formHtml);
  137 + //字典转换
  138 + dictionaryUtils.transformDom($('.nt-dictionary', modal));
  139 +
  140 + //站点路由
  141 + stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) {
  142 + return a.stationRouteCode - b.stationRouteCode;
  143 + }), 'directions');
  144 + //停车场
  145 + $.get('/basic/parks', function (rs) {
  146 + parks = rs;
  147 + });
  148 + //线路标准
  149 + information = gb_data_basic.getLineInformation(sch.xlBm);
  150 +
  151 + //submit
  152 + var f = $('form', modal).formValidation(gb_form_validation_opts);
  153 + f.on('success.form.fv', function (e) {
  154 + disabled_submit_btn(this);
  155 + e.preventDefault();
  156 + var data = $(this).serializeJSON();
  157 +
  158 + gb_common.$post('/childTask', data, function (rs) {
  159 + notify_succ('子任务添加成功');
  160 + gb_schedule_table.updateSchedule(rs.t);
  161 + $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: rs.t});
  162 + UIkit.modal(modal).hide();
  163 + });
  164 + });
  165 +
  166 + //班次类型
  167 + $('[name=type2]', f).on('change', function () {
  168 + var routes = stationRoutes[sch.xlDir]
  169 + , lastCode = routes[routes.length - 1].stationCode
  170 + , opts = '', park_opts = '';
  171 + //station options
  172 + $.each(routes, function () {
  173 + opts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>'
  174 + });
  175 + //park options
  176 + for (var code in parks)
  177 + park_opts += '<option value="' + code + '">' + parks[code] + '</option>';
  178 +
  179 + var qdz = $('[name=startStation]', f), zdz = $('[name=endStation]', f), mType = $('[name=mileageType]', f);
  180 + switch ($(this).val()) {
  181 + case '3'://出场
  182 + qdz.html(park_opts).val(information.carPark);
  183 + zdz.html(opts);
  184 + mType.val('empty');
  185 + break;
  186 + case '2'://进场
  187 + qdz.html(opts);
  188 + zdz.html(park_opts).val(information.carPark);
  189 + mType.val('empty');
  190 + break;
  191 + default:
  192 + qdz.html(opts);
  193 + zdz.html(opts).val(lastCode);
  194 + mType.val('service');
  195 +
  196 + }
  197 + });
  198 +
  199 + //是否烂班
  200 + $('[name=destroy]', f).on('click', function () {
  201 + if (this.checked) {
  202 + $('.destroy_reason_wrap', modal).show();//.find('[name=destroyReason]').attr('required', 'required');
  203 + }
  204 + else {
  205 + $('.destroy_reason_wrap', modal).hide();//.find('[name=destroyReason]').removeAttr('required');
  206 + }
  207 + });
  208 +
  209 + $('[name=destroyReason]', f).on('change', function () {
  210 + var rem = $('[name=remarks]', f);
  211 + rem.val(rem.val() + $(this).val() + ',');
  212 + });
  213 + });
  214 + })();
  215 + </script>
  216 +</div>