Commit 51aae3397ce57286780154e91de0a36f1ca6b673

Authored by 廖磊
2 parents 65d9a7d4 a17c901b

Merge branch 'minhang' of 192.168.168.201:panzhaov5/bsth_control into

minhang
Showing 38 changed files with 2967 additions and 1211 deletions
src/main/java/com/bsth/controller/DeviceGpsController.java
1 package com.bsth.controller; 1 package com.bsth.controller;
2 2
3 -import java.io.BufferedOutputStream;  
4 -import java.io.BufferedReader;  
5 -import java.io.File;  
6 -import java.io.FileInputStream;  
7 -import java.io.IOException;  
8 -import java.io.InputStreamReader;  
9 -import java.io.OutputStream;  
10 -import java.text.SimpleDateFormat;  
11 -import java.util.ArrayList;  
12 -import java.util.Date;  
13 -import java.util.HashMap;  
14 -import java.util.List;  
15 -import java.util.Map;  
16 -  
17 -import javax.servlet.http.HttpServletRequest;  
18 -import javax.servlet.http.HttpServletResponse;  
19 -  
20 -import org.apache.commons.lang.StringEscapeUtils;  
21 -import org.apache.poi.hssf.usermodel.HSSFCell;  
22 -import org.apache.poi.hssf.usermodel.HSSFRichTextString;  
23 -import org.apache.poi.hssf.usermodel.HSSFRow;  
24 -import org.apache.poi.hssf.usermodel.HSSFSheet;  
25 -import org.apache.poi.hssf.usermodel.HSSFWorkbook;  
26 -import org.springframework.beans.BeanUtils;  
27 -import org.springframework.beans.factory.annotation.Autowired;  
28 -import org.springframework.util.StringUtils;  
29 -import org.springframework.web.bind.annotation.PathVariable;  
30 -import org.springframework.web.bind.annotation.RequestMapping;  
31 -import org.springframework.web.bind.annotation.RequestMethod;  
32 -import org.springframework.web.bind.annotation.RequestParam;  
33 -import org.springframework.web.bind.annotation.RestController;  
34 -import org.springframework.web.multipart.MultipartFile;  
35 -  
36 import com.bsth.data.gpsdata.GpsEntity; 3 import com.bsth.data.gpsdata.GpsEntity;
37 import com.bsth.data.gpsdata.GpsRealData; 4 import com.bsth.data.gpsdata.GpsRealData;
38 import com.fasterxml.jackson.core.JsonParseException; 5 import com.fasterxml.jackson.core.JsonParseException;
39 import com.fasterxml.jackson.databind.JsonMappingException; 6 import com.fasterxml.jackson.databind.JsonMappingException;
40 import com.fasterxml.jackson.databind.ObjectMapper; 7 import com.fasterxml.jackson.databind.ObjectMapper;
41 -import com.fasterxml.jackson.databind.util.BeanUtil; 8 +import org.apache.commons.lang.StringEscapeUtils;
  9 +import org.apache.poi.hssf.usermodel.*;
  10 +import org.springframework.beans.factory.annotation.Autowired;
  11 +import org.springframework.util.StringUtils;
  12 +import org.springframework.web.bind.annotation.*;
  13 +import org.springframework.web.multipart.MultipartFile;
  14 +
  15 +import javax.servlet.http.HttpServletRequest;
  16 +import javax.servlet.http.HttpServletResponse;
  17 +import java.io.*;
  18 +import java.text.SimpleDateFormat;
  19 +import java.util.*;
