Commit 51aae3397ce57286780154e91de0a36f1ca6b673

Authored by 廖磊
2 parents 65d9a7d4 a17c901b

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

minhang
Showing 25 changed files with 2822 additions and 1179 deletions

Too many changes to show.

To preserve performance only 25 of 38 files are displayed.

src/main/java/com/bsth/controller/DeviceGpsController.java
1 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 3 import com.bsth.data.gpsdata.GpsEntity;
37 4 import com.bsth.data.gpsdata.GpsRealData;
38 5 import com.fasterxml.jackson.core.JsonParseException;
39 6 import com.fasterxml.jackson.databind.JsonMappingException;
40 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 21 @RestController
44 22 @RequestMapping("devicegps")
... ... @@ -121,7 +99,7 @@ public class DeviceGpsController {
121 99 try {
122 100 data = new ObjectMapper().readValue(json, List.class);
123 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 105 res.put("errCode", 0);
... ...
src/main/java/com/bsth/data/gpsdata/GpsRealData.java
1 1 package com.bsth.data.gpsdata;
2 2  
3   -import com.alibaba.fastjson.JSON;
4   -import com.alibaba.fastjson.JSONObject;
5 3 import com.bsth.data.BasicData;
6 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 6 import com.bsth.data.schedule.DayOfSchedule;
10 7 import com.bsth.entity.realcontrol.ScheduleRealInfo;
11   -import com.bsth.util.ConfigUtil;
12 8 import com.google.common.collect.TreeMultimap;
13 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 10 import org.slf4j.Logger;
20 11 import org.slf4j.LoggerFactory;
21 12 import org.springframework.beans.factory.annotation.Autowired;
22 13 import org.springframework.boot.CommandLineRunner;
23 14 import org.springframework.stereotype.Component;
24 15  
25   -import java.io.BufferedReader;
26   -import java.io.InputStreamReader;
27 16 import java.util.*;
28 17  
29 18 /**
... ... @@ -42,11 +31,8 @@ public class GpsRealData implements CommandLineRunner {
42 31 //按线路分组设备号
43 32 private static TreeMultimap<String, String> lineCode2Devices;
44 33  
45   - // 网关数据接口地址
46   - private static String url;
47   -
48 34 @Autowired
49   - GpsDataLoader gpsDataLoader;
  35 + GpsDataLoaderThread gpsDataLoader;
50 36  
51 37 @Autowired
52 38 DayOfSchedule dayOfSchedule;
... ... @@ -60,13 +46,15 @@ public class GpsRealData implements CommandLineRunner {
60 46 public GpsRealData() {
61 47 gpsMap = new HashMap<>();
62 48 lineCode2Devices = TreeMultimap.create();
63   - url = ConfigUtil.get("http.gps.real.url");
64 49 }
65 50  
66 51 @Override
67 52 public void run(String... arg0) throws Exception {
68 53 logger.info("gpsDataLoader,20,5");
  54 + //定时从网关获取GPS数据
69 55 //Application.mainServices.scheduleWithFixedDelay(gpsDataLoader, 20, 5, TimeUnit.SECONDS);
  56 + //定时扫描掉离线
  57 +
70 58 }
71 59  
72 60 public void put(GpsEntity gps) {
... ... @@ -146,10 +134,6 @@ public class GpsRealData implements CommandLineRunner {
146 134 return gpsMap.keySet();
147 135 }
148 136  
149   - public GpsEntity findByDeviceId(String deviceId) {
150   - return gpsMap.get(deviceId);
151   - }
152   -
153 137 public Collection<GpsEntity> all() {
154 138 return gpsMap.values();
155 139 }
... ... @@ -157,87 +141,4 @@ public class GpsRealData implements CommandLineRunner {
157 141 public void remove(String device) {
158 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 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 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 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 3 import com.alibaba.fastjson.JSON;
21 4 import com.alibaba.fastjson.JSONObject;
22 5 import com.bsth.common.ResponseCode;
... ... @@ -24,15 +7,11 @@ import com.bsth.data.BasicData;
24 7 import com.bsth.data.directive.DayOfDirectives;
25 8 import com.bsth.data.directive.DirectiveCreator;
26 9 import com.bsth.data.directive.GatewayHttpUtils;
27   -import com.bsth.data.gpsdata.GpsRealData;
28 10 import com.bsth.data.gpsdata.GpsEntity;
  11 +import com.bsth.data.gpsdata.GpsRealData;
29 12 import com.bsth.data.pilot80.PilotReport;
30 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 15 import com.bsth.entity.realcontrol.ScheduleRealInfo;
37 16 import com.bsth.entity.sys.SysUser;
38 17 import com.bsth.repository.directive.D60Repository;
... ... @@ -44,6 +23,15 @@ import com.bsth.websocket.handler.RealControlSocketHandler;
44 23 import com.fasterxml.jackson.core.JsonProcessingException;
45 24 import com.fasterxml.jackson.databind.ObjectMapper;
46 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 36 @Service
49 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 253 // 根据当前GPS确定 上下行和营运状态
266 254 Integer upDown = null, state = null;
267 255 if (null == sch) {
268   - GpsEntity gpsData = gpsRealDataBuffer.findByDeviceId(deviceId);
  256 + GpsEntity gpsData = gpsRealDataBuffer.get(deviceId);
269 257 if (null == gpsData) {
270 258 /*
271 259 * 短语指令不会变更设备状态,所以在没有gps状态对照的情况下可以下发
... ...
src/main/java/com/bsth/service/impl/BusIntervalServiceImpl.java
... ... @@ -1393,8 +1393,14 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1393 1393  
1394 1394 String[] date1 = startDate.split("-");
1395 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 1405 String[] split = times.split("-");
1400 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 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 1482 tempMap.put("company", companyName);
1480 1483 tempMap.put("subCompany", subCompanyName);
1481 1484 tempMap.put("times", times);
... ... @@ -1523,6 +1526,24 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1523 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 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 5 import com.bsth.service.schedule.CarConfigInfoService;
6 6 import com.bsth.service.schedule.exception.ScheduleException;
7 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 11 import org.springframework.beans.factory.annotation.Autowired;
  12 +import org.springframework.boot.context.properties.EnableConfigurationProperties;
9 13 import org.springframework.stereotype.Service;
10 14 import org.springframework.transaction.annotation.Transactional;
11 15 import org.springframework.util.CollectionUtils;
12 16  
  17 +import java.io.File;
  18 +import java.io.PrintWriter;
  19 +import java.io.StringWriter;
13 20 import java.util.HashMap;
14 21 import java.util.List;
15 22 import java.util.Map;
... ... @@ -17,11 +24,76 @@ import java.util.Map;
17 24 /**
18 25 * Created by xu on 16/5/9.
19 26 */
  27 +@EnableConfigurationProperties(DataToolsProperties.class)
20 28 @Service
21 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 36 @Autowired
23 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 97 @Transactional
26 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 5 import com.bsth.service.schedule.EmployeeConfigInfoService;
6 6 import com.bsth.service.schedule.exception.ScheduleException;
7 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 11 import org.springframework.beans.factory.annotation.Autowired;
  12 +import org.springframework.boot.context.properties.EnableConfigurationProperties;
9 13 import org.springframework.stereotype.Service;
10 14 import org.springframework.transaction.annotation.Transactional;
11 15 import org.springframework.util.CollectionUtils;
12 16  
  17 +import java.io.File;
  18 +import java.io.PrintWriter;
  19 +import java.io.StringWriter;
13 20 import java.util.*;
14 21  
15 22 /**
16 23 * Created by xu on 16/5/10.
17 24 */
  25 +@EnableConfigurationProperties(DataToolsProperties.class)
18 26 @Service
19 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 34 @Autowired
21 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 95 @Transactional
24 96 @Override
25 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 232  
233 233 super.exportData(ktrParms);
234 234  
  235 + EditInfo editInfo = new EditInfo(); // 输出数据
  236 +
235 237 // 1.6、获取最大的发车数,用于输出数据的数量
236 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 316 LOGGER.info("//---------------- 时刻表编辑用数据输出 success... ----------------//");
316 317  
... ...
src/main/java/com/bsth/service/schedule/utils/DataToolsProperties.java
... ... @@ -93,6 +93,12 @@ public class DataToolsProperties {
93 93 @NotNull
94 94 /** 排版规则导出数据ktr转换 */
95 95 private String scheduleruleOutput;
  96 + @NotNull
  97 + /** 车辆配置信息导出ktr转换 */
  98 + private String carsconfigDataoutputktr;
  99 + @NotNull
  100 + /** 人员配置信息导出ktr转换 */
  101 + private String employeesconfigDataoutputktr;
96 102  
97 103 // TODO:
98 104  
... ... @@ -287,4 +293,20 @@ public class DataToolsProperties {
287 293 public void setScheduleruleOutput(String scheduleruleOutput) {
288 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 60 # 排版规则导出数据ktr转换
61 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 69 # TODO:
... ...
src/main/resources/datatools/config-prod.properties
... ... @@ -61,5 +61,10 @@ datatools.ttinfodetail_output=/datatools/ktrs/ttinfodetailDataOutput.ktr
61 61 # 排版规则导出数据ktr转换
62 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 70 # TODO:
66 71 \ No newline at end of file
... ...
src/main/resources/datatools/ktrs/carsConfigDataInput.ktr
... ... @@ -85,10 +85,10 @@
85 85 </info>
86 86 <notepads>
87 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 92 <heigth>106</heigth>
93 93 <fontname>YaHei Consolas Hybrid</fontname>
94 94 <fontsize>12</fontsize>
... ... @@ -119,6 +119,7 @@
119 119 <data_tablespace/>
120 120 <index_tablespace/>
121 121 <attributes>
  122 + <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
122 123 <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
123 124 <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
124 125 <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
... ... @@ -267,14 +268,16 @@
267 268 </attributes>
268 269 </connection>
269 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 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 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 281 </order>
279 282 <step>
280 283 <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name>
... ... @@ -405,8 +408,8 @@
405 408 </step>
406 409  
407 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 413 <description/>
411 414 <distribute>Y</distribute>
412 415 <custom_distribution/>
... ... @@ -415,31 +418,24 @@
415 418 <method>none</method>
416 419 <schema_name/>
417 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 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 439 <draw>Y</draw>
444 440 </GUI>
445 441 </step>
... ... @@ -462,13 +458,13 @@
462 458 <schema/>
463 459 <table>bsth_c_s_ccinfo</table>
464 460 <key>
465   - <name>xlId</name>
  461 + <name>xlid</name>
466 462 <field>xl</field>
467 463 <condition>&#x3d;</condition>
468 464 <name2/>
469 465 </key>
470 466 <key>
471   - <name>clId</name>
  467 + <name>clid</name>
472 468 <field>cl</field>
473 469 <condition>&#x3d;</condition>
474 470 <name2/>
... ... @@ -490,24 +486,29 @@
490 486 </value>
491 487 <value>
492 488 <name>tcd</name>
493   - <rename>tcd</rename>
  489 + <rename>&#x505c;&#x8f66;&#x70b9;</rename>
494 490 <update>Y</update>
495 491 </value>
496 492 <value>
497 493 <name>zzrq</name>
498   - <rename>zzrq</rename>
  494 + <rename>&#x7ec8;&#x7ed3;&#x65e5;&#x671f;</rename>
499 495 <update>Y</update>
500 496 </value>
501 497 <value>
502 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 505 <update>Y</update>
505 506 </value>
506 507 </lookup>
507 508 <cluster_schema/>
508 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 512 <draw>Y</draw>
512 513 </GUI>
513 514 </step>
... ... @@ -524,9 +525,24 @@
524 525 <schema_name/>
525 526 </partitioning>
526 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 546 <length>-2</length>
531 547 <precision>-2</precision>
532 548 <conversion_mask>yyyy-MM-dd</conversion_mask>
... ... @@ -541,8 +557,8 @@
541 557 <storage_type/>
542 558 </meta> </fields> <cluster_schema/>
543 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 562 <draw>Y</draw>
547 563 </GUI>
548 564 </step>
... ... @@ -574,14 +590,14 @@
574 590 </fields>
575 591 <cluster_schema/>
576 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 595 <draw>Y</draw>
580 596 </GUI>
581 597 </step>
582 598  
583 599 <step>
584   - <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</name>
  600 + <name>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</name>
585 601 <type>DBLookup</type>
586 602 <description/>
587 603 <distribute>Y</distribute>
... ... @@ -592,8 +608,8 @@
592 608 <schema_name/>
593 609 </partitioning>
594 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 613 <cache_size>0</cache_size>
598 614 <lookup>
599 615 <schema/>
... ... @@ -602,28 +618,79 @@
602 618 <fail_on_multiple>N</fail_on_multiple>
603 619 <eat_row_on_failure>N</eat_row_on_failure>
604 620 <key>
605   - <name>xl</name>
  621 + <name>&#x7ebf;&#x8def;</name>
606 622 <field>name</field>
607 623 <condition>&#x3d;</condition>
608 624 <name2/>
609 625 </key>
  626 + <key>
  627 + <name>isCancel</name>
  628 + <field>destroy</field>
  629 + <condition>&#x3d;</condition>
  630 + <name2/>
  631 + </key>
610 632 <value>
611 633 <name>id</name>
612   - <rename>xlId</rename>
  634 + <rename>xlid</rename>
613 635 <default/>
614 636 <type>Integer</type>
615 637 </value>
616 638 </lookup>
617 639 <cluster_schema/>
618 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 643 <draw>Y</draw>
622 644 </GUI>
623 645 </step>
624 646  
625 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 694 <type>DBLookup</type>
628 695 <description/>
629 696 <distribute>Y</distribute>
... ... @@ -634,8 +701,8 @@
634 701 <schema_name/>
635 702 </partitioning>
636 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 706 <cache_size>0</cache_size>
640 707 <lookup>
641 708 <schema/>
... ... @@ -644,29 +711,29 @@
644 711 <fail_on_multiple>N</fail_on_multiple>
645 712 <eat_row_on_failure>N</eat_row_on_failure>
646 713 <key>
647   - <name>cl</name>
  714 + <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
648 715 <field>inside_code</field>
649 716 <condition>&#x3d;</condition>
650 717 <name2/>
651 718 </key>
652 719 <value>
653 720 <name>id</name>
654   - <rename>clId</rename>
  721 + <rename>clid</rename>
655 722 <default/>
656 723 <type>Integer</type>
657 724 </value>
658 725 </lookup>
659 726 <cluster_schema/>
660 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 730 <draw>Y</draw>
664 731 </GUI>
665 732 </step>
666 733  
667 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 737 <description/>
671 738 <distribute>Y</distribute>
672 739 <custom_distribution/>
... ... @@ -675,36 +742,49 @@
675 742 <method>none</method>
676 743 <schema_name/>
677 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 755 <cluster_schema/>
705 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 788 <draw>Y</draw>
709 789 </GUI>
710 790 </step>
... ... @@ -751,37 +831,42 @@
751 831 </template>
752 832 <fields>
753 833 <field>
754   - <name>xl</name>
  834 + <name>&#x7ebf;&#x8def;</name>
755 835 <type>String</type>
756 836 <format/>
757 837 </field>
758 838 <field>
759   - <name>cl</name>
  839 + <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
760 840 <type>String</type>
761 841 <format/>
762 842 </field>
763 843 <field>
764   - <name>qyrq</name>
765   - <type>String</type>
  844 + <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  845 + <type>Timestamp</type>
766 846 <format/>
767 847 </field>
768 848 <field>
769   - <name>zzrq</name>
770   - <type>String</type>
  849 + <name>&#x7ec8;&#x7ed3;&#x65e5;&#x671f;</name>
  850 + <type>Timestamp</type>
771 851 <format/>
772 852 </field>
773 853 <field>
774   - <name>tcd</name>
  854 + <name>&#x505c;&#x8f66;&#x70b9;</name>
775 855 <type>String</type>
776 856 <format/>
777 857 </field>
778 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 865 <type>Integer</type>
781 866 <format/>
782 867 </field>
783 868 <field>
784   - <name>clId</name>
  869 + <name>clid</name>
785 870 <type>Integer</type>
786 871 <format/>
787 872 </field>
... ... @@ -830,8 +915,8 @@
830 915 </custom>
831 916 <cluster_schema/>
832 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 920 <draw>Y</draw>
836 921 </GUI>
837 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 85 </info>
86 86 <notepads>
87 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 92 <heigth>90</heigth>
93 93 <fontname>YaHei Consolas Hybrid</fontname>
94 94 <fontsize>12</fontsize>
... ... @@ -119,6 +119,7 @@
119 119 <data_tablespace/>
120 120 <index_tablespace/>
121 121 <attributes>
  122 + <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
122 123 <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
123 124 <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
124 125 <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
... ... @@ -267,13 +268,15 @@
267 268 </attributes>
268 269 </connection>
269 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 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 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 280 </order>
278 281 <step>
279 282 <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name>
... ... @@ -328,7 +331,7 @@
328 331 <precision>-1</precision>
329 332 <trim_type>none</trim_type>
330 333 <repeat>N</repeat>
331   - <format/>
  334 + <format>&#x23;</format>
332 335 <currency/>
333 336 <decimal/>
334 337 <group/>
... ... @@ -381,18 +384,6 @@
381 384 <decimal/>
382 385 <group/>
383 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 387 </fields>
397 388 <sheets>
398 389 <sheet>
... ... @@ -421,15 +412,15 @@
421 412 <spreadsheet_type>JXL</spreadsheet_type>
422 413 <cluster_schema/>
423 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 417 <draw>Y</draw>
427 418 </GUI>
428 419 </step>
429 420  
430 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 424 <description/>
434 425 <distribute>Y</distribute>
435 426 <custom_distribution/>
... ... @@ -438,39 +429,58 @@
438 429 <method>none</method>
439 430 <schema_name/>
440 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 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 484 <draw>Y</draw>
475 485 </GUI>
476 486 </step>
... ... @@ -499,14 +509,8 @@
499 509 <name2/>
500 510 </key>
501 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 514 <condition>&#x3d;</condition>
511 515 <name2/>
512 516 </key>
... ... @@ -517,72 +521,35 @@
517 521 </value>
518 522 <value>
519 523 <name>dbbm</name>
520   - <rename>dbbm</rename>
  524 + <rename>&#x642d;&#x73ed;&#x7f16;&#x7801;</rename>
521 525 <update>Y</update>
522 526 </value>
523 527 <value>
524 528 <name>jsy</name>
525   - <rename>jsyid</rename>
  529 + <rename>jid</rename>
526 530 <update>Y</update>
527 531 </value>
528 532 <value>
529 533 <name>spy</name>
530   - <rename>spyid</rename>
  534 + <rename>sid</rename>
531 535 <update>Y</update>
532 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 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 541 </value>
575 542 </lookup>
576 543 <cluster_schema/>
577 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 547 <draw>Y</draw>
581 548 </GUI>
582 549 </step>
583 550  
584 551 <step>
585   - <name>&#x67e5;&#x8be2;&#x7ebf;&#x8def;&#x5173;&#x8054;</name>
  552 + <name>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</name>
586 553 <type>DBLookup</type>
587 554 <description/>
588 555 <distribute>Y</distribute>
... ... @@ -593,8 +560,8 @@
593 560 <schema_name/>
594 561 </partitioning>
595 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 565 <cache_size>0</cache_size>
599 566 <lookup>
600 567 <schema/>
... ... @@ -603,64 +570,28 @@
603 570 <fail_on_multiple>N</fail_on_multiple>
604 571 <eat_row_on_failure>N</eat_row_on_failure>
605 572 <key>
606   - <name>xl</name>
  573 + <name>&#x7ebf;&#x8def;</name>
607 574 <field>name</field>
608 575 <condition>&#x3d;</condition>
609 576 <name2/>
610 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 578 <key>
648   - <name>jsy_no</name>
649   - <field>job_code</field>
  579 + <name>isCancel</name>
  580 + <field>destroy</field>
650 581 <condition>&#x3d;</condition>
651 582 <name2/>
652 583 </key>
653 584 <value>
654 585 <name>id</name>
655   - <rename>jsyid</rename>
  586 + <rename>xlid</rename>
656 587 <default/>
657 588 <type>Integer</type>
658 589 </value>
659 590 </lookup>
660 591 <cluster_schema/>
661 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 595 <draw>Y</draw>
665 596 </GUI>
666 597 </step>
... ... @@ -711,6 +642,64 @@
711 642 </step>
712 643  
713 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 703 <name>&#x9519;&#x8bef;&#x8f93;&#x51fa;</name>
715 704 <type>ExcelOutput</type>
716 705 <description/>
... ... @@ -752,38 +741,38 @@
752 741 </template>
753 742 <fields>
754 743 <field>
755   - <name>xl</name>
  744 + <name>&#x7ebf;&#x8def;</name>
756 745 <type>String</type>
757 746 <format/>
758 747 </field>
759 748 <field>
760   - <name>dbbm</name>
  749 + <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>
761 750 <type>String</type>
762 751 <format/>
763 752 </field>
764 753 <field>
765   - <name>jsy_no</name>
  754 + <name>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</name>
766 755 <type>String</type>
767 756 <format/>
768 757 </field>
769 758 <field>
770   - <name>jsy_name</name>
  759 + <name>&#x9a7e;&#x9a76;&#x5458;</name>
771 760 <type>String</type>
772 761 <format/>
773 762 </field>
774 763 <field>
775   - <name>spy_no</name>
  764 + <name>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</name>
776 765 <type>String</type>
777 766 <format/>
778 767 </field>
779 768 <field>
780   - <name>spy_name</name>
  769 + <name>&#x552e;&#x7968;&#x5458;</name>
781 770 <type>String</type>
782 771 <format/>
783 772 </field>
784 773 <field>
785   - <name>cl</name>
786   - <type>String</type>
  774 + <name>isCancel</name>
  775 + <type>Integer</type>
787 776 <format/>
788 777 </field>
789 778 <field>
... ... @@ -792,12 +781,12 @@
792 781 <format/>
793 782 </field>
794 783 <field>
795   - <name>jsyid</name>
  784 + <name>jid</name>
796 785 <type>Integer</type>
797 786 <format/>
798 787 </field>
799 788 <field>
800   - <name>spyid</name>
  789 + <name>sid</name>
801 790 <type>Integer</type>
802 791 <format/>
803 792 </field>
... ... @@ -841,8 +830,42 @@
841 830 </custom>
842 831 <cluster_schema/>
843 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 869 <draw>Y</draw>
847 870 </GUI>
848 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 80 <created_date>2017&#x2f;01&#x2f;09 10&#x3a;10&#x3a;36.915</created_date>
81 81 <modified_user>-</modified_user>
82 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 84 <is_key_private>N</is_key_private>
85 85 </info>
86 86 <notepads>
... ... @@ -276,8 +276,8 @@
276 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 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 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 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 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 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 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 293 </order>
294 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 534 <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name>
296 535 <type>ExcelInput</type>
297 536 <description/>
... ... @@ -314,11 +553,11 @@
314 553 <limit>0</limit>
315 554 <encoding/>
316 555 <add_to_result_filenames>Y</add_to_result_filenames>
317   - <accept_filenames>N</accept_filenames>
  556 + <accept_filenames>Y</accept_filenames>
318 557 <accept_field>filepath_</accept_field>
319 558 <accept_stepname>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</accept_stepname>
320 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 561 <filemask/>
323 562 <exclude_filemask/>
324 563 <file_required>N</file_required>
... ... @@ -456,8 +695,8 @@
456 695 </step>
457 696  
458 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 700 <description/>
462 701 <distribute>Y</distribute>
463 702 <custom_distribution/>
... ... @@ -466,69 +705,28 @@
466 705 <method>none</method>
467 706 <schema_name/>
468 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 715 <type>String</type>
474   - <format/>
475   - <currency/>
476   - <decimal/>
477   - <group/>
478 716 <length>-1</length>
479 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 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 723 <draw>Y</draw>
526 724 </GUI>
527 725 </step>
528 726  
529 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 730 <description/>
533 731 <distribute>Y</distribute>
534 732 <custom_distribution/>
... ... @@ -537,39 +735,26 @@
537 735 <method>none</method>
538 736 <schema_name/>
539 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 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 758 <draw>Y</draw>
574 759 </GUI>
575 760 </step>
... ... @@ -608,8 +793,8 @@
608 793 </step>
609 794  
610 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 798 <description/>
614 799 <distribute>Y</distribute>
615 800 <custom_distribution/>
... ... @@ -618,52 +803,24 @@
618 803 <method>none</method>
619 804 <schema_name/>
620 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 813 <cluster_schema/>
657 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 817 <draw>Y</draw>
661 818 </GUI>
662 819 </step>
663 820  
664 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 824 <description/>
668 825 <distribute>Y</distribute>
669 826 <custom_distribution/>
... ... @@ -672,55 +829,65 @@
672 829 <method>none</method>
673 830 <schema_name/>
674 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 887 <cluster_schema/>
721 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 891 <draw>Y</draw>
725 892 </GUI>
726 893 </step>
... ... @@ -808,8 +975,8 @@
808 975 </step>
809 976  
810 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 980 <description/>
814 981 <distribute>Y</distribute>
815 982 <custom_distribution/>
... ... @@ -818,24 +985,86 @@
818 985 <method>none</method>
819 986 <schema_name/>
820 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 1057 <cluster_schema/>
829 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 1061 <draw>Y</draw>
833 1062 </GUI>
834 1063 </step>
835 1064  
836 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 1068 <description/>
840 1069 <distribute>Y</distribute>
841 1070 <custom_distribution/>
... ... @@ -844,45 +1073,91 @@
844 1073 <method>none</method>
845 1074 <schema_name/>
846 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 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 1155 <draw>Y</draw>
881 1156 </GUI>
882 1157 </step>
883 1158  
884 1159 <step>
885   - <name>&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x67e5;&#x8be2;</name>
  1160 + <name>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</name>
886 1161 <type>DBLookup</type>
887 1162 <description/>
888 1163 <distribute>Y</distribute>
... ... @@ -898,45 +1173,84 @@
898 1173 <cache_size>0</cache_size>
899 1174 <lookup>
900 1175 <schema/>
901   - <table>bsth_c_s_ecinfo</table>
  1176 + <table>bsth_c_line</table>
902 1177 <orderby/>
903 1178 <fail_on_multiple>N</fail_on_multiple>
904 1179 <eat_row_on_failure>N</eat_row_on_failure>
905 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 1183 <condition>&#x3d;</condition>
915 1184 <name2/>
916 1185 </key>
917 1186 <key>
918 1187 <name>isCancel</name>
919   - <field>is_cancel</field>
  1188 + <field>destroy</field>
920 1189 <condition>&#x3d;</condition>
921 1190 <name2/>
922 1191 </key>
923 1192 <value>
924 1193 <name>id</name>
925   - <rename>rycid1</rename>
  1194 + <rename>xlid</rename>
926 1195 <default/>
927 1196 <type>Integer</type>
928 1197 </value>
929 1198 </lookup>
930 1199 <cluster_schema/>
931 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 1248 <draw>Y</draw>
935 1249 </GUI>
936 1250 </step>
937 1251  
938 1252 <step>
939   - <name>&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x67e5;&#x8be2; 2</name>
  1253 + <name>&#x8def;&#x724c;id&#x67e5;&#x8be2;</name>
940 1254 <type>DBLookup</type>
941 1255 <description/>
942 1256 <distribute>Y</distribute>
... ... @@ -952,7 +1266,7 @@
952 1266 <cache_size>0</cache_size>
953 1267 <lookup>
954 1268 <schema/>
955   - <table>bsth_c_s_ecinfo</table>
  1269 + <table>bsth_c_s_gbi</table>
956 1270 <orderby/>
957 1271 <fail_on_multiple>N</fail_on_multiple>
958 1272 <eat_row_on_failure>N</eat_row_on_failure>
... ... @@ -963,8 +1277,8 @@
963 1277 <name2/>
964 1278 </key>
965 1279 <key>
966   - <name>dbbm2</name>
967   - <field>dbbm</field>
  1280 + <name>lpname</name>
  1281 + <field>lp_name</field>
968 1282 <condition>&#x3d;</condition>
969 1283 <name2/>
970 1284 </key>
... ... @@ -976,15 +1290,15 @@
976 1290 </key>
977 1291 <value>
978 1292 <name>id</name>
979   - <rename>rycid2</rename>
  1293 + <rename>lpid</rename>
980 1294 <default/>
981 1295 <type>Integer</type>
982 1296 </value>
983 1297 </lookup>
984 1298 <cluster_schema/>
985 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 1302 <draw>Y</draw>
989 1303 </GUI>
990 1304 </step>
... ... @@ -1001,9 +1315,9 @@
1001 1315 <schema_name/>
1002 1316 </partitioning>
1003 1317 <connection>bus_control_variable</connection>
1004   - <rowlimit>0</rowlimit>
  1318 + <rowlimit>1</rowlimit>
1005 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 1321 <replace_vars>N</replace_vars>
1008 1322 <parameter>
1009 1323 <field>
... ... @@ -1028,254 +1342,49 @@
1028 1342 </step>
1029 1343  
1030 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 1345 <name>&#x8fc7;&#x6ee4;&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>
1119 1346 <type>FilterRows</type>
1120 1347 <description/>
1121 1348 <distribute>Y</distribute>
1122 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 1377 <cluster_schema/>
1269 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 1381 <draw>Y</draw>
1273 1382 </GUI>
1274 1383 </step>
1275 1384  
1276 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 1388 <description/>
1280 1389 <distribute>Y</distribute>
1281 1390 <custom_distribution/>
... ... @@ -1284,65 +1393,27 @@
1284 1393 <method>none</method>
1285 1394 <schema_name/>
1286 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 1406 <cluster_schema/>
1336 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 1410 <draw>Y</draw>
1340 1411 </GUI>
1341 1412 </step>
1342 1413  
1343 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 1417 <description/>
1347 1418 <distribute>Y</distribute>
1348 1419 <custom_distribution/>
... ... @@ -1351,85 +1422,49 @@
1351 1422 <method>none</method>
1352 1423 <schema_name/>
1353 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 1435 <cluster_schema/>
1430 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 1468 <draw>Y</draw>
1434 1469 </GUI>
1435 1470 </step>
... ... @@ -1512,7 +1547,7 @@
1512 1547 </field>
1513 1548 <field>
1514 1549 <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
1515   - <type>String</type>
  1550 + <type>Timestamp</type>
1516 1551 <format/>
1517 1552 </field>
1518 1553 <field>
... ... @@ -1576,41 +1611,6 @@
1576 1611 </GUI>
1577 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 1614 <step_error_handling>
1615 1615 <error>
1616 1616 <source_step>&#x63d2;&#x5165; &#x2f; &#x66f4;&#x65b0;bsth_c_s_sr1_flat</source_step>
... ... @@ -1629,4 +1629,4 @@
1629 1629 </slave-step-copy-partition-distribution>
1630 1630 <slave_transformation>N</slave_transformation>
1631 1631  
1632   -</transformation>
  1632 +</transformation>
1633 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 257 }
258 258  
259 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 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 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 45 导入excel
46 46 </a>
47 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 54 <!--<li class="divider"></li>-->
55 55 <!--<li>-->
56 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 52 content: [],
53 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 73 'BusConfigService',
66 74 '$state',
67 75 '$uibModal',
68   - function(busConfigService, $state, $uibModal) {
  76 + 'FileDownload_g',
  77 + function(busConfigService, $state, $uibModal, fileDownload) {
69 78 var self = this;
70 79  
71 80 // 切换到form状态
... ... @@ -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 139  
119 140 // 上传文件组件
120 141 self.uploader = new FileUploader({
121   - url: "/cci/dataImport",
  142 + url: "/cci/uploadAndImportFile",
122 143 filters: [] // 用于过滤文件,比如只允许导入excel
123 144 });
124 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 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 56 \ No newline at end of file
... ...
src/main/resources/static/pages/scheduleApp/module/core/employeeConfig/index.html
... ... @@ -45,12 +45,12 @@
45 45 导入excel
46 46 </a>
47 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 54 <!--<li class="divider"></li>-->
55 55 <!--<li>-->
56 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 52 content: [],
53 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 74 'EmployeeConfigService',
67 75 '$state',
68 76 '$uibModal',
69   - function(service, $state, $uibModal) {
  77 + 'FileDownload_g',
  78 + function(service, $state, $uibModal, fileDownload) {
70 79 var self = this;
71 80  
72 81 // 切换到form状态
... ... @@ -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 140  
120 141 // 上传文件组件
121 142 self.uploader = new FileUploader({
122   - url: "/eci/dataImport",
  143 + url: "/eci/uploadAndImportFile",
123 144 filters: [] // 用于过滤文件,比如只允许导入excel
124 145 });
125 146 self.uploader.onAfterAddingFile = function(fileItem)
... ...