Commit ec19ee5c9e58aa2d1db97f37ce948b6a45347d75

Authored by YRF
2 parents 4eebb473 7dd3104a

Merge branch 'minhang' of git@192.168.168.201:panzhaov5/bsth_control.git into minhang

Showing 36 changed files with 4397 additions and 3028 deletions
src/main/java/com/bsth/controller/forms/ExportController.java
@@ -186,7 +186,7 @@ public class ExportController { @@ -186,7 +186,7 @@ public class ExportController {
186 m.put("i", i); 186 m.put("i", i);
187 m.put("rQ", l.getrQ()); 187 m.put("rQ", l.getrQ());
188 m.put("gS", l.getgS()); 188 m.put("gS", l.getgS());
189 - m.put("xL", l.getxL()); 189 + m.put("xL", l.getXlmc());
190 m.put("clzbh", l.getClzbh()); 190 m.put("clzbh", l.getClzbh());
191 m.put("jsy", l.getJsy()); 191 m.put("jsy", l.getJsy());
192 m.put("jName", l.getjName()); 192 m.put("jName", l.getjName());
src/main/java/com/bsth/controller/realcontrol/summary/FastAndSlowController.java
1 -package com.bsth.controller.realcontrol.summary;  
2 -  
3 -import com.bsth.controller.BaseController;  
4 -import com.bsth.data.summary.entity.FastAndSlow;  
5 -import org.springframework.web.bind.annotation.RequestMapping;  
6 -import org.springframework.web.bind.annotation.RestController;  
7 -  
8 -/**  
9 - * 快慢误点统计  
10 - * Created by panzhao on 2017/10/24.  
11 - */  
12 -@RestController  
13 -@RequestMapping("/summary/fastAndSlow")  
14 -public class FastAndSlowController extends BaseController<FastAndSlow, Long> {  
15 -} 1 +package com.bsth.controller.realcontrol.summary;
  2 +
  3 +import com.bsth.controller.BaseController;
  4 +import com.bsth.data.summary.entity.FastAndSlow;
  5 +import com.bsth.data.summary.service.FastAndSlowService;
  6 +import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.web.bind.annotation.PathVariable;
  8 +import org.springframework.web.bind.annotation.RequestMapping;
  9 +import org.springframework.web.bind.annotation.RequestParam;
  10 +import org.springframework.web.bind.annotation.RestController;
  11 +
  12 +import javax.servlet.http.HttpServletRequest;
  13 +import javax.servlet.http.HttpServletResponse;
  14 +
  15 +/**
  16 + * 快慢误点统计
  17 + * Created by panzhao on 2017/10/24.
  18 + */
  19 +@RestController
  20 +@RequestMapping("/summary/fastAndSlow")
  21 +public class FastAndSlowController extends BaseController<FastAndSlow, Long> {
  22 +
  23 + @Autowired
  24 + FastAndSlowService fastAndSlowService;
  25 +
  26 + @RequestMapping("/excel/{lineCode}")
  27 + public void excel(@PathVariable("lineCode") String lineCode, @RequestParam String st
  28 + , @RequestParam String et, @RequestParam int type, HttpServletRequest request, HttpServletResponse response) {
  29 + fastAndSlowService.excel(lineCode, st, et, type, request, response);
  30 + }
  31 +}
16 \ No newline at end of file 32 \ No newline at end of file
src/main/java/com/bsth/controller/schedule/TrafficManageController.java
@@ -57,6 +57,15 @@ public class TrafficManageController { @@ -57,6 +57,15 @@ public class TrafficManageController {
57 } 57 }
58 } 58 }
59 59
  60 + @RequestMapping(value = "/setLDByDate", method = RequestMethod.GET)
  61 + public String setLDByDate(@RequestParam("theDate") String theDate) throws Exception {
  62 + try {
  63 + return trManageService.setLD(theDate);
  64 + } catch (Exception exp) {
  65 + throw new Exception(exp.getCause());
  66 + }
  67 + }
  68 +
60 @RequestMapping(value = "/setLDFile", method = RequestMethod.GET) 69 @RequestMapping(value = "/setLDFile", method = RequestMethod.GET)
61 public String setLDFile() throws Exception { 70 public String setLDFile() throws Exception {
62 try { 71 try {
src/main/java/com/bsth/data/schedule/late_adjust/LateAdjustHandle.java
@@ -135,6 +135,12 @@ public class LateAdjustHandle implements ApplicationContextAware{ @@ -135,6 +135,12 @@ public class LateAdjustHandle implements ApplicationContextAware{
135 if(sch == null) 135 if(sch == null)
136 return; 136 return;
137 137
  138 + //可能是延迟信号,gps时间没有误点
  139 + if(gps.getTimestamp() <= sch.getDfsjT()){
  140 + sch.setLate2(false);
  141 + lateSchMap.remove(sch.getClZbh());
  142 + return;
  143 + }
138 //进的是班次起点(名称一样即可) 144 //进的是班次起点(名称一样即可)
139 gps.setStationName(BasicData.stationCode2NameMap.get(gps.getLineId() + "_" + gps.getUpDown() + "_" + gps.getStopNo())); 145 gps.setStationName(BasicData.stationCode2NameMap.get(gps.getLineId() + "_" + gps.getUpDown() + "_" + gps.getStopNo()));
140 if(gps.getStationName().equals(sch.getQdzName()) 146 if(gps.getStationName().equals(sch.getQdzName())
src/main/java/com/bsth/data/summary/entity/FastAndSlow.java
1 -package com.bsth.data.summary.entity;  
2 -  
3 -import javax.persistence.Column;  
4 -import javax.persistence.Entity;  
5 -import javax.persistence.Id;  
6 -import javax.persistence.Table;  
7 -  
8 -/**  
9 - * 快慢误点  
10 - * Created by panzhao on 2017/10/24.  
11 - */  
12 -@Entity  
13 -@Table(name = "z_calc_fast_slow")  
14 -public class FastAndSlow {  
15 -  
16 - /**  
17 - * 班次ID  
18 - */  
19 - @Id  
20 - @Column(name = "s_id")  
21 - private Long id;  
22 -  
23 - /**  
24 - * 发车站点  
25 - */  
26 - private String stationName;  
27 -  
28 - /**  
29 - * 日期  
30 - */  
31 - @Column(name = "rq")  
32 - private String rq;  
33 -  
34 - /**  
35 - * 上下行  
36 - */  
37 - private int upDown;  
38 -  
39 - /**  
40 - * 计发时间  
41 - * HH:mm  
42 - */  
43 - private String fcsj;  
44 -  
45 - /**  
46 - * 待发时间  
47 - * HH:mm  
48 - */  
49 - private String dfsj;  
50 -  
51 - /**  
52 - * 实际发车时间  
53 - * HH:mm  
54 - */  
55 - private String fcsjActual;  
56 -  
57 - /**  
58 - * 计发快误点  
59 - */  
60 - private int fcsjFast;  
61 -  
62 - /**  
63 - * 计发慢误点  
64 - */  
65 - private int fcsjSlow;  
66 -  
67 - /**  
68 - * 待发快误点  
69 - */  
70 - private int dfsjFast;  
71 -  
72 - /**  
73 - * 待发慢误点  
74 - */  
75 - private int dfsjSlow;  
76 -  
77 - /**  
78 - * 计划终点时间  
79 - */  
80 - private String zdsj;  
81 -  
82 - /**  
83 - * 待发终点时间  
84 - */  
85 - private String zdsjDf;  
86 -  
87 - /**  
88 - * 实际终点时间  
89 - */  
90 - private String zdsjActual;  
91 -  
92 - /**  
93 - * 计发终点快误点  
94 - */  
95 - private int zdsjFast;  
96 -  
97 - /**  
98 - * 计发终点慢误点  
99 - */  
100 - private int zdsjSlow;  
101 -  
102 - /**  
103 - * 待发终点快误点  
104 - */  
105 - private int zdsjDfFast;  
106 -  
107 - /**  
108 - * 待发终点慢误点  
109 - */  
110 - private int zdsjDfSlow;  
111 -  
112 - @Column(name = "line_code")  
113 - private String lineCode;  
114 -  
115 - private Long t;  
116 -  
117 - public String getStationName() {  
118 - return stationName;  
119 - }  
120 -  
121 - public void setStationName(String stationName) {  
122 - this.stationName = stationName;  
123 - }  
124 -  
125 - public String getRq() {  
126 - return rq;  
127 - }  
128 -  
129 - public void setRq(String rq) {  
130 - this.rq = rq;  
131 - }  
132 -  
133 - public int getUpDown() {  
134 - return upDown;  
135 - }  
136 -  
137 - public void setUpDown(int upDown) {  
138 - this.upDown = upDown;  
139 - }  
140 -  
141 - public String getFcsj() {  
142 - return fcsj;  
143 - }  
144 -  
145 - public void setFcsj(String fcsj) {  
146 - this.fcsj = fcsj;  
147 - }  
148 -  
149 - public String getDfsj() {  
150 - return dfsj;  
151 - }  
152 -  
153 - public void setDfsj(String dfsj) {  
154 - this.dfsj = dfsj;  
155 - }  
156 -  
157 - public String getFcsjActual() {  
158 - return fcsjActual;  
159 - }  
160 -  
161 - public void setFcsjActual(String fcsjActual) {  
162 - this.fcsjActual = fcsjActual;  
163 - }  
164 -  
165 - public int getFcsjFast() {  
166 - return fcsjFast;  
167 - }  
168 -  
169 - public void setFcsjFast(int fcsjFast) {  
170 - this.fcsjFast = fcsjFast;  
171 - }  
172 -  
173 - public int getFcsjSlow() {  
174 - return fcsjSlow;  
175 - }  
176 -  
177 - public void setFcsjSlow(int fcsjSlow) {  
178 - this.fcsjSlow = fcsjSlow;  
179 - }  
180 -  
181 - public int getDfsjFast() {  
182 - return dfsjFast;  
183 - }  
184 -  
185 - public void setDfsjFast(int dfsjFast) {  
186 - this.dfsjFast = dfsjFast;  
187 - }  
188 -  
189 - public int getDfsjSlow() {  
190 - return dfsjSlow;  
191 - }  
192 -  
193 - public void setDfsjSlow(int dfsjSlow) {  
194 - this.dfsjSlow = dfsjSlow;  
195 - }  
196 -  
197 - public String getZdsj() {  
198 - return zdsj;  
199 - }  
200 -  
201 - public void setZdsj(String zdsj) {  
202 - this.zdsj = zdsj;  
203 - }  
204 -  
205 - public String getZdsjDf() {  
206 - return zdsjDf;  
207 - }  
208 -  
209 - public void setZdsjDf(String zdsjDf) {  
210 - this.zdsjDf = zdsjDf;  
211 - }  
212 -  
213 - public String getZdsjActual() {  
214 - return zdsjActual;  
215 - }  
216 -  
217 - public void setZdsjActual(String zdsjActual) {  
218 - this.zdsjActual = zdsjActual;  
219 - }  
220 -  
221 - public int getZdsjFast() {  
222 - return zdsjFast;  
223 - }  
224 -  
225 - public void setZdsjFast(int zdsjFast) {  
226 - this.zdsjFast = zdsjFast;  
227 - }  
228 -  
229 - public int getZdsjSlow() {  
230 - return zdsjSlow;  
231 - }  
232 -  
233 - public void setZdsjSlow(int zdsjSlow) {  
234 - this.zdsjSlow = zdsjSlow;  
235 - }  
236 -  
237 - public int getZdsjDfFast() {  
238 - return zdsjDfFast;  
239 - }  
240 -  
241 - public void setZdsjDfFast(int zdsjDfFast) {  
242 - this.zdsjDfFast = zdsjDfFast;  
243 - }  
244 -  
245 - public int getZdsjDfSlow() {  
246 - return zdsjDfSlow;  
247 - }  
248 -  
249 - public void setZdsjDfSlow(int zdsjDfSlow) {  
250 - this.zdsjDfSlow = zdsjDfSlow;  
251 - }  
252 -  
253 - public String getLineCode() {  
254 - return lineCode;  
255 - }  
256 -  
257 - public void setLineCode(String lineCode) {  
258 - this.lineCode = lineCode;  
259 - }  
260 -  
261 - public Long getId() {  
262 - return id;  
263 - }  
264 -  
265 - public void setId(Long id) {  
266 - this.id = id;  
267 - }  
268 -  
269 - public Long getT() {  
270 - return t;  
271 - }  
272 -  
273 - public void setT(Long t) {  
274 - this.t = t;  
275 - }  
276 -} 1 +package com.bsth.data.summary.entity;
  2 +
  3 +import javax.persistence.Column;
  4 +import javax.persistence.Entity;
  5 +import javax.persistence.Id;
  6 +import javax.persistence.Table;
  7 +
  8 +/**
  9 + * 快慢误点
  10 + * Created by panzhao on 2017/10/24.
  11 + */
  12 +@Entity
  13 +@Table(name = "z_calc_fast_slow")
  14 +public class FastAndSlow {
  15 +
  16 + /**
  17 + * 班次ID
  18 + */
  19 + @Id
  20 + @Column(name = "s_id")
  21 + private Long id;
  22 +
  23 + /**
  24 + * 发车站点
  25 + */
  26 + private String stationName;
  27 +
  28 + /**
  29 + * 日期
  30 + */
  31 + @Column(name = "rq")
  32 + private String rq;
  33 +
  34 + /**
  35 + * 上下行
  36 + */
  37 + private int upDown;
  38 +
  39 + /**
  40 + * 计发时间
  41 + * HH:mm
  42 + */
  43 + private String fcsj;
  44 +
  45 + /**
  46 + * 待发时间
  47 + * HH:mm
  48 + */
  49 + private String dfsj;
  50 +
  51 + /**
  52 + * 实际发车时间
  53 + * HH:mm
  54 + */
  55 + private String fcsjActual;
  56 +
  57 + /**
  58 + * 计发快误点
  59 + */
  60 + private int fcsjFast;
  61 +
  62 + /**
  63 + * 计发慢误点
  64 + */
  65 + private int fcsjSlow;
  66 +
  67 + /**
  68 + * 待发快误点
  69 + */
  70 + private int dfsjFast;
  71 +
  72 + /**
  73 + * 待发慢误点
  74 + */
  75 + private int dfsjSlow;
  76 +
  77 + /**
  78 + * 计划终点时间
  79 + */
  80 + private String zdsj;
  81 +
  82 + /**
  83 + * 待发终点时间
  84 + */
  85 + private String zdsjDf;
  86 +
  87 + /**
  88 + * 实际终点时间
  89 + */
  90 + private String zdsjActual;
  91 +
  92 + /**
  93 + * 计发终点快误点
  94 + */
  95 + private int zdsjFast;
  96 +
  97 + /**
  98 + * 计发终点慢误点
  99 + */
  100 + private int zdsjSlow;
  101 +
  102 + /**
  103 + * 待发终点快误点
  104 + */
  105 + private int zdsjDfFast;
  106 +
  107 + /**
  108 + * 待发终点慢误点
  109 + */
  110 + private int zdsjDfSlow;
  111 +
  112 + @Column(name = "line_code")
  113 + private String lineCode;
  114 +
  115 + private Long t;
  116 +
  117 + public String getStationName() {
  118 + return stationName;
  119 + }
  120 +
  121 + public void setStationName(String stationName) {
  122 + this.stationName = stationName;
  123 + }
  124 +
  125 + public String getRq() {
  126 + return rq;
  127 + }
  128 +
  129 + public void setRq(String rq) {
  130 + this.rq = rq;
  131 + }
  132 +
  133 + public int getUpDown() {
  134 + return upDown;
  135 + }
  136 +
  137 + public void setUpDown(int upDown) {
  138 + this.upDown = upDown;
  139 + }
  140 +
  141 + public String getFcsj() {
  142 + return fcsj;
  143 + }
  144 +
  145 + public void setFcsj(String fcsj) {
  146 + this.fcsj = fcsj;
  147 + }
  148 +
  149 + public String getDfsj() {
  150 + return dfsj;
  151 + }
  152 +
  153 + public void setDfsj(String dfsj) {
  154 + this.dfsj = dfsj;
  155 + }
  156 +
  157 + public String getFcsjActual() {
  158 + return fcsjActual;
  159 + }
  160 +
  161 + public void setFcsjActual(String fcsjActual) {
  162 + this.fcsjActual = fcsjActual;
  163 + }
  164 +
  165 + public int getFcsjFast() {
  166 + return fcsjFast;
  167 + }
  168 +
  169 + public void setFcsjFast(int fcsjFast) {
  170 + this.fcsjFast = fcsjFast;
  171 + }
  172 +
  173 + public int getFcsjSlow() {
  174 + return fcsjSlow;
  175 + }
  176 +
  177 + public void setFcsjSlow(int fcsjSlow) {
  178 + this.fcsjSlow = fcsjSlow;
  179 + }
  180 +
  181 + public int getDfsjFast() {
  182 + return dfsjFast;
  183 + }
  184 +
  185 + public void setDfsjFast(int dfsjFast) {
  186 + this.dfsjFast = dfsjFast;
  187 + }
  188 +
  189 + public int getDfsjSlow() {
  190 + return dfsjSlow;
  191 + }
  192 +
  193 + public void setDfsjSlow(int dfsjSlow) {
  194 + this.dfsjSlow = dfsjSlow;
  195 + }
  196 +
  197 + public String getZdsj() {
  198 + return zdsj;
  199 + }
  200 +
  201 + public void setZdsj(String zdsj) {
  202 + this.zdsj = zdsj;
  203 + }
  204 +
  205 + public String getZdsjDf() {
  206 + return zdsjDf;
  207 + }
  208 +
  209 + public void setZdsjDf(String zdsjDf) {
  210 + this.zdsjDf = zdsjDf;
  211 + }
  212 +
  213 + public String getZdsjActual() {
  214 + return zdsjActual;
  215 + }
  216 +
  217 + public void setZdsjActual(String zdsjActual) {
  218 + this.zdsjActual = zdsjActual;
  219 + }
  220 +
  221 + public int getZdsjFast() {
  222 + return zdsjFast;
  223 + }
  224 +
  225 + public void setZdsjFast(int zdsjFast) {
  226 + this.zdsjFast = zdsjFast;
  227 + }
  228 +
  229 + public int getZdsjSlow() {
  230 + return zdsjSlow;
  231 + }
  232 +
  233 + public void setZdsjSlow(int zdsjSlow) {
  234 + this.zdsjSlow = zdsjSlow;
  235 + }
  236 +
  237 + public int getZdsjDfFast() {
  238 + return zdsjDfFast;
  239 + }
  240 +
  241 + public void setZdsjDfFast(int zdsjDfFast) {
  242 + this.zdsjDfFast = zdsjDfFast;
  243 + }
  244 +
  245 + public int getZdsjDfSlow() {
  246 + return zdsjDfSlow;
  247 + }
  248 +
  249 + public void setZdsjDfSlow(int zdsjDfSlow) {
  250 + this.zdsjDfSlow = zdsjDfSlow;
  251 + }
  252 +
  253 + public String getLineCode() {
  254 + return lineCode;
  255 + }
  256 +
  257 + public void setLineCode(String lineCode) {
  258 + this.lineCode = lineCode;
  259 + }
  260 +
  261 + public Long getId() {
  262 + return id;
  263 + }
  264 +
  265 + public void setId(Long id) {
  266 + this.id = id;
  267 + }
  268 +
  269 + public Long getT() {
  270 + return t;
  271 + }
  272 +
  273 + public void setT(Long t) {
  274 + this.t = t;
  275 + }
  276 +
  277 + public boolean isSlow() {
  278 + return this.fcsjSlow>0 || this.dfsjSlow>0 || this.zdsjSlow>0 || this.zdsjDfSlow>0;
  279 + }
  280 +
  281 + public boolean isFast() {
  282 + return this.fcsjFast>0 || this.dfsjFast>0 || this.zdsjFast>0 || this.zdsjDfFast>0;
  283 + }
  284 +}
277 \ No newline at end of file 285 \ No newline at end of file
src/main/java/com/bsth/data/summary/repository/FastAndSlowRepository.java
1 -package com.bsth.data.summary.repository;  
2 -  
3 -import com.bsth.data.summary.entity.FastAndSlow;  
4 -import com.bsth.repository.BaseRepository;  
5 -import org.springframework.stereotype.Repository;  
6 -  
7 -/**  
8 - * Created by panzhao on 2017/10/24.  
9 - */  
10 -@Repository  
11 -public interface FastAndSlowRepository extends BaseRepository<FastAndSlow, Long> {  
12 -} 1 +package com.bsth.data.summary.repository;
  2 +
  3 +import com.bsth.data.summary.entity.FastAndSlow;
  4 +import com.bsth.repository.BaseRepository;
  5 +import org.springframework.stereotype.Repository;
  6 +
  7 +/**
  8 + * Created by panzhao on 2017/10/24.
  9 + */
  10 +@Repository
  11 +public interface FastAndSlowRepository extends BaseRepository<FastAndSlow, Long> {
  12 +}
src/main/java/com/bsth/data/summary/service/FastAndSlowService.java
1 -package com.bsth.data.summary.service;  
2 -  
3 -import com.bsth.data.summary.entity.FastAndSlow;  
4 -import com.bsth.service.BaseService;  
5 -  
6 -/**  
7 - * Created by panzhao on 2017/10/24.  
8 - */  
9 -public interface FastAndSlowService extends BaseService<FastAndSlow, Long>{  
10 -} 1 +package com.bsth.data.summary.service;
  2 +
  3 +import com.bsth.data.summary.entity.FastAndSlow;
  4 +import com.bsth.service.BaseService;
  5 +
  6 +import javax.servlet.http.HttpServletRequest;
  7 +import javax.servlet.http.HttpServletResponse;
  8 +
  9 +/**
  10 + * Created by panzhao on 2017/10/24.
  11 + */
  12 +public interface FastAndSlowService extends BaseService<FastAndSlow, Long>{
  13 + void excel(String lineCode, String st, String et, int type, HttpServletRequest request, HttpServletResponse response);
  14 +}
11 \ No newline at end of file 15 \ No newline at end of file
src/main/java/com/bsth/data/summary/service/impl/FastAndSlowServiceImpl.java
1 -package com.bsth.data.summary.service.impl;  
2 -  
3 -import com.bsth.data.summary.entity.FastAndSlow;  
4 -import com.bsth.data.summary.service.FastAndSlowService;  
5 -import com.bsth.service.impl.BaseServiceImpl;  
6 -import org.springframework.stereotype.Service;  
7 -  
8 -/**  
9 - * Created by panzhao on 2017/10/24.  
10 - */  
11 -@Service  
12 -public class FastAndSlowServiceImpl extends BaseServiceImpl<FastAndSlow, Long> implements FastAndSlowService {  
13 -} 1 +package com.bsth.data.summary.service.impl;
  2 +
  3 +import com.bsth.data.BasicData;
  4 +import com.bsth.data.summary.entity.FastAndSlow;
  5 +import com.bsth.data.summary.service.FastAndSlowService;
  6 +import com.bsth.data.utils.ConvertUtil;
  7 +import com.bsth.service.impl.BaseServiceImpl;
  8 +import com.google.common.collect.ArrayListMultimap;
  9 +import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  10 +import org.apache.poi.poifs.filesystem.POIFSFileSystem;
  11 +import org.apache.poi.ss.usermodel.Row;
  12 +import org.apache.poi.ss.usermodel.Sheet;
  13 +import org.apache.poi.ss.util.CellRangeAddress;
  14 +import org.joda.time.format.DateTimeFormat;
  15 +import org.joda.time.format.DateTimeFormatter;
  16 +import org.slf4j.Logger;
  17 +import org.slf4j.LoggerFactory;
  18 +import org.springframework.stereotype.Service;
  19 +
  20 +import javax.servlet.http.HttpServletRequest;
  21 +import javax.servlet.http.HttpServletResponse;
  22 +import java.io.FileInputStream;
  23 +import java.io.OutputStream;
  24 +import java.net.URLEncoder;
  25 +import java.text.ParseException;
  26 +import java.text.SimpleDateFormat;
  27 +import java.util.*;
  28 +
  29 +/**
  30 + * Created by panzhao on 2017/10/24.
  31 + */
  32 +@Service
  33 +public class FastAndSlowServiceImpl extends BaseServiceImpl<FastAndSlow, Long> implements FastAndSlowService {
  34 +
  35 + Logger logger = LoggerFactory.getLogger(this.getClass());
  36 +
  37 + private static DateTimeFormatter fmtyyyyMMdd = DateTimeFormat.forPattern("yyyy-MM-dd");
  38 +
  39 + @Override
  40 + public Iterable<FastAndSlow> list(Map<String, Object> map) {
  41 + try {
  42 + //最多5天
  43 + map.put("rq_le", maxEndTime(map.get("rq_ge").toString()
  44 + , map.get("rq_le").toString(), 5));
  45 +
  46 + List<FastAndSlow> list = (List) super.list(map);
  47 + String type = String.valueOf(map.get("type"));
  48 +
  49 + return filterByType(list, type);
  50 + } catch (Exception e) {
  51 + logger.error("", e);
  52 + }
  53 + return null;
  54 + }
  55 +
  56 + @Override
  57 + public void excel(String lineCode, String st, String et, int type, HttpServletRequest request, HttpServletResponse response) {
  58 + try {
  59 + Map<String, Object> params = new HashMap();
  60 + //最多31天
  61 + et = maxEndTime(st, et, 31);
  62 + params.put("rq_ge", st);
  63 + params.put("rq_le", et);
  64 + params.put("lineCode_eq", lineCode);
  65 + List<FastAndSlow> list = filterByType((List) super.list(params), type + "");
  66 +
  67 + if(list.size() == 0){
  68 + response.setHeader("Content-type", "text/html;charset=UTF-8");
  69 + response.getWriter().print("<span style='color:red;font-size:24px;'>根据查询条件没有搜索到数据,别导了!</span>");
  70 + return ;
  71 + }
  72 + //排序
  73 + Collections.sort(list, new Comparator<FastAndSlow>() {
  74 + @Override
  75 + public int compare(FastAndSlow fas1, FastAndSlow fas2) {
  76 + return (int) (fas1.getT() - fas2.getT());
  77 + }
  78 + });
  79 + //按日期分组
  80 + ArrayListMultimap<String, FastAndSlow> multimap =
  81 + new ConvertUtil<FastAndSlow>().groupMultiList(list, "_", FastAndSlow.class.getDeclaredField("rq"));
  82 + //输出excel
  83 + String basePath = Thread.currentThread().getContextClassLoader().getResource("").getPath();
  84 + String filePath = basePath + "/static/pages/summary/excel/快慢误点报表.xls";
  85 + POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(filePath));
  86 + HSSFWorkbook wb = new HSSFWorkbook(fs);
  87 +
  88 + //写入数据
  89 + List<String> ks = new ArrayList<>(multimap.keySet());
  90 + Collections.sort(ks);
  91 + for(int i = 0; i < ks.size(); i++){
  92 + Sheet sheet = wb.getSheetAt(i);
  93 + writeData(sheet, multimap.get(ks.get(i)));
  94 + //sheet name
  95 + wb.setSheetName(i, ks.get(i));
  96 + }
  97 + //删除多余的sheet
  98 + for(int i = ks.size(); i <31; i++){
  99 + wb.removeSheetAt(ks.size());
  100 + }
  101 +
  102 + //response 输出
  103 + String filename = BasicData.lineCode2NameMap.get(lineCode) + st + "至" + et + "快慢误点明细.xls";
  104 + response.setContentType("application/x-msdownload");
  105 + response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));
  106 +
  107 + OutputStream os = response.getOutputStream();
  108 + wb.write(os);
  109 + os.flush();
  110 + os.close();
  111 + } catch (Exception e) {
  112 + logger.error("", e);
  113 + }
  114 + }
  115 +
  116 + private void writeData(Sheet sheet, List<FastAndSlow> list) {
  117 + List<FastAndSlow> ups = new ArrayList<>()
  118 + ,downs = new ArrayList<>();
  119 + //前4行是表头
  120 + Row row;
  121 + row = sheet.getRow(0);
  122 + row.getCell(4).setCellValue(list.get(0).getRq());
  123 + row.getCell(13).setCellValue(BasicData.lineCode2NameMap.get(list.get(0).getLineCode()));
  124 + FastAndSlow fas;
  125 + for(int i = 0; i < list.size(); i++){
  126 + fas = list.get(i);
  127 + row = sheet.createRow(i + 4);
  128 + row.createCell(0).setCellValue(i + 1);
  129 + row.createCell(1).setCellValue(fas.getStationName());
  130 + row.createCell(2).setCellValue(fas.getUpDown());
  131 + row.createCell(3).setCellValue(fas.getFcsj());
  132 + row.createCell(4).setCellValue(fas.getDfsj());
  133 + row.createCell(5).setCellValue(fas.getFcsjActual());
  134 + row.createCell(6).setCellValue(fas.getFcsjFast());
  135 + row.createCell(7).setCellValue(fas.getFcsjSlow());
  136 + row.createCell(8).setCellValue(fas.getDfsjFast());
  137 + row.createCell(9).setCellValue(fas.getDfsjSlow());
  138 + row.createCell(10).setCellValue(fas.getZdsj());
  139 + row.createCell(11).setCellValue(fas.getZdsjDf());
  140 + row.createCell(12).setCellValue(fas.getZdsjActual());
  141 + row.createCell(13).setCellValue(fas.getZdsjFast());
  142 + row.createCell(14).setCellValue(fas.getZdsjSlow());
  143 + row.createCell(15).setCellValue(fas.getZdsjDfFast());
  144 + row.createCell(16).setCellValue(fas.getZdsjDfSlow());
  145 +
  146 + if(fas.getUpDown()==0)
  147 + ups.add(fas);
  148 + else
  149 + downs.add(fas);
  150 + }
  151 + //合计
  152 + int size = list.size();
  153 + row = sheet.createRow(size + 4);
  154 + row.createCell(1).setCellValue("发车:上行(计划快误点:"+jhfcFast(ups)+" 累计时间:"+jhfcFastTime(ups)+" 待发快误点:"+dffcFast(ups)+" 累计时间:"+dffcFastTime(ups)+") ");
  155 + row.createCell(9).setCellValue("下行(计划快误点:"+jhfcFast(downs)+" 累计时间:"+jhfcFastTime(downs)+" 待发快误点:"+dffcFast(downs)+" 累计时间:"+dffcFastTime(downs)+")");
  156 + row = sheet.createRow(size + 5);
  157 + row.createCell(1).setCellValue("发车:上行(计划慢误点:"+jhfcSlow(ups)+" 累计时间:"+jhfcSlowTime(ups)+" 待发慢误点:"+dffcSlow(ups)+" 累计时间:"+dffcSlowTime(ups)+") ");
  158 + row.createCell(9).setCellValue("下行(计划慢误点:"+jhfcSlow(downs)+" 累计时间:"+jhfcSlowTime(downs)+" 待发慢误点:"+dffcSlow(downs)+" 累计时间:"+dffcSlowTime(downs)+")");
  159 + row = sheet.createRow(size + 6);
  160 + row.createCell(1).setCellValue("到达:上行(计划快误点:"+jhzdFast(ups)+" 累计时间:"+jhzdFastTime(ups)+" 待发快误点:"+dfzdFast(ups)+" 累计时间:"+dfzdFastTime(ups)+") ");
  161 + row.createCell(9).setCellValue("下行(计划快误点:"+jhzdFast(downs)+" 累计时间:"+jhzdFastTime(downs)+" 待发快误点:"+dfzdFast(downs)+" 累计时间:"+dfzdFastTime(downs)+")");
  162 + row = sheet.createRow(size + 7);
  163 + row.createCell(1).setCellValue("到达:上行(计划慢误点:"+jhzdSlow(ups)+" 累计时间:"+jhzdSlowTime(ups)+" 待发慢误点:"+dfzdSlow(ups)+" 累计时间:"+dfzdSlowTime(ups)+") ");
  164 + row.createCell(9).setCellValue("下行(计划慢误点:"+jhzdSlow(downs)+" 累计时间:"+jhzdSlowTime(downs)+" 待发慢误点:"+dfzdSlow(downs)+" 累计时间:"+dfzdSlowTime(downs)+")");
  165 + //合并单元格
  166 + sheet.addMergedRegion(new CellRangeAddress(size + 4, size + 4, 1, 8));
  167 + sheet.addMergedRegion(new CellRangeAddress(size + 4, size + 4, 9, 16));
  168 + sheet.addMergedRegion(new CellRangeAddress(size + 5, size + 5, 1, 8));
  169 + sheet.addMergedRegion(new CellRangeAddress(size + 5, size + 5, 9, 16));
  170 + sheet.addMergedRegion(new CellRangeAddress(size + 6, size + 6, 1, 8));
  171 + sheet.addMergedRegion(new CellRangeAddress(size + 6, size + 6, 9, 16));
  172 + sheet.addMergedRegion(new CellRangeAddress(size + 7, size + 7, 1, 8));
  173 + sheet.addMergedRegion(new CellRangeAddress(size + 7, size + 7, 9, 16));
  174 +
  175 + sheet.addMergedRegion(new CellRangeAddress(size + 4, size + 7, 0, 0));
  176 + }
  177 +
  178 + private List<FastAndSlow> filterByType(List<FastAndSlow> all, String type) {
  179 + List rsList = new ArrayList();
  180 + if ("-1".equals(type)) {//慢误
  181 + for (FastAndSlow fas : all) {
  182 + if (fas.isSlow())
  183 + rsList.add(fas);
  184 + }
  185 + return rsList;
  186 + } else if ("1".equals(type)) {//快误
  187 + for (FastAndSlow fas : all) {
  188 + if (fas.isFast())
  189 + rsList.add(fas);
  190 + }
  191 + return rsList;
  192 + }
  193 + return all;
  194 + }
  195 +
  196 +
  197 + private String maxEndTime(String sStr, String eStr, int space) throws ParseException {
  198 + try {
  199 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  200 + long st = sdf.parse(sStr).getTime();
  201 + long et = sdf.parse(eStr).getTime();
  202 + long dayTime = 24 * 60 * 60 * 1000;
  203 + long spaceTime = dayTime * space;
  204 +
  205 + if (et - st > spaceTime) {
  206 + eStr = sdf.format(new Date(st + spaceTime));
  207 + }
  208 + } catch (Exception e) {
  209 + throw e;
  210 + }
  211 + return eStr;
  212 + }
  213 +
  214 + /**
  215 + * 计划发出快误点
  216 + * @param list
  217 + * @return
  218 + */
  219 + private int jhfcFast(List<FastAndSlow> list){
  220 + int count=0;
  221 + for(FastAndSlow fas : list){
  222 + if(fas.getFcsjFast() > 0)
  223 + count++;
  224 + }
  225 + return count;
  226 + }
  227 +
  228 + /**
  229 + * 计划终点快误点
  230 + * @param list
  231 + * @return
  232 + */
  233 + private int jhzdFast(List<FastAndSlow> list){
  234 + int count=0;
  235 + for(FastAndSlow fas : list){
  236 + if(fas.getZdsjFast() > 0)
  237 + count++;
  238 + }
  239 + return count;
  240 + }
  241 +
  242 + /**
  243 + * 待发发出快误点
  244 + * @param list
  245 + * @return
  246 + */
  247 + private int dffcFast(List<FastAndSlow> list){
  248 + int count=0;
  249 + for(FastAndSlow fas : list){
  250 + if(fas.getDfsjFast() > 0)
  251 + count++;
  252 + }
  253 + return count;
  254 + }
  255 +
  256 + /**
  257 + * 待发终点快误点
  258 + * @param list
  259 + * @return
  260 + */
  261 + private int dfzdFast(List<FastAndSlow> list){
  262 + int count=0;
  263 + for(FastAndSlow fas : list){
  264 + if(fas.getZdsjDfFast() > 0)
  265 + count++;
  266 + }
  267 + return count;
  268 + }
  269 +
  270 + //----------
  271 +
  272 + /**
  273 + * 计划发出慢误点
  274 + * @param list
  275 + * @return
  276 + */
  277 + private int jhfcSlow(List<FastAndSlow> list){
  278 + int count=0;
  279 + for(FastAndSlow fas : list){
  280 + if(fas.getFcsjSlow() > 0)
  281 + count++;
  282 + }
  283 + return count;
  284 + }
  285 +
  286 + /**
  287 + * 计划终点慢误点
  288 + * @param list
  289 + * @return
  290 + */
  291 + private int jhzdSlow(List<FastAndSlow> list){
  292 + int count=0;
  293 + for(FastAndSlow fas : list){
  294 + if(fas.getZdsjSlow() > 0)
  295 + count++;
  296 + }
  297 + return count;
  298 + }
  299 +
  300 + /**
  301 + * 待发发出慢误点
  302 + * @param list
  303 + * @return
  304 + */
  305 + private int dffcSlow(List<FastAndSlow> list){
  306 + int count=0;
  307 + for(FastAndSlow fas : list){
  308 + if(fas.getDfsjSlow() > 0)
  309 + count++;
  310 + }
  311 + return count;
  312 + }
  313 +
  314 + /**
  315 + * 待发终点慢误点
  316 + * @param list
  317 + * @return
  318 + */
  319 + private int dfzdSlow(List<FastAndSlow> list){
  320 + int count=0;
  321 + for(FastAndSlow fas : list){
  322 + if(fas.getZdsjDfSlow() > 0)
  323 + count++;
  324 + }
  325 + return count;
  326 + }
  327 + /**
  328 + * ################
  329 + */
  330 + /**
  331 + * 计划发出快误点
  332 + * @param list
  333 + * @return
  334 + */
  335 + private int jhfcFastTime(List<FastAndSlow> list){
  336 + int sum=0;
  337 + for(FastAndSlow fas : list){
  338 + sum+=fas.getFcsjFast();
  339 + }
  340 + return sum;
  341 + }
  342 +
  343 + /**
  344 + * 计划终点快误点
  345 + * @param list
  346 + * @return
  347 + */
  348 + private int jhzdFastTime(List<FastAndSlow> list){
  349 + int sum=0;
  350 + for(FastAndSlow fas : list){
  351 + sum+=fas.getZdsjFast();
  352 + }
  353 + return sum;
  354 + }
  355 +
  356 + /**
  357 + * 待发发出快误点
  358 + * @param list
  359 + * @return
  360 + */
  361 + private int dffcFastTime(List<FastAndSlow> list){
  362 + int sum=0;
  363 + for(FastAndSlow fas : list){
  364 + sum+=fas.getDfsjFast();
  365 + }
  366 + return sum;
  367 + }
  368 +
  369 + /**
  370 + * 待发终点快误点
  371 + * @param list
  372 + * @return
  373 + */
  374 + private int dfzdFastTime(List<FastAndSlow> list){
  375 + int sum=0;
  376 + for(FastAndSlow fas : list){
  377 + sum+=fas.getZdsjDfFast();
  378 + }
  379 + return sum;
  380 + }
  381 +
  382 + //----------
  383 +
  384 + /**
  385 + * 计划发出慢误点
  386 + * @param list
  387 + * @return
  388 + */
  389 + private int jhfcSlowTime(List<FastAndSlow> list){
  390 + int sum=0;
  391 + for(FastAndSlow fas : list){
  392 + sum+=fas.getFcsjSlow();
  393 + }
  394 + return sum;
  395 + }
  396 +
  397 + /**
  398 + * 计划终点慢误点
  399 + * @param list
  400 + * @return
  401 + */
  402 + private int jhzdSlowTime(List<FastAndSlow> list){
  403 + int sum=0;
  404 + for(FastAndSlow fas : list){
  405 + sum+=fas.getZdsjSlow();
  406 + }
  407 + return sum;
  408 + }
  409 +
  410 + /**
  411 + * 待发发出慢误点
  412 + * @param list
  413 + * @return
  414 + */
  415 + private int dffcSlowTime(List<FastAndSlow> list){
  416 + int sum=0;
  417 + for(FastAndSlow fas : list){
  418 + sum+=fas.getDfsjSlow();
  419 + }
  420 + return sum;
  421 + }
  422 +
  423 + /**
  424 + * 待发终点慢误点
  425 + * @param list
  426 + * @return
  427 + */
  428 + private int dfzdSlowTime(List<FastAndSlow> list){
  429 + int sum=0;
  430 + for(FastAndSlow fas : list){
  431 + sum+=fas.getZdsjDfSlow();
  432 + }
  433 + return sum;
  434 + }
  435 +}
14 \ No newline at end of file 436 \ No newline at end of file
src/main/java/com/bsth/data/utils/ConvertUtil.java 0 → 100644
  1 +package com.bsth.data.utils;
  2 +
  3 +import com.google.common.collect.ArrayListMultimap;
  4 +import org.joda.time.format.DateTimeFormat;
  5 +import org.joda.time.format.DateTimeFormatter;
  6 +import org.slf4j.Logger;
  7 +import org.slf4j.LoggerFactory;
  8 +
  9 +import java.lang.reflect.Field;
  10 +import java.util.*;
  11 +
  12 +/**
  13 + * 数据转换
  14 + * Created by panzhao on 2017/3/13.
  15 + */
  16 +public class ConvertUtil<T> {
  17 +
  18 + Logger logger = LoggerFactory.getLogger(this.getClass());
  19 + private static DateTimeFormatter fmtyyyyMMdd = DateTimeFormat.forPattern("yyyyMMdd");
  20 +
  21 + /**
  22 + * 根据指定字段 将 list 分组
  23 + *
  24 + * @param list
  25 + * @param separator 字段使用分隔符连接 组成key
  26 + * @param fields
  27 + * @return
  28 + */
  29 + public ArrayListMultimap<String, T> groupMultiList(List<T> list, String separator, Field... fields) {
  30 + ArrayListMultimap<String, T> multimap = ArrayListMultimap.create();
  31 +
  32 + String key;
  33 + //Object field;
  34 + try {
  35 + for (T t : list) {
  36 +
  37 + key = "";
  38 + for (Field f : fields) {
  39 + f.setAccessible(true);
  40 + if(null == f.get(t))
  41 + continue;
  42 + //日期类型格式化为 YYYY-MM-DD
  43 + if (f.getType().equals(Date.class))
  44 + key += (separator + fmtyyyyMMdd.print(((Date) f.get(t)).getTime()));
  45 + else
  46 + key += (separator + f.get(t).toString());
  47 + }
  48 + if(key.length() > 1)
  49 + key = key.substring(1);
  50 +
  51 + multimap.put(key, t);
  52 + }
  53 + } catch (Exception e) {
  54 + logger.error("", e);
  55 + }
  56 +
  57 + return multimap;
  58 + }
  59 +
  60 + /**
  61 + * 根据指定字段 将 list 分组
  62 + *
  63 + * @param list
  64 + * @param separator 字段使用分隔符连接 组成key
  65 + * @param fields
  66 + * @return
  67 + */
  68 + public Map<String, T> groupList(List<T> list, String separator, Field... fields) {
  69 + Map<String, T> map = new HashMap<>();
  70 +
  71 + String key;
  72 + //Object field;
  73 + try {
  74 + for (T t : list) {
  75 +
  76 + key = "";
  77 + for (Field f : fields) {
  78 + f.setAccessible(true);
  79 + //日期类型格式化为 YYYY-MM-DD
  80 + if (f.getType().equals(Date.class))
  81 + key += (separator + fmtyyyyMMdd.print(((Date) f.get(t)).getTime()));
  82 + else
  83 + key += (separator + f.get(t).toString());
  84 + }
  85 + key = key.substring(1);
  86 +
  87 + map.put(key, t);
  88 + }
  89 + } catch (Exception e) {
  90 + logger.error("", e);
  91 + }
  92 +
  93 + return map;
  94 + }
  95 +
  96 + /**
  97 + * 计算并集
  98 + *
  99 + * @param all
  100 + * @param sub
  101 + * @return
  102 + */
  103 + public List<String> calcUnion(Collection<String> all, Collection<String> sub) {
  104 + List<String> rs = new ArrayList<>();
  105 +
  106 + for (String str : all) {
  107 + if (sub.contains(str))
  108 + rs.add(str);
  109 + }
  110 + return rs;
  111 + }
  112 +
  113 + /**
  114 + * 计算补集
  115 + *
  116 + * @param all
  117 + * @param sub
  118 + * @return
  119 + */
  120 + public List<String> calcComplement(Collection<String> all, Collection<String> sub) {
  121 + List<String> rs = new ArrayList<>();
  122 +
  123 + for (String str : all) {
  124 + if (!sub.contains(str))
  125 + rs.add(str);
  126 + }
  127 + return rs;
  128 + }
  129 +}
src/main/java/com/bsth/entity/mcy_forms/Singledata.java
@@ -7,6 +7,7 @@ public class Singledata { @@ -7,6 +7,7 @@ public class Singledata {
7 private String gS;//所属公司 7 private String gS;//所属公司
8 8
9 private String xL;//线路 9 private String xL;//线路
  10 + private String xlmc;//线路名称
10 11
11 private String clzbh;//车号 12 private String clzbh;//车号
12 13
@@ -141,6 +142,14 @@ public class Singledata { @@ -141,6 +142,14 @@ public class Singledata {
141 public void setJhjl(String jhjl) { 142 public void setJhjl(String jhjl) {
142 this.jhjl = jhjl; 143 this.jhjl = jhjl;
143 } 144 }
  145 +
  146 + public String getXlmc() {
  147 + return xlmc;
  148 + }
  149 +
  150 + public void setXlmc(String xlmc) {
  151 + this.xlmc = xlmc;
  152 + }
144 153
145 154
146 155
src/main/java/com/bsth/repository/realcontrol/ScheduleRealInfoRepository.java
@@ -25,16 +25,16 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI @@ -25,16 +25,16 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI
25 @Query(value="select s from ScheduleRealInfo s where s.id = ?1 ") 25 @Query(value="select s from ScheduleRealInfo s where s.id = ?1 ")
26 ScheduleRealInfo scheduleById(Long id); 26 ScheduleRealInfo scheduleById(Long id);
27 27
28 - @Query(value="select s from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 and bc_type not in ('in','out') order by (lpName+1),clZbh,realExecDate,dfsj") 28 + @Query(value="select s from ScheduleRealInfo s where s.xlBm = ?1 and s.scheduleDateStr = ?2 and bc_type not in ('in','out') order by (lpName+1),clZbh,realExecDate,dfsj")
29 List<ScheduleRealInfo> scheduleDailyQp(String line,String date); 29 List<ScheduleRealInfo> scheduleDailyQp(String line,String date);
30 30
31 - @Query(value="select s from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 GROUP BY s.id,s.jGh,s.clZbh,s.lpName order by (lpName+1)") 31 + @Query(value="select s from ScheduleRealInfo s where s.xlBm = ?1 and s.scheduleDateStr = ?2 GROUP BY s.id,s.jGh,s.clZbh,s.lpName order by (lpName+1)")
32 List<ScheduleRealInfo> queryUserInfo(String line,String date); 32 List<ScheduleRealInfo> queryUserInfo(String line,String date);
33 33
34 - @Query(value="select min(s.id), s.jGh,s.clZbh,s.lpName,s.jName from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 GROUP BY s.jGh,s.clZbh,s.lpName ,s.jName order by (lpName+1)") 34 + @Query(value="select min(s.id), s.jGh,s.clZbh,s.lpName,s.jName from ScheduleRealInfo s where s.xlBm = ?1 and s.scheduleDateStr = ?2 GROUP BY s.jGh,s.clZbh,s.lpName ,s.jName order by (lpName+1)")
35 List<ScheduleRealInfo> queryUserInfo2(String line,String date); 35 List<ScheduleRealInfo> queryUserInfo2(String line,String date);
36 36
37 - @Query(value="select min(s.id), s.clZbh from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 GROUP BY s.clZbh ") 37 + @Query(value="select min(s.id), s.clZbh from ScheduleRealInfo s where s.xlBm = ?1 and s.scheduleDateStr = ?2 GROUP BY s.clZbh ")
38 List<ScheduleRealInfo> queryUserInfo3(String line,String date); 38 List<ScheduleRealInfo> queryUserInfo3(String line,String date);
39 39
40 @Query(value="select s from ScheduleRealInfo s where s.jName = ?1 and s.clZbh = ?2 and s.lpName = ?3 order by bcs") 40 @Query(value="select s from ScheduleRealInfo s where s.jName = ?1 and s.clZbh = ?2 and s.lpName = ?3 order by bcs")
@@ -43,7 +43,7 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI @@ -43,7 +43,7 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI
43 //把sum(addMileage) 替换为0 数据表去掉了 add_mileage 字段 43 //把sum(addMileage) 替换为0 数据表去掉了 add_mileage 字段
44 @Query(value="select new map(clZbh as clZbh,jGh as jGh,jName as jName,sum(jhlc) as zgl," 44 @Query(value="select new map(clZbh as clZbh,jGh as jGh,jName as jName,sum(jhlc) as zgl,"
45 + "0 as ksgl,count(jName) as bcs) from ScheduleRealInfo s where" 45 + "0 as ksgl,count(jName) as bcs) from ScheduleRealInfo s where"
46 - + " s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 group by clZbh,jGh,jName") 46 + + " s.xlBm = ?1 and s.scheduleDateStr = ?2 group by clZbh,jGh,jName")
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 t.inside_code,d.sender,d.txt_content,d.timestamp,0 as xlbm from (" 49 @Query(value="select t.inside_code,d.sender,d.txt_content,d.timestamp,0 as xlbm from ("
@@ -57,7 +57,7 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI @@ -57,7 +57,7 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI
57 @Query(value="SELECT r.xl_name,r.lp_name,r.cl_zbh,count(*) as cs " 57 @Query(value="SELECT r.xl_name,r.lp_name,r.cl_zbh,count(*) as cs "
58 + " FROM bsth_c_s_sp_info_real r RIGHT JOIN bsth_v_directive_60 d " 58 + " FROM bsth_c_s_sp_info_real r RIGHT JOIN bsth_v_directive_60 d "
59 + " ON r.id = d.sch WHERE d.is_dispatch = 1 AND r.xl_bm like %?1% AND " 59 + " ON r.id = d.sch WHERE d.is_dispatch = 1 AND r.xl_bm like %?1% AND "
60 - + " DATE_FORMAT(r.schedule_date,'%Y-%m-%d') = ?2 and r.cl_zbh like %?3% group by " 60 + + " r.schedule_date_str = ?2 and r.cl_zbh like %?3% group by "
61 + " lp_name,xl_name,cl_zbh",nativeQuery=true) 61 + " lp_name,xl_name,cl_zbh",nativeQuery=true)
62 List<Object[]> historyMessageCount(String line,String date,String code); 62 List<Object[]> historyMessageCount(String line,String date,String code);
63 63
@@ -72,7 +72,7 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI @@ -72,7 +72,7 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI
72 List<ScheduleRealInfo> findByDate(String dateStr); 72 List<ScheduleRealInfo> findByDate(String dateStr);
73 73
74 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 74 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
75 - @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 and cl_zbh=?3 order by bcs") 75 + @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm = ?1 and s.scheduleDateStr = ?2 and cl_zbh=?3 order by bcs")
76 List<ScheduleRealInfo> findByDate2(String line,String date,String clzbh); 76 List<ScheduleRealInfo> findByDate2(String line,String date,String clzbh);
77 77
78 @Query(value="select count(jName) from ScheduleRealInfo s where s.jName = ?1 and s.clZbh = ?2 and s.lpName = ?3 and s.status = -1") 78 @Query(value="select count(jName) from ScheduleRealInfo s where s.jName = ?1 and s.clZbh = ?2 and s.lpName = ?3 and s.status = -1")
@@ -84,17 +84,17 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI @@ -84,17 +84,17 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI
84 @Query(value="SELECT request_code,FROM_UNIXTIME(TIMESTAMP / 1000,'%Y-%m-%d %T') as TIMESTAMP ,device_id FROM bsth_v_report_80 WHERE FROM_UNIXTIME( TIMESTAMP / 1000,'%Y-%m-%d') = ?2 AND line_id = ?1 and device_id like %?3%",nativeQuery=true) 84 @Query(value="SELECT request_code,FROM_UNIXTIME(TIMESTAMP / 1000,'%Y-%m-%d %T') as TIMESTAMP ,device_id FROM bsth_v_report_80 WHERE FROM_UNIXTIME( TIMESTAMP / 1000,'%Y-%m-%d') = ?2 AND line_id = ?1 and device_id like %?3%",nativeQuery=true)
85 List<Object[]> account(String line,String date,String code); 85 List<Object[]> account(String line,String date,String code);
86 86
87 - @Query(value="select s from ScheduleRealInfo s where s.xlBm = ?1 and s.scheduleDate >= str_to_date(?2,'%Y-%m-%d') "  
88 - + " and s.scheduleDate <= str_to_date(?3,'%Y-%m-%d') and s.lpName like %?4% " 87 + @Query(value="select s from ScheduleRealInfo s where s.xlBm = ?1 and s.scheduleDateStr >= ?2 "
  88 + + " and s.scheduleDateStr <= ?3 and s.lpName like %?4% "
89 + " and clZbh like %?5% order by s.fcsj") 89 + " and clZbh like %?5% order by s.fcsj")
90 List<ScheduleRealInfo> correctForm(String line,String startDate,String endDate,String lpName,String code); 90 List<ScheduleRealInfo> correctForm(String line,String startDate,String endDate,String lpName,String code);
91 91
92 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 92 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
93 - @Query(value="select DISTINCT s from ScheduleRealInfo s where s.jName = ?1 and s.clZbh = ?2 and s.lpName = ?3 and s.scheduleDate = str_to_date(?4,'%Y-%m-%d') and s.xlBm=?5 order by realExecDate,fcsj") 93 + @Query(value="select DISTINCT s from ScheduleRealInfo s where s.jName = ?1 and s.clZbh = ?2 and s.lpName = ?3 and s.scheduleDateStr = ?4 and s.xlBm=?5 order by realExecDate,fcsj")
94 List<ScheduleRealInfo> queryListWaybill(String jName,String clZbh,String lpName,String date,String line); 94 List<ScheduleRealInfo> queryListWaybill(String jName,String clZbh,String lpName,String date,String line);
95 95
96 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 96 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
97 - @Query(value="select DISTINCT s from ScheduleRealInfo s where s.jGh = ?1 and s.clZbh = ?2 and s.lpName = ?3 and s.scheduleDate = str_to_date(?4,'%Y-%m-%d') and s.xlBm=?5 order by realExecDate,fcsj") 97 + @Query(value="select DISTINCT s from ScheduleRealInfo s where s.jGh = ?1 and s.clZbh = ?2 and s.lpName = ?3 and s.scheduleDateStr = ?4 and s.xlBm=?5 order by realExecDate,fcsj")
98 List<ScheduleRealInfo> queryListWaybillXcld(String jGh,String clZbh,String lpName,String date,String line); 98 List<ScheduleRealInfo> queryListWaybillXcld(String jGh,String clZbh,String lpName,String date,String line);
99 99
100 // @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 100 // @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
@@ -102,27 +102,27 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI @@ -102,27 +102,27 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI
102 // List<ScheduleRealInfo> queryListWaybill3(String jName,String clZbh,String date,String gsbm,String fgsbm); 102 // List<ScheduleRealInfo> queryListWaybill3(String jName,String clZbh,String date,String gsbm,String fgsbm);
103 103
104 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 104 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
105 - @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 order by s.xlBm,s.clZbh,s.jGh,s.adjustExps,s.fcsj") 105 + @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm = ?1 and s.scheduleDateStr = ?2 order by s.xlBm,s.clZbh,s.jGh,s.adjustExps,s.fcsj")
106 List<ScheduleRealInfo> scheduleByDateAndLineTjrb(String line,String date); 106 List<ScheduleRealInfo> scheduleByDateAndLineTjrb(String line,String date);
107 107
108 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 108 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
109 - @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 and s.xlDir=?3 and s.fcsjActual is not null and s.zdsjActual is not null order by s.realExecDate,s.fcsjActual") 109 + @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm = ?1 and s.scheduleDateStr = ?2 and s.xlDir=?3 and s.fcsjActual is not null and s.zdsjActual is not null order by s.realExecDate,s.fcsjActual")
110 List<ScheduleRealInfo> scheduleByDateAndLineInOut(String line,String date,String zd); 110 List<ScheduleRealInfo> scheduleByDateAndLineInOut(String line,String date,String zd);
111 111
112 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 112 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
113 - @Query(value="select DISTINCT s from ScheduleRealInfo s where s.clZbh = ?1 and s.scheduleDate = str_to_date(?2,'%Y-%m-%d') and xlBm =?3 order by realExecDate,fcsj") 113 + @Query(value="select DISTINCT s from ScheduleRealInfo s where s.clZbh = ?1 and s.scheduleDateStr = ?2 and xlBm =?3 order by realExecDate,fcsj")
114 List<ScheduleRealInfo> queryListWaybill2(String clZbh,String date,String line); 114 List<ScheduleRealInfo> queryListWaybill2(String clZbh,String date,String line);
115 115
116 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 116 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
117 - @Query(value="select DISTINCT s from ScheduleRealInfo s where s.jGh like %?1% and s.clZbh like %?2% and s.scheduleDate = str_to_date(?3,'%Y-%m-%d') and s.gsBm like %?4% and s.fgsBm like %?5% order by realExecDate,dfsj") 117 + @Query(value="select DISTINCT s from ScheduleRealInfo s where s.jGh like %?1% and s.clZbh like %?2% and s.scheduleDateStr = ?3 and s.gsBm like %?4% and s.fgsBm like %?5% order by realExecDate,dfsj")
118 List<ScheduleRealInfo> queryListWaybill3(String jName,String clZbh,String date,String gsbm,String fgsbm); 118 List<ScheduleRealInfo> queryListWaybill3(String jName,String clZbh,String date,String gsbm,String fgsbm);
119 119
120 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 120 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
121 - @Query(value="select DISTINCT s from ScheduleRealInfo s where s.jName = ?1 and s.clZbh = ?2 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') between str_to_date(?3,'%Y-%m-%d') and str_to_date(?4,'%Y-%m-%d') order by bcs") 121 + @Query(value="select DISTINCT s from ScheduleRealInfo s where s.jName = ?1 and s.clZbh = ?2 and s.scheduleDateStr >=?3 and s.scheduleDateStr <=?4 order by bcs")
122 List<ScheduleRealInfo> queryListWaybill4(String jName,String clZbh,String date,String enddate); 122 List<ScheduleRealInfo> queryListWaybill4(String jName,String clZbh,String date,String enddate);
123 123
124 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 124 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
125 - @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2") 125 + @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm = ?1 and s.scheduleDateStr = ?2")
126 List<ScheduleRealInfo> scheduleDaily(String line,String date); 126 List<ScheduleRealInfo> scheduleDaily(String line,String date);
127 127
128 @Query(value = "select count(*) from ScheduleRealInfo s where s.xlBm=?1 and s.scheduleDateStr=?2") 128 @Query(value = "select count(*) from ScheduleRealInfo s where s.xlBm=?1 and s.scheduleDateStr=?2")
@@ -139,66 +139,66 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI @@ -139,66 +139,66 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI
139 139
140 //去掉了 xlBm is not null 140 //去掉了 xlBm is not null
141 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 141 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
142 - @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm like %?1% and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 order by s.xlDir,s.realExecDate,s.fcsj, lpName") 142 + @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm like %?1% and s.scheduleDateStr = ?2 order by s.xlDir,s.realExecDate,s.fcsj, lpName")
143 List<ScheduleRealInfo> scheduleByDateAndLine(String line,String date); 143 List<ScheduleRealInfo> scheduleByDateAndLine(String line,String date);
144 144
145 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 145 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
146 - @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm =?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 order by s.lpName, s.realExecDate,s.fcsj") 146 + @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm =?1 and s.scheduleDateStr = ?2 order by s.lpName, s.realExecDate,s.fcsj")
147 List<ScheduleRealInfo> scheduleByDateAndLineQp(String line,String date); 147 List<ScheduleRealInfo> scheduleByDateAndLineQp(String line,String date);
148 148
149 149
150 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 150 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
151 - @Query(value="select DISTINCT s from ScheduleRealInfo s where gsBm like %?1% and fgsBm like %?2% and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?3 order by s.xlDir,s.realExecDate,s.fcsj, s.lpName") 151 + @Query(value="select DISTINCT s from ScheduleRealInfo s where gsBm like %?1% and fgsBm like %?2% and s.scheduleDateStr = ?3 order by s.xlDir,s.realExecDate,s.fcsj, s.lpName")
152 List<ScheduleRealInfo> scheduleByDateAndLineByGs_(String gsdm,String fgsdm,String date); 152 List<ScheduleRealInfo> scheduleByDateAndLineByGs_(String gsdm,String fgsdm,String date);
153 153
154 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 154 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
155 - @Query(value="select DISTINCT s from ScheduleRealInfo s where gsBm like %?1% and fgsBm like %?2% and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?3 and s.bcType not in ('in','out','ldks') order by s.xlDir,s.realExecDate,s.fcsj, s.lpName") 155 + @Query(value="select DISTINCT s from ScheduleRealInfo s where gsBm like %?1% and fgsBm like %?2% and s.scheduleDateStr = ?3 and s.bcType not in ('in','out','ldks') order by s.xlDir,s.realExecDate,s.fcsj, s.lpName")
156 List<ScheduleRealInfo> scheduleByDateAndLineByGs(String gsdm,String fgsdm,String date); 156 List<ScheduleRealInfo> scheduleByDateAndLineByGs(String gsdm,String fgsdm,String date);
157 157
158 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 158 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
159 - @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 order by s.xlDir,s.realExecDate,s.fcsj, s.lpName") 159 + @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm = ?1 and s.scheduleDateStr= ?2 order by s.xlDir,s.realExecDate,s.fcsj, s.lpName")
160 List<ScheduleRealInfo> scheduleByDateAndLineQp2(String line,String date); 160 List<ScheduleRealInfo> scheduleByDateAndLineQp2(String line,String date);
161 161
162 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 162 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
163 - @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 and s.bcType not in ('in','out','ldks') order by s.xlBm,s.adjustExps,s.fcsj") 163 + @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm = ?1 and s.scheduleDateStr = ?2 and s.bcType not in ('in','out','ldks') order by s.xlBm,s.adjustExps,s.fcsj")
164 List<ScheduleRealInfo> scheduleByDateAndLine2(String line,String date); 164 List<ScheduleRealInfo> scheduleByDateAndLine2(String line,String date);
165 165
166 //按月统计 166 //按月统计
167 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 167 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
168 - @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm like %?1% and DATE_FORMAT(s.scheduleDate,'%Y-%m') = ?2 and s.bcType not in ('in','out','ldks') order by s.xlBm") 168 + @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm like %?1% and s.scheduleDateStr = ?2 and s.bcType not in ('in','out','ldks') order by s.xlBm")
169 List<ScheduleRealInfo> scheduleByDateAndLine3(String line,String date); 169 List<ScheduleRealInfo> scheduleByDateAndLine3(String line,String date);
170 170
171 //按照时间段统计 171 //按照时间段统计
172 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 172 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
173 - @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm like %?1% and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') between ?2 and ?3 and gsBm like %?4% and fgsBm like %?5% order by s.xlBm") 173 + @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm like %?1% and s.scheduleDateStr >= ?2 and s.scheduleDateStr<= ?3 and gsBm like %?4% and fgsBm like %?5% order by s.xlBm")
174 List<ScheduleRealInfo> scheduleByDateAndLineTj(String line,String date,String date2,String gsdm,String fgsdm); 174 List<ScheduleRealInfo> scheduleByDateAndLineTj(String line,String date,String date2,String gsdm,String fgsdm);
175 175
176 //按照时间段统计 176 //按照时间段统计
177 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 177 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
178 - @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') between ?2 and ?3 order by s.xlBm") 178 + @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm = ?1 and s.scheduleDateStr >= ?2 and s.scheduleDateStr<= ?3 order by s.xlBm")
179 List<ScheduleRealInfo> scheduleByDateAndLineTj2(String line,String date,String date2); 179 List<ScheduleRealInfo> scheduleByDateAndLineTj2(String line,String date,String date2);
180 //月报表 180 //月报表
181 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 181 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
182 - @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') between ?2 and ?3 order by s.xlBm") 182 + @Query(value="select DISTINCT s from ScheduleRealInfo s where s.xlBm = ?1 and s.scheduleDateStr >= ?2 and s.scheduleDateStr<= ?3 order by s.xlBm")
183 List<ScheduleRealInfo> scheduleByDateAndLineYbb(String line,String date,String date2); 183 List<ScheduleRealInfo> scheduleByDateAndLineYbb(String line,String date,String date2);
184 184
185 185
186 - @Query(value="select new map(s.scheduleDate as scheduleDate,s.xlBm as xlBm,s.clZbh as clZbh,s.jGh as jGh,min(s.fcsj) as fcsj ) from ScheduleRealInfo s where s.xlBm like %?1% and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 and s.gsBm like %?3% and s.fgsBm like %?4% and s.clZbh like %?5% GROUP BY xlBm,clZbh,jGh,scheduleDate ORDER BY clZbh,fcsj") 186 + @Query(value="select new map(s.scheduleDate as scheduleDate,s.xlBm as xlBm,s.clZbh as clZbh,s.jGh as jGh,min(s.fcsj) as fcsj ) from ScheduleRealInfo s where s.xlBm like %?1% and s.scheduleDateStr = ?2 and s.gsBm like %?3% and s.fgsBm like %?4% and s.clZbh like %?5% GROUP BY xlBm,clZbh,jGh,scheduleDate ORDER BY clZbh,fcsj")
187 List<Map<String,Object>> yesterdayDataList(String line,String date,String gsbm,String fgsbm,String nbbm); 187 List<Map<String,Object>> yesterdayDataList(String line,String date,String gsbm,String fgsbm,String nbbm);
188 188
189 - @Query(value="select new map(s.scheduleDate as scheduleDate,s.xlBm as xlBm,s.clZbh as clZbh,s.jGh as jGh,min(s.fcsj) as fcsj ) from ScheduleRealInfo s where s.xlBm =?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 and s.gsBm like %?3% and s.fgsBm like %?4% and s.clZbh like %?5% GROUP BY xlBm,clZbh,jGh,scheduleDate ORDER BY clZbh,fcsj") 189 + @Query(value="select new map(s.scheduleDate as scheduleDate,s.xlBm as xlBm,s.clZbh as clZbh,s.jGh as jGh,min(s.fcsj) as fcsj ) from ScheduleRealInfo s where s.xlBm =?1 and s.scheduleDateStr = ?2 and s.gsBm like %?3% and s.fgsBm like %?4% and s.clZbh like %?5% GROUP BY xlBm,clZbh,jGh,scheduleDate ORDER BY clZbh,fcsj")
190 List<Map<String,Object>> yesterdayDataList_eq(String line,String date,String gsbm,String fgsbm,String nbbm); 190 List<Map<String,Object>> yesterdayDataList_eq(String line,String date,String gsbm,String fgsbm,String nbbm);
191 191
192 - @Query(value="select s from ScheduleRealInfo s where DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?1 ORDER BY xlBm,lpName,clZbh,xlDir") 192 + @Query(value="select s from ScheduleRealInfo s where s.scheduleDateStr = ?1 ORDER BY xlBm,lpName,clZbh,xlDir")
193 List<ScheduleRealInfo> setLD(String date); 193 List<ScheduleRealInfo> setLD(String date);
194 194
195 - @Query(value="select new map(xlBm as xlBm,lpName as lpName,clZbh as clZbh) from ScheduleRealInfo s where DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?1 GROUP BY xlBm,lpName,clZbh ORDER BY xlBm,lpName,clZbh") 195 + @Query(value="select new map(xlBm as xlBm,lpName as lpName,clZbh as clZbh) from ScheduleRealInfo s where s.scheduleDateStr = ?1 GROUP BY xlBm,lpName,clZbh ORDER BY xlBm,lpName,clZbh")
196 List<Map<String,Object>> setLDGroup(String date); 196 List<Map<String,Object>> setLDGroup(String date);
197 197
198 - @Query(value="select new map(xlBm as xlBm,clZbh as clZbh) from ScheduleRealInfo s where DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?1 GROUP BY xlBm,clZbh ORDER BY xlBm,clZbh") 198 + @Query(value="select new map(xlBm as xlBm,clZbh as clZbh) from ScheduleRealInfo s where s.scheduleDateStr = ?1 GROUP BY xlBm,clZbh ORDER BY xlBm,clZbh")
199 List<Map<String,Object>> setLCYHGroup(String date); 199 List<Map<String,Object>> setLCYHGroup(String date);
200 200
201 - @Query(value="select new map(xlBm as xlBm) from ScheduleRealInfo s where DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?1 GROUP BY xlBm ORDER BY xlBm") 201 + @Query(value="select new map(xlBm as xlBm) from ScheduleRealInfo s where s.scheduleDateStr = ?1 GROUP BY xlBm ORDER BY xlBm")
202 List<Map<String,Object>> setDDRBGroup(String date); 202 List<Map<String,Object>> setDDRBGroup(String date);
203 203
204 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH) 204 @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
src/main/java/com/bsth/service/TrafficManageService.java
@@ -65,6 +65,8 @@ public interface TrafficManageService { @@ -65,6 +65,8 @@ public interface TrafficManageService {
65 */ 65 */
66 String setJHBC(); 66 String setJHBC();
67 67
  68 + String setLD(String theDate);
  69 +
68 String setLD(); 70 String setLD();
69 71
70 String setLDFile(); 72 String setLDFile();
src/main/java/com/bsth/service/forms/impl/FormsServiceImpl.java
@@ -201,7 +201,7 @@ public class FormsServiceImpl implements FormsService { @@ -201,7 +201,7 @@ public class FormsServiceImpl implements FormsService {
201 + " LEFT JOIN bsth_c_s_sp_info_real r on r.xl_bm=l.line_code" 201 + " LEFT JOIN bsth_c_s_sp_info_real r on r.xl_bm=l.line_code"
202 + " where 1=1 "; 202 + " where 1=1 ";
203 if(map.get("date").toString()!=""){ 203 if(map.get("date").toString()!=""){
204 - sql+="and to_days(r.schedule_date)=to_days('"+map.get("date").toString() + "') "; 204 + sql+="and r.schedule_date_str='"+map.get("date").toString() + "'";
205 } 205 }
206 if( map.get("line").toString()!=""){ 206 if( map.get("line").toString()!=""){
207 sql+=" and l.line_code=" + map.get("line").toString(); 207 sql+=" and l.line_code=" + map.get("line").toString();
@@ -251,24 +251,14 @@ public class FormsServiceImpl implements FormsService { @@ -251,24 +251,14 @@ public class FormsServiceImpl implements FormsService {
251 }else{ 251 }else{
252 sql += " r.cl_zbh"; 252 sql += " r.cl_zbh";
253 } 253 }
254 - sql += " from bsth_c_s_sp_info_real r where 1=1 ";  
255 - if(map.get("startDate")!=null&&!map.get("startDate").equals("")){  
256 - sql+=" and to_days(r.schedule_date_str) BETWEEN to_days('" + map.get("startDate").toString() + "') ";  
257 - }  
258 -  
259 - if(map.get("endDate")!=null&&!map.get("endDate").equals("")){  
260 - sql+=" and to_days('" + map.get("endDate").toString() + "') ";  
261 - } 254 + sql += " from bsth_c_s_sp_info_real r where "
  255 + + " r.schedule_date_str >= '" + map.get("startDate").toString() + "' "
  256 + + " and r.schedule_date_str <='" + map.get("endDate").toString() + "' ";
262 if(map.get("line")!=null&&!map.get("line").equals("")){ 257 if(map.get("line")!=null&&!map.get("line").equals("")){
263 sql+=" and r.xl_bm='"+ map.get("line").toString() + "' "; 258 sql+=" and r.xl_bm='"+ map.get("line").toString() + "' ";
264 } 259 }
265 -// sql+= " AND r.gs_bm is not null and r.bc_type not in('in','out')";  
266 -// if(map.get("gsdmManth")!=null&&!map.get("gsdmManth").equals("")){  
267 - sql+=" and r.gs_bm like'%"+gsdmManth+"%' ";  
268 -// }  
269 - if(map.get("fgsdmManth")!=null&&!map.get("fgsdmManth").equals("")){  
270 - sql+=" and r.fgs_bm like'%"+fgsdmManth+"%' ";  
271 - } 260 + sql+=" and r.gs_bm like'%"+gsdmManth+"%' and r.fgs_bm like'%"+fgsdmManth+"%'";
  261 +
272 if(empnames.equals("驾驶员")){ 262 if(empnames.equals("驾驶员")){
273 sql += " GROUP BY " 263 sql += " GROUP BY "
274 + "r.j_name,r.j_gh"; 264 + "r.j_name,r.j_gh";
@@ -278,11 +268,6 @@ public class FormsServiceImpl implements FormsService { @@ -278,11 +268,6 @@ public class FormsServiceImpl implements FormsService {
278 sql += " GROUP BY r.cl_zbh"; 268 sql += " GROUP BY r.cl_zbh";
279 } 269 }
280 270
281 -// + ",r.gs_bm,r.gs_name,"  
282 -// + "r.fgs_bm,r.fgs_name,r.bc_type ";  
283 -  
284 -// r.j_name,r.cl_zbh,r.j_gh,r.gs_bm,r.gs_name,"  
285 -// + " r.fgs_bm,r.fgs_name,r.bc_type,r.s_name,r.lp_name  
286 List<Shiftuehiclemanth> list = jdbcTemplate.query(sql, new RowMapper<Shiftuehiclemanth>() { 271 List<Shiftuehiclemanth> list = jdbcTemplate.query(sql, new RowMapper<Shiftuehiclemanth>() {
287 272
288 @Override 273 @Override
@@ -409,7 +394,7 @@ public class FormsServiceImpl implements FormsService { @@ -409,7 +394,7 @@ public class FormsServiceImpl implements FormsService {
409 + "IFNULL(r.s_name,'')as s_name," 394 + "IFNULL(r.s_name,'')as s_name,"
410 + " r.cl_zbh,r.xl_bm, r.j_gh,r.gs_bm,r.fgs_bm,r.lp_name " 395 + " r.cl_zbh,r.xl_bm, r.j_gh,r.gs_bm,r.fgs_bm,r.lp_name "
411 + "FROM bsth_c_s_sp_info_real r where 1=1 " 396 + "FROM bsth_c_s_sp_info_real r where 1=1 "
412 - + " and to_days(r.schedule_date)=to_days('"+date + "') " 397 + + " and r.schedule_date_str='"+date + "' "
413 + " and r.xl_bm like '%"+line+"%' " 398 + " and r.xl_bm like '%"+line+"%' "
414 + " and r.gs_bm like '%"+gsdmShif+"%' " 399 + " and r.gs_bm like '%"+gsdmShif+"%' "
415 + " and r.fgs_bm like '%"+fgsdmShif+"%' ) t" 400 + " and r.fgs_bm like '%"+fgsdmShif+"%' ) t"
@@ -547,19 +532,6 @@ public class FormsServiceImpl implements FormsService { @@ -547,19 +532,6 @@ public class FormsServiceImpl implements FormsService {
547 if(map.get("fgsdm")!=null){ 532 if(map.get("fgsdm")!=null){
548 fgs =map.get("fgsdm").toString(); 533 fgs =map.get("fgsdm").toString();
549 } 534 }
550 - /*String sql = " select c.*,l.line_code from bsth_c_chtoch c LEFT JOIN bsth_c_line l on c.xl=l.name WHERE 1=1 ";  
551 - if (!map.get("startDate").toString().equals(" ") && !map.get("endDate").toString().equals(" ")) {  
552 - sql += "and DATE_FORMAT( c.rq,'%Y-%m-%d') BETWEEN '" + map.get("startDate").toString() + "' and '"  
553 - + map.get("endDate").toString() + "'";  
554 - }  
555 - if (!map.get("line").equals("")) {  
556 - sql += "and line_code='" + map.get("line") + "'";  
557 - }  
558 - if (map.get("sel").equals("2")) {  
559 - sql += " and c.pcch!=c.pcry";  
560 - } else if (map.get("sel").equals("1")) {  
561 - sql += " and c.jhgh!=c.sjgh";  
562 - }*/  
563 535
564 String sql="select * from bsth_c_chtoch where rq BETWEEN '"+ map.get("startDate").toString()+"' " 536 String sql="select * from bsth_c_chtoch where rq BETWEEN '"+ map.get("startDate").toString()+"' "
565 + " and '"+map.get("endDate").toString() +"'"; 537 + " and '"+map.get("endDate").toString() +"'";
@@ -630,19 +602,6 @@ public class FormsServiceImpl implements FormsService { @@ -630,19 +602,6 @@ public class FormsServiceImpl implements FormsService {
630 602
631 // rq = rq2 + "-" + rq3; 603 // rq = rq2 + "-" + rq3;
632 startDate = map.get("startDate").toString(); 604 startDate = map.get("startDate").toString();
633 -// endDate = map.get("endDate").toString();  
634 -// String sql = "select t.*,y.yh,y.jzl from ("  
635 -// + " select r.xl_bm,r.xl_name,r.cl_zbh,r.j_gh,r.j_name,r.gs_bm,r.fgs_bm"  
636 -// + " from bsth_c_s_sp_info_real r where r.schedule_date_str "  
637 -// + " BETWEEN '"+startDate+"' and '"+endDate+"' and r.xl_bm='"+map.get("line").toString()+"' "  
638 -// + " AND r.gs_bm is not null and r.gs_bm='"+map.get("gsdmSing").toString()+"' "  
639 -// + " and r.fgs_bm='"+map.get("fgsdmSing").toString()+"' "  
640 -// + " group by r.xl_bm,r.xl_name,r.cl_zbh,r.j_gh,r.j_name,r.gs_bm,r.fgs_bm) t "  
641 -// + " LEFT JOIN (select a.nbbm,a.jsy,SUM(a.yh) as yh,SUM(a.jzl) as jzl "  
642 -// + " from bsth_c_ylb a where a.rq BETWEEN '"+startDate+"' and '"+endDate+"'and "  
643 -// + " a.ssgsdm='"+map.get("gsdmSing").toString()+"' and a.fgsdm='"+map.get("fgsdmSing").toString()+"' "  
644 -// + "group by a.nbbm,a.jsy) y"  
645 -// + " on y.nbbm=t.cl_zbh and y.jsy= t.j_gh";  
646 605
647 String sql="select r.s_gh,r.s_name, " 606 String sql="select r.s_gh,r.s_name, "
648 + " r.xl_bm,r.cl_zbh,r.j_gh,r.j_name,r.gs_bm,r.fgs_bm" 607 + " r.xl_bm,r.cl_zbh,r.j_gh,r.j_name,r.gs_bm,r.fgs_bm"
@@ -775,19 +734,28 @@ public class FormsServiceImpl implements FormsService { @@ -775,19 +734,28 @@ public class FormsServiceImpl implements FormsService {
775 String line=y.getXlbm(); 734 String line=y.getXlbm();
776 String clzbh=y.getNbbm(); 735 String clzbh=y.getNbbm();
777 List<ScheduleRealInfo> newList=new ArrayList<ScheduleRealInfo>(); 736 List<ScheduleRealInfo> newList=new ArrayList<ScheduleRealInfo>();
  737 + List<ScheduleRealInfo> newList_=new ArrayList<ScheduleRealInfo>();
778 for (int j = 0; j < listReal.size(); j++) { 738 for (int j = 0; j < listReal.size(); j++) {
779 ScheduleRealInfo s=listReal.get(j); 739 ScheduleRealInfo s=listReal.get(j);
780 if(s.getjGh().equals(jsy) && s.getClZbh().equals(clzbh) 740 if(s.getjGh().equals(jsy) && s.getClZbh().equals(clzbh)
781 &&s.getXlBm().equals(line)){ 741 &&s.getXlBm().equals(line)){
782 newList.add(s); 742 newList.add(s);
  743 + Set<ChildTaskPlan> cts = s.getcTasks();
  744 + if(cts != null && cts.size() > 0){
  745 + newList_.add(s);
  746 + }else{
  747 + if(s.getZdsjActual()!=null){
  748 + newList_.add(s);
  749 + }
  750 + }
783 } 751 }
784 } 752 }
785 double jhgl=culateMileageService.culateJhgl(newList); 753 double jhgl=culateMileageService.culateJhgl(newList);
786 double jhjcc=culateMileageService.culateJhJccgl(newList); 754 double jhjcc=culateMileageService.culateJhJccgl(newList);
787 - double yygl=culateMileageService.culateSjgl(newList);  
788 - double ljgl=culateMileageService.culateLjgl(newList);  
789 - double ksgl=culateMileageService.culateKsgl(newList);  
790 - double jcgl=culateMileageService.culateJccgl(newList); 755 + double yygl=culateMileageService.culateSjgl(newList_);
  756 + double ljgl=culateMileageService.culateLjgl(newList_);
  757 + double ksgl=culateMileageService.culateKsgl(newList_);
  758 + double jcgl=culateMileageService.culateJccgl(newList_);
791 759
792 double zyygl=Arith.add(yygl, ljgl); 760 double zyygl=Arith.add(yygl, ljgl);
793 double zksgl=Arith.add(ksgl, jcgl); 761 double zksgl=Arith.add(ksgl, jcgl);
@@ -797,7 +765,8 @@ public class FormsServiceImpl implements FormsService { @@ -797,7 +765,8 @@ public class FormsServiceImpl implements FormsService {
797 765
798 sin.setEmptMileage(String.valueOf(zksgl)); 766 sin.setEmptMileage(String.valueOf(zksgl));
799 sin.setJhjl(String.valueOf(Arith.add(jhgl,jhjcc))); 767 sin.setJhjl(String.valueOf(Arith.add(jhgl,jhjcc)));
800 - sin.setxL(BasicData.lineCode2NameMap.get(y.getXlbm())); 768 + sin.setxL(y.getXlbm());
  769 + sin.setXlmc(BasicData.lineCode2NameMap.get(y.getXlbm()));
801 sin.setClzbh(clzbh); 770 sin.setClzbh(clzbh);
802 sin.setJsy(jsy); 771 sin.setJsy(jsy);
803 sin.setrQ(startDate); 772 sin.setrQ(startDate);
@@ -819,19 +788,28 @@ public class FormsServiceImpl implements FormsService { @@ -819,19 +788,28 @@ public class FormsServiceImpl implements FormsService {
819 String line=y.getXlbm(); 788 String line=y.getXlbm();
820 String clzbh=y.getNbbm(); 789 String clzbh=y.getNbbm();
821 List<ScheduleRealInfo> newList=new ArrayList<ScheduleRealInfo>(); 790 List<ScheduleRealInfo> newList=new ArrayList<ScheduleRealInfo>();
  791 + List<ScheduleRealInfo> newList_=new ArrayList<ScheduleRealInfo>();
822 for (int j = 0; j < listReal.size(); j++) { 792 for (int j = 0; j < listReal.size(); j++) {
823 ScheduleRealInfo s=listReal.get(j); 793 ScheduleRealInfo s=listReal.get(j);
824 if(s.getjGh().equals(jsy) && s.getClZbh().equals(clzbh) 794 if(s.getjGh().equals(jsy) && s.getClZbh().equals(clzbh)
825 &&s.getXlBm().equals(line)){ 795 &&s.getXlBm().equals(line)){
826 newList.add(s); 796 newList.add(s);
  797 + Set<ChildTaskPlan> cts = s.getcTasks();
  798 + if(cts != null && cts.size() > 0){
  799 + newList_.add(s);
  800 + }else{
  801 + if(s.getZdsjActual()!=null){
  802 + newList_.add(s);
  803 + }
  804 + }
827 } 805 }
828 } 806 }
829 double jhgl=culateMileageService.culateJhgl(newList); 807 double jhgl=culateMileageService.culateJhgl(newList);
830 double jhjcc=culateMileageService.culateJhJccgl(newList); 808 double jhjcc=culateMileageService.culateJhJccgl(newList);
831 - double yygl=culateMileageService.culateSjgl(newList);  
832 - double ljgl=culateMileageService.culateLjgl(newList);  
833 - double ksgl=culateMileageService.culateKsgl(newList);  
834 - double jcgl=culateMileageService.culateJccgl(newList); 809 + double yygl=culateMileageService.culateSjgl(newList_);
  810 + double ljgl=culateMileageService.culateLjgl(newList_);
  811 + double ksgl=culateMileageService.culateKsgl(newList_);
  812 + double jcgl=culateMileageService.culateJccgl(newList_);
835 813
836 double zyygl=Arith.add(yygl, ljgl); 814 double zyygl=Arith.add(yygl, ljgl);
837 double zksgl=Arith.add(ksgl, jcgl); 815 double zksgl=Arith.add(ksgl, jcgl);
@@ -841,7 +819,8 @@ public class FormsServiceImpl implements FormsService { @@ -841,7 +819,8 @@ public class FormsServiceImpl implements FormsService {
841 819
842 sin.setEmptMileage(String.valueOf(zksgl)); 820 sin.setEmptMileage(String.valueOf(zksgl));
843 sin.setJhjl(String.valueOf(Arith.add(jhgl,jhjcc))); 821 sin.setJhjl(String.valueOf(Arith.add(jhgl,jhjcc)));
844 - sin.setxL(BasicData.lineCode2NameMap.get(y.getXlbm())); 822 + sin.setxL(y.getXlbm());
  823 + sin.setXlmc(BasicData.lineCode2NameMap.get(y.getXlbm()));
845 sin.setClzbh(clzbh); 824 sin.setClzbh(clzbh);
846 sin.setJsy(jsy); 825 sin.setJsy(jsy);
847 sin.setrQ(startDate); 826 sin.setrQ(startDate);
@@ -855,10 +834,10 @@ public class FormsServiceImpl implements FormsService { @@ -855,10 +834,10 @@ public class FormsServiceImpl implements FormsService {
855 listD.add(sin); 834 listD.add(sin);
856 } 835 }
857 836
858 - Collections.sort(listY,new SingledataByXlbm());  
859 - Collections.sort(listD,new SingledataByXlbm());  
860 - list.addAll(listY);  
861 - list.addAll(listD); 837 + Collections.sort(listY,new SingledataByXlbm());
  838 + Collections.sort(listD,new SingledataByXlbm());
  839 + list.addAll(listY);
  840 + list.addAll(listD);
862 }else{ 841 }else{
863 String sql="select r.s_gh,r.s_name, " 842 String sql="select r.s_gh,r.s_name, "
864 + " r.xl_bm,r.cl_zbh,r.gs_bm,r.fgs_bm" 843 + " r.xl_bm,r.cl_zbh,r.gs_bm,r.fgs_bm"
@@ -894,19 +873,29 @@ public class FormsServiceImpl implements FormsService { @@ -894,19 +873,29 @@ public class FormsServiceImpl implements FormsService {
894 String line=sin.getxL(); 873 String line=sin.getxL();
895 String clzbh=sin.getClzbh(); 874 String clzbh=sin.getClzbh();
896 List<ScheduleRealInfo> newList=new ArrayList<ScheduleRealInfo>(); 875 List<ScheduleRealInfo> newList=new ArrayList<ScheduleRealInfo>();
  876 + List<ScheduleRealInfo> newList_=new ArrayList<ScheduleRealInfo>();
  877 +
897 for (int j = 0; j < listReal.size(); j++) { 878 for (int j = 0; j < listReal.size(); j++) {
898 ScheduleRealInfo s=listReal.get(j); 879 ScheduleRealInfo s=listReal.get(j);
899 if(s.getsGh().equals(jsy) && s.getClZbh().equals(clzbh) 880 if(s.getsGh().equals(jsy) && s.getClZbh().equals(clzbh)
900 &&s.getXlBm().equals(line)){ 881 &&s.getXlBm().equals(line)){
901 newList.add(s); 882 newList.add(s);
  883 + Set<ChildTaskPlan> cts = s.getcTasks();
  884 + if(cts != null && cts.size() > 0){
  885 + newList_.add(s);
  886 + }else{
  887 + if(s.getZdsjActual()!=null){
  888 + newList_.add(s);
  889 + }
  890 + }
902 } 891 }
903 } 892 }
904 double jhgl=culateMileageService.culateJhgl(newList); 893 double jhgl=culateMileageService.culateJhgl(newList);
905 double jhjcc=culateMileageService.culateJhJccgl(newList); 894 double jhjcc=culateMileageService.culateJhJccgl(newList);
906 - double yygl=culateMileageService.culateSjgl(newList);  
907 - double ljgl=culateMileageService.culateLjgl(newList);  
908 - double ksgl=culateMileageService.culateKsgl(newList);  
909 - double jcgl=culateMileageService.culateJccgl(newList); 895 + double yygl=culateMileageService.culateSjgl(newList_);
  896 + double ljgl=culateMileageService.culateLjgl(newList_);
  897 + double ksgl=culateMileageService.culateKsgl(newList_);
  898 + double jcgl=culateMileageService.culateJccgl(newList_);
910 899
911 double zyygl=Arith.add(yygl, ljgl); 900 double zyygl=Arith.add(yygl, ljgl);
912 double zksgl=Arith.add(ksgl, jcgl); 901 double zksgl=Arith.add(ksgl, jcgl);
@@ -1210,8 +1199,8 @@ public class FormsServiceImpl implements FormsService { @@ -1210,8 +1199,8 @@ public class FormsServiceImpl implements FormsService {
1210 1199
1211 String sql = "select gs_name, fgs_name, cl_zbh, fcsj, bc_type, xl_bm, xl_name, schedule_date" 1200 String sql = "select gs_name, fgs_name, cl_zbh, fcsj, bc_type, xl_bm, xl_name, schedule_date"
1212 + " from bsth_c_s_sp_info where gs_bm = '"+company+"' and fgs_bm = '"+subCompany+"' " 1201 + " from bsth_c_s_sp_info where gs_bm = '"+company+"' and fgs_bm = '"+subCompany+"' "
1213 - + "and DATE_FORMAT(schedule_date,'%Y-%m-%d') >= '"+startDate+"' "  
1214 - + "and DATE_FORMAT(schedule_date,'%Y-%m-%d') <= '"+endDate+"' "; 1202 + + "and schedule_date_str >= '"+startDate+"' "
  1203 + + "and schedule_date_str <= '"+endDate+"' ";
1215 if(line.trim().length() != 0){ 1204 if(line.trim().length() != 0){
1216 sql += "and xl_bm = '"+line+"' "; 1205 sql += "and xl_bm = '"+line+"' ";
1217 } 1206 }
@@ -1367,8 +1356,8 @@ public class FormsServiceImpl implements FormsService { @@ -1367,8 +1356,8 @@ public class FormsServiceImpl implements FormsService {
1367 1356
1368 String sql = " select b.xlgs, a.gs_bm,a.gs_name, a.fgs_bm,a.fgs_name , a.xl_bm,b.xl_name,b.sbc,b.sxl,b.scl,a.jbc ,a.jxl ,a.jcl,a.gslsbm,a.fgsbm,a.bc_type from " 1357 String sql = " select b.xlgs, a.gs_bm,a.gs_name, a.fgs_bm,a.fgs_name , a.xl_bm,b.xl_name,b.sbc,b.sxl,b.scl,a.jbc ,a.jxl ,a.jcl,a.gslsbm,a.fgsbm,a.bc_type from "
1369 + " (select count(DISTINCT gs_bm) gslsbm, gs_bm, count(DISTINCT fgs_bm) fgsbm,fgs_bm,gs_name,fgs_name ,xl_bm, count(*) as jbc,COUNT(DISTINCT xl_bm) as jxl ,COUNT(DISTINCT cl_zbh) as jcl,bc_type" 1358 + " (select count(DISTINCT gs_bm) gslsbm, gs_bm, count(DISTINCT fgs_bm) fgsbm,fgs_bm,gs_name,fgs_name ,xl_bm, count(*) as jbc,COUNT(DISTINCT xl_bm) as jxl ,COUNT(DISTINCT cl_zbh) as jcl,bc_type"
1370 - + " from bsth_c_s_sp_info" + " where DATE_FORMAT(schedule_date,'%Y-%m-%d') BETWEEN '"  
1371 - + map.get("startDate").toString() + "' and '" + map.get("endDate").toString() + "' and xl_bm='" 1359 + + " from bsth_c_s_sp_info" + " where schedule_date_str >= '"
  1360 + + map.get("startDate").toString() + "' and schedule_date_str <='" + map.get("endDate").toString() + "' and xl_bm='"
1372 + map.get("line").toString() + "' AND gs_bm is not null AND bc_type NOT IN ('in', 'out')" 1361 + map.get("line").toString() + "' AND gs_bm is not null AND bc_type NOT IN ('in', 'out')"
1373 + " and gs_bm='"+ map.get("gsdmEcecut").toString() + "'" 1362 + " and gs_bm='"+ map.get("gsdmEcecut").toString() + "'"
1374 + " and fgs_bm='"+ map.get("fgsdmEcecut").toString() + "'" 1363 + " and fgs_bm='"+ map.get("fgsdmEcecut").toString() + "'"
@@ -1376,7 +1365,7 @@ public class FormsServiceImpl implements FormsService { @@ -1376,7 +1365,7 @@ public class FormsServiceImpl implements FormsService {
1376 + " ) a left JOIN (" 1365 + " ) a left JOIN ("
1377 + "SELECT COUNT(*) as xlgs,b.gs_bm,b.fgs_bm,b.xl_bm,b.xl_name,b.gs_name,b.fgs_name, b.sbc,b.sxl ,b.scl " 1366 + "SELECT COUNT(*) as xlgs,b.gs_bm,b.fgs_bm,b.xl_bm,b.xl_name,b.gs_name,b.fgs_name, b.sbc,b.sxl ,b.scl "
1378 + "from bsth_c_line t RIGHT JOIN (select gs_bm,fgs_bm,xl_bm,xl_name,gs_name,fgs_name, count(*) as sbc,COUNT(DISTINCT xl_bm) as sxl ,COUNT(DISTINCT cl_zbh) as scl,bc_type from bsth_c_s_sp_info_real " 1367 + "from bsth_c_line t RIGHT JOIN (select gs_bm,fgs_bm,xl_bm,xl_name,gs_name,fgs_name, count(*) as sbc,COUNT(DISTINCT xl_bm) as sxl ,COUNT(DISTINCT cl_zbh) as scl,bc_type from bsth_c_s_sp_info_real "
1379 - + "where DATE_FORMAT(schedule_date,'%Y-%m-%d') BETWEEN '" + map.get("startDate").toString() + "' and '" 1368 + + "where schedule_date_str >= '" + map.get("startDate").toString() + "' and schedule_date_str <= '"
1380 + map.get("endDate").toString() + "' and xl_bm='" + map.get("line").toString() 1369 + map.get("endDate").toString() + "' and xl_bm='" + map.get("line").toString()
1381 + "' AND gs_bm is not null AND bc_type NOT IN ('in', 'out') " 1370 + "' AND gs_bm is not null AND bc_type NOT IN ('in', 'out') "
1382 // + " GROUP BY gs_bm,fgs_bm,xl_bm,gs_name,fgs_name,bc_type" 1371 // + " GROUP BY gs_bm,fgs_bm,xl_bm,gs_name,fgs_name,bc_type"
@@ -1451,8 +1440,8 @@ public class FormsServiceImpl implements FormsService { @@ -1451,8 +1440,8 @@ public class FormsServiceImpl implements FormsService {
1451 1440
1452 String sql = " select b.xlgs, a.gs_bm,a.gs_name, a.fgs_bm,a.fgs_name , a.xl_bm,b.xl_name,b.sbc,b.sxl,b.scl,a.jbc ,a.jxl ,a.jcl,a.gslsbm,a.fgsbm,a.bc_type from " 1441 String sql = " select b.xlgs, a.gs_bm,a.gs_name, a.fgs_bm,a.fgs_name , a.xl_bm,b.xl_name,b.sbc,b.sxl,b.scl,a.jbc ,a.jxl ,a.jcl,a.gslsbm,a.fgsbm,a.bc_type from "
1453 + " (select count(DISTINCT gs_bm) gslsbm, gs_bm, count(DISTINCT fgs_bm) fgsbm,fgs_bm,gs_name,fgs_name ,xl_bm, count(*) as jbc,COUNT(DISTINCT xl_bm) as jxl ,COUNT(DISTINCT cl_zbh) as jcl,bc_type" 1442 + " (select count(DISTINCT gs_bm) gslsbm, gs_bm, count(DISTINCT fgs_bm) fgsbm,fgs_bm,gs_name,fgs_name ,xl_bm, count(*) as jbc,COUNT(DISTINCT xl_bm) as jxl ,COUNT(DISTINCT cl_zbh) as jcl,bc_type"
1454 - + " from bsth_c_s_sp_info" + " where DATE_FORMAT(schedule_date,'%Y-%m-%d') BETWEEN '"  
1455 - + map.get("startDate").toString() + "' and '" + map.get("endDate").toString() + "' and xl_bm='" 1443 + + " from bsth_c_s_sp_info" + " where schedule_date_str >= '"
  1444 + + map.get("startDate").toString() + "' and schedule_date_str<= '" + map.get("endDate").toString() + "' and xl_bm='"
1456 + map.get("line").toString() + "' AND gs_bm is not null AND bc_type NOT IN ('in', 'out') " 1445 + map.get("line").toString() + "' AND gs_bm is not null AND bc_type NOT IN ('in', 'out') "
1457 + " and gs_bm='"+ map.get("gsdmAllline").toString() + "'" 1446 + " and gs_bm='"+ map.get("gsdmAllline").toString() + "'"
1458 + " and fgs_bm='"+ map.get("fgsdmAllline").toString() + "'" 1447 + " and fgs_bm='"+ map.get("fgsdmAllline").toString() + "'"
src/main/java/com/bsth/service/impl/BusIntervalServiceImpl.java
@@ -17,7 +17,6 @@ import java.util.List; @@ -17,7 +17,6 @@ import java.util.List;
17 import java.util.Map; 17 import java.util.Map;
18 import java.util.Set; 18 import java.util.Set;
19 19
20 -import org.apache.commons.lang3.StringEscapeUtils;  
21 import org.springframework.beans.factory.annotation.Autowired; 20 import org.springframework.beans.factory.annotation.Autowired;
22 import org.springframework.jdbc.core.BeanPropertyRowMapper; 21 import org.springframework.jdbc.core.BeanPropertyRowMapper;
23 import org.springframework.jdbc.core.JdbcTemplate; 22 import org.springframework.jdbc.core.JdbcTemplate;
@@ -25,7 +24,6 @@ import org.springframework.jdbc.core.RowMapper; @@ -25,7 +24,6 @@ import org.springframework.jdbc.core.RowMapper;
25 import org.springframework.stereotype.Service; 24 import org.springframework.stereotype.Service;
26 25
27 import com.alibaba.fastjson.JSONArray; 26 import com.alibaba.fastjson.JSONArray;
28 -import com.alibaba.fastjson.JSONObject;  
29 import com.bsth.data.BasicData; 27 import com.bsth.data.BasicData;
30 import com.bsth.data.schedule.edit_logs.service.dto.SchEditInfoDto; 28 import com.bsth.data.schedule.edit_logs.service.dto.SchEditInfoDto;
31 import com.bsth.entity.realcontrol.ChildTaskPlan; 29 import com.bsth.entity.realcontrol.ChildTaskPlan;
@@ -1715,13 +1713,13 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -1715,13 +1713,13 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1715 } 1713 }
1716 } 1714 }
1717 boolean flag = true; 1715 boolean flag = true;
1718 - if(jhlc.toString().equals("0")){ 1716 + if(jhlc.doubleValue() == 0d){
1719 flag = false; 1717 flag = false;
1720 } 1718 }
1721 tempMap.put("date", Date); 1719 tempMap.put("date", Date);
1722 tempMap.put("company", companyName); 1720 tempMap.put("company", companyName);
1723 tempMap.put("subCompany", subCompanyName); 1721 tempMap.put("subCompany", subCompanyName);
1724 - tempMap.put("times", times); 1722 + tempMap.put("times", sfqr == 1 ? times : "全日");
1725 tempMap.put("line", key); 1723 tempMap.put("line", key);
1726 tempMap.put("jhbc", jhbc); 1724 tempMap.put("jhbc", jhbc);
1727 tempMap.put("sjbc", sjbc); 1725 tempMap.put("sjbc", sjbc);
@@ -1732,37 +1730,37 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -1732,37 +1730,37 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1732 tempMap.put("lcbfb", df.format(flag?sjlc.divide(jhlc, 4, BigDecimal.ROUND_HALF_UP).doubleValue()*100:0)+"%"); 1730 tempMap.put("lcbfb", df.format(flag?sjlc.divide(jhlc, 4, BigDecimal.ROUND_HALF_UP).doubleValue()*100:0)+"%");
1733 tempMap.put("lzbc", lzbc); 1731 tempMap.put("lzbc", lzbc);
1734 tempMap.put("lzlc", lzlc.doubleValue()); 1732 tempMap.put("lzlc", lzlc.doubleValue());
1735 - tempMap.put("lzbfb", df.format(flag?(double)lzbc/jhbc*100:0)+"%"); 1733 + tempMap.put("lzbfb", df.format(jhbc>0?(double)lzbc/jhbc*100:0)+"%");
1736 tempMap.put("dmbc", dmbc); 1734 tempMap.put("dmbc", dmbc);
1737 tempMap.put("dmlc", dmlc.doubleValue()); 1735 tempMap.put("dmlc", dmlc.doubleValue());
1738 - tempMap.put("dmbfb", df.format(flag?(double)dmbc/jhbc*100:0)+"%"); 1736 + tempMap.put("dmbfb", df.format(jhbc>0?(double)dmbc/jhbc*100:0)+"%");
1739 tempMap.put("gzbc", gzbc); 1737 tempMap.put("gzbc", gzbc);
1740 tempMap.put("gzlc", gzlc.doubleValue()); 1738 tempMap.put("gzlc", gzlc.doubleValue());
1741 - tempMap.put("gzbfb", df.format(flag?(double)gzbc/jhbc*100:0)+"%"); 1739 + tempMap.put("gzbfb", df.format(jhbc>0?(double)gzbc/jhbc*100:0)+"%");
1742 tempMap.put("jfbc", jfbc); 1740 tempMap.put("jfbc", jfbc);
1743 tempMap.put("jflc", jflc.doubleValue()); 1741 tempMap.put("jflc", jflc.doubleValue());
1744 - tempMap.put("jfbfb", df.format(flag?(double)jfbc/jhbc*100:0)+"%"); 1742 + tempMap.put("jfbfb", df.format(jhbc>0?(double)jfbc/jhbc*100:0)+"%");
1745 tempMap.put("zsbc", zsbc); 1743 tempMap.put("zsbc", zsbc);
1746 tempMap.put("zslc", zslc.doubleValue()); 1744 tempMap.put("zslc", zslc.doubleValue());
1747 - tempMap.put("zsbfb", df.format(flag?(double)zsbc/jhbc*100:0)+"%"); 1745 + tempMap.put("zsbfb", df.format(jhbc>0?(double)zsbc/jhbc*100:0)+"%");
1748 tempMap.put("qrbc", qrbc); 1746 tempMap.put("qrbc", qrbc);
1749 tempMap.put("qrlc", qrlc.doubleValue()); 1747 tempMap.put("qrlc", qrlc.doubleValue());
1750 - tempMap.put("qrbfb", df.format(flag?(double)qrbc/jhbc*100:0)+"%"); 1748 + tempMap.put("qrbfb", df.format(jhbc>0?(double)qrbc/jhbc*100:0)+"%");
1751 tempMap.put("qcbc", qcbc); 1749 tempMap.put("qcbc", qcbc);
1752 tempMap.put("qclc", qclc.doubleValue()); 1750 tempMap.put("qclc", qclc.doubleValue());
1753 - tempMap.put("qcbfb", df.format(flag?(double)qcbc/jhbc*100:0)+"%"); 1751 + tempMap.put("qcbfb", df.format(jhbc>0?(double)qcbc/jhbc*100:0)+"%");
1754 tempMap.put("kxbc", kxbc); 1752 tempMap.put("kxbc", kxbc);
1755 tempMap.put("kxlc", kxlc.doubleValue()); 1753 tempMap.put("kxlc", kxlc.doubleValue());
1756 - tempMap.put("kxbfb", df.format(flag?(double)kxbc/jhbc*100:0)+"%"); 1754 + tempMap.put("kxbfb", df.format(jhbc>0?(double)kxbc/jhbc*100:0)+"%");
1757 tempMap.put("qhbc", qhbc); 1755 tempMap.put("qhbc", qhbc);
1758 tempMap.put("qhlc", qhlc.doubleValue()); 1756 tempMap.put("qhlc", qhlc.doubleValue());
1759 - tempMap.put("qhbfb", df.format(flag?(double)qhbc/jhbc*100:0)+"%"); 1757 + tempMap.put("qhbfb", df.format(jhbc>0?(double)qhbc/jhbc*100:0)+"%");
1760 tempMap.put("wybc", wybc); 1758 tempMap.put("wybc", wybc);
1761 tempMap.put("wylc", wylc.doubleValue()); 1759 tempMap.put("wylc", wylc.doubleValue());
1762 - tempMap.put("wybfb", df.format(flag?(double)wybc/jhbc*100:0)+"%"); 1760 + tempMap.put("wybfb", df.format(jhbc>0?(double)wybc/jhbc*100:0)+"%");
1763 tempMap.put("qtbc", qtbc); 1761 tempMap.put("qtbc", qtbc);
1764 tempMap.put("qtlc", qtlc.doubleValue()); 1762 tempMap.put("qtlc", qtlc.doubleValue());
1765 - tempMap.put("qtbfb", df.format(flag?(double)qtbc/jhbc*100:0)+"%"); 1763 + tempMap.put("qtbfb", df.format(jhbc>0?(double)qtbc/jhbc*100:0)+"%");
1766 1764
1767 resList.add(tempMap); 1765 resList.add(tempMap);
1768 } 1766 }
@@ -1784,7 +1782,6 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -1784,7 +1782,6 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1784 e.printStackTrace(); 1782 e.printStackTrace();
1785 } 1783 }
1786 } 1784 }
1787 - System.out.println(map);  
1788 1785
1789 return resList; 1786 return resList;
1790 } 1787 }
src/main/java/com/bsth/service/impl/TrafficManageServiceImpl.java
@@ -279,14 +279,30 @@ public class TrafficManageServiceImpl implements TrafficManageService{ @@ -279,14 +279,30 @@ public class TrafficManageServiceImpl implements TrafficManageService{
279 } 279 }
280 280
281 /** 281 /**
  282 + * 上传路单 指定日期 yyyy-MM-dd
  283 + * @param theDate
  284 + * @return
  285 + */
  286 + public String setLD(String theDate){
  287 + return uploadLD(theDate);
  288 + }
  289 +
  290 + /**
  291 + * 上传路单 上传前一天的路单
  292 + * @return
  293 + */
  294 + public String setLD(){
  295 + return uploadLD(null);
  296 + }
  297 + /**
282 * 上传路单 298 * 上传路单
283 * @return 上传成功标识 299 * @return 上传成功标识
284 */ 300 */
285 - public String setLD(){ 301 + private String uploadLD(String theDate){
286 String result = "failure"; 302 String result = "failure";
287 Line line; 303 Line line;
288 // 取昨天 的日期 304 // 取昨天 的日期
289 - String date = sdfnyr.format(DateUtils.addDays(new Date(), -1)); 305 + String date = theDate == null ?sdfnyr.format(DateUtils.addDays(new Date(), -1)) : theDate;
290 StringBuffer sf = new StringBuffer(); 306 StringBuffer sf = new StringBuffer();
291 String str; 307 String str;
292 try { 308 try {
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
@@ -24,6 +24,7 @@ import com.bsth.data.utils.CustomStringUtils; @@ -24,6 +24,7 @@ import com.bsth.data.utils.CustomStringUtils;
24 import com.bsth.entity.Cars; 24 import com.bsth.entity.Cars;
25 import com.bsth.entity.Line; 25 import com.bsth.entity.Line;
26 import com.bsth.entity.Personnel; 26 import com.bsth.entity.Personnel;
  27 +import com.bsth.entity.mcy_forms.Waybillday;
27 import com.bsth.entity.oil.Dlb; 28 import com.bsth.entity.oil.Dlb;
28 import com.bsth.entity.oil.Ylb; 29 import com.bsth.entity.oil.Ylb;
29 import com.bsth.entity.oil.Ylxxb; 30 import com.bsth.entity.oil.Ylxxb;
@@ -789,13 +790,13 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -789,13 +790,13 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
789 + " select min(s.id) as id,s.j_Gh as jGh,s.cl_Zbh as clZbh, " 790 + " select min(s.id) as id,s.j_Gh as jGh,s.cl_Zbh as clZbh, "
790 + " s.lp_Name as lpName,s.j_Name as jName,max(s.schedule_date_str) as dateStr ," 791 + " s.lp_Name as lpName,s.j_Name as jName,max(s.schedule_date_str) as dateStr ,"
791 + " min(s.fcsj) as fcsj,1 as px from bsth_c_s_sp_info_real s where " 792 + " min(s.fcsj) as fcsj,1 as px from bsth_c_s_sp_info_real s where "
792 - + " s.xl_Bm = '"+line+"' and DATE_FORMAT(s.schedule_Date,'%Y-%m-%d') ='"+date+"'" 793 + + " s.xl_Bm = '"+line+"' and s.schedule_date_str ='"+date+"'"
793 + " GROUP BY s.j_Gh,s.cl_Zbh,s.lp_Name ,s.j_Name ) x where x.fcsj >'"+minfcsj+"'" 794 + " GROUP BY s.j_Gh,s.cl_Zbh,s.lp_Name ,s.j_Name ) x where x.fcsj >'"+minfcsj+"'"
794 + " UNION " 795 + " UNION "
795 + " select * from ( select min(s.id) as id,s.j_Gh as jGh,s.cl_Zbh as clZbh, " 796 + " select * from ( select min(s.id) as id,s.j_Gh as jGh,s.cl_Zbh as clZbh, "
796 + " s.lp_Name as lpName,s.j_Name as jName, max(s.schedule_date_str) as dateStr," 797 + " s.lp_Name as lpName,s.j_Name as jName, max(s.schedule_date_str) as dateStr,"
797 + " min(s.fcsj) as fcsj,2 as px from bsth_c_s_sp_info_real s " 798 + " min(s.fcsj) as fcsj,2 as px from bsth_c_s_sp_info_real s "
798 - + " where s.xl_Bm = '"+line+"' and DATE_FORMAT(s.schedule_Date,'%Y-%m-%d') ='"+date+"'" 799 + + " where s.xl_Bm = '"+line+"' and s.schedule_date_str ='"+date+"'"
799 + " GROUP BY s.j_Gh,s.cl_Zbh,s.lp_Name ,s.j_Name " 800 + " GROUP BY s.j_Gh,s.cl_Zbh,s.lp_Name ,s.j_Name "
800 + " ) y where y.fcsj <='"+minfcsj+"') z order by (" + state + "),dateStr,px " + type; 801 + " ) y where y.fcsj <='"+minfcsj+"') z order by (" + state + "),dateStr,px " + type;
801 List<ScheduleRealInfo> list = jdbcTemplate.query(sqlPlan, 802 List<ScheduleRealInfo> list = jdbcTemplate.query(sqlPlan,
@@ -2944,17 +2945,13 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2944,17 +2945,13 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2944 }else{ 2945 }else{
2945 yesterdayDataList=scheduleRealInfoRepository.yesterdayDataList_eq(line, date,gsbm,fgsbm,nbbm); 2946 yesterdayDataList=scheduleRealInfoRepository.yesterdayDataList_eq(line, date,gsbm,fgsbm,nbbm);
2946 } 2947 }
2947 -  
2948 -// System.out.println("shijian2:"+new Date());  
2949 - // List<ScheduleRealInfo> list = scheduleRealInfoRepository.scheduleByDateAndLine(line, date); 2948 + System.out.println("time2:"+new Date());
  2949 +
2950 List<ScheduleRealInfo> lists = scheduleRealInfoRepository.queryListWaybill3(jGh, nbbm, date,gsbm,fgsbm); 2950 List<ScheduleRealInfo> lists = scheduleRealInfoRepository.queryListWaybill3(jGh, nbbm, date,gsbm,fgsbm);
2951 -// System.out.println("shijian3:"+new Date());  
2952 for (int x = 0; x < yesterdayDataList.size(); x++) { 2951 for (int x = 0; x < yesterdayDataList.size(); x++) {
2953 String jName = yesterdayDataList.get(x).get("jGh").toString(); 2952 String jName = yesterdayDataList.get(x).get("jGh").toString();
2954 String clZbh = yesterdayDataList.get(x).get("clZbh").toString(); 2953 String clZbh = yesterdayDataList.get(x).get("clZbh").toString();
2955 String xlbm = yesterdayDataList.get(x).get("xlBm").toString(); 2954 String xlbm = yesterdayDataList.get(x).get("xlBm").toString();
2956 -// double jhlc = 0, yygl = 0, ksgl = 0, tempJhlc = 0, jcclc = 0;  
2957 - double addMileage = 0, remMileage = 0;  
2958 Map<String, Object> map = new HashMap<String, Object>(); 2955 Map<String, Object> map = new HashMap<String, Object>();
2959 boolean fage = true; 2956 boolean fage = true;
2960 String company=""; 2957 String company="";
@@ -2982,7 +2979,6 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2982,7 +2979,6 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2982 2979
2983 yesterdayDataList.get(x).put("company", company); 2980 yesterdayDataList.get(x).put("company", company);
2984 yesterdayDataList.get(x).put("bCompany", bCompany); 2981 yesterdayDataList.get(x).put("bCompany", bCompany);
2985 -// Double zgl=Arith.add(yygl,ksgl);  
2986 Double ljgl=culateMieageService.culateLjgl(listS); 2982 Double ljgl=culateMieageService.culateLjgl(listS);
2987 Double sjgl=culateMieageService.culateSjgl(listS); 2983 Double sjgl=culateMieageService.culateSjgl(listS);
2988 Double ksgl=culateMieageService.culateKsgl(listS); 2984 Double ksgl=culateMieageService.culateKsgl(listS);
@@ -2993,15 +2989,6 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2993,15 +2989,6 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2993 yesterdayDataList.get(x).put("totalKilometers", zlc); 2989 yesterdayDataList.get(x).put("totalKilometers", zlc);
2994 2990
2995 } 2991 }
2996 - /* List<Map<String, Object>> yesterdayDataLists = new ArrayList<Map<String, Object>>();  
2997 -  
2998 - for (int i = 0; i < yesterdayDataList.size(); i++) {  
2999 - Map<String, Object> map=yesterdayDataList.get(i);  
3000 - Double zlc=map.get("totalKilometers")==null?0.0:Double.parseDouble(map.get("totalKilometers").toString());  
3001 -// if(zlc>0){  
3002 - yesterdayDataLists.add(map);  
3003 -// }  
3004 - }*/  
3005 //增加顺序号 2992 //增加顺序号
3006 for (int i = 0; i < yesterdayDataList.size(); i++) { 2993 for (int i = 0; i < yesterdayDataList.size(); i++) {
3007 if (i == 0) { 2994 if (i == 0) {
src/main/resources/datatools/ktrs/employeesConfigDataInput.ktr
1 -<?xml version="1.0" encoding="UTF-8"?>  
2 -<transformation>  
3 - <info>  
4 - <name>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</name>  
5 - <description>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description>  
6 - <extended_description>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#x4fe1;&#x606f;</extended_description>  
7 - <trans_version/>  
8 - <trans_type>Normal</trans_type>  
9 - <trans_status>0</trans_status>  
10 - <directory>&#x2f;</directory>  
11 - <parameters>  
12 - <parameter>  
13 - <name>erroroutputdir</name>  
14 - <default_value/>  
15 - <description>ktr step&#x914d;&#x7f6e;&#x7684;&#x9519;&#x8bef;&#x8f93;&#x51fa;&#x76ee;&#x5f55;</description>  
16 - </parameter>  
17 - <parameter>  
18 - <name>filepath</name>  
19 - <default_value/>  
20 - <description>&#x5f85;&#x5904;&#x7406;&#x5bfc;&#x5165;&#x7684;excel&#x6587;&#x4ef6;</description>  
21 - </parameter>  
22 - </parameters>  
23 - <log>  
24 -<trans-log-table><connection/>  
25 -<schema/>  
26 -<table/>  
27 -<size_limit_lines/>  
28 -<interval/>  
29 -<timeout_days/>  
30 -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table>  
31 -<perf-log-table><connection/>  
32 -<schema/>  
33 -<table/>  
34 -<interval/>  
35 -<timeout_days/>  
36 -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table>  
37 -<channel-log-table><connection/>  
38 -<schema/>  
39 -<table/>  
40 -<timeout_days/>  
41 -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table>  
42 -<step-log-table><connection/>  
43 -<schema/>  
44 -<table/>  
45 -<timeout_days/>  
46 -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table>  
47 -<metrics-log-table><connection/>  
48 -<schema/>  
49 -<table/>  
50 -<timeout_days/>  
51 -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table>  
52 - </log>  
53 - <maxdate>  
54 - <connection/>  
55 - <table/>  
56 - <field/>  
57 - <offset>0.0</offset>  
58 - <maxdiff>0.0</maxdiff>  
59 - </maxdate>  
60 - <size_rowset>10000</size_rowset>  
61 - <sleep_time_empty>50</sleep_time_empty>  
62 - <sleep_time_full>50</sleep_time_full>  
63 - <unique_connections>N</unique_connections>  
64 - <feedback_shown>Y</feedback_shown>  
65 - <feedback_size>50000</feedback_size>  
66 - <using_thread_priorities>Y</using_thread_priorities>  
67 - <shared_objects_file/>  
68 - <capture_step_performance>N</capture_step_performance>  
69 - <step_performance_capturing_delay>1000</step_performance_capturing_delay>  
70 - <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>  
71 - <dependencies>  
72 - </dependencies>  
73 - <partitionschemas>  
74 - </partitionschemas>  
75 - <slaveservers>  
76 - </slaveservers>  
77 - <clusterschemas>  
78 - </clusterschemas>  
79 - <created_user>-</created_user>  
80 - <created_date>2016&#x2f;06&#x2f;29 15&#x3a;12&#x3a;27.273</created_date>  
81 - <modified_user>-</modified_user>  
82 - <modified_date>2016&#x2f;06&#x2f;29 15&#x3a;12&#x3a;27.273</modified_date>  
83 - <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>  
84 - <is_key_private>N</is_key_private>  
85 - </info>  
86 - <notepads>  
87 - <notepad>  
88 - <note>&#x8fd9;&#x91cc;&#x6709;&#x4e9b;&#x95ee;&#x9898;&#xa;&#x5728;window2012&#x7684;&#x73af;&#x5883;&#x4e0b;&#xff0c;&#xa;MySql&#x6570;&#x636e;&#x5e93;&#x67e5;&#x8be2;&#x4e2d;&#x5982;&#x679c;&#x8fd4;&#x56de;&#x4e2d;&#x6587;&#x5185;&#x5bb9;&#x7684;&#x5b57;&#x6bb5;&#xff0c;&#x8fd9;&#x4e2a;&#x5185;&#x5bb9;&#x4e71;&#x7801;&#xa;&#x89e3;&#x51b3;&#x529e;&#x6cd5;&#xff0c;&#x5c31;&#x662f;&#x6570;&#x636e;&#x5e93;&#x67e5;&#x8be2;&#x5168;&#x90e8;&#x7f13;&#x5b58;&#xff0c;&#x5c31;&#x4e0d;&#x4e71;&#x7801;&#xa;linux&#x73af;&#x5883;&#x4e0b;&#x6ca1;&#x95ee;&#x9898;</note>  
89 - <xloc>101</xloc>  
90 - <yloc>264</yloc>  
91 - <width>333</width>  
92 - <heigth>90</heigth>  
93 - <fontname>YaHei Consolas Hybrid</fontname>  
94 - <fontsize>12</fontsize>  
95 - <fontbold>N</fontbold>  
96 - <fontitalic>N</fontitalic>  
97 - <fontcolorred>0</fontcolorred>  
98 - <fontcolorgreen>0</fontcolorgreen>  
99 - <fontcolorblue>0</fontcolorblue>  
100 - <backgroundcolorred>255</backgroundcolorred>  
101 - <backgroundcolorgreen>205</backgroundcolorgreen>  
102 - <backgroundcolorblue>112</backgroundcolorblue>  
103 - <bordercolorred>100</bordercolorred>  
104 - <bordercolorgreen>100</bordercolorgreen>  
105 - <bordercolorblue>100</bordercolorblue>  
106 - <drawshadow>Y</drawshadow>  
107 - </notepad>  
108 - </notepads>  
109 - <connection>  
110 - <name>bus_control_variable</name>  
111 - <server>&#x24;&#x7b;v_db_ip&#x7d;</server>  
112 - <type>MYSQL</type>  
113 - <access>Native</access>  
114 - <database>&#x24;&#x7b;v_db_dname&#x7d;</database>  
115 - <port>3306</port>  
116 - <username>&#x24;&#x7b;v_db_uname&#x7d;</username>  
117 - <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>  
118 - <servername/>  
119 - <data_tablespace/>  
120 - <index_tablespace/>  
121 - <attributes>  
122 - <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>  
123 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
124 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
125 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
126 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
127 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
128 - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>  
129 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
130 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
131 - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>  
132 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>  
133 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>  
134 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
135 - </attributes>  
136 - </connection>  
137 - <connection>  
138 - <name>bus_control_&#x516c;&#x53f8;_201</name>  
139 - <server>localhost</server>  
140 - <type>MYSQL</type>  
141 - <access>Native</access>  
142 - <database>control</database>  
143 - <port>3306</port>  
144 - <username>root</username>  
145 - <password>Encrypted </password>  
146 - <servername/>  
147 - <data_tablespace/>  
148 - <index_tablespace/>  
149 - <attributes>  
150 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
151 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
152 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
153 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
154 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
155 - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>  
156 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
157 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
158 - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>  
159 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>  
160 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>  
161 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
162 - </attributes>  
163 - </connection>  
164 - <connection>  
165 - <name>bus_control_&#x672c;&#x673a;</name>  
166 - <server>localhost</server>  
167 - <type>MYSQL</type>  
168 - <access>Native</access>  
169 - <database>control</database>  
170 - <port>3306</port>  
171 - <username>root</username>  
172 - <password>Encrypted </password>  
173 - <servername/>  
174 - <data_tablespace/>  
175 - <index_tablespace/>  
176 - <attributes>  
177 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
178 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
179 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
180 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
181 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
182 - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>  
183 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
184 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
185 - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>  
186 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>  
187 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>  
188 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
189 - </attributes>  
190 - </connection>  
191 - <connection>  
192 - <name>xlab_mysql_youle</name>  
193 - <server>101.231.124.8</server>  
194 - <type>MYSQL</type>  
195 - <access>Native</access>  
196 - <database>xlab_youle</database>  
197 - <port>45687</port>  
198 - <username>xlab-youle</username>  
199 - <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>  
200 - <servername/>  
201 - <data_tablespace/>  
202 - <index_tablespace/>  
203 - <attributes>  
204 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
205 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
206 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
207 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
208 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
209 - <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>  
210 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
211 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
212 - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>  
213 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>  
214 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>  
215 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
216 - </attributes>  
217 - </connection>  
218 - <connection>  
219 - <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>  
220 - <server>localhost</server>  
221 - <type>MYSQL</type>  
222 - <access>Native</access>  
223 - <database>xlab_youle</database>  
224 - <port>3306</port>  
225 - <username>root</username>  
226 - <password>Encrypted </password>  
227 - <servername/>  
228 - <data_tablespace/>  
229 - <index_tablespace/>  
230 - <attributes>  
231 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
232 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
233 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
234 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
235 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
236 - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>  
237 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
238 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
239 - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>  
240 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>  
241 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>  
242 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
243 - </attributes>  
244 - </connection>  
245 - <connection>  
246 - <name>xlab_youle</name>  
247 - <server/>  
248 - <type>MYSQL</type>  
249 - <access>JNDI</access>  
250 - <database>xlab_youle</database>  
251 - <port>1521</port>  
252 - <username/>  
253 - <password>Encrypted </password>  
254 - <servername/>  
255 - <data_tablespace/>  
256 - <index_tablespace/>  
257 - <attributes>  
258 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
259 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
260 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
261 - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>  
262 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
263 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
264 - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>  
265 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>  
266 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>  
267 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
268 - </attributes>  
269 - </connection>  
270 - <order>  
271 - <hop> <from>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>  
272 - <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>  
273 - <hop> <from>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</from><to>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</to><enabled>Y</enabled> </hop>  
274 - <hop> <from>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</from><to>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>  
275 - <hop> <from>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</from><to>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>  
276 - <hop> <from>&#x9a7e;&#x9a76;&#x5458;id&#x67e5;&#x627e;</from><to>&#x8fc7;&#x6ee4;&#x9a7e;&#x9a76;&#x5458;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>  
277 - <hop> <from>&#x8fc7;&#x6ee4;&#x9a7e;&#x9a76;&#x5458;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</from><to>&#x552e;&#x7968;&#x5458;id&#x67e5;&#x627e;</to><enabled>Y</enabled> </hop>  
278 - <hop> <from>&#x552e;&#x7968;&#x5458;id&#x67e5;&#x627e;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</to><enabled>Y</enabled> </hop>  
279 - <hop> <from>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</from><to>&#x5de5;&#x53f7;&#x6570;&#x636e;&#x5904;&#x7406;</to><enabled>Y</enabled> </hop>  
280 - <hop> <from>&#x5de5;&#x53f7;&#x6570;&#x636e;&#x5904;&#x7406;</from><to>&#x9a7e;&#x9a76;&#x5458;id&#x67e5;&#x627e;</to><enabled>Y</enabled> </hop>  
281 - </order>  
282 - <step>  
283 - <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name>  
284 - <type>ExcelInput</type>  
285 - <description/>  
286 - <distribute>Y</distribute>  
287 - <custom_distribution/>  
288 - <copies>1</copies>  
289 - <partitioning>  
290 - <method>none</method>  
291 - <schema_name/>  
292 - </partitioning>  
293 - <header>Y</header>  
294 - <noempty>Y</noempty>  
295 - <stoponempty>N</stoponempty>  
296 - <filefield/>  
297 - <sheetfield/>  
298 - <sheetrownumfield/>  
299 - <rownumfield/>  
300 - <sheetfield/>  
301 - <filefield/>  
302 - <limit>0</limit>  
303 - <encoding/>  
304 - <add_to_result_filenames>Y</add_to_result_filenames>  
305 - <accept_filenames>Y</accept_filenames>  
306 - <accept_field>filepath_</accept_field>  
307 - <accept_stepname>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</accept_stepname>  
308 - <file>  
309 - <name/>  
310 - <filemask/>  
311 - <exclude_filemask/>  
312 - <file_required>N</file_required>  
313 - <include_subfolders>N</include_subfolders>  
314 - </file>  
315 - <fields>  
316 - <field>  
317 - <name>&#x7ebf;&#x8def;</name>  
318 - <type>String</type>  
319 - <length>-1</length>  
320 - <precision>-1</precision>  
321 - <trim_type>none</trim_type>  
322 - <repeat>N</repeat>  
323 - <format/>  
324 - <currency/>  
325 - <decimal/>  
326 - <group/>  
327 - </field>  
328 - <field>  
329 - <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>  
330 - <type>String</type>  
331 - <length>-1</length>  
332 - <precision>-1</precision>  
333 - <trim_type>none</trim_type>  
334 - <repeat>N</repeat>  
335 - <format>&#x23;</format>  
336 - <currency/>  
337 - <decimal/>  
338 - <group/>  
339 - </field>  
340 - <field>  
341 - <name>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</name>  
342 - <type>String</type>  
343 - <length>-1</length>  
344 - <precision>-1</precision>  
345 - <trim_type>none</trim_type>  
346 - <repeat>N</repeat>  
347 - <format>&#x23;</format>  
348 - <currency/>  
349 - <decimal/>  
350 - <group/>  
351 - </field>  
352 - <field>  
353 - <name>&#x9a7e;&#x9a76;&#x5458;</name>  
354 - <type>String</type>  
355 - <length>-1</length>  
356 - <precision>-1</precision>  
357 - <trim_type>none</trim_type>  
358 - <repeat>N</repeat>  
359 - <format/>  
360 - <currency/>  
361 - <decimal/>  
362 - <group/>  
363 - </field>  
364 - <field>  
365 - <name>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</name>  
366 - <type>String</type>  
367 - <length>-1</length>  
368 - <precision>-1</precision>  
369 - <trim_type>none</trim_type>  
370 - <repeat>N</repeat>  
371 - <format>&#x23;</format>  
372 - <currency/>  
373 - <decimal/>  
374 - <group/>  
375 - </field>  
376 - <field>  
377 - <name>&#x552e;&#x7968;&#x5458;</name>  
378 - <type>String</type>  
379 - <length>-1</length>  
380 - <precision>-1</precision>  
381 - <trim_type>none</trim_type>  
382 - <repeat>N</repeat>  
383 - <format/>  
384 - <currency/>  
385 - <decimal/>  
386 - <group/>  
387 - </field>  
388 - </fields>  
389 - <sheets>  
390 - <sheet>  
391 - <name>&#x5de5;&#x4f5c;&#x8868;1</name>  
392 - <startrow>0</startrow>  
393 - <startcol>0</startcol>  
394 - </sheet>  
395 - </sheets>  
396 - <strict_types>N</strict_types>  
397 - <error_ignored>N</error_ignored>  
398 - <error_line_skipped>N</error_line_skipped>  
399 - <bad_line_files_destination_directory/>  
400 - <bad_line_files_extension>warning</bad_line_files_extension>  
401 - <error_line_files_destination_directory/>  
402 - <error_line_files_extension>error</error_line_files_extension>  
403 - <line_number_files_destination_directory/>  
404 - <line_number_files_extension>line</line_number_files_extension>  
405 - <shortFileFieldName/>  
406 - <pathFieldName/>  
407 - <hiddenFieldName/>  
408 - <lastModificationTimeFieldName/>  
409 - <uriNameFieldName/>  
410 - <rootUriNameFieldName/>  
411 - <extensionFieldName/>  
412 - <sizeFieldName/>  
413 - <spreadsheet_type>JXL</spreadsheet_type>  
414 - <cluster_schema/>  
415 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
416 - <xloc>93</xloc>  
417 - <yloc>51</yloc>  
418 - <draw>Y</draw>  
419 - </GUI>  
420 - </step>  
421 -  
422 - <step>  
423 - <name>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</name>  
424 - <type>Constant</type>  
425 - <description/>  
426 - <distribute>Y</distribute>  
427 - <custom_distribution/>  
428 - <copies>1</copies>  
429 - <partitioning>  
430 - <method>none</method>  
431 - <schema_name/>  
432 - </partitioning>  
433 - <fields>  
434 - <field>  
435 - <name>isCancel</name>  
436 - <type>Integer</type>  
437 - <format/>  
438 - <currency/>  
439 - <decimal/>  
440 - <group/>  
441 - <nullif>0</nullif>  
442 - <length>-1</length>  
443 - <precision>-1</precision>  
444 - <set_empty_string>N</set_empty_string>  
445 - </field>  
446 - </fields>  
447 - <cluster_schema/>  
448 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
449 - <xloc>225</xloc>  
450 - <yloc>53</yloc>  
451 - <draw>Y</draw>  
452 - </GUI>  
453 - </step>  
454 -  
455 - <step>  
456 - <name>&#x552e;&#x7968;&#x5458;id&#x67e5;&#x627e;</name>  
457 - <type>DBJoin</type>  
458 - <description/>  
459 - <distribute>Y</distribute>  
460 - <custom_distribution/>  
461 - <copies>1</copies>  
462 - <partitioning>  
463 - <method>none</method>  
464 - <schema_name/>  
465 - </partitioning>  
466 - <connection>bus_control_variable</connection>  
467 - <rowlimit>1</rowlimit>  
468 - <sql>select id as sid from bsth_c_personnel&#xa;where job_code like &#x3f; and personnel_name &#x3d; &#x3f;</sql>  
469 - <outer_join>Y</outer_join>  
470 - <replace_vars>N</replace_vars>  
471 - <parameter>  
472 - <field>  
473 - <name>sgh_temp</name>  
474 - <type>String</type>  
475 - </field>  
476 - <field>  
477 - <name>&#x552e;&#x7968;&#x5458;</name>  
478 - <type>String</type>  
479 - </field>  
480 - </parameter>  
481 - <cluster_schema/>  
482 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
483 - <xloc>830</xloc>  
484 - <yloc>45</yloc>  
485 - <draw>Y</draw>  
486 - </GUI>  
487 - </step>  
488 -  
489 - <step>  
490 - <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</name>  
491 - <type>InsertUpdate</type>  
492 - <description/>  
493 - <distribute>Y</distribute>  
494 - <custom_distribution/>  
495 - <copies>1</copies>  
496 - <partitioning>  
497 - <method>none</method>  
498 - <schema_name/>  
499 - </partitioning>  
500 - <connection>bus_control_variable</connection>  
501 - <commit>100</commit>  
502 - <update_bypassed>N</update_bypassed>  
503 - <lookup>  
504 - <schema/>  
505 - <table>bsth_c_s_ecinfo</table>  
506 - <key>  
507 - <name>xlid</name>  
508 - <field>xl</field>  
509 - <condition>&#x3d;</condition>  
510 - <name2/>  
511 - </key>  
512 - <key>  
513 - <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>  
514 - <field>dbbm</field>  
515 - <condition>&#x3d;</condition>  
516 - <name2/>  
517 - </key>  
518 - <key>  
519 - <name>isCancel</name>  
520 - <field>is_cancel</field>  
521 - <condition>&#x3d;</condition>  
522 - <name2/>  
523 - </key>  
524 - <value>  
525 - <name>xl</name>  
526 - <rename>xlid</rename>  
527 - <update>N</update>  
528 - </value>  
529 - <value>  
530 - <name>dbbm</name>  
531 - <rename>&#x642d;&#x73ed;&#x7f16;&#x7801;</rename>  
532 - <update>N</update>  
533 - </value>  
534 - <value>  
535 - <name>jsy</name>  
536 - <rename>jid</rename>  
537 - <update>N</update>  
538 - </value>  
539 - <value>  
540 - <name>spy</name>  
541 - <rename>sid</rename>  
542 - <update>N</update>  
543 - </value>  
544 - <value>  
545 - <name>is_cancel</name>  
546 - <rename>isCancel</rename>  
547 - <update>N</update>  
548 - </value>  
549 - </lookup>  
550 - <cluster_schema/>  
551 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
552 - <xloc>833</xloc>  
553 - <yloc>198</yloc>  
554 - <draw>Y</draw>  
555 - </GUI>  
556 - </step>  
557 -  
558 - <step>  
559 - <name>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</name>  
560 - <type>DBLookup</type>  
561 - <description/>  
562 - <distribute>Y</distribute>  
563 - <custom_distribution/>  
564 - <copies>1</copies>  
565 - <partitioning>  
566 - <method>none</method>  
567 - <schema_name/>  
568 - </partitioning>  
569 - <connection>bus_control_variable</connection>  
570 - <cache>Y</cache>  
571 - <cache_load_all>Y</cache_load_all>  
572 - <cache_size>0</cache_size>  
573 - <lookup>  
574 - <schema/>  
575 - <table>bsth_c_line</table>  
576 - <orderby/>  
577 - <fail_on_multiple>N</fail_on_multiple>  
578 - <eat_row_on_failure>N</eat_row_on_failure>  
579 - <key>  
580 - <name>&#x7ebf;&#x8def;</name>  
581 - <field>name</field>  
582 - <condition>&#x3d;</condition>  
583 - <name2/>  
584 - </key>  
585 - <key>  
586 - <name>isCancel</name>  
587 - <field>destroy</field>  
588 - <condition>&#x3d;</condition>  
589 - <name2/>  
590 - </key>  
591 - <value>  
592 - <name>id</name>  
593 - <rename>xlid</rename>  
594 - <default/>  
595 - <type>Integer</type>  
596 - </value>  
597 - </lookup>  
598 - <cluster_schema/>  
599 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
600 - <xloc>397</xloc>  
601 - <yloc>144</yloc>  
602 - <draw>Y</draw>  
603 - </GUI>  
604 - </step>  
605 -  
606 - <step>  
607 - <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>  
608 - <type>GetVariable</type>  
609 - <description/>  
610 - <distribute>Y</distribute>  
611 - <custom_distribution/>  
612 - <copies>1</copies>  
613 - <partitioning>  
614 - <method>none</method>  
615 - <schema_name/>  
616 - </partitioning>  
617 - <fields>  
618 - <field>  
619 - <name>filepath_</name>  
620 - <variable>&#x24;&#x7b;filepath&#x7d;</variable>  
621 - <type>String</type>  
622 - <format/>  
623 - <currency/>  
624 - <decimal/>  
625 - <group/>  
626 - <length>-1</length>  
627 - <precision>-1</precision>  
628 - <trim_type>none</trim_type>  
629 - </field>  
630 - <field>  
631 - <name>erroroutputdir_</name>  
632 - <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>  
633 - <type>String</type>  
634 - <format/>  
635 - <currency/>  
636 - <decimal/>  
637 - <group/>  
638 - <length>-1</length>  
639 - <precision>-1</precision>  
640 - <trim_type>none</trim_type>  
641 - </field>  
642 - </fields>  
643 - <cluster_schema/>  
644 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
645 - <xloc>94</xloc>  
646 - <yloc>178</yloc>  
647 - <draw>Y</draw>  
648 - </GUI>  
649 - </step>  
650 -  
651 - <step>  
652 - <name>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>  
653 - <type>FilterRows</type>  
654 - <description/>  
655 - <distribute>Y</distribute>  
656 - <custom_distribution/>  
657 - <copies>1</copies>  
658 - <partitioning>  
659 - <method>none</method>  
660 - <schema_name/>  
661 - </partitioning>  
662 -<send_true_to/>  
663 -<send_false_to/>  
664 - <compare>  
665 -<condition>  
666 - <negated>N</negated>  
667 - <leftvalue>xlid</leftvalue>  
668 - <function>IS NOT NULL</function>  
669 - <rightvalue/>  
670 - </condition>  
671 - </compare>  
672 - <cluster_schema/>  
673 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
674 - <xloc>395</xloc>  
675 - <yloc>49</yloc>  
676 - <draw>Y</draw>  
677 - </GUI>  
678 - </step>  
679 -  
680 - <step>  
681 - <name>&#x8fc7;&#x6ee4;&#x9a7e;&#x9a76;&#x5458;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>  
682 - <type>FilterRows</type>  
683 - <description/>  
684 - <distribute>Y</distribute>  
685 - <custom_distribution/>  
686 - <copies>1</copies>  
687 - <partitioning>  
688 - <method>none</method>  
689 - <schema_name/>  
690 - </partitioning>  
691 -<send_true_to>&#x552e;&#x7968;&#x5458;id&#x67e5;&#x627e;</send_true_to>  
692 -<send_false_to/>  
693 - <compare>  
694 -<condition>  
695 - <negated>N</negated>  
696 - <leftvalue>jid</leftvalue>  
697 - <function>IS NOT NULL</function>  
698 - <rightvalue/>  
699 - </condition>  
700 - </compare>  
701 - <cluster_schema/>  
702 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
703 - <xloc>695</xloc>  
704 - <yloc>45</yloc>  
705 - <draw>Y</draw>  
706 - </GUI>  
707 - </step>  
708 -  
709 - <step>  
710 - <name>&#x9519;&#x8bef;&#x8f93;&#x51fa;</name>  
711 - <type>ExcelOutput</type>  
712 - <description/>  
713 - <distribute>Y</distribute>  
714 - <custom_distribution/>  
715 - <copies>1</copies>  
716 - <partitioning>  
717 - <method>none</method>  
718 - <schema_name/>  
719 - </partitioning>  
720 - <header>Y</header>  
721 - <footer>N</footer>  
722 - <encoding>UTF-8</encoding>  
723 - <append>N</append>  
724 - <add_to_result_filenames>Y</add_to_result_filenames>  
725 - <file>  
726 - <name>&#x24;&#x7b;erroroutputdir&#x7d;&#x2f;&#x4eba;&#x5458;&#x914d;&#x7f6e;_&#x9519;&#x8bef;</name>  
727 - <extention>xls</extention>  
728 - <do_not_open_newfile_init>N</do_not_open_newfile_init>  
729 - <create_parent_folder>N</create_parent_folder>  
730 - <split>N</split>  
731 - <add_date>N</add_date>  
732 - <add_time>N</add_time>  
733 - <SpecifyFormat>N</SpecifyFormat>  
734 - <date_time_format/>  
735 - <sheetname>Sheet1</sheetname>  
736 - <autosizecolums>N</autosizecolums>  
737 - <nullisblank>N</nullisblank>  
738 - <protect_sheet>N</protect_sheet>  
739 - <password>Encrypted </password>  
740 - <splitevery>0</splitevery>  
741 - <usetempfiles>N</usetempfiles>  
742 - <tempdirectory/>  
743 - </file>  
744 - <template>  
745 - <enabled>N</enabled>  
746 - <append>N</append>  
747 - <filename>template.xls</filename>  
748 - </template>  
749 - <fields>  
750 - <field>  
751 - <name>&#x7ebf;&#x8def;</name>  
752 - <type>String</type>  
753 - <format/>  
754 - </field>  
755 - <field>  
756 - <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>  
757 - <type>String</type>  
758 - <format/>  
759 - </field>  
760 - <field>  
761 - <name>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</name>  
762 - <type>String</type>  
763 - <format/>  
764 - </field>  
765 - <field>  
766 - <name>&#x9a7e;&#x9a76;&#x5458;</name>  
767 - <type>String</type>  
768 - <format/>  
769 - </field>  
770 - <field>  
771 - <name>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</name>  
772 - <type>String</type>  
773 - <format/>  
774 - </field>  
775 - <field>  
776 - <name>&#x552e;&#x7968;&#x5458;</name>  
777 - <type>String</type>  
778 - <format/>  
779 - </field>  
780 - <field>  
781 - <name>isCancel</name>  
782 - <type>Integer</type>  
783 - <format/>  
784 - </field>  
785 - <field>  
786 - <name>xlid</name>  
787 - <type>Integer</type>  
788 - <format/>  
789 - </field>  
790 - <field>  
791 - <name>jid</name>  
792 - <type>Integer</type>  
793 - <format/>  
794 - </field>  
795 - <field>  
796 - <name>sid</name>  
797 - <type>Integer</type>  
798 - <format/>  
799 - </field>  
800 - <field>  
801 - <name>error_count</name>  
802 - <type>Integer</type>  
803 - <format/>  
804 - </field>  
805 - <field>  
806 - <name>error_desc</name>  
807 - <type>String</type>  
808 - <format/>  
809 - </field>  
810 - <field>  
811 - <name>error_column1</name>  
812 - <type>String</type>  
813 - <format/>  
814 - </field>  
815 - <field>  
816 - <name>error_column2</name>  
817 - <type>String</type>  
818 - <format/>  
819 - </field>  
820 - </fields>  
821 - <custom>  
822 - <header_font_name>arial</header_font_name>  
823 - <header_font_size>10</header_font_size>  
824 - <header_font_bold>N</header_font_bold>  
825 - <header_font_italic>N</header_font_italic>  
826 - <header_font_underline>no</header_font_underline>  
827 - <header_font_orientation>horizontal</header_font_orientation>  
828 - <header_font_color>black</header_font_color>  
829 - <header_background_color>none</header_background_color>  
830 - <header_row_height>255</header_row_height>  
831 - <header_alignment>left</header_alignment>  
832 - <header_image/>  
833 - <row_font_name>arial</row_font_name>  
834 - <row_font_size>10</row_font_size>  
835 - <row_font_color>black</row_font_color>  
836 - <row_background_color>none</row_background_color>  
837 - </custom>  
838 - <cluster_schema/>  
839 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
840 - <xloc>833</xloc>  
841 - <yloc>321</yloc>  
842 - <draw>Y</draw>  
843 - </GUI>  
844 - </step>  
845 -  
846 - <step>  
847 - <name>&#x9a7e;&#x9a76;&#x5458;id&#x67e5;&#x627e;</name>  
848 - <type>DBJoin</type>  
849 - <description/>  
850 - <distribute>Y</distribute>  
851 - <custom_distribution/>  
852 - <copies>1</copies>  
853 - <partitioning>  
854 - <method>none</method>  
855 - <schema_name/>  
856 - </partitioning>  
857 - <connection>bus_control_variable</connection>  
858 - <rowlimit>1</rowlimit>  
859 - <sql>select id as jid from bsth_c_personnel&#xa;where job_code like &#x3f; and personnel_name &#x3d; &#x3f;</sql>  
860 - <outer_join>Y</outer_join>  
861 - <replace_vars>N</replace_vars>  
862 - <parameter>  
863 - <field>  
864 - <name>jgh_temp</name>  
865 - <type>String</type>  
866 - </field>  
867 - <field>  
868 - <name>&#x9a7e;&#x9a76;&#x5458;</name>  
869 - <type>String</type>  
870 - </field>  
871 - </parameter>  
872 - <cluster_schema/>  
873 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
874 - <xloc>694</xloc>  
875 - <yloc>141</yloc>  
876 - <draw>Y</draw>  
877 - </GUI>  
878 - </step>  
879 -  
880 - <step>  
881 - <name>&#x5de5;&#x53f7;&#x6570;&#x636e;&#x5904;&#x7406;</name>  
882 - <type>ScriptValueMod</type>  
883 - <description/>  
884 - <distribute>Y</distribute>  
885 - <custom_distribution/>  
886 - <copies>1</copies>  
887 - <partitioning>  
888 - <method>none</method>  
889 - <schema_name/>  
890 - </partitioning>  
891 - <compatible>N</compatible>  
892 - <optimizationLevel>9</optimizationLevel>  
893 - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>  
894 - <jsScript_name>Script 1</jsScript_name>  
895 - <jsScript_script>&#x2f;&#x2f; &#x56e0;&#x4e3a;&#x6570;&#x636e;&#x5e93;&#x4e2d;&#x7684;&#x6570;&#x636e;&#x5de5;&#x53f7;&#x53ef;&#x80fd;&#x5e26;suffix&#xff0c;&#x5982;55-12345678&#xa;&#x2f;&#x2f; &#x6240;&#x4ee5;&#x4e4b;&#x540e;&#x7684;&#x5339;&#x914d;&#x4f7f;&#x7528;like&#xff0c;&#x5219;&#x5143;&#x6570;&#x636e;&#x9700;&#x8981;&#x52a0;&#x4e0a;&#x25; &#x25;&#x7b26;&#x53f7;&#xa;&#xa;var jgh_temp&#x3b;&#xa;var sgh_temp&#x3b;&#xa;&#xa;if &#x28;&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;&#x29; &#x7b;&#xa; jgh_temp &#x3d; &#x27;&#x25;&#x27; &#x2b; &#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7; &#x2b; &#x27;&#x25;&#x27;&#x3b;&#xa;&#x7d; else &#x7b;&#xa; jgh_temp &#x3d; &#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;&#x3b;&#xa;&#x7d;&#xa;&#xa;if &#x28;&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;&#x29; &#x7b;&#xa; sgh_temp &#x3d; &#x27;&#x25;&#x27; &#x2b; &#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7; &#x2b; &#x27;&#x25;&#x27;&#x3b;&#xa;&#x7d; else &#x7b;&#xa; sgh_temp &#x3d; &#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;&#x3b;&#xa;&#x7d;</jsScript_script>  
896 - </jsScript> </jsScripts> <fields> <field> <name>jgh_temp</name>  
897 - <rename>jgh_temp</rename>  
898 - <type>String</type>  
899 - <length>-1</length>  
900 - <precision>-1</precision>  
901 - <replace>N</replace>  
902 - </field> <field> <name>sgh_temp</name>  
903 - <rename>sgh_temp</rename>  
904 - <type>String</type>  
905 - <length>-1</length>  
906 - <precision>-1</precision>  
907 - <replace>N</replace>  
908 - </field> </fields> <cluster_schema/>  
909 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
910 - <xloc>548</xloc>  
911 - <yloc>47</yloc>  
912 - <draw>Y</draw>  
913 - </GUI>  
914 - </step>  
915 -  
916 - <step_error_handling>  
917 - <error>  
918 - <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</source_step>  
919 - <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa;</target_step>  
920 - <is_enabled>Y</is_enabled>  
921 - <nr_valuename>error_count</nr_valuename>  
922 - <descriptions_valuename>error_desc</descriptions_valuename>  
923 - <fields_valuename>error_column1</fields_valuename>  
924 - <codes_valuename>error_column2</codes_valuename>  
925 - <max_errors/>  
926 - <max_pct_errors/>  
927 - <min_pct_rows/>  
928 - </error>  
929 - </step_error_handling>  
930 - <slave-step-copy-partition-distribution>  
931 -</slave-step-copy-partition-distribution>  
932 - <slave_transformation>N</slave_transformation>  
933 -  
934 -</transformation> 1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</name>
  5 + <description>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description>
  6 + <extended_description>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#x4fe1;&#x606f;</extended_description>
  7 + <trans_version/>
  8 + <trans_type>Normal</trans_type>
  9 + <trans_status>0</trans_status>
  10 + <directory>&#x2f;</directory>
  11 + <parameters>
  12 + <parameter>
  13 + <name>erroroutputdir</name>
  14 + <default_value/>
  15 + <description>ktr step&#x914d;&#x7f6e;&#x7684;&#x9519;&#x8bef;&#x8f93;&#x51fa;&#x76ee;&#x5f55;</description>
  16 + </parameter>
  17 + <parameter>
  18 + <name>filepath</name>
  19 + <default_value/>
  20 + <description>&#x5f85;&#x5904;&#x7406;&#x5bfc;&#x5165;&#x7684;excel&#x6587;&#x4ef6;</description>
  21 + </parameter>
  22 + </parameters>
  23 + <log>
  24 +<trans-log-table><connection/>
  25 +<schema/>
  26 +<table/>
  27 +<size_limit_lines/>
  28 +<interval/>
  29 +<timeout_days/>
  30 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table>
  31 +<perf-log-table><connection/>
  32 +<schema/>
  33 +<table/>
  34 +<interval/>
  35 +<timeout_days/>
  36 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table>
  37 +<channel-log-table><connection/>
  38 +<schema/>
  39 +<table/>
  40 +<timeout_days/>
  41 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table>
  42 +<step-log-table><connection/>
  43 +<schema/>
  44 +<table/>
  45 +<timeout_days/>
  46 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table>
  47 +<metrics-log-table><connection/>
  48 +<schema/>
  49 +<table/>
  50 +<timeout_days/>
  51 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table>
  52 + </log>
  53 + <maxdate>
  54 + <connection/>
  55 + <table/>
  56 + <field/>
  57 + <offset>0.0</offset>
  58 + <maxdiff>0.0</maxdiff>
  59 + </maxdate>
  60 + <size_rowset>10000</size_rowset>
  61 + <sleep_time_empty>50</sleep_time_empty>
  62 + <sleep_time_full>50</sleep_time_full>
  63 + <unique_connections>N</unique_connections>
  64 + <feedback_shown>Y</feedback_shown>
  65 + <feedback_size>50000</feedback_size>
  66 + <using_thread_priorities>Y</using_thread_priorities>
  67 + <shared_objects_file/>
  68 + <capture_step_performance>N</capture_step_performance>
  69 + <step_performance_capturing_delay>1000</step_performance_capturing_delay>
  70 + <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
  71 + <dependencies>
  72 + </dependencies>
  73 + <partitionschemas>
  74 + </partitionschemas>
  75 + <slaveservers>
  76 + </slaveservers>
  77 + <clusterschemas>
  78 + </clusterschemas>
  79 + <created_user>-</created_user>
  80 + <created_date>2016&#x2f;06&#x2f;29 15&#x3a;12&#x3a;27.273</created_date>
  81 + <modified_user>-</modified_user>
  82 + <modified_date>2016&#x2f;06&#x2f;29 15&#x3a;12&#x3a;27.273</modified_date>
  83 + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
  84 + <is_key_private>N</is_key_private>
  85 + </info>
  86 + <notepads>
  87 + <notepad>
  88 + <note>&#x8fd9;&#x91cc;&#x6709;&#x4e9b;&#x95ee;&#x9898;&#xa;&#x5728;window2012&#x7684;&#x73af;&#x5883;&#x4e0b;&#xff0c;&#xa;MySql&#x6570;&#x636e;&#x5e93;&#x67e5;&#x8be2;&#x4e2d;&#x5982;&#x679c;&#x8fd4;&#x56de;&#x4e2d;&#x6587;&#x5185;&#x5bb9;&#x7684;&#x5b57;&#x6bb5;&#xff0c;&#x8fd9;&#x4e2a;&#x5185;&#x5bb9;&#x4e71;&#x7801;&#xa;&#x89e3;&#x51b3;&#x529e;&#x6cd5;&#xff0c;&#x5c31;&#x662f;&#x6570;&#x636e;&#x5e93;&#x67e5;&#x8be2;&#x5168;&#x90e8;&#x7f13;&#x5b58;&#xff0c;&#x5c31;&#x4e0d;&#x4e71;&#x7801;&#xa;linux&#x73af;&#x5883;&#x4e0b;&#x6ca1;&#x95ee;&#x9898;</note>
  89 + <xloc>101</xloc>
  90 + <yloc>264</yloc>
  91 + <width>333</width>
  92 + <heigth>90</heigth>
  93 + <fontname>YaHei Consolas Hybrid</fontname>
  94 + <fontsize>12</fontsize>
  95 + <fontbold>N</fontbold>
  96 + <fontitalic>N</fontitalic>
  97 + <fontcolorred>0</fontcolorred>
  98 + <fontcolorgreen>0</fontcolorgreen>
  99 + <fontcolorblue>0</fontcolorblue>
  100 + <backgroundcolorred>255</backgroundcolorred>
  101 + <backgroundcolorgreen>205</backgroundcolorgreen>
  102 + <backgroundcolorblue>112</backgroundcolorblue>
  103 + <bordercolorred>100</bordercolorred>
  104 + <bordercolorgreen>100</bordercolorgreen>
  105 + <bordercolorblue>100</bordercolorblue>
  106 + <drawshadow>Y</drawshadow>
  107 + </notepad>
  108 + </notepads>
  109 + <connection>
  110 + <name>192.168.168.1_jwgl_dw</name>
  111 + <server>192.168.168.1</server>
  112 + <type>ORACLE</type>
  113 + <access>Native</access>
  114 + <database>orcl</database>
  115 + <port>1521</port>
  116 + <username>jwgl_dw</username>
  117 + <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password>
  118 + <servername/>
  119 + <data_tablespace/>
  120 + <index_tablespace/>
  121 + <attributes>
  122 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  123 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  124 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  125 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  126 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  127 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  128 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  129 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  130 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  131 + </attributes>
  132 + </connection>
  133 + <connection>
  134 + <name>bus_control_variable</name>
  135 + <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
  136 + <type>MYSQL</type>
  137 + <access>Native</access>
  138 + <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
  139 + <port>3306</port>
  140 + <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
  141 + <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
  142 + <servername/>
  143 + <data_tablespace/>
  144 + <index_tablespace/>
  145 + <attributes>
  146 + <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
  147 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  148 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  149 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  150 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  151 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  152 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  153 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  154 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  155 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  156 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  157 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  158 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  159 + </attributes>
  160 + </connection>
  161 + <connection>
  162 + <name>bus_control_&#x516c;&#x53f8;_201</name>
  163 + <server>localhost</server>
  164 + <type>MYSQL</type>
  165 + <access>Native</access>
  166 + <database>control</database>
  167 + <port>3306</port>
  168 + <username>root</username>
  169 + <password>Encrypted </password>
  170 + <servername/>
  171 + <data_tablespace/>
  172 + <index_tablespace/>
  173 + <attributes>
  174 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  175 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  176 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  177 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  178 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  179 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  180 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  181 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  182 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  183 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  184 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  185 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  186 + </attributes>
  187 + </connection>
  188 + <connection>
  189 + <name>bus_control_&#x672c;&#x673a;</name>
  190 + <server>localhost</server>
  191 + <type>MYSQL</type>
  192 + <access>Native</access>
  193 + <database>control</database>
  194 + <port>3306</port>
  195 + <username>root</username>
  196 + <password>Encrypted </password>
  197 + <servername/>
  198 + <data_tablespace/>
  199 + <index_tablespace/>
  200 + <attributes>
  201 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  202 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  203 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  204 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  205 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  206 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  207 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  208 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  209 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  210 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  211 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  212 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  213 + </attributes>
  214 + </connection>
  215 + <connection>
  216 + <name>xlab_mysql_youle</name>
  217 + <server>101.231.124.8</server>
  218 + <type>MYSQL</type>
  219 + <access>Native</access>
  220 + <database>xlab_youle</database>
  221 + <port>45687</port>
  222 + <username>xlab-youle</username>
  223 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
  224 + <servername/>
  225 + <data_tablespace/>
  226 + <index_tablespace/>
  227 + <attributes>
  228 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  229 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  230 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  231 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  232 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  233 + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
  234 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  235 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  236 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  237 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  238 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  239 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  240 + </attributes>
  241 + </connection>
  242 + <connection>
  243 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  244 + <server>localhost</server>
  245 + <type>MYSQL</type>
  246 + <access>Native</access>
  247 + <database>xlab_youle</database>
  248 + <port>3306</port>
  249 + <username>root</username>
  250 + <password>Encrypted </password>
  251 + <servername/>
  252 + <data_tablespace/>
  253 + <index_tablespace/>
  254 + <attributes>
  255 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  256 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  257 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  258 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  259 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  260 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  261 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  262 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  263 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  264 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  265 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  266 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  267 + </attributes>
  268 + </connection>
  269 + <connection>
  270 + <name>xlab_youle</name>
  271 + <server/>
  272 + <type>MYSQL</type>
  273 + <access>JNDI</access>
  274 + <database>xlab_youle</database>
  275 + <port>1521</port>
  276 + <username/>
  277 + <password>Encrypted </password>
  278 + <servername/>
  279 + <data_tablespace/>
  280 + <index_tablespace/>
  281 + <attributes>
  282 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  283 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  284 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  285 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  286 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  287 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  288 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  289 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  290 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  291 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  292 + </attributes>
  293 + </connection>
  294 + <order>
  295 + <hop> <from>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
  296 + <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>
  297 + <hop> <from>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</from><to>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</to><enabled>Y</enabled> </hop>
  298 + <hop> <from>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</from><to>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  299 + <hop> <from>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</from><to>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  300 + <hop> <from>&#x9a7e;&#x9a76;&#x5458;id&#x67e5;&#x627e;</from><to>&#x8fc7;&#x6ee4;&#x9a7e;&#x9a76;&#x5458;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  301 + <hop> <from>&#x8fc7;&#x6ee4;&#x9a7e;&#x9a76;&#x5458;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</from><to>&#x552e;&#x7968;&#x5458;id&#x67e5;&#x627e;</to><enabled>Y</enabled> </hop>
  302 + <hop> <from>&#x552e;&#x7968;&#x5458;id&#x67e5;&#x627e;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</to><enabled>Y</enabled> </hop>
  303 + <hop> <from>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</from><to>&#x9a7e;&#x9a76;&#x5458;id&#x67e5;&#x627e;</to><enabled>Y</enabled> </hop>
  304 + </order>
  305 + <step>
  306 + <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name>
  307 + <type>ExcelInput</type>
  308 + <description/>
  309 + <distribute>Y</distribute>
  310 + <custom_distribution/>
  311 + <copies>1</copies>
  312 + <partitioning>
  313 + <method>none</method>
  314 + <schema_name/>
  315 + </partitioning>
  316 + <header>Y</header>
  317 + <noempty>Y</noempty>
  318 + <stoponempty>N</stoponempty>
  319 + <filefield/>
  320 + <sheetfield/>
  321 + <sheetrownumfield/>
  322 + <rownumfield/>
  323 + <sheetfield/>
  324 + <filefield/>
  325 + <limit>0</limit>
  326 + <encoding/>
  327 + <add_to_result_filenames>Y</add_to_result_filenames>
  328 + <accept_filenames>Y</accept_filenames>
  329 + <accept_field>filepath_</accept_field>
  330 + <accept_stepname>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</accept_stepname>
  331 + <file>
  332 + <name/>
  333 + <filemask/>
  334 + <exclude_filemask/>
  335 + <file_required>N</file_required>
  336 + <include_subfolders>N</include_subfolders>
  337 + </file>
  338 + <fields>
  339 + <field>
  340 + <name>&#x7ebf;&#x8def;</name>
  341 + <type>String</type>
  342 + <length>-1</length>
  343 + <precision>-1</precision>
  344 + <trim_type>none</trim_type>
  345 + <repeat>N</repeat>
  346 + <format/>
  347 + <currency/>
  348 + <decimal/>
  349 + <group/>
  350 + </field>
  351 + <field>
  352 + <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>
  353 + <type>String</type>
  354 + <length>-1</length>
  355 + <precision>-1</precision>
  356 + <trim_type>none</trim_type>
  357 + <repeat>N</repeat>
  358 + <format>&#x23;</format>
  359 + <currency/>
  360 + <decimal/>
  361 + <group/>
  362 + </field>
  363 + <field>
  364 + <name>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</name>
  365 + <type>String</type>
  366 + <length>-1</length>
  367 + <precision>-1</precision>
  368 + <trim_type>none</trim_type>
  369 + <repeat>N</repeat>
  370 + <format>&#x23;</format>
  371 + <currency/>
  372 + <decimal/>
  373 + <group/>
  374 + </field>
  375 + <field>
  376 + <name>&#x9a7e;&#x9a76;&#x5458;</name>
  377 + <type>String</type>
  378 + <length>-1</length>
  379 + <precision>-1</precision>
  380 + <trim_type>none</trim_type>
  381 + <repeat>N</repeat>
  382 + <format/>
  383 + <currency/>
  384 + <decimal/>
  385 + <group/>
  386 + </field>
  387 + <field>
  388 + <name>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</name>
  389 + <type>String</type>
  390 + <length>-1</length>
  391 + <precision>-1</precision>
  392 + <trim_type>none</trim_type>
  393 + <repeat>N</repeat>
  394 + <format>&#x23;</format>
  395 + <currency/>
  396 + <decimal/>
  397 + <group/>
  398 + </field>
  399 + <field>
  400 + <name>&#x552e;&#x7968;&#x5458;</name>
  401 + <type>String</type>
  402 + <length>-1</length>
  403 + <precision>-1</precision>
  404 + <trim_type>none</trim_type>
  405 + <repeat>N</repeat>
  406 + <format/>
  407 + <currency/>
  408 + <decimal/>
  409 + <group/>
  410 + </field>
  411 + </fields>
  412 + <sheets>
  413 + <sheet>
  414 + <name>&#x5de5;&#x4f5c;&#x8868;1</name>
  415 + <startrow>0</startrow>
  416 + <startcol>0</startcol>
  417 + </sheet>
  418 + </sheets>
  419 + <strict_types>N</strict_types>
  420 + <error_ignored>N</error_ignored>
  421 + <error_line_skipped>N</error_line_skipped>
  422 + <bad_line_files_destination_directory/>
  423 + <bad_line_files_extension>warning</bad_line_files_extension>
  424 + <error_line_files_destination_directory/>
  425 + <error_line_files_extension>error</error_line_files_extension>
  426 + <line_number_files_destination_directory/>
  427 + <line_number_files_extension>line</line_number_files_extension>
  428 + <shortFileFieldName/>
  429 + <pathFieldName/>
  430 + <hiddenFieldName/>
  431 + <lastModificationTimeFieldName/>
  432 + <uriNameFieldName/>
  433 + <rootUriNameFieldName/>
  434 + <extensionFieldName/>
  435 + <sizeFieldName/>
  436 + <spreadsheet_type>JXL</spreadsheet_type>
  437 + <cluster_schema/>
  438 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  439 + <xloc>93</xloc>
  440 + <yloc>51</yloc>
  441 + <draw>Y</draw>
  442 + </GUI>
  443 + </step>
  444 +
  445 + <step>
  446 + <name>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</name>
  447 + <type>Constant</type>
  448 + <description/>
  449 + <distribute>Y</distribute>
  450 + <custom_distribution/>
  451 + <copies>1</copies>
  452 + <partitioning>
  453 + <method>none</method>
  454 + <schema_name/>
  455 + </partitioning>
  456 + <fields>
  457 + <field>
  458 + <name>isCancel</name>
  459 + <type>Integer</type>
  460 + <format/>
  461 + <currency/>
  462 + <decimal/>
  463 + <group/>
  464 + <nullif>0</nullif>
  465 + <length>-1</length>
  466 + <precision>-1</precision>
  467 + <set_empty_string>N</set_empty_string>
  468 + </field>
  469 + </fields>
  470 + <cluster_schema/>
  471 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  472 + <xloc>225</xloc>
  473 + <yloc>53</yloc>
  474 + <draw>Y</draw>
  475 + </GUI>
  476 + </step>
  477 +
  478 + <step>
  479 + <name>&#x552e;&#x7968;&#x5458;id&#x67e5;&#x627e;</name>
  480 + <type>DBJoin</type>
  481 + <description/>
  482 + <distribute>Y</distribute>
  483 + <custom_distribution/>
  484 + <copies>1</copies>
  485 + <partitioning>
  486 + <method>none</method>
  487 + <schema_name/>
  488 + </partitioning>
  489 + <connection>bus_control_variable</connection>
  490 + <rowlimit>1</rowlimit>
  491 + <sql>select id as sid from bsth_c_personnel&#xa;where job_codeori &#x3d; &#x3f; and personnel_name &#x3d; &#x3f;</sql>
  492 + <outer_join>Y</outer_join>
  493 + <replace_vars>N</replace_vars>
  494 + <parameter>
  495 + <field>
  496 + <name>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</name>
  497 + <type>String</type>
  498 + </field>
  499 + <field>
  500 + <name>&#x552e;&#x7968;&#x5458;</name>
  501 + <type>String</type>
  502 + </field>
  503 + </parameter>
  504 + <cluster_schema/>
  505 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  506 + <xloc>830</xloc>
  507 + <yloc>45</yloc>
  508 + <draw>Y</draw>
  509 + </GUI>
  510 + </step>
  511 +
  512 + <step>
  513 + <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</name>
  514 + <type>InsertUpdate</type>
  515 + <description/>
  516 + <distribute>Y</distribute>
  517 + <custom_distribution/>
  518 + <copies>1</copies>
  519 + <partitioning>
  520 + <method>none</method>
  521 + <schema_name/>
  522 + </partitioning>
  523 + <connection>bus_control_variable</connection>
  524 + <commit>100</commit>
  525 + <update_bypassed>N</update_bypassed>
  526 + <lookup>
  527 + <schema/>
  528 + <table>bsth_c_s_ecinfo</table>
  529 + <key>
  530 + <name>xlid</name>
  531 + <field>xl</field>
  532 + <condition>&#x3d;</condition>
  533 + <name2/>
  534 + </key>
  535 + <key>
  536 + <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>
  537 + <field>dbbm</field>
  538 + <condition>&#x3d;</condition>
  539 + <name2/>
  540 + </key>
  541 + <key>
  542 + <name>isCancel</name>
  543 + <field>is_cancel</field>
  544 + <condition>&#x3d;</condition>
  545 + <name2/>
  546 + </key>
  547 + <value>
  548 + <name>xl</name>
  549 + <rename>xlid</rename>
  550 + <update>Y</update>
  551 + </value>
  552 + <value>
  553 + <name>dbbm</name>
  554 + <rename>&#x642d;&#x73ed;&#x7f16;&#x7801;</rename>
  555 + <update>Y</update>
  556 + </value>
  557 + <value>
  558 + <name>jsy</name>
  559 + <rename>jid</rename>
  560 + <update>Y</update>
  561 + </value>
  562 + <value>
  563 + <name>spy</name>
  564 + <rename>sid</rename>
  565 + <update>Y</update>
  566 + </value>
  567 + <value>
  568 + <name>is_cancel</name>
  569 + <rename>isCancel</rename>
  570 + <update>Y</update>
  571 + </value>
  572 + </lookup>
  573 + <cluster_schema/>
  574 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  575 + <xloc>833</xloc>
  576 + <yloc>198</yloc>
  577 + <draw>Y</draw>
  578 + </GUI>
  579 + </step>
  580 +
  581 + <step>
  582 + <name>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</name>
  583 + <type>DBLookup</type>
  584 + <description/>
  585 + <distribute>Y</distribute>
  586 + <custom_distribution/>
  587 + <copies>1</copies>
  588 + <partitioning>
  589 + <method>none</method>
  590 + <schema_name/>
  591 + </partitioning>
  592 + <connection>bus_control_variable</connection>
  593 + <cache>Y</cache>
  594 + <cache_load_all>Y</cache_load_all>
  595 + <cache_size>0</cache_size>
  596 + <lookup>
  597 + <schema/>
  598 + <table>bsth_c_line</table>
  599 + <orderby/>
  600 + <fail_on_multiple>N</fail_on_multiple>
  601 + <eat_row_on_failure>N</eat_row_on_failure>
  602 + <key>
  603 + <name>&#x7ebf;&#x8def;</name>
  604 + <field>name</field>
  605 + <condition>&#x3d;</condition>
  606 + <name2/>
  607 + </key>
  608 + <key>
  609 + <name>isCancel</name>
  610 + <field>destroy</field>
  611 + <condition>&#x3d;</condition>
  612 + <name2/>
  613 + </key>
  614 + <value>
  615 + <name>id</name>
  616 + <rename>xlid</rename>
  617 + <default/>
  618 + <type>Integer</type>
  619 + </value>
  620 + </lookup>
  621 + <cluster_schema/>
  622 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  623 + <xloc>397</xloc>
  624 + <yloc>144</yloc>
  625 + <draw>Y</draw>
  626 + </GUI>
  627 + </step>
  628 +
  629 + <step>
  630 + <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>
  631 + <type>GetVariable</type>
  632 + <description/>
  633 + <distribute>Y</distribute>
  634 + <custom_distribution/>
  635 + <copies>1</copies>
  636 + <partitioning>
  637 + <method>none</method>
  638 + <schema_name/>
  639 + </partitioning>
  640 + <fields>
  641 + <field>
  642 + <name>filepath_</name>
  643 + <variable>&#x24;&#x7b;filepath&#x7d;</variable>
  644 + <type>String</type>
  645 + <format/>
  646 + <currency/>
  647 + <decimal/>
  648 + <group/>
  649 + <length>-1</length>
  650 + <precision>-1</precision>
  651 + <trim_type>none</trim_type>
  652 + </field>
  653 + <field>
  654 + <name>erroroutputdir_</name>
  655 + <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
  656 + <type>String</type>
  657 + <format/>
  658 + <currency/>
  659 + <decimal/>
  660 + <group/>
  661 + <length>-1</length>
  662 + <precision>-1</precision>
  663 + <trim_type>none</trim_type>
  664 + </field>
  665 + </fields>
  666 + <cluster_schema/>
  667 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  668 + <xloc>94</xloc>
  669 + <yloc>178</yloc>
  670 + <draw>Y</draw>
  671 + </GUI>
  672 + </step>
  673 +
  674 + <step>
  675 + <name>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>
  676 + <type>FilterRows</type>
  677 + <description/>
  678 + <distribute>Y</distribute>
  679 + <custom_distribution/>
  680 + <copies>1</copies>
  681 + <partitioning>
  682 + <method>none</method>
  683 + <schema_name/>
  684 + </partitioning>
  685 +<send_true_to/>
  686 +<send_false_to/>
  687 + <compare>
  688 +<condition>
  689 + <negated>N</negated>
  690 + <leftvalue>xlid</leftvalue>
  691 + <function>IS NOT NULL</function>
  692 + <rightvalue/>
  693 + </condition>
  694 + </compare>
  695 + <cluster_schema/>
  696 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  697 + <xloc>395</xloc>
  698 + <yloc>49</yloc>
  699 + <draw>Y</draw>
  700 + </GUI>
  701 + </step>
  702 +
  703 + <step>
  704 + <name>&#x8fc7;&#x6ee4;&#x9a7e;&#x9a76;&#x5458;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>
  705 + <type>FilterRows</type>
  706 + <description/>
  707 + <distribute>Y</distribute>
  708 + <custom_distribution/>
  709 + <copies>1</copies>
  710 + <partitioning>
  711 + <method>none</method>
  712 + <schema_name/>
  713 + </partitioning>
  714 +<send_true_to>&#x552e;&#x7968;&#x5458;id&#x67e5;&#x627e;</send_true_to>
  715 +<send_false_to/>
  716 + <compare>
  717 +<condition>
  718 + <negated>N</negated>
  719 + <leftvalue>jid</leftvalue>
  720 + <function>IS NOT NULL</function>
  721 + <rightvalue/>
  722 + </condition>
  723 + </compare>
  724 + <cluster_schema/>
  725 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  726 + <xloc>604</xloc>
  727 + <yloc>46</yloc>
  728 + <draw>Y</draw>
  729 + </GUI>
  730 + </step>
  731 +
  732 + <step>
  733 + <name>&#x9519;&#x8bef;&#x8f93;&#x51fa;</name>
  734 + <type>ExcelOutput</type>
  735 + <description/>
  736 + <distribute>Y</distribute>
  737 + <custom_distribution/>
  738 + <copies>1</copies>
  739 + <partitioning>
  740 + <method>none</method>
  741 + <schema_name/>
  742 + </partitioning>
  743 + <header>Y</header>
  744 + <footer>N</footer>
  745 + <encoding>UTF-8</encoding>
  746 + <append>N</append>
  747 + <add_to_result_filenames>Y</add_to_result_filenames>
  748 + <file>
  749 + <name>&#x24;&#x7b;erroroutputdir&#x7d;&#x2f;&#x4eba;&#x5458;&#x914d;&#x7f6e;_&#x9519;&#x8bef;</name>
  750 + <extention>xls</extention>
  751 + <do_not_open_newfile_init>N</do_not_open_newfile_init>
  752 + <create_parent_folder>N</create_parent_folder>
  753 + <split>N</split>
  754 + <add_date>N</add_date>
  755 + <add_time>N</add_time>
  756 + <SpecifyFormat>N</SpecifyFormat>
  757 + <date_time_format/>
  758 + <sheetname>Sheet1</sheetname>
  759 + <autosizecolums>N</autosizecolums>
  760 + <nullisblank>N</nullisblank>
  761 + <protect_sheet>N</protect_sheet>
  762 + <password>Encrypted </password>
  763 + <splitevery>0</splitevery>
  764 + <usetempfiles>N</usetempfiles>
  765 + <tempdirectory/>
  766 + </file>
  767 + <template>
  768 + <enabled>N</enabled>
  769 + <append>N</append>
  770 + <filename>template.xls</filename>
  771 + </template>
  772 + <fields>
  773 + <field>
  774 + <name>&#x7ebf;&#x8def;</name>
  775 + <type>String</type>
  776 + <format/>
  777 + </field>
  778 + <field>
  779 + <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>
  780 + <type>String</type>
  781 + <format/>
  782 + </field>
  783 + <field>
  784 + <name>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</name>
  785 + <type>String</type>
  786 + <format/>
  787 + </field>
  788 + <field>
  789 + <name>&#x9a7e;&#x9a76;&#x5458;</name>
  790 + <type>String</type>
  791 + <format/>
  792 + </field>
  793 + <field>
  794 + <name>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</name>
  795 + <type>String</type>
  796 + <format/>
  797 + </field>
  798 + <field>
  799 + <name>&#x552e;&#x7968;&#x5458;</name>
  800 + <type>String</type>
  801 + <format/>
  802 + </field>
  803 + <field>
  804 + <name>isCancel</name>
  805 + <type>Integer</type>
  806 + <format/>
  807 + </field>
  808 + <field>
  809 + <name>xlid</name>
  810 + <type>Integer</type>
  811 + <format/>
  812 + </field>
  813 + <field>
  814 + <name>jid</name>
  815 + <type>Integer</type>
  816 + <format/>
  817 + </field>
  818 + <field>
  819 + <name>sid</name>
  820 + <type>Integer</type>
  821 + <format/>
  822 + </field>
  823 + <field>
  824 + <name>error_count</name>
  825 + <type>Integer</type>
  826 + <format/>
  827 + </field>
  828 + <field>
  829 + <name>error_desc</name>
  830 + <type>String</type>
  831 + <format/>
  832 + </field>
  833 + <field>
  834 + <name>error_column1</name>
  835 + <type>String</type>
  836 + <format/>
  837 + </field>
  838 + <field>
  839 + <name>error_column2</name>
  840 + <type>String</type>
  841 + <format/>
  842 + </field>
  843 + </fields>
  844 + <custom>
  845 + <header_font_name>arial</header_font_name>
  846 + <header_font_size>10</header_font_size>
  847 + <header_font_bold>N</header_font_bold>
  848 + <header_font_italic>N</header_font_italic>
  849 + <header_font_underline>no</header_font_underline>
  850 + <header_font_orientation>horizontal</header_font_orientation>
  851 + <header_font_color>black</header_font_color>
  852 + <header_background_color>none</header_background_color>
  853 + <header_row_height>255</header_row_height>
  854 + <header_alignment>left</header_alignment>
  855 + <header_image/>
  856 + <row_font_name>arial</row_font_name>
  857 + <row_font_size>10</row_font_size>
  858 + <row_font_color>black</row_font_color>
  859 + <row_background_color>none</row_background_color>
  860 + </custom>
  861 + <cluster_schema/>
  862 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  863 + <xloc>833</xloc>
  864 + <yloc>321</yloc>
  865 + <draw>Y</draw>
  866 + </GUI>
  867 + </step>
  868 +
  869 + <step>
  870 + <name>&#x9a7e;&#x9a76;&#x5458;id&#x67e5;&#x627e;</name>
  871 + <type>DBJoin</type>
  872 + <description/>
  873 + <distribute>Y</distribute>
  874 + <custom_distribution/>
  875 + <copies>1</copies>
  876 + <partitioning>
  877 + <method>none</method>
  878 + <schema_name/>
  879 + </partitioning>
  880 + <connection>bus_control_variable</connection>
  881 + <rowlimit>1</rowlimit>
  882 + <sql>select id as jid from bsth_c_personnel&#xa;where job_codeori &#x3d; &#x3f; and personnel_name &#x3d; &#x3f;</sql>
  883 + <outer_join>Y</outer_join>
  884 + <replace_vars>N</replace_vars>
  885 + <parameter>
  886 + <field>
  887 + <name>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</name>
  888 + <type>String</type>
  889 + </field>
  890 + <field>
  891 + <name>&#x9a7e;&#x9a76;&#x5458;</name>
  892 + <type>String</type>
  893 + </field>
  894 + </parameter>
  895 + <cluster_schema/>
  896 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  897 + <xloc>603</xloc>
  898 + <yloc>142</yloc>
  899 + <draw>Y</draw>
  900 + </GUI>
  901 + </step>
  902 +
  903 + <step_error_handling>
  904 + <error>
  905 + <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</source_step>
  906 + <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa;</target_step>
  907 + <is_enabled>Y</is_enabled>
  908 + <nr_valuename>error_count</nr_valuename>
  909 + <descriptions_valuename>error_desc</descriptions_valuename>
  910 + <fields_valuename>error_column1</fields_valuename>
  911 + <codes_valuename>error_column2</codes_valuename>
  912 + <max_errors/>
  913 + <max_pct_errors/>
  914 + <min_pct_rows/>
  915 + </error>
  916 + </step_error_handling>
  917 + <slave-step-copy-partition-distribution>
  918 +</slave-step-copy-partition-distribution>
  919 + <slave_transformation>N</slave_transformation>
  920 +
  921 +</transformation>
src/main/resources/datatools/ktrs/employeesConfigDataOutput.ktr
1 -<?xml version="1.0" encoding="UTF-8"?>  
2 -<transformation>  
3 - <info>  
4 - <name>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#x4fe1;&#x606f;&#x5bfc;&#x51fa;</name>  
5 - <description/>  
6 - <extended_description/>  
7 - <trans_version/>  
8 - <trans_type>Normal</trans_type>  
9 - <trans_status>0</trans_status>  
10 - <directory>&#x2f;</directory>  
11 - <parameters>  
12 - <parameter>  
13 - <name>filepath</name>  
14 - <default_value/>  
15 - <description>excel&#x6587;&#x4ef6;&#x8def;&#x5f84;</description>  
16 - </parameter>  
17 - <parameter>  
18 - <name>xlid</name>  
19 - <default_value/>  
20 - <description>&#x7ebf;&#x8def;id</description>  
21 - </parameter>  
22 - </parameters>  
23 - <log>  
24 -<trans-log-table><connection/>  
25 -<schema/>  
26 -<table/>  
27 -<size_limit_lines/>  
28 -<interval/>  
29 -<timeout_days/>  
30 -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table>  
31 -<perf-log-table><connection/>  
32 -<schema/>  
33 -<table/>  
34 -<interval/>  
35 -<timeout_days/>  
36 -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table>  
37 -<channel-log-table><connection/>  
38 -<schema/>  
39 -<table/>  
40 -<timeout_days/>  
41 -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table>  
42 -<step-log-table><connection/>  
43 -<schema/>  
44 -<table/>  
45 -<timeout_days/>  
46 -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table>  
47 -<metrics-log-table><connection/>  
48 -<schema/>  
49 -<table/>  
50 -<timeout_days/>  
51 -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table>  
52 - </log>  
53 - <maxdate>  
54 - <connection/>  
55 - <table/>  
56 - <field/>  
57 - <offset>0.0</offset>  
58 - <maxdiff>0.0</maxdiff>  
59 - </maxdate>  
60 - <size_rowset>10000</size_rowset>  
61 - <sleep_time_empty>50</sleep_time_empty>  
62 - <sleep_time_full>50</sleep_time_full>  
63 - <unique_connections>N</unique_connections>  
64 - <feedback_shown>Y</feedback_shown>  
65 - <feedback_size>50000</feedback_size>  
66 - <using_thread_priorities>Y</using_thread_priorities>  
67 - <shared_objects_file/>  
68 - <capture_step_performance>N</capture_step_performance>  
69 - <step_performance_capturing_delay>1000</step_performance_capturing_delay>  
70 - <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>  
71 - <dependencies>  
72 - </dependencies>  
73 - <partitionschemas>  
74 - </partitionschemas>  
75 - <slaveservers>  
76 - </slaveservers>  
77 - <clusterschemas>  
78 - </clusterschemas>  
79 - <created_user>-</created_user>  
80 - <created_date>2017&#x2f;01&#x2f;11 15&#x3a;36&#x3a;10.101</created_date>  
81 - <modified_user>-</modified_user>  
82 - <modified_date>2017&#x2f;01&#x2f;11 15&#x3a;36&#x3a;10.101</modified_date>  
83 - <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>  
84 - <is_key_private>N</is_key_private>  
85 - </info>  
86 - <notepads>  
87 - <notepad>  
88 - <note>&#x8fd9;&#x91cc;&#x6709;&#x4e9b;&#x95ee;&#x9898;&#xa;&#x5728;window2012&#x7684;&#x73af;&#x5883;&#x4e0b;&#xff0c;&#xa;MySql&#x6570;&#x636e;&#x5e93;&#x67e5;&#x8be2;&#x4e2d;&#x5982;&#x679c;&#x8fd4;&#x56de;&#x4e2d;&#x6587;&#x5185;&#x5bb9;&#x7684;&#x5b57;&#x6bb5;&#xff0c;&#x8fd9;&#x4e2a;&#x5185;&#x5bb9;&#x4e71;&#x7801;&#xa;&#x89e3;&#x51b3;&#x529e;&#x6cd5;&#xff0c;&#x5c31;&#x662f;&#x6570;&#x636e;&#x5e93;&#x67e5;&#x8be2;&#x5168;&#x90e8;&#x7f13;&#x5b58;&#xff0c;&#x5c31;&#x4e0d;&#x4e71;&#x7801;&#xa;linux&#x73af;&#x5883;&#x4e0b;&#x6ca1;&#x95ee;&#x9898;</note>  
89 - <xloc>66</xloc>  
90 - <yloc>151</yloc>  
91 - <width>333</width>  
92 - <heigth>90</heigth>  
93 - <fontname>YaHei Consolas Hybrid</fontname>  
94 - <fontsize>12</fontsize>  
95 - <fontbold>N</fontbold>  
96 - <fontitalic>N</fontitalic>  
97 - <fontcolorred>0</fontcolorred>  
98 - <fontcolorgreen>0</fontcolorgreen>  
99 - <fontcolorblue>0</fontcolorblue>  
100 - <backgroundcolorred>255</backgroundcolorred>  
101 - <backgroundcolorgreen>205</backgroundcolorgreen>  
102 - <backgroundcolorblue>112</backgroundcolorblue>  
103 - <bordercolorred>100</bordercolorred>  
104 - <bordercolorgreen>100</bordercolorgreen>  
105 - <bordercolorblue>100</bordercolorblue>  
106 - <drawshadow>Y</drawshadow>  
107 - </notepad>  
108 - </notepads>  
109 - <connection>  
110 - <name>192.168.168.1_jwgl_dw</name>  
111 - <server>192.168.168.1</server>  
112 - <type>ORACLE</type>  
113 - <access>Native</access>  
114 - <database>orcl</database>  
115 - <port>1521</port>  
116 - <username>jwgl_dw</username>  
117 - <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password>  
118 - <servername/>  
119 - <data_tablespace/>  
120 - <index_tablespace/>  
121 - <attributes>  
122 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
123 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
124 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
125 - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>  
126 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
127 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
128 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>  
129 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>  
130 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
131 - </attributes>  
132 - </connection>  
133 - <connection>  
134 - <name>bus_control_variable</name>  
135 - <server>&#x24;&#x7b;v_db_ip&#x7d;</server>  
136 - <type>MYSQL</type>  
137 - <access>Native</access>  
138 - <database>&#x24;&#x7b;v_db_dname&#x7d;</database>  
139 - <port>3306</port>  
140 - <username>&#x24;&#x7b;v_db_uname&#x7d;</username>  
141 - <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>  
142 - <servername/>  
143 - <data_tablespace/>  
144 - <index_tablespace/>  
145 - <attributes>  
146 - <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>  
147 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
148 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
149 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
150 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
151 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
152 - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>  
153 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
154 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
155 - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>  
156 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>  
157 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>  
158 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
159 - </attributes>  
160 - </connection>  
161 - <connection>  
162 - <name>bus_control_&#x516c;&#x53f8;_201</name>  
163 - <server>localhost</server>  
164 - <type>MYSQL</type>  
165 - <access>Native</access>  
166 - <database>control</database>  
167 - <port>3306</port>  
168 - <username>root</username>  
169 - <password>Encrypted </password>  
170 - <servername/>  
171 - <data_tablespace/>  
172 - <index_tablespace/>  
173 - <attributes>  
174 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
175 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
176 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
177 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
178 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
179 - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>  
180 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
181 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
182 - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>  
183 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>  
184 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>  
185 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
186 - </attributes>  
187 - </connection>  
188 - <connection>  
189 - <name>bus_control_&#x672c;&#x673a;</name>  
190 - <server>localhost</server>  
191 - <type>MYSQL</type>  
192 - <access>Native</access>  
193 - <database>control</database>  
194 - <port>3306</port>  
195 - <username>root</username>  
196 - <password>Encrypted </password>  
197 - <servername/>  
198 - <data_tablespace/>  
199 - <index_tablespace/>  
200 - <attributes>  
201 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
202 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
203 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
204 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
205 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
206 - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>  
207 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
208 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
209 - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>  
210 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>  
211 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>  
212 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
213 - </attributes>  
214 - </connection>  
215 - <connection>  
216 - <name>xlab_mysql_youle</name>  
217 - <server>101.231.124.8</server>  
218 - <type>MYSQL</type>  
219 - <access>Native</access>  
220 - <database>xlab_youle</database>  
221 - <port>45687</port>  
222 - <username>xlab-youle</username>  
223 - <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>  
224 - <servername/>  
225 - <data_tablespace/>  
226 - <index_tablespace/>  
227 - <attributes>  
228 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
229 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
230 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
231 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
232 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
233 - <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>  
234 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
235 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
236 - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>  
237 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>  
238 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>  
239 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
240 - </attributes>  
241 - </connection>  
242 - <connection>  
243 - <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>  
244 - <server>localhost</server>  
245 - <type>MYSQL</type>  
246 - <access>Native</access>  
247 - <database>xlab_youle</database>  
248 - <port>3306</port>  
249 - <username>root</username>  
250 - <password>Encrypted </password>  
251 - <servername/>  
252 - <data_tablespace/>  
253 - <index_tablespace/>  
254 - <attributes>  
255 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
256 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
257 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
258 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
259 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
260 - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>  
261 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
262 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
263 - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>  
264 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>  
265 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>  
266 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
267 - </attributes>  
268 - </connection>  
269 - <connection>  
270 - <name>xlab_youle</name>  
271 - <server/>  
272 - <type>MYSQL</type>  
273 - <access>JNDI</access>  
274 - <database>xlab_youle</database>  
275 - <port>1521</port>  
276 - <username/>  
277 - <password>Encrypted </password>  
278 - <servername/>  
279 - <data_tablespace/>  
280 - <index_tablespace/>  
281 - <attributes>  
282 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
283 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
284 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
285 - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>  
286 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
287 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
288 - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>  
289 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>  
290 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>  
291 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
292 - </attributes>  
293 - </connection>  
294 - <order>  
295 - <hop> <from>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#xff08;&#x6ca1;&#x6709;&#x4f5c;&#x5e9f;&#xff09;</from><to>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>  
296 - <hop> <from>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</from><to>&#x9a7e;&#x9a76;&#x5458;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>  
297 - <hop> <from>&#x9a7e;&#x9a76;&#x5458;&#x67e5;&#x8be2;</from><to>&#x552e;&#x7968;&#x5458;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>  
298 - <hop> <from>&#x552e;&#x7968;&#x5458;&#x67e5;&#x8be2;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>  
299 - <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>  
300 - <hop> <from>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</from><to>Excel&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>  
301 - </order>  
302 - <step>  
303 - <name>Excel&#x8f93;&#x51fa;</name>  
304 - <type>ExcelOutput</type>  
305 - <description/>  
306 - <distribute>Y</distribute>  
307 - <custom_distribution/>  
308 - <copies>1</copies>  
309 - <partitioning>  
310 - <method>none</method>  
311 - <schema_name/>  
312 - </partitioning>  
313 - <header>Y</header>  
314 - <footer>N</footer>  
315 - <encoding/>  
316 - <append>N</append>  
317 - <add_to_result_filenames>Y</add_to_result_filenames>  
318 - <file>  
319 - <name>&#x24;&#x7b;filepath&#x7d;</name>  
320 - <extention>xls</extention>  
321 - <do_not_open_newfile_init>N</do_not_open_newfile_init>  
322 - <create_parent_folder>N</create_parent_folder>  
323 - <split>N</split>  
324 - <add_date>N</add_date>  
325 - <add_time>N</add_time>  
326 - <SpecifyFormat>N</SpecifyFormat>  
327 - <date_time_format>yyyyMMddHHmmss</date_time_format>  
328 - <sheetname>&#x5de5;&#x4f5c;&#x8868;1</sheetname>  
329 - <autosizecolums>N</autosizecolums>  
330 - <nullisblank>N</nullisblank>  
331 - <protect_sheet>N</protect_sheet>  
332 - <password>Encrypted </password>  
333 - <splitevery>0</splitevery>  
334 - <usetempfiles>N</usetempfiles>  
335 - <tempdirectory/>  
336 - </file>  
337 - <template>  
338 - <enabled>N</enabled>  
339 - <append>N</append>  
340 - <filename>template.xls</filename>  
341 - </template>  
342 - <fields>  
343 - <field>  
344 - <name>&#x7ebf;&#x8def;</name>  
345 - <type>String</type>  
346 - <format/>  
347 - </field>  
348 - <field>  
349 - <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>  
350 - <type>String</type>  
351 - <format/>  
352 - </field>  
353 - <field>  
354 - <name>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</name>  
355 - <type>String</type>  
356 - <format/>  
357 - </field>  
358 - <field>  
359 - <name>&#x9a7e;&#x9a76;&#x5458;</name>  
360 - <type>String</type>  
361 - <format/>  
362 - </field>  
363 - <field>  
364 - <name>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</name>  
365 - <type>String</type>  
366 - <format/>  
367 - </field>  
368 - <field>  
369 - <name>&#x552e;&#x7968;&#x5458;</name>  
370 - <type>String</type>  
371 - <format/>  
372 - </field>  
373 - </fields>  
374 - <custom>  
375 - <header_font_name>arial</header_font_name>  
376 - <header_font_size>10</header_font_size>  
377 - <header_font_bold>N</header_font_bold>  
378 - <header_font_italic>N</header_font_italic>  
379 - <header_font_underline>no</header_font_underline>  
380 - <header_font_orientation>horizontal</header_font_orientation>  
381 - <header_font_color>black</header_font_color>  
382 - <header_background_color>none</header_background_color>  
383 - <header_row_height>255</header_row_height>  
384 - <header_alignment>left</header_alignment>  
385 - <header_image/>  
386 - <row_font_name>arial</row_font_name>  
387 - <row_font_size>10</row_font_size>  
388 - <row_font_color>black</row_font_color>  
389 - <row_background_color>none</row_background_color>  
390 - </custom>  
391 - <cluster_schema/>  
392 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
393 - <xloc>696</xloc>  
394 - <yloc>257</yloc>  
395 - <draw>Y</draw>  
396 - </GUI>  
397 - </step>  
398 -  
399 - <step>  
400 - <name>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#xff08;&#x6ca1;&#x6709;&#x4f5c;&#x5e9f;&#xff09;</name>  
401 - <type>TableInput</type>  
402 - <description/>  
403 - <distribute>Y</distribute>  
404 - <custom_distribution/>  
405 - <copies>1</copies>  
406 - <partitioning>  
407 - <method>none</method>  
408 - <schema_name/>  
409 - </partitioning>  
410 - <connection>bus_control_variable</connection>  
411 - <sql>select &#x2a; from bsth_c_s_ecinfo where is_cancel &#x3d; 0 and xl &#x3d; &#x24;&#x7b;xlid&#x7d;</sql>  
412 - <limit>0</limit>  
413 - <lookup/>  
414 - <execute_each_row>N</execute_each_row>  
415 - <variables_active>Y</variables_active>  
416 - <lazy_conversion_active>N</lazy_conversion_active>  
417 - <cluster_schema/>  
418 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
419 - <xloc>90</xloc>  
420 - <yloc>59</yloc>  
421 - <draw>Y</draw>  
422 - </GUI>  
423 - </step>  
424 -  
425 - <step>  
426 - <name>&#x552e;&#x7968;&#x5458;&#x67e5;&#x8be2;</name>  
427 - <type>DBJoin</type>  
428 - <description/>  
429 - <distribute>Y</distribute>  
430 - <custom_distribution/>  
431 - <copies>1</copies>  
432 - <partitioning>  
433 - <method>none</method>  
434 - <schema_name/>  
435 - </partitioning>  
436 - <connection>bus_control_variable</connection>  
437 - <rowlimit>1</rowlimit>  
438 - <sql>select job_code as scode, personnel_name as sname from bsth_c_personnel&#xa;where id &#x3d; &#x3f;</sql>  
439 - <outer_join>Y</outer_join>  
440 - <replace_vars>N</replace_vars>  
441 - <parameter>  
442 - <field>  
443 - <name>spy</name>  
444 - <type>Integer</type>  
445 - </field>  
446 - </parameter>  
447 - <cluster_schema/>  
448 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
449 - <xloc>491</xloc>  
450 - <yloc>60</yloc>  
451 - <draw>Y</draw>  
452 - </GUI>  
453 - </step>  
454 -  
455 - <step>  
456 - <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>  
457 - <type>SelectValues</type>  
458 - <description/>  
459 - <distribute>Y</distribute>  
460 - <custom_distribution/>  
461 - <copies>1</copies>  
462 - <partitioning>  
463 - <method>none</method>  
464 - <schema_name/>  
465 - </partitioning>  
466 - <fields> <field> <name>xlmc</name>  
467 - <rename>&#x7ebf;&#x8def;</rename>  
468 - <length>-2</length>  
469 - <precision>-2</precision>  
470 - </field> <field> <name>dbbm</name>  
471 - <rename>&#x642d;&#x73ed;&#x7f16;&#x7801;</rename>  
472 - <length>-2</length>  
473 - <precision>-2</precision>  
474 - </field> <field> <name>jcode</name>  
475 - <rename>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</rename>  
476 - <length>-2</length>  
477 - <precision>-2</precision>  
478 - </field> <field> <name>jname</name>  
479 - <rename>&#x9a7e;&#x9a76;&#x5458;</rename>  
480 - <length>-2</length>  
481 - <precision>-2</precision>  
482 - </field> <field> <name>scode</name>  
483 - <rename>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</rename>  
484 - <length>-2</length>  
485 - <precision>-2</precision>  
486 - </field> <field> <name>sname</name>  
487 - <rename>&#x552e;&#x7968;&#x5458;</rename>  
488 - <length>-2</length>  
489 - <precision>-2</precision>  
490 - </field> <select_unspecified>N</select_unspecified>  
491 - </fields> <cluster_schema/>  
492 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
493 - <xloc>492</xloc>  
494 - <yloc>164</yloc>  
495 - <draw>Y</draw>  
496 - </GUI>  
497 - </step>  
498 -  
499 - <step>  
500 - <name>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</name>  
501 - <type>SortRows</type>  
502 - <description/>  
503 - <distribute>Y</distribute>  
504 - <custom_distribution/>  
505 - <copies>1</copies>  
506 - <partitioning>  
507 - <method>none</method>  
508 - <schema_name/>  
509 - </partitioning>  
510 - <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>  
511 - <prefix>out</prefix>  
512 - <sort_size>1000000</sort_size>  
513 - <free_memory/>  
514 - <compress>N</compress>  
515 - <compress_variable/>  
516 - <unique_rows>N</unique_rows>  
517 - <fields>  
518 - <field>  
519 - <name>&#x7ebf;&#x8def;</name>  
520 - <ascending>Y</ascending>  
521 - <case_sensitive>N</case_sensitive>  
522 - <presorted>N</presorted>  
523 - </field>  
524 - <field>  
525 - <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>  
526 - <ascending>Y</ascending>  
527 - <case_sensitive>N</case_sensitive>  
528 - <presorted>N</presorted>  
529 - </field>  
530 - </fields>  
531 - <cluster_schema/>  
532 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
533 - <xloc>692</xloc>  
534 - <yloc>164</yloc>  
535 - <draw>Y</draw>  
536 - </GUI>  
537 - </step>  
538 -  
539 - <step>  
540 - <name>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</name>  
541 - <type>DBLookup</type>  
542 - <description/>  
543 - <distribute>Y</distribute>  
544 - <custom_distribution/>  
545 - <copies>1</copies>  
546 - <partitioning>  
547 - <method>none</method>  
548 - <schema_name/>  
549 - </partitioning>  
550 - <connection>bus_control_variable</connection>  
551 - <cache>Y</cache>  
552 - <cache_load_all>Y</cache_load_all>  
553 - <cache_size>0</cache_size>  
554 - <lookup>  
555 - <schema/>  
556 - <table>bsth_c_line</table>  
557 - <orderby/>  
558 - <fail_on_multiple>N</fail_on_multiple>  
559 - <eat_row_on_failure>N</eat_row_on_failure>  
560 - <key>  
561 - <name>xl</name>  
562 - <field>id</field>  
563 - <condition>&#x3d;</condition>  
564 - <name2/>  
565 - </key>  
566 - <value>  
567 - <name>name</name>  
568 - <rename>xlmc</rename>  
569 - <default/>  
570 - <type>String</type>  
571 - </value>  
572 - </lookup>  
573 - <cluster_schema/>  
574 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
575 - <xloc>227</xloc>  
576 - <yloc>59</yloc>  
577 - <draw>Y</draw>  
578 - </GUI>  
579 - </step>  
580 -  
581 - <step>  
582 - <name>&#x9a7e;&#x9a76;&#x5458;&#x67e5;&#x8be2;</name>  
583 - <type>DBJoin</type>  
584 - <description/>  
585 - <distribute>Y</distribute>  
586 - <custom_distribution/>  
587 - <copies>1</copies>  
588 - <partitioning>  
589 - <method>none</method>  
590 - <schema_name/>  
591 - </partitioning>  
592 - <connection>bus_control_variable</connection>  
593 - <rowlimit>1</rowlimit>  
594 - <sql>select job_code as jcode, personnel_name as jname from bsth_c_personnel&#xa;where id &#x3d; &#x3f;</sql>  
595 - <outer_join>Y</outer_join>  
596 - <replace_vars>N</replace_vars>  
597 - <parameter>  
598 - <field>  
599 - <name>jsy</name>  
600 - <type>Integer</type>  
601 - </field>  
602 - </parameter>  
603 - <cluster_schema/>  
604 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
605 - <xloc>366</xloc>  
606 - <yloc>60</yloc>  
607 - <draw>Y</draw>  
608 - </GUI>  
609 - </step>  
610 -  
611 - <step_error_handling>  
612 - </step_error_handling>  
613 - <slave-step-copy-partition-distribution>  
614 -</slave-step-copy-partition-distribution>  
615 - <slave_transformation>N</slave_transformation>  
616 -  
617 -</transformation> 1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#x4fe1;&#x606f;&#x5bfc;&#x51fa;</name>
  5 + <description/>
  6 + <extended_description/>
  7 + <trans_version/>
  8 + <trans_type>Normal</trans_type>
  9 + <trans_status>0</trans_status>
  10 + <directory>&#x2f;</directory>
  11 + <parameters>
  12 + <parameter>
  13 + <name>filepath</name>
  14 + <default_value/>
  15 + <description>excel&#x6587;&#x4ef6;&#x8def;&#x5f84;</description>
  16 + </parameter>
  17 + <parameter>
  18 + <name>xlid</name>
  19 + <default_value/>
  20 + <description>&#x7ebf;&#x8def;id</description>
  21 + </parameter>
  22 + </parameters>
  23 + <log>
  24 +<trans-log-table><connection/>
  25 +<schema/>
  26 +<table/>
  27 +<size_limit_lines/>
  28 +<interval/>
  29 +<timeout_days/>
  30 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table>
  31 +<perf-log-table><connection/>
  32 +<schema/>
  33 +<table/>
  34 +<interval/>
  35 +<timeout_days/>
  36 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table>
  37 +<channel-log-table><connection/>
  38 +<schema/>
  39 +<table/>
  40 +<timeout_days/>
  41 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table>
  42 +<step-log-table><connection/>
  43 +<schema/>
  44 +<table/>
  45 +<timeout_days/>
  46 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table>
  47 +<metrics-log-table><connection/>
  48 +<schema/>
  49 +<table/>
  50 +<timeout_days/>
  51 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table>
  52 + </log>
  53 + <maxdate>
  54 + <connection/>
  55 + <table/>
  56 + <field/>
  57 + <offset>0.0</offset>
  58 + <maxdiff>0.0</maxdiff>
  59 + </maxdate>
  60 + <size_rowset>10000</size_rowset>
  61 + <sleep_time_empty>50</sleep_time_empty>
  62 + <sleep_time_full>50</sleep_time_full>
  63 + <unique_connections>N</unique_connections>
  64 + <feedback_shown>Y</feedback_shown>
  65 + <feedback_size>50000</feedback_size>
  66 + <using_thread_priorities>Y</using_thread_priorities>
  67 + <shared_objects_file/>
  68 + <capture_step_performance>N</capture_step_performance>
  69 + <step_performance_capturing_delay>1000</step_performance_capturing_delay>
  70 + <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
  71 + <dependencies>
  72 + </dependencies>
  73 + <partitionschemas>
  74 + </partitionschemas>
  75 + <slaveservers>
  76 + </slaveservers>
  77 + <clusterschemas>
  78 + </clusterschemas>
  79 + <created_user>-</created_user>
  80 + <created_date>2017&#x2f;01&#x2f;11 15&#x3a;36&#x3a;10.101</created_date>
  81 + <modified_user>-</modified_user>
  82 + <modified_date>2017&#x2f;01&#x2f;11 15&#x3a;36&#x3a;10.101</modified_date>
  83 + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
  84 + <is_key_private>N</is_key_private>
  85 + </info>
  86 + <notepads>
  87 + <notepad>
  88 + <note>&#x8fd9;&#x91cc;&#x6709;&#x4e9b;&#x95ee;&#x9898;&#xa;&#x5728;window2012&#x7684;&#x73af;&#x5883;&#x4e0b;&#xff0c;&#xa;MySql&#x6570;&#x636e;&#x5e93;&#x67e5;&#x8be2;&#x4e2d;&#x5982;&#x679c;&#x8fd4;&#x56de;&#x4e2d;&#x6587;&#x5185;&#x5bb9;&#x7684;&#x5b57;&#x6bb5;&#xff0c;&#x8fd9;&#x4e2a;&#x5185;&#x5bb9;&#x4e71;&#x7801;&#xa;&#x89e3;&#x51b3;&#x529e;&#x6cd5;&#xff0c;&#x5c31;&#x662f;&#x6570;&#x636e;&#x5e93;&#x67e5;&#x8be2;&#x5168;&#x90e8;&#x7f13;&#x5b58;&#xff0c;&#x5c31;&#x4e0d;&#x4e71;&#x7801;&#xa;linux&#x73af;&#x5883;&#x4e0b;&#x6ca1;&#x95ee;&#x9898;</note>
  89 + <xloc>66</xloc>
  90 + <yloc>151</yloc>
  91 + <width>333</width>
  92 + <heigth>90</heigth>
  93 + <fontname>YaHei Consolas Hybrid</fontname>
  94 + <fontsize>12</fontsize>
  95 + <fontbold>N</fontbold>
  96 + <fontitalic>N</fontitalic>
  97 + <fontcolorred>0</fontcolorred>
  98 + <fontcolorgreen>0</fontcolorgreen>
  99 + <fontcolorblue>0</fontcolorblue>
  100 + <backgroundcolorred>255</backgroundcolorred>
  101 + <backgroundcolorgreen>205</backgroundcolorgreen>
  102 + <backgroundcolorblue>112</backgroundcolorblue>
  103 + <bordercolorred>100</bordercolorred>
  104 + <bordercolorgreen>100</bordercolorgreen>
  105 + <bordercolorblue>100</bordercolorblue>
  106 + <drawshadow>Y</drawshadow>
  107 + </notepad>
  108 + </notepads>
  109 + <connection>
  110 + <name>192.168.168.1_jwgl_dw</name>
  111 + <server>192.168.168.1</server>
  112 + <type>ORACLE</type>
  113 + <access>Native</access>
  114 + <database>orcl</database>
  115 + <port>1521</port>
  116 + <username>jwgl_dw</username>
  117 + <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password>
  118 + <servername/>
  119 + <data_tablespace/>
  120 + <index_tablespace/>
  121 + <attributes>
  122 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  123 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  124 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  125 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  126 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  127 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  128 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  129 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  130 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  131 + </attributes>
  132 + </connection>
  133 + <connection>
  134 + <name>bus_control_variable</name>
  135 + <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
  136 + <type>MYSQL</type>
  137 + <access>Native</access>
  138 + <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
  139 + <port>3306</port>
  140 + <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
  141 + <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
  142 + <servername/>
  143 + <data_tablespace/>
  144 + <index_tablespace/>
  145 + <attributes>
  146 + <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
  147 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  148 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  149 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  150 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  151 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  152 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  153 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  154 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  155 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  156 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  157 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  158 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  159 + </attributes>
  160 + </connection>
  161 + <connection>
  162 + <name>bus_control_&#x516c;&#x53f8;_201</name>
  163 + <server>localhost</server>
  164 + <type>MYSQL</type>
  165 + <access>Native</access>
  166 + <database>control</database>
  167 + <port>3306</port>
  168 + <username>root</username>
  169 + <password>Encrypted </password>
  170 + <servername/>
  171 + <data_tablespace/>
  172 + <index_tablespace/>
  173 + <attributes>
  174 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  175 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  176 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  177 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  178 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  179 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  180 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  181 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  182 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  183 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  184 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  185 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  186 + </attributes>
  187 + </connection>
  188 + <connection>
  189 + <name>bus_control_&#x672c;&#x673a;</name>
  190 + <server>localhost</server>
  191 + <type>MYSQL</type>
  192 + <access>Native</access>
  193 + <database>control</database>
  194 + <port>3306</port>
  195 + <username>root</username>
  196 + <password>Encrypted </password>
  197 + <servername/>
  198 + <data_tablespace/>
  199 + <index_tablespace/>
  200 + <attributes>
  201 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  202 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  203 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  204 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  205 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  206 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  207 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  208 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  209 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  210 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  211 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  212 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  213 + </attributes>
  214 + </connection>
  215 + <connection>
  216 + <name>xlab_mysql_youle</name>
  217 + <server>101.231.124.8</server>
  218 + <type>MYSQL</type>
  219 + <access>Native</access>
  220 + <database>xlab_youle</database>
  221 + <port>45687</port>
  222 + <username>xlab-youle</username>
  223 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
  224 + <servername/>
  225 + <data_tablespace/>
  226 + <index_tablespace/>
  227 + <attributes>
  228 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  229 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  230 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  231 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  232 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  233 + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
  234 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  235 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  236 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  237 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  238 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  239 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  240 + </attributes>
  241 + </connection>
  242 + <connection>
  243 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  244 + <server>localhost</server>
  245 + <type>MYSQL</type>
  246 + <access>Native</access>
  247 + <database>xlab_youle</database>
  248 + <port>3306</port>
  249 + <username>root</username>
  250 + <password>Encrypted </password>
  251 + <servername/>
  252 + <data_tablespace/>
  253 + <index_tablespace/>
  254 + <attributes>
  255 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  256 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  257 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  258 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  259 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  260 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  261 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  262 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  263 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  264 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  265 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  266 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  267 + </attributes>
  268 + </connection>
  269 + <connection>
  270 + <name>xlab_youle</name>
  271 + <server/>
  272 + <type>MYSQL</type>
  273 + <access>JNDI</access>
  274 + <database>xlab_youle</database>
  275 + <port>1521</port>
  276 + <username/>
  277 + <password>Encrypted </password>
  278 + <servername/>
  279 + <data_tablespace/>
  280 + <index_tablespace/>
  281 + <attributes>
  282 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  283 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  284 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  285 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  286 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  287 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  288 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  289 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  290 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  291 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  292 + </attributes>
  293 + </connection>
  294 + <order>
  295 + <hop> <from>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#xff08;&#x6ca1;&#x6709;&#x4f5c;&#x5e9f;&#xff09;</from><to>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  296 + <hop> <from>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</from><to>&#x9a7e;&#x9a76;&#x5458;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  297 + <hop> <from>&#x9a7e;&#x9a76;&#x5458;&#x67e5;&#x8be2;</from><to>&#x552e;&#x7968;&#x5458;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  298 + <hop> <from>&#x552e;&#x7968;&#x5458;&#x67e5;&#x8be2;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
  299 + <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  300 + <hop> <from>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</from><to>Excel&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
  301 + </order>
  302 + <step>
  303 + <name>Excel&#x8f93;&#x51fa;</name>
  304 + <type>ExcelOutput</type>
  305 + <description/>
  306 + <distribute>Y</distribute>
  307 + <custom_distribution/>
  308 + <copies>1</copies>
  309 + <partitioning>
  310 + <method>none</method>
  311 + <schema_name/>
  312 + </partitioning>
  313 + <header>Y</header>
  314 + <footer>N</footer>
  315 + <encoding/>
  316 + <append>N</append>
  317 + <add_to_result_filenames>Y</add_to_result_filenames>
  318 + <file>
  319 + <name>&#x24;&#x7b;filepath&#x7d;</name>
  320 + <extention>xls</extention>
  321 + <do_not_open_newfile_init>N</do_not_open_newfile_init>
  322 + <create_parent_folder>N</create_parent_folder>
  323 + <split>N</split>
  324 + <add_date>N</add_date>
  325 + <add_time>N</add_time>
  326 + <SpecifyFormat>N</SpecifyFormat>
  327 + <date_time_format>yyyyMMddHHmmss</date_time_format>
  328 + <sheetname>&#x5de5;&#x4f5c;&#x8868;1</sheetname>
  329 + <autosizecolums>N</autosizecolums>
  330 + <nullisblank>N</nullisblank>
  331 + <protect_sheet>N</protect_sheet>
  332 + <password>Encrypted </password>
  333 + <splitevery>0</splitevery>
  334 + <usetempfiles>N</usetempfiles>
  335 + <tempdirectory/>
  336 + </file>
  337 + <template>
  338 + <enabled>N</enabled>
  339 + <append>N</append>
  340 + <filename>template.xls</filename>
  341 + </template>
  342 + <fields>
  343 + <field>
  344 + <name>&#x7ebf;&#x8def;</name>
  345 + <type>String</type>
  346 + <format/>
  347 + </field>
  348 + <field>
  349 + <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>
  350 + <type>String</type>
  351 + <format/>
  352 + </field>
  353 + <field>
  354 + <name>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</name>
  355 + <type>String</type>
  356 + <format/>
  357 + </field>
  358 + <field>
  359 + <name>&#x9a7e;&#x9a76;&#x5458;</name>
  360 + <type>String</type>
  361 + <format/>
  362 + </field>
  363 + <field>
  364 + <name>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</name>
  365 + <type>String</type>
  366 + <format/>
  367 + </field>
  368 + <field>
  369 + <name>&#x552e;&#x7968;&#x5458;</name>
  370 + <type>String</type>
  371 + <format/>
  372 + </field>
  373 + </fields>
  374 + <custom>
  375 + <header_font_name>arial</header_font_name>
  376 + <header_font_size>10</header_font_size>
  377 + <header_font_bold>N</header_font_bold>
  378 + <header_font_italic>N</header_font_italic>
  379 + <header_font_underline>no</header_font_underline>
  380 + <header_font_orientation>horizontal</header_font_orientation>
  381 + <header_font_color>black</header_font_color>
  382 + <header_background_color>none</header_background_color>
  383 + <header_row_height>255</header_row_height>
  384 + <header_alignment>left</header_alignment>
  385 + <header_image/>
  386 + <row_font_name>arial</row_font_name>
  387 + <row_font_size>10</row_font_size>
  388 + <row_font_color>black</row_font_color>
  389 + <row_background_color>none</row_background_color>
  390 + </custom>
  391 + <cluster_schema/>
  392 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  393 + <xloc>696</xloc>
  394 + <yloc>257</yloc>
  395 + <draw>Y</draw>
  396 + </GUI>
  397 + </step>
  398 +
  399 + <step>
  400 + <name>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#xff08;&#x6ca1;&#x6709;&#x4f5c;&#x5e9f;&#xff09;</name>
  401 + <type>TableInput</type>
  402 + <description/>
  403 + <distribute>Y</distribute>
  404 + <custom_distribution/>
  405 + <copies>1</copies>
  406 + <partitioning>
  407 + <method>none</method>
  408 + <schema_name/>
  409 + </partitioning>
  410 + <connection>bus_control_variable</connection>
  411 + <sql>select &#x2a; from bsth_c_s_ecinfo where is_cancel &#x3d; 0 and xl &#x3d; &#x24;&#x7b;xlid&#x7d;</sql>
  412 + <limit>0</limit>
  413 + <lookup/>
  414 + <execute_each_row>N</execute_each_row>
  415 + <variables_active>Y</variables_active>
  416 + <lazy_conversion_active>N</lazy_conversion_active>
  417 + <cluster_schema/>
  418 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  419 + <xloc>90</xloc>
  420 + <yloc>59</yloc>
  421 + <draw>Y</draw>
  422 + </GUI>
  423 + </step>
  424 +
  425 + <step>
  426 + <name>&#x552e;&#x7968;&#x5458;&#x67e5;&#x8be2;</name>
  427 + <type>DBJoin</type>
  428 + <description/>
  429 + <distribute>Y</distribute>
  430 + <custom_distribution/>
  431 + <copies>1</copies>
  432 + <partitioning>
  433 + <method>none</method>
  434 + <schema_name/>
  435 + </partitioning>
  436 + <connection>bus_control_variable</connection>
  437 + <rowlimit>1</rowlimit>
  438 + <sql>select job_codeori as scode, personnel_name as sname from bsth_c_personnel&#xa;where id &#x3d; &#x3f;</sql>
  439 + <outer_join>Y</outer_join>
  440 + <replace_vars>N</replace_vars>
  441 + <parameter>
  442 + <field>
  443 + <name>spy</name>
  444 + <type>Integer</type>
  445 + </field>
  446 + </parameter>
  447 + <cluster_schema/>
  448 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  449 + <xloc>491</xloc>
  450 + <yloc>60</yloc>
  451 + <draw>Y</draw>
  452 + </GUI>
  453 + </step>
  454 +
  455 + <step>
  456 + <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
  457 + <type>SelectValues</type>
  458 + <description/>
  459 + <distribute>Y</distribute>
  460 + <custom_distribution/>
  461 + <copies>1</copies>
  462 + <partitioning>
  463 + <method>none</method>
  464 + <schema_name/>
  465 + </partitioning>
  466 + <fields> <field> <name>xlmc</name>
  467 + <rename>&#x7ebf;&#x8def;</rename>
  468 + <length>-2</length>
  469 + <precision>-2</precision>
  470 + </field> <field> <name>dbbm</name>
  471 + <rename>&#x642d;&#x73ed;&#x7f16;&#x7801;</rename>
  472 + <length>-2</length>
  473 + <precision>-2</precision>
  474 + </field> <field> <name>jcode</name>
  475 + <rename>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</rename>
  476 + <length>-2</length>
  477 + <precision>-2</precision>
  478 + </field> <field> <name>jname</name>
  479 + <rename>&#x9a7e;&#x9a76;&#x5458;</rename>
  480 + <length>-2</length>
  481 + <precision>-2</precision>
  482 + </field> <field> <name>scode</name>
  483 + <rename>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</rename>
  484 + <length>-2</length>
  485 + <precision>-2</precision>
  486 + </field> <field> <name>sname</name>
  487 + <rename>&#x552e;&#x7968;&#x5458;</rename>
  488 + <length>-2</length>
  489 + <precision>-2</precision>
  490 + </field> <select_unspecified>N</select_unspecified>
  491 + </fields> <cluster_schema/>
  492 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  493 + <xloc>492</xloc>
  494 + <yloc>164</yloc>
  495 + <draw>Y</draw>
  496 + </GUI>
  497 + </step>
  498 +
  499 + <step>
  500 + <name>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</name>
  501 + <type>SortRows</type>
  502 + <description/>
  503 + <distribute>Y</distribute>
  504 + <custom_distribution/>
  505 + <copies>1</copies>
  506 + <partitioning>
  507 + <method>none</method>
  508 + <schema_name/>
  509 + </partitioning>
  510 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  511 + <prefix>out</prefix>
  512 + <sort_size>1000000</sort_size>
  513 + <free_memory/>
  514 + <compress>N</compress>
  515 + <compress_variable/>
  516 + <unique_rows>N</unique_rows>
  517 + <fields>
  518 + <field>
  519 + <name>&#x7ebf;&#x8def;</name>
  520 + <ascending>Y</ascending>
  521 + <case_sensitive>N</case_sensitive>
  522 + <presorted>N</presorted>
  523 + </field>
  524 + <field>
  525 + <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>
  526 + <ascending>Y</ascending>
  527 + <case_sensitive>N</case_sensitive>
  528 + <presorted>N</presorted>
  529 + </field>
  530 + </fields>
  531 + <cluster_schema/>
  532 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  533 + <xloc>692</xloc>
  534 + <yloc>164</yloc>
  535 + <draw>Y</draw>
  536 + </GUI>
  537 + </step>
  538 +
  539 + <step>
  540 + <name>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</name>
  541 + <type>DBLookup</type>
  542 + <description/>
  543 + <distribute>Y</distribute>
  544 + <custom_distribution/>
  545 + <copies>1</copies>
  546 + <partitioning>
  547 + <method>none</method>
  548 + <schema_name/>
  549 + </partitioning>
  550 + <connection>bus_control_variable</connection>
  551 + <cache>Y</cache>
  552 + <cache_load_all>Y</cache_load_all>
  553 + <cache_size>0</cache_size>
  554 + <lookup>
  555 + <schema/>
  556 + <table>bsth_c_line</table>
  557 + <orderby/>
  558 + <fail_on_multiple>N</fail_on_multiple>
  559 + <eat_row_on_failure>N</eat_row_on_failure>
  560 + <key>
  561 + <name>xl</name>
  562 + <field>id</field>
  563 + <condition>&#x3d;</condition>
  564 + <name2/>
  565 + </key>
  566 + <value>
  567 + <name>name</name>
  568 + <rename>xlmc</rename>
  569 + <default/>
  570 + <type>String</type>
  571 + </value>
  572 + </lookup>
  573 + <cluster_schema/>
  574 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  575 + <xloc>227</xloc>
  576 + <yloc>59</yloc>
  577 + <draw>Y</draw>
  578 + </GUI>
  579 + </step>
  580 +
  581 + <step>
  582 + <name>&#x9a7e;&#x9a76;&#x5458;&#x67e5;&#x8be2;</name>
  583 + <type>DBJoin</type>
  584 + <description/>
  585 + <distribute>Y</distribute>
  586 + <custom_distribution/>
  587 + <copies>1</copies>
  588 + <partitioning>
  589 + <method>none</method>
  590 + <schema_name/>
  591 + </partitioning>
  592 + <connection>bus_control_variable</connection>
  593 + <rowlimit>1</rowlimit>
  594 + <sql>select job_codeori as jcode, personnel_name as jname from bsth_c_personnel&#xa;where id &#x3d; &#x3f;</sql>
  595 + <outer_join>Y</outer_join>
  596 + <replace_vars>N</replace_vars>
  597 + <parameter>
  598 + <field>
  599 + <name>jsy</name>
  600 + <type>Integer</type>
  601 + </field>
  602 + </parameter>
  603 + <cluster_schema/>
  604 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  605 + <xloc>366</xloc>
  606 + <yloc>60</yloc>
  607 + <draw>Y</draw>
  608 + </GUI>
  609 + </step>
  610 +
  611 + <step_error_handling>
  612 + </step_error_handling>
  613 + <slave-step-copy-partition-distribution>
  614 +</slave-step-copy-partition-distribution>
  615 + <slave_transformation>N</slave_transformation>
  616 +
  617 +</transformation>
src/main/resources/static/pages/base/timesmodel/gantt.html
@@ -119,8 +119,9 @@ @@ -119,8 +119,9 @@
119 <script src="/pages/base/timesmodel/js/raty/lib/jquery.raty.js"></script> 119 <script src="/pages/base/timesmodel/js/raty/lib/jquery.raty.js"></script>
120 <script src="/pages/base/timesmodel/js/ContextJS/js/context.js"></script> 120 <script src="/pages/base/timesmodel/js/ContextJS/js/context.js"></script>
121 <script src="/pages/base/timesmodel/js/base-fun.js"></script> 121 <script src="/pages/base/timesmodel/js/base-fun.js"></script>
122 -<script src="/pages/base/timesmodel/js/strategy/strategy-paramter.js"></script>  
123 -<script src="/pages/base/timesmodel/js/strategy/strategy-util.js"></script> 122 +<script src="/pages/base/timesmodel/js/strategy/StrategyUtils.js"></script>
  123 +<script src="/pages/base/timesmodel/js/strategy/BcObj.js"></script>
  124 +<script src="/pages/base/timesmodel/js/strategy/ParameterObj.js"></script>
124 <script src="/pages/base/timesmodel/js/strategy/strategy-headway.js"></script> 125 <script src="/pages/base/timesmodel/js/strategy/strategy-headway.js"></script>
125 <script src="/pages/base/timesmodel/js/d3.relationshipgraph.js"></script> 126 <script src="/pages/base/timesmodel/js/d3.relationshipgraph.js"></script>
126 <script src="/pages/base/timesmodel/js/errorinfo.js"></script> 127 <script src="/pages/base/timesmodel/js/errorinfo.js"></script>
src/main/resources/static/pages/base/timesmodel/js/add-form-wizard.js
@@ -524,7 +524,8 @@ var SKBFormWizard = function() { @@ -524,7 +524,8 @@ var SKBFormWizard = function() {
524 // 发车间隙分析用参数 524 // 发车间隙分析用参数
525 'fcjx': {required: true}, // 时段发车间隙,TODO:貌似没发启用form验证 525 'fcjx': {required: true}, // 时段发车间隙,TODO:貌似没发启用form验证
526 'stt': {required: true}, // 停站类型,TODO:貌似没发启用form验证 526 'stt': {required: true}, // 停站类型,TODO:貌似没发启用form验证
527 - 'gfjypcs': {required : true,number : true,digits: true} // 高峰建议配车数 527 + 'gfjypcs': {required : true,number : true,digits: true}, // 高峰建议配车数
  528 + 'jblps': {required : true,number : true,digits: true} // 加班车路牌数
528 }, 529 },
529 530
530 /** 531 /**
src/main/resources/static/pages/base/timesmodel/js/gantt.js
@@ -48,6 +48,10 @@ @@ -48,6 +48,10 @@
48 var dataMap = argsMap(map,dirA,bcTypeArr,seMap); 48 var dataMap = argsMap(map,dirA,bcTypeArr,seMap);
49 // 8、定义最大车辆数与停站时间. 49 // 8、定义最大车辆数与停站时间.
50 var CSMap = null,data = null; 50 var CSMap = null,data = null;
  51 +
  52 + // 创建ParameterObj
  53 + var _paramObj = StrategyUtils.getFactory().createParameterObj(map, dataMap);
  54 +
51 if(map.baseRes== '0') { 55 if(map.baseRes== '0') {
52 CSMap = getMaxCarAndStopSpace0(map,seMap); 56 CSMap = getMaxCarAndStopSpace0(map,seMap);
53 // 发车间隙 57 // 发车间隙
@@ -58,7 +62,7 @@ @@ -58,7 +62,7 @@
58 map.fcjx = CSMap.fcjx; 62 map.fcjx = CSMap.fcjx;
59 }else if (map.baseRes == '2') { 63 }else if (map.baseRes == '2') {
60 // TODO:之后可能有新的参数加入 64 // TODO:之后可能有新的参数加入
61 - map.clzs = map.gfjypcs // 使用高峰建议配车数作为车辆总数 65 + map.clzs = StrategyUtils.calcuClzx(_paramObj);
62 CSMap = getMaxCarAndStopSpace1(map); 66 CSMap = getMaxCarAndStopSpace1(map);
63 67
64 } 68 }
@@ -78,7 +82,7 @@ @@ -78,7 +82,7 @@
78 // TODO:绘制gantt图表 82 // TODO:绘制gantt图表
79 // TODO:var seDate = getksjssj(null,seMap.s); 关联参数必须设置 83 // TODO:var seDate = getksjssj(null,seMap.s); 关联参数必须设置
80 // TODO:CSMap.maxCar 之后要设定一下的 84 // TODO:CSMap.maxCar 之后要设定一下的
81 - data = StrategyHeadway.BXPplaceClassesTime03(stopAraay,CSMap.maxCar,map,seMap,dataMap); 85 + data = StrategyHeadway.BXPplaceClassesTime03(_paramObj, CSMap.maxCar);
82 } 86 }
83 87
84 }else { 88 }else {
src/main/resources/static/pages/base/timesmodel/js/strategy/BcObj.js 0 → 100644
  1 +/**
  2 + * 班次类型对象(最后转换成显示用bc对象)
  3 + * @param bcType
  4 + * @param isUp
  5 + * @param lp
  6 + * @param fcno
  7 + * @param fcTimeObj
  8 + * @param paramObj
  9 + * @returns {{}}
  10 + * @constructor
  11 + */
  12 +var BcObj = function(bcType, isUp, lp, fcno, fcTimeObj, paramObj) {
  13 +
  14 + //---------- 内部属性 ----------//
  15 + var _bcType = bcType; // 班次类型(normal,in,out等)
  16 + var _isUp = isUp; // true表示上行,false表示下行
  17 + var _lp = lp; // 路牌
  18 + var _fcno = fcno; // 发车顺序号
  19 +
  20 + // 计算的属性,TODO:还有其他属性
  21 + // 上标线里属于第几圈(本班次方向和标线方向一致,才有意义)
  22 + var qCount;
  23 +
  24 + // 班次里程
  25 + var _bclc = StrategyUtils.calcuTravelLcNumber(_isUp, _bcType, paramObj);
  26 + // 发车时间
  27 + var _fcsjObj = moment(fcTimeObj);
  28 + // 班次时间
  29 + var _bcsj = StrategyUtils.calcuTravelTime(_fcsjObj, _isUp, paramObj);
  30 + // 到达时间
  31 + var _arrsj = StrategyUtils.addMinute(_fcsjObj, _bcsj);
  32 + // 到达后的停站时间(使用到达时间判定)
  33 + var _stopTime = StrategyUtils.calcuFixedStopNumber(_arrsj, !_isUp, paramObj);
  34 +
  35 + return {
  36 + /**
  37 + * 是否上行。
  38 + * @returns boolean
  39 + */
  40 + isUp: function() {
  41 + return _isUp;
  42 + },
  43 + /**
  44 + * 获取发车时间。
  45 + * @returns {*|moment.Moment}
  46 + */
  47 + getFcTimeObj: function() {
  48 + return _fcsjObj;
  49 + },
  50 + /**
  51 + * 获取班次时间。
  52 + */
  53 + getBcTime: function() {
  54 + return _bcsj;
  55 + },
  56 + /**
  57 + * 获取停站时间。
  58 + * @returns {*}
  59 + */
  60 + getStopTime: function() {
  61 + return _stopTime;
  62 + },
  63 +
  64 + /**
  65 + * 转换成显示用班次对象。
  66 + */
  67 + toGanttBcObj: function() {
  68 + var _bcObj = {
  69 + parent: _lp,
  70 + lpNo: _lp,
  71 + lp: null,
  72 + lpName: _lp,
  73 + lpType: '普通路牌',
  74 + bcType: _bcType,
  75 + fcno: _fcno,
  76 + isfb: 0,
  77 + isSwitchXl: null,
  78 + bz: null
  79 + };
  80 +
  81 + // 线路上下行
  82 + _bcObj.xlDir = _isUp ? "relationshipGraph-up" : "relationshipGraph-down";
  83 +
  84 + // 里程
  85 + _bcObj.jhlc = _bclc;
  86 +
  87 + // 停车场
  88 + _bcObj.tcc = paramObj.getTccId();
  89 +
  90 + // 时刻表
  91 + _bcObj.ttinfo = paramObj.getTTinfoId();
  92 +
  93 + // 线路
  94 + _bcObj.xl = paramObj.getXlId();
  95 +
  96 + // 起点站、终点站
  97 + _bcObj.qdz = _isUp ? paramObj.getUpQdzObj().id : paramObj.getDownQdzObj().id;
  98 + _bcObj.zdz = _isUp ? paramObj.getUpZdzObj().id : paramObj.getDownZdzObj().id;
  99 +
  100 + // 发车时间,行驶时间,到达时间,停站时间
  101 + _bcObj.fcsj = _fcsjObj.format("HH:mm");
  102 + _bcObj.bcsj = _bcsj;
  103 + _bcObj.ARRIVALTIME = _arrsj.format("HH:mm");
  104 + _bcObj.STOPTIME = _stopTime;
  105 +
  106 + return _bcObj;
  107 + }
  108 + };
  109 +};
0 \ No newline at end of file 110 \ No newline at end of file
src/main/resources/static/pages/base/timesmodel/js/strategy/ParameterObj.js 0 → 100644
  1 +/**
  2 + * 包装表单参数为内部参数对象。
  3 + * @param formMap 表单form参数map
  4 + * @param dataMap
  5 + * @constructor
  6 + *
  7 + * 注意:moment是mutable,所有的moment操作都会改变原有对象的值,
  8 + * 所以所有的操作都要小心处理。
  9 + */
  10 +var ParameterObj = function(formMap, dataMap) {
  11 + // 内部保存的form参数
  12 + var _formMap = formMap;
  13 + // 计算行驶时间对象
  14 + var _travelTimeObj_fun = function() {
  15 + var upMoningPeakTravelTime =
  16 + isNaN(_formMap.earlyUpTime) ?
  17 + parseInt(_formMap.upTravelTime) :
  18 + parseInt(_formMap.earlyUpTime);
  19 + var downMoningPeakTravelTime =
  20 + isNaN(_formMap.earlyDownTime) ?
  21 + parseInt(_formMap.downTravelTime) :
  22 + parseInt(_formMap.earlyDownTime);
  23 + var upEveningPeakTravelTime =
  24 + isNaN(_formMap.lateUpTime) ?
  25 + parseInt(_formMap.upTravelTime) :
  26 + parseInt(_formMap.lateUpTime);
  27 + var downEveningPeakTravelTime =
  28 + isNaN(_formMap.lateDownTime) ?
  29 + parseInt(_formMap.downTravelTime) :
  30 + parseInt(_formMap.lateDownTime);
  31 + var upTroughTravelTime =
  32 + isNaN(_formMap.troughUpTime) ?
  33 + parseInt(_formMap.upTravelTime) :
  34 + parseInt(_formMap.troughUpTime);
  35 + var downTroughTravelTime =
  36 + isNaN(_formMap.troughDownTime) ?
  37 + parseInt(_formMap.downTravelTime) :
  38 + parseInt(_formMap.troughDownTime);
  39 +
  40 + return { // TODO:暂时获取标准信息,之后改成历史数据,可能需要使用promise封装
  41 + "moningpeak": [
  42 + upMoningPeakTravelTime,
  43 + downMoningPeakTravelTime
  44 + ],
  45 + "eveningpeak": [
  46 + upEveningPeakTravelTime,
  47 + downEveningPeakTravelTime
  48 + ],
  49 + "trough": [
  50 + upTroughTravelTime,
  51 + downTroughTravelTime
  52 + ]
  53 + }
  54 + };
  55 + var _travelTimeObj = _travelTimeObj_fun();
  56 +
  57 + // 计算行驶里程对象
  58 + var _travelLcObj_fun = function() {
  59 + return [
  60 + { // 上行里程
  61 + "normalLc": isNaN(_formMap.upMileage) ? 0 : parseFloat(_formMap.upMileage),
  62 + "inLc": isNaN(_formMap.upInMileage) ? 0 : parseFloat(_formMap.upInMileage),
  63 + "outLc": isNaN(_formMap.upOutMileage) ? 0 : parseFloat(_formMap.upOutMileage)
  64 + },
  65 + { // 下行里程
  66 + "normalLc": isNaN(_formMap.downMileage) ? 0 : parseFloat(_formMap.downMileage),
  67 + "inLc": isNaN(_formMap.downInMileage) ? 0 : parseFloat(_formMap.downInMileage),
  68 + "outLc": isNaN(_formMap.downOutMileage) ? 0 : parseFloat(_formMap.downOutMileage)
  69 + }
  70 + ];
  71 + };
  72 + var _travelLcObj = _travelLcObj_fun();
  73 +
  74 + // 计算首班车,末班车行驶时间字符串
  75 + var _firstLastDepartureTimeStrObj_fun = function() {
  76 + return {
  77 + up: { // 上行
  78 + firstVehicleDepartureTimeStr: _formMap.startStationFirstTime,
  79 + lastVehicleDepartureTimeStr: _formMap.startStationEndTime
  80 + },
  81 + down: { // 下行
  82 + firstVehicleDepartureTimeStr: _formMap.endStationFirstTime,
  83 + lastVehicleDepartureTimeStr: _formMap.endStationEndTime
  84 + }
  85 + };
  86 + };
  87 + var _firstLastDepartureTimeStrObj = _firstLastDepartureTimeStrObj_fun();
  88 +
  89 + // 计算时间段划分对象
  90 + var _timeIntervalObj_fun = function() {
  91 + return {
  92 + moningPeakTimeStrs: {
  93 + start: _formMap.earlyStartTime,
  94 + end: _formMap.earlyEndTime
  95 + },
  96 + eveningPeakTimeStrs: {
  97 + start: _formMap.lateStartTime,
  98 + end: _formMap.lateEndTime
  99 + }
  100 +
  101 + // TODO:其他时间段以后再加
  102 + };
  103 + };
  104 + var _timeIntervalObj = _timeIntervalObj_fun();
  105 +
  106 + // 计算各个时段的发车间隙
  107 + var _fcjxIntervalObj_fun = function() {
  108 + var _fcjxes = _formMap.fcjx.split(",");
  109 + var _rtn = {
  110 + mpeakfcjx : {}, // 早高峰
  111 + epeakfcjx : {}, // 晚高峰
  112 + troughfcjx: {} //低谷
  113 + };
  114 + var _fcjx = [];
  115 + var i = 0;
  116 +
  117 + // TODO:这里按照顺序判定发车间隔
  118 + // 1、早高峰间隙
  119 + // 2、晚高峰间隙
  120 + // 3、早低谷
  121 + // 4、平峰
  122 + // 5、晚低谷
  123 +
  124 + // 至少3个,系统暂时使用3个,有最小间隔,有最大间隔
  125 + if (_fcjxes.length < 3) {
  126 + alert("发车间隙至少3个(早高峰,晚高峰,低谷)");
  127 + throw "发车间隙至少3个(早高峰,晚高峰,低谷)";
  128 + } else {
  129 + for (i = 0; i < 3; i++) {
  130 + _fcjx = _fcjxes[i].split("/");
  131 + if (i == 0) {
  132 + _rtn.mpeakfcjx.min = parseInt(_fcjx[2].split("-")[0]);
  133 + _rtn.mpeakfcjx.max = parseInt(_fcjx[2].split("-")[1]);
  134 + } else if (i == 1) {
  135 + _rtn.epeakfcjx.min = parseInt(_fcjx[2].split("-")[0]);
  136 + _rtn.epeakfcjx.max = parseInt(_fcjx[2].split("-")[1]);
  137 + } else {
  138 + _rtn.troughfcjx.min = parseInt(_fcjx[2].split("-")[0]);
  139 + _rtn.troughfcjx.max = parseInt(_fcjx[2].split("-")[1]);
  140 + }
  141 + }
  142 + }
  143 +
  144 + return _rtn;
  145 + };
  146 + var _fcjxIntervalObj = _fcjxIntervalObj_fun();
  147 +
  148 + // 获取停站类型
  149 + var _stopTypeObj_fun = function() {
  150 + var isMasterStop = false; // 是否主站停
  151 + var isMasterUpStop = false; // 主站停是否上行站点
  152 + if (_formMap) {
  153 + var fm_temp = _formMap.stt.split("/");
  154 + if (fm_temp.length == 1) { // 双向停站
  155 + isMasterStop = false;
  156 + } else {
  157 + isMasterStop = true;
  158 + if (fm_temp[1] == "0") {
  159 + isMasterUpStop = true;
  160 + } else {
  161 + isMasterUpStop = false;
  162 + }
  163 + }
  164 + } else {
  165 + throw "停站类型没有选择!";
  166 + }
  167 +
  168 + return {
  169 + isMasterStop: isMasterStop,
  170 + isMasterUpStop: isMasterUpStop
  171 + }
  172 + };
  173 + var _stopTypeObj = _stopTypeObj_fun();
  174 +
  175 + // 计算线路对象
  176 + var _xlObj_fun = function() {
  177 + return { // TODO:其他属性再议
  178 + xl: {
  179 + id: _formMap.lineName.split('_')[0]
  180 + }
  181 + };
  182 + };
  183 + var _xlObj = _xlObj_fun();
  184 +
  185 + // 计算停车场对象
  186 + var _parkObj_fun = function() {
  187 + return { // TODO:其他属性再议
  188 + park: {
  189 + id: _formMap.tcc_id
  190 + }
  191 + };
  192 + };
  193 + var _parkObj = _parkObj_fun();
  194 +
  195 + // 计算时刻表对象
  196 + var _ttInfoObj_fun = function() {
  197 + return { // TODO:其他属性再议
  198 + ttinfo: {
  199 + id: _formMap.skbName
  200 + }
  201 + };
  202 + };
  203 + var _ttInfoObj = _ttInfoObj_fun();
  204 +
  205 + // 计算起点站终点站对象
  206 + var _startEndStopObj_fun = function() {
  207 + return { // TODO:其他属性再议
  208 + up: {
  209 + qdz: { // 起点站
  210 + id: dataMap.qdzArr[0]
  211 + },
  212 + zdz: { // 终点站
  213 + id: dataMap.zdzArr[0]
  214 + }
  215 + },
  216 + down: {
  217 + qdz: { // 起点站
  218 + id: dataMap.qdzArr[1]
  219 + },
  220 + zdz: { // 终点站
  221 + id: dataMap.zdzArr[1]
  222 + }
  223 + }
  224 +
  225 + };
  226 + };
  227 + var _startEndStopObj = _startEndStopObj_fun();
  228 +
  229 + return {
  230 + /**
  231 + * 重置内部form参数。
  232 + * @param formMap
  233 + */
  234 + reset: function(formMap) {
  235 + _formMap = formMap;
  236 +
  237 + // 首班车,末班车行驶时间字符串
  238 + _firstLastDepartureTimeStrObj = _firstLastDepartureTimeStrObj_fun();
  239 + // 行驶时间对象
  240 + _travelTimeObj = _travelTimeObj_fun();
  241 + // 行驶里程对象
  242 + _travelLcObj = _travelLcObj_fun();
  243 + // 时间段划分对象
  244 + _timeIntervalObj = _timeIntervalObj_fun();
  245 + // 各个时段的发车间隙
  246 + _fcjxIntervalObj = _fcjxIntervalObj_fun();
  247 + // 停站类型
  248 + _stopTypeObj = _stopTypeObj_fun();
  249 + // 线路对象
  250 + _xlObj = _xlObj_fun();
  251 + // 停车场对象
  252 + _parkObj = _parkObj_fun();
  253 + // 时刻表对象
  254 + _ttInfoObj = _ttInfoObj_fun();
  255 + // 起点站终点站对象
  256 + _startEndStopObj = _startEndStopObj_fun();
  257 +
  258 + // TODO:其他再议
  259 + },
  260 +
  261 + //------------ 获取首班末班时间 ------------//
  262 + /**
  263 + * 获取上行首班时间对象。
  264 + * @return moment obj
  265 + */
  266 + getUpFirstDTimeObj: function() {
  267 + return StrategyUtils.toTimeObj(
  268 + _firstLastDepartureTimeStrObj.up.firstVehicleDepartureTimeStr
  269 + );
  270 + },
  271 + /**
  272 + * 获取上行末班时间对象。
  273 + * @return moment obj
  274 + */
  275 + getUpLastDtimeObj: function() {
  276 + return StrategyUtils.toTimeObj(
  277 + _firstLastDepartureTimeStrObj.up.lastVehicleDepartureTimeStr
  278 + );
  279 + },
  280 + /**
  281 + * 获取下行首班时间对象。
  282 + * @return moment obj
  283 + */
  284 + getDownFirstDTimeObj: function() {
  285 + return StrategyUtils.toTimeObj(
  286 + _firstLastDepartureTimeStrObj.down.firstVehicleDepartureTimeStr
  287 + );
  288 + },
  289 + /**
  290 + * 获取下行末班时间对象。
  291 + * @return moment obj
  292 + */
  293 + getDownLastDTimeObj: function() {
  294 + return StrategyUtils.toTimeObj(
  295 + _firstLastDepartureTimeStrObj.down.lastVehicleDepartureTimeStr
  296 + );
  297 + },
  298 +
  299 + //-------------- 获取行驶时间 ----------------//
  300 + /**
  301 + * 获取上行早高峰行驶时间。
  302 + * @returns int number
  303 + */
  304 + getUpMPeakTime: function() {
  305 + return _travelTimeObj.moningpeak[0];
  306 + },
  307 + /**
  308 + * 获取上行晚高峰行驶时间。
  309 + * @returns int number
  310 + */
  311 + getUpEPeakTime: function() {
  312 + return _travelTimeObj.eveningpeak[0];
  313 + },
  314 + /**
  315 + * 获取上行低谷行驶时间。
  316 + * @returns int number
  317 + */
  318 + getUpTroughTime: function() {
  319 + return _travelTimeObj.trough[0];
  320 + },
  321 + /**
  322 + * 获取下行早高峰行驶时间。
  323 + * @returns int number
  324 + */
  325 + getDownMPeakTime: function() {
  326 + return _travelTimeObj.moningpeak[1];
  327 + },
  328 + /**
  329 + * 获取下行晚高峰行驶时间。
  330 + * @returns int number
  331 + */
  332 + getDownEPeakTime: function() {
  333 + return _travelTimeObj.eveningpeak[1];
  334 + },
  335 + /**
  336 + * 获取下行低谷行驶时间。
  337 + * @returns int number
  338 + */
  339 + getDownTroughTime: function() {
  340 + return _travelTimeObj.trough[1];
  341 + },
  342 +
  343 + //---------------- 获取行驶里程 -----------------//
  344 + /**
  345 + * 获取上行normal班次里程。
  346 + * @returns number
  347 + */
  348 + getUpNormalLc: function() {
  349 + return _travelLcObj[0].normalLc;
  350 + },
  351 + /**
  352 + * 获取上行进场班次类型。
  353 + * @returns number
  354 + */
  355 + getUpInLc: function() {
  356 + return _travelLcObj[0].inLc;
  357 + },
  358 + /**
  359 + * 获取上行出场班次类型。
  360 + * @returns number
  361 + */
  362 + getUpOutLc: function() {
  363 + return _travelLcObj[0].outLc;
  364 + },
  365 + /**
  366 + * 获取下行normal班次类型。
  367 + * @returns number
  368 + */
  369 + getDownNormalLc: function() {
  370 + return _travelLcObj[1].normalLc;
  371 + },
  372 + /**
  373 + * 获取下行进场班次类型。
  374 + * @returns number
  375 + */
  376 + getDownInLc: function() {
  377 + return _travelLcObj[1].inLc;
  378 + },
  379 + /**
  380 + * 获取下行出场班次类型。
  381 + * @returns number
  382 + */
  383 + getDownOutLc: function() {
  384 + return _travelLcObj[1].outLc;
  385 + },
  386 +
  387 + //---------------- 获取时间段信息 --------------//
  388 + /**
  389 + * 获取早高峰开始时间对象。
  390 + * @returns moment obj
  391 + */
  392 + getMPeakStartTimeObj: function() {
  393 + return StrategyUtils.toTimeObj(
  394 + _timeIntervalObj.moningPeakTimeStrs.start
  395 + );
  396 + },
  397 + /**
  398 + * 获取早高峰结束时间对象。
  399 + * @returns moment obj
  400 + */
  401 + getMPeakEndTimeObj: function() {
  402 + return StrategyUtils.toTimeObj(
  403 + _timeIntervalObj.moningPeakTimeStrs.end
  404 + );
  405 + },
  406 + /**
  407 + * 获取晚高峰开始时间对象。
  408 + * @returns moment obj
  409 + */
  410 + getEPeakStartTimeObj: function() {
  411 + return StrategyUtils.toTimeObj(
  412 + _timeIntervalObj.eveningPeakTimeStrs.start
  413 + );
  414 + },
  415 + /**
  416 + * 获取晚高峰结束时间对象。
  417 + * @returns moment obj
  418 + */
  419 + getEPeakEndTimeObj: function() {
  420 + return StrategyUtils.toTimeObj(
  421 + _timeIntervalObj.eveningPeakTimeStrs.end
  422 + );
  423 + },
  424 +
  425 + //----------------- 获取发车间隙(TODO:以后通过客流估算)-----------------//
  426 + /**
  427 + * 获取早高峰最小发车间隙。
  428 + * @returns int
  429 + */
  430 + getMPeakMinFcjx: function() {
  431 + return _fcjxIntervalObj.mpeakfcjx.min;
  432 + },
  433 + /**
  434 + * 获取早高峰最大发车间隙。
  435 + * @returns int
  436 + */
  437 + getMPeakMaxFcjx: function() {
  438 + return _fcjxIntervalObj.mpeakfcjx.max;
  439 + },
  440 + /**
  441 + * 获取晚高峰最小发车间隙。
  442 + * @returns int
  443 + */
  444 + getEPeakMinFcjx: function() {
  445 + return _fcjxIntervalObj.epeakfcjx.min;
  446 + },
  447 + /**
  448 + * 获取晚高峰最小发车间隙。
  449 + * @returns int
  450 + */
  451 + getEPeakMaxFcjx: function() {
  452 + return _fcjxIntervalObj.epeakfcjx.max;
  453 + },
  454 + /**
  455 + * 获取低谷最小发车间隙。
  456 + * @returns int
  457 + */
  458 + getTroughMinFcjx: function() {
  459 + return _fcjxIntervalObj.troughfcjx.min;
  460 + },
  461 + /**
  462 + * 获取低谷最大发车间隙。
  463 + * @returns int
  464 + */
  465 + getTroughMaxFcjx: function() {
  466 + return _fcjxIntervalObj.troughfcjx.max;
  467 + },
  468 +
  469 + //----------------- 获取停站方式 -------------------//
  470 + /**
  471 + * 是否双向停站。
  472 + * @returns {boolean}
  473 + */
  474 + isTwoWayStop: function() {
  475 + return !_stopTypeObj.isMasterStop;
  476 + },
  477 + /**
  478 + * 是否上行单向停站。
  479 + * @returns {boolean}
  480 + */
  481 + isUpOneWayStop: function() {
  482 + return _stopTypeObj.isMasterStop && _stopTypeObj.isMasterUpStop;
  483 + },
  484 + /**
  485 + * 是否下行单向停站。
  486 + * @returns {boolean}
  487 + */
  488 + isDownOneWayStop: function() {
  489 + return _stopTypeObj.isMasterStop && (!_stopTypeObj.isMasterUpStop);
  490 + },
  491 +
  492 + //----------------- 获取高峰配车数、加班路牌数 ----------------//
  493 + /**
  494 + * 获取高峰建议配车数(TODO:参照一下)。
  495 + * @returns {Number|*}
  496 + */
  497 + getAdvicePeakClzs: function() {
  498 + return parseInt(_formMap.gfjypcs);
  499 + },
  500 + /**
  501 + * 获取加班路牌数(5休2路牌的个数)。
  502 + * @returns {Number|*}
  503 + */
  504 + getJBLpes: function() {
  505 + return parseInt(_formMap.jblps);
  506 + },
  507 +
  508 + //----------------- 获取关联数据信息 -----------------//
  509 + /**
  510 + * 获取线路id。
  511 + */
  512 + getXlId: function() {
  513 + return _xlObj.xl.id;
  514 + },
  515 + /**
  516 + * 获取停车场id。
  517 + */
  518 + getTccId: function() {
  519 + return _parkObj.park.id;
  520 + },
  521 + /**
  522 + * 获取时刻表id。
  523 + */
  524 + getTTinfoId: function() {
  525 + return _ttInfoObj.ttinfo.id;
  526 + },
  527 + /**
  528 + * 获取上行起点站对象。
  529 + * @returns {{id: *}}
  530 + */
  531 + getUpQdzObj: function() {
  532 + return {
  533 + id: _startEndStopObj.up.qdz.id
  534 + };
  535 + },
  536 + /**
  537 + * 获取上行终点站对象。
  538 + * @returns {{id: *}}
  539 + */
  540 + getUpZdzObj: function() {
  541 + return {
  542 + id: _startEndStopObj.up.zdz.id
  543 + };
  544 + },
  545 + /**
  546 + * 获取下行起点站对象。
  547 + * @returns {{id: *}}
  548 + */
  549 + getDownQdzObj: function() {
  550 + return {
  551 + id: _startEndStopObj.down.qdz.id
  552 + };
  553 + },
  554 + /**
  555 + * 获取下行终点站对象。
  556 + * @returns {{id: *}}
  557 + */
  558 + getDownZdzObj: function() {
  559 + return {
  560 + id: _startEndStopObj.down.zdz.id
  561 + };
  562 + }
  563 +
  564 +
  565 + };
  566 +};
0 \ No newline at end of file 567 \ No newline at end of file
src/main/resources/static/pages/base/timesmodel/js/strategy/StrategyUtils.js 0 → 100644
  1 +/**
  2 + * 工具类。
  3 + * 注意:moment是mutable,所有的moment操作都会改变原有对象的值,
  4 + * 所以所有的操作都要小心处理。
  5 + */
  6 +var StrategyUtils = function() {
  7 + var date_wrap_prefix = "2000-01-01 "; // 包装日期的前缀
  8 + var date_wrap_format = "YYYY-MM-DD HH:mm"; // 日期格式
  9 + /**
  10 + * 将时间包装成日期,方便计算。
  11 + * @param timeStr 时间格式,如 06:30
  12 + * @returns moment对象
  13 + */
  14 + var _wrapTimeFun = function(timeStr) {
  15 + return moment(
  16 + date_wrap_prefix + timeStr,
  17 + date_wrap_format
  18 + );
  19 + };
  20 + /**
  21 + * 添加时间(注意,返回一个新的moment对象,此方法是immutable)
  22 + * @param timeObj moment 对象
  23 + * @param time 时间
  24 + * @param type 时间单位
  25 + * @returns 重新创建一个moment返回
  26 + */
  27 + var _addTimeFun = function(timeObj, time, type) {
  28 + var _timeObj = moment(timeObj); // clone
  29 + _timeObj.add(time, type);
  30 + return _timeObj;
  31 + };
  32 +
  33 + // 内部工厂类
  34 + var _factoryFun = function() {
  35 + return {
  36 + // 创建参数
  37 + createParameterObj: function(formMap, dataMap) {
  38 + return ParameterObj(formMap, dataMap);
  39 + },
  40 + // 创建班次对象
  41 + createBcObj: function(bcType, isUp, lp, fcno, fcTimeObj, paramObj) {
  42 + return BcObj(bcType, isUp, lp, fcno, fcTimeObj, paramObj);
  43 + }
  44 + };
  45 + };
  46 +
  47 + return {
  48 + /**
  49 + * 工厂对象,创建不同的对象。
  50 + * @returns {{createParameterObj, createBcObj}}
  51 + */
  52 + getFactory: function() {
  53 + return _factoryFun();
  54 + },
  55 +
  56 + //-------------- 时间操作 ------------//
  57 + /**
  58 + * 通过字符串创建时间对象。
  59 + * @param timeStr 时间字符串
  60 + * @returns {moment对象}
  61 + */
  62 + toTimeObj: function(timeStr) {
  63 + return _wrapTimeFun(timeStr);
  64 + },
  65 + /**
  66 + * 增加分钟。
  67 + * @param timeObj 时间对象
  68 + * @param minute 分钟
  69 + * @returns {重新创建一个moment返回}
  70 + */
  71 + addMinute: function(timeObj, minute) {
  72 + return _addTimeFun(timeObj, minute, "m");
  73 + },
  74 +
  75 + //-------------- 时间业务操作 ------------//
  76 + /**
  77 + * 判定某个班次是否是早高峰班次。
  78 + * @param timeObj 班次时间
  79 + * @param paramObj 参数对象
  80 + * @returns true false
  81 + */
  82 + isMPeakBc: function(timeObj, paramObj) {
  83 + // 早高峰开始时间
  84 + var st = paramObj.getMPeakStartTimeObj();
  85 + // 早高峰结束时间
  86 + var et = paramObj.getMPeakEndTimeObj();
  87 + // 包装日期
  88 + return timeObj.isBetween(st, et, null, "[]");
  89 + },
  90 + /**
  91 + * 判定某个班次是否是晚高峰班次。
  92 + * @param timeObj 班次时间
  93 + * @param paramObj 参数对象
  94 + * @returns true false
  95 + */
  96 + isEPeakBc: function(timeObj, paramObj) {
  97 + // 晚高峰开始时间
  98 + var st = paramObj.getEPeakStartTimeObj();
  99 + // 晚高峰结束时间
  100 + var et = paramObj.getEPeakEndTimeObj();
  101 + // 包装日期
  102 + return timeObj.isBetween(st, et, null, "[]");
  103 + },
  104 + /**
  105 + * 判定某个班次是否是低谷班次。
  106 + * @param timeObj 班次时间
  107 + * @param paramObj 参数对象
  108 + * @returns true false
  109 + */
  110 + isTroughBc: function(timeObj, paramObj) {
  111 + return (
  112 + !this.isMPeakBc(timeObj, paramObj) &&
  113 + !this.isEPeakBc(timeObj, paramObj)
  114 + );
  115 + },
  116 + /**
  117 + * 判定某个低谷班次是否在早高峰开始之前。
  118 + * @param timeObj 班次时间
  119 + * @param paramObj 参数对象
  120 + * @returns true false
  121 + */
  122 + isTroughBeforMPeakStartBc: function(timeObj, paramObj) {
  123 + // 早高峰开始时间
  124 + var st = paramObj.getMPeakStartTimeObj();
  125 + // 包装日期
  126 + return timeObj.isBefore(st);
  127 + },
  128 + /**
  129 + * 判定某个低谷班次是否在晚高峰结束之后。
  130 + * @param timeObj 班次时间
  131 + * @param paramObj 参数对象
  132 + * @returns true false
  133 + */
  134 + isTroughAfterEPeakEndBc: function(timeObj, paramObj) {
  135 + // 晚高峰结束时间
  136 + var et = paramObj.getEPeakEndTimeObj();
  137 + // 包装日期
  138 + return timeObj.isAfter(et);
  139 + },
  140 +
  141 + /**
  142 + * 获取固定的停站时间(固定停站时间都是选的最大值)
  143 + * @param timeObj 时间对象
  144 + * @param isUp 是否上行
  145 + * @param paramObj 参数对象
  146 + * @returns number
  147 + */
  148 + calcuFixedStopNumber: function(timeObj, isUp, paramObj) {
  149 + var peakStopTime; // 高峰停站时间
  150 + var troughStopTime; // 低谷停站时间
  151 + var secondaryStopTime; // 副站停站时间
  152 +
  153 + // 双向停站
  154 + if (paramObj.isTwoWayStop()) {
  155 + if (isUp) { // 上行
  156 + if (this.isMPeakBc(timeObj, paramObj)) { // 早高峰
  157 + peakStopTime = Math.floor(paramObj.getUpMPeakTime() * 0.1); // 行驶时间的10%
  158 + if (peakStopTime < 3) { // 不少于3分钟
  159 + peakStopTime = 3;
  160 + }
  161 + return peakStopTime;
  162 + } else if (this.isEPeakBc(timeObj, paramObj)) { // 晚高峰
  163 + peakStopTime = Math.floor(paramObj.getUpEPeakTime() * 0.1); // 行驶时间的10%
  164 + if (peakStopTime < 3) { // 不少于3分钟
  165 + peakStopTime = 3;
  166 + }
  167 + return peakStopTime;
  168 + } else { // 低谷
  169 + if (this.isTroughBeforMPeakStartBc(timeObj, paramObj)) { // 早高峰开始前
  170 + troughStopTime = Math.floor(paramObj.getUpTroughTime() * 0.2); // 行驶时间20%
  171 + if (troughStopTime < 10) { // 不少于10分钟
  172 + troughStopTime = 10;
  173 + }
  174 + return troughStopTime;
  175 + } else if (this.isTroughAfterEPeakEndBc(timeObj, paramObj)) { // 晚高峰结束后
  176 + troughStopTime = Math.floor(paramObj.getUpTroughTime() * 0.2); // 行驶时间20%
  177 + if (troughStopTime < 10) { // 不少于10分钟
  178 + troughStopTime = 10;
  179 + }
  180 + return troughStopTime;
  181 + } else { // 早高峰,晚高峰之间
  182 + troughStopTime = Math.floor(paramObj.getUpTroughTime() * 0.15); // 行驶时间15%
  183 + if (troughStopTime < 10) { // 不少于10分钟
  184 + troughStopTime = 10;
  185 + }
  186 + return troughStopTime;
  187 + }
  188 + }
  189 + } else { // 下行
  190 + if (this.isMPeakBc(timeObj, paramObj)) { // 早高峰
  191 + peakStopTime = Math.floor(paramObj.getDownMPeakTime() * 0.1); // 行驶时间的10%
  192 + if (peakStopTime < 3) { // 不少于3分钟
  193 + peakStopTime = 3;
  194 + }
  195 + return peakStopTime;
  196 + } else if (this.isEPeakBc(timeObj, paramObj)) { // 晚高峰
  197 + peakStopTime = Math.floor(paramObj.getDownEPeakTime() * 0.1); // 行驶时间的10%
  198 + if (peakStopTime < 3) { // 不少于3分钟
  199 + peakStopTime = 3;
  200 + }
  201 + return peakStopTime;
  202 + } else { // 低谷
  203 + if (this.isTroughBeforMPeakStartBc(timeObj, paramObj)) { // 早高峰开始前
  204 + troughStopTime = Math.floor(paramObj.getDownTroughTime() * 0.2); // 行驶时间20%
  205 + if (troughStopTime < 10) { // 不少于10分钟
  206 + troughStopTime = 10;
  207 + }
  208 + return troughStopTime;
  209 + } else if (this.isTroughAfterEPeakEndBc(timeObj, paramObj)) { // 晚高峰结束后
  210 + troughStopTime = Math.floor(paramObj.getDownTroughTime() * 0.2); // 行驶时间20%
  211 + if (troughStopTime < 10) { // 不少于10分钟
  212 + troughStopTime = 10;
  213 + }
  214 + return troughStopTime;
  215 + } else { // 早高峰,晚高峰之间
  216 + troughStopTime = Math.floor(paramObj.getDownTroughTime() * 0.15); // 行驶时间15%
  217 + if (troughStopTime < 10) { // 不少于10分钟
  218 + troughStopTime = 10;
  219 + }
  220 + return troughStopTime;
  221 + }
  222 + }
  223 + }
  224 + } else { // 主站停站
  225 + if (isUp == paramObj.isUpOneWayStop()) {
  226 + if (isUp) { // 上行
  227 + if (this.isMPeakBc(timeObj, paramObj)) { // 早高峰
  228 + peakStopTime = Math.floor(paramObj.getUpMPeakTime() * 0.1); // 行驶时间的10%
  229 + if (peakStopTime < 3) { // 不少于3分钟
  230 + peakStopTime = 3;
  231 + }
  232 + return peakStopTime;
  233 + } else if (this.isEPeakBc(timeObj, paramObj)) { // 晚高峰
  234 + peakStopTime = Math.floor(paramObj.getUpEPeakTime() * 0.1); // 行驶时间的10%
  235 + if (peakStopTime < 3) { // 不少于3分钟
  236 + peakStopTime = 3;
  237 + }
  238 + return peakStopTime;
  239 + } else { // 低谷
  240 + if (this.isTroughBeforMPeakStartBc(timeObj, paramObj)) { // 早高峰开始前
  241 + troughStopTime = Math.floor(paramObj.getUpTroughTime() * 0.2); // 行驶时间20%
  242 + if (troughStopTime < 10) { // 不少于10分钟
  243 + troughStopTime = 10;
  244 + }
  245 + return troughStopTime;
  246 + } else if (this.isTroughAfterEPeakEndBc(timeObj, paramObj)) { // 晚高峰结束后
  247 + troughStopTime = Math.floor(paramObj.getUpTroughTime() * 0.2); // 行驶时间20%
  248 + if (troughStopTime < 10) { // 不少于10分钟
  249 + troughStopTime = 10;
  250 + }
  251 + return troughStopTime;
  252 + } else { // 早高峰,晚高峰之间
  253 + troughStopTime = Math.floor(paramObj.getUpTroughTime() * 0.15); // 行驶时间15%
  254 + if (troughStopTime < 10) { // 不少于10分钟
  255 + troughStopTime = 10;
  256 + }
  257 + return troughStopTime;
  258 + }
  259 + }
  260 + } else { // 下行
  261 + if (this.isMPeakBc(timeObj, paramObj)) { // 早高峰
  262 + peakStopTime = Math.floor(paramObj.getDownMPeakTime() * 0.1); // 行驶时间的10%
  263 + if (peakStopTime < 3) { // 不少于3分钟
  264 + peakStopTime = 3;
  265 + }
  266 + return peakStopTime;
  267 + } else if (this.isEPeakBc(timeObj, paramObj)) { // 晚高峰
  268 + peakStopTime = Math.floor(paramObj.getDownEPeakTime() * 0.1); // 行驶时间的10%
  269 + if (peakStopTime < 3) { // 不少于3分钟
  270 + peakStopTime = 3;
  271 + }
  272 + return peakStopTime;
  273 + } else { // 低谷
  274 + if (this.isTroughBeforMPeakStartBc(timeObj, paramObj)) { // 早高峰开始前
  275 + troughStopTime = Math.floor(paramObj.getDownTroughTime() * 0.2); // 行驶时间20%
  276 + if (troughStopTime < 10) { // 不少于10分钟
  277 + troughStopTime = 10;
  278 + }
  279 + return troughStopTime;
  280 + } else if (this.isTroughAfterEPeakEndBc(timeObj, paramObj)) { // 晚高峰结束后
  281 + troughStopTime = Math.floor(paramObj.getDownTroughTime() * 0.2); // 行驶时间20%
  282 + if (troughStopTime < 10) { // 不少于10分钟
  283 + troughStopTime = 10;
  284 + }
  285 + return troughStopTime;
  286 + } else { // 早高峰,晚高峰之间
  287 + troughStopTime = Math.floor(paramObj.getDownTroughTime() * 0.15); // 行驶时间15%
  288 + if (troughStopTime < 10) { // 不少于10分钟
  289 + troughStopTime = 10;
  290 + }
  291 + return troughStopTime;
  292 + }
  293 + }
  294 + }
  295 + } else { // 副站停战,2到3分钟
  296 + secondaryStopTime = 3;
  297 + return secondaryStopTime; // 直接返回3分钟
  298 + }
  299 + }
  300 +
  301 + },
  302 +
  303 + /**
  304 + * 获取行驶时间。
  305 + * @param timeObj 班次时间字符串
  306 + * @param isUp 是否上行
  307 + * @param paramObj 参数对象
  308 + */
  309 + calcuTravelTime: function(timeObj, isUp, paramObj) {
  310 + if (isUp) {
  311 + if (this.isMPeakBc(timeObj, paramObj)) {
  312 + return paramObj.getUpMPeakTime();
  313 + } else if (this.isEPeakBc(timeObj, paramObj)) {
  314 + return paramObj.getUpEPeakTime();
  315 + } else {
  316 + return paramObj.getUpTroughTime();
  317 + }
  318 + } else {
  319 + if (this.isMPeakBc(timeObj, paramObj)) {
  320 + return paramObj.getDownMPeakTime();
  321 + } else if (this.isEPeakBc(timeObj, paramObj)) {
  322 + return paramObj.getDownEPeakTime();
  323 + } else {
  324 + return paramObj.getDownTroughTime();
  325 + }
  326 + }
  327 + },
  328 +
  329 + /**
  330 + * 获取行驶里程。
  331 + * @param isUp 是否上行
  332 + * @param bcType 班次类型
  333 + * @param paramObj 参数对象
  334 + */
  335 + calcuTravelLcNumber: function(isUp, bcType, paramObj) {
  336 + if (isUp) {
  337 + if (bcType == "in") {
  338 + return paramObj.getUpInLc();
  339 + } else if (bcType == "out") {
  340 + return paramObj.getUpOutLc();
  341 + } else {
  342 + // 基本班次类型,暂时不考虑区间等其他班次类型
  343 + // 暂时不考虑高峰低谷里程的区分
  344 + return paramObj.getUpNormalLc();
  345 + }
  346 + } else {
  347 + if (bcType == "in") {
  348 + return paramObj.getDownInLc();
  349 + } else if (bcType == "out") {
  350 + return paramObj.getDownOutLc();
  351 + } else {
  352 + // 基本班次类型,暂时不考虑区间等其他班次类型
  353 + // 暂时不考虑高峰低谷里程的区分
  354 + return paramObj.getDownNormalLc();
  355 + }
  356 + }
  357 + },
  358 +
  359 + /**
  360 + * 计算高峰周转时间。
  361 + * @param paramObj 参数对象
  362 + * @returns 周转时间
  363 + */
  364 + calcuPeakZzsj: function(paramObj) {
  365 + // 使用早高峰的周转时间
  366 + var _time = paramObj.getMPeakStartTimeObj();
  367 + var _zzsj = // 早高峰上行行驶时间+停站时间+早高峰下行行驶时间+停站时间
  368 + this.calcuTravelTime(_time, true, paramObj) +
  369 + this.calcuFixedStopNumber(_time, true, paramObj) +
  370 + this.calcuTravelTime(_time, false, paramObj) +
  371 + this.calcuFixedStopNumber(_time, false, paramObj);
  372 + return _zzsj;
  373 + },
  374 +
  375 + /**
  376 + * 计算低谷周转时间。
  377 + * @param paramObj 参数对象
  378 + * @returns 周转时间
  379 + */
  380 + calcuTroughZzsj: function(paramObj) {
  381 + // 使用低谷的周转时间
  382 + var _time = this.addMinute(paramObj.getMPeakStartTimeObj(), -1); // 使用任意一个低谷时间
  383 + var _zzsj = // 低谷上行行驶时间+停站时间+低谷下行行驶时间+停站时间
  384 + this.calcuTravelTime(_time, true, paramObj) +
  385 + this.calcuFixedStopNumber(_time, true, paramObj) +
  386 + this.calcuTravelTime(_time, false, paramObj) +
  387 + this.calcuFixedStopNumber(_time, false, paramObj);
  388 +
  389 + return _zzsj;
  390 + },
  391 +
  392 + /**
  393 + * 计算车辆总数。
  394 + * @param paramObj 参数对象
  395 + * @returns 车辆数
  396 + */
  397 + calcuClzx: function(paramObj) {
  398 + // 使用早高峰平均间隔
  399 + var _fcjx_avg = Math.floor((paramObj.getMPeakMinFcjx() + paramObj.getMPeakMaxFcjx()) / 2);
  400 + return Math.round(this.calcuPeakZzsj(paramObj) / _fcjx_avg);
  401 + }
  402 +
  403 + };
  404 +}();
0 \ No newline at end of file 405 \ No newline at end of file
src/main/resources/static/pages/base/timesmodel/js/strategy/strategy-headway.js
1 -/**  
2 - * 使用发车间隔模拟客流的策略,生成时刻表。  
3 - */  
4 -var StrategyHeadway = function() {  
5 - // 所有的时间使用moment.js计算  
6 -  
7 - var _paramObj; // 参数对象  
8 -  
9 - var _bxDesc = [ // 班型描述  
10 - {'type':'六工一休','hoursV':6.66, 'minueV':'6:40', 'qcount': 0, 'avertime': 0},  
11 - {'type':'五工一休','hoursV':6.85, 'minueV':'6:51', 'qcount': 0, 'avertime': 0},  
12 - {'type':'四工一休','hoursV':7.14, 'minueV':'7:08', 'qcount': 0, 'avertime': 0},  
13 - {'type':'三工一休','hoursV':7.61, 'minueV':'7:37', 'qcount': 0, 'avertime': 0},  
14 - {'type':'二工一休','hoursV':8.57, 'minueV':'8:34', 'qcount': 0, 'avertime': 0},  
15 - {'type':'一工一休','hoursV':11.42, 'minueV':'11:25', 'qcount': 0, 'avertime': 0},  
16 - {'type':'五工二休','hoursV':7.99, 'minueV':'8:00', 'qcount': 0, 'avertime': 0},  
17 - {'type':'无工休', 'hoursV':5.43, 'minueV':'5:43', 'qcount': 0, 'avertime': 0}  
18 - ];  
19 -  
20 - var headWayF = {  
21 - /**  
22 - * 使用发车间隔策略生成时刻表。  
23 - * @param saa  
24 - * @param cara  
25 - * @param map  
26 - * @param seMap  
27 - * @param dataMap  
28 - * @constructor  
29 - */  
30 - BXPplaceClassesTime03 : function(saa , cara, map , seMap , dataMap) {  
31 - console.log(saa);  
32 - console.log(map);  
33 - console.log(seMap);  
34 - console.log(dataMap);  
35 -  
36 - var i = 0;  
37 - var data = [];  
38 -  
39 - // 封装参数对象  
40 - _paramObj = StrategyUtils.getFactory().creatParamterObj(saa , cara, map , seMap , dataMap);  
41 -  
42 - // TODO:先定死参数  
43 - // 早高峰间隔时间 7分钟  
44 - // 晚高峰间隔时间 7分钟  
45 - // 早高峰之前 15分钟  
46 - // 早高峰结束,晚高峰开始之前 15分钟  
47 - // 晚高峰之后 20分钟  
48 -  
49 - // 做5休2路牌数目 6  
50 -  
51 - // TODO:计算基准线,不画,使用下行,以后根据哪个首班早,用哪个方向  
52 - this._buildNormalLine(false, 1);  
53 - console.log(_bxDesc);  
54 -  
55 - // TODO:按照早高峰开始时间,以及间隔时间从头创建班次  
56 - var avertime = _bxDesc.avertime; // 平均周转时间  
57 - var maxgftime = 75 + 80 + 7 + 8; // 高峰最大周转时间  
58 - var data1 = this._buildAllGfBc(false);  
59 - console.log(data1);  
60 -  
61 - // TODO:分割路牌,选出正路牌,从早高峰班次开始添加到晚高峰结束  
62 - // TODO:写死,使用奇数路牌添加正路牌  
63 - // TODO:按照做一休一来,4.5圈  
64 - var maxdgtime = 75 + 75 + 15 + 15; // 低谷最大周转时间  
65 - var zlp = [1, 4, 7, 10, 13, 16, 19, 22, 23]; // 9个正路牌,使用低谷最小配车数  
66 - var xldir_z = true;  
67 - var bc_index = 1;  
68 - var bc_obj;  
69 - var kssj_gfstart;  
70 - for (i = 0; i < zlp.length; i++) {  
71 - // TODO:删除正路牌的bcWgf  
72 - delete data1[zlp[i]].bcWgf;  
73 -  
74 - kssj_gfstart = StrategyUtils.toWrapTime(data1[zlp[i]].bcZgf.fcsj);  
75 - kssj_gfstart = kssj_gfstart.add(data1[zlp[i]].bcZgf.bcsj, "m").add(data1[zlp[i]].bcZgf.STOPTIME, "m");  
76 - for (bc_index = 1; bc_index <= 9; bc_index++) {  
77 - bc_obj = StrategyUtils.getFactory().creatBcObjWithFixedStopTime(  
78 - "normal",  
79 - xldir_z, zlp[i], 3,  
80 - kssj_gfstart.format("HH:mm"),  
81 - _paramObj  
82 - );  
83 - data.push(bc_obj);  
84 -  
85 - xldir_z = !xldir_z;  
86 - kssj_gfstart = StrategyUtils.toWrapTime(bc_obj.ARRIVALTIME).add(bc_obj.STOPTIME, "m");  
87 - }  
88 -  
89 - bc_index = 1;  
90 - xldir_z = true;  
91 - }  
92 -  
93 - // TODO:修正bcWgf  
94 - for (var key in data1) {  
95 - if (data1[key].bcWgf) {  
96 - // TODO:第一块正路牌的bcWgf晚了18分钟,分班路牌的bcWgf向后移动18分钟  
97 - // TODO:还要改成上行  
98 - data1[key].bcWgf = StrategyUtils.getFactory().creatBcObjWithFixedStopTime(  
99 - "normal",  
100 - true, key, 3,  
101 - StrategyUtils.toWrapTime(data1[key].bcWgf.fcsj).add(18, "m").format("HH:mm"),  
102 - _paramObj  
103 - );  
104 - }  
105 -  
106 - }  
107 -  
108 - // TODO:6个做5休二,大致3圈  
109 - // TODO:暂时写死路牌分割位置,然后以bcZgf,bcWgf为基准向左右两侧各加2各班次  
110 - var _5_2_lp = [5, 8, 11, 14, 17, 20];  
111 - for (i = 0; i < _5_2_lp.length; i++) {  
112 - // TODO:先向后加一个班次  
113 - data.push(StrategyUtils.getFactory().creatBcObjWithFixedStopTime(  
114 - "normal",  
115 - "relationshipGraph-down", _5_2_lp[i], 3,  
116 - StrategyUtils.toWrapTime(data1[_5_2_lp[i]].bcZgf.ARRIVALTIME).add(data1[_5_2_lp[i]].bcZgf.STOPTIME, "m").format("HH:mm"),  
117 - _paramObj  
118 - ));  
119 - data.push(StrategyUtils.getFactory().creatBcObjWithFixedStopTime(  
120 - "normal",  
121 - "relationshipGraph-up", _5_2_lp[i], 3,  
122 - StrategyUtils.toWrapTime(data1[_5_2_lp[i]].bcWgf.ARRIVALTIME).add(data1[_5_2_lp[i]].bcWgf.STOPTIME, "m").format("HH:mm"),  
123 - _paramObj  
124 - ));  
125 - }  
126 -  
127 -  
128 - // TODO:8个其他形式分班  
129 -  
130 -  
131 - // TODO:添加班次  
132 - for (var key in data1) {  
133 - if (data1[key].bcZgf)  
134 - data.push(data1[key].bcZgf);  
135 - if (data1[key].bcWgf) {  
136 - data.push(data1[key].bcWgf);  
137 - }  
138 -  
139 - }  
140 -  
141 - return {'json':data,'bxrcgs':null};  
142 - },  
143 -  
144 - // TODO:构造所有路牌早晚高峰班次(假设早高峰和晚高峰相同的车辆数)  
145 - _buildAllGfBc: function(isUp) {  
146 - // TODO:按照早高峰开始时间,以及间隔时间从头创建班次  
147 - var _travelTimeObj = _paramObj.getTravelTimeObj();  
148 - var _timeIntervalObj = _paramObj.getTimeIntervalObj();  
149 -  
150 - var avertime = _bxDesc.avertime; // 平均周转时间  
151 - var maxzgftime = // 早高峰最大周转时间  
152 - _travelTimeObj.moningpeak[0] +  
153 - _travelTimeObj.moningpeak[1] +  
154 - Math.floor(_travelTimeObj.moningpeak[0] * 0.1) +  
155 - Math.floor(_travelTimeObj.moningpeak[1] * 0.1);  
156 - var maxwgftime = // 晚早高峰最大周转时间  
157 - _travelTimeObj.eveningpeak[0] +  
158 - _travelTimeObj.eveningpeak[1] +  
159 - Math.floor(_travelTimeObj.eveningpeak[0] * 0.1) +  
160 - Math.floor(_travelTimeObj.eveningpeak[1] * 0.1);  
161 -  
162 - // 计算早高峰间隔  
163 - var data1 = {};  
164 - var kssj_gfstart = StrategyUtils.toWrapTime(_timeIntervalObj.moningPeakTimeStrs.start);  
165 - var clCount = _paramObj.getClzs();  
166 - var c1 = Math.floor(maxzgftime / clCount);  
167 - var c2 = maxzgftime % clCount;  
168 - var i = 0;  
169 - for (i = 1; i <= clCount - c2; i ++) {  
170 - data1[i] = {};  
171 - data1[i].bcZgf = StrategyUtils.getFactory().creatBcObjWithFixedStopTime(  
172 - "normal",  
173 - isUp, i, 3,  
174 - kssj_gfstart.format("HH:mm"),  
175 - _paramObj  
176 - );  
177 - kssj_gfstart = kssj_gfstart.add(c1, "m");  
178 - }  
179 - for (i = 1; i <= c2; i++) {  
180 - data1[clCount - c2 + i] = {};  
181 - data1[clCount - c2 + i].bcZgf = StrategyUtils.getFactory().creatBcObjWithFixedStopTime(  
182 - "normal",  
183 - isUp, clCount - c2 + i, 3,  
184 - kssj_gfstart.format("HH:mm"),  
185 - _paramObj  
186 - );  
187 - kssj_gfstart = kssj_gfstart.add(c1 + 1, "m");  
188 - }  
189 -  
190 - // 计算晚高峰间隔  
191 - kssj_gfstart = StrategyUtils.toWrapTime(_timeIntervalObj.eveningPeakTimeStrs.start);  
192 - c1 = Math.floor(maxwgftime / clCount);  
193 - c2 = maxwgftime % clCount;  
194 - for (i = 1; i <= clCount - c2; i ++) {  
195 - data1[i].bcWgf = StrategyUtils.getFactory().creatBcObjWithFixedStopTime(  
196 - "normal",  
197 - isUp, i, 3,  
198 - kssj_gfstart.format("HH:mm"),  
199 - _paramObj  
200 - );  
201 - kssj_gfstart = kssj_gfstart.add(c1, "m");  
202 - }  
203 - for (i = 1; i <= c2; i++) {  
204 - data1[clCount - c2 + i].bcWgf = StrategyUtils.getFactory().creatBcObjWithFixedStopTime(  
205 - "normal",  
206 - isUp, clCount - c2 + i, 3,  
207 - kssj_gfstart.format("HH:mm"),  
208 - _paramObj  
209 - );  
210 - kssj_gfstart = kssj_gfstart.add(c1 + 1, "m");  
211 - }  
212 -  
213 - return data1;  
214 - },  
215 -  
216 - // TODO:计算基准线,并计算每个班型对应的圈数  
217 - _buildNormalLine: function(isUp, lp) {  
218 - var data = [];  
219 - var bcObj;  
220 -  
221 - var _firstLastDepartureTimeStrObj =  
222 - _paramObj.getFirstLastDepartureTimeStrObj();  
223 -  
224 - var firstTime = isUp ?  
225 - StrategyUtils.toWrapTime(_firstLastDepartureTimeStrObj.up.firstVehicleDepartureTimeStr) :  
226 - StrategyUtils.toWrapTime(_firstLastDepartureTimeStrObj.down.firstVehicleDepartureTimeStr);  
227 - var downTime = isUp ?  
228 - StrategyUtils.toWrapTime(_firstLastDepartureTimeStrObj.up.lastVehicleDepartureTimeStr) :  
229 - StrategyUtils.toWrapTime(_firstLastDepartureTimeStrObj.down.lastVehicleDepartureTimeStr);  
230 -  
231 - var kssj = firstTime;  
232 - var fcno = 3; // 发车顺序号  
233 - var qBcCount = 1; // 班次数  
234 - var qArray = [isUp, !isUp]; // 圈的方向(true:上行,false:下行)  
235 - var qIndex = 0;  
236 - do {  
237 - bcObj = StrategyUtils.getFactory().creatBcObjWithFixedStopTime(  
238 - "normal",  
239 - qArray[qIndex], lp, fcno,  
240 - kssj.format("HH:mm"),  
241 - _paramObj  
242 - );  
243 -  
244 - kssj = kssj.add(bcObj.bcsj, "m").add(bcObj.STOPTIME, "m");  
245 - fcno ++;  
246 - qBcCount ++;  
247 - qIndex = (qBcCount - 1) % 2;  
248 - data.push(bcObj);  
249 - } while(kssj.isBefore(downTime));  
250 -  
251 - // 计算每种班型在基准线下对应的大致圈数(1表示1圈2个班次,.5表示半圈1个班次)  
252 - var i = 0;  
253 - var avertime = 0;  
254 - var sum = 0;  
255 - var size_sub = qBcCount % 2;  
256 - if (qBcCount > 1) {  
257 - // 计算平均周转时间  
258 - for (i = 0; i < data.length - size_sub; i ++) {  
259 - sum += data[i].bcsj + data[i].STOPTIME;  
260 - }  
261 - avertime = sum / ((qBcCount - size_sub) / 2);  
262 - // 计算班型圈数  
263 - for (i = 0; i < _bxDesc.length; i ++) {  
264 - _bxDesc[i].avertime = avertime;  
265 - _bxDesc[i].qcount = _bxDesc[i].hoursV * 60 / avertime;  
266 - }  
267 - }  
268 -  
269 - return data;  
270 -  
271 - }  
272 -  
273 -  
274 -  
275 - };  
276 -  
277 - return headWayF; 1 +/**
  2 + * 使用发车间隔模拟客流的策略,生成时刻表。
  3 + */
  4 +var StrategyHeadway = function() {
  5 + // 所有的时间使用moment.js计算
  6 +
  7 + var _paramObj; // 参数对象
  8 +
  9 + var _bxDesc = [ // 班型描述
  10 + {'type':'六工一休','hoursV':6.66, 'minueV':'6:40', 'qcount': 0, 'avertime': 0},
  11 + {'type':'五工一休','hoursV':6.85, 'minueV':'6:51', 'qcount': 0, 'avertime': 0},
  12 + {'type':'四工一休','hoursV':7.14, 'minueV':'7:08', 'qcount': 0, 'avertime': 0},
  13 + {'type':'三工一休','hoursV':7.61, 'minueV':'7:37', 'qcount': 0, 'avertime': 0},
  14 + {'type':'二工一休','hoursV':8.57, 'minueV':'8:34', 'qcount': 0, 'avertime': 0},
  15 + {'type':'一工一休','hoursV':11.42, 'minueV':'11:25', 'qcount': 0, 'avertime': 0},
  16 + {'type':'五工二休','hoursV':7.99, 'minueV':'8:00', 'qcount': 0, 'avertime': 0},
  17 + {'type':'无工休', 'hoursV':5.43, 'minueV':'5:43', 'qcount': 0, 'avertime': 0}
  18 + ];
  19 +
  20 + // 重要数据结构,二维数组的形式保存班次信息
  21 + // 行表示几个路牌,列表示几圈,每个元素表示一圈包含两个班次对象(一个也有可能)
  22 + // TODO:之后会把这个结构定义成一个类
  23 + var _headWayBcArray = [];
  24 +
  25 + var headWayF = {
  26 + /**
  27 + * 使用发车间隔策略生成时刻表。
  28 + * @param paramObj 参数对象
  29 + * @param lpArray 路牌数组
  30 + * @constructor
  31 + */
  32 + BXPplaceClassesTime03 : function(paramObj, lpArray) {
  33 + //console.log(lpArray);
  34 +
  35 + _paramObj = paramObj;
  36 +
  37 + var i = 0;
  38 + var j = 0;
  39 + var data = [];
  40 +
  41 + // 第一步,计算标准线,计算所有班型工时,创建二维班次结构,并把标准线数据作为第一个路牌的班次数据
  42 + this._01_buildBasicLine(lpArray);
  43 + // 第二步,构造所有高峰班次
  44 + this._02_buildAllGfbc(lpArray);
  45 + // 第三步,计算班型类型(每个路牌的班型)
  46 + this._03_calcuBxtype();
  47 + // 第四步,根据每个路牌的班型构造所有班次
  48 + this._04_buildAllOtherBc(lpArray);
  49 +
  50 +
  51 + // TODO:先定死参数
  52 + // 早高峰间隔时间 7分钟
  53 + // 晚高峰间隔时间 7分钟
  54 + // 早高峰之前 15分钟
  55 + // 早高峰结束,晚高峰开始之前 15分钟
  56 + // 晚高峰之后 20分钟
  57 +
  58 + // 做5休2路牌数目 6
  59 + //var data1 = {};
  60 + //
  61 + //// TODO:计算基准线,不画,使用下行,以后根据哪个首班早,用哪个方向
  62 + //data = data.concat(this._buildNormalLine(false, 12));
  63 + //data = data.concat(this._01_buildBasicLine(lpArray));
  64 + //console.log(_bxDesc);
  65 +
  66 + //// TODO:按照早高峰开始时间,以及间隔时间从头创建班次
  67 + //var avertime = _bxDesc.avertime; // 平均周转时间
  68 + //var maxgftime = 75 + 80 + 7 + 8; // 高峰最大周转时间
  69 + //var data1 = this._buildAllGfBc(false);
  70 + //console.log(data1);
  71 + //
  72 + //// TODO:分割路牌,选出正路牌,从早高峰班次开始添加到晚高峰结束
  73 + //// TODO:写死,使用奇数路牌添加正路牌
  74 + //// TODO:按照做一休一来,4.5圈
  75 + //var maxdgtime = 75 + 75 + 15 + 15; // 低谷最大周转时间
  76 + //var zlp = [1, 4, 7, 10, 13, 16, 19, 22, 23]; // 9个正路牌,使用低谷最小配车数
  77 + //var xldir_z = true;
  78 + //var bc_index = 1;
  79 + //var bc_obj;
  80 + //var kssj_gfstart;
  81 + //for (i = 0; i < zlp.length; i++) {
  82 + // // TODO:删除正路牌的bcWgf
  83 + // delete data1[zlp[i]].bcWgf;
  84 + //
  85 + // kssj_gfstart = StrategyUtils.toWrapTime(data1[zlp[i]].bcZgf.fcsj);
  86 + // kssj_gfstart = kssj_gfstart.add(data1[zlp[i]].bcZgf.bcsj, "m").add(data1[zlp[i]].bcZgf.STOPTIME, "m");
  87 + // for (bc_index = 1; bc_index <= 9; bc_index++) {
  88 + // bc_obj = StrategyUtils.getFactory().creatBcObjWithFixedStopTime(
  89 + // "normal",
  90 + // xldir_z, zlp[i], 3,
  91 + // kssj_gfstart.format("HH:mm"),
  92 + // _paramObj
  93 + // );
  94 + // data.push(bc_obj);
  95 + //
  96 + // xldir_z = !xldir_z;
  97 + // kssj_gfstart = StrategyUtils.toWrapTime(bc_obj.ARRIVALTIME).add(bc_obj.STOPTIME, "m");
  98 + // }
  99 + //
  100 + // bc_index = 1;
  101 + // xldir_z = true;
  102 + //}
  103 + //
  104 + //// TODO:修正bcWgf
  105 + //for (var key in data1) {
  106 + // if (data1[key].bcWgf) {
  107 + // // TODO:第一块正路牌的bcWgf晚了18分钟,分班路牌的bcWgf向后移动18分钟
  108 + // // TODO:还要改成上行
  109 + // data1[key].bcWgf = StrategyUtils.getFactory().creatBcObjWithFixedStopTime(
  110 + // "normal",
  111 + // true, key, 3,
  112 + // StrategyUtils.toWrapTime(data1[key].bcWgf.fcsj).add(18, "m").format("HH:mm"),
  113 + // _paramObj
  114 + // );
  115 + // }
  116 + //
  117 + //}
  118 + //
  119 + //// TODO:6个做5休二,大致3圈
  120 + //// TODO:暂时写死路牌分割位置,然后以bcZgf,bcWgf为基准向左右两侧各加2各班次
  121 + //var _5_2_lp = [5, 8, 11, 14, 17, 20];
  122 + //for (i = 0; i < _5_2_lp.length; i++) {
  123 + // // TODO:先向后加一个班次
  124 + // data.push(StrategyUtils.getFactory().creatBcObjWithFixedStopTime(
  125 + // "normal",
  126 + // "relationshipGraph-down", _5_2_lp[i], 3,
  127 + // StrategyUtils.toWrapTime(data1[_5_2_lp[i]].bcZgf.ARRIVALTIME).add(data1[_5_2_lp[i]].bcZgf.STOPTIME, "m").format("HH:mm"),
  128 + // _paramObj
  129 + // ));
  130 + // data.push(StrategyUtils.getFactory().creatBcObjWithFixedStopTime(
  131 + // "normal",
  132 + // "relationshipGraph-up", _5_2_lp[i], 3,
  133 + // StrategyUtils.toWrapTime(data1[_5_2_lp[i]].bcWgf.ARRIVALTIME).add(data1[_5_2_lp[i]].bcWgf.STOPTIME, "m").format("HH:mm"),
  134 + // _paramObj
  135 + // ));
  136 + //}
  137 +
  138 +
  139 + // TODO:8个其他形式分班
  140 +
  141 +
  142 + // final: 添加班次
  143 + for (i = 0; i < _headWayBcArray.length; i++) {
  144 + for (j = 0; j < _headWayBcArray[i]["qObj"].length; j++) {
  145 + if (_headWayBcArray[i]["qObj"][j].hasBc1) {
  146 + data.push(_headWayBcArray[i]["qObj"][j]["_bc1_"].toGanttBcObj());
  147 + }
  148 + if (_headWayBcArray[i]["qObj"][j].hasBc2) {
  149 + data.push(_headWayBcArray[i]["qObj"][j]["_bc2_"].toGanttBcObj());
  150 + }
  151 + }
  152 + }
  153 +
  154 + return {'json':data,'bxrcgs':null};
  155 + },
  156 +
  157 + // TODO:构造所有路牌早晚高峰班次(假设早高峰和晚高峰相同的车辆数)
  158 + _buildAllGfBc: function(isUp) {
  159 + // TODO:按照早高峰开始时间,以及间隔时间从头创建班次
  160 + var _travelTimeObj = _paramObj.getTravelTimeObj();
  161 + var _timeIntervalObj = _paramObj.getTimeIntervalObj();
  162 +
  163 + var avertime = _bxDesc.avertime; // 平均周转时间
  164 + var maxzgftime = // 早高峰最大周转时间
  165 + _travelTimeObj.moningpeak[0] +
  166 + _travelTimeObj.moningpeak[1] +
  167 + Math.floor(_travelTimeObj.moningpeak[0] * 0.1) +
  168 + Math.floor(_travelTimeObj.moningpeak[1] * 0.1);
  169 + var maxwgftime = // 晚早高峰最大周转时间
  170 + _travelTimeObj.eveningpeak[0] +
  171 + _travelTimeObj.eveningpeak[1] +
  172 + Math.floor(_travelTimeObj.eveningpeak[0] * 0.1) +
  173 + Math.floor(_travelTimeObj.eveningpeak[1] * 0.1);
  174 +
  175 + // 计算早高峰间隔
  176 + var data1 = {};
  177 + var kssj_gfstart = StrategyUtils.toWrapTime(_timeIntervalObj.moningPeakTimeStrs.start);
  178 + var clCount = _paramObj.getClzs();
  179 + var c1 = Math.floor(maxzgftime / clCount);
  180 + var c2 = maxzgftime % clCount;
  181 + var i = 0;
  182 + for (i = 1; i <= clCount - c2; i ++) {
  183 + data1[i] = {};
  184 + data1[i].bcZgf = StrategyUtils.getFactory().creatBcObjWithFixedStopTime(
  185 + "normal",
  186 + isUp, i, 3,
  187 + kssj_gfstart.format("HH:mm"),
  188 + _paramObj
  189 + );
  190 + kssj_gfstart = kssj_gfstart.add(c1, "m");
  191 + }
  192 + for (i = 1; i <= c2; i++) {
  193 + data1[clCount - c2 + i] = {};
  194 + data1[clCount - c2 + i].bcZgf = StrategyUtils.getFactory().creatBcObjWithFixedStopTime(
  195 + "normal",
  196 + isUp, clCount - c2 + i, 3,
  197 + kssj_gfstart.format("HH:mm"),
  198 + _paramObj
  199 + );
  200 + kssj_gfstart = kssj_gfstart.add(c1 + 1, "m");
  201 + }
  202 +
  203 + // 计算晚高峰间隔
  204 + kssj_gfstart = StrategyUtils.toWrapTime(_timeIntervalObj.eveningPeakTimeStrs.start);
  205 + c1 = Math.floor(maxwgftime / clCount);
  206 + c2 = maxwgftime % clCount;
  207 + for (i = 1; i <= clCount - c2; i ++) {
  208 + data1[i].bcWgf = StrategyUtils.getFactory().creatBcObjWithFixedStopTime(
  209 + "normal",
  210 + isUp, i, 3,
  211 + kssj_gfstart.format("HH:mm"),
  212 + _paramObj
  213 + );
  214 + kssj_gfstart = kssj_gfstart.add(c1, "m");
  215 + }
  216 + for (i = 1; i <= c2; i++) {
  217 + data1[clCount - c2 + i].bcWgf = StrategyUtils.getFactory().creatBcObjWithFixedStopTime(
  218 + "normal",
  219 + isUp, clCount - c2 + i, 3,
  220 + kssj_gfstart.format("HH:mm"),
  221 + _paramObj
  222 + );
  223 + kssj_gfstart = kssj_gfstart.add(c1 + 1, "m");
  224 + }
  225 +
  226 + return data1;
  227 + },
  228 +
  229 + /**
  230 + * 第一步,创建标准线,并放置在第一个路牌上。
  231 + * @param lpArray 路牌列表
  232 + */
  233 + _01_buildBasicLine: function(lpArray) {
  234 + // TODO:放置上标线,中标线在议
  235 +
  236 + // 确定使用上行还是下行首班车作为上标线开始
  237 + var _isUp = _paramObj.getUpFirstDTimeObj().isBefore(_paramObj.getDownFirstDTimeObj()) ? false : true;
  238 + var firstTime = _isUp ? _paramObj.getUpFirstDTimeObj() : _paramObj.getDownFirstDTimeObj();
  239 + var downTime = _isUp ? _paramObj.getUpLastDtimeObj() : _paramObj.getDownLastDTimeObj();
  240 +
  241 + var data = [];
  242 + var bcObj;
  243 + var kssj = firstTime;
  244 + var fcno = 1; // 发车顺序号
  245 + var qBcCount = 1; // 班次数
  246 + var qArray = [_isUp, !_isUp]; // 圈的方向(true:上行,false:下行)
  247 + var qIndex = 0;
  248 + do {
  249 + bcObj = StrategyUtils.getFactory().createBcObj(
  250 + "normal", qArray[qIndex], lpArray[0].lpNo, fcno, kssj, _paramObj);
  251 + kssj = StrategyUtils.addMinute(kssj, bcObj.getBcTime() + bcObj.getStopTime());
  252 + fcno ++;
  253 + qBcCount ++;
  254 + qIndex = (qBcCount - 1) % 2;
  255 + data.push(bcObj);
  256 + } while(kssj.isBefore(downTime));
  257 + qBcCount = data.length;
  258 +
  259 + // 根据圈数,初始化
  260 + var i = 0;
  261 + var j = 0;
  262 + var n = 0;
  263 + for (i = 0; i < lpArray.length; i++) {
  264 + // 前后都预留一圈
  265 + n = 1 + (Math.floor(qBcCount / 2) + qBcCount % 2) + 1;
  266 + _headWayBcArray[i] = {
  267 + "bxIndex" : 6, // 默认做五休二
  268 + "qObj" : new Array(n) // 圈数
  269 + };
  270 +
  271 + for (j = 0; j < n; j++) {
  272 + _headWayBcArray[i]["qObj"][j] = {
  273 + "hasBc1" : false, // 是否有第一个班次
  274 + "hasBc2" : false, // 是否有第二个班次
  275 + "_bc1_" : {}, // 第一个班次
  276 + "_bc2_" : {} // 第二个班次
  277 +
  278 + // TODO:其他参数再议
  279 + };
  280 + }
  281 + }
  282 + for (i = 1; i <= Math.floor(qBcCount / 2); i++) {
  283 + _headWayBcArray[0]["qObj"][i]["hasBc1"] = true;
  284 + _headWayBcArray[0]["qObj"][i]["_bc1_"] = data[(i - 1) * 2];
  285 + _headWayBcArray[0]["qObj"][i]["hasBc2"] = true;
  286 + _headWayBcArray[0]["qObj"][i]["_bc2_"] = data[(i - 1) * 2 + 1];
  287 + }
  288 + if (qBcCount % 2 != 0) {
  289 + _headWayBcArray[0]["qObj"][Math.floor(qBcCount / 2) + 1]["hasBc1"] = true;
  290 + _headWayBcArray[0]["qObj"][Math.floor(qBcCount / 2) + 1]["_bc1_"] = data[qBcCount - 1];
  291 + }
  292 +
  293 + //console.log(_headWayBcArray);
  294 +
  295 + // 计算每种班型在基准线下对应的大致圈数(1表示1圈2个班次,.5表示半圈1个班次)
  296 + i = 0;
  297 + var avertime = 0;
  298 + var sum = 0;
  299 + var size_sub = qBcCount % 2; // 剩下的班次
  300 + if (qBcCount > 1) {
  301 + // 计算平均周转时间
  302 + for (i = 0; i < data.length - size_sub; i ++) {
  303 + sum += data[i].getBcTime() + data[i].getStopTime();
  304 + }
  305 + avertime = sum / ((qBcCount - size_sub) / 2);
  306 + // 计算班型圈数
  307 + for (i = 0; i < _bxDesc.length; i ++) {
  308 + _bxDesc[i].avertime = avertime;
  309 + _bxDesc[i].qcount = _bxDesc[i].hoursV * 60 / avertime;
  310 + }
  311 + }
  312 +
  313 + console.log(_headWayBcArray);
  314 + console.log(_bxDesc);
  315 +
  316 + },
  317 +
  318 + /**
  319 + * 第二步,构造所有高峰班次。
  320 + */
  321 + _02_buildAllGfbc: function(lpArray) {
  322 + // TODO:先设定死,以标准线为起点从哪个班次出来,以后再用算法确定
  323 + // 早高峰,从第一圈,第一个班次全部出来
  324 + // 晚高峰,从第四圈,第二个班次全部出来
  325 +
  326 + var _kssj;
  327 + var _zzsj;
  328 + var _clCount = StrategyUtils.calcuClzx(_paramObj);;
  329 + var _c1;
  330 + var _c2;
  331 + var i;
  332 + var _bc1_;
  333 + var _bc2_;
  334 +
  335 + // 计算早高峰
  336 + _bc1_ = _headWayBcArray[0]["qObj"][1]["_bc1_"];
  337 + _bc2_ = _headWayBcArray[0]["qObj"][1]["_bc2_"];
  338 + _zzsj = _bc1_.getBcTime() + _bc1_.getStopTime() +
  339 + _bc2_.getBcTime() + _bc2_.getStopTime();
  340 + _c1 = Math.floor(_zzsj / _clCount);
  341 + _c2 = _zzsj % _clCount;
  342 + _kssj = _bc1_.getFcTimeObj();
  343 +
  344 + for (i = 2; i <= _clCount - _c2; i++) {
  345 + _kssj = StrategyUtils.addMinute(_kssj, _c1);
  346 + _headWayBcArray[i - 1]["qObj"][1]["hasBc1"] = true;
  347 + _headWayBcArray[i - 1]["qObj"][1]["_bc1_"] =
  348 + StrategyUtils.getFactory().createBcObj(
  349 + "normal", true, lpArray[i - 1].lpNo,
  350 + 3, _kssj, _paramObj);
  351 + }
  352 + for (i = 1; i <= _c2; i++) {
  353 + _kssj = StrategyUtils.addMinute(_kssj, _c1 + 1);
  354 + _headWayBcArray[_clCount - _c2 + i - 1]["qObj"][1]["hasBc1"] = true;
  355 + _headWayBcArray[_clCount - _c2 + i - 1]["qObj"][1]["_bc1_"] =
  356 + StrategyUtils.getFactory().createBcObj(
  357 + "normal", true, lpArray[_clCount - _c2 + i - 1].lpNo,
  358 + 3, _kssj, _paramObj);
  359 + }
  360 +
  361 + // 计算晚高峰
  362 + _bc1_ = _headWayBcArray[0]["qObj"][4]["_bc2_"];
  363 + _bc2_ = _headWayBcArray[0]["qObj"][5]["_bc1_"];
  364 + _zzsj = _bc1_.getBcTime() + _bc1_.getStopTime() +
  365 + _bc2_.getBcTime() + _bc2_.getStopTime();
  366 + _c1 = Math.floor(_zzsj / _clCount);
  367 + _c2 = _zzsj % _clCount;
  368 + _kssj = _bc1_.getFcTimeObj();
  369 +
  370 + for (i = 2; i <= _clCount - _c2; i++) {
  371 + _kssj = StrategyUtils.addMinute(_kssj, _c1);
  372 + _headWayBcArray[i - 1]["qObj"][4]["hasBc1"] = true;
  373 + _headWayBcArray[i - 1]["qObj"][4]["_bc1_"] =
  374 + StrategyUtils.getFactory().createBcObj(
  375 + "normal", false, lpArray[i - 1].lpNo,
  376 + 3, _kssj, _paramObj);
  377 + }
  378 + for (i = 1; i <= _c2; i++) {
  379 + _kssj = StrategyUtils.addMinute(_kssj, _c1 + 1);
  380 + _headWayBcArray[_clCount - _c2 + i - 1]["qObj"][4]["hasBc1"] = true;
  381 + _headWayBcArray[_clCount - _c2 + i - 1]["qObj"][4]["_bc1_"] =
  382 + StrategyUtils.getFactory().createBcObj(
  383 + "normal", false, lpArray[_clCount - _c2 + i - 1].lpNo,
  384 + 3, _kssj, _paramObj);
  385 + }
  386 +
  387 +
  388 +
  389 +
  390 + },
  391 +
  392 + /**
  393 + * 第三步,计算班型类型(每个路牌的班型)。
  394 + */
  395 + _03_calcuBxtype: function() {
  396 + // 路牌数和车辆数是一致的
  397 +
  398 + // 总共车辆数(高峰最大车辆数)
  399 + var cls = StrategyUtils.calcuClzx(_paramObj);
  400 + // 低谷最少配车
  401 + var dgminpc = Math.round(StrategyUtils.calcuTroughZzsj(_paramObj) / _paramObj.getTroughMaxFcjx());
  402 + // 加班车路牌数(做5休2的路牌数)
  403 + var _5_2_lpes = _paramObj.getJBLpes();
  404 +
  405 + // 做些简单的验证
  406 + if (cls < dgminpc) {
  407 + alert("总配车数小于低谷最小配车");
  408 + throw "总配车数小于低谷最小配车";
  409 + }
  410 + if (cls - dgminpc < _5_2_lpes) {
  411 + alert("总分班路牌数小于加班路牌数");
  412 + throw "总分班路牌数小于加班路牌数";
  413 + }
  414 +
  415 + // 早高峰间隔时间 7分钟
  416 + // 晚高峰间隔时间 7分钟
  417 + // 早高峰之前 15分钟
  418 + // 早高峰结束,晚高峰开始之前 15分钟
  419 + // 晚高峰之后 20分钟
  420 +
  421 + // 做5休2路牌数目 6
  422 +
  423 +
  424 +
  425 + // TODO:不用间隔法,直接拉,先正路牌,再分班
  426 + var _zlpCount = dgminpc;
  427 + var _5_2_Count = _5_2_lpes;
  428 + var _otherfb_ = cls - dgminpc - _5_2_lpes;
  429 + var i = 0;
  430 + for (i = 0; i < _zlpCount; i++) {
  431 + _headWayBcArray[i].bxIndex = 5; // 做一休一
  432 + }
  433 + for (i = _zlpCount; i < _5_2_Count; i++) {
  434 + _headWayBcArray[i].bxIndex = 6; // 做五休二
  435 + }
  436 + for (i = _zlpCount + _5_2_Count; i < _otherfb_; i++) {
  437 + _headWayBcArray[i].bxIndex = 3; // 做三休一
  438 + }
  439 +
  440 + },
  441 +
  442 + /**
  443 + * 第四步,根据每个路牌的班型构造所有班次。
  444 + */
  445 + _04_buildAllOtherBc: function(lpArray) {
  446 + var _bcCount;
  447 + var _qArray;
  448 + var i;
  449 + var j;
  450 + var z;
  451 + var _kssj;
  452 +
  453 + // 构造正路牌,从早高峰一直加到晚高峰,不够晚高峰后再加
  454 + _bcCount = Math.floor(_bxDesc[_headWayBcArray[0].bxIndex].qcount * 2);
  455 + // TODO:都是从第一圈第一个班次开始
  456 + for (i = 1; i < _headWayBcArray.length; i++) {
  457 + _qArray = _headWayBcArray[i].qObj;
  458 +
  459 + j = 1;
  460 + _kssj = StrategyUtils.addMinute(
  461 + _qArray[1]._bc1_.getFcTimeObj(),
  462 + _qArray[1]._bc1_.getBcTime() +
  463 + _qArray[1]._bc1_.getStopTime()
  464 + );
  465 + // TODO:向后拉6个班次
  466 + _qArray[1].hasBc2 = true;
  467 + _qArray[1]._bc2_ =
  468 + StrategyUtils.getFactory().createBcObj(
  469 + "normal", false, lpArray[i].lpNo,
  470 + 3, _kssj, _paramObj);
  471 + _kssj = StrategyUtils.addMinute(
  472 + _qArray[1]._bc2_.getFcTimeObj(),
  473 + _qArray[1]._bc2_.getBcTime() +
  474 + _qArray[1]._bc2_.getStopTime()
  475 + );
  476 +
  477 + _qArray[2].hasBc1 = true;
  478 + _qArray[2]._bc1_ =
  479 + StrategyUtils.getFactory().createBcObj(
  480 + "normal", true, lpArray[i].lpNo,
  481 + 3, _kssj, _paramObj);
  482 + _kssj = StrategyUtils.addMinute(
  483 + _qArray[2]._bc1_.getFcTimeObj(),
  484 + _qArray[2]._bc1_.getBcTime() +
  485 + _qArray[2]._bc1_.getStopTime()
  486 + );
  487 + _qArray[2].hasBc2 = true;
  488 + _qArray[2]._bc2_ =
  489 + StrategyUtils.getFactory().createBcObj(
  490 + "normal", false, lpArray[i].lpNo,
  491 + 3, _kssj, _paramObj);
  492 +
  493 +
  494 + }
  495 +
  496 + }
  497 +
  498 +
  499 +
  500 + };
  501 +
  502 + return headWayF;
  503 +
278 }(); 504 }();
279 \ No newline at end of file 505 \ No newline at end of file
src/main/resources/static/pages/base/timesmodel/js/strategy/strategy-paramter.js deleted 100644 → 0
1 -/**  
2 - * 策略参数,包装form表单参数及其他参数。  
3 - * @param saa todo  
4 - * @param cara todo  
5 - * @param map 原始表单参数  
6 - * @param seMap todo  
7 - * @param dataMap todo  
8 - * @constructor  
9 - */  
10 -var StrategyParamter = function(saa , cara, map , seMap , dataMap) {  
11 - var _formMap = map; // 表单参数  
12 - var _travelTimeObj_fun = function() { // 计算行驶时间对象  
13 - var upMoningPeakTravelTime =  
14 - isNaN(_formMap.earlyUpTime) ?  
15 - parseInt(_formMap.upTravelTime) :  
16 - parseInt(_formMap.earlyUpTime);  
17 - var downMoningPeakTravelTime =  
18 - isNaN(_formMap.earlyDownTime) ?  
19 - parseInt(_formMap.downTravelTime) :  
20 - parseInt(_formMap.earlyDownTime);  
21 - var upEveningPeakTravelTime =  
22 - isNaN(_formMap.lateUpTime) ?  
23 - parseInt(_formMap.upTravelTime) :  
24 - parseInt(_formMap.lateUpTime);  
25 - var downEveningPeakTravelTime =  
26 - isNaN(_formMap.lateDownTime) ?  
27 - parseInt(_formMap.downTravelTime) :  
28 - parseInt(_formMap.lateDownTime);  
29 - var upTroughTravelTime =  
30 - isNaN(_formMap.troughUpTime) ?  
31 - parseInt(_formMap.upTravelTime) :  
32 - parseInt(_formMap.troughUpTime);  
33 - var downTroughTravelTime =  
34 - isNaN(_formMap.troughDownTime) ?  
35 - parseInt(_formMap.downTravelTime) :  
36 - parseInt(_formMap.troughDownTime);  
37 -  
38 - return { // TODO:暂时获取标准信息,之后改成历史数据,可能需要使用promise封装  
39 - "moningpeak": [  
40 - upMoningPeakTravelTime,  
41 - downMoningPeakTravelTime  
42 - ],  
43 - "eveningpeak": [  
44 - upEveningPeakTravelTime,  
45 - downEveningPeakTravelTime  
46 - ],  
47 - "trough": [  
48 - upTroughTravelTime,  
49 - downTroughTravelTime  
50 - ]  
51 - }  
52 - };  
53 - var _travelTimeObj = _travelTimeObj_fun(); // 行驶时间对象  
54 -  
55 - var _travelLcObj_fun = function() { // 计算行驶里程对象  
56 - return [  
57 - { // 上行里程  
58 - "normalLc": _formMap.upMileage,  
59 - "inLc": _formMap.upInMileage,  
60 - "outLc": _formMap.upOutMileage  
61 - },  
62 - { // 下行里程  
63 - "normalLc": _formMap.downMileage,  
64 - "inLc": _formMap.downInMileage,  
65 - "outLc": _formMap.downOutMileage  
66 - }  
67 - ];  
68 - };  
69 - var _travelLcObj = _travelLcObj_fun(); // 行驶里程对象  
70 -  
71 - var _stopTypeObj_fun = function() { // 获取停站类型  
72 - var isMasterStop = false; // 是否主站停  
73 - var isMasterUpStop = false; // 主站停是否上行站点  
74 - if (_formMap) {  
75 - var fm_temp = _formMap.stt.split("/");  
76 - if (fm_temp.length == 1) { // 双向停站  
77 - isMasterStop = false;  
78 - } else {  
79 - isMasterStop = true;  
80 - if (fm_temp[1] == "0") {  
81 - isMasterUpStop = true;  
82 - } else {  
83 - isMasterUpStop = false;  
84 - }  
85 - }  
86 - } else {  
87 - throw "停站类型没有选择!";  
88 - }  
89 -  
90 - return {  
91 - isMasterStop: isMasterStop,  
92 - isMasterUpStop: isMasterUpStop  
93 - }  
94 - };  
95 - var _stopTypeObj = _stopTypeObj_fun(); // 停站类型  
96 -  
97 -  
98 - var _firstLastDepartureTimeStrObj_fun = function() { // 计算首班车,末班车行驶时间字符串  
99 - return {  
100 - up: { // 上行  
101 - firstVehicleDepartureTimeStr: _formMap.startStationFirstTime,  
102 - lastVehicleDepartureTimeStr: _formMap.startStationEndTime  
103 - },  
104 - down: { // 下行  
105 - firstVehicleDepartureTimeStr: _formMap.endStationFirstTime,  
106 - lastVehicleDepartureTimeStr: _formMap.endStationEndTime  
107 - }  
108 - };  
109 - };  
110 - var _firstLastDepartureTimeStrObj = _firstLastDepartureTimeStrObj_fun(); // 首班车,末班车行驶时间字符串  
111 -  
112 - var _timeIntervalObj_fun = function() { // 计算时间段划分对象  
113 - return {  
114 - moningPeakTimeStrs: {  
115 - start: _formMap.earlyStartTime,  
116 - end: _formMap.earlyEndTime  
117 - },  
118 - eveningPeakTimeStrs: {  
119 - start: _formMap.lateStartTime,  
120 - end: _formMap.lateEndTime  
121 - }  
122 -  
123 - // TODO:其他时间段以后再加  
124 - };  
125 - };  
126 - var _timeIntervalObj = _timeIntervalObj_fun(); // 时间段划分对象  
127 -  
128 - var _startEndStopObj_fun = function() { // 计算起点站终点站对象  
129 - return {  
130 - up: {  
131 - qdz: { // 起点站  
132 - id: dataMap.qdzArr[0]  
133 - },  
134 - zdz: { // 终点站  
135 - id: dataMap.zdzArr[0]  
136 - }  
137 - },  
138 - down: {  
139 - qdz: { // 起点站  
140 - id: dataMap.qdzArr[1]  
141 - },  
142 - zdz: { // 终点站  
143 - id: dataMap.zdzArr[1]  
144 - }  
145 - }  
146 -  
147 - };  
148 - };  
149 - var _startEndStopObj = _startEndStopObj_fun(); // 起点站终点站对象  
150 -  
151 - var _xlObj_fun = function() { // 计算线路对象  
152 - return {  
153 - xl: {  
154 - id: _formMap.lineName.split('_')[0]  
155 - }  
156 - };  
157 - };  
158 - var _xlObj = _xlObj_fun();  
159 -  
160 - var _parkObj_fun = function() { // 计算停车场对象  
161 - return {  
162 - park: {  
163 - id: _formMap.tcc_id  
164 - }  
165 - };  
166 - };  
167 - var _parkObj = _parkObj_fun(); // 停车场对象  
168 -  
169 - var _ttInfoObj_fun = function() { // 计算时刻表对象  
170 - return {  
171 - ttinfo: {  
172 - id: _formMap.skbName  
173 - }  
174 - };  
175 - };  
176 - var _ttInfoObj = _ttInfoObj_fun(); // 时刻表对象  
177 -  
178 - var _xlDirObj_fun = function() { // 计算线路上下行对象  
179 - return {  
180 - up: {  
181 - code: 0,  
182 - gdesc: 'relationshipGraph-up'  
183 - },  
184 - down: {  
185 - code: 1,  
186 - gdesc: 'relationshipGraph-down'  
187 - }  
188 - }  
189 - };  
190 - var _xlDirObj = _xlDirObj_fun(); // 线路上下行对象  
191 -  
192 - return {  
193 - // 重置参数内容,参数同构造函数  
194 - reset: function(saa , cara, map , seMap , dataMap) {  
195 - _formMap = map; // 表单参数  
196 - _travelTimeObj = _travelTimeObj_fun(); // 行驶时间对象  
197 - _travelLcObj = _travelLcObj_fun(); // 行驶里程对象  
198 - _stopTypeObj = _stopTypeObj_fun(); // 停站类型  
199 - _firstLastDepartureTimeStrObj = _firstLastDepartureTimeStrObj_fun(); // 首班车,末班车行驶时间字符串  
200 - _timeIntervalObj = _timeIntervalObj_fun(); // 时间段划分对象  
201 - _startEndStopObj = _startEndStopObj_fun(); // 起点站终点站对象  
202 - _xlObj = _xlObj_fun(); // 线路对象  
203 - _parkObj = _parkObj_fun(); // 停车场对象  
204 - _ttInfoObj = _ttInfoObj_fun(); // 时刻表对象  
205 - _xlDirObj = _xlDirObj_fun(); // 线路上下行对象  
206 -  
207 - // TODO:还有其他参数  
208 - },  
209 -  
210 - /**  
211 - * 获取停站类型对象。  
212 - * @returns {{isMasterStop, isMasterUpStop}}  
213 - */  
214 - getStopTypeObj: function() {  
215 - return _stopTypeObj;  
216 - },  
217 - /**  
218 - * 获取行驶时间对象。  
219 - * @returns {{moningpeak, eveningpeak, trough}}  
220 - */  
221 - getTravelTimeObj: function() {  
222 - return _travelTimeObj;  
223 - },  
224 - /**  
225 - * 获取行驶里程对象。  
226 - */  
227 - getTravelLcObj: function() {  
228 - return _travelLcObj;  
229 - },  
230 - /**  
231 - * 获取首班车发车时间字符串对象(格式:如 12:01,数组0代表上行,数组1代表下行)。  
232 - * @returns {{up, down}}  
233 - */  
234 - getFirstLastDepartureTimeStrObj: function() {  
235 - return _firstLastDepartureTimeStrObj;  
236 - },  
237 - /**  
238 - * 获取时间段划分对象。  
239 - * @returns {{moningPeakTimeStrs, eveningPeakTimeStrs}}  
240 - */  
241 - getTimeIntervalObj: function() {  
242 - return _timeIntervalObj;  
243 - },  
244 - /**  
245 - * 获取起点站终点站对象。  
246 - * @returns {{up, down}}  
247 - */  
248 - getStartEndStopObj: function() {  
249 - return _startEndStopObj;  
250 - },  
251 - /**  
252 - * 获取线路对象。  
253 - * @returns {{xl}}  
254 - */  
255 - getXlObj: function() {  
256 - return _xlObj;  
257 - },  
258 - /**  
259 - * 获取停车场对象。  
260 - * @returns {{park}}  
261 - */  
262 - getParkObj: function() {  
263 - return _parkObj;  
264 - },  
265 - /**  
266 - * 获取时刻表对象。  
267 - * @returns {{ttinfo}}  
268 - */  
269 - getTTInfoObj: function() {  
270 - return _ttInfoObj;  
271 - },  
272 - /**  
273 - * 获取线路上下行对象。  
274 - * @returns {{up, down}|*}  
275 - */  
276 - getXlDirObj: function() {  
277 - return _xlDirObj;  
278 - },  
279 - /**  
280 - * 获取车辆总数。  
281 - */  
282 - getClzs: function() {  
283 - return parseInt(_formMap.clzs);  
284 - }  
285 -  
286 - };  
287 -};  
288 \ No newline at end of file 0 \ No newline at end of file
src/main/resources/static/pages/base/timesmodel/js/strategy/strategy-util.js deleted 100644 → 0
1 -/**  
2 - * 策略工具类。  
3 - *  
4 - * TODO:所有的时间使用moment.js计算,需要验证  
5 - */  
6 -var StrategyUtils = function() {  
7 - var date_wrap_prefix = "2000-01-01 "; // 包装日期的前缀  
8 - var date_wrap_format = "YYYY-MM-DD HH:mm"; // 日期格式  
9 - /**  
10 - * 将时间包装成日期,方便计算。  
11 - * @param timeStr 时间格式,如 06:30  
12 - */  
13 - var wrapTime = function(timeStr) {  
14 - return moment(  
15 - date_wrap_prefix + timeStr,  
16 - date_wrap_format  
17 - );  
18 - };  
19 -  
20 - // 工厂类  
21 - var _factoryFun = function() {  
22 - return {  
23 - // 参数对象创建  
24 - creatParamterObj: function(saa , cara, map , seMap , dataMap) {  
25 - return StrategyParamter(saa , cara, map , seMap , dataMap);  
26 - },  
27 - // 创建班次对象(使用的是固定停站时间,浮动需要在外面重新计算)  
28 - creatBcObjWithFixedStopTime: function(bcType, isUp, lp, fcno, fcTimeStart, paramObj) {  
29 - var _bcObj = {  
30 - parent: lp,  
31 - lpNo: lp,  
32 - lp: null,  
33 - lpName: lp,  
34 - lpType: '普通路牌',  
35 - bcType: bcType,  
36 - fcno: fcno,  
37 - isfb: 0,  
38 - isSwitchXl: null,  
39 - bz: null  
40 - };  
41 -  
42 - // 线路上下行  
43 - var _xlDirObj = paramObj.getXlDirObj();  
44 - _bcObj.xlDir = isUp ? _xlDirObj.up.gdesc : _xlDirObj.down.gdesc;  
45 -  
46 - // 里程  
47 - _bcObj.jhlc = StrategyUtils.getTravelLcNumber(fcTimeStart, isUp, bcType, paramObj);  
48 -  
49 - // 停车场  
50 - var _parkObj = paramObj.getParkObj();  
51 - _bcObj.tcc = _parkObj.park.id;  
52 -  
53 - // 时刻表  
54 - var _ttInfoObj = paramObj.getTTInfoObj();  
55 - _bcObj.ttinfo = _ttInfoObj.ttinfo.id;  
56 -  
57 - // 线路  
58 - var _xlObj = paramObj.getXlObj();  
59 - _bcObj.xl = _xlObj.xl.id;  
60 -  
61 - // 起点站、终点站  
62 - var _startEndStopObj = paramObj.getStartEndStopObj();  
63 - _bcObj.qdz = isUp ? _startEndStopObj.up.qdz.id : _startEndStopObj.down.qdz.id;  
64 - _bcObj.zdz = isUp ? _startEndStopObj.down.zdz.id : _startEndStopObj.down.zdz.id;  
65 -  
66 - // 发车时间,行驶时间,到达时间,停站时间  
67 - var wrap_fctime = wrapTime(fcTimeStart);  
68 - _bcObj.fcsj = fcTimeStart;  
69 - _bcObj.bcsj = StrategyUtils.getTravelTimeNumber(fcTimeStart, isUp, paramObj);  
70 - _bcObj.ARRIVALTIME = wrap_fctime.add(_bcObj.bcsj, 'm').format('HH:mm');  
71 - _bcObj.STOPTIME = StrategyUtils.getFixedStopNumber(_bcObj.ARRIVALTIME, isUp, paramObj);  
72 -  
73 - return _bcObj;  
74 - }  
75 - }  
76 - };  
77 -  
78 - return {  
79 - getFactory: function() { // 工厂对象创建  
80 - return _factoryFun();  
81 - },  
82 -  
83 - toWrapTime: function(timeStr) { // 包装日期  
84 - return wrapTime(timeStr);  
85 - },  
86 -  
87 - /**  
88 - * 判定某个班次是否是早高峰班次。  
89 - * @param timeStr 班次时间字符串  
90 - * @param paramObj 参数对象  
91 - */  
92 - isMoningPeakVehicleBc: function(timeStr, paramObj) {  
93 - var _timeIntervalObj = paramObj.getTimeIntervalObj();  
94 -  
95 - // 早高峰开始时间  
96 - var st = wrapTime(  
97 - _timeIntervalObj.moningPeakTimeStrs.start  
98 - );  
99 - // 早高峰结束时间  
100 - var et = wrapTime(  
101 - _timeIntervalObj.moningPeakTimeStrs.end  
102 - );  
103 - // 包装日期  
104 - var wt = wrapTime(timeStr);  
105 - return wt.isBetween(st, et, null, "[]");  
106 - },  
107 -  
108 - /**  
109 - * 判定某个班次是否是晚高峰班次。  
110 - * @param timeStr 班次时间字符串  
111 - * @param paramObj 参数对象  
112 - */  
113 - isEveningPeakVehicleBc: function(timeStr, paramObj) {  
114 - var _timeIntervalObj = paramObj.getTimeIntervalObj();  
115 -  
116 - // 晚高峰开始时间  
117 - var st = wrapTime(  
118 - _timeIntervalObj.eveningPeakTimeStrs.start  
119 - );  
120 - // 晚高峰结束时间  
121 - var et = wrapTime(  
122 - _timeIntervalObj.eveningPeakTimeStrs.end  
123 - );  
124 - // 包装日期  
125 - var wt = wrapTime(timeStr);  
126 - return wt.isBetween(st, et, null, "[]");  
127 - },  
128 -  
129 - /**  
130 - * 判定某个班次是否是低谷班次。  
131 - * @param timeStr 班次时间字符串  
132 - * @param paramObj 参数对象  
133 - */  
134 - isTroughVehicleBc: function(timeStr, paramObj) {  
135 - return (  
136 - !this.isMoningPeakVehicleBc(timeStr, paramObj) &&  
137 - !this.isEveningPeakVehicleBc(timeStr, paramObj)  
138 - );  
139 - },  
140 - /**  
141 - * 判定某个低谷班次是否在早高峰开始之前。  
142 - * @param timeStr 班次时间字符串  
143 - * @param paramObj 参数对象  
144 - */  
145 - isTroughBeforMoningPeakStartVehicleBc: function(timeStr, paramObj) {  
146 - var _timeIntervalObj = paramObj.getTimeIntervalObj();  
147 -  
148 - // 早高峰开始时间  
149 - var st = wrapTime(  
150 - _timeIntervalObj.moningPeakTimeStrs.start  
151 - );  
152 - // 包装日期  
153 - var wt = wrapTime(timeStr);  
154 - return wt.isBefore(st);  
155 - },  
156 - /**  
157 - * 判定某个低谷班次是否在晚高峰结束之后。  
158 - * @param timeStr 班次时间字符串  
159 - * @param paramObj 参数对象  
160 - */  
161 - isTroughAfterEveningPeakEndVehicleBc: function(timeStr, paramObj) {  
162 - var _timeIntervalObj = paramObj.getTimeIntervalObj();  
163 -  
164 - // 晚高峰结束时间  
165 - var et = wrapTime(  
166 - _timeIntervalObj.eveningPeakTimeStrs.end  
167 - );  
168 - // 包装日期  
169 - var wt = wrapTime(timeStr);  
170 - return wt.isAfter(et);  
171 - },  
172 -  
173 - /**  
174 - * 获取固定的停站时间(固定停站时间都是选的最大值)  
175 - * @param timeStr 班次时间字符串  
176 - * @param isUp 是否上行  
177 - * @param paramObj 参数对象  
178 - */  
179 - getFixedStopNumber: function(timeStr, isUp, paramObj) {  
180 - var peakStopTime; // 高峰停站时间  
181 - var troughStopTime; // 低谷停站时间  
182 - var secondaryStopTime; // 副站停站时间  
183 -  
184 - var _stopTypeObj = paramObj.getStopTypeObj();  
185 - var _travelTimeObj = paramObj.getTravelTimeObj();  
186 -  
187 - if (_stopTypeObj.isMasterStop) { // 主站停站  
188 - if (isUp == _stopTypeObj.isMasterUpStop) {  
189 - if (isUp) { // 上行  
190 - if (this.isMoningPeakVehicleBc(timeStr, paramObj)) { // 早高峰  
191 - peakStopTime = Math.floor(_travelTimeObj.moningpeak[0] * 0.1); // 行驶时间的10%  
192 - if (peakStopTime < 3) { // 不少于3分钟  
193 - peakStopTime = 3;  
194 - }  
195 - return peakStopTime;  
196 - } else if (this.isEveningPeakVehicleBc(timeStr, paramObj)) { // 晚高峰  
197 - peakStopTime = Math.floor(_travelTimeObj.eveningpeak[0] * 0.1); // 行驶时间的10%  
198 - if (peakStopTime < 3) { // 不少于3分钟  
199 - peakStopTime = 3;  
200 - }  
201 - return peakStopTime;  
202 - } else { // 低谷  
203 - if (this.isTroughBeforMoningPeakStartVehicleBc(timeStr, paramObj)) { // 早高峰开始前  
204 - troughStopTime = Math.floor(_travelTimeObj.trough[0] * 0.2); // 行驶时间20%  
205 - if (troughStopTime < 10) { // 不少于10分钟  
206 - troughStopTime = 10;  
207 - }  
208 - return troughStopTime;  
209 - } else if (this.isTroughAfterEveningPeakEndVehicleBc(timeStr, paramObj)) { // 晚高峰结束后  
210 - troughStopTime = Math.floor(_travelTimeObj.trough[0] * 0.2); // 行驶时间20%  
211 - if (troughStopTime < 10) { // 不少于10分钟  
212 - troughStopTime = 10;  
213 - }  
214 - return troughStopTime;  
215 - } else { // 早高峰,晚高峰之间  
216 - troughStopTime = Math.floor(_travelTimeObj.trough[0] * 0.15); // 行驶时间15%  
217 - if (troughStopTime < 10) { // 不少于10分钟  
218 - troughStopTime = 10;  
219 - }  
220 - return troughStopTime;  
221 - }  
222 - }  
223 - } else { // 下行  
224 - if (this.isMoningPeakVehicleBc(timeStr, paramObj)) { // 早高峰  
225 - peakStopTime = Math.floor(_travelTimeObj.moningpeak[1] * 0.1); // 行驶时间的10%  
226 - if (peakStopTime < 3) { // 不少于3分钟  
227 - peakStopTime = 3;  
228 - }  
229 - return peakStopTime;  
230 - } else if (this.isEveningPeakVehicleBc(timeStr, paramObj)) { // 晚高峰  
231 - peakStopTime = Math.floor(_travelTimeObj.eveningpeak[1] * 0.1); // 行驶时间的10%  
232 - if (peakStopTime < 3) { // 不少于3分钟  
233 - peakStopTime = 3;  
234 - }  
235 - return peakStopTime;  
236 - } else { // 低谷  
237 - if (this.isTroughBeforMoningPeakStartVehicleBc(timeStr, paramObj)) { // 早高峰开始前  
238 - troughStopTime = Math.floor(_travelTimeObj.trough[1] * 0.2); // 行驶时间20%  
239 - if (troughStopTime < 10) { // 不少于10分钟  
240 - troughStopTime = 10;  
241 - }  
242 - return troughStopTime;  
243 - } else if (this.isTroughAfterEveningPeakEndVehicleBc(timeStr, paramObj)) { // 晚高峰结束后  
244 - troughStopTime = Math.floor(_travelTimeObj.trough[1] * 0.2); // 行驶时间20%  
245 - if (troughStopTime < 10) { // 不少于10分钟  
246 - troughStopTime = 10;  
247 - }  
248 - return troughStopTime;  
249 - } else { // 早高峰,晚高峰之间  
250 - troughStopTime = Math.floor(_travelTimeObj.trough[1] * 0.15); // 行驶时间15%  
251 - if (troughStopTime < 10) { // 不少于10分钟  
252 - troughStopTime = 10;  
253 - }  
254 - return troughStopTime;  
255 - }  
256 - }  
257 - }  
258 - } else { // 副站停战,2到3分钟  
259 - secondaryStopTime = 3;  
260 - return secondaryStopTime; // 直接返回3分钟  
261 - }  
262 - } else { // 双向停站  
263 - if (isUp) { // 上行  
264 - if (this.isMoningPeakVehicleBc(timeStr, paramObj)) { // 早高峰  
265 - peakStopTime = Math.floor(_travelTimeObj.moningpeak[0] * 0.1); // 行驶时间的10%  
266 - if (peakStopTime < 3) { // 不少于3分钟  
267 - peakStopTime = 3;  
268 - }  
269 - return peakStopTime;  
270 - } else if (this.isEveningPeakVehicleBc(timeStr, paramObj)) { // 晚高峰  
271 - peakStopTime = Math.floor(_travelTimeObj.eveningpeak[0] * 0.1); // 行驶时间的10%  
272 - if (peakStopTime < 3) { // 不少于3分钟  
273 - peakStopTime = 3;  
274 - }  
275 - return peakStopTime;  
276 - } else { // 低谷  
277 - if (this.isTroughBeforMoningPeakStartVehicleBc(timeStr, paramObj)) { // 早高峰开始前  
278 - troughStopTime = Math.floor(_travelTimeObj.trough[0] * 0.2); // 行驶时间20%  
279 - if (troughStopTime < 10) { // 不少于10分钟  
280 - troughStopTime = 10;  
281 - }  
282 - return troughStopTime;  
283 - } else if (this.isTroughAfterEveningPeakEndVehicleBc(timeStr, paramObj)) { // 晚高峰结束后  
284 - troughStopTime = Math.floor(_travelTimeObj.trough[0] * 0.2); // 行驶时间20%  
285 - if (troughStopTime < 10) { // 不少于10分钟  
286 - troughStopTime = 10;  
287 - }  
288 - return troughStopTime;  
289 - } else { // 早高峰,晚高峰之间  
290 - troughStopTime = Math.floor(_travelTimeObj.trough[0] * 0.15); // 行驶时间15%  
291 - if (troughStopTime < 10) { // 不少于10分钟  
292 - troughStopTime = 10;  
293 - }  
294 - return troughStopTime;  
295 - }  
296 - }  
297 - } else { // 下行  
298 - if (this.isMoningPeakVehicleBc(timeStr, paramObj)) { // 早高峰  
299 - peakStopTime = Math.floor(_travelTimeObj.moningpeak[1] * 0.1); // 行驶时间的10%  
300 - if (peakStopTime < 3) { // 不少于3分钟  
301 - peakStopTime = 3;  
302 - }  
303 - return peakStopTime;  
304 - } else if (this.isEveningPeakVehicleBc(timeStr, paramObj)) { // 晚高峰  
305 - peakStopTime = Math.floor(_travelTimeObj.eveningpeak[1] * 0.1); // 行驶时间的10%  
306 - if (peakStopTime < 3) { // 不少于3分钟  
307 - peakStopTime = 3;  
308 - }  
309 - return peakStopTime;  
310 - } else { // 低谷  
311 - if (this.isTroughBeforMoningPeakStartVehicleBc(timeStr, paramObj)) { // 早高峰开始前  
312 - troughStopTime = Math.floor(_travelTimeObj.trough[1] * 0.2); // 行驶时间20%  
313 - if (troughStopTime < 10) { // 不少于10分钟  
314 - troughStopTime = 10;  
315 - }  
316 - return troughStopTime;  
317 - } else if (this.isTroughAfterEveningPeakEndVehicleBc(timeStr, paramObj)) { // 晚高峰结束后  
318 - troughStopTime = Math.floor(_travelTimeObj.trough[1] * 0.2); // 行驶时间20%  
319 - if (troughStopTime < 10) { // 不少于10分钟  
320 - troughStopTime = 10;  
321 - }  
322 - return troughStopTime;  
323 - } else { // 早高峰,晚高峰之间  
324 - troughStopTime = Math.floor(_travelTimeObj.trough[1] * 0.15); // 行驶时间15%  
325 - if (troughStopTime < 10) { // 不少于10分钟  
326 - troughStopTime = 10;  
327 - }  
328 - return troughStopTime;  
329 - }  
330 - }  
331 - }  
332 - }  
333 -  
334 - },  
335 -  
336 - /**  
337 - * 获取行驶时间。  
338 - * @param timeStr 班次时间字符串  
339 - * @param isUp 是否上行  
340 - * @param paramObj 参数对象  
341 - */  
342 - getTravelTimeNumber: function(timeStr, isUp, paramObj) {  
343 - var _travelTimeObj = paramObj.getTravelTimeObj();  
344 -  
345 - if (isUp) {  
346 - if (this.isMoningPeakVehicleBc(timeStr, paramObj)) {  
347 - return _travelTimeObj.moningpeak[0];  
348 - } else if (this.isEveningPeakVehicleBc(timeStr, paramObj)) {  
349 - return _travelTimeObj.eveningpeak[0];  
350 - } else {  
351 - return _travelTimeObj.trough[0];  
352 - }  
353 - } else {  
354 - if (this.isMoningPeakVehicleBc(timeStr, paramObj)) {  
355 - return _travelTimeObj.moningpeak[1];  
356 - } else if (this.isEveningPeakVehicleBc(timeStr, paramObj)) {  
357 - return _travelTimeObj.eveningpeak[1];  
358 - } else {  
359 - return _travelTimeObj.trough[1];  
360 - }  
361 - }  
362 - },  
363 -  
364 - /**  
365 - * 获取行驶里程。  
366 - * @param timeStr 班次时间字符串  
367 - * @param isUp 是否上行  
368 - * @param bcType 班次类型  
369 - * @param paramObj 参数对象  
370 - */  
371 - getTravelLcNumber: function(timeStr, isUp, bcType, paramObj) {  
372 - var _travelLcObj = paramObj.getTravelLcObj();  
373 - if (isUp) {  
374 - if (bcType == "in") {  
375 - return _travelLcObj[0].inLc;  
376 - } else if (bcType == "out") {  
377 - return _travelLcObj[0].outLc;  
378 - } else {  
379 - // 基本班次类型,暂时不考虑区间等其他班次类型  
380 - // 暂时不考虑高峰低谷里程的区分  
381 - return _travelLcObj[0].normalLc;  
382 - }  
383 - } else {  
384 - if (bcType == "in") {  
385 - return _travelLcObj[1].inLc;  
386 - } else if (bcType == "out") {  
387 - return _travelLcObj[1].outLc;  
388 - } else {  
389 - // 基本班次类型,暂时不考虑区间等其他班次类型  
390 - // 暂时不考虑高峰低谷里程的区分  
391 - return _travelLcObj[1].normalLc;  
392 - }  
393 - }  
394 - }  
395 -  
396 - };  
397 -  
398 -}();  
399 \ No newline at end of file 0 \ No newline at end of file
src/main/resources/static/pages/base/timesmodel/tepms/fcjx_temp.html
@@ -228,6 +228,15 @@ @@ -228,6 +228,15 @@
228 <input type="text" class="form-control" placeholder="车辆数" name="gfjypcs" id="gfjypcsInput" min="1"> 228 <input type="text" class="form-control" placeholder="车辆数" name="gfjypcs" id="gfjypcsInput" min="1">
229 </div> 229 </div>
230 </div> 230 </div>
  231 +
  232 + <div class="col-md-6">
  233 + <label class="control-label col-md-5">
  234 + <span class="required"> * </span> 加班车路牌数 :</label>
  235 + <div class="col-md-5">
  236 + <input type="text" class="form-control" placeholder="加班路牌数" name="jblps" id="jblpsInput" min="1">
  237 + </div>
  238 + </div>
  239 +
231 </div> 240 </div>
232 241
233 <!-- 隐藏字段-时间 --> 242 <!-- 隐藏字段-时间 -->
@@ -428,6 +437,12 @@ @@ -428,6 +437,12 @@
428 <p class="form-control-static" data-display="gfjypcs"> </p> 437 <p class="form-control-static" data-display="gfjypcs"> </p>
429 </div> 438 </div>
430 </div> 439 </div>
  440 + <div class="col-md-6">
  441 + <label class="control-label col-md-5"> 加班车路牌数 : </label>
  442 + <div class="col-md-4">
  443 + <p class="form-control-static" data-display="jblps"> </p>
  444 + </div>
  445 + </div>
431 446
432 </div> 447 </div>
433 448
src/main/resources/static/pages/mforms/singledatas/singledata.html
@@ -221,7 +221,7 @@ @@ -221,7 +221,7 @@
221 <td>{{i+1}}</td> 221 <td>{{i+1}}</td>
222 <td>{{obj.rQ}}</td> 222 <td>{{obj.rQ}}</td>
223 <td>{{obj.gS}}</td> 223 <td>{{obj.gS}}</td>
224 - <td>{{obj.xL}}</td> 224 + <td>{{obj.xlmc}}</td>
225 <td>{{obj.clzbh}}</td> 225 <td>{{obj.clzbh}}</td>
226 <td>{{obj.jsy}}</td> 226 <td>{{obj.jsy}}</td>
227 <td>{{obj.jName}}</td> 227 <td>{{obj.jName}}</td>
src/main/resources/static/pages/scheduleApp/module/basicInfo/employeeInfoManage/detail.html
@@ -49,7 +49,7 @@ @@ -49,7 +49,7 @@
49 </div> 49 </div>
50 </div> 50 </div>
51 <div class="form-group has-success has-feedback"> 51 <div class="form-group has-success has-feedback">
52 - <label class="col-md-2 control-label">号*:</label> 52 + <label class="col-md-2 control-label">号*:</label>
53 <div class="col-md-3"> 53 <div class="col-md-3">
54 <input type="text" class="form-control" name="jobCode" 54 <input type="text" class="form-control" name="jobCode"
55 ng-model="ctrl.employeeInfoForDetail.jobCode" readonly/> 55 ng-model="ctrl.employeeInfoForDetail.jobCode" readonly/>
src/main/resources/static/pages/scheduleApp/module/basicInfo/employeeInfoManage/list.html
@@ -6,7 +6,8 @@ @@ -6,7 +6,8 @@
6 <tr role="row" class="heading"> 6 <tr role="row" class="heading">
7 <th style="width:70px;">序号</th> 7 <th style="width:70px;">序号</th>
8 <th style="width: 130px;">姓名</th> 8 <th style="width: 130px;">姓名</th>
9 - <th style="width: 130px;">员工编号</th> 9 + <th style="width: 100px;">编号</th>
  10 + <th style="width: 100px;">工号</th>
10 <th style="width: 5%;">性别</th> 11 <th style="width: 5%;">性别</th>
11 <th style="width: 15%;">所在公司</th> 12 <th style="width: 15%;">所在公司</th>
12 <th >分公司</th> 13 <th >分公司</th>
@@ -20,7 +21,10 @@ @@ -20,7 +21,10 @@
20 <input type="text" class="form-control input-sm" ng-model="ctrl.searchCondition().personnelName_like" placeholder="输入姓名..."/> 21 <input type="text" class="form-control input-sm" ng-model="ctrl.searchCondition().personnelName_like" placeholder="输入姓名..."/>
21 </td> 22 </td>
22 <td> 23 <td>
23 - <input type="text" class="form-control input-sm" ng-model="ctrl.searchCondition().jobCode_like" placeholder="输入工号..."/> 24 + <input type="text" class="form-control input-sm" ng-model="ctrl.searchCondition().jobCode_like" placeholder="输入编号..."/>
  25 + </td>
  26 + <td>
  27 + <input type="text" class="form-control input-sm" ng-model="ctrl.searchCondition().jobCodeori_like" placeholder="输入工号..."/>
24 </td> 28 </td>
25 <td> 29 <td>
26 </td> 30 </td>
@@ -106,6 +110,9 @@ @@ -106,6 +110,9 @@
106 <span ng-bind="info.jobCode"></span> 110 <span ng-bind="info.jobCode"></span>
107 </td> 111 </td>
108 <td> 112 <td>
  113 + <span ng-bind="info.jobCodeori"></span>
  114 + </td>
  115 + <td>
109 <span ng-bind="info.personnelType | dict:'sexType':'未知'"></span> 116 <span ng-bind="info.personnelType | dict:'sexType':'未知'"></span>
110 117
111 <!--<div ng-if="info.personnelType == '1'">--> 118 <!--<div ng-if="info.personnelType == '1'">-->
src/main/resources/static/pages/scheduleApp/module/core/employeeConfig/detail.html
@@ -68,7 +68,7 @@ @@ -68,7 +68,7 @@
68 <label class="col-md-2 control-label">驾驶员工号*:</label> 68 <label class="col-md-2 control-label">驾驶员工号*:</label>
69 <div class="col-md-3"> 69 <div class="col-md-3">
70 <input type="text" class="form-control" name="jsy_code" 70 <input type="text" class="form-control" name="jsy_code"
71 - ng-model="ctrl.employeeConfigForDetail.jsy.jobCode" readonly/> 71 + ng-model="ctrl.employeeConfigForDetail.jsy.jobCodeori" readonly/>
72 </div> 72 </div>
73 </div> 73 </div>
74 74
@@ -84,7 +84,7 @@ @@ -84,7 +84,7 @@
84 <label class="col-md-2 control-label">售票员工号:</label> 84 <label class="col-md-2 control-label">售票员工号:</label>
85 <div class="col-md-3"> 85 <div class="col-md-3">
86 <input type="text" class="form-control" name="spy_code" 86 <input type="text" class="form-control" name="spy_code"
87 - ng-model="ctrl.employeeConfigForDetail.spy.jobCode" readonly/> 87 + ng-model="ctrl.employeeConfigForDetail.spy.jobCodeori" readonly/>
88 </div> 88 </div>
89 </div> 89 </div>
90 90
src/main/resources/static/pages/scheduleApp/module/core/employeeConfig/list.html
@@ -34,13 +34,13 @@ @@ -34,13 +34,13 @@
34 </td> 34 </td>
35 <td></td> 35 <td></td>
36 <td> 36 <td>
37 - <input type="text" class="form-control form-filter input-sm" ng-model="ctrl.searchCondition()['jsy.jobCode_like']" placeholder="输入工号..."/> 37 + <input type="text" class="form-control form-filter input-sm" ng-model="ctrl.searchCondition()['jsy.jobCodeori_like']" placeholder="输入工号..."/>
38 </td> 38 </td>
39 <td> 39 <td>
40 <input type="text" class="form-control form-filter input-sm" ng-model="ctrl.searchCondition()['jsy.personnelName_like']" placeholder="输入姓名..."/> 40 <input type="text" class="form-control form-filter input-sm" ng-model="ctrl.searchCondition()['jsy.personnelName_like']" placeholder="输入姓名..."/>
41 </td> 41 </td>
42 <td> 42 <td>
43 - <input type="text" class="form-control form-filter input-sm" ng-model="ctrl.searchCondition()['spy.jobCode_like']" placeholder="输入工号..."/> 43 + <input type="text" class="form-control form-filter input-sm" ng-model="ctrl.searchCondition()['spy.jobCodeori_like']" placeholder="输入工号..."/>
44 </td> 44 </td>
45 <td> 45 <td>
46 <input type="text" class="form-control form-filter input-sm" ng-model="ctrl.searchCondition()['spy.personnelName_like']" placeholder="输入姓名..."/> 46 <input type="text" class="form-control form-filter input-sm" ng-model="ctrl.searchCondition()['spy.personnelName_like']" placeholder="输入姓名..."/>
@@ -80,13 +80,13 @@ @@ -80,13 +80,13 @@
80 <span ng-bind="info.dbbm"></span> 80 <span ng-bind="info.dbbm"></span>
81 </td> 81 </td>
82 <td> 82 <td>
83 - <span ng-bind="info.jsy.jobCode"></span> 83 + <span ng-bind="info.jsy.jobCodeori"></span>
84 </td> 84 </td>
85 <td> 85 <td>
86 <span ng-bind="info.jsy.personnelName"></span> 86 <span ng-bind="info.jsy.personnelName"></span>
87 </td> 87 </td>
88 <td> 88 <td>
89 - <span ng-bind="info.spy.jobCode"></span> 89 + <span ng-bind="info.spy.jobCodeori"></span>
90 </td> 90 </td>
91 <td> 91 <td>
92 <span ng-bind="info.spy.personnelName"></span> 92 <span ng-bind="info.spy.personnelName"></span>
src/main/resources/static/pages/summary/excel/快慢误点报表.xls 0 → 100644
No preview for this file type
src/main/resources/static/pages/summary/fast_and_slow/data.html
1 <div class="ct_data_body_wrap"> 1 <div class="ct_data_body_wrap">
2 <div class="uk-card uk-card-default uk-card-body ct_rq_left"> 2 <div class="uk-card uk-card-default uk-card-body ct_rq_left">
3 - <ul uk-scrollspy-nav="closest: li; scroll: true; " class="uk-nav uk-nav-default tm-nav uk-nav-parent-icon"></ul> 3 + <ul uk-scrollspy-nav="closest: li; scroll: true; offset: 285" class="uk-nav uk-nav-default tm-nav uk-nav-parent-icon"></ul>
4 </div> 4 </div>
5 5
6 <div class="uk-card uk-card-default uk-card-body ct_right_tables" > 6 <div class="uk-card uk-card-default uk-card-body ct_right_tables" >
@@ -15,9 +15,7 @@ @@ -15,9 +15,7 @@
15 15
16 <script id="fast_and_slow_right_body_temp" type="text/html"> 16 <script id="fast_and_slow_right_body_temp" type="text/html">
17 <div> 17 <div>
18 - {{each listMap as obj k}}  
19 - <h2 id="table_{{k}}">{{k}}</h2>  
20 - <div class="data_table_wrap"> 18 + <div class="data_table_wrap head">
21 <table cellspacing="1" class="data_table"> 19 <table cellspacing="1" class="data_table">
22 <col /> 20 <col />
23 <col width="14%"/> 21 <col width="14%"/>
@@ -65,11 +63,34 @@ @@ -65,11 +63,34 @@
65 <td>快</td> 63 <td>快</td>
66 <td>慢</td> 64 <td>慢</td>
67 </tr> 65 </tr>
  66 + </table>
  67 + </div>
  68 + {{each listMap as obj k}}
  69 + <h4><a>{{k}}</a></h4>
  70 + <div class="data_table_wrap data" id="table_{{k}}">
  71 + <table cellspacing="1" class="data_table">
  72 + <col />
  73 + <col width="14%"/>
  74 + <col width="4%"/>
  75 + <col width="6%"/>
  76 + <col width="6%"/>
  77 + <col width="6%"/>
  78 + <col width="5%"/>
  79 + <col width="5%"/>
  80 + <col width="5%"/>
  81 + <col width="5%"/>
  82 + <col width="6%"/>
  83 + <col width="6%"/>
  84 + <col width="6%"/>
  85 + <col width="5%"/>
  86 + <col width="5%"/>
  87 + <col width="5%"/>
  88 + <col width="5%"/>
68 {{each listMap[k] as obj i}} 89 {{each listMap[k] as obj i}}
69 <tr> 90 <tr>
70 <td>{{i+1}}</td> 91 <td>{{i+1}}</td>
71 <td>{{obj.stationName}}</td> 92 <td>{{obj.stationName}}</td>
72 - <td>{{obj.upDown==0?"上行":"下行"}}</td> 93 + <td class="cell_dir_{{obj.upDown}}">{{obj.upDown==0?"上行":"下行"}}</td>
73 <td>{{obj.fcsj}}</td> 94 <td>{{obj.fcsj}}</td>
74 <td>{{obj.dfsj}}</td> 95 <td>{{obj.dfsj}}</td>
75 <td>{{obj.fcsjActual}}</td> 96 <td>{{obj.fcsjActual}}</td>
@@ -87,13 +108,21 @@ @@ -87,13 +108,21 @@
87 </tr> 108 </tr>
88 {{/each}} 109 {{/each}}
89 <tr> 110 <tr>
90 - <td rowspan="2">合计:</td>  
91 - <td colspan="8" class="count_col">上行(计划快误点:12 累计时间:50 待发快误点:15 累计时间:70)</td>  
92 - <td colspan="8" class="count_col">下行(计划快误点:12 累计时间:50 待发快误点:15 累计时间:70)</td> 111 + <td rowspan="4">合计:</td>
  112 + <td colspan="8" class="count_col">发车:上行(计划快误点:<a class="c_c_0">{{countMap[k][0]['fast'][0]}}</a> &nbsp;累计时间:<a class="c_c_0">{{timeCountMap[k][0]['fast'][0]}}</a> &nbsp;待发快误点:<a class="c_c_0">{{countMap[k][0]['fast'][1]}}</a> &nbsp;累计时间:<a class="c_c_0">{{timeCountMap[k][0]['fast'][1]}}</a>)</td>
  113 + <td colspan="8" class="count_col">发车:下行(计划快误点:<a class="c_c_1">{{countMap[k][1]['fast'][0]}}</a> &nbsp;累计时间:<a class="c_c_1">{{timeCountMap[k][1]['fast'][0]}}</a> 待发快误点:<a class="c_c_1">{{countMap[k][1]['fast'][1]}}</a> &nbsp;累计时间:<a class="c_c_1">{{timeCountMap[k][1]['fast'][1]}}</a>)</td>
  114 + </tr>
  115 + <tr>
  116 + <td colspan="8" class="count_col">发车:上行(计划慢误点:<a class="c_c_0">{{countMap[k][0]['slow'][0]}}</a> &nbsp;累计时间:<a class="c_c_0">{{timeCountMap[k][0]['slow'][0]}}</a> &nbsp;待发慢误点:<a class="c_c_0">{{countMap[k][0]['slow'][1]}}</a> &nbsp;累计时间:<a class="c_c_0">{{timeCountMap[k][0]['slow'][1]}}</a>)</td>
  117 + <td colspan="8" class="count_col">发车:下行(计划慢误点:<a class="c_c_1">{{countMap[k][1]['slow'][0]}}</a> &nbsp;累计时间:<a class="c_c_1">{{timeCountMap[k][1]['slow'][0]}}</a> &nbsp;待发慢误点:<a class="c_c_1">{{countMap[k][1]['slow'][1]}}</a> &nbsp;累计时间:<a class="c_c_1">{{timeCountMap[k][1]['slow'][1]}}</a>)</td>
93 </tr> 118 </tr>
94 <tr> 119 <tr>
95 - <td colspan="8" class="count_col">上行(计划快误点:12 累计时间:50 待发快误点:15 累计时间:70)</td>  
96 - <td colspan="8" class="count_col">下行(计划快误点:12 累计时间:50 待发快误点:15 累计时间:70)</td> 120 + <td colspan="8" class="count_col">到达:上行(计划快误点:<a class="c_c_0">{{countMap[k][0]['fast'][2]}}</a> &nbsp;累计时间:<a class="c_c_0">{{timeCountMap[k][0]['fast'][2]}}</a> &nbsp;待发快误点:<a class="c_c_0">{{countMap[k][0]['fast'][3]}}</a> &nbsp;累计时间:<a class="c_c_0">{{timeCountMap[k][0]['fast'][3]}}</a>)</td>
  121 + <td colspan="8" class="count_col">到达:下行(计划快误点:<a class="c_c_1">{{countMap[k][1]['fast'][2]}}</a> &nbsp;累计时间:<a class="c_c_1">{{timeCountMap[k][1]['fast'][2]}}</a> &nbsp;待发快误点:<a class="c_c_1">{{countMap[k][1]['fast'][3]}}</a> &nbsp;累计时间:<a class="c_c_1">{{timeCountMap[k][1]['fast'][3]}}</a>)</td>
  122 + </tr>
  123 + <tr>
  124 + <td colspan="8" class="count_col">到达:上行(计划慢误点:<a class="c_c_0">{{countMap[k][0]['slow'][2]}}</a> &nbsp;累计时间:<a class="c_c_0">{{timeCountMap[k][0]['slow'][2]}}</a> &nbsp;待发慢误点:<a class="c_c_0">{{countMap[k][0]['slow'][3]}}</a> &nbsp;累计时间:<a class="c_c_0">{{timeCountMap[k][0]['slow'][3]}}</a>)</td>
  125 + <td colspan="8" class="count_col">到达:下行(计划慢误点:<a class="c_c_1">{{countMap[k][1]['slow'][2]}}</a> &nbsp;累计时间:<a class="c_c_1">{{timeCountMap[k][1]['slow'][2]}}</a> &nbsp;待发慢误点:<a class="c_c_1">{{countMap[k][1]['slow'][3]}}</a> &nbsp;累计时间:<a class="c_c_1">{{timeCountMap[k][1]['slow'][3]}}</a>)</td>
97 </tr> 126 </tr>
98 </table> 127 </table>
99 </div> 128 </div>
@@ -104,17 +133,64 @@ @@ -104,17 +133,64 @@
104 <script> 133 <script>
105 (function () { 134 (function () {
106 var wrap = '.ct_data_body_wrap', 135 var wrap = '.ct_data_body_wrap',
107 - listMap; 136 + listMap, countMap={}, timeCountMap={};
108 137
109 $(wrap).on('init', function (e, data) { 138 $(wrap).on('init', function (e, data) {
110 e.stopPropagation(); 139 e.stopPropagation();
111 listMap = data.listMap; 140 listMap = data.listMap;
112 141
  142 + //统计
  143 + for(var rq in listMap){
  144 + /**
  145 + * 2017-10-20:[{fast: [发车, 待发, 计划终点,待发终点], slow: [发车, 待发, 计划终点,待发终点]},{}]
  146 + */
  147 + countMap[rq]=[{fast:[0,0,0,0], slow:[0,0,0,0]}, {fast:[0,0,0,0], slow:[0,0,0,0]}];
  148 + timeCountMap[rq]=[{fast:[0,0,0,0], slow:[0,0,0,0]}, {fast:[0,0,0,0], slow:[0,0,0,0]}];
  149 + for(var i=0,obj;obj=listMap[rq][i++];){
  150 + countDetail(countMap[rq], obj);
  151 + sumTime(timeCountMap[rq], obj);
  152 + }
  153 + }
  154 +
113 //左侧日期list 155 //左侧日期list
114 $('.ct_rq_left>ul',wrap).html(template('fast_and_slow_left_rq_temp', {listMap: listMap})); 156 $('.ct_rq_left>ul',wrap).html(template('fast_and_slow_left_rq_temp', {listMap: listMap}));
115 //右侧 157 //右侧
116 - $('.ct_right_tables',wrap).html(template('fast_and_slow_right_body_temp', {listMap: listMap})); 158 + $('.ct_right_tables',wrap).html(template('fast_and_slow_right_body_temp', {listMap: listMap, countMap: countMap, timeCountMap: timeCountMap}));
117 }); 159 });
  160 +
  161 +
  162 + function countDetail(json, obj) {
  163 + var i = obj.upDown;
  164 + if(obj.fcsjFast)
  165 + json[i]['fast'][0]++;
  166 + if(obj.dfsjFast)
  167 + json[i]['fast'][1]++;
  168 + if(obj.zdsjFast)
  169 + json[i]['fast'][2]++;
  170 + if(obj.zdsjDfFast)
  171 + json[i]['fast'][3]++;
  172 +
  173 + if(obj.fcsjSlow)
  174 + json[i]['slow'][0]++;
  175 + if(obj.dfsjSlow)
  176 + json[i]['slow'][1]++;
  177 + if(obj.zdsjSlow)
  178 + json[i]['slow'][2]++;
  179 + if(obj.zdsjDfSlow)
  180 + json[i]['slow'][3]++;
  181 + }
  182 +
  183 + function sumTime(json, obj) {
  184 + var i = obj.upDown;
  185 + json[i]['fast'][0]+=obj.fcsjFast;
  186 + json[i]['fast'][1]+=obj.dfsjFast;
  187 + json[i]['fast'][2]+=obj.zdsjFast;
  188 + json[i]['fast'][3]+=obj.zdsjDfFast;
  189 + json[i]['slow'][0]+=obj.fcsjSlow;
  190 + json[i]['slow'][1]+=obj.dfsjSlow;
  191 + json[i]['slow'][2]+=obj.zdsjSlow;
  192 + json[i]['slow'][3]+=obj.zdsjDfSlow;
  193 + }
118 })(); 194 })();
119 </script> 195 </script>
120 </div> 196 </div>
121 \ No newline at end of file 197 \ No newline at end of file
src/main/resources/static/pages/summary/fast_and_slow/main.html
@@ -121,7 +121,8 @@ @@ -121,7 +121,8 @@
121 top: 15px; 121 top: 15px;
122 } 122 }
123 .uk-nav-default>li.uk-active>a { 123 .uk-nav-default>li.uk-active>a {
124 - color: #222; 124 + color: blue;
  125 + font-weight: 600;
125 } 126 }
126 127
127 .data_table_wrap{ 128 .data_table_wrap{
@@ -134,6 +135,7 @@ @@ -134,6 +135,7 @@
134 text-align: center; 135 text-align: center;
135 font-size: 14px; 136 font-size: 14px;
136 table-layout: fixed; 137 table-layout: fixed;
  138 + color: #000;
137 } 139 }
138 140
139 .ct_right_tables table td{ 141 .ct_right_tables table td{
@@ -148,14 +150,26 @@ @@ -148,14 +150,26 @@
148 text-align: left; 150 text-align: left;
149 height: 40px; 151 height: 40px;
150 text-indent:15px; 152 text-indent:15px;
  153 + font-size: 14px !important;
  154 + font-weight: 400;
151 } 155 }
152 156
153 - .ct_right_tables table tr:nth-child(-n+3) td{ 157 + .data_table_wrap.head{
  158 + position: fixed;
  159 + width: calc(100% - 300px);
  160 + top: 155px;
  161 + padding-top: 25px;
  162 + background: #fff;
  163 + }
  164 +
  165 + .ct_right_tables .data_table_wrap.head table tr:nth-child(-n+3) td{
154 background: #ededed; 166 background: #ededed;
155 } 167 }
156 168
157 .ct_right_tables table tr:nth-last-child(1) td, 169 .ct_right_tables table tr:nth-last-child(1) td,
158 - .ct_right_tables table tr:nth-last-child(2) td{ 170 + .ct_right_tables table tr:nth-last-child(2) td,
  171 + .ct_right_tables table tr:nth-last-child(3) td,
  172 + .ct_right_tables table tr:nth-last-child(4) td{
159 background: #ededed; 173 background: #ededed;
160 } 174 }
161 175
@@ -167,6 +181,36 @@ @@ -167,6 +181,36 @@
167 z-index: 2; 181 z-index: 2;
168 padding-top: 25px; 182 padding-top: 25px;
169 } 183 }
  184 +
  185 + .ct_right_tables h2{
  186 + margin-bottom: 10px;
  187 + }
  188 +
  189 + .data_table_wrap:nth-child(2) {
  190 + margin-top: 91px;
  191 + }
  192 +
  193 + .cell_dir_0{
  194 + color: #0000ff96;
  195 + font-weight: 600;
  196 + font-size: 12px;
  197 + }
  198 + .cell_dir_1{
  199 + color: #ff00009e;
  200 + font-weight: 600;
  201 + font-size: 12px;
  202 + }
  203 +
  204 + .count_col .c_c_0{
  205 + color: #0000ffe0;
  206 + }
  207 +
  208 + .count_col .c_c_1{
  209 + color: #ff0000d1;
  210 + }
  211 + .ct_cont{
  212 + display: none;
  213 + }
170 </style> 214 </style>
171 </head> 215 </head>
172 216
@@ -199,22 +243,22 @@ @@ -199,22 +243,22 @@
199 </div> 243 </div>
200 <div class="ct_field"> 244 <div class="ct_field">
201 <label>日期范围: 245 <label>日期范围:
202 - <input class="uk-input" name="rq" style="width: 200px;"> 246 + <input class="uk-input" name="rq" style="width: 200px;" >
203 </label> 247 </label>
204 </div> 248 </div>
205 <div class="ct_field"> 249 <div class="ct_field">
206 - <label><input class="uk-radio" type="radio" name="type" checked> 全部</label>&nbsp;  
207 - <label><input class="uk-radio" type="radio" name="type"> 快误</label>&nbsp;  
208 - <label><input class="uk-radio" type="radio" name="type"> 慢误</label> 250 + <label><input class="uk-radio" type="radio" name="type" value="0" checked> 全部</label>&nbsp;
  251 + <label><input class="uk-radio" type="radio" name="type" value="1"> 快误</label>&nbsp;
  252 + <label><input class="uk-radio" type="radio" name="type" value="-1"> 慢误</label>
209 </div> 253 </div>
210 <div class="ct_field"> 254 <div class="ct_field">
211 - <button class="uk-button uk-button-primary search"><i uk-icon="icon: search"></i>搜索</button> 255 + <button class="uk-button uk-button-primary search"><i uk-icon="icon: search" ></i>搜索</button>
212 </div> 256 </div>
213 <div class="ct_field ct_field_bottom"> 257 <div class="ct_field ct_field_bottom">
214 - <button class="uk-button uk-button-text" style="padding: 0 5px;">导出数据</button> 258 + <button class="uk-button uk-button-text export_excel" style="padding: 0 5px;">导出数据</button>
215 </div> 259 </div>
216 <div class="ct_field ct_field_bottom"> 260 <div class="ct_field ct_field_bottom">
217 - <span uk-icon="icon: question" title="快1慢3不算误点,排除进出场班次" uk-tooltip="pos: bottom"></span> 261 + <span uk-icon="icon: question" title="快1慢3; 排除进出场班次<br>一次至多查询5天的数据,如需更大查询范围,请导出" uk-tooltip="pos: bottom"></span>
218 </div> 262 </div>
219 </form> 263 </form>
220 </div> 264 </div>
@@ -259,8 +303,8 @@ @@ -259,8 +303,8 @@
259 303
260 //日期选择框 304 //日期选择框
261 var fs='YYYY-MM-DD' 305 var fs='YYYY-MM-DD'
262 - , ets=moment().format(fs)  
263 - , sts=moment().subtract(7, 'days').format(fs); 306 + , ets=moment().subtract(1, 'days').format(fs)
  307 + , sts=moment().subtract(6, 'days').format(fs);
264 flatpickr('.ct_search_form_wrap [name=rq]', { 308 flatpickr('.ct_search_form_wrap [name=rq]', {
265 mode: "range", dateFormat: "Y-m-d","locale": "zh", defaultDate: [sts, ets] 309 mode: "range", dateFormat: "Y-m-d","locale": "zh", defaultDate: [sts, ets]
266 }); 310 });
@@ -323,6 +367,22 @@ @@ -323,6 +367,22 @@
323 * 点击搜索 367 * 点击搜索
324 */ 368 */
325 $('.search', f).on('click', function () { 369 $('.search', f).on('click', function () {
  370 + var that = this;
  371 + $(that).attr('disabled', 'disabled');
  372 + var params = serializeFormJSON();
  373 + $('.ct_cont').hide();
  374 + $.get('/summary/fastAndSlow/all', params, function (rs) {
  375 + $(that).removeAttr('disabled');
  376 + //按日期分组
  377 + var listMap = groupBy(rs, 'rq');
  378 + $('.ct_data_body_wrap').trigger('init', {listMap: listMap});
  379 + if(!rs || rs.length==0)
  380 + return UIkit.notification('没有搜索到相关数据!!', 'danger');
  381 + $('.ct_cont').show();
  382 + });
  383 + });
  384 +
  385 + function serializeFormJSON() {
326 var data = f.serializeJSON(); 386 var data = f.serializeJSON();
327 if(!data.rq) 387 if(!data.rq)
328 return UIkit.notification('你必须选择时间范围!', 'danger'); 388 return UIkit.notification('你必须选择时间范围!', 'danger');
@@ -330,13 +390,8 @@ @@ -330,13 +390,8 @@
330 var sDate = data.rq.substr(0, 10), 390 var sDate = data.rq.substr(0, 10),
331 eDate = data.rq.substr(13); 391 eDate = data.rq.substr(13);
332 392
333 - var params = {lineCode_eq: data.lineCode_eq, rq_ge: sDate, rq_le: eDate, order: 't'};  
334 - $.get('/summary/fastAndSlow/all', params, function (rs) {  
335 - //按日期分组  
336 - var listMap = groupBy(rs, 'rq');  
337 - $('.ct_data_body_wrap').trigger('init', {listMap: listMap});  
338 - });  
339 - }); 393 + return {lineCode_eq: data.lineCode_eq, rq_ge: sDate, rq_le: eDate, order: 't',type: data.type};
  394 + }
340 395
341 f.on('submit', function (e) { 396 f.on('submit', function (e) {
342 return false; 397 return false;
@@ -355,6 +410,15 @@ @@ -355,6 +410,15 @@
355 410
356 return rs; 411 return rs;
357 }; 412 };
  413 +
  414 + /**
  415 + * 导出
  416 + */
  417 + $('.export_excel').on('click', function () {
  418 + var params = serializeFormJSON();
  419 +
  420 + window.open('/summary/fastAndSlow/excel/' + params.lineCode_eq + "?st="+params.rq_ge+"&et="+params.rq_le+"&type="+params.type);
  421 + });
358 })(); 422 })();
359 </script> 423 </script>
360 </body> 424 </body>