42 20
43 @RestController 21 @RestController
44 @RequestMapping("devicegps") 22 @RequestMapping("devicegps")
@@ -121,7 +99,7 @@ public class DeviceGpsController { @@ -121,7 +99,7 @@ public class DeviceGpsController {
121 try { 99 try {
122 data = new ObjectMapper().readValue(json, List.class); 100 data = new ObjectMapper().readValue(json, List.class);
123 for (Map<String, Object> info : data) { 101 for (Map<String, Object> info : data) {
124 - info.put("detail", gpsRealData.findByDeviceId((String)info.get("deviceId"))); 102 + info.put("detail", gpsRealData.get((String)info.get("deviceId")));
125 } 103 }
126 104
127 res.put("errCode", 0); 105 res.put("errCode", 0);
src/main/java/com/bsth/data/gpsdata/GpsRealData.java
1 package com.bsth.data.gpsdata; 1 package com.bsth.data.gpsdata;
2 2
3 -import com.alibaba.fastjson.JSON;  
4 -import com.alibaba.fastjson.JSONObject;  
5 import com.bsth.data.BasicData; 3 import com.bsth.data.BasicData;
6 import com.bsth.data.forecast.ForecastRealServer; 4 import com.bsth.data.forecast.ForecastRealServer;
7 -import com.bsth.data.gpsdata.arrival.GpsRealAnalyse;  
8 -import com.bsth.data.gpsdata.recovery.GpsDataRecovery; 5 +import com.bsth.data.gpsdata.thread.GpsDataLoaderThread;
9 import com.bsth.data.schedule.DayOfSchedule; 6 import com.bsth.data.schedule.DayOfSchedule;
10 import com.bsth.entity.realcontrol.ScheduleRealInfo; 7 import com.bsth.entity.realcontrol.ScheduleRealInfo;
11 -import com.bsth.util.ConfigUtil;  
12 import com.google.common.collect.TreeMultimap; 8 import com.google.common.collect.TreeMultimap;
13 import org.apache.commons.lang3.StringUtils; 9 import org.apache.commons.lang3.StringUtils;
14 -import org.apache.http.HttpEntity;  
15 -import org.apache.http.client.methods.CloseableHttpResponse;  
16 -import org.apache.http.client.methods.HttpGet;  
17 -import org.apache.http.impl.client.CloseableHttpClient;  
18 -import org.apache.http.impl.client.HttpClients;  
19 import org.slf4j.Logger; 10 import org.slf4j.Logger;
20 import org.slf4j.LoggerFactory; 11 import org.slf4j.LoggerFactory;
21 import org.springframework.beans.factory.annotation.Autowired; 12 import org.springframework.beans.factory.annotation.Autowired;
22 import org.springframework.boot.CommandLineRunner; 13 import org.springframework.boot.CommandLineRunner;
23 import org.springframework.stereotype.Component; 14 import org.springframework.stereotype.Component;
24 15
25 -import java.io.BufferedReader;  
26 -import java.io.InputStreamReader;  
27 import java.util.*; 16 import java.util.*;
28 17
29 /** 18 /**
@@ -42,11 +31,8 @@ public class GpsRealData implements CommandLineRunner { @@ -42,11 +31,8 @@ public class GpsRealData implements CommandLineRunner {
42 //按线路分组设备号 31 //按线路分组设备号
43 private static TreeMultimap<String, String> lineCode2Devices; 32 private static TreeMultimap<String, String> lineCode2Devices;
44 33
45 - // 网关数据接口地址  
46 - private static String url;  
47 -  
48 @Autowired 34 @Autowired
49 - GpsDataLoader gpsDataLoader; 35 + GpsDataLoaderThread gpsDataLoader;
50 36
51 @Autowired 37 @Autowired
52 DayOfSchedule dayOfSchedule; 38 DayOfSchedule dayOfSchedule;
@@ -60,13 +46,15 @@ public class GpsRealData implements CommandLineRunner { @@ -60,13 +46,15 @@ public class GpsRealData implements CommandLineRunner {
60 public GpsRealData() { 46 public GpsRealData() {
61 gpsMap = new HashMap<>(); 47 gpsMap = new HashMap<>();
62 lineCode2Devices = TreeMultimap.create(); 48 lineCode2Devices = TreeMultimap.create();
63 - url = ConfigUtil.get("http.gps.real.url");  
64 } 49 }
65 50
66 @Override 51 @Override
67 public void run(String... arg0) throws Exception { 52 public void run(String... arg0) throws Exception {
68 logger.info("gpsDataLoader,20,5"); 53 logger.info("gpsDataLoader,20,5");
  54 + //定时从网关获取GPS数据
69 //Application.mainServices.scheduleWithFixedDelay(gpsDataLoader, 20, 5, TimeUnit.SECONDS); 55 //Application.mainServices.scheduleWithFixedDelay(gpsDataLoader, 20, 5, TimeUnit.SECONDS);
  56 + //定时扫描掉离线
  57 +
70 } 58 }
71 59
72 public void put(GpsEntity gps) { 60 public void put(GpsEntity gps) {
@@ -146,10 +134,6 @@ public class GpsRealData implements CommandLineRunner { @@ -146,10 +134,6 @@ public class GpsRealData implements CommandLineRunner {
146 return gpsMap.keySet(); 134 return gpsMap.keySet();
147 } 135 }
148 136
149 - public GpsEntity findByDeviceId(String deviceId) {  
150 - return gpsMap.get(deviceId);  
151 - }  
152 -  
153 public Collection<GpsEntity> all() { 137 public Collection<GpsEntity> all() {
154 return gpsMap.values(); 138 return gpsMap.values();
155 } 139 }
@@ -157,87 +141,4 @@ public class GpsRealData implements CommandLineRunner { @@ -157,87 +141,4 @@ public class GpsRealData implements CommandLineRunner {
157 public void remove(String device) { 141 public void remove(String device) {
158 gpsMap.remove(device); 142 gpsMap.remove(device);
159 } 143 }
160 -  
161 - @Component  
162 - public static class GpsDataLoader extends Thread {  
163 -  
164 - Logger logger = LoggerFactory.getLogger(GpsDataLoader.class);  
165 -  
166 - @Autowired  
167 - GpsRealData gpsRealData;  
168 -  
169 - @Autowired  
170 - GpsRealAnalyse gpsRealAnalyse;  
171 -  
172 - @Override  
173 - public void run() {  
174 - try {  
175 - //如果正在恢复数据  
176 - if (GpsDataRecovery.run)  
177 - return;  
178 -  
179 - load();  
180 - } catch (Exception e) {  
181 - logger.error("", e);  
182 - }  
183 - }  
184 -  
185 - public void load() throws Exception {  
186 - List<GpsEntity> list = null;  
187 - List<GpsEntity> updateList = new ArrayList<>();  
188 - CloseableHttpClient httpClient = null;  
189 - CloseableHttpResponse response = null;  
190 - try {  
191 - httpClient = HttpClients.createDefault();  
192 - HttpGet get = new HttpGet(url);  
193 -  
194 - response = httpClient.execute(get);  
195 -  
196 - HttpEntity entity = response.getEntity();  
197 - if (null != entity) {  
198 - BufferedReader br = new BufferedReader(new InputStreamReader(entity.getContent()));  
199 - StringBuffer stringBuffer = new StringBuffer();  
200 - String str = "";  
201 - while ((str = br.readLine()) != null)  
202 - stringBuffer.append(str);  
203 -  
204 - JSONObject jsonObj = JSON.parseObject(stringBuffer.toString());  
205 -  
206 - if (jsonObj != null)  
207 - list = JSON.parseArray(jsonObj.getString("data"), GpsEntity.class);  
208 -  
209 - String nbbm;  
210 - GpsEntity old;  
211 - for (GpsEntity gps : list) {  
212 - //没有设备号  
213 - if (StringUtils.isBlank(gps.getDeviceId()))  
214 - continue;  
215 -  
216 - old = gpsMap.get(gps.getDeviceId());  
217 - if (old != null &&  
218 - old.getTimestamp() == gps.getTimestamp())  
219 - continue;  
220 -  
221 - nbbm = BasicData.deviceId2NbbmMap.get(gps.getDeviceId());  
222 - if (StringUtils.isBlank(nbbm))  
223 - gps.setIncomplete(true);//标记为异常数据  
224 - else  
225 - gps.setNbbm(nbbm);  
226 - //有更新的点位  
227 - updateList.add(gps);  
228 - }  
229 - //分析数据  
230 - gpsRealAnalyse.analyse(updateList);  
231 - } else  
232 - logger.error("real gps result is null");  
233 - } catch (Exception e) {  
234 - logger.error("", e);  
235 - } finally {  
236 - if (null != httpClient)  
237 - httpClient.close();  
238 - if (null != response)  
239 - response.close();  
240 - }  
241 - }  
242 - }  
243 } 144 }
244 \ No newline at end of file 145 \ No newline at end of file
src/main/java/com/bsth/data/gpsdata/thread/GpsDataLoaderThread.java 0 → 100644
  1 +package com.bsth.data.gpsdata.thread;
  2 +
  3 +import com.alibaba.fastjson.JSON;
  4 +import com.alibaba.fastjson.JSONObject;
  5 +import com.bsth.data.BasicData;
  6 +import com.bsth.data.gpsdata.GpsEntity;
  7 +import com.bsth.data.gpsdata.GpsRealData;
  8 +import com.bsth.data.gpsdata.arrival.GpsRealAnalyse;
  9 +import com.bsth.data.gpsdata.recovery.GpsDataRecovery;
  10 +import com.bsth.util.ConfigUtil;
  11 +import org.apache.commons.lang3.StringUtils;
  12 +import org.apache.http.HttpEntity;
  13 +import org.apache.http.client.methods.CloseableHttpResponse;
  14 +import org.apache.http.client.methods.HttpGet;
  15 +import org.apache.http.impl.client.CloseableHttpClient;
  16 +import org.apache.http.impl.client.HttpClients;
  17 +import org.slf4j.Logger;
  18 +import org.slf4j.LoggerFactory;
  19 +import org.springframework.beans.factory.annotation.Autowired;
  20 +import org.springframework.stereotype.Component;
  21 +
  22 +import java.io.BufferedReader;
  23 +import java.io.InputStreamReader;
  24 +import java.util.ArrayList;
  25 +import java.util.List;
  26 +
  27 +/**
  28 + * Created by panzhao on 2017/1/11.
  29 + */
  30 +@Component
  31 +public class GpsDataLoaderThread extends Thread {
  32 +
  33 + Logger logger = LoggerFactory.getLogger(GpsDataLoaderThread.class);
  34 +
  35 + /**
  36 + * 构造函数
  37 + */
  38 + public GpsDataLoaderThread() {
  39 + url = ConfigUtil.get("http.gps.real.url");
  40 + }
  41 +
  42 + // 网关数据接口地址
  43 + private static String url;
  44 +
  45 + @Autowired
  46 + GpsRealData gpsRealData;
  47 +
  48 + @Autowired
  49 + GpsRealAnalyse gpsRealAnalyse;
  50 +
  51 + @Override
  52 + public void run() {
  53 + try {
  54 + //如果正在恢复数据
  55 + if (GpsDataRecovery.run)
  56 + return;
  57 +
  58 + load();
  59 + } catch (Exception e) {
  60 + logger.error("", e);
  61 + }
  62 + }
  63 +
  64 + public void load() throws Exception {
  65 + List<GpsEntity> list = null;
  66 + List<GpsEntity> updateList = new ArrayList<>();
  67 + CloseableHttpClient httpClient = null;
  68 + CloseableHttpResponse response = null;
  69 + try {
  70 + httpClient = HttpClients.createDefault();
  71 + HttpGet get = new HttpGet(url);
  72 +
  73 + response = httpClient.execute(get);
  74 +
  75 + HttpEntity entity = response.getEntity();
  76 + if (null != entity) {
  77 + BufferedReader br = new BufferedReader(new InputStreamReader(entity.getContent()));
  78 + StringBuffer stringBuffer = new StringBuffer();
  79 + String str = "";
  80 + while ((str = br.readLine()) != null)
  81 + stringBuffer.append(str);
  82 +
  83 + JSONObject jsonObj = JSON.parseObject(stringBuffer.toString());
  84 +
  85 + if (jsonObj != null)
  86 + list = JSON.parseArray(jsonObj.getString("data"), GpsEntity.class);
  87 +
  88 + String nbbm;
  89 + GpsEntity old;
  90 + for (GpsEntity gps : list) {
  91 + //没有设备号
  92 + if (StringUtils.isBlank(gps.getDeviceId()))
  93 + continue;
  94 +
  95 + old = gpsRealData.get(gps.getDeviceId());
  96 + if (old != null &&
  97 + old.getTimestamp() == gps.getTimestamp())
  98 + continue;
  99 +
  100 + nbbm = BasicData.deviceId2NbbmMap.get(gps.getDeviceId());
  101 + if (StringUtils.isBlank(nbbm))
  102 + gps.setIncomplete(true);//标记为异常数据
  103 + else
  104 + gps.setNbbm(nbbm);
  105 + //有更新的点位
  106 + updateList.add(gps);
  107 + }
  108 + //分析数据
  109 + gpsRealAnalyse.analyse(updateList);
  110 + } else
  111 + logger.error("real gps result is null");
  112 + } catch (Exception e) {
  113 + logger.error("", e);
  114 + } finally {
  115 + if (null != httpClient)
  116 + httpClient.close();
  117 + if (null != response)
  118 + response.close();
  119 + }
  120 + }
  121 +}
0 \ No newline at end of file 122 \ No newline at end of file
src/main/java/com/bsth/data/gpsdata/thread/OfflineMonitorThread.java 0 → 100644
  1 +package com.bsth.data.gpsdata.thread;
  2 +
  3 +import com.bsth.data.gpsdata.GpsEntity;
  4 +import com.bsth.data.gpsdata.GpsRealData;
  5 +import org.springframework.beans.factory.annotation.Autowired;
  6 +
  7 +import java.util.Collection;
  8 +
  9 +/**
  10 + * GPS掉离线监控
  11 + * Created by panzhao on 2017/1/11.
  12 + */
  13 +public class OfflineMonitorThread extends Thread{
  14 +
  15 + @Autowired
  16 + GpsRealData gpsRealData;
  17 +
  18 + //有任务时 掉线阈值
  19 + private final static int LOSE_TIME = 1000 * 60 * 2;
  20 +
  21 + //无任务时 离线阈值
  22 + private final static int OFFLINE_TIME = 1000 * 60 * 10;
  23 +
  24 + @Override
  25 + public void run() {
  26 + long t = System.currentTimeMillis();
  27 + Collection<GpsEntity> list = gpsRealData.all();
  28 +
  29 + String state;
  30 + for(GpsEntity gps : list){
  31 + state = gps.getAbnormalStatus();
  32 +
  33 + if(state.equals("offline"))
  34 + continue;
  35 +
  36 +
  37 + //if(state.equals("lose"))
  38 + //if(!state.equals("lose"))
  39 + //if(state.equals(""))
  40 + //if(gps.getTimestamp())
  41 + //if(gps.getAbnormalStatus().equals("lose"))
  42 + }
  43 + }
  44 +}
src/main/java/com/bsth/service/directive/DirectiveServiceImpl.java
1 package com.bsth.service.directive; 1 package com.bsth.service.directive;
2 2
3 -import java.util.ArrayList;  
4 -import java.util.Collection;  
5 -import java.util.Collections;  
6 -import java.util.Comparator;  
7 -import java.util.Date;  
8 -import java.util.HashMap;  
9 -import java.util.List;  
10 -import java.util.Map;  
11 -  
12 -import org.apache.commons.lang3.StringUtils;  
13 -import org.joda.time.format.DateTimeFormat;  
14 -import org.joda.time.format.DateTimeFormatter;  
15 -import org.slf4j.Logger;  
16 -import org.slf4j.LoggerFactory;  
17 -import org.springframework.beans.factory.annotation.Autowired;  
18 -import org.springframework.stereotype.Service;  
19 -  
20 import com.alibaba.fastjson.JSON; 3 import com.alibaba.fastjson.JSON;
21 import com.alibaba.fastjson.JSONObject; 4 import com.alibaba.fastjson.JSONObject;
22 import com.bsth.common.ResponseCode; 5 import com.bsth.common.ResponseCode;
@@ -24,15 +7,11 @@ import com.bsth.data.BasicData; @@ -24,15 +7,11 @@ import com.bsth.data.BasicData;
24 import com.bsth.data.directive.DayOfDirectives; 7 import com.bsth.data.directive.DayOfDirectives;
25 import com.bsth.data.directive.DirectiveCreator; 8 import com.bsth.data.directive.DirectiveCreator;
26 import com.bsth.data.directive.GatewayHttpUtils; 9 import com.bsth.data.directive.GatewayHttpUtils;
27 -import com.bsth.data.gpsdata.GpsRealData;  
28 import com.bsth.data.gpsdata.GpsEntity; 10 import com.bsth.data.gpsdata.GpsEntity;
  11 +import com.bsth.data.gpsdata.GpsRealData;
29 import com.bsth.data.pilot80.PilotReport; 12 import com.bsth.data.pilot80.PilotReport;
30 import com.bsth.data.schedule.DayOfSchedule; 13 import com.bsth.data.schedule.DayOfSchedule;
31 -import com.bsth.entity.directive.D60;  
32 -import com.bsth.entity.directive.D64;  
33 -import com.bsth.entity.directive.D80;  
34 -import com.bsth.entity.directive.DC0_A3;  
35 -import com.bsth.entity.directive.Directive; 14 +import com.bsth.entity.directive.*;
36 import com.bsth.entity.realcontrol.ScheduleRealInfo; 15 import com.bsth.entity.realcontrol.ScheduleRealInfo;
37 import com.bsth.entity.sys.SysUser; 16 import com.bsth.entity.sys.SysUser;
38 import com.bsth.repository.directive.D60Repository; 17 import com.bsth.repository.directive.D60Repository;
@@ -44,6 +23,15 @@ import com.bsth.websocket.handler.RealControlSocketHandler; @@ -44,6 +23,15 @@ import com.bsth.websocket.handler.RealControlSocketHandler;
44 import com.fasterxml.jackson.core.JsonProcessingException; 23 import com.fasterxml.jackson.core.JsonProcessingException;
45 import com.fasterxml.jackson.databind.ObjectMapper; 24 import com.fasterxml.jackson.databind.ObjectMapper;
46 import com.google.common.base.Splitter; 25 import com.google.common.base.Splitter;
  26 +import org.apache.commons.lang3.StringUtils;
  27 +import org.joda.time.format.DateTimeFormat;
  28 +import org.joda.time.format.DateTimeFormatter;
  29 +import org.slf4j.Logger;
  30 +import org.slf4j.LoggerFactory;
  31 +import org.springframework.beans.factory.annotation.Autowired;
  32 +import org.springframework.stereotype.Service;
  33 +
  34 +import java.util.*;
47 35
48 @Service 36 @Service
49 public class DirectiveServiceImpl extends BaseServiceImpl<D60, Integer> implements DirectiveService { 37 public class DirectiveServiceImpl extends BaseServiceImpl<D60, Integer> implements DirectiveService {
@@ -265,7 +253,7 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;D60, Integer&gt; implemen @@ -265,7 +253,7 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;D60, Integer&gt; implemen
265 // 根据当前GPS确定 上下行和营运状态 253 // 根据当前GPS确定 上下行和营运状态
266 Integer upDown = null, state = null; 254 Integer upDown = null, state = null;
267 if (null == sch) { 255 if (null == sch) {
268 - GpsEntity gpsData = gpsRealDataBuffer.findByDeviceId(deviceId); 256 + GpsEntity gpsData = gpsRealDataBuffer.get(deviceId);
269 if (null == gpsData) { 257 if (null == gpsData) {
270 /* 258 /*
271 * 短语指令不会变更设备状态,所以在没有gps状态对照的情况下可以下发 259 * 短语指令不会变更设备状态,所以在没有gps状态对照的情况下可以下发
src/main/java/com/bsth/service/impl/BusIntervalServiceImpl.java
@@ -1393,8 +1393,14 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -1393,8 +1393,14 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1393 1393
1394 String[] date1 = startDate.split("-"); 1394 String[] date1 = startDate.split("-");
1395 String[] date2 = endDate.split("-"); 1395 String[] date2 = endDate.split("-");
1396 - startDate = date1[0] + "年" + date1[1] + "月" + date1[2] + "日";  
1397 - endDate = date2[0] + "年" + date2[1] + "月" + date2[2] + "日"; 1396 +// startDate = date1[0] + "年" + date1[1] + "月" + date1[2] + "日";
  1397 +// endDate = date2[0] + "年" + date2[1] + "月" + date2[2] + "日";
  1398 + String Date = "";
  1399 + if(startDate.equals(endDate))
  1400 + Date = date1[0] + "年" + date1[1] + "月" + date1[2] + "日";
  1401 + else
  1402 + Date = date1[0] + "年" + date1[1] + "月" + date1[2] + "日"
  1403 + + date2[0] + "年" + date2[1] + "月" + date2[2] + "日";
1398 1404
1399 String[] split = times.split("-"); 1405 String[] split = times.split("-");
1400 int startTime = Integer.valueOf(split[0].split(":")[0])*60 + Integer.valueOf(split[0].split(":")[1]); 1406 int startTime = Integer.valueOf(split[0].split(":")[0])*60 + Integer.valueOf(split[0].split(":")[1]);
@@ -1472,10 +1478,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -1472,10 +1478,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1472 } 1478 }
1473 } 1479 }
1474 } 1480 }
1475 - if(startDate.equals(endDate))  
1476 - tempMap.put("date", startDate);  
1477 - else  
1478 - tempMap.put("date", startDate + "--" + endDate); 1481 + tempMap.put("date", Date);
1479 tempMap.put("company", companyName); 1482 tempMap.put("company", companyName);
1480 tempMap.put("subCompany", subCompanyName); 1483 tempMap.put("subCompany", subCompanyName);
1481 tempMap.put("times", times); 1484 tempMap.put("times", times);
@@ -1523,6 +1526,24 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -1523,6 +1526,24 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1523 resList.add(tempMap); 1526 resList.add(tempMap);
1524 } 1527 }
1525 1528
  1529 + if(type != null && type.length() != 0 && type.equals("export")){
  1530 + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
  1531 + sdfSimple = new SimpleDateFormat("yyyyMMdd");
  1532 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  1533 + Map<String, Object> m = new HashMap<String, Object>();
  1534 + ReportUtils ee = new ReportUtils();
  1535 + try {
  1536 + listI.add(resList.iterator());
  1537 + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
  1538 + ee.excelReplace(listI, new Object[] { m }, path+"mould/lbStatuAnaly.xls",
  1539 + path+"export/烂班情况分析表" + sdfSimple.format(sdfMonth.parse(startDate))
  1540 + + "-" + sdfSimple.format(sdfMonth.parse(endDate)) + ".xls");
  1541 + } catch (Exception e) {
  1542 + // TODO: handle exception
  1543 + e.printStackTrace();
  1544 + }
  1545 + }
  1546 +
1526 return resList; 1547 return resList;
1527 } 1548 }
1528 1549
src/main/java/com/bsth/service/schedule/impl/CarConfigInfoServiceImpl.java
@@ -5,11 +5,18 @@ import com.bsth.entity.schedule.rule.ScheduleRule1Flat; @@ -5,11 +5,18 @@ import com.bsth.entity.schedule.rule.ScheduleRule1Flat;
5 import com.bsth.service.schedule.CarConfigInfoService; 5 import com.bsth.service.schedule.CarConfigInfoService;
6 import com.bsth.service.schedule.exception.ScheduleException; 6 import com.bsth.service.schedule.exception.ScheduleException;
7 import com.bsth.service.schedule.ScheduleRule1FlatService; 7 import com.bsth.service.schedule.ScheduleRule1FlatService;
  8 +import com.bsth.service.schedule.utils.DataToolsProperties;
  9 +import org.slf4j.Logger;
  10 +import org.slf4j.LoggerFactory;
8 import org.springframework.beans.factory.annotation.Autowired; 11 import org.springframework.beans.factory.annotation.Autowired;
  12 +import org.springframework.boot.context.properties.EnableConfigurationProperties;
9 import org.springframework.stereotype.Service; 13 import org.springframework.stereotype.Service;
10 import org.springframework.transaction.annotation.Transactional; 14 import org.springframework.transaction.annotation.Transactional;
11 import org.springframework.util.CollectionUtils; 15 import org.springframework.util.CollectionUtils;
12 16
  17 +import java.io.File;
  18 +import java.io.PrintWriter;
  19 +import java.io.StringWriter;
13 import java.util.HashMap; 20 import java.util.HashMap;
14 import java.util.List; 21 import java.util.List;
15 import java.util.Map; 22 import java.util.Map;
@@ -17,11 +24,76 @@ import java.util.Map; @@ -17,11 +24,76 @@ import java.util.Map;
17 /** 24 /**
18 * Created by xu on 16/5/9. 25 * Created by xu on 16/5/9.
19 */ 26 */
  27 +@EnableConfigurationProperties(DataToolsProperties.class)
20 @Service 28 @Service
21 public class CarConfigInfoServiceImpl extends BServiceImpl<CarConfigInfo, Long> implements CarConfigInfoService { 29 public class CarConfigInfoServiceImpl extends BServiceImpl<CarConfigInfo, Long> implements CarConfigInfoService {
  30 + /** 日志记录器 */
  31 + private static Logger LOGGER = LoggerFactory.getLogger(CarConfigInfoServiceImpl.class);
  32 +
  33 + @Autowired
  34 + private DataToolsProperties dataToolsProperties;
  35 +
22 @Autowired 36 @Autowired
23 private ScheduleRule1FlatService scheduleRule1FlatService; 37 private ScheduleRule1FlatService scheduleRule1FlatService;
24 38
  39 + @Override
  40 + public void importData(File file, Map<String, Object> params) throws ScheduleException {
  41 + try {
  42 + LOGGER.info("//---------------- 导入车辆配置信息 start... ----------------//");
  43 + // 创建ktr转换所需参数
  44 + Map<String, Object> ktrParms = new HashMap<>();
  45 + File ktrFile = new File(this.getClass().getResource(
  46 + dataToolsProperties.getCarsconfigDatainputktr()).toURI());
  47 +
  48 + // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径
  49 + ktrParms.put("transpath", ktrFile.getAbsolutePath());
  50 + ktrParms.put("filepath", file.getAbsolutePath());
  51 + ktrParms.put("erroroutputdir", dataToolsProperties.getTransErrordir());
  52 +
  53 + super.importData(file, ktrParms);
  54 +
  55 + LOGGER.info("//---------------- 导入车辆配置信息 success... ----------------//");
  56 + } catch (Exception exp) {
  57 + LOGGER.info("//---------------- 导入车辆配置信息 failed... ----------------//");
  58 +
  59 + StringWriter sw = new StringWriter();
  60 + exp.printStackTrace(new PrintWriter(sw));
  61 + LOGGER.info(sw.toString());
  62 +
  63 + throw new ScheduleException(exp.getMessage());
  64 + }
  65 + }
  66 +
  67 + @Override
  68 + public File exportData(Map<String, Object> params) throws ScheduleException {
  69 + try {
  70 + LOGGER.info("//---------------- 导出车辆配置信息 start... ----------------//");
  71 + // 创建ktr转换所需参数
  72 + Map<String, Object> ktrParms = new HashMap<>();
  73 + File ktrFile = new File(this.getClass().getResource(
  74 + dataToolsProperties.getCarsconfigDataoutputktr()).toURI());
  75 +
  76 + // 通用参数,转换文件路径,excel输出文件名
  77 + ktrParms.put("transpath", ktrFile.getAbsolutePath());
  78 + ktrParms.put("filename", "车辆配置信息_download-");
  79 +
  80 + File file = super.exportData(ktrParms);
  81 +
  82 + LOGGER.info("//---------------- 导出车辆配置信息 success... ----------------//");
  83 +
  84 + return file;
  85 +
  86 + } catch (Exception exp) {
  87 + LOGGER.info("//---------------- 导出车辆配置信息 failed... ----------------//");
  88 +
  89 + StringWriter sw = new StringWriter();
  90 + exp.printStackTrace(new PrintWriter(sw));
  91 + LOGGER.info(sw.toString());
  92 +
  93 + throw new ScheduleException(exp.getMessage());
  94 + }
  95 + }
  96 +
25 @Transactional 97 @Transactional
26 public void validate_cars(CarConfigInfo carConfigInfo) throws ScheduleException { 98 public void validate_cars(CarConfigInfo carConfigInfo) throws ScheduleException {
27 // 相同车辆不能同时配置 99 // 相同车辆不能同时配置
src/main/java/com/bsth/service/schedule/impl/EmployeeConfigInfoServiceImpl.java
@@ -5,21 +5,93 @@ import com.bsth.entity.schedule.rule.ScheduleRule1Flat; @@ -5,21 +5,93 @@ import com.bsth.entity.schedule.rule.ScheduleRule1Flat;
5 import com.bsth.service.schedule.EmployeeConfigInfoService; 5 import com.bsth.service.schedule.EmployeeConfigInfoService;
6 import com.bsth.service.schedule.exception.ScheduleException; 6 import com.bsth.service.schedule.exception.ScheduleException;
7 import com.bsth.service.schedule.ScheduleRule1FlatService; 7 import com.bsth.service.schedule.ScheduleRule1FlatService;
  8 +import com.bsth.service.schedule.utils.DataToolsProperties;
  9 +import org.slf4j.Logger;
  10 +import org.slf4j.LoggerFactory;
8 import org.springframework.beans.factory.annotation.Autowired; 11 import org.springframework.beans.factory.annotation.Autowired;
  12 +import org.springframework.boot.context.properties.EnableConfigurationProperties;
9 import org.springframework.stereotype.Service; 13 import org.springframework.stereotype.Service;
10 import org.springframework.transaction.annotation.Transactional; 14 import org.springframework.transaction.annotation.Transactional;
11 import org.springframework.util.CollectionUtils; 15 import org.springframework.util.CollectionUtils;
12 16
  17 +import java.io.File;
  18 +import java.io.PrintWriter;
  19 +import java.io.StringWriter;
13 import java.util.*; 20 import java.util.*;
14 21
15 /** 22 /**
16 * Created by xu on 16/5/10. 23 * Created by xu on 16/5/10.
17 */ 24 */
  25 +@EnableConfigurationProperties(DataToolsProperties.class)
18 @Service 26 @Service
19 public class EmployeeConfigInfoServiceImpl extends BServiceImpl<EmployeeConfigInfo, Long> implements EmployeeConfigInfoService { 27 public class EmployeeConfigInfoServiceImpl extends BServiceImpl<EmployeeConfigInfo, Long> implements EmployeeConfigInfoService {
  28 + /** 日志记录器 */
  29 + private static Logger LOGGER = LoggerFactory.getLogger(EmployeeConfigInfoServiceImpl.class);
  30 +
  31 + @Autowired
  32 + private DataToolsProperties dataToolsProperties;
  33 +
20 @Autowired 34 @Autowired
21 private ScheduleRule1FlatService scheduleRule1FlatService; 35 private ScheduleRule1FlatService scheduleRule1FlatService;
22 36
  37 + @Override
  38 + public void importData(File file, Map<String, Object> params) throws ScheduleException {
  39 + try {
  40 + LOGGER.info("//---------------- 导入人员配置信息 start... ----------------//");
  41 + // 创建ktr转换所需参数
  42 + Map<String, Object> ktrParms = new HashMap<>();
  43 + File ktrFile = new File(this.getClass().getResource(
  44 + dataToolsProperties.getEmployeesconfigDatainputktr()).toURI());
  45 +
  46 + // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径
  47 + ktrParms.put("transpath", ktrFile.getAbsolutePath());
  48 + ktrParms.put("filepath", file.getAbsolutePath());
  49 + ktrParms.put("erroroutputdir", dataToolsProperties.getTransErrordir());
  50 +
  51 + super.importData(file, ktrParms);
  52 +
  53 + LOGGER.info("//---------------- 导入人员配置信息 success... ----------------//");
  54 + } catch (Exception exp) {
  55 + LOGGER.info("//---------------- 导入人员配置信息 failed... ----------------//");
  56 +
  57 + StringWriter sw = new StringWriter();
  58 + exp.printStackTrace(new PrintWriter(sw));
  59 + LOGGER.info(sw.toString());
  60 +
  61 + throw new ScheduleException(exp.getMessage());
  62 + }
  63 + }
  64 +
  65 + @Override
  66 + public File exportData(Map<String, Object> params) throws ScheduleException {
  67 + try {
  68 + LOGGER.info("//---------------- 导出人员配置信息 start... ----------------//");
  69 + // 创建ktr转换所需参数
  70 + Map<String, Object> ktrParms = new HashMap<>();
  71 + File ktrFile = new File(this.getClass().getResource(
  72 + dataToolsProperties.getEmployeesconfigDataoutputktr()).toURI());
  73 +
  74 + // 通用参数,转换文件路径,excel输出文件名
  75 + ktrParms.put("transpath", ktrFile.getAbsolutePath());
  76 + ktrParms.put("filename", "人员配置信息_download-");
  77 +
  78 + File file = super.exportData(ktrParms);
  79 +
  80 + LOGGER.info("//---------------- 导出人员配置信息 success... ----------------//");
  81 +
  82 + return file;
  83 +
  84 + } catch (Exception exp) {
  85 + LOGGER.info("//---------------- 导出人员配置信息 failed... ----------------//");
  86 +
  87 + StringWriter sw = new StringWriter();
  88 + exp.printStackTrace(new PrintWriter(sw));
  89 + LOGGER.info(sw.toString());
  90 +
  91 + throw new ScheduleException(exp.getMessage());
  92 + }
  93 + }
  94 +
23 @Transactional 95 @Transactional
24 @Override 96 @Override
25 public void validate_jsy(EmployeeConfigInfo employeeConfigInfo) throws ScheduleException { 97 public void validate_jsy(EmployeeConfigInfo employeeConfigInfo) throws ScheduleException {
src/main/java/com/bsth/service/schedule/impl/TTInfoDetailServiceImpl.java
@@ -232,85 +232,86 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -232,85 +232,86 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
232 232
233 super.exportData(ktrParms); 233 super.exportData(ktrParms);
234 234
  235 + EditInfo editInfo = new EditInfo(); // 输出数据
  236 +
235 // 1.6、获取最大的发车数,用于输出数据的数量 237 // 1.6、获取最大的发车数,用于输出数据的数量
236 Long maxfcno = ttInfoDetailRepository.findMaxFcno(xlid, ttid); 238 Long maxfcno = ttInfoDetailRepository.findMaxFcno(xlid, ttid);
237 - if (maxfcno == null)  
238 - return new EditInfo();  
239 -  
240 - // 2、读取ktr生成的excel数据,组织编辑用数据返回  
241 - // 2-1、读取Excel文件  
242 - Workbook book = Workbook.getWorkbook(new File(dataToolsProperties.getTransTempdir() +  
243 - File.separator + outputFilePath + ".xls"));  
244 - Sheet sheet = book.getSheet(0);  
245 - EditInfo editInfo = new EditInfo();  
246 - // 2-2、处理数据  
247 - int all_bc = 0; // 总班次  
248 - double all_lc_ks = 0; // 总空驶里程  
249 - double all_lc_yy = 0; // 总营运里程  
250 -  
251 - String[] headarrays = new String[maxfcno.intValue() + 3];  
252 - headarrays[0] = "路牌";  
253 - headarrays[maxfcno.intValue() + 1] = "空驶班次/空驶里程";  
254 - headarrays[maxfcno.intValue() + 2] = "运营班次/运营里程";  
255 -  
256 - for (int r = 1; r < sheet.getRows(); r++) {  
257 - List<FcInfo> fcInfos = new ArrayList<>();  
258 - // 每行第一列都是路牌  
259 - fcInfos.add(new FcInfo(null, null, sheet.getCell(0, r).getContents(), null, null)); // 用fcsj放置路牌显示  
260 -  
261 - int bc_ks = 0; // 空驶班次  
262 - int bc_yy = 0; // 营运班次  
263 - double lc_ks = 0; // 空驶里程  
264 - double lc_yy = 0; // 营运里程  
265 -  
266 - for (int c = 1; c <= maxfcno * 7; ) {  
267 - String ttdid_str = sheet.getCell(c, r).getContents(); // 时刻表明细id  
268 - String fcsj = sheet.getCell(c + 1, r).getContents(); // 发车时间  
269 - String jhlc = sheet.getCell(c + 2, r).getContents(); // 计划里程  
270 - String fzdname = sheet.getCell(c + 3, r).getContents(); // 发车站点名称  
271 - String bctype = sheet.getCell(c + 4, r).getContents(); // 班次类型  
272 - String xldir = sheet.getCell(c + 5, r).getContents(); // 线路上下行  
273 - String isfb = sheet.getCell(c + 6, r).getContents(); // 是否分班  
274 -  
275 - FcInfo fcInfo = new FcInfo(ttdid_str, bctype, fcsj, xldir, isfb);  
276 -  
277 - if (StringUtils.isNotEmpty(fzdname))  
278 - headarrays[(int)(c / 7) + 1] = fzdname;  
279 - fcInfos.add(fcInfo);  
280 -  
281 - c += 7;  
282 -  
283 - // 计算班次里程  
284 - if (StringUtils.isNotEmpty(jhlc)) {  
285 - if ("in".equals(bctype) || "out".equals(bctype)) {  
286 - bc_ks += 1;  
287 - lc_ks += Double.valueOf(jhlc);  
288 -  
289 - all_bc += 1;  
290 - all_lc_ks += Double.valueOf(jhlc); 239 + if (maxfcno != null) {
  240 + // 2、读取ktr生成的excel数据,组织编辑用数据返回
  241 + // 2-1、读取Excel文件
  242 + Workbook book = Workbook.getWorkbook(new File(dataToolsProperties.getTransTempdir() +
  243 + File.separator + outputFilePath + ".xls"));
  244 + Sheet sheet = book.getSheet(0);
  245 +
  246 + // 2-2、处理数据
  247 + int all_bc = 0; // 总班次
  248 + double all_lc_ks = 0; // 总空驶里程
  249 + double all_lc_yy = 0; // 总营运里程
  250 +
  251 + String[] headarrays = new String[maxfcno.intValue() + 3];
  252 + headarrays[0] = "路牌";
  253 + headarrays[maxfcno.intValue() + 1] = "空驶班次/空驶里程";
  254 + headarrays[maxfcno.intValue() + 2] = "运营班次/运营里程";
  255 +
  256 + for (int r = 1; r < sheet.getRows(); r++) {
  257 + List<FcInfo> fcInfos = new ArrayList<>();
  258 + // 每行第一列都是路牌
  259 + fcInfos.add(new FcInfo(null, null, sheet.getCell(0, r).getContents(), null, null)); // 用fcsj放置路牌显示
  260 +
  261 + int bc_ks = 0; // 空驶班次
  262 + int bc_yy = 0; // 营运班次
  263 + double lc_ks = 0; // 空驶里程
  264 + double lc_yy = 0; // 营运里程
  265 +
  266 + for (int c = 1; c <= maxfcno * 7; ) {
  267 + String ttdid_str = sheet.getCell(c, r).getContents(); // 时刻表明细id
  268 + String fcsj = sheet.getCell(c + 1, r).getContents(); // 发车时间
  269 + String jhlc = sheet.getCell(c + 2, r).getContents(); // 计划里程
  270 + String fzdname = sheet.getCell(c + 3, r).getContents(); // 发车站点名称
  271 + String bctype = sheet.getCell(c + 4, r).getContents(); // 班次类型
  272 + String xldir = sheet.getCell(c + 5, r).getContents(); // 线路上下行
  273 + String isfb = sheet.getCell(c + 6, r).getContents(); // 是否分班
  274 +
  275 + FcInfo fcInfo = new FcInfo(ttdid_str, bctype, fcsj, xldir, isfb);
  276 +
  277 + if (StringUtils.isNotEmpty(fzdname))
  278 + headarrays[(int)(c / 7) + 1] = fzdname;
  279 + fcInfos.add(fcInfo);
  280 +
  281 + c += 7;
  282 +
  283 + // 计算班次里程
  284 + if (StringUtils.isNotEmpty(jhlc)) {
  285 + if ("in".equals(bctype) || "out".equals(bctype)) {
  286 + bc_ks += 1;
  287 + lc_ks += Double.valueOf(jhlc);
  288 +
  289 + all_bc += 1;
  290 + all_lc_ks += Double.valueOf(jhlc);
291 291
292 - } else {  
293 - bc_yy += 1;  
294 - lc_yy += Double.valueOf(jhlc); 292 + } else {
  293 + bc_yy += 1;
  294 + lc_yy += Double.valueOf(jhlc);
295 295
296 - all_bc += 1;  
297 - all_lc_yy += Double.valueOf(jhlc); 296 + all_bc += 1;
  297 + all_lc_yy += Double.valueOf(jhlc);
  298 + }
298 } 299 }
  300 +
299 } 301 }
300 302
301 - } 303 + // 添加一列 空驶班次/空驶里程,fcsj放置数据
  304 + fcInfos.add(new FcInfo(null, null, String.format("%d/%.2f", bc_ks, lc_ks), null, null));
302 305
303 - // 添加一列 空驶班次/空驶里程,fcsj放置数据  
304 - fcInfos.add(new FcInfo(null, null, String.format("%d/%.2f", bc_ks, lc_ks), null, null)); 306 + // 添加一列 营运班次/营运里程,fcsj放置数据
  307 + fcInfos.add(new FcInfo(null, null, String.format("%d/%.2f", bc_yy, lc_yy), null, null));
305 308
306 - // 添加一列 营运班次/营运里程,fcsj放置数据  
307 - fcInfos.add(new FcInfo(null, null, String.format("%d/%.2f", bc_yy, lc_yy), null, null)); 309 + editInfo.getContents().add(fcInfos);
  310 + }
  311 + editInfo.getHeader().addAll(Arrays.asList(headarrays));
308 312
309 - editInfo.getContents().add(fcInfos); 313 + editInfo.setYy_desc(String.format("班次=%d,空驶里程=%.2f,营运里程=%.2f", all_bc, all_lc_ks, all_lc_yy));
310 } 314 }
311 - editInfo.getHeader().addAll(Arrays.asList(headarrays));  
312 -  
313 - editInfo.setYy_desc(String.format("班次=%d,空驶里程=%.2f,营运里程=%.2f", all_bc, all_lc_ks, all_lc_yy));  
314 315
315 LOGGER.info("//---------------- 时刻表编辑用数据输出 success... ----------------//"); 316 LOGGER.info("//---------------- 时刻表编辑用数据输出 success... ----------------//");
316 317
src/main/java/com/bsth/service/schedule/utils/DataToolsProperties.java
@@ -93,6 +93,12 @@ public class DataToolsProperties { @@ -93,6 +93,12 @@ public class DataToolsProperties {
93 @NotNull 93 @NotNull
94 /** 排版规则导出数据ktr转换 */ 94 /** 排版规则导出数据ktr转换 */
95 private String scheduleruleOutput; 95 private String scheduleruleOutput;
  96 + @NotNull
  97 + /** 车辆配置信息导出ktr转换 */
  98 + private String carsconfigDataoutputktr;
  99 + @NotNull
  100 + /** 人员配置信息导出ktr转换 */
  101 + private String employeesconfigDataoutputktr;
96 102
97 // TODO: 103 // TODO:
98 104
@@ -287,4 +293,20 @@ public class DataToolsProperties { @@ -287,4 +293,20 @@ public class DataToolsProperties {
287 public void setScheduleruleOutput(String scheduleruleOutput) { 293 public void setScheduleruleOutput(String scheduleruleOutput) {
288 this.scheduleruleOutput = scheduleruleOutput; 294 this.scheduleruleOutput = scheduleruleOutput;
289 } 295 }
  296 +
  297 + public String getCarsconfigDataoutputktr() {
  298 + return carsconfigDataoutputktr;
  299 + }
  300 +
  301 + public void setCarsconfigDataoutputktr(String carsconfigDataoutputktr) {
  302 + this.carsconfigDataoutputktr = carsconfigDataoutputktr;
  303 + }
  304 +
  305 + public String getEmployeesconfigDataoutputktr() {
  306 + return employeesconfigDataoutputktr;
  307 + }
  308 +
  309 + public void setEmployeesconfigDataoutputktr(String employeesconfigDataoutputktr) {
  310 + this.employeesconfigDataoutputktr = employeesconfigDataoutputktr;
  311 + }
290 } 312 }
src/main/resources/datatools/config-dev.properties
@@ -60,6 +60,10 @@ datatools.ttinfodetail_output=/datatools/ktrs/ttinfodetailDataOutput.ktr @@ -60,6 +60,10 @@ datatools.ttinfodetail_output=/datatools/ktrs/ttinfodetailDataOutput.ktr
60 # 排版规则导出数据ktr转换 60 # 排版规则导出数据ktr转换
61 datatools.schedulerule_output=/datatools/ktrs/scheduleRuleDataOutput.ktr 61 datatools.schedulerule_output=/datatools/ktrs/scheduleRuleDataOutput.ktr
62 62
  63 +# 车辆配置信息导出ktr转换
  64 +datatools.carsconfig_dataoutputktr=/datatools/ktrs/carsConfigDataOutput.ktr
  65 +# 人员配置信息导出ktr转换
  66 +datatools.employeesconfig_dataoutputktr=/datatools/ktrs/employeesConfigDataOutput.ktr
63 67
64 68
65 # TODO: 69 # TODO:
src/main/resources/datatools/config-prod.properties
@@ -61,5 +61,10 @@ datatools.ttinfodetail_output=/datatools/ktrs/ttinfodetailDataOutput.ktr @@ -61,5 +61,10 @@ datatools.ttinfodetail_output=/datatools/ktrs/ttinfodetailDataOutput.ktr
61 # 排版规则导出数据ktr转换 61 # 排版规则导出数据ktr转换
62 datatools.schedulerule_output=/datatools/ktrs/scheduleRuleDataOutput.ktr 62 datatools.schedulerule_output=/datatools/ktrs/scheduleRuleDataOutput.ktr
63 63
  64 +# 车辆配置信息导出ktr转换
  65 +datatools.carsconfig_dataoutputktr=/datatools/ktrs/carsConfigDataOutput.ktr
  66 +# 人员配置信息导出ktr转换
  67 +datatools.employeesconfig_dataoutputktr=/datatools/ktrs/employeesConfigDataOutput.ktr
  68 +
64 69
65 # TODO: 70 # TODO:
66 \ No newline at end of file 71 \ No newline at end of file
src/main/resources/datatools/ktrs/carsConfigDataInput.ktr
@@ -85,10 +85,10 @@ @@ -85,10 +85,10 @@
85 </info> 85 </info>
86 <notepads> 86 <notepads>
87 <notepad> 87 <notepad>
88 - <note>&#x914d;&#x8f66;&#x5206;&#x5f53;&#x524d;&#x2f;&#x5386;&#x53f2;&#x2f;&#x8ba1;&#x5212;&#xff0c;&#x5386;&#x53f2;&#x914d;&#x8f66;&#x6709;&#x7ec8;&#x6b62;&#x65f6;&#x95f4;&#xff0c;&#x7136;&#x540e;&#x662f;&#x5426;&#x5207;&#x6362;&#x57fa;&#x672c;&#x90fd;&#x662f;1&#xa;&#x662f;&#x5426;&#x5207;&#x6362; &#x6682;&#x65f6;&#x4e0d;&#x77e5;&#x9053;&#x4ec0;&#x4e48;&#x610f;&#x601d;&#xff0c;&#x5f53;&#x524d;&#x914d;&#x8f66;&#x90fd;&#x8bbe;&#x7f6e;&#x4e3a;0&#xa;&#x7ec8;&#x6b62;&#x65f6;&#x95f4; &#x5f53;&#x524d;&#x914d;&#x8f66;&#x6ca1;&#x6709;&#x7ec8;&#x6b62;&#x65f6;&#x95f4;&#xff0c;&#x8fd9;&#x4e2a;&#x4f30;&#x8ba1;&#x8981;&#x4f5c;&#x4e3a;&#x67e5;&#x8be2;&#x6761;&#x4ef6;&#x7684;&#xa;&#x65e9;&#x73ed;&#x65f6;&#x95f4; &#x6ca1;&#x6709;&#x6682;&#x65f6;&#x7a7a;&#x7740;&#xa;&#x672b;&#x73ed;&#x65f6;&#x95f4; &#x6ca1;&#x6709;&#x6682;&#x65f6;&#x7a7a;&#x7740;&#xa;</note>  
89 - <xloc>260</xloc>  
90 - <yloc>124</yloc>  
91 - <width>391</width> 88 + <note>&#x8fd9;&#x91cc;&#x6709;&#x4e9b;&#x95ee;&#x9898;&#xa;&#x5728;window2012&#x7684;&#x73af;&#x5883;&#x4e0b;&#xff0c;&#xa;MySql&#x6570;&#x636e;&#x5e93;&#x67e5;&#x8be2;&#x4e2d;&#x5982;&#x679c;&#x8fd4;&#x56de;&#x4e2d;&#x6587;&#x5185;&#x5bb9;&#x7684;&#x5b57;&#x6bb5;&#xff0c;&#x8fd9;&#x4e2a;&#x5185;&#x5bb9;&#x4e71;&#x7801;&#xa;&#x89e3;&#x51b3;&#x529e;&#x6cd5;&#xff0c;&#x5c31;&#x662f;&#x6570;&#x636e;&#x5e93;&#x67e5;&#x8be2;&#x5168;&#x90e8;&#x7f13;&#x5b58;&#xff0c;&#x5c31;&#x4e0d;&#x4e71;&#x7801;&#xa;linux&#x73af;&#x5883;&#x4e0b;&#x6ca1;&#x95ee;&#x9898;&#xa;</note>
  89 + <xloc>40</xloc>
  90 + <yloc>238</yloc>
  91 + <width>333</width>
92 <heigth>106</heigth> 92 <heigth>106</heigth>
93 <fontname>YaHei Consolas Hybrid</fontname> 93 <fontname>YaHei Consolas Hybrid</fontname>
94 <fontsize>12</fontsize> 94 <fontsize>12</fontsize>
@@ -119,6 +119,7 @@ @@ -119,6 +119,7 @@
119 <data_tablespace/> 119 <data_tablespace/>
120 <index_tablespace/> 120 <index_tablespace/>
121 <attributes> 121 <attributes>
  122 + <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
122 <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute> 123 <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
123 <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute> 124 <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
124 <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> 125 <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
@@ -267,14 +268,16 @@ @@ -267,14 +268,16 @@
267 </attributes> 268 </attributes>
268 </connection> 269 </connection>
269 <order> 270 <order>
270 - <hop> <from>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>  
271 - <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>  
272 <hop> <from>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ccinfo</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop> 271 <hop> <from>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ccinfo</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
273 - <hop> <from>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</from><to>&#x67e5;&#x627e;&#x8f66;&#x8f86;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>  
274 - <hop> <from>&#x67e5;&#x627e;&#x8f66;&#x8f86;&#x5173;&#x8054;</from><to>&#x662f;&#x5426;&#x5207;&#x6362;</to><enabled>Y</enabled> </hop>  
275 <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop> 272 <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>
276 - <hop> <from>&#x662f;&#x5426;&#x5207;&#x6362;</from><to>&#x65e5;&#x671f;&#x8f6c;&#x6362;</to><enabled>Y</enabled> </hop>  
277 - <hop> <from>&#x65e5;&#x671f;&#x8f6c;&#x6362;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ccinfo</to><enabled>Y</enabled> </hop> 273 + <hop> <from>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</from><to>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</to><enabled>Y</enabled> </hop>
  274 + <hop> <from>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</from><to>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  275 + <hop> <from>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</from><to>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  276 + <hop> <from>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</from><to>&#x8f66;&#x8f86;id&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  277 + <hop> <from>&#x8f66;&#x8f86;id&#x67e5;&#x8be2;</from><to>&#x8fc7;&#x6ee4;&#x8f66;&#x8f86;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  278 + <hop> <from>&#x8fc7;&#x6ee4;&#x8f66;&#x8f86;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</from><to>&#x65e5;&#x671f;&#x8f6c;&#x6362;</to><enabled>Y</enabled> </hop>
  279 + <hop> <from>&#x65e5;&#x671f;&#x8f6c;&#x6362;</from><to>&#x662f;&#x5426;&#x5207;&#x6362;</to><enabled>Y</enabled> </hop>
  280 + <hop> <from>&#x662f;&#x5426;&#x5207;&#x6362;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ccinfo</to><enabled>Y</enabled> </hop>
278 </order> 281 </order>
279 <step> 282 <step>
280 <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name> 283 <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name>
@@ -405,8 +408,8 @@ @@ -405,8 +408,8 @@
405 </step> 408 </step>
406 409
407 <step> 410 <step>
408 - <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>  
409 - <type>SelectValues</type> 411 + <name>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</name>
  412 + <type>Constant</type>
410 <description/> 413 <description/>
411 <distribute>Y</distribute> 414 <distribute>Y</distribute>
412 <custom_distribution/> 415 <custom_distribution/>
@@ -415,31 +418,24 @@ @@ -415,31 +418,24 @@
415 <method>none</method> 418 <method>none</method>
416 <schema_name/> 419 <schema_name/>
417 </partitioning> 420 </partitioning>
418 - <fields> <field> <name>&#x7ebf;&#x8def;</name>  
419 - <rename>xl</rename>  
420 - <length>-2</length>  
421 - <precision>-2</precision>  
422 - </field> <field> <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>  
423 - <rename>cl</rename>  
424 - <length>-2</length>  
425 - <precision>-2</precision>  
426 - </field> <field> <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>  
427 - <rename>qyrq</rename>  
428 - <length>-2</length>  
429 - <precision>-2</precision>  
430 - </field> <field> <name>&#x7ec8;&#x7ed3;&#x65e5;&#x671f;</name>  
431 - <rename>zzrq</rename>  
432 - <length>-2</length>  
433 - <precision>-2</precision>  
434 - </field> <field> <name>&#x505c;&#x8f66;&#x70b9;</name>  
435 - <rename>tcd</rename>  
436 - <length>-2</length>  
437 - <precision>-2</precision>  
438 - </field> <select_unspecified>N</select_unspecified>  
439 - </fields> <cluster_schema/> 421 + <fields>
  422 + <field>
  423 + <name>isCancel</name>
  424 + <type>Integer</type>
  425 + <format/>
  426 + <currency/>
  427 + <decimal/>
  428 + <group/>
  429 + <nullif>0</nullif>
  430 + <length>-1</length>
  431 + <precision>-1</precision>
  432 + <set_empty_string>N</set_empty_string>
  433 + </field>
  434 + </fields>
  435 + <cluster_schema/>
440 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 436 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
441 - <xloc>306</xloc>  
442 - <yloc>56</yloc> 437 + <xloc>315</xloc>
  438 + <yloc>57</yloc>
443 <draw>Y</draw> 439 <draw>Y</draw>
444 </GUI> 440 </GUI>
445 </step> 441 </step>
@@ -462,13 +458,13 @@ @@ -462,13 +458,13 @@
462 <schema/> 458 <schema/>
463 <table>bsth_c_s_ccinfo</table> 459 <table>bsth_c_s_ccinfo</table>
464 <key> 460 <key>
465 - <name>xlId</name> 461 + <name>xlid</name>
466 <field>xl</field> 462 <field>xl</field>
467 <condition>&#x3d;</condition> 463 <condition>&#x3d;</condition>
468 <name2/> 464 <name2/>
469 </key> 465 </key>
470 <key> 466 <key>
471 - <name>clId</name> 467 + <name>clid</name>
472 <field>cl</field> 468 <field>cl</field>
473 <condition>&#x3d;</condition> 469 <condition>&#x3d;</condition>
474 <name2/> 470 <name2/>
@@ -490,24 +486,29 @@ @@ -490,24 +486,29 @@
490 </value> 486 </value>
491 <value> 487 <value>
492 <name>tcd</name> 488 <name>tcd</name>
493 - <rename>tcd</rename> 489 + <rename>&#x505c;&#x8f66;&#x70b9;</rename>
494 <update>Y</update> 490 <update>Y</update>
495 </value> 491 </value>
496 <value> 492 <value>
497 <name>zzrq</name> 493 <name>zzrq</name>
498 - <rename>zzrq</rename> 494 + <rename>&#x7ec8;&#x7ed3;&#x65e5;&#x671f;</rename>
499 <update>Y</update> 495 <update>Y</update>
500 </value> 496 </value>
501 <value> 497 <value>
502 <name>qyrq</name> 498 <name>qyrq</name>
503 - <rename>qyrq</rename> 499 + <rename>&#x542f;&#x7528;&#x65e5;&#x671f;</rename>
  500 + <update>Y</update>
  501 + </value>
  502 + <value>
  503 + <name>is_cancel</name>
  504 + <rename>isCancel</rename>
504 <update>Y</update> 505 <update>Y</update>
505 </value> 506 </value>
506 </lookup> 507 </lookup>
507 <cluster_schema/> 508 <cluster_schema/>
508 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 509 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
509 - <xloc>715</xloc>  
510 - <yloc>197</yloc> 510 + <xloc>804</xloc>
  511 + <yloc>236</yloc>
511 <draw>Y</draw> 512 <draw>Y</draw>
512 </GUI> 513 </GUI>
513 </step> 514 </step>
@@ -524,9 +525,24 @@ @@ -524,9 +525,24 @@
524 <schema_name/> 525 <schema_name/>
525 </partitioning> 526 </partitioning>
526 <fields> <select_unspecified>N</select_unspecified> 527 <fields> <select_unspecified>N</select_unspecified>
527 - <meta> <name>qyrq</name>  
528 - <rename>qyrq</rename>  
529 - <type>Date</type> 528 + <meta> <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  529 + <rename>&#x542f;&#x7528;&#x65e5;&#x671f;</rename>
  530 + <type>Timestamp</type>
  531 + <length>-2</length>
  532 + <precision>-2</precision>
  533 + <conversion_mask>yyyy-MM-dd</conversion_mask>
  534 + <date_format_lenient>false</date_format_lenient>
  535 + <date_format_locale/>
  536 + <date_format_timezone/>
  537 + <lenient_string_to_number>false</lenient_string_to_number>
  538 + <encoding/>
  539 + <decimal_symbol/>
  540 + <grouping_symbol/>
  541 + <currency_symbol/>
  542 + <storage_type/>
  543 + </meta> <meta> <name>&#x7ec8;&#x7ed3;&#x65e5;&#x671f;</name>
  544 + <rename>&#x7ec8;&#x7ed3;&#x65e5;&#x671f;</rename>
  545 + <type>Timestamp</type>
530 <length>-2</length> 546 <length>-2</length>
531 <precision>-2</precision> 547 <precision>-2</precision>
532 <conversion_mask>yyyy-MM-dd</conversion_mask> 548 <conversion_mask>yyyy-MM-dd</conversion_mask>
@@ -541,8 +557,8 @@ @@ -541,8 +557,8 @@
541 <storage_type/> 557 <storage_type/>
542 </meta> </fields> <cluster_schema/> 558 </meta> </fields> <cluster_schema/>
543 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 559 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
544 - <xloc>913</xloc>  
545 - <yloc>54</yloc> 560 + <xloc>703</xloc>
  561 + <yloc>136</yloc>
546 <draw>Y</draw> 562 <draw>Y</draw>
547 </GUI> 563 </GUI>
548 </step> 564 </step>
@@ -574,14 +590,14 @@ @@ -574,14 +590,14 @@
574 </fields> 590 </fields>
575 <cluster_schema/> 591 <cluster_schema/>
576 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 592 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
577 - <xloc>713</xloc>  
578 - <yloc>54</yloc> 593 + <xloc>803</xloc>
  594 + <yloc>137</yloc>
579 <draw>Y</draw> 595 <draw>Y</draw>
580 </GUI> 596 </GUI>
581 </step> 597 </step>
582 598
583 <step> 599 <step>
584 - <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</name> 600 + <name>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</name>
585 <type>DBLookup</type> 601 <type>DBLookup</type>
586 <description/> 602 <description/>
587 <distribute>Y</distribute> 603 <distribute>Y</distribute>
@@ -592,8 +608,8 @@ @@ -592,8 +608,8 @@
592 <schema_name/> 608 <schema_name/>
593 </partitioning> 609 </partitioning>
594 <connection>bus_control_variable</connection> 610 <connection>bus_control_variable</connection>
595 - <cache>N</cache>  
596 - <cache_load_all>N</cache_load_all> 611 + <cache>Y</cache>
  612 + <cache_load_all>Y</cache_load_all>
597 <cache_size>0</cache_size> 613 <cache_size>0</cache_size>
598 <lookup> 614 <lookup>
599 <schema/> 615 <schema/>
@@ -602,28 +618,79 @@ @@ -602,28 +618,79 @@
602 <fail_on_multiple>N</fail_on_multiple> 618 <fail_on_multiple>N</fail_on_multiple>
603 <eat_row_on_failure>N</eat_row_on_failure> 619 <eat_row_on_failure>N</eat_row_on_failure>
604 <key> 620 <key>
605 - <name>xl</name> 621 + <name>&#x7ebf;&#x8def;</name>
606 <field>name</field> 622 <field>name</field>
607 <condition>&#x3d;</condition> 623 <condition>&#x3d;</condition>
608 <name2/> 624 <name2/>
609 </key> 625 </key>
  626 + <key>
  627 + <name>isCancel</name>
  628 + <field>destroy</field>
  629 + <condition>&#x3d;</condition>
  630 + <name2/>
  631 + </key>
610 <value> 632 <value>
611 <name>id</name> 633 <name>id</name>
612 - <rename>xlId</rename> 634 + <rename>xlid</rename>
613 <default/> 635 <default/>
614 <type>Integer</type> 636 <type>Integer</type>
615 </value> 637 </value>
616 </lookup> 638 </lookup>
617 <cluster_schema/> 639 <cluster_schema/>
618 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 640 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
619 - <xloc>439</xloc>  
620 - <yloc>56</yloc> 641 + <xloc>438</xloc>
  642 + <yloc>57</yloc>
621 <draw>Y</draw> 643 <draw>Y</draw>
622 </GUI> 644 </GUI>
623 </step> 645 </step>
624 646
625 <step> 647 <step>
626 - <name>&#x67e5;&#x627e;&#x8f66;&#x8f86;&#x5173;&#x8054;</name> 648 + <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>
  649 + <type>GetVariable</type>
  650 + <description/>
  651 + <distribute>Y</distribute>
  652 + <custom_distribution/>
  653 + <copies>1</copies>
  654 + <partitioning>
  655 + <method>none</method>
  656 + <schema_name/>
  657 + </partitioning>
  658 + <fields>
  659 + <field>
  660 + <name>filepath_</name>
  661 + <variable>&#x24;&#x7b;filepath&#x7d;</variable>
  662 + <type>String</type>
  663 + <format/>
  664 + <currency/>
  665 + <decimal/>
  666 + <group/>
  667 + <length>-1</length>
  668 + <precision>-1</precision>
  669 + <trim_type>none</trim_type>
  670 + </field>
  671 + <field>
  672 + <name>erroroutputdir_</name>
  673 + <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
  674 + <type>String</type>
  675 + <format/>
  676 + <currency/>
  677 + <decimal/>
  678 + <group/>
  679 + <length>-1</length>
  680 + <precision>-1</precision>
  681 + <trim_type>none</trim_type>
  682 + </field>
  683 + </fields>
  684 + <cluster_schema/>
  685 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  686 + <xloc>156</xloc>
  687 + <yloc>150</yloc>
  688 + <draw>Y</draw>
  689 + </GUI>
  690 + </step>
  691 +
  692 + <step>
  693 + <name>&#x8f66;&#x8f86;id&#x67e5;&#x8be2;</name>
627 <type>DBLookup</type> 694 <type>DBLookup</type>
628 <description/> 695 <description/>
629 <distribute>Y</distribute> 696 <distribute>Y</distribute>
@@ -634,8 +701,8 @@ @@ -634,8 +701,8 @@
634 <schema_name/> 701 <schema_name/>
635 </partitioning> 702 </partitioning>
636 <connection>bus_control_variable</connection> 703 <connection>bus_control_variable</connection>
637 - <cache>N</cache>  
638 - <cache_load_all>N</cache_load_all> 704 + <cache>Y</cache>
  705 + <cache_load_all>Y</cache_load_all>
639 <cache_size>0</cache_size> 706 <cache_size>0</cache_size>
640 <lookup> 707 <lookup>
641 <schema/> 708 <schema/>
@@ -644,29 +711,29 @@ @@ -644,29 +711,29 @@
644 <fail_on_multiple>N</fail_on_multiple> 711 <fail_on_multiple>N</fail_on_multiple>
645 <eat_row_on_failure>N</eat_row_on_failure> 712 <eat_row_on_failure>N</eat_row_on_failure>
646 <key> 713 <key>
647 - <name>cl</name> 714 + <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
648 <field>inside_code</field> 715 <field>inside_code</field>
649 <condition>&#x3d;</condition> 716 <condition>&#x3d;</condition>
650 <name2/> 717 <name2/>
651 </key> 718 </key>
652 <value> 719 <value>
653 <name>id</name> 720 <name>id</name>
654 - <rename>clId</rename> 721 + <rename>clid</rename>
655 <default/> 722 <default/>
656 <type>Integer</type> 723 <type>Integer</type>
657 </value> 724 </value>
658 </lookup> 725 </lookup>
659 <cluster_schema/> 726 <cluster_schema/>
660 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 727 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
661 - <xloc>579</xloc>  
662 - <yloc>55</yloc> 728 + <xloc>440</xloc>
  729 + <yloc>138</yloc>
663 <draw>Y</draw> 730 <draw>Y</draw>
664 </GUI> 731 </GUI>
665 </step> 732 </step>
666 733
667 <step> 734 <step>
668 - <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>  
669 - <type>GetVariable</type> 735 + <name>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>
  736 + <type>FilterRows</type>
670 <description/> 737 <description/>
671 <distribute>Y</distribute> 738 <distribute>Y</distribute>
672 <custom_distribution/> 739 <custom_distribution/>
@@ -675,36 +742,49 @@ @@ -675,36 +742,49 @@
675 <method>none</method> 742 <method>none</method>
676 <schema_name/> 743 <schema_name/>
677 </partitioning> 744 </partitioning>
678 - <fields>  
679 - <field>  
680 - <name>filepath_</name>  
681 - <variable>&#x24;&#x7b;filepath&#x7d;</variable>  
682 - <type>String</type>  
683 - <format/>  
684 - <currency/>  
685 - <decimal/>  
686 - <group/>  
687 - <length>-1</length>  
688 - <precision>-1</precision>  
689 - <trim_type>none</trim_type>  
690 - </field>  
691 - <field>  
692 - <name>erroroutputdir_</name>  
693 - <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>  
694 - <type>String</type>  
695 - <format/>  
696 - <currency/>  
697 - <decimal/>  
698 - <group/>  
699 - <length>-1</length>  
700 - <precision>-1</precision>  
701 - <trim_type>none</trim_type>  
702 - </field>  
703 - </fields> 745 +<send_true_to>&#x8f66;&#x8f86;id&#x67e5;&#x8be2;</send_true_to>
  746 +<send_false_to/>
  747 + <compare>
  748 +<condition>
  749 + <negated>N</negated>
  750 + <leftvalue>xlid</leftvalue>
  751 + <function>IS NOT NULL</function>
  752 + <rightvalue/>
  753 + </condition>
  754 + </compare>
704 <cluster_schema/> 755 <cluster_schema/>
705 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 756 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
706 - <xloc>156</xloc>  
707 - <yloc>150</yloc> 757 + <xloc>563</xloc>
  758 + <yloc>57</yloc>
  759 + <draw>Y</draw>
  760 + </GUI>
  761 + </step>
  762 +
  763 + <step>
  764 + <name>&#x8fc7;&#x6ee4;&#x8f66;&#x8f86;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>
  765 + <type>FilterRows</type>
  766 + <description/>
  767 + <distribute>Y</distribute>
  768 + <custom_distribution/>
  769 + <copies>1</copies>
  770 + <partitioning>
  771 + <method>none</method>
  772 + <schema_name/>
  773 + </partitioning>
  774 +<send_true_to>&#x65e5;&#x671f;&#x8f6c;&#x6362;</send_true_to>
  775 +<send_false_to/>
  776 + <compare>
  777 +<condition>
  778 + <negated>N</negated>
  779 + <leftvalue>clid</leftvalue>
  780 + <function>IS NOT NULL</function>
  781 + <rightvalue/>
  782 + </condition>
  783 + </compare>
  784 + <cluster_schema/>
  785 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  786 + <xloc>566</xloc>
  787 + <yloc>137</yloc>
708 <draw>Y</draw> 788 <draw>Y</draw>
709 </GUI> 789 </GUI>
710 </step> 790 </step>
@@ -751,37 +831,42 @@ @@ -751,37 +831,42 @@
751 </template> 831 </template>
752 <fields> 832 <fields>
753 <field> 833 <field>
754 - <name>xl</name> 834 + <name>&#x7ebf;&#x8def;</name>
755 <type>String</type> 835 <type>String</type>
756 <format/> 836 <format/>
757 </field> 837 </field>
758 <field> 838 <field>
759 - <name>cl</name> 839 + <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
760 <type>String</type> 840 <type>String</type>
761 <format/> 841 <format/>
762 </field> 842 </field>
763 <field> 843 <field>
764 - <name>qyrq</name>  
765 - <type>String</type> 844 + <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  845 + <type>Timestamp</type>
766 <format/> 846 <format/>
767 </field> 847 </field>
768 <field> 848 <field>
769 - <name>zzrq</name>  
770 - <type>String</type> 849 + <name>&#x7ec8;&#x7ed3;&#x65e5;&#x671f;</name>
  850 + <type>Timestamp</type>
771 <format/> 851 <format/>
772 </field> 852 </field>
773 <field> 853 <field>
774 - <name>tcd</name> 854 + <name>&#x505c;&#x8f66;&#x70b9;</name>
775 <type>String</type> 855 <type>String</type>
776 <format/> 856 <format/>
777 </field> 857 </field>
778 <field> 858 <field>
779 - <name>xlId</name> 859 + <name>isCancel</name>
  860 + <type>Integer</type>
  861 + <format/>
  862 + </field>
  863 + <field>
  864 + <name>xlid</name>
780 <type>Integer</type> 865 <type>Integer</type>
781 <format/> 866 <format/>
782 </field> 867 </field>
783 <field> 868 <field>
784 - <name>clId</name> 869 + <name>clid</name>
785 <type>Integer</type> 870 <type>Integer</type>
786 <format/> 871 <format/>
787 </field> 872 </field>
@@ -830,8 +915,8 @@ @@ -830,8 +915,8 @@
830 </custom> 915 </custom>
831 <cluster_schema/> 916 <cluster_schema/>
832 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 917 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
833 - <xloc>718</xloc>  
834 - <yloc>314</yloc> 918 + <xloc>807</xloc>
  919 + <yloc>353</yloc>
835 <draw>Y</draw> 920 <draw>Y</draw>
836 </GUI> 921 </GUI>
837 </step> 922 </step>
src/main/resources/datatools/ktrs/carsConfigDataOutput.ktr 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>carsConfigDataOutput</name>
  5 + <description/>
  6 + <extended_description/>
  7 + <trans_version/>
  8 + <trans_type>Normal</trans_type>
  9 + <trans_status>0</trans_status>
  10 + <directory>&#x2f;</directory>
  11 + <parameters>
  12 + <parameter>
  13 + <name>filepath</name>
  14 + <default_value/>
  15 + <description>excel&#x6587;&#x4ef6;&#x8def;&#x5f84;</description>
  16 + </parameter>
  17 + </parameters>
  18 + <log>
  19 +<trans-log-table><connection/>
  20 +<schema/>
  21 +<table/>
  22 +<size_limit_lines/>
  23 +<interval/>
  24 +<timeout_days/>
  25 +<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>
  26 +<perf-log-table><connection/>
  27 +<schema/>
  28 +<table/>
  29 +<interval/>
  30 +<timeout_days/>
  31 +<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>
  32 +<channel-log-table><connection/>
  33 +<schema/>
  34 +<table/>
  35 +<timeout_days/>
  36 +<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>
  37 +<step-log-table><connection/>
  38 +<schema/>
  39 +<table/>
  40 +<timeout_days/>
  41 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>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>
  42 +<metrics-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>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>
  47 + </log>
  48 + <maxdate>
  49 + <connection/>
  50 + <table/>
  51 + <field/>
  52 + <offset>0.0</offset>
  53 + <maxdiff>0.0</maxdiff>
  54 + </maxdate>
  55 + <size_rowset>10000</size_rowset>
  56 + <sleep_time_empty>50</sleep_time_empty>
  57 + <sleep_time_full>50</sleep_time_full>
  58 + <unique_connections>N</unique_connections>
  59 + <feedback_shown>Y</feedback_shown>
  60 + <feedback_size>50000</feedback_size>
  61 + <using_thread_priorities>Y</using_thread_priorities>
  62 + <shared_objects_file/>
  63 + <capture_step_performance>N</capture_step_performance>
  64 + <step_performance_capturing_delay>1000</step_performance_capturing_delay>
  65 + <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
  66 + <dependencies>
  67 + </dependencies>
  68 + <partitionschemas>
  69 + </partitionschemas>
  70 + <slaveservers>
  71 + </slaveservers>
  72 + <clusterschemas>
  73 + </clusterschemas>
  74 + <created_user>-</created_user>
  75 + <created_date>2017&#x2f;01&#x2f;11 14&#x3a;14&#x3a;13.722</created_date>
  76 + <modified_user>-</modified_user>
  77 + <modified_date>2017&#x2f;01&#x2f;11 14&#x3a;14&#x3a;13.722</modified_date>
  78 + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
  79 + <is_key_private>N</is_key_private>
  80 + </info>
  81 + <notepads>
  82 + <notepad>
  83 + <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>
  84 + <xloc>81</xloc>
  85 + <yloc>172</yloc>
  86 + <width>333</width>
  87 + <heigth>90</heigth>
  88 + <fontname>YaHei Consolas Hybrid</fontname>
  89 + <fontsize>12</fontsize>
  90 + <fontbold>N</fontbold>
  91 + <fontitalic>N</fontitalic>
  92 + <fontcolorred>0</fontcolorred>
  93 + <fontcolorgreen>0</fontcolorgreen>
  94 + <fontcolorblue>0</fontcolorblue>
  95 + <backgroundcolorred>255</backgroundcolorred>
  96 + <backgroundcolorgreen>205</backgroundcolorgreen>
  97 + <backgroundcolorblue>112</backgroundcolorblue>
  98 + <bordercolorred>100</bordercolorred>
  99 + <bordercolorgreen>100</bordercolorgreen>
  100 + <bordercolorblue>100</bordercolorblue>
  101 + <drawshadow>Y</drawshadow>
  102 + </notepad>
  103 + </notepads>
  104 + <connection>
  105 + <name>bus_control_variable</name>
  106 + <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
  107 + <type>MYSQL</type>
  108 + <access>Native</access>
  109 + <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
  110 + <port>3306</port>
  111 + <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
  112 + <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
  113 + <servername/>
  114 + <data_tablespace/>
  115 + <index_tablespace/>
  116 + <attributes>
  117 + <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
  118 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  119 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  120 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  121 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  122 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  123 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  124 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  125 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  126 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  127 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  128 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  129 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  130 + </attributes>
  131 + </connection>
  132 + <connection>
  133 + <name>bus_control_&#x516c;&#x53f8;_201</name>
  134 + <server>localhost</server>
  135 + <type>MYSQL</type>
  136 + <access>Native</access>
  137 + <database>control</database>
  138 + <port>3306</port>
  139 + <username>root</username>
  140 + <password>Encrypted </password>
  141 + <servername/>
  142 + <data_tablespace/>
  143 + <index_tablespace/>
  144 + <attributes>
  145 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  146 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  147 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  148 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  149 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  150 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  151 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  152 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  153 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  154 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  155 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  156 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  157 + </attributes>
  158 + </connection>
  159 + <connection>
  160 + <name>bus_control_&#x672c;&#x673a;</name>
  161 + <server>localhost</server>
  162 + <type>MYSQL</type>
  163 + <access>Native</access>
  164 + <database>control</database>
  165 + <port>3306</port>
  166 + <username>root</username>
  167 + <password>Encrypted </password>
  168 + <servername/>
  169 + <data_tablespace/>
  170 + <index_tablespace/>
  171 + <attributes>
  172 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  173 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  174 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  175 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  176 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  177 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  178 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  179 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  180 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  181 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  182 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  183 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  184 + </attributes>
  185 + </connection>
  186 + <connection>
  187 + <name>xlab_mysql_youle</name>
  188 + <server>101.231.124.8</server>
  189 + <type>MYSQL</type>
  190 + <access>Native</access>
  191 + <database>xlab_youle</database>
  192 + <port>45687</port>
  193 + <username>xlab-youle</username>
  194 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
  195 + <servername/>
  196 + <data_tablespace/>
  197 + <index_tablespace/>
  198 + <attributes>
  199 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  200 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  201 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  202 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  203 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  204 + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
  205 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  206 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  207 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  208 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  209 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  210 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  211 + </attributes>
  212 + </connection>
  213 + <connection>
  214 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  215 + <server>localhost</server>
  216 + <type>MYSQL</type>
  217 + <access>Native</access>
  218 + <database>xlab_youle</database>
  219 + <port>3306</port>
  220 + <username>root</username>
  221 + <password>Encrypted </password>
  222 + <servername/>
  223 + <data_tablespace/>
  224 + <index_tablespace/>
  225 + <attributes>
  226 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  227 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  228 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  229 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  230 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  231 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  232 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  233 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  234 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  235 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  236 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  237 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  238 + </attributes>
  239 + </connection>
  240 + <connection>
  241 + <name>xlab_youle</name>
  242 + <server/>
  243 + <type>MYSQL</type>
  244 + <access>JNDI</access>
  245 + <database>xlab_youle</database>
  246 + <port>1521</port>
  247 + <username/>
  248 + <password>Encrypted </password>
  249 + <servername/>
  250 + <data_tablespace/>
  251 + <index_tablespace/>
  252 + <attributes>
  253 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  254 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  255 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  256 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  257 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  258 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  259 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  260 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  261 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  262 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  263 + </attributes>
  264 + </connection>
  265 + <order>
  266 + <hop> <from>&#x8f66;&#x8f86;&#x914d;&#x7f6e;&#xff08;&#x6ca1;&#x6709;&#x4f5c;&#x5e9f;&#xff09;</from><to>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  267 + <hop> <from>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</from><to>&#x8f66;&#x8f86;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  268 + <hop> <from>&#x8f66;&#x8f86;&#x67e5;&#x8be2;</from><to>&#x683c;&#x5f0f;&#x5316;&#x65e5;&#x671f;</to><enabled>Y</enabled> </hop>
  269 + <hop> <from>&#x683c;&#x5f0f;&#x5316;&#x65e5;&#x671f;</from><to>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  270 + <hop> <from>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
  271 + <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>Excel&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
  272 + </order>
  273 + <step>
  274 + <name>&#x8f66;&#x8f86;&#x914d;&#x7f6e;&#xff08;&#x6ca1;&#x6709;&#x4f5c;&#x5e9f;&#xff09;</name>
  275 + <type>TableInput</type>
  276 + <description/>
  277 + <distribute>Y</distribute>
  278 + <custom_distribution/>
  279 + <copies>1</copies>
  280 + <partitioning>
  281 + <method>none</method>
  282 + <schema_name/>
  283 + </partitioning>
  284 + <connection>bus_control_variable</connection>
  285 + <sql>select &#x2a; from bsth_c_s_ccinfo where is_cancel &#x3d; 0</sql>
  286 + <limit>0</limit>
  287 + <lookup/>
  288 + <execute_each_row>N</execute_each_row>
  289 + <variables_active>N</variables_active>
  290 + <lazy_conversion_active>N</lazy_conversion_active>
  291 + <cluster_schema/>
  292 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  293 + <xloc>106</xloc>
  294 + <yloc>68</yloc>
  295 + <draw>Y</draw>
  296 + </GUI>
  297 + </step>
  298 +
  299 + <step>
  300 + <name>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</name>
  301 + <type>DBLookup</type>
  302 + <description/>
  303 + <distribute>Y</distribute>
  304 + <custom_distribution/>
  305 + <copies>1</copies>
  306 + <partitioning>
  307 + <method>none</method>
  308 + <schema_name/>
  309 + </partitioning>
  310 + <connection>bus_control_variable</connection>
  311 + <cache>Y</cache>
  312 + <cache_load_all>Y</cache_load_all>
  313 + <cache_size>0</cache_size>
  314 + <lookup>
  315 + <schema/>
  316 + <table>bsth_c_line</table>
  317 + <orderby/>
  318 + <fail_on_multiple>N</fail_on_multiple>
  319 + <eat_row_on_failure>N</eat_row_on_failure>
  320 + <key>
  321 + <name>xl</name>
  322 + <field>id</field>
  323 + <condition>&#x3d;</condition>
  324 + <name2/>
  325 + </key>
  326 + <value>
  327 + <name>name</name>
  328 + <rename>xlmc</rename>
  329 + <default/>
  330 + <type>String</type>
  331 + </value>
  332 + </lookup>
  333 + <cluster_schema/>
  334 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  335 + <xloc>248</xloc>
  336 + <yloc>67</yloc>
  337 + <draw>Y</draw>
  338 + </GUI>
  339 + </step>
  340 +
  341 + <step>
  342 + <name>&#x8f66;&#x8f86;&#x67e5;&#x8be2;</name>
  343 + <type>DBLookup</type>
  344 + <description/>
  345 + <distribute>Y</distribute>
  346 + <custom_distribution/>
  347 + <copies>1</copies>
  348 + <partitioning>
  349 + <method>none</method>
  350 + <schema_name/>
  351 + </partitioning>
  352 + <connection>bus_control_variable</connection>
  353 + <cache>N</cache>
  354 + <cache_load_all>N</cache_load_all>
  355 + <cache_size>0</cache_size>
  356 + <lookup>
  357 + <schema/>
  358 + <table>bsth_c_cars</table>
  359 + <orderby/>
  360 + <fail_on_multiple>N</fail_on_multiple>
  361 + <eat_row_on_failure>N</eat_row_on_failure>
  362 + <key>
  363 + <name>cl</name>
  364 + <field>id</field>
  365 + <condition>&#x3d;</condition>
  366 + <name2/>
  367 + </key>
  368 + <value>
  369 + <name>inside_code</name>
  370 + <rename>zbh</rename>
  371 + <default/>
  372 + <type>String</type>
  373 + </value>
  374 + </lookup>
  375 + <cluster_schema/>
  376 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  377 + <xloc>361</xloc>
  378 + <yloc>67</yloc>
  379 + <draw>Y</draw>
  380 + </GUI>
  381 + </step>
  382 +
  383 + <step>
  384 + <name>&#x683c;&#x5f0f;&#x5316;&#x65e5;&#x671f;</name>
  385 + <type>SelectValues</type>
  386 + <description/>
  387 + <distribute>Y</distribute>
  388 + <custom_distribution/>
  389 + <copies>1</copies>
  390 + <partitioning>
  391 + <method>none</method>
  392 + <schema_name/>
  393 + </partitioning>
  394 + <fields> <select_unspecified>N</select_unspecified>
  395 + <meta> <name>qyrq</name>
  396 + <rename>qyrq</rename>
  397 + <type>String</type>
  398 + <length>-2</length>
  399 + <precision>-2</precision>
  400 + <conversion_mask>yyyy-MM-dd</conversion_mask>
  401 + <date_format_lenient>false</date_format_lenient>
  402 + <date_format_locale/>
  403 + <date_format_timezone/>
  404 + <lenient_string_to_number>false</lenient_string_to_number>
  405 + <encoding/>
  406 + <decimal_symbol/>
  407 + <grouping_symbol/>
  408 + <currency_symbol/>
  409 + <storage_type/>
  410 + </meta> <meta> <name>zzrq</name>
  411 + <rename>zzrq</rename>
  412 + <type>String</type>
  413 + <length>-2</length>
  414 + <precision>-2</precision>
  415 + <conversion_mask>yyyy-MM-dd</conversion_mask>
  416 + <date_format_lenient>false</date_format_lenient>
  417 + <date_format_locale/>
  418 + <date_format_timezone/>
  419 + <lenient_string_to_number>false</lenient_string_to_number>
  420 + <encoding/>
  421 + <decimal_symbol/>
  422 + <grouping_symbol/>
  423 + <currency_symbol/>
  424 + <storage_type/>
  425 + </meta> </fields> <cluster_schema/>
  426 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  427 + <xloc>478</xloc>
  428 + <yloc>66</yloc>
  429 + <draw>Y</draw>
  430 + </GUI>
  431 + </step>
  432 +
  433 + <step>
  434 + <name>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</name>
  435 + <type>SortRows</type>
  436 + <description/>
  437 + <distribute>Y</distribute>
  438 + <custom_distribution/>
  439 + <copies>1</copies>
  440 + <partitioning>
  441 + <method>none</method>
  442 + <schema_name/>
  443 + </partitioning>
  444 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  445 + <prefix>out</prefix>
  446 + <sort_size>1000000</sort_size>
  447 + <free_memory/>
  448 + <compress>N</compress>
  449 + <compress_variable/>
  450 + <unique_rows>N</unique_rows>
  451 + <fields>
  452 + <field>
  453 + <name>xlmc</name>
  454 + <ascending>Y</ascending>
  455 + <case_sensitive>N</case_sensitive>
  456 + <presorted>N</presorted>
  457 + </field>
  458 + <field>
  459 + <name>zbh</name>
  460 + <ascending>Y</ascending>
  461 + <case_sensitive>N</case_sensitive>
  462 + <presorted>N</presorted>
  463 + </field>
  464 + <field>
  465 + <name>qyrq</name>
  466 + <ascending>Y</ascending>
  467 + <case_sensitive>N</case_sensitive>
  468 + <presorted>N</presorted>
  469 + </field>
  470 + </fields>
  471 + <cluster_schema/>
  472 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  473 + <xloc>592</xloc>
  474 + <yloc>66</yloc>
  475 + <draw>Y</draw>
  476 + </GUI>
  477 + </step>
  478 +
  479 + <step>
  480 + <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
  481 + <type>SelectValues</type>
  482 + <description/>
  483 + <distribute>Y</distribute>
  484 + <custom_distribution/>
  485 + <copies>1</copies>
  486 + <partitioning>
  487 + <method>none</method>
  488 + <schema_name/>
  489 + </partitioning>
  490 + <fields> <field> <name>xlmc</name>
  491 + <rename>&#x7ebf;&#x8def;</rename>
  492 + <length>-2</length>
  493 + <precision>-2</precision>
  494 + </field> <field> <name>zbh</name>
  495 + <rename>&#x5185;&#x90e8;&#x7f16;&#x7801;</rename>
  496 + <length>-2</length>
  497 + <precision>-2</precision>
  498 + </field> <field> <name>qyrq</name>
  499 + <rename>&#x542f;&#x7528;&#x65e5;&#x671f;</rename>
  500 + <length>-2</length>
  501 + <precision>-2</precision>
  502 + </field> <field> <name>zzrq</name>
  503 + <rename>&#x7ec8;&#x7ed3;&#x65e5;&#x671f;</rename>
  504 + <length>-2</length>
  505 + <precision>-2</precision>
  506 + </field> <field> <name>tcd</name>
  507 + <rename>&#x505c;&#x8f66;&#x70b9;</rename>
  508 + <length>-2</length>
  509 + <precision>-2</precision>
  510 + </field> <select_unspecified>N</select_unspecified>
  511 + </fields> <cluster_schema/>
  512 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  513 + <xloc>595</xloc>
  514 + <yloc>167</yloc>
  515 + <draw>Y</draw>
  516 + </GUI>
  517 + </step>
  518 +
  519 + <step>
  520 + <name>Excel&#x8f93;&#x51fa;</name>
  521 + <type>ExcelOutput</type>
  522 + <description/>
  523 + <distribute>Y</distribute>
  524 + <custom_distribution/>
  525 + <copies>1</copies>
  526 + <partitioning>
  527 + <method>none</method>
  528 + <schema_name/>
  529 + </partitioning>
  530 + <header>Y</header>
  531 + <footer>N</footer>
  532 + <encoding/>
  533 + <append>N</append>
  534 + <add_to_result_filenames>Y</add_to_result_filenames>
  535 + <file>
  536 + <name>&#x24;&#x7b;filepath&#x7d;</name>
  537 + <extention/>
  538 + <do_not_open_newfile_init>N</do_not_open_newfile_init>
  539 + <create_parent_folder>N</create_parent_folder>
  540 + <split>N</split>
  541 + <add_date>N</add_date>
  542 + <add_time>N</add_time>
  543 + <SpecifyFormat>N</SpecifyFormat>
  544 + <date_time_format>yyyyMMddHHmmss</date_time_format>
  545 + <sheetname>&#x5de5;&#x4f5c;&#x8868;1</sheetname>
  546 + <autosizecolums>N</autosizecolums>
  547 + <nullisblank>N</nullisblank>
  548 + <protect_sheet>N</protect_sheet>
  549 + <password>Encrypted </password>
  550 + <splitevery>0</splitevery>
  551 + <usetempfiles>N</usetempfiles>
  552 + <tempdirectory/>
  553 + </file>
  554 + <template>
  555 + <enabled>N</enabled>
  556 + <append>N</append>
  557 + <filename>template.xls</filename>
  558 + </template>
  559 + <fields>
  560 + <field>
  561 + <name>&#x7ebf;&#x8def;</name>
  562 + <type>String</type>
  563 + <format/>
  564 + </field>
  565 + <field>
  566 + <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
  567 + <type>String</type>
  568 + <format/>
  569 + </field>
  570 + <field>
  571 + <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  572 + <type>String</type>
  573 + <format/>
  574 + </field>
  575 + <field>
  576 + <name>&#x7ec8;&#x7ed3;&#x65e5;&#x671f;</name>
  577 + <type>String</type>
  578 + <format/>
  579 + </field>
  580 + <field>
  581 + <name>&#x505c;&#x8f66;&#x70b9;</name>
  582 + <type>String</type>
  583 + <format/>
  584 + </field>
  585 + </fields>
  586 + <custom>
  587 + <header_font_name>arial</header_font_name>
  588 + <header_font_size>10</header_font_size>
  589 + <header_font_bold>N</header_font_bold>
  590 + <header_font_italic>N</header_font_italic>
  591 + <header_font_underline>no</header_font_underline>
  592 + <header_font_orientation>horizontal</header_font_orientation>
  593 + <header_font_color>black</header_font_color>
  594 + <header_background_color>none</header_background_color>
  595 + <header_row_height>255</header_row_height>
  596 + <header_alignment>left</header_alignment>
  597 + <header_image/>
  598 + <row_font_name>arial</row_font_name>
  599 + <row_font_size>10</row_font_size>
  600 + <row_font_color>black</row_font_color>
  601 + <row_background_color>none</row_background_color>
  602 + </custom>
  603 + <cluster_schema/>
  604 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  605 + <xloc>596</xloc>
  606 + <yloc>265</yloc>
  607 + <draw>Y</draw>
  608 + </GUI>
  609 + </step>
  610 +
  611 + <step_error_handling>
  612 + </step_error_handling>
  613 + <slave-step-copy-partition-distribution>
  614 +</slave-step-copy-partition-distribution>
  615 + <slave_transformation>N</slave_transformation>
  616 +
  617 +</transformation>
src/main/resources/datatools/ktrs/employeesConfigDataInput.ktr
@@ -85,10 +85,10 @@ @@ -85,10 +85,10 @@
85 </info> 85 </info>
86 <notepads> 86 <notepads>
87 <notepad> 87 <notepad>
88 - <note>&#x539f;&#x7cfb;&#x7edf;&#x7684;&#x8868;&#x4e2d;&#xff0c;&#x8f66;&#x8f86;&#x5185;&#x90e8;&#x7f16;&#x7801;&#x662f;&#x6ca1;&#x7684;&#xff0c;&#xa;&#x642d;&#x73ed;&#x7f16;&#x7801; &#x8fd9;&#x4e2a;&#x8c8c;&#x4f3c;&#x7528;&#x4e8e;&#x9a7e;&#x9a76;&#x5458;&#x548c;&#x552e;&#x7968;&#x5458;&#x7528;&#x7684;&#xff0c;&#x597d;&#x50cf;&#x4e0d;&#x80fd;&#x4e00;&#x6837;&#x7684;&#xa;&#x8f66;&#x8f86;&#x5185;&#x90e8;&#x7f16;&#x7801; &#x6ca1;&#x6709;&#x6682;&#x65f6;&#x7a7a;&#x7740;&#xa;&#xa;</note>  
89 - <xloc>252</xloc>  
90 - <yloc>178</yloc>  
91 - <width>341</width> 88 + <note>&#x8fd9;&#x91cc;&#x6709;&#x4e9b;&#x95ee;&#x9898;&#xa;&#x5728;window2012&#x7684;&#x73af;&#x5883;&#x4e0b;&#xff0c;&#xa;MySql&#x6570;&#x636e;&#x5e93;&#x67e5;&#x8be2;&#x4e2d;&#x5982;&#x679c;&#x8fd4;&#x56de;&#x4e2d;&#x6587;&#x5185;&#x5bb9;&#x7684;&#x5b57;&#x6bb5;&#xff0c;&#x8fd9;&#x4e2a;&#x5185;&#x5bb9;&#x4e71;&#x7801;&#xa;&#x89e3;&#x51b3;&#x529e;&#x6cd5;&#xff0c;&#x5c31;&#x662f;&#x6570;&#x636e;&#x5e93;&#x67e5;&#x8be2;&#x5168;&#x90e8;&#x7f13;&#x5b58;&#xff0c;&#x5c31;&#x4e0d;&#x4e71;&#x7801;&#xa;linux&#x73af;&#x5883;&#x4e0b;&#x6ca1;&#x95ee;&#x9898;</note>
  89 + <xloc>101</xloc>
  90 + <yloc>264</yloc>
  91 + <width>333</width>
92 <heigth>90</heigth> 92 <heigth>90</heigth>
93 <fontname>YaHei Consolas Hybrid</fontname> 93 <fontname>YaHei Consolas Hybrid</fontname>
94 <fontsize>12</fontsize> 94 <fontsize>12</fontsize>
@@ -119,6 +119,7 @@ @@ -119,6 +119,7 @@
119 <data_tablespace/> 119 <data_tablespace/>
120 <index_tablespace/> 120 <index_tablespace/>
121 <attributes> 121 <attributes>
  122 + <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
122 <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute> 123 <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
123 <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute> 124 <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
124 <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> 125 <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
@@ -267,13 +268,15 @@ @@ -267,13 +268,15 @@
267 </attributes> 268 </attributes>
268 </connection> 269 </connection>
269 <order> 270 <order>
270 - <hop> <from>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>  
271 - <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x67e5;&#x8be2;&#x7ebf;&#x8def;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>  
272 <hop> <from>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop> 271 <hop> <from>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
273 - <hop> <from>&#x67e5;&#x8be2;&#x552e;&#x7968;&#x5458;&#x5173;&#x8054;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</to><enabled>Y</enabled> </hop>  
274 - <hop> <from>&#x67e5;&#x8be2;&#x7ebf;&#x8def;&#x5173;&#x8054;</from><to>&#x67e5;&#x8be2;&#x9a7e;&#x9a76;&#x5458;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>  
275 - <hop> <from>&#x67e5;&#x8be2;&#x9a7e;&#x9a76;&#x5458;&#x5173;&#x8054;</from><to>&#x67e5;&#x8be2;&#x552e;&#x7968;&#x5458;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>  
276 <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop> 272 <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>
  273 + <hop> <from>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</from><to>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</to><enabled>Y</enabled> </hop>
  274 + <hop> <from>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</from><to>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  275 + <hop> <from>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</from><to>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  276 + <hop> <from>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</from><to>&#x9a7e;&#x9a76;&#x5458;id&#x67e5;&#x627e;</to><enabled>Y</enabled> </hop>
  277 + <hop> <from>&#x9a7e;&#x9a76;&#x5458;id&#x67e5;&#x627e;</from><to>&#x8fc7;&#x6ee4;&#x9a7e;&#x9a76;&#x5458;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  278 + <hop> <from>&#x8fc7;&#x6ee4;&#x9a7e;&#x9a76;&#x5458;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</from><to>&#x552e;&#x7968;&#x5458;id&#x67e5;&#x627e;</to><enabled>Y</enabled> </hop>
  279 + <hop> <from>&#x552e;&#x7968;&#x5458;id&#x67e5;&#x627e;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</to><enabled>Y</enabled> </hop>
277 </order> 280 </order>
278 <step> 281 <step>
279 <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name> 282 <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name>
@@ -328,7 +331,7 @@ @@ -328,7 +331,7 @@
328 <precision>-1</precision> 331 <precision>-1</precision>
329 <trim_type>none</trim_type> 332 <trim_type>none</trim_type>
330 <repeat>N</repeat> 333 <repeat>N</repeat>
331 - <format/> 334 + <format>&#x23;</format>
332 <currency/> 335 <currency/>
333 <decimal/> 336 <decimal/>
334 <group/> 337 <group/>
@@ -381,18 +384,6 @@ @@ -381,18 +384,6 @@
381 <decimal/> 384 <decimal/>
382 <group/> 385 <group/>
383 </field> 386 </field>
384 - <field>  
385 - <name>&#x8f66;&#x8f86;</name>  
386 - <type>String</type>  
387 - <length>-1</length>  
388 - <precision>-1</precision>  
389 - <trim_type>none</trim_type>  
390 - <repeat>N</repeat>  
391 - <format/>  
392 - <currency/>  
393 - <decimal/>  
394 - <group/>  
395 - </field>  
396 </fields> 387 </fields>
397 <sheets> 388 <sheets>
398 <sheet> 389 <sheet>
@@ -421,15 +412,15 @@ @@ -421,15 +412,15 @@
421 <spreadsheet_type>JXL</spreadsheet_type> 412 <spreadsheet_type>JXL</spreadsheet_type>
422 <cluster_schema/> 413 <cluster_schema/>
423 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 414 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
424 - <xloc>144</xloc>  
425 - <yloc>49</yloc> 415 + <xloc>93</xloc>
  416 + <yloc>51</yloc>
426 <draw>Y</draw> 417 <draw>Y</draw>
427 </GUI> 418 </GUI>
428 </step> 419 </step>
429 420
430 <step> 421 <step>
431 - <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>  
432 - <type>SelectValues</type> 422 + <name>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</name>
  423 + <type>Constant</type>
433 <description/> 424 <description/>
434 <distribute>Y</distribute> 425 <distribute>Y</distribute>
435 <custom_distribution/> 426 <custom_distribution/>
@@ -438,39 +429,58 @@ @@ -438,39 +429,58 @@
438 <method>none</method> 429 <method>none</method>
439 <schema_name/> 430 <schema_name/>
440 </partitioning> 431 </partitioning>
441 - <fields> <field> <name>&#x7ebf;&#x8def;</name>  
442 - <rename>xl</rename>  
443 - <length>-2</length>  
444 - <precision>-2</precision>  
445 - </field> <field> <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>  
446 - <rename>dbbm</rename>  
447 - <length>-2</length>  
448 - <precision>-2</precision>  
449 - </field> <field> <name>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</name>  
450 - <rename>jsy_no</rename>  
451 - <length>-2</length>  
452 - <precision>-2</precision>  
453 - </field> <field> <name>&#x9a7e;&#x9a76;&#x5458;</name>  
454 - <rename>jsy_name</rename>  
455 - <length>-2</length>  
456 - <precision>-2</precision>  
457 - </field> <field> <name>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</name>  
458 - <rename>spy_no</rename>  
459 - <length>-2</length>  
460 - <precision>-2</precision>  
461 - </field> <field> <name>&#x552e;&#x7968;&#x5458;</name>  
462 - <rename>spy_name</rename>  
463 - <length>-2</length>  
464 - <precision>-2</precision>  
465 - </field> <field> <name>&#x8f66;&#x8f86;</name>  
466 - <rename>cl</rename>  
467 - <length>-2</length>  
468 - <precision>-2</precision>  
469 - </field> <select_unspecified>N</select_unspecified>  
470 - </fields> <cluster_schema/> 432 + <fields>
  433 + <field>
  434 + <name>isCancel</name>
  435 + <type>Integer</type>
  436 + <format/>
  437 + <currency/>
  438 + <decimal/>
  439 + <group/>
  440 + <nullif>0</nullif>
  441 + <length>-1</length>
  442 + <precision>-1</precision>
  443 + <set_empty_string>N</set_empty_string>
  444 + </field>
  445 + </fields>
  446 + <cluster_schema/>
471 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 447 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
472 - <xloc>294</xloc>  
473 - <yloc>50</yloc> 448 + <xloc>225</xloc>
  449 + <yloc>53</yloc>
  450 + <draw>Y</draw>
  451 + </GUI>
  452 + </step>
  453 +
  454 + <step>
  455 + <name>&#x552e;&#x7968;&#x5458;id&#x67e5;&#x627e;</name>
  456 + <type>DBJoin</type>
  457 + <description/>
  458 + <distribute>Y</distribute>
  459 + <custom_distribution/>
  460 + <copies>1</copies>
  461 + <partitioning>
  462 + <method>none</method>
  463 + <schema_name/>
  464 + </partitioning>
  465 + <connection>bus_control_variable</connection>
  466 + <rowlimit>1</rowlimit>
  467 + <sql>select id as sid from bsth_c_personnel&#xa;where job_code &#x3d; &#x3f; and personnel_name &#x3d; &#x3f;</sql>
  468 + <outer_join>Y</outer_join>
  469 + <replace_vars>N</replace_vars>
  470 + <parameter>
  471 + <field>
  472 + <name>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</name>
  473 + <type>String</type>
  474 + </field>
  475 + <field>
  476 + <name>&#x552e;&#x7968;&#x5458;</name>
  477 + <type>String</type>
  478 + </field>
  479 + </parameter>
  480 + <cluster_schema/>
  481 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  482 + <xloc>673</xloc>
  483 + <yloc>47</yloc>
474 <draw>Y</draw> 484 <draw>Y</draw>
475 </GUI> 485 </GUI>
476 </step> 486 </step>
@@ -499,14 +509,8 @@ @@ -499,14 +509,8 @@
499 <name2/> 509 <name2/>
500 </key> 510 </key>
501 <key> 511 <key>
502 - <name>jsyid</name>  
503 - <field>jsy</field>  
504 - <condition>&#x3d;</condition>  
505 - <name2/>  
506 - </key>  
507 - <key>  
508 - <name>spyid</name>  
509 - <field>spy</field> 512 + <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>
  513 + <field>dbbm</field>
510 <condition>&#x3d;</condition> 514 <condition>&#x3d;</condition>
511 <name2/> 515 <name2/>
512 </key> 516 </key>
@@ -517,72 +521,35 @@ @@ -517,72 +521,35 @@
517 </value> 521 </value>
518 <value> 522 <value>
519 <name>dbbm</name> 523 <name>dbbm</name>
520 - <rename>dbbm</rename> 524 + <rename>&#x642d;&#x73ed;&#x7f16;&#x7801;</rename>
521 <update>Y</update> 525 <update>Y</update>
522 </value> 526 </value>
523 <value> 527 <value>
524 <name>jsy</name> 528 <name>jsy</name>
525 - <rename>jsyid</rename> 529 + <rename>jid</rename>
526 <update>Y</update> 530 <update>Y</update>
527 </value> 531 </value>
528 <value> 532 <value>
529 <name>spy</name> 533 <name>spy</name>
530 - <rename>spyid</rename> 534 + <rename>sid</rename>
531 <update>Y</update> 535 <update>Y</update>
532 </value> 536 </value>
533 - </lookup>  
534 - <cluster_schema/>  
535 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
536 - <xloc>721</xloc>  
537 - <yloc>181</yloc>  
538 - <draw>Y</draw>  
539 - </GUI>  
540 - </step>  
541 -  
542 - <step>  
543 - <name>&#x67e5;&#x8be2;&#x552e;&#x7968;&#x5458;&#x5173;&#x8054;</name>  
544 - <type>DBLookup</type>  
545 - <description/>  
546 - <distribute>Y</distribute>  
547 - <custom_distribution/>  
548 - <copies>1</copies>  
549 - <partitioning>  
550 - <method>none</method>  
551 - <schema_name/>  
552 - </partitioning>  
553 - <connection>bus_control_variable</connection>  
554 - <cache>N</cache>  
555 - <cache_load_all>N</cache_load_all>  
556 - <cache_size>0</cache_size>  
557 - <lookup>  
558 - <schema/>  
559 - <table>bsth_c_personnel</table>  
560 - <orderby/>  
561 - <fail_on_multiple>N</fail_on_multiple>  
562 - <eat_row_on_failure>N</eat_row_on_failure>  
563 - <key>  
564 - <name>spy_no</name>  
565 - <field>job_code</field>  
566 - <condition>&#x3d;</condition>  
567 - <name2/>  
568 - </key>  
569 <value> 537 <value>
570 - <name>id</name>  
571 - <rename>spyid</rename>  
572 - <default/>  
573 - <type>Integer</type> 538 + <name>is_cancel</name>
  539 + <rename>isCancel</rename>
  540 + <update>Y</update>
574 </value> 541 </value>
575 </lookup> 542 </lookup>
576 <cluster_schema/> 543 <cluster_schema/>
577 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 544 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
578 - <xloc>720</xloc>  
579 - <yloc>51</yloc> 545 + <xloc>676</xloc>
  546 + <yloc>200</yloc>
580 <draw>Y</draw> 547 <draw>Y</draw>
581 </GUI> 548 </GUI>
582 </step> 549 </step>
583 550
584 <step> 551 <step>
585 - <name>&#x67e5;&#x8be2;&#x7ebf;&#x8def;&#x5173;&#x8054;</name> 552 + <name>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</name>
586 <type>DBLookup</type> 553 <type>DBLookup</type>
587 <description/> 554 <description/>
588 <distribute>Y</distribute> 555 <distribute>Y</distribute>
@@ -593,8 +560,8 @@ @@ -593,8 +560,8 @@
593 <schema_name/> 560 <schema_name/>
594 </partitioning> 561 </partitioning>
595 <connection>bus_control_variable</connection> 562 <connection>bus_control_variable</connection>
596 - <cache>N</cache>  
597 - <cache_load_all>N</cache_load_all> 563 + <cache>Y</cache>
  564 + <cache_load_all>Y</cache_load_all>
598 <cache_size>0</cache_size> 565 <cache_size>0</cache_size>
599 <lookup> 566 <lookup>
600 <schema/> 567 <schema/>
@@ -603,64 +570,28 @@ @@ -603,64 +570,28 @@
603 <fail_on_multiple>N</fail_on_multiple> 570 <fail_on_multiple>N</fail_on_multiple>
604 <eat_row_on_failure>N</eat_row_on_failure> 571 <eat_row_on_failure>N</eat_row_on_failure>
605 <key> 572 <key>
606 - <name>xl</name> 573 + <name>&#x7ebf;&#x8def;</name>
607 <field>name</field> 574 <field>name</field>
608 <condition>&#x3d;</condition> 575 <condition>&#x3d;</condition>
609 <name2/> 576 <name2/>
610 </key> 577 </key>
611 - <value>  
612 - <name>id</name>  
613 - <rename>xlid</rename>  
614 - <default/>  
615 - <type>Integer</type>  
616 - </value>  
617 - </lookup>  
618 - <cluster_schema/>  
619 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
620 - <xloc>429</xloc>  
621 - <yloc>51</yloc>  
622 - <draw>Y</draw>  
623 - </GUI>  
624 - </step>  
625 -  
626 - <step>  
627 - <name>&#x67e5;&#x8be2;&#x9a7e;&#x9a76;&#x5458;&#x5173;&#x8054;</name>  
628 - <type>DBLookup</type>  
629 - <description/>  
630 - <distribute>Y</distribute>  
631 - <custom_distribution/>  
632 - <copies>1</copies>  
633 - <partitioning>  
634 - <method>none</method>  
635 - <schema_name/>  
636 - </partitioning>  
637 - <connection>bus_control_variable</connection>  
638 - <cache>N</cache>  
639 - <cache_load_all>N</cache_load_all>  
640 - <cache_size>0</cache_size>  
641 - <lookup>  
642 - <schema/>  
643 - <table>bsth_c_personnel</table>  
644 - <orderby/>  
645 - <fail_on_multiple>N</fail_on_multiple>  
646 - <eat_row_on_failure>N</eat_row_on_failure>  
647 <key> 578 <key>
648 - <name>jsy_no</name>  
649 - <field>job_code</field> 579 + <name>isCancel</name>
  580 + <field>destroy</field>
650 <condition>&#x3d;</condition> 581 <condition>&#x3d;</condition>
651 <name2/> 582 <name2/>
652 </key> 583 </key>
653 <value> 584 <value>
654 <name>id</name> 585 <name>id</name>
655 - <rename>jsyid</rename> 586 + <rename>xlid</rename>
656 <default/> 587 <default/>
657 <type>Integer</type> 588 <type>Integer</type>
658 </value> 589 </value>
659 </lookup> 590 </lookup>
660 <cluster_schema/> 591 <cluster_schema/>
661 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 592 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
662 - <xloc>573</xloc>  
663 - <yloc>51</yloc> 593 + <xloc>397</xloc>
  594 + <yloc>144</yloc>
664 <draw>Y</draw> 595 <draw>Y</draw>
665 </GUI> 596 </GUI>
666 </step> 597 </step>
@@ -711,6 +642,64 @@ @@ -711,6 +642,64 @@
711 </step> 642 </step>
712 643
713 <step> 644 <step>
  645 + <name>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>
  646 + <type>FilterRows</type>
  647 + <description/>
  648 + <distribute>Y</distribute>
  649 + <custom_distribution/>
  650 + <copies>1</copies>
  651 + <partitioning>
  652 + <method>none</method>
  653 + <schema_name/>
  654 + </partitioning>
  655 +<send_true_to/>
  656 +<send_false_to/>
  657 + <compare>
  658 +<condition>
  659 + <negated>N</negated>
  660 + <leftvalue>xlid</leftvalue>
  661 + <function>IS NOT NULL</function>
  662 + <rightvalue/>
  663 + </condition>
  664 + </compare>
  665 + <cluster_schema/>
  666 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  667 + <xloc>395</xloc>
  668 + <yloc>49</yloc>
  669 + <draw>Y</draw>
  670 + </GUI>
  671 + </step>
  672 +
  673 + <step>
  674 + <name>&#x8fc7;&#x6ee4;&#x9a7e;&#x9a76;&#x5458;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>
  675 + <type>FilterRows</type>
  676 + <description/>
  677 + <distribute>Y</distribute>
  678 + <custom_distribution/>
  679 + <copies>1</copies>
  680 + <partitioning>
  681 + <method>none</method>
  682 + <schema_name/>
  683 + </partitioning>
  684 +<send_true_to>&#x552e;&#x7968;&#x5458;id&#x67e5;&#x627e;</send_true_to>
  685 +<send_false_to/>
  686 + <compare>
  687 +<condition>
  688 + <negated>N</negated>
  689 + <leftvalue>jid</leftvalue>
  690 + <function>IS NOT NULL</function>
  691 + <rightvalue/>
  692 + </condition>
  693 + </compare>
  694 + <cluster_schema/>
  695 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  696 + <xloc>538</xloc>
  697 + <yloc>47</yloc>
  698 + <draw>Y</draw>
  699 + </GUI>
  700 + </step>
  701 +
  702 + <step>
714 <name>&#x9519;&#x8bef;&#x8f93;&#x51fa;</name> 703 <name>&#x9519;&#x8bef;&#x8f93;&#x51fa;</name>
715 <type>ExcelOutput</type> 704 <type>ExcelOutput</type>
716 <description/> 705 <description/>
@@ -752,38 +741,38 @@ @@ -752,38 +741,38 @@
752 </template> 741 </template>
753 <fields> 742 <fields>
754 <field> 743 <field>
755 - <name>xl</name> 744 + <name>&#x7ebf;&#x8def;</name>
756 <type>String</type> 745 <type>String</type>
757 <format/> 746 <format/>
758 </field> 747 </field>
759 <field> 748 <field>
760 - <name>dbbm</name> 749 + <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>
761 <type>String</type> 750 <type>String</type>
762 <format/> 751 <format/>
763 </field> 752 </field>
764 <field> 753 <field>
765 - <name>jsy_no</name> 754 + <name>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</name>
766 <type>String</type> 755 <type>String</type>
767 <format/> 756 <format/>
768 </field> 757 </field>
769 <field> 758 <field>
770 - <name>jsy_name</name> 759 + <name>&#x9a7e;&#x9a76;&#x5458;</name>
771 <type>String</type> 760 <type>String</type>
772 <format/> 761 <format/>
773 </field> 762 </field>
774 <field> 763 <field>
775 - <name>spy_no</name> 764 + <name>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</name>
776 <type>String</type> 765 <type>String</type>
777 <format/> 766 <format/>
778 </field> 767 </field>
779 <field> 768 <field>
780 - <name>spy_name</name> 769 + <name>&#x552e;&#x7968;&#x5458;</name>
781 <type>String</type> 770 <type>String</type>
782 <format/> 771 <format/>
783 </field> 772 </field>
784 <field> 773 <field>
785 - <name>cl</name>  
786 - <type>String</type> 774 + <name>isCancel</name>
  775 + <type>Integer</type>
787 <format/> 776 <format/>
788 </field> 777 </field>
789 <field> 778 <field>
@@ -792,12 +781,12 @@ @@ -792,12 +781,12 @@
792 <format/> 781 <format/>
793 </field> 782 </field>
794 <field> 783 <field>
795 - <name>jsyid</name> 784 + <name>jid</name>
796 <type>Integer</type> 785 <type>Integer</type>
797 <format/> 786 <format/>
798 </field> 787 </field>
799 <field> 788 <field>
800 - <name>spyid</name> 789 + <name>sid</name>
801 <type>Integer</type> 790 <type>Integer</type>
802 <format/> 791 <format/>
803 </field> 792 </field>
@@ -841,8 +830,42 @@ @@ -841,8 +830,42 @@
841 </custom> 830 </custom>
842 <cluster_schema/> 831 <cluster_schema/>
843 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 832 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
844 - <xloc>721</xloc>  
845 - <yloc>304</yloc> 833 + <xloc>676</xloc>
  834 + <yloc>323</yloc>
  835 + <draw>Y</draw>
  836 + </GUI>
  837 + </step>
  838 +
  839 + <step>
  840 + <name>&#x9a7e;&#x9a76;&#x5458;id&#x67e5;&#x627e;</name>
  841 + <type>DBJoin</type>
  842 + <description/>
  843 + <distribute>Y</distribute>
  844 + <custom_distribution/>
  845 + <copies>1</copies>
  846 + <partitioning>
  847 + <method>none</method>
  848 + <schema_name/>
  849 + </partitioning>
  850 + <connection>bus_control_variable</connection>
  851 + <rowlimit>1</rowlimit>
  852 + <sql>select id as jid from bsth_c_personnel&#xa;where job_code &#x3d; &#x3f; and personnel_name &#x3d; &#x3f;</sql>
  853 + <outer_join>Y</outer_join>
  854 + <replace_vars>N</replace_vars>
  855 + <parameter>
  856 + <field>
  857 + <name>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</name>
  858 + <type>String</type>
  859 + </field>
  860 + <field>
  861 + <name>&#x9a7e;&#x9a76;&#x5458;</name>
  862 + <type>String</type>
  863 + </field>
  864 + </parameter>
  865 + <cluster_schema/>
  866 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  867 + <xloc>537</xloc>
  868 + <yloc>143</yloc>
846 <draw>Y</draw> 869 <draw>Y</draw>
847 </GUI> 870 </GUI>
848 </step> 871 </step>
src/main/resources/datatools/ktrs/employeesConfigDataOutput.ktr 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>employeesConfigDataOutput</name>
  5 + <description/>
  6 + <extended_description/>
  7 + <trans_version/>
  8 + <trans_type>Normal</trans_type>
  9 + <trans_status>0</trans_status>
  10 + <directory>&#x2f;</directory>
  11 + <parameters>
  12 + <parameter>
  13 + <name>filepath</name>
  14 + <default_value/>
  15 + <description>excel&#x6587;&#x4ef6;&#x8def;&#x5f84;</description>
  16 + </parameter>
  17 + </parameters>
  18 + <log>
  19 +<trans-log-table><connection/>
  20 +<schema/>
  21 +<table/>
  22 +<size_limit_lines/>
  23 +<interval/>
  24 +<timeout_days/>
  25 +<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>
  26 +<perf-log-table><connection/>
  27 +<schema/>
  28 +<table/>
  29 +<interval/>
  30 +<timeout_days/>
  31 +<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>
  32 +<channel-log-table><connection/>
  33 +<schema/>
  34 +<table/>
  35 +<timeout_days/>
  36 +<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>
  37 +<step-log-table><connection/>
  38 +<schema/>
  39 +<table/>
  40 +<timeout_days/>
  41 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>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>
  42 +<metrics-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>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>
  47 + </log>
  48 + <maxdate>
  49 + <connection/>
  50 + <table/>
  51 + <field/>
  52 + <offset>0.0</offset>
  53 + <maxdiff>0.0</maxdiff>
  54 + </maxdate>
  55 + <size_rowset>10000</size_rowset>
  56 + <sleep_time_empty>50</sleep_time_empty>
  57 + <sleep_time_full>50</sleep_time_full>
  58 + <unique_connections>N</unique_connections>
  59 + <feedback_shown>Y</feedback_shown>
  60 + <feedback_size>50000</feedback_size>
  61 + <using_thread_priorities>Y</using_thread_priorities>
  62 + <shared_objects_file/>
  63 + <capture_step_performance>N</capture_step_performance>
  64 + <step_performance_capturing_delay>1000</step_performance_capturing_delay>
  65 + <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
  66 + <dependencies>
  67 + </dependencies>
  68 + <partitionschemas>
  69 + </partitionschemas>
  70 + <slaveservers>
  71 + </slaveservers>
  72 + <clusterschemas>
  73 + </clusterschemas>
  74 + <created_user>-</created_user>
  75 + <created_date>2017&#x2f;01&#x2f;11 15&#x3a;36&#x3a;10.101</created_date>
  76 + <modified_user>-</modified_user>
  77 + <modified_date>2017&#x2f;01&#x2f;11 15&#x3a;36&#x3a;10.101</modified_date>
  78 + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
  79 + <is_key_private>N</is_key_private>
  80 + </info>
  81 + <notepads>
  82 + <notepad>
  83 + <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>
  84 + <xloc>66</xloc>
  85 + <yloc>151</yloc>
  86 + <width>333</width>
  87 + <heigth>90</heigth>
  88 + <fontname>YaHei Consolas Hybrid</fontname>
  89 + <fontsize>12</fontsize>
  90 + <fontbold>N</fontbold>
  91 + <fontitalic>N</fontitalic>
  92 + <fontcolorred>0</fontcolorred>
  93 + <fontcolorgreen>0</fontcolorgreen>
  94 + <fontcolorblue>0</fontcolorblue>
  95 + <backgroundcolorred>255</backgroundcolorred>
  96 + <backgroundcolorgreen>205</backgroundcolorgreen>
  97 + <backgroundcolorblue>112</backgroundcolorblue>
  98 + <bordercolorred>100</bordercolorred>
  99 + <bordercolorgreen>100</bordercolorgreen>
  100 + <bordercolorblue>100</bordercolorblue>
  101 + <drawshadow>Y</drawshadow>
  102 + </notepad>
  103 + </notepads>
  104 + <connection>
  105 + <name>bus_control_variable</name>
  106 + <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
  107 + <type>MYSQL</type>
  108 + <access>Native</access>
  109 + <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
  110 + <port>3306</port>
  111 + <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
  112 + <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
  113 + <servername/>
  114 + <data_tablespace/>
  115 + <index_tablespace/>
  116 + <attributes>
  117 + <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
  118 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  119 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  120 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  121 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  122 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  123 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  124 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  125 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  126 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  127 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  128 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  129 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  130 + </attributes>
  131 + </connection>
  132 + <connection>
  133 + <name>bus_control_&#x516c;&#x53f8;_201</name>
  134 + <server>localhost</server>
  135 + <type>MYSQL</type>
  136 + <access>Native</access>
  137 + <database>control</database>
  138 + <port>3306</port>
  139 + <username>root</username>
  140 + <password>Encrypted </password>
  141 + <servername/>
  142 + <data_tablespace/>
  143 + <index_tablespace/>
  144 + <attributes>
  145 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  146 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  147 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  148 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  149 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  150 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  151 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  152 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  153 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  154 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  155 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  156 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  157 + </attributes>
  158 + </connection>
  159 + <connection>
  160 + <name>bus_control_&#x672c;&#x673a;</name>
  161 + <server>localhost</server>
  162 + <type>MYSQL</type>
  163 + <access>Native</access>
  164 + <database>control</database>
  165 + <port>3306</port>
  166 + <username>root</username>
  167 + <password>Encrypted </password>
  168 + <servername/>
  169 + <data_tablespace/>
  170 + <index_tablespace/>
  171 + <attributes>
  172 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  173 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  174 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  175 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  176 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  177 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  178 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  179 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  180 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  181 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  182 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  183 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  184 + </attributes>
  185 + </connection>
  186 + <connection>
  187 + <name>xlab_mysql_youle</name>
  188 + <server>101.231.124.8</server>
  189 + <type>MYSQL</type>
  190 + <access>Native</access>
  191 + <database>xlab_youle</database>
  192 + <port>45687</port>
  193 + <username>xlab-youle</username>
  194 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
  195 + <servername/>
  196 + <data_tablespace/>
  197 + <index_tablespace/>
  198 + <attributes>
  199 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  200 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  201 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  202 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  203 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  204 + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
  205 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  206 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  207 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  208 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  209 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  210 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  211 + </attributes>
  212 + </connection>
  213 + <connection>
  214 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  215 + <server>localhost</server>
  216 + <type>MYSQL</type>
  217 + <access>Native</access>
  218 + <database>xlab_youle</database>
  219 + <port>3306</port>
  220 + <username>root</username>
  221 + <password>Encrypted </password>
  222 + <servername/>
  223 + <data_tablespace/>
  224 + <index_tablespace/>
  225 + <attributes>
  226 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  227 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  228 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  229 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  230 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  231 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  232 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  233 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  234 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  235 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  236 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  237 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  238 + </attributes>
  239 + </connection>
  240 + <connection>
  241 + <name>xlab_youle</name>
  242 + <server/>
  243 + <type>MYSQL</type>
  244 + <access>JNDI</access>
  245 + <database>xlab_youle</database>
  246 + <port>1521</port>
  247 + <username/>
  248 + <password>Encrypted </password>
  249 + <servername/>
  250 + <data_tablespace/>
  251 + <index_tablespace/>
  252 + <attributes>
  253 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  254 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  255 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  256 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  257 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  258 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  259 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  260 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  261 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  262 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  263 + </attributes>
  264 + </connection>
  265 + <order>
  266 + <hop> <from>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#xff08;&#x6ca1;&#x6709;&#x4f5c;&#x5e9f;&#xff09;</from><to>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  267 + <hop> <from>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</from><to>&#x9a7e;&#x9a76;&#x5458;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  268 + <hop> <from>&#x9a7e;&#x9a76;&#x5458;&#x67e5;&#x8be2;</from><to>&#x552e;&#x7968;&#x5458;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  269 + <hop> <from>&#x552e;&#x7968;&#x5458;&#x67e5;&#x8be2;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
  270 + <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  271 + <hop> <from>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</from><to>Excel&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
  272 + </order>
  273 + <step>
  274 + <name>Excel&#x8f93;&#x51fa;</name>
  275 + <type>ExcelOutput</type>
  276 + <description/>
  277 + <distribute>Y</distribute>
  278 + <custom_distribution/>
  279 + <copies>1</copies>
  280 + <partitioning>
  281 + <method>none</method>
  282 + <schema_name/>
  283 + </partitioning>
  284 + <header>Y</header>
  285 + <footer>N</footer>
  286 + <encoding/>
  287 + <append>N</append>
  288 + <add_to_result_filenames>Y</add_to_result_filenames>
  289 + <file>
  290 + <name>&#x24;&#x7b;filepath&#x7d;</name>
  291 + <extention/>
  292 + <do_not_open_newfile_init>N</do_not_open_newfile_init>
  293 + <create_parent_folder>N</create_parent_folder>
  294 + <split>N</split>
  295 + <add_date>N</add_date>
  296 + <add_time>N</add_time>
  297 + <SpecifyFormat>N</SpecifyFormat>
  298 + <date_time_format>yyyyMMddHHmmss</date_time_format>
  299 + <sheetname>&#x5de5;&#x4f5c;&#x8868;1</sheetname>
  300 + <autosizecolums>N</autosizecolums>
  301 + <nullisblank>N</nullisblank>
  302 + <protect_sheet>N</protect_sheet>
  303 + <password>Encrypted </password>
  304 + <splitevery>0</splitevery>
  305 + <usetempfiles>N</usetempfiles>
  306 + <tempdirectory/>
  307 + </file>
  308 + <template>
  309 + <enabled>N</enabled>
  310 + <append>N</append>
  311 + <filename>template.xls</filename>
  312 + </template>
  313 + <fields>
  314 + <field>
  315 + <name>&#x7ebf;&#x8def;</name>
  316 + <type>String</type>
  317 + <format/>
  318 + </field>
  319 + <field>
  320 + <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>
  321 + <type>String</type>
  322 + <format/>
  323 + </field>
  324 + <field>
  325 + <name>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</name>
  326 + <type>String</type>
  327 + <format/>
  328 + </field>
  329 + <field>
  330 + <name>&#x9a7e;&#x9a76;&#x5458;</name>
  331 + <type>String</type>
  332 + <format/>
  333 + </field>
  334 + <field>
  335 + <name>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</name>
  336 + <type>String</type>
  337 + <format/>
  338 + </field>
  339 + <field>
  340 + <name>&#x552e;&#x7968;&#x5458;</name>
  341 + <type>String</type>
  342 + <format/>
  343 + </field>
  344 + </fields>
  345 + <custom>
  346 + <header_font_name>arial</header_font_name>
  347 + <header_font_size>10</header_font_size>
  348 + <header_font_bold>N</header_font_bold>
  349 + <header_font_italic>N</header_font_italic>
  350 + <header_font_underline>no</header_font_underline>
  351 + <header_font_orientation>horizontal</header_font_orientation>
  352 + <header_font_color>black</header_font_color>
  353 + <header_background_color>none</header_background_color>
  354 + <header_row_height>255</header_row_height>
  355 + <header_alignment>left</header_alignment>
  356 + <header_image/>
  357 + <row_font_name>arial</row_font_name>
  358 + <row_font_size>10</row_font_size>
  359 + <row_font_color>black</row_font_color>
  360 + <row_background_color>none</row_background_color>
  361 + </custom>
  362 + <cluster_schema/>
  363 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  364 + <xloc>696</xloc>
  365 + <yloc>257</yloc>
  366 + <draw>Y</draw>
  367 + </GUI>
  368 + </step>
  369 +
  370 + <step>
  371 + <name>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#xff08;&#x6ca1;&#x6709;&#x4f5c;&#x5e9f;&#xff09;</name>
  372 + <type>TableInput</type>
  373 + <description/>
  374 + <distribute>Y</distribute>
  375 + <custom_distribution/>
  376 + <copies>1</copies>
  377 + <partitioning>
  378 + <method>none</method>
  379 + <schema_name/>
  380 + </partitioning>
  381 + <connection>bus_control_variable</connection>
  382 + <sql>select &#x2a; from bsth_c_s_ecinfo where is_cancel &#x3d; 0</sql>
  383 + <limit>0</limit>
  384 + <lookup/>
  385 + <execute_each_row>N</execute_each_row>
  386 + <variables_active>N</variables_active>
  387 + <lazy_conversion_active>N</lazy_conversion_active>
  388 + <cluster_schema/>
  389 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  390 + <xloc>90</xloc>
  391 + <yloc>59</yloc>
  392 + <draw>Y</draw>
  393 + </GUI>
  394 + </step>
  395 +
  396 + <step>
  397 + <name>&#x552e;&#x7968;&#x5458;&#x67e5;&#x8be2;</name>
  398 + <type>DBJoin</type>
  399 + <description/>
  400 + <distribute>Y</distribute>
  401 + <custom_distribution/>
  402 + <copies>1</copies>
  403 + <partitioning>
  404 + <method>none</method>
  405 + <schema_name/>
  406 + </partitioning>
  407 + <connection>bus_control_variable</connection>
  408 + <rowlimit>1</rowlimit>
  409 + <sql>select job_code as scode, personnel_name as sname from bsth_c_personnel&#xa;where id &#x3d; &#x3f;</sql>
  410 + <outer_join>Y</outer_join>
  411 + <replace_vars>N</replace_vars>
  412 + <parameter>
  413 + <field>
  414 + <name>spy</name>
  415 + <type>Integer</type>
  416 + </field>
  417 + </parameter>
  418 + <cluster_schema/>
  419 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  420 + <xloc>491</xloc>
  421 + <yloc>60</yloc>
  422 + <draw>Y</draw>
  423 + </GUI>
  424 + </step>
  425 +
  426 + <step>
  427 + <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
  428 + <type>SelectValues</type>
  429 + <description/>
  430 + <distribute>Y</distribute>
  431 + <custom_distribution/>
  432 + <copies>1</copies>
  433 + <partitioning>
  434 + <method>none</method>
  435 + <schema_name/>
  436 + </partitioning>
  437 + <fields> <field> <name>xlmc</name>
  438 + <rename>&#x7ebf;&#x8def;</rename>
  439 + <length>-2</length>
  440 + <precision>-2</precision>
  441 + </field> <field> <name>dbbm</name>
  442 + <rename>&#x642d;&#x73ed;&#x7f16;&#x7801;</rename>
  443 + <length>-2</length>
  444 + <precision>-2</precision>
  445 + </field> <field> <name>jcode</name>
  446 + <rename>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</rename>
  447 + <length>-2</length>
  448 + <precision>-2</precision>
  449 + </field> <field> <name>jname</name>
  450 + <rename>&#x9a7e;&#x9a76;&#x5458;</rename>
  451 + <length>-2</length>
  452 + <precision>-2</precision>
  453 + </field> <field> <name>scode</name>
  454 + <rename>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</rename>
  455 + <length>-2</length>
  456 + <precision>-2</precision>
  457 + </field> <field> <name>sname</name>
  458 + <rename>&#x552e;&#x7968;&#x5458;</rename>
  459 + <length>-2</length>
  460 + <precision>-2</precision>
  461 + </field> <select_unspecified>N</select_unspecified>
  462 + </fields> <cluster_schema/>
  463 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  464 + <xloc>492</xloc>
  465 + <yloc>164</yloc>
  466 + <draw>Y</draw>
  467 + </GUI>
  468 + </step>
  469 +
  470 + <step>
  471 + <name>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</name>
  472 + <type>SortRows</type>
  473 + <description/>
  474 + <distribute>Y</distribute>
  475 + <custom_distribution/>
  476 + <copies>1</copies>
  477 + <partitioning>
  478 + <method>none</method>
  479 + <schema_name/>
  480 + </partitioning>
  481 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  482 + <prefix>out</prefix>
  483 + <sort_size>1000000</sort_size>
  484 + <free_memory/>
  485 + <compress>N</compress>
  486 + <compress_variable/>
  487 + <unique_rows>N</unique_rows>
  488 + <fields>
  489 + <field>
  490 + <name>&#x7ebf;&#x8def;</name>
  491 + <ascending>Y</ascending>
  492 + <case_sensitive>N</case_sensitive>
  493 + <presorted>N</presorted>
  494 + </field>
  495 + <field>
  496 + <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>
  497 + <ascending>Y</ascending>
  498 + <case_sensitive>N</case_sensitive>
  499 + <presorted>N</presorted>
  500 + </field>
  501 + </fields>
  502 + <cluster_schema/>
  503 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  504 + <xloc>692</xloc>
  505 + <yloc>164</yloc>
  506 + <draw>Y</draw>
  507 + </GUI>
  508 + </step>
  509 +
  510 + <step>
  511 + <name>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</name>
  512 + <type>DBLookup</type>
  513 + <description/>
  514 + <distribute>Y</distribute>
  515 + <custom_distribution/>
  516 + <copies>1</copies>
  517 + <partitioning>
  518 + <method>none</method>
  519 + <schema_name/>
  520 + </partitioning>
  521 + <connection>bus_control_variable</connection>
  522 + <cache>Y</cache>
  523 + <cache_load_all>Y</cache_load_all>
  524 + <cache_size>0</cache_size>
  525 + <lookup>
  526 + <schema/>
  527 + <table>bsth_c_line</table>
  528 + <orderby/>
  529 + <fail_on_multiple>N</fail_on_multiple>
  530 + <eat_row_on_failure>N</eat_row_on_failure>
  531 + <key>
  532 + <name>xl</name>
  533 + <field>id</field>
  534 + <condition>&#x3d;</condition>
  535 + <name2/>
  536 + </key>
  537 + <value>
  538 + <name>name</name>
  539 + <rename>xlmc</rename>
  540 + <default/>
  541 + <type>String</type>
  542 + </value>
  543 + </lookup>
  544 + <cluster_schema/>
  545 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  546 + <xloc>227</xloc>
  547 + <yloc>59</yloc>
  548 + <draw>Y</draw>
  549 + </GUI>
  550 + </step>
  551 +
  552 + <step>
  553 + <name>&#x9a7e;&#x9a76;&#x5458;&#x67e5;&#x8be2;</name>
  554 + <type>DBJoin</type>
  555 + <description/>
  556 + <distribute>Y</distribute>
  557 + <custom_distribution/>
  558 + <copies>1</copies>
  559 + <partitioning>
  560 + <method>none</method>
  561 + <schema_name/>
  562 + </partitioning>
  563 + <connection>bus_control_variable</connection>
  564 + <rowlimit>1</rowlimit>
  565 + <sql>select job_code as jcode, personnel_name as jname from bsth_c_personnel&#xa;where id &#x3d; &#x3f;</sql>
  566 + <outer_join>Y</outer_join>
  567 + <replace_vars>N</replace_vars>
  568 + <parameter>
  569 + <field>
  570 + <name>jsy</name>
  571 + <type>Integer</type>
  572 + </field>
  573 + </parameter>
  574 + <cluster_schema/>
  575 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  576 + <xloc>366</xloc>
  577 + <yloc>60</yloc>
  578 + <draw>Y</draw>
  579 + </GUI>
  580 + </step>
  581 +
  582 + <step_error_handling>
  583 + </step_error_handling>
  584 + <slave-step-copy-partition-distribution>
  585 +</slave-step-copy-partition-distribution>
  586 + <slave_transformation>N</slave_transformation>
  587 +
  588 +</transformation>
src/main/resources/datatools/ktrs/scheduleRuleDataInput.ktr
@@ -80,7 +80,7 @@ @@ -80,7 +80,7 @@
80 <created_date>2017&#x2f;01&#x2f;09 10&#x3a;10&#x3a;36.915</created_date> 80 <created_date>2017&#x2f;01&#x2f;09 10&#x3a;10&#x3a;36.915</created_date>
81 <modified_user>-</modified_user> 81 <modified_user>-</modified_user>
82 <modified_date>2017&#x2f;01&#x2f;09 10&#x3a;10&#x3a;36.915</modified_date> 82 <modified_date>2017&#x2f;01&#x2f;09 10&#x3a;10&#x3a;36.915</modified_date>
83 - <key_for_session_key/> 83 + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
84 <is_key_private>N</is_key_private> 84 <is_key_private>N</is_key_private>
85 </info> 85 </info>
86 <notepads> 86 <notepads>
@@ -276,8 +276,8 @@ @@ -276,8 +276,8 @@
276 <hop> <from>&#x62c6;&#x5206;&#x4eba;&#x5458;&#x8303;&#x56f4;</from><to>&#x62c6;&#x5206;&#x5206;&#x73ed;&#x642d;&#x73ed;&#x7f16;&#x7801;&#x5b57;&#x6bb5;</to><enabled>Y</enabled> </hop> 276 <hop> <from>&#x62c6;&#x5206;&#x4eba;&#x5458;&#x8303;&#x56f4;</from><to>&#x62c6;&#x5206;&#x5206;&#x73ed;&#x642d;&#x73ed;&#x7f16;&#x7801;&#x5b57;&#x6bb5;</to><enabled>Y</enabled> </hop>
277 <hop> <from>&#x62c6;&#x5206;&#x5206;&#x73ed;&#x642d;&#x73ed;&#x7f16;&#x7801;&#x5b57;&#x6bb5;</from><to>&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop> 277 <hop> <from>&#x62c6;&#x5206;&#x5206;&#x73ed;&#x642d;&#x73ed;&#x7f16;&#x7801;&#x5b57;&#x6bb5;</from><to>&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
278 <hop> <from>&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x67e5;&#x8be2;</from><to>&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x67e5;&#x8be2; 2</to><enabled>Y</enabled> </hop> 278 <hop> <from>&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x67e5;&#x8be2;</from><to>&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x67e5;&#x8be2; 2</to><enabled>Y</enabled> </hop>
279 - <hop> <from>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</from><to>&#x7ebf;&#x8def;&#x540d;&#x79f0;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>  
280 - <hop> <from>&#x7ebf;&#x8def;&#x540d;&#x79f0;&#x67e5;&#x8be2;</from><to>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop> 279 + <hop> <from>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</from><to>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  280 + <hop> <from>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</from><to>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
281 <hop> <from>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</from><to>&#x8f66;&#x8f86;&#x914d;&#x7f6e;id&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop> 281 <hop> <from>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</from><to>&#x8f66;&#x8f86;&#x914d;&#x7f6e;id&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
282 <hop> <from>&#x8f66;&#x8f86;&#x914d;&#x7f6e;id&#x67e5;&#x8be2;</from><to>&#x8fc7;&#x6ee4;&#x8f66;&#x8f86;&#x914d;&#x7f6e;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop> 282 <hop> <from>&#x8f66;&#x8f86;&#x914d;&#x7f6e;id&#x67e5;&#x8be2;</from><to>&#x8fc7;&#x6ee4;&#x8f66;&#x8f86;&#x914d;&#x7f6e;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
283 <hop> <from>&#x8fc7;&#x6ee4;&#x8f66;&#x8f86;&#x914d;&#x7f6e;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</from><to>&#x62c6;&#x5206;&#x8def;&#x724c;&#x8303;&#x56f4;</to><enabled>Y</enabled> </hop> 283 <hop> <from>&#x8fc7;&#x6ee4;&#x8f66;&#x8f86;&#x914d;&#x7f6e;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</from><to>&#x62c6;&#x5206;&#x8def;&#x724c;&#x8303;&#x56f4;</to><enabled>Y</enabled> </hop>
@@ -292,6 +292,245 @@ @@ -292,6 +292,245 @@
292 <hop> <from>&#x542f;&#x7528;&#x65e5;&#x671f;&#x8f6c;&#x6362;</from><to>&#x63d2;&#x5165; &#x2f; &#x66f4;&#x65b0;bsth_c_s_sr1_flat</to><enabled>Y</enabled> </hop> 292 <hop> <from>&#x542f;&#x7528;&#x65e5;&#x671f;&#x8f6c;&#x6362;</from><to>&#x63d2;&#x5165; &#x2f; &#x66f4;&#x65b0;bsth_c_s_sr1_flat</to><enabled>Y</enabled> </hop>
293 </order> 293 </order>
294 <step> 294 <step>
  295 + <name>&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x67e5;&#x8be2;</name>
  296 + <type>DBLookup</type>
  297 + <description/>
  298 + <distribute>Y</distribute>
  299 + <custom_distribution/>
  300 + <copies>1</copies>
  301 + <partitioning>
  302 + <method>none</method>
  303 + <schema_name/>
  304 + </partitioning>
  305 + <connection>bus_control_variable</connection>
  306 + <cache>Y</cache>
  307 + <cache_load_all>Y</cache_load_all>
  308 + <cache_size>0</cache_size>
  309 + <lookup>
  310 + <schema/>
  311 + <table>bsth_c_s_ecinfo</table>
  312 + <orderby/>
  313 + <fail_on_multiple>N</fail_on_multiple>
  314 + <eat_row_on_failure>N</eat_row_on_failure>
  315 + <key>
  316 + <name>xlid</name>
  317 + <field>xl</field>
  318 + <condition>&#x3d;</condition>
  319 + <name2/>
  320 + </key>
  321 + <key>
  322 + <name>dbbm1</name>
  323 + <field>dbbm</field>
  324 + <condition>&#x3d;</condition>
  325 + <name2/>
  326 + </key>
  327 + <key>
  328 + <name>isCancel</name>
  329 + <field>is_cancel</field>
  330 + <condition>&#x3d;</condition>
  331 + <name2/>
  332 + </key>
  333 + <value>
  334 + <name>id</name>
  335 + <rename>rycid1</rename>
  336 + <default/>
  337 + <type>Integer</type>
  338 + </value>
  339 + </lookup>
  340 + <cluster_schema/>
  341 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  342 + <xloc>904</xloc>
  343 + <yloc>101</yloc>
  344 + <draw>Y</draw>
  345 + </GUI>
  346 + </step>
  347 +
  348 + <step>
  349 + <name>&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x67e5;&#x8be2; 2</name>
  350 + <type>DBLookup</type>
  351 + <description/>
  352 + <distribute>Y</distribute>
  353 + <custom_distribution/>
  354 + <copies>1</copies>
  355 + <partitioning>
  356 + <method>none</method>
  357 + <schema_name/>
  358 + </partitioning>
  359 + <connection>bus_control_variable</connection>
  360 + <cache>Y</cache>
  361 + <cache_load_all>Y</cache_load_all>
  362 + <cache_size>0</cache_size>
  363 + <lookup>
  364 + <schema/>
  365 + <table>bsth_c_s_ecinfo</table>
  366 + <orderby/>
  367 + <fail_on_multiple>N</fail_on_multiple>
  368 + <eat_row_on_failure>N</eat_row_on_failure>
  369 + <key>
  370 + <name>xlid</name>
  371 + <field>xl</field>
  372 + <condition>&#x3d;</condition>
  373 + <name2/>
  374 + </key>
  375 + <key>
  376 + <name>dbbm2</name>
  377 + <field>dbbm</field>
  378 + <condition>&#x3d;</condition>
  379 + <name2/>
  380 + </key>
  381 + <key>
  382 + <name>isCancel</name>
  383 + <field>is_cancel</field>
  384 + <condition>&#x3d;</condition>
  385 + <name2/>
  386 + </key>
  387 + <value>
  388 + <name>id</name>
  389 + <rename>rycid2</rename>
  390 + <default/>
  391 + <type>Integer</type>
  392 + </value>
  393 + </lookup>
  394 + <cluster_schema/>
  395 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  396 + <xloc>778</xloc>
  397 + <yloc>103</yloc>
  398 + <draw>Y</draw>
  399 + </GUI>
  400 + </step>
  401 +
  402 + <step>
  403 + <name>&#x5206;&#x7ec4;&#x5408;&#x5e76;&#x4eba;&#x5458;&#x914d;&#x7f6e;id</name>
  404 + <type>GroupBy</type>
  405 + <description/>
  406 + <distribute>Y</distribute>
  407 + <custom_distribution/>
  408 + <copies>1</copies>
  409 + <partitioning>
  410 + <method>none</method>
  411 + <schema_name/>
  412 + </partitioning>
  413 + <all_rows>N</all_rows>
  414 + <ignore_aggregate>N</ignore_aggregate>
  415 + <field_ignore/>
  416 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  417 + <prefix>grp</prefix>
  418 + <add_linenr>N</add_linenr>
  419 + <linenr_fieldname/>
  420 + <give_back_row>N</give_back_row>
  421 + <group>
  422 + <field>
  423 + <name>xlid</name>
  424 + </field>
  425 + <field>
  426 + <name>cid</name>
  427 + </field>
  428 + <field>
  429 + <name>&#x8def;&#x724c;&#x8303;&#x56f4;</name>
  430 + </field>
  431 + <field>
  432 + <name>lpids</name>
  433 + </field>
  434 + <field>
  435 + <name>&#x8d77;&#x59cb;&#x8def;&#x724c;</name>
  436 + </field>
  437 + <field>
  438 + <name>&#x8d77;&#x59cb;&#x4eba;&#x5458;</name>
  439 + </field>
  440 + <field>
  441 + <name>&#x4eba;&#x5458;&#x8303;&#x56f4;</name>
  442 + </field>
  443 + <field>
  444 + <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  445 + </field>
  446 + <field>
  447 + <name>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</name>
  448 + </field>
  449 + <field>
  450 + <name>isCancel</name>
  451 + </field>
  452 + </group>
  453 + <fields>
  454 + <field>
  455 + <aggregate>rycids</aggregate>
  456 + <subject>rycid</subject>
  457 + <type>CONCAT_STRING</type>
  458 + <valuefield>,</valuefield>
  459 + </field>
  460 + </fields>
  461 + <cluster_schema/>
  462 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  463 + <xloc>780</xloc>
  464 + <yloc>291</yloc>
  465 + <draw>Y</draw>
  466 + </GUI>
  467 + </step>
  468 +
  469 + <step>
  470 + <name>&#x5206;&#x7ec4;&#x5408;&#x5e76;&#x8def;&#x724c;id</name>
  471 + <type>GroupBy</type>
  472 + <description/>
  473 + <distribute>Y</distribute>
  474 + <custom_distribution/>
  475 + <copies>1</copies>
  476 + <partitioning>
  477 + <method>none</method>
  478 + <schema_name/>
  479 + </partitioning>
  480 + <all_rows>N</all_rows>
  481 + <ignore_aggregate>N</ignore_aggregate>
  482 + <field_ignore/>
  483 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  484 + <prefix>grp</prefix>
  485 + <add_linenr>N</add_linenr>
  486 + <linenr_fieldname/>
  487 + <give_back_row>N</give_back_row>
  488 + <group>
  489 + <field>
  490 + <name>xlid</name>
  491 + </field>
  492 + <field>
  493 + <name>cid</name>
  494 + </field>
  495 + <field>
  496 + <name>&#x8def;&#x724c;&#x8303;&#x56f4;</name>
  497 + </field>
  498 + <field>
  499 + <name>&#x8d77;&#x59cb;&#x8def;&#x724c;</name>
  500 + </field>
  501 + <field>
  502 + <name>&#x8d77;&#x59cb;&#x4eba;&#x5458;</name>
  503 + </field>
  504 + <field>
  505 + <name>&#x4eba;&#x5458;&#x8303;&#x56f4;</name>
  506 + </field>
  507 + <field>
  508 + <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  509 + </field>
  510 + <field>
  511 + <name>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</name>
  512 + </field>
  513 + <field>
  514 + <name>isCancel</name>
  515 + </field>
  516 + </group>
  517 + <fields>
  518 + <field>
  519 + <aggregate>lpids</aggregate>
  520 + <subject>lpid</subject>
  521 + <type>CONCAT_STRING</type>
  522 + <valuefield>,</valuefield>
  523 + </field>
  524 + </fields>
  525 + <cluster_schema/>
  526 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  527 + <xloc>653</xloc>
  528 + <yloc>119</yloc>
  529 + <draw>Y</draw>
  530 + </GUI>
  531 + </step>
  532 +
  533 + <step>
295 <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name> 534 <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name>
296 <type>ExcelInput</type> 535 <type>ExcelInput</type>
297 <description/> 536 <description/>
@@ -314,11 +553,11 @@ @@ -314,11 +553,11 @@
314 <limit>0</limit> 553 <limit>0</limit>
315 <encoding/> 554 <encoding/>
316 <add_to_result_filenames>Y</add_to_result_filenames> 555 <add_to_result_filenames>Y</add_to_result_filenames>
317 - <accept_filenames>N</accept_filenames> 556 + <accept_filenames>Y</accept_filenames>
318 <accept_field>filepath_</accept_field> 557 <accept_field>filepath_</accept_field>
319 <accept_stepname>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</accept_stepname> 558 <accept_stepname>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</accept_stepname>
320 <file> 559 <file>
321 - <name>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project_code&#x2f;bsth_project&#x2f;bsth_control_etl&#x2f;&#x5bfc;&#x5165;&#x5bfc;&#x51fa;1&#x2f;&#x6392;&#x7248;&#x89c4;&#x5219;&#x4fe1;&#x606f;.xls</name> 560 + <name/>
322 <filemask/> 561 <filemask/>
323 <exclude_filemask/> 562 <exclude_filemask/>
324 <file_required>N</file_required> 563 <file_required>N</file_required>
@@ -456,8 +695,8 @@ @@ -456,8 +695,8 @@
456 </step> 695 </step>
457 696
458 <step> 697 <step>
459 - <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>  
460 - <type>GetVariable</type> 698 + <name>&#x5408;&#x5e76;&#x5206;&#x73ed;&#x4eba;&#x5458;&#x914d;&#x7f6e;id</name>
  699 + <type>ScriptValueMod</type>
461 <description/> 700 <description/>
462 <distribute>Y</distribute> 701 <distribute>Y</distribute>
463 <custom_distribution/> 702 <custom_distribution/>
@@ -466,69 +705,28 @@ @@ -466,69 +705,28 @@
466 <method>none</method> 705 <method>none</method>
467 <schema_name/> 706 <schema_name/>
468 </partitioning> 707 </partitioning>
469 - <fields>  
470 - <field>  
471 - <name>filepath_</name>  
472 - <variable>&#x24;&#x7b;filepath&#x7d;</variable> 708 + <compatible>N</compatible>
  709 + <optimizationLevel>9</optimizationLevel>
  710 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  711 + <jsScript_name>Script 1</jsScript_name>
  712 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var rycid&#x3b;&#xa;&#xa;if &#x28;rycid2 &#x3d;&#x3d; null&#x29; &#x7b;&#xa; rycid &#x3d; rycid1&#x3b;&#xa;&#x7d; else &#x7b;&#xa; rycid &#x3d; rycid1 &#x2b; &#x22;-&#x22; &#x2b; rycid2&#x3b;&#xa;&#x7d;</jsScript_script>
  713 + </jsScript> </jsScripts> <fields> <field> <name>rycid</name>
  714 + <rename>rycid</rename>
473 <type>String</type> 715 <type>String</type>
474 - <format/>  
475 - <currency/>  
476 - <decimal/>  
477 - <group/>  
478 <length>-1</length> 716 <length>-1</length>
479 <precision>-1</precision> 717 <precision>-1</precision>
480 - <trim_type>none</trim_type>  
481 - </field>  
482 - <field>  
483 - <name>erroroutputdir_</name>  
484 - <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>  
485 - <type>String</type>  
486 - <format/>  
487 - <currency/>  
488 - <decimal/>  
489 - <group/>  
490 - <length>-1</length>  
491 - <precision>-1</precision>  
492 - <trim_type>none</trim_type>  
493 - </field>  
494 - </fields>  
495 - <cluster_schema/>  
496 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
497 - <xloc>53</xloc>  
498 - <yloc>23</yloc>  
499 - <draw>Y</draw>  
500 - </GUI>  
501 - </step>  
502 -  
503 - <step>  
504 - <name>&#x62c6;&#x5206;&#x8def;&#x724c;&#x8303;&#x56f4;</name>  
505 - <type>SplitFieldToRows3</type>  
506 - <description/>  
507 - <distribute>Y</distribute>  
508 - <custom_distribution/>  
509 - <copies>1</copies>  
510 - <partitioning>  
511 - <method>none</method>  
512 - <schema_name/>  
513 - </partitioning>  
514 - <splitfield>&#x8def;&#x724c;&#x8303;&#x56f4;</splitfield>  
515 - <delimiter>,</delimiter>  
516 - <newfield>lpname</newfield>  
517 - <rownum>N</rownum>  
518 - <rownum_field/>  
519 - <resetrownumber>Y</resetrownumber>  
520 - <delimiter_is_regex>N</delimiter_is_regex>  
521 - <cluster_schema/> 718 + <replace>N</replace>
  719 + </field> </fields> <cluster_schema/>
522 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 720 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
523 - <xloc>364</xloc>  
524 - <yloc>259</yloc> 721 + <xloc>917</xloc>
  722 + <yloc>201</yloc>
525 <draw>Y</draw> 723 <draw>Y</draw>
526 </GUI> 724 </GUI>
527 </step> 725 </step>
528 726
529 <step> 727 <step>
530 - <name>&#x7ebf;&#x8def;&#x540d;&#x79f0;&#x67e5;&#x8be2;</name>  
531 - <type>DBLookup</type> 728 + <name>&#x542f;&#x7528;&#x65e5;&#x671f;&#x8f6c;&#x6362;</name>
  729 + <type>SelectValues</type>
532 <description/> 730 <description/>
533 <distribute>Y</distribute> 731 <distribute>Y</distribute>
534 <custom_distribution/> 732 <custom_distribution/>
@@ -537,39 +735,26 @@ @@ -537,39 +735,26 @@
537 <method>none</method> 735 <method>none</method>
538 <schema_name/> 736 <schema_name/>
539 </partitioning> 737 </partitioning>
540 - <connection>bus_control_variable</connection>  
541 - <cache>Y</cache>  
542 - <cache_load_all>Y</cache_load_all>  
543 - <cache_size>0</cache_size>  
544 - <lookup>  
545 - <schema/>  
546 - <table>bsth_c_line</table>  
547 - <orderby/>  
548 - <fail_on_multiple>N</fail_on_multiple>  
549 - <eat_row_on_failure>N</eat_row_on_failure>  
550 - <key>  
551 - <name>&#x7ebf;&#x8def;</name>  
552 - <field>name</field>  
553 - <condition>&#x3d;</condition>  
554 - <name2/>  
555 - </key>  
556 - <key>  
557 - <name>isCancel</name>  
558 - <field>destroy</field>  
559 - <condition>&#x3d;</condition>  
560 - <name2/>  
561 - </key>  
562 - <value>  
563 - <name>id</name>  
564 - <rename>xlid</rename>  
565 - <default/>  
566 - <type>Integer</type>  
567 - </value>  
568 - </lookup>  
569 - <cluster_schema/> 738 + <fields> <select_unspecified>N</select_unspecified>
  739 + <meta> <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  740 + <rename>&#x542f;&#x7528;&#x65e5;&#x671f;</rename>
  741 + <type>Timestamp</type>
  742 + <length>-2</length>
  743 + <precision>-2</precision>
  744 + <conversion_mask>yyyy-MM-dd</conversion_mask>
  745 + <date_format_lenient>false</date_format_lenient>
  746 + <date_format_locale/>
  747 + <date_format_timezone/>
  748 + <lenient_string_to_number>false</lenient_string_to_number>
  749 + <encoding/>
  750 + <decimal_symbol/>
  751 + <grouping_symbol/>
  752 + <currency_symbol/>
  753 + <storage_type/>
  754 + </meta> </fields> <cluster_schema/>
570 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 755 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
571 - <xloc>359</xloc>  
572 - <yloc>110</yloc> 756 + <xloc>777</xloc>
  757 + <yloc>368</yloc>
573 <draw>Y</draw> 758 <draw>Y</draw>
574 </GUI> 759 </GUI>
575 </step> 760 </step>
@@ -608,8 +793,8 @@ @@ -608,8 +793,8 @@
608 </step> 793 </step>
609 794
610 <step> 795 <step>
611 - <name>&#x8def;&#x724c;id&#x67e5;&#x8be2;</name>  
612 - <type>DBLookup</type> 796 + <name>&#x62c6;&#x5206;&#x4eba;&#x5458;&#x8303;&#x56f4;</name>
  797 + <type>SplitFieldToRows3</type>
613 <description/> 798 <description/>
614 <distribute>Y</distribute> 799 <distribute>Y</distribute>
615 <custom_distribution/> 800 <custom_distribution/>
@@ -618,52 +803,24 @@ @@ -618,52 +803,24 @@
618 <method>none</method> 803 <method>none</method>
619 <schema_name/> 804 <schema_name/>
620 </partitioning> 805 </partitioning>
621 - <connection>bus_control_variable</connection>  
622 - <cache>Y</cache>  
623 - <cache_load_all>Y</cache_load_all>  
624 - <cache_size>0</cache_size>  
625 - <lookup>  
626 - <schema/>  
627 - <table>bsth_c_s_gbi</table>  
628 - <orderby/>  
629 - <fail_on_multiple>N</fail_on_multiple>  
630 - <eat_row_on_failure>N</eat_row_on_failure>  
631 - <key>  
632 - <name>xlid</name>  
633 - <field>xl</field>  
634 - <condition>&#x3d;</condition>  
635 - <name2/>  
636 - </key>  
637 - <key>  
638 - <name>lpname</name>  
639 - <field>lp_name</field>  
640 - <condition>&#x3d;</condition>  
641 - <name2/>  
642 - </key>  
643 - <key>  
644 - <name>isCancel</name>  
645 - <field>is_cancel</field>  
646 - <condition>&#x3d;</condition>  
647 - <name2/>  
648 - </key>  
649 - <value>  
650 - <name>id</name>  
651 - <rename>lpid</rename>  
652 - <default/>  
653 - <type>Integer</type>  
654 - </value>  
655 - </lookup> 806 + <splitfield>&#x4eba;&#x5458;&#x8303;&#x56f4;</splitfield>
  807 + <delimiter>,</delimiter>
  808 + <newfield>dbbm</newfield>
  809 + <rownum>N</rownum>
  810 + <rownum_field/>
  811 + <resetrownumber>Y</resetrownumber>
  812 + <delimiter_is_regex>N</delimiter_is_regex>
656 <cluster_schema/> 813 <cluster_schema/>
657 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 814 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
658 - <xloc>516</xloc>  
659 - <yloc>21</yloc> 815 + <xloc>777</xloc>
  816 + <yloc>22</yloc>
660 <draw>Y</draw> 817 <draw>Y</draw>
661 </GUI> 818 </GUI>
662 </step> 819 </step>
663 820
664 <step> 821 <step>
665 - <name>&#x5206;&#x7ec4;&#x5408;&#x5e76;&#x8def;&#x724c;id</name>  
666 - <type>GroupBy</type> 822 + <name>&#x62c6;&#x5206;&#x5206;&#x73ed;&#x642d;&#x73ed;&#x7f16;&#x7801;&#x5b57;&#x6bb5;</name>
  823 + <type>FieldSplitter</type>
667 <description/> 824 <description/>
668 <distribute>Y</distribute> 825 <distribute>Y</distribute>
669 <custom_distribution/> 826 <custom_distribution/>
@@ -672,55 +829,65 @@ @@ -672,55 +829,65 @@
672 <method>none</method> 829 <method>none</method>
673 <schema_name/> 830 <schema_name/>
674 </partitioning> 831 </partitioning>
675 - <all_rows>N</all_rows>  
676 - <ignore_aggregate>N</ignore_aggregate>  
677 - <field_ignore/>  
678 - <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>  
679 - <prefix>grp</prefix>  
680 - <add_linenr>N</add_linenr>  
681 - <linenr_fieldname/>  
682 - <give_back_row>N</give_back_row>  
683 - <group>  
684 - <field>  
685 - <name>xlid</name>  
686 - </field>  
687 - <field>  
688 - <name>cid</name>  
689 - </field>  
690 - <field>  
691 - <name>&#x8def;&#x724c;&#x8303;&#x56f4;</name>  
692 - </field>  
693 - <field>  
694 - <name>&#x8d77;&#x59cb;&#x8def;&#x724c;</name>  
695 - </field>  
696 - <field>  
697 - <name>&#x8d77;&#x59cb;&#x4eba;&#x5458;</name>  
698 - </field>  
699 - <field>  
700 - <name>&#x4eba;&#x5458;&#x8303;&#x56f4;</name>  
701 - </field>  
702 - <field>  
703 - <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>  
704 - </field>  
705 - <field>  
706 - <name>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</name>  
707 - </field>  
708 - <field>  
709 - <name>isCancel</name>  
710 - </field>  
711 - </group>  
712 - <fields>  
713 - <field>  
714 - <aggregate>lpids</aggregate>  
715 - <subject>lpid</subject>  
716 - <type>CONCAT_STRING</type>  
717 - <valuefield>,</valuefield>  
718 - </field>  
719 - </fields> 832 + <splitfield>dbbm</splitfield>
  833 + <delimiter>-</delimiter>
  834 + <enclosure/>
  835 + <fields> <field> <name>dbbm1</name>
  836 + <id/>
  837 + <idrem>N</idrem>
  838 + <type>String</type>
  839 + <format/>
  840 + <group/>
  841 + <decimal/>
  842 + <currency/>
  843 + <length>-1</length>
  844 + <precision>-1</precision>
  845 + <nullif/>
  846 + <ifnull/>
  847 + <trimtype>none</trimtype>
  848 + </field> <field> <name>dbbm2</name>
  849 + <id/>
  850 + <idrem>N</idrem>
  851 + <type>String</type>
  852 + <format/>
  853 + <group/>
  854 + <decimal/>
  855 + <currency/>
  856 + <length>-1</length>
  857 + <precision>-1</precision>
  858 + <nullif/>
  859 + <ifnull/>
  860 + <trimtype>none</trimtype>
  861 + </field> </fields> <cluster_schema/>
  862 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  863 + <xloc>901</xloc>
  864 + <yloc>22</yloc>
  865 + <draw>Y</draw>
  866 + </GUI>
  867 + </step>
  868 +
  869 + <step>
  870 + <name>&#x62c6;&#x5206;&#x8def;&#x724c;&#x8303;&#x56f4;</name>
  871 + <type>SplitFieldToRows3</type>
  872 + <description/>
  873 + <distribute>Y</distribute>
  874 + <custom_distribution/>
  875 + <copies>1</copies>
  876 + <partitioning>
  877 + <method>none</method>
  878 + <schema_name/>
  879 + </partitioning>
  880 + <splitfield>&#x8def;&#x724c;&#x8303;&#x56f4;</splitfield>
  881 + <delimiter>,</delimiter>
  882 + <newfield>lpname</newfield>
  883 + <rownum>N</rownum>
  884 + <rownum_field/>
  885 + <resetrownumber>Y</resetrownumber>
  886 + <delimiter_is_regex>N</delimiter_is_regex>
720 <cluster_schema/> 887 <cluster_schema/>
721 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 888 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
722 - <xloc>653</xloc>  
723 - <yloc>119</yloc> 889 + <xloc>364</xloc>
  890 + <yloc>259</yloc>
724 <draw>Y</draw> 891 <draw>Y</draw>
725 </GUI> 892 </GUI>
726 </step> 893 </step>
@@ -808,8 +975,8 @@ @@ -808,8 +975,8 @@
808 </step> 975 </step>
809 976
810 <step> 977 <step>
811 - <name>&#x62c6;&#x5206;&#x4eba;&#x5458;&#x8303;&#x56f4;</name>  
812 - <type>SplitFieldToRows3</type> 978 + <name>&#x6392;&#x5e8f;&#x8bb0;&#x5f55; 2</name>
  979 + <type>SortRows</type>
813 <description/> 980 <description/>
814 <distribute>Y</distribute> 981 <distribute>Y</distribute>
815 <custom_distribution/> 982 <custom_distribution/>
@@ -818,24 +985,86 @@ @@ -818,24 +985,86 @@
818 <method>none</method> 985 <method>none</method>
819 <schema_name/> 986 <schema_name/>
820 </partitioning> 987 </partitioning>
821 - <splitfield>&#x4eba;&#x5458;&#x8303;&#x56f4;</splitfield>  
822 - <delimiter>,</delimiter>  
823 - <newfield>dbbm</newfield>  
824 - <rownum>N</rownum>  
825 - <rownum_field/>  
826 - <resetrownumber>Y</resetrownumber>  
827 - <delimiter_is_regex>N</delimiter_is_regex> 988 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  989 + <prefix>out</prefix>
  990 + <sort_size>1000000</sort_size>
  991 + <free_memory/>
  992 + <compress>N</compress>
  993 + <compress_variable/>
  994 + <unique_rows>N</unique_rows>
  995 + <fields>
  996 + <field>
  997 + <name>xlid</name>
  998 + <ascending>Y</ascending>
  999 + <case_sensitive>N</case_sensitive>
  1000 + <presorted>N</presorted>
  1001 + </field>
  1002 + <field>
  1003 + <name>cid</name>
  1004 + <ascending>Y</ascending>
  1005 + <case_sensitive>N</case_sensitive>
  1006 + <presorted>N</presorted>
  1007 + </field>
  1008 + <field>
  1009 + <name>&#x8def;&#x724c;&#x8303;&#x56f4;</name>
  1010 + <ascending>Y</ascending>
  1011 + <case_sensitive>N</case_sensitive>
  1012 + <presorted>N</presorted>
  1013 + </field>
  1014 + <field>
  1015 + <name>lpids</name>
  1016 + <ascending>Y</ascending>
  1017 + <case_sensitive>N</case_sensitive>
  1018 + <presorted>N</presorted>
  1019 + </field>
  1020 + <field>
  1021 + <name>&#x8d77;&#x59cb;&#x8def;&#x724c;</name>
  1022 + <ascending>Y</ascending>
  1023 + <case_sensitive>N</case_sensitive>
  1024 + <presorted>N</presorted>
  1025 + </field>
  1026 + <field>
  1027 + <name>&#x8d77;&#x59cb;&#x4eba;&#x5458;</name>
  1028 + <ascending>Y</ascending>
  1029 + <case_sensitive>N</case_sensitive>
  1030 + <presorted>N</presorted>
  1031 + </field>
  1032 + <field>
  1033 + <name>&#x4eba;&#x5458;&#x8303;&#x56f4;</name>
  1034 + <ascending>Y</ascending>
  1035 + <case_sensitive>N</case_sensitive>
  1036 + <presorted>N</presorted>
  1037 + </field>
  1038 + <field>
  1039 + <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  1040 + <ascending>Y</ascending>
  1041 + <case_sensitive>N</case_sensitive>
  1042 + <presorted>N</presorted>
  1043 + </field>
  1044 + <field>
  1045 + <name>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</name>
  1046 + <ascending>Y</ascending>
  1047 + <case_sensitive>N</case_sensitive>
  1048 + <presorted>N</presorted>
  1049 + </field>
  1050 + <field>
  1051 + <name>isCancel</name>
  1052 + <ascending>Y</ascending>
  1053 + <case_sensitive>N</case_sensitive>
  1054 + <presorted>N</presorted>
  1055 + </field>
  1056 + </fields>
828 <cluster_schema/> 1057 <cluster_schema/>
829 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1058 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
830 - <xloc>777</xloc>  
831 - <yloc>22</yloc> 1059 + <xloc>919</xloc>
  1060 + <yloc>289</yloc>
832 <draw>Y</draw> 1061 <draw>Y</draw>
833 </GUI> 1062 </GUI>
834 </step> 1063 </step>
835 1064
836 <step> 1065 <step>
837 - <name>&#x62c6;&#x5206;&#x5206;&#x73ed;&#x642d;&#x73ed;&#x7f16;&#x7801;&#x5b57;&#x6bb5;</name>  
838 - <type>FieldSplitter</type> 1066 + <name>&#x63d2;&#x5165; &#x2f; &#x66f4;&#x65b0;bsth_c_s_sr1_flat</name>
  1067 + <type>InsertUpdate</type>
839 <description/> 1068 <description/>
840 <distribute>Y</distribute> 1069 <distribute>Y</distribute>
841 <custom_distribution/> 1070 <custom_distribution/>
@@ -844,45 +1073,91 @@ @@ -844,45 +1073,91 @@
844 <method>none</method> 1073 <method>none</method>
845 <schema_name/> 1074 <schema_name/>
846 </partitioning> 1075 </partitioning>
847 - <splitfield>dbbm</splitfield>  
848 - <delimiter>-</delimiter>  
849 - <enclosure/>  
850 - <fields> <field> <name>dbbm1</name>  
851 - <id/>  
852 - <idrem>N</idrem>  
853 - <type>String</type>  
854 - <format/>  
855 - <group/>  
856 - <decimal/>  
857 - <currency/>  
858 - <length>-1</length>  
859 - <precision>-1</precision>  
860 - <nullif/>  
861 - <ifnull/>  
862 - <trimtype>none</trimtype>  
863 - </field> <field> <name>dbbm2</name>  
864 - <id/>  
865 - <idrem>N</idrem>  
866 - <type>String</type>  
867 - <format/>  
868 - <group/>  
869 - <decimal/>  
870 - <currency/>  
871 - <length>-1</length>  
872 - <precision>-1</precision>  
873 - <nullif/>  
874 - <ifnull/>  
875 - <trimtype>none</trimtype>  
876 - </field> </fields> <cluster_schema/> 1076 + <connection>bus_control_variable</connection>
  1077 + <commit>100</commit>
  1078 + <update_bypassed>N</update_bypassed>
  1079 + <lookup>
  1080 + <schema/>
  1081 + <table>bsth_c_s_sr1_flat</table>
  1082 + <key>
  1083 + <name>xlid</name>
  1084 + <field>xl</field>
  1085 + <condition>&#x3d;</condition>
  1086 + <name2/>
  1087 + </key>
  1088 + <key>
  1089 + <name>cid</name>
  1090 + <field>car_config_info</field>
  1091 + <condition>&#x3d;</condition>
  1092 + <name2/>
  1093 + </key>
  1094 + <key>
  1095 + <name>&#x8def;&#x724c;&#x8303;&#x56f4;</name>
  1096 + <field>lp_names</field>
  1097 + <condition>&#x3d;</condition>
  1098 + <name2/>
  1099 + </key>
  1100 + <value>
  1101 + <name>xl</name>
  1102 + <rename>xlid</rename>
  1103 + <update>Y</update>
  1104 + </value>
  1105 + <value>
  1106 + <name>car_config_info</name>
  1107 + <rename>cid</rename>
  1108 + <update>Y</update>
  1109 + </value>
  1110 + <value>
  1111 + <name>lp_names</name>
  1112 + <rename>&#x8def;&#x724c;&#x8303;&#x56f4;</rename>
  1113 + <update>Y</update>
  1114 + </value>
  1115 + <value>
  1116 + <name>lp_ids</name>
  1117 + <rename>lpids</rename>
  1118 + <update>Y</update>
  1119 + </value>
  1120 + <value>
  1121 + <name>lp_start</name>
  1122 + <rename>&#x8d77;&#x59cb;&#x8def;&#x724c;</rename>
  1123 + <update>Y</update>
  1124 + </value>
  1125 + <value>
  1126 + <name>ry_start</name>
  1127 + <rename>&#x8d77;&#x59cb;&#x4eba;&#x5458;</rename>
  1128 + <update>Y</update>
  1129 + </value>
  1130 + <value>
  1131 + <name>ry_dbbms</name>
  1132 + <rename>&#x4eba;&#x5458;&#x8303;&#x56f4;</rename>
  1133 + <update>Y</update>
  1134 + </value>
  1135 + <value>
  1136 + <name>qyrq</name>
  1137 + <rename>&#x542f;&#x7528;&#x65e5;&#x671f;</rename>
  1138 + <update>Y</update>
  1139 + </value>
  1140 + <value>
  1141 + <name>ry_config_ids</name>
  1142 + <rename>rycids</rename>
  1143 + <update>Y</update>
  1144 + </value>
  1145 + <value>
  1146 + <name>fbgs</name>
  1147 + <rename>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</rename>
  1148 + <update>Y</update>
  1149 + </value>
  1150 + </lookup>
  1151 + <cluster_schema/>
877 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1152 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
878 - <xloc>901</xloc>  
879 - <yloc>22</yloc> 1153 + <xloc>532</xloc>
  1154 + <yloc>297</yloc>
880 <draw>Y</draw> 1155 <draw>Y</draw>
881 </GUI> 1156 </GUI>
882 </step> 1157 </step>
883 1158
884 <step> 1159 <step>
885 - <name>&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x67e5;&#x8be2;</name> 1160 + <name>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</name>
886 <type>DBLookup</type> 1161 <type>DBLookup</type>
887 <description/> 1162 <description/>
888 <distribute>Y</distribute> 1163 <distribute>Y</distribute>
@@ -898,45 +1173,84 @@ @@ -898,45 +1173,84 @@
898 <cache_size>0</cache_size> 1173 <cache_size>0</cache_size>
899 <lookup> 1174 <lookup>
900 <schema/> 1175 <schema/>
901 - <table>bsth_c_s_ecinfo</table> 1176 + <table>bsth_c_line</table>
902 <orderby/> 1177 <orderby/>
903 <fail_on_multiple>N</fail_on_multiple> 1178 <fail_on_multiple>N</fail_on_multiple>
904 <eat_row_on_failure>N</eat_row_on_failure> 1179 <eat_row_on_failure>N</eat_row_on_failure>
905 <key> 1180 <key>
906 - <name>xlid</name>  
907 - <field>xl</field>  
908 - <condition>&#x3d;</condition>  
909 - <name2/>  
910 - </key>  
911 - <key>  
912 - <name>dbbm1</name>  
913 - <field>dbbm</field> 1181 + <name>&#x7ebf;&#x8def;</name>
  1182 + <field>name</field>
914 <condition>&#x3d;</condition> 1183 <condition>&#x3d;</condition>
915 <name2/> 1184 <name2/>
916 </key> 1185 </key>
917 <key> 1186 <key>
918 <name>isCancel</name> 1187 <name>isCancel</name>
919 - <field>is_cancel</field> 1188 + <field>destroy</field>
920 <condition>&#x3d;</condition> 1189 <condition>&#x3d;</condition>
921 <name2/> 1190 <name2/>
922 </key> 1191 </key>
923 <value> 1192 <value>
924 <name>id</name> 1193 <name>id</name>
925 - <rename>rycid1</rename> 1194 + <rename>xlid</rename>
926 <default/> 1195 <default/>
927 <type>Integer</type> 1196 <type>Integer</type>
928 </value> 1197 </value>
929 </lookup> 1198 </lookup>
930 <cluster_schema/> 1199 <cluster_schema/>
931 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1200 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
932 - <xloc>904</xloc>  
933 - <yloc>101</yloc> 1201 + <xloc>359</xloc>
  1202 + <yloc>110</yloc>
  1203 + <draw>Y</draw>
  1204 + </GUI>
  1205 + </step>
  1206 +
  1207 + <step>
  1208 + <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>
  1209 + <type>GetVariable</type>
  1210 + <description/>
  1211 + <distribute>Y</distribute>
  1212 + <custom_distribution/>
  1213 + <copies>1</copies>
  1214 + <partitioning>
  1215 + <method>none</method>
  1216 + <schema_name/>
  1217 + </partitioning>
  1218 + <fields>
  1219 + <field>
  1220 + <name>filepath_</name>
  1221 + <variable>&#x24;&#x7b;filepath&#x7d;</variable>
  1222 + <type>String</type>
  1223 + <format/>
  1224 + <currency/>
  1225 + <decimal/>
  1226 + <group/>
  1227 + <length>-1</length>
  1228 + <precision>-1</precision>
  1229 + <trim_type>none</trim_type>
  1230 + </field>
  1231 + <field>
  1232 + <name>erroroutputdir_</name>
  1233 + <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
  1234 + <type>String</type>
  1235 + <format/>
  1236 + <currency/>
  1237 + <decimal/>
  1238 + <group/>
  1239 + <length>-1</length>
  1240 + <precision>-1</precision>
  1241 + <trim_type>none</trim_type>
  1242 + </field>
  1243 + </fields>
  1244 + <cluster_schema/>
  1245 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1246 + <xloc>53</xloc>
  1247 + <yloc>23</yloc>
934 <draw>Y</draw> 1248 <draw>Y</draw>
935 </GUI> 1249 </GUI>
936 </step> 1250 </step>
937 1251
938 <step> 1252 <step>
939 - <name>&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x67e5;&#x8be2; 2</name> 1253 + <name>&#x8def;&#x724c;id&#x67e5;&#x8be2;</name>
940 <type>DBLookup</type> 1254 <type>DBLookup</type>
941 <description/> 1255 <description/>
942 <distribute>Y</distribute> 1256 <distribute>Y</distribute>
@@ -952,7 +1266,7 @@ @@ -952,7 +1266,7 @@
952 <cache_size>0</cache_size> 1266 <cache_size>0</cache_size>
953 <lookup> 1267 <lookup>
954 <schema/> 1268 <schema/>
955 - <table>bsth_c_s_ecinfo</table> 1269 + <table>bsth_c_s_gbi</table>
956 <orderby/> 1270 <orderby/>
957 <fail_on_multiple>N</fail_on_multiple> 1271 <fail_on_multiple>N</fail_on_multiple>
958 <eat_row_on_failure>N</eat_row_on_failure> 1272 <eat_row_on_failure>N</eat_row_on_failure>
@@ -963,8 +1277,8 @@ @@ -963,8 +1277,8 @@
963 <name2/> 1277 <name2/>
964 </key> 1278 </key>
965 <key> 1279 <key>
966 - <name>dbbm2</name>  
967 - <field>dbbm</field> 1280 + <name>lpname</name>
  1281 + <field>lp_name</field>
968 <condition>&#x3d;</condition> 1282 <condition>&#x3d;</condition>
969 <name2/> 1283 <name2/>
970 </key> 1284 </key>
@@ -976,15 +1290,15 @@ @@ -976,15 +1290,15 @@
976 </key> 1290 </key>
977 <value> 1291 <value>
978 <name>id</name> 1292 <name>id</name>
979 - <rename>rycid2</rename> 1293 + <rename>lpid</rename>
980 <default/> 1294 <default/>
981 <type>Integer</type> 1295 <type>Integer</type>
982 </value> 1296 </value>
983 </lookup> 1297 </lookup>
984 <cluster_schema/> 1298 <cluster_schema/>
985 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1299 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
986 - <xloc>778</xloc>  
987 - <yloc>103</yloc> 1300 + <xloc>516</xloc>
  1301 + <yloc>21</yloc>
988 <draw>Y</draw> 1302 <draw>Y</draw>
989 </GUI> 1303 </GUI>
990 </step> 1304 </step>
@@ -1001,9 +1315,9 @@ @@ -1001,9 +1315,9 @@
1001 <schema_name/> 1315 <schema_name/>
1002 </partitioning> 1316 </partitioning>
1003 <connection>bus_control_variable</connection> 1317 <connection>bus_control_variable</connection>
1004 - <rowlimit>0</rowlimit> 1318 + <rowlimit>1</rowlimit>
1005 <sql>select t1.id as cid from bsth_c_s_ccinfo t1 left join bsth_c_cars t2 on t1.cl &#x3d; t2.id&#xa;where t1.xl &#x3d; &#x3f; and t2.inside_code &#x3d; &#x3f; and t1.is_cancel &#x3d; &#x3f;</sql> 1319 <sql>select t1.id as cid from bsth_c_s_ccinfo t1 left join bsth_c_cars t2 on t1.cl &#x3d; t2.id&#xa;where t1.xl &#x3d; &#x3f; and t2.inside_code &#x3d; &#x3f; and t1.is_cancel &#x3d; &#x3f;</sql>
1006 - <outer_join>N</outer_join> 1320 + <outer_join>Y</outer_join>
1007 <replace_vars>N</replace_vars> 1321 <replace_vars>N</replace_vars>
1008 <parameter> 1322 <parameter>
1009 <field> 1323 <field>
@@ -1028,254 +1342,49 @@ @@ -1028,254 +1342,49 @@
1028 </step> 1342 </step>
1029 1343
1030 <step> 1344 <step>
1031 - <name>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>  
1032 - <type>FilterRows</type>  
1033 - <description/>  
1034 - <distribute>Y</distribute>  
1035 - <custom_distribution/>  
1036 - <copies>1</copies>  
1037 - <partitioning>  
1038 - <method>none</method>  
1039 - <schema_name/>  
1040 - </partitioning>  
1041 -<send_true_to>&#x8f66;&#x8f86;&#x914d;&#x7f6e;id&#x67e5;&#x8be2;</send_true_to>  
1042 -<send_false_to/>  
1043 - <compare>  
1044 -<condition>  
1045 - <negated>N</negated>  
1046 - <leftvalue>xlid</leftvalue>  
1047 - <function>IS NOT NULL</function>  
1048 - <rightvalue/>  
1049 - </condition>  
1050 - </compare>  
1051 - <cluster_schema/>  
1052 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
1053 - <xloc>203</xloc>  
1054 - <yloc>110</yloc>  
1055 - <draw>Y</draw>  
1056 - </GUI>  
1057 - </step>  
1058 -  
1059 - <step>  
1060 - <name>&#x8fc7;&#x6ee4;&#x8f66;&#x8f86;&#x914d;&#x7f6e;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>  
1061 - <type>FilterRows</type>  
1062 - <description/>  
1063 - <distribute>Y</distribute>  
1064 - <custom_distribution/>  
1065 - <copies>1</copies>  
1066 - <partitioning>  
1067 - <method>none</method>  
1068 - <schema_name/>  
1069 - </partitioning>  
1070 -<send_true_to>&#x62c6;&#x5206;&#x8def;&#x724c;&#x8303;&#x56f4;</send_true_to>  
1071 -<send_false_to/>  
1072 - <compare>  
1073 -<condition>  
1074 - <negated>N</negated>  
1075 - <leftvalue>cid</leftvalue>  
1076 - <function>IS NOT NULL</function>  
1077 - <rightvalue/>  
1078 - </condition>  
1079 - </compare>  
1080 - <cluster_schema/>  
1081 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
1082 - <xloc>208</xloc>  
1083 - <yloc>182</yloc>  
1084 - <draw>Y</draw>  
1085 - </GUI>  
1086 - </step>  
1087 -  
1088 - <step>  
1089 - <name>&#x8fc7;&#x6ee4;&#x8def;&#x724c;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>  
1090 - <type>FilterRows</type>  
1091 - <description/>  
1092 - <distribute>Y</distribute>  
1093 - <custom_distribution/>  
1094 - <copies>1</copies>  
1095 - <partitioning>  
1096 - <method>none</method>  
1097 - <schema_name/>  
1098 - </partitioning>  
1099 -<send_true_to>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</send_true_to>  
1100 -<send_false_to/>  
1101 - <compare>  
1102 -<condition>  
1103 - <negated>N</negated>  
1104 - <leftvalue>lpid</leftvalue>  
1105 - <function>IS NOT NULL</function>  
1106 - <rightvalue/>  
1107 - </condition>  
1108 - </compare>  
1109 - <cluster_schema/>  
1110 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
1111 - <xloc>653</xloc>  
1112 - <yloc>23</yloc>  
1113 - <draw>Y</draw>  
1114 - </GUI>  
1115 - </step>  
1116 -  
1117 - <step>  
1118 <name>&#x8fc7;&#x6ee4;&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name> 1345 <name>&#x8fc7;&#x6ee4;&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>
1119 <type>FilterRows</type> 1346 <type>FilterRows</type>
1120 <description/> 1347 <description/>
1121 <distribute>Y</distribute> 1348 <distribute>Y</distribute>
1122 <custom_distribution/> 1349 <custom_distribution/>
1123 - <copies>1</copies>  
1124 - <partitioning>  
1125 - <method>none</method>  
1126 - <schema_name/>  
1127 - </partitioning>  
1128 -<send_true_to/>  
1129 -<send_false_to/>  
1130 - <compare>  
1131 -<condition>  
1132 - <negated>N</negated>  
1133 - <conditions>  
1134 - <condition>  
1135 - <negated>N</negated>  
1136 - <leftvalue>rycid1</leftvalue>  
1137 - <function>IS NOT NULL</function>  
1138 - <rightvalue/>  
1139 - </condition>  
1140 - <condition>  
1141 - <negated>N</negated>  
1142 - <operator>OR</operator>  
1143 - <leftvalue>rycid2</leftvalue>  
1144 - <function>IS NOT NULL</function>  
1145 - <rightvalue/>  
1146 - </condition>  
1147 - </conditions>  
1148 - </condition>  
1149 - </compare>  
1150 - <cluster_schema/>  
1151 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
1152 - <xloc>776</xloc>  
1153 - <yloc>204</yloc>  
1154 - <draw>Y</draw>  
1155 - </GUI>  
1156 - </step>  
1157 -  
1158 - <step>  
1159 - <name>&#x5408;&#x5e76;&#x5206;&#x73ed;&#x4eba;&#x5458;&#x914d;&#x7f6e;id</name>  
1160 - <type>ScriptValueMod</type>  
1161 - <description/>  
1162 - <distribute>Y</distribute>  
1163 - <custom_distribution/>  
1164 - <copies>1</copies>  
1165 - <partitioning>  
1166 - <method>none</method>  
1167 - <schema_name/>  
1168 - </partitioning>  
1169 - <compatible>N</compatible>  
1170 - <optimizationLevel>9</optimizationLevel>  
1171 - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>  
1172 - <jsScript_name>Script 1</jsScript_name>  
1173 - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var rycid&#x3b;&#xa;&#xa;if &#x28;rycid2 &#x3d;&#x3d; null&#x29; &#x7b;&#xa; rycid &#x3d; rycid1&#x3b;&#xa;&#x7d; else &#x7b;&#xa; rycid &#x3d; rycid1 &#x2b; &#x22;-&#x22; &#x2b; rycid2&#x3b;&#xa;&#x7d;</jsScript_script>  
1174 - </jsScript> </jsScripts> <fields> <field> <name>rycid</name>  
1175 - <rename>rycid</rename>  
1176 - <type>String</type>  
1177 - <length>-1</length>  
1178 - <precision>-1</precision>  
1179 - <replace>N</replace>  
1180 - </field> </fields> <cluster_schema/>  
1181 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
1182 - <xloc>917</xloc>  
1183 - <yloc>201</yloc>  
1184 - <draw>Y</draw>  
1185 - </GUI>  
1186 - </step>  
1187 -  
1188 - <step>  
1189 - <name>&#x6392;&#x5e8f;&#x8bb0;&#x5f55; 2</name>  
1190 - <type>SortRows</type>  
1191 - <description/>  
1192 - <distribute>Y</distribute>  
1193 - <custom_distribution/>  
1194 - <copies>1</copies>  
1195 - <partitioning>  
1196 - <method>none</method>  
1197 - <schema_name/>  
1198 - </partitioning>  
1199 - <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>  
1200 - <prefix>out</prefix>  
1201 - <sort_size>1000000</sort_size>  
1202 - <free_memory/>  
1203 - <compress>N</compress>  
1204 - <compress_variable/>  
1205 - <unique_rows>N</unique_rows>  
1206 - <fields>  
1207 - <field>  
1208 - <name>xlid</name>  
1209 - <ascending>Y</ascending>  
1210 - <case_sensitive>N</case_sensitive>  
1211 - <presorted>N</presorted>  
1212 - </field>  
1213 - <field>  
1214 - <name>cid</name>  
1215 - <ascending>Y</ascending>  
1216 - <case_sensitive>N</case_sensitive>  
1217 - <presorted>N</presorted>  
1218 - </field>  
1219 - <field>  
1220 - <name>&#x8def;&#x724c;&#x8303;&#x56f4;</name>  
1221 - <ascending>Y</ascending>  
1222 - <case_sensitive>N</case_sensitive>  
1223 - <presorted>N</presorted>  
1224 - </field>  
1225 - <field>  
1226 - <name>lpids</name>  
1227 - <ascending>Y</ascending>  
1228 - <case_sensitive>N</case_sensitive>  
1229 - <presorted>N</presorted>  
1230 - </field>  
1231 - <field>  
1232 - <name>&#x8d77;&#x59cb;&#x8def;&#x724c;</name>  
1233 - <ascending>Y</ascending>  
1234 - <case_sensitive>N</case_sensitive>  
1235 - <presorted>N</presorted>  
1236 - </field>  
1237 - <field>  
1238 - <name>&#x8d77;&#x59cb;&#x4eba;&#x5458;</name>  
1239 - <ascending>Y</ascending>  
1240 - <case_sensitive>N</case_sensitive>  
1241 - <presorted>N</presorted>  
1242 - </field>  
1243 - <field>  
1244 - <name>&#x4eba;&#x5458;&#x8303;&#x56f4;</name>  
1245 - <ascending>Y</ascending>  
1246 - <case_sensitive>N</case_sensitive>  
1247 - <presorted>N</presorted>  
1248 - </field>  
1249 - <field>  
1250 - <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>  
1251 - <ascending>Y</ascending>  
1252 - <case_sensitive>N</case_sensitive>  
1253 - <presorted>N</presorted>  
1254 - </field>  
1255 - <field>  
1256 - <name>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</name>  
1257 - <ascending>Y</ascending>  
1258 - <case_sensitive>N</case_sensitive>  
1259 - <presorted>N</presorted>  
1260 - </field>  
1261 - <field>  
1262 - <name>isCancel</name>  
1263 - <ascending>Y</ascending>  
1264 - <case_sensitive>N</case_sensitive>  
1265 - <presorted>N</presorted>  
1266 - </field>  
1267 - </fields> 1350 + <copies>1</copies>
  1351 + <partitioning>
  1352 + <method>none</method>
  1353 + <schema_name/>
  1354 + </partitioning>
  1355 +<send_true_to/>
  1356 +<send_false_to/>
  1357 + <compare>
  1358 +<condition>
  1359 + <negated>N</negated>
  1360 + <conditions>
  1361 + <condition>
  1362 + <negated>N</negated>
  1363 + <leftvalue>rycid1</leftvalue>
  1364 + <function>IS NOT NULL</function>
  1365 + <rightvalue/>
  1366 + </condition>
  1367 + <condition>
  1368 + <negated>N</negated>
  1369 + <operator>OR</operator>
  1370 + <leftvalue>rycid2</leftvalue>
  1371 + <function>IS NOT NULL</function>
  1372 + <rightvalue/>
  1373 + </condition>
  1374 + </conditions>
  1375 + </condition>
  1376 + </compare>
1268 <cluster_schema/> 1377 <cluster_schema/>
1269 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1378 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1270 - <xloc>919</xloc>  
1271 - <yloc>289</yloc> 1379 + <xloc>776</xloc>
  1380 + <yloc>204</yloc>
1272 <draw>Y</draw> 1381 <draw>Y</draw>
1273 </GUI> 1382 </GUI>
1274 </step> 1383 </step>
1275 1384
1276 <step> 1385 <step>
1277 - <name>&#x5206;&#x7ec4;&#x5408;&#x5e76;&#x4eba;&#x5458;&#x914d;&#x7f6e;id</name>  
1278 - <type>GroupBy</type> 1386 + <name>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>
  1387 + <type>FilterRows</type>
1279 <description/> 1388 <description/>
1280 <distribute>Y</distribute> 1389 <distribute>Y</distribute>
1281 <custom_distribution/> 1390 <custom_distribution/>
@@ -1284,65 +1393,27 @@ @@ -1284,65 +1393,27 @@
1284 <method>none</method> 1393 <method>none</method>
1285 <schema_name/> 1394 <schema_name/>
1286 </partitioning> 1395 </partitioning>
1287 - <all_rows>N</all_rows>  
1288 - <ignore_aggregate>N</ignore_aggregate>  
1289 - <field_ignore/>  
1290 - <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>  
1291 - <prefix>grp</prefix>  
1292 - <add_linenr>N</add_linenr>  
1293 - <linenr_fieldname/>  
1294 - <give_back_row>N</give_back_row>  
1295 - <group>  
1296 - <field>  
1297 - <name>xlid</name>  
1298 - </field>  
1299 - <field>  
1300 - <name>cid</name>  
1301 - </field>  
1302 - <field>  
1303 - <name>&#x8def;&#x724c;&#x8303;&#x56f4;</name>  
1304 - </field>  
1305 - <field>  
1306 - <name>lpids</name>  
1307 - </field>  
1308 - <field>  
1309 - <name>&#x8d77;&#x59cb;&#x8def;&#x724c;</name>  
1310 - </field>  
1311 - <field>  
1312 - <name>&#x8d77;&#x59cb;&#x4eba;&#x5458;</name>  
1313 - </field>  
1314 - <field>  
1315 - <name>&#x4eba;&#x5458;&#x8303;&#x56f4;</name>  
1316 - </field>  
1317 - <field>  
1318 - <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>  
1319 - </field>  
1320 - <field>  
1321 - <name>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</name>  
1322 - </field>  
1323 - <field>  
1324 - <name>isCancel</name>  
1325 - </field>  
1326 - </group>  
1327 - <fields>  
1328 - <field>  
1329 - <aggregate>rycids</aggregate>  
1330 - <subject>rycid</subject>  
1331 - <type>CONCAT_STRING</type>  
1332 - <valuefield>,</valuefield>  
1333 - </field>  
1334 - </fields> 1396 +<send_true_to>&#x8f66;&#x8f86;&#x914d;&#x7f6e;id&#x67e5;&#x8be2;</send_true_to>
  1397 +<send_false_to/>
  1398 + <compare>
  1399 +<condition>
  1400 + <negated>N</negated>
  1401 + <leftvalue>xlid</leftvalue>
  1402 + <function>IS NOT NULL</function>
  1403 + <rightvalue/>
  1404 + </condition>
  1405 + </compare>
1335 <cluster_schema/> 1406 <cluster_schema/>
1336 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1407 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1337 - <xloc>780</xloc>  
1338 - <yloc>291</yloc> 1408 + <xloc>203</xloc>
  1409 + <yloc>110</yloc>
1339 <draw>Y</draw> 1410 <draw>Y</draw>
1340 </GUI> 1411 </GUI>
1341 </step> 1412 </step>
1342 1413
1343 <step> 1414 <step>
1344 - <name>&#x63d2;&#x5165; &#x2f; &#x66f4;&#x65b0;bsth_c_s_sr1_flat</name>  
1345 - <type>InsertUpdate</type> 1415 + <name>&#x8fc7;&#x6ee4;&#x8def;&#x724c;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>
  1416 + <type>FilterRows</type>
1346 <description/> 1417 <description/>
1347 <distribute>Y</distribute> 1418 <distribute>Y</distribute>
1348 <custom_distribution/> 1419 <custom_distribution/>
@@ -1351,85 +1422,49 @@ @@ -1351,85 +1422,49 @@
1351 <method>none</method> 1422 <method>none</method>
1352 <schema_name/> 1423 <schema_name/>
1353 </partitioning> 1424 </partitioning>
1354 - <connection>bus_control_variable</connection>  
1355 - <commit>100</commit>  
1356 - <update_bypassed>N</update_bypassed>  
1357 - <lookup>  
1358 - <schema/>  
1359 - <table>bsth_c_s_sr1_flat</table>  
1360 - <key>  
1361 - <name>xlid</name>  
1362 - <field>xl</field>  
1363 - <condition>&#x3d;</condition>  
1364 - <name2/>  
1365 - </key>  
1366 - <key>  
1367 - <name>cid</name>  
1368 - <field>car_config_info</field>  
1369 - <condition>&#x3d;</condition>  
1370 - <name2/>  
1371 - </key>  
1372 - <key>  
1373 - <name>&#x8def;&#x724c;&#x8303;&#x56f4;</name>  
1374 - <field>lp_names</field>  
1375 - <condition>&#x3d;</condition>  
1376 - <name2/>  
1377 - </key>  
1378 - <value>  
1379 - <name>xl</name>  
1380 - <rename>xlid</rename>  
1381 - <update>Y</update>  
1382 - </value>  
1383 - <value>  
1384 - <name>car_config_info</name>  
1385 - <rename>cid</rename>  
1386 - <update>Y</update>  
1387 - </value>  
1388 - <value>  
1389 - <name>lp_names</name>  
1390 - <rename>&#x8def;&#x724c;&#x8303;&#x56f4;</rename>  
1391 - <update>Y</update>  
1392 - </value>  
1393 - <value>  
1394 - <name>lp_ids</name>  
1395 - <rename>lpids</rename>  
1396 - <update>Y</update>  
1397 - </value>  
1398 - <value>  
1399 - <name>lp_start</name>  
1400 - <rename>&#x8d77;&#x59cb;&#x8def;&#x724c;</rename>  
1401 - <update>Y</update>  
1402 - </value>  
1403 - <value>  
1404 - <name>ry_start</name>  
1405 - <rename>&#x8d77;&#x59cb;&#x4eba;&#x5458;</rename>  
1406 - <update>Y</update>  
1407 - </value>  
1408 - <value>  
1409 - <name>ry_dbbms</name>  
1410 - <rename>&#x4eba;&#x5458;&#x8303;&#x56f4;</rename>  
1411 - <update>Y</update>  
1412 - </value>  
1413 - <value>  
1414 - <name>qyrq</name>  
1415 - <rename>&#x542f;&#x7528;&#x65e5;&#x671f;</rename>  
1416 - <update>Y</update>  
1417 - </value>  
1418 - <value>  
1419 - <name>ry_config_ids</name>  
1420 - <rename>rycids</rename>  
1421 - <update>Y</update>  
1422 - </value>  
1423 - <value>  
1424 - <name>fbgs</name>  
1425 - <rename>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</rename>  
1426 - <update>Y</update>  
1427 - </value>  
1428 - </lookup> 1425 +<send_true_to>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</send_true_to>
  1426 +<send_false_to/>
  1427 + <compare>
  1428 +<condition>
  1429 + <negated>N</negated>
  1430 + <leftvalue>lpid</leftvalue>
  1431 + <function>IS NOT NULL</function>
  1432 + <rightvalue/>
  1433 + </condition>
  1434 + </compare>
1429 <cluster_schema/> 1435 <cluster_schema/>
1430 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1436 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1431 - <xloc>532</xloc>  
1432 - <yloc>297</yloc> 1437 + <xloc>653</xloc>
  1438 + <yloc>23</yloc>
  1439 + <draw>Y</draw>
  1440 + </GUI>
  1441 + </step>
  1442 +
  1443 + <step>
  1444 + <name>&#x8fc7;&#x6ee4;&#x8f66;&#x8f86;&#x914d;&#x7f6e;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>
  1445 + <type>FilterRows</type>
  1446 + <description/>
  1447 + <distribute>Y</distribute>
  1448 + <custom_distribution/>
  1449 + <copies>1</copies>
  1450 + <partitioning>
  1451 + <method>none</method>
  1452 + <schema_name/>
  1453 + </partitioning>
  1454 +<send_true_to>&#x62c6;&#x5206;&#x8def;&#x724c;&#x8303;&#x56f4;</send_true_to>
  1455 +<send_false_to/>
  1456 + <compare>
  1457 +<condition>
  1458 + <negated>N</negated>
  1459 + <leftvalue>cid</leftvalue>
  1460 + <function>IS NOT NULL</function>
  1461 + <rightvalue/>
  1462 + </condition>
  1463 + </compare>
  1464 + <cluster_schema/>
  1465 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1466 + <xloc>208</xloc>
  1467 + <yloc>182</yloc>
1433 <draw>Y</draw> 1468 <draw>Y</draw>
1434 </GUI> 1469 </GUI>
1435 </step> 1470 </step>
@@ -1512,7 +1547,7 @@ @@ -1512,7 +1547,7 @@
1512 </field> 1547 </field>
1513 <field> 1548 <field>
1514 <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name> 1549 <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
1515 - <type>String</type> 1550 + <type>Timestamp</type>
1516 <format/> 1551 <format/>
1517 </field> 1552 </field>
1518 <field> 1553 <field>
@@ -1576,41 +1611,6 @@ @@ -1576,41 +1611,6 @@
1576 </GUI> 1611 </GUI>
1577 </step> 1612 </step>
1578 1613
1579 - <step>  
1580 - <name>&#x542f;&#x7528;&#x65e5;&#x671f;&#x8f6c;&#x6362;</name>  
1581 - <type>SelectValues</type>  
1582 - <description/>  
1583 - <distribute>Y</distribute>  
1584 - <custom_distribution/>  
1585 - <copies>1</copies>  
1586 - <partitioning>  
1587 - <method>none</method>  
1588 - <schema_name/>  
1589 - </partitioning>  
1590 - <fields> <select_unspecified>N</select_unspecified>  
1591 - <meta> <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>  
1592 - <rename>&#x542f;&#x7528;&#x65e5;&#x671f;</rename>  
1593 - <type>Timestamp</type>  
1594 - <length>-2</length>  
1595 - <precision>-2</precision>  
1596 - <conversion_mask>yyyy-MM-dd</conversion_mask>  
1597 - <date_format_lenient>false</date_format_lenient>  
1598 - <date_format_locale/>  
1599 - <date_format_timezone/>  
1600 - <lenient_string_to_number>false</lenient_string_to_number>  
1601 - <encoding/>  
1602 - <decimal_symbol/>  
1603 - <grouping_symbol/>  
1604 - <currency_symbol/>  
1605 - <storage_type/>  
1606 - </meta> </fields> <cluster_schema/>  
1607 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
1608 - <xloc>777</xloc>  
1609 - <yloc>368</yloc>  
1610 - <draw>Y</draw>  
1611 - </GUI>  
1612 - </step>  
1613 -  
1614 <step_error_handling> 1614 <step_error_handling>
1615 <error> 1615 <error>
1616 <source_step>&#x63d2;&#x5165; &#x2f; &#x66f4;&#x65b0;bsth_c_s_sr1_flat</source_step> 1616 <source_step>&#x63d2;&#x5165; &#x2f; &#x66f4;&#x65b0;bsth_c_s_sr1_flat</source_step>
@@ -1629,4 +1629,4 @@ @@ -1629,4 +1629,4 @@
1629 </slave-step-copy-partition-distribution> 1629 </slave-step-copy-partition-distribution>
1630 <slave_transformation>N</slave_transformation> 1630 <slave_transformation>N</slave_transformation>
1631 1631
1632 -</transformation> 1632 +</transformation>
1633 \ No newline at end of file 1633 \ No newline at end of file
src/main/resources/static/pages/forms/mould/statisticsDaily_.xls
No preview for this file type
src/main/resources/static/pages/forms/statement/lbStatuAnaly.html
@@ -257,8 +257,19 @@ @@ -257,8 +257,19 @@
257 } 257 }
258 258
259 $("#export").on("click", function(){ 259 $("#export").on("click", function(){
260 - $get('/pcpc/workDaily',{line:line,date:date,type:'export'},function(result){  
261 - window.open("/downloadFile/download?fileName=营运服务日报表"+moment(date).format("YYYYMMDD")); 260 + var params = {};
  261 + params['line'] = line;
  262 + params['startDate'] = startDate;
  263 + params['endDate'] = endDate;
  264 + params['model'] = model;
  265 + params['times'] = times;
  266 + params['company'] = company;
  267 + params['subCompany'] = subCompany;
  268 + params['type'] = "export";
  269 + $get('/busInterval/lbStatuAnaly', params, function(result){
  270 + window.open("/downloadFile/download?fileName=烂班情况分析表"
  271 + + moment(startDate).format("YYYYMMDD"))
  272 + +"-"+ moment(endDate).format("YYYYMMDD");
262 }); 273 });
263 }); 274 });
264 275
src/main/resources/static/pages/scheduleApp/module/common/prj-common-globalservice.js
@@ -220,6 +220,22 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;BusConfigService_g&#39;, [&#39;$resource&#39;, functi @@ -220,6 +220,22 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;BusConfigService_g&#39;, [&#39;$resource&#39;, functi
220 method: 'POST' 220 method: 'POST'
221 } 221 }
222 } 222 }
  223 + ),
  224 + dataTools: $resource(
  225 + '/cci/:type',
  226 + {},
  227 + {
  228 + dataExport: {
  229 + method: 'GET',
  230 + responseType: "arraybuffer",
  231 + params: {
  232 + type: "exportFile"
  233 + },
  234 + transformResponse: function(data, headers){
  235 + return {data : data};
  236 + }
  237 + }
  238 + }
223 ) 239 )
224 }; 240 };
225 }]); 241 }]);
@@ -287,6 +303,22 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;EmployeeConfigService_g&#39;, [&#39;$resource&#39;, f @@ -287,6 +303,22 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;EmployeeConfigService_g&#39;, [&#39;$resource&#39;, f
287 method: 'GET' 303 method: 'GET'
288 } 304 }
289 } 305 }
  306 + ),
  307 + dataTools: $resource(
  308 + '/eci/:type',
  309 + {},
  310 + {
  311 + dataExport: {
  312 + method: 'GET',
  313 + responseType: "arraybuffer",
  314 + params: {
  315 + type: "exportFile"
  316 + },
  317 + transformResponse: function(data, headers){
  318 + return {data : data};
  319 + }
  320 + }
  321 + }
290 ) 322 )
291 }; 323 };
292 }]); 324 }]);
src/main/resources/static/pages/scheduleApp/module/core/busConfig/index.html
@@ -45,12 +45,12 @@ @@ -45,12 +45,12 @@
45 导入excel 45 导入excel
46 </a> 46 </a>
47 </li> 47 </li>
48 - <!--<li>-->  
49 - <!--<a href="javascript:" class="tool-action">-->  
50 - <!--<i class="fa fa-file-excel-o"></i>-->  
51 - <!--导出excel-->  
52 - <!--</a>-->  
53 - <!--</li>--> 48 + <li>
  49 + <a href="javascript:" class="tool-action" ng-click="ctrl.exportData()">
  50 + <i class="fa fa-file-excel-o"></i>
  51 + 导出excel
  52 + </a>
  53 + </li>
