Commit 2cd83ddbdb0ae951746985705537cb22a9c93f4b

Authored by 徐烜
2 parents e437b28b 07ae3e61

Merge branch 'pudong' of http://222.66.0.204:8090//panzhaov5/bsth_control into pudong

src/main/java/com/bsth/data/gpsdata_v2/DataHandleProcess.java
1   -package com.bsth.data.gpsdata_v2;
2   -
3   -import com.bsth.data.gpsdata_v2.cache.GpsCacheData;
4   -import com.bsth.data.gpsdata_v2.entity.GpsEntity;
5   -import com.bsth.data.gpsdata_v2.handlers.*;
6   -import com.google.common.collect.ArrayListMultimap;
7   -import org.slf4j.Logger;
8   -import org.slf4j.LoggerFactory;
9   -import org.springframework.beans.factory.annotation.Autowired;
10   -import org.springframework.stereotype.Component;
11   -
12   -import java.util.ArrayList;
13   -import java.util.List;
14   -import java.util.Set;
15   -import java.util.concurrent.CountDownLatch;
16   -import java.util.concurrent.ExecutorService;
17   -import java.util.concurrent.Executors;
18   -import java.util.concurrent.ThreadFactory;
19   -
20   -/**
21   - * 实时信号数据处理
22   - * Created by panzhao on 2017/11/15.
23   - */
24   -@Component
25   -public class DataHandleProcess {
26   -
27   - static Logger logger = LoggerFactory.getLogger(DataHandleProcess.class);
28   - final static int POOL_SIZE = 25;
29   -
30   - static ExecutorService threadPool = Executors.newFixedThreadPool(POOL_SIZE + 1, new HandlerThreadFactory());
31   - public static CountDownLatch count;
32   -
33   - @Autowired
34   - GpsStateProcess gpsStateProcess;
35   - @Autowired
36   - StationInsideProcess stationInsideProcess;
37   - @Autowired
38   - AbnormalStateProcess abnormalStateProcess;
39   - @Autowired
40   - InStationProcess inStationProcess;
41   - @Autowired
42   - OutStationProcess outStationProcess;
43   - @Autowired
44   - ReverseRouteProcess reverseRouteProcess;
45   -
46   - @Autowired
47   - GpsRealData gpsRealData;
48   -
49   - public void handle(List<GpsEntity> list) {
50   - try {
51   - //按设备号分组数据(一个设备的多条数据,必须在一个线程里跑)
52   - ArrayListMultimap multimap = ArrayListMultimap.create();
53   - for (GpsEntity gps : list) {
54   - multimap.put(gps.getDeviceId(), gps);
55   - }
56   - List<String> deviceList = new ArrayList<>(multimap.keySet());
57   -
58   - //数据均分给线程
59   - ArrayListMultimap dataListMap = ArrayListMultimap.create();
60   - int size = deviceList.size(), threadIndex = 0, threadSize = size / POOL_SIZE;
61   - for (int i = 0; i < size; i++) {
62   - if (i % threadSize == 0)
63   - threadIndex++;
64   - dataListMap.putAll(threadIndex, multimap.get(deviceList.get(i)));
65   - }
66   - Set<Integer> ks = dataListMap.keySet();
67   - logger.info("analyse gps size: " + list.size() + ", ks: " + ks.size());
68   - count = new CountDownLatch(ks.size());
69   -
70   - for (Integer index : ks) {
71   - threadPool.execute(new SignalHandleThread(dataListMap.get(index), count));
72   - }
73   -
74   - //等待子线程结束
75   - count.await();
76   -
77   - //加入实时gps对照
78   - for (GpsEntity gps : list)
79   - gpsRealData.put(gps);
80   - } catch (Exception e) {
81   - logger.error("", e);
82   - }
83   - }
84   -
85   - public class SignalHandleThread implements Runnable {
86   -
87   - List<GpsEntity> list;
88   - CountDownLatch count;
89   -
90   - SignalHandleThread(List<GpsEntity> gpsList, CountDownLatch count) {
91   - this.list = gpsList;
92   - this.count = count;
93   - }
94   -
95   - @Override
96   - public void run() {
97   - try {
98   - for (GpsEntity gps : list) {
99   - try{
100   - if(Math.abs(gps.getTimestamp() - gps.getServerTimestamp()) > 1000 * 60 * 20)
101   - continue;
102   -
103   - gpsStateProcess.process(gps);//状态处理
104   - stationInsideProcess.process(gps);//场站内外判定
105   - reverseRouteProcess.process(gps);//反向路由处理
106   - abnormalStateProcess.process(gps);//超速越界
107   -
108   - inStationProcess.process(gps);//进站
109   - outStationProcess.process(gps);//出站
110   -
111   - GpsCacheData.putGps(gps);//历史gps缓存
112   - }catch (Exception e){
113   - logger.error("", e);
114   - }
115   - }
116   - } finally {
117   - if (count != null)
118   - count.countDown();
119   - }
120   - }
121   - }
122   -
123   - static class MyUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler {
124   - @Override
125   - public void uncaughtException(Thread t, Throwable e) {
126   - logger.error("caught " , e);
127   - }
128   - }
129   -
130   - static class HandlerThreadFactory implements ThreadFactory {
131   - @Override
132   - public Thread newThread(Runnable r) {
133   - Thread t = new Thread(r);
134   - t.setUncaughtExceptionHandler(new MyUncaughtExceptionHandler());
135   - return t;
136   - }
137   - }
  1 +package com.bsth.data.gpsdata_v2;
  2 +
  3 +import com.bsth.data.gpsdata_v2.cache.GpsCacheData;
  4 +import com.bsth.data.gpsdata_v2.entity.GpsEntity;
  5 +import com.bsth.data.gpsdata_v2.handlers.*;
  6 +import com.google.common.collect.ArrayListMultimap;
  7 +import org.slf4j.Logger;
  8 +import org.slf4j.LoggerFactory;
  9 +import org.springframework.beans.factory.annotation.Autowired;
  10 +import org.springframework.stereotype.Component;
  11 +
  12 +import java.util.ArrayList;
  13 +import java.util.List;
  14 +import java.util.Set;
  15 +import java.util.concurrent.CountDownLatch;
  16 +import java.util.concurrent.ExecutorService;
  17 +import java.util.concurrent.Executors;
  18 +import java.util.concurrent.ThreadFactory;
  19 +
  20 +/**
  21 + * 实时信号数据处理
  22 + * Created by panzhao on 2017/11/15.
  23 + */
  24 +@Component
  25 +public class DataHandleProcess {
  26 +
  27 + static Logger logger = LoggerFactory.getLogger(DataHandleProcess.class);
  28 + final static int POOL_SIZE = 25;
  29 +
  30 + static ExecutorService threadPool = Executors.newFixedThreadPool(POOL_SIZE + 1, new HandlerThreadFactory());
  31 + public static CountDownLatch count;
  32 +
  33 + @Autowired
  34 + GpsStateProcess gpsStateProcess;
  35 + @Autowired
  36 + StationInsideProcess stationInsideProcess;
  37 + @Autowired
  38 + AbnormalStateProcess abnormalStateProcess;
  39 + @Autowired
  40 + InStationProcess inStationProcess;
  41 + @Autowired
  42 + OutStationProcess outStationProcess;
  43 + @Autowired
  44 + ReverseRouteProcess reverseRouteProcess;
  45 +
  46 + @Autowired
  47 + GpsRealData gpsRealData;
  48 +
  49 + public void handle(List<GpsEntity> list) {
  50 + try {
  51 + //按设备号分组数据(一个设备的多条数据,必须在一个线程里跑)
  52 + ArrayListMultimap multimap = ArrayListMultimap.create();
  53 + for (GpsEntity gps : list) {
  54 + multimap.put(gps.getDeviceId(), gps);
  55 + }
  56 + List<String> deviceList = new ArrayList<>(multimap.keySet());
  57 +
  58 + //数据均分给线程
  59 + ArrayListMultimap dataListMap = ArrayListMultimap.create();
  60 + int size = deviceList.size(), threadIndex = 0, threadSize = size / POOL_SIZE;
  61 + for (int i = 0; i < size; i++) {
  62 + if (i % threadSize == 0)
  63 + threadIndex++;
  64 + dataListMap.putAll(threadIndex, multimap.get(deviceList.get(i)));
  65 + }
  66 + Set<Integer> ks = dataListMap.keySet();
  67 + logger.info("analyse gps size: " + list.size() + ", ks: " + ks.size());
  68 + count = new CountDownLatch(ks.size());
  69 +
  70 + for (Integer index : ks) {
  71 + threadPool.execute(new SignalHandleThread(dataListMap.get(index), count));
  72 + }
  73 +
  74 + //等待子线程结束
  75 + count.await();
  76 +
  77 + //加入实时gps对照
  78 + for (GpsEntity gps : list)
  79 + gpsRealData.put(gps);
  80 + } catch (Exception e) {
  81 + logger.error("", e);
  82 + }
  83 + }
  84 +
  85 + public class SignalHandleThread implements Runnable {
  86 +
  87 + List<GpsEntity> list;
  88 + CountDownLatch count;
  89 +
  90 + SignalHandleThread(List<GpsEntity> gpsList, CountDownLatch count) {
  91 + this.list = gpsList;
  92 + this.count = count;
  93 + }
  94 +
  95 + @Override
  96 + public void run() {
  97 + try {
  98 + for (GpsEntity gps : list) {
  99 + try{
  100 + if(Math.abs(gps.getTimestamp() - gps.getServerTimestamp()) > 1000 * 60 * 20)
  101 + continue;
  102 +
  103 + gpsStateProcess.process(gps);//状态处理
  104 + stationInsideProcess.process(gps);//场站内外判定
  105 + reverseRouteProcess.process(gps);//反向路由处理
  106 + abnormalStateProcess.process(gps);//超速越界
  107 +
  108 + inStationProcess.process(gps);//进站
  109 + outStationProcess.process(gps);//出站
  110 +
  111 + GpsCacheData.putGps(gps);//历史gps缓存
  112 + }catch (Exception e){
  113 + logger.error("", e);
  114 + }
  115 + }
  116 + } finally {
  117 + if (count != null)
  118 + count.countDown();
  119 + }
  120 + }
  121 + }
  122 +
  123 + static class MyUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler {
  124 + @Override
  125 + public void uncaughtException(Thread t, Throwable e) {
  126 + logger.error("caught " , e);
  127 + }
  128 + }
  129 +
  130 + static class HandlerThreadFactory implements ThreadFactory {
  131 + @Override
  132 + public Thread newThread(Runnable r) {
  133 + Thread t = new Thread(r);
  134 + t.setUncaughtExceptionHandler(new MyUncaughtExceptionHandler());
  135 + return t;
  136 + }
  137 + }
138 138 }
139 139 \ No newline at end of file
... ...
src/main/java/com/bsth/data/gpsdata_v2/cache/GeoCacheData.java
1   -package com.bsth.data.gpsdata_v2.cache;
2   -
3   -import com.bsth.data.gpsdata_v2.entity.CtLineString;
4   -import com.bsth.data.gpsdata_v2.entity.GpsEntity;
5   -import com.bsth.data.gpsdata_v2.entity.PreconditionGeo;
6   -import com.bsth.data.gpsdata_v2.entity.StationRoute;
7   -import com.bsth.data.gpsdata_v2.utils.StationRouteComp;
8   -import com.bsth.util.Geo.Point;
9   -import com.bsth.util.Geo.Polygon;
10   -import com.google.common.base.Splitter;
11   -import com.google.common.collect.ArrayListMultimap;
12   -import org.apache.commons.lang3.StringUtils;
13   -import org.slf4j.Logger;
14   -import org.slf4j.LoggerFactory;
15   -import org.springframework.beans.factory.annotation.Autowired;
16   -import org.springframework.jdbc.core.BeanPropertyRowMapper;
17   -import org.springframework.jdbc.core.JdbcTemplate;
18   -import org.springframework.jdbc.core.RowMapper;
19   -import org.springframework.stereotype.Component;
20   -
21   -import java.sql.ResultSet;
22   -import java.sql.SQLException;
23   -import java.util.*;
24   -
25   -/**
26   - * 空间数据缓存
27   - * Created by panzhao on 2017/11/15.
28   - */
29   -@Component
30   -public class GeoCacheData {
31   -
32   - static Logger logger = LoggerFactory.getLogger(GeoCacheData.class);
33   -
34   - /**
35   - * 线路路段走向
36   - */
37   - private static ArrayListMultimap<String, CtLineString> sectionCacheMap;
38   - /**
39   - * 路段编码和名称对照
40   - */
41   - private static Map<String, String> sectionCode2Name;
42   - /**
43   - * 线路站点路由
44   - */
45   - private static ArrayListMultimap<String, StationRoute> stationCacheMap;
46   - /**
47   - * 线路前置进站围栏
48   - */
49   - public static ArrayListMultimap<String, PreconditionGeo> premiseGeoMap;
50   - /**
51   - * 线路_上下行_站点编码 ——> 站点
52   - */
53   - private static Map<String, StationRoute> routeCodeMap;
54   - /**
55   - * 停车场
56   - */
57   - public static Map<String, Polygon> tccMap;
58   - /**
59   - * 线路限速信息
60   - */
61   - private static Map<String, Double> speedLimitMap;
62   -
63   - @Autowired
64   - JdbcTemplate jdbcTemplate;
65   -
66   - public void loadData() {
67   - loadStationRoutesData();
68   - loadTccMapData();
69   - loadSpeedLimit();
70   -
71   - //加载路段信息
72   - loadRoadsData();
73   -
74   - //加载前置进站围栏
75   - loadPremiseGeoData();
76   - }
77   -
78   - public static List<StationRoute> getStationRoute(String lineCode, int directions) {
79   - return stationCacheMap.get(lineCode + "_" + directions);
80   - }
81   -
82   - public static StationRoute getRouteCode(GpsEntity gps) {
83   - return routeCodeMap.get(gps.getLineId() + "_" + gps.getUpDown() + "_" + gps.getStopNo());
84   - }
85   -
86   - public static Double speedLimit(String lineCode){
87   - return speedLimitMap.get(lineCode);
88   - }
89   -
90   - public static List<CtLineString> getLineStringList(GpsEntity gps){
91   - return sectionCacheMap.get(gps.getLineId() + "_" + gps.getUpDown());
92   - }
93   -
94   - private void loadStationRoutesData(){
95   - String sql = "select r.LINE_CODE,r.DIRECTIONS,r.STATION_CODE,r.STATION_MARK,s.SHAPES_TYPE,s.G_LONX,s.G_LATY,ST_AsText(s.G_POLYGON_GRID) as G_POLYGON_GRID,s.RADIUS, r.STATION_ROUTE_CODE,s.STATION_NAME from bsth_c_stationroute r left join bsth_c_station s on r.station=s.id where r.destroy=0 order by r.station_route_code";
96   - List<StationRoute> routeList = jdbcTemplate.query(sql, new RowMapper<StationRoute>() {
97   -
98   - @Override
99   - public StationRoute mapRow(ResultSet rs, int rowNum) throws SQLException {
100   - StationRoute sRoute = new StationRoute();
101   - sRoute.setCode(rs.getString("STATION_CODE"));
102   - sRoute.setLineCode(rs.getString("LINE_CODE"));
103   - sRoute.setDirections(rs.getInt("DIRECTIONS"));
104   - sRoute.setPoint(new Point(rs.getFloat("G_LONX"), rs.getFloat("G_LATY")));
105   - sRoute.setRadius(rs.getFloat("RADIUS"));
106   - sRoute.setRouteSort(rs.getInt("STATION_ROUTE_CODE"));
107   - sRoute.setMark(rs.getString("STATION_MARK"));
108   - sRoute.setName(rs.getString("STATION_NAME"));
109   -
110   - String shapesType = rs.getString("SHAPES_TYPE");
111   - //多边形电子围栏
112   - if (StringUtils.isNotEmpty(shapesType) && shapesType.equals("d"))
113   - sRoute.setPolygon(parsePolygon(rs.getString("G_POLYGON_GRID")));
114   - return sRoute;
115   - }
116   - });
117   -
118   - //按线路和走向分组
119   - if (routeList.size() > 0) {
120   - ArrayListMultimap<String, StationRoute> tempMap = ArrayListMultimap.create();
121   - Map<String, StationRoute> codeMap = new HashMap<>(routeList.size());
122   - for (StationRoute sr : routeList) {
123   - tempMap.put(sr.getLineCode() + "_" + sr.getDirections(), sr);
124   - //站点编码 ——> 和路由顺序对照
125   - codeMap.put(sr.getLineCode() + "_" + sr.getDirections() + "_" + sr.getCode(), sr);
126   - }
127   -
128   - StationRouteComp srCom = new StationRouteComp();
129   - //连接路由
130   - Set<String> set = tempMap.keySet();
131   - for (String key : set) {
132   - Collections.sort(tempMap.get(key), srCom);
133   - connectStationRoute(tempMap.get(key));
134   - }
135   - stationCacheMap = tempMap;
136   - routeCodeMap = codeMap;
137   - }
138   - }
139   -
140   - private void loadTccMapData(){
141   - //加载停车场数据
142   - String sql = "select PARK_CODE, ST_AsText(G_PARK_POINT) as G_PARK_POINT from bsth_c_car_park where park_code is not null and b_park_point is not null";
143   - List<Map<String, Object>> tccList = jdbcTemplate.queryForList(sql);
144   - Map<String, Polygon> tccTempMap = new HashMap<>();
145   -
146   - Polygon polygon;
147   - for (Map<String, Object> tMap : tccList) {
148   -
149   - try {
150   - polygon = parsePolygon(tMap.get("G_PARK_POINT").toString());
151   - tccTempMap.put(tMap.get("PARK_CODE").toString()
152   - , polygon);
153   - } catch (Exception e) {
154   - logger.error("停车场:" + tMap.get("PARK_CODE"), e);
155   - }
156   - }
157   - if (tccTempMap.size() > 0){
158   - tccMap = tccTempMap;
159   - }
160   - }
161   -
162   - private void loadSpeedLimit(){
163   - //加载线路限速信息
164   - String sql = "select l.LINE_CODE,i.SPEEDING from bsth_c_line_information i left join bsth_c_line l on i.line=l.id where i.speed_limit is not null";
165   - List<Map<String, Object>> speedMap = jdbcTemplate.queryForList(sql);
166   - Map<String, Double> speedTempMap = new HashMap<>();
167   - for (Map<String, Object> tMap : speedMap) {
168   - try {
169   - speedTempMap.put(tMap.get("LINE_CODE").toString(), Double.parseDouble(tMap.get("SPEEDING").toString()));
170   - } catch (NumberFormatException e) {
171   - logger.error("speeding is null...");
172   - }
173   - }
174   - speedLimitMap = speedTempMap;
175   - }
176   -
177   - private void loadRoadsData() {
178   - //加载线路下路段空间数据
179   - String sql = "select r.LINE_CODE,r.SECTION_CODE,r.SECTIONROUTE_CODE,s.SECTION_NAME,ST_AsText(s.GSECTION_VECTOR) as GSECTION_VECTOR, r.DIRECTIONS, s.CROSES_ROAD from bsth_c_sectionroute r INNER JOIN bsth_c_section s on r.section=s.id where r.destroy=0 and GSECTION_VECTOR is not null order by line_code,directions,sectionroute_code";
180   - List<Map<String, Object>> secList = jdbcTemplate.queryForList(sql);
181   -
182   - String polygonStr, key;
183   - String[] coords;
184   - int i, len;
185   - ArrayListMultimap<String, CtLineString> sectionCacheTempMap = ArrayListMultimap.create();
186   - String[] temps1, temps2;
187   - CtLineString lineString;
188   - for (Map<String, Object> tMap : secList) {
189   - //空间数据映射
190   - polygonStr = tMap.get("GSECTION_VECTOR").toString();
191   - key = tMap.get("LINE_CODE") + "_" + tMap.get("DIRECTIONS");
192   -
193   - coords = polygonStr.substring(11, polygonStr.length() - 1).split(",");
194   - len = coords.length - 1;
195   - //每2个点连一条线
196   - for(i = 0; i < len; i ++){
197   - temps1 = coords[i].split(" ");
198   - temps2 = coords[i + 1].split(" ");
199   -
200   - lineString = new CtLineString();
201   - lineString.setS(new Point(Float.parseFloat(temps1[0]), Float.parseFloat(temps1[1])));
202   - lineString.setE(new Point(Float.parseFloat(temps2[0]), Float.parseFloat(temps2[1])));
203   -
204   - sectionCacheTempMap.put(key, lineString);
205   - }
206   - }
207   -
208   - if(sectionCacheTempMap.size() > 0)
209   - sectionCacheMap = sectionCacheTempMap;
210   -
211   - Map<String, String> sectionCode2NameTemp = new HashMap<>();
212   -
213   - //加载全量路段编码和名称对照
214   - sql = "select SECTION_CODE,SECTION_NAME,CROSES_ROAD from bsth_c_section";
215   - secList = jdbcTemplate.queryForList(sql);
216   - String name = null, code;
217   - for (Map<String, Object> tMap : secList) {
218   - if(tMap.get("CROSES_ROAD") != null && StringUtils.isNotEmpty(tMap.get("CROSES_ROAD").toString()))
219   - name = tMap.get("CROSES_ROAD").toString();
220   - else if(tMap.get("SECTION_NAME") != null && StringUtils.isNotEmpty(tMap.get("SECTION_NAME").toString()))
221   - name = tMap.get("SECTION_NAME").toString();
222   -
223   - code = tMap.get("SECTION_CODE").toString();
224   - sectionCode2NameTemp.put(code, name);
225   - }
226   - if(sectionCode2NameTemp.size() > 0)
227   - sectionCode2Name = sectionCode2NameTemp;
228   - }
229   -
230   - private void loadPremiseGeoData() {
231   - ArrayListMultimap<String, PreconditionGeo> premiseGeoMapCopy = ArrayListMultimap.create();
232   -
233   - String sql = "select * from bsth_f_geo_premise";
234   - List<PreconditionGeo> list = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(PreconditionGeo.class));
235   -
236   - List<String> coordList;
237   - String[] cs;
238   - Point point;
239   - List<Point> ps;
240   - StationRoute sr;
241   - for(PreconditionGeo p : list){
242   - try{
243   - sr = routeCodeMap.get(p.getLineCode()+"_"+p.getUpDown()+"_"+p.getStationCode());
244   - p.setOrder(sr.getRouteSort());
245   - //polygon
246   - ps = new ArrayList<>();
247   - coordList = Splitter.on(",").trimResults().splitToList(p.getCoords());
248   - for(String c : coordList){
249   - cs = c.split(" ");
250   - point = new Point(Double.parseDouble(cs[0]), Double.parseDouble(cs[1]));
251   - ps.add(point);
252   - }
253   -
254   - p.setPolygon(new Polygon(ps));
255   -
256   - sr.setPremise(true);
257   - //按线路,走向分组
258   - premiseGeoMapCopy.put(p.getLineCode()+"_"+p.getUpDown(), p);
259   - }catch (Exception e){
260   - logger.error("", e);
261   - }
262   - }
263   -
264   - //排序
265   - Set<String> ks = premiseGeoMapCopy.keySet();
266   - PreconditionGeoComp comp = new PreconditionGeoComp();
267   - for(String k : ks){
268   - Collections.sort(premiseGeoMapCopy.get(k), comp);
269   - }
270   -
271   - premiseGeoMap = premiseGeoMapCopy;
272   - }
273   -
274   - public Polygon parsePolygon(String polygonStr) {
275   - String[] coords = polygonStr.substring(9, polygonStr.length() - 2).split(","), temps;
276   -
277   - List<Point> cds = new ArrayList<>(coords.length);
278   - int len = coords.length;
279   - for (int i = 0; i < len; i++) {
280   - temps = coords[i].split(" ");
281   - cds.add(new Point(Float.parseFloat(temps[0]), Float.parseFloat(temps[1])));
282   - }
283   - return new Polygon(cds);
284   - }
285   -
286   - private void connectStationRoute(List<StationRoute> list) {
287   - int size = list.size();
288   - StationRoute sr = null;
289   - for (int i = 0; i < size; i++) {
290   - sr = list.get(i);
291   - //上一个
292   - if (i > 0)
293   - sr.setPrve(list.get(i - 1));
294   - //下一个
295   - if (i < size - 1)
296   - sr.setNext(list.get(i + 1));
297   - }
298   - }
299   -
300   - /**
301   - * 是否是环线
302   - * @param lineId
303   - * @return
304   - */
305   - public static boolean isLoopLine(String lineId) {
306   - List<StationRoute> srs = getStationRoute(lineId , 0);
307   - if(srs.get(0).getName().equals(srs.get(srs.size()- 1).getName())
308   - && getStationRoute(lineId , 1).size()==2)
309   - return true;
310   - return false;
311   - }
312   -
313   - private static class PreconditionGeoComp implements Comparator<PreconditionGeo>{
314   -
315   - @Override
316   - public int compare(PreconditionGeo p1, PreconditionGeo p2) {
317   - return p1.getOrder() - p2.getOrder();
318   - }
319   - }
320   -
321   - public static Map<String, String> sectionCode2NameMap(){
322   - return sectionCode2Name;
323   - }
  1 +package com.bsth.data.gpsdata_v2.cache;
  2 +
  3 +import com.bsth.data.gpsdata_v2.entity.CtLineString;
  4 +import com.bsth.data.gpsdata_v2.entity.GpsEntity;
  5 +import com.bsth.data.gpsdata_v2.entity.PreconditionGeo;
  6 +import com.bsth.data.gpsdata_v2.entity.StationRoute;
  7 +import com.bsth.data.gpsdata_v2.utils.StationRouteComp;
  8 +import com.bsth.util.Geo.Point;
  9 +import com.bsth.util.Geo.Polygon;
  10 +import com.google.common.base.Splitter;
  11 +import com.google.common.collect.ArrayListMultimap;
  12 +import org.apache.commons.lang3.StringUtils;
  13 +import org.slf4j.Logger;
  14 +import org.slf4j.LoggerFactory;
  15 +import org.springframework.beans.factory.annotation.Autowired;
  16 +import org.springframework.jdbc.core.BeanPropertyRowMapper;
  17 +import org.springframework.jdbc.core.JdbcTemplate;
  18 +import org.springframework.jdbc.core.RowMapper;
  19 +import org.springframework.stereotype.Component;
  20 +
  21 +import java.sql.ResultSet;
  22 +import java.sql.SQLException;
  23 +import java.util.*;
  24 +
  25 +/**
  26 + * 空间数据缓存
  27 + * Created by panzhao on 2017/11/15.
  28 + */
  29 +@Component
  30 +public class GeoCacheData {
  31 +
  32 + static Logger logger = LoggerFactory.getLogger(GeoCacheData.class);
  33 +
  34 + /**
  35 + * 线路路段走向
  36 + */
  37 + private static ArrayListMultimap<String, CtLineString> sectionCacheMap;
  38 + /**
  39 + * 路段编码和名称对照
  40 + */
  41 + private static Map<String, String> sectionCode2Name;
  42 + /**
  43 + * 线路站点路由
  44 + */
  45 + private static ArrayListMultimap<String, StationRoute> stationCacheMap;
  46 + /**
  47 + * 线路前置进站围栏
  48 + */
  49 + public static ArrayListMultimap<String, PreconditionGeo> premiseGeoMap;
  50 + /**
  51 + * 线路_上下行_站点编码 ——> 站点
  52 + */
  53 + private static Map<String, StationRoute> routeCodeMap;
  54 + /**
  55 + * 停车场
  56 + */
  57 + public static Map<String, Polygon> tccMap;
  58 + /**
  59 + * 线路限速信息
  60 + */
  61 + private static Map<String, Double> speedLimitMap;
  62 +
  63 + @Autowired
  64 + JdbcTemplate jdbcTemplate;
  65 +
  66 + public void loadData() {
  67 + loadStationRoutesData();
  68 + loadTccMapData();
  69 + loadSpeedLimit();
  70 +
  71 + //加载路段信息
  72 + loadRoadsData();
  73 +
  74 + //加载前置进站围栏
  75 + loadPremiseGeoData();
  76 + }
  77 +
  78 + public static List<StationRoute> getStationRoute(String lineCode, int directions) {
  79 + return stationCacheMap.get(lineCode + "_" + directions);
  80 + }
  81 +
  82 + public static StationRoute getRouteCode(GpsEntity gps) {
  83 + return routeCodeMap.get(gps.getLineId() + "_" + gps.getUpDown() + "_" + gps.getStopNo());
  84 + }
  85 +
  86 + public static Double speedLimit(String lineCode){
  87 + return speedLimitMap.get(lineCode);
  88 + }
  89 +
  90 + public static List<CtLineString> getLineStringList(GpsEntity gps){
  91 + return sectionCacheMap.get(gps.getLineId() + "_" + gps.getUpDown());
  92 + }
  93 +
  94 + private void loadStationRoutesData(){
  95 + String sql = "select r.LINE_CODE,r.DIRECTIONS,r.STATION_CODE,r.STATION_MARK,s.SHAPES_TYPE,s.G_LONX,s.G_LATY,ST_AsText(s.G_POLYGON_GRID) as G_POLYGON_GRID,s.RADIUS, r.STATION_ROUTE_CODE,s.STATION_NAME from bsth_c_stationroute r left join bsth_c_station s on r.station=s.id where r.destroy=0 order by r.station_route_code";
  96 + List<StationRoute> routeList = jdbcTemplate.query(sql, new RowMapper<StationRoute>() {
  97 +
  98 + @Override
  99 + public StationRoute mapRow(ResultSet rs, int rowNum) throws SQLException {
  100 + StationRoute sRoute = new StationRoute();
  101 + sRoute.setCode(rs.getString("STATION_CODE"));
  102 + sRoute.setLineCode(rs.getString("LINE_CODE"));
  103 + sRoute.setDirections(rs.getInt("DIRECTIONS"));
  104 + sRoute.setPoint(new Point(rs.getFloat("G_LONX"), rs.getFloat("G_LATY")));
  105 + sRoute.setRadius(rs.getFloat("RADIUS"));
  106 + sRoute.setRouteSort(rs.getInt("STATION_ROUTE_CODE"));
  107 + sRoute.setMark(rs.getString("STATION_MARK"));
  108 + sRoute.setName(rs.getString("STATION_NAME"));
  109 +
  110 + String shapesType = rs.getString("SHAPES_TYPE");
  111 + //多边形电子围栏
  112 + if (StringUtils.isNotEmpty(shapesType) && shapesType.equals("d"))
  113 + sRoute.setPolygon(parsePolygon(rs.getString("G_POLYGON_GRID")));
  114 + return sRoute;
  115 + }
  116 + });
  117 +
  118 + //按线路和走向分组
  119 + if (routeList.size() > 0) {
  120 + ArrayListMultimap<String, StationRoute> tempMap = ArrayListMultimap.create();
  121 + Map<String, StationRoute> codeMap = new HashMap<>(routeList.size());
  122 + for (StationRoute sr : routeList) {
  123 + tempMap.put(sr.getLineCode() + "_" + sr.getDirections(), sr);
  124 + //站点编码 ——> 和路由顺序对照
  125 + codeMap.put(sr.getLineCode() + "_" + sr.getDirections() + "_" + sr.getCode(), sr);
  126 + }
  127 +
  128 + StationRouteComp srCom = new StationRouteComp();
  129 + //连接路由
  130 + Set<String> set = tempMap.keySet();
  131 + for (String key : set) {
  132 + Collections.sort(tempMap.get(key), srCom);
  133 + connectStationRoute(tempMap.get(key));
  134 + }
  135 + stationCacheMap = tempMap;
  136 + routeCodeMap = codeMap;
  137 + }
  138 + }
  139 +
  140 + private void loadTccMapData(){
  141 + //加载停车场数据
  142 + String sql = "select PARK_CODE, ST_AsText(G_PARK_POINT) as G_PARK_POINT from bsth_c_car_park where park_code is not null and b_park_point is not null";
  143 + List<Map<String, Object>> tccList = jdbcTemplate.queryForList(sql);
  144 + Map<String, Polygon> tccTempMap = new HashMap<>();
  145 +
  146 + Polygon polygon;
  147 + for (Map<String, Object> tMap : tccList) {
  148 +
  149 + try {
  150 + polygon = parsePolygon(tMap.get("G_PARK_POINT").toString());
  151 + tccTempMap.put(tMap.get("PARK_CODE").toString()
  152 + , polygon);
  153 + } catch (Exception e) {
  154 + logger.error("停车场:" + tMap.get("PARK_CODE"), e);
  155 + }
  156 + }
  157 + if (tccTempMap.size() > 0){
  158 + tccMap = tccTempMap;
  159 + }
  160 + }
  161 +
  162 + private void loadSpeedLimit(){
  163 + //加载线路限速信息
  164 + String sql = "select l.LINE_CODE,i.SPEEDING from bsth_c_line_information i left join bsth_c_line l on i.line=l.id where i.speed_limit is not null";
  165 + List<Map<String, Object>> speedMap = jdbcTemplate.queryForList(sql);
  166 + Map<String, Double> speedTempMap = new HashMap<>();
  167 + for (Map<String, Object> tMap : speedMap) {
  168 + try {
  169 + speedTempMap.put(tMap.get("LINE_CODE").toString(), Double.parseDouble(tMap.get("SPEEDING").toString()));
  170 + } catch (NumberFormatException e) {
  171 + logger.error("speeding is null...");
  172 + }
  173 + }
  174 + speedLimitMap = speedTempMap;
  175 + }
  176 +
  177 + private void loadRoadsData() {
  178 + //加载线路下路段空间数据
  179 + String sql = "select r.LINE_CODE,r.SECTION_CODE,r.SECTIONROUTE_CODE,s.SECTION_NAME,ST_AsText(s.GSECTION_VECTOR) as GSECTION_VECTOR, r.DIRECTIONS, s.CROSES_ROAD from bsth_c_sectionroute r INNER JOIN bsth_c_section s on r.section=s.id where r.destroy=0 and GSECTION_VECTOR is not null order by line_code,directions,sectionroute_code";
  180 + List<Map<String, Object>> secList = jdbcTemplate.queryForList(sql);
  181 +
  182 + String polygonStr, key;
  183 + String[] coords;
  184 + int i, len;
  185 + ArrayListMultimap<String, CtLineString> sectionCacheTempMap = ArrayListMultimap.create();
  186 + String[] temps1, temps2;
  187 + CtLineString lineString;
  188 + for (Map<String, Object> tMap : secList) {
  189 + //空间数据映射
  190 + polygonStr = tMap.get("GSECTION_VECTOR").toString();
  191 + key = tMap.get("LINE_CODE") + "_" + tMap.get("DIRECTIONS");
  192 +
  193 + coords = polygonStr.substring(11, polygonStr.length() - 1).split(",");
  194 + len = coords.length - 1;
  195 + //每2个点连一条线
  196 + for(i = 0; i < len; i ++){
  197 + temps1 = coords[i].split(" ");
  198 + temps2 = coords[i + 1].split(" ");
  199 +
  200 + lineString = new CtLineString();
  201 + lineString.setS(new Point(Float.parseFloat(temps1[0]), Float.parseFloat(temps1[1])));
  202 + lineString.setE(new Point(Float.parseFloat(temps2[0]), Float.parseFloat(temps2[1])));
  203 +
  204 + sectionCacheTempMap.put(key, lineString);
  205 + }
  206 + }
  207 +
  208 + if(sectionCacheTempMap.size() > 0)
  209 + sectionCacheMap = sectionCacheTempMap;
  210 +
  211 + Map<String, String> sectionCode2NameTemp = new HashMap<>();
  212 +
  213 + //加载全量路段编码和名称对照
  214 + sql = "select SECTION_CODE,SECTION_NAME,CROSES_ROAD from bsth_c_section";
  215 + secList = jdbcTemplate.queryForList(sql);
  216 + String name = null, code;
  217 + for (Map<String, Object> tMap : secList) {
  218 + if(tMap.get("CROSES_ROAD") != null && StringUtils.isNotEmpty(tMap.get("CROSES_ROAD").toString()))
  219 + name = tMap.get("CROSES_ROAD").toString();
  220 + else if(tMap.get("SECTION_NAME") != null && StringUtils.isNotEmpty(tMap.get("SECTION_NAME").toString()))
  221 + name = tMap.get("SECTION_NAME").toString();
  222 +
  223 + code = tMap.get("SECTION_CODE").toString();
  224 + sectionCode2NameTemp.put(code, name);
  225 + }
  226 + if(sectionCode2NameTemp.size() > 0)
  227 + sectionCode2Name = sectionCode2NameTemp;
  228 + }
  229 +
  230 + private void loadPremiseGeoData() {
  231 + ArrayListMultimap<String, PreconditionGeo> premiseGeoMapCopy = ArrayListMultimap.create();
  232 +
  233 + String sql = "select * from bsth_f_geo_premise";
  234 + List<PreconditionGeo> list = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(PreconditionGeo.class));
  235 +
  236 + List<String> coordList;
  237 + String[] cs;
  238 + Point point;
  239 + List<Point> ps;
  240 + StationRoute sr;
  241 + for(PreconditionGeo p : list){
  242 + try{
  243 + sr = routeCodeMap.get(p.getLineCode()+"_"+p.getUpDown()+"_"+p.getStationCode());
  244 + p.setOrder(sr.getRouteSort());
  245 + //polygon
  246 + ps = new ArrayList<>();
  247 + coordList = Splitter.on(",").trimResults().splitToList(p.getCoords());
  248 + for(String c : coordList){
  249 + cs = c.split(" ");
  250 + point = new Point(Double.parseDouble(cs[0]), Double.parseDouble(cs[1]));
  251 + ps.add(point);
  252 + }
  253 +
  254 + p.setPolygon(new Polygon(ps));
  255 +
  256 + sr.setPremise(true);
  257 + //按线路,走向分组
  258 + premiseGeoMapCopy.put(p.getLineCode()+"_"+p.getUpDown(), p);
  259 + }catch (Exception e){
  260 + logger.error("", e);
  261 + }
  262 + }
  263 +
  264 + //排序
  265 + Set<String> ks = premiseGeoMapCopy.keySet();
  266 + PreconditionGeoComp comp = new PreconditionGeoComp();
  267 + for(String k : ks){
  268 + Collections.sort(premiseGeoMapCopy.get(k), comp);
  269 + }
  270 +
  271 + premiseGeoMap = premiseGeoMapCopy;
  272 + }
  273 +
  274 + public Polygon parsePolygon(String polygonStr) {
  275 + String[] coords = polygonStr.substring(9, polygonStr.length() - 2).split(","), temps;
  276 +
  277 + List<Point> cds = new ArrayList<>(coords.length);
  278 + int len = coords.length;
  279 + for (int i = 0; i < len; i++) {
  280 + temps = coords[i].split(" ");
  281 + cds.add(new Point(Float.parseFloat(temps[0]), Float.parseFloat(temps[1])));
  282 + }
  283 + return new Polygon(cds);
  284 + }
  285 +
  286 + private void connectStationRoute(List<StationRoute> list) {
  287 + int size = list.size();
  288 + StationRoute sr = null;
  289 + for (int i = 0; i < size; i++) {
  290 + sr = list.get(i);
  291 + //上一个
  292 + if (i > 0)
  293 + sr.setPrve(list.get(i - 1));
  294 + //下一个
  295 + if (i < size - 1)
  296 + sr.setNext(list.get(i + 1));
  297 + }
  298 + }
  299 +
  300 + /**
  301 + * 是否是环线
  302 + * @param lineId
  303 + * @return
  304 + */
  305 + public static boolean isLoopLine(String lineId) {
  306 + List<StationRoute> srs = getStationRoute(lineId , 0);
  307 + if(srs.get(0).getName().equals(srs.get(srs.size()- 1).getName())
  308 + && getStationRoute(lineId , 1).size()==2)
  309 + return true;
  310 + return false;
  311 + }
  312 +
  313 + private static class PreconditionGeoComp implements Comparator<PreconditionGeo>{
  314 +
  315 + @Override
  316 + public int compare(PreconditionGeo p1, PreconditionGeo p2) {
  317 + return p1.getOrder() - p2.getOrder();
  318 + }
  319 + }
  320 +
  321 + public static Map<String, String> sectionCode2NameMap(){
  322 + return sectionCode2Name;
  323 + }
324 324 }
325 325 \ No newline at end of file
... ...
src/main/java/com/bsth/data/gpsdata_v2/handlers/InStationProcess.java
1   -package com.bsth.data.gpsdata_v2.handlers;
2   -
3   -import com.bsth.data.LineConfigData;
4   -import com.bsth.data.gpsdata_v2.cache.GeoCacheData;
5   -import com.bsth.data.gpsdata_v2.cache.GpsCacheData;
6   -import com.bsth.data.gpsdata_v2.entity.GpsEntity;
7   -import com.bsth.data.gpsdata_v2.entity.StationRoute;
8   -import com.bsth.data.gpsdata_v2.status_manager.GpsStatusManager;
9   -import com.bsth.data.gpsdata_v2.utils.GeoUtils;
10   -import com.bsth.data.msg_queue.DirectivePushQueue;
11   -import com.bsth.data.schedule.DayOfSchedule;
12   -import com.bsth.data.schedule.late_adjust.LateAdjustHandle;
13   -import com.bsth.entity.realcontrol.LineConfig;
14   -import com.bsth.entity.realcontrol.ScheduleRealInfo;
15   -import com.bsth.websocket.handler.SendUtils;
16   -import org.apache.commons.lang3.StringUtils;
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.util.List;
23   -
24   -/**
25   - * 车辆到站处理程序
26   - * Created by panzhao on 2017/11/16.
27   - */
28   -@Component
29   -public class InStationProcess {
30   -
31   - @Autowired
32   - DayOfSchedule dayOfSchedule;
33   -
34   - @Autowired
35   - LineConfigData lineConfigData;
36   -
37   - @Autowired
38   - SendUtils sendUtils;
39   -
40   - @Autowired
41   - GpsStatusManager gpsStatusManager;
42   -
43   - Logger logger = LoggerFactory.getLogger(this.getClass());
44   -
45   - public void process(GpsEntity gps) {
46   - GpsEntity prev = GpsCacheData.getPrev(gps);
47   -
48   - if(null == prev)
49   - return;
50   -
51   - //从站外到站内
52   - if(prev.getInstation() == 0 && gps.getInstation() > 0){
53   - inStation(gps, prev);
54   - }
55   -
56   - //从站内到另一个站内
57   - if(prev.getInstation() == 1 && gps.getInstation() == 1
58   - && !prev.getStopNo().equals(gps.getStopNo())
59   - && !prev.getStation().getName().equals(gps.getStation().getName()))
60   - inStation(gps, prev);
61   -
62   - //从场内到站内
63   - if(prev.getInstation() == 2 && gps.getInstation() == 1){
64   - inStation(gps, prev);
65   - }
66   -
67   - //被起点站覆盖的情况下进场
68   - if(isInPark(gps, prev))
69   - inStation(gps, prev);
70   - }
71   -
72   - /**
73   - * 进站
74   - *
75   - * @param gps
76   - * @param prev
77   - */
78   - private void inStation(GpsEntity gps, GpsEntity prev) {
79   - ScheduleRealInfo sch = dayOfSchedule.executeCurr(gps.getNbbm());
80   - boolean flow = true;
81   - //要经过2个中途站才能进
82   - int count = GpsCacheData.lastInTrailsSize(gps);
83   - List<StationRoute> routes = GeoCacheData.getStationRoute(gps.getLineId(), gps.getUpDown());
84   - if (isNotInOut(sch) && gps.getInstation() == 1 && routes.size() > 4
85   - && count < 2) {
86   - logger.info("没有进中途站,拒绝进站... -" + gps.getNbbm() + " -time:" + gps.getTimestamp());
87   - flow = false;
88   - }
89   -
90   - boolean isEnd = false;
91   -
92   - //进终点
93   - if (flow && null != sch && sch.getZdzCode().equals(gps.getStopNo())) {
94   - inEndStation(sch, gps);
95   - isEnd = true;
96   - }
97   -
98   - GpsCacheData.in(gps, isEnd);
99   - }
100   -
101   - private boolean isNotInOut(ScheduleRealInfo sch) {
102   - return !sch.getBcType().equals("in") && !sch.getBcType().equals("out");
103   - }
104   -
105   - /**
106   - * 进班次终点
107   - *
108   - * @param gps
109   - */
110   - private void inEndStation(ScheduleRealInfo sch, GpsEntity gps) {
111   - String nbbm = sch.getClZbh();
112   - //校验进站前置约束
113   - if (!validInPremise(gps))
114   - return;
115   -
116   - //实达时间不覆盖
117   - if (StringUtils.isNotEmpty(sch.getZdsjActual()))
118   - return;
119   -
120   - //应用到离站缓冲区设置参数
121   - long rsT = lineConfigData.applyIn(sch, gps.getTimestamp());
122   -
123   - sch.setZdsjActualAll(rsT);
124   - sch.setSiginCompate(2);
125   - //通知误点停靠程序,有车辆到站
126   - LateAdjustHandle.carArrive(gps);
127   -
128   - //持久化
129   - dayOfSchedule.save(sch);
130   -
131   - //车辆的下一个班次
132   - ScheduleRealInfo next = dayOfSchedule.next(sch);
133   - if (next != null) {
134   - dayOfSchedule.addExecPlan(next);
135   - inStationAndInPark(sch, next);//进站既进场
136   - }
137   -
138   - //路牌的下一个班次,页面显示起点实际到达时间
139   - ScheduleRealInfo lpNext = dayOfSchedule.nextByLp(sch);
140   - if (lpNext != null) {
141   - lpNext.setQdzArrDatesj(sch.getZdsjActual());
142   - }
143   -
144   - //已完成班次数
145   - int doneSum = dayOfSchedule.doneSum(nbbm);
146   - //webSocket
147   - sendUtils.sendZdsj(sch, lpNext, doneSum);
148   -
149   - logger.info("车辆:" + nbbm + " 班次:" + sch.getDfsj() + "到终点, 时间:" + sch.getZdsjActual());
150   -
151   - //清除车辆误点调整监听
152   - LateAdjustHandle.remove(nbbm);
153   -
154   - //将gps转换成下一个班次走向的站内信号(应对只有一个站内信号 即 发出时)
155   - transformUpDown(gps, next);
156   -
157   - //下发调度指令
158   - DirectivePushQueue.put6002(next, doneSum, "到站@系统");
159   -
160   - //套跑 -下发线路切换指令
161   - if (null != next && !next.getXlBm().equals(sch.getXlBm())) {
162   - gpsStatusManager.changeLine(next.getClZbh(), next.getXlBm(), "套跑@系统");
163   - }
164   -
165   -
166   - if (null == next && gps.isService())
167   - nonService(sch, "结束@系统");//班次结束
168   - else if (null != next && dayOfSchedule.emptyService(next))
169   - nonService(sch, "空驶@系统");//下一班非营运
170   - }
171   -
172   - /**
173   - * 校验进站前置约束
174   - *
175   - * @param gps
176   - * @return
177   - */
178   - private boolean validInPremise(GpsEntity gps) {
179   - StationRoute sr = gps.getStation();
180   - if (null == sr || !sr.isPremise())
181   - return true;
182   -
183   - String premiseCode = gps.getPremiseCode();
184   -
185   - if (StringUtils.isNotEmpty(premiseCode) && premiseCode.equals(gps.getStopNo())) {
186   - logger.info("满足前置进站约束 " + premiseCode);
187   - return true;
188   - } else {
189   - logger.info(gps.getNbbm() + " not premiseCode 不满足前置进站约束 " + premiseCode);
190   - }
191   - return false;
192   - }
193   -
194   - /**
195   - * 进站既进场
196   - *
197   - * @param sch
198   - */
199   - private void inStationAndInPark(ScheduleRealInfo sch, ScheduleRealInfo next) {
200   - LineConfig config = lineConfigData.get(sch.getXlBm());
201   - //限定出站既出场的停车场
202   - String park = config.getTwinsPark();
203   - boolean limitPark = StringUtils.isNotEmpty(park);
204   -
205   -
206   - if (next.getBcType().equals("in") && config.getOutConfig() == 2 && isEmptyMileage(next)
207   - && (!limitPark || park.equals(next.getZdzCode()))) {
208   -
209   - endSch(next, sch.getZdsjActualTime());
210   -
211   - sendUtils.refreshSch(next);
212   - dayOfSchedule.save(next);
213   -
214   - //分班的时候,需要再跳过1个班次
215   - next = dayOfSchedule.next(next);
216   - if (next != null)
217   - dayOfSchedule.addExecPlan(next);
218   -
219   - //进场,切换成非营运状态
220   - nonService(sch, "进场@系统");
221   - }
222   - }
223   -
224   -
225   - private boolean isEmptyMileage(ScheduleRealInfo sch) {
226   - return sch.getBcsj() == 0 || sch.getJhlcOrig().intValue() == 0;
227   - }
228   -
229   -
230   - /**
231   - * 切换为非营运状态
232   - *
233   - * @param sch
234   - * @param sender
235   - */
236   - private void nonService(ScheduleRealInfo sch, String sender) {
237   - gpsStatusManager.changeServiceState(sch.getClZbh(), sch.getXlDir(), 1, sender);
238   - }
239   -
240   - private void endSch(ScheduleRealInfo sch, Long t) {
241   - sch.setFcsjActualAll(t);
242   - sch.setZdsjActualAll(t);
243   - }
244   -
245   - private void transformUpDown(GpsEntity gps, ScheduleRealInfo sch) {
246   - if (null == sch)
247   - return;
248   - byte upDown = Byte.parseByte(sch.getXlDir());
249   - //gps 切换走向
250   - gps.setUpDown(upDown);
251   - gps.setPremiseCode(null);
252   -
253   - List<StationRoute> srs = GeoCacheData.getStationRoute(sch.getXlBm(), upDown);
254   - StationRoute station = GeoUtils.gpsInStation(gps, srs);
255   - if (station != null) {
256   - gps.setStopNo(station.getCode());
257   - }
258   - }
259   -
260   - private boolean isInPark(GpsEntity gps, GpsEntity prve){
261   - if(StringUtils.isNotEmpty(gps.getCarparkNo()) && StringUtils.isEmpty(prve.getCarparkNo()))
262   - return true;
263   - return false;
264   - }
  1 +package com.bsth.data.gpsdata_v2.handlers;
  2 +
  3 +import com.bsth.data.LineConfigData;
  4 +import com.bsth.data.gpsdata_v2.cache.GeoCacheData;
  5 +import com.bsth.data.gpsdata_v2.cache.GpsCacheData;
  6 +import com.bsth.data.gpsdata_v2.entity.GpsEntity;
  7 +import com.bsth.data.gpsdata_v2.entity.StationRoute;
  8 +import com.bsth.data.gpsdata_v2.status_manager.GpsStatusManager;
  9 +import com.bsth.data.gpsdata_v2.utils.GeoUtils;
  10 +import com.bsth.data.msg_queue.DirectivePushQueue;
  11 +import com.bsth.data.schedule.DayOfSchedule;
  12 +import com.bsth.data.schedule.late_adjust.LateAdjustHandle;
  13 +import com.bsth.entity.realcontrol.LineConfig;
  14 +import com.bsth.entity.realcontrol.ScheduleRealInfo;
  15 +import com.bsth.websocket.handler.SendUtils;
  16 +import org.apache.commons.lang3.StringUtils;
  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.util.List;
  23 +
  24 +/**
  25 + * 车辆到站处理程序
  26 + * Created by panzhao on 2017/11/16.
  27 + */
  28 +@Component
  29 +public class InStationProcess {
  30 +
  31 + @Autowired
  32 + DayOfSchedule dayOfSchedule;
  33 +
  34 + @Autowired
  35 + LineConfigData lineConfigData;
  36 +
  37 + @Autowired
  38 + SendUtils sendUtils;
  39 +
  40 + @Autowired
  41 + GpsStatusManager gpsStatusManager;
  42 +
  43 + Logger logger = LoggerFactory.getLogger(this.getClass());
  44 +
  45 + public void process(GpsEntity gps) {
  46 + GpsEntity prev = GpsCacheData.getPrev(gps);
  47 +
  48 + if(null == prev)
  49 + return;
  50 +
  51 + //从站外到站内
  52 + if(prev.getInstation() == 0 && gps.getInstation() > 0){
  53 + inStation(gps, prev);
  54 + }
  55 +
  56 + //从站内到另一个站内
  57 + if(prev.getInstation() == 1 && gps.getInstation() == 1
  58 + && !prev.getStopNo().equals(gps.getStopNo())
  59 + && !prev.getStation().getName().equals(gps.getStation().getName()))
  60 + inStation(gps, prev);
  61 +
  62 + //从场内到站内
  63 + if(prev.getInstation() == 2 && gps.getInstation() == 1){
  64 + inStation(gps, prev);
  65 + }
  66 +
  67 + //被起点站覆盖的情况下进场
  68 + if(isInPark(gps, prev))
  69 + inStation(gps, prev);
  70 + }
  71 +
  72 + /**
  73 + * 进站
  74 + *
  75 + * @param gps
  76 + * @param prev
  77 + */
  78 + private void inStation(GpsEntity gps, GpsEntity prev) {
  79 + ScheduleRealInfo sch = dayOfSchedule.executeCurr(gps.getNbbm());
  80 + boolean flow = true;
  81 + //要经过2个中途站才能进
  82 + int count = GpsCacheData.lastInTrailsSize(gps);
  83 + List<StationRoute> routes = GeoCacheData.getStationRoute(gps.getLineId(), gps.getUpDown());
  84 + if (isNotInOut(sch) && gps.getInstation() == 1 && routes.size() > 4
  85 + && count < 2) {
  86 + logger.info("没有进中途站,拒绝进站... -" + gps.getNbbm() + " -time:" + gps.getTimestamp());
  87 + flow = false;
  88 + }
  89 +
  90 + boolean isEnd = false;
  91 +
  92 + //进终点
  93 + if (flow && null != sch && sch.getZdzCode().equals(gps.getStopNo())) {
  94 + inEndStation(sch, gps);
  95 + isEnd = true;
  96 + }
  97 +
  98 + GpsCacheData.in(gps, isEnd);
  99 + }
  100 +
  101 + private boolean isNotInOut(ScheduleRealInfo sch) {
  102 + return !sch.getBcType().equals("in") && !sch.getBcType().equals("out");
  103 + }
  104 +
  105 + /**
  106 + * 进班次终点
  107 + *
  108 + * @param gps
  109 + */
  110 + private void inEndStation(ScheduleRealInfo sch, GpsEntity gps) {
  111 + String nbbm = sch.getClZbh();
  112 + //校验进站前置约束
  113 + if (!validInPremise(gps))
  114 + return;
  115 +
  116 + //实达时间不覆盖
  117 + if (StringUtils.isNotEmpty(sch.getZdsjActual()))
  118 + return;
  119 +
  120 + //应用到离站缓冲区设置参数
  121 + long rsT = lineConfigData.applyIn(sch, gps.getTimestamp());
  122 +
  123 + sch.setZdsjActualAll(rsT);
  124 + sch.setSiginCompate(2);
  125 + //通知误点停靠程序,有车辆到站
  126 + LateAdjustHandle.carArrive(gps);
  127 +
  128 + //持久化
  129 + dayOfSchedule.save(sch);
  130 +
  131 + //车辆的下一个班次
  132 + ScheduleRealInfo next = dayOfSchedule.next(sch);
  133 + if (next != null) {
  134 + dayOfSchedule.addExecPlan(next);
  135 + inStationAndInPark(sch, next);//进站既进场
  136 + }
  137 +
  138 + //路牌的下一个班次,页面显示起点实际到达时间
  139 + ScheduleRealInfo lpNext = dayOfSchedule.nextByLp(sch);
  140 + if (lpNext != null) {
  141 + lpNext.setQdzArrDatesj(sch.getZdsjActual());
  142 + }
  143 +
  144 + //已完成班次数
  145 + int doneSum = dayOfSchedule.doneSum(nbbm);
  146 + //webSocket
  147 + sendUtils.sendZdsj(sch, lpNext, doneSum);
  148 +
  149 + logger.info("车辆:" + nbbm + " 班次:" + sch.getDfsj() + "到终点, 时间:" + sch.getZdsjActual());
  150 +
  151 + //清除车辆误点调整监听
  152 + LateAdjustHandle.remove(nbbm);
  153 +
  154 + //将gps转换成下一个班次走向的站内信号(应对只有一个站内信号 即 发出时)
  155 + transformUpDown(gps, next);
  156 +
  157 + //下发调度指令
  158 + DirectivePushQueue.put6002(next, doneSum, "到站@系统");
  159 +
  160 + //套跑 -下发线路切换指令
  161 + if (null != next && !next.getXlBm().equals(sch.getXlBm())) {
  162 + gpsStatusManager.changeLine(next.getClZbh(), next.getXlBm(), "套跑@系统");
  163 + }
  164 +
  165 +
  166 + if (null == next && gps.isService())
  167 + nonService(sch, "结束@系统");//班次结束
  168 + else if (null != next && dayOfSchedule.emptyService(next))
  169 + nonService(sch, "空驶@系统");//下一班非营运
  170 + }
  171 +
  172 + /**
  173 + * 校验进站前置约束
  174 + *
  175 + * @param gps
  176 + * @return
  177 + */
  178 + private boolean validInPremise(GpsEntity gps) {
  179 + StationRoute sr = gps.getStation();
  180 + if (null == sr || !sr.isPremise())
  181 + return true;
  182 +
  183 + String premiseCode = gps.getPremiseCode();
  184 +
  185 + if (StringUtils.isNotEmpty(premiseCode) && premiseCode.equals(gps.getStopNo())) {
  186 + logger.info("满足前置进站约束 " + premiseCode);
  187 + return true;
  188 + } else {
  189 + logger.info(gps.getNbbm() + " not premiseCode 不满足前置进站约束 " + premiseCode);
  190 + }
  191 + return false;
  192 + }
  193 +
  194 + /**
  195 + * 进站既进场
  196 + *
  197 + * @param sch
  198 + */
  199 + private void inStationAndInPark(ScheduleRealInfo sch, ScheduleRealInfo next) {
  200 + LineConfig config = lineConfigData.get(sch.getXlBm());
  201 + //限定出站既出场的停车场
  202 + String park = config.getTwinsPark();
  203 + boolean limitPark = StringUtils.isNotEmpty(park);
  204 +
  205 +
  206 + if (next.getBcType().equals("in") && config.getOutConfig() == 2 && isEmptyMileage(next)
  207 + && (!limitPark || park.equals(next.getZdzCode()))) {
  208 +
  209 + endSch(next, sch.getZdsjActualTime());
  210 +
  211 + sendUtils.refreshSch(next);
  212 + dayOfSchedule.save(next);
  213 +
  214 + //分班的时候,需要再跳过1个班次
  215 + next = dayOfSchedule.next(next);
  216 + if (next != null)
  217 + dayOfSchedule.addExecPlan(next);
  218 +
  219 + //进场,切换成非营运状态
  220 + nonService(sch, "进场@系统");
  221 + }
  222 + }
  223 +
  224 +
  225 + private boolean isEmptyMileage(ScheduleRealInfo sch) {
  226 + return sch.getBcsj() == 0 || sch.getJhlcOrig().intValue() == 0;
  227 + }
  228 +
  229 +
  230 + /**
  231 + * 切换为非营运状态
  232 + *
  233 + * @param sch
  234 + * @param sender
  235 + */
  236 + private void nonService(ScheduleRealInfo sch, String sender) {
  237 + gpsStatusManager.changeServiceState(sch.getClZbh(), sch.getXlDir(), 1, sender);
  238 + }
  239 +
  240 + private void endSch(ScheduleRealInfo sch, Long t) {
  241 + sch.setFcsjActualAll(t);
  242 + sch.setZdsjActualAll(t);
  243 + }
  244 +
  245 + private void transformUpDown(GpsEntity gps, ScheduleRealInfo sch) {
  246 + if (null == sch)
  247 + return;
  248 + byte upDown = Byte.parseByte(sch.getXlDir());
  249 + //gps 切换走向
  250 + gps.setUpDown(upDown);
  251 + gps.setPremiseCode(null);
  252 +
  253 + List<StationRoute> srs = GeoCacheData.getStationRoute(sch.getXlBm(), upDown);
  254 + StationRoute station = GeoUtils.gpsInStation(gps, srs);
  255 + if (station != null) {
  256 + gps.setStopNo(station.getCode());
  257 + }
  258 + }
  259 +
  260 + private boolean isInPark(GpsEntity gps, GpsEntity prve){
  261 + if(StringUtils.isNotEmpty(gps.getCarparkNo()) && StringUtils.isEmpty(prve.getCarparkNo()))
  262 + return true;
  263 + return false;
  264 + }
265 265 }
266 266 \ No newline at end of file
... ...
src/main/java/com/bsth/data/gpsdata_v2/handlers/OutStationProcess.java
1   -package com.bsth.data.gpsdata_v2.handlers;
2   -
3   -import com.bsth.data.LineConfigData;
4   -import com.bsth.data.gpsdata_v2.cache.GpsCacheData;
5   -import com.bsth.data.gpsdata_v2.entity.GpsEntity;
6   -import com.bsth.data.gpsdata_v2.status_manager.GpsStatusManager;
7   -import com.bsth.data.gpsdata_v2.utils.SignalSchPlanMatcher;
8   -import com.bsth.data.schedule.DayOfSchedule;
9   -import com.bsth.data.schedule.late_adjust.LateAdjustHandle;
10   -import com.bsth.entity.realcontrol.LineConfig;
11   -import com.bsth.entity.realcontrol.ScheduleRealInfo;
12   -import com.bsth.websocket.handler.SendUtils;
13   -import org.apache.commons.lang3.StringUtils;
14   -import org.slf4j.Logger;
15   -import org.slf4j.LoggerFactory;
16   -import org.springframework.beans.factory.annotation.Autowired;
17   -import org.springframework.stereotype.Component;
18   -
19   -/**
20   - * 车辆出站处理程序
21   - * Created by panzhao on 2017/11/16.
22   - */
23   -@Component
24   -public class OutStationProcess {
25   -
26   - @Autowired
27   - DayOfSchedule dayOfSchedule;
28   -
29   - Logger logger = LoggerFactory.getLogger(this.getClass());
30   -
31   - @Autowired
32   - LineConfigData lineConfigData;
33   -
34   - @Autowired
35   - SendUtils sendUtils;
36   -
37   - @Autowired
38   - SignalSchPlanMatcher signalSchPlanMatcher;
39   -
40   - @Autowired
41   - GpsStatusManager gpsStatusManager;
42   - private final static int MAX_BEFORE_TIME = 1000 * 60 * 120;
43   -
44   - public void process(GpsEntity gps){
45   - GpsEntity prev = GpsCacheData.getPrev(gps);
46   -
47   - if(null == prev)
48   - return;
49   -
50   - //从站内到站外
51   - if(prev.getInstation() > 0 && gps.getInstation() == 0)
52   - outStation(gps, prev);
53   -
54   - //从站内到另一个站内
55   - if(prev.getInstation() > 0 && gps.getInstation() > 0
56   - && !prev.getStopNo().equals(gps.getStopNo()))
57   - outStation(gps, prev);
58   -
59   - //在被起点站覆盖的情况下出场
60   - if(isOutPark(gps, prev))
61   - outStation(gps, prev);
62   - }
63   -
64   - /**
65   - * 出站
66   - * @param gps
67   - */
68   - private void outStation(GpsEntity gps, GpsEntity prev) {
69   - ScheduleRealInfo sch = dayOfSchedule.executeCurr(gps.getNbbm());
70   -
71   - //起点发车
72   - if (null != sch &&
73   - (sch.getQdzCode().equals(prev.getStopNo()) || sch.getQdzCode().equals(prev.getCarparkNo()))){
74   - //发车班次匹配
75   - if(!signalSchPlanMatcher.outMatch(gps, sch)){
76   - outStation(gps, prev);
77   - return;
78   - }
79   -
80   - int diff = (int) (sch.getDfsjT() - gps.getTimestamp());
81   - //首班出场最多提前2小时
82   - if((dayOfSchedule.isFirstOut(sch) && diff > MAX_BEFORE_TIME) || diff > MAX_BEFORE_TIME / 2)
83   - return;
84   -
85   - gps.setPremiseCode(null);//清除前置围栏标记
86   -
87   - if(StringUtils.isNotEmpty(sch.getFcsjActual())
88   - && !outManyFit(gps, sch)){
89   - return;//班次已经实发
90   - }
91   -
92   - //应用到离站缓冲区设置参数
93   - long rsT = lineConfigData.applyOut(sch, gps.getTimestamp());
94   - //实发时间
95   - sch.setFcsjActualAll(rsT);
96   - sch.setSiginCompate(1);
97   -
98   - //出站既出场
99   - outStationAndOutPark(sch);
100   -
101   - //webSocket
102   - sendUtils.sendFcsj(sch);
103   -
104   - //持久化
105   - dayOfSchedule.save(sch);
106   -
107   - //清理应发未发标记
108   - LateAdjustHandle.remove(sch.getClZbh());
109   -
110   - //发车的时候,同步一下状态
111   - if(!gps.isService() && !dayOfSchedule.emptyService(sch))
112   - gpsStatusManager.changeServiceState(sch.getClZbh(), sch.getXlDir(), 0, "发车@系统");
113   -
114   - logger.info("车辆:" + sch.getClZbh() + " 班次:" + sch.getDfsj() + "发车, 时间:" + sch.getFcsjActual());
115   - }
116   -
117   - GpsCacheData.out(gps);
118   - }
119   -
120   - /**
121   - * 是否是一个更合适的发车信号
122   - * @param gps
123   - * @param sch
124   - * @return
125   - */
126   - private boolean outManyFit(GpsEntity gps, ScheduleRealInfo sch) {
127   - LineConfig conf = lineConfigData.get(sch.getXlBm());
128   - if(null != conf && conf.isLockFirstOutTime())
129   - return false;
130   -
131   - if(StringUtils.isNotEmpty(sch.getZdsjActual()))
132   - return false;
133   -
134   - long t1 = sch.getFcsjActualTime();
135   - long t2 = gps.getTimestamp();
136   - long c = sch.getDfsjT();
137   -
138   - int threshold = 1000 * 60 * 5;
139   - if(Math.abs(t2 - c) < threshold && c - t1 > threshold){
140   - return true;
141   - }
142   -
143   - if(c - t1 > 1000 * 60 * 60 * 2 && Math.abs(t2 - c) < c - t1){
144   - return true;
145   - }
146   - return false;
147   - }
148   -
149   - private void outStationAndOutPark(ScheduleRealInfo sch){
150   - try{
151   - LineConfig config = lineConfigData.get(sch.getXlBm());
152   - //限定出站既出场的停车场
153   - String park = config.getTwinsPark();
154   - boolean limitPark = StringUtils.isNotEmpty(park);
155   -
156   - if (config != null && config.getOutConfig() == 2) {
157   - //出站既出场
158   - ScheduleRealInfo schPrev = dayOfSchedule.prev(sch);
159   - if (isOut(schPrev) && isEmptyMileage(schPrev)
160   - && (!limitPark || park.equals(schPrev.getQdzCode()))) {
161   -
162   - endSch(schPrev, sch.getFcsjActualTime());
163   -
164   - //起点实到
165   - sch.setQdzArrDatesj(schPrev.getZdsjActual());
166   -
167   - sendUtils.refreshSch(schPrev);
168   - dayOfSchedule.save(schPrev);
169   - }
170   - }
171   - }catch (Exception e){
172   - logger.error("", e);
173   - }
174   - }
175   -
176   - private boolean isEmptyMileage(ScheduleRealInfo sch){
177   - return sch.getBcsj()==0 || sch.getJhlcOrig().intValue()==0;
178   - }
179   -
180   - private boolean isOut(ScheduleRealInfo sch){
181   - return sch != null && sch.getBcType().equals("out");
182   - }
183   -
184   - private void endSch(ScheduleRealInfo sch, Long t){
185   - sch.setFcsjActualAll(t);
186   - sch.setZdsjActualAll(t);
187   - }
188   -
189   - private boolean isOutPark(GpsEntity gps, GpsEntity prve){
190   - if(StringUtils.isNotEmpty(prve.getCarparkNo()) && StringUtils.isEmpty(gps.getCarparkNo()))
191   - return true;
192   - return false;
193   - }
  1 +package com.bsth.data.gpsdata_v2.handlers;
  2 +
  3 +import com.bsth.data.LineConfigData;
  4 +import com.bsth.data.gpsdata_v2.cache.GpsCacheData;
  5 +import com.bsth.data.gpsdata_v2.entity.GpsEntity;
  6 +import com.bsth.data.gpsdata_v2.status_manager.GpsStatusManager;
  7 +import com.bsth.data.gpsdata_v2.utils.SignalSchPlanMatcher;
  8 +import com.bsth.data.schedule.DayOfSchedule;
  9 +import com.bsth.data.schedule.late_adjust.LateAdjustHandle;
  10 +import com.bsth.entity.realcontrol.LineConfig;
  11 +import com.bsth.entity.realcontrol.ScheduleRealInfo;
  12 +import com.bsth.websocket.handler.SendUtils;
  13 +import org.apache.commons.lang3.StringUtils;
  14 +import org.slf4j.Logger;
  15 +import org.slf4j.LoggerFactory;
  16 +import org.springframework.beans.factory.annotation.Autowired;
  17 +import org.springframework.stereotype.Component;
  18 +
  19 +/**
  20 + * 车辆出站处理程序
  21 + * Created by panzhao on 2017/11/16.
  22 + */
  23 +@Component
  24 +public class OutStationProcess {
  25 +
  26 + @Autowired
  27 + DayOfSchedule dayOfSchedule;
  28 +
  29 + Logger logger = LoggerFactory.getLogger(this.getClass());
  30 +
  31 + @Autowired
  32 + LineConfigData lineConfigData;
  33 +
  34 + @Autowired
  35 + SendUtils sendUtils;
  36 +
  37 + @Autowired
  38 + SignalSchPlanMatcher signalSchPlanMatcher;
  39 +
  40 + @Autowired
  41 + GpsStatusManager gpsStatusManager;
  42 + private final static int MAX_BEFORE_TIME = 1000 * 60 * 120;
  43 +
  44 + public void process(GpsEntity gps){
  45 + GpsEntity prev = GpsCacheData.getPrev(gps);
  46 +
  47 + if(null == prev)
  48 + return;
  49 +
  50 + //从站内到站外
  51 + if(prev.getInstation() > 0 && gps.getInstation() == 0)
  52 + outStation(gps, prev);
  53 +
  54 + //从站内到另一个站内
  55 + if(prev.getInstation() > 0 && gps.getInstation() > 0
  56 + && !prev.getStopNo().equals(gps.getStopNo()))
  57 + outStation(gps, prev);
  58 +
  59 + //在被起点站覆盖的情况下出场
  60 + if(isOutPark(gps, prev))
  61 + outStation(gps, prev);
  62 + }
  63 +
  64 + /**
  65 + * 出站
  66 + * @param gps
  67 + */
  68 + private void outStation(GpsEntity gps, GpsEntity prev) {
  69 + ScheduleRealInfo sch = dayOfSchedule.executeCurr(gps.getNbbm());
  70 +
  71 + //起点发车
  72 + if (null != sch &&
  73 + (sch.getQdzCode().equals(prev.getStopNo()) || sch.getQdzCode().equals(prev.getCarparkNo()))){
  74 + //发车班次匹配
  75 + if(!signalSchPlanMatcher.outMatch(gps, sch)){
  76 + outStation(gps, prev);
  77 + return;
  78 + }
  79 +
  80 + int diff = (int) (sch.getDfsjT() - gps.getTimestamp());
  81 + //首班出场最多提前2小时
  82 + if((dayOfSchedule.isFirstOut(sch) && diff > MAX_BEFORE_TIME) || diff > MAX_BEFORE_TIME / 2)
  83 + return;
  84 +
  85 + gps.setPremiseCode(null);//清除前置围栏标记
  86 +
  87 + if(StringUtils.isNotEmpty(sch.getFcsjActual())
  88 + && !outManyFit(gps, sch)){
  89 + return;//班次已经实发
  90 + }
  91 +
  92 + //应用到离站缓冲区设置参数
  93 + long rsT = lineConfigData.applyOut(sch, gps.getTimestamp());
  94 + //实发时间
  95 + sch.setFcsjActualAll(rsT);
  96 + sch.setSiginCompate(1);
  97 +
  98 + //出站既出场
  99 + outStationAndOutPark(sch);
  100 +
  101 + //webSocket
  102 + sendUtils.sendFcsj(sch);
  103 +
  104 + //持久化
  105 + dayOfSchedule.save(sch);
  106 +
  107 + //清理应发未发标记
  108 + LateAdjustHandle.remove(sch.getClZbh());
  109 +
  110 + //发车的时候,同步一下状态
  111 + if(!gps.isService() && !dayOfSchedule.emptyService(sch))
  112 + gpsStatusManager.changeServiceState(sch.getClZbh(), sch.getXlDir(), 0, "发车@系统");
  113 +
  114 + logger.info("车辆:" + sch.getClZbh() + " 班次:" + sch.getDfsj() + "发车, 时间:" + sch.getFcsjActual());
  115 + }
  116 +
  117 + GpsCacheData.out(gps);
  118 + }
  119 +
  120 + /**
  121 + * 是否是一个更合适的发车信号
  122 + * @param gps
  123 + * @param sch
  124 + * @return
  125 + */
  126 + private boolean outManyFit(GpsEntity gps, ScheduleRealInfo sch) {
  127 + LineConfig conf = lineConfigData.get(sch.getXlBm());
  128 + if(null != conf && conf.isLockFirstOutTime())
  129 + return false;
  130 +
  131 + if(StringUtils.isNotEmpty(sch.getZdsjActual()))
  132 + return false;
  133 +
  134 + long t1 = sch.getFcsjActualTime();
  135 + long t2 = gps.getTimestamp();
  136 + long c = sch.getDfsjT();
  137 +
  138 + int threshold = 1000 * 60 * 5;
  139 + if(Math.abs(t2 - c) < threshold && c - t1 > threshold){
  140 + return true;
  141 + }
  142 +
  143 + if(c - t1 > 1000 * 60 * 60 * 2 && Math.abs(t2 - c) < c - t1){
  144 + return true;
  145 + }
  146 + return false;
  147 + }
  148 +
  149 + private void outStationAndOutPark(ScheduleRealInfo sch){
  150 + try{
  151 + LineConfig config = lineConfigData.get(sch.getXlBm());
  152 + //限定出站既出场的停车场
  153 + String park = config.getTwinsPark();
  154 + boolean limitPark = StringUtils.isNotEmpty(park);
  155 +
  156 + if (config != null && config.getOutConfig() == 2) {
  157 + //出站既出场
  158 + ScheduleRealInfo schPrev = dayOfSchedule.prev(sch);
  159 + if (isOut(schPrev) && isEmptyMileage(schPrev)
  160 + && (!limitPark || park.equals(schPrev.getQdzCode()))) {
  161 +
  162 + endSch(schPrev, sch.getFcsjActualTime());
  163 +
  164 + //起点实到
  165 + sch.setQdzArrDatesj(schPrev.getZdsjActual());
  166 +
  167 + sendUtils.refreshSch(schPrev);
  168 + dayOfSchedule.save(schPrev);
  169 + }
  170 + }
  171 + }catch (Exception e){
  172 + logger.error("", e);
  173 + }
  174 + }
  175 +
  176 + private boolean isEmptyMileage(ScheduleRealInfo sch){
  177 + return sch.getBcsj()==0 || sch.getJhlcOrig().intValue()==0;
  178 + }
  179 +
  180 + private boolean isOut(ScheduleRealInfo sch){
  181 + return sch != null && sch.getBcType().equals("out");
  182 + }
  183 +
  184 + private void endSch(ScheduleRealInfo sch, Long t){
  185 + sch.setFcsjActualAll(t);
  186 + sch.setZdsjActualAll(t);
  187 + }
  188 +
  189 + private boolean isOutPark(GpsEntity gps, GpsEntity prve){
  190 + if(StringUtils.isNotEmpty(prve.getCarparkNo()) && StringUtils.isEmpty(gps.getCarparkNo()))
  191 + return true;
  192 + return false;
  193 + }
194 194 }
195 195 \ No newline at end of file
... ...
src/main/java/com/bsth/data/gpsdata_v2/rfid/UploadRfidDataService.java
1   -package com.bsth.data.gpsdata_v2.rfid;
2   -
3   -import com.alibaba.fastjson.JSON;
4   -import com.bsth.data.gpsdata_v2.rfid.entity.RfidInoutStation;
5   -import com.bsth.data.gpsdata_v2.rfid.handle.RfidSignalHandle;
6   -import org.slf4j.Logger;
7   -import org.slf4j.LoggerFactory;
8   -import org.springframework.beans.factory.annotation.Autowired;
9   -import org.springframework.web.bind.annotation.RequestBody;
10   -import org.springframework.web.bind.annotation.RequestMapping;
11   -import org.springframework.web.bind.annotation.RequestMethod;
12   -import org.springframework.web.bind.annotation.RestController;
13   -
14   -import java.util.List;
15   -
16   -/**
17   - * RFID 数据上传入口
18   - * Created by panzhao on 2017/11/22.
19   - */
20   -@RestController
21   -@RequestMapping("/rfid")
22   -public class UploadRfidDataService {
23   -
24   - @Autowired
25   - RfidSignalHandle rfidSignalHandle;
26   -
27   - Logger logger = LoggerFactory.getLogger(this.getClass());
28   -
29   - @RequestMapping(value = "inside", method = RequestMethod.POST)
30   - public void inside(@RequestBody List<RfidInoutStation> list) {
31   - logger.info("up rfid: " + JSON.toJSONString(list));
32   - rfidSignalHandle.handle(list);
33   - }
34   -
35   - @RequestMapping(value = "test")
36   - public int test() {
37   - return 1;
38   - }
  1 +package com.bsth.data.gpsdata_v2.rfid;
  2 +
  3 +import com.alibaba.fastjson.JSON;
  4 +import com.bsth.data.gpsdata_v2.rfid.entity.RfidInoutStation;
  5 +import com.bsth.data.gpsdata_v2.rfid.handle.RfidSignalHandle;
  6 +import org.slf4j.Logger;
  7 +import org.slf4j.LoggerFactory;
  8 +import org.springframework.beans.factory.annotation.Autowired;
  9 +import org.springframework.web.bind.annotation.RequestBody;
  10 +import org.springframework.web.bind.annotation.RequestMapping;
  11 +import org.springframework.web.bind.annotation.RequestMethod;
  12 +import org.springframework.web.bind.annotation.RestController;
  13 +
  14 +import java.util.List;
  15 +
  16 +/**
  17 + * RFID 数据上传入口
  18 + * Created by panzhao on 2017/11/22.
  19 + */
  20 +@RestController
  21 +@RequestMapping("/rfid")
  22 +public class UploadRfidDataService {
  23 +
  24 + @Autowired
  25 + RfidSignalHandle rfidSignalHandle;
  26 +
  27 + Logger logger = LoggerFactory.getLogger(this.getClass());
  28 +
  29 + @RequestMapping(value = "inside", method = RequestMethod.POST)
  30 + public void inside(@RequestBody List<RfidInoutStation> list) {
  31 + logger.info("up rfid: " + JSON.toJSONString(list));
  32 + rfidSignalHandle.handle(list);
  33 + }
  34 +
  35 + @RequestMapping(value = "test")
  36 + public int test() {
  37 + return 1;
  38 + }
39 39 }
40 40 \ No newline at end of file
... ...
src/main/java/com/bsth/data/gpsdata_v2/rfid/handle/RfidSignalHandle.java
1   -package com.bsth.data.gpsdata_v2.rfid.handle;
2   -
3   -import com.bsth.data.gpsdata_v2.rfid.entity.RfidInoutStation;
4   -import com.bsth.data.gpsdata_v2.status_manager.GpsStatusManager;
5   -import com.bsth.data.msg_queue.DirectivePushQueue;
6   -import com.bsth.data.schedule.DayOfSchedule;
7   -import com.bsth.entity.realcontrol.ScheduleRealInfo;
8   -import com.bsth.websocket.handler.SendUtils;
9   -import org.apache.commons.lang3.StringUtils;
10   -import org.slf4j.Logger;
11   -import org.slf4j.LoggerFactory;
12   -import org.springframework.beans.factory.annotation.Autowired;
13   -import org.springframework.stereotype.Component;
14   -
15   -import java.util.List;
16   -
17   -/**
18   - * RFID信号处理
19   - * Created by panzhao on 2017/11/22.
20   - */
21   -@Component
22   -public class RfidSignalHandle {
23   -
24   - @Autowired
25   - DayOfSchedule dayOfSchedule;
26   -
27   - @Autowired
28   - SendUtils sendUtils;
29   -
30   - @Autowired
31   - GpsStatusManager gpsStatusManager;
32   -
33   - private final static int MAX_TIME_DIFF = 1000 * 60 * 60 * 2;
34   -
35   - Logger logger = LoggerFactory.getLogger(this.getClass());
36   -
37   - public void handle(List<RfidInoutStation> list){
38   - for(RfidInoutStation signal : list){
39   - if(signal.getType()==2)
40   - in(signal);
41   - else if(signal.getType()==4)
42   - out(signal);
43   - }
44   - }
45   -
46   - /**
47   - * 出
48   - * @param signal
49   - */
50   - private void out(RfidInoutStation signal) {
51   - try{
52   - String nbbm = signal.getNbbm();
53   - ScheduleRealInfo sch = dayOfSchedule.executeCurr(nbbm);
54   -
55   - if(null == sch)
56   - return;
57   -
58   - //最大时间差
59   - if(Math.abs(sch.getDfsjT() - signal.getT()) > MAX_TIME_DIFF)
60   - return;
61   -
62   - if(sch.getQdzCode().equals(signal.getStation())
63   - && StringUtils.isEmpty(sch.getFcsjActual())){
64   -
65   - //班次发车
66   - sch.setFcsjActualAll(signal.getT());
67   -
68   - //webSocket
69   - sendUtils.sendFcsj(sch);
70   -
71   - //持久化
72   - dayOfSchedule.save(sch);
73   -
74   - logger.info("RFID; 车辆:" + sch.getClZbh() + " 班次:" + sch.getDfsj() + "发车, 时间:" + sch.getFcsjActual());
75   - }
76   - }catch (Exception e){
77   - logger.error("", e);
78   - }
79   - }
80   -
81   - /**
82   - * 进
83   - * @param signal
84   - */
85   - private void in(RfidInoutStation signal) {
86   - try{
87   - String nbbm = signal.getNbbm();
88   - ScheduleRealInfo sch = dayOfSchedule.executeCurr(nbbm);
89   -
90   - if(null == sch)
91   - return;
92   -
93   - //最大时间差
94   - if(Math.abs(sch.getDfsjT() - signal.getT()) > MAX_TIME_DIFF)
95   - return;
96   -
97   - if(sch.getZdzCode().equals(signal.getStation())
98   - && StringUtils.isEmpty(sch.getZdsjActual())){
99   -
100   - sch.setZdsjActualAll(signal.getT());
101   -
102   - //持久化
103   - dayOfSchedule.save(sch);
104   -
105   - //车辆的下一个班次
106   - ScheduleRealInfo next = dayOfSchedule.next(sch);
107   - if(next != null){
108   - dayOfSchedule.addExecPlan(next);
109   - }
110   -
111   - //路牌的下一个班次,页面显示起点实际到达时间
112   - ScheduleRealInfo lpNext = dayOfSchedule.nextByLp(sch);
113   - if(lpNext != null){
114   - lpNext.setQdzArrDatesj(sch.getZdsjActual());
115   - }
116   -
117   - //已完成班次数
118   - int doneSum = dayOfSchedule.doneSum(nbbm);
119   -
120   - //webSocket
121   - sendUtils.sendZdsj(sch, lpNext, doneSum);
122   -
123   - logger.info("RFID; 车辆:" + nbbm + " 班次:" + sch.getDfsj() + "到终点, 时间:" + sch.getZdsjActual());
124   -
125   - //下发调度指令
126   - DirectivePushQueue.put6002(next, doneSum, "rfid@系统");
127   -
128   - //套跑 -下发线路切换指令
129   - if(null != next && !next.getXlBm().equals(sch.getXlBm())){
130   - gpsStatusManager.changeLine(next.getClZbh(), next.getXlBm(), "rfid@系统");
131   - }
132   -
133   - if(null == next)
134   - nonService(sch, "rfid1@系统");//班次结束
135   - else if(null != next && dayOfSchedule.emptyService(next))
136   - nonService(sch, "rfid2@系统");//下一班非营运
137   - }
138   - }catch (Exception e){
139   - logger.error("", e);
140   - }
141   - }
142   -
143   - /**
144   - * 将车载设备切换为非营运状态
145   - * @param sch
146   - * @param sender
147   - */
148   - private void nonService(ScheduleRealInfo sch, String sender){
149   - gpsStatusManager.changeServiceState(sch.getClZbh(), sch.getXlDir(), 1, sender);
150   - }
  1 +package com.bsth.data.gpsdata_v2.rfid.handle;
  2 +
  3 +import com.bsth.data.gpsdata_v2.rfid.entity.RfidInoutStation;
  4 +import com.bsth.data.gpsdata_v2.status_manager.GpsStatusManager;
  5 +import com.bsth.data.msg_queue.DirectivePushQueue;
  6 +import com.bsth.data.schedule.DayOfSchedule;
  7 +import com.bsth.entity.realcontrol.ScheduleRealInfo;
  8 +import com.bsth.websocket.handler.SendUtils;
  9 +import org.apache.commons.lang3.StringUtils;
  10 +import org.slf4j.Logger;
  11 +import org.slf4j.LoggerFactory;
  12 +import org.springframework.beans.factory.annotation.Autowired;
  13 +import org.springframework.stereotype.Component;
  14 +
  15 +import java.util.List;
  16 +
  17 +/**
  18 + * RFID信号处理
  19 + * Created by panzhao on 2017/11/22.
  20 + */
  21 +@Component
  22 +public class RfidSignalHandle {
  23 +
  24 + @Autowired
  25 + DayOfSchedule dayOfSchedule;
  26 +
  27 + @Autowired
  28 + SendUtils sendUtils;
  29 +
  30 + @Autowired
  31 + GpsStatusManager gpsStatusManager;
  32 +
  33 + private final static int MAX_TIME_DIFF = 1000 * 60 * 60 * 2;
  34 +
  35 + Logger logger = LoggerFactory.getLogger(this.getClass());
  36 +
  37 + public void handle(List<RfidInoutStation> list){
  38 + for(RfidInoutStation signal : list){
  39 + if(signal.getType()==2)
  40 + in(signal);
  41 + else if(signal.getType()==4)
  42 + out(signal);
  43 + }
  44 + }
  45 +
  46 + /**
  47 + * 出
  48 + * @param signal
  49 + */
  50 + private void out(RfidInoutStation signal) {
  51 + try{
  52 + String nbbm = signal.getNbbm();
  53 + ScheduleRealInfo sch = dayOfSchedule.executeCurr(nbbm);
  54 +
  55 + if(null == sch)
  56 + return;
  57 +
  58 + //最大时间差
  59 + if(Math.abs(sch.getDfsjT() - signal.getT()) > MAX_TIME_DIFF)
  60 + return;
  61 +
  62 + if(sch.getQdzCode().equals(signal.getStation())
  63 + && StringUtils.isEmpty(sch.getFcsjActual())){
  64 +
  65 + //班次发车
  66 + sch.setFcsjActualAll(signal.getT());
  67 +
  68 + //webSocket
  69 + sendUtils.sendFcsj(sch);
  70 +
  71 + //持久化
  72 + dayOfSchedule.save(sch);
  73 +
  74 + logger.info("RFID; 车辆:" + sch.getClZbh() + " 班次:" + sch.getDfsj() + "发车, 时间:" + sch.getFcsjActual());
  75 + }
  76 + }catch (Exception e){
  77 + logger.error("", e);
  78 + }
  79 + }
  80 +
  81 + /**
  82 + * 进
  83 + * @param signal
  84 + */
  85 + private void in(RfidInoutStation signal) {
  86 + try{
  87 + String nbbm = signal.getNbbm();
  88 + ScheduleRealInfo sch = dayOfSchedule.executeCurr(nbbm);
  89 +
  90 + if(null == sch)
  91 + return;
  92 +
  93 + //最大时间差
  94 + if(Math.abs(sch.getDfsjT() - signal.getT()) > MAX_TIME_DIFF)
  95 + return;
  96 +
  97 + if(sch.getZdzCode().equals(signal.getStation())
  98 + && StringUtils.isEmpty(sch.getZdsjActual())){
  99 +
  100 + sch.setZdsjActualAll(signal.getT());
  101 +
  102 + //持久化
  103 + dayOfSchedule.save(sch);
  104 +
  105 + //车辆的下一个班次
  106 + ScheduleRealInfo next = dayOfSchedule.next(sch);
  107 + if(next != null){
  108 + dayOfSchedule.addExecPlan(next);
  109 + }
  110 +
  111 + //路牌的下一个班次,页面显示起点实际到达时间
  112 + ScheduleRealInfo lpNext = dayOfSchedule.nextByLp(sch);
  113 + if(lpNext != null){
  114 + lpNext.setQdzArrDatesj(sch.getZdsjActual());
  115 + }
  116 +
  117 + //已完成班次数
  118 + int doneSum = dayOfSchedule.doneSum(nbbm);
  119 +
  120 + //webSocket
  121 + sendUtils.sendZdsj(sch, lpNext, doneSum);
  122 +
  123 + logger.info("RFID; 车辆:" + nbbm + " 班次:" + sch.getDfsj() + "到终点, 时间:" + sch.getZdsjActual());
  124 +
  125 + //下发调度指令
  126 + DirectivePushQueue.put6002(next, doneSum, "rfid@系统");
  127 +
  128 + //套跑 -下发线路切换指令
  129 + if(null != next && !next.getXlBm().equals(sch.getXlBm())){
  130 + gpsStatusManager.changeLine(next.getClZbh(), next.getXlBm(), "rfid@系统");
  131 + }
  132 +
  133 + if(null == next)
  134 + nonService(sch, "rfid1@系统");//班次结束
  135 + else if(null != next && dayOfSchedule.emptyService(next))
  136 + nonService(sch, "rfid2@系统");//下一班非营运
  137 + }
  138 + }catch (Exception e){
  139 + logger.error("", e);
  140 + }
  141 + }
  142 +
  143 + /**
  144 + * 将车载设备切换为非营运状态
  145 + * @param sch
  146 + * @param sender
  147 + */
  148 + private void nonService(ScheduleRealInfo sch, String sender){
  149 + gpsStatusManager.changeServiceState(sch.getClZbh(), sch.getXlDir(), 1, sender);
  150 + }
151 151 }
152 152 \ No newline at end of file
... ...
src/main/java/com/bsth/data/gpsdata_v2/thread/OfflineMonitorThread.java
1   -package com.bsth.data.gpsdata_v2.thread;
2   -
3   -import com.bsth.data.gpsdata_v2.GpsRealData;
4   -import com.bsth.data.gpsdata_v2.entity.GpsEntity;
5   -import com.bsth.websocket.handler.SendUtils;
6   -import org.slf4j.Logger;
7   -import org.slf4j.LoggerFactory;
8   -import org.springframework.beans.factory.annotation.Autowired;
9   -import org.springframework.stereotype.Component;
10   -
11   -import java.util.Collection;
12   -
13   -/**
14   - * GPS掉离线监控
15   - * Created by panzhao on 2017/1/11.
16   - */
17   -@Component
18   -public class OfflineMonitorThread extends Thread{
19   -
20   - @Autowired
21   - GpsRealData gpsRealData;
22   -
23   - //掉线阈值
24   - private final static int LOSE_TIME = 1000 * 60 * 10;
25   -
26   - Logger logger = LoggerFactory.getLogger(this.getClass());
27   -
28   - @Autowired
29   - SendUtils sendUtils;
30   -
31   - //无任务时 离线阈值
32   - //private final static int OFFLINE_TIME = 1000 * 60 * 10;
33   -
34   - @Override
35   - public void run() {
36   - try{
37   - long t = System.currentTimeMillis();
38   - Collection<GpsEntity> list = gpsRealData.all();
39   -
40   - String state;
41   - for(GpsEntity gps : list){
42   - state = gps.getAbnormalStatus();
43   -
44   - if(state != null && state.equals("offline"))
45   - continue;
46   -
47   - if (t - gps.getTimestamp() > LOSE_TIME){
48   - gps.offline();
49   -
50   - //通知页面有设备掉线
51   - sendUtils.deviceOffline(gps);
52   - }
53   - }
54   - }catch (Exception e){
55   - logger.error("", e);
56   - }
57   - }
58   -}
  1 +package com.bsth.data.gpsdata_v2.thread;
  2 +
  3 +import com.bsth.data.gpsdata_v2.GpsRealData;
  4 +import com.bsth.data.gpsdata_v2.entity.GpsEntity;
  5 +import com.bsth.websocket.handler.SendUtils;
  6 +import org.slf4j.Logger;
  7 +import org.slf4j.LoggerFactory;
  8 +import org.springframework.beans.factory.annotation.Autowired;
  9 +import org.springframework.stereotype.Component;
  10 +
  11 +import java.util.Collection;
  12 +
  13 +/**
  14 + * GPS掉离线监控
  15 + * Created by panzhao on 2017/1/11.
  16 + */
  17 +@Component
  18 +public class OfflineMonitorThread extends Thread{
  19 +
  20 + @Autowired
  21 + GpsRealData gpsRealData;
  22 +
  23 + //掉线阈值
  24 + private final static int LOSE_TIME = 1000 * 60 * 10;
  25 +
  26 + Logger logger = LoggerFactory.getLogger(this.getClass());
  27 +
  28 + @Autowired
  29 + SendUtils sendUtils;
  30 +
  31 + //无任务时 离线阈值
  32 + //private final static int OFFLINE_TIME = 1000 * 60 * 10;
  33 +
  34 + @Override
  35 + public void run() {
  36 + try{
  37 + long t = System.currentTimeMillis();
  38 + Collection<GpsEntity> list = gpsRealData.all();
  39 +
  40 + String state;
  41 + for(GpsEntity gps : list){
  42 + state = gps.getAbnormalStatus();
  43 +
  44 + if(state != null && state.equals("offline"))
  45 + continue;
  46 +
  47 + if (t - gps.getTimestamp() > LOSE_TIME){
  48 + gps.offline();
  49 +
  50 + //通知页面有设备掉线
  51 + sendUtils.deviceOffline(gps);
  52 + }
  53 + }
  54 + }catch (Exception e){
  55 + logger.error("", e);
  56 + }
  57 + }
  58 +}
... ...
src/main/java/com/bsth/data/gpsdata_v2/utils/GpsDataRecovery.java
1   -package com.bsth.data.gpsdata_v2.utils;
2   -
3   -import com.bsth.data.BasicData;
4   -import com.bsth.data.gpsdata_v2.cache.GpsCacheData;
5   -import com.bsth.data.gpsdata_v2.entity.GpsEntity;
6   -import com.bsth.data.gpsdata_v2.handlers.*;
7   -import com.bsth.util.db.DBUtils_MS;
8   -import com.google.common.collect.ArrayListMultimap;
9   -import org.slf4j.Logger;
10   -import org.slf4j.LoggerFactory;
11   -import org.springframework.beans.BeansException;
12   -import org.springframework.context.ApplicationContext;
13   -import org.springframework.context.ApplicationContextAware;
14   -import org.springframework.jdbc.core.JdbcTemplate;
15   -import org.springframework.jdbc.core.RowMapper;
16   -import org.springframework.stereotype.Component;
17   -
18   -import java.sql.ResultSet;
19   -import java.sql.SQLException;
20   -import java.util.*;
21   -import java.util.concurrent.CountDownLatch;
22   -import java.util.concurrent.ExecutorService;
23   -import java.util.concurrent.Executors;
24   -
25   -/**
26   - * gps数据恢复
27   - * Created by panzhao on 2016/12/24.
28   - */
29   -@Component
30   -public class GpsDataRecovery implements ApplicationContextAware {
31   -
32   - static Logger logger = LoggerFactory.getLogger(GpsDataRecovery.class);
33   -
34   - public static boolean run;
35   -
36   - static ExecutorService threadPool = Executors.newFixedThreadPool(10);
37   -
38   - static GpsStateProcess gpsStateProcess;
39   - static StationInsideProcess stationInsideProcess;
40   - static InStationProcess inStationProcess;
41   - static OutStationProcess outStationProcess;
42   - static AbnormalStateProcess abnormalStateProcess;
43   - static ReverseRouteProcess reverseRouteProcess;
44   -
45   - public void recovery() {
46   - List<GpsEntity> list = loadData();
47   -
48   - //按线路分组数据
49   - ArrayListMultimap<String, GpsEntity> listMap = ArrayListMultimap.create();
50   - for (GpsEntity gps : list) {
51   - if (gps.getNbbm() != null)
52   - listMap.put(gps.getNbbm(), gps);
53   - }
54   -
55   -
56   - Set<String> keys = listMap.keySet();
57   -
58   - CountDownLatch count = new CountDownLatch(keys.size());
59   - GpsComp comp = new GpsComp();
60   - for (String nbbm : keys) {
61   - Collections.sort(listMap.get(nbbm), comp);
62   - threadPool.submit(new RecoveryThread(listMap.get(nbbm), count));
63   - /*if(nbbm.equals("W7C-035"))
64   - new RecoveryThread(listMap.get(nbbm), count).run();*/
65   - /*if(lineId.equals("60028"))
66   - new RecoveryThread(listMap.get(lineId), count).run();*/
67   - }
68   -
69   - try {
70   - count.await();
71   - run = false;
72   - logger.info("数据恢复完成....");
73   - } catch (InterruptedException e) {
74   - logger.error("", e);
75   - }
76   - }
77   -
78   - /**
79   - * 加载当天的gps数据
80   - *
81   - * @return
82   - */
83   - public List<GpsEntity> loadData() {
84   - Calendar calendar = Calendar.getInstance();
85   - int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);
86   -
87   - String sql = "select DEVICE_ID,LAT,LON,TS,SPEED_GPS,LINE_ID,SERVICE_STATE,SERVER_TS from bsth_c_gps_info where days_year=327"; //+ dayOfYear;
88   - JdbcTemplate jdbcTemplate = new JdbcTemplate(DBUtils_MS.getDataSource());
89   -
90   - List<GpsEntity> list =
91   - jdbcTemplate.query(sql, new RowMapper<GpsEntity>() {
92   - @Override
93   - public GpsEntity mapRow(ResultSet rs, int rowNum) throws SQLException {
94   - GpsEntity gps = new GpsEntity();
95   -
96   - gps.setDeviceId(rs.getString("DEVICE_ID"));
97   - gps.setNbbm(BasicData.deviceId2NbbmMap.get(gps.getDeviceId()));
98   - gps.setSpeed(rs.getFloat("SPEED_GPS"));
99   - gps.setLat(rs.getFloat("LAT"));
100   - gps.setLon(rs.getFloat("LON"));
101   - gps.setLineId(rs.getString("LINE_ID"));
102   - gps.setTimestamp(rs.getLong("TS"));
103   - gps.setUpDown((byte) getUpOrDown(rs.getLong("SERVICE_STATE")));
104   - gps.setServerTimestamp(rs.getLong("SERVER_TS"));
105   - return gps;
106   - }
107   - });
108   - return list;
109   - }
110   -
111   - /**
112   - * 王通 2016/6/29 9:23:24 获取车辆线路上下行
113   - *
114   - * @return -1无效 0上行 1下行
115   - */
116   - public static int getUpOrDown(long serviceState) {
117   - if ((serviceState & 0x00020000) == 0x00020000 || (serviceState & 0x80000000) == 0x80000000
118   - || (serviceState & 0x01000000) == 0x01000000 || (serviceState & 0x08000000) == 0x08000000)
119   - return -1;
120   - return (((serviceState & 0x10000000) == 0x10000000) ? 1 : 0);
121   - }
122   -
123   - @Override
124   - public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
125   - gpsStateProcess = applicationContext.getBean(GpsStateProcess.class);
126   - stationInsideProcess = applicationContext.getBean(StationInsideProcess.class);
127   - inStationProcess = applicationContext.getBean(InStationProcess.class);
128   - outStationProcess = applicationContext.getBean(OutStationProcess.class);
129   - abnormalStateProcess = applicationContext.getBean(AbnormalStateProcess.class);
130   - reverseRouteProcess = applicationContext.getBean(ReverseRouteProcess.class);
131   - }
132   -
133   - public static class GpsComp implements Comparator<GpsEntity> {
134   -
135   - @Override
136   - public int compare(GpsEntity g1, GpsEntity g2) {
137   - return g1.getTimestamp().compareTo(g2.getTimestamp());
138   - }
139   - }
140   -
141   - public static class RecoveryThread implements Runnable {
142   - List<GpsEntity> list;
143   - CountDownLatch count;
144   -
145   - RecoveryThread(List<GpsEntity> list, CountDownLatch count) {
146   - this.list = list;
147   - this.count = count;
148   - }
149   -
150   - @Override
151   - public void run() {
152   - try {
153   - //循环gps恢复数据
154   - for (GpsEntity gps : list) {
155   - try {
156   -
157   - /*if(gps.getTimestamp() >= 1511396220000L)
158   - System.out.println("aaa");*/
159   -
160   - if(Math.abs(gps.getTimestamp() - gps.getServerTimestamp()) > 1000 * 60 * 20)
161   - continue;
162   -
163   - gpsStateProcess.process(gps);//状态处理
164   - stationInsideProcess.process(gps);//场站内外判定
165   - reverseRouteProcess.process(gps);//反向路由处理
166   -
167   - abnormalStateProcess.process(gps);//超速越界
168   -
169   - inStationProcess.process(gps);//进站
170   - outStationProcess.process(gps);//出站
171   -
172   - GpsCacheData.putGps(gps);//历史gps缓存
173   - } catch (Exception e) {
174   - logger.error("", e);
175   - }
176   - }
177   - } finally {
178   - count.countDown();
179   - }
180   - }
181   - }
  1 +package com.bsth.data.gpsdata_v2.utils;
  2 +
  3 +import com.bsth.data.BasicData;
  4 +import com.bsth.data.gpsdata_v2.cache.GpsCacheData;
  5 +import com.bsth.data.gpsdata_v2.entity.GpsEntity;
  6 +import com.bsth.data.gpsdata_v2.handlers.*;
  7 +import com.bsth.util.db.DBUtils_MS;
  8 +import com.google.common.collect.ArrayListMultimap;
  9 +import org.slf4j.Logger;
  10 +import org.slf4j.LoggerFactory;
  11 +import org.springframework.beans.BeansException;
  12 +import org.springframework.context.ApplicationContext;
  13 +import org.springframework.context.ApplicationContextAware;
  14 +import org.springframework.jdbc.core.JdbcTemplate;
  15 +import org.springframework.jdbc.core.RowMapper;
  16 +import org.springframework.stereotype.Component;
  17 +
  18 +import java.sql.ResultSet;
  19 +import java.sql.SQLException;
  20 +import java.util.*;
  21 +import java.util.concurrent.CountDownLatch;
  22 +import java.util.concurrent.ExecutorService;
  23 +import java.util.concurrent.Executors;
  24 +
  25 +/**
  26 + * gps数据恢复
  27 + * Created by panzhao on 2016/12/24.
  28 + */
  29 +@Component
  30 +public class GpsDataRecovery implements ApplicationContextAware {
  31 +
  32 + static Logger logger = LoggerFactory.getLogger(GpsDataRecovery.class);
  33 +
  34 + public static boolean run;
  35 +
  36 + static ExecutorService threadPool = Executors.newFixedThreadPool(10);
  37 +
  38 + static GpsStateProcess gpsStateProcess;
  39 + static StationInsideProcess stationInsideProcess;
  40 + static InStationProcess inStationProcess;
  41 + static OutStationProcess outStationProcess;
  42 + static AbnormalStateProcess abnormalStateProcess;
  43 + static ReverseRouteProcess reverseRouteProcess;
  44 +
  45 + public void recovery() {
  46 + List<GpsEntity> list = loadData();
  47 +
  48 + //按线路分组数据
  49 + ArrayListMultimap<String, GpsEntity> listMap = ArrayListMultimap.create();
  50 + for (GpsEntity gps : list) {
  51 + if (gps.getNbbm() != null)
  52 + listMap.put(gps.getNbbm(), gps);
  53 + }
  54 +
  55 +
  56 + Set<String> keys = listMap.keySet();
  57 +
  58 + CountDownLatch count = new CountDownLatch(keys.size());
  59 + GpsComp comp = new GpsComp();
  60 + for (String nbbm : keys) {
  61 + Collections.sort(listMap.get(nbbm), comp);
  62 + threadPool.submit(new RecoveryThread(listMap.get(nbbm), count));
  63 + /*if(nbbm.equals("W7C-035"))
  64 + new RecoveryThread(listMap.get(nbbm), count).run();*/
  65 + /*if(lineId.equals("60028"))
  66 + new RecoveryThread(listMap.get(lineId), count).run();*/
  67 + }
  68 +
  69 + try {
  70 + count.await();
  71 + run = false;
  72 + logger.info("数据恢复完成....");
  73 + } catch (InterruptedException e) {
  74 + logger.error("", e);
  75 + }
  76 + }
  77 +
  78 + /**
  79 + * 加载当天的gps数据
  80 + *
  81 + * @return
  82 + */
  83 + public List<GpsEntity> loadData() {
  84 + Calendar calendar = Calendar.getInstance();
  85 + int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);
  86 +
  87 + String sql = "select DEVICE_ID,LAT,LON,TS,SPEED_GPS,LINE_ID,SERVICE_STATE,SERVER_TS from bsth_c_gps_info where days_year=327"; //+ dayOfYear;
  88 + JdbcTemplate jdbcTemplate = new JdbcTemplate(DBUtils_MS.getDataSource());
  89 +
  90 + List<GpsEntity> list =
  91 + jdbcTemplate.query(sql, new RowMapper<GpsEntity>() {
  92 + @Override
  93 + public GpsEntity mapRow(ResultSet rs, int rowNum) throws SQLException {
  94 + GpsEntity gps = new GpsEntity();
  95 +
  96 + gps.setDeviceId(rs.getString("DEVICE_ID"));
  97 + gps.setNbbm(BasicData.deviceId2NbbmMap.get(gps.getDeviceId()));
  98 + gps.setSpeed(rs.getFloat("SPEED_GPS"));
  99 + gps.setLat(rs.getFloat("LAT"));
  100 + gps.setLon(rs.getFloat("LON"));
  101 + gps.setLineId(rs.getString("LINE_ID"));
  102 + gps.setTimestamp(rs.getLong("TS"));
  103 + gps.setUpDown((byte) getUpOrDown(rs.getLong("SERVICE_STATE")));
  104 + gps.setServerTimestamp(rs.getLong("SERVER_TS"));
  105 + return gps;
  106 + }
  107 + });
  108 + return list;
  109 + }
  110 +
  111 + /**
  112 + * 王通 2016/6/29 9:23:24 获取车辆线路上下行
  113 + *
  114 + * @return -1无效 0上行 1下行
  115 + */
  116 + public static int getUpOrDown(long serviceState) {
  117 + if ((serviceState & 0x00020000) == 0x00020000 || (serviceState & 0x80000000) == 0x80000000
  118 + || (serviceState & 0x01000000) == 0x01000000 || (serviceState & 0x08000000) == 0x08000000)
  119 + return -1;
  120 + return (((serviceState & 0x10000000) == 0x10000000) ? 1 : 0);
  121 + }
  122 +
  123 + @Override
  124 + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
  125 + gpsStateProcess = applicationContext.getBean(GpsStateProcess.class);
  126 + stationInsideProcess = applicationContext.getBean(StationInsideProcess.class);
  127 + inStationProcess = applicationContext.getBean(InStationProcess.class);
  128 + outStationProcess = applicationContext.getBean(OutStationProcess.class);
  129 + abnormalStateProcess = applicationContext.getBean(AbnormalStateProcess.class);
  130 + reverseRouteProcess = applicationContext.getBean(ReverseRouteProcess.class);
  131 + }
  132 +
  133 + public static class GpsComp implements Comparator<GpsEntity> {
  134 +
  135 + @Override
  136 + public int compare(GpsEntity g1, GpsEntity g2) {
  137 + return g1.getTimestamp().compareTo(g2.getTimestamp());
  138 + }
  139 + }
  140 +
  141 + public static class RecoveryThread implements Runnable {
  142 + List<GpsEntity> list;
  143 + CountDownLatch count;
  144 +
  145 + RecoveryThread(List<GpsEntity> list, CountDownLatch count) {
  146 + this.list = list;
  147 + this.count = count;
  148 + }
  149 +
  150 + @Override
  151 + public void run() {
  152 + try {
  153 + //循环gps恢复数据
  154 + for (GpsEntity gps : list) {
  155 + try {
  156 +
  157 + /*if(gps.getTimestamp() >= 1511396220000L)
  158 + System.out.println("aaa");*/
  159 +
  160 + if(Math.abs(gps.getTimestamp() - gps.getServerTimestamp()) > 1000 * 60 * 20)
  161 + continue;
  162 +
  163 + gpsStateProcess.process(gps);//状态处理
  164 + stationInsideProcess.process(gps);//场站内外判定
  165 + reverseRouteProcess.process(gps);//反向路由处理
  166 +
  167 + abnormalStateProcess.process(gps);//超速越界
  168 +
  169 + inStationProcess.process(gps);//进站
  170 + outStationProcess.process(gps);//出站
  171 +
  172 + GpsCacheData.putGps(gps);//历史gps缓存
  173 + } catch (Exception e) {
  174 + logger.error("", e);
  175 + }
  176 + }
  177 + } finally {
  178 + count.countDown();
  179 + }
  180 + }
  181 + }
182 182 }
183 183 \ No newline at end of file
... ...
src/main/java/com/bsth/data/gpsdata_v2/utils/SignalSchPlanMatcher.java
1   -package com.bsth.data.gpsdata_v2.utils;
2   -
3   -import com.bsth.data.gpsdata_v2.entity.GpsEntity;
4   -import com.bsth.data.schedule.DayOfSchedule;
5   -import com.bsth.data.schedule.ScheduleComparator;
6   -import com.bsth.entity.realcontrol.ScheduleRealInfo;
7   -import org.apache.commons.lang3.StringUtils;
8   -import org.slf4j.Logger;
9   -import org.slf4j.LoggerFactory;
10   -import org.springframework.beans.factory.annotation.Autowired;
11   -import org.springframework.stereotype.Component;
12   -
13   -import java.util.Collections;
14   -import java.util.List;
15   -
16   -/**
17   - * 班次匹配器
18   - * Created by panzhao on 2016/12/31.
19   - */
20   -@Component
21   -public class SignalSchPlanMatcher {
22   -
23   - @Autowired
24   - DayOfSchedule dayOfSchedule;
25   -
26   - static ScheduleComparator.DFSJ schComp = new ScheduleComparator.DFSJ();
27   -
28   - Logger log = LoggerFactory.getLogger(this.getClass());
29   -
30   - /**
31   - * 发车信号匹配
32   - * @param gps
33   - * @param sch
34   - * @return
35   - */
36   - public boolean outMatch(GpsEntity gps, ScheduleRealInfo sch){
37   - long t = gps.getTimestamp();
38   - if(t < sch.getDfsjT())
39   - return true;
40   -
41   - try{
42   - //晚于待发时间 10 分钟 ,匹配一下最佳的班次
43   - if(t - sch.getDfsjT() > 1000 * 60 * 10){
44   - ScheduleRealInfo near = searchNearOut(gps);
45   -
46   - if(null != near && !near.getId().equals(sch.getId())){
47   - dayOfSchedule.addExecPlan(near);
48   - return false;
49   - }
50   - }
51   -
52   - }catch (Exception e){
53   - log.error("", e);
54   - }
55   - return true;
56   - /*try{
57   - //会不会是分班没有完成
58   - if(sch.getBcType().equals("in") && t - sch.getDfsjT() > 1000 * 60 * 20){
59   - ScheduleRealInfo fbFirst = dayOfSchedule.nextByBcType(sch, "normal");
60   -
61   - if(fbFirst == null || !fbFirst.getQdzCode().equals(gps.getStopNo()))
62   - return;
63   -
64   - long dt = fbFirst.getDfsjT();
65   - //晚于待发前4分钟 -执行分班的首个营运
66   - if(dt - t < 1000 * 60 * 4){
67   - dayOfSchedule.addExecPlan(fbFirst);
68   - return;
69   - }
70   - }
71   -
72   - //线路编码不匹配
73   - if("out".equals(sch.getBcType()) && !sch.getXlBm().equals(gps.getLineId())){
74   - ScheduleRealInfo nextOut = dayOfSchedule.nextByBcType(sch, "out");
75   - if(nextOut != null && nextOut.getXlBm().equals(gps.getLineId())
76   - && fcSpace(sch, gps) > fcSpace(nextOut, gps)){
77   - dayOfSchedule.addExecPlan(nextOut);
78   - return;
79   - }
80   - }
81   - }catch (Exception e){
82   - log.error("", e);
83   - }
84   -
85   - //下一个相同走向的班次
86   - ScheduleRealInfo next = dayOfSchedule.nextSame(sch);
87   - if(next == null || !next.getQdzCode().equals(sch.getQdzCode()))
88   - return;
89   -
90   - //晚于班次间隔百分之70,跳下一个班次
91   - double s = (int) (next.getDfsjT() - sch.getDfsjT());
92   - double r = (int) (t - sch.getDfsjT());
93   - if(r / s > 0.7){
94   - if(dayOfSchedule.addExecPlan(next))
95   - outMatch(gps, next);
96   - }*/
97   - }
98   -
99   - /**
100   - * 搜索一个离发车信号最近的班次
101   - * @param gps
102   - * @return
103   - */
104   - private ScheduleRealInfo searchNearOut(GpsEntity gps) {
105   - List<ScheduleRealInfo> list = dayOfSchedule.findByNbbm(gps.getNbbm());
106   - //排序
107   - Collections.sort(list, schComp);
108   -
109   - ScheduleRealInfo near = null;
110   - int diff, minDiff=-1;
111   - for(ScheduleRealInfo sch : list){
112   -
113   - if(StringUtils.isNotEmpty(sch.getFcsjActual()))
114   - continue;
115   -
116   - if(StringUtils.isNotEmpty(sch.getZdsjActual()))
117   - continue;
118   -
119   - diff = (int) Math.abs(gps.getTimestamp() - sch.getDfsjT());
120   - if(null == near || diff < minDiff){
121   - near = sch;
122   - minDiff = diff;
123   - }
124   - }
125   - return near;
126   - }
127   -}
  1 +package com.bsth.data.gpsdata_v2.utils;
  2 +
  3 +import com.bsth.data.gpsdata_v2.entity.GpsEntity;
  4 +import com.bsth.data.schedule.DayOfSchedule;
  5 +import com.bsth.data.schedule.ScheduleComparator;
  6 +import com.bsth.entity.realcontrol.ScheduleRealInfo;
  7 +import org.apache.commons.lang3.StringUtils;
  8 +import org.slf4j.Logger;
  9 +import org.slf4j.LoggerFactory;
  10 +import org.springframework.beans.factory.annotation.Autowired;
  11 +import org.springframework.stereotype.Component;
  12 +
  13 +import java.util.Collections;
  14 +import java.util.List;
  15 +
  16 +/**
  17 + * 班次匹配器
  18 + * Created by panzhao on 2016/12/31.
  19 + */
  20 +@Component
  21 +public class SignalSchPlanMatcher {
  22 +
  23 + @Autowired
  24 + DayOfSchedule dayOfSchedule;
  25 +
  26 + static ScheduleComparator.DFSJ schComp = new ScheduleComparator.DFSJ();
  27 +
  28 + Logger log = LoggerFactory.getLogger(this.getClass());
  29 +
  30 + /**
  31 + * 发车信号匹配
  32 + * @param gps
  33 + * @param sch
  34 + * @return
  35 + */
  36 + public boolean outMatch(GpsEntity gps, ScheduleRealInfo sch){
  37 + long t = gps.getTimestamp();
  38 + if(t < sch.getDfsjT())
  39 + return true;
  40 +
  41 + try{
  42 + //晚于待发时间 10 分钟 ,匹配一下最佳的班次
  43 + if(t - sch.getDfsjT() > 1000 * 60 * 10){
  44 + ScheduleRealInfo near = searchNearOut(gps);
  45 +
  46 + if(null != near && !near.getId().equals(sch.getId())){
  47 + dayOfSchedule.addExecPlan(near);
  48 + return false;
  49 + }
  50 + }
  51 +
  52 + }catch (Exception e){
  53 + log.error("", e);
  54 + }
  55 + return true;
  56 + /*try{
  57 + //会不会是分班没有完成
  58 + if(sch.getBcType().equals("in") && t - sch.getDfsjT() > 1000 * 60 * 20){
  59 + ScheduleRealInfo fbFirst = dayOfSchedule.nextByBcType(sch, "normal");
  60 +
  61 + if(fbFirst == null || !fbFirst.getQdzCode().equals(gps.getStopNo()))
  62 + return;
  63 +
  64 + long dt = fbFirst.getDfsjT();
  65 + //晚于待发前4分钟 -执行分班的首个营运
  66 + if(dt - t < 1000 * 60 * 4){
  67 + dayOfSchedule.addExecPlan(fbFirst);
  68 + return;
  69 + }
  70 + }
  71 +
  72 + //线路编码不匹配
  73 + if("out".equals(sch.getBcType()) && !sch.getXlBm().equals(gps.getLineId())){
  74 + ScheduleRealInfo nextOut = dayOfSchedule.nextByBcType(sch, "out");
  75 + if(nextOut != null && nextOut.getXlBm().equals(gps.getLineId())
  76 + && fcSpace(sch, gps) > fcSpace(nextOut, gps)){
  77 + dayOfSchedule.addExecPlan(nextOut);
  78 + return;
  79 + }
  80 + }
  81 + }catch (Exception e){
  82 + log.error("", e);
  83 + }
  84 +
  85 + //下一个相同走向的班次
  86 + ScheduleRealInfo next = dayOfSchedule.nextSame(sch);
  87 + if(next == null || !next.getQdzCode().equals(sch.getQdzCode()))
  88 + return;
  89 +
  90 + //晚于班次间隔百分之70,跳下一个班次
  91 + double s = (int) (next.getDfsjT() - sch.getDfsjT());
  92 + double r = (int) (t - sch.getDfsjT());
  93 + if(r / s > 0.7){
  94 + if(dayOfSchedule.addExecPlan(next))
  95 + outMatch(gps, next);
  96 + }*/
  97 + }
  98 +
  99 + /**
  100 + * 搜索一个离发车信号最近的班次
  101 + * @param gps
  102 + * @return
  103 + */
  104 + private ScheduleRealInfo searchNearOut(GpsEntity gps) {
  105 + List<ScheduleRealInfo> list = dayOfSchedule.findByNbbm(gps.getNbbm());
  106 + //排序
  107 + Collections.sort(list, schComp);
  108 +
  109 + ScheduleRealInfo near = null;
  110 + int diff, minDiff=-1;
  111 + for(ScheduleRealInfo sch : list){
  112 +
  113 + if(StringUtils.isNotEmpty(sch.getFcsjActual()))
  114 + continue;
  115 +
  116 + if(StringUtils.isNotEmpty(sch.getZdsjActual()))
  117 + continue;
  118 +
  119 + diff = (int) Math.abs(gps.getTimestamp() - sch.getDfsjT());
  120 + if(null == near || diff < minDiff){
  121 + near = sch;
  122 + minDiff = diff;
  123 + }
  124 + }
  125 + return near;
  126 + }
  127 +}
... ...
src/main/java/com/bsth/service/oil/impl/YlbServiceImpl.java
... ... @@ -404,7 +404,7 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
404 404 Ylxxb ylxxb = ylxxList.get(i);
405 405 if (map.get("clZbh").toString().equals(ylxxb.getNbbm())
406 406 && map.get("jGh").toString().equals(ylxxb.getJsy())
407   - && ylxxb.getJylx()>0) {
  407 + && ylxxb.getJylx()==1) {
408 408 if(ylxxb.getJzl()>0){
409 409 fage2=true;
410 410 }
... ... @@ -418,7 +418,7 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
418 418 Ylxxb ylxxb = ylxxList.get(j);
419 419 if (map.get("clZbh").toString().equals(ylxxb.getNbbm())
420 420 && map.get("jGh").toString().equals(ylxxb.getJsy())
421   - && ylxxb.getJylx()>0) {
  421 + && ylxxb.getJylx()==1) {
422 422 jzl =Arith.add(jzl, ylxxb.getJzl());
423 423 }
424 424 }
... ... @@ -765,7 +765,7 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
765 765 for (int i = 0; i < ylxxbList.size(); i++) {
766 766 Boolean fage=false;
767 767 Ylxxb y1=ylxxbList.get(i);
768   - if(m.get(y1.getNbbm())!=null){
  768 + if(m.get(y1.getNbbm())==null){
769 769 Line line=BasicData.nbbm2LineMap.get(y1.getNbbm());
770 770 if(null !=line){
771 771 if(!xlbm.equals("")){
... ... @@ -808,7 +808,6 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
808 808 if(status){
809 809 t.setCzyl(0.0);
810 810 }
811   -// double jzyl=Arith.add(t.getJzl(), t.getCzyl());
812 811 t.setJzyl(Arith.add(t.getJzl(), t.getCzyl()));
813 812 t.setYh(0.0);
814 813 if(!(t.getSsgsdm().equals("") || t.getFgsdm().equals(""))){
... ...
src/main/resources/datatools/ktrs/ttinfodetailDataInput2_ls.ktr
1   -<?xml version="1.0" encoding="UTF-8"?>
2   -<transformation>
3   - <info>
4   - <name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x5bfc;&#x5165;-&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c;</name>
5   - <description>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description>
6   - <extended_description>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;</extended_description>
7   - <trans_version/>
8   - <trans_type>Normal</trans_type>
9   - <trans_status>0</trans_status>
10   - <directory>&#x2f;</directory>
11   - <parameters>
12   - </parameters>
13   - <log>
14   -<trans-log-table><connection/>
15   -<schema/>
16   -<table/>
17   -<size_limit_lines/>
18   -<interval/>
19   -<timeout_days/>
20   -<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>
21   -<perf-log-table><connection/>
22   -<schema/>
23   -<table/>
24   -<interval/>
25   -<timeout_days/>
26   -<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>
27   -<channel-log-table><connection/>
28   -<schema/>
29   -<table/>
30   -<timeout_days/>
31   -<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>
32   -<step-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>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>
37   -<metrics-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>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>
42   - </log>
43   - <maxdate>
44   - <connection/>
45   - <table/>
46   - <field/>
47   - <offset>0.0</offset>
48   - <maxdiff>0.0</maxdiff>
49   - </maxdate>
50   - <size_rowset>10000</size_rowset>
51   - <sleep_time_empty>50</sleep_time_empty>
52   - <sleep_time_full>50</sleep_time_full>
53   - <unique_connections>N</unique_connections>
54   - <feedback_shown>Y</feedback_shown>
55   - <feedback_size>50000</feedback_size>
56   - <using_thread_priorities>Y</using_thread_priorities>
57   - <shared_objects_file/>
58   - <capture_step_performance>N</capture_step_performance>
59   - <step_performance_capturing_delay>1000</step_performance_capturing_delay>
60   - <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
61   - <dependencies>
62   - </dependencies>
63   - <partitionschemas>
64   - </partitionschemas>
65   - <slaveservers>
66   - </slaveservers>
67   - <clusterschemas>
68   - </clusterschemas>
69   - <created_user>-</created_user>
70   - <created_date>2016&#x2f;06&#x2f;30 12&#x3a;21&#x3a;57.536</created_date>
71   - <modified_user>-</modified_user>
72   - <modified_date>2016&#x2f;06&#x2f;30 12&#x3a;21&#x3a;57.536</modified_date>
73   - <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
74   - <is_key_private>N</is_key_private>
75   - </info>
76   - <notepads>
77   - <notepad>
78   - <note>&#x5b57;&#x5178;&#x8868;&#x5bf9;&#x5e94;&#xff08;&#x4ee5;&#x540e;&#x76f4;&#x63a5;&#x67e5;&#x627e;&#x8868; bsth_c_sys_dictionary&#xff09;&#xa;&#x7c7b;&#x578b; &#x4ee3;&#x7801; &#x540d;&#x79f0;&#xa;LineTrend 0 &#x4e0a;&#x884c;&#xa;LineTrend 1 &#x4e0b;&#x884c;&#xa;ScheduleType normal &#x6b63;&#x5e38;&#x73ed;&#x6b21;&#xa;ScheduleType out &#x51fa;&#x573a;&#xa;ScheduleType in &#x8fdb;&#x573a;&#xa;ScheduleType temp &#x4e34;&#x52a0;&#xa;ScheduleType region &#x533a;&#x95f4;&#xa;ScheduleType venting &#x653e;&#x7a7a;&#xa;ScheduleType major &#x653e;&#x5927;&#x7ad9;</note>
79   - <xloc>606</xloc>
80   - <yloc>129</yloc>
81   - <width>332</width>
82   - <heigth>186</heigth>
83   - <fontname>YaHei Consolas Hybrid</fontname>
84   - <fontsize>12</fontsize>
85   - <fontbold>N</fontbold>
86   - <fontitalic>N</fontitalic>
87   - <fontcolorred>0</fontcolorred>
88   - <fontcolorgreen>0</fontcolorgreen>
89   - <fontcolorblue>0</fontcolorblue>
90   - <backgroundcolorred>255</backgroundcolorred>
91   - <backgroundcolorgreen>205</backgroundcolorgreen>
92   - <backgroundcolorblue>112</backgroundcolorblue>
93   - <bordercolorred>100</bordercolorred>
94   - <bordercolorgreen>100</bordercolorgreen>
95   - <bordercolorblue>100</bordercolorblue>
96   - <drawshadow>Y</drawshadow>
97   - </notepad>
98   - <notepad>
99   - <note>&#x56e0;&#x4e3a;&#x65f6;&#x523b;&#x8868;&#x8f93;&#x5165;&#x683c;&#x5f0f;&#x4e0d;&#x786e;&#x5b9a;&#x6027;&#xff0c;&#x4e3b;&#x8981;&#x56e0;&#x4e3a;&#x8868;&#x7ed3;&#x6784;&#x662f;&#x53cd;&#x8303;&#x5f0f;&#x5316;&#x7684;&#xff0c;&#xa;&#x6240;&#x4ee5;&#x9700;&#x8981;&#x5916;&#x90e8;&#x52a8;&#x6001;&#x6307;&#x5b9a;&#x613f;&#x6570;&#x636e;&#xff0c;&#x5934;&#x4e09;&#x4e2a;step&#x52a8;&#x6001;&#x6307;&#x5b9a;&#x613f;&#x6570;&#x636e;&#xa;&#xa;</note>
100   - <xloc>79</xloc>
101   - <yloc>206</yloc>
102   - <width>346</width>
103   - <heigth>74</heigth>
104   - <fontname>YaHei Consolas Hybrid</fontname>
105   - <fontsize>12</fontsize>
106   - <fontbold>N</fontbold>
107   - <fontitalic>N</fontitalic>
108   - <fontcolorred>0</fontcolorred>
109   - <fontcolorgreen>0</fontcolorgreen>
110   - <fontcolorblue>0</fontcolorblue>
111   - <backgroundcolorred>255</backgroundcolorred>
112   - <backgroundcolorgreen>205</backgroundcolorgreen>
113   - <backgroundcolorblue>112</backgroundcolorblue>
114   - <bordercolorred>100</bordercolorred>
115   - <bordercolorgreen>100</bordercolorgreen>
116   - <bordercolorblue>100</bordercolorblue>
117   - <drawshadow>Y</drawshadow>
118   - </notepad>
119   - <notepad>
120   - <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>
121   - <xloc>721</xloc>
122   - <yloc>762</yloc>
123   - <width>333</width>
124   - <heigth>90</heigth>
125   - <fontname>YaHei Consolas Hybrid</fontname>
126   - <fontsize>12</fontsize>
127   - <fontbold>N</fontbold>
128   - <fontitalic>N</fontitalic>
129   - <fontcolorred>0</fontcolorred>
130   - <fontcolorgreen>0</fontcolorgreen>
131   - <fontcolorblue>0</fontcolorblue>
132   - <backgroundcolorred>255</backgroundcolorred>
133   - <backgroundcolorgreen>205</backgroundcolorgreen>
134   - <backgroundcolorblue>112</backgroundcolorblue>
135   - <bordercolorred>100</bordercolorred>
136   - <bordercolorgreen>100</bordercolorgreen>
137   - <bordercolorblue>100</bordercolorblue>
138   - <drawshadow>Y</drawshadow>
139   - </notepad>
140   - <notepad>
141   - <note>&#x51fa;&#x573a;&#x73ed;&#x6b21;&#xff0c;&#x65b9;&#x5411;&#x6709;&#x65f6;&#x786e;&#x5b9a;&#x4e0d;&#x51c6;&#xff0c;&#xa;&#x7a7a;&#x7684;&#x60c5;&#x51b5;&#x4e0b;&#x8bbe;&#x5b9a;&#x4e3a;0&#xff08;&#x4e0a;&#x884c;&#xff09;</note>
142   - <xloc>104</xloc>
143   - <yloc>939</yloc>
144   - <width>178</width>
145   - <heigth>42</heigth>
146   - <fontname>YaHei Consolas Hybrid</fontname>
147   - <fontsize>12</fontsize>
148   - <fontbold>N</fontbold>
149   - <fontitalic>N</fontitalic>
150   - <fontcolorred>0</fontcolorred>
151   - <fontcolorgreen>0</fontcolorgreen>
152   - <fontcolorblue>0</fontcolorblue>
153   - <backgroundcolorred>255</backgroundcolorred>
154   - <backgroundcolorgreen>205</backgroundcolorgreen>
155   - <backgroundcolorblue>112</backgroundcolorblue>
156   - <bordercolorred>100</bordercolorred>
157   - <bordercolorgreen>100</bordercolorgreen>
158   - <bordercolorblue>100</bordercolorblue>
159   - <drawshadow>Y</drawshadow>
160   - </notepad>
161   - <notepad>
162   - <note>&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#xff0c;&#x65b9;&#x5411;&#x6709;&#x65f6;&#x786e;&#x5b9a;&#x4e0d;&#x51c6;&#xff0c;&#xa;&#x7a7a;&#x7684;&#x60c5;&#x51b5;&#x4e0b;&#x8bbe;&#x5b9a;&#x4e3a;0&#xff08;&#x4e0a;&#x884c;&#xff09;</note>
163   - <xloc>578</xloc>
164   - <yloc>1084</yloc>
165   - <width>178</width>
166   - <heigth>42</heigth>
167   - <fontname>YaHei Consolas Hybrid</fontname>
168   - <fontsize>12</fontsize>
169   - <fontbold>N</fontbold>
170   - <fontitalic>N</fontitalic>
171   - <fontcolorred>0</fontcolorred>
172   - <fontcolorgreen>0</fontcolorgreen>
173   - <fontcolorblue>0</fontcolorblue>
174   - <backgroundcolorred>255</backgroundcolorred>
175   - <backgroundcolorgreen>205</backgroundcolorgreen>
176   - <backgroundcolorblue>112</backgroundcolorblue>
177   - <bordercolorred>100</bordercolorred>
178   - <bordercolorgreen>100</bordercolorgreen>
179   - <bordercolorblue>100</bordercolorblue>
180   - <drawshadow>Y</drawshadow>
181   - </notepad>
182   - </notepads>
183   - <connection>
184   - <name>192.168.168.1_jwgl_dw</name>
185   - <server>192.168.168.1</server>
186   - <type>ORACLE</type>
187   - <access>Native</access>
188   - <database>orcl</database>
189   - <port>1521</port>
190   - <username>jwgl_dw</username>
191   - <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password>
192   - <servername/>
193   - <data_tablespace/>
194   - <index_tablespace/>
195   - <attributes>
196   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
197   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
198   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
199   - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
200   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
201   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
202   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
203   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
204   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
205   - </attributes>
206   - </connection>
207   - <connection>
208   - <name>bus_control_variable</name>
209   - <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
210   - <type>MYSQL</type>
211   - <access>Native</access>
212   - <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
213   - <port>3306</port>
214   - <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
215   - <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
216   - <servername/>
217   - <data_tablespace/>
218   - <index_tablespace/>
219   - <attributes>
220   - <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
221   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
222   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
223   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
224   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
225   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
226   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
227   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
228   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
229   - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
230   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
231   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
232   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
233   - </attributes>
234   - </connection>
235   - <connection>
236   - <name>bus_control_&#x516c;&#x53f8;_201</name>
237   - <server>localhost</server>
238   - <type>MYSQL</type>
239   - <access>Native</access>
240   - <database>control</database>
241   - <port>3306</port>
242   - <username>root</username>
243   - <password>Encrypted </password>
244   - <servername/>
245   - <data_tablespace/>
246   - <index_tablespace/>
247   - <attributes>
248   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
249   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
250   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
251   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
252   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
253   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
254   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
255   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
256   - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
257   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
258   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
259   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
260   - </attributes>
261   - </connection>
262   - <connection>
263   - <name>bus_control_&#x672c;&#x673a;</name>
264   - <server>localhost</server>
265   - <type>MYSQL</type>
266   - <access>Native</access>
267   - <database>control</database>
268   - <port>3306</port>
269   - <username>root</username>
270   - <password>Encrypted </password>
271   - <servername/>
272   - <data_tablespace/>
273   - <index_tablespace/>
274   - <attributes>
275   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
276   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
277   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
278   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
279   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
280   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
281   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
282   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
283   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
284   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
285   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
286   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
287   - </attributes>
288   - </connection>
289   - <connection>
290   - <name>xlab_mysql_youle</name>
291   - <server>101.231.124.8</server>
292   - <type>MYSQL</type>
293   - <access>Native</access>
294   - <database>xlab_youle</database>
295   - <port>45687</port>
296   - <username>xlab-youle</username>
297   - <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
298   - <servername/>
299   - <data_tablespace/>
300   - <index_tablespace/>
301   - <attributes>
302   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
303   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
304   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
305   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
306   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
307   - <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
308   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
309   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
310   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
311   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
312   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
313   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
314   - </attributes>
315   - </connection>
316   - <connection>
317   - <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
318   - <server>localhost</server>
319   - <type>MYSQL</type>
320   - <access>Native</access>
321   - <database>xlab_youle</database>
322   - <port>3306</port>
323   - <username>root</username>
324   - <password>Encrypted </password>
325   - <servername/>
326   - <data_tablespace/>
327   - <index_tablespace/>
328   - <attributes>
329   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
330   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
331   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
332   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
333   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
334   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
335   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
336   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
337   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
338   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
339   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
340   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
341   - </attributes>
342   - </connection>
343   - <connection>
344   - <name>xlab_youle</name>
345   - <server/>
346   - <type>MYSQL</type>
347   - <access>JNDI</access>
348   - <database>xlab_youle</database>
349   - <port>1521</port>
350   - <username/>
351   - <password>Encrypted </password>
352   - <servername/>
353   - <data_tablespace/>
354   - <index_tablespace/>
355   - <attributes>
356   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
357   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
358   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
359   - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
360   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
361   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
362   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
363   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
364   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
365   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
366   - </attributes>
367   - </connection>
368   - <order>
369   - <hop> <from>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</from><to>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</to><enabled>Y</enabled> </hop>
370   - <hop> <from>&#x6dfb;&#x52a0;&#x53d1;&#x8f66;&#x987a;&#x5e8f;&#x53f7;</from><to>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;&#xff08;&#x53d1;&#x8f66;&#x65f6;&#x95f4;&#x4e3a;&#x7a7a;&#xff09;</to><enabled>Y</enabled> </hop>
371   - <hop> <from>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;&#xff08;&#x53d1;&#x8f66;&#x65f6;&#x95f4;&#x4e3a;&#x7a7a;&#xff09;</from><to>&#x6dfb;&#x52a0;&#x5bf9;&#x5e94;&#x73ed;&#x6b21;&#x6570;</to><enabled>Y</enabled> </hop>
372   - <hop> <from>&#x6dfb;&#x52a0;&#x5bf9;&#x5e94;&#x73ed;&#x6b21;&#x6570;</from><to>&#x5904;&#x7406;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
373   - <hop> <from>&#x5904;&#x7406;&#x6570;&#x636e;</from><to>&#x5206;&#x7ec4;&#x5404;&#x4e2a;&#x8def;&#x724c;&#x7684;&#x7ad9;</to><enabled>Y</enabled> </hop>
374   - <hop> <from>&#x67e5;&#x627e;&#x65f6;&#x523b;&#x8868;&#x57fa;&#x7840;&#x4fe1;&#x606f;&#x5173;&#x8054;</from><to>&#x67e5;&#x627e;&#x8def;&#x724c;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
375   - <hop> <from>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</from><to>&#x67e5;&#x627e;&#x65f6;&#x523b;&#x8868;&#x57fa;&#x7840;&#x4fe1;&#x606f;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
376   - <hop> <from>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178;</from><to>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178;</to><enabled>Y</enabled> </hop>
377   - <hop> <from>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178; 2</from><to>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 2</to><enabled>Y</enabled> </hop>
378   - <hop> <from>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178; 3</from><to>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 3</to><enabled>Y</enabled> </hop>
379   - <hop> <from>&#x5339;&#x914d;&#x4e0a;&#x4e0b;&#x884c;&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</from><to>&#x7c7b;&#x578b;&#x4fee;&#x6b63;</to><enabled>Y</enabled> </hop>
380   - <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;1</from><to>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</to><enabled>Y</enabled> </hop>
381   - <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;1</from><to>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
382   - <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</from><to>&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
383   - <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</from><to>&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
384   - <hop> <from>&#x67e5;&#x627e;&#x6240;&#x6709;&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</from><to>&#x5339;&#x914d;&#x4e0a;&#x4e0b;&#x884c;&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
385   - <hop> <from>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;</from><to>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178;</to><enabled>Y</enabled> </hop>
386   - <hop> <from>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</from><to>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
387   - <hop> <from>&#x6b63;&#x5e38;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</from><to>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</to><enabled>Y</enabled> </hop>
388   - <hop> <from>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6570;&#x636e;</from><to>&#x6b63;&#x5e38;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
389   - <hop> <from>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178;</from><to>&#x67e5;&#x627e;&#x6240;&#x6709;&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
390   - <hop> <from>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 2</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x51fa;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
391   - <hop> <from>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 3</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x8fdb;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
392   - <hop> <from>&#x8ba1;&#x7b97;&#x73ed;&#x6b21;&#x7c7b;&#x578b;</from><to>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;1</to><enabled>Y</enabled> </hop>
393   - <hop> <from>&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</from><to>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;1</to><enabled>Y</enabled> </hop>
394   - <hop> <from>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;1</from><to>&#x51fa;&#x573a;&#x73ed;&#x6b21;_&#x786e;&#x5b9a;&#x7ec8;&#x70b9;&#x7ad9;&#x540d;&#x5b57;</to><enabled>Y</enabled> </hop>
395   - <hop> <from>&#x51fa;&#x573a;&#x73ed;&#x6b21;_&#x786e;&#x5b9a;&#x7ec8;&#x70b9;&#x7ad9;&#x540d;&#x5b57;</from><to>&#x67e5;&#x627e;&#x51fa;&#x573a;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</to><enabled>Y</enabled> </hop>
396   - <hop> <from>&#x67e5;&#x627e;&#x51fa;&#x573a;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</from><to>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178; 2</to><enabled>Y</enabled> </hop>
397   - <hop> <from>&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</from><to>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;2</to><enabled>Y</enabled> </hop>
398   - <hop> <from>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;2</from><to>&#x8fdb;&#x573a;&#x73ed;&#x6b21;_&#x786e;&#x5b9a;&#x8d77;&#x70b9;&#x7ad9;&#x540d;&#x5b57;</to><enabled>Y</enabled> </hop>
399   - <hop> <from>&#x8fdb;&#x573a;&#x73ed;&#x6b21;_&#x786e;&#x5b9a;&#x8d77;&#x70b9;&#x7ad9;&#x540d;&#x5b57;</from><to>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ebf;&#x8def;&#x65b9;&#x5411;</to><enabled>Y</enabled> </hop>
400   - <hop> <from>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ebf;&#x8def;&#x65b9;&#x5411;</from><to>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ec8;&#x70b9;&#x7ad9;&#xff0c;&#x5e76;&#x4f5c;&#x4e3a;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x7684;&#x8d77;&#x70b9;&#x7ad9;</to><enabled>Y</enabled> </hop>
401   - <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x6dfb;&#x52a0;&#x53d1;&#x8f66;&#x987a;&#x5e8f;&#x53f7;</to><enabled>Y</enabled> </hop>
402   - <hop> <from>&#x5206;&#x7ec4;&#x5404;&#x4e2a;&#x8def;&#x724c;&#x7684;&#x7ad9;</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
403   - <hop> <from>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;&#xff0c;&#x7ebf;&#x8def;&#x540d;&#x5b57;&#xff0c;&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</from><to>&#x8bb0;&#x5f55;&#x5173;&#x8054; &#x28;&#x7b1b;&#x5361;&#x5c14;&#x8f93;&#x51fa;&#x29;</to><enabled>Y</enabled> </hop>
404   - <hop> <from>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</from><to>&#x8bb0;&#x5f55;&#x5173;&#x8054; &#x28;&#x7b1b;&#x5361;&#x5c14;&#x8f93;&#x51fa;&#x29;</to><enabled>Y</enabled> </hop>
405   - <hop> <from>&#x8bb0;&#x5f55;&#x5173;&#x8054; &#x28;&#x7b1b;&#x5361;&#x5c14;&#x8f93;&#x51fa;&#x29;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
406   - <hop> <from>&#x7c7b;&#x578b;&#x4fee;&#x6b63;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo_detail</to><enabled>Y</enabled> </hop>
407   - <hop> <from>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ec8;&#x70b9;&#x7ad9;&#xff0c;&#x5e76;&#x4f5c;&#x4e3a;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x7684;&#x8d77;&#x70b9;&#x7ad9;</from><to>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</to><enabled>Y</enabled> </hop>
408   - <hop> <from>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</from><to>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178; 3</to><enabled>Y</enabled> </hop>
409   - <hop> <from>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x51fa;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</from><to>&#x5339;&#x914d;&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
410   - <hop> <from>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x8fdb;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</from><to>&#x5339;&#x914d;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
411   - <hop> <from>&#x5339;&#x914d;&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</from><to>&#x4e0a;&#x4e0b;&#x884c;NULL&#x5224;&#x5b9a;</to><enabled>Y</enabled> </hop>
412   - <hop> <from>&#x4e0a;&#x4e0b;&#x884c;NULL&#x5224;&#x5b9a;</from><to>&#x7c7b;&#x578b;&#x4fee;&#x6b63; 2</to><enabled>Y</enabled> </hop>
413   - <hop> <from>&#x7c7b;&#x578b;&#x4fee;&#x6b63; 2</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo_detail 2</to><enabled>Y</enabled> </hop>
414   - <hop> <from>&#x5339;&#x914d;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</from><to>&#x4e0a;&#x4e0b;&#x884c;&#x5224;&#x5b9a; 2</to><enabled>Y</enabled> </hop>
415   - <hop> <from>&#x4e0a;&#x4e0b;&#x884c;&#x5224;&#x5b9a; 2</from><to>&#x7c7b;&#x578b;&#x4fee;&#x6b63; 3</to><enabled>Y</enabled> </hop>
416   - <hop> <from>&#x7c7b;&#x578b;&#x4fee;&#x6b63; 3</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo_detail 3</to><enabled>Y</enabled> </hop>
417   - <hop> <from>&#x67e5;&#x627e;&#x8def;&#x724c;&#x5173;&#x8054;</from><to>&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c;&#x7c7b;&#x578b;</to><enabled>Y</enabled> </hop>
418   - <hop> <from>&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c;&#x7c7b;&#x578b;</from><to>&#x8ba1;&#x7b97;&#x73ed;&#x6b21;&#x7c7b;&#x578b;</to><enabled>Y</enabled> </hop>
419   - </order>
420   - <step>
421   - <name>&#x4e0a;&#x4e0b;&#x884c;NULL&#x5224;&#x5b9a;</name>
422   - <type>IfNull</type>
423   - <description/>
424   - <distribute>Y</distribute>
425   - <custom_distribution/>
426   - <copies>1</copies>
427   - <partitioning>
428   - <method>none</method>
429   - <schema_name/>
430   - </partitioning>
431   - <replaceAllByValue/>
432   - <replaceAllMask/>
433   - <selectFields>Y</selectFields>
434   - <selectValuesType>N</selectValuesType>
435   - <setEmptyStringAll>N</setEmptyStringAll>
436   - <valuetypes>
437   - </valuetypes>
438   - <fields>
439   - <field>
440   - <name>sxx</name>
441   - <value>0</value>
442   - <mask/>
443   - <set_empty_string>N</set_empty_string>
444   - </field>
445   - </fields>
446   - <cluster_schema/>
447   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
448   - <xloc>335</xloc>
449   - <yloc>938</yloc>
450   - <draw>Y</draw>
451   - </GUI>
452   - </step>
453   -
454   - <step>
455   - <name>&#x4e0a;&#x4e0b;&#x884c;&#x5224;&#x5b9a; 2</name>
456   - <type>IfNull</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   - <replaceAllByValue/>
466   - <replaceAllMask/>
467   - <selectFields>Y</selectFields>
468   - <selectValuesType>N</selectValuesType>
469   - <setEmptyStringAll>N</setEmptyStringAll>
470   - <valuetypes>
471   - </valuetypes>
472   - <fields>
473   - <field>
474   - <name>sxx2</name>
475   - <value>0</value>
476   - <mask/>
477   - <set_empty_string>N</set_empty_string>
478   - </field>
479   - </fields>
480   - <cluster_schema/>
481   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
482   - <xloc>804</xloc>
483   - <yloc>1081</yloc>
484   - <draw>Y</draw>
485   - </GUI>
486   - </step>
487   -
488   - <step>
489   - <name>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178;</name>
490   - <type>ValueMapper</type>
491   - <description/>
492   - <distribute>Y</distribute>
493   - <custom_distribution/>
494   - <copies>1</copies>
495   - <partitioning>
496   - <method>none</method>
497   - <schema_name/>
498   - </partitioning>
499   - <field_to_use>sxx</field_to_use>
500   - <target_field>sxx_desc</target_field>
501   - <non_match_default/>
502   - <fields>
503   - <field>
504   - <source_value>0</source_value>
505   - <target_value>&#x4e0a;&#x884c;</target_value>
506   - </field>
507   - <field>
508   - <source_value>1</source_value>
509   - <target_value>&#x4e0b;&#x884c;</target_value>
510   - </field>
511   - </fields>
512   - <cluster_schema/>
513   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
514   - <xloc>147</xloc>
515   - <yloc>403</yloc>
516   - <draw>Y</draw>
517   - </GUI>
518   - </step>
519   -
520   - <step>
521   - <name>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178; 2</name>
522   - <type>ValueMapper</type>
523   - <description/>
524   - <distribute>Y</distribute>
525   - <custom_distribution/>
526   - <copies>1</copies>
527   - <partitioning>
528   - <method>none</method>
529   - <schema_name/>
530   - </partitioning>
531   - <field_to_use>sxx</field_to_use>
532   - <target_field>sxx_desc</target_field>
533   - <non_match_default/>
534   - <fields>
535   - <field>
536   - <source_value>0</source_value>
537   - <target_value>&#x4e0a;&#x884c;</target_value>
538   - </field>
539   - <field>
540   - <source_value>1</source_value>
541   - <target_value>&#x4e0b;&#x884c;</target_value>
542   - </field>
543   - </fields>
544   - <cluster_schema/>
545   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
546   - <xloc>331</xloc>
547   - <yloc>598</yloc>
548   - <draw>Y</draw>
549   - </GUI>
550   - </step>
551   -
552   - <step>
553   - <name>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178; 3</name>
554   - <type>ValueMapper</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   - <field_to_use>sxx</field_to_use>
564   - <target_field>sxx_desc</target_field>
565   - <non_match_default/>
566   - <fields>
567   - <field>
568   - <source_value>0</source_value>
569   - <target_value>&#x4e0a;&#x884c;</target_value>
570   - </field>
571   - <field>
572   - <source_value>1</source_value>
573   - <target_value>&#x4e0b;&#x884c;</target_value>
574   - </field>
575   - </fields>
576   - <cluster_schema/>
577   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
578   - <xloc>553</xloc>
579   - <yloc>859</yloc>
580   - <draw>Y</draw>
581   - </GUI>
582   - </step>
583   -
584   - <step>
585   - <name>&#x51fa;&#x573a;&#x73ed;&#x6b21;_&#x786e;&#x5b9a;&#x7ec8;&#x70b9;&#x7ad9;&#x540d;&#x5b57;</name>
586   - <type>ScriptValueMod</type>
587   - <description/>
588   - <distribute>Y</distribute>
589   - <custom_distribution/>
590   - <copies>1</copies>
591   - <partitioning>
592   - <method>none</method>
593   - <schema_name/>
594   - </partitioning>
595   - <compatible>N</compatible>
596   - <optimizationLevel>9</optimizationLevel>
597   - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
598   - <jsScript_name>Script 1</jsScript_name>
599   - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x6dfb;&#x52a0;&#x7ad9;&#x70b9;&#x6807;&#x8bc6;&#xa;var cc_groups &#x3d; qdzgroups.split&#x28;&#x22;,&#x22;&#x29;&#x3b; &#x2f;&#x2f; &#x6240;&#x6709;&#x73ed;&#x6b21;&#x8d77;&#x70b9;&#x7ad9;&#x6570;&#x7ec4;&#xa;var zdzname &#x3d; cc_groups&#x5b;gno&#x5d;&#x3b; &#x2f;&#x2f; &#x51fa;&#x573a;&#x73ed;&#x6b21;&#x7684;&#x7ec8;&#x70b9;&#x7ad9;&#x662f;&#x4e0b;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x8d77;&#x59cb;&#x7ad9;&#xa;var endZdtype &#x3d; &#x27;B&#x27;&#x3b;&#xa;&#x2f;&#x2f; var endZdtype &#x3d; &#x27;E&#x27;&#x3b;&#xa;&#xa;var destory &#x3d; 0&#x3b; &#x2f;&#x2f; &#x672a;&#x64a4;&#x9500;flag</jsScript_script>
600   - </jsScript> </jsScripts> <fields> <field> <name>zdzname</name>
601   - <rename>zdzname</rename>
602   - <type>String</type>
603   - <length>-1</length>
604   - <precision>-1</precision>
605   - <replace>N</replace>
606   - </field> <field> <name>endZdtype</name>
607   - <rename>endZdtype</rename>
608   - <type>String</type>
609   - <length>-1</length>
610   - <precision>-1</precision>
611   - <replace>N</replace>
612   - </field> <field> <name>destory</name>
613   - <rename>destory</rename>
614   - <type>Integer</type>
615   - <length>-1</length>
616   - <precision>-1</precision>
617   - <replace>N</replace>
618   - </field> </fields> <cluster_schema/>
619   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
620   - <xloc>575</xloc>
621   - <yloc>502</yloc>
622   - <draw>Y</draw>
623   - </GUI>
624   - </step>
625   -
626   - <step>
627   - <name>&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</name>
628   - <type>Dummy</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   - <cluster_schema/>
638   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
639   - <xloc>869</xloc>
640   - <yloc>504</yloc>
641   - <draw>Y</draw>
642   - </GUI>
643   - </step>
644   -
645   - <step>
646   - <name>&#x5206;&#x7ec4;&#x5404;&#x4e2a;&#x8def;&#x724c;&#x7684;&#x7ad9;</name>
647   - <type>GroupBy</type>
648   - <description/>
649   - <distribute>Y</distribute>
650   - <custom_distribution/>
651   - <copies>1</copies>
652   - <partitioning>
653   - <method>none</method>
654   - <schema_name/>
655   - </partitioning>
656   - <all_rows>Y</all_rows>
657   - <ignore_aggregate>N</ignore_aggregate>
658   - <field_ignore/>
659   - <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
660   - <prefix>grp</prefix>
661   - <add_linenr>Y</add_linenr>
662   - <linenr_fieldname>gno</linenr_fieldname>
663   - <give_back_row>N</give_back_row>
664   - <group>
665   - <field>
666   - <name>lp</name>
667   - </field>
668   - </group>
669   - <fields>
670   - <field>
671   - <aggregate>qdzgroups</aggregate>
672   - <subject>qdzname</subject>
673   - <type>CONCAT_STRING</type>
674   - <valuefield>,</valuefield>
675   - </field>
676   - </fields>
677   - <cluster_schema/>
678   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
679   - <xloc>892</xloc>
680   - <yloc>44</yloc>
681   - <draw>Y</draw>
682   - </GUI>
683   - </step>
684   -
685   - <step>
686   - <name>&#x5339;&#x914d;&#x4e0a;&#x4e0b;&#x884c;&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
687   - <type>ScriptValueMod</type>
688   - <description/>
689   - <distribute>Y</distribute>
690   - <custom_distribution/>
691   - <copies>1</copies>
692   - <partitioning>
693   - <method>none</method>
694   - <schema_name/>
695   - </partitioning>
696   - <compatible>N</compatible>
697   - <optimizationLevel>9</optimizationLevel>
698   - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
699   - <jsScript_name>Script 1</jsScript_name>
700   - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var jhlc&#x3b; &#x2f;&#x2f; &#x8ba1;&#x5212;&#x91cc;&#x7a0b;&#xa;var bcsj&#x3b; &#x2f;&#x2f; &#x73ed;&#x6b21;&#x65f6;&#x95f4;&#xa;&#xa;&#x2f;&#x2f; &#x65f6;&#x95f4;&#x8303;&#x56f4;&#x6b63;&#x5219;&#x8868;&#x8fbe;&#x5f0f;&#xa;var timeRex &#x3d; &#x2f;&#x5e;&#x28;&#x5b;01&#x5d;&#x3f;&#x5b;0-9&#x5d;&#x7c;2&#x5b;0-3&#x5d;&#x29;&#x3a;&#x5b;0-5&#x5d;&#x5b;0-9&#x5d;&#x24;&#x2f;&#x3b;&#xa;&#x2f;&#x2f; &#x53d1;&#x8f66;&#x65f6;&#x95f4;&#x8f6c;&#x6362;&#x6210;&#x65e5;&#x671f;&#xa;var fcsj_hour &#x3d; str2num&#x28;sendtime_calcu.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa;var fcsj_min &#x3d; str2num&#x28;sendtime_calcu.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa;var fcsj_date &#x3d; new Date&#x28;2000,1,1,fcsj_hour,fcsj_min,0&#x29;&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x5224;&#x5b9a;&#x662f;&#x5426;&#x65e9;&#x9ad8;&#x5cf0;&#xa;var isZgf &#x3d; false&#x3b;&#xa;if &#x28;timeRex.test&#x28;early_start_time&#x29; &#x26;&#x26; timeRex.test&#x28;early_end_time&#x29; &#x26;&#x26; early_up_time &#x21;&#x3d; null &#x26;&#x26; early_down_time &#x21;&#x3d; null&#x29; &#x7b;&#xa; var early_s_hour &#x3d; str2num&#x28;early_start_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_s_min &#x3d; str2num&#x28;early_start_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_s_date &#x3d; new Date&#x28;2000,1,1,early_s_hour,early_s_min,0&#x29;&#x3b;&#xa;&#xa; var early_e_hour &#x3d; str2num&#x28;early_end_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_e_min &#x3d; str2num&#x28;early_end_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_e_date &#x3d; new Date&#x28;2000,1,1,early_e_hour,early_e_min,0&#x29;&#x3b;&#xa;&#xa; if &#x28;fcsj_date &#x3e;&#x3d; early_s_date &#x26;&#x26; fcsj_date &#x3c;&#x3d; early_e_date&#x29; &#x7b;&#xa; isZgf &#x3d; true&#x3b;&#xa; &#x7d;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x5224;&#x5b9a;&#x662f;&#x5426;&#x665a;&#x9ad8;&#x5cf0;&#xa;var isWgf &#x3d; false&#x3b;&#xa;if &#x28;timeRex.test&#x28;late_start_time&#x29; &#x26;&#x26; timeRex.test&#x28;late_end_time&#x29; &#x26;&#x26; late_up_time &#x21;&#x3d; null &#x26;&#x26; late_down_time &#x21;&#x3d; null&#x29; &#x7b;&#xa; var late_s_hour &#x3d; str2num&#x28;late_start_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_s_min &#x3d; str2num&#x28;late_start_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_s_date &#x3d; new Date&#x28;2000,1,1,late_s_hour,late_s_min,0&#x29;&#x3b;&#xa;&#xa; var late_e_hour &#x3d; str2num&#x28;late_end_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_e_min &#x3d; str2num&#x28;late_end_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_e_date &#x3d; new Date&#x28;2000,1,1,late_e_hour,late_e_min,0&#x29;&#x3b;&#xa;&#xa; if &#x28;fcsj_date &#x3e;&#x3d; late_s_date &#x26;&#x26; fcsj_date &#x3c;&#x3d; late_e_date&#x29; &#x7b;&#xa; isWgf &#x3d; true&#x3b;&#xa; &#x7d;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x5224;&#x5b9a;&#x662f;&#x5426;&#x665a;&#x9ad8;&#x5cf0;&#xa;&#xa;if &#x28;sxx &#x3d;&#x3d; 0&#x29; &#x7b; &#x2f;&#x2f; &#x4e0a;&#x884c;&#xa; if &#x28;isZgf&#x29; &#x7b;&#xa; jhlc &#x3d; up_mileage&#x3b;&#xa; bcsj &#x3d; early_up_time &#x21;&#x3d; 0 &#x3f; early_up_time &#x3a; up_travel_time&#x3b;&#xa; &#x7d; else if &#x28;isWgf&#x29; &#x7b;&#xa; jhlc &#x3d; up_mileage&#x3b;&#xa; bcsj &#x3d; late_up_time &#x21;&#x3d; 0 &#x3f; late_up_time &#x3a; up_travel_time&#x3b;&#xa; &#x7d; else &#x7b;&#xa; jhlc &#x3d; up_mileage&#x3b;&#xa; bcsj &#x3d; up_travel_time&#x3b;&#xa; &#x7d;&#xa;&#x7d; else &#x7b; &#x2f;&#x2f; sxx &#x3d;&#x3d; 1 &#x4e0b;&#x884c;&#xa; if &#x28;isZgf&#x29; &#x7b;&#xa; jhlc &#x3d; down_mileage&#x3b;&#xa; bcsj &#x3d; early_down_time &#x21;&#x3d; 0 &#x3f; early_down_time &#x3a; down_travel_time&#x3b;&#xa; &#x7d; else if &#x28;isWgf&#x29; &#x7b;&#xa; jhlc &#x3d; down_mileage&#x3b;&#xa; bcsj &#x3d; late_down_time &#x21;&#x3d; 0 &#x3f; late_down_time &#x3a; down_travel_time&#x3b;&#xa; &#x7d; else &#x7b;&#xa; jhlc &#x3d; down_mileage&#x3b;&#xa; bcsj &#x3d; down_travel_time&#x3b;&#xa; &#x7d;&#xa;&#x7d;</jsScript_script>
701   - </jsScript> </jsScripts> <fields> <field> <name>jhlc</name>
702   - <rename>jhlc</rename>
703   - <type>String</type>
704   - <length>-1</length>
705   - <precision>-1</precision>
706   - <replace>N</replace>
707   - </field> <field> <name>bcsj</name>
708   - <rename>bcsj</rename>
709   - <type>String</type>
710   - <length>-1</length>
711   - <precision>-1</precision>
712   - <replace>N</replace>
713   - </field> </fields> <cluster_schema/>
714   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
715   - <xloc>148</xloc>
716   - <yloc>674</yloc>
717   - <draw>Y</draw>
718   - </GUI>
719   - </step>
720   -
721   - <step>
722   - <name>&#x5339;&#x914d;&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
723   - <type>ScriptValueMod</type>
724   - <description/>
725   - <distribute>Y</distribute>
726   - <custom_distribution/>
727   - <copies>1</copies>
728   - <partitioning>
729   - <method>none</method>
730   - <schema_name/>
731   - </partitioning>
732   - <compatible>N</compatible>
733   - <optimizationLevel>9</optimizationLevel>
734   - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
735   - <jsScript_name>Script 1</jsScript_name>
736   - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var out_mileage&#x3b; &#x2f;&#x2f; &#x51fa;&#x573a;&#x8ba1;&#x5212;&#x91cc;&#x7a0b;&#xa;var out_time&#x3b; &#x2f;&#x2f; &#x51fa;&#x573a;&#x8ba1;&#x5212;&#x65f6;&#x95f4;&#xa;&#xa;if &#x28;sxx &#x3d;&#x3d; 0&#x29; &#x7b; &#x2f;&#x2f; &#x4e0a;&#x884c;&#xa; out_mileage &#x3d; up_out_mileage&#x3b;&#xa; out_time &#x3d; up_out_timer&#x3b;&#xa;&#x7d; else &#x7b; &#x2f;&#x2f; sxx &#x3d;&#x3d; 1 &#x4e0b;&#x884c;&#xa; out_mileage &#x3d; down_out_mileage&#x3b;&#xa; out_time &#x3d; down_out_timer&#x3b;&#xa;&#x7d;&#xa;&#xa;&#xa;&#xa;</jsScript_script>
737   - </jsScript> </jsScripts> <fields> <field> <name>out_mileage</name>
738   - <rename>out_mileage</rename>
739   - <type>String</type>
740   - <length>-1</length>
741   - <precision>-1</precision>
742   - <replace>N</replace>
743   - </field> <field> <name>out_time</name>
744   - <rename>out_time</rename>
745   - <type>String</type>
746   - <length>-1</length>
747   - <precision>-1</precision>
748   - <replace>N</replace>
749   - </field> </fields> <cluster_schema/>
750   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
751   - <xloc>336</xloc>
752   - <yloc>862</yloc>
753   - <draw>Y</draw>
754   - </GUI>
755   - </step>
756   -
757   - <step>
758   - <name>&#x5339;&#x914d;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
759   - <type>ScriptValueMod</type>
760   - <description/>
761   - <distribute>Y</distribute>
762   - <custom_distribution/>
763   - <copies>1</copies>
764   - <partitioning>
765   - <method>none</method>
766   - <schema_name/>
767   - </partitioning>
768   - <compatible>N</compatible>
769   - <optimizationLevel>9</optimizationLevel>
770   - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
771   - <jsScript_name>Script 1</jsScript_name>
772   - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var parade_mileage&#x3b; &#x2f;&#x2f; &#x8fdb;&#x573a;&#x8ba1;&#x5212;&#x91cc;&#x7a0b;&#xa;var parade_time&#x3b; &#x2f;&#x2f; &#x8fdb;&#x573a;&#x8ba1;&#x5212;&#x65f6;&#x95f4;&#xa;&#xa;if &#x28;sxx2 &#x3d;&#x3d; 0&#x29; &#x7b; &#x2f;&#x2f; &#x4e0a;&#x884c;&#xa; parade_mileage &#x3d; up_in_mileage&#x3b;&#xa; parade_time &#x3d; up_in_timer&#x3b;&#xa;&#x7d; else &#x7b; &#x2f;&#x2f; sxx &#x3d;&#x3d; 1 &#x4e0b;&#x884c;&#xa; parade_mileage &#x3d; down_in_mileage&#x3b;&#xa; parade_time &#x3d; down_in_timer&#x3b;&#xa;&#x7d;&#xa;&#xa;&#xa;&#xa;</jsScript_script>
773   - </jsScript> </jsScripts> <fields> <field> <name>parade_mileage</name>
774   - <rename>parade_mileage</rename>
775   - <type>String</type>
776   - <length>-1</length>
777   - <precision>-1</precision>
778   - <replace>N</replace>
779   - </field> <field> <name>parade_time</name>
780   - <rename>parade_time</rename>
781   - <type>String</type>
782   - <length>-1</length>
783   - <precision>-1</precision>
784   - <replace>N</replace>
785   - </field> </fields> <cluster_schema/>
786   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
787   - <xloc>726</xloc>
788   - <yloc>1005</yloc>
789   - <draw>Y</draw>
790   - </GUI>
791   - </step>
792   -
793   - <step>
794   - <name>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;&#xff0c;&#x7ebf;&#x8def;&#x540d;&#x5b57;&#xff0c;&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</name>
795   - <type>DataGrid</type>
796   - <description/>
797   - <distribute>Y</distribute>
798   - <custom_distribution/>
799   - <copies>1</copies>
800   - <partitioning>
801   - <method>none</method>
802   - <schema_name/>
803   - </partitioning>
804   - <fields>
805   - </fields>
806   - <data>
807   - <line> </line>
808   - </data>
809   - <cluster_schema/>
810   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
811   - <xloc>110</xloc>
812   - <yloc>133</yloc>
813   - <draw>Y</draw>
814   - </GUI>
815   - </step>
816   -
817   - <step>
818   - <name>&#x5904;&#x7406;&#x6570;&#x636e;</name>
819   - <type>ScriptValueMod</type>
820   - <description/>
821   - <distribute>Y</distribute>
822   - <custom_distribution/>
823   - <copies>1</copies>
824   - <partitioning>
825   - <method>none</method>
826   - <schema_name/>
827   - </partitioning>
828   - <compatible>N</compatible>
829   - <optimizationLevel>9</optimizationLevel>
830   - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
831   - <jsScript_name>Script 1</jsScript_name>
832   - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x4f7f;&#x7528;&#x6b63;&#x5219;&#x8868;&#x8fbe;&#x5f0f;&#x53bb;&#x9664;&#x7ad9;&#x70b9;&#x540d;&#x79f0;&#x53f3;&#x4fa7;&#x591a;&#x4f59;&#x7684;&#x6570;&#x5b57;&#xa;qdzname &#x3d; qdzname.replace&#x28;&#x2f;&#x28;&#x5c;d&#x2b;&#x24;&#x29;&#x2f;g,&#x27;&#x27;&#x29;&#x3b;&#xa;if &#x28;qdzname &#x21;&#x3d; &#x22;&#x51fa;&#x573a;&#x22; &#x26;&#x26; qdzname &#x21;&#x3d; &#x22;&#x8fdb;&#x573a;&#x22;&#x29; &#x7b;&#xa; qdzname &#x3d; qdzname &#x2b; &#x22;&#x25;&#x22;&#x3b; &#x2f;&#x2f; &#x6a21;&#x7cca;&#x5339;&#x914d;&#x6807;&#x8bc6;&#x7b26;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; sendtime&#x5904;&#x7406;&#xff0c;hhmm&#xff0c;hh&#x3a;mm&#xff0c;hh,mm&#xa;var sendtime_calcu &#x3d; sendtime.replace&#x28;&#x2f;&#x5c;s&#x2f;g, &#x22;&#x22;&#x29;&#x3b;&#xa;if &#x28;sendtime.length &#x3d;&#x3d; 5&#x29; &#x7b; &#x2f;&#x2f; &#x6700;&#x957f;&#x683c;&#x5f0f;&#xff0c;&#x5305;&#x62ec;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x7edf;&#x4e00;&#x628a;&#x5206;&#x9694;&#x7b26;&#x66ff;&#x6362;&#x6210;&#x5192;&#x53f7;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 2&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;3, 2&#x29;&#x3b;&#xa;&#x7d; else if &#x28;sendtime.length &#x3d;&#x3d; 4&#x29; &#x7b;&#xa; if &#x28;sendtime.indexOf&#x28;&#x22;&#x3a;&#x22;&#x29; &#x3e; 0&#x29; &#x7b; &#x2f;&#x2f; &#x5192;&#x53f7;&#x5206;&#x9694;&#xff0c;&#x65e0;&#x9700;&#x4fee;&#x6539;&#xa; sendtime_calcu &#x3d; sendtime&#x3b;&#xa; &#x7d; else if &#x28;sendtime.indexOf&#x28;&#x22;,&#x22;&#x29; &#x3e; 0&#x29; &#x7b; &#x2f;&#x2f; &#x9017;&#x53f7;&#x5206;&#x9694;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 1&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;2, 2&#x29;&#x3b;&#xa; &#x7d; else &#x7b; &#x2f;&#x2f; &#x65e0;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 2&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;2, 2&#x29;&#x3b;&#xa; &#x7d;&#xa;&#x7d; else if &#x28;sendtime.length &#x3d;&#x3d; 3&#x29; &#x7b; &#x2f;&#x2f; &#x65e0;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 1&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;1, 2&#x29;&#x3b;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x5168;&#x90e8;&#x4fee;&#x6b63;&#x5b8c;&#x6bd5;&#x540e;&#xff0c;&#x5982;&#x679c;&#x957f;&#x5ea6;&#x4e0d;&#x662f;5&#xff0c;&#x524d;&#x9762;&#x8865;0&#xa;if &#x28;sendtime_calcu.length &#x21;&#x3d; 5&#x29; &#x7b;&#xa; sendtime_calcu &#x3d; &#x22;0&#x22; &#x2b; sendtime_calcu&#x3b;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;&#x5206;&#x73ed;&#xa;var isfb &#x3d; 0&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;&#x505c;&#x9a76;&#xa;var ists &#x3d; 0&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;isCanceled&#xa;var iscanceled &#x3d; 0&#x3b;</jsScript_script>
833   - </jsScript> </jsScripts> <fields> <field> <name>qdzname</name>
834   - <rename>qdzname</rename>
835   - <type>String</type>
836   - <length>-1</length>
837   - <precision>-1</precision>
838   - <replace>Y</replace>
839   - </field> <field> <name>isfb</name>
840   - <rename>isfb</rename>
841   - <type>Integer</type>
842   - <length>-1</length>
843   - <precision>-1</precision>
844   - <replace>N</replace>
845   - </field> <field> <name>iscanceled</name>
846   - <rename>iscanceled</rename>
847   - <type>Integer</type>
848   - <length>-1</length>
849   - <precision>-1</precision>
850   - <replace>N</replace>
851   - </field> <field> <name>sendtime_calcu</name>
852   - <rename>sendtime_calcu</rename>
853   - <type>String</type>
854   - <length>-1</length>
855   - <precision>-1</precision>
856   - <replace>N</replace>
857   - </field> <field> <name>ists</name>
858   - <rename>ists</rename>
859   - <type>Integer</type>
860   - <length>-1</length>
861   - <precision>-1</precision>
862   - <replace>N</replace>
863   - </field> </fields> <cluster_schema/>
864   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
865   - <xloc>788</xloc>
866   - <yloc>44</yloc>
867   - <draw>Y</draw>
868   - </GUI>
869   - </step>
870   -
871   - <step>
872   - <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
873   - <type>SelectValues</type>
874   - <description/>
875   - <distribute>Y</distribute>
876   - <custom_distribution/>
877   - <copies>1</copies>
878   - <partitioning>
879   - <method>none</method>
880   - <schema_name/>
881   - </partitioning>
882   - <fields> <field> <name>&#x8def;&#x724c;</name>
883   - <rename>lp</rename>
884   - <length>-2</length>
885   - <precision>-2</precision>
886   - </field> <field> <name>&#x7ad9;&#x70b9;&#x540d;&#x79f0;</name>
887   - <rename>qdzname</rename>
888   - <length>-2</length>
889   - <precision>-2</precision>
890   - </field> <field> <name>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</name>
891   - <rename>sendtime</rename>
892   - <length>-2</length>
893   - <precision>-2</precision>
894   - </field> <select_unspecified>Y</select_unspecified>
895   - </fields> <cluster_schema/>
896   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
897   - <xloc>444</xloc>
898   - <yloc>131</yloc>
899   - <draw>Y</draw>
900   - </GUI>
901   - </step>
902   -
903   - <step>
904   - <name>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;1</name>
905   - <type>FilterRows</type>
906   - <description/>
907   - <distribute>Y</distribute>
908   - <custom_distribution/>
909   - <copies>1</copies>
910   - <partitioning>
911   - <method>none</method>
912   - <schema_name/>
913   - </partitioning>
914   -<send_true_to>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6570;&#x636e;</send_true_to>
915   -<send_false_to>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</send_false_to>
916   - <compare>
917   -<condition>
918   - <negated>N</negated>
919   - <leftvalue>bctype</leftvalue>
920   - <function>&#x3d;</function>
921   - <rightvalue/>
922   - <value><name>constant</name><type>String</type><text>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</text><length>-1</length><precision>-1</precision><isnull>N</isnull><mask/></value> </condition>
923   - </compare>
924   - <cluster_schema/>
925   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
926   - <xloc>860</xloc>
927   - <yloc>401</yloc>
928   - <draw>Y</draw>
929   - </GUI>
930   - </step>
931   -
932   - <step>
933   - <name>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</name>
934   - <type>FilterRows</type>
935   - <description/>
936   - <distribute>Y</distribute>
937   - <custom_distribution/>
938   - <copies>1</copies>
939   - <partitioning>
940   - <method>none</method>
941   - <schema_name/>
942   - </partitioning>
943   -<send_true_to>&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</send_true_to>
944   -<send_false_to>&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</send_false_to>
945   - <compare>
946   -<condition>
947   - <negated>N</negated>
948   - <leftvalue>bctype</leftvalue>
949   - <function>&#x3d;</function>
950   - <rightvalue/>
951   - <value><name>constant</name><type>String</type><text>&#x51fa;&#x573a;</text><length>-1</length><precision>-1</precision><isnull>N</isnull><mask/></value> </condition>
952   - </compare>
953   - <cluster_schema/>
954   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
955   - <xloc>995</xloc>
956   - <yloc>503</yloc>
957   - <draw>Y</draw>
958   - </GUI>
959   - </step>
960   -
961   - <step>
962   - <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo_detail</name>
963   - <type>InsertUpdate</type>
964   - <description/>
965   - <distribute>Y</distribute>
966   - <custom_distribution/>
967   - <copies>1</copies>
968   - <partitioning>
969   - <method>none</method>
970   - <schema_name/>
971   - </partitioning>
972   - <connection>bus_control_variable</connection>
973   - <commit>100</commit>
974   - <update_bypassed>N</update_bypassed>
975   - <lookup>
976   - <schema/>
977   - <table>bsth_c_s_ttinfo_detail</table>
978   - <key>
979   - <name>xlid</name>
980   - <field>xl</field>
981   - <condition>&#x3d;</condition>
982   - <name2/>
983   - </key>
984   - <key>
985   - <name>ttid</name>
986   - <field>ttinfo</field>
987   - <condition>&#x3d;</condition>
988   - <name2/>
989   - </key>
990   - <key>
991   - <name>lpid</name>
992   - <field>lp</field>
993   - <condition>&#x3d;</condition>
994   - <name2/>
995   - </key>
996   - <key>
997   - <name>fcno</name>
998   - <field>fcno</field>
999   - <condition>&#x3d;</condition>
1000   - <name2/>
1001   - </key>
1002   - <key>
1003   - <name>bcs</name>
1004   - <field>bcs</field>
1005   - <condition>&#x3d;</condition>
1006   - <name2/>
1007   - </key>
1008   - <value>
1009   - <name>lp</name>
1010   - <rename>lpid</rename>
1011   - <update>Y</update>
1012   - </value>
1013   - <value>
1014   - <name>bc_type</name>
1015   - <rename>bctype_code</rename>
1016   - <update>Y</update>
1017   - </value>
1018   - <value>
1019   - <name>bcs</name>
1020   - <rename>bcs</rename>
1021   - <update>Y</update>
1022   - </value>
1023   - <value>
1024   - <name>bcsj</name>
1025   - <rename>bcsj</rename>
1026   - <update>Y</update>
1027   - </value>
1028   - <value>
1029   - <name>fcno</name>
1030   - <rename>fcno</rename>
1031   - <update>Y</update>
1032   - </value>
1033   - <value>
1034   - <name>jhlc</name>
1035   - <rename>jhlc</rename>
1036   - <update>Y</update>
1037   - </value>
1038   - <value>
1039   - <name>fcsj</name>
1040   - <rename>sendtime_calcu</rename>
1041   - <update>Y</update>
1042   - </value>
1043   - <value>
1044   - <name>ttinfo</name>
1045   - <rename>ttid</rename>
1046   - <update>Y</update>
1047   - </value>
1048   - <value>
1049   - <name>xl</name>
1050   - <rename>xlid</rename>
1051   - <update>Y</update>
1052   - </value>
1053   - <value>
1054   - <name>qdz</name>
1055   - <rename>qdzid</rename>
1056   - <update>Y</update>
1057   - </value>
1058   - <value>
1059   - <name>zdz</name>
1060   - <rename>zdzid</rename>
1061   - <update>Y</update>
1062   - </value>
1063   - <value>
1064   - <name>xl_dir</name>
1065   - <rename>sxx</rename>
1066   - <update>Y</update>
1067   - </value>
1068   - <value>
1069   - <name>isfb</name>
1070   - <rename>isfb</rename>
1071   - <update>Y</update>
1072   - </value>
1073   - <value>
1074   - <name>qdz_code</name>
1075   - <rename>qdzcode</rename>
1076   - <update>Y</update>
1077   - </value>
1078   - <value>
1079   - <name>qdz_name</name>
1080   - <rename>qdzname_</rename>
1081   - <update>Y</update>
1082   - </value>
1083   - <value>
1084   - <name>zdz_code</name>
1085   - <rename>zdzcode</rename>
1086   - <update>Y</update>
1087   - </value>
1088   - <value>
1089   - <name>zdz_name</name>
1090   - <rename>zdzname</rename>
1091   - <update>Y</update>
1092   - </value>
1093   - <value>
1094   - <name>ists</name>
1095   - <rename>ists</rename>
1096   - <update>Y</update>
1097   - </value>
1098   - </lookup>
1099   - <cluster_schema/>
1100   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1101   - <xloc>143</xloc>
1102   - <yloc>860</yloc>
1103   - <draw>Y</draw>
1104   - </GUI>
1105   - </step>
1106   -
1107   - <step>
1108   - <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo_detail 2</name>
1109   - <type>InsertUpdate</type>
1110   - <description/>
1111   - <distribute>Y</distribute>
1112   - <custom_distribution/>
1113   - <copies>1</copies>
1114   - <partitioning>
1115   - <method>none</method>
1116   - <schema_name/>
1117   - </partitioning>
1118   - <connection>bus_control_variable</connection>
1119   - <commit>100</commit>
1120   - <update_bypassed>N</update_bypassed>
1121   - <lookup>
1122   - <schema/>
1123   - <table>bsth_c_s_ttinfo_detail</table>
1124   - <key>
1125   - <name>xlid</name>
1126   - <field>xl</field>
1127   - <condition>&#x3d;</condition>
1128   - <name2/>
1129   - </key>
1130   - <key>
1131   - <name>ttid</name>
1132   - <field>ttinfo</field>
1133   - <condition>&#x3d;</condition>
1134   - <name2/>
1135   - </key>
1136   - <key>
1137   - <name>lpid</name>
1138   - <field>lp</field>
1139   - <condition>&#x3d;</condition>
1140   - <name2/>
1141   - </key>
1142   - <key>
1143   - <name>fcno</name>
1144   - <field>fcno</field>
1145   - <condition>&#x3d;</condition>
1146   - <name2/>
1147   - </key>
1148   - <key>
1149   - <name>bcs</name>
1150   - <field>bcs</field>
1151   - <condition>&#x3d;</condition>
1152   - <name2/>
1153   - </key>
1154   - <value>
1155   - <name>tcc</name>
1156   - <rename>qdzid</rename>
1157   - <update>Y</update>
1158   - </value>
1159   - <value>
1160   - <name>zdz</name>
1161   - <rename>zdzid</rename>
1162   - <update>Y</update>
1163   - </value>
1164   - <value>
1165   - <name>xl</name>
1166   - <rename>xlid</rename>
1167   - <update>Y</update>
1168   - </value>
1169   - <value>
1170   - <name>ttinfo</name>
1171   - <rename>ttid</rename>
1172   - <update>Y</update>
1173   - </value>
1174   - <value>
1175   - <name>xl_dir</name>
1176   - <rename>sxx</rename>
1177   - <update>Y</update>
1178   - </value>
1179   - <value>
1180   - <name>lp</name>
1181   - <rename>lpid</rename>
1182   - <update>Y</update>
1183   - </value>
1184   - <value>
1185   - <name>jhlc</name>
1186   - <rename>out_mileage</rename>
1187   - <update>Y</update>
1188   - </value>
1189   - <value>
1190   - <name>fcsj</name>
1191   - <rename>sendtime_calcu</rename>
1192   - <update>Y</update>
1193   - </value>
1194   - <value>
1195   - <name>bcsj</name>
1196   - <rename>out_time</rename>
1197   - <update>Y</update>
1198   - </value>
1199   - <value>
1200   - <name>bcs</name>
1201   - <rename>bcs</rename>
1202   - <update>Y</update>
1203   - </value>
1204   - <value>
1205   - <name>fcno</name>
1206   - <rename>fcno</rename>
1207   - <update>Y</update>
1208   - </value>
1209   - <value>
1210   - <name>bc_type</name>
1211   - <rename>bctype_code</rename>
1212   - <update>Y</update>
1213   - </value>
1214   - <value>
1215   - <name>isfb</name>
1216   - <rename>isfb</rename>
1217   - <update>Y</update>
1218   - </value>
1219   - <value>
1220   - <name>qdz_code</name>
1221   - <rename>qdzcode</rename>
1222   - <update>Y</update>
1223   - </value>
1224   - <value>
1225   - <name>qdz_name</name>
1226   - <rename>tn</rename>
1227   - <update>Y</update>
1228   - </value>
1229   - <value>
1230   - <name>zdz_code</name>
1231   - <rename>zdzcode</rename>
1232   - <update>Y</update>
1233   - </value>
1234   - <value>
1235   - <name>zdz_name</name>
1236   - <rename>zdzname_</rename>
1237   - <update>Y</update>
1238   - </value>
1239   - <value>
1240   - <name>ists</name>
1241   - <rename>ists</rename>
1242   - <update>Y</update>
1243   - </value>
1244   - </lookup>
1245   - <cluster_schema/>
1246   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1247   - <xloc>340</xloc>
1248   - <yloc>1087</yloc>
1249   - <draw>Y</draw>
1250   - </GUI>
1251   - </step>
1252   -
1253   - <step>
1254   - <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo_detail 3</name>
1255   - <type>InsertUpdate</type>
1256   - <description/>
1257   - <distribute>Y</distribute>
1258   - <custom_distribution/>
1259   - <copies>1</copies>
1260   - <partitioning>
1261   - <method>none</method>
1262   - <schema_name/>
1263   - </partitioning>
1264   - <connection>bus_control_variable</connection>
1265   - <commit>100</commit>
1266   - <update_bypassed>N</update_bypassed>
1267   - <lookup>
1268   - <schema/>
1269   - <table>bsth_c_s_ttinfo_detail</table>
1270   - <key>
1271   - <name>xlid</name>
1272   - <field>xl</field>
1273   - <condition>&#x3d;</condition>
1274   - <name2/>
1275   - </key>
1276   - <key>
1277   - <name>ttid</name>
1278   - <field>ttinfo</field>
1279   - <condition>&#x3d;</condition>
1280   - <name2/>
1281   - </key>
1282   - <key>
1283   - <name>lpid</name>
1284   - <field>lp</field>
1285   - <condition>&#x3d;</condition>
1286   - <name2/>
1287   - </key>
1288   - <key>
1289   - <name>fcno</name>
1290   - <field>fcno</field>
1291   - <condition>&#x3d;</condition>
1292   - <name2/>
1293   - </key>
1294   - <key>
1295   - <name>bcs</name>
1296   - <field>bcs</field>
1297   - <condition>&#x3d;</condition>
1298   - <name2/>
1299   - </key>
1300   - <value>
1301   - <name>fcno</name>
1302   - <rename>fcno</rename>
1303   - <update>Y</update>
1304   - </value>
1305   - <value>
1306   - <name>bcs</name>
1307   - <rename>bcs</rename>
1308   - <update>Y</update>
1309   - </value>
1310   - <value>
1311   - <name>xl</name>
1312   - <rename>xlid</rename>
1313   - <update>Y</update>
1314   - </value>
1315   - <value>
1316   - <name>ttinfo</name>
1317   - <rename>ttid</rename>
1318   - <update>Y</update>
1319   - </value>
1320   - <value>
1321   - <name>lp</name>
1322   - <rename>lpid</rename>
1323   - <update>Y</update>
1324   - </value>
1325   - <value>
1326   - <name>bc_type</name>
1327   - <rename>bctype_code</rename>
1328   - <update>Y</update>
1329   - </value>
1330   - <value>
1331   - <name>bcsj</name>
1332   - <rename>parade_time</rename>
1333   - <update>Y</update>
1334   - </value>
1335   - <value>
1336   - <name>jhlc</name>
1337   - <rename>parade_mileage</rename>
1338   - <update>Y</update>
1339   - </value>
1340   - <value>
1341   - <name>fcsj</name>
1342   - <rename>sendtime_calcu</rename>
1343   - <update>Y</update>
1344   - </value>
1345   - <value>
1346   - <name>xl_dir</name>
1347   - <rename>sxx2</rename>
1348   - <update>Y</update>
1349   - </value>
1350   - <value>
1351   - <name>qdz</name>
1352   - <rename>qdzid</rename>
1353   - <update>Y</update>
1354   - </value>
1355   - <value>
1356   - <name>tcc</name>
1357   - <rename>zdzid</rename>
1358   - <update>Y</update>
1359   - </value>
1360   - <value>
1361   - <name>isfb</name>
1362   - <rename>isfb</rename>
1363   - <update>Y</update>
1364   - </value>
1365   - <value>
1366   - <name>qdz_code</name>
1367   - <rename>qdzcode</rename>
1368   - <update>Y</update>
1369   - </value>
1370   - <value>
1371   - <name>qdz_name</name>
1372   - <rename>qname</rename>
1373   - <update>Y</update>
1374   - </value>
1375   - <value>
1376   - <name>zdz_code</name>
1377   - <rename>zdzcode</rename>
1378   - <update>Y</update>
1379   - </value>
1380   - <value>
1381   - <name>zdz_name</name>
1382   - <rename>tn</rename>
1383   - <update>Y</update>
1384   - </value>
1385   - <value>
1386   - <name>ists</name>
1387   - <rename>ists</rename>
1388   - <update>Y</update>
1389   - </value>
1390   - </lookup>
1391   - <cluster_schema/>
1392   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1393   - <xloc>845</xloc>
1394   - <yloc>899</yloc>
1395   - <draw>Y</draw>
1396   - </GUI>
1397   - </step>
1398   -
1399   - <step>
1400   - <name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</name>
1401   - <type>ExcelInput</type>
1402   - <description/>
1403   - <distribute>N</distribute>
1404   - <custom_distribution/>
1405   - <copies>1</copies>
1406   - <partitioning>
1407   - <method>none</method>
1408   - <schema_name/>
1409   - </partitioning>
1410   - <header>Y</header>
1411   - <noempty>Y</noempty>
1412   - <stoponempty>N</stoponempty>
1413   - <filefield/>
1414   - <sheetfield/>
1415   - <sheetrownumfield/>
1416   - <rownumfield/>
1417   - <sheetfield/>
1418   - <filefield/>
1419   - <limit>0</limit>
1420   - <encoding/>
1421   - <add_to_result_filenames>Y</add_to_result_filenames>
1422   - <accept_filenames>N</accept_filenames>
1423   - <accept_field/>
1424   - <accept_stepname/>
1425   - <file>
1426   - <name/>
1427   - <filemask/>
1428   - <exclude_filemask/>
1429   - <file_required>N</file_required>
1430   - <include_subfolders>N</include_subfolders>
1431   - </file>
1432   - <fields>
1433   - </fields>
1434   - <sheets>
1435   - <sheet>
1436   - <name/>
1437   - <startrow>0</startrow>
1438   - <startcol>0</startcol>
1439   - </sheet>
1440   - </sheets>
1441   - <strict_types>N</strict_types>
1442   - <error_ignored>N</error_ignored>
1443   - <error_line_skipped>N</error_line_skipped>
1444   - <bad_line_files_destination_directory/>
1445   - <bad_line_files_extension>warning</bad_line_files_extension>
1446   - <error_line_files_destination_directory/>
1447   - <error_line_files_extension>error</error_line_files_extension>
1448   - <line_number_files_destination_directory/>
1449   - <line_number_files_extension>line</line_number_files_extension>
1450   - <shortFileFieldName/>
1451   - <pathFieldName/>
1452   - <hiddenFieldName/>
1453   - <lastModificationTimeFieldName/>
1454   - <uriNameFieldName/>
1455   - <rootUriNameFieldName/>
1456   - <extensionFieldName/>
1457   - <sizeFieldName/>
1458   - <spreadsheet_type>JXL</spreadsheet_type>
1459   - <cluster_schema/>
1460   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1461   - <xloc>112</xloc>
1462   - <yloc>44</yloc>
1463   - <draw>Y</draw>
1464   - </GUI>
1465   - </step>
1466   -
1467   - <step>
1468   - <name>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;1</name>
1469   - <type>DBLookup</type>
1470   - <description/>
1471   - <distribute>Y</distribute>
1472   - <custom_distribution/>
1473   - <copies>1</copies>
1474   - <partitioning>
1475   - <method>none</method>
1476   - <schema_name/>
1477   - </partitioning>
1478   - <connection>bus_control_variable</connection>
1479   - <cache>N</cache>
1480   - <cache_load_all>N</cache_load_all>
1481   - <cache_size>0</cache_size>
1482   - <lookup>
1483   - <schema/>
1484   - <table>bsth_c_car_park</table>
1485   - <orderby/>
1486   - <fail_on_multiple>N</fail_on_multiple>
1487   - <eat_row_on_failure>N</eat_row_on_failure>
1488   - <key>
1489   - <name>tccname_</name>
1490   - <field>park_name</field>
1491   - <condition>&#x3d;</condition>
1492   - <name2/>
1493   - </key>
1494   - <value>
1495   - <name>id</name>
1496   - <rename>qdzid</rename>
1497   - <default/>
1498   - <type>Integer</type>
1499   - </value>
1500   - <value>
1501   - <name>park_code</name>
1502   - <rename>qdzcode</rename>
1503   - <default/>
1504   - <type>String</type>
1505   - </value>
1506   - <value>
1507   - <name>park_name</name>
1508   - <rename>tn</rename>
1509   - <default/>
1510   - <type>String</type>
1511   - </value>
1512   - </lookup>
1513   - <cluster_schema/>
1514   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1515   - <xloc>755</xloc>
1516   - <yloc>504</yloc>
1517   - <draw>Y</draw>
1518   - </GUI>
1519   - </step>
1520   -
1521   - <step>
1522   - <name>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;2</name>
1523   - <type>DBLookup</type>
1524   - <description/>
1525   - <distribute>Y</distribute>
1526   - <custom_distribution/>
1527   - <copies>1</copies>
1528   - <partitioning>
1529   - <method>none</method>
1530   - <schema_name/>
1531   - </partitioning>
1532   - <connection>bus_control_variable</connection>
1533   - <cache>N</cache>
1534   - <cache_load_all>N</cache_load_all>
1535   - <cache_size>0</cache_size>
1536   - <lookup>
1537   - <schema/>
1538   - <table>bsth_c_car_park</table>
1539   - <orderby/>
1540   - <fail_on_multiple>N</fail_on_multiple>
1541   - <eat_row_on_failure>N</eat_row_on_failure>
1542   - <key>
1543   - <name>tccname_</name>
1544   - <field>park_name</field>
1545   - <condition>&#x3d;</condition>
1546   - <name2/>
1547   - </key>
1548   - <value>
1549   - <name>id</name>
1550   - <rename>zdzid</rename>
1551   - <default/>
1552   - <type>Integer</type>
1553   - </value>
1554   - <value>
1555   - <name>park_code</name>
1556   - <rename>zdzcode</rename>
1557   - <default/>
1558   - <type>String</type>
1559   - </value>
1560   - <value>
1561   - <name>park_name</name>
1562   - <rename>tn</rename>
1563   - <default/>
1564   - <type>String</type>
1565   - </value>
1566   - </lookup>
1567   - <cluster_schema/>
1568   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1569   - <xloc>887</xloc>
1570   - <yloc>608</yloc>
1571   - <draw>Y</draw>
1572   - </GUI>
1573   - </step>
1574   -
1575   - <step>
1576   - <name>&#x67e5;&#x627e;&#x51fa;&#x573a;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</name>
1577   - <type>DBLookup</type>
1578   - <description/>
1579   - <distribute>Y</distribute>
1580   - <custom_distribution/>
1581   - <copies>1</copies>
1582   - <partitioning>
1583   - <method>none</method>
1584   - <schema_name/>
1585   - </partitioning>
1586   - <connection>bus_control_variable</connection>
1587   - <cache>N</cache>
1588   - <cache_load_all>N</cache_load_all>
1589   - <cache_size>0</cache_size>
1590   - <lookup>
1591   - <schema/>
1592   - <table>bsth_c_ls_stationroute</table>
1593   - <orderby/>
1594   - <fail_on_multiple>N</fail_on_multiple>
1595   - <eat_row_on_failure>N</eat_row_on_failure>
1596   - <key>
1597   - <name>xlid</name>
1598   - <field>line</field>
1599   - <condition>&#x3d;</condition>
1600   - <name2/>
1601   - </key>
1602   - <key>
1603   - <name>version</name>
1604   - <field>versions</field>
1605   - <condition>&#x3d;</condition>
1606   - <name2/>
1607   - </key>
1608   - <key>
1609   - <name>zdzname</name>
1610   - <field>station_name</field>
1611   - <condition>LIKE</condition>
1612   - <name2/>
1613   - </key>
1614   - <key>
1615   - <name>endZdtype</name>
1616   - <field>station_mark</field>
1617   - <condition>&#x3d;</condition>
1618   - <name2/>
1619   - </key>
1620   - <key>
1621   - <name>destory</name>
1622   - <field>destroy</field>
1623   - <condition>&#x3d;</condition>
1624   - <name2/>
1625   - </key>
1626   - <value>
1627   - <name>station</name>
1628   - <rename>zdzid</rename>
1629   - <default/>
1630   - <type>Integer</type>
1631   - </value>
1632   - <value>
1633   - <name>directions</name>
1634   - <rename>sxx</rename>
1635   - <default/>
1636   - <type>Integer</type>
1637   - </value>
1638   - <value>
1639   - <name>station_code</name>
1640   - <rename>zdzcode</rename>
1641   - <default/>
1642   - <type>String</type>
1643   - </value>
1644   - <value>
1645   - <name>station_name</name>
1646   - <rename>zdzname_</rename>
1647   - <default/>
1648   - <type>String</type>
1649   - </value>
1650   - </lookup>
1651   - <cluster_schema/>
1652   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1653   - <xloc>329</xloc>
1654   - <yloc>505</yloc>
1655   - <draw>Y</draw>
1656   - </GUI>
1657   - </step>
1658   -
1659   - <step>
1660   - <name>&#x67e5;&#x627e;&#x6240;&#x6709;&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
1661   - <type>DBLookup</type>
1662   - <description/>
1663   - <distribute>Y</distribute>
1664   - <custom_distribution/>
1665   - <copies>1</copies>
1666   - <partitioning>
1667   - <method>none</method>
1668   - <schema_name/>
1669   - </partitioning>
1670   - <connection>bus_control_variable</connection>
1671   - <cache>N</cache>
1672   - <cache_load_all>N</cache_load_all>
1673   - <cache_size>0</cache_size>
1674   - <lookup>
1675   - <schema/>
1676   - <table>bsth_c_line_information</table>
1677   - <orderby/>
1678   - <fail_on_multiple>N</fail_on_multiple>
1679   - <eat_row_on_failure>N</eat_row_on_failure>
1680   - <key>
1681   - <name>xlid</name>
1682   - <field>line</field>
1683   - <condition>&#x3d;</condition>
1684   - <name2/>
1685   - </key>
1686   - <value>
1687   - <name>up_mileage</name>
1688   - <rename>up_mileage</rename>
1689   - <default/>
1690   - <type>Number</type>
1691   - </value>
1692   - <value>
1693   - <name>down_mileage</name>
1694   - <rename>down_mileage</rename>
1695   - <default/>
1696   - <type>Number</type>
1697   - </value>
1698   - <value>
1699   - <name>up_travel_time</name>
1700   - <rename>up_travel_time</rename>
1701   - <default/>
1702   - <type>Number</type>
1703   - </value>
1704   - <value>
1705   - <name>down_travel_time</name>
1706   - <rename>down_travel_time</rename>
1707   - <default/>
1708   - <type>Number</type>
1709   - </value>
1710   - <value>
1711   - <name>early_start_time</name>
1712   - <rename>early_start_time</rename>
1713   - <default/>
1714   - <type>String</type>
1715   - </value>
1716   - <value>
1717   - <name>early_end_time</name>
1718   - <rename>early_end_time</rename>
1719   - <default/>
1720   - <type>String</type>
1721   - </value>
1722   - <value>
1723   - <name>early_up_time</name>
1724   - <rename>early_up_time</rename>
1725   - <default/>
1726   - <type>Number</type>
1727   - </value>
1728   - <value>
1729   - <name>early_down_time</name>
1730   - <rename>early_down_time</rename>
1731   - <default/>
1732   - <type>Number</type>
1733   - </value>
1734   - <value>
1735   - <name>late_start_time</name>
1736   - <rename>late_start_time</rename>
1737   - <default/>
1738   - <type>String</type>
1739   - </value>
1740   - <value>
1741   - <name>late_end_time</name>
1742   - <rename>late_end_time</rename>
1743   - <default/>
1744   - <type>String</type>
1745   - </value>
1746   - <value>
1747   - <name>late_up_time</name>
1748   - <rename>late_up_time</rename>
1749   - <default/>
1750   - <type>Number</type>
1751   - </value>
1752   - <value>
1753   - <name>late_down_time</name>
1754   - <rename>late_down_time</rename>
1755   - <default/>
1756   - <type>Number</type>
1757   - </value>
1758   - </lookup>
1759   - <cluster_schema/>
1760   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1761   - <xloc>149</xloc>
1762   - <yloc>581</yloc>
1763   - <draw>Y</draw>
1764   - </GUI>
1765   - </step>
1766   -
1767   - <step>
1768   - <name>&#x67e5;&#x627e;&#x65f6;&#x523b;&#x8868;&#x57fa;&#x7840;&#x4fe1;&#x606f;&#x5173;&#x8054;</name>
1769   - <type>DBLookup</type>
1770   - <description/>
1771   - <distribute>Y</distribute>
1772   - <custom_distribution/>
1773   - <copies>1</copies>
1774   - <partitioning>
1775   - <method>none</method>
1776   - <schema_name/>
1777   - </partitioning>
1778   - <connection>bus_control_variable</connection>
1779   - <cache>N</cache>
1780   - <cache_load_all>N</cache_load_all>
1781   - <cache_size>0</cache_size>
1782   - <lookup>
1783   - <schema/>
1784   - <table>bsth_c_s_ttinfo</table>
1785   - <orderby/>
1786   - <fail_on_multiple>N</fail_on_multiple>
1787   - <eat_row_on_failure>N</eat_row_on_failure>
1788   - <key>
1789   - <name>xlid</name>
1790   - <field>xl</field>
1791   - <condition>&#x3d;</condition>
1792   - <name2/>
1793   - </key>
1794   - <key>
1795   - <name>ttinfoname_</name>
1796   - <field>name</field>
1797   - <condition>&#x3d;</condition>
1798   - <name2/>
1799   - </key>
1800   - <key>
1801   - <name>iscanceled</name>
1802   - <field>is_cancel</field>
1803   - <condition>&#x3d;</condition>
1804   - <name2/>
1805   - </key>
1806   - <value>
1807   - <name>id</name>
1808   - <rename>ttid</rename>
1809   - <default/>
1810   - <type>Integer</type>
1811   - </value>
1812   - </lookup>
1813   - <cluster_schema/>
1814   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1815   - <xloc>1011</xloc>
1816   - <yloc>134</yloc>
1817   - <draw>Y</draw>
1818   - </GUI>
1819   - </step>
1820   -
1821   - <step>
1822   - <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</name>
1823   - <type>DBLookup</type>
1824   - <description/>
1825   - <distribute>Y</distribute>
1826   - <custom_distribution/>
1827   - <copies>1</copies>
1828   - <partitioning>
1829   - <method>none</method>
1830   - <schema_name/>
1831   - </partitioning>
1832   - <connection>bus_control_variable</connection>
1833   - <cache>N</cache>
1834   - <cache_load_all>N</cache_load_all>
1835   - <cache_size>0</cache_size>
1836   - <lookup>
1837   - <schema/>
1838   - <table>bsth_c_line</table>
1839   - <orderby/>
1840   - <fail_on_multiple>N</fail_on_multiple>
1841   - <eat_row_on_failure>N</eat_row_on_failure>
1842   - <key>
1843   - <name>xlname_</name>
1844   - <field>name</field>
1845   - <condition>&#x3d;</condition>
1846   - <name2/>
1847   - </key>
1848   - <key>
1849   - <name>iscanceled</name>
1850   - <field>destroy</field>
1851   - <condition>&#x3d;</condition>
1852   - <name2/>
1853   - </key>
1854   - <value>
1855   - <name>id</name>
1856   - <rename>xlid</rename>
1857   - <default/>
1858   - <type>Integer</type>
1859   - </value>
1860   - </lookup>
1861   - <cluster_schema/>
1862   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1863   - <xloc>1007</xloc>
1864   - <yloc>43</yloc>
1865   - <draw>Y</draw>
1866   - </GUI>
1867   - </step>
1868   -
1869   - <step>
1870   - <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x51fa;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
1871   - <type>DBLookup</type>
1872   - <description/>
1873   - <distribute>Y</distribute>
1874   - <custom_distribution/>
1875   - <copies>1</copies>
1876   - <partitioning>
1877   - <method>none</method>
1878   - <schema_name/>
1879   - </partitioning>
1880   - <connection>bus_control_variable</connection>
1881   - <cache>N</cache>
1882   - <cache_load_all>N</cache_load_all>
1883   - <cache_size>0</cache_size>
1884   - <lookup>
1885   - <schema/>
1886   - <table>bsth_c_line_information</table>
1887   - <orderby/>
1888   - <fail_on_multiple>N</fail_on_multiple>
1889   - <eat_row_on_failure>N</eat_row_on_failure>
1890   - <key>
1891   - <name>xlid</name>
1892   - <field>line</field>
1893   - <condition>&#x3d;</condition>
1894   - <name2/>
1895   - </key>
1896   - <value>
1897   - <name>up_out_timer</name>
1898   - <rename>up_out_timer</rename>
1899   - <default/>
1900   - <type>Number</type>
1901   - </value>
1902   - <value>
1903   - <name>up_out_mileage</name>
1904   - <rename>up_out_mileage</rename>
1905   - <default/>
1906   - <type>Number</type>
1907   - </value>
1908   - <value>
1909   - <name>down_out_timer</name>
1910   - <rename>down_out_timer</rename>
1911   - <default/>
1912   - <type>Number</type>
1913   - </value>
1914   - <value>
1915   - <name>down_out_mileage</name>
1916   - <rename>down_out_mileage</rename>
1917   - <default/>
1918   - <type>Number</type>
1919   - </value>
1920   - </lookup>
1921   - <cluster_schema/>
1922   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1923   - <xloc>335</xloc>
1924   - <yloc>763</yloc>
1925   - <draw>Y</draw>
1926   - </GUI>
1927   - </step>
1928   -
1929   - <step>
1930   - <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x8fdb;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
1931   - <type>DBLookup</type>
1932   - <description/>
1933   - <distribute>Y</distribute>
1934   - <custom_distribution/>
1935   - <copies>1</copies>
1936   - <partitioning>
1937   - <method>none</method>
1938   - <schema_name/>
1939   - </partitioning>
1940   - <connection>bus_control_variable</connection>
1941   - <cache>N</cache>
1942   - <cache_load_all>N</cache_load_all>
1943   - <cache_size>0</cache_size>
1944   - <lookup>
1945   - <schema/>
1946   - <table>bsth_c_line_information</table>
1947   - <orderby/>
1948   - <fail_on_multiple>N</fail_on_multiple>
1949   - <eat_row_on_failure>N</eat_row_on_failure>
1950   - <key>
1951   - <name>xlid</name>
1952   - <field>line</field>
1953   - <condition>&#x3d;</condition>
1954   - <name2/>
1955   - </key>
1956   - <value>
1957   - <name>up_in_mileage</name>
1958   - <rename>up_in_mileage</rename>
1959   - <default/>
1960   - <type>Number</type>
1961   - </value>
1962   - <value>
1963   - <name>up_in_timer</name>
1964   - <rename>up_in_timer</rename>
1965   - <default/>
1966   - <type>Number</type>
1967   - </value>
1968   - <value>
1969   - <name>down_in_mileage</name>
1970   - <rename>down_in_mileage</rename>
1971   - <default/>
1972   - <type>Number</type>
1973   - </value>
1974   - <value>
1975   - <name>down_in_timer</name>
1976   - <rename>down_in_timer</rename>
1977   - <default/>
1978   - <type>Number</type>
1979   - </value>
1980   - </lookup>
1981   - <cluster_schema/>
1982   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1983   - <xloc>553</xloc>
1984   - <yloc>1004</yloc>
1985   - <draw>Y</draw>
1986   - </GUI>
1987   - </step>
1988   -
1989   - <step>
1990   - <name>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;</name>
1991   - <type>DBLookup</type>
1992   - <description/>
1993   - <distribute>Y</distribute>
1994   - <custom_distribution/>
1995   - <copies>1</copies>
1996   - <partitioning>
1997   - <method>none</method>
1998   - <schema_name/>
1999   - </partitioning>
2000   - <connection>bus_control_variable</connection>
2001   - <cache>N</cache>
2002   - <cache_load_all>N</cache_load_all>
2003   - <cache_size>0</cache_size>
2004   - <lookup>
2005   - <schema/>
2006   - <table>bsth_c_ls_stationroute</table>
2007   - <orderby/>
2008   - <fail_on_multiple>N</fail_on_multiple>
2009   - <eat_row_on_failure>N</eat_row_on_failure>
2010   - <key>
2011   - <name>xlid</name>
2012   - <field>line</field>
2013   - <condition>&#x3d;</condition>
2014   - <name2/>
2015   - </key>
2016   - <key>
2017   - <name>version</name>
2018   - <field>versions</field>
2019   - <condition>&#x3d;</condition>
2020   - <name2/>
2021   - </key>
2022   - <key>
2023   - <name>sxx</name>
2024   - <field>directions</field>
2025   - <condition>&#x3d;</condition>
2026   - <name2/>
2027   - </key>
2028   - <key>
2029   - <name>endZdtype</name>
2030   - <field>station_mark</field>
2031   - <condition>&#x3d;</condition>
2032   - <name2/>
2033   - </key>
2034   - <key>
2035   - <name>destory</name>
2036   - <field>destroy</field>
2037   - <condition>&#x3d;</condition>
2038   - <name2/>
2039   - </key>
2040   - <value>
2041   - <name>station_name</name>
2042   - <rename>zdzname</rename>
2043   - <default/>
2044   - <type>String</type>
2045   - </value>
2046   - <value>
2047   - <name>station</name>
2048   - <rename>zdzid</rename>
2049   - <default/>
2050   - <type>Integer</type>
2051   - </value>
2052   - <value>
2053   - <name>station_code</name>
2054   - <rename>zdzcode</rename>
2055   - <default/>
2056   - <type>String</type>
2057   - </value>
2058   - </lookup>
2059   - <cluster_schema/>
2060   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
2061   - <xloc>280</xloc>
2062   - <yloc>404</yloc>
2063   - <draw>Y</draw>
2064   - </GUI>
2065   - </step>
2066   -
2067   - <step>
2068   - <name>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</name>
2069   - <type>DBLookup</type>
2070   - <description/>
2071   - <distribute>Y</distribute>
2072   - <custom_distribution/>
2073   - <copies>1</copies>
2074   - <partitioning>
2075   - <method>none</method>
2076   - <schema_name/>
2077   - </partitioning>
2078   - <connection>bus_control_variable</connection>
2079   - <cache>N</cache>
2080   - <cache_load_all>N</cache_load_all>
2081   - <cache_size>0</cache_size>
2082   - <lookup>
2083   - <schema/>
2084   - <table>bsth_c_ls_stationroute</table>
2085   - <orderby/>
2086   - <fail_on_multiple>N</fail_on_multiple>
2087   - <eat_row_on_failure>N</eat_row_on_failure>
2088   - <key>
2089   - <name>xlid</name>
2090   - <field>line</field>
2091   - <condition>&#x3d;</condition>
2092   - <name2/>
2093   - </key>
2094   - <key>
2095   - <name>version</name>
2096   - <field>versions</field>
2097   - <condition>&#x3d;</condition>
2098   - <name2/>
2099   - </key>
2100   - <key>
2101   - <name>qdzname</name>
2102   - <field>station_name</field>
2103   - <condition>LIKE</condition>
2104   - <name2/>
2105   - </key>
2106   - <key>
2107   - <name>sendZdtype</name>
2108   - <field>station_mark</field>
2109   - <condition>&#x3d;</condition>
2110   - <name2/>
2111   - </key>
2112   - <key>
2113   - <name>destory</name>
2114   - <field>destroy</field>
2115   - <condition>&#x3d;</condition>
2116   - <name2/>
2117   - </key>
2118   - <value>
2119   - <name>station</name>
2120   - <rename>qdzid</rename>
2121   - <default/>
2122   - <type>Integer</type>
2123   - </value>
2124   - <value>
2125   - <name>directions</name>
2126   - <rename>sxx</rename>
2127   - <default/>
2128   - <type>Integer</type>
2129   - </value>
2130   - <value>
2131   - <name>station_code</name>
2132   - <rename>qdzcode</rename>
2133   - <default/>
2134   - <type>String</type>
2135   - </value>
2136   - <value>
2137   - <name>station_name</name>
2138   - <rename>qdzname_</rename>
2139   - <default/>
2140   - <type>String</type>
2141   - </value>
2142   - </lookup>
2143   - <cluster_schema/>
2144   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
2145   - <xloc>430</xloc>
2146   - <yloc>403</yloc>
2147   - <draw>Y</draw>
2148   - </GUI>
2149   - </step>
2150   -
2151   - <step>
2152   - <name>&#x67e5;&#x627e;&#x8def;&#x724c;&#x5173;&#x8054;</name>
2153   - <type>DBLookup</type>
2154   - <description/>
2155   - <distribute>Y</distribute>
2156   - <custom_distribution/>
2157   - <copies>1</copies>
2158   - <partitioning>
2159   - <method>none</method>
2160   - <schema_name/>
2161   - </partitioning>
2162   - <connection>bus_control_variable</connection>
2163   - <cache>N</cache>
2164   - <cache_load_all>N</cache_load_all>
2165   - <cache_size>0</cache_size>
2166   - <lookup>
2167   - <schema/>
2168   - <table>bsth_c_s_gbi</table>
2169   - <orderby/>
2170   - <fail_on_multiple>N</fail_on_multiple>
2171   - <eat_row_on_failure>N</eat_row_on_failure>
2172   - <key>
2173   - <name>xlid</name>
2174   - <field>xl</field>
2175   - <condition>&#x3d;</condition>
2176   - <name2/>
2177   - </key>
2178   - <key>
2179   - <name>lp</name>
2180   - <field>lp_name</field>
2181   - <condition>&#x3d;</condition>
2182   - <name2/>
2183   - </key>
2184   - <key>
2185   - <name>iscanceled</name>
2186   - <field>is_cancel</field>
2187   - <condition>&#x3d;</condition>
2188   - <name2/>
2189   - </key>
2190   - <value>
2191   - <name>id</name>
2192   - <rename>lpid</rename>
2193   - <default/>
2194   - <type>Integer</type>
2195   - </value>
2196   - </lookup>
2197   - <cluster_schema/>
2198   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
2199   - <xloc>1013</xloc>
2200   - <yloc>265</yloc>
2201   - <draw>Y</draw>
2202   - </GUI>
2203   - </step>
2204   -
2205   - <step>
2206   - <name>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ebf;&#x8def;&#x65b9;&#x5411;</name>
2207   - <type>DBLookup</type>
2208   - <description/>
2209   - <distribute>Y</distribute>
2210   - <custom_distribution/>
2211   - <copies>1</copies>
2212   - <partitioning>
2213   - <method>none</method>
2214   - <schema_name/>
2215   - </partitioning>
2216   - <connection>bus_control_variable</connection>
2217   - <cache>N</cache>
2218   - <cache_load_all>N</cache_load_all>
2219   - <cache_size>0</cache_size>
2220   - <lookup>
2221   - <schema/>
2222   - <table>bsth_c_ls_stationroute</table>
2223   - <orderby/>
2224   - <fail_on_multiple>N</fail_on_multiple>
2225   - <eat_row_on_failure>N</eat_row_on_failure>
2226   - <key>
2227   - <name>xlid</name>
2228   - <field>line</field>
2229   - <condition>&#x3d;</condition>
2230   - <name2/>
2231   - </key>
2232   - <key>
2233   - <name>version</name>
2234   - <field>versions</field>
2235   - <condition>&#x3d;</condition>
2236   - <name2/>
2237   - </key>
2238   - <key>
2239   - <name>startZdtype_calcu</name>
2240   - <field>station_mark</field>
2241   - <condition>&#x3d;</condition>
2242   - <name2/>
2243   - </key>
2244   - <key>
2245   - <name>qdzname_calcu</name>
2246   - <field>station_name</field>
2247   - <condition>LIKE</condition>
2248   - <name2/>
2249   - </key>
2250   - <key>
2251   - <name>destory</name>
2252   - <field>destroy</field>
2253   - <condition>&#x3d;</condition>
2254   - <name2/>
2255   - </key>
2256   - <value>
2257   - <name>directions</name>
2258   - <rename>sxx</rename>
2259   - <default/>
2260   - <type>String</type>
2261   - </value>
2262   - </lookup>
2263   - <cluster_schema/>
2264   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
2265   - <xloc>548</xloc>
2266   - <yloc>610</yloc>
2267   - <draw>Y</draw>
2268   - </GUI>
2269   - </step>
2270   -
2271   - <step>
2272   - <name>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ec8;&#x70b9;&#x7ad9;&#xff0c;&#x5e76;&#x4f5c;&#x4e3a;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x7684;&#x8d77;&#x70b9;&#x7ad9;</name>
2273   - <type>DBLookup</type>
2274   - <description/>
2275   - <distribute>Y</distribute>
2276   - <custom_distribution/>
2277   - <copies>1</copies>
2278   - <partitioning>
2279   - <method>none</method>
2280   - <schema_name/>
2281   - </partitioning>
2282   - <connection>bus_control_variable</connection>
2283   - <cache>N</cache>
2284   - <cache_load_all>Y</cache_load_all>
2285   - <cache_size>0</cache_size>
2286   - <lookup>
2287   - <schema/>
2288   - <table>bsth_c_ls_stationroute</table>
2289   - <orderby/>
2290   - <fail_on_multiple>N</fail_on_multiple>
2291   - <eat_row_on_failure>N</eat_row_on_failure>
2292   - <key>
2293   - <name>xlid</name>
2294   - <field>line</field>
2295   - <condition>&#x3d;</condition>
2296   - <name2/>
2297   - </key>
2298   - <key>
2299   - <name>version</name>
2300   - <field>versions</field>
2301   - <condition>&#x3d;</condition>
2302   - <name2/>
2303   - </key>
2304   - <key>
2305   - <name>endZdtype_calcu</name>
2306   - <field>station_mark</field>
2307   - <condition>&#x3d;</condition>
2308   - <name2/>
2309   - </key>
2310   - <key>
2311   - <name>sxx</name>
2312   - <field>directions</field>
2313   - <condition>&#x3d;</condition>
2314   - <name2/>
2315   - </key>
2316   - <key>
2317   - <name>destory</name>
2318   - <field>destroy</field>
2319   - <condition>&#x3d;</condition>
2320   - <name2/>
2321   - </key>
2322   - <value>
2323   - <name>station_name</name>
2324   - <rename>zdzname_calcu</rename>
2325   - <default/>
2326   - <type>Integer</type>
2327   - </value>
2328   - </lookup>
2329   - <cluster_schema/>
2330   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
2331   - <xloc>550</xloc>
2332   - <yloc>701</yloc>
2333   - <draw>Y</draw>
2334   - </GUI>
2335   - </step>
2336   -
2337   - <step>
2338   - <name>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</name>
2339   - <type>DBLookup</type>
2340   - <description/>
2341   - <distribute>Y</distribute>
2342   - <custom_distribution/>
2343   - <copies>1</copies>
2344   - <partitioning>
2345   - <method>none</method>
2346   - <schema_name/>
2347   - </partitioning>
2348   - <connection>bus_control_variable</connection>
2349   - <cache>N</cache>
2350   - <cache_load_all>N</cache_load_all>
2351   - <cache_size>0</cache_size>
2352   - <lookup>
2353   - <schema/>
2354   - <table>bsth_c_ls_stationroute</table>
2355   - <orderby/>
2356   - <fail_on_multiple>N</fail_on_multiple>
2357   - <eat_row_on_failure>N</eat_row_on_failure>
2358   - <key>
2359   - <name>xlid</name>
2360   - <field>line</field>
2361   - <condition>&#x3d;</condition>
2362   - <name2/>
2363   - </key>
2364   - <key>
2365   - <name>version</name>
2366   - <field>versions</field>
2367   - <condition>&#x3d;</condition>
2368   - <name2/>
2369   - </key>
2370   - <key>
2371   - <name>zdzname_calcu</name>
2372   - <field>station_name</field>
2373   - <condition>&#x3d;</condition>
2374   - <name2/>
2375   - </key>
2376   - <key>
2377   - <name>startZdtype_calcu</name>
2378   - <field>station_mark</field>
2379   - <condition>&#x3d;</condition>
2380   - <name2/>
2381   - </key>
2382   - <key>
2383   - <name>destory</name>
2384   - <field>destroy</field>
2385   - <condition>&#x3d;</condition>
2386   - <name2/>
2387   - </key>
2388   - <value>
2389   - <name>directions</name>
2390   - <rename>sxx2</rename>
2391   - <default/>
2392   - <type>Integer</type>
2393   - </value>
2394   - <value>
2395   - <name>station</name>
2396   - <rename>qdzid</rename>
2397   - <default/>
2398   - <type>Integer</type>
2399   - </value>
2400   - <value>
2401   - <name>station_code</name>
2402   - <rename>qdzcode</rename>
2403   - <default/>
2404   - <type>String</type>
2405   - </value>
2406   - <value>
2407   - <name>station_name</name>
2408   - <rename>qname</rename>
2409   - <default/>
2410   - <type>String</type>
2411   - </value>
2412   - </lookup>
2413   - <cluster_schema/>
2414   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
2415   - <xloc>551</xloc>
2416   - <yloc>782</yloc>
2417   - <draw>Y</draw>
2418   - </GUI>
2419   - </step>
2420   -
2421   - <step>
2422   - <name>&#x6b63;&#x5e38;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</name>
2423   - <type>ScriptValueMod</type>
2424   - <description/>
2425   - <distribute>Y</distribute>
2426   - <custom_distribution/>
2427   - <copies>1</copies>
2428   - <partitioning>
2429   - <method>none</method>
2430   - <schema_name/>
2431   - </partitioning>
2432   - <compatible>N</compatible>
2433   - <optimizationLevel>9</optimizationLevel>
2434   - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
2435   - <jsScript_name>Script 1</jsScript_name>
2436   - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x6dfb;&#x52a0;&#x7ad9;&#x70b9;&#x6807;&#x8bc6;&#xa;var sendZdtype &#x3d; &#x27;B&#x27;&#x3b;&#xa;var endZdtype &#x3d; &#x27;E&#x27;&#x3b;&#xa;&#xa;var destory &#x3d; 0&#x3b; &#x2f;&#x2f; &#x672a;&#x64a4;&#x9500;flag</jsScript_script>
2437   - </jsScript> </jsScripts> <fields> <field> <name>sendZdtype</name>
2438   - <rename>sendZdtype</rename>
2439   - <type>String</type>
2440   - <length>-1</length>
2441   - <precision>-1</precision>
2442   - <replace>N</replace>
2443   - </field> <field> <name>endZdtype</name>
2444   - <rename>endZdtype</rename>
2445   - <type>String</type>
2446   - <length>-1</length>
2447   - <precision>-1</precision>
2448   - <replace>N</replace>
2449   - </field> <field> <name>destory</name>
2450   - <rename>destory</rename>
2451   - <type>Integer</type>
2452   - <length>-1</length>
2453   - <precision>-1</precision>
2454   - <replace>N</replace>
2455   - </field> </fields> <cluster_schema/>
2456   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
2457   - <xloc>588</xloc>
2458   - <yloc>403</yloc>
2459   - <draw>Y</draw>
2460   - </GUI>
2461   - </step>
2462   -
2463   - <step>
2464   - <name>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6570;&#x636e;</name>
2465   - <type>Dummy</type>
2466   - <description/>
2467   - <distribute>Y</distribute>
2468   - <custom_distribution/>
2469   - <copies>1</copies>
2470   - <partitioning>
2471   - <method>none</method>
2472   - <schema_name/>
2473   - </partitioning>
2474   - <cluster_schema/>
2475   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
2476   - <xloc>725</xloc>
2477   - <yloc>404</yloc>
2478   - <draw>Y</draw>
2479   - </GUI>
2480   - </step>
2481   -
2482   - <step>
2483   - <name>&#x6dfb;&#x52a0;&#x53d1;&#x8f66;&#x987a;&#x5e8f;&#x53f7;</name>
2484   - <type>GroupBy</type>
2485   - <description/>
2486   - <distribute>Y</distribute>
2487   - <custom_distribution/>
2488   - <copies>1</copies>
2489   - <partitioning>
2490   - <method>none</method>
2491   - <schema_name/>
2492   - </partitioning>
2493   - <all_rows>Y</all_rows>
2494   - <ignore_aggregate>N</ignore_aggregate>
2495   - <field_ignore/>
2496   - <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
2497   - <prefix>grp</prefix>
2498   - <add_linenr>Y</add_linenr>
2499   - <linenr_fieldname>fcno</linenr_fieldname>
2500   - <give_back_row>N</give_back_row>
2501   - <group>
2502   - <field>
2503   - <name>lp</name>
2504   - </field>
2505   - </group>
2506   - <fields>
2507   - </fields>
2508   - <cluster_schema/>
2509   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
2510   - <xloc>442</xloc>
2511   - <yloc>44</yloc>
2512   - <draw>Y</draw>
2513   - </GUI>
2514   - </step>
2515   -
2516   - <step>
2517   - <name>&#x6dfb;&#x52a0;&#x5bf9;&#x5e94;&#x73ed;&#x6b21;&#x6570;</name>
2518   - <type>GroupBy</type>
2519   - <description/>
2520   - <distribute>Y</distribute>
2521   - <custom_distribution/>
2522   - <copies>1</copies>
2523   - <partitioning>
2524   - <method>none</method>
2525   - <schema_name/>
2526   - </partitioning>
2527   - <all_rows>Y</all_rows>
2528   - <ignore_aggregate>N</ignore_aggregate>
2529   - <field_ignore/>
2530   - <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
2531   - <prefix>grp</prefix>
2532   - <add_linenr>Y</add_linenr>
2533   - <linenr_fieldname>bcs</linenr_fieldname>
2534   - <give_back_row>N</give_back_row>
2535   - <group>
2536   - </group>
2537   - <fields>
2538   - </fields>
2539   - <cluster_schema/>
2540   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
2541   - <xloc>692</xloc>
2542   - <yloc>44</yloc>
2543   - <draw>Y</draw>
2544   - </GUI>
2545   - </step>
2546   -
2547   - <step>
2548   - <name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</name>
2549   - <type>Normaliser</type>
2550   - <description/>
2551   - <distribute>Y</distribute>
2552   - <custom_distribution/>
2553   - <copies>1</copies>
2554   - <partitioning>
2555   - <method>none</method>
2556   - <schema_name/>
2557   - </partitioning>
2558   - <typefield>&#x7ad9;&#x70b9;&#x540d;&#x79f0;</typefield>
2559   - <fields> </fields> <cluster_schema/>
2560   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
2561   - <xloc>248</xloc>
2562   - <yloc>44</yloc>
2563   - <draw>Y</draw>
2564   - </GUI>
2565   - </step>
2566   -
2567   - <step>
2568   - <name>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178;</name>
2569   - <type>ValueMapper</type>
2570   - <description/>
2571   - <distribute>Y</distribute>
2572   - <custom_distribution/>
2573   - <copies>1</copies>
2574   - <partitioning>
2575   - <method>none</method>
2576   - <schema_name/>
2577   - </partitioning>
2578   - <field_to_use>bctype</field_to_use>
2579   - <target_field>bctype_code</target_field>
2580   - <non_match_default>&#x672a;&#x77e5;&#x7c7b;&#x578b;</non_match_default>
2581   - <fields>
2582   - <field>
2583   - <source_value>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</source_value>
2584   - <target_value>normal</target_value>
2585   - </field>
2586   - <field>
2587   - <source_value>&#x51fa;&#x573a;</source_value>
2588   - <target_value>out</target_value>
2589   - </field>
2590   - <field>
2591   - <source_value>&#x8fdb;&#x573a;</source_value>
2592   - <target_value>in</target_value>
2593   - </field>
2594   - <field>
2595   - <source_value>&#x52a0;&#x6cb9;</source_value>
2596   - <target_value>oil</target_value>
2597   - </field>
2598   - <field>
2599   - <source_value>&#x4e34;&#x52a0;</source_value>
2600   - <target_value>temp</target_value>
2601   - </field>
2602   - <field>
2603   - <source_value>&#x533a;&#x95f4;</source_value>
2604   - <target_value>region</target_value>
2605   - </field>
2606   - <field>
2607   - <source_value>&#x653e;&#x7a7a;</source_value>
2608   - <target_value>venting</target_value>
2609   - </field>
2610   - <field>
2611   - <source_value>&#x653e;&#x5927;&#x7ad9;</source_value>
2612   - <target_value>major</target_value>
2613   - </field>
2614   - </fields>
2615   - <cluster_schema/>
2616   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
2617   - <xloc>149</xloc>
2618   - <yloc>491</yloc>
2619   - <draw>Y</draw>
2620   - </GUI>
2621   - </step>
2622   -
2623   - <step>
2624   - <name>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 2</name>
2625   - <type>ValueMapper</type>
2626   - <description/>
2627   - <distribute>Y</distribute>
2628   - <custom_distribution/>
2629   - <copies>1</copies>
2630   - <partitioning>
2631   - <method>none</method>
2632   - <schema_name/>
2633   - </partitioning>
2634   - <field_to_use>bctype</field_to_use>
2635   - <target_field>bctype_code</target_field>
2636   - <non_match_default>&#x672a;&#x77e5;&#x7c7b;&#x578b;</non_match_default>
2637   - <fields>
2638   - <field>
2639   - <source_value>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</source_value>
2640   - <target_value>normal</target_value>
2641   - </field>
2642   - <field>
2643   - <source_value>&#x51fa;&#x573a;</source_value>
2644   - <target_value>out</target_value>
2645   - </field>
2646   - <field>
2647   - <source_value>&#x8fdb;&#x573a;</source_value>
2648   - <target_value>in</target_value>
2649   - </field>
2650   - <field>
2651   - <source_value>&#x52a0;&#x6cb9;</source_value>
2652   - <target_value>oil</target_value>
2653   - </field>
2654   - <field>
2655   - <source_value>&#x4e34;&#x52a0;</source_value>
2656   - <target_value>temp</target_value>
2657   - </field>
2658   - <field>
2659   - <source_value>&#x533a;&#x95f4;</source_value>
2660   - <target_value>region</target_value>
2661   - </field>
2662   - <field>
2663   - <source_value>&#x653e;&#x7a7a;</source_value>
2664   - <target_value>venting</target_value>
2665   - </field>
2666   - <field>
2667   - <source_value>&#x653e;&#x5927;&#x7ad9;</source_value>
2668   - <target_value>major</target_value>
2669   - </field>
2670   - </fields>
2671   - <cluster_schema/>
2672   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
2673   - <xloc>333</xloc>
2674   - <yloc>681</yloc>
2675   - <draw>Y</draw>
2676   - </GUI>
2677   - </step>
2678   -
2679   - <step>
2680   - <name>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 3</name>
2681   - <type>ValueMapper</type>
2682   - <description/>
2683   - <distribute>Y</distribute>
2684   - <custom_distribution/>
2685   - <copies>1</copies>
2686   - <partitioning>
2687   - <method>none</method>
2688   - <schema_name/>
2689   - </partitioning>
2690   - <field_to_use>bctype</field_to_use>
2691   - <target_field>bctype_code</target_field>
2692   - <non_match_default>&#x672a;&#x77e5;&#x7c7b;&#x578b;</non_match_default>
2693   - <fields>
2694   - <field>
2695   - <source_value>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</source_value>
2696   - <target_value>normal</target_value>
2697   - </field>
2698   - <field>
2699   - <source_value>&#x51fa;&#x573a;</source_value>
2700   - <target_value>out</target_value>
2701   - </field>
2702   - <field>
2703   - <source_value>&#x8fdb;&#x573a;</source_value>
2704   - <target_value>in</target_value>
2705   - </field>
2706   - <field>
2707   - <source_value>&#x52a0;&#x6cb9;</source_value>
2708   - <target_value>oil</target_value>
2709   - </field>
2710   - <field>
2711   - <source_value>&#x4e34;&#x52a0;</source_value>
2712   - <target_value>temp</target_value>
2713   - </field>
2714   - <field>
2715   - <source_value>&#x533a;&#x95f4;</source_value>
2716   - <target_value>region</target_value>
2717   - </field>
2718   - <field>
2719   - <source_value>&#x653e;&#x7a7a;</source_value>
2720   - <target_value>venting</target_value>
2721   - </field>
2722   - <field>
2723   - <source_value>&#x653e;&#x5927;&#x7ad9;</source_value>
2724   - <target_value>major</target_value>
2725   - </field>
2726   - </fields>
2727   - <cluster_schema/>
2728   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
2729   - <xloc>551</xloc>
2730   - <yloc>928</yloc>
2731   - <draw>Y</draw>
2732   - </GUI>
2733   - </step>
2734   -
2735   - <step>
2736   - <name>&#x7c7b;&#x578b;&#x4fee;&#x6b63;</name>
2737   - <type>SelectValues</type>
2738   - <description/>
2739   - <distribute>Y</distribute>
2740   - <custom_distribution/>
2741   - <copies>1</copies>
2742   - <partitioning>
2743   - <method>none</method>
2744   - <schema_name/>
2745   - </partitioning>
2746   - <fields> <select_unspecified>N</select_unspecified>
2747   - <meta> <name>jhlc</name>
2748   - <rename>jhlc</rename>
2749   - <type>Number</type>
2750   - <length>-2</length>
2751   - <precision>-2</precision>
2752   - <conversion_mask/>
2753   - <date_format_lenient>false</date_format_lenient>
2754   - <date_format_locale/>
2755   - <date_format_timezone/>
2756   - <lenient_string_to_number>false</lenient_string_to_number>
2757   - <encoding/>
2758   - <decimal_symbol/>
2759   - <grouping_symbol/>
2760   - <currency_symbol/>
2761   - <storage_type/>
2762   - </meta> <meta> <name>bcsj</name>
2763   - <rename>bcsj</rename>
2764   - <type>Integer</type>
2765   - <length>-2</length>
2766   - <precision>-2</precision>
2767   - <conversion_mask/>
2768   - <date_format_lenient>false</date_format_lenient>
2769   - <date_format_locale/>
2770   - <date_format_timezone/>
2771   - <lenient_string_to_number>false</lenient_string_to_number>
2772   - <encoding/>
2773   - <decimal_symbol/>
2774   - <grouping_symbol/>
2775   - <currency_symbol/>
2776   - <storage_type/>
2777   - </meta> </fields> <cluster_schema/>
2778   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
2779   - <xloc>146</xloc>
2780   - <yloc>768</yloc>
2781   - <draw>Y</draw>
2782   - </GUI>
2783   - </step>
2784   -
2785   - <step>
2786   - <name>&#x7c7b;&#x578b;&#x4fee;&#x6b63; 2</name>
2787   - <type>SelectValues</type>
2788   - <description/>
2789   - <distribute>Y</distribute>
2790   - <custom_distribution/>
2791   - <copies>1</copies>
2792   - <partitioning>
2793   - <method>none</method>
2794   - <schema_name/>
2795   - </partitioning>
2796   - <fields> <select_unspecified>N</select_unspecified>
2797   - <meta> <name>out_mileage</name>
2798   - <rename>out_mileage</rename>
2799   - <type>Number</type>
2800   - <length>-2</length>
2801   - <precision>-2</precision>
2802   - <conversion_mask/>
2803   - <date_format_lenient>false</date_format_lenient>
2804   - <date_format_locale/>
2805   - <date_format_timezone/>
2806   - <lenient_string_to_number>false</lenient_string_to_number>
2807   - <encoding/>
2808   - <decimal_symbol/>
2809   - <grouping_symbol/>
2810   - <currency_symbol/>
2811   - <storage_type/>
2812   - </meta> <meta> <name>out_time</name>
2813   - <rename>out_time</rename>
2814   - <type>Integer</type>
2815   - <length>-2</length>
2816   - <precision>-2</precision>
2817   - <conversion_mask/>
2818   - <date_format_lenient>false</date_format_lenient>
2819   - <date_format_locale/>
2820   - <date_format_timezone/>
2821   - <lenient_string_to_number>false</lenient_string_to_number>
2822   - <encoding/>
2823   - <decimal_symbol/>
2824   - <grouping_symbol/>
2825   - <currency_symbol/>
2826   - <storage_type/>
2827   - </meta> <meta> <name>sxx</name>
2828   - <rename>sxx</rename>
2829   - <type>Integer</type>
2830   - <length>-2</length>
2831   - <precision>-2</precision>
2832   - <conversion_mask/>
2833   - <date_format_lenient>false</date_format_lenient>
2834   - <date_format_locale/>
2835   - <date_format_timezone/>
2836   - <lenient_string_to_number>false</lenient_string_to_number>
2837   - <encoding/>
2838   - <decimal_symbol/>
2839   - <grouping_symbol/>
2840   - <currency_symbol/>
2841   - <storage_type/>
2842   - </meta> </fields> <cluster_schema/>
2843   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
2844   - <xloc>338</xloc>
2845   - <yloc>1008</yloc>
2846   - <draw>Y</draw>
2847   - </GUI>
2848   - </step>
2849   -
2850   - <step>
2851   - <name>&#x7c7b;&#x578b;&#x4fee;&#x6b63; 3</name>
2852   - <type>SelectValues</type>
2853   - <description/>
2854   - <distribute>Y</distribute>
2855   - <custom_distribution/>
2856   - <copies>1</copies>
2857   - <partitioning>
2858   - <method>none</method>
2859   - <schema_name/>
2860   - </partitioning>
2861   - <fields> <select_unspecified>N</select_unspecified>
2862   - <meta> <name>parade_mileage</name>
2863   - <rename>parade_mileage</rename>
2864   - <type>Number</type>
2865   - <length>-2</length>
2866   - <precision>-2</precision>
2867   - <conversion_mask/>
2868   - <date_format_lenient>false</date_format_lenient>
2869   - <date_format_locale/>
2870   - <date_format_timezone/>
2871   - <lenient_string_to_number>false</lenient_string_to_number>
2872   - <encoding/>
2873   - <decimal_symbol/>
2874   - <grouping_symbol/>
2875   - <currency_symbol/>
2876   - <storage_type/>
2877   - </meta> <meta> <name>parade_time</name>
2878   - <rename>parade_time</rename>
2879   - <type>Integer</type>
2880   - <length>-2</length>
2881   - <precision>-2</precision>
2882   - <conversion_mask/>
2883   - <date_format_lenient>false</date_format_lenient>
2884   - <date_format_locale/>
2885   - <date_format_timezone/>
2886   - <lenient_string_to_number>false</lenient_string_to_number>
2887   - <encoding/>
2888   - <decimal_symbol/>
2889   - <grouping_symbol/>
2890   - <currency_symbol/>
2891   - <storage_type/>
2892   - </meta> <meta> <name>sxx2</name>
2893   - <rename>sxx2</rename>
2894   - <type>Integer</type>
2895   - <length>-2</length>
2896   - <precision>-2</precision>
2897   - <conversion_mask/>
2898   - <date_format_lenient>false</date_format_lenient>
2899   - <date_format_locale/>
2900   - <date_format_timezone/>
2901   - <lenient_string_to_number>false</lenient_string_to_number>
2902   - <encoding/>
2903   - <decimal_symbol/>
2904   - <grouping_symbol/>
2905   - <currency_symbol/>
2906   - <storage_type/>
2907   - </meta> </fields> <cluster_schema/>
2908   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
2909   - <xloc>847</xloc>
2910   - <yloc>1003</yloc>
2911   - <draw>Y</draw>
2912   - </GUI>
2913   - </step>
2914   -
2915   - <step>
2916   - <name>&#x8ba1;&#x7b97;&#x73ed;&#x6b21;&#x7c7b;&#x578b;</name>
2917   - <type>ValueMapper</type>
2918   - <description/>
2919   - <distribute>Y</distribute>
2920   - <custom_distribution/>
2921   - <copies>1</copies>
2922   - <partitioning>
2923   - <method>none</method>
2924   - <schema_name/>
2925   - </partitioning>
2926   - <field_to_use>qdzname</field_to_use>
2927   - <target_field>bctype</target_field>
2928   - <non_match_default>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</non_match_default>
2929   - <fields>
2930   - <field>
2931   - <source_value>&#x51fa;&#x573a;</source_value>
2932   - <target_value>&#x51fa;&#x573a;</target_value>
2933   - </field>
2934   - <field>
2935   - <source_value>&#x8fdb;&#x573a;</source_value>
2936   - <target_value>&#x8fdb;&#x573a;</target_value>
2937   - </field>
2938   - </fields>
2939   - <cluster_schema/>
2940   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
2941   - <xloc>1014</xloc>
2942   - <yloc>401</yloc>
2943   - <draw>Y</draw>
2944   - </GUI>
2945   - </step>
2946   -
2947   - <step>
2948   - <name>&#x8bb0;&#x5f55;&#x5173;&#x8054; &#x28;&#x7b1b;&#x5361;&#x5c14;&#x8f93;&#x51fa;&#x29;</name>
2949   - <type>JoinRows</type>
2950   - <description/>
2951   - <distribute>Y</distribute>
2952   - <custom_distribution/>
2953   - <copies>1</copies>
2954   - <partitioning>
2955   - <method>none</method>
2956   - <schema_name/>
2957   - </partitioning>
2958   - <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
2959   - <prefix>out</prefix>
2960   - <cache_size>500</cache_size>
2961   - <main/>
2962   - <compare>
2963   -<condition>
2964   - <negated>N</negated>
2965   - <leftvalue/>
2966   - <function>&#x3d;</function>
2967   - <rightvalue/>
2968   - </condition>
2969   - </compare>
2970   - <cluster_schema/>
2971   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
2972   - <xloc>310</xloc>
2973   - <yloc>133</yloc>
2974   - <draw>Y</draw>
2975   - </GUI>
2976   - </step>
2977   -
2978   - <step>
2979   - <name>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;&#xff08;&#x53d1;&#x8f66;&#x65f6;&#x95f4;&#x4e3a;&#x7a7a;&#xff09;</name>
2980   - <type>FilterRows</type>
2981   - <description/>
2982   - <distribute>Y</distribute>
2983   - <custom_distribution/>
2984   - <copies>1</copies>
2985   - <partitioning>
2986   - <method>none</method>
2987   - <schema_name/>
2988   - </partitioning>
2989   -<send_true_to/>
2990   -<send_false_to/>
2991   - <compare>
2992   -<condition>
2993   - <negated>N</negated>
2994   - <leftvalue>sendtime</leftvalue>
2995   - <function>IS NOT NULL</function>
2996   - <rightvalue/>
2997   - </condition>
2998   - </compare>
2999   - <cluster_schema/>
3000   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
3001   - <xloc>571</xloc>
3002   - <yloc>44</yloc>
3003   - <draw>Y</draw>
3004   - </GUI>
3005   - </step>
3006   -
3007   - <step>
3008   - <name>&#x8fdb;&#x573a;&#x73ed;&#x6b21;_&#x786e;&#x5b9a;&#x8d77;&#x70b9;&#x7ad9;&#x540d;&#x5b57;</name>
3009   - <type>ScriptValueMod</type>
3010   - <description/>
3011   - <distribute>Y</distribute>
3012   - <custom_distribution/>
3013   - <copies>1</copies>
3014   - <partitioning>
3015   - <method>none</method>
3016   - <schema_name/>
3017   - </partitioning>
3018   - <compatible>N</compatible>
3019   - <optimizationLevel>9</optimizationLevel>
3020   - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
3021   - <jsScript_name>Script 1</jsScript_name>
3022   - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x6dfb;&#x52a0;&#x7ad9;&#x70b9;&#x6807;&#x8bc6;&#xa;var cc_groups &#x3d; qdzgroups.split&#x28;&#x22;,&#x22;&#x29;&#x3b; &#x2f;&#x2f; &#x6240;&#x6709;&#x73ed;&#x6b21;&#x8d77;&#x70b9;&#x7ad9;&#x6570;&#x7ec4;&#xa;var qdzname_calcu &#x3d; cc_groups&#x5b;gno - 2&#x5d;&#x3b; &#x2f;&#x2f; &#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x7684;&#x8d77;&#x70b9;&#x7ad9;&#x662f;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ec8;&#x70b9;&#x7ad9;&#xff0c;&#x8fd9;&#x91cc;&#x53ea;&#x6709;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x8d77;&#x70b9;&#x7ad9;&#xff0c;&#x8fd8;&#x9700;&#x8981;&#x8ba1;&#x7b97;&#xa;var startZdtype_calcu &#x3d; &#x27;B&#x27;&#x3b;&#xa;var endZdtype_calcu &#x3d; &#x27;E&#x27;&#x3b;&#xa;&#xa;var destory &#x3d; 0&#x3b; &#x2f;&#x2f; &#x672a;&#x64a4;&#x9500;flag</jsScript_script>
3023   - </jsScript> </jsScripts> <fields> <field> <name>qdzname_calcu</name>
3024   - <rename>qdzname_calcu</rename>
3025   - <type>String</type>
3026   - <length>-1</length>
3027   - <precision>-1</precision>
3028   - <replace>N</replace>
3029   - </field> <field> <name>startZdtype_calcu</name>
3030   - <rename>startZdtype_calcu</rename>
3031   - <type>String</type>
3032   - <length>-1</length>
3033   - <precision>-1</precision>
3034   - <replace>N</replace>
3035   - </field> <field> <name>endZdtype_calcu</name>
3036   - <rename>endZdtype_calcu</rename>
3037   - <type>String</type>
3038   - <length>-1</length>
3039   - <precision>-1</precision>
3040   - <replace>N</replace>
3041   - </field> <field> <name>destory</name>
3042   - <rename>destory</rename>
3043   - <type>Integer</type>
3044   - <length>-1</length>
3045   - <precision>-1</precision>
3046   - <replace>N</replace>
3047   - </field> </fields> <cluster_schema/>
3048   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
3049   - <xloc>754</xloc>
3050   - <yloc>610</yloc>
3051   - <draw>Y</draw>
3052   - </GUI>
3053   - </step>
3054   -
3055   - <step>
3056   - <name>&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</name>
3057   - <type>Dummy</type>
3058   - <description/>
3059   - <distribute>Y</distribute>
3060   - <custom_distribution/>
3061   - <copies>1</copies>
3062   - <partitioning>
3063   - <method>none</method>
3064   - <schema_name/>
3065   - </partitioning>
3066   - <cluster_schema/>
3067   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
3068   - <xloc>997</xloc>
3069   - <yloc>606</yloc>
3070   - <draw>Y</draw>
3071   - </GUI>
3072   - </step>
3073   -
3074   - <step>
3075   - <name>&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c;&#x7c7b;&#x578b;</name>
3076   - <type>SelectValues</type>
3077   - <description/>
3078   - <distribute>Y</distribute>
3079   - <custom_distribution/>
3080   - <copies>1</copies>
3081   - <partitioning>
3082   - <method>none</method>
3083   - <schema_name/>
3084   - </partitioning>
3085   - <fields> <select_unspecified>Y</select_unspecified>
3086   - <meta> <name>zdlyversion_</name>
3087   - <rename>version</rename>
3088   - <type>Integer</type>
3089   - <length>-2</length>
3090   - <precision>-2</precision>
3091   - <conversion_mask/>
3092   - <date_format_lenient>false</date_format_lenient>
3093   - <date_format_locale/>
3094   - <date_format_timezone/>
3095   - <lenient_string_to_number>false</lenient_string_to_number>
3096   - <encoding/>
3097   - <decimal_symbol/>
3098   - <grouping_symbol/>
3099   - <currency_symbol/>
3100   - <storage_type/>
3101   - </meta> </fields> <cluster_schema/>
3102   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
3103   - <xloc>1015</xloc>
3104   - <yloc>333</yloc>
3105   - <draw>Y</draw>
3106   - </GUI>
3107   - </step>
3108   -
3109   - <step_error_handling>
3110   - <error>
3111   - <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo_detail</source_step>
3112   - <target_step/>
3113   - <is_enabled>Y</is_enabled>
3114   - <nr_valuename>c1</nr_valuename>
3115   - <descriptions_valuename>c2</descriptions_valuename>
3116   - <fields_valuename>c3</fields_valuename>
3117   - <codes_valuename>c4</codes_valuename>
3118   - <max_errors/>
3119   - <max_pct_errors/>
3120   - <min_pct_rows/>
3121   - </error>
3122   - </step_error_handling>
3123   - <slave-step-copy-partition-distribution>
3124   -</slave-step-copy-partition-distribution>
3125   - <slave_transformation>N</slave_transformation>
3126   -
3127   -</transformation>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x5bfc;&#x5165;-&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c;</name>
  5 + <description>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description>
  6 + <extended_description>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;</extended_description>
  7 + <trans_version/>
  8 + <trans_type>Normal</trans_type>
  9 + <trans_status>0</trans_status>
  10 + <directory>&#x2f;</directory>
  11 + <parameters>
  12 + </parameters>
  13 + <log>
  14 +<trans-log-table><connection/>
  15 +<schema/>
  16 +<table/>
  17 +<size_limit_lines/>
  18 +<interval/>
  19 +<timeout_days/>
  20 +<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>
  21 +<perf-log-table><connection/>
  22 +<schema/>
  23 +<table/>
  24 +<interval/>
  25 +<timeout_days/>
  26 +<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>
  27 +<channel-log-table><connection/>
  28 +<schema/>
  29 +<table/>
  30 +<timeout_days/>
  31 +<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>
  32 +<step-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>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>
  37 +<metrics-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>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>
  42 + </log>
  43 + <maxdate>
  44 + <connection/>
  45 + <table/>
  46 + <field/>
  47 + <offset>0.0</offset>
  48 + <maxdiff>0.0</maxdiff>
  49 + </maxdate>
  50 + <size_rowset>10000</size_rowset>
  51 + <sleep_time_empty>50</sleep_time_empty>
  52 + <sleep_time_full>50</sleep_time_full>
  53 + <unique_connections>N</unique_connections>
  54 + <feedback_shown>Y</feedback_shown>
  55 + <feedback_size>50000</feedback_size>
  56 + <using_thread_priorities>Y</using_thread_priorities>
  57 + <shared_objects_file/>
  58 + <capture_step_performance>N</capture_step_performance>
  59 + <step_performance_capturing_delay>1000</step_performance_capturing_delay>
  60 + <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
  61 + <dependencies>
  62 + </dependencies>
  63 + <partitionschemas>
  64 + </partitionschemas>
  65 + <slaveservers>
  66 + </slaveservers>
  67 + <clusterschemas>
  68 + </clusterschemas>
  69 + <created_user>-</created_user>
  70 + <created_date>2016&#x2f;06&#x2f;30 12&#x3a;21&#x3a;57.536</created_date>
  71 + <modified_user>-</modified_user>
  72 + <modified_date>2016&#x2f;06&#x2f;30 12&#x3a;21&#x3a;57.536</modified_date>
  73 + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
  74 + <is_key_private>N</is_key_private>
  75 + </info>
  76 + <notepads>
  77 + <notepad>
  78 + <note>&#x5b57;&#x5178;&#x8868;&#x5bf9;&#x5e94;&#xff08;&#x4ee5;&#x540e;&#x76f4;&#x63a5;&#x67e5;&#x627e;&#x8868; bsth_c_sys_dictionary&#xff09;&#xa;&#x7c7b;&#x578b; &#x4ee3;&#x7801; &#x540d;&#x79f0;&#xa;LineTrend 0 &#x4e0a;&#x884c;&#xa;LineTrend 1 &#x4e0b;&#x884c;&#xa;ScheduleType normal &#x6b63;&#x5e38;&#x73ed;&#x6b21;&#xa;ScheduleType out &#x51fa;&#x573a;&#xa;ScheduleType in &#x8fdb;&#x573a;&#xa;ScheduleType temp &#x4e34;&#x52a0;&#xa;ScheduleType region &#x533a;&#x95f4;&#xa;ScheduleType venting &#x653e;&#x7a7a;&#xa;ScheduleType major &#x653e;&#x5927;&#x7ad9;</note>
  79 + <xloc>606</xloc>
  80 + <yloc>129</yloc>
  81 + <width>332</width>
  82 + <heigth>186</heigth>
  83 + <fontname>YaHei Consolas Hybrid</fontname>
  84 + <fontsize>12</fontsize>
  85 + <fontbold>N</fontbold>
  86 + <fontitalic>N</fontitalic>
  87 + <fontcolorred>0</fontcolorred>
  88 + <fontcolorgreen>0</fontcolorgreen>
  89 + <fontcolorblue>0</fontcolorblue>
  90 + <backgroundcolorred>255</backgroundcolorred>
  91 + <backgroundcolorgreen>205</backgroundcolorgreen>
  92 + <backgroundcolorblue>112</backgroundcolorblue>
  93 + <bordercolorred>100</bordercolorred>
  94 + <bordercolorgreen>100</bordercolorgreen>
  95 + <bordercolorblue>100</bordercolorblue>
  96 + <drawshadow>Y</drawshadow>
  97 + </notepad>
  98 + <notepad>
  99 + <note>&#x56e0;&#x4e3a;&#x65f6;&#x523b;&#x8868;&#x8f93;&#x5165;&#x683c;&#x5f0f;&#x4e0d;&#x786e;&#x5b9a;&#x6027;&#xff0c;&#x4e3b;&#x8981;&#x56e0;&#x4e3a;&#x8868;&#x7ed3;&#x6784;&#x662f;&#x53cd;&#x8303;&#x5f0f;&#x5316;&#x7684;&#xff0c;&#xa;&#x6240;&#x4ee5;&#x9700;&#x8981;&#x5916;&#x90e8;&#x52a8;&#x6001;&#x6307;&#x5b9a;&#x613f;&#x6570;&#x636e;&#xff0c;&#x5934;&#x4e09;&#x4e2a;step&#x52a8;&#x6001;&#x6307;&#x5b9a;&#x613f;&#x6570;&#x636e;&#xa;&#xa;</note>
  100 + <xloc>79</xloc>
  101 + <yloc>206</yloc>
  102 + <width>346</width>
  103 + <heigth>74</heigth>
  104 + <fontname>YaHei Consolas Hybrid</fontname>
  105 + <fontsize>12</fontsize>
  106 + <fontbold>N</fontbold>
  107 + <fontitalic>N</fontitalic>
  108 + <fontcolorred>0</fontcolorred>
  109 + <fontcolorgreen>0</fontcolorgreen>
  110 + <fontcolorblue>0</fontcolorblue>
  111 + <backgroundcolorred>255</backgroundcolorred>
  112 + <backgroundcolorgreen>205</backgroundcolorgreen>
  113 + <backgroundcolorblue>112</backgroundcolorblue>
  114 + <bordercolorred>100</bordercolorred>
  115 + <bordercolorgreen>100</bordercolorgreen>
  116 + <bordercolorblue>100</bordercolorblue>
  117 + <drawshadow>Y</drawshadow>
  118 + </notepad>
  119 + <notepad>
  120 + <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>
  121 + <xloc>721</xloc>
  122 + <yloc>762</yloc>
  123 + <width>333</width>
  124 + <heigth>90</heigth>
  125 + <fontname>YaHei Consolas Hybrid</fontname>
  126 + <fontsize>12</fontsize>
  127 + <fontbold>N</fontbold>
  128 + <fontitalic>N</fontitalic>
  129 + <fontcolorred>0</fontcolorred>
  130 + <fontcolorgreen>0</fontcolorgreen>
  131 + <fontcolorblue>0</fontcolorblue>
  132 + <backgroundcolorred>255</backgroundcolorred>
  133 + <backgroundcolorgreen>205</backgroundcolorgreen>
  134 + <backgroundcolorblue>112</backgroundcolorblue>
  135 + <bordercolorred>100</bordercolorred>
  136 + <bordercolorgreen>100</bordercolorgreen>
  137 + <bordercolorblue>100</bordercolorblue>
  138 + <drawshadow>Y</drawshadow>
  139 + </notepad>
  140 + <notepad>
  141 + <note>&#x51fa;&#x573a;&#x73ed;&#x6b21;&#xff0c;&#x65b9;&#x5411;&#x6709;&#x65f6;&#x786e;&#x5b9a;&#x4e0d;&#x51c6;&#xff0c;&#xa;&#x7a7a;&#x7684;&#x60c5;&#x51b5;&#x4e0b;&#x8bbe;&#x5b9a;&#x4e3a;0&#xff08;&#x4e0a;&#x884c;&#xff09;</note>
  142 + <xloc>104</xloc>
  143 + <yloc>939</yloc>
  144 + <width>178</width>
  145 + <heigth>42</heigth>
  146 + <fontname>YaHei Consolas Hybrid</fontname>
  147 + <fontsize>12</fontsize>
  148 + <fontbold>N</fontbold>
  149 + <fontitalic>N</fontitalic>
  150 + <fontcolorred>0</fontcolorred>
  151 + <fontcolorgreen>0</fontcolorgreen>
  152 + <fontcolorblue>0</fontcolorblue>
  153 + <backgroundcolorred>255</backgroundcolorred>
  154 + <backgroundcolorgreen>205</backgroundcolorgreen>
  155 + <backgroundcolorblue>112</backgroundcolorblue>
  156 + <bordercolorred>100</bordercolorred>
  157 + <bordercolorgreen>100</bordercolorgreen>
  158 + <bordercolorblue>100</bordercolorblue>
  159 + <drawshadow>Y</drawshadow>
  160 + </notepad>
  161 + <notepad>
  162 + <note>&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#xff0c;&#x65b9;&#x5411;&#x6709;&#x65f6;&#x786e;&#x5b9a;&#x4e0d;&#x51c6;&#xff0c;&#xa;&#x7a7a;&#x7684;&#x60c5;&#x51b5;&#x4e0b;&#x8bbe;&#x5b9a;&#x4e3a;0&#xff08;&#x4e0a;&#x884c;&#xff09;</note>
  163 + <xloc>578</xloc>
  164 + <yloc>1084</yloc>
  165 + <width>178</width>
  166 + <heigth>42</heigth>
  167 + <fontname>YaHei Consolas Hybrid</fontname>
  168 + <fontsize>12</fontsize>
  169 + <fontbold>N</fontbold>
  170 + <fontitalic>N</fontitalic>
  171 + <fontcolorred>0</fontcolorred>
  172 + <fontcolorgreen>0</fontcolorgreen>
  173 + <fontcolorblue>0</fontcolorblue>
  174 + <backgroundcolorred>255</backgroundcolorred>
  175 + <backgroundcolorgreen>205</backgroundcolorgreen>
  176 + <backgroundcolorblue>112</backgroundcolorblue>
  177 + <bordercolorred>100</bordercolorred>
  178 + <bordercolorgreen>100</bordercolorgreen>
  179 + <bordercolorblue>100</bordercolorblue>
  180 + <drawshadow>Y</drawshadow>
  181 + </notepad>
  182 + </notepads>
  183 + <connection>
  184 + <name>192.168.168.1_jwgl_dw</name>
  185 + <server>192.168.168.1</server>
  186 + <type>ORACLE</type>
  187 + <access>Native</access>
  188 + <database>orcl</database>
  189 + <port>1521</port>
  190 + <username>jwgl_dw</username>
  191 + <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password>
  192 + <servername/>
  193 + <data_tablespace/>
  194 + <index_tablespace/>
  195 + <attributes>
  196 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  197 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  198 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  199 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  200 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  201 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  202 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  203 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  204 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  205 + </attributes>
  206 + </connection>
  207 + <connection>
  208 + <name>bus_control_variable</name>
  209 + <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
  210 + <type>MYSQL</type>
  211 + <access>Native</access>
  212 + <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
  213 + <port>3306</port>
  214 + <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
  215 + <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
  216 + <servername/>
  217 + <data_tablespace/>
  218 + <index_tablespace/>
  219 + <attributes>
  220 + <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
  221 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  222 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  223 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  224 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  225 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  226 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  227 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  228 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  229 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  230 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  231 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  232 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  233 + </attributes>
  234 + </connection>
  235 + <connection>
  236 + <name>bus_control_&#x516c;&#x53f8;_201</name>
  237 + <server>localhost</server>
  238 + <type>MYSQL</type>
  239 + <access>Native</access>
  240 + <database>control</database>
  241 + <port>3306</port>
  242 + <username>root</username>
  243 + <password>Encrypted </password>
  244 + <servername/>
  245 + <data_tablespace/>
  246 + <index_tablespace/>
  247 + <attributes>
  248 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  249 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  250 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  251 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  252 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  253 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  254 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  255 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  256 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  257 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  258 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  259 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  260 + </attributes>
  261 + </connection>
  262 + <connection>
  263 + <name>bus_control_&#x672c;&#x673a;</name>
  264 + <server>localhost</server>
  265 + <type>MYSQL</type>
  266 + <access>Native</access>
  267 + <database>control</database>
  268 + <port>3306</port>
  269 + <username>root</username>
  270 + <password>Encrypted </password>
  271 + <servername/>
  272 + <data_tablespace/>
  273 + <index_tablespace/>
  274 + <attributes>
  275 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  276 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  277 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  278 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  279 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  280 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  281 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  282 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  283 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  284 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  285 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  286 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  287 + </attributes>
  288 + </connection>
  289 + <connection>
  290 + <name>xlab_mysql_youle</name>
  291 + <server>101.231.124.8</server>
  292 + <type>MYSQL</type>
  293 + <access>Native</access>
  294 + <database>xlab_youle</database>
  295 + <port>45687</port>
  296 + <username>xlab-youle</username>
  297 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
  298 + <servername/>
  299 + <data_tablespace/>
  300 + <index_tablespace/>
  301 + <attributes>
  302 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  303 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  304 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  305 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  306 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  307 + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
  308 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  309 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  310 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  311 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  312 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  313 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  314 + </attributes>
  315 + </connection>
  316 + <connection>
  317 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  318 + <server>localhost</server>
  319 + <type>MYSQL</type>
  320 + <access>Native</access>
  321 + <database>xlab_youle</database>
  322 + <port>3306</port>
  323 + <username>root</username>
  324 + <password>Encrypted </password>
  325 + <servername/>
  326 + <data_tablespace/>
  327 + <index_tablespace/>
  328 + <attributes>
  329 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  330 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  331 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  332 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  333 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  334 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  335 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  336 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  337 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  338 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  339 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  340 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  341 + </attributes>
  342 + </connection>
  343 + <connection>
  344 + <name>xlab_youle</name>
  345 + <server/>
  346 + <type>MYSQL</type>
  347 + <access>JNDI</access>
  348 + <database>xlab_youle</database>
  349 + <port>1521</port>
  350 + <username/>
  351 + <password>Encrypted </password>
  352 + <servername/>
  353 + <data_tablespace/>
  354 + <index_tablespace/>
  355 + <attributes>
  356 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  357 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  358 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  359 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  360 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  361 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  362 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  363 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  364 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  365 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  366 + </attributes>
  367 + </connection>
  368 + <order>
  369 + <hop> <from>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</from><to>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</to><enabled>Y</enabled> </hop>
  370 + <hop> <from>&#x6dfb;&#x52a0;&#x53d1;&#x8f66;&#x987a;&#x5e8f;&#x53f7;</from><to>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;&#xff08;&#x53d1;&#x8f66;&#x65f6;&#x95f4;&#x4e3a;&#x7a7a;&#xff09;</to><enabled>Y</enabled> </hop>
  371 + <hop> <from>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;&#xff08;&#x53d1;&#x8f66;&#x65f6;&#x95f4;&#x4e3a;&#x7a7a;&#xff09;</from><to>&#x6dfb;&#x52a0;&#x5bf9;&#x5e94;&#x73ed;&#x6b21;&#x6570;</to><enabled>Y</enabled> </hop>
  372 + <hop> <from>&#x6dfb;&#x52a0;&#x5bf9;&#x5e94;&#x73ed;&#x6b21;&#x6570;</from><to>&#x5904;&#x7406;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
  373 + <hop> <from>&#x5904;&#x7406;&#x6570;&#x636e;</from><to>&#x5206;&#x7ec4;&#x5404;&#x4e2a;&#x8def;&#x724c;&#x7684;&#x7ad9;</to><enabled>Y</enabled> </hop>
  374 + <hop> <from>&#x67e5;&#x627e;&#x65f6;&#x523b;&#x8868;&#x57fa;&#x7840;&#x4fe1;&#x606f;&#x5173;&#x8054;</from><to>&#x67e5;&#x627e;&#x8def;&#x724c;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
  375 + <hop> <from>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</from><to>&#x67e5;&#x627e;&#x65f6;&#x523b;&#x8868;&#x57fa;&#x7840;&#x4fe1;&#x606f;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
  376 + <hop> <from>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178;</from><to>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178;</to><enabled>Y</enabled> </hop>
  377 + <hop> <from>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178; 2</from><to>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 2</to><enabled>Y</enabled> </hop>
  378 + <hop> <from>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178; 3</from><to>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 3</to><enabled>Y</enabled> </hop>
  379 + <hop> <from>&#x5339;&#x914d;&#x4e0a;&#x4e0b;&#x884c;&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</from><to>&#x7c7b;&#x578b;&#x4fee;&#x6b63;</to><enabled>Y</enabled> </hop>
  380 + <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;1</from><to>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</to><enabled>Y</enabled> </hop>
  381 + <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;1</from><to>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
  382 + <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</from><to>&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
  383 + <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</from><to>&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
  384 + <hop> <from>&#x67e5;&#x627e;&#x6240;&#x6709;&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</from><to>&#x5339;&#x914d;&#x4e0a;&#x4e0b;&#x884c;&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
  385 + <hop> <from>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;</from><to>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178;</to><enabled>Y</enabled> </hop>
  386 + <hop> <from>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</from><to>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
  387 + <hop> <from>&#x6b63;&#x5e38;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</from><to>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</to><enabled>Y</enabled> </hop>
  388 + <hop> <from>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6570;&#x636e;</from><to>&#x6b63;&#x5e38;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
  389 + <hop> <from>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178;</from><to>&#x67e5;&#x627e;&#x6240;&#x6709;&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
  390 + <hop> <from>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 2</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x51fa;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
  391 + <hop> <from>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 3</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x8fdb;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
  392 + <hop> <from>&#x8ba1;&#x7b97;&#x73ed;&#x6b21;&#x7c7b;&#x578b;</from><to>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;1</to><enabled>Y</enabled> </hop>
  393 + <hop> <from>&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</from><to>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;1</to><enabled>Y</enabled> </hop>
  394 + <hop> <from>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;1</from><to>&#x51fa;&#x573a;&#x73ed;&#x6b21;_&#x786e;&#x5b9a;&#x7ec8;&#x70b9;&#x7ad9;&#x540d;&#x5b57;</to><enabled>Y</enabled> </hop>
  395 + <hop> <from>&#x51fa;&#x573a;&#x73ed;&#x6b21;_&#x786e;&#x5b9a;&#x7ec8;&#x70b9;&#x7ad9;&#x540d;&#x5b57;</from><to>&#x67e5;&#x627e;&#x51fa;&#x573a;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</to><enabled>Y</enabled> </hop>
  396 + <hop> <from>&#x67e5;&#x627e;&#x51fa;&#x573a;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</from><to>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178; 2</to><enabled>Y</enabled> </hop>
  397 + <hop> <from>&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</from><to>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;2</to><enabled>Y</enabled> </hop>
  398 + <hop> <from>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;2</from><to>&#x8fdb;&#x573a;&#x73ed;&#x6b21;_&#x786e;&#x5b9a;&#x8d77;&#x70b9;&#x7ad9;&#x540d;&#x5b57;</to><enabled>Y</enabled> </hop>
  399 + <hop> <from>&#x8fdb;&#x573a;&#x73ed;&#x6b21;_&#x786e;&#x5b9a;&#x8d77;&#x70b9;&#x7ad9;&#x540d;&#x5b57;</from><to>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ebf;&#x8def;&#x65b9;&#x5411;</to><enabled>Y</enabled> </hop>
  400 + <hop> <from>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ebf;&#x8def;&#x65b9;&#x5411;</from><to>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ec8;&#x70b9;&#x7ad9;&#xff0c;&#x5e76;&#x4f5c;&#x4e3a;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x7684;&#x8d77;&#x70b9;&#x7ad9;</to><enabled>Y</enabled> </hop>
  401 + <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x6dfb;&#x52a0;&#x53d1;&#x8f66;&#x987a;&#x5e8f;&#x53f7;</to><enabled>Y</enabled> </hop>
  402 + <hop> <from>&#x5206;&#x7ec4;&#x5404;&#x4e2a;&#x8def;&#x724c;&#x7684;&#x7ad9;</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
  403 + <hop> <from>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;&#xff0c;&#x7ebf;&#x8def;&#x540d;&#x5b57;&#xff0c;&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</from><to>&#x8bb0;&#x5f55;&#x5173;&#x8054; &#x28;&#x7b1b;&#x5361;&#x5c14;&#x8f93;&#x51fa;&#x29;</to><enabled>Y</enabled> </hop>
  404 + <hop> <from>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</from><to>&#x8bb0;&#x5f55;&#x5173;&#x8054; &#x28;&#x7b1b;&#x5361;&#x5c14;&#x8f93;&#x51fa;&#x29;</to><enabled>Y</enabled> </hop>
  405 + <hop> <from>&#x8bb0;&#x5f55;&#x5173;&#x8054; &#x28;&#x7b1b;&#x5361;&#x5c14;&#x8f93;&#x51fa;&#x29;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
  406 + <hop> <from>&#x7c7b;&#x578b;&#x4fee;&#x6b63;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo_detail</to><enabled>Y</enabled> </hop>
  407 + <hop> <from>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ec8;&#x70b9;&#x7ad9;&#xff0c;&#x5e76;&#x4f5c;&#x4e3a;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x7684;&#x8d77;&#x70b9;&#x7ad9;</from><to>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</to><enabled>Y</enabled> </hop>
  408 + <hop> <from>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</from><to>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178; 3</to><enabled>Y</enabled> </hop>
  409 + <hop> <from>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x51fa;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</from><to>&#x5339;&#x914d;&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
  410 + <hop> <from>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x8fdb;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</from><to>&#x5339;&#x914d;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
  411 + <hop> <from>&#x5339;&#x914d;&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</from><to>&#x4e0a;&#x4e0b;&#x884c;NULL&#x5224;&#x5b9a;</to><enabled>Y</enabled> </hop>
  412 + <hop> <from>&#x4e0a;&#x4e0b;&#x884c;NULL&#x5224;&#x5b9a;</from><to>&#x7c7b;&#x578b;&#x4fee;&#x6b63; 2</to><enabled>Y</enabled> </hop>
  413 + <hop> <from>&#x7c7b;&#x578b;&#x4fee;&#x6b63; 2</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo_detail 2</to><enabled>Y</enabled> </hop>
  414 + <hop> <from>&#x5339;&#x914d;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</from><to>&#x4e0a;&#x4e0b;&#x884c;&#x5224;&#x5b9a; 2</to><enabled>Y</enabled> </hop>
  415 + <hop> <from>&#x4e0a;&#x4e0b;&#x884c;&#x5224;&#x5b9a; 2</from><to>&#x7c7b;&#x578b;&#x4fee;&#x6b63; 3</to><enabled>Y</enabled> </hop>
  416 + <hop> <from>&#x7c7b;&#x578b;&#x4fee;&#x6b63; 3</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo_detail 3</to><enabled>Y</enabled> </hop>
  417 + <hop> <from>&#x67e5;&#x627e;&#x8def;&#x724c;&#x5173;&#x8054;</from><to>&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c;&#x7c7b;&#x578b;</to><enabled>Y</enabled> </hop>
  418 + <hop> <from>&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c;&#x7c7b;&#x578b;</from><to>&#x8ba1;&#x7b97;&#x73ed;&#x6b21;&#x7c7b;&#x578b;</to><enabled>Y</enabled> </hop>
  419 + </order>
  420 + <step>
  421 + <name>&#x4e0a;&#x4e0b;&#x884c;NULL&#x5224;&#x5b9a;</name>
  422 + <type>IfNull</type>
  423 + <description/>
  424 + <distribute>Y</distribute>
  425 + <custom_distribution/>
  426 + <copies>1</copies>
  427 + <partitioning>
  428 + <method>none</method>
  429 + <schema_name/>
  430 + </partitioning>
  431 + <replaceAllByValue/>
  432 + <replaceAllMask/>
  433 + <selectFields>Y</selectFields>
  434 + <selectValuesType>N</selectValuesType>
  435 + <setEmptyStringAll>N</setEmptyStringAll>
  436 + <valuetypes>
  437 + </valuetypes>
  438 + <fields>
  439 + <field>
  440 + <name>sxx</name>
  441 + <value>0</value>
  442 + <mask/>
  443 + <set_empty_string>N</set_empty_string>
  444 + </field>
  445 + </fields>
  446 + <cluster_schema/>
  447 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  448 + <xloc>335</xloc>
  449 + <yloc>938</yloc>
  450 + <draw>Y</draw>
  451 + </GUI>
  452 + </step>
  453 +
  454 + <step>
  455 + <name>&#x4e0a;&#x4e0b;&#x884c;&#x5224;&#x5b9a; 2</name>
  456 + <type>IfNull</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 + <replaceAllByValue/>
  466 + <replaceAllMask/>
  467 + <selectFields>Y</selectFields>
  468 + <selectValuesType>N</selectValuesType>
  469 + <setEmptyStringAll>N</setEmptyStringAll>
  470 + <valuetypes>
  471 + </valuetypes>
  472 + <fields>
  473 + <field>
  474 + <name>sxx2</name>
  475 + <value>0</value>
  476 + <mask/>
  477 + <set_empty_string>N</set_empty_string>
  478 + </field>
  479 + </fields>
  480 + <cluster_schema/>
  481 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  482 + <xloc>804</xloc>
  483 + <yloc>1081</yloc>
  484 + <draw>Y</draw>
  485 + </GUI>
  486 + </step>
  487 +
  488 + <step>
  489 + <name>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178;</name>
  490 + <type>ValueMapper</type>
  491 + <description/>
  492 + <distribute>Y</distribute>
  493 + <custom_distribution/>
  494 + <copies>1</copies>
  495 + <partitioning>
  496 + <method>none</method>
  497 + <schema_name/>
  498 + </partitioning>
  499 + <field_to_use>sxx</field_to_use>
  500 + <target_field>sxx_desc</target_field>
  501 + <non_match_default/>
  502 + <fields>
  503 + <field>
  504 + <source_value>0</source_value>
  505 + <target_value>&#x4e0a;&#x884c;</target_value>
  506 + </field>
  507 + <field>
  508 + <source_value>1</source_value>
  509 + <target_value>&#x4e0b;&#x884c;</target_value>
  510 + </field>
  511 + </fields>
  512 + <cluster_schema/>
  513 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  514 + <xloc>147</xloc>
  515 + <yloc>403</yloc>
  516 + <draw>Y</draw>
  517 + </GUI>
  518 + </step>
  519 +
  520 + <step>
  521 + <name>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178; 2</name>
  522 + <type>ValueMapper</type>
  523 + <description/>
  524 + <distribute>Y</distribute>
  525 + <custom_distribution/>
  526 + <copies>1</copies>
  527 + <partitioning>
  528 + <method>none</method>
  529 + <schema_name/>
  530 + </partitioning>
  531 + <field_to_use>sxx</field_to_use>
  532 + <target_field>sxx_desc</target_field>
  533 + <non_match_default/>
  534 + <fields>
  535 + <field>
  536 + <source_value>0</source_value>
  537 + <target_value>&#x4e0a;&#x884c;</target_value>
  538 + </field>
  539 + <field>
  540 + <source_value>1</source_value>
  541 + <target_value>&#x4e0b;&#x884c;</target_value>
  542 + </field>
  543 + </fields>
  544 + <cluster_schema/>
  545 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  546 + <xloc>331</xloc>
  547 + <yloc>598</yloc>
  548 + <draw>Y</draw>
  549 + </GUI>
  550 + </step>
  551 +
  552 + <step>
  553 + <name>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178; 3</name>
  554 + <type>ValueMapper</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 + <field_to_use>sxx</field_to_use>
  564 + <target_field>sxx_desc</target_field>
  565 + <non_match_default/>
  566 + <fields>
  567 + <field>
  568 + <source_value>0</source_value>
  569 + <target_value>&#x4e0a;&#x884c;</target_value>
  570 + </field>
  571 + <field>
  572 + <source_value>1</source_value>
  573 + <target_value>&#x4e0b;&#x884c;</target_value>
  574 + </field>
  575 + </fields>
  576 + <cluster_schema/>
  577 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  578 + <xloc>553</xloc>
  579 + <yloc>859</yloc>
  580 + <draw>Y</draw>
  581 + </GUI>
  582 + </step>
  583 +
  584 + <step>
  585 + <name>&#x51fa;&#x573a;&#x73ed;&#x6b21;_&#x786e;&#x5b9a;&#x7ec8;&#x70b9;&#x7ad9;&#x540d;&#x5b57;</name>
  586 + <type>ScriptValueMod</type>
  587 + <description/>
  588 + <distribute>Y</distribute>
  589 + <custom_distribution/>
  590 + <copies>1</copies>
  591 + <partitioning>
  592 + <method>none</method>
  593 + <schema_name/>
  594 + </partitioning>
  595 + <compatible>N</compatible>
  596 + <optimizationLevel>9</optimizationLevel>
  597 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  598 + <jsScript_name>Script 1</jsScript_name>
  599 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x6dfb;&#x52a0;&#x7ad9;&#x70b9;&#x6807;&#x8bc6;&#xa;var cc_groups &#x3d; qdzgroups.split&#x28;&#x22;,&#x22;&#x29;&#x3b; &#x2f;&#x2f; &#x6240;&#x6709;&#x73ed;&#x6b21;&#x8d77;&#x70b9;&#x7ad9;&#x6570;&#x7ec4;&#xa;var zdzname &#x3d; cc_groups&#x5b;gno&#x5d;&#x3b; &#x2f;&#x2f; &#x51fa;&#x573a;&#x73ed;&#x6b21;&#x7684;&#x7ec8;&#x70b9;&#x7ad9;&#x662f;&#x4e0b;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x8d77;&#x59cb;&#x7ad9;&#xa;var endZdtype &#x3d; &#x27;B&#x27;&#x3b;&#xa;&#x2f;&#x2f; var endZdtype &#x3d; &#x27;E&#x27;&#x3b;&#xa;&#xa;var destory &#x3d; 0&#x3b; &#x2f;&#x2f; &#x672a;&#x64a4;&#x9500;flag</jsScript_script>
  600 + </jsScript> </jsScripts> <fields> <field> <name>zdzname</name>
  601 + <rename>zdzname</rename>
  602 + <type>String</type>
  603 + <length>-1</length>
  604 + <precision>-1</precision>
  605 + <replace>N</replace>
  606 + </field> <field> <name>endZdtype</name>
  607 + <rename>endZdtype</rename>
  608 + <type>String</type>
  609 + <length>-1</length>
  610 + <precision>-1</precision>
  611 + <replace>N</replace>
  612 + </field> <field> <name>destory</name>
  613 + <rename>destory</rename>
  614 + <type>Integer</type>
  615 + <length>-1</length>
  616 + <precision>-1</precision>
  617 + <replace>N</replace>
  618 + </field> </fields> <cluster_schema/>
  619 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  620 + <xloc>575</xloc>
  621 + <yloc>502</yloc>
  622 + <draw>Y</draw>
  623 + </GUI>
  624 + </step>
  625 +
  626 + <step>
  627 + <name>&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</name>
  628 + <type>Dummy</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 + <cluster_schema/>
  638 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  639 + <xloc>869</xloc>
  640 + <yloc>504</yloc>
  641 + <draw>Y</draw>
  642 + </GUI>
  643 + </step>
  644 +
  645 + <step>
  646 + <name>&#x5206;&#x7ec4;&#x5404;&#x4e2a;&#x8def;&#x724c;&#x7684;&#x7ad9;</name>
  647 + <type>GroupBy</type>
  648 + <description/>
  649 + <distribute>Y</distribute>
  650 + <custom_distribution/>
  651 + <copies>1</copies>
  652 + <partitioning>
  653 + <method>none</method>
  654 + <schema_name/>
  655 + </partitioning>
  656 + <all_rows>Y</all_rows>
  657 + <ignore_aggregate>N</ignore_aggregate>
  658 + <field_ignore/>
  659 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  660 + <prefix>grp</prefix>
  661 + <add_linenr>Y</add_linenr>
  662 + <linenr_fieldname>gno</linenr_fieldname>
  663 + <give_back_row>N</give_back_row>
  664 + <group>
  665 + <field>
  666 + <name>lp</name>
  667 + </field>
  668 + </group>
  669 + <fields>
  670 + <field>
  671 + <aggregate>qdzgroups</aggregate>
  672 + <subject>qdzname</subject>
  673 + <type>CONCAT_STRING</type>
  674 + <valuefield>,</valuefield>
  675 + </field>
  676 + </fields>
  677 + <cluster_schema/>
  678 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  679 + <xloc>892</xloc>
  680 + <yloc>44</yloc>
  681 + <draw>Y</draw>
  682 + </GUI>
  683 + </step>
  684 +
  685 + <step>
  686 + <name>&#x5339;&#x914d;&#x4e0a;&#x4e0b;&#x884c;&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
  687 + <type>ScriptValueMod</type>
  688 + <description/>
  689 + <distribute>Y</distribute>
  690 + <custom_distribution/>
  691 + <copies>1</copies>
  692 + <partitioning>
  693 + <method>none</method>
  694 + <schema_name/>
  695 + </partitioning>
  696 + <compatible>N</compatible>
  697 + <optimizationLevel>9</optimizationLevel>
  698 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  699 + <jsScript_name>Script 1</jsScript_name>
  700 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var jhlc&#x3b; &#x2f;&#x2f; &#x8ba1;&#x5212;&#x91cc;&#x7a0b;&#xa;var bcsj&#x3b; &#x2f;&#x2f; &#x73ed;&#x6b21;&#x65f6;&#x95f4;&#xa;&#xa;&#x2f;&#x2f; &#x65f6;&#x95f4;&#x8303;&#x56f4;&#x6b63;&#x5219;&#x8868;&#x8fbe;&#x5f0f;&#xa;var timeRex &#x3d; &#x2f;&#x5e;&#x28;&#x5b;01&#x5d;&#x3f;&#x5b;0-9&#x5d;&#x7c;2&#x5b;0-3&#x5d;&#x29;&#x3a;&#x5b;0-5&#x5d;&#x5b;0-9&#x5d;&#x24;&#x2f;&#x3b;&#xa;&#x2f;&#x2f; &#x53d1;&#x8f66;&#x65f6;&#x95f4;&#x8f6c;&#x6362;&#x6210;&#x65e5;&#x671f;&#xa;var fcsj_hour &#x3d; str2num&#x28;sendtime_calcu.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa;var fcsj_min &#x3d; str2num&#x28;sendtime_calcu.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa;var fcsj_date &#x3d; new Date&#x28;2000,1,1,fcsj_hour,fcsj_min,0&#x29;&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x5224;&#x5b9a;&#x662f;&#x5426;&#x65e9;&#x9ad8;&#x5cf0;&#xa;var isZgf &#x3d; false&#x3b;&#xa;if &#x28;timeRex.test&#x28;early_start_time&#x29; &#x26;&#x26; timeRex.test&#x28;early_end_time&#x29; &#x26;&#x26; early_up_time &#x21;&#x3d; null &#x26;&#x26; early_down_time &#x21;&#x3d; null&#x29; &#x7b;&#xa; var early_s_hour &#x3d; str2num&#x28;early_start_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_s_min &#x3d; str2num&#x28;early_start_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_s_date &#x3d; new Date&#x28;2000,1,1,early_s_hour,early_s_min,0&#x29;&#x3b;&#xa;&#xa; var early_e_hour &#x3d; str2num&#x28;early_end_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_e_min &#x3d; str2num&#x28;early_end_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_e_date &#x3d; new Date&#x28;2000,1,1,early_e_hour,early_e_min,0&#x29;&#x3b;&#xa;&#xa; if &#x28;fcsj_date &#x3e;&#x3d; early_s_date &#x26;&#x26; fcsj_date &#x3c;&#x3d; early_e_date&#x29; &#x7b;&#xa; isZgf &#x3d; true&#x3b;&#xa; &#x7d;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x5224;&#x5b9a;&#x662f;&#x5426;&#x665a;&#x9ad8;&#x5cf0;&#xa;var isWgf &#x3d; false&#x3b;&#xa;if &#x28;timeRex.test&#x28;late_start_time&#x29; &#x26;&#x26; timeRex.test&#x28;late_end_time&#x29; &#x26;&#x26; late_up_time &#x21;&#x3d; null &#x26;&#x26; late_down_time &#x21;&#x3d; null&#x29; &#x7b;&#xa; var late_s_hour &#x3d; str2num&#x28;late_start_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_s_min &#x3d; str2num&#x28;late_start_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_s_date &#x3d; new Date&#x28;2000,1,1,late_s_hour,late_s_min,0&#x29;&#x3b;&#xa;&#xa; var late_e_hour &#x3d; str2num&#x28;late_end_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_e_min &#x3d; str2num&#x28;late_end_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_e_date &#x3d; new Date&#x28;2000,1,1,late_e_hour,late_e_min,0&#x29;&#x3b;&#xa;&#xa; if &#x28;fcsj_date &#x3e;&#x3d; late_s_date &#x26;&#x26; fcsj_date &#x3c;&#x3d; late_e_date&#x29; &#x7b;&#xa; isWgf &#x3d; true&#x3b;&#xa; &#x7d;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x5224;&#x5b9a;&#x662f;&#x5426;&#x665a;&#x9ad8;&#x5cf0;&#xa;&#xa;if &#x28;sxx &#x3d;&#x3d; 0&#x29; &#x7b; &#x2f;&#x2f; &#x4e0a;&#x884c;&#xa; if &#x28;isZgf&#x29; &#x7b;&#xa; jhlc &#x3d; up_mileage&#x3b;&#xa; bcsj &#x3d; early_up_time &#x21;&#x3d; 0 &#x3f; early_up_time &#x3a; up_travel_time&#x3b;&#xa; &#x7d; else if &#x28;isWgf&#x29; &#x7b;&#xa; jhlc &#x3d; up_mileage&#x3b;&#xa; bcsj &#x3d; late_up_time &#x21;&#x3d; 0 &#x3f; late_up_time &#x3a; up_travel_time&#x3b;&#xa; &#x7d; else &#x7b;&#xa; jhlc &#x3d; up_mileage&#x3b;&#xa; bcsj &#x3d; up_travel_time&#x3b;&#xa; &#x7d;&#xa;&#x7d; else &#x7b; &#x2f;&#x2f; sxx &#x3d;&#x3d; 1 &#x4e0b;&#x884c;&#xa; if &#x28;isZgf&#x29; &#x7b;&#xa; jhlc &#x3d; down_mileage&#x3b;&#xa; bcsj &#x3d; early_down_time &#x21;&#x3d; 0 &#x3f; early_down_time &#x3a; down_travel_time&#x3b;&#xa; &#x7d; else if &#x28;isWgf&#x29; &#x7b;&#xa; jhlc &#x3d; down_mileage&#x3b;&#xa; bcsj &#x3d; late_down_time &#x21;&#x3d; 0 &#x3f; late_down_time &#x3a; down_travel_time&#x3b;&#xa; &#x7d; else &#x7b;&#xa; jhlc &#x3d; down_mileage&#x3b;&#xa; bcsj &#x3d; down_travel_time&#x3b;&#xa; &#x7d;&#xa;&#x7d;</jsScript_script>
  701 + </jsScript> </jsScripts> <fields> <field> <name>jhlc</name>
  702 + <rename>jhlc</rename>
  703 + <type>String</type>
  704 + <length>-1</length>
  705 + <precision>-1</precision>
  706 + <replace>N</replace>
  707 + </field> <field> <name>bcsj</name>
  708 + <rename>bcsj</rename>
  709 + <type>String</type>
  710 + <length>-1</length>
  711 + <precision>-1</precision>
  712 + <replace>N</replace>
  713 + </field> </fields> <cluster_schema/>
  714 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  715 + <xloc>148</xloc>
  716 + <yloc>674</yloc>
  717 + <draw>Y</draw>
  718 + </GUI>
  719 + </step>
  720 +
  721 + <step>
  722 + <name>&#x5339;&#x914d;&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
  723 + <type>ScriptValueMod</type>
  724 + <description/>
  725 + <distribute>Y</distribute>
  726 + <custom_distribution/>
  727 + <copies>1</copies>
  728 + <partitioning>
  729 + <method>none</method>
  730 + <schema_name/>
  731 + </partitioning>
  732 + <compatible>N</compatible>
  733 + <optimizationLevel>9</optimizationLevel>
  734 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  735 + <jsScript_name>Script 1</jsScript_name>
  736 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var out_mileage&#x3b; &#x2f;&#x2f; &#x51fa;&#x573a;&#x8ba1;&#x5212;&#x91cc;&#x7a0b;&#xa;var out_time&#x3b; &#x2f;&#x2f; &#x51fa;&#x573a;&#x8ba1;&#x5212;&#x65f6;&#x95f4;&#xa;&#xa;if &#x28;sxx &#x3d;&#x3d; 0&#x29; &#x7b; &#x2f;&#x2f; &#x4e0a;&#x884c;&#xa; out_mileage &#x3d; up_out_mileage&#x3b;&#xa; out_time &#x3d; up_out_timer&#x3b;&#xa;&#x7d; else &#x7b; &#x2f;&#x2f; sxx &#x3d;&#x3d; 1 &#x4e0b;&#x884c;&#xa; out_mileage &#x3d; down_out_mileage&#x3b;&#xa; out_time &#x3d; down_out_timer&#x3b;&#xa;&#x7d;&#xa;&#xa;&#xa;&#xa;</jsScript_script>
  737 + </jsScript> </jsScripts> <fields> <field> <name>out_mileage</name>
  738 + <rename>out_mileage</rename>
  739 + <type>String</type>
  740 + <length>-1</length>
  741 + <precision>-1</precision>
  742 + <replace>N</replace>
  743 + </field> <field> <name>out_time</name>
  744 + <rename>out_time</rename>
  745 + <type>String</type>
  746 + <length>-1</length>
  747 + <precision>-1</precision>
  748 + <replace>N</replace>
  749 + </field> </fields> <cluster_schema/>
  750 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  751 + <xloc>336</xloc>
  752 + <yloc>862</yloc>
  753 + <draw>Y</draw>
  754 + </GUI>
  755 + </step>
  756 +
  757 + <step>
  758 + <name>&#x5339;&#x914d;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
  759 + <type>ScriptValueMod</type>
  760 + <description/>
  761 + <distribute>Y</distribute>
  762 + <custom_distribution/>
  763 + <copies>1</copies>
  764 + <partitioning>
  765 + <method>none</method>
  766 + <schema_name/>
  767 + </partitioning>
  768 + <compatible>N</compatible>
  769 + <optimizationLevel>9</optimizationLevel>
  770 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  771 + <jsScript_name>Script 1</jsScript_name>
  772 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var parade_mileage&#x3b; &#x2f;&#x2f; &#x8fdb;&#x573a;&#x8ba1;&#x5212;&#x91cc;&#x7a0b;&#xa;var parade_time&#x3b; &#x2f;&#x2f; &#x8fdb;&#x573a;&#x8ba1;&#x5212;&#x65f6;&#x95f4;&#xa;&#xa;if &#x28;sxx2 &#x3d;&#x3d; 0&#x29; &#x7b; &#x2f;&#x2f; &#x4e0a;&#x884c;&#xa; parade_mileage &#x3d; up_in_mileage&#x3b;&#xa; parade_time &#x3d; up_in_timer&#x3b;&#xa;&#x7d; else &#x7b; &#x2f;&#x2f; sxx &#x3d;&#x3d; 1 &#x4e0b;&#x884c;&#xa; parade_mileage &#x3d; down_in_mileage&#x3b;&#xa; parade_time &#x3d; down_in_timer&#x3b;&#xa;&#x7d;&#xa;&#xa;&#xa;&#xa;</jsScript_script>
  773 + </jsScript> </jsScripts> <fields> <field> <name>parade_mileage</name>
  774 + <rename>parade_mileage</rename>
  775 + <type>String</type>
  776 + <length>-1</length>
  777 + <precision>-1</precision>
  778 + <replace>N</replace>
  779 + </field> <field> <name>parade_time</name>
  780 + <rename>parade_time</rename>
  781 + <type>String</type>
  782 + <length>-1</length>
  783 + <precision>-1</precision>
  784 + <replace>N</replace>
  785 + </field> </fields> <cluster_schema/>
  786 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  787 + <xloc>726</xloc>
  788 + <yloc>1005</yloc>
  789 + <draw>Y</draw>
  790 + </GUI>
  791 + </step>
  792 +
  793 + <step>
  794 + <name>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;&#xff0c;&#x7ebf;&#x8def;&#x540d;&#x5b57;&#xff0c;&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</name>
  795 + <type>DataGrid</type>
  796 + <description/>
  797 + <distribute>Y</distribute>
  798 + <custom_distribution/>
  799 + <copies>1</copies>
  800 + <partitioning>
  801 + <method>none</method>
  802 + <schema_name/>
  803 + </partitioning>
  804 + <fields>
  805 + </fields>
  806 + <data>
  807 + <line> </line>
  808 + </data>
  809 + <cluster_schema/>
  810 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  811 + <xloc>110</xloc>
  812 + <yloc>133</yloc>
  813 + <draw>Y</draw>
  814 + </GUI>
  815 + </step>
  816 +
  817 + <step>
  818 + <name>&#x5904;&#x7406;&#x6570;&#x636e;</name>
  819 + <type>ScriptValueMod</type>
  820 + <description/>
  821 + <distribute>Y</distribute>
  822 + <custom_distribution/>
  823 + <copies>1</copies>
  824 + <partitioning>
  825 + <method>none</method>
  826 + <schema_name/>
  827 + </partitioning>
  828 + <compatible>N</compatible>
  829 + <optimizationLevel>9</optimizationLevel>
  830 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  831 + <jsScript_name>Script 1</jsScript_name>
  832 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x4f7f;&#x7528;&#x6b63;&#x5219;&#x8868;&#x8fbe;&#x5f0f;&#x53bb;&#x9664;&#x7ad9;&#x70b9;&#x540d;&#x79f0;&#x53f3;&#x4fa7;&#x591a;&#x4f59;&#x7684;&#x6570;&#x5b57;&#xa;qdzname &#x3d; qdzname.replace&#x28;&#x2f;&#x28;&#x5c;d&#x2b;&#x24;&#x29;&#x2f;g,&#x27;&#x27;&#x29;&#x3b;&#xa;if &#x28;qdzname &#x21;&#x3d; &#x22;&#x51fa;&#x573a;&#x22; &#x26;&#x26; qdzname &#x21;&#x3d; &#x22;&#x8fdb;&#x573a;&#x22;&#x29; &#x7b;&#xa; qdzname &#x3d; qdzname &#x2b; &#x22;&#x25;&#x22;&#x3b; &#x2f;&#x2f; &#x6a21;&#x7cca;&#x5339;&#x914d;&#x6807;&#x8bc6;&#x7b26;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; sendtime&#x5904;&#x7406;&#xff0c;hhmm&#xff0c;hh&#x3a;mm&#xff0c;hh,mm&#xa;var sendtime_calcu &#x3d; sendtime.replace&#x28;&#x2f;&#x5c;s&#x2f;g, &#x22;&#x22;&#x29;&#x3b;&#xa;if &#x28;sendtime.length &#x3d;&#x3d; 5&#x29; &#x7b; &#x2f;&#x2f; &#x6700;&#x957f;&#x683c;&#x5f0f;&#xff0c;&#x5305;&#x62ec;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x7edf;&#x4e00;&#x628a;&#x5206;&#x9694;&#x7b26;&#x66ff;&#x6362;&#x6210;&#x5192;&#x53f7;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 2&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;3, 2&#x29;&#x3b;&#xa;&#x7d; else if &#x28;sendtime.length &#x3d;&#x3d; 4&#x29; &#x7b;&#xa; if &#x28;sendtime.indexOf&#x28;&#x22;&#x3a;&#x22;&#x29; &#x3e; 0&#x29; &#x7b; &#x2f;&#x2f; &#x5192;&#x53f7;&#x5206;&#x9694;&#xff0c;&#x65e0;&#x9700;&#x4fee;&#x6539;&#xa; sendtime_calcu &#x3d; sendtime&#x3b;&#xa; &#x7d; else if &#x28;sendtime.indexOf&#x28;&#x22;,&#x22;&#x29; &#x3e; 0&#x29; &#x7b; &#x2f;&#x2f; &#x9017;&#x53f7;&#x5206;&#x9694;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 1&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;2, 2&#x29;&#x3b;&#xa; &#x7d; else &#x7b; &#x2f;&#x2f; &#x65e0;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 2&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;2, 2&#x29;&#x3b;&#xa; &#x7d;&#xa;&#x7d; else if &#x28;sendtime.length &#x3d;&#x3d; 3&#x29; &#x7b; &#x2f;&#x2f; &#x65e0;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 1&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;1, 2&#x29;&#x3b;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x5168;&#x90e8;&#x4fee;&#x6b63;&#x5b8c;&#x6bd5;&#x540e;&#xff0c;&#x5982;&#x679c;&#x957f;&#x5ea6;&#x4e0d;&#x662f;5&#xff0c;&#x524d;&#x9762;&#x8865;0&#xa;if &#x28;sendtime_calcu.length &#x21;&#x3d; 5&#x29; &#x7b;&#xa; sendtime_calcu &#x3d; &#x22;0&#x22; &#x2b; sendtime_calcu&#x3b;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;&#x5206;&#x73ed;&#xa;var isfb &#x3d; 0&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;&#x505c;&#x9a76;&#xa;var ists &#x3d; 0&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;isCanceled&#xa;var iscanceled &#x3d; 0&#x3b;</jsScript_script>
  833 + </jsScript> </jsScripts> <fields> <field> <name>qdzname</name>
  834 + <rename>qdzname</rename>
  835 + <type>String</type>
  836 + <length>-1</length>
  837 + <precision>-1</precision>
  838 + <replace>Y</replace>
  839 + </field> <field> <name>isfb</name>
  840 + <rename>isfb</rename>
  841 + <type>Integer</type>
  842 + <length>-1</length>
  843 + <precision>-1</precision>
  844 + <replace>N</replace>
  845 + </field> <field> <name>iscanceled</name>
  846 + <rename>iscanceled</rename>
  847 + <type>Integer</type>
  848 + <length>-1</length>
  849 + <precision>-1</precision>
  850 + <replace>N</replace>
  851 + </field> <field> <name>sendtime_calcu</name>
  852 + <rename>sendtime_calcu</rename>
  853 + <type>String</type>
  854 + <length>-1</length>
  855 + <precision>-1</precision>
  856 + <replace>N</replace>
  857 + </field> <field> <name>ists</name>
  858 + <rename>ists</rename>
  859 + <type>Integer</type>
  860 + <length>-1</length>
  861 + <precision>-1</precision>
  862 + <replace>N</replace>
  863 + </field> </fields> <cluster_schema/>
  864 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  865 + <xloc>788</xloc>
  866 + <yloc>44</yloc>
  867 + <draw>Y</draw>
  868 + </GUI>
  869 + </step>
  870 +
  871 + <step>
  872 + <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
  873 + <type>SelectValues</type>
  874 + <description/>
  875 + <distribute>Y</distribute>
  876 + <custom_distribution/>
  877 + <copies>1</copies>
  878 + <partitioning>
  879 + <method>none</method>
  880 + <schema_name/>
  881 + </partitioning>
  882 + <fields> <field> <name>&#x8def;&#x724c;</name>
  883 + <rename>lp</rename>
  884 + <length>-2</length>
  885 + <precision>-2</precision>
  886 + </field> <field> <name>&#x7ad9;&#x70b9;&#x540d;&#x79f0;</name>
  887 + <rename>qdzname</rename>
  888 + <length>-2</length>
  889 + <precision>-2</precision>
  890 + </field> <field> <name>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</name>
  891 + <rename>sendtime</rename>
  892 + <length>-2</length>
  893 + <precision>-2</precision>
  894 + </field> <select_unspecified>Y</select_unspecified>
  895 + </fields> <cluster_schema/>
  896 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  897 + <xloc>444</xloc>
  898 + <yloc>131</yloc>
  899 + <draw>Y</draw>
  900 + </GUI>
  901 + </step>
  902 +
  903 + <step>
  904 + <name>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;1</name>
  905 + <type>FilterRows</type>
  906 + <description/>
  907 + <distribute>Y</distribute>
  908 + <custom_distribution/>
  909 + <copies>1</copies>
  910 + <partitioning>
  911 + <method>none</method>
  912 + <schema_name/>
  913 + </partitioning>
  914 +<send_true_to>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6570;&#x636e;</send_true_to>
  915 +<send_false_to>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</send_false_to>
  916 + <compare>
  917 +<condition>
  918 + <negated>N</negated>
  919 + <leftvalue>bctype</leftvalue>
  920 + <function>&#x3d;</function>
  921 + <rightvalue/>
  922 + <value><name>constant</name><type>String</type><text>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</text><length>-1</length><precision>-1</precision><isnull>N</isnull><mask/></value> </condition>
  923 + </compare>
  924 + <cluster_schema/>
  925 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  926 + <xloc>860</xloc>
  927 + <yloc>401</yloc>
  928 + <draw>Y</draw>
  929 + </GUI>
  930 + </step>
  931 +
  932 + <step>
  933 + <name>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</name>
  934 + <type>FilterRows</type>
  935 + <description/>
  936 + <distribute>Y</distribute>
  937 + <custom_distribution/>
  938 + <copies>1</copies>
  939 + <partitioning>
  940 + <method>none</method>
  941 + <schema_name/>
  942 + </partitioning>
  943 +<send_true_to>&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</send_true_to>
  944 +<send_false_to>&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</send_false_to>
  945 + <compare>
  946 +<condition>
  947 + <negated>N</negated>
  948 + <leftvalue>bctype</leftvalue>
  949 + <function>&#x3d;</function>
  950 + <rightvalue/>
  951 + <value><name>constant</name><type>String</type><text>&#x51fa;&#x573a;</text><length>-1</length><precision>-1</precision><isnull>N</isnull><mask/></value> </condition>
  952 + </compare>
  953 + <cluster_schema/>
  954 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  955 + <xloc>995</xloc>
  956 + <yloc>503</yloc>
  957 + <draw>Y</draw>
  958 + </GUI>
  959 + </step>
  960 +
  961 + <step>
  962 + <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo_detail</name>
  963 + <type>InsertUpdate</type>
  964 + <description/>
  965 + <distribute>Y</distribute>
  966 + <custom_distribution/>
  967 + <copies>1</copies>
  968 + <partitioning>
  969 + <method>none</method>
  970 + <schema_name/>
  971 + </partitioning>
  972 + <connection>bus_control_variable</connection>
  973 + <commit>100</commit>
  974 + <update_bypassed>N</update_bypassed>
  975 + <lookup>
  976 + <schema/>
  977 + <table>bsth_c_s_ttinfo_detail</table>
  978 + <key>
  979 + <name>xlid</name>
  980 + <field>xl</field>
  981 + <condition>&#x3d;</condition>
  982 + <name2/>
  983 + </key>
  984 + <key>
  985 + <name>ttid</name>
  986 + <field>ttinfo</field>
  987 + <condition>&#x3d;</condition>
  988 + <name2/>
  989 + </key>
  990 + <key>
  991 + <name>lpid</name>
  992 + <field>lp</field>
  993 + <condition>&#x3d;</condition>
  994 + <name2/>
  995 + </key>
  996 + <key>
  997 + <name>fcno</name>
  998 + <field>fcno</field>
  999 + <condition>&#x3d;</condition>
  1000 + <name2/>
  1001 + </key>
  1002 + <key>
  1003 + <name>bcs</name>
  1004 + <field>bcs</field>
  1005 + <condition>&#x3d;</condition>
  1006 + <name2/>
  1007 + </key>
  1008 + <value>
  1009 + <name>lp</name>
  1010 + <rename>lpid</rename>
  1011 + <update>Y</update>
  1012 + </value>
  1013 + <value>
  1014 + <name>bc_type</name>
  1015 + <rename>bctype_code</rename>
  1016 + <update>Y</update>
  1017 + </value>
  1018 + <value>
  1019 + <name>bcs</name>
  1020 + <rename>bcs</rename>
  1021 + <update>Y</update>
  1022 + </value>
  1023 + <value>
  1024 + <name>bcsj</name>
  1025 + <rename>bcsj</rename>
  1026 + <update>Y</update>
  1027 + </value>
  1028 + <value>
  1029 + <name>fcno</name>
  1030 + <rename>fcno</rename>
  1031 + <update>Y</update>
  1032 + </value>
  1033 + <value>
  1034 + <name>jhlc</name>
  1035 + <rename>jhlc</rename>
  1036 + <update>Y</update>
  1037 + </value>
  1038 + <value>
  1039 + <name>fcsj</name>
  1040 + <rename>sendtime_calcu</rename>
  1041 + <update>Y</update>
  1042 + </value>
  1043 + <value>
  1044 + <name>ttinfo</name>
  1045 + <rename>ttid</rename>
  1046 + <update>Y</update>
  1047 + </value>
  1048 + <value>
  1049 + <name>xl</name>
  1050 + <rename>xlid</rename>
  1051 + <update>Y</update>
  1052 + </value>
  1053 + <value>
  1054 + <name>qdz</name>
  1055 + <rename>qdzid</rename>
  1056 + <update>Y</update>
  1057 + </value>
  1058 + <value>
  1059 + <name>zdz</name>
  1060 + <rename>zdzid</rename>
  1061 + <update>Y</update>
  1062 + </value>
  1063 + <value>
  1064 + <name>xl_dir</name>
  1065 + <rename>sxx</rename>
  1066 + <update>Y</update>
  1067 + </value>
  1068 + <value>
  1069 + <name>isfb</name>
  1070 + <rename>isfb</rename>
  1071 + <update>Y</update>
  1072 + </value>
  1073 + <value>
  1074 + <name>qdz_code</name>
  1075 + <rename>qdzcode</rename>
  1076 + <update>Y</update>
  1077 + </value>
  1078 + <value>
  1079 + <name>qdz_name</name>
  1080 + <rename>qdzname_</rename>
  1081 + <update>Y</update>
  1082 + </value>
  1083 + <value>
  1084 + <name>zdz_code</name>
  1085 + <rename>zdzcode</rename>
  1086 + <update>Y</update>
  1087 + </value>
  1088 + <value>
  1089 + <name>zdz_name</name>
  1090 + <rename>zdzname</rename>
  1091 + <update>Y</update>
  1092 + </value>
  1093 + <value>
  1094 + <name>ists</name>
  1095 + <rename>ists</rename>
  1096 + <update>Y</update>
  1097 + </value>
  1098 + </lookup>
  1099 + <cluster_schema/>
  1100 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1101 + <xloc>143</xloc>
  1102 + <yloc>860</yloc>
  1103 + <draw>Y</draw>
  1104 + </GUI>
  1105 + </step>
  1106 +
  1107 + <step>
  1108 + <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo_detail 2</name>
  1109 + <type>InsertUpdate</type>
  1110 + <description/>
  1111 + <distribute>Y</distribute>
  1112 + <custom_distribution/>
  1113 + <copies>1</copies>
  1114 + <partitioning>
  1115 + <method>none</method>
  1116 + <schema_name/>
  1117 + </partitioning>
  1118 + <connection>bus_control_variable</connection>
  1119 + <commit>100</commit>
  1120 + <update_bypassed>N</update_bypassed>
  1121 + <lookup>
  1122 + <schema/>
  1123 + <table>bsth_c_s_ttinfo_detail</table>
  1124 + <key>
  1125 + <name>xlid</name>
  1126 + <field>xl</field>
  1127 + <condition>&#x3d;</condition>
  1128 + <name2/>
  1129 + </key>
  1130 + <key>
  1131 + <name>ttid</name>
  1132 + <field>ttinfo</field>
  1133 + <condition>&#x3d;</condition>
  1134 + <name2/>
  1135 + </key>
  1136 + <key>
  1137 + <name>lpid</name>
  1138 + <field>lp</field>
  1139 + <condition>&#x3d;</condition>
  1140 + <name2/>
  1141 + </key>
  1142 + <key>
  1143 + <name>fcno</name>
  1144 + <field>fcno</field>
  1145 + <condition>&#x3d;</condition>
  1146 + <name2/>
  1147 + </key>
  1148 + <key>
  1149 + <name>bcs</name>
  1150 + <field>bcs</field>
  1151 + <condition>&#x3d;</condition>
  1152 + <name2/>
  1153 + </key>
  1154 + <value>
  1155 + <name>tcc</name>
  1156 + <rename>qdzid</rename>
  1157 + <update>Y</update>
  1158 + </value>
  1159 + <value>
  1160 + <name>zdz</name>
  1161 + <rename>zdzid</rename>
  1162 + <update>Y</update>
  1163 + </value>
  1164 + <value>
  1165 + <name>xl</name>
  1166 + <rename>xlid</rename>
  1167 + <update>Y</update>
  1168 + </value>
  1169 + <value>
  1170 + <name>ttinfo</name>
  1171 + <rename>ttid</rename>
  1172 + <update>Y</update>
  1173 + </value>
  1174 + <value>
  1175 + <name>xl_dir</name>
  1176 + <rename>sxx</rename>
  1177 + <update>Y</update>
  1178 + </value>
  1179 + <value>
  1180 + <name>lp</name>
  1181 + <rename>lpid</rename>
  1182 + <update>Y</update>
  1183 + </value>
  1184 + <value>
  1185 + <name>jhlc</name>
  1186 + <rename>out_mileage</rename>
  1187 + <update>Y</update>
  1188 + </value>
  1189 + <value>
  1190 + <name>fcsj</name>
  1191 + <rename>sendtime_calcu</rename>
  1192 + <update>Y</update>
  1193 + </value>
  1194 + <value>
  1195 + <name>bcsj</name>
  1196 + <rename>out_time</rename>
  1197 + <update>Y</update>
  1198 + </value>
  1199 + <value>
  1200 + <name>bcs</name>
  1201 + <rename>bcs</rename>
  1202 + <update>Y</update>
  1203 + </value>
  1204 + <value>
  1205 + <name>fcno</name>
  1206 + <rename>fcno</rename>
  1207 + <update>Y</update>
  1208 + </value>
  1209 + <value>
  1210 + <name>bc_type</name>
  1211 + <rename>bctype_code</rename>
  1212 + <update>Y</update>
  1213 + </value>
  1214 + <value>
  1215 + <name>isfb</name>
  1216 + <rename>isfb</rename>
  1217 + <update>Y</update>
  1218 + </value>
  1219 + <value>
  1220 + <name>qdz_code</name>
  1221 + <rename>qdzcode</rename>
  1222 + <update>Y</update>
  1223 + </value>
  1224 + <value>
  1225 + <name>qdz_name</name>
  1226 + <rename>tn</rename>
  1227 + <update>Y</update>
  1228 + </value>
  1229 + <value>
  1230 + <name>zdz_code</name>
  1231 + <rename>zdzcode</rename>
  1232 + <update>Y</update>
  1233 + </value>
  1234 + <value>
  1235 + <name>zdz_name</name>
  1236 + <rename>zdzname_</rename>
  1237 + <update>Y</update>
  1238 + </value>
  1239 + <value>
  1240 + <name>ists</name>
  1241 + <rename>ists</rename>
  1242 + <update>Y</update>
  1243 + </value>
  1244 + </lookup>
  1245 + <cluster_schema/>
  1246 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1247 + <xloc>340</xloc>
  1248 + <yloc>1087</yloc>
  1249 + <draw>Y</draw>
  1250 + </GUI>
  1251 + </step>
  1252 +
  1253 + <step>
  1254 + <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo_detail 3</name>
  1255 + <type>InsertUpdate</type>
  1256 + <description/>
  1257 + <distribute>Y</distribute>
  1258 + <custom_distribution/>
  1259 + <copies>1</copies>
  1260 + <partitioning>
  1261 + <method>none</method>
  1262 + <schema_name/>
  1263 + </partitioning>
  1264 + <connection>bus_control_variable</connection>
  1265 + <commit>100</commit>
  1266 + <update_bypassed>N</update_bypassed>
  1267 + <lookup>
  1268 + <schema/>
  1269 + <table>bsth_c_s_ttinfo_detail</table>
  1270 + <key>
  1271 + <name>xlid</name>
  1272 + <field>xl</field>
  1273 + <condition>&#x3d;</condition>
  1274 + <name2/>
  1275 + </key>
  1276 + <key>
  1277 + <name>ttid</name>
  1278 + <field>ttinfo</field>
  1279 + <condition>&#x3d;</condition>
  1280 + <name2/>
  1281 + </key>
  1282 + <key>
  1283 + <name>lpid</name>
  1284 + <field>lp</field>
  1285 + <condition>&#x3d;</condition>
  1286 + <name2/>
  1287 + </key>
  1288 + <key>
  1289 + <name>fcno</name>
  1290 + <field>fcno</field>
  1291 + <condition>&#x3d;</condition>
  1292 + <name2/>
  1293 + </key>
  1294 + <key>
  1295 + <name>bcs</name>
  1296 + <field>bcs</field>
  1297 + <condition>&#x3d;</condition>
  1298 + <name2/>
  1299 + </key>
  1300 + <value>
  1301 + <name>fcno</name>
  1302 + <rename>fcno</rename>
  1303 + <update>Y</update>
  1304 + </value>
  1305 + <value>
  1306 + <name>bcs</name>
  1307 + <rename>bcs</rename>
  1308 + <update>Y</update>
  1309 + </value>
  1310 + <value>
  1311 + <name>xl</name>
  1312 + <rename>xlid</rename>
  1313 + <update>Y</update>
  1314 + </value>
  1315 + <value>
  1316 + <name>ttinfo</name>
  1317 + <rename>ttid</rename>
  1318 + <update>Y</update>
  1319 + </value>
  1320 + <value>
  1321 + <name>lp</name>
  1322 + <rename>lpid</rename>
  1323 + <update>Y</update>
  1324 + </value>
  1325 + <value>
  1326 + <name>bc_type</name>
  1327 + <rename>bctype_code</rename>
  1328 + <update>Y</update>
  1329 + </value>
  1330 + <value>
  1331 + <name>bcsj</name>
  1332 + <rename>parade_time</rename>
  1333 + <update>Y</update>
  1334 + </value>
  1335 + <value>
  1336 + <name>jhlc</name>
  1337 + <rename>parade_mileage</rename>
  1338 + <update>Y</update>
  1339 + </value>
  1340 + <value>
  1341 + <name>fcsj</name>
  1342 + <rename>sendtime_calcu</rename>
  1343 + <update>Y</update>
  1344 + </value>
  1345 + <value>
  1346 + <name>xl_dir</name>
  1347 + <rename>sxx2</rename>
  1348 + <update>Y</update>
  1349 + </value>
  1350 + <value>
  1351 + <name>qdz</name>
  1352 + <rename>qdzid</rename>
  1353 + <update>Y</update>
  1354 + </value>
  1355 + <value>
  1356 + <name>tcc</name>
  1357 + <rename>zdzid</rename>
  1358 + <update>Y</update>
  1359 + </value>
  1360 + <value>
  1361 + <name>isfb</name>
  1362 + <rename>isfb</rename>
  1363 + <update>Y</update>
  1364 + </value>
  1365 + <value>
  1366 + <name>qdz_code</name>
  1367 + <rename>qdzcode</rename>
  1368 + <update>Y</update>
  1369 + </value>
  1370 + <value>
  1371 + <name>qdz_name</name>
  1372 + <rename>qname</rename>
  1373 + <update>Y</update>
  1374 + </value>
  1375 + <value>
  1376 + <name>zdz_code</name>
  1377 + <rename>zdzcode</rename>
  1378 + <update>Y</update>
  1379 + </value>
  1380 + <value>
  1381 + <name>zdz_name</name>
  1382 + <rename>tn</rename>
  1383 + <update>Y</update>
  1384 + </value>
  1385 + <value>
  1386 + <name>ists</name>
  1387 + <rename>ists</rename>
  1388 + <update>Y</update>
  1389 + </value>
  1390 + </lookup>
  1391 + <cluster_schema/>
  1392 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1393 + <xloc>845</xloc>
  1394 + <yloc>899</yloc>
  1395 + <draw>Y</draw>
  1396 + </GUI>
  1397 + </step>
  1398 +
  1399 + <step>
  1400 + <name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</name>
  1401 + <type>ExcelInput</type>
  1402 + <description/>
  1403 + <distribute>N</distribute>
  1404 + <custom_distribution/>
  1405 + <copies>1</copies>
  1406 + <partitioning>
  1407 + <method>none</method>
  1408 + <schema_name/>
  1409 + </partitioning>
  1410 + <header>Y</header>
  1411 + <noempty>Y</noempty>
  1412 + <stoponempty>N</stoponempty>
  1413 + <filefield/>
  1414 + <sheetfield/>
  1415 + <sheetrownumfield/>
  1416 + <rownumfield/>
  1417 + <sheetfield/>
  1418 + <filefield/>
  1419 + <limit>0</limit>
  1420 + <encoding/>
  1421 + <add_to_result_filenames>Y</add_to_result_filenames>
  1422 + <accept_filenames>N</accept_filenames>
  1423 + <accept_field/>
  1424 + <accept_stepname/>
  1425 + <file>
  1426 + <name/>
  1427 + <filemask/>
  1428 + <exclude_filemask/>
  1429 + <file_required>N</file_required>
  1430 + <include_subfolders>N</include_subfolders>
  1431 + </file>
  1432 + <fields>
  1433 + </fields>
  1434 + <sheets>
  1435 + <sheet>
  1436 + <name/>
  1437 + <startrow>0</startrow>
  1438 + <startcol>0</startcol>
  1439 + </sheet>
  1440 + </sheets>
  1441 + <strict_types>N</strict_types>
  1442 + <error_ignored>N</error_ignored>
  1443 + <error_line_skipped>N</error_line_skipped>
  1444 + <bad_line_files_destination_directory/>
  1445 + <bad_line_files_extension>warning</bad_line_files_extension>
  1446 + <error_line_files_destination_directory/>
  1447 + <error_line_files_extension>error</error_line_files_extension>
  1448 + <line_number_files_destination_directory/>
  1449 + <line_number_files_extension>line</line_number_files_extension>
  1450 + <shortFileFieldName/>
  1451 + <pathFieldName/>
  1452 + <hiddenFieldName/>
  1453 + <lastModificationTimeFieldName/>
  1454 + <uriNameFieldName/>
  1455 + <rootUriNameFieldName/>
  1456 + <extensionFieldName/>
  1457 + <sizeFieldName/>
  1458 + <spreadsheet_type>JXL</spreadsheet_type>
  1459 + <cluster_schema/>
  1460 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1461 + <xloc>112</xloc>
  1462 + <yloc>44</yloc>
  1463 + <draw>Y</draw>
  1464 + </GUI>
  1465 + </step>
  1466 +
  1467 + <step>
  1468 + <name>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;1</name>
  1469 + <type>DBLookup</type>
  1470 + <description/>
  1471 + <distribute>Y</distribute>
  1472 + <custom_distribution/>
  1473 + <copies>1</copies>
  1474 + <partitioning>
  1475 + <method>none</method>
  1476 + <schema_name/>
  1477 + </partitioning>
  1478 + <connection>bus_control_variable</connection>
  1479 + <cache>N</cache>
  1480 + <cache_load_all>N</cache_load_all>
  1481 + <cache_size>0</cache_size>
  1482 + <lookup>
  1483 + <schema/>
  1484 + <table>bsth_c_car_park</table>
  1485 + <orderby/>
  1486 + <fail_on_multiple>N</fail_on_multiple>
  1487 + <eat_row_on_failure>N</eat_row_on_failure>
  1488 + <key>
  1489 + <name>tccname_</name>
  1490 + <field>park_name</field>
  1491 + <condition>&#x3d;</condition>
  1492 + <name2/>
  1493 + </key>
  1494 + <value>
  1495 + <name>id</name>
  1496 + <rename>qdzid</rename>
  1497 + <default/>
  1498 + <type>Integer</type>
  1499 + </value>
  1500 + <value>
  1501 + <name>park_code</name>
  1502 + <rename>qdzcode</rename>
  1503 + <default/>
  1504 + <type>String</type>
  1505 + </value>
  1506 + <value>
  1507 + <name>park_name</name>
  1508 + <rename>tn</rename>
  1509 + <default/>
  1510 + <type>String</type>
  1511 + </value>
  1512 + </lookup>
  1513 + <cluster_schema/>
  1514 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1515 + <xloc>755</xloc>
  1516 + <yloc>504</yloc>
  1517 + <draw>Y</draw>
  1518 + </GUI>
  1519 + </step>
  1520 +
  1521 + <step>
  1522 + <name>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;2</name>
  1523 + <type>DBLookup</type>
  1524 + <description/>
  1525 + <distribute>Y</distribute>
  1526 + <custom_distribution/>
  1527 + <copies>1</copies>
  1528 + <partitioning>
  1529 + <method>none</method>
  1530 + <schema_name/>
  1531 + </partitioning>
  1532 + <connection>bus_control_variable</connection>
  1533 + <cache>N</cache>
  1534 + <cache_load_all>N</cache_load_all>
  1535 + <cache_size>0</cache_size>
  1536 + <lookup>
  1537 + <schema/>
  1538 + <table>bsth_c_car_park</table>
  1539 + <orderby/>
  1540 + <fail_on_multiple>N</fail_on_multiple>
  1541 + <eat_row_on_failure>N</eat_row_on_failure>
  1542 + <key>
  1543 + <name>tccname_</name>
  1544 + <field>park_name</field>
  1545 + <condition>&#x3d;</condition>
  1546 + <name2/>
  1547 + </key>
  1548 + <value>
  1549 + <name>id</name>
  1550 + <rename>zdzid</rename>
  1551 + <default/>
  1552 + <type>Integer</type>
  1553 + </value>
  1554 + <value>
  1555 + <name>park_code</name>
  1556 + <rename>zdzcode</rename>
  1557 + <default/>
  1558 + <type>String</type>
  1559 + </value>
  1560 + <value>
  1561 + <name>park_name</name>
  1562 + <rename>tn</rename>
  1563 + <default/>
  1564 + <type>String</type>
  1565 + </value>
  1566 + </lookup>
  1567 + <cluster_schema/>
  1568 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1569 + <xloc>887</xloc>
  1570 + <yloc>608</yloc>
  1571 + <draw>Y</draw>
  1572 + </GUI>
  1573 + </step>
  1574 +
  1575 + <step>
  1576 + <name>&#x67e5;&#x627e;&#x51fa;&#x573a;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</name>
  1577 + <type>DBLookup</type>
  1578 + <description/>
  1579 + <distribute>Y</distribute>
  1580 + <custom_distribution/>
  1581 + <copies>1</copies>
  1582 + <partitioning>
  1583 + <method>none</method>
  1584 + <schema_name/>
  1585 + </partitioning>
  1586 + <connection>bus_control_variable</connection>
  1587 + <cache>N</cache>
  1588 + <cache_load_all>N</cache_load_all>
  1589 + <cache_size>0</cache_size>
  1590 + <lookup>
  1591 + <schema/>
  1592 + <table>bsth_c_ls_stationroute</table>
  1593 + <orderby/>
  1594 + <fail_on_multiple>N</fail_on_multiple>
  1595 + <eat_row_on_failure>N</eat_row_on_failure>
  1596 + <key>
  1597 + <name>xlid</name>
  1598 + <field>line</field>
  1599 + <condition>&#x3d;</condition>
  1600 + <name2/>
  1601 + </key>
  1602 + <key>
  1603 + <name>version</name>
  1604 + <field>versions</field>
  1605 + <condition>&#x3d;</condition>
  1606 + <name2/>
  1607 + </key>
  1608 + <key>
  1609 + <name>zdzname</name>
  1610 + <field>station_name</field>
  1611 + <condition>LIKE</condition>
  1612 + <name2/>
  1613 + </key>
  1614 + <key>
  1615 + <name>endZdtype</name>
  1616 + <field>station_mark</field>
  1617 + <condition>&#x3d;</condition>
  1618 + <name2/>
  1619 + </key>
  1620 + <key>
  1621 + <name>destory</name>
  1622 + <field>destroy</field>
  1623 + <condition>&#x3d;</condition>
  1624 + <name2/>
  1625 + </key>
  1626 + <value>
  1627 + <name>station</name>
  1628 + <rename>zdzid</rename>
  1629 + <default/>
  1630 + <type>Integer</type>
  1631 + </value>
  1632 + <value>
  1633 + <name>directions</name>
  1634 + <rename>sxx</rename>
  1635 + <default/>
  1636 + <type>Integer</type>
  1637 + </value>
  1638 + <value>
  1639 + <name>station_code</name>
  1640 + <rename>zdzcode</rename>
  1641 + <default/>
  1642 + <type>String</type>
  1643 + </value>
  1644 + <value>
  1645 + <name>station_name</name>
  1646 + <rename>zdzname_</rename>
  1647 + <default/>
  1648 + <type>String</type>
  1649 + </value>
  1650 + </lookup>
  1651 + <cluster_schema/>
  1652 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1653 + <xloc>329</xloc>
  1654 + <yloc>505</yloc>
  1655 + <draw>Y</draw>
  1656 + </GUI>
  1657 + </step>
  1658 +
  1659 + <step>
  1660 + <name>&#x67e5;&#x627e;&#x6240;&#x6709;&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
  1661 + <type>DBLookup</type>
  1662 + <description/>
  1663 + <distribute>Y</distribute>
  1664 + <custom_distribution/>
  1665 + <copies>1</copies>
  1666 + <partitioning>
  1667 + <method>none</method>
  1668 + <schema_name/>
  1669 + </partitioning>
  1670 + <connection>bus_control_variable</connection>
  1671 + <cache>N</cache>
  1672 + <cache_load_all>N</cache_load_all>
  1673 + <cache_size>0</cache_size>
  1674 + <lookup>
  1675 + <schema/>
  1676 + <table>bsth_c_line_information</table>
  1677 + <orderby/>
  1678 + <fail_on_multiple>N</fail_on_multiple>
  1679 + <eat_row_on_failure>N</eat_row_on_failure>
  1680 + <key>
  1681 + <name>xlid</name>
  1682 + <field>line</field>
  1683 + <condition>&#x3d;</condition>
  1684 + <name2/>
  1685 + </key>
  1686 + <value>
  1687 + <name>up_mileage</name>
  1688 + <rename>up_mileage</rename>
  1689 + <default/>
  1690 + <type>Number</type>
  1691 + </value>
  1692 + <value>
  1693 + <name>down_mileage</name>
  1694 + <rename>down_mileage</rename>
  1695 + <default/>
  1696 + <type>Number</type>
  1697 + </value>
  1698 + <value>
  1699 + <name>up_travel_time</name>
  1700 + <rename>up_travel_time</rename>
  1701 + <default/>
  1702 + <type>Number</type>
  1703 + </value>
  1704 + <value>
  1705 + <name>down_travel_time</name>
  1706 + <rename>down_travel_time</rename>
  1707 + <default/>
  1708 + <type>Number</type>
  1709 + </value>
  1710 + <value>
  1711 + <name>early_start_time</name>
  1712 + <rename>early_start_time</rename>
  1713 + <default/>
  1714 + <type>String</type>
  1715 + </value>
  1716 + <value>
  1717 + <name>early_end_time</name>
  1718 + <rename>early_end_time</rename>
  1719 + <default/>
  1720 + <type>String</type>
  1721 + </value>
  1722 + <value>
  1723 + <name>early_up_time</name>
  1724 + <rename>early_up_time</rename>
  1725 + <default/>
  1726 + <type>Number</type>
  1727 + </value>
  1728 + <value>
  1729 + <name>early_down_time</name>
  1730 + <rename>early_down_time</rename>
  1731 + <default/>
  1732 + <type>Number</type>
  1733 + </value>
  1734 + <value>
  1735 + <name>late_start_time</name>
  1736 + <rename>late_start_time</rename>
  1737 + <default/>
  1738 + <type>String</type>
  1739 + </value>
  1740 + <value>
  1741 + <name>late_end_time</name>
  1742 + <rename>late_end_time</rename>
  1743 + <default/>
  1744 + <type>String</type>
  1745 + </value>
  1746 + <value>
  1747 + <name>late_up_time</name>
  1748 + <rename>late_up_time</rename>
  1749 + <default/>
  1750 + <type>Number</type>
  1751 + </value>
  1752 + <value>
  1753 + <name>late_down_time</name>
  1754 + <rename>late_down_time</rename>
  1755 + <default/>
  1756 + <type>Number</type>
  1757 + </value>
  1758 + </lookup>
  1759 + <cluster_schema/>
  1760 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1761 + <xloc>149</xloc>
  1762 + <yloc>581</yloc>
  1763 + <draw>Y</draw>
  1764 + </GUI>
  1765 + </step>
  1766 +
  1767 + <step>
  1768 + <name>&#x67e5;&#x627e;&#x65f6;&#x523b;&#x8868;&#x57fa;&#x7840;&#x4fe1;&#x606f;&#x5173;&#x8054;</name>
  1769 + <type>DBLookup</type>
  1770 + <description/>
  1771 + <distribute>Y</distribute>
  1772 + <custom_distribution/>
  1773 + <copies>1</copies>
  1774 + <partitioning>
  1775 + <method>none</method>
  1776 + <schema_name/>
  1777 + </partitioning>
  1778 + <connection>bus_control_variable</connection>
  1779 + <cache>N</cache>
  1780 + <cache_load_all>N</cache_load_all>
  1781 + <cache_size>0</cache_size>
  1782 + <lookup>
  1783 + <schema/>
  1784 + <table>bsth_c_s_ttinfo</table>
  1785 + <orderby/>
  1786 + <fail_on_multiple>N</fail_on_multiple>
  1787 + <eat_row_on_failure>N</eat_row_on_failure>
  1788 + <key>
  1789 + <name>xlid</name>
  1790 + <field>xl</field>
  1791 + <condition>&#x3d;</condition>
  1792 + <name2/>
  1793 + </key>
  1794 + <key>
  1795 + <name>ttinfoname_</name>
  1796 + <field>name</field>
  1797 + <condition>&#x3d;</condition>
  1798 + <name2/>
  1799 + </key>
  1800 + <key>
  1801 + <name>iscanceled</name>
  1802 + <field>is_cancel</field>
  1803 + <condition>&#x3d;</condition>
  1804 + <name2/>
  1805 + </key>
  1806 + <value>
  1807 + <name>id</name>
  1808 + <rename>ttid</rename>
  1809 + <default/>
  1810 + <type>Integer</type>
  1811 + </value>
  1812 + </lookup>
  1813 + <cluster_schema/>
  1814 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1815 + <xloc>1011</xloc>
  1816 + <yloc>134</yloc>
  1817 + <draw>Y</draw>
  1818 + </GUI>
  1819 + </step>
  1820 +
  1821 + <step>
  1822 + <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</name>
  1823 + <type>DBLookup</type>
  1824 + <description/>
  1825 + <distribute>Y</distribute>
  1826 + <custom_distribution/>
  1827 + <copies>1</copies>
  1828 + <partitioning>
  1829 + <method>none</method>
  1830 + <schema_name/>
  1831 + </partitioning>
  1832 + <connection>bus_control_variable</connection>
  1833 + <cache>N</cache>
  1834 + <cache_load_all>N</cache_load_all>
  1835 + <cache_size>0</cache_size>
  1836 + <lookup>
  1837 + <schema/>
  1838 + <table>bsth_c_line</table>
  1839 + <orderby/>
  1840 + <fail_on_multiple>N</fail_on_multiple>
  1841 + <eat_row_on_failure>N</eat_row_on_failure>
  1842 + <key>
  1843 + <name>xlname_</name>
  1844 + <field>name</field>
  1845 + <condition>&#x3d;</condition>
  1846 + <name2/>
  1847 + </key>
  1848 + <key>
  1849 + <name>iscanceled</name>
  1850 + <field>destroy</field>
  1851 + <condition>&#x3d;</condition>
  1852 + <name2/>
  1853 + </key>
  1854 + <value>
  1855 + <name>id</name>
  1856 + <rename>xlid</rename>
  1857 + <default/>
  1858 + <type>Integer</type>
  1859 + </value>
  1860 + </lookup>
  1861 + <cluster_schema/>
  1862 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1863 + <xloc>1007</xloc>
  1864 + <yloc>43</yloc>
  1865 + <draw>Y</draw>
  1866 + </GUI>
  1867 + </step>
  1868 +
  1869 + <step>
  1870 + <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x51fa;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
  1871 + <type>DBLookup</type>
  1872 + <description/>
  1873 + <distribute>Y</distribute>
  1874 + <custom_distribution/>
  1875 + <copies>1</copies>
  1876 + <partitioning>
  1877 + <method>none</method>
  1878 + <schema_name/>
  1879 + </partitioning>
  1880 + <connection>bus_control_variable</connection>
  1881 + <cache>N</cache>
  1882 + <cache_load_all>N</cache_load_all>
  1883 + <cache_size>0</cache_size>
  1884 + <lookup>
  1885 + <schema/>
  1886 + <table>bsth_c_line_information</table>
  1887 + <orderby/>
  1888 + <fail_on_multiple>N</fail_on_multiple>
  1889 + <eat_row_on_failure>N</eat_row_on_failure>
  1890 + <key>
  1891 + <name>xlid</name>
  1892 + <field>line</field>
  1893 + <condition>&#x3d;</condition>
  1894 + <name2/>
  1895 + </key>
  1896 + <value>
  1897 + <name>up_out_timer</name>
  1898 + <rename>up_out_timer</rename>
  1899 + <default/>
  1900 + <type>Number</type>
  1901 + </value>
  1902 + <value>
  1903 + <name>up_out_mileage</name>
  1904 + <rename>up_out_mileage</rename>
  1905 + <default/>
  1906 + <type>Number</type>
  1907 + </value>
  1908 + <value>
  1909 + <name>down_out_timer</name>
  1910 + <rename>down_out_timer</rename>
  1911 + <default/>
  1912 + <type>Number</type>
  1913 + </value>
  1914 + <value>
  1915 + <name>down_out_mileage</name>
  1916 + <rename>down_out_mileage</rename>
  1917 + <default/>
  1918 + <type>Number</type>
  1919 + </value>
  1920 + </lookup>
  1921 + <cluster_schema/>
  1922 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1923 + <xloc>335</xloc>
  1924 + <yloc>763</yloc>
  1925 + <draw>Y</draw>
  1926 + </GUI>
  1927 + </step>
  1928 +
  1929 + <step>
  1930 + <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x8fdb;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
  1931 + <type>DBLookup</type>
  1932 + <description/>
  1933 + <distribute>Y</distribute>
  1934 + <custom_distribution/>
  1935 + <copies>1</copies>
  1936 + <partitioning>
  1937 + <method>none</method>
  1938 + <schema_name/>
  1939 + </partitioning>
  1940 + <connection>bus_control_variable</connection>
  1941 + <cache>N</cache>
  1942 + <cache_load_all>N</cache_load_all>
  1943 + <cache_size>0</cache_size>
  1944 + <lookup>
  1945 + <schema/>
  1946 + <table>bsth_c_line_information</table>
  1947 + <orderby/>
  1948 + <fail_on_multiple>N</fail_on_multiple>
  1949 + <eat_row_on_failure>N</eat_row_on_failure>
  1950 + <key>
  1951 + <name>xlid</name>
  1952 + <field>line</field>
  1953 + <condition>&#x3d;</condition>
  1954 + <name2/>
  1955 + </key>
  1956 + <value>
  1957 + <name>up_in_mileage</name>
  1958 + <rename>up_in_mileage</rename>
  1959 + <default/>
  1960 + <type>Number</type>
  1961 + </value>
  1962 + <value>
  1963 + <name>up_in_timer</name>
  1964 + <rename>up_in_timer</rename>
  1965 + <default/>
  1966 + <type>Number</type>
  1967 + </value>
  1968 + <value>
  1969 + <name>down_in_mileage</name>
  1970 + <rename>down_in_mileage</rename>
  1971 + <default/>
  1972 + <type>Number</type>
  1973 + </value>
  1974 + <value>
  1975 + <name>down_in_timer</name>
  1976 + <rename>down_in_timer</rename>
  1977 + <default/>
  1978 + <type>Number</type>
  1979 + </value>
  1980 + </lookup>
  1981 + <cluster_schema/>
  1982 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1983 + <xloc>553</xloc>
  1984 + <yloc>1004</yloc>
  1985 + <draw>Y</draw>
  1986 + </GUI>
  1987 + </step>
  1988 +
  1989 + <step>
  1990 + <name>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;</name>
  1991 + <type>DBLookup</type>
  1992 + <description/>
  1993 + <distribute>Y</distribute>
  1994 + <custom_distribution/>
  1995 + <copies>1</copies>
  1996 + <partitioning>
  1997 + <method>none</method>
  1998 + <schema_name/>
  1999 + </partitioning>
  2000 + <connection>bus_control_variable</connection>
  2001 + <cache>N</cache>
  2002 + <cache_load_all>N</cache_load_all>
  2003 + <cache_size>0</cache_size>
  2004 + <lookup>
  2005 + <schema/>
  2006 + <table>bsth_c_ls_stationroute</table>
  2007 + <orderby/>
  2008 + <fail_on_multiple>N</fail_on_multiple>
  2009 + <eat_row_on_failure>N</eat_row_on_failure>
  2010 + <key>
  2011 + <name>xlid</name>
  2012 + <field>line</field>
  2013 + <condition>&#x3d;</condition>
  2014 + <name2/>
  2015 + </key>
  2016 + <key>
  2017 + <name>version</name>
  2018 + <field>versions</field>
  2019 + <condition>&#x3d;</condition>
  2020 + <name2/>
  2021 + </key>
  2022 + <key>
  2023 + <name>sxx</name>
  2024 + <field>directions</field>
  2025 + <condition>&#x3d;</condition>
  2026 + <name2/>
  2027 + </key>
  2028 + <key>
  2029 + <name>endZdtype</name>
  2030 + <field>station_mark</field>
  2031 + <condition>&#x3d;</condition>
  2032 + <name2/>
  2033 + </key>
  2034 + <key>
  2035 + <name>destory</name>
  2036 + <field>destroy</field>
  2037 + <condition>&#x3d;</condition>
  2038 + <name2/>
  2039 + </key>
  2040 + <value>
  2041 + <name>station_name</name>
  2042 + <rename>zdzname</rename>
  2043 + <default/>
  2044 + <type>String</type>
  2045 + </value>
  2046 + <value>
  2047 + <name>station</name>
  2048 + <rename>zdzid</rename>
  2049 + <default/>
  2050 + <type>Integer</type>
  2051 + </value>
  2052 + <value>
  2053 + <name>station_code</name>
  2054 + <rename>zdzcode</rename>
  2055 + <default/>
  2056 + <type>String</type>
  2057 + </value>
  2058 + </lookup>
  2059 + <cluster_schema/>
  2060 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2061 + <xloc>280</xloc>
  2062 + <yloc>404</yloc>
  2063 + <draw>Y</draw>
  2064 + </GUI>
  2065 + </step>
  2066 +
  2067 + <step>
  2068 + <name>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</name>
  2069 + <type>DBLookup</type>
  2070 + <description/>
  2071 + <distribute>Y</distribute>
  2072 + <custom_distribution/>
  2073 + <copies>1</copies>
  2074 + <partitioning>
  2075 + <method>none</method>
  2076 + <schema_name/>
  2077 + </partitioning>
  2078 + <connection>bus_control_variable</connection>
  2079 + <cache>N</cache>
  2080 + <cache_load_all>N</cache_load_all>
  2081 + <cache_size>0</cache_size>
  2082 + <lookup>
  2083 + <schema/>
  2084 + <table>bsth_c_ls_stationroute</table>
  2085 + <orderby/>
  2086 + <fail_on_multiple>N</fail_on_multiple>
  2087 + <eat_row_on_failure>N</eat_row_on_failure>
  2088 + <key>
  2089 + <name>xlid</name>
  2090 + <field>line</field>
  2091 + <condition>&#x3d;</condition>
  2092 + <name2/>
  2093 + </key>
  2094 + <key>
  2095 + <name>version</name>
  2096 + <field>versions</field>
  2097 + <condition>&#x3d;</condition>
  2098 + <name2/>
  2099 + </key>
  2100 + <key>
  2101 + <name>qdzname</name>
  2102 + <field>station_name</field>
  2103 + <condition>LIKE</condition>
  2104 + <name2/>
  2105 + </key>
  2106 + <key>
  2107 + <name>sendZdtype</name>
  2108 + <field>station_mark</field>
  2109 + <condition>&#x3d;</condition>
  2110 + <name2/>
  2111 + </key>
  2112 + <key>
  2113 + <name>destory</name>
  2114 + <field>destroy</field>
  2115 + <condition>&#x3d;</condition>
  2116 + <name2/>
  2117 + </key>
  2118 + <value>
  2119 + <name>station</name>
  2120 + <rename>qdzid</rename>
  2121 + <default/>
  2122 + <type>Integer</type>
  2123 + </value>
  2124 + <value>
  2125 + <name>directions</name>
  2126 + <rename>sxx</rename>
  2127 + <default/>
  2128 + <type>Integer</type>
  2129 + </value>
  2130 + <value>
  2131 + <name>station_code</name>
  2132 + <rename>qdzcode</rename>
  2133 + <default/>
  2134 + <type>String</type>
  2135 + </value>
  2136 + <value>
  2137 + <name>station_name</name>
  2138 + <rename>qdzname_</rename>
  2139 + <default/>
  2140 + <type>String</type>
  2141 + </value>
  2142 + </lookup>
  2143 + <cluster_schema/>
  2144 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2145 + <xloc>430</xloc>
  2146 + <yloc>403</yloc>
  2147 + <draw>Y</draw>
  2148 + </GUI>
  2149 + </step>
  2150 +
  2151 + <step>
  2152 + <name>&#x67e5;&#x627e;&#x8def;&#x724c;&#x5173;&#x8054;</name>
  2153 + <type>DBLookup</type>
  2154 + <description/>
  2155 + <distribute>Y</distribute>
  2156 + <custom_distribution/>
  2157 + <copies>1</copies>
  2158 + <partitioning>
  2159 + <method>none</method>
  2160 + <schema_name/>
  2161 + </partitioning>
  2162 + <connection>bus_control_variable</connection>
  2163 + <cache>N</cache>
  2164 + <cache_load_all>N</cache_load_all>
  2165 + <cache_size>0</cache_size>
  2166 + <lookup>
  2167 + <schema/>
  2168 + <table>bsth_c_s_gbi</table>
  2169 + <orderby/>
  2170 + <fail_on_multiple>N</fail_on_multiple>
  2171 + <eat_row_on_failure>N</eat_row_on_failure>
  2172 + <key>
  2173 + <name>xlid</name>
  2174 + <field>xl</field>
  2175 + <condition>&#x3d;</condition>
  2176 + <name2/>
  2177 + </key>
  2178 + <key>
  2179 + <name>lp</name>
  2180 + <field>lp_name</field>
  2181 + <condition>&#x3d;</condition>
  2182 + <name2/>
  2183 + </key>
  2184 + <key>
  2185 + <name>iscanceled</name>
  2186 + <field>is_cancel</field>
  2187 + <condition>&#x3d;</condition>
  2188 + <name2/>
  2189 + </key>
  2190 + <value>
  2191 + <name>id</name>
  2192 + <rename>lpid</rename>
  2193 + <default/>
  2194 + <type>Integer</type>
  2195 + </value>
  2196 + </lookup>
  2197 + <cluster_schema/>
  2198 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2199 + <xloc>1013</xloc>
  2200 + <yloc>265</yloc>
  2201 + <draw>Y</draw>
  2202 + </GUI>
  2203 + </step>
  2204 +
  2205 + <step>
  2206 + <name>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ebf;&#x8def;&#x65b9;&#x5411;</name>
  2207 + <type>DBLookup</type>
  2208 + <description/>
  2209 + <distribute>Y</distribute>
  2210 + <custom_distribution/>
  2211 + <copies>1</copies>
  2212 + <partitioning>
  2213 + <method>none</method>
  2214 + <schema_name/>
  2215 + </partitioning>
  2216 + <connection>bus_control_variable</connection>
  2217 + <cache>N</cache>
  2218 + <cache_load_all>N</cache_load_all>
  2219 + <cache_size>0</cache_size>
  2220 + <lookup>
  2221 + <schema/>
  2222 + <table>bsth_c_ls_stationroute</table>
  2223 + <orderby/>
  2224 + <fail_on_multiple>N</fail_on_multiple>
  2225 + <eat_row_on_failure>N</eat_row_on_failure>
  2226 + <key>
  2227 + <name>xlid</name>
  2228 + <field>line</field>
  2229 + <condition>&#x3d;</condition>
  2230 + <name2/>
  2231 + </key>
  2232 + <key>
  2233 + <name>version</name>
  2234 + <field>versions</field>
  2235 + <condition>&#x3d;</condition>
  2236 + <name2/>
  2237 + </key>
  2238 + <key>
  2239 + <name>startZdtype_calcu</name>
  2240 + <field>station_mark</field>
  2241 + <condition>&#x3d;</condition>
  2242 + <name2/>
  2243 + </key>
  2244 + <key>
  2245 + <name>qdzname_calcu</name>
  2246 + <field>station_name</field>
  2247 + <condition>LIKE</condition>
  2248 + <name2/>
  2249 + </key>
  2250 + <key>
  2251 + <name>destory</name>
  2252 + <field>destroy</field>
  2253 + <condition>&#x3d;</condition>
  2254 + <name2/>
  2255 + </key>
  2256 + <value>
  2257 + <name>directions</name>
  2258 + <rename>sxx</rename>
  2259 + <default/>
  2260 + <type>String</type>
  2261 + </value>
  2262 + </lookup>
  2263 + <cluster_schema/>
  2264 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2265 + <xloc>548</xloc>
  2266 + <yloc>610</yloc>
  2267 + <draw>Y</draw>
  2268 + </GUI>
  2269 + </step>
  2270 +
  2271 + <step>
  2272 + <name>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ec8;&#x70b9;&#x7ad9;&#xff0c;&#x5e76;&#x4f5c;&#x4e3a;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x7684;&#x8d77;&#x70b9;&#x7ad9;</name>
  2273 + <type>DBLookup</type>
  2274 + <description/>
  2275 + <distribute>Y</distribute>
  2276 + <custom_distribution/>
  2277 + <copies>1</copies>
  2278 + <partitioning>
  2279 + <method>none</method>
  2280 + <schema_name/>
  2281 + </partitioning>
  2282 + <connection>bus_control_variable</connection>
  2283 + <cache>N</cache>
  2284 + <cache_load_all>Y</cache_load_all>
  2285 + <cache_size>0</cache_size>
  2286 + <lookup>
  2287 + <schema/>
  2288 + <table>bsth_c_ls_stationroute</table>
  2289 + <orderby/>
  2290 + <fail_on_multiple>N</fail_on_multiple>
  2291 + <eat_row_on_failure>N</eat_row_on_failure>
  2292 + <key>
  2293 + <name>xlid</name>
  2294 + <field>line</field>
  2295 + <condition>&#x3d;</condition>
  2296 + <name2/>
  2297 + </key>
  2298 + <key>
  2299 + <name>version</name>
  2300 + <field>versions</field>
  2301 + <condition>&#x3d;</condition>
  2302 + <name2/>
  2303 + </key>
  2304 + <key>
  2305 + <name>endZdtype_calcu</name>
  2306 + <field>station_mark</field>
  2307 + <condition>&#x3d;</condition>
  2308 + <name2/>
  2309 + </key>
  2310 + <key>
  2311 + <name>sxx</name>
  2312 + <field>directions</field>
  2313 + <condition>&#x3d;</condition>
  2314 + <name2/>
  2315 + </key>
  2316 + <key>
  2317 + <name>destory</name>
  2318 + <field>destroy</field>
  2319 + <condition>&#x3d;</condition>
  2320 + <name2/>
  2321 + </key>
  2322 + <value>
  2323 + <name>station_name</name>
  2324 + <rename>zdzname_calcu</rename>
  2325 + <default/>
  2326 + <type>Integer</type>
  2327 + </value>
  2328 + </lookup>
  2329 + <cluster_schema/>
  2330 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2331 + <xloc>550</xloc>
  2332 + <yloc>701</yloc>
  2333 + <draw>Y</draw>
  2334 + </GUI>
  2335 + </step>
  2336 +
  2337 + <step>
  2338 + <name>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</name>
  2339 + <type>DBLookup</type>
  2340 + <description/>
  2341 + <distribute>Y</distribute>
  2342 + <custom_distribution/>
  2343 + <copies>1</copies>
  2344 + <partitioning>
  2345 + <method>none</method>
  2346 + <schema_name/>
  2347 + </partitioning>
  2348 + <connection>bus_control_variable</connection>
  2349 + <cache>N</cache>
  2350 + <cache_load_all>N</cache_load_all>
  2351 + <cache_size>0</cache_size>
  2352 + <lookup>
  2353 + <schema/>
  2354 + <table>bsth_c_ls_stationroute</table>
  2355 + <orderby/>
  2356 + <fail_on_multiple>N</fail_on_multiple>
  2357 + <eat_row_on_failure>N</eat_row_on_failure>
  2358 + <key>
  2359 + <name>xlid</name>
  2360 + <field>line</field>
  2361 + <condition>&#x3d;</condition>
  2362 + <name2/>
  2363 + </key>
  2364 + <key>
  2365 + <name>version</name>
  2366 + <field>versions</field>
  2367 + <condition>&#x3d;</condition>
  2368 + <name2/>
  2369 + </key>
  2370 + <key>
  2371 + <name>zdzname_calcu</name>
  2372 + <field>station_name</field>
  2373 + <condition>&#x3d;</condition>
  2374 + <name2/>
  2375 + </key>
  2376 + <key>
  2377 + <name>startZdtype_calcu</name>
  2378 + <field>station_mark</field>
  2379 + <condition>&#x3d;</condition>
  2380 + <name2/>
  2381 + </key>
  2382 + <key>
  2383 + <name>destory</name>
  2384 + <field>destroy</field>
  2385 + <condition>&#x3d;</condition>
  2386 + <name2/>
  2387 + </key>
  2388 + <value>
  2389 + <name>directions</name>
  2390 + <rename>sxx2</rename>
  2391 + <default/>
  2392 + <type>Integer</type>
  2393 + </value>
  2394 + <value>
  2395 + <name>station</name>
  2396 + <rename>qdzid</rename>
  2397 + <default/>
  2398 + <type>Integer</type>
  2399 + </value>
  2400 + <value>
  2401 + <name>station_code</name>
  2402 + <rename>qdzcode</rename>
  2403 + <default/>
  2404 + <type>String</type>
  2405 + </value>
  2406 + <value>
  2407 + <name>station_name</name>
  2408 + <rename>qname</rename>
  2409 + <default/>
  2410 + <type>String</type>
  2411 + </value>
  2412 + </lookup>
  2413 + <cluster_schema/>
  2414 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2415 + <xloc>551</xloc>
  2416 + <yloc>782</yloc>
  2417 + <draw>Y</draw>
  2418 + </GUI>
  2419 + </step>
  2420 +
  2421 + <step>
  2422 + <name>&#x6b63;&#x5e38;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</name>
  2423 + <type>ScriptValueMod</type>
  2424 + <description/>
  2425 + <distribute>Y</distribute>
  2426 + <custom_distribution/>
  2427 + <copies>1</copies>
  2428 + <partitioning>
  2429 + <method>none</method>
  2430 + <schema_name/>
  2431 + </partitioning>
  2432 + <compatible>N</compatible>
  2433 + <optimizationLevel>9</optimizationLevel>
  2434 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  2435 + <jsScript_name>Script 1</jsScript_name>
  2436 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x6dfb;&#x52a0;&#x7ad9;&#x70b9;&#x6807;&#x8bc6;&#xa;var sendZdtype &#x3d; &#x27;B&#x27;&#x3b;&#xa;var endZdtype &#x3d; &#x27;E&#x27;&#x3b;&#xa;&#xa;var destory &#x3d; 0&#x3b; &#x2f;&#x2f; &#x672a;&#x64a4;&#x9500;flag</jsScript_script>
  2437 + </jsScript> </jsScripts> <fields> <field> <name>sendZdtype</name>
  2438 + <rename>sendZdtype</rename>
  2439 + <type>String</type>
  2440 + <length>-1</length>
  2441 + <precision>-1</precision>
  2442 + <replace>N</replace>
  2443 + </field> <field> <name>endZdtype</name>
  2444 + <rename>endZdtype</rename>
  2445 + <type>String</type>
  2446 + <length>-1</length>
  2447 + <precision>-1</precision>
  2448 + <replace>N</replace>
  2449 + </field> <field> <name>destory</name>
  2450 + <rename>destory</rename>
  2451 + <type>Integer</type>
  2452 + <length>-1</length>
  2453 + <precision>-1</precision>
  2454 + <replace>N</replace>
  2455 + </field> </fields> <cluster_schema/>
  2456 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2457 + <xloc>588</xloc>
  2458 + <yloc>403</yloc>
  2459 + <draw>Y</draw>
  2460 + </GUI>
  2461 + </step>
  2462 +
  2463 + <step>
  2464 + <name>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6570;&#x636e;</name>
  2465 + <type>Dummy</type>
  2466 + <description/>
  2467 + <distribute>Y</distribute>
  2468 + <custom_distribution/>
  2469 + <copies>1</copies>
  2470 + <partitioning>
  2471 + <method>none</method>
  2472 + <schema_name/>
  2473 + </partitioning>
  2474 + <cluster_schema/>
  2475 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2476 + <xloc>725</xloc>
  2477 + <yloc>404</yloc>
  2478 + <draw>Y</draw>
  2479 + </GUI>
  2480 + </step>
  2481 +
  2482 + <step>
  2483 + <name>&#x6dfb;&#x52a0;&#x53d1;&#x8f66;&#x987a;&#x5e8f;&#x53f7;</name>
  2484 + <type>GroupBy</type>
  2485 + <description/>
  2486 + <distribute>Y</distribute>
  2487 + <custom_distribution/>
  2488 + <copies>1</copies>
  2489 + <partitioning>
  2490 + <method>none</method>
  2491 + <schema_name/>
  2492 + </partitioning>
  2493 + <all_rows>Y</all_rows>
  2494 + <ignore_aggregate>N</ignore_aggregate>
  2495 + <field_ignore/>
  2496 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  2497 + <prefix>grp</prefix>
  2498 + <add_linenr>Y</add_linenr>
  2499 + <linenr_fieldname>fcno</linenr_fieldname>
  2500 + <give_back_row>N</give_back_row>
  2501 + <group>
  2502 + <field>
  2503 + <name>lp</name>
  2504 + </field>
  2505 + </group>
  2506 + <fields>
  2507 + </fields>
  2508 + <cluster_schema/>
  2509 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2510 + <xloc>442</xloc>
  2511 + <yloc>44</yloc>
  2512 + <draw>Y</draw>
  2513 + </GUI>
  2514 + </step>
  2515 +
  2516 + <step>
  2517 + <name>&#x6dfb;&#x52a0;&#x5bf9;&#x5e94;&#x73ed;&#x6b21;&#x6570;</name>
  2518 + <type>GroupBy</type>
  2519 + <description/>
  2520 + <distribute>Y</distribute>
  2521 + <custom_distribution/>
  2522 + <copies>1</copies>
  2523 + <partitioning>
  2524 + <method>none</method>
  2525 + <schema_name/>
  2526 + </partitioning>
  2527 + <all_rows>Y</all_rows>
  2528 + <ignore_aggregate>N</ignore_aggregate>
  2529 + <field_ignore/>
  2530 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  2531 + <prefix>grp</prefix>
  2532 + <add_linenr>Y</add_linenr>
  2533 + <linenr_fieldname>bcs</linenr_fieldname>
  2534 + <give_back_row>N</give_back_row>
  2535 + <group>
  2536 + </group>
  2537 + <fields>
  2538 + </fields>
  2539 + <cluster_schema/>
  2540 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2541 + <xloc>692</xloc>
  2542 + <yloc>44</yloc>
  2543 + <draw>Y</draw>
  2544 + </GUI>
  2545 + </step>
  2546 +
  2547 + <step>
  2548 + <name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</name>
  2549 + <type>Normaliser</type>
  2550 + <description/>
  2551 + <distribute>Y</distribute>
  2552 + <custom_distribution/>
  2553 + <copies>1</copies>
  2554 + <partitioning>
  2555 + <method>none</method>
  2556 + <schema_name/>
  2557 + </partitioning>
  2558 + <typefield>&#x7ad9;&#x70b9;&#x540d;&#x79f0;</typefield>
  2559 + <fields> </fields> <cluster_schema/>
  2560 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2561 + <xloc>248</xloc>
  2562 + <yloc>44</yloc>
  2563 + <draw>Y</draw>
  2564 + </GUI>
  2565 + </step>
  2566 +
  2567 + <step>
  2568 + <name>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178;</name>
  2569 + <type>ValueMapper</type>
  2570 + <description/>
  2571 + <distribute>Y</distribute>
  2572 + <custom_distribution/>
  2573 + <copies>1</copies>
  2574 + <partitioning>
  2575 + <method>none</method>
  2576 + <schema_name/>
  2577 + </partitioning>
  2578 + <field_to_use>bctype</field_to_use>
  2579 + <target_field>bctype_code</target_field>
  2580 + <non_match_default>&#x672a;&#x77e5;&#x7c7b;&#x578b;</non_match_default>
  2581 + <fields>
  2582 + <field>
  2583 + <source_value>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</source_value>
  2584 + <target_value>normal</target_value>
  2585 + </field>
  2586 + <field>
  2587 + <source_value>&#x51fa;&#x573a;</source_value>
  2588 + <target_value>out</target_value>
  2589 + </field>
  2590 + <field>
  2591 + <source_value>&#x8fdb;&#x573a;</source_value>
  2592 + <target_value>in</target_value>
  2593 + </field>
  2594 + <field>
  2595 + <source_value>&#x52a0;&#x6cb9;</source_value>
  2596 + <target_value>oil</target_value>
  2597 + </field>
  2598 + <field>
  2599 + <source_value>&#x4e34;&#x52a0;</source_value>
  2600 + <target_value>temp</target_value>
  2601 + </field>
  2602 + <field>
  2603 + <source_value>&#x533a;&#x95f4;</source_value>
  2604 + <target_value>region</target_value>
  2605 + </field>
  2606 + <field>
  2607 + <source_value>&#x653e;&#x7a7a;</source_value>
  2608 + <target_value>venting</target_value>
  2609 + </field>
  2610 + <field>
  2611 + <source_value>&#x653e;&#x5927;&#x7ad9;</source_value>
  2612 + <target_value>major</target_value>
  2613 + </field>
  2614 + </fields>
  2615 + <cluster_schema/>
  2616 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2617 + <xloc>149</xloc>
  2618 + <yloc>491</yloc>
  2619 + <draw>Y</draw>
  2620 + </GUI>
  2621 + </step>
  2622 +
  2623 + <step>
  2624 + <name>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 2</name>
  2625 + <type>ValueMapper</type>
  2626 + <description/>
  2627 + <distribute>Y</distribute>
  2628 + <custom_distribution/>
  2629 + <copies>1</copies>
  2630 + <partitioning>
  2631 + <method>none</method>
  2632 + <schema_name/>
  2633 + </partitioning>
  2634 + <field_to_use>bctype</field_to_use>
  2635 + <target_field>bctype_code</target_field>
  2636 + <non_match_default>&#x672a;&#x77e5;&#x7c7b;&#x578b;</non_match_default>
  2637 + <fields>
  2638 + <field>
  2639 + <source_value>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</source_value>
  2640 + <target_value>normal</target_value>
  2641 + </field>
  2642 + <field>
  2643 + <source_value>&#x51fa;&#x573a;</source_value>
  2644 + <target_value>out</target_value>
  2645 + </field>
  2646 + <field>
  2647 + <source_value>&#x8fdb;&#x573a;</source_value>
  2648 + <target_value>in</target_value>
  2649 + </field>
  2650 + <field>
  2651 + <source_value>&#x52a0;&#x6cb9;</source_value>
  2652 + <target_value>oil</target_value>
  2653 + </field>
  2654 + <field>
  2655 + <source_value>&#x4e34;&#x52a0;</source_value>
  2656 + <target_value>temp</target_value>
  2657 + </field>
  2658 + <field>
  2659 + <source_value>&#x533a;&#x95f4;</source_value>
  2660 + <target_value>region</target_value>
  2661 + </field>
  2662 + <field>
  2663 + <source_value>&#x653e;&#x7a7a;</source_value>
  2664 + <target_value>venting</target_value>
  2665 + </field>
  2666 + <field>
  2667 + <source_value>&#x653e;&#x5927;&#x7ad9;</source_value>
  2668 + <target_value>major</target_value>
  2669 + </field>
  2670 + </fields>
  2671 + <cluster_schema/>
  2672 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2673 + <xloc>333</xloc>
  2674 + <yloc>681</yloc>
  2675 + <draw>Y</draw>
  2676 + </GUI>
  2677 + </step>
  2678 +
  2679 + <step>
  2680 + <name>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 3</name>
  2681 + <type>ValueMapper</type>
  2682 + <description/>
  2683 + <distribute>Y</distribute>
  2684 + <custom_distribution/>
  2685 + <copies>1</copies>
  2686 + <partitioning>
  2687 + <method>none</method>
  2688 + <schema_name/>
  2689 + </partitioning>
  2690 + <field_to_use>bctype</field_to_use>
  2691 + <target_field>bctype_code</target_field>
  2692 + <non_match_default>&#x672a;&#x77e5;&#x7c7b;&#x578b;</non_match_default>
  2693 + <fields>
  2694 + <field>
  2695 + <source_value>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</source_value>
  2696 + <target_value>normal</target_value>
  2697 + </field>
  2698 + <field>
  2699 + <source_value>&#x51fa;&#x573a;</source_value>
  2700 + <target_value>out</target_value>
  2701 + </field>
  2702 + <field>
  2703 + <source_value>&#x8fdb;&#x573a;</source_value>
  2704 + <target_value>in</target_value>
  2705 + </field>
  2706 + <field>
  2707 + <source_value>&#x52a0;&#x6cb9;</source_value>
  2708 + <target_value>oil</target_value>
  2709 + </field>
  2710 + <field>
  2711 + <source_value>&#x4e34;&#x52a0;</source_value>
  2712 + <target_value>temp</target_value>
  2713 + </field>
  2714 + <field>
  2715 + <source_value>&#x533a;&#x95f4;</source_value>
  2716 + <target_value>region</target_value>
  2717 + </field>
  2718 + <field>
  2719 + <source_value>&#x653e;&#x7a7a;</source_value>
  2720 + <target_value>venting</target_value>
  2721 + </field>
  2722 + <field>
  2723 + <source_value>&#x653e;&#x5927;&#x7ad9;</source_value>
  2724 + <target_value>major</target_value>
  2725 + </field>
  2726 + </fields>
  2727 + <cluster_schema/>
  2728 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2729 + <xloc>551</xloc>
  2730 + <yloc>928</yloc>
  2731 + <draw>Y</draw>
  2732 + </GUI>
  2733 + </step>
  2734 +
  2735 + <step>
  2736 + <name>&#x7c7b;&#x578b;&#x4fee;&#x6b63;</name>
  2737 + <type>SelectValues</type>
  2738 + <description/>
  2739 + <distribute>Y</distribute>
  2740 + <custom_distribution/>
  2741 + <copies>1</copies>
  2742 + <partitioning>
  2743 + <method>none</method>
  2744 + <schema_name/>
  2745 + </partitioning>
  2746 + <fields> <select_unspecified>N</select_unspecified>
  2747 + <meta> <name>jhlc</name>
  2748 + <rename>jhlc</rename>
  2749 + <type>Number</type>
  2750 + <length>-2</length>
  2751 + <precision>-2</precision>
  2752 + <conversion_mask/>
  2753 + <date_format_lenient>false</date_format_lenient>
  2754 + <date_format_locale/>
  2755 + <date_format_timezone/>
  2756 + <lenient_string_to_number>false</lenient_string_to_number>
  2757 + <encoding/>
  2758 + <decimal_symbol/>
  2759 + <grouping_symbol/>
  2760 + <currency_symbol/>
  2761 + <storage_type/>
  2762 + </meta> <meta> <name>bcsj</name>
  2763 + <rename>bcsj</rename>
  2764 + <type>Integer</type>
  2765 + <length>-2</length>
  2766 + <precision>-2</precision>
  2767 + <conversion_mask/>
  2768 + <date_format_lenient>false</date_format_lenient>
  2769 + <date_format_locale/>
  2770 + <date_format_timezone/>
  2771 + <lenient_string_to_number>false</lenient_string_to_number>
  2772 + <encoding/>
  2773 + <decimal_symbol/>
  2774 + <grouping_symbol/>
  2775 + <currency_symbol/>
  2776 + <storage_type/>
  2777 + </meta> </fields> <cluster_schema/>
  2778 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2779 + <xloc>146</xloc>
  2780 + <yloc>768</yloc>
  2781 + <draw>Y</draw>
  2782 + </GUI>
  2783 + </step>
  2784 +
  2785 + <step>
  2786 + <name>&#x7c7b;&#x578b;&#x4fee;&#x6b63; 2</name>
  2787 + <type>SelectValues</type>
  2788 + <description/>
  2789 + <distribute>Y</distribute>
  2790 + <custom_distribution/>
  2791 + <copies>1</copies>
  2792 + <partitioning>
  2793 + <method>none</method>
  2794 + <schema_name/>
  2795 + </partitioning>
  2796 + <fields> <select_unspecified>N</select_unspecified>
  2797 + <meta> <name>out_mileage</name>
  2798 + <rename>out_mileage</rename>
  2799 + <type>Number</type>
  2800 + <length>-2</length>
  2801 + <precision>-2</precision>
  2802 + <conversion_mask/>
  2803 + <date_format_lenient>false</date_format_lenient>
  2804 + <date_format_locale/>
  2805 + <date_format_timezone/>
  2806 + <lenient_string_to_number>false</lenient_string_to_number>
  2807 + <encoding/>
  2808 + <decimal_symbol/>
  2809 + <grouping_symbol/>
  2810 + <currency_symbol/>
  2811 + <storage_type/>
  2812 + </meta> <meta> <name>out_time</name>
  2813 + <rename>out_time</rename>
  2814 + <type>Integer</type>
  2815 + <length>-2</length>
  2816 + <precision>-2</precision>
  2817 + <conversion_mask/>
  2818 + <date_format_lenient>false</date_format_lenient>
  2819 + <date_format_locale/>
  2820 + <date_format_timezone/>
  2821 + <lenient_string_to_number>false</lenient_string_to_number>
  2822 + <encoding/>
  2823 + <decimal_symbol/>
  2824 + <grouping_symbol/>
  2825 + <currency_symbol/>
  2826 + <storage_type/>
  2827 + </meta> <meta> <name>sxx</name>
  2828 + <rename>sxx</rename>
  2829 + <type>Integer</type>
  2830 + <length>-2</length>
  2831 + <precision>-2</precision>
  2832 + <conversion_mask/>
  2833 + <date_format_lenient>false</date_format_lenient>
  2834 + <date_format_locale/>
  2835 + <date_format_timezone/>
  2836 + <lenient_string_to_number>false</lenient_string_to_number>
  2837 + <encoding/>
  2838 + <decimal_symbol/>
  2839 + <grouping_symbol/>
  2840 + <currency_symbol/>
  2841 + <storage_type/>
  2842 + </meta> </fields> <cluster_schema/>
  2843 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2844 + <xloc>338</xloc>
  2845 + <yloc>1008</yloc>
  2846 + <draw>Y</draw>
  2847 + </GUI>
  2848 + </step>
  2849 +
  2850 + <step>
  2851 + <name>&#x7c7b;&#x578b;&#x4fee;&#x6b63; 3</name>
  2852 + <type>SelectValues</type>
  2853 + <description/>
  2854 + <distribute>Y</distribute>
  2855 + <custom_distribution/>
  2856 + <copies>1</copies>
  2857 + <partitioning>
  2858 + <method>none</method>
  2859 + <schema_name/>
  2860 + </partitioning>
  2861 + <fields> <select_unspecified>N</select_unspecified>
  2862 + <meta> <name>parade_mileage</name>
  2863 + <rename>parade_mileage</rename>
  2864 + <type>Number</type>
  2865 + <length>-2</length>
  2866 + <precision>-2</precision>
  2867 + <conversion_mask/>
  2868 + <date_format_lenient>false</date_format_lenient>
  2869 + <date_format_locale/>
  2870 + <date_format_timezone/>
  2871 + <lenient_string_to_number>false</lenient_string_to_number>
  2872 + <encoding/>
  2873 + <decimal_symbol/>
  2874 + <grouping_symbol/>
  2875 + <currency_symbol/>
  2876 + <storage_type/>
  2877 + </meta> <meta> <name>parade_time</name>
  2878 + <rename>parade_time</rename>
  2879 + <type>Integer</type>
  2880 + <length>-2</length>
  2881 + <precision>-2</precision>
  2882 + <conversion_mask/>
  2883 + <date_format_lenient>false</date_format_lenient>
  2884 + <date_format_locale/>
  2885 + <date_format_timezone/>
  2886 + <lenient_string_to_number>false</lenient_string_to_number>
  2887 + <encoding/>
  2888 + <decimal_symbol/>
  2889 + <grouping_symbol/>
  2890 + <currency_symbol/>
  2891 + <storage_type/>
  2892 + </meta> <meta> <name>sxx2</name>
  2893 + <rename>sxx2</rename>
  2894 + <type>Integer</type>
  2895 + <length>-2</length>
  2896 + <precision>-2</precision>
  2897 + <conversion_mask/>
  2898 + <date_format_lenient>false</date_format_lenient>
  2899 + <date_format_locale/>
  2900 + <date_format_timezone/>
  2901 + <lenient_string_to_number>false</lenient_string_to_number>
  2902 + <encoding/>
  2903 + <decimal_symbol/>
  2904 + <grouping_symbol/>
  2905 + <currency_symbol/>
  2906 + <storage_type/>
  2907 + </meta> </fields> <cluster_schema/>
  2908 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2909 + <xloc>847</xloc>
  2910 + <yloc>1003</yloc>
  2911 + <draw>Y</draw>
  2912 + </GUI>
  2913 + </step>
  2914 +
  2915 + <step>
  2916 + <name>&#x8ba1;&#x7b97;&#x73ed;&#x6b21;&#x7c7b;&#x578b;</name>
  2917 + <type>ValueMapper</type>
  2918 + <description/>
  2919 + <distribute>Y</distribute>
  2920 + <custom_distribution/>
  2921 + <copies>1</copies>
  2922 + <partitioning>
  2923 + <method>none</method>
  2924 + <schema_name/>
  2925 + </partitioning>
  2926 + <field_to_use>qdzname</field_to_use>
  2927 + <target_field>bctype</target_field>
  2928 + <non_match_default>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</non_match_default>
  2929 + <fields>
  2930 + <field>
  2931 + <source_value>&#x51fa;&#x573a;</source_value>
  2932 + <target_value>&#x51fa;&#x573a;</target_value>
  2933 + </field>
  2934 + <field>
  2935 + <source_value>&#x8fdb;&#x573a;</source_value>
  2936 + <target_value>&#x8fdb;&#x573a;</target_value>
  2937 + </field>
  2938 + </fields>
  2939 + <cluster_schema/>
  2940 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2941 + <xloc>1014</xloc>
  2942 + <yloc>401</yloc>
  2943 + <draw>Y</draw>
  2944 + </GUI>
  2945 + </step>
  2946 +
  2947 + <step>
  2948 + <name>&#x8bb0;&#x5f55;&#x5173;&#x8054; &#x28;&#x7b1b;&#x5361;&#x5c14;&#x8f93;&#x51fa;&#x29;</name>
  2949 + <type>JoinRows</type>
  2950 + <description/>
  2951 + <distribute>Y</distribute>
  2952 + <custom_distribution/>
  2953 + <copies>1</copies>
  2954 + <partitioning>
  2955 + <method>none</method>
  2956 + <schema_name/>
  2957 + </partitioning>
  2958 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  2959 + <prefix>out</prefix>
  2960 + <cache_size>500</cache_size>
  2961 + <main/>
  2962 + <compare>
  2963 +<condition>
  2964 + <negated>N</negated>
  2965 + <leftvalue/>
  2966 + <function>&#x3d;</function>
  2967 + <rightvalue/>
  2968 + </condition>
  2969 + </compare>
  2970 + <cluster_schema/>
  2971 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2972 + <xloc>310</xloc>
  2973 + <yloc>133</yloc>
  2974 + <draw>Y</draw>
  2975 + </GUI>
  2976 + </step>
  2977 +
  2978 + <step>
  2979 + <name>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;&#xff08;&#x53d1;&#x8f66;&#x65f6;&#x95f4;&#x4e3a;&#x7a7a;&#xff09;</name>
  2980 + <type>FilterRows</type>
  2981 + <description/>
  2982 + <distribute>Y</distribute>
  2983 + <custom_distribution/>
  2984 + <copies>1</copies>
  2985 + <partitioning>
  2986 + <method>none</method>
  2987 + <schema_name/>
  2988 + </partitioning>
  2989 +<send_true_to/>
  2990 +<send_false_to/>
  2991 + <compare>
  2992 +<condition>
  2993 + <negated>N</negated>
  2994 + <leftvalue>sendtime</leftvalue>
  2995 + <function>IS NOT NULL</function>
  2996 + <rightvalue/>
  2997 + </condition>
  2998 + </compare>
  2999 + <cluster_schema/>
  3000 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  3001 + <xloc>571</xloc>
  3002 + <yloc>44</yloc>
  3003 + <draw>Y</draw>
  3004 + </GUI>
  3005 + </step>
  3006 +
  3007 + <step>
  3008 + <name>&#x8fdb;&#x573a;&#x73ed;&#x6b21;_&#x786e;&#x5b9a;&#x8d77;&#x70b9;&#x7ad9;&#x540d;&#x5b57;</name>
  3009 + <type>ScriptValueMod</type>
  3010 + <description/>
  3011 + <distribute>Y</distribute>
  3012 + <custom_distribution/>
  3013 + <copies>1</copies>
  3014 + <partitioning>
  3015 + <method>none</method>
  3016 + <schema_name/>
  3017 + </partitioning>
  3018 + <compatible>N</compatible>
  3019 + <optimizationLevel>9</optimizationLevel>
  3020 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  3021 + <jsScript_name>Script 1</jsScript_name>
  3022 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x6dfb;&#x52a0;&#x7ad9;&#x70b9;&#x6807;&#x8bc6;&#xa;var cc_groups &#x3d; qdzgroups.split&#x28;&#x22;,&#x22;&#x29;&#x3b; &#x2f;&#x2f; &#x6240;&#x6709;&#x73ed;&#x6b21;&#x8d77;&#x70b9;&#x7ad9;&#x6570;&#x7ec4;&#xa;var qdzname_calcu &#x3d; cc_groups&#x5b;gno - 2&#x5d;&#x3b; &#x2f;&#x2f; &#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x7684;&#x8d77;&#x70b9;&#x7ad9;&#x662f;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ec8;&#x70b9;&#x7ad9;&#xff0c;&#x8fd9;&#x91cc;&#x53ea;&#x6709;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x8d77;&#x70b9;&#x7ad9;&#xff0c;&#x8fd8;&#x9700;&#x8981;&#x8ba1;&#x7b97;&#xa;var startZdtype_calcu &#x3d; &#x27;B&#x27;&#x3b;&#xa;var endZdtype_calcu &#x3d; &#x27;E&#x27;&#x3b;&#xa;&#xa;var destory &#x3d; 0&#x3b; &#x2f;&#x2f; &#x672a;&#x64a4;&#x9500;flag</jsScript_script>
  3023 + </jsScript> </jsScripts> <fields> <field> <name>qdzname_calcu</name>
  3024 + <rename>qdzname_calcu</rename>
  3025 + <type>String</type>
  3026 + <length>-1</length>
  3027 + <precision>-1</precision>
  3028 + <replace>N</replace>
  3029 + </field> <field> <name>startZdtype_calcu</name>
  3030 + <rename>startZdtype_calcu</rename>
  3031 + <type>String</type>
  3032 + <length>-1</length>
  3033 + <precision>-1</precision>
  3034 + <replace>N</replace>
  3035 + </field> <field> <name>endZdtype_calcu</name>
  3036 + <rename>endZdtype_calcu</rename>
  3037 + <type>String</type>
  3038 + <length>-1</length>
  3039 + <precision>-1</precision>
  3040 + <replace>N</replace>
  3041 + </field> <field> <name>destory</name>
  3042 + <rename>destory</rename>
  3043 + <type>Integer</type>
  3044 + <length>-1</length>
  3045 + <precision>-1</precision>
  3046 + <replace>N</replace>
  3047 + </field> </fields> <cluster_schema/>
  3048 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  3049 + <xloc>754</xloc>
  3050 + <yloc>610</yloc>
  3051 + <draw>Y</draw>
  3052 + </GUI>
  3053 + </step>
  3054 +
  3055 + <step>
  3056 + <name>&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</name>
  3057 + <type>Dummy</type>
  3058 + <description/>
  3059 + <distribute>Y</distribute>
  3060 + <custom_distribution/>
  3061 + <copies>1</copies>
  3062 + <partitioning>
  3063 + <method>none</method>
  3064 + <schema_name/>
  3065 + </partitioning>
  3066 + <cluster_schema/>
  3067 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  3068 + <xloc>997</xloc>
  3069 + <yloc>606</yloc>
  3070 + <draw>Y</draw>
  3071 + </GUI>
  3072 + </step>
  3073 +
  3074 + <step>
  3075 + <name>&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c;&#x7c7b;&#x578b;</name>
  3076 + <type>SelectValues</type>
  3077 + <description/>
  3078 + <distribute>Y</distribute>
  3079 + <custom_distribution/>
  3080 + <copies>1</copies>
  3081 + <partitioning>
  3082 + <method>none</method>
  3083 + <schema_name/>
  3084 + </partitioning>
  3085 + <fields> <select_unspecified>Y</select_unspecified>
  3086 + <meta> <name>zdlyversion_</name>
  3087 + <rename>version</rename>
  3088 + <type>Integer</type>
  3089 + <length>-2</length>
  3090 + <precision>-2</precision>
  3091 + <conversion_mask/>
  3092 + <date_format_lenient>false</date_format_lenient>
  3093 + <date_format_locale/>
  3094 + <date_format_timezone/>
  3095 + <lenient_string_to_number>false</lenient_string_to_number>
  3096 + <encoding/>
  3097 + <decimal_symbol/>
  3098 + <grouping_symbol/>
  3099 + <currency_symbol/>
  3100 + <storage_type/>
  3101 + </meta> </fields> <cluster_schema/>
  3102 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  3103 + <xloc>1015</xloc>
  3104 + <yloc>333</yloc>
  3105 + <draw>Y</draw>
  3106 + </GUI>
  3107 + </step>
  3108 +
  3109 + <step_error_handling>
  3110 + <error>
  3111 + <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo_detail</source_step>
  3112 + <target_step/>
  3113 + <is_enabled>Y</is_enabled>
  3114 + <nr_valuename>c1</nr_valuename>
  3115 + <descriptions_valuename>c2</descriptions_valuename>
  3116 + <fields_valuename>c3</fields_valuename>
  3117 + <codes_valuename>c4</codes_valuename>
  3118 + <max_errors/>
  3119 + <max_pct_errors/>
  3120 + <min_pct_rows/>
  3121 + </error>
  3122 + </step_error_handling>
  3123 + <slave-step-copy-partition-distribution>
  3124 +</slave-step-copy-partition-distribution>
  3125 + <slave_transformation>N</slave_transformation>
  3126 +
  3127 +</transformation>
... ...
src/main/resources/datatools/ktrs/ttinfodetailDataInputMetaData.ktr
1   -<?xml version="1.0" encoding="UTF-8"?>
2   -<transformation>
3   - <info>
4   - <name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x5bfc;&#x5165;&#x5143;&#x6570;&#x636e;</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>erroroutputdir</name>
14   - <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project_code&#x2f;runtime_temp&#x2f;bsth_control_u_d_files&#x2f;erroroutput</default_value>
15   - <description>ktr step&#x914d;&#x7f6e;&#x7684;&#x9519;&#x8bef;&#x8f93;&#x51fa;&#x76ee;&#x5f55;</description>
16   - </parameter>
17   - <parameter>
18   - <name>excelfieldnames</name>
19   - <default_value>&#x8def;&#x724c;,&#x51fa;&#x573a;,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;1,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;1,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;2,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;2,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;3,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;3,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;4,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;4,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;5,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;5,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;6,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;6,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;7,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;7,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;8,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;8,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;9,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;9,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;10,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;10,&#x8fdb;&#x573a;</default_value>
20   - <description>&#x65f6;&#x523b;&#x8868;excel&#x8f93;&#x5165;&#x5b57;&#x6bb5;&#x540d;&#xff0c;&#x4ee5;&#x9017;&#x53f7;&#x8fde;&#x63a5;</description>
21   - </parameter>
22   - <parameter>
23   - <name>filepath</name>
24   - <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project_code&#x2f;bsth_project&#x2f;bsth_control_etl&#x2f;&#x95f5;&#x884c;&#x516c;&#x4ea4;&#x2f;&#x95f5;&#x884c;26&#x8def;&#x65f6;&#x523b;&#x8868;160630&#x65f6;&#x523b;&#x8868;.xls</default_value>
25   - <description>&#x5f85;&#x5904;&#x7406;&#x5bfc;&#x5165;&#x7684;excel&#x6587;&#x4ef6;</description>
26   - </parameter>
27   - <parameter>
28   - <name>injectktrfile</name>
29   - <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project_code&#x2f;bsth_project&#x2f;bsth_control_parent&#x2f;bsth_control&#x2f;src&#x2f;main&#x2f;resources&#x2f;datatools&#x2f;ktrs&#x2f;ttinfodetailDataInput.ktr</default_value>
30   - <description>&#x6ce8;&#x5165;&#x5143;&#x6570;&#x636e;&#x7684;ktr&#x6587;&#x4ef6;</description>
31   - </parameter>
32   - <parameter>
33   - <name>lineinfoid</name>
34   - <default_value>1000</default_value>
35   - <description>&#x7ebf;&#x8def;&#x6807;&#x51c6;id</description>
36   - </parameter>
37   - <parameter>
38   - <name>normalizefieldnames</name>
39   - <default_value>&#x51fa;&#x573a;,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;1,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;1,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;2,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;2,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;3,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;3,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;4,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;4,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;5,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;5,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;6,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;6,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;7,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;7,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;8,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;8,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;9,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;9,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;10,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;10,&#x8fdb;&#x573a;</default_value>
40   - <description>&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;&#x5b57;&#x6bb5;&#x540d;&#xff0c;&#x4ee5;&#x9017;&#x53f7;&#x8fde;&#x63a5;</description>
41   - </parameter>
42   - <parameter>
43   - <name>sheetname</name>
44   - <default_value>&#x5de5;&#x4f5c;&#x8868;1</default_value>
45   - <description>xls sheet&#x540d;&#x5b57;</description>
46   - </parameter>
47   - <parameter>
48   - <name>tccname</name>
49   - <default_value>&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;&#x505c;&#x8f66;&#x573a;</default_value>
50   - <description>&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</description>
51   - </parameter>
52   - <parameter>
53   - <name>ttid</name>
54   - <default_value>1</default_value>
55   - <description>&#x65f6;&#x523b;&#x8868;id</description>
56   - </parameter>
57   - <parameter>
58   - <name>ttinfoname</name>
59   - <default_value>&#x8868;2</default_value>
60   - <description>&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;</description>
61   - </parameter>
62   - <parameter>
63   - <name>xlid</name>
64   - <default_value>-999</default_value>
65   - <description/>
66   - </parameter>
67   - <parameter>
68   - <name>xlname</name>
69   - <default_value>&#x95f5;&#x884c;26&#x8def;</default_value>
70   - <description>&#x7ebf;&#x8def;&#x540d;&#x79f0;</description>
71   - </parameter>
72   - <parameter>
73   - <name>zdlyversion</name>
74   - <default_value>-1</default_value>
75   - <description/>
76   - </parameter>
77   - </parameters>
78   - <log>
79   -<trans-log-table><connection/>
80   -<schema/>
81   -<table/>
82   -<size_limit_lines/>
83   -<interval/>
84   -<timeout_days/>
85   -<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>
86   -<perf-log-table><connection/>
87   -<schema/>
88   -<table/>
89   -<interval/>
90   -<timeout_days/>
91   -<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>
92   -<channel-log-table><connection/>
93   -<schema/>
94   -<table/>
95   -<timeout_days/>
96   -<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>
97   -<step-log-table><connection/>
98   -<schema/>
99   -<table/>
100   -<timeout_days/>
101   -<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>
102   -<metrics-log-table><connection/>
103   -<schema/>
104   -<table/>
105   -<timeout_days/>
106   -<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>
107   - </log>
108   - <maxdate>
109   - <connection/>
110   - <table/>
111   - <field/>
112   - <offset>0.0</offset>
113   - <maxdiff>0.0</maxdiff>
114   - </maxdate>
115   - <size_rowset>10000</size_rowset>
116   - <sleep_time_empty>50</sleep_time_empty>
117   - <sleep_time_full>50</sleep_time_full>
118   - <unique_connections>N</unique_connections>
119   - <feedback_shown>Y</feedback_shown>
120   - <feedback_size>50000</feedback_size>
121   - <using_thread_priorities>Y</using_thread_priorities>
122   - <shared_objects_file/>
123   - <capture_step_performance>N</capture_step_performance>
124   - <step_performance_capturing_delay>1000</step_performance_capturing_delay>
125   - <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
126   - <dependencies>
127   - </dependencies>
128   - <partitionschemas>
129   - </partitionschemas>
130   - <slaveservers>
131   - </slaveservers>
132   - <clusterschemas>
133   - </clusterschemas>
134   - <created_user>-</created_user>
135   - <created_date>2016&#x2f;07&#x2f;01 09&#x3a;55&#x3a;32.649</created_date>
136   - <modified_user>-</modified_user>
137   - <modified_date>2016&#x2f;07&#x2f;01 09&#x3a;55&#x3a;32.649</modified_date>
138   - <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
139   - <is_key_private>N</is_key_private>
140   - </info>
141   - <notepads>
142   - </notepads>
143   - <connection>
144   - <name>192.168.168.1_jwgl_dw</name>
145   - <server>192.168.168.1</server>
146   - <type>ORACLE</type>
147   - <access>Native</access>
148   - <database>orcl</database>
149   - <port>1521</port>
150   - <username>jwgl_dw</username>
151   - <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password>
152   - <servername/>
153   - <data_tablespace/>
154   - <index_tablespace/>
155   - <attributes>
156   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
157   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
158   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
159   - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
160   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
161   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
162   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
163   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
164   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
165   - </attributes>
166   - </connection>
167   - <connection>
168   - <name>bus_control_variable</name>
169   - <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
170   - <type>MYSQL</type>
171   - <access>Native</access>
172   - <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
173   - <port>3306</port>
174   - <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
175   - <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
176   - <servername/>
177   - <data_tablespace/>
178   - <index_tablespace/>
179   - <attributes>
180   - <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
181   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
182   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
183   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
184   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
185   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
186   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
187   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
188   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
189   - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
190   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
191   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
192   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
193   - </attributes>
194   - </connection>
195   - <connection>
196   - <name>bus_control_&#x516c;&#x53f8;_201</name>
197   - <server>localhost</server>
198   - <type>MYSQL</type>
199   - <access>Native</access>
200   - <database>control</database>
201   - <port>3306</port>
202   - <username>root</username>
203   - <password>Encrypted </password>
204   - <servername/>
205   - <data_tablespace/>
206   - <index_tablespace/>
207   - <attributes>
208   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
209   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
210   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
211   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
212   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
213   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
214   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
215   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
216   - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
217   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
218   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
219   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
220   - </attributes>
221   - </connection>
222   - <connection>
223   - <name>bus_control_&#x672c;&#x673a;</name>
224   - <server>localhost</server>
225   - <type>MYSQL</type>
226   - <access>Native</access>
227   - <database>control</database>
228   - <port>3306</port>
229   - <username>root</username>
230   - <password>Encrypted </password>
231   - <servername/>
232   - <data_tablespace/>
233   - <index_tablespace/>
234   - <attributes>
235   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
236   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
237   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
238   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
239   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
240   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
241   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
242   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
243   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
244   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
245   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
246   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
247   - </attributes>
248   - </connection>
249   - <connection>
250   - <name>xlab_mysql_youle</name>
251   - <server>101.231.124.8</server>
252   - <type>MYSQL</type>
253   - <access>Native</access>
254   - <database>xlab_youle</database>
255   - <port>45687</port>
256   - <username>xlab-youle</username>
257   - <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
258   - <servername/>
259   - <data_tablespace/>
260   - <index_tablespace/>
261   - <attributes>
262   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
263   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
264   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
265   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
266   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
267   - <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
268   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
269   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
270   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
271   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
272   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
273   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
274   - </attributes>
275   - </connection>
276   - <connection>
277   - <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
278   - <server>localhost</server>
279   - <type>MYSQL</type>
280   - <access>Native</access>
281   - <database>xlab_youle</database>
282   - <port>3306</port>
283   - <username>root</username>
284   - <password>Encrypted </password>
285   - <servername/>
286   - <data_tablespace/>
287   - <index_tablespace/>
288   - <attributes>
289   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
290   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
291   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
292   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
293   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
294   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
295   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
296   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
297   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
298   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
299   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
300   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
301   - </attributes>
302   - </connection>
303   - <connection>
304   - <name>xlab_youle</name>
305   - <server/>
306   - <type>MYSQL</type>
307   - <access>JNDI</access>
308   - <database>xlab_youle</database>
309   - <port>1521</port>
310   - <username/>
311   - <password>Encrypted </password>
312   - <servername/>
313   - <data_tablespace/>
314   - <index_tablespace/>
315   - <attributes>
316   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
317   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
318   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
319   - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
320   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
321   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
322   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
323   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
324   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
325   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
326   - </attributes>
327   - </connection>
328   - <order>
329   - <hop> <from>&#x83b7;&#x53d6;excel&#x6587;&#x4ef6;&#x540d;</from><to>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</to><enabled>Y</enabled> </hop>
330   - <hop> <from>&#x83b7;&#x53d6;excel&#x5b57;&#x6bb5;&#x540d;&#x5b57;&#x7b26;&#x4e32;</from><to>&#x9017;&#x53f7;&#x5207;&#x5206;&#x6210;&#x5b57;&#x6bb5;&#x540d;</to><enabled>Y</enabled> </hop>
331   - <hop> <from>&#x9017;&#x53f7;&#x5207;&#x5206;&#x6210;&#x5b57;&#x6bb5;&#x540d;</from><to>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
332   - <hop> <from>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</from><to>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</to><enabled>Y</enabled> </hop>
333   - <hop> <from>&#x83b7;&#x53d6;normalize&#x5b57;&#x6bb5;&#x540d;&#x5b57;&#x7b26;&#x4e32;</from><to>&#x9017;&#x53f7;&#x5207;&#x5206;&#x6210;&#x5b57;&#x6bb5;&#x540d; 2</to><enabled>Y</enabled> </hop>
334   - <hop> <from>&#x9017;&#x53f7;&#x5207;&#x5206;&#x6210;&#x5b57;&#x6bb5;&#x540d; 2</from><to>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
335   - <hop> <from>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</from><to>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</to><enabled>Y</enabled> </hop>
336   - <hop> <from>&#x83b7;&#x53d6;&#x7ebf;&#x8def;&#x540d;&#x79f0;</from><to>&#x589e;&#x52a0;&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata</to><enabled>Y</enabled> </hop>
337   - <hop> <from>&#x589e;&#x52a0;&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata</from><to>&#x66ff;&#x6362;&#x7ebf;&#x8def;&#x540d;&#x79f0;</to><enabled>Y</enabled> </hop>
338   - <hop> <from>&#x66ff;&#x6362;&#x7ebf;&#x8def;&#x540d;&#x79f0;</from><to>&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</to><enabled>Y</enabled> </hop>
339   - <hop> <from>&#x589e;&#x52a0;&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata</from><to>&#x66ff;&#x6362;&#x505c;&#x8f66;&#x5382;&#x540d;&#x5b57; </to><enabled>Y</enabled> </hop>
340   - <hop> <from>&#x66ff;&#x6362;&#x505c;&#x8f66;&#x5382;&#x540d;&#x5b57; </from><to>&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</to><enabled>Y</enabled> </hop>
341   - <hop> <from>&#x83b7;&#x53d6;&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;</from><to>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;metadata</to><enabled>Y</enabled> </hop>
342   - <hop> <from>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;metadata</from><to>&#x66ff;&#x6362;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;</to><enabled>Y</enabled> </hop>
343   - <hop> <from>&#x66ff;&#x6362;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;</from><to>&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</to><enabled>Y</enabled> </hop>
344   - <hop> <from>&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</from><to>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</to><enabled>Y</enabled> </hop>
345   - <hop> <from>&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</from><to>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</to><enabled>Y</enabled> </hop>
346   - <hop> <from>&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</from><to>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</to><enabled>Y</enabled> </hop>
347   - <hop> <from>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</from><to>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</to><enabled>Y</enabled> </hop>
348   - <hop> <from>&#x83b7;&#x53d6;&#x65f6;&#x523b;&#x8868;id</from><to>&#x5220;&#x9664;&#x4e4b;&#x524d;&#x7684;&#x660e;&#x7ec6;&#x4fe1;&#x606f;</to><enabled>Y</enabled> </hop>
349   - <hop> <from>&#x83b7;&#x53d6;&#x7ebf;&#x8def;&#x6807;&#x51c6;id</from><to>&#x505c;&#x8f66;&#x573a;&#x7f16;&#x7801;</to><enabled>Y</enabled> </hop>
350   - <hop> <from>&#x505c;&#x8f66;&#x573a;&#x7f16;&#x7801;</from><to>&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;</to><enabled>Y</enabled> </hop>
351   - <hop> <from>&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;</from><to>&#x589e;&#x52a0;&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata</to><enabled>Y</enabled> </hop>
352   - <hop> <from>&#x589e;&#x52a0;&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c; metadata</from><to>&#x66ff;&#x6362;&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c;</to><enabled>Y</enabled> </hop>
353   - <hop> <from>&#x66ff;&#x6362;&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c;</from><to>&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c;metadata&#x5b57;&#x6bb5;</to><enabled>Y</enabled> </hop>
354   - <hop> <from>&#x83b7;&#x53d6;&#x7ad9;&#x70b9;&#x8def;&#x7531;version</from><to>&#x589e;&#x52a0;&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c; metadata</to><enabled>Y</enabled> </hop>
355   - <hop> <from>&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c;metadata&#x5b57;&#x6bb5;</from><to>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</to><enabled>Y</enabled> </hop>
356   - </order>
357   - <step>
358   - <name>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</name>
359   - <type>MetaInject</type>
360   - <description/>
361   - <distribute>Y</distribute>
362   - <custom_distribution/>
363   - <copies>1</copies>
364   - <partitioning>
365   - <method>none</method>
366   - <schema_name/>
367   - </partitioning>
368   - <specification_method>filename</specification_method>
369   - <trans_object_id/>
370   - <trans_name/>
371   - <filename>&#x24;&#x7b;injectktrfile&#x7d;</filename>
372   - <directory_path/>
373   - <source_step/>
374   - <source_output_fields> </source_output_fields> <target_file/>
375   - <no_execution>N</no_execution>
376   - <stream_source_step/>
377   - <stream_target_step/>
378   - <mappings> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
379   - <target_attribute_key>FORMAT</target_attribute_key>
380   - <target_detail>Y</target_detail>
381   - <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
382   - <source_field>format</source_field>
383   - </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
384   - <target_attribute_key>REPEAT</target_attribute_key>
385   - <target_detail>Y</target_detail>
386   - <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
387   - <source_field>repeat</source_field>
388   - </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
389   - <target_attribute_key>TRIM_TYPE</target_attribute_key>
390   - <target_detail>Y</target_detail>
391   - <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
392   - <source_field>trim_type</source_field>
393   - </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
394   - <target_attribute_key>FILENAME</target_attribute_key>
395   - <target_detail>Y</target_detail>
396   - <source_step>&#x83b7;&#x53d6;excel&#x6587;&#x4ef6;&#x540d;</source_step>
397   - <source_field>filepath_</source_field>
398   - </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
399   - <target_attribute_key>PRECISION</target_attribute_key>
400   - <target_detail>Y</target_detail>
401   - <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
402   - <source_field>precision</source_field>
403   - </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
404   - <target_attribute_key>TYPE</target_attribute_key>
405   - <target_detail>Y</target_detail>
406   - <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
407   - <source_field>type</source_field>
408   - </mapping> <mapping> <target_step_name>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;&#xff0c;&#x7ebf;&#x8def;&#x540d;&#x5b57;&#xff0c;&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</target_step_name>
409   - <target_attribute_key>DATA_VALUE</target_attribute_key>
410   - <target_detail>Y</target_detail>
411   - <source_step>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</source_step>
412   - <source_field>col_value</source_field>
413   - </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
414   - <target_attribute_key>LENGTH</target_attribute_key>
415   - <target_detail>Y</target_detail>
416   - <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
417   - <source_field>length</source_field>
418   - </mapping> <mapping> <target_step_name>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;&#xff0c;&#x7ebf;&#x8def;&#x540d;&#x5b57;&#xff0c;&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</target_step_name>
419   - <target_attribute_key>TYPE</target_attribute_key>
420   - <target_detail>Y</target_detail>
421   - <source_step>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</source_step>
422   - <source_field>col_type</source_field>
423   - </mapping> <mapping> <target_step_name>&#x884c;&#x8f6c;&#x5217;</target_step_name>
424   - <target_attribute_key>NAME</target_attribute_key>
425   - <target_detail>Y</target_detail>
426   - <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</source_step>
427   - <source_field>fieldName</source_field>
428   - </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
429   - <target_attribute_key>NAME</target_attribute_key>
430   - <target_detail>Y</target_detail>
431   - <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
432   - <source_field>fieldname</source_field>
433   - </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name>
434   - <target_attribute_key>NAME</target_attribute_key>
435   - <target_detail>Y</target_detail>
436   - <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step>
437   - <source_field>nfieldname</source_field>
438   - </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
439   - <target_attribute_key>LENGTH</target_attribute_key>
440   - <target_detail>Y</target_detail>
441   - <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
442   - <source_field>length</source_field>
443   - </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
444   - <target_attribute_key>SHEET_NAME</target_attribute_key>
445   - <target_detail>Y</target_detail>
446   - <source_step>&#x83b7;&#x53d6;excel&#x6587;&#x4ef6;&#x540d;</source_step>
447   - <source_field>sheetname_</source_field>
448   - </mapping> <mapping> <target_step_name>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;&#xff0c;&#x7ebf;&#x8def;&#x540d;&#x5b57;&#xff0c;&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</target_step_name>
449   - <target_attribute_key>NAME</target_attribute_key>
450   - <target_detail>Y</target_detail>
451   - <source_step>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</source_step>
452   - <source_field>col_name</source_field>
453   - </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
454   - <target_attribute_key>TYPE</target_attribute_key>
455   - <target_detail>Y</target_detail>
456   - <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
457   - <source_field>fieldtype</source_field>
458   - </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
459   - <target_attribute_key>NAME</target_attribute_key>
460   - <target_detail>Y</target_detail>
461   - <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
462   - <source_field>fieldName</source_field>
463   - </mapping> <mapping> <target_step_name>&#x884c;&#x8f6c;&#x5217;</target_step_name>
464   - <target_attribute_key>VALUE</target_attribute_key>
465   - <target_detail>Y</target_detail>
466   - <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</source_step>
467   - <source_field>fieldName</source_field>
468   - </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
469   - <target_attribute_key>TRIM_TYPE</target_attribute_key>
470   - <target_detail>Y</target_detail>
471   - <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
472   - <source_field>trim_type</source_field>
473   - </mapping> <mapping> <target_step_name>&#x884c;&#x8f6c;&#x5217;</target_step_name>
474   - <target_attribute_key>NORMALISED</target_attribute_key>
475   - <target_detail>Y</target_detail>
476   - <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</source_step>
477   - <source_field>value</source_field>
478   - </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
479   - <target_attribute_key>REPEAT</target_attribute_key>
480   - <target_detail>Y</target_detail>
481   - <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
482   - <source_field>repeat</source_field>
483   - </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name>
484   - <target_attribute_key>NORMALISED</target_attribute_key>
485   - <target_detail>Y</target_detail>
486   - <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step>
487   - <source_field>valuefield</source_field>
488   - </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name>
489   - <target_attribute_key>VALUE</target_attribute_key>
490   - <target_detail>Y</target_detail>
491   - <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step>
492   - <source_field>nfieldname</source_field>
493   - </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
494   - <target_attribute_key>FORMAT</target_attribute_key>
495   - <target_detail>Y</target_detail>
496   - <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
497   - <source_field>format</source_field>
498   - </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
499   - <target_attribute_key>PRECISION</target_attribute_key>
500   - <target_detail>Y</target_detail>
501   - <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
502   - <source_field>precision</source_field>
503   - </mapping> </mappings> <cluster_schema/>
504   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
505   - <xloc>876</xloc>
506   - <yloc>167</yloc>
507   - <draw>Y</draw>
508   - </GUI>
509   - </step>
510   -
511   - <step>
512   - <name>&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;</name>
513   - <type>DBLookup</type>
514   - <description/>
515   - <distribute>Y</distribute>
516   - <custom_distribution/>
517   - <copies>1</copies>
518   - <partitioning>
519   - <method>none</method>
520   - <schema_name/>
521   - </partitioning>
522   - <connection>bus_control_variable</connection>
523   - <cache>N</cache>
524   - <cache_load_all>N</cache_load_all>
525   - <cache_size>0</cache_size>
526   - <lookup>
527   - <schema/>
528   - <table>bsth_c_car_park</table>
529   - <orderby/>
530   - <fail_on_multiple>N</fail_on_multiple>
531   - <eat_row_on_failure>N</eat_row_on_failure>
532   - <key>
533   - <name>car_park</name>
534   - <field>park_code</field>
535   - <condition>&#x3d;</condition>
536   - <name2/>
537   - </key>
538   - <value>
539   - <name>park_name</name>
540   - <rename>tccname_</rename>
541   - <default/>
542   - <type>String</type>
543   - </value>
544   - </lookup>
545   - <cluster_schema/>
546   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
547   - <xloc>319</xloc>
548   - <yloc>468</yloc>
549   - <draw>Y</draw>
550   - </GUI>
551   - </step>
552   -
553   - <step>
554   - <name>&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</name>
555   - <type>SelectValues</type>
556   - <description/>
557   - <distribute>Y</distribute>
558   - <custom_distribution/>
559   - <copies>1</copies>
560   - <partitioning>
561   - <method>none</method>
562   - <schema_name/>
563   - </partitioning>
564   - <fields> <field> <name>col_name</name>
565   - <rename/>
566   - <length>-2</length>
567   - <precision>-2</precision>
568   - </field> <field> <name>col_type</name>
569   - <rename/>
570   - <length>-2</length>
571   - <precision>-2</precision>
572   - </field> <field> <name>col_value</name>
573   - <rename/>
574   - <length>-2</length>
575   - <precision>-2</precision>
576   - </field> <select_unspecified>N</select_unspecified>
577   - </fields> <cluster_schema/>
578   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
579   - <xloc>743</xloc>
580   - <yloc>470</yloc>
581   - <draw>Y</draw>
582   - </GUI>
583   - </step>
584   -
585   - <step>
586   - <name>&#x505c;&#x8f66;&#x573a;&#x7f16;&#x7801;</name>
587   - <type>DBLookup</type>
588   - <description/>
589   - <distribute>Y</distribute>
590   - <custom_distribution/>
591   - <copies>1</copies>
592   - <partitioning>
593   - <method>none</method>
594   - <schema_name/>
595   - </partitioning>
596   - <connection>bus_control_variable</connection>
597   - <cache>N</cache>
598   - <cache_load_all>N</cache_load_all>
599   - <cache_size>0</cache_size>
600   - <lookup>
601   - <schema/>
602   - <table>bsth_c_line_information</table>
603   - <orderby/>
604   - <fail_on_multiple>N</fail_on_multiple>
605   - <eat_row_on_failure>N</eat_row_on_failure>
606   - <key>
607   - <name>lineinfoid_</name>
608   - <field>id</field>
609   - <condition>&#x3d;</condition>
610   - <name2/>
611   - </key>
612   - <value>
613   - <name>car_park</name>
614   - <rename>car_park</rename>
615   - <default/>
616   - <type>String</type>
617   - </value>
618   - </lookup>
619   - <cluster_schema/>
620   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
621   - <xloc>182</xloc>
622   - <yloc>467</yloc>
623   - <draw>Y</draw>
624   - </GUI>
625   - </step>
626   -
627   - <step>
628   - <name>&#x5220;&#x9664;&#x4e4b;&#x524d;&#x7684;&#x660e;&#x7ec6;&#x4fe1;&#x606f;</name>
629   - <type>ExecSQL</type>
630   - <description/>
631   - <distribute>Y</distribute>
632   - <custom_distribution/>
633   - <copies>1</copies>
634   - <partitioning>
635   - <method>none</method>
636   - <schema_name/>
637   - </partitioning>
638   - <connection>bus_control_variable</connection>
639   - <execute_each_row>Y</execute_each_row>
640   - <single_statement>N</single_statement>
641   - <replace_variables>N</replace_variables>
642   - <quoteString>N</quoteString>
643   - <sql>delete from bsth_c_s_ttinfo_detail where ttinfo &#x3d; &#x3f;</sql>
644   - <set_params>N</set_params>
645   - <insert_field/>
646   - <update_field/>
647   - <delete_field/>
648   - <read_field/>
649   - <arguments>
650   - <argument><name>ttid_</name></argument>
651   - </arguments>
652   - <cluster_schema/>
653   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
654   - <xloc>808</xloc>
655   - <yloc>16</yloc>
656   - <draw>Y</draw>
657   - </GUI>
658   - </step>
659   -
660   - <step>
661   - <name>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</name>
662   - <type>Dummy</type>
663   - <description/>
664   - <distribute>Y</distribute>
665   - <custom_distribution/>
666   - <copies>1</copies>
667   - <partitioning>
668   - <method>none</method>
669   - <schema_name/>
670   - </partitioning>
671   - <cluster_schema/>
672   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
673   - <xloc>883</xloc>
674   - <yloc>373</yloc>
675   - <draw>Y</draw>
676   - </GUI>
677   - </step>
678   -
679   - <step>
680   - <name>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</name>
681   - <type>Constant</type>
682   - <description/>
683   - <distribute>Y</distribute>
684   - <custom_distribution/>
685   - <copies>1</copies>
686   - <partitioning>
687   - <method>none</method>
688   - <schema_name/>
689   - </partitioning>
690   - <fields>
691   - <field>
692   - <name>fieldtype</name>
693   - <type>String</type>
694   - <format/>
695   - <currency/>
696   - <decimal/>
697   - <group/>
698   - <nullif>String</nullif>
699   - <length>-1</length>
700   - <precision>-1</precision>
701   - <set_empty_string>N</set_empty_string>
702   - </field>
703   - <field>
704   - <name>length</name>
705   - <type>String</type>
706   - <format/>
707   - <currency/>
708   - <decimal/>
709   - <group/>
710   - <nullif>-1</nullif>
711   - <length>-1</length>
712   - <precision>-1</precision>
713   - <set_empty_string>N</set_empty_string>
714   - </field>
715   - <field>
716   - <name>precision</name>
717   - <type>String</type>
718   - <format/>
719   - <currency/>
720   - <decimal/>
721   - <group/>
722   - <nullif>-1</nullif>
723   - <length>-1</length>
724   - <precision>-1</precision>
725   - <set_empty_string>N</set_empty_string>
726   - </field>
727   - <field>
728   - <name>trim_type</name>
729   - <type>String</type>
730   - <format/>
731   - <currency/>
732   - <decimal/>
733   - <group/>
734   - <nullif>none</nullif>
735   - <length>-1</length>
736   - <precision>-1</precision>
737   - <set_empty_string>N</set_empty_string>
738   - </field>
739   - <field>
740   - <name>repeat</name>
741   - <type>String</type>
742   - <format/>
743   - <currency/>
744   - <decimal/>
745   - <group/>
746   - <nullif>N</nullif>
747   - <length>-1</length>
748   - <precision>-1</precision>
749   - <set_empty_string>N</set_empty_string>
750   - </field>
751   - <field>
752   - <name>format</name>
753   - <type>String</type>
754   - <format/>
755   - <currency/>
756   - <decimal/>
757   - <group/>
758   - <nullif>&#x23;</nullif>
759   - <length>-1</length>
760   - <precision>-1</precision>
761   - <set_empty_string>N</set_empty_string>
762   - </field>
763   - </fields>
764   - <cluster_schema/>
765   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
766   - <xloc>622</xloc>
767   - <yloc>162</yloc>
768   - <draw>Y</draw>
769   - </GUI>
770   - </step>
771   -
772   - <step>
773   - <name>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</name>
774   - <type>Constant</type>
775   - <description/>
776   - <distribute>Y</distribute>
777   - <custom_distribution/>
778   - <copies>1</copies>
779   - <partitioning>
780   - <method>none</method>
781   - <schema_name/>
782   - </partitioning>
783   - <fields>
784   - <field>
785   - <name>valuefield</name>
786   - <type>String</type>
787   - <format/>
788   - <currency/>
789   - <decimal/>
790   - <group/>
791   - <nullif>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</nullif>
792   - <length>-1</length>
793   - <precision>-1</precision>
794   - <set_empty_string>N</set_empty_string>
795   - </field>
796   - </fields>
797   - <cluster_schema/>
798   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
799   - <xloc>628</xloc>
800   - <yloc>247</yloc>
801   - <draw>Y</draw>
802   - </GUI>
803   - </step>
804   -
805   - <step>
806   - <name>&#x589e;&#x52a0;&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata</name>
807   - <type>Constant</type>
808   - <description/>
809   - <distribute>Y</distribute>
810   - <custom_distribution/>
811   - <copies>1</copies>
812   - <partitioning>
813   - <method>none</method>
814   - <schema_name/>
815   - </partitioning>
816   - <fields>
817   - <field>
818   - <name>col_name</name>
819   - <type>String</type>
820   - <format/>
821   - <currency/>
822   - <decimal/>
823   - <group/>
824   - <nullif>tccname_</nullif>
825   - <length>-1</length>
826   - <precision>-1</precision>
827   - <set_empty_string>N</set_empty_string>
828   - </field>
829   - <field>
830   - <name>col_type</name>
831   - <type>String</type>
832   - <format/>
833   - <currency/>
834   - <decimal/>
835   - <group/>
836   - <nullif>String</nullif>
837   - <length>-1</length>
838   - <precision>-1</precision>
839   - <set_empty_string>N</set_empty_string>
840   - </field>
841   - <field>
842   - <name>col_value</name>
843   - <type>String</type>
844   - <format/>
845   - <currency/>
846   - <decimal/>
847   - <group/>
848   - <nullif>replace</nullif>
849   - <length>-1</length>
850   - <precision>-1</precision>
851   - <set_empty_string>N</set_empty_string>
852   - </field>
853   - </fields>
854   - <cluster_schema/>
855   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
856   - <xloc>461</xloc>
857   - <yloc>469</yloc>
858   - <draw>Y</draw>
859   - </GUI>
860   - </step>
861   -
862   - <step>
863   - <name>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;metadata</name>
864   - <type>Constant</type>
865   - <description/>
866   - <distribute>Y</distribute>
867   - <custom_distribution/>
868   - <copies>1</copies>
869   - <partitioning>
870   - <method>none</method>
871   - <schema_name/>
872   - </partitioning>
873   - <fields>
874   - <field>
875   - <name>col_name</name>
876   - <type>String</type>
877   - <format/>
878   - <currency/>
879   - <decimal/>
880   - <group/>
881   - <nullif>ttinfoname_</nullif>
882   - <length>-1</length>
883   - <precision>-1</precision>
884   - <set_empty_string>N</set_empty_string>
885   - </field>
886   - <field>
887   - <name>col_type</name>
888   - <type>String</type>
889   - <format/>
890   - <currency/>
891   - <decimal/>
892   - <group/>
893   - <nullif>String</nullif>
894   - <length>-1</length>
895   - <precision>-1</precision>
896   - <set_empty_string>N</set_empty_string>
897   - </field>
898   - <field>
899   - <name>col_value</name>
900   - <type>String</type>
901   - <format/>
902   - <currency/>
903   - <decimal/>
904   - <group/>
905   - <nullif>replace</nullif>
906   - <length>-1</length>
907   - <precision>-1</precision>
908   - <set_empty_string>N</set_empty_string>
909   - </field>
910   - </fields>
911   - <cluster_schema/>
912   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
913   - <xloc>608</xloc>
914   - <yloc>601</yloc>
915   - <draw>Y</draw>
916   - </GUI>
917   - </step>
918   -
919   - <step>
920   - <name>&#x589e;&#x52a0;&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata</name>
921   - <type>Constant</type>
922   - <description/>
923   - <distribute>Y</distribute>
924   - <custom_distribution/>
925   - <copies>1</copies>
926   - <partitioning>
927   - <method>none</method>
928   - <schema_name/>
929   - </partitioning>
930   - <fields>
931   - <field>
932   - <name>col_name</name>
933   - <type>String</type>
934   - <format/>
935   - <currency/>
936   - <decimal/>
937   - <group/>
938   - <nullif>xlname_</nullif>
939   - <length>-1</length>
940   - <precision>-1</precision>
941   - <set_empty_string>N</set_empty_string>
942   - </field>
943   - <field>
944   - <name>col_type</name>
945   - <type>String</type>
946   - <format/>
947   - <currency/>
948   - <decimal/>
949   - <group/>
950   - <nullif>String</nullif>
951   - <length>-1</length>
952   - <precision>-1</precision>
953   - <set_empty_string>N</set_empty_string>
954   - </field>
955   - <field>
956   - <name>col_value</name>
957   - <type>String</type>
958   - <format/>
959   - <currency/>
960   - <decimal/>
961   - <group/>
962   - <nullif>replace</nullif>
963   - <length>-1</length>
964   - <precision>-1</precision>
965   - <set_empty_string>N</set_empty_string>
966   - </field>
967   - </fields>
968   - <cluster_schema/>
969   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
970   - <xloc>383</xloc>
971   - <yloc>341</yloc>
972   - <draw>Y</draw>
973   - </GUI>
974   - </step>
975   -
976   - <step>
977   - <name>&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</name>
978   - <type>SelectValues</type>
979   - <description/>
980   - <distribute>Y</distribute>
981   - <custom_distribution/>
982   - <copies>1</copies>
983   - <partitioning>
984   - <method>none</method>
985   - <schema_name/>
986   - </partitioning>
987   - <fields> <field> <name>col_name</name>
988   - <rename/>
989   - <length>-2</length>
990   - <precision>-2</precision>
991   - </field> <field> <name>col_type</name>
992   - <rename/>
993   - <length>-2</length>
994   - <precision>-2</precision>
995   - </field> <field> <name>col_value</name>
996   - <rename/>
997   - <length>-2</length>
998   - <precision>-2</precision>
999   - </field> <select_unspecified>N</select_unspecified>
1000   - </fields> <cluster_schema/>
1001   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1002   - <xloc>888</xloc>
1003   - <yloc>601</yloc>
1004   - <draw>Y</draw>
1005   - </GUI>
1006   - </step>
1007   -
1008   - <step>
1009   - <name>&#x66ff;&#x6362;&#x505c;&#x8f66;&#x5382;&#x540d;&#x5b57; </name>
1010   - <type>SetValueField</type>
1011   - <description/>
1012   - <distribute>Y</distribute>
1013   - <custom_distribution/>
1014   - <copies>1</copies>
1015   - <partitioning>
1016   - <method>none</method>
1017   - <schema_name/>
1018   - </partitioning>
1019   - <fields>
1020   - <field>
1021   - <name>col_value</name>
1022   - <replaceby>tccname_</replaceby>
1023   - </field>
1024   - </fields>
1025   - <cluster_schema/>
1026   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1027   - <xloc>598</xloc>
1028   - <yloc>471</yloc>
1029   - <draw>Y</draw>
1030   - </GUI>
1031   - </step>
1032   -
1033   - <step>
1034   - <name>&#x66ff;&#x6362;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;</name>
1035   - <type>SetValueField</type>
1036   - <description/>
1037   - <distribute>Y</distribute>
1038   - <custom_distribution/>
1039   - <copies>1</copies>
1040   - <partitioning>
1041   - <method>none</method>
1042   - <schema_name/>
1043   - </partitioning>
1044   - <fields>
1045   - <field>
1046   - <name>col_value</name>
1047   - <replaceby>ttinfoname_</replaceby>
1048   - </field>
1049   - </fields>
1050   - <cluster_schema/>
1051   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1052   - <xloc>746</xloc>
1053   - <yloc>602</yloc>
1054   - <draw>Y</draw>
1055   - </GUI>
1056   - </step>
1057   -
1058   - <step>
1059   - <name>&#x66ff;&#x6362;&#x7ebf;&#x8def;&#x540d;&#x79f0;</name>
1060   - <type>SetValueField</type>
1061   - <description/>
1062   - <distribute>Y</distribute>
1063   - <custom_distribution/>
1064   - <copies>1</copies>
1065   - <partitioning>
1066   - <method>none</method>
1067   - <schema_name/>
1068   - </partitioning>
1069   - <fields>
1070   - <field>
1071   - <name>col_value</name>
1072   - <replaceby>xlname_</replaceby>
1073   - </field>
1074   - </fields>
1075   - <cluster_schema/>
1076   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1077   - <xloc>521</xloc>
1078   - <yloc>342</yloc>
1079   - <draw>Y</draw>
1080   - </GUI>
1081   - </step>
1082   -
1083   - <step>
1084   - <name>&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</name>
1085   - <type>SelectValues</type>
1086   - <description/>
1087   - <distribute>Y</distribute>
1088   - <custom_distribution/>
1089   - <copies>1</copies>
1090   - <partitioning>
1091   - <method>none</method>
1092   - <schema_name/>
1093   - </partitioning>
1094   - <fields> <field> <name>col_name</name>
1095   - <rename/>
1096   - <length>-2</length>
1097   - <precision>-2</precision>
1098   - </field> <field> <name>col_type</name>
1099   - <rename/>
1100   - <length>-2</length>
1101   - <precision>-2</precision>
1102   - </field> <field> <name>col_value</name>
1103   - <rename/>
1104   - <length>-2</length>
1105   - <precision>-2</precision>
1106   - </field> <select_unspecified>N</select_unspecified>
1107   - </fields> <cluster_schema/>
1108   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1109   - <xloc>668</xloc>
1110   - <yloc>343</yloc>
1111   - <draw>Y</draw>
1112   - </GUI>
1113   - </step>
1114   -
1115   - <step>
1116   - <name>&#x83b7;&#x53d6;excel&#x5b57;&#x6bb5;&#x540d;&#x5b57;&#x7b26;&#x4e32;</name>
1117   - <type>GetVariable</type>
1118   - <description/>
1119   - <distribute>Y</distribute>
1120   - <custom_distribution/>
1121   - <copies>1</copies>
1122   - <partitioning>
1123   - <method>none</method>
1124   - <schema_name/>
1125   - </partitioning>
1126   - <fields>
1127   - <field>
1128   - <name>fieldnames</name>
1129   - <variable>&#x24;&#x7b;excelfieldnames&#x7d;</variable>
1130   - <type>String</type>
1131   - <format/>
1132   - <currency/>
1133   - <decimal/>
1134   - <group/>
1135   - <length>-1</length>
1136   - <precision>-1</precision>
1137   - <trim_type>none</trim_type>
1138   - </field>
1139   - </fields>
1140   - <cluster_schema/>
1141   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1142   - <xloc>252</xloc>
1143   - <yloc>153</yloc>
1144   - <draw>Y</draw>
1145   - </GUI>
1146   - </step>
1147   -
1148   - <step>
1149   - <name>&#x83b7;&#x53d6;excel&#x6587;&#x4ef6;&#x540d;</name>
1150   - <type>GetVariable</type>
1151   - <description/>
1152   - <distribute>Y</distribute>
1153   - <custom_distribution/>
1154   - <copies>1</copies>
1155   - <partitioning>
1156   - <method>none</method>
1157   - <schema_name/>
1158   - </partitioning>
1159   - <fields>
1160   - <field>
1161   - <name>filepath_</name>
1162   - <variable>&#x24;&#x7b;filepath&#x7d;</variable>
1163   - <type>String</type>
1164   - <format/>
1165   - <currency/>
1166   - <decimal/>
1167   - <group/>
1168   - <length>-1</length>
1169   - <precision>-1</precision>
1170   - <trim_type>none</trim_type>
1171   - </field>
1172   - <field>
1173   - <name>erroroutputdir_</name>
1174   - <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
1175   - <type>String</type>
1176   - <format/>
1177   - <currency/>
1178   - <decimal/>
1179   - <group/>
1180   - <length>-1</length>
1181   - <precision>-1</precision>
1182   - <trim_type>none</trim_type>
1183   - </field>
1184   - <field>
1185   - <name>sheetname_</name>
1186   - <variable>&#x24;&#x7b;sheetname&#x7d;</variable>
1187   - <type>String</type>
1188   - <format/>
1189   - <currency/>
1190   - <decimal/>
1191   - <group/>
1192   - <length>-1</length>
1193   - <precision>-1</precision>
1194   - <trim_type>none</trim_type>
1195   - </field>
1196   - </fields>
1197   - <cluster_schema/>
1198   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1199   - <xloc>301</xloc>
1200   - <yloc>52</yloc>
1201   - <draw>Y</draw>
1202   - </GUI>
1203   - </step>
1204   -
1205   - <step>
1206   - <name>&#x83b7;&#x53d6;normalize&#x5b57;&#x6bb5;&#x540d;&#x5b57;&#x7b26;&#x4e32;</name>
1207   - <type>GetVariable</type>
1208   - <description/>
1209   - <distribute>Y</distribute>
1210   - <custom_distribution/>
1211   - <copies>1</copies>
1212   - <partitioning>
1213   - <method>none</method>
1214   - <schema_name/>
1215   - </partitioning>
1216   - <fields>
1217   - <field>
1218   - <name>normalizefieldnames_</name>
1219   - <variable>&#x24;&#x7b;normalizefieldnames&#x7d;</variable>
1220   - <type>String</type>
1221   - <format/>
1222   - <currency/>
1223   - <decimal/>
1224   - <group/>
1225   - <length>-1</length>
1226   - <precision>-1</precision>
1227   - <trim_type>none</trim_type>
1228   - </field>
1229   - </fields>
1230   - <cluster_schema/>
1231   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1232   - <xloc>261</xloc>
1233   - <yloc>251</yloc>
1234   - <draw>Y</draw>
1235   - </GUI>
1236   - </step>
1237   -
1238   - <step>
1239   - <name>&#x83b7;&#x53d6;&#x65f6;&#x523b;&#x8868;id</name>
1240   - <type>GetVariable</type>
1241   - <description/>
1242   - <distribute>Y</distribute>
1243   - <custom_distribution/>
1244   - <copies>1</copies>
1245   - <partitioning>
1246   - <method>none</method>
1247   - <schema_name/>
1248   - </partitioning>
1249   - <fields>
1250   - <field>
1251   - <name>ttid_</name>
1252   - <variable>&#x24;&#x7b;ttid&#x7d;</variable>
1253   - <type>Integer</type>
1254   - <format/>
1255   - <currency/>
1256   - <decimal/>
1257   - <group/>
1258   - <length>-1</length>
1259   - <precision>-1</precision>
1260   - <trim_type>none</trim_type>
1261   - </field>
1262   - </fields>
1263   - <cluster_schema/>
1264   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1265   - <xloc>608</xloc>
1266   - <yloc>16</yloc>
1267   - <draw>Y</draw>
1268   - </GUI>
1269   - </step>
1270   -
1271   - <step>
1272   - <name>&#x83b7;&#x53d6;&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;</name>
1273   - <type>GetVariable</type>
1274   - <description/>
1275   - <distribute>Y</distribute>
1276   - <custom_distribution/>
1277   - <copies>1</copies>
1278   - <partitioning>
1279   - <method>none</method>
1280   - <schema_name/>
1281   - </partitioning>
1282   - <fields>
1283   - <field>
1284   - <name>ttinfoname_</name>
1285   - <variable>&#x24;&#x7b;ttinfoname&#x7d;</variable>
1286   - <type>String</type>
1287   - <format/>
1288   - <currency/>
1289   - <decimal/>
1290   - <group/>
1291   - <length>-1</length>
1292   - <precision>-1</precision>
1293   - <trim_type>none</trim_type>
1294   - </field>
1295   - </fields>
1296   - <cluster_schema/>
1297   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1298   - <xloc>474</xloc>
1299   - <yloc>601</yloc>
1300   - <draw>Y</draw>
1301   - </GUI>
1302   - </step>
1303   -
1304   - <step>
1305   - <name>&#x83b7;&#x53d6;&#x7ebf;&#x8def;&#x540d;&#x79f0;</name>
1306   - <type>GetVariable</type>
1307   - <description/>
1308   - <distribute>Y</distribute>
1309   - <custom_distribution/>
1310   - <copies>1</copies>
1311   - <partitioning>
1312   - <method>none</method>
1313   - <schema_name/>
1314   - </partitioning>
1315   - <fields>
1316   - <field>
1317   - <name>xlname_</name>
1318   - <variable>&#x24;&#x7b;xlname&#x7d;</variable>
1319   - <type>String</type>
1320   - <format/>
1321   - <currency/>
1322   - <decimal/>
1323   - <group/>
1324   - <length>-1</length>
1325   - <precision>-1</precision>
1326   - <trim_type>none</trim_type>
1327   - </field>
1328   - </fields>
1329   - <cluster_schema/>
1330   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1331   - <xloc>184</xloc>
1332   - <yloc>342</yloc>
1333   - <draw>Y</draw>
1334   - </GUI>
1335   - </step>
1336   -
1337   - <step>
1338   - <name>&#x83b7;&#x53d6;&#x7ebf;&#x8def;&#x6807;&#x51c6;id</name>
1339   - <type>GetVariable</type>
1340   - <description/>
1341   - <distribute>Y</distribute>
1342   - <custom_distribution/>
1343   - <copies>1</copies>
1344   - <partitioning>
1345   - <method>none</method>
1346   - <schema_name/>
1347   - </partitioning>
1348   - <fields>
1349   - <field>
1350   - <name>lineinfoid_</name>
1351   - <variable>&#x24;&#x7b;lineinfoid&#x7d;</variable>
1352   - <type>Integer</type>
1353   - <format/>
1354   - <currency/>
1355   - <decimal/>
1356   - <group/>
1357   - <length>-1</length>
1358   - <precision>-1</precision>
1359   - <trim_type>none</trim_type>
1360   - </field>
1361   - </fields>
1362   - <cluster_schema/>
1363   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1364   - <xloc>74</xloc>
1365   - <yloc>468</yloc>
1366   - <draw>Y</draw>
1367   - </GUI>
1368   - </step>
1369   -
1370   - <step>
1371   - <name>&#x9017;&#x53f7;&#x5207;&#x5206;&#x6210;&#x5b57;&#x6bb5;&#x540d;</name>
1372   - <type>SplitFieldToRows3</type>
1373   - <description/>
1374   - <distribute>Y</distribute>
1375   - <custom_distribution/>
1376   - <copies>1</copies>
1377   - <partitioning>
1378   - <method>none</method>
1379   - <schema_name/>
1380   - </partitioning>
1381   - <splitfield>fieldnames</splitfield>
1382   - <delimiter>,</delimiter>
1383   - <newfield>fieldname</newfield>
1384   - <rownum>N</rownum>
1385   - <rownum_field/>
1386   - <resetrownumber>Y</resetrownumber>
1387   - <delimiter_is_regex>N</delimiter_is_regex>
1388   - <cluster_schema/>
1389   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1390   - <xloc>442</xloc>
1391   - <yloc>153</yloc>
1392   - <draw>Y</draw>
1393   - </GUI>
1394   - </step>
1395   -
1396   - <step>
1397   - <name>&#x9017;&#x53f7;&#x5207;&#x5206;&#x6210;&#x5b57;&#x6bb5;&#x540d; 2</name>
1398   - <type>SplitFieldToRows3</type>
1399   - <description/>
1400   - <distribute>Y</distribute>
1401   - <custom_distribution/>
1402   - <copies>1</copies>
1403   - <partitioning>
1404   - <method>none</method>
1405   - <schema_name/>
1406   - </partitioning>
1407   - <splitfield>normalizefieldnames_</splitfield>
1408   - <delimiter>,</delimiter>
1409   - <newfield>nfieldname</newfield>
1410   - <rownum>N</rownum>
1411   - <rownum_field/>
1412   - <resetrownumber>Y</resetrownumber>
1413   - <delimiter_is_regex>N</delimiter_is_regex>
1414   - <cluster_schema/>
1415   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1416   - <xloc>444</xloc>
1417   - <yloc>247</yloc>
1418   - <draw>Y</draw>
1419   - </GUI>
1420   - </step>
1421   -
1422   - <step>
1423   - <name>&#x589e;&#x52a0;&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c; metadata</name>
1424   - <type>Constant</type>
1425   - <description/>
1426   - <distribute>Y</distribute>
1427   - <custom_distribution/>
1428   - <copies>1</copies>
1429   - <partitioning>
1430   - <method>none</method>
1431   - <schema_name/>
1432   - </partitioning>
1433   - <fields>
1434   - <field>
1435   - <name>col_name</name>
1436   - <type>String</type>
1437   - <format/>
1438   - <currency/>
1439   - <decimal/>
1440   - <group/>
1441   - <nullif>zdlyversion_</nullif>
1442   - <length>-1</length>
1443   - <precision>-1</precision>
1444   - <set_empty_string>N</set_empty_string>
1445   - </field>
1446   - <field>
1447   - <name>col_type</name>
1448   - <type>String</type>
1449   - <format/>
1450   - <currency/>
1451   - <decimal/>
1452   - <group/>
1453   - <nullif>String</nullif>
1454   - <length>-1</length>
1455   - <precision>-1</precision>
1456   - <set_empty_string>N</set_empty_string>
1457   - </field>
1458   - <field>
1459   - <name>col_value</name>
1460   - <type>String</type>
1461   - <format/>
1462   - <currency/>
1463   - <decimal/>
1464   - <group/>
1465   - <nullif>replace</nullif>
1466   - <length>-1</length>
1467   - <precision>-1</precision>
1468   - <set_empty_string>N</set_empty_string>
1469   - </field>
1470   - </fields>
1471   - <cluster_schema/>
1472   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1473   - <xloc>390</xloc>
1474   - <yloc>532</yloc>
1475   - <draw>Y</draw>
1476   - </GUI>
1477   - </step>
1478   -
1479   - <step>
1480   - <name>&#x66ff;&#x6362;&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c;</name>
1481   - <type>SetValueField</type>
1482   - <description/>
1483   - <distribute>Y</distribute>
1484   - <custom_distribution/>
1485   - <copies>1</copies>
1486   - <partitioning>
1487   - <method>none</method>
1488   - <schema_name/>
1489   - </partitioning>
1490   - <fields>
1491   - <field>
1492   - <name>col_value</name>
1493   - <replaceby>zdlyversion_</replaceby>
1494   - </field>
1495   - </fields>
1496   - <cluster_schema/>
1497   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1498   - <xloc>594</xloc>
1499   - <yloc>532</yloc>
1500   - <draw>Y</draw>
1501   - </GUI>
1502   - </step>
1503   -
1504   - <step>
1505   - <name>&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c;metadata&#x5b57;&#x6bb5;</name>
1506   - <type>SelectValues</type>
1507   - <description/>
1508   - <distribute>Y</distribute>
1509   - <custom_distribution/>
1510   - <copies>1</copies>
1511   - <partitioning>
1512   - <method>none</method>
1513   - <schema_name/>
1514   - </partitioning>
1515   - <fields> <field> <name>col_name</name>
1516   - <rename/>
1517   - <length>-2</length>
1518   - <precision>-2</precision>
1519   - </field> <field> <name>col_type</name>
1520   - <rename/>
1521   - <length>-2</length>
1522   - <precision>-2</precision>
1523   - </field> <field> <name>col_value</name>
1524   - <rename/>
1525   - <length>-2</length>
1526   - <precision>-2</precision>
1527   - </field> <select_unspecified>N</select_unspecified>
1528   - </fields> <cluster_schema/>
1529   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1530   - <xloc>741</xloc>
1531   - <yloc>533</yloc>
1532   - <draw>Y</draw>
1533   - </GUI>
1534   - </step>
1535   -
1536   - <step>
1537   - <name>&#x83b7;&#x53d6;&#x7ad9;&#x70b9;&#x8def;&#x7531;version</name>
1538   - <type>GetVariable</type>
1539   - <description/>
1540   - <distribute>Y</distribute>
1541   - <custom_distribution/>
1542   - <copies>1</copies>
1543   - <partitioning>
1544   - <method>none</method>
1545   - <schema_name/>
1546   - </partitioning>
1547   - <fields>
1548   - <field>
1549   - <name>zdlyversion_</name>
1550   - <variable>&#x24;&#x7b;zdlyversion&#x7d;</variable>
1551   - <type>String</type>
1552   - <format/>
1553   - <currency/>
1554   - <decimal/>
1555   - <group/>
1556   - <length>-1</length>
1557   - <precision>-1</precision>
1558   - <trim_type>none</trim_type>
1559   - </field>
1560   - </fields>
1561   - <cluster_schema/>
1562   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1563   - <xloc>187</xloc>
1564   - <yloc>534</yloc>
1565   - <draw>Y</draw>
1566   - </GUI>
1567   - </step>
1568   -
1569   - <step_error_handling>
1570   - </step_error_handling>
1571   - <slave-step-copy-partition-distribution>
1572   -</slave-step-copy-partition-distribution>
1573   - <slave_transformation>N</slave_transformation>
1574   -
1575   -</transformation>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x5bfc;&#x5165;&#x5143;&#x6570;&#x636e;</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>erroroutputdir</name>
  14 + <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project_code&#x2f;runtime_temp&#x2f;bsth_control_u_d_files&#x2f;erroroutput</default_value>
  15 + <description>ktr step&#x914d;&#x7f6e;&#x7684;&#x9519;&#x8bef;&#x8f93;&#x51fa;&#x76ee;&#x5f55;</description>
  16 + </parameter>
  17 + <parameter>
  18 + <name>excelfieldnames</name>
  19 + <default_value>&#x8def;&#x724c;,&#x51fa;&#x573a;,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;1,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;1,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;2,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;2,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;3,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;3,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;4,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;4,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;5,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;5,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;6,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;6,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;7,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;7,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;8,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;8,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;9,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;9,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;10,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;10,&#x8fdb;&#x573a;</default_value>
  20 + <description>&#x65f6;&#x523b;&#x8868;excel&#x8f93;&#x5165;&#x5b57;&#x6bb5;&#x540d;&#xff0c;&#x4ee5;&#x9017;&#x53f7;&#x8fde;&#x63a5;</description>
  21 + </parameter>
  22 + <parameter>
  23 + <name>filepath</name>
  24 + <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project_code&#x2f;bsth_project&#x2f;bsth_control_etl&#x2f;&#x95f5;&#x884c;&#x516c;&#x4ea4;&#x2f;&#x95f5;&#x884c;26&#x8def;&#x65f6;&#x523b;&#x8868;160630&#x65f6;&#x523b;&#x8868;.xls</default_value>
  25 + <description>&#x5f85;&#x5904;&#x7406;&#x5bfc;&#x5165;&#x7684;excel&#x6587;&#x4ef6;</description>
  26 + </parameter>
  27 + <parameter>
  28 + <name>injectktrfile</name>
  29 + <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project_code&#x2f;bsth_project&#x2f;bsth_control_parent&#x2f;bsth_control&#x2f;src&#x2f;main&#x2f;resources&#x2f;datatools&#x2f;ktrs&#x2f;ttinfodetailDataInput.ktr</default_value>
  30 + <description>&#x6ce8;&#x5165;&#x5143;&#x6570;&#x636e;&#x7684;ktr&#x6587;&#x4ef6;</description>
  31 + </parameter>
  32 + <parameter>
  33 + <name>lineinfoid</name>
  34 + <default_value>1000</default_value>
  35 + <description>&#x7ebf;&#x8def;&#x6807;&#x51c6;id</description>
  36 + </parameter>
  37 + <parameter>
  38 + <name>normalizefieldnames</name>
  39 + <default_value>&#x51fa;&#x573a;,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;1,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;1,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;2,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;2,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;3,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;3,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;4,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;4,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;5,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;5,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;6,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;6,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;7,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;7,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;8,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;8,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;9,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;9,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;10,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;10,&#x8fdb;&#x573a;</default_value>
  40 + <description>&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;&#x5b57;&#x6bb5;&#x540d;&#xff0c;&#x4ee5;&#x9017;&#x53f7;&#x8fde;&#x63a5;</description>
  41 + </parameter>
  42 + <parameter>
  43 + <name>sheetname</name>
  44 + <default_value>&#x5de5;&#x4f5c;&#x8868;1</default_value>
  45 + <description>xls sheet&#x540d;&#x5b57;</description>
  46 + </parameter>
  47 + <parameter>
  48 + <name>tccname</name>
  49 + <default_value>&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;&#x505c;&#x8f66;&#x573a;</default_value>
  50 + <description>&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</description>
  51 + </parameter>
  52 + <parameter>
  53 + <name>ttid</name>
  54 + <default_value>1</default_value>
  55 + <description>&#x65f6;&#x523b;&#x8868;id</description>
  56 + </parameter>
  57 + <parameter>
  58 + <name>ttinfoname</name>
  59 + <default_value>&#x8868;2</default_value>
  60 + <description>&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;</description>
  61 + </parameter>
  62 + <parameter>
  63 + <name>xlid</name>
  64 + <default_value>-999</default_value>
  65 + <description/>
  66 + </parameter>
  67 + <parameter>
  68 + <name>xlname</name>
  69 + <default_value>&#x95f5;&#x884c;26&#x8def;</default_value>
  70 + <description>&#x7ebf;&#x8def;&#x540d;&#x79f0;</description>
  71 + </parameter>
  72 + <parameter>
  73 + <name>zdlyversion</name>
  74 + <default_value>-1</default_value>
  75 + <description/>
  76 + </parameter>
  77 + </parameters>
  78 + <log>
  79 +<trans-log-table><connection/>
  80 +<schema/>
  81 +<table/>
  82 +<size_limit_lines/>
  83 +<interval/>
  84 +<timeout_days/>
  85 +<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>
  86 +<perf-log-table><connection/>
  87 +<schema/>
  88 +<table/>
  89 +<interval/>
  90 +<timeout_days/>
  91 +<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>
  92 +<channel-log-table><connection/>
  93 +<schema/>
  94 +<table/>
  95 +<timeout_days/>
  96 +<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>
  97 +<step-log-table><connection/>
  98 +<schema/>
  99 +<table/>
  100 +<timeout_days/>
  101 +<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>
  102 +<metrics-log-table><connection/>
  103 +<schema/>
  104 +<table/>
  105 +<timeout_days/>
  106 +<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>
  107 + </log>
  108 + <maxdate>
  109 + <connection/>
  110 + <table/>
  111 + <field/>
  112 + <offset>0.0</offset>
  113 + <maxdiff>0.0</maxdiff>
  114 + </maxdate>
  115 + <size_rowset>10000</size_rowset>
  116 + <sleep_time_empty>50</sleep_time_empty>
  117 + <sleep_time_full>50</sleep_time_full>
  118 + <unique_connections>N</unique_connections>
  119 + <feedback_shown>Y</feedback_shown>
  120 + <feedback_size>50000</feedback_size>
  121 + <using_thread_priorities>Y</using_thread_priorities>
  122 + <shared_objects_file/>
  123 + <capture_step_performance>N</capture_step_performance>
  124 + <step_performance_capturing_delay>1000</step_performance_capturing_delay>
  125 + <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
  126 + <dependencies>
  127 + </dependencies>
  128 + <partitionschemas>
  129 + </partitionschemas>
  130 + <slaveservers>
  131 + </slaveservers>
  132 + <clusterschemas>
  133 + </clusterschemas>
  134 + <created_user>-</created_user>
  135 + <created_date>2016&#x2f;07&#x2f;01 09&#x3a;55&#x3a;32.649</created_date>
  136 + <modified_user>-</modified_user>
  137 + <modified_date>2016&#x2f;07&#x2f;01 09&#x3a;55&#x3a;32.649</modified_date>
  138 + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
  139 + <is_key_private>N</is_key_private>
  140 + </info>
  141 + <notepads>
  142 + </notepads>
  143 + <connection>
  144 + <name>192.168.168.1_jwgl_dw</name>
  145 + <server>192.168.168.1</server>
  146 + <type>ORACLE</type>
  147 + <access>Native</access>
  148 + <database>orcl</database>
  149 + <port>1521</port>
  150 + <username>jwgl_dw</username>
  151 + <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password>
  152 + <servername/>
  153 + <data_tablespace/>
  154 + <index_tablespace/>
  155 + <attributes>
  156 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  157 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  158 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  159 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  160 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  161 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  162 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  163 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  164 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  165 + </attributes>
  166 + </connection>
  167 + <connection>
  168 + <name>bus_control_variable</name>
  169 + <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
  170 + <type>MYSQL</type>
  171 + <access>Native</access>
  172 + <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
  173 + <port>3306</port>
  174 + <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
  175 + <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
  176 + <servername/>
  177 + <data_tablespace/>
  178 + <index_tablespace/>
  179 + <attributes>
  180 + <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
  181 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  182 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  183 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  184 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  185 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  186 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  187 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  188 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  189 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  190 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  191 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  192 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  193 + </attributes>
  194 + </connection>
  195 + <connection>
  196 + <name>bus_control_&#x516c;&#x53f8;_201</name>
  197 + <server>localhost</server>
  198 + <type>MYSQL</type>
  199 + <access>Native</access>
  200 + <database>control</database>
  201 + <port>3306</port>
  202 + <username>root</username>
  203 + <password>Encrypted </password>
  204 + <servername/>
  205 + <data_tablespace/>
  206 + <index_tablespace/>
  207 + <attributes>
  208 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  209 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  210 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  211 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  212 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  213 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  214 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  215 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  216 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  217 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  218 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  219 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  220 + </attributes>
  221 + </connection>
  222 + <connection>
  223 + <name>bus_control_&#x672c;&#x673a;</name>
  224 + <server>localhost</server>
  225 + <type>MYSQL</type>
  226 + <access>Native</access>
  227 + <database>control</database>
  228 + <port>3306</port>
  229 + <username>root</username>
  230 + <password>Encrypted </password>
  231 + <servername/>
  232 + <data_tablespace/>
  233 + <index_tablespace/>
  234 + <attributes>
  235 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  236 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  237 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  238 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  239 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  240 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  241 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  242 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  243 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  244 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  245 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  246 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  247 + </attributes>
  248 + </connection>
  249 + <connection>
  250 + <name>xlab_mysql_youle</name>
  251 + <server>101.231.124.8</server>
  252 + <type>MYSQL</type>
  253 + <access>Native</access>
  254 + <database>xlab_youle</database>
  255 + <port>45687</port>
  256 + <username>xlab-youle</username>
  257 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
  258 + <servername/>
  259 + <data_tablespace/>
  260 + <index_tablespace/>
  261 + <attributes>
  262 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  263 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  264 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  265 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  266 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  267 + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
  268 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  269 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  270 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  271 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  272 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  273 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  274 + </attributes>
  275 + </connection>
  276 + <connection>
  277 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  278 + <server>localhost</server>
  279 + <type>MYSQL</type>
  280 + <access>Native</access>
  281 + <database>xlab_youle</database>
  282 + <port>3306</port>
  283 + <username>root</username>
  284 + <password>Encrypted </password>
  285 + <servername/>
  286 + <data_tablespace/>
  287 + <index_tablespace/>
  288 + <attributes>
  289 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  290 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  291 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  292 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  293 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  294 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  295 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  296 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  297 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  298 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  299 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  300 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  301 + </attributes>
  302 + </connection>
  303 + <connection>
  304 + <name>xlab_youle</name>
  305 + <server/>
  306 + <type>MYSQL</type>
  307 + <access>JNDI</access>
  308 + <database>xlab_youle</database>
  309 + <port>1521</port>
  310 + <username/>
  311 + <password>Encrypted </password>
  312 + <servername/>
  313 + <data_tablespace/>
  314 + <index_tablespace/>
  315 + <attributes>
  316 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  317 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  318 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  319 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  320 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  321 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  322 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  323 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  324 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  325 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  326 + </attributes>
  327 + </connection>
  328 + <order>
  329 + <hop> <from>&#x83b7;&#x53d6;excel&#x6587;&#x4ef6;&#x540d;</from><to>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</to><enabled>Y</enabled> </hop>
  330 + <hop> <from>&#x83b7;&#x53d6;excel&#x5b57;&#x6bb5;&#x540d;&#x5b57;&#x7b26;&#x4e32;</from><to>&#x9017;&#x53f7;&#x5207;&#x5206;&#x6210;&#x5b57;&#x6bb5;&#x540d;</to><enabled>Y</enabled> </hop>
  331 + <hop> <from>&#x9017;&#x53f7;&#x5207;&#x5206;&#x6210;&#x5b57;&#x6bb5;&#x540d;</from><to>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
  332 + <hop> <from>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</from><to>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</to><enabled>Y</enabled> </hop>
  333 + <hop> <from>&#x83b7;&#x53d6;normalize&#x5b57;&#x6bb5;&#x540d;&#x5b57;&#x7b26;&#x4e32;</from><to>&#x9017;&#x53f7;&#x5207;&#x5206;&#x6210;&#x5b57;&#x6bb5;&#x540d; 2</to><enabled>Y</enabled> </hop>
  334 + <hop> <from>&#x9017;&#x53f7;&#x5207;&#x5206;&#x6210;&#x5b57;&#x6bb5;&#x540d; 2</from><to>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
  335 + <hop> <from>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</from><to>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</to><enabled>Y</enabled> </hop>
  336 + <hop> <from>&#x83b7;&#x53d6;&#x7ebf;&#x8def;&#x540d;&#x79f0;</from><to>&#x589e;&#x52a0;&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata</to><enabled>Y</enabled> </hop>
  337 + <hop> <from>&#x589e;&#x52a0;&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata</from><to>&#x66ff;&#x6362;&#x7ebf;&#x8def;&#x540d;&#x79f0;</to><enabled>Y</enabled> </hop>
  338 + <hop> <from>&#x66ff;&#x6362;&#x7ebf;&#x8def;&#x540d;&#x79f0;</from><to>&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</to><enabled>Y</enabled> </hop>
  339 + <hop> <from>&#x589e;&#x52a0;&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata</from><to>&#x66ff;&#x6362;&#x505c;&#x8f66;&#x5382;&#x540d;&#x5b57; </to><enabled>Y</enabled> </hop>
  340 + <hop> <from>&#x66ff;&#x6362;&#x505c;&#x8f66;&#x5382;&#x540d;&#x5b57; </from><to>&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</to><enabled>Y</enabled> </hop>
  341 + <hop> <from>&#x83b7;&#x53d6;&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;</from><to>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;metadata</to><enabled>Y</enabled> </hop>
  342 + <hop> <from>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;metadata</from><to>&#x66ff;&#x6362;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;</to><enabled>Y</enabled> </hop>
  343 + <hop> <from>&#x66ff;&#x6362;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;</from><to>&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</to><enabled>Y</enabled> </hop>
  344 + <hop> <from>&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</from><to>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</to><enabled>Y</enabled> </hop>
  345 + <hop> <from>&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</from><to>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</to><enabled>Y</enabled> </hop>
  346 + <hop> <from>&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</from><to>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</to><enabled>Y</enabled> </hop>
  347 + <hop> <from>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</from><to>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</to><enabled>Y</enabled> </hop>
  348 + <hop> <from>&#x83b7;&#x53d6;&#x65f6;&#x523b;&#x8868;id</from><to>&#x5220;&#x9664;&#x4e4b;&#x524d;&#x7684;&#x660e;&#x7ec6;&#x4fe1;&#x606f;</to><enabled>Y</enabled> </hop>
  349 + <hop> <from>&#x83b7;&#x53d6;&#x7ebf;&#x8def;&#x6807;&#x51c6;id</from><to>&#x505c;&#x8f66;&#x573a;&#x7f16;&#x7801;</to><enabled>Y</enabled> </hop>
  350 + <hop> <from>&#x505c;&#x8f66;&#x573a;&#x7f16;&#x7801;</from><to>&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;</to><enabled>Y</enabled> </hop>
  351 + <hop> <from>&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;</from><to>&#x589e;&#x52a0;&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata</to><enabled>Y</enabled> </hop>
  352 + <hop> <from>&#x589e;&#x52a0;&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c; metadata</from><to>&#x66ff;&#x6362;&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c;</to><enabled>Y</enabled> </hop>
  353 + <hop> <from>&#x66ff;&#x6362;&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c;</from><to>&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c;metadata&#x5b57;&#x6bb5;</to><enabled>Y</enabled> </hop>
  354 + <hop> <from>&#x83b7;&#x53d6;&#x7ad9;&#x70b9;&#x8def;&#x7531;version</from><to>&#x589e;&#x52a0;&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c; metadata</to><enabled>Y</enabled> </hop>
  355 + <hop> <from>&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c;metadata&#x5b57;&#x6bb5;</from><to>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</to><enabled>Y</enabled> </hop>
  356 + </order>
  357 + <step>
  358 + <name>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</name>
  359 + <type>MetaInject</type>
  360 + <description/>
  361 + <distribute>Y</distribute>
  362 + <custom_distribution/>
  363 + <copies>1</copies>
  364 + <partitioning>
  365 + <method>none</method>
  366 + <schema_name/>
  367 + </partitioning>
  368 + <specification_method>filename</specification_method>
  369 + <trans_object_id/>
  370 + <trans_name/>
  371 + <filename>&#x24;&#x7b;injectktrfile&#x7d;</filename>
  372 + <directory_path/>
  373 + <source_step/>
  374 + <source_output_fields> </source_output_fields> <target_file/>
  375 + <no_execution>N</no_execution>
  376 + <stream_source_step/>
  377 + <stream_target_step/>
  378 + <mappings> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
  379 + <target_attribute_key>FORMAT</target_attribute_key>
  380 + <target_detail>Y</target_detail>
  381 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
  382 + <source_field>format</source_field>
  383 + </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
  384 + <target_attribute_key>REPEAT</target_attribute_key>
  385 + <target_detail>Y</target_detail>
  386 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
  387 + <source_field>repeat</source_field>
  388 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  389 + <target_attribute_key>TRIM_TYPE</target_attribute_key>
  390 + <target_detail>Y</target_detail>
  391 + <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
  392 + <source_field>trim_type</source_field>
  393 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  394 + <target_attribute_key>FILENAME</target_attribute_key>
  395 + <target_detail>Y</target_detail>
  396 + <source_step>&#x83b7;&#x53d6;excel&#x6587;&#x4ef6;&#x540d;</source_step>
  397 + <source_field>filepath_</source_field>
  398 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  399 + <target_attribute_key>PRECISION</target_attribute_key>
  400 + <target_detail>Y</target_detail>
  401 + <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
  402 + <source_field>precision</source_field>
  403 + </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
  404 + <target_attribute_key>TYPE</target_attribute_key>
  405 + <target_detail>Y</target_detail>
  406 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
  407 + <source_field>type</source_field>
  408 + </mapping> <mapping> <target_step_name>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;&#xff0c;&#x7ebf;&#x8def;&#x540d;&#x5b57;&#xff0c;&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</target_step_name>
  409 + <target_attribute_key>DATA_VALUE</target_attribute_key>
  410 + <target_detail>Y</target_detail>
  411 + <source_step>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</source_step>
  412 + <source_field>col_value</source_field>
  413 + </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
  414 + <target_attribute_key>LENGTH</target_attribute_key>
  415 + <target_detail>Y</target_detail>
  416 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
  417 + <source_field>length</source_field>
  418 + </mapping> <mapping> <target_step_name>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;&#xff0c;&#x7ebf;&#x8def;&#x540d;&#x5b57;&#xff0c;&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</target_step_name>
  419 + <target_attribute_key>TYPE</target_attribute_key>
  420 + <target_detail>Y</target_detail>
  421 + <source_step>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</source_step>
  422 + <source_field>col_type</source_field>
  423 + </mapping> <mapping> <target_step_name>&#x884c;&#x8f6c;&#x5217;</target_step_name>
  424 + <target_attribute_key>NAME</target_attribute_key>
  425 + <target_detail>Y</target_detail>
  426 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</source_step>
  427 + <source_field>fieldName</source_field>
  428 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  429 + <target_attribute_key>NAME</target_attribute_key>
  430 + <target_detail>Y</target_detail>
  431 + <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
  432 + <source_field>fieldname</source_field>
  433 + </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name>
  434 + <target_attribute_key>NAME</target_attribute_key>
  435 + <target_detail>Y</target_detail>
  436 + <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step>
  437 + <source_field>nfieldname</source_field>
  438 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  439 + <target_attribute_key>LENGTH</target_attribute_key>
  440 + <target_detail>Y</target_detail>
  441 + <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
  442 + <source_field>length</source_field>
  443 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  444 + <target_attribute_key>SHEET_NAME</target_attribute_key>
  445 + <target_detail>Y</target_detail>
  446 + <source_step>&#x83b7;&#x53d6;excel&#x6587;&#x4ef6;&#x540d;</source_step>
  447 + <source_field>sheetname_</source_field>
  448 + </mapping> <mapping> <target_step_name>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;&#xff0c;&#x7ebf;&#x8def;&#x540d;&#x5b57;&#xff0c;&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</target_step_name>
  449 + <target_attribute_key>NAME</target_attribute_key>
  450 + <target_detail>Y</target_detail>
  451 + <source_step>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</source_step>
  452 + <source_field>col_name</source_field>
  453 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  454 + <target_attribute_key>TYPE</target_attribute_key>
  455 + <target_detail>Y</target_detail>
  456 + <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
  457 + <source_field>fieldtype</source_field>
  458 + </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
  459 + <target_attribute_key>NAME</target_attribute_key>
  460 + <target_detail>Y</target_detail>
  461 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
  462 + <source_field>fieldName</source_field>
  463 + </mapping> <mapping> <target_step_name>&#x884c;&#x8f6c;&#x5217;</target_step_name>
  464 + <target_attribute_key>VALUE</target_attribute_key>
  465 + <target_detail>Y</target_detail>
  466 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</source_step>
  467 + <source_field>fieldName</source_field>
  468 + </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
  469 + <target_attribute_key>TRIM_TYPE</target_attribute_key>
  470 + <target_detail>Y</target_detail>
  471 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
  472 + <source_field>trim_type</source_field>
  473 + </mapping> <mapping> <target_step_name>&#x884c;&#x8f6c;&#x5217;</target_step_name>
  474 + <target_attribute_key>NORMALISED</target_attribute_key>
  475 + <target_detail>Y</target_detail>
  476 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</source_step>
  477 + <source_field>value</source_field>
  478 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  479 + <target_attribute_key>REPEAT</target_attribute_key>
  480 + <target_detail>Y</target_detail>
  481 + <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
  482 + <source_field>repeat</source_field>
  483 + </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name>
  484 + <target_attribute_key>NORMALISED</target_attribute_key>
  485 + <target_detail>Y</target_detail>
  486 + <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step>
  487 + <source_field>valuefield</source_field>
  488 + </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name>
  489 + <target_attribute_key>VALUE</target_attribute_key>
  490 + <target_detail>Y</target_detail>
  491 + <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step>
  492 + <source_field>nfieldname</source_field>
  493 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  494 + <target_attribute_key>FORMAT</target_attribute_key>
  495 + <target_detail>Y</target_detail>
  496 + <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
  497 + <source_field>format</source_field>
  498 + </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
  499 + <target_attribute_key>PRECISION</target_attribute_key>
  500 + <target_detail>Y</target_detail>
  501 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
  502 + <source_field>precision</source_field>
  503 + </mapping> </mappings> <cluster_schema/>
  504 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  505 + <xloc>876</xloc>
  506 + <yloc>167</yloc>
  507 + <draw>Y</draw>
  508 + </GUI>
  509 + </step>
  510 +
  511 + <step>
  512 + <name>&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;</name>
  513 + <type>DBLookup</type>
  514 + <description/>
  515 + <distribute>Y</distribute>
  516 + <custom_distribution/>
  517 + <copies>1</copies>
  518 + <partitioning>
  519 + <method>none</method>
  520 + <schema_name/>
  521 + </partitioning>
  522 + <connection>bus_control_variable</connection>
  523 + <cache>N</cache>
  524 + <cache_load_all>N</cache_load_all>
  525 + <cache_size>0</cache_size>
  526 + <lookup>
  527 + <schema/>
  528 + <table>bsth_c_car_park</table>
  529 + <orderby/>
  530 + <fail_on_multiple>N</fail_on_multiple>
  531 + <eat_row_on_failure>N</eat_row_on_failure>
  532 + <key>
  533 + <name>car_park</name>
  534 + <field>park_code</field>
  535 + <condition>&#x3d;</condition>
  536 + <name2/>
  537 + </key>
  538 + <value>
  539 + <name>park_name</name>
  540 + <rename>tccname_</rename>
  541 + <default/>
  542 + <type>String</type>
  543 + </value>
  544 + </lookup>
  545 + <cluster_schema/>
  546 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  547 + <xloc>319</xloc>
  548 + <yloc>468</yloc>
  549 + <draw>Y</draw>
  550 + </GUI>
  551 + </step>
  552 +
  553 + <step>
  554 + <name>&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</name>
  555 + <type>SelectValues</type>
  556 + <description/>
  557 + <distribute>Y</distribute>
  558 + <custom_distribution/>
  559 + <copies>1</copies>
  560 + <partitioning>
  561 + <method>none</method>
  562 + <schema_name/>
  563 + </partitioning>
  564 + <fields> <field> <name>col_name</name>
  565 + <rename/>
  566 + <length>-2</length>
  567 + <precision>-2</precision>
  568 + </field> <field> <name>col_type</name>
  569 + <rename/>
  570 + <length>-2</length>
  571 + <precision>-2</precision>
  572 + </field> <field> <name>col_value</name>
  573 + <rename/>
  574 + <length>-2</length>
  575 + <precision>-2</precision>
  576 + </field> <select_unspecified>N</select_unspecified>
  577 + </fields> <cluster_schema/>
  578 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  579 + <xloc>743</xloc>
  580 + <yloc>470</yloc>
  581 + <draw>Y</draw>
  582 + </GUI>
  583 + </step>
  584 +
  585 + <step>
  586 + <name>&#x505c;&#x8f66;&#x573a;&#x7f16;&#x7801;</name>
  587 + <type>DBLookup</type>
  588 + <description/>
  589 + <distribute>Y</distribute>
  590 + <custom_distribution/>
  591 + <copies>1</copies>
  592 + <partitioning>
  593 + <method>none</method>
  594 + <schema_name/>
  595 + </partitioning>
  596 + <connection>bus_control_variable</connection>
  597 + <cache>N</cache>
  598 + <cache_load_all>N</cache_load_all>
  599 + <cache_size>0</cache_size>
  600 + <lookup>
  601 + <schema/>
  602 + <table>bsth_c_line_information</table>
  603 + <orderby/>
  604 + <fail_on_multiple>N</fail_on_multiple>
  605 + <eat_row_on_failure>N</eat_row_on_failure>
  606 + <key>
  607 + <name>lineinfoid_</name>
  608 + <field>id</field>
  609 + <condition>&#x3d;</condition>
  610 + <name2/>
  611 + </key>
  612 + <value>
  613 + <name>car_park</name>
  614 + <rename>car_park</rename>
  615 + <default/>
  616 + <type>String</type>
  617 + </value>
  618 + </lookup>
  619 + <cluster_schema/>
  620 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  621 + <xloc>182</xloc>
  622 + <yloc>467</yloc>
  623 + <draw>Y</draw>
  624 + </GUI>
  625 + </step>
  626 +
  627 + <step>
  628 + <name>&#x5220;&#x9664;&#x4e4b;&#x524d;&#x7684;&#x660e;&#x7ec6;&#x4fe1;&#x606f;</name>
  629 + <type>ExecSQL</type>
  630 + <description/>
  631 + <distribute>Y</distribute>
  632 + <custom_distribution/>
  633 + <copies>1</copies>
  634 + <partitioning>
  635 + <method>none</method>
  636 + <schema_name/>
  637 + </partitioning>
  638 + <connection>bus_control_variable</connection>
  639 + <execute_each_row>Y</execute_each_row>
  640 + <single_statement>N</single_statement>
  641 + <replace_variables>N</replace_variables>
  642 + <quoteString>N</quoteString>
  643 + <sql>delete from bsth_c_s_ttinfo_detail where ttinfo &#x3d; &#x3f;</sql>
  644 + <set_params>N</set_params>
  645 + <insert_field/>
  646 + <update_field/>
  647 + <delete_field/>
  648 + <read_field/>
  649 + <arguments>
  650 + <argument><name>ttid_</name></argument>
  651 + </arguments>
  652 + <cluster_schema/>
  653 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  654 + <xloc>808</xloc>
  655 + <yloc>16</yloc>
  656 + <draw>Y</draw>
  657 + </GUI>
  658 + </step>
  659 +
  660 + <step>
  661 + <name>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</name>
  662 + <type>Dummy</type>
  663 + <description/>
  664 + <distribute>Y</distribute>
  665 + <custom_distribution/>
  666 + <copies>1</copies>
  667 + <partitioning>
  668 + <method>none</method>
  669 + <schema_name/>
  670 + </partitioning>
  671 + <cluster_schema/>
  672 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  673 + <xloc>883</xloc>
  674 + <yloc>373</yloc>
  675 + <draw>Y</draw>
  676 + </GUI>
  677 + </step>
  678 +
  679 + <step>
  680 + <name>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</name>
  681 + <type>Constant</type>
  682 + <description/>
  683 + <distribute>Y</distribute>
  684 + <custom_distribution/>
  685 + <copies>1</copies>
  686 + <partitioning>
  687 + <method>none</method>
  688 + <schema_name/>
  689 + </partitioning>
  690 + <fields>
  691 + <field>
  692 + <name>fieldtype</name>
  693 + <type>String</type>
  694 + <format/>
  695 + <currency/>
  696 + <decimal/>
  697 + <group/>
  698 + <nullif>String</nullif>
  699 + <length>-1</length>
  700 + <precision>-1</precision>
  701 + <set_empty_string>N</set_empty_string>
  702 + </field>
  703 + <field>
  704 + <name>length</name>
  705 + <type>String</type>
  706 + <format/>
  707 + <currency/>
  708 + <decimal/>
  709 + <group/>
  710 + <nullif>-1</nullif>
  711 + <length>-1</length>
  712 + <precision>-1</precision>
  713 + <set_empty_string>N</set_empty_string>
  714 + </field>
  715 + <field>
  716 + <name>precision</name>
  717 + <type>String</type>
  718 + <format/>
  719 + <currency/>
  720 + <decimal/>
  721 + <group/>
  722 + <nullif>-1</nullif>
  723 + <length>-1</length>
  724 + <precision>-1</precision>
  725 + <set_empty_string>N</set_empty_string>
  726 + </field>
  727 + <field>
  728 + <name>trim_type</name>
  729 + <type>String</type>
  730 + <format/>
  731 + <currency/>
  732 + <decimal/>
  733 + <group/>
  734 + <nullif>none</nullif>
  735 + <length>-1</length>
  736 + <precision>-1</precision>
  737 + <set_empty_string>N</set_empty_string>
  738 + </field>
  739 + <field>
  740 + <name>repeat</name>
  741 + <type>String</type>
  742 + <format/>
  743 + <currency/>
  744 + <decimal/>
  745 + <group/>
  746 + <nullif>N</nullif>
  747 + <length>-1</length>
  748 + <precision>-1</precision>
  749 + <set_empty_string>N</set_empty_string>
  750 + </field>
  751 + <field>
  752 + <name>format</name>
  753 + <type>String</type>
  754 + <format/>
  755 + <currency/>
  756 + <decimal/>
  757 + <group/>
  758 + <nullif>&#x23;</nullif>
  759 + <length>-1</length>
  760 + <precision>-1</precision>
  761 + <set_empty_string>N</set_empty_string>
  762 + </field>
  763 + </fields>
  764 + <cluster_schema/>
  765 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  766 + <xloc>622</xloc>
  767 + <yloc>162</yloc>
  768 + <draw>Y</draw>
  769 + </GUI>
  770 + </step>
  771 +
  772 + <step>
  773 + <name>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</name>
  774 + <type>Constant</type>
  775 + <description/>
  776 + <distribute>Y</distribute>
  777 + <custom_distribution/>
  778 + <copies>1</copies>
  779 + <partitioning>
  780 + <method>none</method>
  781 + <schema_name/>
  782 + </partitioning>
  783 + <fields>
  784 + <field>
  785 + <name>valuefield</name>
  786 + <type>String</type>
  787 + <format/>
  788 + <currency/>
  789 + <decimal/>
  790 + <group/>
  791 + <nullif>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</nullif>
  792 + <length>-1</length>
  793 + <precision>-1</precision>
  794 + <set_empty_string>N</set_empty_string>
  795 + </field>
  796 + </fields>
  797 + <cluster_schema/>
  798 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  799 + <xloc>628</xloc>
  800 + <yloc>247</yloc>
  801 + <draw>Y</draw>
  802 + </GUI>
  803 + </step>
  804 +
  805 + <step>
  806 + <name>&#x589e;&#x52a0;&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata</name>
  807 + <type>Constant</type>
  808 + <description/>
  809 + <distribute>Y</distribute>
  810 + <custom_distribution/>
  811 + <copies>1</copies>
  812 + <partitioning>
  813 + <method>none</method>
  814 + <schema_name/>
  815 + </partitioning>
  816 + <fields>
  817 + <field>
  818 + <name>col_name</name>
  819 + <type>String</type>
  820 + <format/>
  821 + <currency/>
  822 + <decimal/>
  823 + <group/>
  824 + <nullif>tccname_</nullif>
  825 + <length>-1</length>
  826 + <precision>-1</precision>
  827 + <set_empty_string>N</set_empty_string>
  828 + </field>
  829 + <field>
  830 + <name>col_type</name>
  831 + <type>String</type>
  832 + <format/>
  833 + <currency/>
  834 + <decimal/>
  835 + <group/>
  836 + <nullif>String</nullif>
  837 + <length>-1</length>
  838 + <precision>-1</precision>
  839 + <set_empty_string>N</set_empty_string>
  840 + </field>
  841 + <field>
  842 + <name>col_value</name>
  843 + <type>String</type>
  844 + <format/>
  845 + <currency/>
  846 + <decimal/>
  847 + <group/>
  848 + <nullif>replace</nullif>
  849 + <length>-1</length>
  850 + <precision>-1</precision>
  851 + <set_empty_string>N</set_empty_string>
  852 + </field>
  853 + </fields>
  854 + <cluster_schema/>
  855 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  856 + <xloc>461</xloc>
  857 + <yloc>469</yloc>
  858 + <draw>Y</draw>
  859 + </GUI>
  860 + </step>
  861 +
  862 + <step>
  863 + <name>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;metadata</name>
  864 + <type>Constant</type>
  865 + <description/>
  866 + <distribute>Y</distribute>
  867 + <custom_distribution/>
  868 + <copies>1</copies>
  869 + <partitioning>
  870 + <method>none</method>
  871 + <schema_name/>
  872 + </partitioning>
  873 + <fields>
  874 + <field>
  875 + <name>col_name</name>
  876 + <type>String</type>
  877 + <format/>
  878 + <currency/>
  879 + <decimal/>
  880 + <group/>
  881 + <nullif>ttinfoname_</nullif>
  882 + <length>-1</length>
  883 + <precision>-1</precision>
  884 + <set_empty_string>N</set_empty_string>
  885 + </field>
  886 + <field>
  887 + <name>col_type</name>
  888 + <type>String</type>
  889 + <format/>
  890 + <currency/>
  891 + <decimal/>
  892 + <group/>
  893 + <nullif>String</nullif>
  894 + <length>-1</length>
  895 + <precision>-1</precision>
  896 + <set_empty_string>N</set_empty_string>
  897 + </field>
  898 + <field>
  899 + <name>col_value</name>
  900 + <type>String</type>
  901 + <format/>
  902 + <currency/>
  903 + <decimal/>
  904 + <group/>
  905 + <nullif>replace</nullif>
  906 + <length>-1</length>
  907 + <precision>-1</precision>
  908 + <set_empty_string>N</set_empty_string>
  909 + </field>
  910 + </fields>
  911 + <cluster_schema/>
  912 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  913 + <xloc>608</xloc>
  914 + <yloc>601</yloc>
  915 + <draw>Y</draw>
  916 + </GUI>
  917 + </step>
  918 +
  919 + <step>
  920 + <name>&#x589e;&#x52a0;&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata</name>
  921 + <type>Constant</type>
  922 + <description/>
  923 + <distribute>Y</distribute>
  924 + <custom_distribution/>
  925 + <copies>1</copies>
  926 + <partitioning>
  927 + <method>none</method>
  928 + <schema_name/>
  929 + </partitioning>
  930 + <fields>
  931 + <field>
  932 + <name>col_name</name>
  933 + <type>String</type>
  934 + <format/>
  935 + <currency/>
  936 + <decimal/>
  937 + <group/>
  938 + <nullif>xlname_</nullif>
  939 + <length>-1</length>
  940 + <precision>-1</precision>
  941 + <set_empty_string>N</set_empty_string>
  942 + </field>
  943 + <field>
  944 + <name>col_type</name>
  945 + <type>String</type>
  946 + <format/>
  947 + <currency/>
  948 + <decimal/>
  949 + <group/>
  950 + <nullif>String</nullif>
  951 + <length>-1</length>
  952 + <precision>-1</precision>
  953 + <set_empty_string>N</set_empty_string>
  954 + </field>
  955 + <field>
  956 + <name>col_value</name>
  957 + <type>String</type>
  958 + <format/>
  959 + <currency/>
  960 + <decimal/>
  961 + <group/>
  962 + <nullif>replace</nullif>
  963 + <length>-1</length>
  964 + <precision>-1</precision>
  965 + <set_empty_string>N</set_empty_string>
  966 + </field>
  967 + </fields>
  968 + <cluster_schema/>
  969 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  970 + <xloc>383</xloc>
  971 + <yloc>341</yloc>
  972 + <draw>Y</draw>
  973 + </GUI>
  974 + </step>
  975 +
  976 + <step>
  977 + <name>&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</name>
  978 + <type>SelectValues</type>
  979 + <description/>
  980 + <distribute>Y</distribute>
  981 + <custom_distribution/>
  982 + <copies>1</copies>
  983 + <partitioning>
  984 + <method>none</method>
  985 + <schema_name/>
  986 + </partitioning>
  987 + <fields> <field> <name>col_name</name>
  988 + <rename/>
  989 + <length>-2</length>
  990 + <precision>-2</precision>
  991 + </field> <field> <name>col_type</name>
  992 + <rename/>
  993 + <length>-2</length>
  994 + <precision>-2</precision>
  995 + </field> <field> <name>col_value</name>
  996 + <rename/>
  997 + <length>-2</length>
  998 + <precision>-2</precision>
  999 + </field> <select_unspecified>N</select_unspecified>
  1000 + </fields> <cluster_schema/>
  1001 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1002 + <xloc>888</xloc>
  1003 + <yloc>601</yloc>
  1004 + <draw>Y</draw>
  1005 + </GUI>
  1006 + </step>
  1007 +
  1008 + <step>
  1009 + <name>&#x66ff;&#x6362;&#x505c;&#x8f66;&#x5382;&#x540d;&#x5b57; </name>
  1010 + <type>SetValueField</type>
  1011 + <description/>
  1012 + <distribute>Y</distribute>
  1013 + <custom_distribution/>
  1014 + <copies>1</copies>
  1015 + <partitioning>
  1016 + <method>none</method>
  1017 + <schema_name/>
  1018 + </partitioning>
  1019 + <fields>
  1020 + <field>
  1021 + <name>col_value</name>
  1022 + <replaceby>tccname_</replaceby>
  1023 + </field>
  1024 + </fields>
  1025 + <cluster_schema/>
  1026 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1027 + <xloc>598</xloc>
  1028 + <yloc>471</yloc>
  1029 + <draw>Y</draw>
  1030 + </GUI>
  1031 + </step>
  1032 +
  1033 + <step>
  1034 + <name>&#x66ff;&#x6362;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;</name>
  1035 + <type>SetValueField</type>
  1036 + <description/>
  1037 + <distribute>Y</distribute>
  1038 + <custom_distribution/>
  1039 + <copies>1</copies>
  1040 + <partitioning>
  1041 + <method>none</method>
  1042 + <schema_name/>
  1043 + </partitioning>
  1044 + <fields>
  1045 + <field>
  1046 + <name>col_value</name>
  1047 + <replaceby>ttinfoname_</replaceby>
  1048 + </field>
  1049 + </fields>
  1050 + <cluster_schema/>
  1051 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1052 + <xloc>746</xloc>
  1053 + <yloc>602</yloc>
  1054 + <draw>Y</draw>
  1055 + </GUI>
  1056 + </step>
  1057 +
  1058 + <step>
  1059 + <name>&#x66ff;&#x6362;&#x7ebf;&#x8def;&#x540d;&#x79f0;</name>
  1060 + <type>SetValueField</type>
  1061 + <description/>
  1062 + <distribute>Y</distribute>
  1063 + <custom_distribution/>
  1064 + <copies>1</copies>
  1065 + <partitioning>
  1066 + <method>none</method>
  1067 + <schema_name/>
  1068 + </partitioning>
  1069 + <fields>
  1070 + <field>
  1071 + <name>col_value</name>
  1072 + <replaceby>xlname_</replaceby>
  1073 + </field>
  1074 + </fields>
  1075 + <cluster_schema/>
  1076 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1077 + <xloc>521</xloc>
  1078 + <yloc>342</yloc>
  1079 + <draw>Y</draw>
  1080 + </GUI>
  1081 + </step>
  1082 +
  1083 + <step>
  1084 + <name>&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</name>
  1085 + <type>SelectValues</type>
  1086 + <description/>
  1087 + <distribute>Y</distribute>
  1088 + <custom_distribution/>
  1089 + <copies>1</copies>
  1090 + <partitioning>
  1091 + <method>none</method>
  1092 + <schema_name/>
  1093 + </partitioning>
  1094 + <fields> <field> <name>col_name</name>
  1095 + <rename/>
  1096 + <length>-2</length>
  1097 + <precision>-2</precision>
  1098 + </field> <field> <name>col_type</name>
  1099 + <rename/>
  1100 + <length>-2</length>
  1101 + <precision>-2</precision>
  1102 + </field> <field> <name>col_value</name>
  1103 + <rename/>
  1104 + <length>-2</length>
  1105 + <precision>-2</precision>
  1106 + </field> <select_unspecified>N</select_unspecified>
  1107 + </fields> <cluster_schema/>
  1108 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1109 + <xloc>668</xloc>
  1110 + <yloc>343</yloc>
  1111 + <draw>Y</draw>
  1112 + </GUI>
  1113 + </step>
  1114 +
  1115 + <step>
  1116 + <name>&#x83b7;&#x53d6;excel&#x5b57;&#x6bb5;&#x540d;&#x5b57;&#x7b26;&#x4e32;</name>
  1117 + <type>GetVariable</type>
  1118 + <description/>
  1119 + <distribute>Y</distribute>
  1120 + <custom_distribution/>
  1121 + <copies>1</copies>
  1122 + <partitioning>
  1123 + <method>none</method>
  1124 + <schema_name/>
  1125 + </partitioning>
  1126 + <fields>
  1127 + <field>
  1128 + <name>fieldnames</name>
  1129 + <variable>&#x24;&#x7b;excelfieldnames&#x7d;</variable>
  1130 + <type>String</type>
  1131 + <format/>
  1132 + <currency/>
  1133 + <decimal/>
  1134 + <group/>
  1135 + <length>-1</length>
  1136 + <precision>-1</precision>
  1137 + <trim_type>none</trim_type>
  1138 + </field>
  1139 + </fields>
  1140 + <cluster_schema/>
  1141 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1142 + <xloc>252</xloc>
  1143 + <yloc>153</yloc>
  1144 + <draw>Y</draw>
  1145 + </GUI>
  1146 + </step>
  1147 +
  1148 + <step>
  1149 + <name>&#x83b7;&#x53d6;excel&#x6587;&#x4ef6;&#x540d;</name>
  1150 + <type>GetVariable</type>
  1151 + <description/>
  1152 + <distribute>Y</distribute>
  1153 + <custom_distribution/>
  1154 + <copies>1</copies>
  1155 + <partitioning>
  1156 + <method>none</method>
  1157 + <schema_name/>
  1158 + </partitioning>
  1159 + <fields>
  1160 + <field>
  1161 + <name>filepath_</name>
  1162 + <variable>&#x24;&#x7b;filepath&#x7d;</variable>
  1163 + <type>String</type>
  1164 + <format/>
  1165 + <currency/>
  1166 + <decimal/>
  1167 + <group/>
  1168 + <length>-1</length>
  1169 + <precision>-1</precision>
  1170 + <trim_type>none</trim_type>
  1171 + </field>
  1172 + <field>
  1173 + <name>erroroutputdir_</name>
  1174 + <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
  1175 + <type>String</type>
  1176 + <format/>
  1177 + <currency/>
  1178 + <decimal/>
  1179 + <group/>
  1180 + <length>-1</length>
  1181 + <precision>-1</precision>
  1182 + <trim_type>none</trim_type>
  1183 + </field>
  1184 + <field>
  1185 + <name>sheetname_</name>
  1186 + <variable>&#x24;&#x7b;sheetname&#x7d;</variable>
  1187 + <type>String</type>
  1188 + <format/>
  1189 + <currency/>
  1190 + <decimal/>
  1191 + <group/>
  1192 + <length>-1</length>
  1193 + <precision>-1</precision>
  1194 + <trim_type>none</trim_type>
  1195 + </field>
  1196 + </fields>
  1197 + <cluster_schema/>
  1198 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1199 + <xloc>301</xloc>
  1200 + <yloc>52</yloc>
  1201 + <draw>Y</draw>
  1202 + </GUI>
  1203 + </step>
  1204 +
  1205 + <step>
  1206 + <name>&#x83b7;&#x53d6;normalize&#x5b57;&#x6bb5;&#x540d;&#x5b57;&#x7b26;&#x4e32;</name>
  1207 + <type>GetVariable</type>
  1208 + <description/>
  1209 + <distribute>Y</distribute>
  1210 + <custom_distribution/>
  1211 + <copies>1</copies>
  1212 + <partitioning>
  1213 + <method>none</method>
  1214 + <schema_name/>
  1215 + </partitioning>
  1216 + <fields>
  1217 + <field>
  1218 + <name>normalizefieldnames_</name>
  1219 + <variable>&#x24;&#x7b;normalizefieldnames&#x7d;</variable>
  1220 + <type>String</type>
  1221 + <format/>
  1222 + <currency/>
  1223 + <decimal/>
  1224 + <group/>
  1225 + <length>-1</length>
  1226 + <precision>-1</precision>
  1227 + <trim_type>none</trim_type>
  1228 + </field>
  1229 + </fields>
  1230 + <cluster_schema/>
  1231 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1232 + <xloc>261</xloc>
  1233 + <yloc>251</yloc>
  1234 + <draw>Y</draw>
  1235 + </GUI>
  1236 + </step>
  1237 +
  1238 + <step>
  1239 + <name>&#x83b7;&#x53d6;&#x65f6;&#x523b;&#x8868;id</name>
  1240 + <type>GetVariable</type>
  1241 + <description/>
  1242 + <distribute>Y</distribute>
  1243 + <custom_distribution/>
  1244 + <copies>1</copies>
  1245 + <partitioning>
  1246 + <method>none</method>
  1247 + <schema_name/>
  1248 + </partitioning>
  1249 + <fields>
  1250 + <field>
  1251 + <name>ttid_</name>
  1252 + <variable>&#x24;&#x7b;ttid&#x7d;</variable>
  1253 + <type>Integer</type>
  1254 + <format/>
  1255 + <currency/>
  1256 + <decimal/>
  1257 + <group/>
  1258 + <length>-1</length>
  1259 + <precision>-1</precision>
  1260 + <trim_type>none</trim_type>
  1261 + </field>
  1262 + </fields>
  1263 + <cluster_schema/>
  1264 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1265 + <xloc>608</xloc>
  1266 + <yloc>16</yloc>
  1267 + <draw>Y</draw>
  1268 + </GUI>
  1269 + </step>
  1270 +
  1271 + <step>
  1272 + <name>&#x83b7;&#x53d6;&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;</name>
  1273 + <type>GetVariable</type>
  1274 + <description/>
  1275 + <distribute>Y</distribute>
  1276 + <custom_distribution/>
  1277 + <copies>1</copies>
  1278 + <partitioning>
  1279 + <method>none</method>
  1280 + <schema_name/>
  1281 + </partitioning>
  1282 + <fields>
  1283 + <field>
  1284 + <name>ttinfoname_</name>
  1285 + <variable>&#x24;&#x7b;ttinfoname&#x7d;</variable>
  1286 + <type>String</type>
  1287 + <format/>
  1288 + <currency/>
  1289 + <decimal/>
  1290 + <group/>
  1291 + <length>-1</length>
  1292 + <precision>-1</precision>
  1293 + <trim_type>none</trim_type>
  1294 + </field>
  1295 + </fields>
  1296 + <cluster_schema/>
  1297 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1298 + <xloc>474</xloc>
  1299 + <yloc>601</yloc>
  1300 + <draw>Y</draw>
  1301 + </GUI>
  1302 + </step>
  1303 +
  1304 + <step>
  1305 + <name>&#x83b7;&#x53d6;&#x7ebf;&#x8def;&#x540d;&#x79f0;</name>
  1306 + <type>GetVariable</type>
  1307 + <description/>
  1308 + <distribute>Y</distribute>
  1309 + <custom_distribution/>
  1310 + <copies>1</copies>
  1311 + <partitioning>
  1312 + <method>none</method>
  1313 + <schema_name/>
  1314 + </partitioning>
  1315 + <fields>
  1316 + <field>
  1317 + <name>xlname_</name>
  1318 + <variable>&#x24;&#x7b;xlname&#x7d;</variable>
  1319 + <type>String</type>
  1320 + <format/>
  1321 + <currency/>
  1322 + <decimal/>
  1323 + <group/>
  1324 + <length>-1</length>
  1325 + <precision>-1</precision>
  1326 + <trim_type>none</trim_type>
  1327 + </field>
  1328 + </fields>
  1329 + <cluster_schema/>
  1330 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1331 + <xloc>184</xloc>
  1332 + <yloc>342</yloc>
  1333 + <draw>Y</draw>
  1334 + </GUI>
  1335 + </step>
  1336 +
  1337 + <step>
  1338 + <name>&#x83b7;&#x53d6;&#x7ebf;&#x8def;&#x6807;&#x51c6;id</name>
  1339 + <type>GetVariable</type>
  1340 + <description/>
  1341 + <distribute>Y</distribute>
  1342 + <custom_distribution/>
  1343 + <copies>1</copies>
  1344 + <partitioning>
  1345 + <method>none</method>
  1346 + <schema_name/>
  1347 + </partitioning>
  1348 + <fields>
  1349 + <field>
  1350 + <name>lineinfoid_</name>
  1351 + <variable>&#x24;&#x7b;lineinfoid&#x7d;</variable>
  1352 + <type>Integer</type>
  1353 + <format/>
  1354 + <currency/>
  1355 + <decimal/>
  1356 + <group/>
  1357 + <length>-1</length>
  1358 + <precision>-1</precision>
  1359 + <trim_type>none</trim_type>
  1360 + </field>
  1361 + </fields>
  1362 + <cluster_schema/>
  1363 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1364 + <xloc>74</xloc>
  1365 + <yloc>468</yloc>
  1366 + <draw>Y</draw>
  1367 + </GUI>
  1368 + </step>
  1369 +
  1370 + <step>
  1371 + <name>&#x9017;&#x53f7;&#x5207;&#x5206;&#x6210;&#x5b57;&#x6bb5;&#x540d;</name>
  1372 + <type>SplitFieldToRows3</type>
  1373 + <description/>
  1374 + <distribute>Y</distribute>
  1375 + <custom_distribution/>
  1376 + <copies>1</copies>
  1377 + <partitioning>
  1378 + <method>none</method>
  1379 + <schema_name/>
  1380 + </partitioning>
  1381 + <splitfield>fieldnames</splitfield>
  1382 + <delimiter>,</delimiter>
  1383 + <newfield>fieldname</newfield>
  1384 + <rownum>N</rownum>
  1385 + <rownum_field/>
  1386 + <resetrownumber>Y</resetrownumber>
  1387 + <delimiter_is_regex>N</delimiter_is_regex>
  1388 + <cluster_schema/>
  1389 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1390 + <xloc>442</xloc>
  1391 + <yloc>153</yloc>
  1392 + <draw>Y</draw>
  1393 + </GUI>
  1394 + </step>
  1395 +
  1396 + <step>
  1397 + <name>&#x9017;&#x53f7;&#x5207;&#x5206;&#x6210;&#x5b57;&#x6bb5;&#x540d; 2</name>
  1398 + <type>SplitFieldToRows3</type>
  1399 + <description/>
  1400 + <distribute>Y</distribute>
  1401 + <custom_distribution/>
  1402 + <copies>1</copies>
  1403 + <partitioning>
  1404 + <method>none</method>
  1405 + <schema_name/>
  1406 + </partitioning>
  1407 + <splitfield>normalizefieldnames_</splitfield>
  1408 + <delimiter>,</delimiter>
  1409 + <newfield>nfieldname</newfield>
  1410 + <rownum>N</rownum>
  1411 + <rownum_field/>
  1412 + <resetrownumber>Y</resetrownumber>
  1413 + <delimiter_is_regex>N</delimiter_is_regex>
  1414 + <cluster_schema/>
  1415 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1416 + <xloc>444</xloc>
  1417 + <yloc>247</yloc>
  1418 + <draw>Y</draw>
  1419 + </GUI>
  1420 + </step>
  1421 +
  1422 + <step>
  1423 + <name>&#x589e;&#x52a0;&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c; metadata</name>
  1424 + <type>Constant</type>
  1425 + <description/>
  1426 + <distribute>Y</distribute>
  1427 + <custom_distribution/>
  1428 + <copies>1</copies>
  1429 + <partitioning>
  1430 + <method>none</method>
  1431 + <schema_name/>
  1432 + </partitioning>
  1433 + <fields>
  1434 + <field>
  1435 + <name>col_name</name>
  1436 + <type>String</type>
  1437 + <format/>
  1438 + <currency/>
  1439 + <decimal/>
  1440 + <group/>
  1441 + <nullif>zdlyversion_</nullif>
  1442 + <length>-1</length>
  1443 + <precision>-1</precision>
  1444 + <set_empty_string>N</set_empty_string>
  1445 + </field>
  1446 + <field>
  1447 + <name>col_type</name>
  1448 + <type>String</type>
  1449 + <format/>
  1450 + <currency/>
  1451 + <decimal/>
  1452 + <group/>
  1453 + <nullif>String</nullif>
  1454 + <length>-1</length>
  1455 + <precision>-1</precision>
  1456 + <set_empty_string>N</set_empty_string>
  1457 + </field>
  1458 + <field>
  1459 + <name>col_value</name>
  1460 + <type>String</type>
  1461 + <format/>
  1462 + <currency/>
  1463 + <decimal/>
  1464 + <group/>
  1465 + <nullif>replace</nullif>
  1466 + <length>-1</length>
  1467 + <precision>-1</precision>
  1468 + <set_empty_string>N</set_empty_string>
  1469 + </field>
  1470 + </fields>
  1471 + <cluster_schema/>
  1472 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1473 + <xloc>390</xloc>
  1474 + <yloc>532</yloc>
  1475 + <draw>Y</draw>
  1476 + </GUI>
  1477 + </step>
  1478 +
  1479 + <step>
  1480 + <name>&#x66ff;&#x6362;&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c;</name>
  1481 + <type>SetValueField</type>
  1482 + <description/>
  1483 + <distribute>Y</distribute>
  1484 + <custom_distribution/>
  1485 + <copies>1</copies>
  1486 + <partitioning>
  1487 + <method>none</method>
  1488 + <schema_name/>
  1489 + </partitioning>
  1490 + <fields>
  1491 + <field>
  1492 + <name>col_value</name>
  1493 + <replaceby>zdlyversion_</replaceby>
  1494 + </field>
  1495 + </fields>
  1496 + <cluster_schema/>
  1497 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1498 + <xloc>594</xloc>
  1499 + <yloc>532</yloc>
  1500 + <draw>Y</draw>
  1501 + </GUI>
  1502 + </step>
  1503 +
  1504 + <step>
  1505 + <name>&#x7ad9;&#x70b9;&#x8def;&#x7531;&#x7248;&#x672c;metadata&#x5b57;&#x6bb5;</name>
  1506 + <type>SelectValues</type>
  1507 + <description/>
  1508 + <distribute>Y</distribute>
  1509 + <custom_distribution/>
  1510 + <copies>1</copies>
  1511 + <partitioning>
  1512 + <method>none</method>
  1513 + <schema_name/>
  1514 + </partitioning>
  1515 + <fields> <field> <name>col_name</name>
  1516 + <rename/>
  1517 + <length>-2</length>
  1518 + <precision>-2</precision>
  1519 + </field> <field> <name>col_type</name>
  1520 + <rename/>
  1521 + <length>-2</length>
  1522 + <precision>-2</precision>
  1523 + </field> <field> <name>col_value</name>
  1524 + <rename/>
  1525 + <length>-2</length>
  1526 + <precision>-2</precision>
  1527 + </field> <select_unspecified>N</select_unspecified>
  1528 + </fields> <cluster_schema/>
  1529 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1530 + <xloc>741</xloc>
  1531 + <yloc>533</yloc>
  1532 + <draw>Y</draw>
  1533 + </GUI>
  1534 + </step>
  1535 +
  1536 + <step>
  1537 + <name>&#x83b7;&#x53d6;&#x7ad9;&#x70b9;&#x8def;&#x7531;version</name>
  1538 + <type>GetVariable</type>
  1539 + <description/>
  1540 + <distribute>Y</distribute>
  1541 + <custom_distribution/>
  1542 + <copies>1</copies>
  1543 + <partitioning>
  1544 + <method>none</method>
  1545 + <schema_name/>
  1546 + </partitioning>
  1547 + <fields>
  1548 + <field>
  1549 + <name>zdlyversion_</name>
  1550 + <variable>&#x24;&#x7b;zdlyversion&#x7d;</variable>
  1551 + <type>String</type>
  1552 + <format/>
  1553 + <currency/>
  1554 + <decimal/>
  1555 + <group/>
  1556 + <length>-1</length>
  1557 + <precision>-1</precision>
  1558 + <trim_type>none</trim_type>
  1559 + </field>
  1560 + </fields>
  1561 + <cluster_schema/>
  1562 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1563 + <xloc>187</xloc>
  1564 + <yloc>534</yloc>
  1565 + <draw>Y</draw>
  1566 + </GUI>
  1567 + </step>
  1568 +
  1569 + <step_error_handling>
  1570 + </step_error_handling>
  1571 + <slave-step-copy-partition-distribution>
  1572 +</slave-step-copy-partition-distribution>
  1573 + <slave_transformation>N</slave_transformation>
  1574 +
  1575 +</transformation>
... ...
src/main/resources/static/pages/oil/list_ph.html
... ... @@ -28,13 +28,13 @@
28 28 <div class="actions">
29 29 <a class="btn btn-circle blue" href="add.html" data-pjax><i
30 30 class="fa fa-plus"></i> 添加</a>
31   - <button type="button" class="btn btn-circle blue" id="removeButton">
  31 + <button type="button" class="btn btn-circle blue removeButton" id="removeButton">
32 32 <i class="fa fa-trash-o"></i> 删除
33 33 </button>
34   - <button type="button" class="btn btn-circle blue" id="sortButton">
  34 + <button type="button" class="btn btn-circle blue sortButton" id="sortButton">
35 35 <i class="fa fa-minus-square"></i> 拆分
36 36 </button>
37   - <button type="button" class="btn btn-circle blue" id="saveButton">
  37 + <button type="button" class="btn btn-circle blue saveButton" id="saveButton">
38 38 <i class="fa fa-check-circle"></i> 保存
39 39 </button>
40 40 <!-- <button type="button" class="btn btn-circle red" disabled="disabled" id="removeButton"><i class="fa fa-trash"></i> 删除用户</button> -->
... ... @@ -202,9 +202,22 @@
202 202 style="table-layout: fixed; overflow: auto; ">
203 203 <tbody></tbody>
204 204 </table>
  205 + <div style="text-align: right;margin-right: 50px">
  206 + <a class="btn btn-circle " href="add.html" data-pjax><i
  207 + class="fa fa-plus"></i> 添加</a>
  208 + <button type="button" class="btn btn-circle removeButton" >
  209 + <i class="fa fa-trash-o"></i> 删除
  210 + </button>
  211 + <button type="button" class="btn btn-circle sortButton">
  212 + <i class="fa fa-minus-square"></i> 拆分
  213 + </button>
  214 + <button type="button" class="btn btn-circle saveButton" >
  215 + <i class="fa fa-check-circle"></i> 保存
  216 + </button>
  217 + </div>
205 218 </div>
206 219  
207   -
  220 +
208 221 <div style="text-align: right;">
209 222 <ul id="pagination" class="pagination"></ul>
210 223 </div>
... ... @@ -314,7 +327,7 @@ onkeyup=&quot;this.value=this.value.replace(/[^(\d||/.)]/g,&#39;&#39;).replace(&#39;.&#39;,&#39;$#$&#39;).rep
314 327 //var id = 15;
315 328 //$('.in_carpark_jzyl[data-id='+id+']', '#ll_oil_list')
316 329  
317   - $("#checkYl").on('click', function () {
  330 + $(".checkYl").on('click', function () {
318 331 //console.log("核对加注量");
319 332 if ($("#rq").val() != "") {
320 333 var params=getParamsList();
... ... @@ -329,7 +342,7 @@ onkeyup=&quot;this.value=this.value.replace(/[^(\d||/.)]/g,&#39;&#39;).replace(&#39;.&#39;,&#39;$#$&#39;).rep
329 342 })
330 343  
331 344 //进场等于出场
332   - $("#outAndIn").on('click', function () {
  345 + $(".outAndIn").on('click', function () {
333 346 // console.log("进场油量等于出场油量");
334 347 if ($("#rq").val() != "") {
335 348 var params=getParamsList();
... ... @@ -344,7 +357,7 @@ onkeyup=&quot;this.value=this.value.replace(/[^(\d||/.)]/g,&#39;&#39;).replace(&#39;.&#39;,&#39;$#$&#39;).rep
344 357 });
345 358  
346 359 //保存
347   - $("#saveButton").on('click',function(){
  360 + $(".saveButton").on('click',function(){
348 361 var ylArray = [];
349 362 $('input.icheck').each(function(){
350 363 var map = {};
... ... @@ -400,7 +413,7 @@ onkeyup=&quot;this.value=this.value.replace(/[^(\d||/.)]/g,&#39;&#39;).replace(&#39;.&#39;,&#39;$#$&#39;).rep
400 413 });
401 414 })
402 415 //拆分
403   - $("#sortButton").on('click', function () {
  416 + $(".sortButton").on('click', function () {
404 417 if ($("#rq").val() != "") {
405 418 //拆分前先保存全部
406 419 var ylArray = [];
... ...