Commit f9527eb1cacf55c2544e7a2db3cc2870b346199e

Authored by 廖磊
2 parents 88b0a6a6 5d2e6039

Merge branch 'minhang' of

http://222.66.0.204:8090/panzhaov5/bsth_control into minhang
Showing 44 changed files with 4620 additions and 1114 deletions
@@ -259,11 +259,11 @@ @@ -259,11 +259,11 @@
259 </dependency> 259 </dependency>
260 260
261 261
262 - <dependency>  
263 - <groupId>ojdbc</groupId>  
264 - <artifactId>ojdbc</artifactId>  
265 - <version>14</version>  
266 - </dependency> 262 + <!--<dependency>-->
  263 + <!--<groupId>ojdbc</groupId>-->
  264 + <!--<artifactId>ojdbc</artifactId>-->
  265 + <!--<version>14</version>-->
  266 + <!--</dependency>-->
267 </dependencies> 267 </dependencies>
268 268
269 <dependencyManagement> 269 <dependencyManagement>
src/main/java/com/bsth/controller/schedule/core/TTInfoDetailController.java
@@ -5,11 +5,7 @@ import com.bsth.controller.schedule.BController; @@ -5,11 +5,7 @@ import com.bsth.controller.schedule.BController;
5 import com.bsth.entity.schedule.TTInfoDetail; 5 import com.bsth.entity.schedule.TTInfoDetail;
6 import com.bsth.service.schedule.TTInfoDetailService; 6 import com.bsth.service.schedule.TTInfoDetailService;
7 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.beans.factory.annotation.Autowired;
8 -import org.springframework.web.bind.annotation.PathVariable;  
9 -import org.springframework.web.bind.annotation.RequestMapping;  
10 -import org.springframework.web.bind.annotation.RequestMethod;  
11 -import org.springframework.web.bind.annotation.RequestParam;  
12 -import org.springframework.web.bind.annotation.RestController; 8 +import org.springframework.web.bind.annotation.*;
13 9
14 import java.util.HashMap; 10 import java.util.HashMap;
15 import java.util.List; 11 import java.util.List;
@@ -88,6 +84,20 @@ public class TTInfoDetailController extends BController&lt;TTInfoDetail, Long&gt; { @@ -88,6 +84,20 @@ public class TTInfoDetailController extends BController&lt;TTInfoDetail, Long&gt; {
88 } 84 }
89 return rtn; 85 return rtn;
90 } 86 }
  87 +
  88 + @RequestMapping(value = "/zd_tcc", method = RequestMethod.GET)
  89 + public Map<String, Object> getZdAndTccInfo(Integer lineid, Integer xldir) {
  90 + Map<String, Object> rtn = new HashMap<>();
  91 + try {
  92 + List<Map<String, Object>> list = ttInfoDetailService.findZdAndTcc(lineid, xldir);
  93 + rtn.put("status", ResponseCode.SUCCESS);
  94 + rtn.put("data", list);
  95 + } catch (Exception exp) {
  96 + rtn.put("status", ResponseCode.ERROR);
  97 + rtn.put("msg", exp.getMessage());
  98 + }
  99 + return rtn;
  100 + }
91 101
92 /** 102 /**
93 * 时刻表明细批量插入 103 * 时刻表明细批量插入
src/main/java/com/bsth/data/gpsdata/arrival/handlers/InOutStationSignalHandle.java
@@ -253,20 +253,22 @@ public class InOutStationSignalHandle extends SignalHandle{ @@ -253,20 +253,22 @@ public class InOutStationSignalHandle extends SignalHandle{
253 //已完成班次数 253 //已完成班次数
254 int doneSum = dayOfSchedule.doneSum(sch.getClZbh()); 254 int doneSum = dayOfSchedule.doneSum(sch.getClZbh());
255 ScheduleRealInfo next = dayOfSchedule.next(sch); 255 ScheduleRealInfo next = dayOfSchedule.next(sch);
256 - //通知客户端  
257 - sendUtils.sendZdsj(sch, next, doneSum);  
258 //持久化 256 //持久化
259 dayOfSchedule.save(sch); 257 dayOfSchedule.save(sch);
260 258
261 - //准备执行下一个班次  
262 - if (next != null) { 259 + if(next != null){
263 next.setQdzArrDatesj(sch.getZdsjActual()); 260 next.setQdzArrDatesj(sch.getZdsjActual());
264 dayOfSchedule.addExecPlan(next); 261 dayOfSchedule.addExecPlan(next);
265 //进站既进场 262 //进站既进场
266 inStationAndInPark(sch, next); 263 inStationAndInPark(sch, next);
  264 + }
  265 + //通知客户端
  266 + sendUtils.sendZdsj(sch, next, doneSum);
  267 +
  268 + //准备执行下一个班次
  269 + if (next != null) {
267 //将gps转换为下一个班次走向的站内信号 270 //将gps转换为下一个班次走向的站内信号
268 transformUpdown(gps, next); 271 transformUpdown(gps, next);
269 -  
270 //下发调度指令 272 //下发调度指令
271 directiveService.send60Dispatch(next, doneSum, "到站@系统"); 273 directiveService.send60Dispatch(next, doneSum, "到站@系统");
272 274
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
@@ -11,7 +11,10 @@ import com.bsth.data.directive.DirectivesPstThread; @@ -11,7 +11,10 @@ import com.bsth.data.directive.DirectivesPstThread;
11 import com.bsth.data.gpsdata.GpsRealData; 11 import com.bsth.data.gpsdata.GpsRealData;
12 import com.bsth.data.gpsdata.recovery.GpsDataRecovery; 12 import com.bsth.data.gpsdata.recovery.GpsDataRecovery;
13 import com.bsth.data.schedule.late_adjust.ScheduleLateThread; 13 import com.bsth.data.schedule.late_adjust.ScheduleLateThread;
14 -import com.bsth.data.schedule.thread.*; 14 +import com.bsth.data.schedule.thread.CalcOilThread;
  15 +import com.bsth.data.schedule.thread.SchedulePstThread;
  16 +import com.bsth.data.schedule.thread.ScheduleRefreshThread;
  17 +import com.bsth.data.schedule.thread.SubmitToTrafficManage;
15 import com.bsth.entity.realcontrol.LineConfig; 18 import com.bsth.entity.realcontrol.LineConfig;
16 import com.bsth.entity.realcontrol.ScheduleRealInfo; 19 import com.bsth.entity.realcontrol.ScheduleRealInfo;
17 import com.bsth.entity.schedule.SchedulePlanInfo; 20 import com.bsth.entity.schedule.SchedulePlanInfo;
@@ -146,7 +149,7 @@ public class DayOfSchedule implements CommandLineRunner { @@ -146,7 +149,7 @@ public class DayOfSchedule implements CommandLineRunner {
146 //入库 149 //入库
147 // Application.mainServices.scheduleWithFixedDelay(schedulePstThread, 60, 30, TimeUnit.SECONDS); 150 // Application.mainServices.scheduleWithFixedDelay(schedulePstThread, 60, 30, TimeUnit.SECONDS);
148 //班次误点扫描 151 //班次误点扫描
149 -// Application.mainServices.scheduleWithFixedDelay(scheduleLateThread, 60, 60, TimeUnit.SECONDS); 152 +// Application.mainServices.scheduleWithFixedDelay(scheduleLateThread, 60, 30, TimeUnit.SECONDS);
150 153
151 //每天凌晨2点20提交数据到运管处 154 //每天凌晨2点20提交数据到运管处
152 long diff = (DateUtils.getTimestamp() + 1000 * 60 * 140) - System.currentTimeMillis(); 155 long diff = (DateUtils.getTimestamp() + 1000 * 60 * 140) - System.currentTimeMillis();
src/main/java/com/bsth/data/schedule/late_adjust/LateAdjustHandle.java
1 1
2 package com.bsth.data.schedule.late_adjust; 2 package com.bsth.data.schedule.late_adjust;
3 3
  4 +import com.bsth.data.BasicData;
4 import com.bsth.data.LineConfigData; 5 import com.bsth.data.LineConfigData;
5 import com.bsth.data.gpsdata.GpsEntity; 6 import com.bsth.data.gpsdata.GpsEntity;
6 import com.bsth.entity.realcontrol.LineConfig; 7 import com.bsth.entity.realcontrol.LineConfig;
7 import com.bsth.entity.realcontrol.ScheduleRealInfo; 8 import com.bsth.entity.realcontrol.ScheduleRealInfo;
  9 +import com.bsth.util.Arith;
8 import com.bsth.websocket.handler.SendUtils; 10 import com.bsth.websocket.handler.SendUtils;
9 import org.slf4j.Logger; 11 import org.slf4j.Logger;
10 import org.slf4j.LoggerFactory; 12 import org.slf4j.LoggerFactory;
@@ -47,6 +49,9 @@ public class LateAdjustHandle implements ApplicationContextAware{ @@ -47,6 +49,9 @@ public class LateAdjustHandle implements ApplicationContextAware{
47 */ 49 */
48 public static void putLate(ScheduleRealInfo sch){ 50 public static void putLate(ScheduleRealInfo sch){
49 try { 51 try {
  52 + //进出场班次不需要
  53 + if(sch.getBcType().equals("in") || sch.getBcType().equals("out"))
  54 + return;
50 //线路配置 55 //线路配置
51 LineConfig config = lineConfigData.get(sch.getXlBm()); 56 LineConfig config = lineConfigData.get(sch.getXlBm());
52 if(sch.getLateMinute() == 0){ 57 if(sch.getLateMinute() == 0){
@@ -115,18 +120,22 @@ public class LateAdjustHandle implements ApplicationContextAware{ @@ -115,18 +120,22 @@ public class LateAdjustHandle implements ApplicationContextAware{
115 if(sch == null) 120 if(sch == null)
116 return; 121 return;
117 122
118 - //进的是班次起点  
119 - if(gps.getStopNo().equals(sch.getQdzCode()) 123 + //进的是班次起点(名称一样即可)
  124 + gps.setStationName(BasicData.stationCode2NameMap.get(gps.getLineId() + "_" + gps.getUpDown() + "_" + gps.getStopNo()));
  125 + if(gps.getStationName().equals(sch.getQdzName())
120 && sch.getLateMinute() > 0){ 126 && sch.getLateMinute() > 0){
121 //自动调整待发 到达时间 + 停靠时间 127 //自动调整待发 到达时间 + 停靠时间
122 - long dt = gps.getTimestamp() + (Long.parseLong(String.valueOf(sch.getLateMinute() * 60 * 1000))); 128 + long dt = Arith.addLong(gps.getTimestamp(), (sch.getLateMinute() * 60 * 1000));
123 sch.setDfsjAll(dt); 129 sch.setDfsjAll(dt);
124 sch.setDfAuto(true); 130 sch.setDfAuto(true);
  131 + //取消应发未到标记
  132 + sch.setLate2(false);
125 133
126 lateSchMap.remove(sch.getClZbh()); 134 lateSchMap.remove(sch.getClZbh());
127 logger.info("【应发未到】车辆到站 " + sch.getClZbh() + " -" + sch.getDfsj() + " -到站时间:" + gps.getTimestamp() + " -停靠时间:" + sch.getLateMinute() + " -自动设置的待发时间:" + dt); 135 logger.info("【应发未到】车辆到站 " + sch.getClZbh() + " -" + sch.getDfsj() + " -到站时间:" + gps.getTimestamp() + " -停靠时间:" + sch.getLateMinute() + " -自动设置的待发时间:" + dt);
128 } 136 }
129 }catch (Exception e){ 137 }catch (Exception e){
  138 + e.printStackTrace();
130 logger.error("", e); 139 logger.error("", e);
131 } 140 }
132 } 141 }
src/main/java/com/bsth/data/schedule/late_adjust/ScheduleLateThread.java
@@ -19,7 +19,7 @@ import java.util.List; @@ -19,7 +19,7 @@ import java.util.List;
19 * @ClassName: ScheduleLateThread 19 * @ClassName: ScheduleLateThread
20 * @Description: TODO(班次误点扫描线程) 20 * @Description: TODO(班次误点扫描线程)
21 * @author PanZhao 21 * @author PanZhao
22 - * @date 2016年8月31日 下午3:09:02 22 + * @date 2016年8月31日 下午3:09:02
23 * 23 *
24 */ 24 */
25 @Component 25 @Component
@@ -44,11 +44,14 @@ public class ScheduleLateThread extends Thread{ @@ -44,11 +44,14 @@ public class ScheduleLateThread extends Thread{
44 ScheduleRealInfo sch; 44 ScheduleRealInfo sch;
45 for(int i = 0; i < size; i ++){ 45 for(int i = 0; i < size; i ++){
46 sch = all.get(i); 46 sch = all.get(i);
47 - if(sch.getDfsjT() > t || sch.isLate()) 47 + if(sch.getDfsjT() > t)
48 break; 48 break;
49 49
  50 + if(sch.isLate())
  51 + continue;
  52 +
50 if(sch.getStatus() == 0 53 if(sch.getStatus() == 0
51 - && sch.getFcsjActual() == null){ 54 + && StringUtils.isEmpty(sch.getFcsjActual())){
52 55
53 //检查应发未到 当前班次无起点到达时间 56 //检查应发未到 当前班次无起点到达时间
54 if(StringUtils.isEmpty(sch.getQdzArrDateSJ())){ 57 if(StringUtils.isEmpty(sch.getQdzArrDateSJ())){
src/main/java/com/bsth/entity/schedule/SchedulePlanInfo.java
@@ -88,16 +88,18 @@ public class SchedulePlanInfo { @@ -88,16 +88,18 @@ public class SchedulePlanInfo {
88 @Column(nullable = false) 88 @Column(nullable = false)
89 private String xlDir; 89 private String xlDir;
90 /** 起点站id,根据班次类型,会关联 bsth_c_station,或 bsth_c_car_park,不做mapping */ 90 /** 起点站id,根据班次类型,会关联 bsth_c_station,或 bsth_c_car_park,不做mapping */
91 - @Column(nullable = false)  
92 - private Integer qdz; 91 + // 这个字段以后不用了
  92 +// @Column(nullable = false)
  93 +// private Integer qdz;
93 /** 起点站code */ 94 /** 起点站code */
94 private String qdzCode; 95 private String qdzCode;
95 /** 起点站名字 */ 96 /** 起点站名字 */
96 @Column(nullable = false) 97 @Column(nullable = false)
97 private String qdzName; 98 private String qdzName;
98 /** 终点站id,根据班次类型,会关联 bsth_c_station,或 bsth_c_car_park,不做mapping */ 99 /** 终点站id,根据班次类型,会关联 bsth_c_station,或 bsth_c_car_park,不做mapping */
99 - @Column(nullable = false)  
100 - private Integer zdz; 100 + // 这个字段以后不用了
  101 +// @Column(nullable = false)
  102 +// private Integer zdz;
101 /** 终点站code */ 103 /** 终点站code */
102 private String zdzCode; 104 private String zdzCode;
103 /** 终点站名字 */ 105 /** 终点站名字 */
@@ -238,28 +240,10 @@ public class SchedulePlanInfo { @@ -238,28 +240,10 @@ public class SchedulePlanInfo {
238 // 时刻明细数据 240 // 时刻明细数据
239 this.xlDir = ttInfoDetail.getXlDir(); // 线路上下行 241 this.xlDir = ttInfoDetail.getXlDir(); // 线路上下行
240 this.bcType = ttInfoDetail.getBcType(); // 班次类型 242 this.bcType = ttInfoDetail.getBcType(); // 班次类型
241 - if ("out".equals(this.bcType)) { // 出场班次  
242 - this.qdz = ttInfoDetail.getTcc().getId(); // 起点站-停车场id  
243 - this.qdzCode = ttInfoDetail.getTcc().getParkCode(); // 起点站-停车场code  
244 - this.qdzName = ttInfoDetail.getTcc().getParkName(); // 起点站-停车场name  
245 - this.zdz = ttInfoDetail.getZdz().getId(); // 终点站id  
246 - this.zdzCode = ttInfoDetail.getZdz().getStationCod(); // 终点站code  
247 - this.zdzName = ttInfoDetail.getZdz().getStationName(); // 终点站name  
248 - } else if ("in".equals(this.bcType)) { // 进场班次  
249 - this.qdz = ttInfoDetail.getQdz().getId(); // 起点站id  
250 - this.qdzCode = ttInfoDetail.getQdz().getStationCod(); // 起点站code  
251 - this.qdzName = ttInfoDetail.getQdz().getStationName(); // 起点站name  
252 - this.zdz = ttInfoDetail.getTcc().getId(); // 终点站-停车场id  
253 - this.zdzCode = ttInfoDetail.getTcc().getParkCode(); // 终点站-停车场code  
254 - this.zdzName = ttInfoDetail.getTcc().getParkName(); // 终点站-停车场name  
255 - } else { // 其他班次  
256 - this.qdz = ttInfoDetail.getQdz().getId(); // 起点站id  
257 - this.qdzCode = ttInfoDetail.getQdz().getStationCod(); // 起点站code  
258 - this.qdzName = ttInfoDetail.getQdz().getStationName(); // 起点站name  
259 - this.zdz = ttInfoDetail.getZdz().getId(); // 终点站id  
260 - this.zdzCode = ttInfoDetail.getZdz().getStationCod(); // 终点站code  
261 - this.zdzName = ttInfoDetail.getZdz().getStationName(); // 终点站name  
262 - } 243 + this.qdzCode = ttInfoDetail.getQdzCode(); // 起点站code
  244 + this.qdzName = ttInfoDetail.getQdzName(); // 起点站name
  245 + this.zdzCode = ttInfoDetail.getZdzCode(); // 终点站code
  246 + this.zdzName = ttInfoDetail.getZdzName(); // 终点站name
263 247
264 this.fcsj = ttInfoDetail.getFcsj(); // 发车时间 248 this.fcsj = ttInfoDetail.getFcsj(); // 发车时间
265 this.fcno = ttInfoDetail.getFcno(); // 发车顺序号 249 this.fcno = ttInfoDetail.getFcno(); // 发车顺序号
@@ -280,7 +264,7 @@ public class SchedulePlanInfo { @@ -280,7 +264,7 @@ public class SchedulePlanInfo {
280 if (pzType != null && !pzType.equals("BSY")) { 264 if (pzType != null && !pzType.equals("BSY")) {
281 if ("ZW".equals(pzType)) { // 只看早晚进出场 265 if ("ZW".equals(pzType)) { // 只看早晚进出场
282 if (isFirstBc) { // 第一个班次是出场 266 if (isFirstBc) { // 第一个班次是出场
283 - this.qdz = carConfigInfo.getTcc().getId(); // 起点站-停车场id 267 +// this.qdz = carConfigInfo.getTcc().getId(); // 起点站-停车场id
284 this.qdzCode = carConfigInfo.getTcc().getParkCode(); // 起点站-停车场code 268 this.qdzCode = carConfigInfo.getTcc().getParkCode(); // 起点站-停车场code
285 this.qdzName = carConfigInfo.getTcc().getParkName(); // 起点站-停车场name 269 this.qdzName = carConfigInfo.getTcc().getParkName(); // 起点站-停车场name
286 270
@@ -288,7 +272,7 @@ public class SchedulePlanInfo { @@ -288,7 +272,7 @@ public class SchedulePlanInfo {
288 this.bcsj = "0".equals(this.xlDir) ? carConfigInfo.getUpOutSj().intValue() : carConfigInfo.getDownOutSj().intValue(); 272 this.bcsj = "0".equals(this.xlDir) ? carConfigInfo.getUpOutSj().intValue() : carConfigInfo.getDownOutSj().intValue();
289 273
290 } else if (isLastBc) { // 最后一个班次是进场 274 } else if (isLastBc) { // 最后一个班次是进场
291 - this.zdz = carConfigInfo.getTcc().getId(); // 终点站-停车场id 275 +// this.zdz = carConfigInfo.getTcc().getId(); // 终点站-停车场id
292 this.zdzCode = carConfigInfo.getTcc().getParkCode(); // 终点站-停车场code 276 this.zdzCode = carConfigInfo.getTcc().getParkCode(); // 终点站-停车场code
293 this.zdzName = carConfigInfo.getTcc().getParkName(); // 终点站-停车场name 277 this.zdzName = carConfigInfo.getTcc().getParkName(); // 终点站-停车场name
294 278
@@ -298,7 +282,7 @@ public class SchedulePlanInfo { @@ -298,7 +282,7 @@ public class SchedulePlanInfo {
298 282
299 } else if ("FS".equals(pzType)) { // 所有进出场 283 } else if ("FS".equals(pzType)) { // 所有进出场
300 if ("out".equals(this.bcType)) { // 出场班次 284 if ("out".equals(this.bcType)) { // 出场班次
301 - this.qdz = carConfigInfo.getTcc().getId(); // 起点站-停车场id 285 +// this.qdz = carConfigInfo.getTcc().getId(); // 起点站-停车场id
302 this.qdzCode = carConfigInfo.getTcc().getParkCode(); // 起点站-停车场code 286 this.qdzCode = carConfigInfo.getTcc().getParkCode(); // 起点站-停车场code
303 this.qdzName = carConfigInfo.getTcc().getParkName(); // 起点站-停车场name 287 this.qdzName = carConfigInfo.getTcc().getParkName(); // 起点站-停车场name
304 288
@@ -306,7 +290,7 @@ public class SchedulePlanInfo { @@ -306,7 +290,7 @@ public class SchedulePlanInfo {
306 this.bcsj = "0".equals(this.xlDir) ? carConfigInfo.getUpOutSj().intValue() : carConfigInfo.getDownOutSj().intValue(); 290 this.bcsj = "0".equals(this.xlDir) ? carConfigInfo.getUpOutSj().intValue() : carConfigInfo.getDownOutSj().intValue();
307 291
308 } else if ("in".equals(this.bcType)) { 292 } else if ("in".equals(this.bcType)) {
309 - this.zdz = carConfigInfo.getTcc().getId(); // 终点站-停车场id 293 +// this.zdz = carConfigInfo.getTcc().getId(); // 终点站-停车场id
310 this.zdzCode = carConfigInfo.getTcc().getParkCode(); // 终点站-停车场code 294 this.zdzCode = carConfigInfo.getTcc().getParkCode(); // 终点站-停车场code
311 this.zdzName = carConfigInfo.getTcc().getParkName(); // 终点站-停车场name 295 this.zdzName = carConfigInfo.getTcc().getParkName(); // 终点站-停车场name
312 296
@@ -319,14 +303,6 @@ public class SchedulePlanInfo { @@ -319,14 +303,6 @@ public class SchedulePlanInfo {
319 } 303 }
320 304
321 305
322 - public Integer getS() {  
323 - return s;  
324 - }  
325 -  
326 - public void setS(Integer s) {  
327 - this.s = s;  
328 - }  
329 -  
330 public Long getId() { 306 public Long getId() {
331 return id; 307 return id;
332 } 308 }
@@ -343,6 +319,46 @@ public class SchedulePlanInfo { @@ -343,6 +319,46 @@ public class SchedulePlanInfo {
343 this.scheduleDate = scheduleDate; 319 this.scheduleDate = scheduleDate;
344 } 320 }
345 321
  322 + public String getGsName() {
  323 + return gsName;
  324 + }
  325 +
  326 + public void setGsName(String gsName) {
  327 + this.gsName = gsName;
  328 + }
  329 +
  330 + public String getGsBm() {
  331 + return gsBm;
  332 + }
  333 +
  334 + public void setGsBm(String gsBm) {
  335 + this.gsBm = gsBm;
  336 + }
  337 +
  338 + public String getFgsName() {
  339 + return fgsName;
  340 + }
  341 +
  342 + public void setFgsName(String fgsName) {
  343 + this.fgsName = fgsName;
  344 + }
  345 +
  346 + public String getFgsBm() {
  347 + return fgsBm;
  348 + }
  349 +
  350 + public void setFgsBm(String fgsBm) {
  351 + this.fgsBm = fgsBm;
  352 + }
  353 +
  354 + public Integer getCcno() {
  355 + return ccno;
  356 + }
  357 +
  358 + public void setCcno(Integer ccno) {
  359 + this.ccno = ccno;
  360 + }
  361 +
346 public Integer getXl() { 362 public Integer getXl() {
347 return xl; 363 return xl;
348 } 364 }
@@ -439,6 +455,14 @@ public class SchedulePlanInfo { @@ -439,6 +455,14 @@ public class SchedulePlanInfo {
439 this.jName = jName; 455 this.jName = jName;
440 } 456 }
441 457
  458 + public Integer getS() {
  459 + return s;
  460 + }
  461 +
  462 + public void setS(Integer s) {
  463 + this.s = s;
  464 + }
  465 +
442 public String getsGh() { 466 public String getsGh() {
443 return sGh; 467 return sGh;
444 } 468 }
@@ -463,12 +487,12 @@ public class SchedulePlanInfo { @@ -463,12 +487,12 @@ public class SchedulePlanInfo {
463 this.xlDir = xlDir; 487 this.xlDir = xlDir;
464 } 488 }
465 489
466 - public Integer getQdz() {  
467 - return qdz; 490 + public String getQdzCode() {
  491 + return qdzCode;
468 } 492 }
469 493
470 - public void setQdz(Integer qdz) {  
471 - this.qdz = qdz; 494 + public void setQdzCode(String qdzCode) {
  495 + this.qdzCode = qdzCode;
472 } 496 }
473 497
474 public String getQdzName() { 498 public String getQdzName() {
@@ -479,12 +503,12 @@ public class SchedulePlanInfo { @@ -479,12 +503,12 @@ public class SchedulePlanInfo {
479 this.qdzName = qdzName; 503 this.qdzName = qdzName;
480 } 504 }
481 505
482 - public Integer getZdz() {  
483 - return zdz; 506 + public String getZdzCode() {
  507 + return zdzCode;
484 } 508 }
485 509
486 - public void setZdz(Integer zdz) {  
487 - this.zdz = zdz; 510 + public void setZdzCode(String zdzCode) {
  511 + this.zdzCode = zdzCode;
488 } 512 }
489 513
490 public String getZdzName() { 514 public String getZdzName() {
@@ -543,6 +567,30 @@ public class SchedulePlanInfo { @@ -543,6 +567,30 @@ public class SchedulePlanInfo {
543 this.bcType = bcType; 567 this.bcType = bcType;
544 } 568 }
545 569
  570 + public Long getTtInfo() {
  571 + return ttInfo;
  572 + }
  573 +
  574 + public void setTtInfo(Long ttInfo) {
  575 + this.ttInfo = ttInfo;
  576 + }
  577 +
  578 + public String getTtInfoName() {
  579 + return ttInfoName;
  580 + }
  581 +
  582 + public void setTtInfoName(String ttInfoName) {
  583 + this.ttInfoName = ttInfoName;
  584 + }
  585 +
  586 + public String getRemark() {
  587 + return remark;
  588 + }
  589 +
  590 + public void setRemark(String remark) {
  591 + this.remark = remark;
  592 + }
  593 +
546 public SysUser getCreateBy() { 594 public SysUser getCreateBy() {
547 return createBy; 595 return createBy;
548 } 596 }
@@ -575,62 +623,6 @@ public class SchedulePlanInfo { @@ -575,62 +623,6 @@ public class SchedulePlanInfo {
575 this.updateDate = updateDate; 623 this.updateDate = updateDate;
576 } 624 }
577 625
578 - public String getQdzCode() {  
579 - return qdzCode;  
580 - }  
581 -  
582 - public void setQdzCode(String qdzCode) {  
583 - this.qdzCode = qdzCode;  
584 - }  
585 -  
586 - public String getZdzCode() {  
587 - return zdzCode;  
588 - }  
589 -  
590 - public void setZdzCode(String zdzCode) {  
591 - this.zdzCode = zdzCode;  
592 - }  
593 -  
594 - public String getGsName() {  
595 - return gsName;  
596 - }  
597 -  
598 - public void setGsName(String gsName) {  
599 - this.gsName = gsName;  
600 - }  
601 -  
602 - public String getGsBm() {  
603 - return gsBm;  
604 - }  
605 -  
606 - public void setGsBm(String gsBm) {  
607 - this.gsBm = gsBm;  
608 - }  
609 -  
610 - public String getFgsName() {  
611 - return fgsName;  
612 - }  
613 -  
614 - public void setFgsName(String fgsName) {  
615 - this.fgsName = fgsName;  
616 - }  
617 -  
618 - public String getFgsBm() {  
619 - return fgsBm;  
620 - }  
621 -  
622 - public void setFgsBm(String fgsBm) {  
623 - this.fgsBm = fgsBm;  
624 - }  
625 -  
626 - public Integer getCcno() {  
627 - return ccno;  
628 - }  
629 -  
630 - public void setCcno(Integer ccno) {  
631 - this.ccno = ccno;  
632 - }  
633 -  
634 public SchedulePlan getSchedulePlan() { 626 public SchedulePlan getSchedulePlan() {
635 return schedulePlan; 627 return schedulePlan;
636 } 628 }
@@ -638,28 +630,4 @@ public class SchedulePlanInfo { @@ -638,28 +630,4 @@ public class SchedulePlanInfo {
638 public void setSchedulePlan(SchedulePlan schedulePlan) { 630 public void setSchedulePlan(SchedulePlan schedulePlan) {
639 this.schedulePlan = schedulePlan; 631 this.schedulePlan = schedulePlan;
640 } 632 }
641 -  
642 - public Long getTtInfo() {  
643 - return ttInfo;  
644 - }  
645 -  
646 - public void setTtInfo(Long ttInfo) {  
647 - this.ttInfo = ttInfo;  
648 - }  
649 -  
650 - public String getTtInfoName() {  
651 - return ttInfoName;  
652 - }  
653 -  
654 - public void setTtInfoName(String ttInfoName) {  
655 - this.ttInfoName = ttInfoName;  
656 - }  
657 -  
658 - public String getRemark() {  
659 - return remark;  
660 - }  
661 -  
662 - public void setRemark(String remark) {  
663 - this.remark = remark;  
664 - }  
665 } 633 }
src/main/java/com/bsth/entity/schedule/TTInfoDetail.java
@@ -47,16 +47,28 @@ public class TTInfoDetail extends BEntity { @@ -47,16 +47,28 @@ public class TTInfoDetail extends BEntity {
47 /** 线路方向(TODO:上下行,上行,下行,这个以后用枚举还是字典再议,现在先用文字) */ 47 /** 线路方向(TODO:上下行,上行,下行,这个以后用枚举还是字典再议,现在先用文字) */
48 @Column(nullable = false) 48 @Column(nullable = false)
49 private String xlDir; 49 private String xlDir;
50 - /** 起点站关联 */ 50 +
  51 + /** 起点站关联(以后不用了,暂时留着) */
51 @ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY) 52 @ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
52 private Station qdz; 53 private Station qdz;
53 - /** 终点站关联 */ 54 + /** 终点站关联(以后不用了,暂时留着) */
54 @ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY) 55 @ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
55 private Station zdz; 56 private Station zdz;
56 - /** 停车场关联(出场,进场班次会关联停车场) */ 57 + /** 停车场关联(出场,进场班次会关联停车场)(以后不用了,暂时留着) */
57 @ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY) 58 @ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
58 private CarPark tcc; 59 private CarPark tcc;
59 60
  61 + // 站点包括普通站点和停车场(站点编码不同,使用站点编码区分)
  62 + // 以后不需要再区分是站点还是停车场了
  63 + /** 起站点代码(bsth_c_station,bsth_c_car_park 里的编码) */
  64 + private String qdzCode;
  65 + /** 起站点名字(bsth_c_stationroute,bsth_c_car_park里的名字) */
  66 + private String qdzName;
  67 + /** 终点站代码(bsth_c_station,bsth_c_car_park 里的编码) */
  68 + private String zdzCode;
  69 + /** 终点站名字(bsth_c_stationroute,bsth_c_car_park里的名字) */
  70 + private String zdzName;
  71 +
60 /** 发车时间(格式 HH:mm) */ 72 /** 发车时间(格式 HH:mm) */
61 @Column(nullable = false, length = 5) 73 @Column(nullable = false, length = 5)
62 private String fcsj; 74 private String fcsj;
@@ -236,4 +248,36 @@ public class TTInfoDetail extends BEntity { @@ -236,4 +248,36 @@ public class TTInfoDetail extends BEntity {
236 public void setIsFB(Boolean isFB) { 248 public void setIsFB(Boolean isFB) {
237 this.isFB = isFB; 249 this.isFB = isFB;
238 } 250 }
  251 +
  252 + public String getQdzCode() {
  253 + return qdzCode;
  254 + }
  255 +
  256 + public void setQdzCode(String qdzCode) {
  257 + this.qdzCode = qdzCode;
  258 + }
  259 +
  260 + public String getQdzName() {
  261 + return qdzName;
  262 + }
  263 +
  264 + public void setQdzName(String qdzName) {
  265 + this.qdzName = qdzName;
  266 + }
  267 +
  268 + public String getZdzCode() {
  269 + return zdzCode;
  270 + }
  271 +
  272 + public void setZdzCode(String zdzCode) {
  273 + this.zdzCode = zdzCode;
  274 + }
  275 +
  276 + public String getZdzName() {
  277 + return zdzName;
  278 + }
  279 +
  280 + public void setZdzName(String zdzName) {
  281 + this.zdzName = zdzName;
  282 + }
239 } 283 }
src/main/java/com/bsth/entity/schedule/temp/SchedulePlanRuleResult.java
@@ -10,6 +10,7 @@ import java.util.Date; @@ -10,6 +10,7 @@ import java.util.Date;
10 */ 10 */
11 @Entity 11 @Entity
12 @Table(name = "bsth_c_s_sp_rule_rst") 12 @Table(name = "bsth_c_s_sp_rule_rst")
  13 +// TODO:此表以后考虑表分区
13 public class SchedulePlanRuleResult { 14 public class SchedulePlanRuleResult {
14 /** 主键Id */ 15 /** 主键Id */
15 @Id 16 @Id
@@ -17,7 +18,8 @@ public class SchedulePlanRuleResult { @@ -17,7 +18,8 @@ public class SchedulePlanRuleResult {
17 private Long id; 18 private Long id;
18 19
19 /** 线路id */ 20 /** 线路id */
20 - private String xlId; 21 + // 这里要建一个索引 tt1 normal btree
  22 + private Integer xlId;
21 /** 线路名字 */ 23 /** 线路名字 */
22 private String xlName; 24 private String xlName;
23 25
@@ -49,6 +51,7 @@ public class SchedulePlanRuleResult { @@ -49,6 +51,7 @@ public class SchedulePlanRuleResult {
49 private String ttinfoName; 51 private String ttinfoName;
50 52
51 /** 排班日期 */ 53 /** 排班日期 */
  54 + // 这里要建一个索引 tt2 normal btree
52 private Date scheduleDate; 55 private Date scheduleDate;
53 56
54 /** 操作人员id */ 57 /** 操作人员id */
@@ -56,6 +59,7 @@ public class SchedulePlanRuleResult { @@ -56,6 +59,7 @@ public class SchedulePlanRuleResult {
56 /** 操作人员姓名 */ 59 /** 操作人员姓名 */
57 private String sysuserName; 60 private String sysuserName;
58 /** 操作时间 */ 61 /** 操作时间 */
  62 + // 这里要建一个索引 tt3 normal btree
59 private Date createDate; 63 private Date createDate;
60 64
61 public SchedulePlanRuleResult() { 65 public SchedulePlanRuleResult() {
@@ -76,6 +80,22 @@ public class SchedulePlanRuleResult { @@ -76,6 +80,22 @@ public class SchedulePlanRuleResult {
76 this.id = id; 80 this.id = id;
77 } 81 }
78 82
  83 + public Integer getXlId() {
  84 + return xlId;
  85 + }
  86 +
  87 + public void setXlId(Integer xlId) {
  88 + this.xlId = xlId;
  89 + }
  90 +
  91 + public String getXlName() {
  92 + return xlName;
  93 + }
  94 +
  95 + public void setXlName(String xlName) {
  96 + this.xlName = xlName;
  97 + }
  98 +
79 public String getRuleId() { 99 public String getRuleId() {
80 return ruleId; 100 return ruleId;
81 } 101 }
@@ -148,6 +168,22 @@ public class SchedulePlanRuleResult { @@ -148,6 +168,22 @@ public class SchedulePlanRuleResult {
148 this.ecindex = ecindex; 168 this.ecindex = ecindex;
149 } 169 }
150 170
  171 + public String getTtinfoId() {
  172 + return ttinfoId;
  173 + }
  174 +
  175 + public void setTtinfoId(String ttinfoId) {
  176 + this.ttinfoId = ttinfoId;
  177 + }
  178 +
  179 + public String getTtinfoName() {
  180 + return ttinfoName;
  181 + }
  182 +
  183 + public void setTtinfoName(String ttinfoName) {
  184 + this.ttinfoName = ttinfoName;
  185 + }
  186 +
151 public Date getScheduleDate() { 187 public Date getScheduleDate() {
152 return scheduleDate; 188 return scheduleDate;
153 } 189 }
@@ -179,36 +215,4 @@ public class SchedulePlanRuleResult { @@ -179,36 +215,4 @@ public class SchedulePlanRuleResult {
179 public void setCreateDate(Date createDate) { 215 public void setCreateDate(Date createDate) {
180 this.createDate = createDate; 216 this.createDate = createDate;
181 } 217 }
182 -  
183 - public String getXlId() {  
184 - return xlId;  
185 - }  
186 -  
187 - public void setXlId(String xlId) {  
188 - this.xlId = xlId;  
189 - }  
190 -  
191 - public String getXlName() {  
192 - return xlName;  
193 - }  
194 -  
195 - public void setXlName(String xlName) {  
196 - this.xlName = xlName;  
197 - }  
198 -  
199 - public String getTtinfoId() {  
200 - return ttinfoId;  
201 - }  
202 -  
203 - public void setTtinfoId(String ttinfoId) {  
204 - this.ttinfoId = ttinfoId;  
205 - }  
206 -  
207 - public String getTtinfoName() {  
208 - return ttinfoName;  
209 - }  
210 -  
211 - public void setTtinfoName(String ttinfoName) {  
212 - this.ttinfoName = ttinfoName;  
213 - }  
214 } 218 }
src/main/java/com/bsth/repository/schedule/SchedulePlanRuleResultRepository.java
@@ -2,24 +2,18 @@ package com.bsth.repository.schedule; @@ -2,24 +2,18 @@ package com.bsth.repository.schedule;
2 2
3 import com.bsth.entity.schedule.temp.SchedulePlanRuleResult; 3 import com.bsth.entity.schedule.temp.SchedulePlanRuleResult;
4 import com.bsth.repository.BaseRepository; 4 import com.bsth.repository.BaseRepository;
5 -import org.springframework.data.jpa.repository.Modifying;  
6 -import org.springframework.data.jpa.repository.Query;  
7 import org.springframework.stereotype.Repository; 5 import org.springframework.stereotype.Repository;
8 6
9 -import java.util.Date;  
10 -import java.util.List;  
11 -  
12 /** 7 /**
13 * Created by xu on 17/3/29. 8 * Created by xu on 17/3/29.
14 */ 9 */
15 @Repository 10 @Repository
16 public interface SchedulePlanRuleResultRepository extends BaseRepository<SchedulePlanRuleResult, Long> { 11 public interface SchedulePlanRuleResultRepository extends BaseRepository<SchedulePlanRuleResult, Long> {
17 12
18 - @Query("select t from SchedulePlanRuleResult t " +  
19 - "where not exists (select 1 from SchedulePlanRuleResult " +  
20 - "where createDate > t.createDate and scheduleDate < ?2 ) " +  
21 - "and t.xlId = ?1 and t.scheduleDate < ?2")  
22 - List<SchedulePlanRuleResult> findLastByXl(String xlid, Date from); 13 +// @Query("select t from SchedulePlanRuleResult t " +
  14 +// "where not exists (select 1 from SchedulePlanRuleResult " +
  15 +// "where createDate > t.createDate and scheduleDate < ?2 ) " +
  16 +// "and t.xlId = ?1 and t.scheduleDate < ?2")
23 17
24 // @Modifying 18 // @Modifying
25 // @Query("delete from SchedulePlanRuleResult t " + 19 // @Query("delete from SchedulePlanRuleResult t " +
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
@@ -1050,6 +1050,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1050,6 +1050,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1050 ScheduleRealInfo next = dayOfSchedule.next(sch); 1050 ScheduleRealInfo next = dayOfSchedule.next(sch);
1051 if (null != next) { 1051 if (null != next) {
1052 next.setQdzArrDateSJ(zdsjActual); 1052 next.setQdzArrDateSJ(zdsjActual);
  1053 + next.setLate2(false);
1053 ts.add(next); 1054 ts.add(next);
1054 } 1055 }
1055 1056
src/main/java/com/bsth/service/schedule/TTInfoDetailService.java
@@ -28,12 +28,10 @@ public interface TTInfoDetailService extends BService&lt;TTInfoDetail, Long&gt; { @@ -28,12 +28,10 @@ public interface TTInfoDetailService extends BService&lt;TTInfoDetail, Long&gt; {
28 /** 是偶分班 */ 28 /** 是偶分班 */
29 private Boolean isfb; 29 private Boolean isfb;
30 30
31 - /** 起点站 */  
32 - private Integer qdz;  
33 - /** 终点站 */  
34 - private Integer zdz;  
35 - /** 停车场 */  
36 - private Integer tcc; 31 + /** 起点站code */
  32 + private String qdzCode;
  33 + /** 终点站code */
  34 + private String zdzCode;
37 35
38 public FcInfo() { 36 public FcInfo() {
39 } 37 }
@@ -44,9 +42,8 @@ public interface TTInfoDetailService extends BService&lt;TTInfoDetail, Long&gt; { @@ -44,9 +42,8 @@ public interface TTInfoDetailService extends BService&lt;TTInfoDetail, Long&gt; {
44 String fcsj, 42 String fcsj,
45 String xldir, 43 String xldir,
46 String isfb, 44 String isfb,
47 - String qdz,  
48 - String zdz,  
49 - String tcc) { 45 + String qdzCode,
  46 + String zdzCode) {
50 this.ttdid = StringUtils.isEmpty(ttdid_str) ? null : Long.valueOf(ttdid_str); 47 this.ttdid = StringUtils.isEmpty(ttdid_str) ? null : Long.valueOf(ttdid_str);
51 this.bc_type = bc_type; 48 this.bc_type = bc_type;
52 this.fcsj = fcsj; 49 this.fcsj = fcsj;
@@ -58,14 +55,11 @@ public interface TTInfoDetailService extends BService&lt;TTInfoDetail, Long&gt; { @@ -58,14 +55,11 @@ public interface TTInfoDetailService extends BService&lt;TTInfoDetail, Long&gt; {
58 else 55 else
59 this.isfb = false; 56 this.isfb = false;
60 57
61 - if (StringUtils.isNotEmpty(qdz) && !"null".equals(qdz)) {  
62 - this.qdz = Integer.valueOf(qdz); 58 + if (StringUtils.isNotEmpty(qdzCode) && !"null".equals(qdzCode)) {
  59 + this.qdzCode = qdzCode;
63 } 60 }
64 - if (StringUtils.isNotEmpty(zdz) && !"null".equals(zdz)) {  
65 - this.zdz = Integer.valueOf(zdz);  
66 - }  
67 - if (StringUtils.isNotEmpty(tcc) && !"null".equals(tcc)) {  
68 - this.tcc = Integer.valueOf(tcc); 61 + if (StringUtils.isNotEmpty(zdzCode) && !"null".equals(zdzCode)) {
  62 + this.zdzCode = zdzCode;
69 } 63 }
70 64
71 } 65 }
@@ -110,28 +104,20 @@ public interface TTInfoDetailService extends BService&lt;TTInfoDetail, Long&gt; { @@ -110,28 +104,20 @@ public interface TTInfoDetailService extends BService&lt;TTInfoDetail, Long&gt; {
110 this.isfb = isfb; 104 this.isfb = isfb;
111 } 105 }
112 106
113 - public Integer getQdz() {  
114 - return qdz;  
115 - }  
116 -  
117 - public void setQdz(Integer qdz) {  
118 - this.qdz = qdz; 107 + public String getQdzCode() {
  108 + return qdzCode;
119 } 109 }
120 110
121 - public Integer getZdz() {  
122 - return zdz; 111 + public void setQdzCode(String qdzCode) {
  112 + this.qdzCode = qdzCode;
123 } 113 }
124 114
125 - public void setZdz(Integer zdz) {  
126 - this.zdz = zdz; 115 + public String getZdzCode() {
  116 + return zdzCode;
127 } 117 }
128 118
129 - public Integer getTcc() {  
130 - return tcc;  
131 - }  
132 -  
133 - public void setTcc(Integer tcc) {  
134 - this.tcc = tcc; 119 + public void setZdzCode(String zdzCode) {
  120 + this.zdzCode = zdzCode;
135 } 121 }
136 } 122 }
137 123
@@ -202,4 +188,6 @@ public interface TTInfoDetailService extends BService&lt;TTInfoDetail, Long&gt; { @@ -202,4 +188,6 @@ public interface TTInfoDetailService extends BService&lt;TTInfoDetail, Long&gt; {
202 List<TTInfoDetail> findBcdetails(Integer xlId, Long ttinfoId, Long lpId); 188 List<TTInfoDetail> findBcdetails(Integer xlId, Long ttinfoId, Long lpId);
203 189
204 Map<String, Object> skbDetailMxSave(Map<String, Object> map); 190 Map<String, Object> skbDetailMxSave(Map<String, Object> map);
  191 +
  192 + List<Map<String, Object>> findZdAndTcc(int lineid, int xldir);
205 } 193 }
src/main/java/com/bsth/service/schedule/impl/SchedulePlanServiceImpl.java
@@ -8,6 +8,7 @@ import com.bsth.repository.LineRepository; @@ -8,6 +8,7 @@ import com.bsth.repository.LineRepository;
8 import com.bsth.repository.schedule.*; 8 import com.bsth.repository.schedule.*;
9 import com.bsth.service.schedule.SchedulePlanRuleResultService; 9 import com.bsth.service.schedule.SchedulePlanRuleResultService;
10 import com.bsth.service.schedule.SchedulePlanService; 10 import com.bsth.service.schedule.SchedulePlanService;
  11 +import com.bsth.service.schedule.rules.ScheduleRuleService;
11 import com.bsth.service.schedule.rules.plan.PlanCalcuParam_input; 12 import com.bsth.service.schedule.rules.plan.PlanCalcuParam_input;
12 import com.bsth.service.schedule.rules.plan.PlanResult; 13 import com.bsth.service.schedule.rules.plan.PlanResult;
13 import com.bsth.service.schedule.rules.shiftloop.ScheduleCalcuParam_input; 14 import com.bsth.service.schedule.rules.shiftloop.ScheduleCalcuParam_input;
@@ -55,7 +56,7 @@ public class SchedulePlanServiceImpl extends BServiceImpl&lt;SchedulePlan, Long&gt; im @@ -55,7 +56,7 @@ public class SchedulePlanServiceImpl extends BServiceImpl&lt;SchedulePlan, Long&gt; im
55 @Autowired 56 @Autowired
56 private SchedulePlanRuleResultService schedulePlanRuleResultService; 57 private SchedulePlanRuleResultService schedulePlanRuleResultService;
57 @Autowired 58 @Autowired
58 - private SchedulePlanRuleResultRepository schedulePlanRuleResultRepository; 59 + private ScheduleRuleService scheduleRuleService;
59 60
60 /** 日志记录器 */ 61 /** 日志记录器 */
61 private Logger logger = LoggerFactory.getLogger(SchedulePlanServiceImpl.class); 62 private Logger logger = LoggerFactory.getLogger(SchedulePlanServiceImpl.class);
@@ -89,7 +90,7 @@ public class SchedulePlanServiceImpl extends BServiceImpl&lt;SchedulePlan, Long&gt; im @@ -89,7 +90,7 @@ public class SchedulePlanServiceImpl extends BServiceImpl&lt;SchedulePlan, Long&gt; im
89 // 设置gloable对象,在drl中通过别名使用 90 // 设置gloable对象,在drl中通过别名使用
90 session.setGlobal("scheduleResult", scheduleResults_output); 91 session.setGlobal("scheduleResult", scheduleResults_output);
91 session.setGlobal("log", logger); // 设置日志 92 session.setGlobal("log", logger); // 设置日志
92 - session.setGlobal("schedulePlanRuleResultRepository", schedulePlanRuleResultRepository); 93 + session.setGlobal("scheduleRuleService", scheduleRuleService);
93 94
94 // 载入数据 95 // 载入数据
95 session.insert(scheduleCalcuParam_input); 96 session.insert(scheduleCalcuParam_input);
src/main/java/com/bsth/service/schedule/impl/TTInfoDetailServiceImpl.java
@@ -37,6 +37,7 @@ import org.slf4j.LoggerFactory; @@ -37,6 +37,7 @@ import org.slf4j.LoggerFactory;
37 import org.springframework.beans.factory.annotation.Autowired; 37 import org.springframework.beans.factory.annotation.Autowired;
38 import org.springframework.beans.factory.annotation.Qualifier; 38 import org.springframework.beans.factory.annotation.Qualifier;
39 import org.springframework.boot.context.properties.EnableConfigurationProperties; 39 import org.springframework.boot.context.properties.EnableConfigurationProperties;
  40 +import org.springframework.jdbc.core.JdbcTemplate;
40 import org.springframework.stereotype.Service; 41 import org.springframework.stereotype.Service;
41 import org.springframework.transaction.annotation.Transactional; 42 import org.springframework.transaction.annotation.Transactional;
42 import org.springframework.util.CollectionUtils; 43 import org.springframework.util.CollectionUtils;
@@ -85,6 +86,28 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -85,6 +86,28 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
85 @Qualifier(value = "dataToolsServiceImpl") 86 @Qualifier(value = "dataToolsServiceImpl")
86 private DataToolsService dataToolsService; 87 private DataToolsService dataToolsService;
87 88
  89 + @Autowired
  90 + private JdbcTemplate jdbcTemplate;
  91 +
  92 + /**
  93 + * 查找站点和停车场集合
  94 + * @param lineid 线路id
  95 + * @param xldir 线路上下行
  96 + * @return
  97 + */
  98 + public List<Map<String, Object>> findZdAndTcc(int lineid, int xldir) {
  99 + String sql = "select * from " +
  100 + "(" +
  101 + "select station_code as zcode, station_name as zname from bsth_c_stationroute " +
  102 + "where destroy = 0 and line = ? and directions = ? " +
  103 + "union all " +
  104 + "select park_code as zcode, park_name as zname from bsth_c_car_park " +
  105 + "where destroy = 0 " +
  106 + ") a ";
  107 +
  108 + return jdbcTemplate.queryForList(sql, lineid, xldir);
  109 + }
  110 +
88 @Override 111 @Override
89 public TTInfoDetail findById(Long aLong) { 112 public TTInfoDetail findById(Long aLong) {
90 return ttInfoDetailRepository.findOneExtend(aLong); 113 return ttInfoDetailRepository.findOneExtend(aLong);
@@ -294,7 +317,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -294,7 +317,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
294 for (int r = 1; r < sheet.getRows(); r++) { 317 for (int r = 1; r < sheet.getRows(); r++) {
295 List<FcInfo> fcInfos = new ArrayList<>(); 318 List<FcInfo> fcInfos = new ArrayList<>();
296 // 每行第一列都是路牌 319 // 每行第一列都是路牌
297 - fcInfos.add(new FcInfo(null, null, sheet.getCell(0, r).getContents(), null, null, null, null, null)); // 用fcsj放置路牌显示 320 + fcInfos.add(new FcInfo(null, null, sheet.getCell(0, r).getContents(), null, null, null, null)); // 用fcsj放置路牌显示
298 321
299 int bc_ks = 0; // 空驶班次 322 int bc_ks = 0; // 空驶班次
300 int bc_yy = 0; // 营运班次 323 int bc_yy = 0; // 营运班次
@@ -314,11 +337,10 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -314,11 +337,10 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
314 String xldir = content == null ? "" : content[5]; // 线路上下行 337 String xldir = content == null ? "" : content[5]; // 线路上下行
315 String isfb = content == null ? "" : content[6]; // 是否分班 338 String isfb = content == null ? "" : content[6]; // 是否分班
316 339
317 - String qdz = content == null ? "" : content[7]; // 起点站  
318 - String zdz = content == null ? "" : content[8]; // 终点站  
319 - String tcc = content == null ? "" : content[9]; // 停车场 340 + String qdzCode = content == null ? "" : content[7]; // 起点站编码
  341 + String zdzCode = content == null ? "" : content[8]; // 终点站编码
320 342
321 - FcInfo fcInfo = new FcInfo(ttdid_str, bctype, fcsj, xldir, isfb, qdz, zdz, tcc); 343 + FcInfo fcInfo = new FcInfo(ttdid_str, bctype, fcsj, xldir, isfb, qdzCode, zdzCode);
322 344
323 if (StringUtils.isNotEmpty(fzdname)) 345 if (StringUtils.isNotEmpty(fzdname))
324 headarrays[c] = fzdname; 346 headarrays[c] = fzdname;
@@ -344,6 +366,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -344,6 +366,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
344 } 366 }
345 367
346 } catch (Exception exp) { 368 } catch (Exception exp) {
  369 + exp.printStackTrace();
347 LOGGER.info("第{}行,第{}列数据有问题,数据={},异常message={}", r, c, content_str, exp.getCause()); 370 LOGGER.info("第{}行,第{}列数据有问题,数据={},异常message={}", r, c, content_str, exp.getCause());
348 break; 371 break;
349 } 372 }
@@ -351,10 +374,10 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -351,10 +374,10 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
351 } 374 }
352 375
353 // 添加一列 空驶班次/空驶里程,fcsj放置数据 376 // 添加一列 空驶班次/空驶里程,fcsj放置数据
354 - fcInfos.add(new FcInfo(null, null, String.format("%d/%.2f", bc_ks, lc_ks), null, null, null, null, null)); 377 + fcInfos.add(new FcInfo(null, null, String.format("%d/%.2f", bc_ks, lc_ks), null, null, null, null));
355 378
356 // 添加一列 营运班次/营运里程,fcsj放置数据 379 // 添加一列 营运班次/营运里程,fcsj放置数据
357 - fcInfos.add(new FcInfo(null, null, String.format("%d/%.2f", bc_yy, lc_yy), null, null, null, null, null)); 380 + fcInfos.add(new FcInfo(null, null, String.format("%d/%.2f", bc_yy, lc_yy), null, null, null, null));
358 381
359 editInfo.getContents().add(fcInfos); 382 editInfo.getContents().add(fcInfos);
360 } 383 }
@@ -421,6 +444,8 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -421,6 +444,8 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
421 throw new Exception(String.format("第1行,第%d列数据%s在%s站点路由中不是起点站", i + 1, cell_con.trim(), linename)); 444 throw new Exception(String.format("第1行,第%d列数据%s在%s站点路由中不是起点站", i + 1, cell_con.trim(), linename));
422 } else if (stationRouteList.size() > 1) { 445 } else if (stationRouteList.size() > 1) {
423 throw new Exception(String.format("第1行,第%d列数据%s在%s站点路由中上下行都是起点站", i + 1, cell_con.trim(), linename)); 446 throw new Exception(String.format("第1行,第%d列数据%s在%s站点路由中上下行都是起点站", i + 1, cell_con.trim(), linename));
  447 + } else if (StringUtils.isEmpty(stationRouteList.get(0).getStationCode())) {
  448 + throw new Exception(String.format("第1行,第%d列数据%s在%s站点路由中没有站点编码", i + 1, cell_con.trim(), linename));
424 } 449 }
425 } 450 }
426 451
src/main/java/com/bsth/service/schedule/rules/ScheduleRuleService.java 0 → 100644
  1 +package com.bsth.service.schedule.rules;
  2 +
  3 +import com.bsth.entity.schedule.temp.SchedulePlanRuleResult;
  4 +
  5 +import java.util.Date;
  6 +import java.util.List;
  7 +
  8 +/**
  9 + * 排班计划使用的service。
  10 + */
  11 +public interface ScheduleRuleService {
  12 +
  13 + // TODO:之后所有排班使用的方法汇总到这里
  14 +
  15 + /**
  16 + * 查找最近的历史排班记录
  17 + * @param xlid 线路id
  18 + * @param from 开始时间
  19 + * @return
  20 + */
  21 + List<SchedulePlanRuleResult> findLastByXl(String xlid, Date from);
  22 +}
src/main/java/com/bsth/service/schedule/rules/ScheduleRuleServiceImpl.java 0 → 100644
  1 +package com.bsth.service.schedule.rules;
  2 +
  3 +import com.bsth.entity.schedule.temp.SchedulePlanRuleResult;
  4 +import org.springframework.beans.factory.annotation.Autowired;
  5 +import org.springframework.jdbc.core.JdbcTemplate;
  6 +import org.springframework.jdbc.core.RowMapper;
  7 +import org.springframework.stereotype.Service;
  8 +
  9 +import java.sql.ResultSet;
  10 +import java.sql.SQLException;
  11 +import java.util.Date;
  12 +import java.util.List;
  13 +
  14 +/**
  15 + * Created by xu on 17/4/19.
  16 + */
  17 +@Service
  18 +public class ScheduleRuleServiceImpl implements ScheduleRuleService {
  19 +
  20 + @Autowired
  21 + private JdbcTemplate jdbcTemplate;
  22 +
  23 + @Override
  24 + public List<SchedulePlanRuleResult> findLastByXl(String xlid, Date from) {
  25 + String sql = "select * from bsth_c_s_sp_rule_rst a " +
  26 + "where exists (select 1 from " +
  27 + "(select t.rule_id as rid, max(t.schedule_date) as sd from bsth_c_s_sp_rule_rst t " +
  28 + "where t.xl_id = ? and t.schedule_date < ? " +
  29 + "group by t.rule_id) a2 " +
  30 + "where a.rule_id = rid and a.schedule_date = sd) ";
  31 +
  32 + return jdbcTemplate.query(sql, new Object[]{xlid, from}, new RowMapper<SchedulePlanRuleResult>() {
  33 + @Override
  34 + public SchedulePlanRuleResult mapRow(ResultSet rs, int i) throws SQLException {
  35 + SchedulePlanRuleResult obj = new SchedulePlanRuleResult();
  36 + obj.setRuleId(rs.getString("rule_id"));
  37 + obj.setScheduleDate(rs.getDate("schedule_date"));
  38 + obj.setGidindex(rs.getString("gidindex"));
  39 + obj.setEcindex(rs.getString("ecindex"));
  40 +
  41 + // 其他字段没用
  42 + return obj;
  43 + }
  44 + });
  45 + }
  46 +}
src/main/java/com/bsth/service/schedule/rules/ttinfo2/ErrorBcCountFunction.java
1 package com.bsth.service.schedule.rules.ttinfo2; 1 package com.bsth.service.schedule.rules.ttinfo2;
2 2
3 import com.bsth.entity.schedule.TTInfoDetail; 3 import com.bsth.entity.schedule.TTInfoDetail;
  4 +import org.apache.commons.lang3.StringUtils;
4 import org.kie.api.runtime.rule.AccumulateFunction; 5 import org.kie.api.runtime.rule.AccumulateFunction;
5 6
6 import java.io.*; 7 import java.io.*;
@@ -58,18 +59,12 @@ public class ErrorBcCountFunction implements AccumulateFunction { @@ -58,18 +59,12 @@ public class ErrorBcCountFunction implements AccumulateFunction {
58 return; 59 return;
59 } 60 }
60 61
61 - if ("in".equals(ttInfoDetail.getBcType())) {  
62 - if (ttInfoDetail.getQdz() == null || ttInfoDetail.getTcc() == null) {  
63 - errorCountData.errorcount ++;  
64 - }  
65 - } else if ("out".equals(ttInfoDetail.getBcType())) {  
66 - if (ttInfoDetail.getTcc() == null || ttInfoDetail.getZdz() == null) {  
67 - errorCountData.errorcount ++;  
68 - }  
69 - } else {  
70 - if (ttInfoDetail.getQdz() == null || ttInfoDetail.getZdz() == null) {  
71 - errorCountData.errorcount ++;  
72 - } 62 + if (StringUtils.isEmpty(ttInfoDetail.getQdzCode()) ||
  63 + StringUtils.isEmpty(ttInfoDetail.getQdzName()) ||
  64 + StringUtils.isEmpty(ttInfoDetail.getZdzCode()) ||
  65 + StringUtils.isEmpty(ttInfoDetail.getZdzName()) ) {
  66 +
  67 + errorCountData.errorcount ++;
73 } 68 }
74 } 69 }
75 70
@@ -83,18 +78,12 @@ public class ErrorBcCountFunction implements AccumulateFunction { @@ -83,18 +78,12 @@ public class ErrorBcCountFunction implements AccumulateFunction {
83 return; 78 return;
84 } 79 }
85 80
86 - if ("in".equals(ttInfoDetail.getBcType())) {  
87 - if (ttInfoDetail.getQdz() == null || ttInfoDetail.getTcc() == null) {  
88 - errorCountData.errorcount --;  
89 - }  
90 - } else if ("out".equals(ttInfoDetail.getBcType())) {  
91 - if (ttInfoDetail.getTcc() == null || ttInfoDetail.getZdz() == null) {  
92 - errorCountData.errorcount --;  
93 - }  
94 - } else {  
95 - if (ttInfoDetail.getQdz() == null || ttInfoDetail.getZdz() == null) {  
96 - errorCountData.errorcount --;  
97 - } 81 + if (StringUtils.isEmpty(ttInfoDetail.getQdzCode()) ||
  82 + StringUtils.isEmpty(ttInfoDetail.getQdzName()) ||
  83 + StringUtils.isEmpty(ttInfoDetail.getZdzCode()) ||
  84 + StringUtils.isEmpty(ttInfoDetail.getZdzName()) ) {
  85 +
  86 + errorCountData.errorcount --;
98 } 87 }
99 88
100 } 89 }
src/main/java/com/bsth/util/Arith.java
@@ -24,8 +24,20 @@ public class Arith { @@ -24,8 +24,20 @@ public class Arith {
24 BigDecimal b1 = new BigDecimal(v1.toString()); 24 BigDecimal b1 = new BigDecimal(v1.toString());
25 BigDecimal b2 = new BigDecimal(v2.toString()); 25 BigDecimal b2 = new BigDecimal(v2.toString());
26 return b1.add(b2).doubleValue(); 26 return b1.add(b2).doubleValue();
27 - }  
28 - 27 + }
  28 +
  29 + /**
  30 + * 提供精确的加法运算。
  31 + * @param v1 被加数
  32 + * @param v2 加数
  33 + * @return 两个参数的和
  34 + */
  35 + public static long addLong(Object v1,Object v2){
  36 + BigDecimal b1 = new BigDecimal(v1.toString());
  37 + BigDecimal b2 = new BigDecimal(v2.toString());
  38 + return b1.add(b2).longValue();
  39 + }
  40 +
29 /** 41 /**
30 * 提供精确的减法运算。 42 * 提供精确的减法运算。
31 * @param v1 被减数 43 * @param v1 被减数
src/main/resources/application-dev.properties
@@ -8,9 +8,9 @@ spring.jpa.hibernate.naming_strategy= org.hibernate.cfg.ImprovedNamingStrategy @@ -8,9 +8,9 @@ spring.jpa.hibernate.naming_strategy= org.hibernate.cfg.ImprovedNamingStrategy
8 spring.jpa.database= MYSQL 8 spring.jpa.database= MYSQL
9 spring.jpa.show-sql= true 9 spring.jpa.show-sql= true
10 spring.datasource.driver-class-name= com.mysql.jdbc.Driver 10 spring.datasource.driver-class-name= com.mysql.jdbc.Driver
11 -spring.datasource.url= jdbc:mysql://localhost/control?useUnicode=true&characterEncoding=utf-8&useSSL=false 11 +spring.datasource.url= jdbc:mysql://127.0.0.1/control?useUnicode=true&characterEncoding=utf-8&useSSL=false
12 spring.datasource.username= root 12 spring.datasource.username= root
13 -spring.datasource.password= root123 13 +spring.datasource.password=
14 #spring.datasource.url= jdbc:mysql://192.168.168.117/pd_control?useUnicode=true&characterEncoding=utf-8&useSSL=false 14 #spring.datasource.url= jdbc:mysql://192.168.168.117/pd_control?useUnicode=true&characterEncoding=utf-8&useSSL=false
15 #spring.datasource.username= root 15 #spring.datasource.username= root
16 #spring.datasource.password= root 16 #spring.datasource.password= root
src/main/resources/datatools/config-dev.properties
@@ -10,7 +10,7 @@ datatools.kvars_dbuname=root @@ -10,7 +10,7 @@ datatools.kvars_dbuname=root
10 #数据库密码 10 #数据库密码
11 datatools.kvars_dbpwd= 11 datatools.kvars_dbpwd=
12 #数据库库名 12 #数据库库名
13 -datatools.kvars_dbdname=qp_control 13 +datatools.kvars_dbdname=control
14 14
15 # 3、上传数据配置信息 15 # 3、上传数据配置信息
16 # 上传文件目录配置(根据不同的环境需要修正) 16 # 上传文件目录配置(根据不同的环境需要修正)
src/main/resources/datatools/ktrs/legecy/ttinfodetailoutputforedit.ktr 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>ttinfodetailoutputforedit</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>tempfilepath</name>
  14 + <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project_code&#x2f;runtime_temp&#x2f;bsth_control_u_d_files&#x2f;temp&#x2f;test</default_value>
  15 + <description>&#x9ed8;&#x8ba4;&#x8f93;&#x51fa;&#x7684;&#x6587;&#x4ef6;&#x8def;&#x5f84;&#x540d;</description>
  16 + </parameter>
  17 + <parameter>
  18 + <name>ttid</name>
  19 + <default_value>79</default_value>
  20 + <description>&#x65f6;&#x523b;&#x8868;id</description>
  21 + </parameter>
  22 + <parameter>
  23 + <name>xlid</name>
  24 + <default_value>63020</default_value>
  25 + <description>&#x7ebf;&#x8def;id</description>
  26 + </parameter>
  27 + </parameters>
  28 + <log>
  29 +<trans-log-table><connection/>
  30 +<schema/>
  31 +<table/>
  32 +<size_limit_lines/>
  33 +<interval/>
  34 +<timeout_days/>
  35 +<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>
  36 +<perf-log-table><connection/>
  37 +<schema/>
  38 +<table/>
  39 +<interval/>
  40 +<timeout_days/>
  41 +<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>
  42 +<channel-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>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>
  47 +<step-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>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>
  52 +<metrics-log-table><connection/>
  53 +<schema/>
  54 +<table/>
  55 +<timeout_days/>
  56 +<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>
  57 + </log>
  58 + <maxdate>
  59 + <connection/>
  60 + <table/>
  61 + <field/>
  62 + <offset>0.0</offset>
  63 + <maxdiff>0.0</maxdiff>
  64 + </maxdate>
  65 + <size_rowset>10000</size_rowset>
  66 + <sleep_time_empty>50</sleep_time_empty>
  67 + <sleep_time_full>50</sleep_time_full>
  68 + <unique_connections>N</unique_connections>
  69 + <feedback_shown>Y</feedback_shown>
  70 + <feedback_size>50000</feedback_size>
  71 + <using_thread_priorities>Y</using_thread_priorities>
  72 + <shared_objects_file/>
  73 + <capture_step_performance>N</capture_step_performance>
  74 + <step_performance_capturing_delay>1000</step_performance_capturing_delay>
  75 + <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
  76 + <dependencies>
  77 + </dependencies>
  78 + <partitionschemas>
  79 + </partitionschemas>
  80 + <slaveservers>
  81 + </slaveservers>
  82 + <clusterschemas>
  83 + </clusterschemas>
  84 + <created_user>-</created_user>
  85 + <created_date>2016&#x2f;07&#x2f;11 21&#x3a;45&#x3a;05.041</created_date>
  86 + <modified_user>-</modified_user>
  87 + <modified_date>2016&#x2f;07&#x2f;11 21&#x3a;45&#x3a;05.041</modified_date>
  88 + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
  89 + <is_key_private>N</is_key_private>
  90 + </info>
  91 + <notepads>
  92 + <notepad>
  93 + <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>
  94 + <xloc>45</xloc>
  95 + <yloc>261</yloc>
  96 + <width>333</width>
  97 + <heigth>90</heigth>
  98 + <fontname>YaHei Consolas Hybrid</fontname>
  99 + <fontsize>12</fontsize>
  100 + <fontbold>N</fontbold>
  101 + <fontitalic>N</fontitalic>
  102 + <fontcolorred>0</fontcolorred>
  103 + <fontcolorgreen>0</fontcolorgreen>
  104 + <fontcolorblue>0</fontcolorblue>
  105 + <backgroundcolorred>255</backgroundcolorred>
  106 + <backgroundcolorgreen>205</backgroundcolorgreen>
  107 + <backgroundcolorblue>112</backgroundcolorblue>
  108 + <bordercolorred>100</bordercolorred>
  109 + <bordercolorgreen>100</bordercolorgreen>
  110 + <bordercolorblue>100</bordercolorblue>
  111 + <drawshadow>Y</drawshadow>
  112 + </notepad>
  113 + <notepad>
  114 + <note>&#x6b64;&#x5904;&#x8f6c;&#x6362;excel&#x6709;&#x95ee;&#x9898;&#xff0c;&#xa;2003&#x683c;&#x5f0f;&#x7684;xls&#x6700;&#x591a;256&#x5217;&#xff0c;&#xa;&#x8fd9;&#x91cc;&#x660e;&#x663e;&#x8d85;&#x8fc7;&#xff0c;&#x6240;&#x4ee5;&#x628a;&#x6240;&#x6709;&#x5185;&#x5bb9;&#x5408;&#x5e76;&#x6210;1&#x5217;&#xff0c;&#xa;&#x7528;,&#x5206;&#x9694;</note>
  115 + <xloc>256</xloc>
  116 + <yloc>397</yloc>
  117 + <width>245</width>
  118 + <heigth>74</heigth>
  119 + <fontname>YaHei Consolas Hybrid</fontname>
  120 + <fontsize>12</fontsize>
  121 + <fontbold>N</fontbold>
  122 + <fontitalic>N</fontitalic>
  123 + <fontcolorred>0</fontcolorred>
  124 + <fontcolorgreen>0</fontcolorgreen>
  125 + <fontcolorblue>0</fontcolorblue>
  126 + <backgroundcolorred>255</backgroundcolorred>
  127 + <backgroundcolorgreen>205</backgroundcolorgreen>
  128 + <backgroundcolorblue>112</backgroundcolorblue>
  129 + <bordercolorred>100</bordercolorred>
  130 + <bordercolorgreen>100</bordercolorgreen>
  131 + <bordercolorblue>100</bordercolorblue>
  132 + <drawshadow>Y</drawshadow>
  133 + </notepad>
  134 + </notepads>
  135 + <connection>
  136 + <name>bus_control_variable</name>
  137 + <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
  138 + <type>MYSQL</type>
  139 + <access>Native</access>
  140 + <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
  141 + <port>3306</port>
  142 + <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
  143 + <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
  144 + <servername/>
  145 + <data_tablespace/>
  146 + <index_tablespace/>
  147 + <attributes>
  148 + <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
  149 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  150 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  151 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  152 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  153 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  154 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  155 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  156 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  157 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  158 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  159 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  160 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  161 + </attributes>
  162 + </connection>
  163 + <connection>
  164 + <name>bus_control_&#x516c;&#x53f8;_201</name>
  165 + <server>localhost</server>
  166 + <type>MYSQL</type>
  167 + <access>Native</access>
  168 + <database>control</database>
  169 + <port>3306</port>
  170 + <username>root</username>
  171 + <password>Encrypted </password>
  172 + <servername/>
  173 + <data_tablespace/>
  174 + <index_tablespace/>
  175 + <attributes>
  176 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  177 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  178 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  179 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  180 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  181 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  182 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  183 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  184 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  185 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  186 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  187 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  188 + </attributes>
  189 + </connection>
  190 + <connection>
  191 + <name>bus_control_&#x672c;&#x673a;</name>
  192 + <server>localhost</server>
  193 + <type>MYSQL</type>
  194 + <access>Native</access>
  195 + <database>control</database>
  196 + <port>3306</port>
  197 + <username>root</username>
  198 + <password>Encrypted </password>
  199 + <servername/>
  200 + <data_tablespace/>
  201 + <index_tablespace/>
  202 + <attributes>
  203 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  204 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  205 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  206 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  207 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  208 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  209 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  210 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  211 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  212 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  213 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  214 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  215 + </attributes>
  216 + </connection>
  217 + <connection>
  218 + <name>xlab_mysql_youle</name>
  219 + <server>101.231.124.8</server>
  220 + <type>MYSQL</type>
  221 + <access>Native</access>
  222 + <database>xlab_youle</database>
  223 + <port>45687</port>
  224 + <username>xlab-youle</username>
  225 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
  226 + <servername/>
  227 + <data_tablespace/>
  228 + <index_tablespace/>
  229 + <attributes>
  230 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  231 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  232 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  233 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  234 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  235 + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
  236 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  237 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  238 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  239 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  240 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  241 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  242 + </attributes>
  243 + </connection>
  244 + <connection>
  245 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  246 + <server>localhost</server>
  247 + <type>MYSQL</type>
  248 + <access>Native</access>
  249 + <database>xlab_youle</database>
  250 + <port>3306</port>
  251 + <username>root</username>
  252 + <password>Encrypted </password>
  253 + <servername/>
  254 + <data_tablespace/>
  255 + <index_tablespace/>
  256 + <attributes>
  257 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  258 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  259 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  260 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  261 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  262 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  263 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  264 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  265 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  266 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  267 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  268 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  269 + </attributes>
  270 + </connection>
  271 + <connection>
  272 + <name>xlab_youle</name>
  273 + <server/>
  274 + <type>MYSQL</type>
  275 + <access>JNDI</access>
  276 + <database>xlab_youle</database>
  277 + <port>1521</port>
  278 + <username/>
  279 + <password>Encrypted </password>
  280 + <servername/>
  281 + <data_tablespace/>
  282 + <index_tablespace/>
  283 + <attributes>
  284 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  285 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  286 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  287 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  288 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  289 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  290 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  291 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  292 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  293 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  294 + </attributes>
  295 + </connection>
  296 + <order>
  297 + <hop> <from>&#x8868;&#x8f93;&#x5165;</from><to>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  298 + <hop> <from>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;</from><to>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x7ad9;&#x70b9;&#x67e5;&#x8be2;&#x7528;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
  299 + <hop> <from>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;</from><to>&#x8fdb;&#x573a;&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x67e5;&#x8be2;&#x7528;&#x7684;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
  300 + <hop> <from>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x7ad9;&#x70b9;&#x67e5;&#x8be2;&#x7528;&#x6570;&#x636e;</from><to>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;&#x540d;&#x79f0;</to><enabled>Y</enabled> </hop>
  301 + <hop> <from>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;&#x540d;&#x79f0;</from><to>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x540d;&#x79f0;</to><enabled>Y</enabled> </hop>
  302 + <hop> <from>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x540d;&#x79f0;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
  303 + <hop> <from>&#x8fdb;&#x573a;&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x67e5;&#x8be2;&#x7528;&#x7684;&#x6570;&#x636e;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9; 2</to><enabled>Y</enabled> </hop>
  304 + <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  305 + <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9; 2</from><to>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  306 + <hop> <from>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</from><to>&#x8ba1;&#x7b97;&#x53d1;&#x8f66;&#x7ad9;&#x540d;</to><enabled>Y</enabled> </hop>
  307 + <hop> <from>&#x5217;&#x8f6c;&#x884c;</from><to>&#x53bb;&#x9664;&#x5b57;&#x6bb5;</to><enabled>Y</enabled> </hop>
  308 + <hop> <from>&#x53bb;&#x9664;&#x5b57;&#x6bb5;</from><to>Excel&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
  309 + <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x8868;&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>
  310 + <hop> <from>&#x8ba1;&#x7b97;&#x53d1;&#x8f66;&#x7ad9;&#x540d;</from><to>&#x5408;&#x5e76;&#x5185;&#x5bb9;</to><enabled>Y</enabled> </hop>
  311 + <hop> <from>&#x5408;&#x5e76;&#x5185;&#x5bb9;</from><to>&#x5217;&#x8f6c;&#x884c;</to><enabled>Y</enabled> </hop>
  312 + <hop> <from>&#x53bb;&#x9664;&#x5b57;&#x6bb5;</from><to>&#x6587;&#x672c;&#x6587;&#x4ef6;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
  313 + </order>
  314 + <step>
  315 + <name>Excel&#x8f93;&#x51fa;</name>
  316 + <type>ExcelOutput</type>
  317 + <description/>
  318 + <distribute>Y</distribute>
  319 + <custom_distribution/>
  320 + <copies>1</copies>
  321 + <partitioning>
  322 + <method>none</method>
  323 + <schema_name/>
  324 + </partitioning>
  325 + <header>Y</header>
  326 + <footer>N</footer>
  327 + <encoding/>
  328 + <append>N</append>
  329 + <add_to_result_filenames>Y</add_to_result_filenames>
  330 + <file>
  331 + <name>&#x24;&#x7b;tempfilepath&#x7d;</name>
  332 + <extention>xls</extention>
  333 + <do_not_open_newfile_init>N</do_not_open_newfile_init>
  334 + <create_parent_folder>N</create_parent_folder>
  335 + <split>N</split>
  336 + <add_date>N</add_date>
  337 + <add_time>N</add_time>
  338 + <SpecifyFormat>N</SpecifyFormat>
  339 + <date_time_format/>
  340 + <sheetname>Sheet1</sheetname>
  341 + <autosizecolums>N</autosizecolums>
  342 + <nullisblank>N</nullisblank>
  343 + <protect_sheet>N</protect_sheet>
  344 + <password>Encrypted </password>
  345 + <splitevery>0</splitevery>
  346 + <usetempfiles>N</usetempfiles>
  347 + <tempdirectory/>
  348 + </file>
  349 + <template>
  350 + <enabled>N</enabled>
  351 + <append>N</append>
  352 + <filename>template.xls</filename>
  353 + </template>
  354 + <fields>
  355 + <field>
  356 + <name>lp</name>
  357 + <type>String</type>
  358 + <format/>
  359 + </field>
  360 + <field>
  361 + <name>fcno1</name>
  362 + <type>String</type>
  363 + <format/>
  364 + </field>
  365 + <field>
  366 + <name>fcno2</name>
  367 + <type>String</type>
  368 + <format/>
  369 + </field>
  370 + <field>
  371 + <name>fcno3</name>
  372 + <type>String</type>
  373 + <format/>
  374 + </field>
  375 + <field>
  376 + <name>fcno4</name>
  377 + <type>String</type>
  378 + <format/>
  379 + </field>
  380 + <field>
  381 + <name>fcno5</name>
  382 + <type>String</type>
  383 + <format/>
  384 + </field>
  385 + <field>
  386 + <name>fcno6</name>
  387 + <type>String</type>
  388 + <format/>
  389 + </field>
  390 + <field>
  391 + <name>fcno7</name>
  392 + <type>String</type>
  393 + <format/>
  394 + </field>
  395 + <field>
  396 + <name>fcno8</name>
  397 + <type>String</type>
  398 + <format/>
  399 + </field>
  400 + <field>
  401 + <name>fcno9</name>
  402 + <type>String</type>
  403 + <format/>
  404 + </field>
  405 + <field>
  406 + <name>fcno10</name>
  407 + <type>String</type>
  408 + <format/>
  409 + </field>
  410 + <field>
  411 + <name>fcno11</name>
  412 + <type>String</type>
  413 + <format/>
  414 + </field>
  415 + <field>
  416 + <name>fcno12</name>
  417 + <type>String</type>
  418 + <format/>
  419 + </field>
  420 + <field>
  421 + <name>fcno13</name>
  422 + <type>String</type>
  423 + <format/>
  424 + </field>
  425 + <field>
  426 + <name>fcno14</name>
  427 + <type>String</type>
  428 + <format/>
  429 + </field>
  430 + <field>
  431 + <name>fcno15</name>
  432 + <type>String</type>
  433 + <format/>
  434 + </field>
  435 + <field>
  436 + <name>fcno16</name>
  437 + <type>String</type>
  438 + <format/>
  439 + </field>
  440 + <field>
  441 + <name>fcno17</name>
  442 + <type>String</type>
  443 + <format/>
  444 + </field>
  445 + <field>
  446 + <name>fcno18</name>
  447 + <type>String</type>
  448 + <format/>
  449 + </field>
  450 + <field>
  451 + <name>fcno19</name>
  452 + <type>String</type>
  453 + <format/>
  454 + </field>
  455 + <field>
  456 + <name>fcno20</name>
  457 + <type>String</type>
  458 + <format/>
  459 + </field>
  460 + <field>
  461 + <name>fcno21</name>
  462 + <type>String</type>
  463 + <format/>
  464 + </field>
  465 + <field>
  466 + <name>fcno22</name>
  467 + <type>String</type>
  468 + <format/>
  469 + </field>
  470 + <field>
  471 + <name>fcno23</name>
  472 + <type>String</type>
  473 + <format/>
  474 + </field>
  475 + <field>
  476 + <name>fcno24</name>
  477 + <type>String</type>
  478 + <format/>
  479 + </field>
  480 + <field>
  481 + <name>fcno25</name>
  482 + <type>String</type>
  483 + <format/>
  484 + </field>
  485 + <field>
  486 + <name>fcno26</name>
  487 + <type>String</type>
  488 + <format/>
  489 + </field>
  490 + <field>
  491 + <name>fcno27</name>
  492 + <type>String</type>
  493 + <format/>
  494 + </field>
  495 + <field>
  496 + <name>fcno28</name>
  497 + <type>String</type>
  498 + <format/>
  499 + </field>
  500 + <field>
  501 + <name>fcno29</name>
  502 + <type>String</type>
  503 + <format/>
  504 + </field>
  505 + <field>
  506 + <name>fcno30</name>
  507 + <type>String</type>
  508 + <format/>
  509 + </field>
  510 + <field>
  511 + <name>fcno31</name>
  512 + <type>String</type>
  513 + <format/>
  514 + </field>
  515 + <field>
  516 + <name>fcno32</name>
  517 + <type>String</type>
  518 + <format/>
  519 + </field>
  520 + <field>
  521 + <name>fcno33</name>
  522 + <type>String</type>
  523 + <format/>
  524 + </field>
  525 + <field>
  526 + <name>fcno34</name>
  527 + <type>String</type>
  528 + <format/>
  529 + </field>
  530 + <field>
  531 + <name>fcno35</name>
  532 + <type>String</type>
  533 + <format/>
  534 + </field>
  535 + <field>
  536 + <name>fcno36</name>
  537 + <type>String</type>
  538 + <format/>
  539 + </field>
  540 + <field>
  541 + <name>fcno37</name>
  542 + <type>String</type>
  543 + <format/>
  544 + </field>
  545 + <field>
  546 + <name>fcno38</name>
  547 + <type>String</type>
  548 + <format/>
  549 + </field>
  550 + <field>
  551 + <name>fcno39</name>
  552 + <type>String</type>
  553 + <format/>
  554 + </field>
  555 + <field>
  556 + <name>fcno40</name>
  557 + <type>String</type>
  558 + <format/>
  559 + </field>
  560 + <field>
  561 + <name>fcno41</name>
  562 + <type>String</type>
  563 + <format/>
  564 + </field>
  565 + <field>
  566 + <name>fcno42</name>
  567 + <type>String</type>
  568 + <format/>
  569 + </field>
  570 + <field>
  571 + <name>fcno43</name>
  572 + <type>String</type>
  573 + <format/>
  574 + </field>
  575 + <field>
  576 + <name>fcno44</name>
  577 + <type>String</type>
  578 + <format/>
  579 + </field>
  580 + <field>
  581 + <name>fcno45</name>
  582 + <type>String</type>
  583 + <format/>
  584 + </field>
  585 + <field>
  586 + <name>fcno46</name>
  587 + <type>String</type>
  588 + <format/>
  589 + </field>
  590 + <field>
  591 + <name>fcno47</name>
  592 + <type>String</type>
  593 + <format/>
  594 + </field>
  595 + <field>
  596 + <name>fcno48</name>
  597 + <type>String</type>
  598 + <format/>
  599 + </field>
  600 + <field>
  601 + <name>fcno49</name>
  602 + <type>String</type>
  603 + <format/>
  604 + </field>
  605 + <field>
  606 + <name>fcno50</name>
  607 + <type>String</type>
  608 + <format/>
  609 + </field>
  610 + <field>
  611 + <name>fcno51</name>
  612 + <type>String</type>
  613 + <format/>
  614 + </field>
  615 + <field>
  616 + <name>fcno52</name>
  617 + <type>String</type>
  618 + <format/>
  619 + </field>
  620 + <field>
  621 + <name>fcno53</name>
  622 + <type>String</type>
  623 + <format/>
  624 + </field>
  625 + <field>
  626 + <name>fcno54</name>
  627 + <type>String</type>
  628 + <format/>
  629 + </field>
  630 + <field>
  631 + <name>fcno55</name>
  632 + <type>String</type>
  633 + <format/>
  634 + </field>
  635 + <field>
  636 + <name>fcno56</name>
  637 + <type>String</type>
  638 + <format/>
  639 + </field>
  640 + <field>
  641 + <name>fcno57</name>
  642 + <type>String</type>
  643 + <format/>
  644 + </field>
  645 + <field>
  646 + <name>fcno58</name>
  647 + <type>String</type>
  648 + <format/>
  649 + </field>
  650 + <field>
  651 + <name>fcno59</name>
  652 + <type>String</type>
  653 + <format/>
  654 + </field>
  655 + <field>
  656 + <name>fcno60</name>
  657 + <type>String</type>
  658 + <format/>
  659 + </field>
  660 + <field>
  661 + <name>fcno61</name>
  662 + <type>String</type>
  663 + <format/>
  664 + </field>
  665 + <field>
  666 + <name>fcno62</name>
  667 + <type>String</type>
  668 + <format/>
  669 + </field>
  670 + <field>
  671 + <name>fcno63</name>
  672 + <type>String</type>
  673 + <format/>
  674 + </field>
  675 + <field>
  676 + <name>fcno64</name>
  677 + <type>String</type>
  678 + <format/>
  679 + </field>
  680 + <field>
  681 + <name>fcno65</name>
  682 + <type>String</type>
  683 + <format/>
  684 + </field>
  685 + <field>
  686 + <name>fcno66</name>
  687 + <type>String</type>
  688 + <format/>
  689 + </field>
  690 + <field>
  691 + <name>fcno67</name>
  692 + <type>String</type>
  693 + <format/>
  694 + </field>
  695 + <field>
  696 + <name>fcno68</name>
  697 + <type>String</type>
  698 + <format/>
  699 + </field>
  700 + <field>
  701 + <name>fcno69</name>
  702 + <type>String</type>
  703 + <format/>
  704 + </field>
  705 + <field>
  706 + <name>fcno70</name>
  707 + <type>String</type>
  708 + <format/>
  709 + </field>
  710 + </fields>
  711 + <custom>
  712 + <header_font_name>arial</header_font_name>
  713 + <header_font_size>10</header_font_size>
  714 + <header_font_bold>N</header_font_bold>
  715 + <header_font_italic>N</header_font_italic>
  716 + <header_font_underline>no</header_font_underline>
  717 + <header_font_orientation>horizontal</header_font_orientation>
  718 + <header_font_color>black</header_font_color>
  719 + <header_background_color>none</header_background_color>
  720 + <header_row_height>255</header_row_height>
  721 + <header_alignment>left</header_alignment>
  722 + <header_image/>
  723 + <row_font_name>arial</row_font_name>
  724 + <row_font_size>10</row_font_size>
  725 + <row_font_color>black</row_font_color>
  726 + <row_background_color>none</row_background_color>
  727 + </custom>
  728 + <cluster_schema/>
  729 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  730 + <xloc>692</xloc>
  731 + <yloc>514</yloc>
  732 + <draw>Y</draw>
  733 + </GUI>
  734 + </step>
  735 +
  736 + <step>
  737 + <name>&#x5217;&#x8f6c;&#x884c;</name>
  738 + <type>Denormaliser</type>
  739 + <description/>
  740 + <distribute>N</distribute>
  741 + <custom_distribution/>
  742 + <copies>1</copies>
  743 + <partitioning>
  744 + <method>none</method>
  745 + <schema_name/>
  746 + </partitioning>
  747 + <key_field>fcno</key_field>
  748 + <group>
  749 + <field>
  750 + <name>lp</name>
  751 + </field>
  752 + </group>
  753 + <fields>
  754 + <field>
  755 + <field_name>all_content</field_name>
  756 + <key_value>1</key_value>
  757 + <target_name>fcno1</target_name>
  758 + <target_type>String</target_type>
  759 + <target_format/>
  760 + <target_length>-1</target_length>
  761 + <target_precision>-1</target_precision>
  762 + <target_decimal_symbol/>
  763 + <target_grouping_symbol/>
  764 + <target_currency_symbol/>
  765 + <target_null_string/>
  766 + <target_aggregation_type>-</target_aggregation_type>
  767 + </field>
  768 + <field>
  769 + <field_name>all_content</field_name>
  770 + <key_value>2</key_value>
  771 + <target_name>fcno2</target_name>
  772 + <target_type>String</target_type>
  773 + <target_format/>
  774 + <target_length>-1</target_length>
  775 + <target_precision>-1</target_precision>
  776 + <target_decimal_symbol/>
  777 + <target_grouping_symbol/>
  778 + <target_currency_symbol/>
  779 + <target_null_string/>
  780 + <target_aggregation_type>-</target_aggregation_type>
  781 + </field>
  782 + <field>
  783 + <field_name>all_content</field_name>
  784 + <key_value>3</key_value>
  785 + <target_name>fcno3</target_name>
  786 + <target_type>String</target_type>
  787 + <target_format/>
  788 + <target_length>-1</target_length>
  789 + <target_precision>-1</target_precision>
  790 + <target_decimal_symbol/>
  791 + <target_grouping_symbol/>
  792 + <target_currency_symbol/>
  793 + <target_null_string/>
  794 + <target_aggregation_type>-</target_aggregation_type>
  795 + </field>
  796 + <field>
  797 + <field_name>all_content</field_name>
  798 + <key_value>4</key_value>
  799 + <target_name>fcno4</target_name>
  800 + <target_type>String</target_type>
  801 + <target_format/>
  802 + <target_length>-1</target_length>
  803 + <target_precision>-1</target_precision>
  804 + <target_decimal_symbol/>
  805 + <target_grouping_symbol/>
  806 + <target_currency_symbol/>
  807 + <target_null_string/>
  808 + <target_aggregation_type>-</target_aggregation_type>
  809 + </field>
  810 + <field>
  811 + <field_name>all_content</field_name>
  812 + <key_value>5</key_value>
  813 + <target_name>fcno5</target_name>
  814 + <target_type>String</target_type>
  815 + <target_format/>
  816 + <target_length>-1</target_length>
  817 + <target_precision>-1</target_precision>
  818 + <target_decimal_symbol/>
  819 + <target_grouping_symbol/>
  820 + <target_currency_symbol/>
  821 + <target_null_string/>
  822 + <target_aggregation_type>-</target_aggregation_type>
  823 + </field>
  824 + <field>
  825 + <field_name>all_content</field_name>
  826 + <key_value>6</key_value>
  827 + <target_name>fcno6</target_name>
  828 + <target_type>String</target_type>
  829 + <target_format/>
  830 + <target_length>-1</target_length>
  831 + <target_precision>-1</target_precision>
  832 + <target_decimal_symbol/>
  833 + <target_grouping_symbol/>
  834 + <target_currency_symbol/>
  835 + <target_null_string/>
  836 + <target_aggregation_type>-</target_aggregation_type>
  837 + </field>
  838 + <field>
  839 + <field_name>all_content</field_name>
  840 + <key_value>7</key_value>
  841 + <target_name>fcno7</target_name>
  842 + <target_type>String</target_type>
  843 + <target_format/>
  844 + <target_length>-1</target_length>
  845 + <target_precision>-1</target_precision>
  846 + <target_decimal_symbol/>
  847 + <target_grouping_symbol/>
  848 + <target_currency_symbol/>
  849 + <target_null_string/>
  850 + <target_aggregation_type>-</target_aggregation_type>
  851 + </field>
  852 + <field>
  853 + <field_name>all_content</field_name>
  854 + <key_value>8</key_value>
  855 + <target_name>fcno8</target_name>
  856 + <target_type>String</target_type>
  857 + <target_format/>
  858 + <target_length>-1</target_length>
  859 + <target_precision>-1</target_precision>
  860 + <target_decimal_symbol/>
  861 + <target_grouping_symbol/>
  862 + <target_currency_symbol/>
  863 + <target_null_string/>
  864 + <target_aggregation_type>-</target_aggregation_type>
  865 + </field>
  866 + <field>
  867 + <field_name>all_content</field_name>
  868 + <key_value>9</key_value>
  869 + <target_name>fcno9</target_name>
  870 + <target_type>String</target_type>
  871 + <target_format/>
  872 + <target_length>-1</target_length>
  873 + <target_precision>-1</target_precision>
  874 + <target_decimal_symbol/>
  875 + <target_grouping_symbol/>
  876 + <target_currency_symbol/>
  877 + <target_null_string/>
  878 + <target_aggregation_type>-</target_aggregation_type>
  879 + </field>
  880 + <field>
  881 + <field_name>all_content</field_name>
  882 + <key_value>10</key_value>
  883 + <target_name>fcno10</target_name>
  884 + <target_type>String</target_type>
  885 + <target_format/>
  886 + <target_length>-1</target_length>
  887 + <target_precision>-1</target_precision>
  888 + <target_decimal_symbol/>
  889 + <target_grouping_symbol/>
  890 + <target_currency_symbol/>
  891 + <target_null_string/>
  892 + <target_aggregation_type>-</target_aggregation_type>
  893 + </field>
  894 + <field>
  895 + <field_name>all_content</field_name>
  896 + <key_value>11</key_value>
  897 + <target_name>fcno11</target_name>
  898 + <target_type>String</target_type>
  899 + <target_format/>
  900 + <target_length>-1</target_length>
  901 + <target_precision>-1</target_precision>
  902 + <target_decimal_symbol/>
  903 + <target_grouping_symbol/>
  904 + <target_currency_symbol/>
  905 + <target_null_string/>
  906 + <target_aggregation_type>-</target_aggregation_type>
  907 + </field>
  908 + <field>
  909 + <field_name>all_content</field_name>
  910 + <key_value>12</key_value>
  911 + <target_name>fcno12</target_name>
  912 + <target_type>String</target_type>
  913 + <target_format/>
  914 + <target_length>-1</target_length>
  915 + <target_precision>-1</target_precision>
  916 + <target_decimal_symbol/>
  917 + <target_grouping_symbol/>
  918 + <target_currency_symbol/>
  919 + <target_null_string/>
  920 + <target_aggregation_type>-</target_aggregation_type>
  921 + </field>
  922 + <field>
  923 + <field_name>all_content</field_name>
  924 + <key_value>13</key_value>
  925 + <target_name>fcno13</target_name>
  926 + <target_type>String</target_type>
  927 + <target_format/>
  928 + <target_length>-1</target_length>
  929 + <target_precision>-1</target_precision>
  930 + <target_decimal_symbol/>
  931 + <target_grouping_symbol/>
  932 + <target_currency_symbol/>
  933 + <target_null_string/>
  934 + <target_aggregation_type>-</target_aggregation_type>
  935 + </field>
  936 + <field>
  937 + <field_name>all_content</field_name>
  938 + <key_value>14</key_value>
  939 + <target_name>fcno14</target_name>
  940 + <target_type>String</target_type>
  941 + <target_format/>
  942 + <target_length>-1</target_length>
  943 + <target_precision>-1</target_precision>
  944 + <target_decimal_symbol/>
  945 + <target_grouping_symbol/>
  946 + <target_currency_symbol/>
  947 + <target_null_string/>
  948 + <target_aggregation_type>-</target_aggregation_type>
  949 + </field>
  950 + <field>
  951 + <field_name>all_content</field_name>
  952 + <key_value>15</key_value>
  953 + <target_name>fcno15</target_name>
  954 + <target_type>String</target_type>
  955 + <target_format/>
  956 + <target_length>-1</target_length>
  957 + <target_precision>-1</target_precision>
  958 + <target_decimal_symbol/>
  959 + <target_grouping_symbol/>
  960 + <target_currency_symbol/>
  961 + <target_null_string/>
  962 + <target_aggregation_type>-</target_aggregation_type>
  963 + </field>
  964 + <field>
  965 + <field_name>all_content</field_name>
  966 + <key_value>16</key_value>
  967 + <target_name>fcno16</target_name>
  968 + <target_type>String</target_type>
  969 + <target_format/>
  970 + <target_length>-1</target_length>
  971 + <target_precision>-1</target_precision>
  972 + <target_decimal_symbol/>
  973 + <target_grouping_symbol/>
  974 + <target_currency_symbol/>
  975 + <target_null_string/>
  976 + <target_aggregation_type>-</target_aggregation_type>
  977 + </field>
  978 + <field>
  979 + <field_name>all_content</field_name>
  980 + <key_value>17</key_value>
  981 + <target_name>fcno17</target_name>
  982 + <target_type>String</target_type>
  983 + <target_format/>
  984 + <target_length>-1</target_length>
  985 + <target_precision>-1</target_precision>
  986 + <target_decimal_symbol/>
  987 + <target_grouping_symbol/>
  988 + <target_currency_symbol/>
  989 + <target_null_string/>
  990 + <target_aggregation_type>-</target_aggregation_type>
  991 + </field>
  992 + <field>
  993 + <field_name>all_content</field_name>
  994 + <key_value>18</key_value>
  995 + <target_name>fcno18</target_name>
  996 + <target_type>String</target_type>
  997 + <target_format/>
  998 + <target_length>-1</target_length>
  999 + <target_precision>-1</target_precision>
  1000 + <target_decimal_symbol/>
  1001 + <target_grouping_symbol/>
  1002 + <target_currency_symbol/>
  1003 + <target_null_string/>
  1004 + <target_aggregation_type>-</target_aggregation_type>
  1005 + </field>
  1006 + <field>
  1007 + <field_name>all_content</field_name>
  1008 + <key_value>19</key_value>
  1009 + <target_name>fcno19</target_name>
  1010 + <target_type>String</target_type>
  1011 + <target_format/>
  1012 + <target_length>-1</target_length>
  1013 + <target_precision>-1</target_precision>
  1014 + <target_decimal_symbol/>
  1015 + <target_grouping_symbol/>
  1016 + <target_currency_symbol/>
  1017 + <target_null_string/>
  1018 + <target_aggregation_type>-</target_aggregation_type>
  1019 + </field>
  1020 + <field>
  1021 + <field_name>all_content</field_name>
  1022 + <key_value>20</key_value>
  1023 + <target_name>fcno20</target_name>
  1024 + <target_type>String</target_type>
  1025 + <target_format/>
  1026 + <target_length>-1</target_length>
  1027 + <target_precision>-1</target_precision>
  1028 + <target_decimal_symbol/>
  1029 + <target_grouping_symbol/>
  1030 + <target_currency_symbol/>
  1031 + <target_null_string/>
  1032 + <target_aggregation_type>-</target_aggregation_type>
  1033 + </field>
  1034 + <field>
  1035 + <field_name>all_content</field_name>
  1036 + <key_value>21</key_value>
  1037 + <target_name>fcno21</target_name>
  1038 + <target_type>String</target_type>
  1039 + <target_format/>
  1040 + <target_length>-1</target_length>
  1041 + <target_precision>-1</target_precision>
  1042 + <target_decimal_symbol/>
  1043 + <target_grouping_symbol/>
  1044 + <target_currency_symbol/>
  1045 + <target_null_string/>
  1046 + <target_aggregation_type>-</target_aggregation_type>
  1047 + </field>
  1048 + <field>
  1049 + <field_name>all_content</field_name>
  1050 + <key_value>22</key_value>
  1051 + <target_name>fcno22</target_name>
  1052 + <target_type>String</target_type>
  1053 + <target_format/>
  1054 + <target_length>-1</target_length>
  1055 + <target_precision>-1</target_precision>
  1056 + <target_decimal_symbol/>
  1057 + <target_grouping_symbol/>
  1058 + <target_currency_symbol/>
  1059 + <target_null_string/>
  1060 + <target_aggregation_type>-</target_aggregation_type>
  1061 + </field>
  1062 + <field>
  1063 + <field_name>all_content</field_name>
  1064 + <key_value>23</key_value>
  1065 + <target_name>fcno23</target_name>
  1066 + <target_type>String</target_type>
  1067 + <target_format/>
  1068 + <target_length>-1</target_length>
  1069 + <target_precision>-1</target_precision>
  1070 + <target_decimal_symbol/>
  1071 + <target_grouping_symbol/>
  1072 + <target_currency_symbol/>
  1073 + <target_null_string/>
  1074 + <target_aggregation_type>-</target_aggregation_type>
  1075 + </field>
  1076 + <field>
  1077 + <field_name>all_content</field_name>
  1078 + <key_value>24</key_value>
  1079 + <target_name>fcno24</target_name>
  1080 + <target_type>String</target_type>
  1081 + <target_format/>
  1082 + <target_length>-1</target_length>
  1083 + <target_precision>-1</target_precision>
  1084 + <target_decimal_symbol/>
  1085 + <target_grouping_symbol/>
  1086 + <target_currency_symbol/>
  1087 + <target_null_string/>
  1088 + <target_aggregation_type>-</target_aggregation_type>
  1089 + </field>
  1090 + <field>
  1091 + <field_name>all_content</field_name>
  1092 + <key_value>25</key_value>
  1093 + <target_name>fcno25</target_name>
  1094 + <target_type>String</target_type>
  1095 + <target_format/>
  1096 + <target_length>-1</target_length>
  1097 + <target_precision>-1</target_precision>
  1098 + <target_decimal_symbol/>
  1099 + <target_grouping_symbol/>
  1100 + <target_currency_symbol/>
  1101 + <target_null_string/>
  1102 + <target_aggregation_type>-</target_aggregation_type>
  1103 + </field>
  1104 + <field>
  1105 + <field_name>all_content</field_name>
  1106 + <key_value>26</key_value>
  1107 + <target_name>fcno26</target_name>
  1108 + <target_type>String</target_type>
  1109 + <target_format/>
  1110 + <target_length>-1</target_length>
  1111 + <target_precision>-1</target_precision>
  1112 + <target_decimal_symbol/>
  1113 + <target_grouping_symbol/>
  1114 + <target_currency_symbol/>
  1115 + <target_null_string/>
  1116 + <target_aggregation_type>-</target_aggregation_type>
  1117 + </field>
  1118 + <field>
  1119 + <field_name>all_content</field_name>
  1120 + <key_value>27</key_value>
  1121 + <target_name>fcno27</target_name>
  1122 + <target_type>String</target_type>
  1123 + <target_format/>
  1124 + <target_length>-1</target_length>
  1125 + <target_precision>-1</target_precision>
  1126 + <target_decimal_symbol/>
  1127 + <target_grouping_symbol/>
  1128 + <target_currency_symbol/>
  1129 + <target_null_string/>
  1130 + <target_aggregation_type>-</target_aggregation_type>
  1131 + </field>
  1132 + <field>
  1133 + <field_name>all_content</field_name>
  1134 + <key_value>28</key_value>
  1135 + <target_name>fcno28</target_name>
  1136 + <target_type>String</target_type>
  1137 + <target_format/>
  1138 + <target_length>-1</target_length>
  1139 + <target_precision>-1</target_precision>
  1140 + <target_decimal_symbol/>
  1141 + <target_grouping_symbol/>
  1142 + <target_currency_symbol/>
  1143 + <target_null_string/>
  1144 + <target_aggregation_type>-</target_aggregation_type>
  1145 + </field>
  1146 + <field>
  1147 + <field_name>all_content</field_name>
  1148 + <key_value>29</key_value>
  1149 + <target_name>fcno29</target_name>
  1150 + <target_type>String</target_type>
  1151 + <target_format/>
  1152 + <target_length>-1</target_length>
  1153 + <target_precision>-1</target_precision>
  1154 + <target_decimal_symbol/>
  1155 + <target_grouping_symbol/>
  1156 + <target_currency_symbol/>
  1157 + <target_null_string/>
  1158 + <target_aggregation_type>-</target_aggregation_type>
  1159 + </field>
  1160 + <field>
  1161 + <field_name>all_content</field_name>
  1162 + <key_value>30</key_value>
  1163 + <target_name>fcno30</target_name>
  1164 + <target_type>String</target_type>
  1165 + <target_format/>
  1166 + <target_length>-1</target_length>
  1167 + <target_precision>-1</target_precision>
  1168 + <target_decimal_symbol/>
  1169 + <target_grouping_symbol/>
  1170 + <target_currency_symbol/>
  1171 + <target_null_string/>
  1172 + <target_aggregation_type>-</target_aggregation_type>
  1173 + </field>
  1174 + <field>
  1175 + <field_name>all_content</field_name>
  1176 + <key_value>31</key_value>
  1177 + <target_name>fcno31</target_name>
  1178 + <target_type>String</target_type>
  1179 + <target_format/>
  1180 + <target_length>-1</target_length>
  1181 + <target_precision>-1</target_precision>
  1182 + <target_decimal_symbol/>
  1183 + <target_grouping_symbol/>
  1184 + <target_currency_symbol/>
  1185 + <target_null_string/>
  1186 + <target_aggregation_type>-</target_aggregation_type>
  1187 + </field>
  1188 + <field>
  1189 + <field_name>all_content</field_name>
  1190 + <key_value>32</key_value>
  1191 + <target_name>fcno32</target_name>
  1192 + <target_type>String</target_type>
  1193 + <target_format/>
  1194 + <target_length>-1</target_length>
  1195 + <target_precision>-1</target_precision>
  1196 + <target_decimal_symbol/>
  1197 + <target_grouping_symbol/>
  1198 + <target_currency_symbol/>
  1199 + <target_null_string/>
  1200 + <target_aggregation_type>-</target_aggregation_type>
  1201 + </field>
  1202 + <field>
  1203 + <field_name>all_content</field_name>
  1204 + <key_value>33</key_value>
  1205 + <target_name>fcno33</target_name>
  1206 + <target_type>String</target_type>
  1207 + <target_format/>
  1208 + <target_length>-1</target_length>
  1209 + <target_precision>-1</target_precision>
  1210 + <target_decimal_symbol/>
  1211 + <target_grouping_symbol/>
  1212 + <target_currency_symbol/>
  1213 + <target_null_string/>
  1214 + <target_aggregation_type>-</target_aggregation_type>
  1215 + </field>
  1216 + <field>
  1217 + <field_name>all_content</field_name>
  1218 + <key_value>34</key_value>
  1219 + <target_name>fcno34</target_name>
  1220 + <target_type>String</target_type>
  1221 + <target_format/>
  1222 + <target_length>-1</target_length>
  1223 + <target_precision>-1</target_precision>
  1224 + <target_decimal_symbol/>
  1225 + <target_grouping_symbol/>
  1226 + <target_currency_symbol/>
  1227 + <target_null_string/>
  1228 + <target_aggregation_type>-</target_aggregation_type>
  1229 + </field>
  1230 + <field>
  1231 + <field_name>all_content</field_name>
  1232 + <key_value>35</key_value>
  1233 + <target_name>fcno35</target_name>
  1234 + <target_type>String</target_type>
  1235 + <target_format/>
  1236 + <target_length>-1</target_length>
  1237 + <target_precision>-1</target_precision>
  1238 + <target_decimal_symbol/>
  1239 + <target_grouping_symbol/>
  1240 + <target_currency_symbol/>
  1241 + <target_null_string/>
  1242 + <target_aggregation_type>-</target_aggregation_type>
  1243 + </field>
  1244 + <field>
  1245 + <field_name>all_content</field_name>
  1246 + <key_value>36</key_value>
  1247 + <target_name>fcno36</target_name>
  1248 + <target_type>String</target_type>
  1249 + <target_format/>
  1250 + <target_length>-1</target_length>
  1251 + <target_precision>-1</target_precision>
  1252 + <target_decimal_symbol/>
  1253 + <target_grouping_symbol/>
  1254 + <target_currency_symbol/>
  1255 + <target_null_string/>
  1256 + <target_aggregation_type>-</target_aggregation_type>
  1257 + </field>
  1258 + <field>
  1259 + <field_name>all_content</field_name>
  1260 + <key_value>37</key_value>
  1261 + <target_name>fcno37</target_name>
  1262 + <target_type>String</target_type>
  1263 + <target_format/>
  1264 + <target_length>-1</target_length>
  1265 + <target_precision>-1</target_precision>
  1266 + <target_decimal_symbol/>
  1267 + <target_grouping_symbol/>
  1268 + <target_currency_symbol/>
  1269 + <target_null_string/>
  1270 + <target_aggregation_type>-</target_aggregation_type>
  1271 + </field>
  1272 + <field>
  1273 + <field_name>all_content</field_name>
  1274 + <key_value>38</key_value>
  1275 + <target_name>fcno38</target_name>
  1276 + <target_type>String</target_type>
  1277 + <target_format/>
  1278 + <target_length>-1</target_length>
  1279 + <target_precision>-1</target_precision>
  1280 + <target_decimal_symbol/>
  1281 + <target_grouping_symbol/>
  1282 + <target_currency_symbol/>
  1283 + <target_null_string/>
  1284 + <target_aggregation_type>-</target_aggregation_type>
  1285 + </field>
  1286 + <field>
  1287 + <field_name>all_content</field_name>
  1288 + <key_value>39</key_value>
  1289 + <target_name>fcno39</target_name>
  1290 + <target_type>String</target_type>
  1291 + <target_format/>
  1292 + <target_length>-1</target_length>
  1293 + <target_precision>-1</target_precision>
  1294 + <target_decimal_symbol/>
  1295 + <target_grouping_symbol/>
  1296 + <target_currency_symbol/>
  1297 + <target_null_string/>
  1298 + <target_aggregation_type>-</target_aggregation_type>
  1299 + </field>
  1300 + <field>
  1301 + <field_name>all_content</field_name>
  1302 + <key_value>40</key_value>
  1303 + <target_name>fcno40</target_name>
  1304 + <target_type>String</target_type>
  1305 + <target_format/>
  1306 + <target_length>-1</target_length>
  1307 + <target_precision>-1</target_precision>
  1308 + <target_decimal_symbol/>
  1309 + <target_grouping_symbol/>
  1310 + <target_currency_symbol/>
  1311 + <target_null_string/>
  1312 + <target_aggregation_type>-</target_aggregation_type>
  1313 + </field>
  1314 + <field>
  1315 + <field_name>all_content</field_name>
  1316 + <key_value>41</key_value>
  1317 + <target_name>fcno41</target_name>
  1318 + <target_type>String</target_type>
  1319 + <target_format/>
  1320 + <target_length>-1</target_length>
  1321 + <target_precision>-1</target_precision>
  1322 + <target_decimal_symbol/>
  1323 + <target_grouping_symbol/>
  1324 + <target_currency_symbol/>
  1325 + <target_null_string/>
  1326 + <target_aggregation_type>-</target_aggregation_type>
  1327 + </field>
  1328 + <field>
  1329 + <field_name>all_content</field_name>
  1330 + <key_value>42</key_value>
  1331 + <target_name>fcno42</target_name>
  1332 + <target_type>String</target_type>
  1333 + <target_format/>
  1334 + <target_length>-1</target_length>
  1335 + <target_precision>-1</target_precision>
  1336 + <target_decimal_symbol/>
  1337 + <target_grouping_symbol/>
  1338 + <target_currency_symbol/>
  1339 + <target_null_string/>
  1340 + <target_aggregation_type>-</target_aggregation_type>
  1341 + </field>
  1342 + <field>
  1343 + <field_name>all_content</field_name>
  1344 + <key_value>43</key_value>
  1345 + <target_name>fcno43</target_name>
  1346 + <target_type>String</target_type>
  1347 + <target_format/>
  1348 + <target_length>-1</target_length>
  1349 + <target_precision>-1</target_precision>
  1350 + <target_decimal_symbol/>
  1351 + <target_grouping_symbol/>
  1352 + <target_currency_symbol/>
  1353 + <target_null_string/>
  1354 + <target_aggregation_type>-</target_aggregation_type>
  1355 + </field>
  1356 + <field>
  1357 + <field_name>all_content</field_name>
  1358 + <key_value>44</key_value>
  1359 + <target_name>fcno44</target_name>
  1360 + <target_type>String</target_type>
  1361 + <target_format/>
  1362 + <target_length>-1</target_length>
  1363 + <target_precision>-1</target_precision>
  1364 + <target_decimal_symbol/>
  1365 + <target_grouping_symbol/>
  1366 + <target_currency_symbol/>
  1367 + <target_null_string/>
  1368 + <target_aggregation_type>-</target_aggregation_type>
  1369 + </field>
  1370 + <field>
  1371 + <field_name>all_content</field_name>
  1372 + <key_value>45</key_value>
  1373 + <target_name>fcno45</target_name>
  1374 + <target_type>String</target_type>
  1375 + <target_format/>
  1376 + <target_length>-1</target_length>
  1377 + <target_precision>-1</target_precision>
  1378 + <target_decimal_symbol/>
  1379 + <target_grouping_symbol/>
  1380 + <target_currency_symbol/>
  1381 + <target_null_string/>
  1382 + <target_aggregation_type>-</target_aggregation_type>
  1383 + </field>
  1384 + <field>
  1385 + <field_name>all_content</field_name>
  1386 + <key_value>46</key_value>
  1387 + <target_name>fcno46</target_name>
  1388 + <target_type>String</target_type>
  1389 + <target_format/>
  1390 + <target_length>-1</target_length>
  1391 + <target_precision>-1</target_precision>
  1392 + <target_decimal_symbol/>
  1393 + <target_grouping_symbol/>
  1394 + <target_currency_symbol/>
  1395 + <target_null_string/>
  1396 + <target_aggregation_type>-</target_aggregation_type>
  1397 + </field>
  1398 + <field>
  1399 + <field_name>all_content</field_name>
  1400 + <key_value>47</key_value>
  1401 + <target_name>fcno47</target_name>
  1402 + <target_type>String</target_type>
  1403 + <target_format/>
  1404 + <target_length>-1</target_length>
  1405 + <target_precision>-1</target_precision>
  1406 + <target_decimal_symbol/>
  1407 + <target_grouping_symbol/>
  1408 + <target_currency_symbol/>
  1409 + <target_null_string/>
  1410 + <target_aggregation_type>-</target_aggregation_type>
  1411 + </field>
  1412 + <field>
  1413 + <field_name>all_content</field_name>
  1414 + <key_value>48</key_value>
  1415 + <target_name>fcno48</target_name>
  1416 + <target_type>String</target_type>
  1417 + <target_format/>
  1418 + <target_length>-1</target_length>
  1419 + <target_precision>-1</target_precision>
  1420 + <target_decimal_symbol/>
  1421 + <target_grouping_symbol/>
  1422 + <target_currency_symbol/>
  1423 + <target_null_string/>
  1424 + <target_aggregation_type>-</target_aggregation_type>
  1425 + </field>
  1426 + <field>
  1427 + <field_name>all_content</field_name>
  1428 + <key_value>49</key_value>
  1429 + <target_name>fcno49</target_name>
  1430 + <target_type>String</target_type>
  1431 + <target_format/>
  1432 + <target_length>-1</target_length>
  1433 + <target_precision>-1</target_precision>
  1434 + <target_decimal_symbol/>
  1435 + <target_grouping_symbol/>
  1436 + <target_currency_symbol/>
  1437 + <target_null_string/>
  1438 + <target_aggregation_type>-</target_aggregation_type>
  1439 + </field>
  1440 + <field>
  1441 + <field_name>all_content</field_name>
  1442 + <key_value>50</key_value>
  1443 + <target_name>fcno50</target_name>
  1444 + <target_type>String</target_type>
  1445 + <target_format/>
  1446 + <target_length>-1</target_length>
  1447 + <target_precision>-1</target_precision>
  1448 + <target_decimal_symbol/>
  1449 + <target_grouping_symbol/>
  1450 + <target_currency_symbol/>
  1451 + <target_null_string/>
  1452 + <target_aggregation_type>-</target_aggregation_type>
  1453 + </field>
  1454 + <field>
  1455 + <field_name>all_content</field_name>
  1456 + <key_value>51</key_value>
  1457 + <target_name>fcno51</target_name>
  1458 + <target_type>String</target_type>
  1459 + <target_format/>
  1460 + <target_length>-1</target_length>
  1461 + <target_precision>-1</target_precision>
  1462 + <target_decimal_symbol/>
  1463 + <target_grouping_symbol/>
  1464 + <target_currency_symbol/>
  1465 + <target_null_string/>
  1466 + <target_aggregation_type>-</target_aggregation_type>
  1467 + </field>
  1468 + <field>
  1469 + <field_name>all_content</field_name>
  1470 + <key_value>52</key_value>
  1471 + <target_name>fcno52</target_name>
  1472 + <target_type>String</target_type>
  1473 + <target_format/>
  1474 + <target_length>-1</target_length>
  1475 + <target_precision>-1</target_precision>
  1476 + <target_decimal_symbol/>
  1477 + <target_grouping_symbol/>
  1478 + <target_currency_symbol/>
  1479 + <target_null_string/>
  1480 + <target_aggregation_type>-</target_aggregation_type>
  1481 + </field>
  1482 + <field>
  1483 + <field_name>all_content</field_name>
  1484 + <key_value>53</key_value>
  1485 + <target_name>fcno53</target_name>
  1486 + <target_type>String</target_type>
  1487 + <target_format/>
  1488 + <target_length>-1</target_length>
  1489 + <target_precision>-1</target_precision>
  1490 + <target_decimal_symbol/>
  1491 + <target_grouping_symbol/>
  1492 + <target_currency_symbol/>
  1493 + <target_null_string/>
  1494 + <target_aggregation_type>-</target_aggregation_type>
  1495 + </field>
  1496 + <field>
  1497 + <field_name>all_content</field_name>
  1498 + <key_value>54</key_value>
  1499 + <target_name>fcno54</target_name>
  1500 + <target_type>String</target_type>
  1501 + <target_format/>
  1502 + <target_length>-1</target_length>
  1503 + <target_precision>-1</target_precision>
  1504 + <target_decimal_symbol/>
  1505 + <target_grouping_symbol/>
  1506 + <target_currency_symbol/>
  1507 + <target_null_string/>
  1508 + <target_aggregation_type>-</target_aggregation_type>
  1509 + </field>
  1510 + <field>
  1511 + <field_name>all_content</field_name>
  1512 + <key_value>55</key_value>
  1513 + <target_name>fcno55</target_name>
  1514 + <target_type>String</target_type>
  1515 + <target_format/>
  1516 + <target_length>-1</target_length>
  1517 + <target_precision>-1</target_precision>
  1518 + <target_decimal_symbol/>
  1519 + <target_grouping_symbol/>
  1520 + <target_currency_symbol/>
  1521 + <target_null_string/>
  1522 + <target_aggregation_type>-</target_aggregation_type>
  1523 + </field>
  1524 + <field>
  1525 + <field_name>all_content</field_name>
  1526 + <key_value>56</key_value>
  1527 + <target_name>fcno56</target_name>
  1528 + <target_type>String</target_type>
  1529 + <target_format/>
  1530 + <target_length>-1</target_length>
  1531 + <target_precision>-1</target_precision>
  1532 + <target_decimal_symbol/>
  1533 + <target_grouping_symbol/>
  1534 + <target_currency_symbol/>
  1535 + <target_null_string/>
  1536 + <target_aggregation_type>-</target_aggregation_type>
  1537 + </field>
  1538 + <field>
  1539 + <field_name>all_content</field_name>
  1540 + <key_value>57</key_value>
  1541 + <target_name>fcno57</target_name>
  1542 + <target_type>String</target_type>
  1543 + <target_format/>
  1544 + <target_length>-1</target_length>
  1545 + <target_precision>-1</target_precision>
  1546 + <target_decimal_symbol/>
  1547 + <target_grouping_symbol/>
  1548 + <target_currency_symbol/>
  1549 + <target_null_string/>
  1550 + <target_aggregation_type>-</target_aggregation_type>
  1551 + </field>
  1552 + <field>
  1553 + <field_name>all_content</field_name>
  1554 + <key_value>58</key_value>
  1555 + <target_name>fcno58</target_name>
  1556 + <target_type>String</target_type>
  1557 + <target_format/>
  1558 + <target_length>-1</target_length>
  1559 + <target_precision>-1</target_precision>
  1560 + <target_decimal_symbol/>
  1561 + <target_grouping_symbol/>
  1562 + <target_currency_symbol/>
  1563 + <target_null_string/>
  1564 + <target_aggregation_type>-</target_aggregation_type>
  1565 + </field>
  1566 + <field>
  1567 + <field_name>all_content</field_name>
  1568 + <key_value>59</key_value>
  1569 + <target_name>fcno59</target_name>
  1570 + <target_type>String</target_type>
  1571 + <target_format/>
  1572 + <target_length>-1</target_length>
  1573 + <target_precision>-1</target_precision>
  1574 + <target_decimal_symbol/>
  1575 + <target_grouping_symbol/>
  1576 + <target_currency_symbol/>
  1577 + <target_null_string/>
  1578 + <target_aggregation_type>-</target_aggregation_type>
  1579 + </field>
  1580 + <field>
  1581 + <field_name>all_content</field_name>
  1582 + <key_value>60</key_value>
  1583 + <target_name>fcno60</target_name>
  1584 + <target_type>String</target_type>
  1585 + <target_format/>
  1586 + <target_length>-1</target_length>
  1587 + <target_precision>-1</target_precision>
  1588 + <target_decimal_symbol/>
  1589 + <target_grouping_symbol/>
  1590 + <target_currency_symbol/>
  1591 + <target_null_string/>
  1592 + <target_aggregation_type>-</target_aggregation_type>
  1593 + </field>
  1594 + <field>
  1595 + <field_name>all_content</field_name>
  1596 + <key_value>61</key_value>
  1597 + <target_name>fcno61</target_name>
  1598 + <target_type>String</target_type>
  1599 + <target_format/>
  1600 + <target_length>-1</target_length>
  1601 + <target_precision>-1</target_precision>
  1602 + <target_decimal_symbol/>
  1603 + <target_grouping_symbol/>
  1604 + <target_currency_symbol/>
  1605 + <target_null_string/>
  1606 + <target_aggregation_type>-</target_aggregation_type>
  1607 + </field>
  1608 + <field>
  1609 + <field_name>all_content</field_name>
  1610 + <key_value>62</key_value>
  1611 + <target_name>fcno62</target_name>
  1612 + <target_type>String</target_type>
  1613 + <target_format/>
  1614 + <target_length>-1</target_length>
  1615 + <target_precision>-1</target_precision>
  1616 + <target_decimal_symbol/>
  1617 + <target_grouping_symbol/>
  1618 + <target_currency_symbol/>
  1619 + <target_null_string/>
  1620 + <target_aggregation_type>-</target_aggregation_type>
  1621 + </field>
  1622 + <field>
  1623 + <field_name>all_content</field_name>
  1624 + <key_value>63</key_value>
  1625 + <target_name>fcno63</target_name>
  1626 + <target_type>String</target_type>
  1627 + <target_format/>
  1628 + <target_length>-1</target_length>
  1629 + <target_precision>-1</target_precision>
  1630 + <target_decimal_symbol/>
  1631 + <target_grouping_symbol/>
  1632 + <target_currency_symbol/>
  1633 + <target_null_string/>
  1634 + <target_aggregation_type>-</target_aggregation_type>
  1635 + </field>
  1636 + <field>
  1637 + <field_name>all_content</field_name>
  1638 + <key_value>64</key_value>
  1639 + <target_name>fcno64</target_name>
  1640 + <target_type>String</target_type>
  1641 + <target_format/>
  1642 + <target_length>-1</target_length>
  1643 + <target_precision>-1</target_precision>
  1644 + <target_decimal_symbol/>
  1645 + <target_grouping_symbol/>
  1646 + <target_currency_symbol/>
  1647 + <target_null_string/>
  1648 + <target_aggregation_type>-</target_aggregation_type>
  1649 + </field>
  1650 + <field>
  1651 + <field_name>all_content</field_name>
  1652 + <key_value>65</key_value>
  1653 + <target_name>fcno65</target_name>
  1654 + <target_type>String</target_type>
  1655 + <target_format/>
  1656 + <target_length>-1</target_length>
  1657 + <target_precision>-1</target_precision>
  1658 + <target_decimal_symbol/>
  1659 + <target_grouping_symbol/>
  1660 + <target_currency_symbol/>
  1661 + <target_null_string/>
  1662 + <target_aggregation_type>-</target_aggregation_type>
  1663 + </field>
  1664 + <field>
  1665 + <field_name>all_content</field_name>
  1666 + <key_value>66</key_value>
  1667 + <target_name>fcno66</target_name>
  1668 + <target_type>String</target_type>
  1669 + <target_format/>
  1670 + <target_length>-1</target_length>
  1671 + <target_precision>-1</target_precision>
  1672 + <target_decimal_symbol/>
  1673 + <target_grouping_symbol/>
  1674 + <target_currency_symbol/>
  1675 + <target_null_string/>
  1676 + <target_aggregation_type>-</target_aggregation_type>
  1677 + </field>
  1678 + <field>
  1679 + <field_name>all_content</field_name>
  1680 + <key_value>67</key_value>
  1681 + <target_name>fcno67</target_name>
  1682 + <target_type>String</target_type>
  1683 + <target_format/>
  1684 + <target_length>-1</target_length>
  1685 + <target_precision>-1</target_precision>
  1686 + <target_decimal_symbol/>
  1687 + <target_grouping_symbol/>
  1688 + <target_currency_symbol/>
  1689 + <target_null_string/>
  1690 + <target_aggregation_type>-</target_aggregation_type>
  1691 + </field>
  1692 + <field>
  1693 + <field_name>all_content</field_name>
  1694 + <key_value>68</key_value>
  1695 + <target_name>fcno68</target_name>
  1696 + <target_type>String</target_type>
  1697 + <target_format/>
  1698 + <target_length>-1</target_length>
  1699 + <target_precision>-1</target_precision>
  1700 + <target_decimal_symbol/>
  1701 + <target_grouping_symbol/>
  1702 + <target_currency_symbol/>
  1703 + <target_null_string/>
  1704 + <target_aggregation_type>-</target_aggregation_type>
  1705 + </field>
  1706 + <field>
  1707 + <field_name>all_content</field_name>
  1708 + <key_value>69</key_value>
  1709 + <target_name>fcno69</target_name>
  1710 + <target_type>String</target_type>
  1711 + <target_format/>
  1712 + <target_length>-1</target_length>
  1713 + <target_precision>-1</target_precision>
  1714 + <target_decimal_symbol/>
  1715 + <target_grouping_symbol/>
  1716 + <target_currency_symbol/>
  1717 + <target_null_string/>
  1718 + <target_aggregation_type>-</target_aggregation_type>
  1719 + </field>
  1720 + <field>
  1721 + <field_name>all_content</field_name>
  1722 + <key_value>70</key_value>
  1723 + <target_name>fcno70</target_name>
  1724 + <target_type>String</target_type>
  1725 + <target_format/>
  1726 + <target_length>-1</target_length>
  1727 + <target_precision>-1</target_precision>
  1728 + <target_decimal_symbol/>
  1729 + <target_grouping_symbol/>
  1730 + <target_currency_symbol/>
  1731 + <target_null_string/>
  1732 + <target_aggregation_type>-</target_aggregation_type>
  1733 + </field>
  1734 + </fields>
  1735 + <cluster_schema/>
  1736 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1737 + <xloc>690</xloc>
  1738 + <yloc>272</yloc>
  1739 + <draw>Y</draw>
  1740 + </GUI>
  1741 + </step>
  1742 +
  1743 + <step>
  1744 + <name>&#x53bb;&#x9664;&#x5b57;&#x6bb5;</name>
  1745 + <type>SelectValues</type>
  1746 + <description/>
  1747 + <distribute>N</distribute>
  1748 + <custom_distribution/>
  1749 + <copies>1</copies>
  1750 + <partitioning>
  1751 + <method>none</method>
  1752 + <schema_name/>
  1753 + </partitioning>
  1754 + <fields> <field> <name>lp</name>
  1755 + <rename/>
  1756 + <length>-2</length>
  1757 + <precision>-2</precision>
  1758 + </field> <field> <name>fcno1</name>
  1759 + <rename/>
  1760 + <length>-2</length>
  1761 + <precision>-2</precision>
  1762 + </field> <field> <name>fcno2</name>
  1763 + <rename/>
  1764 + <length>-2</length>
  1765 + <precision>-2</precision>
  1766 + </field> <field> <name>fcno3</name>
  1767 + <rename/>
  1768 + <length>-2</length>
  1769 + <precision>-2</precision>
  1770 + </field> <field> <name>fcno4</name>
  1771 + <rename/>
  1772 + <length>-2</length>
  1773 + <precision>-2</precision>
  1774 + </field> <field> <name>fcno5</name>
  1775 + <rename/>
  1776 + <length>-2</length>
  1777 + <precision>-2</precision>
  1778 + </field> <field> <name>fcno6</name>
  1779 + <rename/>
  1780 + <length>-2</length>
  1781 + <precision>-2</precision>
  1782 + </field> <field> <name>fcno7</name>
  1783 + <rename/>
  1784 + <length>-2</length>
  1785 + <precision>-2</precision>
  1786 + </field> <field> <name>fcno8</name>
  1787 + <rename/>
  1788 + <length>-2</length>
  1789 + <precision>-2</precision>
  1790 + </field> <field> <name>fcno9</name>
  1791 + <rename/>
  1792 + <length>-2</length>
  1793 + <precision>-2</precision>
  1794 + </field> <field> <name>fcno10</name>
  1795 + <rename/>
  1796 + <length>-2</length>
  1797 + <precision>-2</precision>
  1798 + </field> <field> <name>fcno11</name>
  1799 + <rename/>
  1800 + <length>-2</length>
  1801 + <precision>-2</precision>
  1802 + </field> <field> <name>fcno12</name>
  1803 + <rename/>
  1804 + <length>-2</length>
  1805 + <precision>-2</precision>
  1806 + </field> <field> <name>fcno13</name>
  1807 + <rename/>
  1808 + <length>-2</length>
  1809 + <precision>-2</precision>
  1810 + </field> <field> <name>fcno14</name>
  1811 + <rename/>
  1812 + <length>-2</length>
  1813 + <precision>-2</precision>
  1814 + </field> <field> <name>fcno15</name>
  1815 + <rename/>
  1816 + <length>-2</length>
  1817 + <precision>-2</precision>
  1818 + </field> <field> <name>fcno16</name>
  1819 + <rename/>
  1820 + <length>-2</length>
  1821 + <precision>-2</precision>
  1822 + </field> <field> <name>fcno17</name>
  1823 + <rename/>
  1824 + <length>-2</length>
  1825 + <precision>-2</precision>
  1826 + </field> <field> <name>fcno18</name>
  1827 + <rename/>
  1828 + <length>-2</length>
  1829 + <precision>-2</precision>
  1830 + </field> <field> <name>fcno19</name>
  1831 + <rename/>
  1832 + <length>-2</length>
  1833 + <precision>-2</precision>
  1834 + </field> <field> <name>fcno20</name>
  1835 + <rename/>
  1836 + <length>-2</length>
  1837 + <precision>-2</precision>
  1838 + </field> <field> <name>fcno21</name>
  1839 + <rename/>
  1840 + <length>-2</length>
  1841 + <precision>-2</precision>
  1842 + </field> <field> <name>fcno22</name>
  1843 + <rename/>
  1844 + <length>-2</length>
  1845 + <precision>-2</precision>
  1846 + </field> <field> <name>fcno23</name>
  1847 + <rename/>
  1848 + <length>-2</length>
  1849 + <precision>-2</precision>
  1850 + </field> <field> <name>fcno24</name>
  1851 + <rename/>
  1852 + <length>-2</length>
  1853 + <precision>-2</precision>
  1854 + </field> <field> <name>fcno25</name>
  1855 + <rename/>
  1856 + <length>-2</length>
  1857 + <precision>-2</precision>
  1858 + </field> <field> <name>fcno26</name>
  1859 + <rename/>
  1860 + <length>-2</length>
  1861 + <precision>-2</precision>
  1862 + </field> <field> <name>fcno27</name>
  1863 + <rename/>
  1864 + <length>-2</length>
  1865 + <precision>-2</precision>
  1866 + </field> <field> <name>fcno28</name>
  1867 + <rename/>
  1868 + <length>-2</length>
  1869 + <precision>-2</precision>
  1870 + </field> <field> <name>fcno29</name>
  1871 + <rename/>
  1872 + <length>-2</length>
  1873 + <precision>-2</precision>
  1874 + </field> <field> <name>fcno30</name>
  1875 + <rename/>
  1876 + <length>-2</length>
  1877 + <precision>-2</precision>
  1878 + </field> <field> <name>fcno31</name>
  1879 + <rename/>
  1880 + <length>-2</length>
  1881 + <precision>-2</precision>
  1882 + </field> <field> <name>fcno32</name>
  1883 + <rename/>
  1884 + <length>-2</length>
  1885 + <precision>-2</precision>
  1886 + </field> <field> <name>fcno33</name>
  1887 + <rename/>
  1888 + <length>-2</length>
  1889 + <precision>-2</precision>
  1890 + </field> <field> <name>fcno34</name>
  1891 + <rename/>
  1892 + <length>-2</length>
  1893 + <precision>-2</precision>
  1894 + </field> <field> <name>fcno35</name>
  1895 + <rename/>
  1896 + <length>-2</length>
  1897 + <precision>-2</precision>
  1898 + </field> <field> <name>fcno36</name>
  1899 + <rename/>
  1900 + <length>-2</length>
  1901 + <precision>-2</precision>
  1902 + </field> <field> <name>fcno37</name>
  1903 + <rename/>
  1904 + <length>-2</length>
  1905 + <precision>-2</precision>
  1906 + </field> <field> <name>fcno38</name>
  1907 + <rename/>
  1908 + <length>-2</length>
  1909 + <precision>-2</precision>
  1910 + </field> <field> <name>fcno39</name>
  1911 + <rename/>
  1912 + <length>-2</length>
  1913 + <precision>-2</precision>
  1914 + </field> <field> <name>fcno40</name>
  1915 + <rename/>
  1916 + <length>-2</length>
  1917 + <precision>-2</precision>
  1918 + </field> <field> <name>fcno41</name>
  1919 + <rename/>
  1920 + <length>-2</length>
  1921 + <precision>-2</precision>
  1922 + </field> <field> <name>fcno42</name>
  1923 + <rename/>
  1924 + <length>-2</length>
  1925 + <precision>-2</precision>
  1926 + </field> <field> <name>fcno43</name>
  1927 + <rename/>
  1928 + <length>-2</length>
  1929 + <precision>-2</precision>
  1930 + </field> <field> <name>fcno44</name>
  1931 + <rename/>
  1932 + <length>-2</length>
  1933 + <precision>-2</precision>
  1934 + </field> <field> <name>fcno45</name>
  1935 + <rename/>
  1936 + <length>-2</length>
  1937 + <precision>-2</precision>
  1938 + </field> <field> <name>fcno46</name>
  1939 + <rename/>
  1940 + <length>-2</length>
  1941 + <precision>-2</precision>
  1942 + </field> <field> <name>fcno47</name>
  1943 + <rename/>
  1944 + <length>-2</length>
  1945 + <precision>-2</precision>
  1946 + </field> <field> <name>fcno48</name>
  1947 + <rename/>
  1948 + <length>-2</length>
  1949 + <precision>-2</precision>
  1950 + </field> <field> <name>fcno49</name>
  1951 + <rename/>
  1952 + <length>-2</length>
  1953 + <precision>-2</precision>
  1954 + </field> <field> <name>fcno50</name>
  1955 + <rename/>
  1956 + <length>-2</length>
  1957 + <precision>-2</precision>
  1958 + </field> <field> <name>fcno51</name>
  1959 + <rename/>
  1960 + <length>-2</length>
  1961 + <precision>-2</precision>
  1962 + </field> <field> <name>fcno52</name>
  1963 + <rename/>
  1964 + <length>-2</length>
  1965 + <precision>-2</precision>
  1966 + </field> <field> <name>fcno53</name>
  1967 + <rename/>
  1968 + <length>-2</length>
  1969 + <precision>-2</precision>
  1970 + </field> <field> <name>fcno54</name>
  1971 + <rename/>
  1972 + <length>-2</length>
  1973 + <precision>-2</precision>
  1974 + </field> <field> <name>fcno55</name>
  1975 + <rename/>
  1976 + <length>-2</length>
  1977 + <precision>-2</precision>
  1978 + </field> <field> <name>fcno56</name>
  1979 + <rename/>
  1980 + <length>-2</length>
  1981 + <precision>-2</precision>
  1982 + </field> <field> <name>fcno57</name>
  1983 + <rename/>
  1984 + <length>-2</length>
  1985 + <precision>-2</precision>
  1986 + </field> <field> <name>fcno58</name>
  1987 + <rename/>
  1988 + <length>-2</length>
  1989 + <precision>-2</precision>
  1990 + </field> <field> <name>fcno59</name>
  1991 + <rename/>
  1992 + <length>-2</length>
  1993 + <precision>-2</precision>
  1994 + </field> <field> <name>fcno60</name>
  1995 + <rename/>
  1996 + <length>-2</length>
  1997 + <precision>-2</precision>
  1998 + </field> <field> <name>fcno61</name>
  1999 + <rename/>
  2000 + <length>-2</length>
  2001 + <precision>-2</precision>
  2002 + </field> <field> <name>fcno62</name>
  2003 + <rename/>
  2004 + <length>-2</length>
  2005 + <precision>-2</precision>
  2006 + </field> <field> <name>fcno63</name>
  2007 + <rename/>
  2008 + <length>-2</length>
  2009 + <precision>-2</precision>
  2010 + </field> <field> <name>fcno64</name>
  2011 + <rename/>
  2012 + <length>-2</length>
  2013 + <precision>-2</precision>
  2014 + </field> <field> <name>fcno65</name>
  2015 + <rename/>
  2016 + <length>-2</length>
  2017 + <precision>-2</precision>
  2018 + </field> <field> <name>fcno66</name>
  2019 + <rename/>
  2020 + <length>-2</length>
  2021 + <precision>-2</precision>
  2022 + </field> <field> <name>fcno67</name>
  2023 + <rename/>
  2024 + <length>-2</length>
  2025 + <precision>-2</precision>
  2026 + </field> <field> <name>fcno68</name>
  2027 + <rename/>
  2028 + <length>-2</length>
  2029 + <precision>-2</precision>
  2030 + </field> <field> <name>fcno69</name>
  2031 + <rename/>
  2032 + <length>-2</length>
  2033 + <precision>-2</precision>
  2034 + </field> <field> <name>fcno70</name>
  2035 + <rename/>
  2036 + <length>-2</length>
  2037 + <precision>-2</precision>
  2038 + </field> <select_unspecified>N</select_unspecified>
  2039 + </fields> <cluster_schema/>
  2040 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2041 + <xloc>691</xloc>
  2042 + <yloc>361</yloc>
  2043 + <draw>Y</draw>
  2044 + </GUI>
  2045 + </step>
  2046 +
  2047 + <step>
  2048 + <name>&#x5408;&#x5e76;&#x5185;&#x5bb9;</name>
  2049 + <type>ScriptValueMod</type>
  2050 + <description/>
  2051 + <distribute>Y</distribute>
  2052 + <custom_distribution/>
  2053 + <copies>1</copies>
  2054 + <partitioning>
  2055 + <method>none</method>
  2056 + <schema_name/>
  2057 + </partitioning>
  2058 + <compatible>N</compatible>
  2059 + <optimizationLevel>9</optimizationLevel>
  2060 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  2061 + <jsScript_name>Script 1</jsScript_name>
  2062 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x987a;&#x5e8f;&#xff0c;id,fcsj,jhlc,zdname,bctype,xldir,isfb&#xa;var all_content_array &#x3d; &#x5b;&#x5d;&#x3b;&#xa;var all_content &#x3d; &#x22;&#x22;&#x3b; &#xa;all_content_array.push&#x28;id&#x29;&#x3b;&#xa;all_content_array.push&#x28;fcsj&#x29;&#x3b;&#xa;all_content_array.push&#x28;jhlc&#x29;&#x3b;&#xa;all_content_array.push&#x28;fczdName&#x29;&#x3b;&#xa;all_content_array.push&#x28;bc_type&#x29;&#x3b;&#xa;all_content_array.push&#x28;xl_dir&#x29;&#x3b;&#xa;all_content_array.push&#x28;isfb&#x29;&#x3b;&#xa;all_content_array.push&#x28;qdz &#x7c;&#x7c; &#x27;null&#x27;&#x29;&#x3b;&#xa;all_content_array.push&#x28;zdz &#x7c;&#x7c; &#x27;null&#x27;&#x29;&#x3b;&#xa;all_content_array.push&#x28;tcc &#x7c;&#x7c; &#x27;null&#x27;&#x29;&#x3b;&#xa;&#xa;all_content &#x3d; all_content_array.join&#x28;&#x22;,&#x22;&#x29;&#x3b; &#x2f;&#x2f; &#x9017;&#x53f7;&#x5206;&#x9694;</jsScript_script>
  2063 + </jsScript> </jsScripts> <fields> <field> <name>all_content</name>
  2064 + <rename>all_content</rename>
  2065 + <type>String</type>
  2066 + <length>-1</length>
  2067 + <precision>-1</precision>
  2068 + <replace>N</replace>
  2069 + </field> </fields> <cluster_schema/>
  2070 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2071 + <xloc>551</xloc>
  2072 + <yloc>366</yloc>
  2073 + <draw>Y</draw>
  2074 + </GUI>
  2075 + </step>
  2076 +
  2077 + <step>
  2078 + <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
  2079 + <type>SelectValues</type>
  2080 + <description/>
  2081 + <distribute>Y</distribute>
  2082 + <custom_distribution/>
  2083 + <copies>1</copies>
  2084 + <partitioning>
  2085 + <method>none</method>
  2086 + <schema_name/>
  2087 + </partitioning>
  2088 + <fields> <field> <name>id</name>
  2089 + <rename/>
  2090 + <length>-2</length>
  2091 + <precision>-2</precision>
  2092 + </field> <field> <name>lp</name>
  2093 + <rename/>
  2094 + <length>-2</length>
  2095 + <precision>-2</precision>
  2096 + </field> <field> <name>fcsj</name>
  2097 + <rename/>
  2098 + <length>-2</length>
  2099 + <precision>-2</precision>
  2100 + </field> <field> <name>fcno</name>
  2101 + <rename/>
  2102 + <length>-2</length>
  2103 + <precision>-2</precision>
  2104 + </field> <field> <name>bcs</name>
  2105 + <rename/>
  2106 + <length>-2</length>
  2107 + <precision>-2</precision>
  2108 + </field> <field> <name>bc_type</name>
  2109 + <rename/>
  2110 + <length>-2</length>
  2111 + <precision>-2</precision>
  2112 + </field> <field> <name>qdzName</name>
  2113 + <rename/>
  2114 + <length>-2</length>
  2115 + <precision>-2</precision>
  2116 + </field> <field> <name>zdzName</name>
  2117 + <rename/>
  2118 + <length>-2</length>
  2119 + <precision>-2</precision>
  2120 + </field> <field> <name>xl_dir</name>
  2121 + <rename/>
  2122 + <length>-2</length>
  2123 + <precision>-2</precision>
  2124 + </field> <field> <name>isfb</name>
  2125 + <rename/>
  2126 + <length>-2</length>
  2127 + <precision>-2</precision>
  2128 + </field> <field> <name>jhlc</name>
  2129 + <rename/>
  2130 + <length>-2</length>
  2131 + <precision>-2</precision>
  2132 + </field> <field> <name>qdz</name>
  2133 + <rename/>
  2134 + <length>-2</length>
  2135 + <precision>-2</precision>
  2136 + </field> <field> <name>zdz</name>
  2137 + <rename/>
  2138 + <length>-2</length>
  2139 + <precision>-2</precision>
  2140 + </field> <field> <name>tcc</name>
  2141 + <rename/>
  2142 + <length>-2</length>
  2143 + <precision>-2</precision>
  2144 + </field> <select_unspecified>N</select_unspecified>
  2145 + </fields> <cluster_schema/>
  2146 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2147 + <xloc>690</xloc>
  2148 + <yloc>188</yloc>
  2149 + <draw>Y</draw>
  2150 + </GUI>
  2151 + </step>
  2152 +
  2153 + <step>
  2154 + <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9; 2</name>
  2155 + <type>SelectValues</type>
  2156 + <description/>
  2157 + <distribute>Y</distribute>
  2158 + <custom_distribution/>
  2159 + <copies>1</copies>
  2160 + <partitioning>
  2161 + <method>none</method>
  2162 + <schema_name/>
  2163 + </partitioning>
  2164 + <fields> <field> <name>id</name>
  2165 + <rename/>
  2166 + <length>-2</length>
  2167 + <precision>-2</precision>
  2168 + </field> <field> <name>lp</name>
  2169 + <rename/>
  2170 + <length>-2</length>
  2171 + <precision>-2</precision>
  2172 + </field> <field> <name>fcsj</name>
  2173 + <rename/>
  2174 + <length>-2</length>
  2175 + <precision>-2</precision>
  2176 + </field> <field> <name>fcno</name>
  2177 + <rename/>
  2178 + <length>-2</length>
  2179 + <precision>-2</precision>
  2180 + </field> <field> <name>bcs</name>
  2181 + <rename/>
  2182 + <length>-2</length>
  2183 + <precision>-2</precision>
  2184 + </field> <field> <name>bc_type</name>
  2185 + <rename/>
  2186 + <length>-2</length>
  2187 + <precision>-2</precision>
  2188 + </field> <field> <name>qdzName</name>
  2189 + <rename/>
  2190 + <length>-2</length>
  2191 + <precision>-2</precision>
  2192 + </field> <field> <name>zdzName</name>
  2193 + <rename/>
  2194 + <length>-2</length>
  2195 + <precision>-2</precision>
  2196 + </field> <field> <name>xl_dir</name>
  2197 + <rename/>
  2198 + <length>-2</length>
  2199 + <precision>-2</precision>
  2200 + </field> <field> <name>isfb</name>
  2201 + <rename/>
  2202 + <length>-2</length>
  2203 + <precision>-2</precision>
  2204 + </field> <field> <name>jhlc</name>
  2205 + <rename/>
  2206 + <length>-2</length>
  2207 + <precision>-2</precision>
  2208 + </field> <field> <name>qdz</name>
  2209 + <rename/>
  2210 + <length>-2</length>
  2211 + <precision>-2</precision>
  2212 + </field> <field> <name>zdz</name>
  2213 + <rename/>
  2214 + <length>-2</length>
  2215 + <precision>-2</precision>
  2216 + </field> <field> <name>tcc</name>
  2217 + <rename/>
  2218 + <length>-2</length>
  2219 + <precision>-2</precision>
  2220 + </field> <select_unspecified>N</select_unspecified>
  2221 + </fields> <cluster_schema/>
  2222 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2223 + <xloc>402</xloc>
  2224 + <yloc>189</yloc>
  2225 + <draw>Y</draw>
  2226 + </GUI>
  2227 + </step>
  2228 +
  2229 + <step>
  2230 + <name>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</name>
  2231 + <type>SortRows</type>
  2232 + <description/>
  2233 + <distribute>Y</distribute>
  2234 + <custom_distribution/>
  2235 + <copies>1</copies>
  2236 + <partitioning>
  2237 + <method>none</method>
  2238 + <schema_name/>
  2239 + </partitioning>
  2240 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  2241 + <prefix>out</prefix>
  2242 + <sort_size>1000000</sort_size>
  2243 + <free_memory/>
  2244 + <compress>N</compress>
  2245 + <compress_variable/>
  2246 + <unique_rows>N</unique_rows>
  2247 + <fields>
  2248 + <field>
  2249 + <name>bcs</name>
  2250 + <ascending>Y</ascending>
  2251 + <case_sensitive>N</case_sensitive>
  2252 + <presorted>N</presorted>
  2253 + </field>
  2254 + </fields>
  2255 + <cluster_schema/>
  2256 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2257 + <xloc>549</xloc>
  2258 + <yloc>191</yloc>
  2259 + <draw>Y</draw>
  2260 + </GUI>
  2261 + </step>
  2262 +
  2263 + <step>
  2264 + <name>&#x6587;&#x672c;&#x6587;&#x4ef6;&#x8f93;&#x51fa;</name>
  2265 + <type>TextFileOutput</type>
  2266 + <description/>
  2267 + <distribute>Y</distribute>
  2268 + <custom_distribution/>
  2269 + <copies>1</copies>
  2270 + <partitioning>
  2271 + <method>none</method>
  2272 + <schema_name/>
  2273 + </partitioning>
  2274 + <separator>&#x3b;</separator>
  2275 + <enclosure>&#x22;</enclosure>
  2276 + <enclosure_forced>N</enclosure_forced>
  2277 + <enclosure_fix_disabled>N</enclosure_fix_disabled>
  2278 + <header>Y</header>
  2279 + <footer>N</footer>
  2280 + <format>DOS</format>
  2281 + <compression>None</compression>
  2282 + <encoding>UTF-8</encoding>
  2283 + <endedLine/>
  2284 + <fileNameInField>N</fileNameInField>
  2285 + <fileNameField/>
  2286 + <create_parent_folder>Y</create_parent_folder>
  2287 + <file>
  2288 + <name>&#x24;&#x7b;tempfilepath&#x7d;</name>
  2289 + <is_command>N</is_command>
  2290 + <servlet_output>N</servlet_output>
  2291 + <do_not_open_new_file_init>N</do_not_open_new_file_init>
  2292 + <extention>txt</extention>
  2293 + <append>N</append>
  2294 + <split>N</split>
  2295 + <haspartno>N</haspartno>
  2296 + <add_date>N</add_date>
  2297 + <add_time>N</add_time>
  2298 + <SpecifyFormat>N</SpecifyFormat>
  2299 + <date_time_format/>
  2300 + <add_to_result_filenames>Y</add_to_result_filenames>
  2301 + <pad>N</pad>
  2302 + <fast_dump>N</fast_dump>
  2303 + <splitevery>0</splitevery>
  2304 + </file>
  2305 + <fields>
  2306 + <field>
  2307 + <name>lp</name>
  2308 + <type>String</type>
  2309 + <format/>
  2310 + <currency/>
  2311 + <decimal/>
  2312 + <group/>
  2313 + <nullif/>
  2314 + <trim_type>none</trim_type>
  2315 + <length>255</length>
  2316 + <precision>-1</precision>
  2317 + </field>
  2318 + <field>
  2319 + <name>fcno1</name>
  2320 + <type>String</type>
  2321 + <format/>
  2322 + <currency/>
  2323 + <decimal/>
  2324 + <group/>
  2325 + <nullif/>
  2326 + <trim_type>none</trim_type>
  2327 + <length>-1</length>
  2328 + <precision>-1</precision>
  2329 + </field>
  2330 + <field>
  2331 + <name>fcno2</name>
  2332 + <type>String</type>
  2333 + <format/>
  2334 + <currency/>
  2335 + <decimal/>
  2336 + <group/>
  2337 + <nullif/>
  2338 + <trim_type>none</trim_type>
  2339 + <length>-1</length>
  2340 + <precision>-1</precision>
  2341 + </field>
  2342 + <field>
  2343 + <name>fcno3</name>
  2344 + <type>String</type>
  2345 + <format/>
  2346 + <currency/>
  2347 + <decimal/>
  2348 + <group/>
  2349 + <nullif/>
  2350 + <trim_type>none</trim_type>
  2351 + <length>-1</length>
  2352 + <precision>-1</precision>
  2353 + </field>
  2354 + <field>
  2355 + <name>fcno4</name>
  2356 + <type>String</type>
  2357 + <format/>
  2358 + <currency/>
  2359 + <decimal/>
  2360 + <group/>
  2361 + <nullif/>
  2362 + <trim_type>none</trim_type>
  2363 + <length>-1</length>
  2364 + <precision>-1</precision>
  2365 + </field>
  2366 + <field>
  2367 + <name>fcno5</name>
  2368 + <type>String</type>
  2369 + <format/>
  2370 + <currency/>
  2371 + <decimal/>
  2372 + <group/>
  2373 + <nullif/>
  2374 + <trim_type>none</trim_type>
  2375 + <length>-1</length>
  2376 + <precision>-1</precision>
  2377 + </field>
  2378 + <field>
  2379 + <name>fcno6</name>
  2380 + <type>String</type>
  2381 + <format/>
  2382 + <currency/>
  2383 + <decimal/>
  2384 + <group/>
  2385 + <nullif/>
  2386 + <trim_type>none</trim_type>
  2387 + <length>-1</length>
  2388 + <precision>-1</precision>
  2389 + </field>
  2390 + <field>
  2391 + <name>fcno7</name>
  2392 + <type>String</type>
  2393 + <format/>
  2394 + <currency/>
  2395 + <decimal/>
  2396 + <group/>
  2397 + <nullif/>
  2398 + <trim_type>none</trim_type>
  2399 + <length>-1</length>
  2400 + <precision>-1</precision>
  2401 + </field>
  2402 + <field>
  2403 + <name>fcno8</name>
  2404 + <type>String</type>
  2405 + <format/>
  2406 + <currency/>
  2407 + <decimal/>
  2408 + <group/>
  2409 + <nullif/>
  2410 + <trim_type>none</trim_type>
  2411 + <length>-1</length>
  2412 + <precision>-1</precision>
  2413 + </field>
  2414 + <field>
  2415 + <name>fcno9</name>
  2416 + <type>String</type>
  2417 + <format/>
  2418 + <currency/>
  2419 + <decimal/>
  2420 + <group/>
  2421 + <nullif/>
  2422 + <trim_type>none</trim_type>
  2423 + <length>-1</length>
  2424 + <precision>-1</precision>
  2425 + </field>
  2426 + <field>
  2427 + <name>fcno10</name>
  2428 + <type>String</type>
  2429 + <format/>
  2430 + <currency/>
  2431 + <decimal/>
  2432 + <group/>
  2433 + <nullif/>
  2434 + <trim_type>none</trim_type>
  2435 + <length>-1</length>
  2436 + <precision>-1</precision>
  2437 + </field>
  2438 + <field>
  2439 + <name>fcno11</name>
  2440 + <type>String</type>
  2441 + <format/>
  2442 + <currency/>
  2443 + <decimal/>
  2444 + <group/>
  2445 + <nullif/>
  2446 + <trim_type>none</trim_type>
  2447 + <length>-1</length>
  2448 + <precision>-1</precision>
  2449 + </field>
  2450 + <field>
  2451 + <name>fcno12</name>
  2452 + <type>String</type>
  2453 + <format/>
  2454 + <currency/>
  2455 + <decimal/>
  2456 + <group/>
  2457 + <nullif/>
  2458 + <trim_type>none</trim_type>
  2459 + <length>-1</length>
  2460 + <precision>-1</precision>
  2461 + </field>
  2462 + <field>
  2463 + <name>fcno13</name>
  2464 + <type>String</type>
  2465 + <format/>
  2466 + <currency/>
  2467 + <decimal/>
  2468 + <group/>
  2469 + <nullif/>
  2470 + <trim_type>none</trim_type>
  2471 + <length>-1</length>
  2472 + <precision>-1</precision>
  2473 + </field>
  2474 + <field>
  2475 + <name>fcno14</name>
  2476 + <type>String</type>
  2477 + <format/>
  2478 + <currency/>
  2479 + <decimal/>
  2480 + <group/>
  2481 + <nullif/>
  2482 + <trim_type>none</trim_type>
  2483 + <length>-1</length>
  2484 + <precision>-1</precision>
  2485 + </field>
  2486 + <field>
  2487 + <name>fcno15</name>
  2488 + <type>String</type>
  2489 + <format/>
  2490 + <currency/>
  2491 + <decimal/>
  2492 + <group/>
  2493 + <nullif/>
  2494 + <trim_type>none</trim_type>
  2495 + <length>-1</length>
  2496 + <precision>-1</precision>
  2497 + </field>
  2498 + <field>
  2499 + <name>fcno16</name>
  2500 + <type>String</type>
  2501 + <format/>
  2502 + <currency/>
  2503 + <decimal/>
  2504 + <group/>
  2505 + <nullif/>
  2506 + <trim_type>none</trim_type>
  2507 + <length>-1</length>
  2508 + <precision>-1</precision>
  2509 + </field>
  2510 + <field>
  2511 + <name>fcno17</name>
  2512 + <type>String</type>
  2513 + <format/>
  2514 + <currency/>
  2515 + <decimal/>
  2516 + <group/>
  2517 + <nullif/>
  2518 + <trim_type>none</trim_type>
  2519 + <length>-1</length>
  2520 + <precision>-1</precision>
  2521 + </field>
  2522 + <field>
  2523 + <name>fcno18</name>
  2524 + <type>String</type>
  2525 + <format/>
  2526 + <currency/>
  2527 + <decimal/>
  2528 + <group/>
  2529 + <nullif/>
  2530 + <trim_type>none</trim_type>
  2531 + <length>-1</length>
  2532 + <precision>-1</precision>
  2533 + </field>
  2534 + <field>
  2535 + <name>fcno19</name>
  2536 + <type>String</type>
  2537 + <format/>
  2538 + <currency/>
  2539 + <decimal/>
  2540 + <group/>
  2541 + <nullif/>
  2542 + <trim_type>none</trim_type>
  2543 + <length>-1</length>
  2544 + <precision>-1</precision>
  2545 + </field>
  2546 + <field>
  2547 + <name>fcno20</name>
  2548 + <type>String</type>
  2549 + <format/>
  2550 + <currency/>
  2551 + <decimal/>
  2552 + <group/>
  2553 + <nullif/>
  2554 + <trim_type>none</trim_type>
  2555 + <length>-1</length>
  2556 + <precision>-1</precision>
  2557 + </field>
  2558 + <field>
  2559 + <name>fcno21</name>
  2560 + <type>String</type>
  2561 + <format/>
  2562 + <currency/>
  2563 + <decimal/>
  2564 + <group/>
  2565 + <nullif/>
  2566 + <trim_type>none</trim_type>
  2567 + <length>-1</length>
  2568 + <precision>-1</precision>
  2569 + </field>
  2570 + <field>
  2571 + <name>fcno22</name>
  2572 + <type>String</type>
  2573 + <format/>
  2574 + <currency/>
  2575 + <decimal/>
  2576 + <group/>
  2577 + <nullif/>
  2578 + <trim_type>none</trim_type>
  2579 + <length>-1</length>
  2580 + <precision>-1</precision>
  2581 + </field>
  2582 + <field>
  2583 + <name>fcno23</name>
  2584 + <type>String</type>
  2585 + <format/>
  2586 + <currency/>
  2587 + <decimal/>
  2588 + <group/>
  2589 + <nullif/>
  2590 + <trim_type>none</trim_type>
  2591 + <length>-1</length>
  2592 + <precision>-1</precision>
  2593 + </field>
  2594 + <field>
  2595 + <name>fcno24</name>
  2596 + <type>String</type>
  2597 + <format/>
  2598 + <currency/>
  2599 + <decimal/>
  2600 + <group/>
  2601 + <nullif/>
  2602 + <trim_type>none</trim_type>
  2603 + <length>-1</length>
  2604 + <precision>-1</precision>
  2605 + </field>
  2606 + <field>
  2607 + <name>fcno25</name>
  2608 + <type>String</type>
  2609 + <format/>
  2610 + <currency/>
  2611 + <decimal/>
  2612 + <group/>
  2613 + <nullif/>
  2614 + <trim_type>none</trim_type>
  2615 + <length>-1</length>
  2616 + <precision>-1</precision>
  2617 + </field>
  2618 + <field>
  2619 + <name>fcno26</name>
  2620 + <type>String</type>
  2621 + <format/>
  2622 + <currency/>
  2623 + <decimal/>
  2624 + <group/>
  2625 + <nullif/>
  2626 + <trim_type>none</trim_type>
  2627 + <length>-1</length>
  2628 + <precision>-1</precision>
  2629 + </field>
  2630 + <field>
  2631 + <name>fcno27</name>
  2632 + <type>String</type>
  2633 + <format/>
  2634 + <currency/>
  2635 + <decimal/>
  2636 + <group/>
  2637 + <nullif/>
  2638 + <trim_type>none</trim_type>
  2639 + <length>-1</length>
  2640 + <precision>-1</precision>
  2641 + </field>
  2642 + <field>
  2643 + <name>fcno28</name>
  2644 + <type>String</type>
  2645 + <format/>
  2646 + <currency/>
  2647 + <decimal/>
  2648 + <group/>
  2649 + <nullif/>
  2650 + <trim_type>none</trim_type>
  2651 + <length>-1</length>
  2652 + <precision>-1</precision>
  2653 + </field>
  2654 + <field>
  2655 + <name>fcno29</name>
  2656 + <type>String</type>
  2657 + <format/>
  2658 + <currency/>
  2659 + <decimal/>
  2660 + <group/>
  2661 + <nullif/>
  2662 + <trim_type>none</trim_type>
  2663 + <length>-1</length>
  2664 + <precision>-1</precision>
  2665 + </field>
  2666 + <field>
  2667 + <name>fcno30</name>
  2668 + <type>String</type>
  2669 + <format/>
  2670 + <currency/>
  2671 + <decimal/>
  2672 + <group/>
  2673 + <nullif/>
  2674 + <trim_type>none</trim_type>
  2675 + <length>-1</length>
  2676 + <precision>-1</precision>
  2677 + </field>
  2678 + <field>
  2679 + <name>fcno31</name>
  2680 + <type>String</type>
  2681 + <format/>
  2682 + <currency/>
  2683 + <decimal/>
  2684 + <group/>
  2685 + <nullif/>
  2686 + <trim_type>none</trim_type>
  2687 + <length>-1</length>
  2688 + <precision>-1</precision>
  2689 + </field>
  2690 + <field>
  2691 + <name>fcno32</name>
  2692 + <type>String</type>
  2693 + <format/>
  2694 + <currency/>
  2695 + <decimal/>
  2696 + <group/>
  2697 + <nullif/>
  2698 + <trim_type>none</trim_type>
  2699 + <length>-1</length>
  2700 + <precision>-1</precision>
  2701 + </field>
  2702 + <field>
  2703 + <name>fcno33</name>
  2704 + <type>String</type>
  2705 + <format/>
  2706 + <currency/>
  2707 + <decimal/>
  2708 + <group/>
  2709 + <nullif/>
  2710 + <trim_type>none</trim_type>
  2711 + <length>-1</length>
  2712 + <precision>-1</precision>
  2713 + </field>
  2714 + <field>
  2715 + <name>fcno34</name>
  2716 + <type>String</type>
  2717 + <format/>
  2718 + <currency/>
  2719 + <decimal/>
  2720 + <group/>
  2721 + <nullif/>
  2722 + <trim_type>none</trim_type>
  2723 + <length>-1</length>
  2724 + <precision>-1</precision>
  2725 + </field>
  2726 + <field>
  2727 + <name>fcno35</name>
  2728 + <type>String</type>
  2729 + <format/>
  2730 + <currency/>
  2731 + <decimal/>
  2732 + <group/>
  2733 + <nullif/>
  2734 + <trim_type>none</trim_type>
  2735 + <length>-1</length>
  2736 + <precision>-1</precision>
  2737 + </field>
  2738 + <field>
  2739 + <name>fcno36</name>
  2740 + <type>String</type>
  2741 + <format/>
  2742 + <currency/>
  2743 + <decimal/>
  2744 + <group/>
  2745 + <nullif/>
  2746 + <trim_type>none</trim_type>
  2747 + <length>-1</length>
  2748 + <precision>-1</precision>
  2749 + </field>
  2750 + <field>
  2751 + <name>fcno37</name>
  2752 + <type>String</type>
  2753 + <format/>
  2754 + <currency/>
  2755 + <decimal/>
  2756 + <group/>
  2757 + <nullif/>
  2758 + <trim_type>none</trim_type>
  2759 + <length>-1</length>
  2760 + <precision>-1</precision>
  2761 + </field>
  2762 + <field>
  2763 + <name>fcno38</name>
  2764 + <type>String</type>
  2765 + <format/>
  2766 + <currency/>
  2767 + <decimal/>
  2768 + <group/>
  2769 + <nullif/>
  2770 + <trim_type>none</trim_type>
  2771 + <length>-1</length>
  2772 + <precision>-1</precision>
  2773 + </field>
  2774 + <field>
  2775 + <name>fcno39</name>
  2776 + <type>String</type>
  2777 + <format/>
  2778 + <currency/>
  2779 + <decimal/>
  2780 + <group/>
  2781 + <nullif/>
  2782 + <trim_type>none</trim_type>
  2783 + <length>-1</length>
  2784 + <precision>-1</precision>
  2785 + </field>
  2786 + <field>
  2787 + <name>fcno40</name>
  2788 + <type>String</type>
  2789 + <format/>
  2790 + <currency/>
  2791 + <decimal/>
  2792 + <group/>
  2793 + <nullif/>
  2794 + <trim_type>none</trim_type>
  2795 + <length>-1</length>
  2796 + <precision>-1</precision>
  2797 + </field>
  2798 + <field>
  2799 + <name>fcno41</name>
  2800 + <type>String</type>
  2801 + <format/>
  2802 + <currency/>
  2803 + <decimal/>
  2804 + <group/>
  2805 + <nullif/>
  2806 + <trim_type>none</trim_type>
  2807 + <length>-1</length>
  2808 + <precision>-1</precision>
  2809 + </field>
  2810 + <field>
  2811 + <name>fcno42</name>
  2812 + <type>String</type>
  2813 + <format/>
  2814 + <currency/>
  2815 + <decimal/>
  2816 + <group/>
  2817 + <nullif/>
  2818 + <trim_type>none</trim_type>
  2819 + <length>-1</length>
  2820 + <precision>-1</precision>
  2821 + </field>
  2822 + <field>
  2823 + <name>fcno43</name>
  2824 + <type>String</type>
  2825 + <format/>
  2826 + <currency/>
  2827 + <decimal/>
  2828 + <group/>
  2829 + <nullif/>
  2830 + <trim_type>none</trim_type>
  2831 + <length>-1</length>
  2832 + <precision>-1</precision>
  2833 + </field>
  2834 + <field>
  2835 + <name>fcno44</name>
  2836 + <type>String</type>
  2837 + <format/>
  2838 + <currency/>
  2839 + <decimal/>
  2840 + <group/>
  2841 + <nullif/>
  2842 + <trim_type>none</trim_type>
  2843 + <length>-1</length>
  2844 + <precision>-1</precision>
  2845 + </field>
  2846 + <field>
  2847 + <name>fcno45</name>
  2848 + <type>String</type>
  2849 + <format/>
  2850 + <currency/>
  2851 + <decimal/>
  2852 + <group/>
  2853 + <nullif/>
  2854 + <trim_type>none</trim_type>
  2855 + <length>-1</length>
  2856 + <precision>-1</precision>
  2857 + </field>
  2858 + <field>
  2859 + <name>fcno46</name>
  2860 + <type>String</type>
  2861 + <format/>
  2862 + <currency/>
  2863 + <decimal/>
  2864 + <group/>
  2865 + <nullif/>
  2866 + <trim_type>none</trim_type>
  2867 + <length>-1</length>
  2868 + <precision>-1</precision>
  2869 + </field>
  2870 + <field>
  2871 + <name>fcno47</name>
  2872 + <type>String</type>
  2873 + <format/>
  2874 + <currency/>
  2875 + <decimal/>
  2876 + <group/>
  2877 + <nullif/>
  2878 + <trim_type>none</trim_type>
  2879 + <length>-1</length>
  2880 + <precision>-1</precision>
  2881 + </field>
  2882 + <field>
  2883 + <name>fcno48</name>
  2884 + <type>String</type>
  2885 + <format/>
  2886 + <currency/>
  2887 + <decimal/>
  2888 + <group/>
  2889 + <nullif/>
  2890 + <trim_type>none</trim_type>
  2891 + <length>-1</length>
  2892 + <precision>-1</precision>
  2893 + </field>
  2894 + <field>
  2895 + <name>fcno49</name>
  2896 + <type>String</type>
  2897 + <format/>
  2898 + <currency/>
  2899 + <decimal/>
  2900 + <group/>
  2901 + <nullif/>
  2902 + <trim_type>none</trim_type>
  2903 + <length>-1</length>
  2904 + <precision>-1</precision>
  2905 + </field>
  2906 + <field>
  2907 + <name>fcno50</name>
  2908 + <type>String</type>
  2909 + <format/>
  2910 + <currency/>
  2911 + <decimal/>
  2912 + <group/>
  2913 + <nullif/>
  2914 + <trim_type>none</trim_type>
  2915 + <length>-1</length>
  2916 + <precision>-1</precision>
  2917 + </field>
  2918 + <field>
  2919 + <name>fcno51</name>
  2920 + <type>String</type>
  2921 + <format/>
  2922 + <currency/>
  2923 + <decimal/>
  2924 + <group/>
  2925 + <nullif/>
  2926 + <trim_type>none</trim_type>
  2927 + <length>-1</length>
  2928 + <precision>-1</precision>
  2929 + </field>
  2930 + <field>
  2931 + <name>fcno52</name>
  2932 + <type>String</type>
  2933 + <format/>
  2934 + <currency/>
  2935 + <decimal/>
  2936 + <group/>
  2937 + <nullif/>
  2938 + <trim_type>none</trim_type>
  2939 + <length>-1</length>
  2940 + <precision>-1</precision>
  2941 + </field>
  2942 + <field>
  2943 + <name>fcno53</name>
  2944 + <type>String</type>
  2945 + <format/>
  2946 + <currency/>
  2947 + <decimal/>
  2948 + <group/>
  2949 + <nullif/>
  2950 + <trim_type>none</trim_type>
  2951 + <length>-1</length>
  2952 + <precision>-1</precision>
  2953 + </field>
  2954 + <field>
  2955 + <name>fcno54</name>
  2956 + <type>String</type>
  2957 + <format/>
  2958 + <currency/>
  2959 + <decimal/>
  2960 + <group/>
  2961 + <nullif/>
  2962 + <trim_type>none</trim_type>
  2963 + <length>-1</length>
  2964 + <precision>-1</precision>
  2965 + </field>
  2966 + <field>
  2967 + <name>fcno55</name>
  2968 + <type>String</type>
  2969 + <format/>
  2970 + <currency/>
  2971 + <decimal/>
  2972 + <group/>
  2973 + <nullif/>
  2974 + <trim_type>none</trim_type>
  2975 + <length>-1</length>
  2976 + <precision>-1</precision>
  2977 + </field>
  2978 + <field>
  2979 + <name>fcno56</name>
  2980 + <type>String</type>
  2981 + <format/>
  2982 + <currency/>
  2983 + <decimal/>
  2984 + <group/>
  2985 + <nullif/>
  2986 + <trim_type>none</trim_type>
  2987 + <length>-1</length>
  2988 + <precision>-1</precision>
  2989 + </field>
  2990 + <field>
  2991 + <name>fcno57</name>
  2992 + <type>String</type>
  2993 + <format/>
  2994 + <currency/>
  2995 + <decimal/>
  2996 + <group/>
  2997 + <nullif/>
  2998 + <trim_type>none</trim_type>
  2999 + <length>-1</length>
  3000 + <precision>-1</precision>
  3001 + </field>
  3002 + <field>
  3003 + <name>fcno58</name>
  3004 + <type>String</type>
  3005 + <format/>
  3006 + <currency/>
  3007 + <decimal/>
  3008 + <group/>
  3009 + <nullif/>
  3010 + <trim_type>none</trim_type>
  3011 + <length>-1</length>
  3012 + <precision>-1</precision>
  3013 + </field>
  3014 + <field>
  3015 + <name>fcno59</name>
  3016 + <type>String</type>
  3017 + <format/>
  3018 + <currency/>
  3019 + <decimal/>
  3020 + <group/>
  3021 + <nullif/>
  3022 + <trim_type>none</trim_type>
  3023 + <length>-1</length>
  3024 + <precision>-1</precision>
  3025 + </field>
  3026 + <field>
  3027 + <name>fcno60</name>
  3028 + <type>String</type>
  3029 + <format/>
  3030 + <currency/>
  3031 + <decimal/>
  3032 + <group/>
  3033 + <nullif/>
  3034 + <trim_type>none</trim_type>
  3035 + <length>-1</length>
  3036 + <precision>-1</precision>
  3037 + </field>
  3038 + <field>
  3039 + <name>fcno61</name>
  3040 + <type>String</type>
  3041 + <format/>
  3042 + <currency/>
  3043 + <decimal/>
  3044 + <group/>
  3045 + <nullif/>
  3046 + <trim_type>none</trim_type>
  3047 + <length>-1</length>
  3048 + <precision>-1</precision>
  3049 + </field>
  3050 + <field>
  3051 + <name>fcno62</name>
  3052 + <type>String</type>
  3053 + <format/>
  3054 + <currency/>
  3055 + <decimal/>
  3056 + <group/>
  3057 + <nullif/>
  3058 + <trim_type>none</trim_type>
  3059 + <length>-1</length>
  3060 + <precision>-1</precision>
  3061 + </field>
  3062 + <field>
  3063 + <name>fcno63</name>
  3064 + <type>String</type>
  3065 + <format/>
  3066 + <currency/>
  3067 + <decimal/>
  3068 + <group/>
  3069 + <nullif/>
  3070 + <trim_type>none</trim_type>
  3071 + <length>-1</length>
  3072 + <precision>-1</precision>
  3073 + </field>
  3074 + <field>
  3075 + <name>fcno64</name>
  3076 + <type>String</type>
  3077 + <format/>
  3078 + <currency/>
  3079 + <decimal/>
  3080 + <group/>
  3081 + <nullif/>
  3082 + <trim_type>none</trim_type>
  3083 + <length>-1</length>
  3084 + <precision>-1</precision>
  3085 + </field>
  3086 + <field>
  3087 + <name>fcno65</name>
  3088 + <type>String</type>
  3089 + <format/>
  3090 + <currency/>
  3091 + <decimal/>
  3092 + <group/>
  3093 + <nullif/>
  3094 + <trim_type>none</trim_type>
  3095 + <length>-1</length>
  3096 + <precision>-1</precision>
  3097 + </field>
  3098 + <field>
  3099 + <name>fcno66</name>
  3100 + <type>String</type>
  3101 + <format/>
  3102 + <currency/>
  3103 + <decimal/>
  3104 + <group/>
  3105 + <nullif/>
  3106 + <trim_type>none</trim_type>
  3107 + <length>-1</length>
  3108 + <precision>-1</precision>
  3109 + </field>
  3110 + <field>
  3111 + <name>fcno67</name>
  3112 + <type>String</type>
  3113 + <format/>
  3114 + <currency/>
  3115 + <decimal/>
  3116 + <group/>
  3117 + <nullif/>
  3118 + <trim_type>none</trim_type>
  3119 + <length>-1</length>
  3120 + <precision>-1</precision>
  3121 + </field>
  3122 + <field>
  3123 + <name>fcno68</name>
  3124 + <type>String</type>
  3125 + <format/>
  3126 + <currency/>
  3127 + <decimal/>
  3128 + <group/>
  3129 + <nullif/>
  3130 + <trim_type>none</trim_type>
  3131 + <length>-1</length>
  3132 + <precision>-1</precision>
  3133 + </field>
  3134 + <field>
  3135 + <name>fcno69</name>
  3136 + <type>String</type>
  3137 + <format/>
  3138 + <currency/>
  3139 + <decimal/>
  3140 + <group/>
  3141 + <nullif/>
  3142 + <trim_type>none</trim_type>
  3143 + <length>-1</length>
  3144 + <precision>-1</precision>
  3145 + </field>
  3146 + <field>
  3147 + <name>fcno70</name>
  3148 + <type>String</type>
  3149 + <format/>
  3150 + <currency/>
  3151 + <decimal/>
  3152 + <group/>
  3153 + <nullif/>
  3154 + <trim_type>none</trim_type>
  3155 + <length>-1</length>
  3156 + <precision>-1</precision>
  3157 + </field>
  3158 + </fields>
  3159 + <cluster_schema/>
  3160 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  3161 + <xloc>880</xloc>
  3162 + <yloc>365</yloc>
  3163 + <draw>Y</draw>
  3164 + </GUI>
  3165 + </step>
  3166 +
  3167 + <step>
  3168 + <name>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x540d;&#x79f0;</name>
  3169 + <type>DBLookup</type>
  3170 + <description/>
  3171 + <distribute>Y</distribute>
  3172 + <custom_distribution/>
  3173 + <copies>1</copies>
  3174 + <partitioning>
  3175 + <method>none</method>
  3176 + <schema_name/>
  3177 + </partitioning>
  3178 + <connection>bus_control_variable</connection>
  3179 + <cache>Y</cache>
  3180 + <cache_load_all>Y</cache_load_all>
  3181 + <cache_size>0</cache_size>
  3182 + <lookup>
  3183 + <schema/>
  3184 + <table>bsth_c_stationroute</table>
  3185 + <orderby/>
  3186 + <fail_on_multiple>N</fail_on_multiple>
  3187 + <eat_row_on_failure>N</eat_row_on_failure>
  3188 + <key>
  3189 + <name>xl</name>
  3190 + <field>line</field>
  3191 + <condition>&#x3d;</condition>
  3192 + <name2/>
  3193 + </key>
  3194 + <key>
  3195 + <name>xl_dir</name>
  3196 + <field>directions</field>
  3197 + <condition>&#x3d;</condition>
  3198 + <name2/>
  3199 + </key>
  3200 + <key>
  3201 + <name>endZdType</name>
  3202 + <field>station_mark</field>
  3203 + <condition>&#x3d;</condition>
  3204 + <name2/>
  3205 + </key>
  3206 + <value>
  3207 + <name>station_name</name>
  3208 + <rename>zdzName</rename>
  3209 + <default/>
  3210 + <type>String</type>
  3211 + </value>
  3212 + </lookup>
  3213 + <cluster_schema/>
  3214 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  3215 + <xloc>688</xloc>
  3216 + <yloc>86</yloc>
  3217 + <draw>Y</draw>
  3218 + </GUI>
  3219 + </step>
  3220 +
  3221 + <step>
  3222 + <name>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;&#x540d;&#x79f0;</name>
  3223 + <type>DBLookup</type>
  3224 + <description/>
  3225 + <distribute>Y</distribute>
  3226 + <custom_distribution/>
  3227 + <copies>1</copies>
  3228 + <partitioning>
  3229 + <method>none</method>
  3230 + <schema_name/>
  3231 + </partitioning>
  3232 + <connection>bus_control_variable</connection>
  3233 + <cache>Y</cache>
  3234 + <cache_load_all>Y</cache_load_all>
  3235 + <cache_size>0</cache_size>
  3236 + <lookup>
  3237 + <schema/>
  3238 + <table>bsth_c_stationroute</table>
  3239 + <orderby/>
  3240 + <fail_on_multiple>N</fail_on_multiple>
  3241 + <eat_row_on_failure>N</eat_row_on_failure>
  3242 + <key>
  3243 + <name>xl</name>
  3244 + <field>line</field>
  3245 + <condition>&#x3d;</condition>
  3246 + <name2/>
  3247 + </key>
  3248 + <key>
  3249 + <name>xl_dir</name>
  3250 + <field>directions</field>
  3251 + <condition>&#x3d;</condition>
  3252 + <name2/>
  3253 + </key>
  3254 + <key>
  3255 + <name>startZdType</name>
  3256 + <field>station_mark</field>
  3257 + <condition>&#x3d;</condition>
  3258 + <name2/>
  3259 + </key>
  3260 + <value>
  3261 + <name>station_name</name>
  3262 + <rename>qdzName</rename>
  3263 + <default/>
  3264 + <type>String</type>
  3265 + </value>
  3266 + </lookup>
  3267 + <cluster_schema/>
  3268 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  3269 + <xloc>553</xloc>
  3270 + <yloc>86</yloc>
  3271 + <draw>Y</draw>
  3272 + </GUI>
  3273 + </step>
  3274 +
  3275 + <step>
  3276 + <name>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x7ad9;&#x70b9;&#x67e5;&#x8be2;&#x7528;&#x6570;&#x636e;</name>
  3277 + <type>ScriptValueMod</type>
  3278 + <description/>
  3279 + <distribute>Y</distribute>
  3280 + <custom_distribution/>
  3281 + <copies>1</copies>
  3282 + <partitioning>
  3283 + <method>none</method>
  3284 + <schema_name/>
  3285 + </partitioning>
  3286 + <compatible>N</compatible>
  3287 + <optimizationLevel>9</optimizationLevel>
  3288 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  3289 + <jsScript_name>Script 1</jsScript_name>
  3290 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var startZdType &#x3d; &#x27;B&#x27;&#x3b; &#x2f;&#x2f; &#x8d77;&#x70b9;&#x7ad9;&#x7ad9;&#x70b9;&#x7c7b;&#x578b;&#x6807;&#x8bc6;&#x522b;&#xa;var endZdType &#x3d; &#x27;E&#x27;&#x3b; &#x2f;&#x2f; &#x7ec8;&#x70b9;&#x7ad9;&#x7ad9;&#x70b9;&#x7c7b;&#x578b;&#x6807;&#x8bc6;</jsScript_script>
  3291 + </jsScript> </jsScripts> <fields> <field> <name>startZdType</name>
  3292 + <rename>startZdType</rename>
  3293 + <type>String</type>
  3294 + <length>-1</length>
  3295 + <precision>-1</precision>
  3296 + <replace>N</replace>
  3297 + </field> <field> <name>endZdType</name>
  3298 + <rename>endZdType</rename>
  3299 + <type>String</type>
  3300 + <length>-1</length>
  3301 + <precision>-1</precision>
  3302 + <replace>N</replace>
  3303 + </field> </fields> <cluster_schema/>
  3304 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  3305 + <xloc>391</xloc>
  3306 + <yloc>87</yloc>
  3307 + <draw>Y</draw>
  3308 + </GUI>
  3309 + </step>
  3310 +
  3311 + <step>
  3312 + <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>
  3313 + <type>GetVariable</type>
  3314 + <description/>
  3315 + <distribute>Y</distribute>
  3316 + <custom_distribution/>
  3317 + <copies>1</copies>
  3318 + <partitioning>
  3319 + <method>none</method>
  3320 + <schema_name/>
  3321 + </partitioning>
  3322 + <fields>
  3323 + <field>
  3324 + <name>xlid_</name>
  3325 + <variable>&#x24;&#x7b;xlid&#x7d;</variable>
  3326 + <type>Integer</type>
  3327 + <format/>
  3328 + <currency/>
  3329 + <decimal/>
  3330 + <group/>
  3331 + <length>-1</length>
  3332 + <precision>-1</precision>
  3333 + <trim_type>none</trim_type>
  3334 + </field>
  3335 + <field>
  3336 + <name>ttid_</name>
  3337 + <variable>&#x24;&#x7b;ttid&#x7d;</variable>
  3338 + <type>Number</type>
  3339 + <format/>
  3340 + <currency/>
  3341 + <decimal/>
  3342 + <group/>
  3343 + <length>-1</length>
  3344 + <precision>-1</precision>
  3345 + <trim_type>none</trim_type>
  3346 + </field>
  3347 + </fields>
  3348 + <cluster_schema/>
  3349 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  3350 + <xloc>45</xloc>
  3351 + <yloc>189</yloc>
  3352 + <draw>Y</draw>
  3353 + </GUI>
  3354 + </step>
  3355 +
  3356 + <step>
  3357 + <name>&#x8868;&#x8f93;&#x5165;</name>
  3358 + <type>TableInput</type>
  3359 + <description/>
  3360 + <distribute>Y</distribute>
  3361 + <custom_distribution/>
  3362 + <copies>1</copies>
  3363 + <partitioning>
  3364 + <method>none</method>
  3365 + <schema_name/>
  3366 + </partitioning>
  3367 + <connection>bus_control_variable</connection>
  3368 + <sql>select &#xa;t.id as id&#xa;, concat&#x28;g.id, &#x27;_&#x27;, g.lp_name&#x29; as lp&#xa;, g.xl as xl&#xa;, qdz&#xa;, zdz&#xa;, tcc&#xa;, fcsj&#xa;, jhlc&#xa;, bc_type &#xa;, bcs&#xa;, fcno&#xa;, xl_dir&#xa;, isfb&#xa;from bsth_c_s_ttinfo_detail t left join &#xa;bsth_c_s_gbi g on t.lp &#x3d; g.id &#xa;where &#xa;g.xl &#x3d; &#x3f; and&#xa;t.ttinfo &#x3d; &#x3f; &#xa;order by t.bcs asc</sql>
  3369 + <limit>0</limit>
  3370 + <lookup>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</lookup>
  3371 + <execute_each_row>N</execute_each_row>
  3372 + <variables_active>Y</variables_active>
  3373 + <lazy_conversion_active>N</lazy_conversion_active>
  3374 + <cluster_schema/>
  3375 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  3376 + <xloc>130</xloc>
  3377 + <yloc>85</yloc>
  3378 + <draw>Y</draw>
  3379 + </GUI>
  3380 + </step>
  3381 +
  3382 + <step>
  3383 + <name>&#x8ba1;&#x7b97;&#x53d1;&#x8f66;&#x7ad9;&#x540d;</name>
  3384 + <type>ScriptValueMod</type>
  3385 + <description/>
  3386 + <distribute>Y</distribute>
  3387 + <custom_distribution/>
  3388 + <copies>1</copies>
  3389 + <partitioning>
  3390 + <method>none</method>
  3391 + <schema_name/>
  3392 + </partitioning>
  3393 + <compatible>N</compatible>
  3394 + <optimizationLevel>9</optimizationLevel>
  3395 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  3396 + <jsScript_name>Script 1</jsScript_name>
  3397 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var fczdName &#x3d; null&#x3b; &#x2f;&#x2f; &#x53d1;&#x8f66;&#x7ad9;&#x70b9;&#x540d;&#x5b57;&#xa;if &#x28;bc_type &#x3d;&#x3d; &#x22;in&#x22;&#x29; &#x7b;&#xa; fczdName &#x3d; &#x22;&#x8fdb;&#x573a;&#x22;&#x3b;&#xa;&#x7d; else if &#x28;bc_type &#x3d;&#x3d; &#x22;out&#x22;&#x29; &#x7b;&#xa; fczdName &#x3d; &#x22;&#x51fa;&#x573a;&#x22;&#x3b;&#xa;&#x7d; else &#x7b;&#xa; fczdName &#x3d; qdzName&#x3b;&#xa;&#x7d;</jsScript_script>
  3398 + </jsScript> </jsScripts> <fields> <field> <name>fczdName</name>
  3399 + <rename>fczdName</rename>
  3400 + <type>String</type>
  3401 + <length>-1</length>
  3402 + <precision>-1</precision>
  3403 + <replace>N</replace>
  3404 + </field> </fields> <cluster_schema/>
  3405 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  3406 + <xloc>550</xloc>
  3407 + <yloc>276</yloc>
  3408 + <draw>Y</draw>
  3409 + </GUI>
  3410 + </step>
  3411 +
  3412 + <step>
  3413 + <name>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;</name>
  3414 + <type>FilterRows</type>
  3415 + <description/>
  3416 + <distribute>Y</distribute>
  3417 + <custom_distribution/>
  3418 + <copies>1</copies>
  3419 + <partitioning>
  3420 + <method>none</method>
  3421 + <schema_name/>
  3422 + </partitioning>
  3423 +<send_true_to>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x7ad9;&#x70b9;&#x67e5;&#x8be2;&#x7528;&#x6570;&#x636e;</send_true_to>
  3424 +<send_false_to>&#x8fdb;&#x573a;&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x67e5;&#x8be2;&#x7528;&#x7684;&#x6570;&#x636e;</send_false_to>
  3425 + <compare>
  3426 +<condition>
  3427 + <negated>N</negated>
  3428 + <leftvalue>bc_type</leftvalue>
  3429 + <function>&#x3d;</function>
  3430 + <rightvalue/>
  3431 + <value><name>constant</name><type>String</type><text>normal</text><length>-1</length><precision>-1</precision><isnull>N</isnull><mask/></value> </condition>
  3432 + </compare>
  3433 + <cluster_schema/>
  3434 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  3435 + <xloc>248</xloc>
  3436 + <yloc>87</yloc>
  3437 + <draw>Y</draw>
  3438 + </GUI>
  3439 + </step>
  3440 +
  3441 + <step>
  3442 + <name>&#x8fdb;&#x573a;&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x67e5;&#x8be2;&#x7528;&#x7684;&#x6570;&#x636e;</name>
  3443 + <type>ScriptValueMod</type>
  3444 + <description/>
  3445 + <distribute>Y</distribute>
  3446 + <custom_distribution/>
  3447 + <copies>1</copies>
  3448 + <partitioning>
  3449 + <method>none</method>
  3450 + <schema_name/>
  3451 + </partitioning>
  3452 + <compatible>N</compatible>
  3453 + <optimizationLevel>9</optimizationLevel>
  3454 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  3455 + <jsScript_name>Script 1</jsScript_name>
  3456 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var qdzName &#x3d; null&#x3b; &#x2f;&#x2f; &#x8d77;&#x70b9;&#x7ad9;&#x540d;&#x5b57;&#xa;var zdzName &#x3d; null&#x3b; &#x2f;&#x2f; &#x7ec8;&#x70b9;&#x7ad9;&#x540d;&#x5b57;</jsScript_script>
  3457 + </jsScript> </jsScripts> <fields> <field> <name>qdzName</name>
  3458 + <rename>qdzName</rename>
  3459 + <type>String</type>
  3460 + <length>-1</length>
  3461 + <precision>-1</precision>
  3462 + <replace>N</replace>
  3463 + </field> <field> <name>zdzName</name>
  3464 + <rename>zdzName</rename>
  3465 + <type>String</type>
  3466 + <length>-1</length>
  3467 + <precision>-1</precision>
  3468 + <replace>N</replace>
  3469 + </field> </fields> <cluster_schema/>
  3470 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  3471 + <xloc>250</xloc>
  3472 + <yloc>188</yloc>
  3473 + <draw>Y</draw>
  3474 + </GUI>
  3475 + </step>
  3476 +
  3477 + <step_error_handling>
  3478 + </step_error_handling>
  3479 + <slave-step-copy-partition-distribution>
  3480 +</slave-step-copy-partition-distribution>
  3481 + <slave_transformation>N</slave_transformation>
  3482 +
  3483 +</transformation>
src/main/resources/datatools/ktrs/ttinfodetailDataInput.ktr
@@ -181,6 +181,30 @@ @@ -181,6 +181,30 @@
181 </notepad> 181 </notepad>
182 </notepads> 182 </notepads>
183 <connection> 183 <connection>
  184 + <name>192.168.168.1_jwgl_dw</name>
  185 + <server>192.168.168.1</server>
  186 + <type>ORACLE</type>
  187 + <access>Native</access>
  188 + <database>orcl</database>
  189 + <port>1521</port>
  190 + <username>jwgl_dw</username>
  191 + <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password>
  192 + <servername/>
  193 + <data_tablespace/>
  194 + <index_tablespace/>
  195 + <attributes>
  196 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  197 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  198 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  199 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  200 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  201 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  202 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  203 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  204 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  205 + </attributes>
  206 + </connection>
  207 + <connection>
184 <name>bus_control_variable</name> 208 <name>bus_control_variable</name>
185 <server>&#x24;&#x7b;v_db_ip&#x7d;</server> 209 <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
186 <type>MYSQL</type> 210 <type>MYSQL</type>
@@ -1039,6 +1063,26 @@ @@ -1039,6 +1063,26 @@
1039 <rename>isfb</rename> 1063 <rename>isfb</rename>
1040 <update>Y</update> 1064 <update>Y</update>
1041 </value> 1065 </value>
  1066 + <value>
  1067 + <name>qdz_code</name>
  1068 + <rename>qdzcode</rename>
  1069 + <update>Y</update>
  1070 + </value>
  1071 + <value>
  1072 + <name>qdz_name</name>
  1073 + <rename>qdzname</rename>
  1074 + <update>Y</update>
  1075 + </value>
  1076 + <value>
  1077 + <name>zdz_code</name>
  1078 + <rename>zdzcode</rename>
  1079 + <update>Y</update>
  1080 + </value>
  1081 + <value>
  1082 + <name>zdz_name</name>
  1083 + <rename>zdzname</rename>
  1084 + <update>Y</update>
  1085 + </value>
1042 </lookup> 1086 </lookup>
1043 <cluster_schema/> 1087 <cluster_schema/>
1044 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1088 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
@@ -1160,6 +1204,26 @@ @@ -1160,6 +1204,26 @@
1160 <rename>isfb</rename> 1204 <rename>isfb</rename>
1161 <update>Y</update> 1205 <update>Y</update>
1162 </value> 1206 </value>
  1207 + <value>
  1208 + <name>qdz_code</name>
  1209 + <rename>qdzcode</rename>
  1210 + <update>Y</update>
  1211 + </value>
  1212 + <value>
  1213 + <name>qdz_name</name>
  1214 + <rename>tn</rename>
  1215 + <update>Y</update>
  1216 + </value>
  1217 + <value>
  1218 + <name>zdz_code</name>
  1219 + <rename>zdzcode</rename>
  1220 + <update>Y</update>
  1221 + </value>
  1222 + <value>
  1223 + <name>zdz_name</name>
  1224 + <rename>zdzname</rename>
  1225 + <update>Y</update>
  1226 + </value>
1163 </lookup> 1227 </lookup>
1164 <cluster_schema/> 1228 <cluster_schema/>
1165 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1229 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
@@ -1281,6 +1345,26 @@ @@ -1281,6 +1345,26 @@
1281 <rename>isfb</rename> 1345 <rename>isfb</rename>
1282 <update>Y</update> 1346 <update>Y</update>
1283 </value> 1347 </value>
  1348 + <value>
  1349 + <name>qdz_code</name>
  1350 + <rename>qdzcode</rename>
  1351 + <update>Y</update>
  1352 + </value>
  1353 + <value>
  1354 + <name>qdz_name</name>
  1355 + <rename>qname</rename>
  1356 + <update>Y</update>
  1357 + </value>
  1358 + <value>
  1359 + <name>zdz_code</name>
  1360 + <rename>zdzcode</rename>
  1361 + <update>Y</update>
  1362 + </value>
  1363 + <value>
  1364 + <name>zdz_name</name>
  1365 + <rename>tn</rename>
  1366 + <update>Y</update>
  1367 + </value>
1284 </lookup> 1368 </lookup>
1285 <cluster_schema/> 1369 <cluster_schema/>
1286 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1370 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
@@ -1391,6 +1475,18 @@ @@ -1391,6 +1475,18 @@
1391 <default/> 1475 <default/>
1392 <type>Integer</type> 1476 <type>Integer</type>
1393 </value> 1477 </value>
  1478 + <value>
  1479 + <name>park_code</name>
  1480 + <rename>qdzcode</rename>
  1481 + <default/>
  1482 + <type>String</type>
  1483 + </value>
  1484 + <value>
  1485 + <name>park_name</name>
  1486 + <rename>tn</rename>
  1487 + <default/>
  1488 + <type>String</type>
  1489 + </value>
1394 </lookup> 1490 </lookup>
1395 <cluster_schema/> 1491 <cluster_schema/>
1396 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1492 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
@@ -1433,6 +1529,18 @@ @@ -1433,6 +1529,18 @@
1433 <default/> 1529 <default/>
1434 <type>Integer</type> 1530 <type>Integer</type>
1435 </value> 1531 </value>
  1532 + <value>
  1533 + <name>park_code</name>
  1534 + <rename>zdzcode</rename>
  1535 + <default/>
  1536 + <type>String</type>
  1537 + </value>
  1538 + <value>
  1539 + <name>park_name</name>
  1540 + <rename>tn</rename>
  1541 + <default/>
  1542 + <type>String</type>
  1543 + </value>
1436 </lookup> 1544 </lookup>
1437 <cluster_schema/> 1545 <cluster_schema/>
1438 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1546 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
@@ -1499,6 +1607,12 @@ @@ -1499,6 +1607,12 @@
1499 <default/> 1607 <default/>
1500 <type>Integer</type> 1608 <type>Integer</type>
1501 </value> 1609 </value>
  1610 + <value>
  1611 + <name>station_code</name>
  1612 + <rename>zdzcode</rename>
  1613 + <default/>
  1614 + <type>String</type>
  1615 + </value>
1502 </lookup> 1616 </lookup>
1503 <cluster_schema/> 1617 <cluster_schema/>
1504 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1618 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
@@ -1841,6 +1955,12 @@ @@ -1841,6 +1955,12 @@
1841 <default/> 1955 <default/>
1842 <type>Integer</type> 1956 <type>Integer</type>
1843 </value> 1957 </value>
  1958 + <value>
  1959 + <name>station_code</name>
  1960 + <rename>zdzcode</rename>
  1961 + <default/>
  1962 + <type>String</type>
  1963 + </value>
1844 </lookup> 1964 </lookup>
1845 <cluster_schema/> 1965 <cluster_schema/>
1846 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1966 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
@@ -1907,6 +2027,12 @@ @@ -1907,6 +2027,12 @@
1907 <default/> 2027 <default/>
1908 <type>Integer</type> 2028 <type>Integer</type>
1909 </value> 2029 </value>
  2030 + <value>
  2031 + <name>station_code</name>
  2032 + <rename>qdzcode</rename>
  2033 + <default/>
  2034 + <type>String</type>
  2035 + </value>
1910 </lookup> 2036 </lookup>
1911 <cluster_schema/> 2037 <cluster_schema/>
1912 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 2038 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
@@ -2147,6 +2273,18 @@ @@ -2147,6 +2273,18 @@
2147 <default/> 2273 <default/>
2148 <type>Integer</type> 2274 <type>Integer</type>
2149 </value> 2275 </value>
  2276 + <value>
  2277 + <name>station_code</name>
  2278 + <rename>qdzcode</rename>
  2279 + <default/>
  2280 + <type>String</type>
  2281 + </value>
  2282 + <value>
  2283 + <name>station_name</name>
  2284 + <rename>qname</rename>
  2285 + <default/>
  2286 + <type>String</type>
  2287 + </value>
2150 </lookup> 2288 </lookup>
2151 <cluster_schema/> 2289 <cluster_schema/>
2152 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 2290 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
src/main/resources/datatools/ktrs/ttinfodetailDataInput2.ktr
@@ -181,6 +181,30 @@ @@ -181,6 +181,30 @@
181 </notepad> 181 </notepad>
182 </notepads> 182 </notepads>
183 <connection> 183 <connection>
  184 + <name>192.168.168.1_jwgl_dw</name>
  185 + <server>192.168.168.1</server>
  186 + <type>ORACLE</type>
  187 + <access>Native</access>
  188 + <database>orcl</database>
  189 + <port>1521</port>
  190 + <username>jwgl_dw</username>
  191 + <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password>
  192 + <servername/>
  193 + <data_tablespace/>
  194 + <index_tablespace/>
  195 + <attributes>
  196 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  197 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  198 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  199 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  200 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  201 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  202 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  203 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  204 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  205 + </attributes>
  206 + </connection>
  207 + <connection>
184 <name>bus_control_variable</name> 208 <name>bus_control_variable</name>
185 <server>&#x24;&#x7b;v_db_ip&#x7d;</server> 209 <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
186 <type>MYSQL</type> 210 <type>MYSQL</type>
@@ -1039,6 +1063,26 @@ @@ -1039,6 +1063,26 @@
1039 <rename>isfb</rename> 1063 <rename>isfb</rename>
1040 <update>Y</update> 1064 <update>Y</update>
1041 </value> 1065 </value>
  1066 + <value>
  1067 + <name>qdz_code</name>
  1068 + <rename>qdzcode</rename>
  1069 + <update>Y</update>
  1070 + </value>
  1071 + <value>
  1072 + <name>qdz_name</name>
  1073 + <rename>qdzname</rename>
  1074 + <update>Y</update>
  1075 + </value>
  1076 + <value>
  1077 + <name>zdz_code</name>
  1078 + <rename>zdzcode</rename>
  1079 + <update>Y</update>
  1080 + </value>
  1081 + <value>
  1082 + <name>zdz_name</name>
  1083 + <rename>zdzname</rename>
  1084 + <update>Y</update>
  1085 + </value>
1042 </lookup> 1086 </lookup>
1043 <cluster_schema/> 1087 <cluster_schema/>
1044 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1088 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
@@ -1160,6 +1204,26 @@ @@ -1160,6 +1204,26 @@
1160 <rename>isfb</rename> 1204 <rename>isfb</rename>
1161 <update>Y</update> 1205 <update>Y</update>
1162 </value> 1206 </value>
  1207 + <value>
  1208 + <name>qdz_code</name>
  1209 + <rename>qdzcode</rename>
  1210 + <update>Y</update>
  1211 + </value>
  1212 + <value>
  1213 + <name>qdz_name</name>
  1214 + <rename>tn</rename>
  1215 + <update>Y</update>
  1216 + </value>
  1217 + <value>
  1218 + <name>zdz_code</name>
  1219 + <rename>zdzcode</rename>
  1220 + <update>Y</update>
  1221 + </value>
  1222 + <value>
  1223 + <name>zdz_name</name>
  1224 + <rename>zdzname</rename>
  1225 + <update>Y</update>
  1226 + </value>
1163 </lookup> 1227 </lookup>
1164 <cluster_schema/> 1228 <cluster_schema/>
1165 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1229 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
@@ -1281,6 +1345,26 @@ @@ -1281,6 +1345,26 @@
1281 <rename>isfb</rename> 1345 <rename>isfb</rename>
1282 <update>Y</update> 1346 <update>Y</update>
1283 </value> 1347 </value>
  1348 + <value>
  1349 + <name>qdz_code</name>
  1350 + <rename>qdzcode</rename>
  1351 + <update>Y</update>
  1352 + </value>
  1353 + <value>
  1354 + <name>qdz_name</name>
  1355 + <rename>qname</rename>
  1356 + <update>Y</update>
  1357 + </value>
  1358 + <value>
  1359 + <name>zdz_code</name>
  1360 + <rename>zdzcode</rename>
  1361 + <update>Y</update>
  1362 + </value>
  1363 + <value>
  1364 + <name>zdz_name</name>
  1365 + <rename>tn</rename>
  1366 + <update>Y</update>
  1367 + </value>
1284 </lookup> 1368 </lookup>
1285 <cluster_schema/> 1369 <cluster_schema/>
1286 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1370 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
@@ -1391,6 +1475,18 @@ @@ -1391,6 +1475,18 @@
1391 <default/> 1475 <default/>
1392 <type>Integer</type> 1476 <type>Integer</type>
1393 </value> 1477 </value>
  1478 + <value>
  1479 + <name>park_code</name>
  1480 + <rename>qdzcode</rename>
  1481 + <default/>
  1482 + <type>String</type>
  1483 + </value>
  1484 + <value>
  1485 + <name>park_name</name>
  1486 + <rename>tn</rename>
  1487 + <default/>
  1488 + <type>String</type>
  1489 + </value>
1394 </lookup> 1490 </lookup>
1395 <cluster_schema/> 1491 <cluster_schema/>
1396 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1492 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
@@ -1433,6 +1529,18 @@ @@ -1433,6 +1529,18 @@
1433 <default/> 1529 <default/>
1434 <type>Integer</type> 1530 <type>Integer</type>
1435 </value> 1531 </value>
  1532 + <value>
  1533 + <name>park_code</name>
  1534 + <rename>zdzcode</rename>
  1535 + <default/>
  1536 + <type>String</type>
  1537 + </value>
  1538 + <value>
  1539 + <name>park_name</name>
  1540 + <rename>tn</rename>
  1541 + <default/>
  1542 + <type>String</type>
  1543 + </value>
1436 </lookup> 1544 </lookup>
1437 <cluster_schema/> 1545 <cluster_schema/>
1438 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1546 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
@@ -1499,6 +1607,12 @@ @@ -1499,6 +1607,12 @@
1499 <default/> 1607 <default/>
1500 <type>Integer</type> 1608 <type>Integer</type>
1501 </value> 1609 </value>
  1610 + <value>
  1611 + <name>station_code</name>
  1612 + <rename>zdzcode</rename>
  1613 + <default/>
  1614 + <type>String</type>
  1615 + </value>
1502 </lookup> 1616 </lookup>
1503 <cluster_schema/> 1617 <cluster_schema/>
1504 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1618 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
@@ -1841,6 +1955,12 @@ @@ -1841,6 +1955,12 @@
1841 <default/> 1955 <default/>
1842 <type>Integer</type> 1956 <type>Integer</type>
1843 </value> 1957 </value>
  1958 + <value>
  1959 + <name>station_code</name>
  1960 + <rename>zdzcode</rename>
  1961 + <default/>
  1962 + <type>String</type>
  1963 + </value>
1844 </lookup> 1964 </lookup>
1845 <cluster_schema/> 1965 <cluster_schema/>
1846 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1966 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
@@ -1907,6 +2027,12 @@ @@ -1907,6 +2027,12 @@
1907 <default/> 2027 <default/>
1908 <type>Integer</type> 2028 <type>Integer</type>
1909 </value> 2029 </value>
  2030 + <value>
  2031 + <name>station_code</name>
  2032 + <rename>qdzcode</rename>
  2033 + <default/>
  2034 + <type>String</type>
  2035 + </value>
1910 </lookup> 2036 </lookup>
1911 <cluster_schema/> 2037 <cluster_schema/>
1912 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 2038 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
@@ -2147,6 +2273,18 @@ @@ -2147,6 +2273,18 @@
2147 <default/> 2273 <default/>
2148 <type>Integer</type> 2274 <type>Integer</type>
2149 </value> 2275 </value>
  2276 + <value>
  2277 + <name>station_code</name>
  2278 + <rename>qdzcode</rename>
  2279 + <default/>
  2280 + <type>String</type>
  2281 + </value>
  2282 + <value>
  2283 + <name>station_name</name>
  2284 + <rename>qname</rename>
  2285 + <default/>
  2286 + <type>String</type>
  2287 + </value>
2150 </lookup> 2288 </lookup>
2151 <cluster_schema/> 2289 <cluster_schema/>
2152 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 2290 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
src/main/resources/datatools/ktrs/ttinfodetailoutputforedit.ktr
@@ -90,30 +90,9 @@ @@ -90,30 +90,9 @@
90 </info> 90 </info>
91 <notepads> 91 <notepads>
92 <notepad> 92 <notepad>
93 - <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>  
94 - <xloc>45</xloc>  
95 - <yloc>261</yloc>  
96 - <width>333</width>  
97 - <heigth>90</heigth>  
98 - <fontname>YaHei Consolas Hybrid</fontname>  
99 - <fontsize>12</fontsize>  
100 - <fontbold>N</fontbold>  
101 - <fontitalic>N</fontitalic>  
102 - <fontcolorred>0</fontcolorred>  
103 - <fontcolorgreen>0</fontcolorgreen>  
104 - <fontcolorblue>0</fontcolorblue>  
105 - <backgroundcolorred>255</backgroundcolorred>  
106 - <backgroundcolorgreen>205</backgroundcolorgreen>  
107 - <backgroundcolorblue>112</backgroundcolorblue>  
108 - <bordercolorred>100</bordercolorred>  
109 - <bordercolorgreen>100</bordercolorgreen>  
110 - <bordercolorblue>100</bordercolorblue>  
111 - <drawshadow>Y</drawshadow>  
112 - </notepad>  
113 - <notepad>  
114 <note>&#x6b64;&#x5904;&#x8f6c;&#x6362;excel&#x6709;&#x95ee;&#x9898;&#xff0c;&#xa;2003&#x683c;&#x5f0f;&#x7684;xls&#x6700;&#x591a;256&#x5217;&#xff0c;&#xa;&#x8fd9;&#x91cc;&#x660e;&#x663e;&#x8d85;&#x8fc7;&#xff0c;&#x6240;&#x4ee5;&#x628a;&#x6240;&#x6709;&#x5185;&#x5bb9;&#x5408;&#x5e76;&#x6210;1&#x5217;&#xff0c;&#xa;&#x7528;,&#x5206;&#x9694;</note> 93 <note>&#x6b64;&#x5904;&#x8f6c;&#x6362;excel&#x6709;&#x95ee;&#x9898;&#xff0c;&#xa;2003&#x683c;&#x5f0f;&#x7684;xls&#x6700;&#x591a;256&#x5217;&#xff0c;&#xa;&#x8fd9;&#x91cc;&#x660e;&#x663e;&#x8d85;&#x8fc7;&#xff0c;&#x6240;&#x4ee5;&#x628a;&#x6240;&#x6709;&#x5185;&#x5bb9;&#x5408;&#x5e76;&#x6210;1&#x5217;&#xff0c;&#xa;&#x7528;,&#x5206;&#x9694;</note>
115 - <xloc>256</xloc>  
116 - <yloc>397</yloc> 94 + <xloc>316</xloc>
  95 + <yloc>166</yloc>
117 <width>245</width> 96 <width>245</width>
118 <heigth>74</heigth> 97 <heigth>74</heigth>
119 <fontname>YaHei Consolas Hybrid</fontname> 98 <fontname>YaHei Consolas Hybrid</fontname>
@@ -133,6 +112,30 @@ @@ -133,6 +112,30 @@
133 </notepad> 112 </notepad>
134 </notepads> 113 </notepads>
135 <connection> 114 <connection>
  115 + <name>192.168.168.1_jwgl_dw</name>
  116 + <server>192.168.168.1</server>
  117 + <type>ORACLE</type>
  118 + <access>Native</access>
  119 + <database>orcl</database>
  120 + <port>1521</port>
  121 + <username>jwgl_dw</username>
  122 + <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password>
  123 + <servername/>
  124 + <data_tablespace/>
  125 + <index_tablespace/>
  126 + <attributes>
  127 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  128 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  129 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  130 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  131 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  132 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  133 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  134 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  135 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  136 + </attributes>
  137 + </connection>
  138 + <connection>
136 <name>bus_control_variable</name> 139 <name>bus_control_variable</name>
137 <server>&#x24;&#x7b;v_db_ip&#x7d;</server> 140 <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
138 <type>MYSQL</type> 141 <type>MYSQL</type>
@@ -294,22 +297,13 @@ @@ -294,22 +297,13 @@
294 </attributes> 297 </attributes>
295 </connection> 298 </connection>
296 <order> 299 <order>
297 - <hop> <from>&#x8868;&#x8f93;&#x5165;</from><to>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>  
298 - <hop> <from>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;</from><to>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x7ad9;&#x70b9;&#x67e5;&#x8be2;&#x7528;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>  
299 - <hop> <from>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;</from><to>&#x8fdb;&#x573a;&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x67e5;&#x8be2;&#x7528;&#x7684;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>  
300 - <hop> <from>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x7ad9;&#x70b9;&#x67e5;&#x8be2;&#x7528;&#x6570;&#x636e;</from><to>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;&#x540d;&#x79f0;</to><enabled>Y</enabled> </hop>  
301 - <hop> <from>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;&#x540d;&#x79f0;</from><to>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x540d;&#x79f0;</to><enabled>Y</enabled> </hop>  
302 - <hop> <from>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x540d;&#x79f0;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>  
303 - <hop> <from>&#x8fdb;&#x573a;&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x67e5;&#x8be2;&#x7528;&#x7684;&#x6570;&#x636e;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9; 2</to><enabled>Y</enabled> </hop>  
304 - <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>  
305 - <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9; 2</from><to>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>  
306 - <hop> <from>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</from><to>&#x8ba1;&#x7b97;&#x53d1;&#x8f66;&#x7ad9;&#x540d;</to><enabled>Y</enabled> </hop>  
307 <hop> <from>&#x5217;&#x8f6c;&#x884c;</from><to>&#x53bb;&#x9664;&#x5b57;&#x6bb5;</to><enabled>Y</enabled> </hop> 300 <hop> <from>&#x5217;&#x8f6c;&#x884c;</from><to>&#x53bb;&#x9664;&#x5b57;&#x6bb5;</to><enabled>Y</enabled> </hop>
308 <hop> <from>&#x53bb;&#x9664;&#x5b57;&#x6bb5;</from><to>Excel&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop> 301 <hop> <from>&#x53bb;&#x9664;&#x5b57;&#x6bb5;</from><to>Excel&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
309 <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x8868;&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop> 302 <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x8868;&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>
310 <hop> <from>&#x8ba1;&#x7b97;&#x53d1;&#x8f66;&#x7ad9;&#x540d;</from><to>&#x5408;&#x5e76;&#x5185;&#x5bb9;</to><enabled>Y</enabled> </hop> 303 <hop> <from>&#x8ba1;&#x7b97;&#x53d1;&#x8f66;&#x7ad9;&#x540d;</from><to>&#x5408;&#x5e76;&#x5185;&#x5bb9;</to><enabled>Y</enabled> </hop>
311 <hop> <from>&#x5408;&#x5e76;&#x5185;&#x5bb9;</from><to>&#x5217;&#x8f6c;&#x884c;</to><enabled>Y</enabled> </hop> 304 <hop> <from>&#x5408;&#x5e76;&#x5185;&#x5bb9;</from><to>&#x5217;&#x8f6c;&#x884c;</to><enabled>Y</enabled> </hop>
312 <hop> <from>&#x53bb;&#x9664;&#x5b57;&#x6bb5;</from><to>&#x6587;&#x672c;&#x6587;&#x4ef6;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop> 305 <hop> <from>&#x53bb;&#x9664;&#x5b57;&#x6bb5;</from><to>&#x6587;&#x672c;&#x6587;&#x4ef6;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
  306 + <hop> <from>&#x8868;&#x8f93;&#x5165;</from><to>&#x8ba1;&#x7b97;&#x53d1;&#x8f66;&#x7ad9;&#x540d;</to><enabled>Y</enabled> </hop>
313 </order> 307 </order>
314 <step> 308 <step>
315 <name>Excel&#x8f93;&#x51fa;</name> 309 <name>Excel&#x8f93;&#x51fa;</name>
@@ -1734,8 +1728,8 @@ @@ -1734,8 +1728,8 @@
1734 </fields> 1728 </fields>
1735 <cluster_schema/> 1729 <cluster_schema/>
1736 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1730 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1737 - <xloc>690</xloc>  
1738 - <yloc>272</yloc> 1731 + <xloc>683</xloc>
  1732 + <yloc>184</yloc>
1739 <draw>Y</draw> 1733 <draw>Y</draw>
1740 </GUI> 1734 </GUI>
1741 </step> 1735 </step>
@@ -2059,7 +2053,7 @@ @@ -2059,7 +2053,7 @@
2059 <optimizationLevel>9</optimizationLevel> 2053 <optimizationLevel>9</optimizationLevel>
2060 <jsScripts> <jsScript> <jsScript_type>0</jsScript_type> 2054 <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
2061 <jsScript_name>Script 1</jsScript_name> 2055 <jsScript_name>Script 1</jsScript_name>
2062 - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x987a;&#x5e8f;&#xff0c;id,fcsj,jhlc,zdname,bctype,xldir,isfb&#xa;var all_content_array &#x3d; &#x5b;&#x5d;&#x3b;&#xa;var all_content &#x3d; &#x22;&#x22;&#x3b; &#xa;all_content_array.push&#x28;id&#x29;&#x3b;&#xa;all_content_array.push&#x28;fcsj&#x29;&#x3b;&#xa;all_content_array.push&#x28;jhlc&#x29;&#x3b;&#xa;all_content_array.push&#x28;fczdName&#x29;&#x3b;&#xa;all_content_array.push&#x28;bc_type&#x29;&#x3b;&#xa;all_content_array.push&#x28;xl_dir&#x29;&#x3b;&#xa;all_content_array.push&#x28;isfb&#x29;&#x3b;&#xa;all_content_array.push&#x28;qdz &#x7c;&#x7c; &#x27;null&#x27;&#x29;&#x3b;&#xa;all_content_array.push&#x28;zdz &#x7c;&#x7c; &#x27;null&#x27;&#x29;&#x3b;&#xa;all_content_array.push&#x28;tcc &#x7c;&#x7c; &#x27;null&#x27;&#x29;&#x3b;&#xa;&#xa;all_content &#x3d; all_content_array.join&#x28;&#x22;,&#x22;&#x29;&#x3b; &#x2f;&#x2f; &#x9017;&#x53f7;&#x5206;&#x9694;</jsScript_script> 2056 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x987a;&#x5e8f;&#xff0c;id,fcsj,jhlc,zdname,bctype,xldir,isfb&#xa;var all_content_array &#x3d; &#x5b;&#x5d;&#x3b;&#xa;var all_content &#x3d; &#x22;&#x22;&#x3b; &#xa;all_content_array.push&#x28;id&#x29;&#x3b;&#xa;all_content_array.push&#x28;fcsj&#x29;&#x3b;&#xa;all_content_array.push&#x28;jhlc&#x29;&#x3b;&#xa;all_content_array.push&#x28;fczdName&#x29;&#x3b;&#xa;all_content_array.push&#x28;bc_type&#x29;&#x3b;&#xa;all_content_array.push&#x28;xl_dir&#x29;&#x3b;&#xa;all_content_array.push&#x28;isfb&#x29;&#x3b;&#xa;all_content_array.push&#x28;qdz_code &#x7c;&#x7c; &#x27;null&#x27;&#x29;&#x3b;&#xa;all_content_array.push&#x28;zdz_code &#x7c;&#x7c; &#x27;null&#x27;&#x29;&#x3b;&#xa;&#xa;all_content &#x3d; all_content_array.join&#x28;&#x22;,&#x22;&#x29;&#x3b; &#x2f;&#x2f; &#x9017;&#x53f7;&#x5206;&#x9694;</jsScript_script>
2063 </jsScript> </jsScripts> <fields> <field> <name>all_content</name> 2057 </jsScript> </jsScripts> <fields> <field> <name>all_content</name>
2064 <rename>all_content</rename> 2058 <rename>all_content</rename>
2065 <type>String</type> 2059 <type>String</type>
@@ -2068,194 +2062,8 @@ @@ -2068,194 +2062,8 @@
2068 <replace>N</replace> 2062 <replace>N</replace>
2069 </field> </fields> <cluster_schema/> 2063 </field> </fields> <cluster_schema/>
2070 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 2064 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
2071 - <xloc>551</xloc>  
2072 - <yloc>366</yloc>  
2073 - <draw>Y</draw>  
2074 - </GUI>  
2075 - </step>  
2076 -  
2077 - <step>  
2078 - <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>  
2079 - <type>SelectValues</type>  
2080 - <description/>  
2081 - <distribute>Y</distribute>  
2082 - <custom_distribution/>  
2083 - <copies>1</copies>  
2084 - <partitioning>  
2085 - <method>none</method>  
2086 - <schema_name/>  
2087 - </partitioning>  
2088 - <fields> <field> <name>id</name>  
2089 - <rename/>  
2090 - <length>-2</length>  
2091 - <precision>-2</precision>  
2092 - </field> <field> <name>lp</name>  
2093 - <rename/>  
2094 - <length>-2</length>  
2095 - <precision>-2</precision>  
2096 - </field> <field> <name>fcsj</name>  
2097 - <rename/>  
2098 - <length>-2</length>  
2099 - <precision>-2</precision>  
2100 - </field> <field> <name>fcno</name>  
2101 - <rename/>  
2102 - <length>-2</length>  
2103 - <precision>-2</precision>  
2104 - </field> <field> <name>bcs</name>  
2105 - <rename/>  
2106 - <length>-2</length>  
2107 - <precision>-2</precision>  
2108 - </field> <field> <name>bc_type</name>  
2109 - <rename/>  
2110 - <length>-2</length>  
2111 - <precision>-2</precision>  
2112 - </field> <field> <name>qdzName</name>  
2113 - <rename/>  
2114 - <length>-2</length>  
2115 - <precision>-2</precision>  
2116 - </field> <field> <name>zdzName</name>  
2117 - <rename/>  
2118 - <length>-2</length>  
2119 - <precision>-2</precision>  
2120 - </field> <field> <name>xl_dir</name>  
2121 - <rename/>  
2122 - <length>-2</length>  
2123 - <precision>-2</precision>  
2124 - </field> <field> <name>isfb</name>  
2125 - <rename/>  
2126 - <length>-2</length>  
2127 - <precision>-2</precision>  
2128 - </field> <field> <name>jhlc</name>  
2129 - <rename/>  
2130 - <length>-2</length>  
2131 - <precision>-2</precision>  
2132 - </field> <field> <name>qdz</name>  
2133 - <rename/>  
2134 - <length>-2</length>  
2135 - <precision>-2</precision>  
2136 - </field> <field> <name>zdz</name>  
2137 - <rename/>  
2138 - <length>-2</length>  
2139 - <precision>-2</precision>  
2140 - </field> <field> <name>tcc</name>  
2141 - <rename/>  
2142 - <length>-2</length>  
2143 - <precision>-2</precision>  
2144 - </field> <select_unspecified>N</select_unspecified>  
2145 - </fields> <cluster_schema/>  
2146 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
2147 - <xloc>690</xloc>  
2148 - <yloc>188</yloc>  
2149 - <draw>Y</draw>  
2150 - </GUI>  
2151 - </step>  
2152 -  
2153 - <step>  
2154 - <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9; 2</name>  
2155 - <type>SelectValues</type>  
2156 - <description/>  
2157 - <distribute>Y</distribute>  
2158 - <custom_distribution/>  
2159 - <copies>1</copies>  
2160 - <partitioning>  
2161 - <method>none</method>  
2162 - <schema_name/>  
2163 - </partitioning>  
2164 - <fields> <field> <name>id</name>  
2165 - <rename/>  
2166 - <length>-2</length>  
2167 - <precision>-2</precision>  
2168 - </field> <field> <name>lp</name>  
2169 - <rename/>  
2170 - <length>-2</length>  
2171 - <precision>-2</precision>  
2172 - </field> <field> <name>fcsj</name>  
2173 - <rename/>  
2174 - <length>-2</length>  
2175 - <precision>-2</precision>  
2176 - </field> <field> <name>fcno</name>  
2177 - <rename/>  
2178 - <length>-2</length>  
2179 - <precision>-2</precision>  
2180 - </field> <field> <name>bcs</name>  
2181 - <rename/>  
2182 - <length>-2</length>  
2183 - <precision>-2</precision>  
2184 - </field> <field> <name>bc_type</name>  
2185 - <rename/>  
2186 - <length>-2</length>  
2187 - <precision>-2</precision>  
2188 - </field> <field> <name>qdzName</name>  
2189 - <rename/>  
2190 - <length>-2</length>  
2191 - <precision>-2</precision>  
2192 - </field> <field> <name>zdzName</name>  
2193 - <rename/>  
2194 - <length>-2</length>  
2195 - <precision>-2</precision>  
2196 - </field> <field> <name>xl_dir</name>  
2197 - <rename/>  
2198 - <length>-2</length>  
2199 - <precision>-2</precision>  
2200 - </field> <field> <name>isfb</name>  
2201 - <rename/>  
2202 - <length>-2</length>  
2203 - <precision>-2</precision>  
2204 - </field> <field> <name>jhlc</name>  
2205 - <rename/>  
2206 - <length>-2</length>  
2207 - <precision>-2</precision>  
2208 - </field> <field> <name>qdz</name>  
2209 - <rename/>  
2210 - <length>-2</length>  
2211 - <precision>-2</precision>  
2212 - </field> <field> <name>zdz</name>  
2213 - <rename/>  
2214 - <length>-2</length>  
2215 - <precision>-2</precision>  
2216 - </field> <field> <name>tcc</name>  
2217 - <rename/>  
2218 - <length>-2</length>  
2219 - <precision>-2</precision>  
2220 - </field> <select_unspecified>N</select_unspecified>  
2221 - </fields> <cluster_schema/>  
2222 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
2223 - <xloc>402</xloc>  
2224 - <yloc>189</yloc>  
2225 - <draw>Y</draw>  
2226 - </GUI>  
2227 - </step>  
2228 -  
2229 - <step>  
2230 - <name>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</name>  
2231 - <type>SortRows</type>  
2232 - <description/>  
2233 - <distribute>Y</distribute>  
2234 - <custom_distribution/>  
2235 - <copies>1</copies>  
2236 - <partitioning>  
2237 - <method>none</method>  
2238 - <schema_name/>  
2239 - </partitioning>  
2240 - <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>  
2241 - <prefix>out</prefix>  
2242 - <sort_size>1000000</sort_size>  
2243 - <free_memory/>  
2244 - <compress>N</compress>  
2245 - <compress_variable/>  
2246 - <unique_rows>N</unique_rows>  
2247 - <fields>  
2248 - <field>  
2249 - <name>bcs</name>  
2250 - <ascending>Y</ascending>  
2251 - <case_sensitive>N</case_sensitive>  
2252 - <presorted>N</presorted>  
2253 - </field>  
2254 - </fields>  
2255 - <cluster_schema/>  
2256 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
2257 - <xloc>549</xloc>  
2258 - <yloc>191</yloc> 2065 + <xloc>441</xloc>
  2066 + <yloc>84</yloc>
2259 <draw>Y</draw> 2067 <draw>Y</draw>
2260 </GUI> 2068 </GUI>
2261 </step> 2069 </step>
@@ -3165,150 +2973,6 @@ @@ -3165,150 +2973,6 @@
3165 </step> 2973 </step>
3166 2974
3167 <step> 2975 <step>
3168 - <name>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x540d;&#x79f0;</name>  
3169 - <type>DBLookup</type>  
3170 - <description/>  
3171 - <distribute>Y</distribute>  
3172 - <custom_distribution/>  
3173 - <copies>1</copies>  
3174 - <partitioning>  
3175 - <method>none</method>  
3176 - <schema_name/>  
3177 - </partitioning>  
3178 - <connection>bus_control_variable</connection>  
3179 - <cache>Y</cache>  
3180 - <cache_load_all>Y</cache_load_all>  
3181 - <cache_size>0</cache_size>  
3182 - <lookup>  
3183 - <schema/>  
3184 - <table>bsth_c_stationroute</table>  
3185 - <orderby/>  
3186 - <fail_on_multiple>N</fail_on_multiple>  
3187 - <eat_row_on_failure>N</eat_row_on_failure>  
3188 - <key>  
3189 - <name>xl</name>  
3190 - <field>line</field>  
3191 - <condition>&#x3d;</condition>  
3192 - <name2/>  
3193 - </key>  
3194 - <key>  
3195 - <name>xl_dir</name>  
3196 - <field>directions</field>  
3197 - <condition>&#x3d;</condition>  
3198 - <name2/>  
3199 - </key>  
3200 - <key>  
3201 - <name>endZdType</name>  
3202 - <field>station_mark</field>  
3203 - <condition>&#x3d;</condition>  
3204 - <name2/>  
3205 - </key>  
3206 - <value>  
3207 - <name>station_name</name>  
3208 - <rename>zdzName</rename>  
3209 - <default/>  
3210 - <type>String</type>  
3211 - </value>  
3212 - </lookup>  
3213 - <cluster_schema/>  
3214 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
3215 - <xloc>688</xloc>  
3216 - <yloc>86</yloc>  
3217 - <draw>Y</draw>  
3218 - </GUI>  
3219 - </step>  
3220 -  
3221 - <step>  
3222 - <name>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;&#x540d;&#x79f0;</name>  
3223 - <type>DBLookup</type>  
3224 - <description/>  
3225 - <distribute>Y</distribute>  
3226 - <custom_distribution/>  
3227 - <copies>1</copies>  
3228 - <partitioning>  
3229 - <method>none</method>  
3230 - <schema_name/>  
3231 - </partitioning>  
3232 - <connection>bus_control_variable</connection>  
3233 - <cache>Y</cache>  
3234 - <cache_load_all>Y</cache_load_all>  
3235 - <cache_size>0</cache_size>  
3236 - <lookup>  
3237 - <schema/>  
3238 - <table>bsth_c_stationroute</table>  
3239 - <orderby/>  
3240 - <fail_on_multiple>N</fail_on_multiple>  
3241 - <eat_row_on_failure>N</eat_row_on_failure>  
3242 - <key>  
3243 - <name>xl</name>  
3244 - <field>line</field>  
3245 - <condition>&#x3d;</condition>  
3246 - <name2/>  
3247 - </key>  
3248 - <key>  
3249 - <name>xl_dir</name>  
3250 - <field>directions</field>  
3251 - <condition>&#x3d;</condition>  
3252 - <name2/>  
3253 - </key>  
3254 - <key>  
3255 - <name>startZdType</name>  
3256 - <field>station_mark</field>  
3257 - <condition>&#x3d;</condition>  
3258 - <name2/>  
3259 - </key>  
3260 - <value>  
3261 - <name>station_name</name>  
3262 - <rename>qdzName</rename>  
3263 - <default/>  
3264 - <type>String</type>  
3265 - </value>  
3266 - </lookup>  
3267 - <cluster_schema/>  
3268 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
3269 - <xloc>553</xloc>  
3270 - <yloc>86</yloc>  
3271 - <draw>Y</draw>  
3272 - </GUI>  
3273 - </step>  
3274 -  
3275 - <step>  
3276 - <name>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x7ad9;&#x70b9;&#x67e5;&#x8be2;&#x7528;&#x6570;&#x636e;</name>  
3277 - <type>ScriptValueMod</type>  
3278 - <description/>  
3279 - <distribute>Y</distribute>  
3280 - <custom_distribution/>  
3281 - <copies>1</copies>  
3282 - <partitioning>  
3283 - <method>none</method>  
3284 - <schema_name/>  
3285 - </partitioning>  
3286 - <compatible>N</compatible>  
3287 - <optimizationLevel>9</optimizationLevel>  
3288 - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>  
3289 - <jsScript_name>Script 1</jsScript_name>  
3290 - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var startZdType &#x3d; &#x27;B&#x27;&#x3b; &#x2f;&#x2f; &#x8d77;&#x70b9;&#x7ad9;&#x7ad9;&#x70b9;&#x7c7b;&#x578b;&#x6807;&#x8bc6;&#x522b;&#xa;var endZdType &#x3d; &#x27;E&#x27;&#x3b; &#x2f;&#x2f; &#x7ec8;&#x70b9;&#x7ad9;&#x7ad9;&#x70b9;&#x7c7b;&#x578b;&#x6807;&#x8bc6;</jsScript_script>  
3291 - </jsScript> </jsScripts> <fields> <field> <name>startZdType</name>  
3292 - <rename>startZdType</rename>  
3293 - <type>String</type>  
3294 - <length>-1</length>  
3295 - <precision>-1</precision>  
3296 - <replace>N</replace>  
3297 - </field> <field> <name>endZdType</name>  
3298 - <rename>endZdType</rename>  
3299 - <type>String</type>  
3300 - <length>-1</length>  
3301 - <precision>-1</precision>  
3302 - <replace>N</replace>  
3303 - </field> </fields> <cluster_schema/>  
3304 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
3305 - <xloc>391</xloc>  
3306 - <yloc>87</yloc>  
3307 - <draw>Y</draw>  
3308 - </GUI>  
3309 - </step>  
3310 -  
3311 - <step>  
3312 <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name> 2976 <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>
3313 <type>GetVariable</type> 2977 <type>GetVariable</type>
3314 <description/> 2978 <description/>
@@ -3365,7 +3029,7 @@ @@ -3365,7 +3029,7 @@
3365 <schema_name/> 3029 <schema_name/>
3366 </partitioning> 3030 </partitioning>
3367 <connection>bus_control_variable</connection> 3031 <connection>bus_control_variable</connection>
3368 - <sql>select &#xa;t.id as id&#xa;, concat&#x28;g.id, &#x27;_&#x27;, g.lp_name&#x29; as lp&#xa;, g.xl as xl&#xa;, qdz&#xa;, zdz&#xa;, tcc&#xa;, fcsj&#xa;, jhlc&#xa;, bc_type &#xa;, bcs&#xa;, fcno&#xa;, xl_dir&#xa;, isfb&#xa;from bsth_c_s_ttinfo_detail t left join &#xa;bsth_c_s_gbi g on t.lp &#x3d; g.id &#xa;where &#xa;g.xl &#x3d; &#x3f; and&#xa;t.ttinfo &#x3d; &#x3f; &#xa;order by t.bcs asc</sql> 3032 + <sql>select &#xa;t.id as id&#xa;, concat&#x28;g.id, &#x27;_&#x27;, g.lp_name&#x29; as lp&#xa;, g.xl as xl&#xa;, qdz_code&#xa;, qdz_name&#xa;, zdz_code&#xa;, zdz_name&#xa;, fcsj&#xa;, jhlc&#xa;, bc_type &#xa;, bcs&#xa;, fcno&#xa;, xl_dir&#xa;, isfb&#xa;from bsth_c_s_ttinfo_detail t left join &#xa;bsth_c_s_gbi g on t.lp &#x3d; g.id &#xa;where &#xa;g.xl &#x3d; &#x3f; and&#xa;t.ttinfo &#x3d; &#x3f; &#xa;order by g.lp_no asc, t.bcs asc</sql>
3369 <limit>0</limit> 3033 <limit>0</limit>
3370 <lookup>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</lookup> 3034 <lookup>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</lookup>
3371 <execute_each_row>N</execute_each_row> 3035 <execute_each_row>N</execute_each_row>
@@ -3394,7 +3058,7 @@ @@ -3394,7 +3058,7 @@
3394 <optimizationLevel>9</optimizationLevel> 3058 <optimizationLevel>9</optimizationLevel>
3395 <jsScripts> <jsScript> <jsScript_type>0</jsScript_type> 3059 <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
3396 <jsScript_name>Script 1</jsScript_name> 3060 <jsScript_name>Script 1</jsScript_name>
3397 - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var fczdName &#x3d; null&#x3b; &#x2f;&#x2f; &#x53d1;&#x8f66;&#x7ad9;&#x70b9;&#x540d;&#x5b57;&#xa;if &#x28;bc_type &#x3d;&#x3d; &#x22;in&#x22;&#x29; &#x7b;&#xa; fczdName &#x3d; &#x22;&#x8fdb;&#x573a;&#x22;&#x3b;&#xa;&#x7d; else if &#x28;bc_type &#x3d;&#x3d; &#x22;out&#x22;&#x29; &#x7b;&#xa; fczdName &#x3d; &#x22;&#x51fa;&#x573a;&#x22;&#x3b;&#xa;&#x7d; else &#x7b;&#xa; fczdName &#x3d; qdzName&#x3b;&#xa;&#x7d;</jsScript_script> 3061 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var fczdName &#x3d; null&#x3b; &#x2f;&#x2f; &#x53d1;&#x8f66;&#x7ad9;&#x70b9;&#x540d;&#x5b57;&#xa;if &#x28;bc_type &#x3d;&#x3d; &#x22;in&#x22;&#x29; &#x7b;&#xa; fczdName &#x3d; &#x22;&#x8fdb;&#x573a;&#x22;&#x3b;&#xa;&#x7d; else if &#x28;bc_type &#x3d;&#x3d; &#x22;out&#x22;&#x29; &#x7b;&#xa; fczdName &#x3d; &#x22;&#x51fa;&#x573a;&#x22;&#x3b;&#xa;&#x7d; else &#x7b;&#xa; fczdName &#x3d; qdz_name&#x3b;&#xa;&#x7d;</jsScript_script>
3398 </jsScript> </jsScripts> <fields> <field> <name>fczdName</name> 3062 </jsScript> </jsScripts> <fields> <field> <name>fczdName</name>
3399 <rename>fczdName</rename> 3063 <rename>fczdName</rename>
3400 <type>String</type> 3064 <type>String</type>
@@ -3403,73 +3067,8 @@ @@ -3403,73 +3067,8 @@
3403 <replace>N</replace> 3067 <replace>N</replace>
3404 </field> </fields> <cluster_schema/> 3068 </field> </fields> <cluster_schema/>
3405 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 3069 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
3406 - <xloc>550</xloc>  
3407 - <yloc>276</yloc>  
3408 - <draw>Y</draw>  
3409 - </GUI>  
3410 - </step>  
3411 -  
3412 - <step>  
3413 - <name>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;</name>  
3414 - <type>FilterRows</type>  
3415 - <description/>  
3416 - <distribute>Y</distribute>  
3417 - <custom_distribution/>  
3418 - <copies>1</copies>  
3419 - <partitioning>  
3420 - <method>none</method>  
3421 - <schema_name/>  
3422 - </partitioning>  
3423 -<send_true_to>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x7ad9;&#x70b9;&#x67e5;&#x8be2;&#x7528;&#x6570;&#x636e;</send_true_to>  
3424 -<send_false_to>&#x8fdb;&#x573a;&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x67e5;&#x8be2;&#x7528;&#x7684;&#x6570;&#x636e;</send_false_to>  
3425 - <compare>  
3426 -<condition>  
3427 - <negated>N</negated>  
3428 - <leftvalue>bc_type</leftvalue>  
3429 - <function>&#x3d;</function>  
3430 - <rightvalue/>  
3431 - <value><name>constant</name><type>String</type><text>normal</text><length>-1</length><precision>-1</precision><isnull>N</isnull><mask/></value> </condition>  
3432 - </compare>  
3433 - <cluster_schema/>  
3434 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
3435 - <xloc>248</xloc>  
3436 - <yloc>87</yloc>  
3437 - <draw>Y</draw>  
3438 - </GUI>  
3439 - </step>  
3440 -  
3441 - <step>  
3442 - <name>&#x8fdb;&#x573a;&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x67e5;&#x8be2;&#x7528;&#x7684;&#x6570;&#x636e;</name>  
3443 - <type>ScriptValueMod</type>  
3444 - <description/>  
3445 - <distribute>Y</distribute>  
3446 - <custom_distribution/>  
3447 - <copies>1</copies>  
3448 - <partitioning>  
3449 - <method>none</method>  
3450 - <schema_name/>  
3451 - </partitioning>  
3452 - <compatible>N</compatible>  
3453 - <optimizationLevel>9</optimizationLevel>  
3454 - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>  
3455 - <jsScript_name>Script 1</jsScript_name>  
3456 - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var qdzName &#x3d; null&#x3b; &#x2f;&#x2f; &#x8d77;&#x70b9;&#x7ad9;&#x540d;&#x5b57;&#xa;var zdzName &#x3d; null&#x3b; &#x2f;&#x2f; &#x7ec8;&#x70b9;&#x7ad9;&#x540d;&#x5b57;</jsScript_script>  
3457 - </jsScript> </jsScripts> <fields> <field> <name>qdzName</name>  
3458 - <rename>qdzName</rename>  
3459 - <type>String</type>  
3460 - <length>-1</length>  
3461 - <precision>-1</precision>  
3462 - <replace>N</replace>  
3463 - </field> <field> <name>zdzName</name>  
3464 - <rename>zdzName</rename>  
3465 - <type>String</type>  
3466 - <length>-1</length>  
3467 - <precision>-1</precision>  
3468 - <replace>N</replace>  
3469 - </field> </fields> <cluster_schema/>  
3470 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
3471 - <xloc>250</xloc>  
3472 - <yloc>188</yloc> 3070 + <xloc>282</xloc>
  3071 + <yloc>82</yloc>
3473 <draw>Y</draw> 3072 <draw>Y</draw>
3474 </GUI> 3073 </GUI>
3475 </step> 3074 </step>
src/main/resources/rules/plan.drl
@@ -127,6 +127,8 @@ rule &quot;calcu_step2_loop_result&quot; @@ -127,6 +127,8 @@ rule &quot;calcu_step2_loop_result&quot;
127 $lr.getTtInfoMap().put(ttInfo_result.getTtInfoId(), ttInfo_result); 127 $lr.getTtInfoMap().put(ttInfo_result.getTtInfoId(), ttInfo_result);
128 128
129 update($lr); 129 update($lr);
  130 +
  131 + log.info("calcu_step2_Loop_result");
130 end 132 end
131 133
132 //-------------------- 第二阶段、将时刻表班次,车辆配置,人员配置信息载入 -----------------// 134 //-------------------- 第二阶段、将时刻表班次,车辆配置,人员配置信息载入 -----------------//
@@ -149,6 +151,8 @@ rule &quot;calcu_CarConfig_Wrap&quot; @@ -149,6 +151,8 @@ rule &quot;calcu_CarConfig_Wrap&quot;
149 carConfig_wrap.setSelf($ccf); 151 carConfig_wrap.setSelf($ccf);
150 152
151 insert(carConfig_wrap); 153 insert(carConfig_wrap);
  154 +
  155 + log.info("calcu_CarConfig_Wrap");
152 end 156 end
153 157
154 //--------------- 人员配置信息载入 --------------// 158 //--------------- 人员配置信息载入 --------------//
@@ -169,6 +173,8 @@ rule &quot;calcu_EmployeeConfig_Wrap&quot; @@ -169,6 +173,8 @@ rule &quot;calcu_EmployeeConfig_Wrap&quot;
169 employeeConfig_wrap.setSelf($eci); 173 employeeConfig_wrap.setSelf($eci);
170 174
171 insert(employeeConfig_wrap); 175 insert(employeeConfig_wrap);
  176 +
  177 + log.info("calcu_EmployeeConfig_Wrap");
172 end 178 end
173 179
174 //----------------- 时刻表班次信息载入 -----------------// 180 //----------------- 时刻表班次信息载入 -----------------//
src/main/resources/rules/shiftloop_fb_2.drl
@@ -10,14 +10,15 @@ import com.bsth.service.schedule.rules.shiftloop.ScheduleRule_input; @@ -10,14 +10,15 @@ import com.bsth.service.schedule.rules.shiftloop.ScheduleRule_input;
10 import com.bsth.service.schedule.rules.shiftloop.ScheduleResult_output; 10 import com.bsth.service.schedule.rules.shiftloop.ScheduleResult_output;
11 import com.bsth.service.schedule.rules.shiftloop.ScheduleResults_output; 11 import com.bsth.service.schedule.rules.shiftloop.ScheduleResults_output;
12 12
13 -import com.bsth.repository.schedule.SchedulePlanRuleResultRepository;  
14 import com.bsth.entity.schedule.temp.SchedulePlanRuleResult; 13 import com.bsth.entity.schedule.temp.SchedulePlanRuleResult;
15 14
  15 +import com.bsth.service.schedule.rules.ScheduleRuleService;
  16 +
16 import org.slf4j.Logger; 17 import org.slf4j.Logger;
17 18
18 global Logger log; 19 global Logger log;
19 global ScheduleResults_output scheduleResult; 20 global ScheduleResults_output scheduleResult;
20 -global SchedulePlanRuleResultRepository schedulePlanRuleResultRepository; 21 +global ScheduleRuleService scheduleRuleService;
21 22
22 /* 23 /*
23 存在(翻班格式) 24 存在(翻班格式)
@@ -135,7 +136,7 @@ rule &quot;Calcu_SchedulePlanRuleResult_wrap&quot; @@ -135,7 +136,7 @@ rule &quot;Calcu_SchedulePlanRuleResult_wrap&quot;
135 $self: schedulePlan 136 $self: schedulePlan
136 ) 137 )
137 eval($self.getIsHistoryPlanFirst() == true) // 是否使用历史排班标识 138 eval($self.getIsHistoryPlanFirst() == true) // 是否使用历史排班标识
138 - $sprr: SchedulePlanRuleResult() from schedulePlanRuleResultRepository.findLastByXl($xlId, $fromDate.toDate()) 139 + $sprr: SchedulePlanRuleResult() from scheduleRuleService.findLastByXl($xlId, $fromDate.toDate())
139 140
140 then 141 then
141 // 创建班序历史结果数据 142 // 创建班序历史结果数据
@@ -284,7 +285,8 @@ rule &quot;Calcu_loop2_1_&quot; // 路牌在时刻表中存在,就翻 @@ -284,7 +285,8 @@ rule &quot;Calcu_loop2_1_&quot; // 路牌在时刻表中存在,就翻
284 285
285 // 保存排班规则循环结果 --> SchedulePlanRuleResult 286 // 保存排班规则循环结果 --> SchedulePlanRuleResult
286 SchedulePlanRuleResult schedulePlanRuleResult = new SchedulePlanRuleResult($sp); 287 SchedulePlanRuleResult schedulePlanRuleResult = new SchedulePlanRuleResult($sp);
287 - schedulePlanRuleResult.setXlId(String.valueOf($srf.getXl().getId())); 288 +// schedulePlanRuleResult.setXlId(String.valueOf($srf.getXl().getId()));
  289 + schedulePlanRuleResult.setXlId($srf.getXl().getId());
288 schedulePlanRuleResult.setXlName($srf.getXl().getName()); 290 schedulePlanRuleResult.setXlName($srf.getXl().getName());
289 schedulePlanRuleResult.setRuleId($ruleId); 291 schedulePlanRuleResult.setRuleId($ruleId);
290 schedulePlanRuleResult.setCcId($cid); 292 schedulePlanRuleResult.setCcId($cid);
src/main/resources/static/pages/scheduleApp/module/common/dts2/ttinfotable/saTimeTable.js
@@ -21,9 +21,8 @@ angular.module(&#39;ScheduleApp&#39;).factory( @@ -21,9 +21,8 @@ angular.module(&#39;ScheduleApp&#39;).factory(
21 this.bc_type = detailInfo && detailInfo.bc_type; // 班次类型 21 this.bc_type = detailInfo && detailInfo.bc_type; // 班次类型
22 this.xldir = detailInfo && detailInfo.xldir; // 线路上下行 22 this.xldir = detailInfo && detailInfo.xldir; // 线路上下行
23 this.isfb = detailInfo && detailInfo.isfb; // 是否分班 23 this.isfb = detailInfo && detailInfo.isfb; // 是否分班
24 - this.qdz = detailInfo && detailInfo.qdz; // 起点站id  
25 - this.zdz = detailInfo && detailInfo.zdz; // 终点站id  
26 - this.tcc = detailInfo && detailInfo.tcc; // 停车场id 24 + this.qdzCode = detailInfo && detailInfo.qdzCode; // 起点站Code
  25 + this.zdzCode = detailInfo && detailInfo.zdzCode; // 终点站Code
27 26
28 // 路牌信息 27 // 路牌信息
29 this.lpId = undefined; // id 28 this.lpId = undefined; // id
@@ -71,30 +70,9 @@ angular.module(&#39;ScheduleApp&#39;).factory( @@ -71,30 +70,9 @@ angular.module(&#39;ScheduleApp&#39;).factory(
71 }; 70 };
72 BcInfo.prototype.validInfo = function() { // 验证班次信息内容是否正确 71 BcInfo.prototype.validInfo = function() { // 验证班次信息内容是否正确
73 if (this.canSel() && this.ttdid) { 72 if (this.canSel() && this.ttdid) {
74 - if (this.bc_type == 'in') {  
75 - if (this.qdz == null || this.tcc == null) {  
76 - this.isValidInfo = true;  
77 - return true;  
78 - } else {  
79 - this.isValidInfo = false;  
80 - return false;  
81 - }  
82 - } else if (this.bc_type == 'out') {  
83 - if (this.tcc == null || this.zdz == null) {  
84 - this.isValidInfo = true;  
85 - return true;  
86 - } else {  
87 - this.isValidInfo = false;  
88 - return false;  
89 - }  
90 - } else {  
91 - if (this.qdz == null || this.zdz == null) {  
92 - this.isValidInfo = true;  
93 - return true;  
94 - } else {  
95 - this.isValidInfo = false;  
96 - return false;  
97 - } 73 + if (!this.qdzCode || !this.zdzCode) { // 编码为空判定
  74 + this.isValidInfo = true;
  75 + return true;
98 } 76 }
99 } else { 77 } else {
100 this.isValidInfo = false; 78 this.isValidInfo = false;
@@ -195,6 +173,8 @@ angular.module(&#39;ScheduleApp&#39;).factory( @@ -195,6 +173,8 @@ angular.module(&#39;ScheduleApp&#39;).factory(
195 173
196 return bcInfo; 174 return bcInfo;
197 }, 175 },
  176 +
  177 + // TODO:
198 initTTInfoDetail: function(formobj, cellinfo, colinfo, xlid, xlname, ttid, ttname) { 178 initTTInfoDetail: function(formobj, cellinfo, colinfo, xlid, xlname, ttid, ttname) {
199 formobj.xl = {}; 179 formobj.xl = {};
200 formobj.xl.id = xlid; 180 formobj.xl.id = xlid;
@@ -211,18 +191,9 @@ angular.module(&#39;ScheduleApp&#39;).factory( @@ -211,18 +191,9 @@ angular.module(&#39;ScheduleApp&#39;).factory(
211 191
212 formobj.bcType = colinfo.bc_type; 192 formobj.bcType = colinfo.bc_type;
213 formobj.xlDir = colinfo.xldir; 193 formobj.xlDir = colinfo.xldir;
214 - if (colinfo.qdz) {  
215 - formobj.qdz = {};  
216 - formobj.qdz.id = colinfo.qdz;  
217 - }  
218 - if (colinfo.zdz) {  
219 - formobj.zdz = {};  
220 - formobj.zdz.id = colinfo.zdz;  
221 - }  
222 - if (colinfo.tcc) {  
223 - formobj.tcc = {};  
224 - formobj.tcc.id = colinfo.tcc;  
225 - } 194 +
  195 + formobj.qdzCode = colinfo.qdzCode;
  196 + formobj.zdzCode = colinfo.zdzCode;
226 197
227 } 198 }
228 }; 199 };
src/main/resources/static/pages/scheduleApp/module/common/prj-common-directive.js
@@ -3719,9 +3719,8 @@ angular.module(&#39;ScheduleApp&#39;).factory( @@ -3719,9 +3719,8 @@ angular.module(&#39;ScheduleApp&#39;).factory(
3719 this.bc_type = detailInfo && detailInfo.bc_type; // 班次类型 3719 this.bc_type = detailInfo && detailInfo.bc_type; // 班次类型
3720 this.xldir = detailInfo && detailInfo.xldir; // 线路上下行 3720 this.xldir = detailInfo && detailInfo.xldir; // 线路上下行
3721 this.isfb = detailInfo && detailInfo.isfb; // 是否分班 3721 this.isfb = detailInfo && detailInfo.isfb; // 是否分班
3722 - this.qdz = detailInfo && detailInfo.qdz; // 起点站id  
3723 - this.zdz = detailInfo && detailInfo.zdz; // 终点站id  
3724 - this.tcc = detailInfo && detailInfo.tcc; // 停车场id 3722 + this.qdzCode = detailInfo && detailInfo.qdzCode; // 起点站Code
  3723 + this.zdzCode = detailInfo && detailInfo.zdzCode; // 终点站Code
3725 3724
3726 // 路牌信息 3725 // 路牌信息
3727 this.lpId = undefined; // id 3726 this.lpId = undefined; // id
@@ -3769,30 +3768,9 @@ angular.module(&#39;ScheduleApp&#39;).factory( @@ -3769,30 +3768,9 @@ angular.module(&#39;ScheduleApp&#39;).factory(
3769 }; 3768 };
3770 BcInfo.prototype.validInfo = function() { // 验证班次信息内容是否正确 3769 BcInfo.prototype.validInfo = function() { // 验证班次信息内容是否正确
3771 if (this.canSel() && this.ttdid) { 3770 if (this.canSel() && this.ttdid) {
3772 - if (this.bc_type == 'in') {  
3773 - if (this.qdz == null || this.tcc == null) {  
3774 - this.isValidInfo = true;  
3775 - return true;  
3776 - } else {  
3777 - this.isValidInfo = false;  
3778 - return false;  
3779 - }  
3780 - } else if (this.bc_type == 'out') {  
3781 - if (this.tcc == null || this.zdz == null) {  
3782 - this.isValidInfo = true;  
3783 - return true;  
3784 - } else {  
3785 - this.isValidInfo = false;  
3786 - return false;  
3787 - }  
3788 - } else {  
3789 - if (this.qdz == null || this.zdz == null) {  
3790 - this.isValidInfo = true;  
3791 - return true;  
3792 - } else {  
3793 - this.isValidInfo = false;  
3794 - return false;  
3795 - } 3771 + if (!this.qdzCode || !this.zdzCode) { // 编码为空判定
  3772 + this.isValidInfo = true;
  3773 + return true;
3796 } 3774 }
3797 } else { 3775 } else {
3798 this.isValidInfo = false; 3776 this.isValidInfo = false;
@@ -3893,6 +3871,8 @@ angular.module(&#39;ScheduleApp&#39;).factory( @@ -3893,6 +3871,8 @@ angular.module(&#39;ScheduleApp&#39;).factory(
3893 3871
3894 return bcInfo; 3872 return bcInfo;
3895 }, 3873 },
  3874 +
  3875 + // TODO:
3896 initTTInfoDetail: function(formobj, cellinfo, colinfo, xlid, xlname, ttid, ttname) { 3876 initTTInfoDetail: function(formobj, cellinfo, colinfo, xlid, xlname, ttid, ttname) {
3897 formobj.xl = {}; 3877 formobj.xl = {};
3898 formobj.xl.id = xlid; 3878 formobj.xl.id = xlid;
@@ -3909,18 +3889,9 @@ angular.module(&#39;ScheduleApp&#39;).factory( @@ -3909,18 +3889,9 @@ angular.module(&#39;ScheduleApp&#39;).factory(
3909 3889
3910 formobj.bcType = colinfo.bc_type; 3890 formobj.bcType = colinfo.bc_type;
3911 formobj.xlDir = colinfo.xldir; 3891 formobj.xlDir = colinfo.xldir;
3912 - if (colinfo.qdz) {  
3913 - formobj.qdz = {};  
3914 - formobj.qdz.id = colinfo.qdz;  
3915 - }  
3916 - if (colinfo.zdz) {  
3917 - formobj.zdz = {};  
3918 - formobj.zdz.id = colinfo.zdz;  
3919 - }  
3920 - if (colinfo.tcc) {  
3921 - formobj.tcc = {};  
3922 - formobj.tcc.id = colinfo.tcc;  
3923 - } 3892 +
  3893 + formobj.qdzCode = colinfo.qdzCode;
  3894 + formobj.zdzCode = colinfo.zdzCode;
3924 3895
3925 } 3896 }
3926 }; 3897 };
src/main/resources/static/pages/scheduleApp/module/common/prj-common-globalservice-legacy.js
@@ -97,6 +97,24 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;FileDownload_g&#39;, function() { @@ -97,6 +97,24 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;FileDownload_g&#39;, function() {
97 // saSelect2指令使用的内部信service 97 // saSelect2指令使用的内部信service
98 angular.module('ScheduleApp').factory('$$SearchInfoService_g', ['$resource', function($resource) { 98 angular.module('ScheduleApp').factory('$$SearchInfoService_g', ['$resource', function($resource) {
99 return { 99 return {
  100 + zd_tcc: $resource(
  101 + '/tidc/zd_tcc',
  102 + {},
  103 + {
  104 + list: {
  105 + method: 'GET',
  106 + isArray: true,
  107 + transformResponse: function(rs) {
  108 + var dst = angular.fromJson(rs);
  109 + if (dst.status == 'SUCCESS') {
  110 + return dst.data;
  111 + } else {
  112 + return dst; // 业务错误留给控制器处理
  113 + }
  114 + }
  115 + }
  116 + }
  117 + ),
100 gs: $resource( 118 gs: $resource(
101 '/business', 119 '/business',
102 {order: 'businessCode', direction: 'ASC'}, 120 {order: 'businessCode', direction: 'ASC'},
src/main/resources/static/pages/scheduleApp/module/common/prj-common-globalservice.js
@@ -830,6 +830,24 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;FileDownload_g&#39;, function() { @@ -830,6 +830,24 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;FileDownload_g&#39;, function() {
830 // saSelect2指令使用的内部信service 830 // saSelect2指令使用的内部信service
831 angular.module('ScheduleApp').factory('$$SearchInfoService_g', ['$resource', function($resource) { 831 angular.module('ScheduleApp').factory('$$SearchInfoService_g', ['$resource', function($resource) {
832 return { 832 return {
  833 + zd_tcc: $resource(
  834 + '/tidc/zd_tcc',
  835 + {},
  836 + {
  837 + list: {
  838 + method: 'GET',
  839 + isArray: true,
  840 + transformResponse: function(rs) {
  841 + var dst = angular.fromJson(rs);
  842 + if (dst.status == 'SUCCESS') {
  843 + return dst.data;
  844 + } else {
  845 + return dst; // 业务错误留给控制器处理
  846 + }
  847 + }
  848 + }
  849 + }
  850 + ),
833 gs: $resource( 851 gs: $resource(
834 '/business', 852 '/business',
835 {order: 'businessCode', direction: 'ASC'}, 853 {order: 'businessCode', direction: 'ASC'},
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/detailedit/edit-detail.html
@@ -85,113 +85,19 @@ @@ -85,113 +85,19 @@
85 85
86 </div> 86 </div>
87 87
88 - <!--- 进场班次判定 -->  
89 - <div class="form-group has-success has-feedback"  
90 - ng-if="ctrl.TimeTableDetailForSave.bcType == 'in'">  
91 - <label class="col-md-2 control-label">起点站:</label>  
92 - <div class="col-md-3">  
93 - <sa-Select5 name="qdz"  
94 - model="ctrl.stop_temp"  
95 - cmaps="{'qdz.id' : 'stationid'}"  
96 - dcname="qdz.id"  
97 - icname="stationid"  
98 - dsparams="{{ {type: 'ajax', param:{'xlid': ctrl.TimeTableDetailForSave.xl.id, 'xldir': ctrl.TimeTableDetailForSave.xlDir}, atype:'zd' } | json }}"  
99 - iterobjname="item"  
100 - iterobjexp="item.stationname"  
101 - searchph="请输拼音..."  
102 - searchexp="this.stationname"  
103 - required >  
104 - </sa-Select5>  
105 - </div>  
106 - <!-- 隐藏块,显示验证信息 -->  
107 - <div class="alert alert-danger well-sm" ng-show="myForm.qdz.$error.required">  
108 - 起点站必须选择  
109 - </div>  
110 - </div>  
111 - <div class="form-group has-success has-feedback"  
112 - ng-if="ctrl.TimeTableDetailForSave.bcType == 'in'">  
113 - <label class="col-md-2 control-label">停车场:</label>  
114 - <div class="col-md-3">  
115 - <sa-Select5 name="tcc"  
116 - model="ctrl.stop_temp"  
117 - cmaps="{'tcc.id': 'id'}"  
118 - dcname="tcc.id"  
119 - icname="id"  
120 - dsparams="{{ {type: 'ajax', param:{type: 'all'}, atype:'tcc' } | json }}"  
121 - iterobjname="item"  
122 - iterobjexp="item.parkName"  
123 - searchph="请输拼音..."  
124 - searchexp="this.parkName"  
125 - required >  
126 - </sa-Select5>  
127 - </div>  
128 - <!-- 隐藏块,显示验证信息 -->  
129 - <div class="alert alert-danger well-sm" ng-show="myForm.tcc.$error.required">  
130 - 停车场必须选择  
131 - </div>  
132 - </div>  
133 -  
134 - <!--- 出场班次判定 -->  
135 - <div class="form-group has-success has-feedback"  
136 - ng-if="ctrl.TimeTableDetailForSave.bcType == 'out'">  
137 - <label class="col-md-2 control-label">停车场:</label>  
138 - <div class="col-md-3">  
139 - <sa-Select5 name="tcc"  
140 - model="ctrl.stop_temp"  
141 - cmaps="{'tcc.id': 'id'}"  
142 - dcname="tcc.id"  
143 - icname="id"  
144 - dsparams="{{ {type: 'ajax', param:{type: 'all'}, atype:'tcc' } | json }}"  
145 - iterobjname="item"  
146 - iterobjexp="item.parkName"  
147 - searchph="请输拼音..."  
148 - searchexp="this.parkName"  
149 - required >  
150 - </sa-Select5>  
151 - </div>  
152 - <!-- 隐藏块,显示验证信息 -->  
153 - <div class="alert alert-danger well-sm" ng-show="myForm.tcc.$error.required">  
154 - 停车场必须选择  
155 - </div>  
156 - </div>  
157 - <div class="form-group has-success has-feedback"  
158 - ng-if="ctrl.TimeTableDetailForSave.bcType == 'out'">  
159 - <label class="col-md-2 control-label">终点站:</label>  
160 - <div class="col-md-3">  
161 - <sa-Select5 name="zdz"  
162 - model="ctrl.stop_temp"  
163 - cmaps="{'zdz.id' : 'stationid'}"  
164 - dcname="zdz.id"  
165 - icname="stationid"  
166 - dsparams="{{ {type: 'ajax', param:{'xlid': ctrl.TimeTableDetailForSave.xl.id, 'xldir': ctrl.TimeTableDetailForSave.xlDir}, atype:'zd' } | json }}"  
167 - iterobjname="item"  
168 - iterobjexp="item.stationname"  
169 - searchph="请输拼音..."  
170 - searchexp="this.stationname"  
171 - required >  
172 - </sa-Select5>  
173 - </div>  
174 - <!-- 隐藏块,显示验证信息 -->  
175 - <div class="alert alert-danger well-sm" ng-show="myForm.zdz.$error.required">  
176 - 终点站必须选择  
177 - </div>  
178 - </div>  
179 -  
180 - <!-- 其他班次类型 -->  
181 - <div class="form-group has-success has-feedback"  
182 - ng-if="ctrl.TimeTableDetailForSave.bcType != 'in' && ctrl.TimeTableDetailForSave.bcType != 'out'"> 88 + <div class="form-group has-success has-feedback">
183 <label class="col-md-2 control-label">起点站:</label> 89 <label class="col-md-2 control-label">起点站:</label>
184 <div class="col-md-3"> 90 <div class="col-md-3">
185 <sa-Select5 name="qdz" 91 <sa-Select5 name="qdz"
186 - model="ctrl.stop_temp"  
187 - cmaps="{'qdz.id' : 'stationid'}"  
188 - dcname="qdz.id"  
189 - icname="stationid"  
190 - dsparams="{{ {type: 'ajax', param:{'xlid': ctrl.TimeTableDetailForSave.xl.id, 'xldir': ctrl.TimeTableDetailForSave.xlDir}, atype:'zd' } | json }}" 92 + model="ctrl.TimeTableDetailForSave"
  93 + cmaps="{'qdzCode' : 'zcode', 'qdzName': 'zname'}"
  94 + dcname="qdzCode"
  95 + icname="zcode"
  96 + dsparams="{{ {type: 'ajax', param:{'lineid': ctrl.TimeTableDetailForSave.xl.id, 'xldir': ctrl.TimeTableDetailForSave.xlDir}, atype:'zd_tcc' } | json }}"
191 iterobjname="item" 97 iterobjname="item"
192 - iterobjexp="item.stationname" 98 + iterobjexp="item.zname"
193 searchph="请输拼音..." 99 searchph="请输拼音..."
194 - searchexp="this.stationname" 100 + searchexp="this.zname"
195 required > 101 required >
196 </sa-Select5> 102 </sa-Select5>
197 </div> 103 </div>
@@ -200,20 +106,19 @@ @@ -200,20 +106,19 @@
200 起点站必须选择 106 起点站必须选择
201 </div> 107 </div>
202 </div> 108 </div>
203 - <div class="form-group has-success has-feedback"  
204 - ng-if="ctrl.TimeTableDetailForSave.bcType != 'in' && ctrl.TimeTableDetailForSave.bcType != 'out'"> 109 + <div class="form-group has-success has-feedback">
205 <label class="col-md-2 control-label">终点站:</label> 110 <label class="col-md-2 control-label">终点站:</label>
206 <div class="col-md-3"> 111 <div class="col-md-3">
207 <sa-Select5 name="zdz" 112 <sa-Select5 name="zdz"
208 - model="ctrl.stop_temp"  
209 - cmaps="{'zdz.id' : 'stationid'}"  
210 - dcname="zdz.id"  
211 - icname="stationid"  
212 - dsparams="{{ {type: 'ajax', param:{'xlid': ctrl.TimeTableDetailForSave.xl.id, 'xldir': ctrl.TimeTableDetailForSave.xlDir}, atype:'zd' } | json }}" 113 + model="ctrl.TimeTableDetailForSave"
  114 + cmaps="{'zdzCode' : 'zcode', 'zdzName': 'zname'}"
  115 + dcname="zdzCode"
  116 + icname="zcode"
  117 + dsparams="{{ {type: 'ajax', param:{'lineid': ctrl.TimeTableDetailForSave.xl.id, 'xldir': ctrl.TimeTableDetailForSave.xlDir}, atype:'zd_tcc' } | json }}"
213 iterobjname="item" 118 iterobjname="item"
214 - iterobjexp="item.stationname" 119 + iterobjexp="item.zname"
215 searchph="请输拼音..." 120 searchph="请输拼音..."
216 - searchexp="this.stationname" 121 + searchexp="this.zname"
217 required > 122 required >
218 </sa-Select5> 123 </sa-Select5>
219 </div> 124 </div>
@@ -316,7 +221,7 @@ @@ -316,7 +221,7 @@
316 <div class="form-group"> 221 <div class="form-group">
317 <label class="col-md-2 control-label">备注:</label> 222 <label class="col-md-2 control-label">备注:</label>
318 <div class="col-md-3"> 223 <div class="col-md-3">
319 - <textarea class="form-control" 224 + <textarea class="form-control"
320 ng-model="ctrl.TimeTableDetailForSave.remark" 225 ng-model="ctrl.TimeTableDetailForSave.remark"
321 /> 226 />
322 </div> 227 </div>
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/detailedit/edit-detail2.html
@@ -66,116 +66,37 @@ @@ -66,116 +66,37 @@
66 66
67 <div ng-if="ctrl.isZdModify == true"> 67 <div ng-if="ctrl.isZdModify == true">
68 68
69 - <!--- 出场班次判定 -->  
70 - <div class="form-group"  
71 - ng-if="ctrl.tt.bcType == 'out'">  
72 - <label class="col-md-2 control-label">停车场:</label>  
73 - <div class="col-md-3">  
74 - <sa-Select5 name="tcc"  
75 - model="ctrl.tt"  
76 - cmaps="{'tcc.id': 'id'}"  
77 - dcname="tcc.id"  
78 - icname="id"  
79 - dsparams="{{ {type: 'ajax', param:{type: 'all'}, atype:'tcc' } | json }}"  
80 - iterobjname="item"  
81 - iterobjexp="item.parkName"  
82 - searchph="请输拼音..."  
83 - searchexp="this.parkName"  
84 - >  
85 - </sa-Select5>  
86 - </div>  
87 - </div>  
88 - <div class="form-group"  
89 - ng-if="ctrl.tt.bcType == 'out'">  
90 - <label class="col-md-2 control-label">终点站:</label>  
91 - <div class="col-md-3">  
92 - <sa-Select5 name="zdz"  
93 - model="ctrl.tt"  
94 - cmaps="{'zdz.id' : 'stationid'}"  
95 - dcname="zdz.id"  
96 - icname="stationid"  
97 - dsparams="{{ {type: 'ajax', param:{'xlid': ctrl.xlid, 'xldir': ctrl.tt.xlDir}, atype:'zd' } | json }}"  
98 - iterobjname="item"  
99 - iterobjexp="item.stationname"  
100 - searchph="请输拼音..."  
101 - searchexp="this.stationname"  
102 - >  
103 - </sa-Select5>  
104 - </div>  
105 - </div>  
106 -  
107 - <!--- 进场班次判定 -->  
108 - <div class="form-group"  
109 - ng-if="ctrl.tt.bcType == 'in'"> 69 + <div class="form-group">
110 <label class="col-md-2 control-label">起点站:</label> 70 <label class="col-md-2 control-label">起点站:</label>
111 <div class="col-md-3"> 71 <div class="col-md-3">
112 <sa-Select5 name="qdz" 72 <sa-Select5 name="qdz"
113 model="ctrl.tt" 73 model="ctrl.tt"
114 - cmaps="{'qdz.id' : 'stationid'}"  
115 - dcname="qdz.id"  
116 - icname="stationid"  
117 - dsparams="{{ {type: 'ajax', param:{'xlid': ctrl.xlid, 'xldir': ctrl.tt.xlDir}, atype:'zd' } | json }}" 74 + cmaps="{'qdzCode' : 'zcode', 'qdzName': 'zname'}"
  75 + dcname="qdzCode"
  76 + icname="zcode"
  77 + dsparams="{{ {type: 'ajax', param:{'lineid': ctrl.xlid, 'xldir': ctrl.tt.xlDir}, atype:'zd_tcc' } | json }}"
118 iterobjname="item" 78 iterobjname="item"
119 - iterobjexp="item.stationname" 79 + iterobjexp="item.zname"
120 searchph="请输拼音..." 80 searchph="请输拼音..."
121 - searchexp="this.stationname"  
122 - > 81 + searchexp="this.zname"
  82 + required >
123 </sa-Select5> 83 </sa-Select5>
124 </div> 84 </div>
125 </div> 85 </div>
126 - <div class="form-group"  
127 - ng-if="ctrl.tt.bcType == 'in'">  
128 - <label class="col-md-2 control-label">停车场:</label>  
129 - <div class="col-md-3">  
130 - <sa-Select5 name="tcc"  
131 - model="ctrl.tt"  
132 - cmaps="{'tcc.id': 'id'}"  
133 - dcname="tcc.id"  
134 - icname="id"  
135 - dsparams="{{ {type: 'ajax', param:{type: 'all'}, atype:'tcc' } | json }}"  
136 - iterobjname="item"  
137 - iterobjexp="item.parkName"  
138 - searchph="请输拼音..."  
139 - searchexp="this.parkName"  
140 - >  
141 - </sa-Select5>  
142 - </div>  
143 - </div>  
144 -  
145 - <!-- 其他班次类型 -->  
146 - <div class="form-group"  
147 - ng-if="ctrl.tt.bcType != 'in' && ctrl.tt.bcType != 'out'">  
148 - <label class="col-md-2 control-label">起点站:</label>  
149 - <div class="col-md-3">  
150 - <sa-Select5 name="qdz"  
151 - model="ctrl.tt"  
152 - cmaps="{'qdz.id' : 'stationid'}"  
153 - dcname="qdz.id"  
154 - icname="stationid"  
155 - dsparams="{{ {type: 'ajax', param:{'xlid': ctrl.xlid, 'xldir': ctrl.tt.xlDir}, atype:'zd' } | json }}"  
156 - iterobjname="item"  
157 - iterobjexp="item.stationname"  
158 - searchph="请输拼音..."  
159 - searchexp="this.stationname"  
160 - >  
161 - </sa-Select5>  
162 - </div>  
163 - </div>  
164 - <div class="form-group"  
165 - ng-if="ctrl.tt.bcType != 'in' && ctrl.tt.bcType != 'out'"> 86 + <div class="form-group">
166 <label class="col-md-2 control-label">终点站:</label> 87 <label class="col-md-2 control-label">终点站:</label>
167 <div class="col-md-3"> 88 <div class="col-md-3">
168 <sa-Select5 name="zdz" 89 <sa-Select5 name="zdz"
169 model="ctrl.tt" 90 model="ctrl.tt"
170 - cmaps="{'zdz.id' : 'stationid'}"  
171 - dcname="zdz.id"  
172 - icname="stationid"  
173 - dsparams="{{ {type: 'ajax', param:{'xlid': ctrl.xlid, 'xldir': ctrl.tt.xlDir}, atype:'zd' } | json }}" 91 + cmaps="{'zdzCode' : 'zcode', 'zdzName': 'zname'}"
  92 + dcname="zdzCode"
  93 + icname="zcode"
  94 + dsparams="{{ {type: 'ajax', param:{'lineid': ctrl.xlid, 'xldir': ctrl.tt.xlDir}, atype:'zd_tcc' } | json }}"
174 iterobjname="item" 95 iterobjname="item"
175 - iterobjexp="item.stationname" 96 + iterobjexp="item.zname"
176 searchph="请输拼音..." 97 searchph="请输拼音..."
177 - searchexp="this.stationname"  
178 - > 98 + searchexp="this.zname"
  99 + required >
179 </sa-Select5> 100 </sa-Select5>
180 </div> 101 </div>
181 </div> 102 </div>
@@ -252,6 +173,16 @@ @@ -252,6 +173,16 @@
252 173
253 </div> 174 </div>
254 175
  176 + <div class="form-group">
  177 + <label class="col-md-2 control-label">备注:</label>
  178 + <div class="col-md-3">
  179 + <textarea class="form-control"
  180 + ng-model="ctrl.tt.remark"
  181 + />
  182 + </div>
  183 +
  184 + </div>
  185 +
255 </div> 186 </div>
256 187
257 <div class="form-actions"> 188 <div class="form-actions">
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/detailedit/timeTableDetailManage_old.js
@@ -67,9 +67,8 @@ angular.module(&#39;ScheduleApp&#39;).factory( @@ -67,9 +67,8 @@ angular.module(&#39;ScheduleApp&#39;).factory(
67 editInfo.columnBcInfo[j].bc_type = detailInfo.bc_type; 67 editInfo.columnBcInfo[j].bc_type = detailInfo.bc_type;
68 editInfo.columnBcInfo[j].xldir = detailInfo.xldir; 68 editInfo.columnBcInfo[j].xldir = detailInfo.xldir;
69 editInfo.columnBcInfo[j].isfb = detailInfo.isfb; 69 editInfo.columnBcInfo[j].isfb = detailInfo.isfb;
70 - editInfo.columnBcInfo[j].qdz = detailInfo.qdz;  
71 - editInfo.columnBcInfo[j].zdz = detailInfo.zdz;  
72 - editInfo.columnBcInfo[j].tcc = detailInfo.tcc; 70 + editInfo.columnBcInfo[j].qdzCode = detailInfo.qdzCode;
  71 + editInfo.columnBcInfo[j].zdzCode = detailInfo.zdzCode;
73 } 72 }
74 73
75 } 74 }
@@ -120,9 +119,8 @@ angular.module(&#39;ScheduleApp&#39;).factory( @@ -120,9 +119,8 @@ angular.module(&#39;ScheduleApp&#39;).factory(
120 ttinfodetailIds[index].fcsj = undefined; 119 ttinfodetailIds[index].fcsj = undefined;
121 ttinfodetailIds[index].xldir = undefined; 120 ttinfodetailIds[index].xldir = undefined;
122 ttinfodetailIds[index].bc_type = undefined; 121 ttinfodetailIds[index].bc_type = undefined;
123 - ttinfodetailIds[index].qdz = undefined;  
124 - ttinfodetailIds[index].zdz = undefined;  
125 - ttinfodetailIds[index].tcc = undefined; 122 + ttinfodetailIds[index].qdzCode = undefined;
  123 + ttinfodetailIds[index].zdzCode = undefined;
126 124
127 ttinfodetailIds[index].validInfo(); 125 ttinfodetailIds[index].validInfo();
128 126
@@ -181,9 +179,8 @@ angular.module(&#39;ScheduleApp&#39;).factory( @@ -181,9 +179,8 @@ angular.module(&#39;ScheduleApp&#39;).factory(
181 ttinfodetailIds[index].fcsj = value.fcsj || undefined; 179 ttinfodetailIds[index].fcsj = value.fcsj || undefined;
182 ttinfodetailIds[index].xldir = value.xlDir || undefined; 180 ttinfodetailIds[index].xldir = value.xlDir || undefined;
183 ttinfodetailIds[index].bc_type = value.bcType || undefined; 181 ttinfodetailIds[index].bc_type = value.bcType || undefined;
184 - ttinfodetailIds[index].qdz = value.qdz || undefined;  
185 - ttinfodetailIds[index].zdz = value.zdz || undefined;  
186 - ttinfodetailIds[index].tcc = value.tcc || undefined; 182 + ttinfodetailIds[index].qdzCode = value.qdzCode || undefined;
  183 + ttinfodetailIds[index].zdzCode = value.zdzCode || undefined;
187 ttinfodetailIds[index].isfb = value.isFB || undefined; 184 ttinfodetailIds[index].isfb = value.isFB || undefined;
188 185
189 ttinfodetailIds[index].validInfo(); 186 ttinfodetailIds[index].validInfo();
@@ -412,7 +409,7 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -412,7 +409,7 @@ angular.module(&#39;ScheduleApp&#39;).controller(
412 self.refresh(); // 刷新数据 409 self.refresh(); // 刷新数据
413 } 410 }
414 411
415 - 412 + // TODO:
416 self.validateCellInfo = function(cell) { 413 self.validateCellInfo = function(cell) {
417 if (cell.bc_type == 'in') { 414 if (cell.bc_type == 'in') {
418 if (cell.qdz == null || cell.tcc == null) { 415 if (cell.qdz == null || cell.tcc == null) {
@@ -473,40 +470,9 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -473,40 +470,9 @@ angular.module(&#39;ScheduleApp&#39;).controller(
473 470
474 self.title1 = self.xlname + "(" + self.ttname + ")" + "时刻表明细信息"; 471 self.title1 = self.xlname + "(" + self.ttname + ")" + "时刻表明细信息";
475 472
476 - self.stop_temp = {  
477 - qdz: {id: undefined}, // 起点站  
478 - zdz: {id: undefined}, // 终点站  
479 - tcc: {id: undefined}, // 停车场  
480 - setModelValue: function(timeTableDetailForSave) {  
481 - var model = timeTableDetailForSave;  
482 - this.qdz.id = model.qdz ? model.qdz.id : undefined;  
483 - this.zdz.id = model.zdz ? model.zdz.id : undefined;  
484 - this.tcc.id = model.tcc ? model.tcc.id : undefined;  
485 - },  
486 - reSetModelValue: function(timeTableDetailForSave) {  
487 - var model = timeTableDetailForSave;  
488 - if (model.bcType == "in") {  
489 - model.qdz = this.qdz;  
490 - model.tcc = this.tcc;  
491 - } else if (model.bcType == "out") {  
492 - model.tcc = this.tcc;  
493 - model.zdz = this.zdz;  
494 - } else {  
495 - model.qdz = this.qdz;  
496 - model.zdz = this.zdz;  
497 - }  
498 - }  
499 -  
500 - };  
501 - self.stop_temp.qdz_temp = undefined; // 起点站id  
502 - self.stop_temp.zdz_temp = undefined; // 终点站id  
503 - self.stop_temp.tcc_temp = undefined; // 停车场id  
504 -  
505 if (id) { 473 if (id) {
506 TTInfoDetail.get({id: id}, function(value) { 474 TTInfoDetail.get({id: id}, function(value) {
507 self.TimeTableDetailForSave = value; 475 self.TimeTableDetailForSave = value;
508 -  
509 - self.stop_temp.setModelValue(value);  
510 self.title2 = 476 self.title2 =
511 self.xlname + "(" + self.ttname + ")" + "时刻表明细信息" + 477 self.xlname + "(" + self.ttname + ")" + "时刻表明细信息" +
512 "->路牌" + self.TimeTableDetailForSave.lp.lpName + 478 "->路牌" + self.TimeTableDetailForSave.lp.lpName +
@@ -524,8 +490,6 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -524,8 +490,6 @@ angular.module(&#39;ScheduleApp&#39;).controller(
524 self.ttid, 490 self.ttid,
525 self.ttname 491 self.ttname
526 ); 492 );
527 -  
528 - self.stop_temp.setModelValue(self.TimeTableDetailForSave);  
529 self.title2 = 493 self.title2 =
530 self.xlname + "(" + self.ttname + ")" + "时刻表明细信息" + 494 self.xlname + "(" + self.ttname + ")" + "时刻表明细信息" +
531 "->路牌" + self.TimeTableDetailForSave.lp.lpName + 495 "->路牌" + self.TimeTableDetailForSave.lp.lpName +
@@ -540,9 +504,6 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -540,9 +504,6 @@ angular.module(&#39;ScheduleApp&#39;).controller(
540 //if (self.busInfoForSave) { 504 //if (self.busInfoForSave) {
541 // delete $stateParams.id; 505 // delete $stateParams.id;
542 //} 506 //}
543 -  
544 - self.stop_temp.reSetModelValue(self.TimeTableDetailForSave);  
545 -  
546 self.TimeTableDetailForSave.$save(function(value) { 507 self.TimeTableDetailForSave.$save(function(value) {
547 // 修正内部edit的值 508 // 修正内部edit的值
548 var detailInfos = service.getEditInfo().detailInfos; 509 var detailInfos = service.getEditInfo().detailInfos;
@@ -551,9 +512,8 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -551,9 +512,8 @@ angular.module(&#39;ScheduleApp&#39;).controller(
551 detailInfo.fcsj = value.fcsj || undefined; 512 detailInfo.fcsj = value.fcsj || undefined;
552 detailInfo.xldir = value.xlDir || undefined; 513 detailInfo.xldir = value.xlDir || undefined;
553 detailInfo.bc_type = value.bcType || undefined; 514 detailInfo.bc_type = value.bcType || undefined;
554 - detailInfo.tcc = value.tcc || undefined;  
555 - detailInfo.zdz = value.zdz || undefined;  
556 - detailInfo.qdz = value.qdz || undefined; 515 + detailInfo.qdzCode = value.qdzCode || undefined;
  516 + detailInfo.zdzCode = value.zdzCode || undefined;
557 detailInfo.isfb = value.isFB; 517 detailInfo.isfb = value.isFB;
558 518
559 detailInfo.validInfo(); 519 detailInfo.validInfo();
@@ -609,19 +569,14 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -609,19 +569,14 @@ angular.module(&#39;ScheduleApp&#39;).controller(
609 569
610 self.tt = { 570 self.tt = {
611 xlDir: undefined, 571 xlDir: undefined,
612 - tcc: {id: undefined},  
613 - qdz: {id: undefined},  
614 - zdz: {id: undefined}, 572 + qdzCode: undefined,
  573 + zdzCode: undefined,
615 bcType: undefined, 574 bcType: undefined,
616 isFB: undefined, 575 isFB: undefined,
617 reSetTTinfoDetail: function(value) { 576 reSetTTinfoDetail: function(value) {
618 for (var key in this) { 577 for (var key in this) {
619 if (!angular.isFunction(this[key])) { 578 if (!angular.isFunction(this[key])) {
620 - if (key == 'tcc' || key == 'qdz' || key == 'zdz') {  
621 - if (this[key].id) {  
622 - value[key] = this[key];  
623 - }  
624 - } else if (this[key] != undefined) { 579 + if (this[key] != undefined) {
625 value[key] = this[key]; 580 value[key] = this[key];
626 } 581 }
627 } 582 }
@@ -636,7 +591,7 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -636,7 +591,7 @@ angular.module(&#39;ScheduleApp&#39;).controller(
636 var detailInfos = service.getEditInfo().detailInfos; 591 var detailInfos = service.getEditInfo().detailInfos;
637 for (var i = 0; i < detailInfos.length; i++) { 592 for (var i = 0; i < detailInfos.length; i++) {
638 for (var j = 0; j < detailInfos[i].length; j++) { 593 for (var j = 0; j < detailInfos[i].length; j++) {
639 - if (detailInfos[i][j].canDelete()) { 594 + if (detailInfos[i][j].sel == true) {
640 colIndexs_maps[j] = j; 595 colIndexs_maps[j] = j;
641 } 596 }
642 } 597 }
@@ -651,9 +606,8 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -651,9 +606,8 @@ angular.module(&#39;ScheduleApp&#39;).controller(
651 606
652 self.tt.xlDir = columnBcInfo.xldir; 607 self.tt.xlDir = columnBcInfo.xldir;
653 self.tt.bcType = columnBcInfo.bc_type; 608 self.tt.bcType = columnBcInfo.bc_type;
654 - self.tt.qdz.id = columnBcInfo.qdz;  
655 - self.tt.zdz.id = columnBcInfo.zdz;  
656 - self.tt.tcc.id = columnBcInfo.tcc; 609 + self.tt.qdzCode = columnBcInfo.qdzCode;
  610 + self.tt.zdzCode = columnBcInfo.zdzCode;
657 } 611 }
658 612
659 // 提交方法 613 // 提交方法
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task/add_sub_task_range_turn.html
@@ -27,8 +27,11 @@ @@ -27,8 +27,11 @@
27 </div> 27 </div>
28 </div> 28 </div>
29 </div> 29 </div>
30 - <div class="uk-width-2-4" style="padding-left: 28px;">  
31 - <h6 style="color: #a7a5a5;margin-top: 35px;"><i class="uk-icon-question-circle"> </i> 30 + <div class="uk-width-2-4" style="padding: 20px 0 0 28px;">
  31 + <label>
  32 + <input type="checkbox" id="emptyTurnCbox"> 调头后空驶回起点
  33 + </label>
  34 + <h6 style="color: #a7a5a5;margin-top: 0;"><i class="uk-icon-question-circle"> </i>
32 如果“调头站点”在另一个走向不存在,你需要手动选择第二个营运起点</h6> 35 如果“调头站点”在另一个走向不存在,你需要手动选择第二个营运起点</h6>
33 </div> 36 </div>
34 </div> 37 </div>
@@ -164,7 +167,7 @@ @@ -164,7 +167,7 @@
164 <div class="uk-grid"> 167 <div class="uk-grid">
165 <div class="uk-width-3-10"> 168 <div class="uk-width-3-10">
166 <div class="uk-form-row"> 169 <div class="uk-form-row">
167 - <label class="uk-form-label">营运里程</label> 170 + <label class="uk-form-label mileage_label">营运里程</label>
168 </div> 171 </div>
169 </div> 172 </div>
170 <div class="uk-width-7-10 pl5"> 173 <div class="uk-width-7-10 pl5">
@@ -178,7 +181,7 @@ @@ -178,7 +181,7 @@
178 </div> 181 </div>
179 </div> 182 </div>
180 <div class="uk-width-7-10 pl5"> 183 <div class="uk-width-7-10 pl5">
181 - <input type="time" name="startDate" value="{{sch.dfsj}}" required disabled> 184 + <input type="time" name="startDate" value="{{sch.dfsj}}" required >
182 </div> 185 </div>
183 </div> 186 </div>
184 <div class="uk-grid"> 187 <div class="uk-grid">
@@ -188,7 +191,7 @@ @@ -188,7 +191,7 @@
188 </div> 191 </div>
189 </div> 192 </div>
190 <div class="uk-width-7-10 pl5"> 193 <div class="uk-width-7-10 pl5">
191 - <input type="time" name="endDate" value="{{sch.zdsj}}" required> 194 + <input type="time" name="endDate" value="{{sch.zdsj}}" >
192 </div> 195 </div>
193 </div> 196 </div>
194 </script> 197 </script>
@@ -295,7 +298,7 @@ @@ -295,7 +298,7 @@
295 298
296 //营运2 299 //营运2
297 nsf.html(template('range_turn_child_service-temp', nextData)); 300 nsf.html(template('range_turn_child_service-temp', nextData));
298 - disabledField(nsf, 'endDate'); 301 + disabledField(nsf, 'startDate');
299 //烂班1 302 //烂班1
300 cdf.html(template('range_turn_child_destroy-temp', currData)); 303 cdf.html(template('range_turn_child_destroy-temp', currData));
301 disabledField(cdf, 'endStation'); 304 disabledField(cdf, 'endStation');
@@ -351,6 +354,9 @@ @@ -351,6 +354,9 @@
351 return; 354 return;
352 } 355 }
353 var data = dataArray[i]; 356 var data = dataArray[i];
  357 + //营运子任务不写备注
  358 + if(data.mileageType == 'service' && !data.destroy)
  359 + data.remarks = '';
354 gb_common.$post('/childTask', data, function (rs) { 360 gb_common.$post('/childTask', data, function (rs) {
355 notify_succ('子任务添加成功'); 361 notify_succ('子任务添加成功');
356 gb_schedule_table.updateSchedule(rs.t); 362 gb_schedule_table.updateSchedule(rs.t);
@@ -432,8 +438,10 @@ @@ -432,8 +438,10 @@
432 $('[name=startDate]', cdf).val(ets); 438 $('[name=startDate]', cdf).val(ets);
433 //烂班2终点 439 //烂班2终点
434 try { 440 try {
435 - $('[name=endStation]', ndf).val(searchParallelStation());  
436 - calcFormMileage(ndf, nextSch.xlDir); 441 + if(!$('#emptyTurnCbox', modal)[0].checked){
  442 + $('[name=endStation]', ndf).val(searchParallelStation());
  443 + calcFormMileage(ndf, nextSch.xlDir);
  444 + }
437 } catch (e) { 445 } catch (e) {
438 } 446 }
439 //开始时间 447 //开始时间
@@ -585,6 +593,37 @@ @@ -585,6 +593,37 @@
585 btmDrawer.data('name', id).data('url', url).trigger('drawer_show'); 593 btmDrawer.data('name', id).data('url', url).trigger('drawer_show');
586 } 594 }
587 } 595 }
  596 +
  597 + /**
  598 + * 选择空驶调头
  599 + */
  600 + $('#emptyTurnCbox', modal).on('click', function () {
  601 + if(this.checked){
  602 + //全程烂班
  603 + $('[name=endStation]', ndf).val(nextSch.zdzCode).attr('disabled', 'disabled');
  604 + $('[name=mileage]', ndf).val(nextSch.jhlc).attr('disabled', 'disabled');
  605 + //空驶回起点,营运变空驶
  606 + var $panel = nsf.parents('.uk-panel').removeClass('uk-panel-box-primary')
  607 + .addClass('uk-panel-box-secondary');
  608 + $panel.find('.uk-panel-badge').addClass('uk-badge-default').text('空驶');
  609 + $panel.find('.mileage_label').text('空驶里程');
  610 +
  611 + $('[name=mileageType]', nsf).val('empty');
  612 + }
  613 + else{
  614 + //恢复
  615 + $('[name=endStation]', ndf).removeAttr('disabled');
  616 + $('[name=mileage]', ndf).removeAttr('disabled');
  617 +
  618 + //空驶变营运
  619 + var $panel = nsf.parents('.uk-panel').removeClass('uk-panel-box-secondary')
  620 + .addClass('uk-panel-box-primary');
  621 + $panel.find('.uk-panel-badge').removeClass('uk-badge-default').text('营运');
  622 + $panel.find('.mileage_label').text('营运里程');
  623 +
  624 + reClac();
  625 + }
  626 + });
588 })(); 627 })();
589 </script> 628 </script>
590 </div> 629 </div>
591 \ No newline at end of file 630 \ No newline at end of file
src/main/resources/static/real_control_v2/js/line_schedule/context_menu.js
@@ -193,7 +193,8 @@ var gb_schedule_context_menu = (function () { @@ -193,7 +193,8 @@ var gb_schedule_context_menu = (function () {
193 193
194 var idx='', minute=0; 194 var idx='', minute=0;
195 $.each(schArray, function () { 195 $.each(schArray, function () {
196 - if(this.fcsjActual && this.status != 0){ 196 + if(this.bcType=='in' || this.bcType=='out' ||
  197 + (this.fcsjActual && this.status != 0)){
197 return true; 198 return true;
198 } 199 }
199 else 200 else
@@ -202,7 +203,7 @@ var gb_schedule_context_menu = (function () { @@ -202,7 +203,7 @@ var gb_schedule_context_menu = (function () {
202 }); 203 });
203 204
204 if(!idx || idx==''){ 205 if(!idx || idx==''){
205 - notify_err('没有需要调整的班次!'); 206 + notify_err('没有需要设置误点停靠时间的班次!');
206 return; 207 return;
207 } 208 }
208 209
src/main/resources/static/real_control_v2/js/line_schedule/sch_table.js
@@ -100,49 +100,12 @@ var gb_schedule_table = (function () { @@ -100,49 +100,12 @@ var gb_schedule_table = (function () {
100 gb_ct_table.enableSort($('.ct_table', content), reset_seq_no, gb_schedule_table_dbclick.init); 100 gb_ct_table.enableSort($('.ct_table', content), reset_seq_no, gb_schedule_table_dbclick.init);
101 //dbclick event 101 //dbclick event
102 gb_schedule_table_dbclick.init(); 102 gb_schedule_table_dbclick.init();
103 - //点击实发,show detail  
104 - fcsjActualCellQtip(); 103 + //双击实发
  104 + gb_schedule_table_dbclick.sfsjCellClick($('dd.fcsjActualCell'));
105 cb && cb(); 105 cb && cb();
106 }); 106 });
107 }; 107 };
108 108
109 - function fcsjActualCellQtip() {  
110 - //单击实发单元格显示详细信息  
111 - $(document).on('click', 'dd.fcsjActualCell', function () {  
112 - var that = this;  
113 - $(that).qtip({  
114 - show: true,  
115 - content: {  
116 - text: function (e) {  
117 - var lineCode = $(that).parents('li.line_schedule').data('id')  
118 - , id = $(that).parents('dl').data('id')  
119 - , sch = line2Schedule[lineCode][id];  
120 - return temps['sfsj_sch-detail-temp'](sch);  
121 - }  
122 - }  
123 - , style: {  
124 - classes: 'qtip-dark qtip-rounded qtip-shadow'  
125 - },  
126 - hide: {  
127 - fixed: true,  
128 - delay: 300  
129 - },  
130 - position: {  
131 - target: that,  
132 - my: 'center left',  
133 - at: 'center right'  
134 - },  
135 - events: {  
136 - hidden: function (event, api) {  
137 - $(this).qtip('destroy', true);  
138 - }  
139 - }  
140 - });  
141 - });  
142 -  
143 - //双击  
144 - gb_schedule_table_dbclick.sfsjCellClick($('dd.fcsjActualCell'));  
145 - }  
146 109
147 //重置序号 110 //重置序号
148 var reset_seq_no = function (dls) { 111 var reset_seq_no = function (dls) {
@@ -174,16 +137,21 @@ var gb_schedule_table = (function () { @@ -174,16 +137,21 @@ var gb_schedule_table = (function () {
174 137
175 //新增一个班次,附带更新的班次 138 //新增一个班次,附带更新的班次
176 var insertSchedule = function (sch, upArr) { 139 var insertSchedule = function (sch, upArr) {
  140 + var xls = {};
  141 + xls[sch.xlBm] = 1;
177 line2Schedule[sch.xlBm][sch.id] = sch; 142 line2Schedule[sch.xlBm][sch.id] = sch;
178 //update 143 //update
179 if (isArray(upArr)) { 144 if (isArray(upArr)) {
180 $.each(upArr, function () { 145 $.each(upArr, function () {
181 line2Schedule[this.xlBm][this.id] = this; 146 line2Schedule[this.xlBm][this.id] = this;
  147 + xls[this.xlBm] = 1;
182 }); 148 });
183 } 149 }
184 150
185 //重新渲染表格 151 //重新渲染表格
186 - reRenderTable(sch.xlBm); 152 + for(var xlBm in xls){
  153 + reRenderTable(sch.xlBm);
  154 + }
187 //定位到新添加的班次 155 //定位到新添加的班次
188 scroToDl(sch); 156 scroToDl(sch);
189 }; 157 };
@@ -350,6 +318,39 @@ var gb_schedule_table = (function () { @@ -350,6 +318,39 @@ var gb_schedule_table = (function () {
350 markerLastSch([sch]); 318 markerLastSch([sch]);
351 }; 319 };
352 320
  321 + //单击实发单元格显示详细信息
  322 + $(document).on('click', 'dd.fcsjActualCell', function () {
  323 + var that = this;
  324 + $(that).qtip({
  325 + show: true,
  326 + content: {
  327 + text: function (e) {
  328 + var lineCode = $(that).parents('li.line_schedule').data('id')
  329 + , id = $(that).parents('dl').data('id')
  330 + , sch = line2Schedule[lineCode][id];
  331 + return temps['sfsj_sch-detail-temp'](sch);
  332 + }
  333 + }
  334 + , style: {
  335 + classes: 'qtip-dark qtip-rounded qtip-shadow'
  336 + },
  337 + hide: {
  338 + fixed: true,
  339 + delay: 300
  340 + },
  341 + position: {
  342 + target: that,
  343 + my: 'center left',
  344 + at: 'center right'
  345 + },
  346 + events: {
  347 + hidden: function (event, api) {
  348 + $(this).qtip('destroy', true);
  349 + }
  350 + }
  351 + });
  352 + });
  353 +
353 //拖拽选中... 354 //拖拽选中...
354 var seq_nos = '.line-schedule-table .ct_table_body>dl>dd.seq_no'; 355 var seq_nos = '.line-schedule-table .ct_table_body>dl>dd.seq_no';
355 var drag_strat; 356 var drag_strat;
@@ -601,6 +602,14 @@ var gb_schedule_table = (function () { @@ -601,6 +602,14 @@ var gb_schedule_table = (function () {
601 return dfCell; 602 return dfCell;
602 }; 603 };
603 604
  605 +
  606 + /**
  607 + * 刷新页面的所有线路班次
  608 + */
  609 + var refreshAll = function () {
  610 + show();
  611 + };
  612 +
604 return { 613 return {
605 show: show, 614 show: show,
606 findScheduleByLine: findScheduleByLine, 615 findScheduleByLine: findScheduleByLine,
@@ -620,6 +629,7 @@ var gb_schedule_table = (function () { @@ -620,6 +629,7 @@ var gb_schedule_table = (function () {
620 addRemarks: addRemarks, 629 addRemarks: addRemarks,
621 reLoadAndRefresh: reLoadAndRefresh, 630 reLoadAndRefresh: reLoadAndRefresh,
622 showLateBadge: showLateBadge, 631 showLateBadge: showLateBadge,
623 - cancelLateBadge: cancelLateBadge 632 + cancelLateBadge: cancelLateBadge,
  633 + refreshAll: refreshAll
624 }; 634 };
625 })(); 635 })();
src/main/resources/static/real_control_v2/js/line_schedule/search.js
@@ -78,6 +78,8 @@ var gb_sch_search = (function() { @@ -78,6 +78,8 @@ var gb_sch_search = (function() {
78 //uikit 会记住上一次搜索值,触发keyup以清空该值 78 //uikit 会记住上一次搜索值,触发keyup以清空该值
79 $('.sch-search-autocom input', cont).val('').trigger('keyup').parent().removeClass('active'); 79 $('.sch-search-autocom input', cont).val('').trigger('keyup').parent().removeClass('active');
80 $('.line-schedule-table .ct_table_body dl._search_hide', cont).removeClass('_search_hide'); 80 $('.line-schedule-table .ct_table_body dl._search_hide', cont).removeClass('_search_hide');
  81 + //更新滚动条高度
  82 + $('.ct_table_wrap', cont).perfectScrollbar('update');
81 } 83 }
82 84
83 function execSch(gps) { 85 function execSch(gps) {
@@ -109,6 +111,9 @@ var gb_sch_search = (function() { @@ -109,6 +111,9 @@ var gb_sch_search = (function() {
109 if (car != $(dds[2]).data('nbbm')) 111 if (car != $(dds[2]).data('nbbm'))
110 $(this).addClass('_search_hide'); 112 $(this).addClass('_search_hide');
111 }); 113 });
  114 +
  115 + //滚动条置顶
  116 + $(tbody).parents('.ct_table_wrap')[0].scrollTop = 0;
112 } 117 }
113 118
114 return { 119 return {
src/main/resources/static/real_control_v2/js/main.js
@@ -171,8 +171,8 @@ var disabled_submit_btn = function (form) { @@ -171,8 +171,8 @@ var disabled_submit_btn = function (form) {
171 function showUpdateDescription() { 171 function showUpdateDescription() {
172 //更新说明 172 //更新说明
173 var updateDescription = { 173 var updateDescription = {
174 - date: '2017-04-19',  
175 - text: '<h5>加油子任务改为空驶进出场子任务</h5><h5>计划烂班时调整说明必填</h5><h5>连接断开(横幅变红)后会自动尝试重连</h5><h5>误点调整功能加入,线上测试一天,20号再用</h5>' 174 + date: '2017-04-20',
  175 + text: '<h5>现在可以在轨迹回放里看到停车场位置和多边形电子围栏</h5><h5>区间调头子任务,可以勾选“调头后空驶回起点”</h5>'
176 }; 176 };
177 177
178 var storage = window.localStorage 178 var storage = window.localStorage
src/main/resources/static/real_control_v2/js/websocket/sch_websocket.js
@@ -9,10 +9,14 @@ var gb_sch_websocket = (function () { @@ -9,10 +9,14 @@ var gb_sch_websocket = (function () {
9 var recInterval = null; 9 var recInterval = null;
10 var reConnSpace = 1500;//重连间隔 10 var reConnSpace = 1500;//重连间隔
11 var reConnCount; //重连次数 11 var reConnCount; //重连次数
12 - var maxReConn = 10; //最多重连次数 12 + var maxReConn = 6; //最多重连次数
13 var new_conn = function () { 13 var new_conn = function () {
14 schSock = new SockJS('/sockjs/realcontrol'); 14 schSock = new SockJS('/sockjs/realcontrol');
15 schSock.onopen = function (e) { 15 schSock.onopen = function (e) {
  16 + if(reConnCount && reConnCount > 1){
  17 + gb_schedule_table.refreshAll();
  18 + console.log('重新连接,刷新班次');
  19 + }
16 reConnCount = 1; 20 reConnCount = 1;
17 clearInterval(recInterval); 21 clearInterval(recInterval);
18 console.log('webSocket[realcontrol] onopen'); 22 console.log('webSocket[realcontrol] onopen');
@@ -101,6 +105,7 @@ var gb_sch_websocket = (function () { @@ -101,6 +105,7 @@ var gb_sch_websocket = (function () {
101 * @param msg 105 * @param msg
102 */ 106 */
103 var autoWdtz = function (msg) { 107 var autoWdtz = function (msg) {
  108 + debugger
104 var schId = msg.id; 109 var schId = msg.id;
105 var minute = msg.minute; 110 var minute = msg.minute;
106 var lineCode = msg.lineCode; 111 var lineCode = msg.lineCode;
src/main/resources/static/real_control_v2/mapmonitor/fragments/playback_v2/main.html
@@ -169,7 +169,14 @@ @@ -169,7 +169,14 @@
169 <input type="checkbox" name="stationName"> 站点名称 169 <input type="checkbox" name="stationName"> 站点名称
170 </label> 170 </label>
171 <label> 171 <label>
172 - <a>停车场 <i class="uk-icon-angle-down"></i></a> 172 + <div class="uk-button-dropdown" data-uk-dropdown>
  173 + <a>停车场 <i class="uk-icon-angle-down"></i></a>
  174 + <div class="uk-dropdown uk-dropdown-scrollable" style="max-height: 300px;">
  175 + <ul class="uk-nav uk-nav-dropdown parks_list">
  176 +
  177 + </ul>
  178 + </div>
  179 + </div>
173 </label> 180 </label>
174 </form> 181 </form>
175 </div> 182 </div>
@@ -249,6 +256,15 @@ @@ -249,6 +256,15 @@
249 </dl> 256 </dl>
250 {{/each}} 257 {{/each}}
251 </script> 258 </script>
  259 +
  260 + <script id="pb_park_list_dropdown-temp" type="text/html">
  261 + {{each list as p i}}
  262 + <li data-code="{{p.parkCode}}" ><a>{{p.parkName}}</a></li>
  263 + {{if i == 0}}
  264 + <li class="uk-nav-divider"></li>
  265 + {{/if}}
  266 + {{/each}}
  267 + </script>
252 <script> 268 <script>
253 (function () { 269 (function () {
254 var modal = '#map-playback2-modal', gpsArray; 270 var modal = '#map-playback2-modal', gpsArray;
@@ -713,6 +729,8 @@ @@ -713,6 +729,8 @@
713 var routes;//路段 729 var routes;//路段
714 var stations;//站点 730 var stations;//站点
715 var parks;//停车场 731 var parks;//停车场
  732 + //停车场编码和Polygon对照
  733 + var parkPolygons={};
716 734
717 var initData = function (rs) { 735 var initData = function (rs) {
718 var gpsArray = rs.list; 736 var gpsArray = rs.list;
@@ -721,13 +739,70 @@ @@ -721,13 +739,70 @@
721 var lineCode = gpsArray[0].lineId; 739 var lineCode = gpsArray[0].lineId;
722 //从地图模块获取站点数据 740 //从地图模块获取站点数据
723 stations = gb_map_spatial_data.getStationArray(lineCode); 741 stations = gb_map_spatial_data.getStationArray(lineCode);
724 - //从地图模块获取停车场数据  
725 - parks = gb_map_spatial_data.carparkArray(); 742 + //停车场下拉菜单
  743 + initDropdownList(lineCode);
  744 +
726 //从localStorage 获取路段 745 //从localStorage 获取路段
727 routes = JSON.parse(storage.getItem(lineCode + '_route')); 746 routes = JSON.parse(storage.getItem(lineCode + '_route'));
728 routes = [routes.up_bd, routes.down_bd]; 747 routes = [routes.up_bd, routes.down_bd];
729 }; 748 };
730 749
  750 + /**
  751 + * 初始化停车场下拉菜单
  752 + */
  753 + var initDropdownList = function (lineCode) {
  754 + //从地图模块获取停车场数据
  755 + parks = gb_map_spatial_data.carparkArray();
  756 + console.log('parksparks', parks);
  757 + //将线路标准停车场排在第一个
  758 + var information = gb_data_basic.getLineInformation(lineCode);
  759 + var index;
  760 + for(var i = 0,p; p=parks[i++];){
  761 + if(p.parkCode == information.carPark){
  762 + index = i - 1;
  763 + break;
  764 + }
  765 + }
  766 + parks[index] = parks.splice(0, 1 , parks[index])[0];
  767 + //渲染
  768 + var htmlStr = template('pb_park_list_dropdown-temp', {list: parks});
  769 + $('.buffer_area_form .parks_list', modal).html(htmlStr);
  770 +
  771 + //停车场点击
  772 + $('.buffer_area_form .parks_list>li', modal).on('click', function () {
  773 + var code = $(this).data('code');
  774 +
  775 + if(!parkPolygons[code]){
  776 + var park;
  777 + $.each(parks, function () {
  778 + if(this.parkCode==code){park = this;return false;}
  779 + });
  780 +
  781 + transMultiWGSToBd(park);
  782 + var polygon = new BMap.Polygon(park.bdPoints, {strokeColor: 'red', strokeWeight: 1});
  783 + map.addOverlay(polygon);
  784 + parkPolygons[code] = polygon;
  785 + //中心点
  786 + var ts = park.gCenterPoint.split(' ')
  787 + ,coord = TransGPS.wgsToBD(parseFloat(ts[1]), parseFloat(ts[0]));
  788 + polygon._centerPoint = new BMap.Point(coord.lng, coord.lat);
  789 + //绘制名称label
  790 + var style = {backgroundColor: "rgba(255, 255, 255, 0.69)",color : "red", borderColor: "red", fontSize : "12px", height : "16px", lineHeight : "16px", fontFamily:"微软雅黑"}
  791 + var width = park.parkName.length * 12;
  792 + var label = new BMap.Label(park.parkName, {
  793 + position:polygon._centerPoint,
  794 + offset: new BMap.Size(-(width / 2), -27)
  795 + });
  796 + label.setStyle(style);
  797 + map.addOverlay(label);
  798 + }
  799 +
  800 + //定位到polygon
  801 + var polygon=parkPolygons[code];
  802 + map.panTo(polygon._centerPoint);
  803 + });
  804 + };
  805 +
731 806
732 /** 807 /**
733 * 更新车辆位置 808 * 更新车辆位置
@@ -866,8 +941,10 @@ @@ -866,8 +941,10 @@
866 map.addOverlay(circle); 941 map.addOverlay(circle);
867 }; 942 };
868 943
869 - var drawPolygon = function () {  
870 - 944 + var drawPolygon = function (station) {
  945 + transMultiWGSToBd(station);
  946 + var polygon = new BMap.Polygon(station.bdPoints, {strokeColor: '#000000', strokeWeight: 1});
  947 + map.addOverlay(polygon);
871 }; 948 };
872 949
873 /** 950 /**
@@ -883,6 +960,7 @@ @@ -883,6 +960,7 @@
883 trailArray=[]; 960 trailArray=[];
884 trailPolyline = null; 961 trailPolyline = null;
885 gpsMarker = null; 962 gpsMarker = null;
  963 + parkPolygons = {};
886 }; 964 };
887 965
888 /** 966 /**
@@ -1012,6 +1090,18 @@ @@ -1012,6 +1090,18 @@
1012 reset: reset 1090 reset: reset
1013 } 1091 }
1014 })(); 1092 })();
  1093 +
  1094 + function transMultiWGSToBd(obj) {
  1095 + if(!obj._gPoints)
  1096 + return;
  1097 + var bdPoints = [],coord;
  1098 + $.each(obj._gPoints, function () {
  1099 + coord = TransGPS.wgsToBD(this.lat, this.lng);
  1100 + bdPoints.push(new BMap.Point(coord.lng, coord.lat));
  1101 + });
  1102 +
  1103 + obj.bdPoints=bdPoints;
  1104 + }
1015 })(); 1105 })();
1016 </script> 1106 </script>
1017 </div> 1107 </div>
1018 \ No newline at end of file 1108 \ No newline at end of file
src/test/resources/testdata/d2.xml 0 → 100644
  1 +<?xml version='1.0' encoding='UTF-8'?>
  2 +<dataset>
  3 + <!-- 用户(对应实体 SysUser) -->
  4 + <bsth_c_sys_user id="1" user_name="admin" name="系统管理员" create_date="2000-01-01" enabled="1" last_login_date="2000-01-01" />
  5 +
  6 + <!-- 公司(对应实体 Business) -->
  7 + <bsth_c_business id="1" business_name="公交公司" business_code="88" up_code="0" create_by="1" create_date="2000-01-01" update_by="1" update_date="2000-01-01" />
  8 + <bsth_c_business id="2" business_name="金高公司" business_code="22" up_code="88" create_by="1" create_date="2000-01-01" update_by="1" update_date="2000-01-01" />
  9 + <bsth_c_business id="3" business_name="杨高公司" business_code="05" up_code="88" create_by="1" create_date="2000-01-01" update_by="1" update_date="2000-01-01" />
  10 + <bsth_c_business id="4" business_name="上南公司" business_code="55" up_code="88" create_by="1" create_date="2000-01-01" update_by="1" update_date="2000-01-01" />
  11 + <bsth_c_business id="5" business_name="南汇公司" business_code="26" up_code="88" create_by="1" create_date="2000-01-01" update_by="1" update_date="2000-01-01" />
  12 +
  13 + <!-- 线路(对应实体 Line) -->
  14 + <bsth_c_line id="1" name="测试线路1" line_code="l1" destroy="0" create_by="1" create_date="2000-01-01" update_by="1" update_date="2000-01-01" />
  15 + <!-- 线路标准(对应实体 LineInformation) -->
  16 + <bsth_c_line_information id="1" line="1" create_by="1" create_date="2000-01-01" update_by="1" update_date="2000-01-01" />
  17 +
  18 + <!-- 站点(对应实体 Station) -->
  19 + <bsth_c_station id="1" station_name="站1" station_cod="#112233" create_by="1" create_date="2000-01-01" update_by="1" update_date="2000-01-01" />
  20 + <bsth_c_station id="2" station_name="站2" station_cod="#223344" create_by="1" create_date="2000-01-01" update_by="1" update_date="2000-01-01" />
  21 + <!-- 站点路由(对应实体 StationRoute)-->
  22 + <bsth_c_stationroute id="1" line="1" station="1" station_name="上行起点站" station_mark="B" directions="0" destroy="0" create_by="1" create_date="2000-01-01" update_by="1" update_date="2000-01-01" />
  23 + <bsth_c_stationroute id="2" line="1" station="2" station_name="上行终点站" station_mark="E" directions="0" destroy="0" create_by="1" create_date="2000-01-01" update_by="1" update_date="2000-01-01" />
  24 + <bsth_c_stationroute id="3" line="1" station="2" station_name="下行起点站" station_mark="B" directions="1" destroy="0" create_by="1" create_date="2000-01-01" update_by="1" update_date="2000-01-01" />
  25 + <bsth_c_stationroute id="4" line="1" station="1" station_name="下行终点站" station_mark="E" directions="1" destroy="0" create_by="1" create_date="2000-01-01" update_by="1" update_date="2000-01-01" />
  26 +
  27 + <!-- 停车场(对应实体) -->
  28 +
  29 + <!-- TODO -->
  30 +
  31 +</dataset>
0 \ No newline at end of file 32 \ No newline at end of file
src/test/resources/testdata/new.txt
1 -1、车配置,每辆车都可以配置单独的停车点及相关数据,并提供两种设置模式(早晚,复驶) 1 +1、车配置,每辆车都可以配置单独的停车点及相关数据,并提供两种设置模式(早晚,复驶)
2 2、规则管理,修改规则的界面图形化,更加方便修改 2 2、规则管理,修改规则的界面图形化,更加方便修改
3 3、时刻表管理,导入时刻表xls做严格数据判定,时刻表明细修改提供跟方便的图形化修改方式 3 3、时刻表管理,导入时刻表xls做严格数据判定,时刻表明细修改提供跟方便的图形化修改方式
4 4、排班计划管理,提供每次排班的操作信息,时间段,所使用的时刻表,可以查看具体的排班明细(细化到班次) 4 4、排班计划管理,提供每次排班的操作信息,时间段,所使用的时刻表,可以查看具体的排班明细(细化到班次)
5 生成排班时,提供详细的时刻表统计信息,提供两种排班模式(历史排班优先,规则优先) 5 生成排班时,提供详细的时刻表统计信息,提供两种排班模式(历史排班优先,规则优先)
6 -5、调度值勤日报,列出每天的基于线路,路牌的排班统计,可以更换车辆,人员  
7 - 此功能从排班计划中抽取出来,单独列出,供调派人员使用  
8 \ No newline at end of file 6 \ No newline at end of file
  7 +5、调度值勤日报,列出每天的基于线路,路牌的排班统计,可以更换车辆,人员
9 \ No newline at end of file 8 \ No newline at end of file
src/test/resources/testdata/test3.txt 0 → 100644
  1 +select count(*) from bsth_c_s_sp_rule_rst
  2 +
  3 +show index from bsth_c_s_sp_rule_rst
  4 +
  5 +select * from bsth_c_s_sp_rule_rst t
  6 +where not exists (select 1 from bsth_c_s_sp_rule_rst
  7 +where create_date > t.create_date and schedule_date < '2017-04-17' )
  8 +and t.xl_id = 10407 and t.schedule_date < '2017-04-17'
  9 +
  10 +show index from bsth_c_s_sp_rule_rst
  11 +
  12 +select * from bsth_c_s_sp_rule_rst
  13 +where xl_id = 1
  14 +
  15 +select * from bsth_c_s_sp_rule_rst t
  16 +where t.xl_id = 10407 and t.schedule_date < '2017-04-17'
  17 +
  18 +
  19 +select count(distinct concat(xl_id ,schedule_date, create_date)) / count(*) from bsth_c_s_sp_rule_rst
  20 +
  21 +select * from bsth_c_s_sp_rule_rst a
  22 +where exists (select 1 from
  23 +(select t.rule_id as rid, max(t.schedule_date) as sd from bsth_c_s_sp_rule_rst t
  24 +where t.xl_id = 10407 and t.schedule_date < '2017-04-17'
  25 +group by t.rule_id) a2 where a.rule_id = rid and a.schedule_date = sd)
src/test/resources/testdata/test4.txt 0 → 100644
  1 +select count(*) from bsth_c_s_ttinfo_detail
  2 +
  3 +select * from bsth_c_s_ttinfo_detail
  4 +
  5 +select * from bsth_c_s_ttinfo_detail where zdz_code is null;
  6 +
  7 +select * from bsth_c_station;
  8 +
  9 +select * from bsth_c_car_park;
  10 +
  11 +update bsth_c_s_ttinfo_detail a
  12 +set a.qdz_code = (select station_cod from bsth_c_station b where a.qdz = b.id)
  13 +where a.bc_type <> 'out'
  14 +
  15 +update bsth_c_s_ttinfo_detail a
  16 +set a.qdz_name = (select station_name from bsth_c_station b where a.qdz = b.id)
  17 +where a.bc_type <> 'out'
  18 +
  19 +update bsth_c_s_ttinfo_detail a
  20 +set a.zdz_code = (select station_cod from bsth_c_station b where a.zdz = b.id)
  21 +where a.bc_type <> 'in'
  22 +
  23 +update bsth_c_s_ttinfo_detail a
  24 +set a.zdz_name = (select station_name from bsth_c_station b where a.zdz = b.id)
  25 +where a.bc_type <> 'in'
  26 +
  27 +update bsth_c_s_ttinfo_detail a
  28 +set a.qdz_code = (select park_code from bsth_c_car_park b where a.tcc = b.id)
  29 +where a.bc_type = 'out'
  30 +
  31 +update bsth_c_s_ttinfo_detail a
  32 +set a.qdz_name = (select park_name from bsth_c_car_park b where a.tcc = b.id)
  33 +where a.bc_type = 'out'
  34 +
  35 +update bsth_c_s_ttinfo_detail a
  36 +set a.zdz_code = (select park_code from bsth_c_car_park b where a.tcc = b.id)
  37 +where a.bc_type = 'in'
  38 +
  39 +update bsth_c_s_ttinfo_detail a
  40 +set a.zdz_name = (select park_name from bsth_c_car_park b where a.tcc = b.id)
  41 +where a.bc_type = 'in'
  42 +
  43 +commit;
  44 +
  45 +
  46 +