54 <!--<li class="divider"></li>--> 54 <!--<li class="divider"></li>-->
55 <!--<li>--> 55 <!--<li>-->
56 <!--<a href="javascript:" class="tool-action">--> 56 <!--<a href="javascript:" class="tool-action">-->
src/main/resources/static/pages/scheduleApp/module/core/busConfig/module.js
@@ -52,6 +52,14 @@ angular.module(&#39;ScheduleApp&#39;).factory( @@ -52,6 +52,14 @@ angular.module(&#39;ScheduleApp&#39;).factory(
52 content: [], 52 content: [],
53 uiNumber: 1 53 uiNumber: 1
54 }; 54 };
  55 + },
  56 +
  57 + /**
  58 + * 数据导出。
  59 + * @returns {*|Function|promise|n}
  60 + */
  61 + dataExport: function() {
  62 + return service.dataTools.dataExport().$promise;
55 } 63 }
56 64
57 }; 65 };
@@ -65,7 +73,8 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -65,7 +73,8 @@ angular.module(&#39;ScheduleApp&#39;).controller(
65 'BusConfigService', 73 'BusConfigService',
66 '$state', 74 '$state',
67 '$uibModal', 75 '$uibModal',
68 - function(busConfigService, $state, $uibModal) { 76 + 'FileDownload_g',
  77 + function(busConfigService, $state, $uibModal, fileDownload) {
69 var self = this; 78 var self = this;
70 79
71 // 切换到form状态 80 // 切换到form状态
@@ -99,6 +108,18 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -99,6 +108,18 @@ angular.module(&#39;ScheduleApp&#39;).controller(
99 } 108 }
100 ); 109 );
101 }; 110 };
  111 +
  112 + // 导出excel
  113 + self.exportData = function() {
  114 + busConfigService.dataExport().then(
  115 + function(result) {
  116 + fileDownload.downloadFile(result.data, "application/octet-stream", "车辆配置信息.xls");
  117 + },
  118 + function(result) {
  119 + console.log("exportData failed:" + result);
  120 + }
  121 + );
  122 + };
102 } 123 }
103 ] 124 ]
104 ); 125 );
@@ -118,7 +139,7 @@ angular.module(&#39;ScheduleApp&#39;).controller(&#39;BusConfigToolsCtrl&#39;, [&#39;$modalInstance&#39; @@ -118,7 +139,7 @@ angular.module(&#39;ScheduleApp&#39;).controller(&#39;BusConfigToolsCtrl&#39;, [&#39;$modalInstance&#39;
118 139
119 // 上传文件组件 140 // 上传文件组件
120 self.uploader = new FileUploader({ 141 self.uploader = new FileUploader({
121 - url: "/cci/dataImport", 142 + url: "/cci/uploadAndImportFile",
122 filters: [] // 用于过滤文件,比如只允许导入excel 143 filters: [] // 用于过滤文件,比如只允许导入excel
123 }); 144 });
124 self.uploader.onAfterAddingFile = function(fileItem) 145 self.uploader.onAfterAddingFile = function(fileItem)
src/main/resources/static/pages/scheduleApp/module/core/busConfig/service.js
@@ -34,6 +34,22 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;BusConfigService_g&#39;, [&#39;$resource&#39;, functi @@ -34,6 +34,22 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;BusConfigService_g&#39;, [&#39;$resource&#39;, functi
34 method: 'POST' 34 method: 'POST'
35 } 35 }
36 } 36 }
  37 + ),
  38 + dataTools: $resource(
  39 + '/cci/:type',
  40 + {},
  41 + {
  42 + dataExport: {
  43 + method: 'GET',
  44 + responseType: "arraybuffer",
  45 + params: {
  46 + type: "exportFile"
  47 + },
  48 + transformResponse: function(data, headers){
  49 + return {data : data};
  50 + }
  51 + }
  52 + }
37 ) 53 )
38 }; 54 };
39 }]); 55 }]);
40 \ No newline at end of file 56 \ No newline at end of file
src/main/resources/static/pages/scheduleApp/module/core/employeeConfig/index.html
@@ -45,12 +45,12 @@ @@ -45,12 +45,12 @@
45 导入excel 45 导入excel
46 </a> 46 </a>
47 </li> 47 </li>
48 - <!--<li>-->  
49 - <!--<a href="javascript:" class="tool-action">-->  
50 - <!--<i class="fa fa-file-excel-o"></i>-->  
51 - <!--导出excel-->  
52 - <!--</a>-->  
53 - <!--</li>--> 48 + <li>
  49 + <a href="javascript:" class="tool-action" ng-click="ctrl.exportData()">
  50 + <i class="fa fa-file-excel-o"></i>
  51 + 导出excel
  52 + </a>
  53 + </li>
54 <!--<li class="divider"></li>--> 54 <!--<li class="divider"></li>-->
55 <!--<li>--> 55 <!--<li>-->
56 <!--<a href="javascript:" class="tool-action">--> 56 <!--<a href="javascript:" class="tool-action">-->
src/main/resources/static/pages/scheduleApp/module/core/employeeConfig/module.js
@@ -52,6 +52,14 @@ angular.module(&#39;ScheduleApp&#39;).factory( @@ -52,6 +52,14 @@ angular.module(&#39;ScheduleApp&#39;).factory(
52 content: [], 52 content: [],
53 uiNumber: 1 53 uiNumber: 1
54 }; 54 };
  55 + },
  56 +
  57 + /**
  58 + * 数据导出。
  59 + * @returns {*|Function|promise|n}
  60 + */
  61 + dataExport: function() {
  62 + return service.dataTools.dataExport().$promise;
55 } 63 }
56 64
57 }; 65 };
@@ -66,7 +74,8 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -66,7 +74,8 @@ angular.module(&#39;ScheduleApp&#39;).controller(
66 'EmployeeConfigService', 74 'EmployeeConfigService',
67 '$state', 75 '$state',
68 '$uibModal', 76 '$uibModal',
69 - function(service, $state, $uibModal) { 77 + 'FileDownload_g',
  78 + function(service, $state, $uibModal, fileDownload) {
70 var self = this; 79 var self = this;
71 80
72 // 切换到form状态 81 // 切换到form状态
@@ -100,6 +109,18 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -100,6 +109,18 @@ angular.module(&#39;ScheduleApp&#39;).controller(
100 } 109 }
101 ); 110 );
102 }; 111 };
  112 +
  113 + // 导出excel
  114 + self.exportData = function() {
  115 + service.dataExport().then(
  116 + function(result) {
  117 + fileDownload.downloadFile(result.data, "application/octet-stream", "人员配置信息.xls");
  118 + },
  119 + function(result) {
  120 + console.log("exportData failed:" + result);
  121 + }
  122 + );
  123 + };
103 } 124 }
104 ] 125 ]
105 ); 126 );
@@ -119,7 +140,7 @@ angular.module(&#39;ScheduleApp&#39;).controller(&#39;EmployeeConfigToolsCtrl&#39;, [&#39;$modalInst @@ -119,7 +140,7 @@ angular.module(&#39;ScheduleApp&#39;).controller(&#39;EmployeeConfigToolsCtrl&#39;, [&#39;$modalInst
119 140
120 // 上传文件组件 141 // 上传文件组件
121 self.uploader = new FileUploader({ 142 self.uploader = new FileUploader({
122 - url: "/eci/dataImport", 143 + url: "/eci/uploadAndImportFile",
123 filters: [] // 用于过滤文件,比如只允许导入excel 144 filters: [] // 用于过滤文件,比如只允许导入excel
124 }); 145 });
125 self.uploader.onAfterAddingFile = function(fileItem) 146 self.uploader.onAfterAddingFile = function(fileItem)
src/main/resources/static/pages/scheduleApp/module/core/employeeConfig/service.js
@@ -46,6 +46,22 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;EmployeeConfigService_g&#39;, [&#39;$resource&#39;, f @@ -46,6 +46,22 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;EmployeeConfigService_g&#39;, [&#39;$resource&#39;, f
46 method: 'GET' 46 method: 'GET'
47 } 47 }
48 } 48 }
  49 + ),
  50 + dataTools: $resource(
  51 + '/eci/:type',
  52 + {},
  53 + {
  54 + dataExport: {
  55 + method: 'GET',
  56 + responseType: "arraybuffer",
  57 + params: {
  58 + type: "exportFile"
  59 + },
  60 + transformResponse: function(data, headers){
  61 + return {data : data};
  62 + }
  63 + }
  64 + }
49 ) 65 )
50 }; 66 };
51 }]); 67 }]);
52 \ No newline at end of file 68 \ No newline at end of file
src/main/resources/static/real_control_v2/css/ct_table.css
@@ -27,6 +27,7 @@ @@ -27,6 +27,7 @@
27 27
28 .ct_table>.ct_table_head dl dt { 28 .ct_table>.ct_table_head dl dt {
29 font-weight: normal; 29 font-weight: normal;
  30 + font-size: 12px;
30 } 31 }
31 32
32 .ct_table>.ct_table_body { 33 .ct_table>.ct_table_body {
@@ -65,7 +66,7 @@ @@ -65,7 +66,7 @@
65 } 66 }
66 67
67 .ct_table_wrap { 68 .ct_table_wrap {
68 - border: 1px solid #e6e6e6; 69 + /*border: 1px solid #e6e6e6;*/
69 border-left: 0; 70 border-left: 0;
70 } 71 }
71 72
src/main/resources/static/real_control_v2/css/home.css
  1 +.ct_table.home-gps-table>.ct_table_head dl dt{
  2 + font-size: 12px;
  3 +}
1 #main-tab-content>.home-panel, #main-tab-content>.home-panel>#home-main-content>li { 4 #main-tab-content>.home-panel, #main-tab-content>.home-panel>#home-main-content>li {
2 height: 100%; 5 height: 100%;
3 } 6 }
@@ -121,19 +124,16 @@ @@ -121,19 +124,16 @@
121 124
122 .data-wrap .data-title span.data-title-text { 125 .data-wrap .data-title span.data-title-text {
123 display: inline-block; 126 display: inline-block;
124 - color: white;  
125 padding: 0 8px; 127 padding: 0 8px;
126 - border-radius: 0 8px 8px 0; 128 + font-weight: 600;
127 } 129 }
128 130
129 .data-wrap.up .data-title span.data-title-text { 131 .data-wrap.up .data-title span.data-title-text {
130 - background: #5e96d2;  
131 - /*background-image: -webkit-linear-gradient(top, #5e96d2, #5788bb);*/ 132 + color: #3e50b3;
132 } 133 }
133 134
134 .data-wrap.down .data-title span.data-title-text { 135 .data-wrap.down .data-title span.data-title-text {
135 - background: #d66868;  
136 - /*background-image: -webkit-linear-gradient(top, #d66868, #bf6363);*/ 136 + color: #c94f21;
137 } 137 }
138 138
139 .data-wrap .data-body { 139 .data-wrap .data-body {
@@ -278,4 +278,24 @@ span.signal-state-speed-limit{ @@ -278,4 +278,24 @@ span.signal-state-speed-limit{
278 color: #4dc24d; 278 color: #4dc24d;
279 font-size: 14px; 279 font-size: 14px;
280 margin-left: 5px; 280 margin-left: 5px;
  281 +}
  282 +
  283 +.home-rb-explain-icon{
  284 + position: absolute;
  285 + right: 25px;
  286 + top: -5px;
  287 +}
  288 +
  289 +.qtip.qtip-home-rb{
  290 + max-width: 380px;
  291 + width: 300px;
  292 +}
  293 +
  294 +.qtip-home-rb .uk-list{
  295 + font-size: 13px;
  296 + margin-bottom: 0;
  297 +}
  298 +
  299 +.qtip-home-rb .uk-list li{
  300 + padding: 4px 2px;
281 } 301 }
282 \ No newline at end of file 302 \ No newline at end of file
src/main/resources/static/real_control_v2/css/main.css
@@ -121,9 +121,10 @@ svg.line-chart { @@ -121,9 +121,10 @@ svg.line-chart {
121 121
122 svg.line-chart circle.station_circle { 122 svg.line-chart circle.station_circle {
123 fill: #5e96d2; 123 fill: #5e96d2;
124 - r: 6; 124 + r: 5.5;
125 stroke: rgb(253, 253, 253); 125 stroke: rgb(253, 253, 253);
126 stroke-width: 3; 126 stroke-width: 3;
  127 + Pointer-events: none;
127 } 128 }
128 129
129 svg.line-chart circle.station_circle.down { 130 svg.line-chart circle.station_circle.down {
@@ -131,8 +132,9 @@ svg.line-chart circle.station_circle.down { @@ -131,8 +132,9 @@ svg.line-chart circle.station_circle.down {
131 } 132 }
132 133
133 svg.line-chart path.station_link { 134 svg.line-chart path.station_link {
134 - stroke-width: 5.4px; 135 + stroke-width: 3.5px;
135 stroke: #5E96D2; 136 stroke: #5E96D2;
  137 + Pointer-events: none;
136 } 138 }
137 139
138 svg.line-chart path.station_link.down { 140 svg.line-chart path.station_link.down {
@@ -149,6 +151,7 @@ svg.line-chart text.station_text { @@ -149,6 +151,7 @@ svg.line-chart text.station_text {
149 fill: #3e3e3e; 151 fill: #3e3e3e;
150 letter-spacing: -.2px; 152 letter-spacing: -.2px;
151 text-shadow: 0 0 2px #dadada; 153 text-shadow: 0 0 2px #dadada;
  154 + Pointer-events: none;
152 } 155 }
153 156
154 svg.line-chart text.station_text.up { 157 svg.line-chart text.station_text.up {
src/main/resources/static/real_control_v2/fragments/home/layout.html
@@ -13,6 +13,9 @@ @@ -13,6 +13,9 @@
13 <li {{if i==0}}class="uk-active"{{/if}}><a> {{t}}</a></li> 13 <li {{if i==0}}class="uk-active"{{/if}}><a> {{t}}</a></li>
14 {{/each}} 14 {{/each}}
15 </ul> 15 </ul>
  16 + <div class="home-rb-explain-icon uk-icon-hover">
  17 + <i class="uk-icon-question-circle"></i>
  18 + </div>
16 </div> 19 </div>
17 </script> 20 </script>
18 21
@@ -32,4 +35,12 @@ @@ -32,4 +35,12 @@
32 {{/each}} 35 {{/each}}
33 </script> 36 </script>
34 37
  38 + <script id="home-rb-explain-help-temp" type="text/html">
  39 + <ul class="uk-list">
  40 + <li>场外车辆,距离线路超过100米即为越界</li>
  41 + <li>超速以线路标准限速为准,为空则默认60</li>
  42 + <li>有任务时,连续2分钟无信号即为掉线</li>
  43 + <li>无任务时,连续10分钟无信号则已离线</li>
  44 + </ul>
  45 + </script>
35 </div> 46 </div>
src/main/resources/static/real_control_v2/fragments/home/line_panel.html
@@ -32,9 +32,9 @@ @@ -32,9 +32,9 @@
32 <dd> 32 <dd>
33 {{if abnormalStatus != null}} 33 {{if abnormalStatus != null}}
34 {{if abnormalStatus == 'outBounds'}} 34 {{if abnormalStatus == 'outBounds'}}
35 - <span class="signal-state-outbounds">越界</span> 35 + <span class="signal-state-outbounds">越界</span>
36 {{else if abnormalStatus == 'overspeed'}} 36 {{else if abnormalStatus == 'overspeed'}}
37 - <span class="signal-state-speed-limit">超速</span> 37 + <span class="signal-state-speed-limit">超速</span>
38 {{/if}} 38 {{/if}}
39 {{/if}} 39 {{/if}}
40 40
src/main/resources/static/real_control_v2/fragments/line_schedule/sch_table.html
@@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@
7 {{else}} 7 {{else}}
8 下行/{{line.endStationName}} 8 下行/{{line.endStationName}}
9 {{/if}} 9 {{/if}}
10 - <i class="uk-icon-question-circle"></i> 10 + <i class="uk-icon-question-circle uk-icon-hover"></i>
11 <div class="fixed_legend"> 11 <div class="fixed_legend">
12 <div> 12 <div>
13 <span class="tl-xxfc">消息发出</span> 13 <span class="tl-xxfc">消息发出</span>
src/main/resources/static/real_control_v2/js/data/data_basic.js
@@ -161,14 +161,14 @@ var gb_data_basic = (function () { @@ -161,14 +161,14 @@ var gb_data_basic = (function () {
161 //是否是环线 161 //是否是环线
162 isLoopLine: function (lineCode) { 162 isLoopLine: function (lineCode) {
163 var data = gb_common.groupBy(stationRoutes[lineCode], 'directions'); 163 var data = gb_common.groupBy(stationRoutes[lineCode], 'directions');
164 - //如果上行起终点名称相同,并且距离50米内 164 + //如果上行起终点距离50米内 并且下行只有2个站点
165 var len = data[0].length; 165 var len = data[0].length;
166 - if(len > 0){ 166 + if(len > 0 && data[1].length == 2){
167 var first = data[0][0], 167 var first = data[0][0],
168 end = data[0][len - 1]; 168 end = data[0][len - 1];
169 169
170 - if(first.stationName != end.stationName)  
171 - return false; 170 + /*if(first.stationName != end.stationName)
  171 + return false;*/
172 172
173 var fPoint = {latitude: first.station.gLaty, longitude: first.station.gLonx} 173 var fPoint = {latitude: first.station.gLaty, longitude: first.station.gLonx}
174 ,ePoint = {latitude: end.station.gLaty, longitude: end.station.gLonx}; 174 ,ePoint = {latitude: end.station.gLaty, longitude: end.station.gLonx};
src/main/resources/static/real_control_v2/js/home/context_menu.js
@@ -37,7 +37,7 @@ var gb_home_context_menu = (function() { @@ -37,7 +37,7 @@ var gb_home_context_menu = (function() {
37 else 37 else
38 notify_err('发送失败,原因参考【指令下发记录】'); 38 notify_err('发送失败,原因参考【指令下发记录】');
39 }); 39 });
40 - } 40 + };
41 41
42 // send phrase 42 // send phrase
43 var sendPhrase = function() { 43 var sendPhrase = function() {
@@ -59,7 +59,7 @@ var gb_home_context_menu = (function() { @@ -59,7 +59,7 @@ var gb_home_context_menu = (function() {
59 notify_err_form('发送短语消息失败', f); 59 notify_err_form('发送短语消息失败', f);
60 }); 60 });
61 }); 61 });
62 - } 62 + };
63 63
64 //send phrase multiple 64 //send phrase multiple
65 var sendPhraseMulti = function() { 65 var sendPhraseMulti = function() {
@@ -100,7 +100,7 @@ var gb_home_context_menu = (function() { @@ -100,7 +100,7 @@ var gb_home_context_menu = (function() {
100 showMultiSendModal(nbbmArr, data.text); 100 showMultiSendModal(nbbmArr, data.text);
101 }, 200); 101 }, 200);
102 }); 102 });
103 - } 103 + };
104 104
105 // multi send animation modal 105 // multi send animation modal
106 var showMultiSendModal = function(nbbmArray, text) { 106 var showMultiSendModal = function(nbbmArray, text) {
@@ -136,7 +136,7 @@ var gb_home_context_menu = (function() { @@ -136,7 +136,7 @@ var gb_home_context_menu = (function() {
136 f(); 136 f();
137 }); 137 });
138 }(); 138 }();
139 - } 139 + };
140 140
141 var state_up_0 = function() { 141 var state_up_0 = function() {
142 changeUpDown(active_car, 0); 142 changeUpDown(active_car, 0);
@@ -182,7 +182,7 @@ var gb_home_context_menu = (function() { @@ -182,7 +182,7 @@ var gb_home_context_menu = (function() {
182 182
183 var C0_A3 = function(){ 183 var C0_A3 = function(){
184 open_modal('/real_control_v2/fragments/home/c0_a3.html', {}, {center: false, bgclose: false}); 184 open_modal('/real_control_v2/fragments/home/c0_a3.html', {}, {center: false, bgclose: false});
185 - } 185 + };
186 186
187 var callbackHandler = { 187 var callbackHandler = {
188 send_phrase: sendPhrase, 188 send_phrase: sendPhrase,
src/main/resources/static/real_control_v2/js/home/layout.js
@@ -34,10 +34,44 @@ var gb_home_layout = (function () { @@ -34,10 +34,44 @@ var gb_home_layout = (function () {
34 return false; 34 return false;
35 }); 35 });
36 36
  37 + initRbDxplain();
37 cb && cb(); 38 cb && cb();
38 }); 39 });
39 }; 40 };
40 41
  42 + //右下角说明icon
  43 + function initRbDxplain() {
  44 + $(document).on('mouseenter', '.home-rb-explain-icon', function() {
  45 + $(this).qtip({
  46 + show: {
  47 + ready: true,
  48 + delay: 0
  49 + },
  50 + content: {
  51 + text: function() {
  52 + return temps['home-rb-explain-help-temp']({});
  53 + }
  54 + },
  55 + position: {
  56 + viewport: $(window)
  57 + },
  58 + style: {
  59 + classes: 'qtip-jtools qtip-home-rb'
  60 + },
  61 + hide: {
  62 + fixed: true,
  63 + delay: 300
  64 + },
  65 + events: {
  66 + hidden: function(event, api) {
  67 + //destroy dom
  68 + $(this).qtip('destroy', true);
  69 + }
  70 + }
  71 + });
  72 + });
  73 + }
  74 +
41 //click svg edit icon 75 //click svg edit icon
42 $(document).on('click', '.home-svg-edit-icon', function () { 76 $(document).on('click', '.home-svg-edit-icon', function () {
43 open_modal('/real_control_v2/fragments/home/svg_edit.html', {lineCode: $(this).data('line-code')}); 77 open_modal('/real_control_v2/fragments/home/svg_edit.html', {lineCode: $(this).data('line-code')});
src/main/resources/static/real_control_v2/js/utils/ct_table.js
1 var gb_ct_table = (function() { 1 var gb_ct_table = (function() {
  2 + var webkit=true;
  3 + if(typeof $("body")[0].style.WebkitAnimation=="undefined")
  4 + webkit = false;
  5 +
2 function fixedHead($wrap) { 6 function fixedHead($wrap) {
  7 + if(!webkit)
  8 + return;
3 9
4 $wrap.off('scroll').on('scroll', function() { 10 $wrap.off('scroll').on('scroll', function() {
5 var top = $(this).scrollTop(); 11 var top = $(this).scrollTop();
src/main/resources/static/real_control_v2/js/utils/svg_chart.js
@@ -17,6 +17,8 @@ var gb_svg_chart = (function () { @@ -17,6 +17,8 @@ var gb_svg_chart = (function () {
17 return (chart_height - (chart_height / t_max_size * t.length)) / 2 + 5; 17 return (chart_height - (chart_height / t_max_size * t.length)) / 2 + 5;
18 }, 18 },
19 cat_text = function (t) { 19 cat_text = function (t) {
  20 + if(!t)
  21 + return 0;
20 return t.length > t_max_size ? t.substr(0, t_max_size) : t; 22 return t.length > t_max_size ? t.substr(0, t_max_size) : t;
21 }, 23 },
22 get_width = function (wrap) { 24 get_width = function (wrap) {
@@ -39,7 +41,7 @@ var gb_svg_chart = (function () { @@ -39,7 +41,7 @@ var gb_svg_chart = (function () {
39 var loopLine = gb_data_basic.isLoopLine(lineCode); 41 var loopLine = gb_data_basic.isLoopLine(lineCode);
40 42
41 var routes = gb_data_basic.stationRoutes(lineCode); 43 var routes = gb_data_basic.stationRoutes(lineCode);
42 - var data = gb_svg_data_convert.mergeRoute(JSON.parse(JSON.stringify(routes)), enableAttr, lineCode), 44 + var data = gb_svg_data_convert.mergeRoute(JSON.parse(JSON.stringify(routes)), enableAttr, lineCode, loopLine),
43 len = data.length; 45 len = data.length;
44 46
45 var w = get_width(wrap), 47 var w = get_width(wrap),
@@ -227,11 +229,10 @@ var gb_svg_chart = (function () { @@ -227,11 +229,10 @@ var gb_svg_chart = (function () {
227 var x; 229 var x;
228 e.transition().attr('x', function (d) { 230 e.transition().attr('x', function (d) {
229 x = gx(d, svg); 231 x = gx(d, svg);
230 - //找不到停靠点,直接隐藏  
231 if(x == -100) 232 if(x == -100)
232 - $(this).hide(); 233 + $(this).css('transition-duration', 0).hide();
233 else 234 else
234 - $(this).show(); 235 + $(this).show();//找不到停靠点,直接隐藏
235 return x; 236 return x;
236 }) 237 })
237 .attr('y', function (d) { 238 .attr('y', function (d) {
@@ -269,7 +270,6 @@ var gb_svg_chart = (function () { @@ -269,7 +270,6 @@ var gb_svg_chart = (function () {
269 //聚合gps 270 //聚合gps
270 marker_clusterer(this, lineCode); 271 marker_clusterer(this, lineCode);
271 }); 272 });
272 -  
273 }; 273 };
274 274
275 var draw_gps = function (svg, data) { 275 var draw_gps = function (svg, data) {
@@ -290,7 +290,6 @@ var gb_svg_chart = (function () { @@ -290,7 +290,6 @@ var gb_svg_chart = (function () {
290 var marker_clusterer = function (svg, lineCode) { 290 var marker_clusterer = function (svg, lineCode) {
291 //debugger 291 //debugger
292 var gpsArr, idxMapp = line_gps_index[lineCode]; 292 var gpsArr, idxMapp = line_gps_index[lineCode];
293 - //svgs = $('.line-chart[data-code=' + lineCode + ']');  
294 for (var stopNo in idxMapp) { 293 for (var stopNo in idxMapp) {
295 gpsArr = gb_common.get_keys(idxMapp[stopNo]); 294 gpsArr = gb_common.get_keys(idxMapp[stopNo]);
296 //remove old merger point 295 //remove old merger point
src/main/resources/static/real_control_v2/js/utils/svg_data_convert.js
@@ -4,11 +4,11 @@ var gb_svg_data_convert = (function () { @@ -4,11 +4,11 @@ var gb_svg_data_convert = (function () {
4 * 合并上下行路由 4 * 合并上下行路由
5 * type 0 上行 1 下行 2 同名合并 3 异名合并 5 * type 0 上行 1 下行 2 同名合并 3 异名合并
6 * 6 *
7 - * 有时间再重写一些这块代码!!!!! 7 + * 因为基础的数据的各种奇葩搞法,这块打了很多补丁,有时间一定要重写
8 * 8 *
9 * enableAttr: 是否启用配置信息 9 * enableAttr: 是否启用配置信息
10 */ 10 */
11 - function mergeRoute(routes, enableAttr, lineCode) { 11 + function mergeRoute(routes, enableAttr, lineCode, loopLine) {
12 //按上下行拆分 12 //按上下行拆分
13 routes = gb_common.groupBy(routes, 'directions'); 13 routes = gb_common.groupBy(routes, 'directions');
14 var up = routes[0], 14 var up = routes[0],
@@ -16,6 +16,7 @@ var gb_svg_data_convert = (function () { @@ -16,6 +16,7 @@ var gb_svg_data_convert = (function () {
16 //排序 16 //排序
17 up.sort(upSort); 17 up.sort(upSort);
18 down.sort(downSort); 18 down.sort(downSort);
  19 + var data = [];
19 20
20 //根据配置处理一下数据 21 //根据配置处理一下数据
21 if (enableAttr) { 22 if (enableAttr) {
@@ -26,8 +27,30 @@ var gb_svg_data_convert = (function () { @@ -26,8 +27,30 @@ var gb_svg_data_convert = (function () {
26 } 27 }
27 } 28 }
28 29
  30 + //环线 只画上行
  31 + if(loopLine){
  32 + for (var j = 0; j < up.length; j++) {
  33 + var upS = nvl_get(up, j);
  34 + op = {
  35 + name: [upS.stationName],
  36 + id: [get_station_code(upS)],
  37 + type: 0,
  38 + stationMark: upS.stationMark
  39 + };
  40 + data.push(op);
  41 + }
  42 +
  43 + //上下行GPS容器
  44 + $.each(data, function () {
  45 + this.gpsUps = [];
  46 + this.gpsDowns = [];
  47 + });
  48 +
  49 + return data;
  50 + }
  51 +
  52 +
29 //同名站点合并 53 //同名站点合并
30 - var data = [];  
31 for (var j = 0; j < up.length; j++) { 54 for (var j = 0; j < up.length; j++) {
32 var upS = nvl_get(up, j), 55 var upS = nvl_get(up, j),
33 downS = nvl_get(down, j), 56 downS = nvl_get(down, j),
@@ -43,8 +66,8 @@ var gb_svg_data_convert = (function () { @@ -43,8 +66,8 @@ var gb_svg_data_convert = (function () {
43 var dIndex = station_indexof(down, upS, j); 66 var dIndex = station_indexof(down, upS, j);
44 //上行站点在下行路由中是否存在 67 //上行站点在下行路由中是否存在
45 var uIndex = station_indexof(up, downS, j); 68 var uIndex = station_indexof(up, downS, j);
46 - if (dIndex == -1) {  
47 - if (uIndex == -1) { 69 + if (dIndex == -1 || dIndex - j > 4) {
  70 + if (uIndex == -1 && dIndex - j < 4) {
48 op.type = 3; 71 op.type = 3;
49 op.name = [upS.stationName, downS.stationName]; 72 op.name = [upS.stationName, downS.stationName];
50 } 73 }