Commit 2a3d7f05da85bbe451532a24883311509fa3b758

Authored by 潘钊
2 parents 3b3c1aab ea43f1bc

Merge branch 'minhang' into pudong

Showing 41 changed files with 3590 additions and 1856 deletions
src/main/java/com/bsth/controller/DownloadController.java
... ... @@ -31,12 +31,14 @@ public class DownloadController
31 31 @RequestMapping("download")
32 32 public ResponseEntity<byte[]> download(String fileName) throws IOException {
33 33 fileName = fileName+".xls";
34   - String moudelPath = this.getClass().getResource("/").getPath()+ "static\\pages\\forms\\export\\"+fileName;
  34 + String moudelPath = this.getClass().getResource("/").getPath()+ "static/pages/forms/export/"+fileName;
  35 + System.out.println(moudelPath);
35 36 // String path="D:\\export\\target\\"+jName+".xls";
36 37 File file=new File(moudelPath);
37 38 HttpHeaders headers = new HttpHeaders();
38 39 String realFileName=new String(fileName.getBytes("UTF-8"),"iso-8859-1");//为了解决中文名称乱码问题
39   - headers.setContentDispositionFormData("attachment", URLDecoder.decode(realFileName,"utf-8"));
  40 + headers.setContentDispositionFormData("attachment", fileName);
  41 + System.out.println( URLDecoder.decode(realFileName,"utf-8"));
40 42 headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
41 43 return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),
42 44 headers, HttpStatus.CREATED);
... ...
src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
... ... @@ -340,8 +340,9 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
340 340 }
341 341  
342 342 @RequestMapping(value="/statisticsDaily")
343   - public List<Map<String,Object>> statisticsDaily(@RequestParam String line,@RequestParam String date,@RequestParam String xlName){
344   - return scheduleRealInfoService.statisticsDaily(line, date,xlName);
  343 + public List<Map<String,Object>> statisticsDaily(@RequestParam String line, @RequestParam String date,
  344 + @RequestParam String xlName, @RequestParam String type){
  345 + return scheduleRealInfoService.statisticsDaily(line, date, xlName, type);
345 346 }
346 347  
347 348 @RequestMapping(value="/MapById",method = RequestMethod.GET)
... ...
src/main/java/com/bsth/data/gpsdata/GpsEntity.java
... ... @@ -67,16 +67,10 @@ public class GpsEntity {
67 67 /** 当前执行班次ID */
68 68 private Long schId;
69 69  
70   - /** 是否异常数据 */
71   - private boolean abnormal;
72   -/*
73   - private int valid;*/
74   -
75   - private int version;
  70 + /** 是否是不完整的数据 */
  71 + private boolean incomplete;
76 72  
77   - /** 是否起终点站
78   - private boolean sEPoint;
79   - */
  73 + private int version;
80 74  
81 75 /** 0: 站外 1:站内 2:场内 */
82 76 private int instation;
... ... @@ -88,6 +82,12 @@ public class GpsEntity {
88 82 /** 状态 */
89 83 private String signalState = "normal";
90 84  
  85 + /** 异常状态 */
  86 + private String abnormalStatus;
  87 +
  88 + /** 越界距离 */
  89 + private double outOfBoundDistance;
  90 +
91 91 public Integer getCompanyCode() {
92 92 return companyCode;
93 93 }
... ... @@ -241,14 +241,6 @@ public class GpsEntity {
241 241 this.station = station;
242 242 }
243 243  
244   - public boolean isAbnormal() {
245   - return abnormal;
246   - }
247   -
248   - public void setAbnormal(boolean abnormal) {
249   - this.abnormal = abnormal;
250   - }
251   -
252 244 public String getSignalState() {
253 245 return signalState;
254 246 }
... ... @@ -264,4 +256,28 @@ public class GpsEntity {
264 256 public void setInstation(int instation) {
265 257 this.instation = instation;
266 258 }
  259 +
  260 + public String getAbnormalStatus() {
  261 + return abnormalStatus;
  262 + }
  263 +
  264 + public void setAbnormalStatus(String abnormalStatus) {
  265 + this.abnormalStatus = abnormalStatus;
  266 + }
  267 +
  268 + public boolean isIncomplete() {
  269 + return incomplete;
  270 + }
  271 +
  272 + public void setIncomplete(boolean incomplete) {
  273 + this.incomplete = incomplete;
  274 + }
  275 +
  276 + public double getOutOfBoundDistance() {
  277 + return outOfBoundDistance;
  278 + }
  279 +
  280 + public void setOutOfBoundDistance(double outOfBoundDistance) {
  281 + this.outOfBoundDistance = outOfBoundDistance;
  282 + }
267 283 }
... ...
src/main/java/com/bsth/data/gpsdata/GpsRealData.java
... ... @@ -122,7 +122,7 @@ public class GpsRealData implements CommandLineRunner {
122 122 for (String device : set) {
123 123 gps = gpsMap.get(device);
124 124 //过滤异常GPS数据
125   - if (gps == null || gps.isAbnormal())
  125 + if (gps == null || gps.isIncomplete())
126 126 continue;
127 127  
128 128 sch = dayOfSchedule.execPlanMap().get(gps.getNbbm());
... ... @@ -220,7 +220,7 @@ public class GpsRealData implements CommandLineRunner {
220 220  
221 221 nbbm = BasicData.deviceId2NbbmMap.get(gps.getDeviceId());
222 222 if (StringUtils.isBlank(nbbm))
223   - gps.setAbnormal(true);//标记为异常数据
  223 + gps.setIncomplete(true);//标记为异常数据
224 224 else
225 225 gps.setNbbm(nbbm);
226 226 //有更新的点位
... ...
src/main/java/com/bsth/data/gpsdata/arrival/GeoCacheData.java
... ... @@ -45,6 +45,9 @@ public class GeoCacheData {
45 45 //停车场
46 46 public static Map<String, Polygon> tccMap;
47 47  
  48 + //线路限速信息
  49 + private static Map<String, Double> speedLimitMap;
  50 +
48 51 @Autowired
49 52 JdbcTemplate jdbcTemplate;
50 53  
... ... @@ -94,6 +97,14 @@ public class GeoCacheData {
94 97 return null;
95 98 }
96 99  
  100 + public static Double speedLimit(String lineCode){
  101 + return speedLimitMap.get(lineCode);
  102 + }
  103 +
  104 + public static List<LineString> getLineStringList(GpsEntity gps){
  105 + return sectionCacheMap.get(gps.getLineId() + "_" + gps.getUpDown());
  106 + }
  107 +
97 108 public static List<StationRoute> midwayStation(String lineCode, int directions, String sCode, String eCode) {
98 109 List<StationRoute> list = getStationRoute(lineCode, directions), rs = new ArrayList<>();
99 110  
... ... @@ -113,8 +124,72 @@ public class GeoCacheData {
113 124 return tccMap.get(code);
114 125 }
115 126  
  127 + GeometryFactory geometryFactory = new GeometryFactory();
116 128 public void loadData() {
117   - final GeometryFactory geometryFactory = new GeometryFactory();
  129 + loadStationRoutesData();
  130 + loadTccMapData();
  131 + loadSpeedLimit();
  132 +
  133 + //加载路段信息
  134 + loadRoadsData();
  135 + }
  136 +
  137 + private void loadRoadsData() {
  138 + 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 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";
  139 + List<Map<String, Object>> secList = jdbcTemplate.queryForList(sql);
  140 +
  141 + String polygonStr, key;
  142 + String[] coords;
  143 + int i, len;
  144 +
  145 + ArrayListMultimap<String, LineString> sectionCacheTempMap = ArrayListMultimap.create();
  146 + Coordinate[] cds;
  147 + String[] temps1, temps2;
  148 + for (Map<String, Object> tMap : secList) {
  149 + polygonStr = tMap.get("GSECTION_VECTOR").toString();
  150 + key = tMap.get("LINE_CODE") + "_" + tMap.get("DIRECTIONS");
  151 +
  152 + coords = polygonStr.substring(11, polygonStr.length() - 1).split(",");
  153 + len = coords.length - 1;
  154 + //每2个点连一条线
  155 + for(i = 0; i < len; i ++){
  156 + temps1 = coords[i].split(" ");
  157 + temps2 = coords[i + 1].split(" ");
  158 +
  159 + cds = new Coordinate[2];
  160 + cds[0] = new Coordinate(Float.parseFloat(temps1[1]), Float.parseFloat(temps1[0]));
  161 + cds[1] = new Coordinate(Float.parseFloat(temps2[1]), Float.parseFloat(temps2[0]));
  162 +
  163 + sectionCacheTempMap.put(key, geometryFactory.createLineString(cds));
  164 + }
  165 + }
  166 +
  167 + if(sectionCacheTempMap.size() > 0)
  168 + sectionCacheMap = sectionCacheTempMap;
  169 + }
  170 +
  171 + private void loadTccMapData(){
  172 + //加载停车场数据
  173 + 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";
  174 + List<Map<String, Object>> tccList = jdbcTemplate.queryForList(sql);
  175 + Map<String, Polygon> tccTempMap = new HashMap<>();
  176 +
  177 + Polygon polygon;
  178 + for (Map<String, Object> tMap : tccList) {
  179 +
  180 + try {
  181 + polygon = geometryFactory.createPolygon(parsePolygon(tMap.get("G_PARK_POINT").toString()));
  182 + tccTempMap.put(tMap.get("PARK_CODE").toString()
  183 + , polygon);
  184 + } catch (Exception e) {
  185 + logger.error("停车场:" + tMap.get("PARK_CODE"), e);
  186 + }
  187 + }
  188 + if (tccTempMap.size() > 0)
  189 + tccMap = tccTempMap;
  190 + }
  191 +
  192 + private void loadStationRoutesData(){
118 193 //加载站点路由
119 194 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";
120 195 List<StationRoute> routeList = jdbcTemplate.query(sql, new RowMapper<StationRoute>() {
... ... @@ -159,26 +234,17 @@ public class GeoCacheData {
159 234 stationCacheMap = tempMap;
160 235 routeCodeMap = codeMap;
161 236 }
  237 + }
162 238  
163   - //加载停车场数据
164   - 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";
165   - List<Map<String, Object>> tccList = jdbcTemplate.queryForList(sql);
166   - Map<String, Polygon> tccTempMap = new HashMap<>();
167   -
168   - Polygon polygon;
169   - for (Map<String, Object> tMap : tccList) {
170   -
171   - try {
172   - polygon = geometryFactory.createPolygon(parsePolygon(tMap.get("G_PARK_POINT").toString()));
173   - tccTempMap.put(tMap.get("PARK_CODE").toString()
174   - , polygon);
175   - } catch (Exception e) {
176   - logger.error("停车场:" + tMap.get("PARK_CODE"), e);
177   - }
  239 + private void loadSpeedLimit(){
  240 + //加载线路限速信息
  241 + String sql = "select l.LINE_CODE,i.SPEED_LIMIT from bsth_c_line_information i left join bsth_c_line l on i.line=l.id where i.speed_limit is not null";
  242 + List<Map<String, Object>> speedMap = jdbcTemplate.queryForList(sql);
  243 + Map<String, Double> speedTempMap = new HashMap<>();
  244 + for (Map<String, Object> tMap : speedMap) {
  245 + speedTempMap.put(tMap.get("LINE_CODE").toString(), Double.parseDouble(tMap.get("SPEED_LIMIT").toString()));
178 246 }
179   -
180   - if (tccTempMap.size() > 0)
181   - tccMap = tccTempMap;
  247 + speedLimitMap = speedTempMap;
182 248 }
183 249  
184 250 private void connectStationRoute(List<StationRoute> list) {
... ... @@ -209,6 +275,7 @@ public class GeoCacheData {
209 275  
210 276 /**
211 277 * 是不是终点站
  278 + *
212 279 * @param lineId
213 280 * @param upDown
214 281 * @param stationCode
... ...
src/main/java/com/bsth/data/gpsdata/arrival/GpsRealAnalyse.java
... ... @@ -33,6 +33,8 @@ public class GpsRealAnalyse {
33 33 InOutStationSignalHandle inOutStationSignalHandle;
34 34 @Autowired
35 35 ReverseSignalHandle reverseSignalHandle;
  36 + @Autowired
  37 + AbnormalStateHandle abnormalStateHandle;
36 38  
37 39 @Autowired
38 40 GpsRealData gpsRealData;
... ... @@ -72,14 +74,21 @@ public class GpsRealAnalyse {
72 74 public void run() {
73 75  
74 76 try {
  77 + //是否有任务
  78 + boolean task;
75 79 CircleQueue<GpsEntity> prevs = GeoCacheData.getGps(gps.getNbbm());
76 80 //掉线处理
77 81 offlineSignalHandle.handle(gps, prevs);
78 82 //状态处理
79   - if(!correctSignalHandle.handle(gps, prevs))
80   - return;
  83 + task = correctSignalHandle.handle(gps, prevs);
81 84 //场,站内外判断
82 85 stationInsideHandle.handle(gps, prevs);
  86 + //异常判定(越界/超速)
  87 + abnormalStateHandle.handle(gps, prevs);
  88 +
  89 + if(!task)
  90 + return; //无任务的,到这里就结束
  91 +
83 92 //反向处理
84 93 reverseSignalHandle.handle(gps, prevs);
85 94 //进出站动作处理
... ...
src/main/java/com/bsth/data/gpsdata/arrival/handlers/AbnormalStateHandle.java 0 → 100644
  1 +package com.bsth.data.gpsdata.arrival.handlers;
  2 +
  3 +import com.bsth.data.gpsdata.GpsEntity;
  4 +import com.bsth.data.gpsdata.arrival.GeoCacheData;
  5 +import com.bsth.data.gpsdata.arrival.SignalHandle;
  6 +import com.bsth.data.gpsdata.arrival.utils.CircleQueue;
  7 +import com.bsth.data.gpsdata.arrival.utils.GeoUtils;
  8 +import com.vividsolutions.jts.geom.Coordinate;
  9 +import com.vividsolutions.jts.geom.GeometryFactory;
  10 +import com.vividsolutions.jts.geom.LineString;
  11 +import com.vividsolutions.jts.geom.Point;
  12 +import org.springframework.stereotype.Component;
  13 +
  14 +import java.util.List;
  15 +
  16 +/**
  17 + * GPS异常状态判定 (越界/超速)
  18 + * Created by panzhao on 2017/1/10.
  19 + */
  20 +@Component
  21 +public class AbnormalStateHandle extends SignalHandle{
  22 +
  23 + //默认限速
  24 + private static final double DEFAULT_SPEED_LIMIT = 60;
  25 + //越界阈值
  26 + private static final double OUT_BOUNDS_THRESHOLD = 100;
  27 +
  28 + GeometryFactory geometryFactory = new GeometryFactory();
  29 +
  30 + @Override
  31 + public boolean handle(GpsEntity gps, CircleQueue<GpsEntity> prevs) {
  32 +
  33 + if(overspeed(gps))
  34 + return true;
  35 +
  36 + if(outOfBounds((gps)))
  37 + return true;
  38 +
  39 + return false;
  40 + }
  41 +
  42 + /**
  43 + * 是否超速
  44 + * @param gps
  45 + * @return
  46 + */
  47 + public boolean overspeed(GpsEntity gps){
  48 + double maxSpeed = DEFAULT_SPEED_LIMIT;
  49 + if(GeoCacheData.speedLimit(gps.getLineId()) != null)
  50 + maxSpeed = GeoCacheData.speedLimit(gps.getLineId());
  51 +
  52 + if(gps.getSpeed() > maxSpeed){
  53 + gps.setAbnormalStatus("overspeed");
  54 + return true;
  55 + }
  56 + return false;
  57 + }
  58 +
  59 + /**
  60 + * 是否越界
  61 + * @param gps
  62 + * @return
  63 + */
  64 + public boolean outOfBounds(GpsEntity gps){
  65 + //场内的车不处理
  66 + if(gps.getInstation() == 2){
  67 + return false;
  68 + }
  69 +
  70 + List<LineString> list = GeoCacheData.getLineStringList(gps);
  71 + Point point = geometryFactory.createPoint(new Coordinate(gps.getLat(), gps.getLon()));
  72 +
  73 + double min = -1, distance;
  74 +
  75 + for(LineString lineString : list){
  76 + distance = GeoUtils.getDistanceFromLine(lineString, point);
  77 +
  78 + if(min == -1 || min > distance)
  79 + min = distance;
  80 + }
  81 +
  82 + gps.setOutOfBoundDistance(min);
  83 + if(min > OUT_BOUNDS_THRESHOLD){
  84 + gps.setAbnormalStatus("outBounds");
  85 + return true;
  86 + }
  87 + return false;
  88 + }
  89 +}
... ...
src/main/java/com/bsth/data/gpsdata/arrival/utils/GeoUtils.java
... ... @@ -3,10 +3,7 @@ package com.bsth.data.gpsdata.arrival.utils;
3 3 import com.bsth.data.gpsdata.GpsEntity;
4 4 import com.bsth.data.gpsdata.arrival.GeoCacheData;
5 5 import com.bsth.data.gpsdata.arrival.entity.StationRoute;
6   -import com.vividsolutions.jts.geom.Coordinate;
7   -import com.vividsolutions.jts.geom.GeometryFactory;
8   -import com.vividsolutions.jts.geom.Point;
9   -import com.vividsolutions.jts.geom.Polygon;
  6 +import com.vividsolutions.jts.geom.*;
10 7  
11 8 import java.util.List;
12 9 import java.util.Map;
... ... @@ -90,6 +87,36 @@ public class GeoUtils {
90 87 return Math.PI * degree / 180;
91 88 }
92 89  
  90 + /**
  91 + * 计算点 到 线的距离
  92 + * @param line
  93 + * @param p
  94 + * @return
  95 + */
  96 + public static double getDistanceFromLine(LineString line, Point p){
  97 + Point s = line.getStartPoint();
  98 + Point e = line.getEndPoint();
  99 +
  100 + double d1 = getDistance(s, p);
  101 + double d2 = getDistance(p, e);
  102 + double d3 = getDistance(s, e);
  103 + double distance = 0;
  104 +
  105 + double alpha = Math.acos((d1*d1 + d3*d3 - d2*d2)/(2*d1*d3));
  106 + double beta = Math.acos((d2*d2 + d3*d3 - d1*d1)/(2*d2*d3));
  107 +
  108 + if(alpha>Math.PI/2) {
  109 + distance = d1;
  110 + }
  111 + else if(beta > Math.PI/2) {
  112 + distance = d2;
  113 + }
  114 + else {
  115 + distance = Math.sin(alpha) * d1;
  116 + }
  117 + return distance;
  118 + }
  119 +
93 120  
94 121 /**
95 122 * gps 是否在某个停车场内
... ...
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
... ... @@ -563,8 +563,12 @@ public class DayOfSchedule implements CommandLineRunner {
563 563 */
564 564 public boolean isFirstOut(ScheduleRealInfo sch){
565 565 List<ScheduleRealInfo> list = nbbmScheduleMap.get(sch.getClZbh());
566   - if(list.get(0) == sch && sch.getBcType().equals("out"))
567   - return true;
  566 + try {
  567 + if(list.get(0) == sch && sch.getBcType().equals("out"))
  568 + return true;
  569 + } catch (IndexOutOfBoundsException e) {
  570 + logger.error("小小的数组越界,无伤大雅!");
  571 + }
568 572 return false;
569 573 }
570 574  
... ...
src/main/java/com/bsth/entity/schedule/rule/ScheduleRule1Flat.java
1 1 package com.bsth.entity.schedule.rule;
2 2  
3 3 import com.bsth.entity.Line;
  4 +import com.bsth.entity.schedule.BEntity;
4 5 import com.bsth.entity.schedule.CarConfigInfo;
5   -import com.bsth.entity.sys.SysUser;
6 6  
7 7 import javax.persistence.*;
8 8 import javax.validation.constraints.NotNull;
... ... @@ -35,7 +35,7 @@ import java.util.Date;
35 35  
36 36 )
37 37 })
38   -public class ScheduleRule1Flat {
  38 +public class ScheduleRule1Flat extends BEntity {
39 39 /** 主键Id */
40 40 @Id
41 41 @GeneratedValue
... ... @@ -74,19 +74,6 @@ public class ScheduleRule1Flat {
74 74 /** 翻班格式(TODO:这个用在车子上的,暂时不管)*/
75 75 private String fbgs;
76 76  
77   - /** 创建人 */
78   - @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
79   - private SysUser createBy;
80   - /** 修改人 */
81   - @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
82   - private SysUser updateBy;
83   - /** 创建日期 */
84   - @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
85   - private Date createDate;
86   - /** 修改日期 */
87   - @Column(name = "update_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
88   - private Date updateDate;
89   -
90 77 public Long getId() {
91 78 return id;
92 79 }
... ... @@ -175,35 +162,4 @@ public class ScheduleRule1Flat {
175 162 this.fbgs = fbgs;
176 163 }
177 164  
178   - public SysUser getCreateBy() {
179   - return createBy;
180   - }
181   -
182   - public void setCreateBy(SysUser createBy) {
183   - this.createBy = createBy;
184   - }
185   -
186   - public SysUser getUpdateBy() {
187   - return updateBy;
188   - }
189   -
190   - public void setUpdateBy(SysUser updateBy) {
191   - this.updateBy = updateBy;
192   - }
193   -
194   - public Date getCreateDate() {
195   - return createDate;
196   - }
197   -
198   - public void setCreateDate(Date createDate) {
199   - this.createDate = createDate;
200   - }
201   -
202   - public Date getUpdateDate() {
203   - return updateDate;
204   - }
205   -
206   - public void setUpdateDate(Date updateDate) {
207   - this.updateDate = updateDate;
208   - }
209 165 }
... ...
src/main/java/com/bsth/repository/realcontrol/ScheduleRealInfoRepository.java
... ... @@ -27,7 +27,7 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI
27 27 @Query(value="select min(s.id), s.jGh,s.clZbh,s.lpName,s.jName from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 GROUP BY s.jGh,s.clZbh,s.lpName ,s.jName order by (lpName+1)")
28 28 List<ScheduleRealInfo> queryUserInfo2(String line,String date);
29 29  
30   - @Query(value="select min(s.id), s.clZbh from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 GROUP BY s.clZbh order by (lpName+1)")
  30 + @Query(value="select min(s.id), s.clZbh from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 GROUP BY s.clZbh ")
31 31 List<ScheduleRealInfo> queryUserInfo3(String line,String date);
32 32  
33 33 @Query(value="select s from ScheduleRealInfo s where s.jName = ?1 and s.clZbh = ?2 and s.lpName = ?3 order by bcs")
... ...
src/main/java/com/bsth/service/realcontrol/ScheduleRealInfoService.java
... ... @@ -107,7 +107,7 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L
107 107  
108 108 Map<String, Object> removeChildTask(Long taskId);
109 109  
110   - List<Map<String,Object>> statisticsDaily(String line,String date,String xlName);
  110 + List<Map<String,Object>> statisticsDaily(String line, String date, String xlName, String type);
111 111  
112 112 //List<Object> scheduleDaily(String line,String date);
113 113  
... ...
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
... ... @@ -1378,7 +1378,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1378 1378  
1379 1379 @Override
1380 1380 public List<Map<String, Object>> statisticsDaily(String line, String date,
1381   - String xlName) {
  1381 + String xlName, String type) {
1382 1382 List<ScheduleRealInfo> list = scheduleRealInfoRepository.scheduleByDateAndLine(line, date);
1383 1383 List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>();
1384 1384 DecimalFormat format = new DecimalFormat("0.00");
... ... @@ -1545,6 +1545,24 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1545 1545 map.put("djg_a", djg_a);
1546 1546 map.put("djg_time", djg_time);
1547 1547 lMap.add(map);
  1548 +
  1549 + if(type != null && type.length() != 0 && type.equals("export")){
  1550 + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
  1551 + sdfSimple = new SimpleDateFormat("yyyyMMdd");
  1552 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  1553 + Map<String,Object> m = new HashMap<String, Object>();
  1554 + ReportUtils ee = new ReportUtils();
  1555 + try {
  1556 + listI.add(lMap.iterator());
  1557 + String path = this.getClass().getResource("/").getPath()+"static\\pages\\forms\\";
  1558 + ee.excelReplace(listI, new Object[] { m }, path+"mould\\statisticsDaily_.xls",
  1559 + path+"export\\统计日报" + sdfSimple.format(sdfMonth.parse(date))+".xls");
  1560 + } catch (Exception e) {
  1561 + // TODO: handle exception
  1562 + e.printStackTrace();
  1563 + }
  1564 + }
  1565 +
1548 1566 return lMap;
1549 1567 }
1550 1568  
... ... @@ -2201,12 +2219,43 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2201 2219 map.put("sjbc", jhbc-cjbc+ljbc);
2202 2220 map.put("zgl", format.format(yygl+remMileage+ksgl+jcclc));
2203 2221 map.put("ljbc", ljbc);
2204   -
2205   - String path = this.getClass().getResource("/").getPath()+"static\\pages\\forms\\";
2206   -
  2222 + String zdp="",zwdp="",wdp="";
  2223 + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");
  2224 + List<DutyEmployee> listDtuy= dutyEmployeeService.getDutyEmployee(line, date+"00:00", date+"23:59");
  2225 + try {
  2226 + Long fcsj1=sdf.parse(date+" 03:00").getTime();
  2227 + Long fcsj2=sdf.parse(date+" 11:00").getTime();
  2228 + Long fcsj3=sdf.parse(date+" 22:00").getTime();
  2229 + for(int i=0;i<list.size();i++){
  2230 + DutyEmployee t=listDtuy.get(i);
  2231 + Long ts=t.getTs();
  2232 + if(ts>fcsj1&&ts<fcsj2){
  2233 + if(zdp.indexOf(t.getuName())==-1){
  2234 + zdp +=t.getuName()+",";
  2235 +
  2236 + }
  2237 + }else if(ts>fcsj2 && ts<fcsj3){
  2238 + if(zwdp.indexOf(t.getuName())==-1){
  2239 + zwdp +=t.getuName()+",";
  2240 + }
  2241 + }else{
  2242 + if(wdp.indexOf(t.getuName())==-1){
  2243 + wdp +=t.getuName()+",";
  2244 + }
  2245 + }
  2246 + }
  2247 + }catch (ParseException e) {
  2248 + // TODO Auto-generated catch block
  2249 + e.printStackTrace();
  2250 + }
  2251 + map.put("zdp", zdp);
  2252 + map.put("zwdp", zwdp);
  2253 + map.put("wdp", wdp);
  2254 + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
2207 2255 list.add(listMap.iterator());
2208   - ee.excelReplace(list, new Object[] { scheduleRealInfos.get(0),map }, path+"mould\\waybill_qingpu.xls",
2209   - path+"export\\" + date+"-"+clZbh+"-行车路单.xls");
  2256 + ee.excelReplace(list, new Object[] { scheduleRealInfos.get(0),map }, path+"mould/waybill_qingpu.xls",
  2257 + path+"export/" + date+"-"+clZbh+"-行车路单.xls");
  2258 +
2210 2259 return scheduleRealInfos;
2211 2260 }
2212 2261  
... ... @@ -2304,6 +2353,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2304 2353 map.put("sjbc", jhbc-cjbc+ljbc);
2305 2354 map.put("zgl", format.format(yygl+remMileage+ksgl+jcclc));
2306 2355 map.put("ljbc", ljbc);
  2356 +
2307 2357 return map;
2308 2358 }
2309 2359  
... ... @@ -2356,6 +2406,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2356 2406 map.put("zdzName", s.getZdzName());
2357 2407 map.put("scheduleDate", s.getScheduleDateStr());
2358 2408 String zdp="",zwdp="",wdp="";
  2409 + String zdpT="",zwdpT="",wdpT="";
2359 2410  
2360 2411 List<DutyEmployee> list= dutyEmployeeService.getDutyEmployee(xlbm, fcrq+"00:00", fcrq+"23:59");
2361 2412 try {
... ... @@ -2367,14 +2418,24 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2367 2418 Long ts=t.getTs();
2368 2419 if(ts>fcsj1&&ts<fcsj2){
2369 2420 if(zdp.indexOf(t.getuName())==-1){
  2421 + if(!(zdp.length()>0)){
  2422 + zdpT =t.getuName()+"...";
  2423 + }
2370 2424 zdp +=t.getuName()+",";
  2425 +
2371 2426 }
2372 2427 }else if(ts>fcsj2 && ts<fcsj3){
2373 2428 if(zwdp.indexOf(t.getuName())==-1){
  2429 + if(!(zwdp.length()>0)){
  2430 + zwdpT =t.getuName()+"...";
  2431 + }
2374 2432 zwdp +=t.getuName()+",";
2375 2433 }
2376 2434 }else{
2377 2435 if(wdp.indexOf(t.getuName())==-1){
  2436 + if(!(wdp.length()>0)){
  2437 + wdpT =t.getuName()+"...";
  2438 + }
2378 2439 wdp +=t.getuName()+",";
2379 2440 }
2380 2441 }
... ... @@ -2386,6 +2447,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2386 2447 map.put("zdp", zdp);
2387 2448 map.put("zwdp", zwdp);
2388 2449 map.put("wdp", wdp);
  2450 + map.put("zdpT", zdpT);
  2451 + map.put("zwdpT", zwdpT);
  2452 + map.put("wdpT", wdpT);
2389 2453 return map;
2390 2454 }
2391 2455  
... ...
src/main/java/com/bsth/service/schedule/impl/ScheduleRule1FlatServiceImpl.java
... ... @@ -29,6 +29,34 @@ public class ScheduleRule1FlatServiceImpl extends BServiceImpl&lt;ScheduleRule1Flat
29 29 private DataToolsProperties dataToolsProperties;
30 30  
31 31 @Override
  32 + public void importData(File file, Map<String, Object> params) throws ScheduleException {
  33 + try {
  34 + LOGGER.info("//---------------- 导入排版规则信息 start... ----------------//");
  35 + // 创建ktr转换所需参数
  36 + Map<String, Object> ktrParms = new HashMap<>();
  37 + File ktrFile = new File(this.getClass().getResource(
  38 + dataToolsProperties.getScheduleruleDatainputktr()).toURI());
  39 +
  40 + // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径
  41 + ktrParms.put("transpath", ktrFile.getAbsolutePath());
  42 + ktrParms.put("filepath", file.getAbsolutePath());
  43 + ktrParms.put("erroroutputdir", dataToolsProperties.getTransErrordir());
  44 +
  45 + super.importData(file, ktrParms);
  46 +
  47 + LOGGER.info("//---------------- 导入排版规则信息 success... ----------------//");
  48 + } catch (Exception exp) {
  49 + LOGGER.info("//---------------- 导入排版规则信息 failed... ----------------//");
  50 +
  51 + StringWriter sw = new StringWriter();
  52 + exp.printStackTrace(new PrintWriter(sw));
  53 + LOGGER.info(sw.toString());
  54 +
  55 + throw new ScheduleException(exp.getMessage());
  56 + }
  57 + }
  58 +
  59 + @Override
32 60 public File exportData(Map<String, Object> params) throws ScheduleException {
33 61 try {
34 62 LOGGER.info("//---------------- 导出排版规则信息 start... ----------------//");
... ...
src/main/java/com/bsth/service/schedule/utils/DataToolsProperties.java
... ... @@ -45,7 +45,7 @@ public class DataToolsProperties {
45 45 private String kvarsDbdname;
46 46  
47 47 /**------------------------- 导入数据ktr --------------------------*/
48   - /** 测试temp的ktr转换文件 */
  48 + /** 车辆信息导入ktr转换 */
49 49 @NotNull
50 50 private String carsDatainputktr;
51 51 /** 人员信息导入ktr转换 */
... ... @@ -66,12 +66,16 @@ public class DataToolsProperties {
66 66 /** 时刻表明细信息导入(元数据) */
67 67 @NotNull
68 68 private String ttinfodetailMetadatainputktr;
69   - /** 时刻表明细编辑用数据(TODO:之后要换成元数据形式输入) */
  69 + /** 时刻表明细编辑用数据 */
70 70 @NotNull
71 71 private String ttinfodetailForeditktr;
72 72 /** 时刻表明细信息导入 */
73 73 @NotNull
74 74 private String ttinfodetailDatainputktr;
  75 + /** 排班规则信息导入 */
  76 + @NotNull
  77 + private String scheduleruleDatainputktr;
  78 +
75 79  
76 80 /**------------------------- 导出数据ktr --------------------------*/
77 81 /** 车辆信息导出ktr转换 */
... ... @@ -196,6 +200,14 @@ public class DataToolsProperties {
196 200 this.ttinfodetailDatainputktr = ttinfodetailDatainputktr;
197 201 }
198 202  
  203 + public String getScheduleruleDatainputktr() {
  204 + return scheduleruleDatainputktr;
  205 + }
  206 +
  207 + public void setScheduleruleDatainputktr(String scheduleruleDatainputktr) {
  208 + this.scheduleruleDatainputktr = scheduleruleDatainputktr;
  209 + }
  210 +
199 211 public String getKettleProperties() {
200 212 return kettleProperties;
201 213 }
... ...
src/main/java/com/bsth/util/ReportUtils.java
... ... @@ -452,7 +452,7 @@ public class ReportUtils {
452 452 targetFile.delete();
453 453 }
454 454 // 创建目标文件夹
455   - targetFile = new File(path.substring(0, path.lastIndexOf("\\")));
  455 + targetFile = new File(path.substring(0, path.lastIndexOf("/")));
456 456 if (!targetFile.exists()) {
457 457 targetFile.mkdirs();
458 458 }
... ...
src/main/resources/datatools/config-dev.properties
... ... @@ -31,7 +31,7 @@ datatools.guideboards_datainputktr=/datatools/ktrs/guideboardDataInput.ktr
31 31 datatools.ttinfo_datainputktr=/datatools/ktrs/ttinfoDataInput.ktr
32 32 # 时刻表明细信息导入(元数据)
33 33 datatools.ttinfodetail_metadatainputktr=/datatools/ktrs/ttinfodetailMetaData.ktr
34   -# 时刻表明细编辑用数据(TODO:之后要换成元数据形式输入)
  34 +# 时刻表明细编辑用数据
35 35 datatools.ttinfodetail_foreditktr=/datatools/ktrs/ttinfodetailoutputforedit.ktr
36 36 # 时刻表明细信息导入
37 37 datatools.ttinfodetail_datainputktr=/datatools/ktrs/ttinfodetailDataInput.ktr
... ... @@ -41,8 +41,8 @@ datatools.carsconfig_datainputktr=/datatools/ktrs/carsConfigDataInput.ktr
41 41 # 人员配置信息导入
42 42 datatools.employeesconfig_datainputktr=/datatools/ktrs/employeesConfigDataInput.ktr
43 43  
44   -# TODO:排班规则信息导入
45   -
  44 +# 排版规则信息导入
  45 +datatools.schedulerule_datainputktr=/datatools/ktrs/scheduleRuleDataInput.ktr
46 46  
47 47 # 4、数据导出配置信息
48 48 # 导出数据文件目录配置(根据不同的环境需要修正)
... ...
src/main/resources/datatools/config-prod.properties
... ... @@ -32,7 +32,7 @@ datatools.guideboards_datainputktr=/datatools/ktrs/guideboardDataInput.ktr
32 32 datatools.ttinfo_datainputktr=/datatools/ktrs/ttinfoDataInput.ktr
33 33 # 时刻表明细信息导入(元数据)
34 34 datatools.ttinfodetail_metadatainputktr=/datatools/ktrs/ttinfodetailMetaData.ktr
35   -# 时刻表明细编辑用数据(TODO:之后要换成元数据形式输入)
  35 +# 时刻表明细编辑用数据
36 36 datatools.ttinfodetail_foreditktr=/datatools/ktrs/ttinfodetailoutputforedit.ktr
37 37 # 时刻表明细信息导入
38 38 datatools.ttinfodetail_datainputktr=/datatools/ktrs/ttinfodetailDataInput.ktr
... ... @@ -42,8 +42,8 @@ datatools.carsconfig_datainputktr=/datatools/ktrs/carsConfigDataInput.ktr
42 42 # 人员配置信息导入
43 43 datatools.employeesconfig_datainputktr=/datatools/ktrs/employeesConfigDataInput.ktr
44 44  
45   -# TODO:排班规则信息导入
46   -
  45 +# 排版规则信息导入
  46 +datatools.schedulerule_datainputktr=/datatools/ktrs/scheduleRuleDataInput.ktr
47 47  
48 48 # 4、数据导出配置信息
49 49 # 导出数据文件目录配置(根据不同的环境需要修正)
... ...
src/main/resources/datatools/ktrs/scheduleRuleDataInput.ktr
1   -<?xml version="1.0" encoding="UTF-8"?>
2   -<transformation>
3   - <info>
4   - <name>scheduleRuleDataInput</name>
5   - <description/>
6   - <extended_description/>
7   - <trans_version/>
8   - <trans_type>Normal</trans_type>
9   - <directory>&#x2f;</directory>
10   - <parameters>
11   - </parameters>
12   - <log>
13   -<trans-log-table><connection/>
14   -<schema/>
15   -<table/>
16   -<size_limit_lines/>
17   -<interval/>
18   -<timeout_days/>
19   -<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>
20   -<perf-log-table><connection/>
21   -<schema/>
22   -<table/>
23   -<interval/>
24   -<timeout_days/>
25   -<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>
26   -<channel-log-table><connection/>
27   -<schema/>
28   -<table/>
29   -<timeout_days/>
30   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>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>
31   -<step-log-table><connection/>
32   -<schema/>
33   -<table/>
34   -<timeout_days/>
35   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>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>
36   -<metrics-log-table><connection/>
37   -<schema/>
38   -<table/>
39   -<timeout_days/>
40   -<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>
41   - </log>
42   - <maxdate>
43   - <connection/>
44   - <table/>
45   - <field/>
46   - <offset>0.0</offset>
47   - <maxdiff>0.0</maxdiff>
48   - </maxdate>
49   - <size_rowset>10000</size_rowset>
50   - <sleep_time_empty>50</sleep_time_empty>
51   - <sleep_time_full>50</sleep_time_full>
52   - <unique_connections>N</unique_connections>
53   - <feedback_shown>Y</feedback_shown>
54   - <feedback_size>50000</feedback_size>
55   - <using_thread_priorities>Y</using_thread_priorities>
56   - <shared_objects_file/>
57   - <capture_step_performance>N</capture_step_performance>
58   - <step_performance_capturing_delay>1000</step_performance_capturing_delay>
59   - <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
60   - <dependencies>
61   - </dependencies>
62   - <partitionschemas>
63   - </partitionschemas>
64   - <slaveservers>
65   - </slaveservers>
66   - <clusterschemas>
67   - </clusterschemas>
68   - <created_user>-</created_user>
69   - <created_date>2017&#x2f;01&#x2f;09 10&#x3a;10&#x3a;36.915</created_date>
70   - <modified_user>-</modified_user>
71   - <modified_date>2017&#x2f;01&#x2f;09 10&#x3a;10&#x3a;36.915</modified_date>
72   - <key_for_session_key/>
73   - <is_key_private>N</is_key_private>
74   - </info>
75   - <notepads>
76   - </notepads>
77   - <connection>
78   - <name>bus_control_variable</name>
79   - <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
80   - <type>MYSQL</type>
81   - <access>Native</access>
82   - <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
83   - <port>3306</port>
84   - <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
85   - <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
86   - <servername/>
87   - <data_tablespace/>
88   - <index_tablespace/>
89   - <attributes>
90   - <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
91   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
92   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
93   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
94   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
95   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
96   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
97   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
98   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
99   - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
100   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
101   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
102   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
103   - </attributes>
104   - </connection>
105   - <connection>
106   - <name>bus_control_&#x516c;&#x53f8;_201</name>
107   - <server>localhost</server>
108   - <type>MYSQL</type>
109   - <access>Native</access>
110   - <database>control</database>
111   - <port>3306</port>
112   - <username>root</username>
113   - <password>Encrypted </password>
114   - <servername/>
115   - <data_tablespace/>
116   - <index_tablespace/>
117   - <attributes>
118   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
119   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
120   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
121   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
122   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
123   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
124   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
125   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
126   - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
127   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
128   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
129   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
130   - </attributes>
131   - </connection>
132   - <connection>
133   - <name>bus_control_&#x672c;&#x673a;</name>
134   - <server>localhost</server>
135   - <type>MYSQL</type>
136   - <access>Native</access>
137   - <database>control</database>
138   - <port>3306</port>
139   - <username>root</username>
140   - <password>Encrypted </password>
141   - <servername/>
142   - <data_tablespace/>
143   - <index_tablespace/>
144   - <attributes>
145   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
146   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
147   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
148   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
149   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
150   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
151   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
152   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
153   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
154   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
155   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
156   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
157   - </attributes>
158   - </connection>
159   - <connection>
160   - <name>xlab_mysql_youle</name>
161   - <server>101.231.124.8</server>
162   - <type>MYSQL</type>
163   - <access>Native</access>
164   - <database>xlab_youle</database>
165   - <port>45687</port>
166   - <username>xlab-youle</username>
167   - <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
168   - <servername/>
169   - <data_tablespace/>
170   - <index_tablespace/>
171   - <attributes>
172   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
173   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
174   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
175   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
176   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
177   - <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
178   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
179   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
180   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
181   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
182   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
183   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
184   - </attributes>
185   - </connection>
186   - <connection>
187   - <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
188   - <server>localhost</server>
189   - <type>MYSQL</type>
190   - <access>Native</access>
191   - <database>xlab_youle</database>
192   - <port>3306</port>
193   - <username>root</username>
194   - <password>Encrypted </password>
195   - <servername/>
196   - <data_tablespace/>
197   - <index_tablespace/>
198   - <attributes>
199   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
200   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
201   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
202   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
203   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
204   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
205   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
206   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
207   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
208   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
209   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
210   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
211   - </attributes>
212   - </connection>
213   - <connection>
214   - <name>xlab_youle</name>
215   - <server/>
216   - <type>MYSQL</type>
217   - <access>JNDI</access>
218   - <database>xlab_youle</database>
219   - <port>1521</port>
220   - <username/>
221   - <password>Encrypted </password>
222   - <servername/>
223   - <data_tablespace/>
224   - <index_tablespace/>
225   - <attributes>
226   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
227   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
228   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
229   - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
230   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
231   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
232   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
233   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
234   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
235   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
236   - </attributes>
237   - </connection>
238   - <order>
239   - <hop> <from>&#x81ea;&#x5b9a;&#x4e49;&#x5e38;&#x91cf;&#x6570;&#x636e;</from><to>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</to><enabled>Y</enabled> </hop>
240   - <hop> <from>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</from><to>&#x5206;&#x7ec4;</to><enabled>Y</enabled> </hop>
241   - <hop> <from>&#x5206;&#x7ec4;</from><to>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</to><enabled>Y</enabled> </hop>
242   - <hop> <from>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</from><to>&#x5206;&#x7ec4; 2</to><enabled>Y</enabled> </hop>
243   - </order>
244   - <step>
245   - <name>&#x81ea;&#x5b9a;&#x4e49;&#x5e38;&#x91cf;&#x6570;&#x636e;</name>
246   - <type>DataGrid</type>
247   - <description/>
248   - <distribute>Y</distribute>
249   - <custom_distribution/>
250   - <copies>1</copies>
251   - <partitioning>
252   - <method>none</method>
253   - <schema_name/>
254   - </partitioning>
255   - <fields>
256   - <field>
257   - <name>line</name>
258   - <type>String</type>
259   - <format/>
260   - <currency/>
261   - <decimal/>
262   - <group/>
263   - <length>-1</length>
264   - <precision>-1</precision>
265   - <set_empty_string>N</set_empty_string>
266   - </field>
267   - <field>
268   - <name>carconfigids</name>
269   - <type>String</type>
270   - <format/>
271   - <currency/>
272   - <decimal/>
273   - <group/>
274   - <length>-1</length>
275   - <precision>-1</precision>
276   - <set_empty_string>N</set_empty_string>
277   - </field>
278   - <field>
279   - <name>employeeconfigids</name>
280   - <type>String</type>
281   - <format/>
282   - <currency/>
283   - <decimal/>
284   - <group/>
285   - <length>-1</length>
286   - <precision>-1</precision>
287   - <set_empty_string>N</set_empty_string>
288   - </field>
289   - <field>
290   - <name>lpids</name>
291   - <type>String</type>
292   - <format/>
293   - <currency/>
294   - <decimal/>
295   - <group/>
296   - <length>-1</length>
297   - <precision>-1</precision>
298   - <set_empty_string>N</set_empty_string>
299   - </field>
300   - </fields>
301   - <data>
302   - <line> <item>&#x7ebf;&#x8def;1</item><item>1</item><item>2,3,4,5</item><item>1,2,3</item> </line>
303   - </data>
304   - <cluster_schema/>
305   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
306   - <xloc>200</xloc>
307   - <yloc>100</yloc>
308   - <draw>Y</draw>
309   - </GUI>
310   - </step>
311   -
312   - <step>
313   - <name>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</name>
314   - <type>SplitFieldToRows3</type>
315   - <description/>
316   - <distribute>Y</distribute>
317   - <custom_distribution/>
318   - <copies>1</copies>
319   - <partitioning>
320   - <method>none</method>
321   - <schema_name/>
322   - </partitioning>
323   - <splitfield>employeeconfigids</splitfield>
324   - <delimiter>,</delimiter>
325   - <newfield>ecid</newfield>
326   - <rownum>N</rownum>
327   - <rownum_field/>
328   - <resetrownumber>Y</resetrownumber>
329   - <delimiter_is_regex>N</delimiter_is_regex>
330   - <cluster_schema/>
331   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
332   - <xloc>400</xloc>
333   - <yloc>100</yloc>
334   - <draw>Y</draw>
335   - </GUI>
336   - </step>
337   -
338   - <step>
339   - <name>&#x5206;&#x7ec4;</name>
340   - <type>GroupBy</type>
341   - <description/>
342   - <distribute>Y</distribute>
343   - <custom_distribution/>
344   - <copies>1</copies>
345   - <partitioning>
346   - <method>none</method>
347   - <schema_name/>
348   - </partitioning>
349   - <all_rows>N</all_rows>
350   - <ignore_aggregate>N</ignore_aggregate>
351   - <field_ignore/>
352   - <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
353   - <prefix>grp</prefix>
354   - <add_linenr>N</add_linenr>
355   - <linenr_fieldname/>
356   - <give_back_row>N</give_back_row>
357   - <group>
358   - <field>
359   - <name>line</name>
360   - </field>
361   - <field>
362   - <name>lpids</name>
363   - </field>
364   - </group>
365   - <fields>
366   - <field>
367   - <aggregate>ecid2</aggregate>
368   - <subject>ecid</subject>
369   - <type>CONCAT_STRING</type>
370   - <valuefield>,</valuefield>
371   - </field>
372   - </fields>
373   - <cluster_schema/>
374   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
375   - <xloc>397</xloc>
376   - <yloc>185</yloc>
377   - <draw>Y</draw>
378   - </GUI>
379   - </step>
380   -
381   - <step>
382   - <name>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</name>
383   - <type>SplitFieldToRows3</type>
384   - <description/>
385   - <distribute>Y</distribute>
386   - <custom_distribution/>
387   - <copies>1</copies>
388   - <partitioning>
389   - <method>none</method>
390   - <schema_name/>
391   - </partitioning>
392   - <splitfield>lpids</splitfield>
393   - <delimiter>,</delimiter>
394   - <newfield>lpid</newfield>
395   - <rownum>N</rownum>
396   - <rownum_field/>
397   - <resetrownumber>Y</resetrownumber>
398   - <delimiter_is_regex>N</delimiter_is_regex>
399   - <cluster_schema/>
400   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
401   - <xloc>546</xloc>
402   - <yloc>101</yloc>
403   - <draw>Y</draw>
404   - </GUI>
405   - </step>
406   -
407   - <step>
408   - <name>&#x5206;&#x7ec4; 2</name>
409   - <type>GroupBy</type>
410   - <description/>
411   - <distribute>Y</distribute>
412   - <custom_distribution/>
413   - <copies>1</copies>
414   - <partitioning>
415   - <method>none</method>
416   - <schema_name/>
417   - </partitioning>
418   - <all_rows>N</all_rows>
419   - <ignore_aggregate>N</ignore_aggregate>
420   - <field_ignore/>
421   - <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
422   - <prefix>grp</prefix>
423   - <add_linenr>N</add_linenr>
424   - <linenr_fieldname/>
425   - <give_back_row>N</give_back_row>
426   - <group>
427   - <field>
428   - <name>line</name>
429   - </field>
430   - <field>
431   - <name>ecid2</name>
432   - </field>
433   - </group>
434   - <fields>
435   - <field>
436   - <aggregate>lpid2</aggregate>
437   - <subject>lpid</subject>
438   - <type>CONCAT_STRING</type>
439   - <valuefield>,</valuefield>
440   - </field>
441   - </fields>
442   - <cluster_schema/>
443   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
444   - <xloc>548</xloc>
445   - <yloc>185</yloc>
446   - <draw>Y</draw>
447   - </GUI>
448   - </step>
449   -
450   - <step_error_handling>
451   - </step_error_handling>
452   - <slave-step-copy-partition-distribution>
453   -</slave-step-copy-partition-distribution>
454   - <slave_transformation>N</slave_transformation>
455   -
456   -</transformation>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>scheduleRuleDataInput</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;bsth_project&#x2f;bsth_control_etl&#x2f;&#x5bfc;&#x5165;&#x5bfc;&#x51fa;1</default_value>
  15 + <description>ktr step&#x914d;&#x7f6e;&#x7684;&#x9519;&#x8bef;&#x8f93;&#x51fa;&#x76ee;&#x5f55;</description>
  16 + </parameter>
  17 + <parameter>
  18 + <name>filepath</name>
  19 + <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project_code&#x2f;bsth_project&#x2f;bsth_control_etl&#x2f;&#x5bfc;&#x5165;&#x5bfc;&#x51fa;1&#x2f;&#x6392;&#x7248;&#x89c4;&#x5219;&#x4fe1;&#x606f;.xls</default_value>
  20 + <description>&#x5f85;&#x5904;&#x7406;&#x5bfc;&#x5165;&#x7684;excel&#x6587;&#x4ef6;</description>
  21 + </parameter>
  22 + </parameters>
  23 + <log>
  24 +<trans-log-table><connection/>
  25 +<schema/>
  26 +<table/>
  27 +<size_limit_lines/>
  28 +<interval/>
  29 +<timeout_days/>
  30 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table>
  31 +<perf-log-table><connection/>
  32 +<schema/>
  33 +<table/>
  34 +<interval/>
  35 +<timeout_days/>
  36 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table>
  37 +<channel-log-table><connection/>
  38 +<schema/>
  39 +<table/>
  40 +<timeout_days/>
  41 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table>
  42 +<step-log-table><connection/>
  43 +<schema/>
  44 +<table/>
  45 +<timeout_days/>
  46 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table>
  47 +<metrics-log-table><connection/>
  48 +<schema/>
  49 +<table/>
  50 +<timeout_days/>
  51 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table>
  52 + </log>
  53 + <maxdate>
  54 + <connection/>
  55 + <table/>
  56 + <field/>
  57 + <offset>0.0</offset>
  58 + <maxdiff>0.0</maxdiff>
  59 + </maxdate>
  60 + <size_rowset>10000</size_rowset>
  61 + <sleep_time_empty>50</sleep_time_empty>
  62 + <sleep_time_full>50</sleep_time_full>
  63 + <unique_connections>N</unique_connections>
  64 + <feedback_shown>Y</feedback_shown>
  65 + <feedback_size>50000</feedback_size>
  66 + <using_thread_priorities>Y</using_thread_priorities>
  67 + <shared_objects_file/>
  68 + <capture_step_performance>N</capture_step_performance>
  69 + <step_performance_capturing_delay>1000</step_performance_capturing_delay>
  70 + <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
  71 + <dependencies>
  72 + </dependencies>
  73 + <partitionschemas>
  74 + </partitionschemas>
  75 + <slaveservers>
  76 + </slaveservers>
  77 + <clusterschemas>
  78 + </clusterschemas>
  79 + <created_user>-</created_user>
  80 + <created_date>2017&#x2f;01&#x2f;09 10&#x3a;10&#x3a;36.915</created_date>
  81 + <modified_user>-</modified_user>
  82 + <modified_date>2017&#x2f;01&#x2f;09 10&#x3a;10&#x3a;36.915</modified_date>
  83 + <key_for_session_key/>
  84 + <is_key_private>N</is_key_private>
  85 + </info>
  86 + <notepads>
  87 + <notepad>
  88 + <note>&#x8fd9;&#x91cc;&#x6709;&#x4e9b;&#x95ee;&#x9898;&#xa;&#x5728;window2012&#x7684;&#x73af;&#x5883;&#x4e0b;&#xff0c;&#xa;MySql&#x6570;&#x636e;&#x5e93;&#x67e5;&#x8be2;&#x4e2d;&#x5982;&#x679c;&#x8fd4;&#x56de;&#x4e2d;&#x6587;&#x5185;&#x5bb9;&#x7684;&#x5b57;&#x6bb5;&#xff0c;&#x8fd9;&#x4e2a;&#x5185;&#x5bb9;&#x4e71;&#x7801;&#xa;&#x89e3;&#x51b3;&#x529e;&#x6cd5;&#xff0c;&#x5c31;&#x662f;&#x6570;&#x636e;&#x5e93;&#x67e5;&#x8be2;&#x5168;&#x90e8;&#x7f13;&#x5b58;&#xff0c;&#x5c31;&#x4e0d;&#x4e71;&#x7801;&#xa;linux&#x73af;&#x5883;&#x4e0b;&#x6ca1;&#x95ee;&#x9898;</note>
  89 + <xloc>41</xloc>
  90 + <yloc>315</yloc>
  91 + <width>333</width>
  92 + <heigth>90</heigth>
  93 + <fontname>YaHei Consolas Hybrid</fontname>
  94 + <fontsize>12</fontsize>
  95 + <fontbold>N</fontbold>
  96 + <fontitalic>N</fontitalic>
  97 + <fontcolorred>0</fontcolorred>
  98 + <fontcolorgreen>0</fontcolorgreen>
  99 + <fontcolorblue>0</fontcolorblue>
  100 + <backgroundcolorred>255</backgroundcolorred>
  101 + <backgroundcolorgreen>205</backgroundcolorgreen>
  102 + <backgroundcolorblue>112</backgroundcolorblue>
  103 + <bordercolorred>100</bordercolorred>
  104 + <bordercolorgreen>100</bordercolorgreen>
  105 + <bordercolorblue>100</bordercolorblue>
  106 + <drawshadow>Y</drawshadow>
  107 + </notepad>
  108 + </notepads>
  109 + <connection>
  110 + <name>bus_control_variable</name>
  111 + <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
  112 + <type>MYSQL</type>
  113 + <access>Native</access>
  114 + <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
  115 + <port>3306</port>
  116 + <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
  117 + <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
  118 + <servername/>
  119 + <data_tablespace/>
  120 + <index_tablespace/>
  121 + <attributes>
  122 + <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
  123 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  124 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  125 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  126 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  127 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  128 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  129 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  130 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  131 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  132 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  133 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  134 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  135 + </attributes>
  136 + </connection>
  137 + <connection>
  138 + <name>bus_control_&#x516c;&#x53f8;_201</name>
  139 + <server>localhost</server>
  140 + <type>MYSQL</type>
  141 + <access>Native</access>
  142 + <database>control</database>
  143 + <port>3306</port>
  144 + <username>root</username>
  145 + <password>Encrypted </password>
  146 + <servername/>
  147 + <data_tablespace/>
  148 + <index_tablespace/>
  149 + <attributes>
  150 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  151 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  152 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  153 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  154 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  155 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  156 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  157 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  158 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  159 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  160 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  161 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  162 + </attributes>
  163 + </connection>
  164 + <connection>
  165 + <name>bus_control_&#x672c;&#x673a;</name>
  166 + <server>localhost</server>
  167 + <type>MYSQL</type>
  168 + <access>Native</access>
  169 + <database>control</database>
  170 + <port>3306</port>
  171 + <username>root</username>
  172 + <password>Encrypted </password>
  173 + <servername/>
  174 + <data_tablespace/>
  175 + <index_tablespace/>
  176 + <attributes>
  177 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  178 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  179 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  180 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  181 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  182 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  183 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  184 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  185 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  186 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  187 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  188 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  189 + </attributes>
  190 + </connection>
  191 + <connection>
  192 + <name>xlab_mysql_youle</name>
  193 + <server>101.231.124.8</server>
  194 + <type>MYSQL</type>
  195 + <access>Native</access>
  196 + <database>xlab_youle</database>
  197 + <port>45687</port>
  198 + <username>xlab-youle</username>
  199 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
  200 + <servername/>
  201 + <data_tablespace/>
  202 + <index_tablespace/>
  203 + <attributes>
  204 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  205 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  206 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  207 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  208 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  209 + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
  210 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  211 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  212 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  213 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  214 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  215 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  216 + </attributes>
  217 + </connection>
  218 + <connection>
  219 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  220 + <server>localhost</server>
  221 + <type>MYSQL</type>
  222 + <access>Native</access>
  223 + <database>xlab_youle</database>
  224 + <port>3306</port>
  225 + <username>root</username>
  226 + <password>Encrypted </password>
  227 + <servername/>
  228 + <data_tablespace/>
  229 + <index_tablespace/>
  230 + <attributes>
  231 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  232 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  233 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  234 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  235 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  236 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  237 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  238 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  239 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  240 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  241 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  242 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  243 + </attributes>
  244 + </connection>
  245 + <connection>
  246 + <name>xlab_youle</name>
  247 + <server/>
  248 + <type>MYSQL</type>
  249 + <access>JNDI</access>
  250 + <database>xlab_youle</database>
  251 + <port>1521</port>
  252 + <username/>
  253 + <password>Encrypted </password>
  254 + <servername/>
  255 + <data_tablespace/>
  256 + <index_tablespace/>
  257 + <attributes>
  258 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  259 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  260 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  261 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  262 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  263 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  264 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  265 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  266 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  267 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  268 + </attributes>
  269 + </connection>
  270 + <order>
  271 + <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>
  272 + <hop> <from>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</from><to>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</to><enabled>Y</enabled> </hop>
  273 + <hop> <from>&#x62c6;&#x5206;&#x8def;&#x724c;&#x8303;&#x56f4;</from><to>&#x8def;&#x724c;id&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  274 + <hop> <from>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</from><to>&#x5206;&#x7ec4;&#x5408;&#x5e76;&#x8def;&#x724c;id</to><enabled>Y</enabled> </hop>
  275 + <hop> <from>&#x5206;&#x7ec4;&#x5408;&#x5e76;&#x8def;&#x724c;id</from><to>&#x62c6;&#x5206;&#x4eba;&#x5458;&#x8303;&#x56f4;</to><enabled>Y</enabled> </hop>
  276 + <hop> <from>&#x62c6;&#x5206;&#x4eba;&#x5458;&#x8303;&#x56f4;</from><to>&#x62c6;&#x5206;&#x5206;&#x73ed;&#x642d;&#x73ed;&#x7f16;&#x7801;&#x5b57;&#x6bb5;</to><enabled>Y</enabled> </hop>
  277 + <hop> <from>&#x62c6;&#x5206;&#x5206;&#x73ed;&#x642d;&#x73ed;&#x7f16;&#x7801;&#x5b57;&#x6bb5;</from><to>&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  278 + <hop> <from>&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x67e5;&#x8be2;</from><to>&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x67e5;&#x8be2; 2</to><enabled>Y</enabled> </hop>
  279 + <hop> <from>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</from><to>&#x7ebf;&#x8def;&#x540d;&#x79f0;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  280 + <hop> <from>&#x7ebf;&#x8def;&#x540d;&#x79f0;&#x67e5;&#x8be2;</from><to>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  281 + <hop> <from>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</from><to>&#x8f66;&#x8f86;&#x914d;&#x7f6e;id&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  282 + <hop> <from>&#x8f66;&#x8f86;&#x914d;&#x7f6e;id&#x67e5;&#x8be2;</from><to>&#x8fc7;&#x6ee4;&#x8f66;&#x8f86;&#x914d;&#x7f6e;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  283 + <hop> <from>&#x8fc7;&#x6ee4;&#x8f66;&#x8f86;&#x914d;&#x7f6e;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</from><to>&#x62c6;&#x5206;&#x8def;&#x724c;&#x8303;&#x56f4;</to><enabled>Y</enabled> </hop>
  284 + <hop> <from>&#x8def;&#x724c;id&#x67e5;&#x8be2;</from><to>&#x8fc7;&#x6ee4;&#x8def;&#x724c;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  285 + <hop> <from>&#x8fc7;&#x6ee4;&#x8def;&#x724c;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</from><to>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  286 + <hop> <from>&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x67e5;&#x8be2; 2</from><to>&#x8fc7;&#x6ee4;&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  287 + <hop> <from>&#x8fc7;&#x6ee4;&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</from><to>&#x5408;&#x5e76;&#x5206;&#x73ed;&#x4eba;&#x5458;&#x914d;&#x7f6e;id</to><enabled>Y</enabled> </hop>
  288 + <hop> <from>&#x5408;&#x5e76;&#x5206;&#x73ed;&#x4eba;&#x5458;&#x914d;&#x7f6e;id</from><to>&#x6392;&#x5e8f;&#x8bb0;&#x5f55; 2</to><enabled>Y</enabled> </hop>
  289 + <hop> <from>&#x6392;&#x5e8f;&#x8bb0;&#x5f55; 2</from><to>&#x5206;&#x7ec4;&#x5408;&#x5e76;&#x4eba;&#x5458;&#x914d;&#x7f6e;id</to><enabled>Y</enabled> </hop>
  290 + <hop> <from>&#x63d2;&#x5165; &#x2f; &#x66f4;&#x65b0;bsth_c_s_sr1_flat</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa; 2</to><enabled>Y</enabled> </hop>
  291 + <hop> <from>&#x5206;&#x7ec4;&#x5408;&#x5e76;&#x4eba;&#x5458;&#x914d;&#x7f6e;id</from><to>&#x542f;&#x7528;&#x65e5;&#x671f;&#x8f6c;&#x6362;</to><enabled>Y</enabled> </hop>
  292 + <hop> <from>&#x542f;&#x7528;&#x65e5;&#x671f;&#x8f6c;&#x6362;</from><to>&#x63d2;&#x5165; &#x2f; &#x66f4;&#x65b0;bsth_c_s_sr1_flat</to><enabled>Y</enabled> </hop>
  293 + </order>
  294 + <step>
  295 + <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name>
  296 + <type>ExcelInput</type>
  297 + <description/>
  298 + <distribute>Y</distribute>
  299 + <custom_distribution/>
  300 + <copies>1</copies>
  301 + <partitioning>
  302 + <method>none</method>
  303 + <schema_name/>
  304 + </partitioning>
  305 + <header>Y</header>
  306 + <noempty>Y</noempty>
  307 + <stoponempty>N</stoponempty>
  308 + <filefield/>
  309 + <sheetfield/>
  310 + <sheetrownumfield/>
  311 + <rownumfield/>
  312 + <sheetfield/>
  313 + <filefield/>
  314 + <limit>0</limit>
  315 + <encoding/>
  316 + <add_to_result_filenames>Y</add_to_result_filenames>
  317 + <accept_filenames>N</accept_filenames>
  318 + <accept_field>filepath_</accept_field>
  319 + <accept_stepname>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</accept_stepname>
  320 + <file>
  321 + <name>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project_code&#x2f;bsth_project&#x2f;bsth_control_etl&#x2f;&#x5bfc;&#x5165;&#x5bfc;&#x51fa;1&#x2f;&#x6392;&#x7248;&#x89c4;&#x5219;&#x4fe1;&#x606f;.xls</name>
  322 + <filemask/>
  323 + <exclude_filemask/>
  324 + <file_required>N</file_required>
  325 + <include_subfolders>N</include_subfolders>
  326 + </file>
  327 + <fields>
  328 + <field>
  329 + <name>&#x7ebf;&#x8def;</name>
  330 + <type>String</type>
  331 + <length>-1</length>
  332 + <precision>-1</precision>
  333 + <trim_type>none</trim_type>
  334 + <repeat>N</repeat>
  335 + <format/>
  336 + <currency/>
  337 + <decimal/>
  338 + <group/>
  339 + </field>
  340 + <field>
  341 + <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
  342 + <type>String</type>
  343 + <length>-1</length>
  344 + <precision>-1</precision>
  345 + <trim_type>none</trim_type>
  346 + <repeat>N</repeat>
  347 + <format/>
  348 + <currency/>
  349 + <decimal/>
  350 + <group/>
  351 + </field>
  352 + <field>
  353 + <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  354 + <type>String</type>
  355 + <length>-1</length>
  356 + <precision>-1</precision>
  357 + <trim_type>none</trim_type>
  358 + <repeat>N</repeat>
  359 + <format/>
  360 + <currency/>
  361 + <decimal/>
  362 + <group/>
  363 + </field>
  364 + <field>
  365 + <name>&#x8d77;&#x59cb;&#x8def;&#x724c;</name>
  366 + <type>String</type>
  367 + <length>-1</length>
  368 + <precision>-1</precision>
  369 + <trim_type>none</trim_type>
  370 + <repeat>N</repeat>
  371 + <format>&#x23;</format>
  372 + <currency/>
  373 + <decimal/>
  374 + <group/>
  375 + </field>
  376 + <field>
  377 + <name>&#x8def;&#x724c;&#x8303;&#x56f4;</name>
  378 + <type>String</type>
  379 + <length>-1</length>
  380 + <precision>-1</precision>
  381 + <trim_type>none</trim_type>
  382 + <repeat>N</repeat>
  383 + <format>&#x23;</format>
  384 + <currency/>
  385 + <decimal/>
  386 + <group/>
  387 + </field>
  388 + <field>
  389 + <name>&#x8d77;&#x59cb;&#x4eba;&#x5458;</name>
  390 + <type>String</type>
  391 + <length>-1</length>
  392 + <precision>-1</precision>
  393 + <trim_type>none</trim_type>
  394 + <repeat>N</repeat>
  395 + <format>&#x23;</format>
  396 + <currency/>
  397 + <decimal/>
  398 + <group/>
  399 + </field>
  400 + <field>
  401 + <name>&#x4eba;&#x5458;&#x8303;&#x56f4;</name>
  402 + <type>String</type>
  403 + <length>-1</length>
  404 + <precision>-1</precision>
  405 + <trim_type>none</trim_type>
  406 + <repeat>N</repeat>
  407 + <format>&#x23;</format>
  408 + <currency/>
  409 + <decimal/>
  410 + <group/>
  411 + </field>
  412 + <field>
  413 + <name>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</name>
  414 + <type>String</type>
  415 + <length>-1</length>
  416 + <precision>-1</precision>
  417 + <trim_type>none</trim_type>
  418 + <repeat>N</repeat>
  419 + <format>&#x23;</format>
  420 + <currency/>
  421 + <decimal/>
  422 + <group/>
  423 + </field>
  424 + </fields>
  425 + <sheets>
  426 + <sheet>
  427 + <name>&#x5de5;&#x4f5c;&#x8868;1</name>
  428 + <startrow>0</startrow>
  429 + <startcol>0</startcol>
  430 + </sheet>
  431 + </sheets>
  432 + <strict_types>N</strict_types>
  433 + <error_ignored>N</error_ignored>
  434 + <error_line_skipped>N</error_line_skipped>
  435 + <bad_line_files_destination_directory/>
  436 + <bad_line_files_extension>warning</bad_line_files_extension>
  437 + <error_line_files_destination_directory/>
  438 + <error_line_files_extension>error</error_line_files_extension>
  439 + <line_number_files_destination_directory/>
  440 + <line_number_files_extension>line</line_number_files_extension>
  441 + <shortFileFieldName/>
  442 + <pathFieldName/>
  443 + <hiddenFieldName/>
  444 + <lastModificationTimeFieldName/>
  445 + <uriNameFieldName/>
  446 + <rootUriNameFieldName/>
  447 + <extensionFieldName/>
  448 + <sizeFieldName/>
  449 + <spreadsheet_type>JXL</spreadsheet_type>
  450 + <cluster_schema/>
  451 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  452 + <xloc>208</xloc>
  453 + <yloc>21</yloc>
  454 + <draw>Y</draw>
  455 + </GUI>
  456 + </step>
  457 +
  458 + <step>
  459 + <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>
  460 + <type>GetVariable</type>
  461 + <description/>
  462 + <distribute>Y</distribute>
  463 + <custom_distribution/>
  464 + <copies>1</copies>
  465 + <partitioning>
  466 + <method>none</method>
  467 + <schema_name/>
  468 + </partitioning>
  469 + <fields>
  470 + <field>
  471 + <name>filepath_</name>
  472 + <variable>&#x24;&#x7b;filepath&#x7d;</variable>
  473 + <type>String</type>
  474 + <format/>
  475 + <currency/>
  476 + <decimal/>
  477 + <group/>
  478 + <length>-1</length>
  479 + <precision>-1</precision>
  480 + <trim_type>none</trim_type>
  481 + </field>
  482 + <field>
  483 + <name>erroroutputdir_</name>
  484 + <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
  485 + <type>String</type>
  486 + <format/>
  487 + <currency/>
  488 + <decimal/>
  489 + <group/>
  490 + <length>-1</length>
  491 + <precision>-1</precision>
  492 + <trim_type>none</trim_type>
  493 + </field>
  494 + </fields>
  495 + <cluster_schema/>
  496 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  497 + <xloc>53</xloc>
  498 + <yloc>23</yloc>
  499 + <draw>Y</draw>
  500 + </GUI>
  501 + </step>
  502 +
  503 + <step>
  504 + <name>&#x62c6;&#x5206;&#x8def;&#x724c;&#x8303;&#x56f4;</name>
  505 + <type>SplitFieldToRows3</type>
  506 + <description/>
  507 + <distribute>Y</distribute>
  508 + <custom_distribution/>
  509 + <copies>1</copies>
  510 + <partitioning>
  511 + <method>none</method>
  512 + <schema_name/>
  513 + </partitioning>
  514 + <splitfield>&#x8def;&#x724c;&#x8303;&#x56f4;</splitfield>
  515 + <delimiter>,</delimiter>
  516 + <newfield>lpname</newfield>
  517 + <rownum>N</rownum>
  518 + <rownum_field/>
  519 + <resetrownumber>Y</resetrownumber>
  520 + <delimiter_is_regex>N</delimiter_is_regex>
  521 + <cluster_schema/>
  522 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  523 + <xloc>364</xloc>
  524 + <yloc>259</yloc>
  525 + <draw>Y</draw>
  526 + </GUI>
  527 + </step>
  528 +
  529 + <step>
  530 + <name>&#x7ebf;&#x8def;&#x540d;&#x79f0;&#x67e5;&#x8be2;</name>
  531 + <type>DBLookup</type>
  532 + <description/>
  533 + <distribute>Y</distribute>
  534 + <custom_distribution/>
  535 + <copies>1</copies>
  536 + <partitioning>
  537 + <method>none</method>
  538 + <schema_name/>
  539 + </partitioning>
  540 + <connection>bus_control_variable</connection>
  541 + <cache>Y</cache>
  542 + <cache_load_all>Y</cache_load_all>
  543 + <cache_size>0</cache_size>
  544 + <lookup>
  545 + <schema/>
  546 + <table>bsth_c_line</table>
  547 + <orderby/>
  548 + <fail_on_multiple>N</fail_on_multiple>
  549 + <eat_row_on_failure>N</eat_row_on_failure>
  550 + <key>
  551 + <name>&#x7ebf;&#x8def;</name>
  552 + <field>name</field>
  553 + <condition>&#x3d;</condition>
  554 + <name2/>
  555 + </key>
  556 + <key>
  557 + <name>isCancel</name>
  558 + <field>destroy</field>
  559 + <condition>&#x3d;</condition>
  560 + <name2/>
  561 + </key>
  562 + <value>
  563 + <name>id</name>
  564 + <rename>xlid</rename>
  565 + <default/>
  566 + <type>Integer</type>
  567 + </value>
  568 + </lookup>
  569 + <cluster_schema/>
  570 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  571 + <xloc>359</xloc>
  572 + <yloc>110</yloc>
  573 + <draw>Y</draw>
  574 + </GUI>
  575 + </step>
  576 +
  577 + <step>
  578 + <name>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</name>
  579 + <type>Constant</type>
  580 + <description/>
  581 + <distribute>Y</distribute>
  582 + <custom_distribution/>
  583 + <copies>1</copies>
  584 + <partitioning>
  585 + <method>none</method>
  586 + <schema_name/>
  587 + </partitioning>
  588 + <fields>
  589 + <field>
  590 + <name>isCancel</name>
  591 + <type>Integer</type>
  592 + <format/>
  593 + <currency/>
  594 + <decimal/>
  595 + <group/>
  596 + <nullif>0</nullif>
  597 + <length>-1</length>
  598 + <precision>-1</precision>
  599 + <set_empty_string>N</set_empty_string>
  600 + </field>
  601 + </fields>
  602 + <cluster_schema/>
  603 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  604 + <xloc>361</xloc>
  605 + <yloc>22</yloc>
  606 + <draw>Y</draw>
  607 + </GUI>
  608 + </step>
  609 +
  610 + <step>
  611 + <name>&#x8def;&#x724c;id&#x67e5;&#x8be2;</name>
  612 + <type>DBLookup</type>
  613 + <description/>
  614 + <distribute>Y</distribute>
  615 + <custom_distribution/>
  616 + <copies>1</copies>
  617 + <partitioning>
  618 + <method>none</method>
  619 + <schema_name/>
  620 + </partitioning>
  621 + <connection>bus_control_variable</connection>
  622 + <cache>Y</cache>
  623 + <cache_load_all>Y</cache_load_all>
  624 + <cache_size>0</cache_size>
  625 + <lookup>
  626 + <schema/>
  627 + <table>bsth_c_s_gbi</table>
  628 + <orderby/>
  629 + <fail_on_multiple>N</fail_on_multiple>
  630 + <eat_row_on_failure>N</eat_row_on_failure>
  631 + <key>
  632 + <name>xlid</name>
  633 + <field>xl</field>
  634 + <condition>&#x3d;</condition>
  635 + <name2/>
  636 + </key>
  637 + <key>
  638 + <name>lpname</name>
  639 + <field>lp_name</field>
  640 + <condition>&#x3d;</condition>
  641 + <name2/>
  642 + </key>
  643 + <key>
  644 + <name>isCancel</name>
  645 + <field>is_cancel</field>
  646 + <condition>&#x3d;</condition>
  647 + <name2/>
  648 + </key>
  649 + <value>
  650 + <name>id</name>
  651 + <rename>lpid</rename>
  652 + <default/>
  653 + <type>Integer</type>
  654 + </value>
  655 + </lookup>
  656 + <cluster_schema/>
  657 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  658 + <xloc>516</xloc>
  659 + <yloc>21</yloc>
  660 + <draw>Y</draw>
  661 + </GUI>
  662 + </step>
  663 +
  664 + <step>
  665 + <name>&#x5206;&#x7ec4;&#x5408;&#x5e76;&#x8def;&#x724c;id</name>
  666 + <type>GroupBy</type>
  667 + <description/>
  668 + <distribute>Y</distribute>
  669 + <custom_distribution/>
  670 + <copies>1</copies>
  671 + <partitioning>
  672 + <method>none</method>
  673 + <schema_name/>
  674 + </partitioning>
  675 + <all_rows>N</all_rows>
  676 + <ignore_aggregate>N</ignore_aggregate>
  677 + <field_ignore/>
  678 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  679 + <prefix>grp</prefix>
  680 + <add_linenr>N</add_linenr>
  681 + <linenr_fieldname/>
  682 + <give_back_row>N</give_back_row>
  683 + <group>
  684 + <field>
  685 + <name>xlid</name>
  686 + </field>
  687 + <field>
  688 + <name>cid</name>
  689 + </field>
  690 + <field>
  691 + <name>&#x8def;&#x724c;&#x8303;&#x56f4;</name>
  692 + </field>
  693 + <field>
  694 + <name>&#x8d77;&#x59cb;&#x8def;&#x724c;</name>
  695 + </field>
  696 + <field>
  697 + <name>&#x8d77;&#x59cb;&#x4eba;&#x5458;</name>
  698 + </field>
  699 + <field>
  700 + <name>&#x4eba;&#x5458;&#x8303;&#x56f4;</name>
  701 + </field>
  702 + <field>
  703 + <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  704 + </field>
  705 + <field>
  706 + <name>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</name>
  707 + </field>
  708 + <field>
  709 + <name>isCancel</name>
  710 + </field>
  711 + </group>
  712 + <fields>
  713 + <field>
  714 + <aggregate>lpids</aggregate>
  715 + <subject>lpid</subject>
  716 + <type>CONCAT_STRING</type>
  717 + <valuefield>,</valuefield>
  718 + </field>
  719 + </fields>
  720 + <cluster_schema/>
  721 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  722 + <xloc>653</xloc>
  723 + <yloc>119</yloc>
  724 + <draw>Y</draw>
  725 + </GUI>
  726 + </step>
  727 +
  728 + <step>
  729 + <name>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</name>
  730 + <type>SortRows</type>
  731 + <description/>
  732 + <distribute>Y</distribute>
  733 + <custom_distribution/>
  734 + <copies>1</copies>
  735 + <partitioning>
  736 + <method>none</method>
  737 + <schema_name/>
  738 + </partitioning>
  739 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  740 + <prefix>out</prefix>
  741 + <sort_size>1000000</sort_size>
  742 + <free_memory/>
  743 + <compress>N</compress>
  744 + <compress_variable/>
  745 + <unique_rows>N</unique_rows>
  746 + <fields>
  747 + <field>
  748 + <name>xlid</name>
  749 + <ascending>Y</ascending>
  750 + <case_sensitive>N</case_sensitive>
  751 + <presorted>N</presorted>
  752 + </field>
  753 + <field>
  754 + <name>cid</name>
  755 + <ascending>Y</ascending>
  756 + <case_sensitive>N</case_sensitive>
  757 + <presorted>N</presorted>
  758 + </field>
  759 + <field>
  760 + <name>&#x8def;&#x724c;&#x8303;&#x56f4;</name>
  761 + <ascending>Y</ascending>
  762 + <case_sensitive>N</case_sensitive>
  763 + <presorted>N</presorted>
  764 + </field>
  765 + <field>
  766 + <name>&#x8d77;&#x59cb;&#x8def;&#x724c;</name>
  767 + <ascending>Y</ascending>
  768 + <case_sensitive>N</case_sensitive>
  769 + <presorted>N</presorted>
  770 + </field>
  771 + <field>
  772 + <name>&#x8d77;&#x59cb;&#x4eba;&#x5458;</name>
  773 + <ascending>Y</ascending>
  774 + <case_sensitive>N</case_sensitive>
  775 + <presorted>N</presorted>
  776 + </field>
  777 + <field>
  778 + <name>&#x4eba;&#x5458;&#x8303;&#x56f4;</name>
  779 + <ascending>Y</ascending>
  780 + <case_sensitive>N</case_sensitive>
  781 + <presorted>N</presorted>
  782 + </field>
  783 + <field>
  784 + <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  785 + <ascending>Y</ascending>
  786 + <case_sensitive>N</case_sensitive>
  787 + <presorted>N</presorted>
  788 + </field>
  789 + <field>
  790 + <name>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</name>
  791 + <ascending>Y</ascending>
  792 + <case_sensitive>N</case_sensitive>
  793 + <presorted>N</presorted>
  794 + </field>
  795 + <field>
  796 + <name>isCancel</name>
  797 + <ascending>Y</ascending>
  798 + <case_sensitive>N</case_sensitive>
  799 + <presorted>N</presorted>
  800 + </field>
  801 + </fields>
  802 + <cluster_schema/>
  803 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  804 + <xloc>516</xloc>
  805 + <yloc>119</yloc>
  806 + <draw>Y</draw>
  807 + </GUI>
  808 + </step>
  809 +
  810 + <step>
  811 + <name>&#x62c6;&#x5206;&#x4eba;&#x5458;&#x8303;&#x56f4;</name>
  812 + <type>SplitFieldToRows3</type>
  813 + <description/>
  814 + <distribute>Y</distribute>
  815 + <custom_distribution/>
  816 + <copies>1</copies>
  817 + <partitioning>
  818 + <method>none</method>
  819 + <schema_name/>
  820 + </partitioning>
  821 + <splitfield>&#x4eba;&#x5458;&#x8303;&#x56f4;</splitfield>
  822 + <delimiter>,</delimiter>
  823 + <newfield>dbbm</newfield>
  824 + <rownum>N</rownum>
  825 + <rownum_field/>
  826 + <resetrownumber>Y</resetrownumber>
  827 + <delimiter_is_regex>N</delimiter_is_regex>
  828 + <cluster_schema/>
  829 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  830 + <xloc>777</xloc>
  831 + <yloc>22</yloc>
  832 + <draw>Y</draw>
  833 + </GUI>
  834 + </step>
  835 +
  836 + <step>
  837 + <name>&#x62c6;&#x5206;&#x5206;&#x73ed;&#x642d;&#x73ed;&#x7f16;&#x7801;&#x5b57;&#x6bb5;</name>
  838 + <type>FieldSplitter</type>
  839 + <description/>
  840 + <distribute>Y</distribute>
  841 + <custom_distribution/>
  842 + <copies>1</copies>
  843 + <partitioning>
  844 + <method>none</method>
  845 + <schema_name/>
  846 + </partitioning>
  847 + <splitfield>dbbm</splitfield>
  848 + <delimiter>-</delimiter>
  849 + <enclosure/>
  850 + <fields> <field> <name>dbbm1</name>
  851 + <id/>
  852 + <idrem>N</idrem>
  853 + <type>String</type>
  854 + <format/>
  855 + <group/>
  856 + <decimal/>
  857 + <currency/>
  858 + <length>-1</length>
  859 + <precision>-1</precision>
  860 + <nullif/>
  861 + <ifnull/>
  862 + <trimtype>none</trimtype>
  863 + </field> <field> <name>dbbm2</name>
  864 + <id/>
  865 + <idrem>N</idrem>
  866 + <type>String</type>
  867 + <format/>
  868 + <group/>
  869 + <decimal/>
  870 + <currency/>
  871 + <length>-1</length>
  872 + <precision>-1</precision>
  873 + <nullif/>
  874 + <ifnull/>
  875 + <trimtype>none</trimtype>
  876 + </field> </fields> <cluster_schema/>
  877 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  878 + <xloc>901</xloc>
  879 + <yloc>22</yloc>
  880 + <draw>Y</draw>
  881 + </GUI>
  882 + </step>
  883 +
  884 + <step>
  885 + <name>&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x67e5;&#x8be2;</name>
  886 + <type>DBLookup</type>
  887 + <description/>
  888 + <distribute>Y</distribute>
  889 + <custom_distribution/>
  890 + <copies>1</copies>
  891 + <partitioning>
  892 + <method>none</method>
  893 + <schema_name/>
  894 + </partitioning>
  895 + <connection>bus_control_variable</connection>
  896 + <cache>Y</cache>
  897 + <cache_load_all>Y</cache_load_all>
  898 + <cache_size>0</cache_size>
  899 + <lookup>
  900 + <schema/>
  901 + <table>bsth_c_s_ecinfo</table>
  902 + <orderby/>
  903 + <fail_on_multiple>N</fail_on_multiple>
  904 + <eat_row_on_failure>N</eat_row_on_failure>
  905 + <key>
  906 + <name>xlid</name>
  907 + <field>xl</field>
  908 + <condition>&#x3d;</condition>
  909 + <name2/>
  910 + </key>
  911 + <key>
  912 + <name>dbbm1</name>
  913 + <field>dbbm</field>
  914 + <condition>&#x3d;</condition>
  915 + <name2/>
  916 + </key>
  917 + <key>
  918 + <name>isCancel</name>
  919 + <field>is_cancel</field>
  920 + <condition>&#x3d;</condition>
  921 + <name2/>
  922 + </key>
  923 + <value>
  924 + <name>id</name>
  925 + <rename>rycid1</rename>
  926 + <default/>
  927 + <type>Integer</type>
  928 + </value>
  929 + </lookup>
  930 + <cluster_schema/>
  931 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  932 + <xloc>904</xloc>
  933 + <yloc>101</yloc>
  934 + <draw>Y</draw>
  935 + </GUI>
  936 + </step>
  937 +
  938 + <step>
  939 + <name>&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x67e5;&#x8be2; 2</name>
  940 + <type>DBLookup</type>
  941 + <description/>
  942 + <distribute>Y</distribute>
  943 + <custom_distribution/>
  944 + <copies>1</copies>
  945 + <partitioning>
  946 + <method>none</method>
  947 + <schema_name/>
  948 + </partitioning>
  949 + <connection>bus_control_variable</connection>
  950 + <cache>Y</cache>
  951 + <cache_load_all>Y</cache_load_all>
  952 + <cache_size>0</cache_size>
  953 + <lookup>
  954 + <schema/>
  955 + <table>bsth_c_s_ecinfo</table>
  956 + <orderby/>
  957 + <fail_on_multiple>N</fail_on_multiple>
  958 + <eat_row_on_failure>N</eat_row_on_failure>
  959 + <key>
  960 + <name>xlid</name>
  961 + <field>xl</field>
  962 + <condition>&#x3d;</condition>
  963 + <name2/>
  964 + </key>
  965 + <key>
  966 + <name>dbbm2</name>
  967 + <field>dbbm</field>
  968 + <condition>&#x3d;</condition>
  969 + <name2/>
  970 + </key>
  971 + <key>
  972 + <name>isCancel</name>
  973 + <field>is_cancel</field>
  974 + <condition>&#x3d;</condition>
  975 + <name2/>
  976 + </key>
  977 + <value>
  978 + <name>id</name>
  979 + <rename>rycid2</rename>
  980 + <default/>
  981 + <type>Integer</type>
  982 + </value>
  983 + </lookup>
  984 + <cluster_schema/>
  985 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  986 + <xloc>778</xloc>
  987 + <yloc>103</yloc>
  988 + <draw>Y</draw>
  989 + </GUI>
  990 + </step>
  991 +
  992 + <step>
  993 + <name>&#x8f66;&#x8f86;&#x914d;&#x7f6e;id&#x67e5;&#x8be2;</name>
  994 + <type>DBJoin</type>
  995 + <description/>
  996 + <distribute>Y</distribute>
  997 + <custom_distribution/>
  998 + <copies>1</copies>
  999 + <partitioning>
  1000 + <method>none</method>
  1001 + <schema_name/>
  1002 + </partitioning>
  1003 + <connection>bus_control_variable</connection>
  1004 + <rowlimit>0</rowlimit>
  1005 + <sql>select t1.id as cid from bsth_c_s_ccinfo t1 left join bsth_c_cars t2 on t1.cl &#x3d; t2.id&#xa;where t1.xl &#x3d; &#x3f; and t2.inside_code &#x3d; &#x3f; and t1.is_cancel &#x3d; &#x3f;</sql>
  1006 + <outer_join>N</outer_join>
  1007 + <replace_vars>N</replace_vars>
  1008 + <parameter>
  1009 + <field>
  1010 + <name>xlid</name>
  1011 + <type>Integer</type>
  1012 + </field>
  1013 + <field>
  1014 + <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
  1015 + <type>String</type>
  1016 + </field>
  1017 + <field>
  1018 + <name>isCancel</name>
  1019 + <type>Integer</type>
  1020 + </field>
  1021 + </parameter>
  1022 + <cluster_schema/>
  1023 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1024 + <xloc>360</xloc>
  1025 + <yloc>184</yloc>
  1026 + <draw>Y</draw>
  1027 + </GUI>
  1028 + </step>
  1029 +
  1030 + <step>
  1031 + <name>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>
  1032 + <type>FilterRows</type>
  1033 + <description/>
  1034 + <distribute>Y</distribute>
  1035 + <custom_distribution/>
  1036 + <copies>1</copies>
  1037 + <partitioning>
  1038 + <method>none</method>
  1039 + <schema_name/>
  1040 + </partitioning>
  1041 +<send_true_to>&#x8f66;&#x8f86;&#x914d;&#x7f6e;id&#x67e5;&#x8be2;</send_true_to>
  1042 +<send_false_to/>
  1043 + <compare>
  1044 +<condition>
  1045 + <negated>N</negated>
  1046 + <leftvalue>xlid</leftvalue>
  1047 + <function>IS NOT NULL</function>
  1048 + <rightvalue/>
  1049 + </condition>
  1050 + </compare>
  1051 + <cluster_schema/>
  1052 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1053 + <xloc>203</xloc>
  1054 + <yloc>110</yloc>
  1055 + <draw>Y</draw>
  1056 + </GUI>
  1057 + </step>
  1058 +
  1059 + <step>
  1060 + <name>&#x8fc7;&#x6ee4;&#x8f66;&#x8f86;&#x914d;&#x7f6e;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>
  1061 + <type>FilterRows</type>
  1062 + <description/>
  1063 + <distribute>Y</distribute>
  1064 + <custom_distribution/>
  1065 + <copies>1</copies>
  1066 + <partitioning>
  1067 + <method>none</method>
  1068 + <schema_name/>
  1069 + </partitioning>
  1070 +<send_true_to>&#x62c6;&#x5206;&#x8def;&#x724c;&#x8303;&#x56f4;</send_true_to>
  1071 +<send_false_to/>
  1072 + <compare>
  1073 +<condition>
  1074 + <negated>N</negated>
  1075 + <leftvalue>cid</leftvalue>
  1076 + <function>IS NOT NULL</function>
  1077 + <rightvalue/>
  1078 + </condition>
  1079 + </compare>
  1080 + <cluster_schema/>
  1081 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1082 + <xloc>208</xloc>
  1083 + <yloc>182</yloc>
  1084 + <draw>Y</draw>
  1085 + </GUI>
  1086 + </step>
  1087 +
  1088 + <step>
  1089 + <name>&#x8fc7;&#x6ee4;&#x8def;&#x724c;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>
  1090 + <type>FilterRows</type>
  1091 + <description/>
  1092 + <distribute>Y</distribute>
  1093 + <custom_distribution/>
  1094 + <copies>1</copies>
  1095 + <partitioning>
  1096 + <method>none</method>
  1097 + <schema_name/>
  1098 + </partitioning>
  1099 +<send_true_to>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</send_true_to>
  1100 +<send_false_to/>
  1101 + <compare>
  1102 +<condition>
  1103 + <negated>N</negated>
  1104 + <leftvalue>lpid</leftvalue>
  1105 + <function>IS NOT NULL</function>
  1106 + <rightvalue/>
  1107 + </condition>
  1108 + </compare>
  1109 + <cluster_schema/>
  1110 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1111 + <xloc>653</xloc>
  1112 + <yloc>23</yloc>
  1113 + <draw>Y</draw>
  1114 + </GUI>
  1115 + </step>
  1116 +
  1117 + <step>
  1118 + <name>&#x8fc7;&#x6ee4;&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>
  1119 + <type>FilterRows</type>
  1120 + <description/>
  1121 + <distribute>Y</distribute>
  1122 + <custom_distribution/>
  1123 + <copies>1</copies>
  1124 + <partitioning>
  1125 + <method>none</method>
  1126 + <schema_name/>
  1127 + </partitioning>
  1128 +<send_true_to/>
  1129 +<send_false_to/>
  1130 + <compare>
  1131 +<condition>
  1132 + <negated>N</negated>
  1133 + <conditions>
  1134 + <condition>
  1135 + <negated>N</negated>
  1136 + <leftvalue>rycid1</leftvalue>
  1137 + <function>IS NOT NULL</function>
  1138 + <rightvalue/>
  1139 + </condition>
  1140 + <condition>
  1141 + <negated>N</negated>
  1142 + <operator>OR</operator>
  1143 + <leftvalue>rycid2</leftvalue>
  1144 + <function>IS NOT NULL</function>
  1145 + <rightvalue/>
  1146 + </condition>
  1147 + </conditions>
  1148 + </condition>
  1149 + </compare>
  1150 + <cluster_schema/>
  1151 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1152 + <xloc>776</xloc>
  1153 + <yloc>204</yloc>
  1154 + <draw>Y</draw>
  1155 + </GUI>
  1156 + </step>
  1157 +
  1158 + <step>
  1159 + <name>&#x5408;&#x5e76;&#x5206;&#x73ed;&#x4eba;&#x5458;&#x914d;&#x7f6e;id</name>
  1160 + <type>ScriptValueMod</type>
  1161 + <description/>
  1162 + <distribute>Y</distribute>
  1163 + <custom_distribution/>
  1164 + <copies>1</copies>
  1165 + <partitioning>
  1166 + <method>none</method>
  1167 + <schema_name/>
  1168 + </partitioning>
  1169 + <compatible>N</compatible>
  1170 + <optimizationLevel>9</optimizationLevel>
  1171 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  1172 + <jsScript_name>Script 1</jsScript_name>
  1173 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var rycid&#x3b;&#xa;&#xa;if &#x28;rycid2 &#x3d;&#x3d; null&#x29; &#x7b;&#xa; rycid &#x3d; rycid1&#x3b;&#xa;&#x7d; else &#x7b;&#xa; rycid &#x3d; rycid1 &#x2b; &#x22;-&#x22; &#x2b; rycid2&#x3b;&#xa;&#x7d;</jsScript_script>
  1174 + </jsScript> </jsScripts> <fields> <field> <name>rycid</name>
  1175 + <rename>rycid</rename>
  1176 + <type>String</type>
  1177 + <length>-1</length>
  1178 + <precision>-1</precision>
  1179 + <replace>N</replace>
  1180 + </field> </fields> <cluster_schema/>
  1181 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1182 + <xloc>917</xloc>
  1183 + <yloc>201</yloc>
  1184 + <draw>Y</draw>
  1185 + </GUI>
  1186 + </step>
  1187 +
  1188 + <step>
  1189 + <name>&#x6392;&#x5e8f;&#x8bb0;&#x5f55; 2</name>
  1190 + <type>SortRows</type>
  1191 + <description/>
  1192 + <distribute>Y</distribute>
  1193 + <custom_distribution/>
  1194 + <copies>1</copies>
  1195 + <partitioning>
  1196 + <method>none</method>
  1197 + <schema_name/>
  1198 + </partitioning>
  1199 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  1200 + <prefix>out</prefix>
  1201 + <sort_size>1000000</sort_size>
  1202 + <free_memory/>
  1203 + <compress>N</compress>
  1204 + <compress_variable/>
  1205 + <unique_rows>N</unique_rows>
  1206 + <fields>
  1207 + <field>
  1208 + <name>xlid</name>
  1209 + <ascending>Y</ascending>
  1210 + <case_sensitive>N</case_sensitive>
  1211 + <presorted>N</presorted>
  1212 + </field>
  1213 + <field>
  1214 + <name>cid</name>
  1215 + <ascending>Y</ascending>
  1216 + <case_sensitive>N</case_sensitive>
  1217 + <presorted>N</presorted>
  1218 + </field>
  1219 + <field>
  1220 + <name>&#x8def;&#x724c;&#x8303;&#x56f4;</name>
  1221 + <ascending>Y</ascending>
  1222 + <case_sensitive>N</case_sensitive>
  1223 + <presorted>N</presorted>
  1224 + </field>
  1225 + <field>
  1226 + <name>lpids</name>
  1227 + <ascending>Y</ascending>
  1228 + <case_sensitive>N</case_sensitive>
  1229 + <presorted>N</presorted>
  1230 + </field>
  1231 + <field>
  1232 + <name>&#x8d77;&#x59cb;&#x8def;&#x724c;</name>
  1233 + <ascending>Y</ascending>
  1234 + <case_sensitive>N</case_sensitive>
  1235 + <presorted>N</presorted>
  1236 + </field>
  1237 + <field>
  1238 + <name>&#x8d77;&#x59cb;&#x4eba;&#x5458;</name>
  1239 + <ascending>Y</ascending>
  1240 + <case_sensitive>N</case_sensitive>
  1241 + <presorted>N</presorted>
  1242 + </field>
  1243 + <field>
  1244 + <name>&#x4eba;&#x5458;&#x8303;&#x56f4;</name>
  1245 + <ascending>Y</ascending>
  1246 + <case_sensitive>N</case_sensitive>
  1247 + <presorted>N</presorted>
  1248 + </field>
  1249 + <field>
  1250 + <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  1251 + <ascending>Y</ascending>
  1252 + <case_sensitive>N</case_sensitive>
  1253 + <presorted>N</presorted>
  1254 + </field>
  1255 + <field>
  1256 + <name>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</name>
  1257 + <ascending>Y</ascending>
  1258 + <case_sensitive>N</case_sensitive>
  1259 + <presorted>N</presorted>
  1260 + </field>
  1261 + <field>
  1262 + <name>isCancel</name>
  1263 + <ascending>Y</ascending>
  1264 + <case_sensitive>N</case_sensitive>
  1265 + <presorted>N</presorted>
  1266 + </field>
  1267 + </fields>
  1268 + <cluster_schema/>
  1269 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1270 + <xloc>919</xloc>
  1271 + <yloc>289</yloc>
  1272 + <draw>Y</draw>
  1273 + </GUI>
  1274 + </step>
  1275 +
  1276 + <step>
  1277 + <name>&#x5206;&#x7ec4;&#x5408;&#x5e76;&#x4eba;&#x5458;&#x914d;&#x7f6e;id</name>
  1278 + <type>GroupBy</type>
  1279 + <description/>
  1280 + <distribute>Y</distribute>
  1281 + <custom_distribution/>
  1282 + <copies>1</copies>
  1283 + <partitioning>
  1284 + <method>none</method>
  1285 + <schema_name/>
  1286 + </partitioning>
  1287 + <all_rows>N</all_rows>
  1288 + <ignore_aggregate>N</ignore_aggregate>
  1289 + <field_ignore/>
  1290 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  1291 + <prefix>grp</prefix>
  1292 + <add_linenr>N</add_linenr>
  1293 + <linenr_fieldname/>
  1294 + <give_back_row>N</give_back_row>
  1295 + <group>
  1296 + <field>
  1297 + <name>xlid</name>
  1298 + </field>
  1299 + <field>
  1300 + <name>cid</name>
  1301 + </field>
  1302 + <field>
  1303 + <name>&#x8def;&#x724c;&#x8303;&#x56f4;</name>
  1304 + </field>
  1305 + <field>
  1306 + <name>lpids</name>
  1307 + </field>
  1308 + <field>
  1309 + <name>&#x8d77;&#x59cb;&#x8def;&#x724c;</name>
  1310 + </field>
  1311 + <field>
  1312 + <name>&#x8d77;&#x59cb;&#x4eba;&#x5458;</name>
  1313 + </field>
  1314 + <field>
  1315 + <name>&#x4eba;&#x5458;&#x8303;&#x56f4;</name>
  1316 + </field>
  1317 + <field>
  1318 + <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  1319 + </field>
  1320 + <field>
  1321 + <name>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</name>
  1322 + </field>
  1323 + <field>
  1324 + <name>isCancel</name>
  1325 + </field>
  1326 + </group>
  1327 + <fields>
  1328 + <field>
  1329 + <aggregate>rycids</aggregate>
  1330 + <subject>rycid</subject>
  1331 + <type>CONCAT_STRING</type>
  1332 + <valuefield>,</valuefield>
  1333 + </field>
  1334 + </fields>
  1335 + <cluster_schema/>
  1336 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1337 + <xloc>780</xloc>
  1338 + <yloc>291</yloc>
  1339 + <draw>Y</draw>
  1340 + </GUI>
  1341 + </step>
  1342 +
  1343 + <step>
  1344 + <name>&#x63d2;&#x5165; &#x2f; &#x66f4;&#x65b0;bsth_c_s_sr1_flat</name>
  1345 + <type>InsertUpdate</type>
  1346 + <description/>
  1347 + <distribute>Y</distribute>
  1348 + <custom_distribution/>
  1349 + <copies>1</copies>
  1350 + <partitioning>
  1351 + <method>none</method>
  1352 + <schema_name/>
  1353 + </partitioning>
  1354 + <connection>bus_control_variable</connection>
  1355 + <commit>100</commit>
  1356 + <update_bypassed>N</update_bypassed>
  1357 + <lookup>
  1358 + <schema/>
  1359 + <table>bsth_c_s_sr1_flat</table>
  1360 + <key>
  1361 + <name>xlid</name>
  1362 + <field>xl</field>
  1363 + <condition>&#x3d;</condition>
  1364 + <name2/>
  1365 + </key>
  1366 + <key>
  1367 + <name>cid</name>
  1368 + <field>car_config_info</field>
  1369 + <condition>&#x3d;</condition>
  1370 + <name2/>
  1371 + </key>
  1372 + <key>
  1373 + <name>&#x8def;&#x724c;&#x8303;&#x56f4;</name>
  1374 + <field>lp_names</field>
  1375 + <condition>&#x3d;</condition>
  1376 + <name2/>
  1377 + </key>
  1378 + <value>
  1379 + <name>xl</name>
  1380 + <rename>xlid</rename>
  1381 + <update>Y</update>
  1382 + </value>
  1383 + <value>
  1384 + <name>car_config_info</name>
  1385 + <rename>cid</rename>
  1386 + <update>Y</update>
  1387 + </value>
  1388 + <value>
  1389 + <name>lp_names</name>
  1390 + <rename>&#x8def;&#x724c;&#x8303;&#x56f4;</rename>
  1391 + <update>Y</update>
  1392 + </value>
  1393 + <value>
  1394 + <name>lp_ids</name>
  1395 + <rename>lpids</rename>
  1396 + <update>Y</update>
  1397 + </value>
  1398 + <value>
  1399 + <name>lp_start</name>
  1400 + <rename>&#x8d77;&#x59cb;&#x8def;&#x724c;</rename>
  1401 + <update>Y</update>
  1402 + </value>
  1403 + <value>
  1404 + <name>ry_start</name>
  1405 + <rename>&#x8d77;&#x59cb;&#x4eba;&#x5458;</rename>
  1406 + <update>Y</update>
  1407 + </value>
  1408 + <value>
  1409 + <name>ry_dbbms</name>
  1410 + <rename>&#x4eba;&#x5458;&#x8303;&#x56f4;</rename>
  1411 + <update>Y</update>
  1412 + </value>
  1413 + <value>
  1414 + <name>qyrq</name>
  1415 + <rename>&#x542f;&#x7528;&#x65e5;&#x671f;</rename>
  1416 + <update>Y</update>
  1417 + </value>
  1418 + <value>
  1419 + <name>ry_config_ids</name>
  1420 + <rename>rycids</rename>
  1421 + <update>Y</update>
  1422 + </value>
  1423 + <value>
  1424 + <name>fbgs</name>
  1425 + <rename>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</rename>
  1426 + <update>Y</update>
  1427 + </value>
  1428 + </lookup>
  1429 + <cluster_schema/>
  1430 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1431 + <xloc>532</xloc>
  1432 + <yloc>297</yloc>
  1433 + <draw>Y</draw>
  1434 + </GUI>
  1435 + </step>
  1436 +
  1437 + <step>
  1438 + <name>&#x9519;&#x8bef;&#x8f93;&#x51fa; 2</name>
  1439 + <type>ExcelOutput</type>
  1440 + <description/>
  1441 + <distribute>Y</distribute>
  1442 + <custom_distribution/>
  1443 + <copies>1</copies>
  1444 + <partitioning>
  1445 + <method>none</method>
  1446 + <schema_name/>
  1447 + </partitioning>
  1448 + <header>Y</header>
  1449 + <footer>N</footer>
  1450 + <encoding>UTF-8</encoding>
  1451 + <append>N</append>
  1452 + <add_to_result_filenames>Y</add_to_result_filenames>
  1453 + <file>
  1454 + <name>&#x24;&#x7b;erroroutputdir&#x7d;&#x2f;&#x6392;&#x7248;&#x89c4;&#x5219;&#x4fe1;&#x606f;&#x5bfc;&#x5165;_&#x9519;&#x8bef;</name>
  1455 + <extention>xls</extention>
  1456 + <do_not_open_newfile_init>N</do_not_open_newfile_init>
  1457 + <create_parent_folder>N</create_parent_folder>
  1458 + <split>N</split>
  1459 + <add_date>N</add_date>
  1460 + <add_time>N</add_time>
  1461 + <SpecifyFormat>N</SpecifyFormat>
  1462 + <date_time_format/>
  1463 + <sheetname>Sheet1</sheetname>
  1464 + <autosizecolums>N</autosizecolums>
  1465 + <nullisblank>N</nullisblank>
  1466 + <protect_sheet>N</protect_sheet>
  1467 + <password>Encrypted </password>
  1468 + <splitevery>0</splitevery>
  1469 + <usetempfiles>N</usetempfiles>
  1470 + <tempdirectory/>
  1471 + </file>
  1472 + <template>
  1473 + <enabled>N</enabled>
  1474 + <append>N</append>
  1475 + <filename>template.xls</filename>
  1476 + </template>
  1477 + <fields>
  1478 + <field>
  1479 + <name>xlid</name>
  1480 + <type>Integer</type>
  1481 + <format/>
  1482 + </field>
  1483 + <field>
  1484 + <name>cid</name>
  1485 + <type>Integer</type>
  1486 + <format/>
  1487 + </field>
  1488 + <field>
  1489 + <name>&#x8def;&#x724c;&#x8303;&#x56f4;</name>
  1490 + <type>String</type>
  1491 + <format/>
  1492 + </field>
  1493 + <field>
  1494 + <name>lpids</name>
  1495 + <type>String</type>
  1496 + <format/>
  1497 + </field>
  1498 + <field>
  1499 + <name>&#x8d77;&#x59cb;&#x8def;&#x724c;</name>
  1500 + <type>String</type>
  1501 + <format/>
  1502 + </field>
  1503 + <field>
  1504 + <name>&#x8d77;&#x59cb;&#x4eba;&#x5458;</name>
  1505 + <type>String</type>
  1506 + <format/>
  1507 + </field>
  1508 + <field>
  1509 + <name>&#x4eba;&#x5458;&#x8303;&#x56f4;</name>
  1510 + <type>String</type>
  1511 + <format/>
  1512 + </field>
  1513 + <field>
  1514 + <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  1515 + <type>String</type>
  1516 + <format/>
  1517 + </field>
  1518 + <field>
  1519 + <name>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</name>
  1520 + <type>String</type>
  1521 + <format/>
  1522 + </field>
  1523 + <field>
  1524 + <name>isCancel</name>
  1525 + <type>Integer</type>
  1526 + <format/>
  1527 + </field>
  1528 + <field>
  1529 + <name>rycids</name>
  1530 + <type>String</type>
  1531 + <format/>
  1532 + </field>
  1533 + <field>
  1534 + <name>error_count</name>
  1535 + <type>Integer</type>
  1536 + <format/>
  1537 + </field>
  1538 + <field>
  1539 + <name>error_desc</name>
  1540 + <type>String</type>
  1541 + <format/>
  1542 + </field>
  1543 + <field>
  1544 + <name>error_column1</name>
  1545 + <type>String</type>
  1546 + <format/>
  1547 + </field>
  1548 + <field>
  1549 + <name>error_column2</name>
  1550 + <type>String</type>
  1551 + <format/>
  1552 + </field>
  1553 + </fields>
  1554 + <custom>
  1555 + <header_font_name>arial</header_font_name>
  1556 + <header_font_size>10</header_font_size>
  1557 + <header_font_bold>N</header_font_bold>
  1558 + <header_font_italic>N</header_font_italic>
  1559 + <header_font_underline>no</header_font_underline>
  1560 + <header_font_orientation>horizontal</header_font_orientation>
  1561 + <header_font_color>black</header_font_color>
  1562 + <header_background_color>none</header_background_color>
  1563 + <header_row_height>255</header_row_height>
  1564 + <header_alignment>left</header_alignment>
  1565 + <header_image/>
  1566 + <row_font_name>arial</row_font_name>
  1567 + <row_font_size>10</row_font_size>
  1568 + <row_font_color>black</row_font_color>
  1569 + <row_background_color>none</row_background_color>
  1570 + </custom>
  1571 + <cluster_schema/>
  1572 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1573 + <xloc>534</xloc>
  1574 + <yloc>392</yloc>
  1575 + <draw>Y</draw>
  1576 + </GUI>
  1577 + </step>
  1578 +
  1579 + <step>
  1580 + <name>&#x542f;&#x7528;&#x65e5;&#x671f;&#x8f6c;&#x6362;</name>
  1581 + <type>SelectValues</type>
  1582 + <description/>
  1583 + <distribute>Y</distribute>
  1584 + <custom_distribution/>
  1585 + <copies>1</copies>
  1586 + <partitioning>
  1587 + <method>none</method>
  1588 + <schema_name/>
  1589 + </partitioning>
  1590 + <fields> <select_unspecified>N</select_unspecified>
  1591 + <meta> <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  1592 + <rename>&#x542f;&#x7528;&#x65e5;&#x671f;</rename>
  1593 + <type>Timestamp</type>
  1594 + <length>-2</length>
  1595 + <precision>-2</precision>
  1596 + <conversion_mask>yyyy-MM-dd</conversion_mask>
  1597 + <date_format_lenient>false</date_format_lenient>
  1598 + <date_format_locale/>
  1599 + <date_format_timezone/>
  1600 + <lenient_string_to_number>false</lenient_string_to_number>
  1601 + <encoding/>
  1602 + <decimal_symbol/>
  1603 + <grouping_symbol/>
  1604 + <currency_symbol/>
  1605 + <storage_type/>
  1606 + </meta> </fields> <cluster_schema/>
  1607 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1608 + <xloc>777</xloc>
  1609 + <yloc>368</yloc>
  1610 + <draw>Y</draw>
  1611 + </GUI>
  1612 + </step>
  1613 +
  1614 + <step_error_handling>
  1615 + <error>
  1616 + <source_step>&#x63d2;&#x5165; &#x2f; &#x66f4;&#x65b0;bsth_c_s_sr1_flat</source_step>
  1617 + <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa; 2</target_step>
  1618 + <is_enabled>Y</is_enabled>
  1619 + <nr_valuename>error_count</nr_valuename>
  1620 + <descriptions_valuename>error_desc</descriptions_valuename>
  1621 + <fields_valuename>error_column1</fields_valuename>
  1622 + <codes_valuename>error_column2</codes_valuename>
  1623 + <max_errors/>
  1624 + <max_pct_errors/>
  1625 + <min_pct_rows/>
  1626 + </error>
  1627 + </step_error_handling>
  1628 + <slave-step-copy-partition-distribution>
  1629 +</slave-step-copy-partition-distribution>
  1630 + <slave_transformation>N</slave_transformation>
  1631 +
  1632 +</transformation>
... ...
src/main/resources/datatools/ktrs/scheduleRuleDataOutput.ktr
1   -<?xml version="1.0" encoding="UTF-8"?>
2   -<transformation>
3   - <info>
4   - <name>scheduleRuleDataOutput</name>
5   - <description/>
6   - <extended_description/>
7   - <trans_version/>
8   - <trans_type>Normal</trans_type>
9   - <trans_status>0</trans_status>
10   - <directory>&#x2f;</directory>
11   - <parameters>
12   - <parameter>
13   - <name>filepath</name>
14   - <default_value/>
15   - <description>excel&#x6587;&#x4ef6;&#x8def;&#x5f84;</description>
16   - </parameter>
17   - </parameters>
18   - <log>
19   -<trans-log-table><connection/>
20   -<schema/>
21   -<table/>
22   -<size_limit_lines/>
23   -<interval/>
24   -<timeout_days/>
25   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table>
26   -<perf-log-table><connection/>
27   -<schema/>
28   -<table/>
29   -<interval/>
30   -<timeout_days/>
31   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table>
32   -<channel-log-table><connection/>
33   -<schema/>
34   -<table/>
35   -<timeout_days/>
36   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table>
37   -<step-log-table><connection/>
38   -<schema/>
39   -<table/>
40   -<timeout_days/>
41   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table>
42   -<metrics-log-table><connection/>
43   -<schema/>
44   -<table/>
45   -<timeout_days/>
46   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table>
47   - </log>
48   - <maxdate>
49   - <connection/>
50   - <table/>
51   - <field/>
52   - <offset>0.0</offset>
53   - <maxdiff>0.0</maxdiff>
54   - </maxdate>
55   - <size_rowset>10000</size_rowset>
56   - <sleep_time_empty>50</sleep_time_empty>
57   - <sleep_time_full>50</sleep_time_full>
58   - <unique_connections>N</unique_connections>
59   - <feedback_shown>Y</feedback_shown>
60   - <feedback_size>50000</feedback_size>
61   - <using_thread_priorities>Y</using_thread_priorities>
62   - <shared_objects_file/>
63   - <capture_step_performance>N</capture_step_performance>
64   - <step_performance_capturing_delay>1000</step_performance_capturing_delay>
65   - <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
66   - <dependencies>
67   - </dependencies>
68   - <partitionschemas>
69   - </partitionschemas>
70   - <slaveservers>
71   - </slaveservers>
72   - <clusterschemas>
73   - </clusterschemas>
74   - <created_user>-</created_user>
75   - <created_date>2017&#x2f;01&#x2f;09 13&#x3a;35&#x3a;19.384</created_date>
76   - <modified_user>-</modified_user>
77   - <modified_date>2017&#x2f;01&#x2f;09 13&#x3a;35&#x3a;19.384</modified_date>
78   - <key_for_session_key/>
79   - <is_key_private>N</is_key_private>
80   - </info>
81   - <notepads>
82   - <notepad>
83   - <note>&#x8fd9;&#x91cc;&#x6709;&#x4e9b;&#x95ee;&#x9898;&#xa;&#x5728;window2012&#x7684;&#x73af;&#x5883;&#x4e0b;&#xff0c;&#xa;MySql&#x6570;&#x636e;&#x5e93;&#x67e5;&#x8be2;&#x4e2d;&#x5982;&#x679c;&#x8fd4;&#x56de;&#x4e2d;&#x6587;&#x5185;&#x5bb9;&#x7684;&#x5b57;&#x6bb5;&#xff0c;&#x8fd9;&#x4e2a;&#x5185;&#x5bb9;&#x4e71;&#x7801;&#xa;&#x89e3;&#x51b3;&#x529e;&#x6cd5;&#xff0c;&#x5c31;&#x662f;&#x6570;&#x636e;&#x5e93;&#x67e5;&#x8be2;&#x5168;&#x90e8;&#x7f13;&#x5b58;&#xff0c;&#x5c31;&#x4e0d;&#x4e71;&#x7801;&#xa;linux&#x73af;&#x5883;&#x4e0b;&#x6ca1;&#x95ee;&#x9898;</note>
84   - <xloc>118</xloc>
85   - <yloc>158</yloc>
86   - <width>333</width>
87   - <heigth>90</heigth>
88   - <fontname>YaHei Consolas Hybrid</fontname>
89   - <fontsize>12</fontsize>
90   - <fontbold>N</fontbold>
91   - <fontitalic>N</fontitalic>
92   - <fontcolorred>0</fontcolorred>
93   - <fontcolorgreen>0</fontcolorgreen>
94   - <fontcolorblue>0</fontcolorblue>
95   - <backgroundcolorred>255</backgroundcolorred>
96   - <backgroundcolorgreen>205</backgroundcolorgreen>
97   - <backgroundcolorblue>112</backgroundcolorblue>
98   - <bordercolorred>100</bordercolorred>
99   - <bordercolorgreen>100</bordercolorgreen>
100   - <bordercolorblue>100</bordercolorblue>
101   - <drawshadow>Y</drawshadow>
102   - </notepad>
103   - </notepads>
104   - <connection>
105   - <name>bus_control_variable</name>
106   - <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
107   - <type>MYSQL</type>
108   - <access>Native</access>
109   - <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
110   - <port>3306</port>
111   - <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
112   - <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
113   - <servername/>
114   - <data_tablespace/>
115   - <index_tablespace/>
116   - <attributes>
117   - <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
118   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
119   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
120   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
121   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
122   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
123   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
124   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
125   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
126   - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
127   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
128   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
129   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
130   - </attributes>
131   - </connection>
132   - <connection>
133   - <name>bus_control_&#x516c;&#x53f8;_201</name>
134   - <server>localhost</server>
135   - <type>MYSQL</type>
136   - <access>Native</access>
137   - <database>control</database>
138   - <port>3306</port>
139   - <username>root</username>
140   - <password>Encrypted </password>
141   - <servername/>
142   - <data_tablespace/>
143   - <index_tablespace/>
144   - <attributes>
145   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
146   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
147   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
148   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
149   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
150   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
151   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
152   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
153   - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
154   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
155   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
156   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
157   - </attributes>
158   - </connection>
159   - <connection>
160   - <name>bus_control_&#x672c;&#x673a;</name>
161   - <server>localhost</server>
162   - <type>MYSQL</type>
163   - <access>Native</access>
164   - <database>control</database>
165   - <port>3306</port>
166   - <username>root</username>
167   - <password>Encrypted </password>
168   - <servername/>
169   - <data_tablespace/>
170   - <index_tablespace/>
171   - <attributes>
172   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
173   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
174   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
175   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
176   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
177   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
178   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
179   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
180   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
181   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
182   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
183   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
184   - </attributes>
185   - </connection>
186   - <connection>
187   - <name>xlab_mysql_youle</name>
188   - <server>101.231.124.8</server>
189   - <type>MYSQL</type>
190   - <access>Native</access>
191   - <database>xlab_youle</database>
192   - <port>45687</port>
193   - <username>xlab-youle</username>
194   - <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
195   - <servername/>
196   - <data_tablespace/>
197   - <index_tablespace/>
198   - <attributes>
199   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
200   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
201   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
202   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
203   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
204   - <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
205   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
206   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
207   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
208   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
209   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
210   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
211   - </attributes>
212   - </connection>
213   - <connection>
214   - <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
215   - <server>localhost</server>
216   - <type>MYSQL</type>
217   - <access>Native</access>
218   - <database>xlab_youle</database>
219   - <port>3306</port>
220   - <username>root</username>
221   - <password>Encrypted </password>
222   - <servername/>
223   - <data_tablespace/>
224   - <index_tablespace/>
225   - <attributes>
226   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
227   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
228   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
229   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
230   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
231   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
232   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
233   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
234   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
235   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
236   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
237   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
238   - </attributes>
239   - </connection>
240   - <connection>
241   - <name>xlab_youle</name>
242   - <server/>
243   - <type>MYSQL</type>
244   - <access>JNDI</access>
245   - <database>xlab_youle</database>
246   - <port>1521</port>
247   - <username/>
248   - <password>Encrypted </password>
249   - <servername/>
250   - <data_tablespace/>
251   - <index_tablespace/>
252   - <attributes>
253   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
254   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
255   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
256   - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
257   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
258   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
259   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
260   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
261   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
262   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
263   - </attributes>
264   - </connection>
265   - <order>
266   - <hop> <from>&#x6392;&#x7248;&#x89c4;&#x5219;</from><to>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
267   - <hop> <from>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</from><to>&#x8f66;&#x8f86;&#x914d;&#x7f6e;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
268   - <hop> <from>&#x8f66;&#x8f86;&#x914d;&#x7f6e;&#x67e5;&#x8be2;</from><to>&#x8f66;&#x8f86;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
269   - <hop> <from>&#x8f66;&#x8f86;&#x67e5;&#x8be2;</from><to>&#x683c;&#x5f0f;&#x5316;&#x65e5;&#x671f;</to><enabled>Y</enabled> </hop>
270   - <hop> <from>&#x683c;&#x5f0f;&#x5316;&#x65e5;&#x671f;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
271   - <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>Excel&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
272   - </order>
273   - <step>
274   - <name>&#x6392;&#x7248;&#x89c4;&#x5219;</name>
275   - <type>TableInput</type>
276   - <description/>
277   - <distribute>Y</distribute>
278   - <custom_distribution/>
279   - <copies>1</copies>
280   - <partitioning>
281   - <method>none</method>
282   - <schema_name/>
283   - </partitioning>
284   - <connection>bus_control_variable</connection>
285   - <sql>SELECT &#x2a; FROM bsth_c_s_sr1_flat</sql>
286   - <limit>0</limit>
287   - <lookup/>
288   - <execute_each_row>N</execute_each_row>
289   - <variables_active>N</variables_active>
290   - <lazy_conversion_active>N</lazy_conversion_active>
291   - <cluster_schema/>
292   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
293   - <xloc>129</xloc>
294   - <yloc>65</yloc>
295   - <draw>Y</draw>
296   - </GUI>
297   - </step>
298   -
299   - <step>
300   - <name>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</name>
301   - <type>DBLookup</type>
302   - <description/>
303   - <distribute>Y</distribute>
304   - <custom_distribution/>
305   - <copies>1</copies>
306   - <partitioning>
307   - <method>none</method>
308   - <schema_name/>
309   - </partitioning>
310   - <connection>bus_control_variable</connection>
311   - <cache>Y</cache>
312   - <cache_load_all>Y</cache_load_all>
313   - <cache_size>0</cache_size>
314   - <lookup>
315   - <schema/>
316   - <table>bsth_c_line</table>
317   - <orderby/>
318   - <fail_on_multiple>N</fail_on_multiple>
319   - <eat_row_on_failure>N</eat_row_on_failure>
320   - <key>
321   - <name>xl</name>
322   - <field>id</field>
323   - <condition>&#x3d;</condition>
324   - <name2/>
325   - </key>
326   - <value>
327   - <name>name</name>
328   - <rename>xlmc</rename>
329   - <default/>
330   - <type>String</type>
331   - </value>
332   - </lookup>
333   - <cluster_schema/>
334   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
335   - <xloc>329</xloc>
336   - <yloc>65</yloc>
337   - <draw>Y</draw>
338   - </GUI>
339   - </step>
340   -
341   - <step>
342   - <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
343   - <type>SelectValues</type>
344   - <description/>
345   - <distribute>Y</distribute>
346   - <custom_distribution/>
347   - <copies>1</copies>
348   - <partitioning>
349   - <method>none</method>
350   - <schema_name/>
351   - </partitioning>
352   - <fields> <field> <name>xlmc</name>
353   - <rename>&#x7ebf;&#x8def;</rename>
354   - <length>-2</length>
355   - <precision>-2</precision>
356   - </field> <field> <name>zbh</name>
357   - <rename>&#x5185;&#x90e8;&#x7f16;&#x7801;</rename>
358   - <length>-2</length>
359   - <precision>-2</precision>
360   - </field> <field> <name>qyrq</name>
361   - <rename>&#x542f;&#x7528;&#x65e5;&#x671f;</rename>
362   - <length>-2</length>
363   - <precision>-2</precision>
364   - </field> <field> <name>lp_start</name>
365   - <rename>&#x8d77;&#x59cb;&#x8def;&#x724c;</rename>
366   - <length>-2</length>
367   - <precision>-2</precision>
368   - </field> <field> <name>lp_names</name>
369   - <rename>&#x8def;&#x724c;&#x8303;&#x56f4;</rename>
370   - <length>-2</length>
371   - <precision>-2</precision>
372   - </field> <field> <name>ry_start</name>
373   - <rename>&#x8d77;&#x59cb;&#x4eba;&#x5458;</rename>
374   - <length>-2</length>
375   - <precision>-2</precision>
376   - </field> <field> <name>ry_dbbms</name>
377   - <rename>&#x4eba;&#x5458;&#x8303;&#x56f4;</rename>
378   - <length>-2</length>
379   - <precision>-2</precision>
380   - </field> <field> <name>fbgs</name>
381   - <rename>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</rename>
382   - <length>-2</length>
383   - <precision>-2</precision>
384   - </field> <select_unspecified>N</select_unspecified>
385   - </fields> <cluster_schema/>
386   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
387   - <xloc>706</xloc>
388   - <yloc>163</yloc>
389   - <draw>Y</draw>
390   - </GUI>
391   - </step>
392   -
393   - <step>
394   - <name>&#x8f66;&#x8f86;&#x914d;&#x7f6e;&#x67e5;&#x8be2;</name>
395   - <type>DBLookup</type>
396   - <description/>
397   - <distribute>Y</distribute>
398   - <custom_distribution/>
399   - <copies>1</copies>
400   - <partitioning>
401   - <method>none</method>
402   - <schema_name/>
403   - </partitioning>
404   - <connection>bus_control_variable</connection>
405   - <cache>N</cache>
406   - <cache_load_all>N</cache_load_all>
407   - <cache_size>0</cache_size>
408   - <lookup>
409   - <schema/>
410   - <table>bsth_c_s_ccinfo</table>
411   - <orderby/>
412   - <fail_on_multiple>N</fail_on_multiple>
413   - <eat_row_on_failure>N</eat_row_on_failure>
414   - <key>
415   - <name>car_config_info</name>
416   - <field>id</field>
417   - <condition>&#x3d;</condition>
418   - <name2/>
419   - </key>
420   - <value>
421   - <name>cl</name>
422   - <rename>clid</rename>
423   - <default/>
424   - <type>Integer</type>
425   - </value>
426   - </lookup>
427   - <cluster_schema/>
428   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
429   - <xloc>471</xloc>
430   - <yloc>64</yloc>
431   - <draw>Y</draw>
432   - </GUI>
433   - </step>
434   -
435   - <step>
436   - <name>&#x8f66;&#x8f86;&#x67e5;&#x8be2;</name>
437   - <type>DBLookup</type>
438   - <description/>
439   - <distribute>Y</distribute>
440   - <custom_distribution/>
441   - <copies>1</copies>
442   - <partitioning>
443   - <method>none</method>
444   - <schema_name/>
445   - </partitioning>
446   - <connection>bus_control_variable</connection>
447   - <cache>N</cache>
448   - <cache_load_all>N</cache_load_all>
449   - <cache_size>0</cache_size>
450   - <lookup>
451   - <schema/>
452   - <table>bsth_c_cars</table>
453   - <orderby/>
454   - <fail_on_multiple>N</fail_on_multiple>
455   - <eat_row_on_failure>N</eat_row_on_failure>
456   - <key>
457   - <name>clid</name>
458   - <field>id</field>
459   - <condition>&#x3d;</condition>
460   - <name2/>
461   - </key>
462   - <value>
463   - <name>inside_code</name>
464   - <rename>zbh</rename>
465   - <default/>
466   - <type>String</type>
467   - </value>
468   - </lookup>
469   - <cluster_schema/>
470   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
471   - <xloc>600</xloc>
472   - <yloc>64</yloc>
473   - <draw>Y</draw>
474   - </GUI>
475   - </step>
476   -
477   - <step>
478   - <name>&#x683c;&#x5f0f;&#x5316;&#x65e5;&#x671f;</name>
479   - <type>SelectValues</type>
480   - <description/>
481   - <distribute>Y</distribute>
482   - <custom_distribution/>
483   - <copies>1</copies>
484   - <partitioning>
485   - <method>none</method>
486   - <schema_name/>
487   - </partitioning>
488   - <fields> <select_unspecified>N</select_unspecified>
489   - <meta> <name>qyrq</name>
490   - <rename>qyrq</rename>
491   - <type>String</type>
492   - <length>-2</length>
493   - <precision>-2</precision>
494   - <conversion_mask>yyyy-MM-dd</conversion_mask>
495   - <date_format_lenient>false</date_format_lenient>
496   - <date_format_locale/>
497   - <date_format_timezone/>
498   - <lenient_string_to_number>false</lenient_string_to_number>
499   - <encoding/>
500   - <decimal_symbol/>
501   - <grouping_symbol/>
502   - <currency_symbol/>
503   - <storage_type/>
504   - </meta> <meta> <name>lp_start</name>
505   - <rename>lp_start</rename>
506   - <type>String</type>
507   - <length>-2</length>
508   - <precision>-2</precision>
509   - <conversion_mask/>
510   - <date_format_lenient>false</date_format_lenient>
511   - <date_format_locale/>
512   - <date_format_timezone/>
513   - <lenient_string_to_number>false</lenient_string_to_number>
514   - <encoding/>
515   - <decimal_symbol/>
516   - <grouping_symbol/>
517   - <currency_symbol/>
518   - <storage_type/>
519   - </meta> <meta> <name>ry_start</name>
520   - <rename>ry_start</rename>
521   - <type>String</type>
522   - <length>-2</length>
523   - <precision>-2</precision>
524   - <conversion_mask>&#x23;</conversion_mask>
525   - <date_format_lenient>false</date_format_lenient>
526   - <date_format_locale/>
527   - <date_format_timezone/>
528   - <lenient_string_to_number>false</lenient_string_to_number>
529   - <encoding/>
530   - <decimal_symbol/>
531   - <grouping_symbol/>
532   - <currency_symbol/>
533   - <storage_type/>
534   - </meta> </fields> <cluster_schema/>
535   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
536   - <xloc>705</xloc>
537   - <yloc>65</yloc>
538   - <draw>Y</draw>
539   - </GUI>
540   - </step>
541   -
542   - <step>
543   - <name>Excel&#x8f93;&#x51fa;</name>
544   - <type>ExcelOutput</type>
545   - <description/>
546   - <distribute>Y</distribute>
547   - <custom_distribution/>
548   - <copies>1</copies>
549   - <partitioning>
550   - <method>none</method>
551   - <schema_name/>
552   - </partitioning>
553   - <header>Y</header>
554   - <footer>N</footer>
555   - <encoding/>
556   - <append>N</append>
557   - <add_to_result_filenames>Y</add_to_result_filenames>
558   - <file>
559   - <name>&#x24;&#x7b;filepath&#x7d;</name>
560   - <extention/>
561   - <do_not_open_newfile_init>N</do_not_open_newfile_init>
562   - <create_parent_folder>N</create_parent_folder>
563   - <split>N</split>
564   - <add_date>N</add_date>
565   - <add_time>N</add_time>
566   - <SpecifyFormat>N</SpecifyFormat>
567   - <date_time_format>yyyyMMddHHmmss</date_time_format>
568   - <sheetname>&#x5de5;&#x4f5c;&#x8868;1</sheetname>
569   - <autosizecolums>N</autosizecolums>
570   - <nullisblank>N</nullisblank>
571   - <protect_sheet>N</protect_sheet>
572   - <password>Encrypted </password>
573   - <splitevery>0</splitevery>
574   - <usetempfiles>N</usetempfiles>
575   - <tempdirectory/>
576   - </file>
577   - <template>
578   - <enabled>N</enabled>
579   - <append>N</append>
580   - <filename>template.xls</filename>
581   - </template>
582   - <fields>
583   - <field>
584   - <name>&#x7ebf;&#x8def;</name>
585   - <type>String</type>
586   - <format/>
587   - </field>
588   - <field>
589   - <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
590   - <type>String</type>
591   - <format/>
592   - </field>
593   - <field>
594   - <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
595   - <type>String</type>
596   - <format/>
597   - </field>
598   - <field>
599   - <name>&#x8d77;&#x59cb;&#x8def;&#x724c;</name>
600   - <type>String</type>
601   - <format/>
602   - </field>
603   - <field>
604   - <name>&#x8def;&#x724c;&#x8303;&#x56f4;</name>
605   - <type>String</type>
606   - <format/>
607   - </field>
608   - <field>
609   - <name>&#x8d77;&#x59cb;&#x4eba;&#x5458;</name>
610   - <type>String</type>
611   - <format/>
612   - </field>
613   - <field>
614   - <name>&#x4eba;&#x5458;&#x8303;&#x56f4;</name>
615   - <type>String</type>
616   - <format/>
617   - </field>
618   - <field>
619   - <name>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</name>
620   - <type>String</type>
621   - <format/>
622   - </field>
623   - </fields>
624   - <custom>
625   - <header_font_name>arial</header_font_name>
626   - <header_font_size>10</header_font_size>
627   - <header_font_bold>N</header_font_bold>
628   - <header_font_italic>N</header_font_italic>
629   - <header_font_underline>no</header_font_underline>
630   - <header_font_orientation>horizontal</header_font_orientation>
631   - <header_font_color>black</header_font_color>
632   - <header_background_color>none</header_background_color>
633   - <header_row_height>255</header_row_height>
634   - <header_alignment>left</header_alignment>
635   - <header_image/>
636   - <row_font_name>arial</row_font_name>
637   - <row_font_size>10</row_font_size>
638   - <row_font_color>black</row_font_color>
639   - <row_background_color>none</row_background_color>
640   - </custom>
641   - <cluster_schema/>
642   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
643   - <xloc>707</xloc>
644   - <yloc>259</yloc>
645   - <draw>Y</draw>
646   - </GUI>
647   - </step>
648   -
649   - <step_error_handling>
650   - </step_error_handling>
651   - <slave-step-copy-partition-distribution>
652   -</slave-step-copy-partition-distribution>
653   - <slave_transformation>N</slave_transformation>
654   -
655   -</transformation>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>scheduleRuleDataOutput</name>
  5 + <description/>
  6 + <extended_description/>
  7 + <trans_version/>
  8 + <trans_type>Normal</trans_type>
  9 + <trans_status>0</trans_status>
  10 + <directory>&#x2f;</directory>
  11 + <parameters>
  12 + <parameter>
  13 + <name>filepath</name>
  14 + <default_value/>
  15 + <description>excel&#x6587;&#x4ef6;&#x8def;&#x5f84;</description>
  16 + </parameter>
  17 + </parameters>
  18 + <log>
  19 +<trans-log-table><connection/>
  20 +<schema/>
  21 +<table/>
  22 +<size_limit_lines/>
  23 +<interval/>
  24 +<timeout_days/>
  25 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table>
  26 +<perf-log-table><connection/>
  27 +<schema/>
  28 +<table/>
  29 +<interval/>
  30 +<timeout_days/>
  31 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table>
  32 +<channel-log-table><connection/>
  33 +<schema/>
  34 +<table/>
  35 +<timeout_days/>
  36 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table>
  37 +<step-log-table><connection/>
  38 +<schema/>
  39 +<table/>
  40 +<timeout_days/>
  41 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table>
  42 +<metrics-log-table><connection/>
  43 +<schema/>
  44 +<table/>
  45 +<timeout_days/>
  46 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table>
  47 + </log>
  48 + <maxdate>
  49 + <connection/>
  50 + <table/>
  51 + <field/>
  52 + <offset>0.0</offset>
  53 + <maxdiff>0.0</maxdiff>
  54 + </maxdate>
  55 + <size_rowset>10000</size_rowset>
  56 + <sleep_time_empty>50</sleep_time_empty>
  57 + <sleep_time_full>50</sleep_time_full>
  58 + <unique_connections>N</unique_connections>
  59 + <feedback_shown>Y</feedback_shown>
  60 + <feedback_size>50000</feedback_size>
  61 + <using_thread_priorities>Y</using_thread_priorities>
  62 + <shared_objects_file/>
  63 + <capture_step_performance>N</capture_step_performance>
  64 + <step_performance_capturing_delay>1000</step_performance_capturing_delay>
  65 + <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
  66 + <dependencies>
  67 + </dependencies>
  68 + <partitionschemas>
  69 + </partitionschemas>
  70 + <slaveservers>
  71 + </slaveservers>
  72 + <clusterschemas>
  73 + </clusterschemas>
  74 + <created_user>-</created_user>
  75 + <created_date>2017&#x2f;01&#x2f;09 13&#x3a;35&#x3a;19.384</created_date>
  76 + <modified_user>-</modified_user>
  77 + <modified_date>2017&#x2f;01&#x2f;09 13&#x3a;35&#x3a;19.384</modified_date>
  78 + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
  79 + <is_key_private>N</is_key_private>
  80 + </info>
  81 + <notepads>
  82 + <notepad>
  83 + <note>&#x8fd9;&#x91cc;&#x6709;&#x4e9b;&#x95ee;&#x9898;&#xa;&#x5728;window2012&#x7684;&#x73af;&#x5883;&#x4e0b;&#xff0c;&#xa;MySql&#x6570;&#x636e;&#x5e93;&#x67e5;&#x8be2;&#x4e2d;&#x5982;&#x679c;&#x8fd4;&#x56de;&#x4e2d;&#x6587;&#x5185;&#x5bb9;&#x7684;&#x5b57;&#x6bb5;&#xff0c;&#x8fd9;&#x4e2a;&#x5185;&#x5bb9;&#x4e71;&#x7801;&#xa;&#x89e3;&#x51b3;&#x529e;&#x6cd5;&#xff0c;&#x5c31;&#x662f;&#x6570;&#x636e;&#x5e93;&#x67e5;&#x8be2;&#x5168;&#x90e8;&#x7f13;&#x5b58;&#xff0c;&#x5c31;&#x4e0d;&#x4e71;&#x7801;&#xa;linux&#x73af;&#x5883;&#x4e0b;&#x6ca1;&#x95ee;&#x9898;</note>
  84 + <xloc>118</xloc>
  85 + <yloc>158</yloc>
  86 + <width>333</width>
  87 + <heigth>90</heigth>
  88 + <fontname>YaHei Consolas Hybrid</fontname>
  89 + <fontsize>12</fontsize>
  90 + <fontbold>N</fontbold>
  91 + <fontitalic>N</fontitalic>
  92 + <fontcolorred>0</fontcolorred>
  93 + <fontcolorgreen>0</fontcolorgreen>
  94 + <fontcolorblue>0</fontcolorblue>
  95 + <backgroundcolorred>255</backgroundcolorred>
  96 + <backgroundcolorgreen>205</backgroundcolorgreen>
  97 + <backgroundcolorblue>112</backgroundcolorblue>
  98 + <bordercolorred>100</bordercolorred>
  99 + <bordercolorgreen>100</bordercolorgreen>
  100 + <bordercolorblue>100</bordercolorblue>
  101 + <drawshadow>Y</drawshadow>
  102 + </notepad>
  103 + </notepads>
  104 + <connection>
  105 + <name>bus_control_variable</name>
  106 + <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
  107 + <type>MYSQL</type>
  108 + <access>Native</access>
  109 + <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
  110 + <port>3306</port>
  111 + <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
  112 + <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
  113 + <servername/>
  114 + <data_tablespace/>
  115 + <index_tablespace/>
  116 + <attributes>
  117 + <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
  118 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  119 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  120 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  121 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  122 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  123 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  124 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  125 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  126 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  127 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  128 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  129 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  130 + </attributes>
  131 + </connection>
  132 + <connection>
  133 + <name>bus_control_&#x516c;&#x53f8;_201</name>
  134 + <server>localhost</server>
  135 + <type>MYSQL</type>
  136 + <access>Native</access>
  137 + <database>control</database>
  138 + <port>3306</port>
  139 + <username>root</username>
  140 + <password>Encrypted </password>
  141 + <servername/>
  142 + <data_tablespace/>
  143 + <index_tablespace/>
  144 + <attributes>
  145 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  146 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  147 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  148 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  149 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  150 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  151 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  152 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  153 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  154 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  155 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  156 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  157 + </attributes>
  158 + </connection>
  159 + <connection>
  160 + <name>bus_control_&#x672c;&#x673a;</name>
  161 + <server>localhost</server>
  162 + <type>MYSQL</type>
  163 + <access>Native</access>
  164 + <database>control</database>
  165 + <port>3306</port>
  166 + <username>root</username>
  167 + <password>Encrypted </password>
  168 + <servername/>
  169 + <data_tablespace/>
  170 + <index_tablespace/>
  171 + <attributes>
  172 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  173 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  174 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  175 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  176 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  177 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  178 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  179 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  180 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  181 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  182 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  183 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  184 + </attributes>
  185 + </connection>
  186 + <connection>
  187 + <name>xlab_mysql_youle</name>
  188 + <server>101.231.124.8</server>
  189 + <type>MYSQL</type>
  190 + <access>Native</access>
  191 + <database>xlab_youle</database>
  192 + <port>45687</port>
  193 + <username>xlab-youle</username>
  194 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
  195 + <servername/>
  196 + <data_tablespace/>
  197 + <index_tablespace/>
  198 + <attributes>
  199 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  200 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  201 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  202 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  203 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  204 + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
  205 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  206 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  207 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  208 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  209 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  210 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  211 + </attributes>
  212 + </connection>
  213 + <connection>
  214 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  215 + <server>localhost</server>
  216 + <type>MYSQL</type>
  217 + <access>Native</access>
  218 + <database>xlab_youle</database>
  219 + <port>3306</port>
  220 + <username>root</username>
  221 + <password>Encrypted </password>
  222 + <servername/>
  223 + <data_tablespace/>
  224 + <index_tablespace/>
  225 + <attributes>
  226 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  227 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  228 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  229 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  230 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  231 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  232 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  233 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  234 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  235 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  236 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  237 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  238 + </attributes>
  239 + </connection>
  240 + <connection>
  241 + <name>xlab_youle</name>
  242 + <server/>
  243 + <type>MYSQL</type>
  244 + <access>JNDI</access>
  245 + <database>xlab_youle</database>
  246 + <port>1521</port>
  247 + <username/>
  248 + <password>Encrypted </password>
  249 + <servername/>
  250 + <data_tablespace/>
  251 + <index_tablespace/>
  252 + <attributes>
  253 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  254 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  255 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  256 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  257 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  258 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  259 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  260 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  261 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  262 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  263 + </attributes>
  264 + </connection>
  265 + <order>
  266 + <hop> <from>&#x6392;&#x7248;&#x89c4;&#x5219;</from><to>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  267 + <hop> <from>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</from><to>&#x8f66;&#x8f86;&#x914d;&#x7f6e;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  268 + <hop> <from>&#x8f66;&#x8f86;&#x914d;&#x7f6e;&#x67e5;&#x8be2;</from><to>&#x8f66;&#x8f86;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  269 + <hop> <from>&#x8f66;&#x8f86;&#x67e5;&#x8be2;</from><to>&#x683c;&#x5f0f;&#x5316;&#x65e5;&#x671f;</to><enabled>Y</enabled> </hop>
  270 + <hop> <from>&#x683c;&#x5f0f;&#x5316;&#x65e5;&#x671f;</from><to>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  271 + <hop> <from>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
  272 + <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>Excel&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
  273 + </order>
  274 + <step>
  275 + <name>Excel&#x8f93;&#x51fa;</name>
  276 + <type>ExcelOutput</type>
  277 + <description/>
  278 + <distribute>Y</distribute>
  279 + <custom_distribution/>
  280 + <copies>1</copies>
  281 + <partitioning>
  282 + <method>none</method>
  283 + <schema_name/>
  284 + </partitioning>
  285 + <header>Y</header>
  286 + <footer>N</footer>
  287 + <encoding/>
  288 + <append>N</append>
  289 + <add_to_result_filenames>Y</add_to_result_filenames>
  290 + <file>
  291 + <name>&#x24;&#x7b;filepath&#x7d;</name>
  292 + <extention/>
  293 + <do_not_open_newfile_init>N</do_not_open_newfile_init>
  294 + <create_parent_folder>N</create_parent_folder>
  295 + <split>N</split>
  296 + <add_date>N</add_date>
  297 + <add_time>N</add_time>
  298 + <SpecifyFormat>N</SpecifyFormat>
  299 + <date_time_format>yyyyMMddHHmmss</date_time_format>
  300 + <sheetname>&#x5de5;&#x4f5c;&#x8868;1</sheetname>
  301 + <autosizecolums>N</autosizecolums>
  302 + <nullisblank>N</nullisblank>
  303 + <protect_sheet>N</protect_sheet>
  304 + <password>Encrypted </password>
  305 + <splitevery>0</splitevery>
  306 + <usetempfiles>N</usetempfiles>
  307 + <tempdirectory/>
  308 + </file>
  309 + <template>
  310 + <enabled>N</enabled>
  311 + <append>N</append>
  312 + <filename>template.xls</filename>
  313 + </template>
  314 + <fields>
  315 + <field>
  316 + <name>&#x7ebf;&#x8def;</name>
  317 + <type>String</type>
  318 + <format/>
  319 + </field>
  320 + <field>
  321 + <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
  322 + <type>String</type>
  323 + <format/>
  324 + </field>
  325 + <field>
  326 + <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  327 + <type>String</type>
  328 + <format/>
  329 + </field>
  330 + <field>
  331 + <name>&#x8d77;&#x59cb;&#x8def;&#x724c;</name>
  332 + <type>String</type>
  333 + <format/>
  334 + </field>
  335 + <field>
  336 + <name>&#x8def;&#x724c;&#x8303;&#x56f4;</name>
  337 + <type>String</type>
  338 + <format/>
  339 + </field>
  340 + <field>
  341 + <name>&#x8d77;&#x59cb;&#x4eba;&#x5458;</name>
  342 + <type>String</type>
  343 + <format/>
  344 + </field>
  345 + <field>
  346 + <name>&#x4eba;&#x5458;&#x8303;&#x56f4;</name>
  347 + <type>String</type>
  348 + <format/>
  349 + </field>
  350 + <field>
  351 + <name>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</name>
  352 + <type>String</type>
  353 + <format/>
  354 + </field>
  355 + </fields>
  356 + <custom>
  357 + <header_font_name>arial</header_font_name>
  358 + <header_font_size>10</header_font_size>
  359 + <header_font_bold>N</header_font_bold>
  360 + <header_font_italic>N</header_font_italic>
  361 + <header_font_underline>no</header_font_underline>
  362 + <header_font_orientation>horizontal</header_font_orientation>
  363 + <header_font_color>black</header_font_color>
  364 + <header_background_color>none</header_background_color>
  365 + <header_row_height>255</header_row_height>
  366 + <header_alignment>left</header_alignment>
  367 + <header_image/>
  368 + <row_font_name>arial</row_font_name>
  369 + <row_font_size>10</row_font_size>
  370 + <row_font_color>black</row_font_color>
  371 + <row_background_color>none</row_background_color>
  372 + </custom>
  373 + <cluster_schema/>
  374 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  375 + <xloc>707</xloc>
  376 + <yloc>348</yloc>
  377 + <draw>Y</draw>
  378 + </GUI>
  379 + </step>
  380 +
  381 + <step>
  382 + <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
  383 + <type>SelectValues</type>
  384 + <description/>
  385 + <distribute>Y</distribute>
  386 + <custom_distribution/>
  387 + <copies>1</copies>
  388 + <partitioning>
  389 + <method>none</method>
  390 + <schema_name/>
  391 + </partitioning>
  392 + <fields> <field> <name>xlmc</name>
  393 + <rename>&#x7ebf;&#x8def;</rename>
  394 + <length>-2</length>
  395 + <precision>-2</precision>
  396 + </field> <field> <name>zbh</name>
  397 + <rename>&#x5185;&#x90e8;&#x7f16;&#x7801;</rename>
  398 + <length>-2</length>
  399 + <precision>-2</precision>
  400 + </field> <field> <name>qyrq</name>
  401 + <rename>&#x542f;&#x7528;&#x65e5;&#x671f;</rename>
  402 + <length>-2</length>
  403 + <precision>-2</precision>
  404 + </field> <field> <name>lp_start</name>
  405 + <rename>&#x8d77;&#x59cb;&#x8def;&#x724c;</rename>
  406 + <length>-2</length>
  407 + <precision>-2</precision>
  408 + </field> <field> <name>lp_names</name>
  409 + <rename>&#x8def;&#x724c;&#x8303;&#x56f4;</rename>
  410 + <length>-2</length>
  411 + <precision>-2</precision>
  412 + </field> <field> <name>ry_start</name>
  413 + <rename>&#x8d77;&#x59cb;&#x4eba;&#x5458;</rename>
  414 + <length>-2</length>
  415 + <precision>-2</precision>
  416 + </field> <field> <name>ry_dbbms</name>
  417 + <rename>&#x4eba;&#x5458;&#x8303;&#x56f4;</rename>
  418 + <length>-2</length>
  419 + <precision>-2</precision>
  420 + </field> <field> <name>fbgs</name>
  421 + <rename>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</rename>
  422 + <length>-2</length>
  423 + <precision>-2</precision>
  424 + </field> <select_unspecified>N</select_unspecified>
  425 + </fields> <cluster_schema/>
  426 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  427 + <xloc>705</xloc>
  428 + <yloc>270</yloc>
  429 + <draw>Y</draw>
  430 + </GUI>
  431 + </step>
  432 +
  433 + <step>
  434 + <name>&#x6392;&#x7248;&#x89c4;&#x5219;</name>
  435 + <type>TableInput</type>
  436 + <description/>
  437 + <distribute>Y</distribute>
  438 + <custom_distribution/>
  439 + <copies>1</copies>
  440 + <partitioning>
  441 + <method>none</method>
  442 + <schema_name/>
  443 + </partitioning>
  444 + <connection>bus_control_variable</connection>
  445 + <sql>SELECT &#x2a; FROM bsth_c_s_sr1_flat</sql>
  446 + <limit>0</limit>
  447 + <lookup/>
  448 + <execute_each_row>N</execute_each_row>
  449 + <variables_active>N</variables_active>
  450 + <lazy_conversion_active>N</lazy_conversion_active>
  451 + <cluster_schema/>
  452 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  453 + <xloc>129</xloc>
  454 + <yloc>65</yloc>
  455 + <draw>Y</draw>
  456 + </GUI>
  457 + </step>
  458 +
  459 + <step>
  460 + <name>&#x683c;&#x5f0f;&#x5316;&#x65e5;&#x671f;</name>
  461 + <type>SelectValues</type>
  462 + <description/>
  463 + <distribute>Y</distribute>
  464 + <custom_distribution/>
  465 + <copies>1</copies>
  466 + <partitioning>
  467 + <method>none</method>
  468 + <schema_name/>
  469 + </partitioning>
  470 + <fields> <select_unspecified>N</select_unspecified>
  471 + <meta> <name>qyrq</name>
  472 + <rename>qyrq</rename>
  473 + <type>String</type>
  474 + <length>-2</length>
  475 + <precision>-2</precision>
  476 + <conversion_mask>yyyy-MM-dd</conversion_mask>
  477 + <date_format_lenient>false</date_format_lenient>
  478 + <date_format_locale/>
  479 + <date_format_timezone/>
  480 + <lenient_string_to_number>false</lenient_string_to_number>
  481 + <encoding/>
  482 + <decimal_symbol/>
  483 + <grouping_symbol/>
  484 + <currency_symbol/>
  485 + <storage_type/>
  486 + </meta> <meta> <name>lp_start</name>
  487 + <rename>lp_start</rename>
  488 + <type>String</type>
  489 + <length>-2</length>
  490 + <precision>-2</precision>
  491 + <conversion_mask/>
  492 + <date_format_lenient>false</date_format_lenient>
  493 + <date_format_locale/>
  494 + <date_format_timezone/>
  495 + <lenient_string_to_number>false</lenient_string_to_number>
  496 + <encoding/>
  497 + <decimal_symbol/>
  498 + <grouping_symbol/>
  499 + <currency_symbol/>
  500 + <storage_type/>
  501 + </meta> <meta> <name>ry_start</name>
  502 + <rename>ry_start</rename>
  503 + <type>String</type>
  504 + <length>-2</length>
  505 + <precision>-2</precision>
  506 + <conversion_mask>&#x23;</conversion_mask>
  507 + <date_format_lenient>false</date_format_lenient>
  508 + <date_format_locale/>
  509 + <date_format_timezone/>
  510 + <lenient_string_to_number>false</lenient_string_to_number>
  511 + <encoding/>
  512 + <decimal_symbol/>
  513 + <grouping_symbol/>
  514 + <currency_symbol/>
  515 + <storage_type/>
  516 + </meta> </fields> <cluster_schema/>
  517 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  518 + <xloc>705</xloc>
  519 + <yloc>65</yloc>
  520 + <draw>Y</draw>
  521 + </GUI>
  522 + </step>
  523 +
  524 + <step>
  525 + <name>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</name>
  526 + <type>DBLookup</type>
  527 + <description/>
  528 + <distribute>Y</distribute>
  529 + <custom_distribution/>
  530 + <copies>1</copies>
  531 + <partitioning>
  532 + <method>none</method>
  533 + <schema_name/>
  534 + </partitioning>
  535 + <connection>bus_control_variable</connection>
  536 + <cache>Y</cache>
  537 + <cache_load_all>Y</cache_load_all>
  538 + <cache_size>0</cache_size>
  539 + <lookup>
  540 + <schema/>
  541 + <table>bsth_c_line</table>
  542 + <orderby/>
  543 + <fail_on_multiple>N</fail_on_multiple>
  544 + <eat_row_on_failure>N</eat_row_on_failure>
  545 + <key>
  546 + <name>xl</name>
  547 + <field>id</field>
  548 + <condition>&#x3d;</condition>
  549 + <name2/>
  550 + </key>
  551 + <value>
  552 + <name>name</name>
  553 + <rename>xlmc</rename>
  554 + <default/>
  555 + <type>String</type>
  556 + </value>
  557 + </lookup>
  558 + <cluster_schema/>
  559 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  560 + <xloc>329</xloc>
  561 + <yloc>65</yloc>
  562 + <draw>Y</draw>
  563 + </GUI>
  564 + </step>
  565 +
  566 + <step>
  567 + <name>&#x8f66;&#x8f86;&#x67e5;&#x8be2;</name>
  568 + <type>DBLookup</type>
  569 + <description/>
  570 + <distribute>Y</distribute>
  571 + <custom_distribution/>
  572 + <copies>1</copies>
  573 + <partitioning>
  574 + <method>none</method>
  575 + <schema_name/>
  576 + </partitioning>
  577 + <connection>bus_control_variable</connection>
  578 + <cache>N</cache>
  579 + <cache_load_all>N</cache_load_all>
  580 + <cache_size>0</cache_size>
  581 + <lookup>
  582 + <schema/>
  583 + <table>bsth_c_cars</table>
  584 + <orderby/>
  585 + <fail_on_multiple>N</fail_on_multiple>
  586 + <eat_row_on_failure>N</eat_row_on_failure>
  587 + <key>
  588 + <name>clid</name>
  589 + <field>id</field>
  590 + <condition>&#x3d;</condition>
  591 + <name2/>
  592 + </key>
  593 + <value>
  594 + <name>inside_code</name>
  595 + <rename>zbh</rename>
  596 + <default/>
  597 + <type>String</type>
  598 + </value>
  599 + </lookup>
  600 + <cluster_schema/>
  601 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  602 + <xloc>600</xloc>
  603 + <yloc>64</yloc>
  604 + <draw>Y</draw>
  605 + </GUI>
  606 + </step>
  607 +
  608 + <step>
  609 + <name>&#x8f66;&#x8f86;&#x914d;&#x7f6e;&#x67e5;&#x8be2;</name>
  610 + <type>DBLookup</type>
  611 + <description/>
  612 + <distribute>Y</distribute>
  613 + <custom_distribution/>
  614 + <copies>1</copies>
  615 + <partitioning>
  616 + <method>none</method>
  617 + <schema_name/>
  618 + </partitioning>
  619 + <connection>bus_control_variable</connection>
  620 + <cache>N</cache>
  621 + <cache_load_all>N</cache_load_all>
  622 + <cache_size>0</cache_size>
  623 + <lookup>
  624 + <schema/>
  625 + <table>bsth_c_s_ccinfo</table>
  626 + <orderby/>
  627 + <fail_on_multiple>N</fail_on_multiple>
  628 + <eat_row_on_failure>N</eat_row_on_failure>
  629 + <key>
  630 + <name>car_config_info</name>
  631 + <field>id</field>
  632 + <condition>&#x3d;</condition>
  633 + <name2/>
  634 + </key>
  635 + <value>
  636 + <name>cl</name>
  637 + <rename>clid</rename>
  638 + <default/>
  639 + <type>Integer</type>
  640 + </value>
  641 + </lookup>
  642 + <cluster_schema/>
  643 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  644 + <xloc>471</xloc>
  645 + <yloc>64</yloc>
  646 + <draw>Y</draw>
  647 + </GUI>
  648 + </step>
  649 +
  650 + <step>
  651 + <name>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</name>
  652 + <type>SortRows</type>
  653 + <description/>
  654 + <distribute>Y</distribute>
  655 + <custom_distribution/>
  656 + <copies>1</copies>
  657 + <partitioning>
  658 + <method>none</method>
  659 + <schema_name/>
  660 + </partitioning>
  661 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  662 + <prefix>out</prefix>
  663 + <sort_size>1000000</sort_size>
  664 + <free_memory/>
  665 + <compress>N</compress>
  666 + <compress_variable/>
  667 + <unique_rows>N</unique_rows>
  668 + <fields>
  669 + <field>
  670 + <name>xlmc</name>
  671 + <ascending>Y</ascending>
  672 + <case_sensitive>N</case_sensitive>
  673 + <presorted>N</presorted>
  674 + </field>
  675 + <field>
  676 + <name>zbh</name>
  677 + <ascending>Y</ascending>
  678 + <case_sensitive>N</case_sensitive>
  679 + <presorted>N</presorted>
  680 + </field>
  681 + <field>
  682 + <name>qyrq</name>
  683 + <ascending>Y</ascending>
  684 + <case_sensitive>N</case_sensitive>
  685 + <presorted>N</presorted>
  686 + </field>
  687 + <field>
  688 + <name>lp_names</name>
  689 + <ascending>Y</ascending>
  690 + <case_sensitive>N</case_sensitive>
  691 + <presorted>N</presorted>
  692 + </field>
  693 + <field>
  694 + <name>ry_dbbms</name>
  695 + <ascending>Y</ascending>
  696 + <case_sensitive>N</case_sensitive>
  697 + <presorted>N</presorted>
  698 + </field>
  699 + </fields>
  700 + <cluster_schema/>
  701 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  702 + <xloc>705</xloc>
  703 + <yloc>177</yloc>
  704 + <draw>Y</draw>
  705 + </GUI>
  706 + </step>
  707 +
  708 + <step_error_handling>
  709 + </step_error_handling>
  710 + <slave-step-copy-partition-distribution>
  711 +</slave-step-copy-partition-distribution>
  712 + <slave_transformation>N</slave_transformation>
  713 +
  714 +</transformation>
... ...
src/main/resources/static/pages/forms/mould/statisticsDaily_.xls 0 → 100644
No preview for this file type
src/main/resources/static/pages/forms/mould/waybill_qingpu.xls
No preview for this file type
src/main/resources/static/pages/forms/statement/statisticsDaily .html
... ... @@ -37,7 +37,7 @@
37 37 </div>
38 38 <div class="form-group">
39 39 <input class="btn btn-default" type="button" id="query" value="查询"/>
40   -<!-- <input class="btn btn-default" type="button" id="export" value="导出"/> -->
  40 + <input class="btn btn-default" type="button" id="export" value="导出"/>
41 41 </div>
42 42 </form>
43 43 </div>
... ... @@ -156,6 +156,8 @@
156 156  
157 157 <script>
158 158 $(function(){
  159 + $('#export').attr('disabled', "true");
  160 +
159 161 // 关闭左侧栏
160 162 if (!$('body').hasClass('page-sidebar-closed'))
161 163 $('.menu-toggler.sidebar-toggler').click();
... ... @@ -176,17 +178,32 @@
176 178 })
177 179  
178 180  
  181 + var line = $("#line").val();
  182 + var xlName = $("#select2-line-container").html();
  183 + var date = $("#date").val();
179 184 $("#query").on("click",function(){
180   - var line = $("#line").val();
181   - var xlName = $("#select2-line-container").html();
182   - var date = $("#date").val();
183   - $get('/realSchedule/statisticsDaily',{line:line,date:date,xlName:xlName},function(result){
  185 + line = $("#line").val();
  186 + xlName = $("#select2-line-container").html();
  187 + date = $("#date").val();
  188 + $get('/realSchedule/statisticsDaily',{line:line,date:date,xlName:xlName,type:"query"},function(result){
184 189 // 把数据填充到模版中
185 190 var tbodyHtml = template('statisticsDaily',{list:result});
186 191 // 把渲染好的模版html文本追加到表格中
187 192 $('#forms .statisticsDaily').html(tbodyHtml);
  193 +
  194 + if(result.length == 0)
  195 + $("#export").attr('disabled',"true");
  196 + else
  197 + $("#export").removeAttr("disabled");
188 198 });
189 199 });
  200 +
  201 + $("#export").on("click",function(){
  202 + $get('/realSchedule/statisticsDaily',{line:line,date:date,xlName:xlName,type:"export"},function(result){
  203 + window.open("/downloadFile/download?fileName=统计日报"+moment(date).format("YYYYMMDD"));
  204 + });
  205 + });
  206 +
190 207 });
191 208 </script>
192 209 <script type="text/html" id="statisticsDaily">
... ...
src/main/resources/static/pages/forms/statement/waybillQp.html
... ... @@ -258,11 +258,11 @@
258 258 <tr>
259 259 <td colspan="2">调度员</td>
260 260 <td colspan="2">早班(职号)</td>
261   - <td >{{map.zdp}}</td>
  261 + <td title={{map.zdp}}>{{map.zdpT}}</td>
262 262 <td >中班(职号)</td>
263   - <td >{{map.zwdp}}</td>
  263 + <td title={{map.zwdp}}>{{map.zwdpT}}</td>
264 264 <td colspan="2">夜班(职号)</td>
265   - <td colspan="2">{{map.wdp}}</td>
  265 + <td colspan="2" title={{map.wdp}}>{{map.wdpT}}</td>
266 266 <td colspan="2">其他</td>
267 267 <td colspan="2">&nbsp;</td>
268 268 </tr>
... ...
src/main/resources/static/pages/scheduleApp/module/common/prj-common-globalservice.js
... ... @@ -455,7 +455,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;ScheduleRuleManageService_g&#39;, [&#39;$resource
455 455 return {
456 456 rest: $resource(
457 457 '/sr1fc/:id',
458   - {order: 'createDate', direction: 'DESC', id: '@id_route'},
  458 + {order: 'xl.id,updateDate', direction: 'ASC,DESC', id: '@id'},
459 459 {
460 460 list: {
461 461 method: 'GET',
... ...
src/main/resources/static/pages/scheduleApp/module/common/prj-common-ui-route-state.js
... ... @@ -889,6 +889,7 @@ ScheduleApp.config([
889 889 files: [
890 890 "assets/bower_components/angular-ui-select/dist/select.min.css",
891 891 "assets/bower_components/angular-ui-select/dist/select.min.js",
  892 + "assets/bower_components/angular-file-upload/dist/angular-file-upload.min.js",
892 893 "pages/scheduleApp/module/core/scheduleRuleManage/module.js"
893 894 ]
894 895 });
... ...
src/main/resources/static/pages/scheduleApp/module/core/scheduleRuleManage/dataExport.html 0 → 100644
src/main/resources/static/pages/scheduleApp/module/core/scheduleRuleManage/dataImport.html 0 → 100644
  1 +<div class="modal-header">
  2 + <h3 class="modal-title">排班规则信息excel数据导入</h3>
  3 +</div>
  4 +<div class="modal-body">
  5 + <div class="col-md-6">
  6 + <div class="input-group">
  7 + <input type="file" class="form-control" nv-file-select="" uploader="ctrl.uploader"/>
  8 + <span class="input-group-btn">
  9 + <button type="button" ng-click="ctrl.clearInputFile()" class="btn btn-default">
  10 + <span class="glyphicon glyphicon-trash"></span>
  11 + </button>
  12 + </span>
  13 + </div>
  14 + </div>
  15 +
  16 + <div class="table-scrollable table-scrollable-borderless">
  17 + <table class="table table-hover table-light">
  18 + <thead>
  19 + <tr class="uppercase">
  20 + <th width="50%">文件名</th>
  21 + <th ng-show="ctrl.uploader.isHTML5">大小(M)</th>
  22 + <th ng-show="ctrl.uploader.isHTML5">进度</th>
  23 + <th>状态</th>
  24 + <th>操作</th>
  25 + </tr>
  26 + </thead>
  27 + <tbody>
  28 + <tr ng-repeat="item in ctrl.uploader.queue">
  29 + <td>
  30 + <strong>{{ item.file.name }}</strong>
  31 + </td>
  32 + <td ng-show="ctrl.uploader.isHTML5" nowrap>{{ item.file.size/1024/1024|number:2 }} MB</td>
  33 + <td ng-show="ctrl.uploader.isHTML5">
  34 + <div class="progress progress-sm" style="margin-bottom: 0;">
  35 + <div class="progress-bar progress-bar-info" role="progressbar"
  36 + ng-style="{ 'width': item.progress + '%' }"></div>
  37 + </div>
  38 + </td>
  39 + <td class="text-center">
  40 + <span ng-show="item.isSuccess" class="text-success">
  41 + <i class="glyphicon glyphicon-ok"></i>
  42 + </span>
  43 + <span ng-show="item.isCancel" class="text-info">
  44 + <i class="glyphicon glyphicon-ban-circle"></i>
  45 + </span>
  46 + <span ng-show="item.isError" class="text-danger">
  47 + <i class="glyphicon glyphicon-remove"></i>
  48 + </span>
  49 + </td>
  50 + <td nowrap>
  51 + <button type="button" class="btn btn-success btn-xs" ng-click="item.upload()"
  52 + ng-disabled="item.isReady || item.isUploading || item.isSuccess">
  53 + <span class="glyphicon glyphicon-upload"></span> 上传
  54 + </button>
  55 + <button type="button" class="btn btn-warning btn-xs" ng-click="item.cancel()"
  56 + ng-disabled="!item.isUploading">
  57 + <span class="glyphicon glyphicon-ban-circle"></span> 取消
  58 + </button>
  59 + <button type="button" class="btn btn-danger btn-xs" ng-click="item.remove()">
  60 + <span class="glyphicon glyphicon-trash"></span> 删除
  61 + </button>
  62 + </td>
  63 + </tr>
  64 + </tbody>
  65 + </table>
  66 + </div>
  67 +
  68 +</div>
  69 +
  70 +<div class="modal-footer">
  71 + <button class="btn btn-primary" ng-click="ctrl.close()" ng-disabled="item.isUploading">关闭</button>
  72 +</div>
0 73 \ No newline at end of file
... ...
src/main/resources/static/pages/scheduleApp/module/core/scheduleRuleManage/index.html
... ... @@ -40,6 +40,12 @@
40 40 </a>
41 41 <ul class="dropdown-menu pull-right">
42 42 <li>
  43 + <a href="javascript:" class="tool-action" ng-click="ctrl.importData()">
  44 + <i class="fa fa-file-excel-o"></i>
  45 + 导入excel
  46 + </a>
  47 + </li>
  48 + <li>
43 49 <a href="javascript:" class="tool-action" ng-click="ctrl.exportData()">
44 50 <i class="fa fa-file-excel-o"></i>
45 51 导出excel
... ...
src/main/resources/static/pages/scheduleApp/module/core/scheduleRuleManage/module.js
... ... @@ -70,8 +70,9 @@ angular.module(&#39;ScheduleApp&#39;).controller(
70 70 [
71 71 'ScheduleRuleManageService',
72 72 '$state',
  73 + '$uibModal',
73 74 'FileDownload_g',
74   - function(service, $state, fileDownload) {
  75 + function(service, $state, $uibModal, fileDownload) {
75 76 var self = this;
76 77  
77 78 // 切换到form状态
... ... @@ -80,6 +81,31 @@ angular.module(&#39;ScheduleApp&#39;).controller(
80 81 $state.go("scheduleRuleManage_form");
81 82 };
82 83  
  84 + // 导入excel
  85 + self.importData = function() {
  86 + // large方式弹出模态对话框
  87 + var modalInstance = $uibModal.open({
  88 + templateUrl: '/pages/scheduleApp/module/core/scheduleRuleManage/dataImport.html',
  89 + size: "lg",
  90 + animation: true,
  91 + backdrop: 'static',
  92 + resolve: {
  93 + // 可以传值给controller
  94 + },
  95 + windowClass: 'center-modal',
  96 + controller: "ScheduleRuleManageToolsCtrl",
  97 + controllerAs: "ctrl",
  98 + bindToController: true
  99 + });
  100 + modalInstance.result.then(
  101 + function() {
  102 + console.log("dataImport.html打开");
  103 + },
  104 + function() {
  105 + console.log("dataImport.html消失");
  106 + }
  107 + );
  108 + };
83 109  
84 110 // 导出excel
85 111 self.exportData = function() {
... ... @@ -97,6 +123,59 @@ angular.module(&#39;ScheduleApp&#39;).controller(
97 123 ]
98 124 );
99 125  
  126 +// dataImport.html控制
  127 +angular.module('ScheduleApp').controller(
  128 + 'ScheduleRuleManageToolsCtrl',
  129 + [
  130 + '$modalInstance',
  131 + 'FileUploader',
  132 + function($modalInstance, FileUploader) {
  133 + var self = this;
  134 + self.data = "TODO";
  135 +
  136 + // 关闭窗口
  137 + self.close = function() {
  138 + $modalInstance.dismiss("cancel");
  139 + };
  140 +
  141 + self.clearInputFile = function() {
  142 + angular.element("input[type='file']").val(null);
  143 + };
  144 +
  145 + // 上传文件组件
  146 + self.uploader = new FileUploader({
  147 + url: "/sr1fc/uploadAndImportFile",
  148 + filters: [] // 用于过滤文件,比如只允许导入excel
  149 + });
  150 + self.uploader.onAfterAddingFile = function(fileItem)
  151 + {
  152 + console.info('onAfterAddingFile', fileItem);
  153 + console.log(self.uploader.queue.length);
  154 + if (self.uploader.queue.length > 1)
  155 + self.uploader.removeFromQueue(0);
  156 + };
  157 + self.uploader.onSuccessItem = function(fileItem, response, status, headers)
  158 + {
  159 + if (response.status == "SUCCESS") {
  160 + console.info('onSuccessItem', fileItem, response, status, headers);
  161 + } else {
  162 + fileItem.isSuccess = false;
  163 + fileItem.isCancel = false;
  164 + fileItem.isError = true;
  165 +
  166 + alert(response.msg);
  167 + }
  168 +
  169 + };
  170 + self.uploader.onErrorItem = function(fileItem, response, status, headers)
  171 + {
  172 + console.info('onErrorItem', fileItem, response, status, headers);
  173 + };
  174 +
  175 + }
  176 + ]
  177 +);
  178 +
100 179 // list.html控制器
101 180 angular.module('ScheduleApp').controller(
102 181 'ScheduleRuleManageListCtrl',
... ...
src/main/resources/static/pages/scheduleApp/module/core/scheduleRuleManage/route.js
... ... @@ -28,6 +28,7 @@ ScheduleApp.config([
28 28 files: [
29 29 "assets/bower_components/angular-ui-select/dist/select.min.css",
30 30 "assets/bower_components/angular-ui-select/dist/select.min.js",
  31 + "assets/bower_components/angular-file-upload/dist/angular-file-upload.min.js",
31 32 "pages/scheduleApp/module/core/scheduleRuleManage/module.js"
32 33 ]
33 34 });
... ...
src/main/resources/static/pages/scheduleApp/module/core/scheduleRuleManage/service.js
... ... @@ -3,7 +3,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;ScheduleRuleManageService_g&#39;, [&#39;$resource
3 3 return {
4 4 rest: $resource(
5 5 '/sr1fc/:id',
6   - {order: 'createDate', direction: 'DESC', id: '@id_route'},
  6 + {order: 'xl.id,updateDate', direction: 'ASC,DESC', id: '@id'},
7 7 {
8 8 list: {
9 9 method: 'GET',
... ...
src/main/resources/static/real_control_v2/css/home.css
... ... @@ -79,7 +79,7 @@
79 79 }
80 80  
81 81 .home-gps-table dl dt:nth-of-type(4), .home-gps-table dl dd:nth-of-type(4) {
82   - width: 9%
  82 + width: 8%;
83 83 }
84 84  
85 85 .home-gps-table dl dt:nth-of-type(5), .home-gps-table dl dd:nth-of-type(5) {
... ... @@ -248,6 +248,13 @@ span.signal-state-outbounds{
248 248 font-size: 11px;
249 249 }
250 250  
  251 +span.signal-state-speed-limit{
  252 + color: red;
  253 + padding: 2px 3px;
  254 + border-radius: 3px;
  255 + font-size: 11px;
  256 +}
  257 +
251 258 .home-svg-edit-icon{
252 259 position: absolute;
253 260 right: 10px;
... ... @@ -265,4 +272,10 @@ span.signal-state-outbounds{
265 272 .home-svg-edit-icon:before{
266 273 font-family: FontAwesome;
267 274 content: "\f040";
  275 +}
  276 +
  277 +.carpark-icon{
  278 + color: #4dc24d;
  279 + font-size: 14px;
  280 + margin-left: 5px;
268 281 }
269 282 \ No newline at end of file
... ...
src/main/resources/static/real_control_v2/css/main.css
... ... @@ -180,10 +180,10 @@ svg.line-chart g.item:nth-last-child(3)&gt;text.down {
180 180 }
181 181  
182 182 svg.line-chart g.gps-wrap>rect {
183   - width: 34px;
  183 + width: 30px;
184 184 height: 15px;
185   - /*fill: #fff;*/
186   - rx: 4px;
  185 + /* fill: #fff; */
  186 + rx: 2px;
187 187 cursor: pointer;
188 188 }
189 189  
... ... @@ -202,8 +202,8 @@ svg.line-chart g.gps-wrap&gt;rect.hover {
202 202 }
203 203  
204 204 svg.line-chart g.gps-wrap>text {
205   - font-size: 13px;
206   - transform: translate(2px, 12px);
  205 + font-size: 12px;
  206 + transform: translate(0, 12px);
207 207 pointer-events: none;
208 208 }
209 209  
... ... @@ -220,8 +220,8 @@ svg.line-chart .merge_hide {
220 220 }
221 221  
222 222 svg.line-chart g.merge-item rect {
223   - width: 24px;
224   - height: 24px;
  223 + width: 22px;
  224 + height: 22px;
225 225 rx: 15px;
226 226 fill: #19a53a;
227 227 cursor: pointer;
... ...
src/main/resources/static/real_control_v2/fragments/home/line_panel.html
... ... @@ -30,12 +30,16 @@
30 30 <dd>{{speed}}</dd>
31 31 <dd>{{expectStopTime}}</dd>
32 32 <dd>
33   - {{if abnormal != null}}
34   - {{if abnormal == 'outBounds'}}
35   - 越界
  33 + {{if abnormalStatus != null}}
  34 + {{if abnormalStatus == 'outBounds'}}
  35 + <span class="signal-state-outbounds">越界</span>
  36 + {{else if abnormalStatus == 'overspeed'}}
  37 + <span class="signal-state-speed-limit">超速</span>
36 38 {{/if}}
37   - {{else}}
38   - 正常
  39 + {{/if}}
  40 +
  41 + {{if instation == 2}}
  42 + <i class="uk-icon-product-hunt carpark-icon"></i>
39 43 {{/if}}
40 44 </dd>
41 45 <dd title="{{stationName}}">{{stationName}}</dd>
... ... @@ -46,12 +50,16 @@
46 50 </script>
47 51  
48 52 <script id="home-gps-abnormal-temp" type="text/html">
49   - {{if abnormal != null}}
50   - {{if abnormal == 'outBounds'}}
  53 + {{if abnormalStatus != null}}
  54 + {{if abnormalStatus == 'outBounds'}}
51 55 <span class="signal-state-outbounds">越界</span>
  56 + {{else if abnormalStatus == 'overspeed'}}
  57 + <span class="signal-state-speed-limit">超速</span>
52 58 {{/if}}
53   - {{else}}
54   - 正常
  59 + {{/if}}
  60 +
  61 + {{if instation == 2}}
  62 + <i class="uk-icon-product-hunt carpark-icon"></i>
55 63 {{/if}}
56 64 </script>
57 65 </div>
... ...
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task/add_sub_task_range_turn.html
1   -<div class="uk-modal ct-form-modal" id="add-sub-task-range_turn-modal">
2   - <div class="uk-modal-dialog" style="width: 1200px;">
3   - <a href="" class="uk-modal-close uk-close"></a>
4   - <div class="uk-modal-header">
5   - <h2>区间掉头子任务</h2></div>
6   -
7   - <div style="width: 100%;padding-left: 1%;">
8   - <form class="uk-form uk-form-horizontal">
9   - <div class="uk-grid">
10   - <div class="uk-width-1-4">
11   - <div class="uk-form-row" style="margin-top: 20px;">
12   - <label class="uk-form-label">掉头站点</label>
13   - <div class="uk-form-controls">
14   - <select id="turnStationSelect">
15   - <option value="">请选择...</option>
16   - </select>
17   - </div>
18   - </div>
19   - </div>
20   - <div class="uk-width-1-4">
21   - <div class="uk-form-row" style="margin-top: 20px;">
22   - <label class="uk-form-label">掉头原因</label>
23   - <div class="uk-form-controls">
24   - <select id="turnReason" style="width: calc(100% - 9px);">
25   - <option value="">请选择...</option>
26   - </select>
27   - </div>
28   - </div>
29   - </div>
30   - <div class="uk-width-2-4" style="padding-left: 28px;">
31   - <h6 style="color: #a7a5a5;margin-top: 35px;"><i class="uk-icon-question-circle"> </i>
32   - 如果“掉头站点”在另一个走向不存在,你需要手动选择第二个营运起点</h6>
33   - </div>
34   - </div>
35   - </form>
36   - </div>
37   - <hr class="modal-dotted-hr">
38   - <div class="uk-grid">
39   - <div class="uk-width-1-2">
40   - <div class="main-sch-panel curr"></div>
41   -
42   - <div style="margin-top: 5px;">
43   - <div class="sub-task-card" style="margin: 0 0 0 7px;">
44   - <div class="uk-panel uk-panel-box uk-panel-box-primary" style="padding-bottom: 32px;">
45   - <div class="uk-panel-badge uk-badge">营运</div>
46   - <h3 class="uk-panel-title">线路上站点间</h3>
47   -
48   - <form class="uk-form uk-form-horizontal" curr_service_form>
49   - </form>
50   - </div>
51   - </div>
52   - <div class="sub-task-card " style="margin: 0;">
53   - <div class="uk-panel uk-panel-box" style="padding-bottom: 32px;">
54   - <div class="uk-panel-badge uk-badge uk-badge-danger">烂班</div>
55   - <h3 class="uk-panel-title">线路上站点间</h3>
56   - <form class="uk-form uk-form-horizontal " curr_destroy_form>
57   - </form>
58   - </div>
59   - </div>
60   - </div>
61   - </div>
62   - <div class="uk-width-1-2">
63   - <div class="main-sch-panel next"></div>
64   -
65   - <div style="margin: 5px;">
66   - <div class="sub-task-card " style="margin: 0 0 0 7px;">
67   - <div class="uk-panel uk-panel-box" style="padding-bottom: 32px;">
68   - <div class="uk-panel-badge uk-badge uk-badge-danger">烂班</div>
69   - <h3 class="uk-panel-title">线路上站点间</h3>
70   - <form class="uk-form uk-form-horizontal " next_destroy_form></form>
71   - </div>
72   - </div>
73   - <div class="sub-task-card" style="margin: 0;">
74   - <div class="uk-panel uk-panel-box uk-panel-box-primary" style="padding-bottom: 32px;">
75   - <div class="uk-panel-badge uk-badge">营运</div>
76   - <h3 class="uk-panel-title">线路上站点间</h3>
77   -
78   - <form class="uk-form uk-form-horizontal" next_service_form>
79   - </form>
80   - </div>
81   - </div>
82   - </div>
83   - </div>
84   - </div>
85   -
86   -
87   - <div class="uk-modal-footer uk-text-right">
88   - <button type="button" class="uk-button uk-modal-close">取消</button>
89   - <button type="button" class="uk-button uk-button-primary" id="submitChildTaskBtn">提交子任务</button>
90   -
91   - <div class="ct-footer-left">
92   - <a id="betweenStationRangeCalc" data-drawer-id="station_route_spacing_chart_drawer">站点间公里不准?</a>
93   - </div>
94   - </div>
95   - </div>
96   - <!-- 主任务信息 -->
97   - <script id="range_turn_main_sch-temp" type="text/html">
98   - <div class="ct_row">
99   - <div class="ct_cell c_1_3">
100   - <label>待发</label>
101   - <span>{{dfsj}}</span>
102   - </div>
103   - <div class="ct_cell c_1_3">
104   - <label>计达</label>
105   - <span>{{zdsj}}</span>
106   - </div>
107   - <div class="ct_cell c_1_3">
108   - <label>车辆</label>
109   - <span>{{clZbh}}</span>
110   - </div>
111   - </div>
112   - <div class="ct_row">
113   - <div class="ct_cell c_1_3">
114   - <label>起点</label>
115   - <span>{{qdzName}}</span>
116   - </div>
117   - <div class="ct_cell c_1_3">
118   - <label>终点</label>
119   - <span>{{zdzName}}</span>
120   - </div>
121   - <div class="ct_cell c_1_3">
122   - <label>里程</label>
123   - <span>{{jhlc}}</span>
124   - </div>
125   - </div>
126   - </script>
127   -
128   - <!-- 子任务营运表单 -->
129   - <script id="range_turn_child_service-temp" type="text/html">
130   - <input type="hidden" name="schedule.id" value="{{sch.id}}">
131   - <input type="hidden" name="type2" value="1">
132   - <input type="hidden" value="正常" name="type1">
133   - <input type="hidden" name="mileageType" value="service">
134   - <div class="uk-grid">
135   - <div class="uk-width-3-10">
136   - <div class="uk-form-row">
137   - <label class="uk-form-label">起点 </label>
138   - </div>
139   - </div>
140   - <div class="uk-width-7-10 pl5">
141   - <select name="startStation">
142   - {{each routes as r i}}
143   - <option value="{{r.stationCode}}">{{r.stationName}}</option>
144   - {{/each}}
145   - </select>
146   - </div>
147   - </div>
148   - <div class="uk-grid">
149   - <div class="uk-width-3-10">
150   - <div class="uk-form-row">
151   - <label class="uk-form-label">终点 </label>
152   - </div>
153   - </div>
154   - <div class="uk-width-7-10 pl5">
155   - <select name="endStation" class="ct_focus" disabled>
156   - {{each routes as r i}}
157   - <option value="{{r.stationCode}}" {{if r.stationCode==sch.zdzCode}}selected{{/if}}>
158   - {{r.stationName}}
159   - </option>
160   - {{/each}}
161   - </select>
162   - </div>
163   - </div>
164   - <div class="uk-grid">
165   - <div class="uk-width-3-10">
166   - <div class="uk-form-row">
167   - <label class="uk-form-label">营运里程</label>
168   - </div>
169   - </div>
170   - <div class="uk-width-7-10 pl5">
171   - <input type="text" name="mileage" value="{{sch.jhlc}}" required>
172   - </div>
173   - </div>
174   - <div class="uk-grid">
175   - <div class="uk-width-3-10">
176   - <div class="uk-form-row">
177   - <label class="uk-form-label">开始时间</label>
178   - </div>
179   - </div>
180   - <div class="uk-width-7-10 pl5">
181   - <input type="time" name="startDate" value="{{sch.dfsj}}" required disabled>
182   - </div>
183   - </div>
184   - <div class="uk-grid">
185   - <div class="uk-width-3-10">
186   - <div class="uk-form-row">
187   - <label class="uk-form-label">结束时间</label>
188   - </div>
189   - </div>
190   - <div class="uk-width-7-10 pl5">
191   - <input type="time" name="endDate" value="{{sch.zdsj}}" required>
192   - </div>
193   - </div>
194   - </script>
195   -
196   - <!-- 子任务烂班表单 -->
197   - <script id="range_turn_child_destroy-temp" type="text/html">
198   - <input type="hidden" name="schedule.id" value="{{sch.id}}">
199   - <input type="hidden" value="正常" name="type1">
200   - <input type="hidden" value="1" name="type2">
201   - <input type="hidden" name="mileageType" value="service">
202   - <input type="hidden" name="destroy" value="true">
203   - <div class="uk-grid">
204   - <div class="uk-width-3-10">
205   - <div class="uk-form-row">
206   - <label class="uk-form-label">起点 </label>
207   - </div>
208   - </div>
209   - <div class="uk-width-7-10 pl5">
210   - <select name="startStation" required disabled>
211   - {{each routes as r i}}
212   - <option value="{{r.stationCode}}">{{r.stationName}}</option>
213   - {{/each}}
214   - </select>
215   - </div>
216   - </div>
217   - <div class="uk-grid">
218   - <div class="uk-width-3-10">
219   - <div class="uk-form-row">
220   - <label class="uk-form-label">终点 </label>
221   - </div>
222   - </div>
223   - <div class="uk-width-7-10 pl5">
224   - <select name="endStation" required class="ct_focus">
225   - {{each routes as r i}}
226   - <option value="{{r.stationCode}}" {{if r.stationCode==sch.zdzCode}}selected{{/if}}>
227   - {{r.stationName}}
228   - </option>
229   - {{/each}}
230   - </select>
231   - </div>
232   - </div>
233   - <div class="uk-grid">
234   - <div class="uk-width-3-10">
235   - <div class="uk-form-row">
236   - <label class="uk-form-label">烂班里程</label>
237   - </div>
238   - </div>
239   - <div class="uk-width-7-10 pl5">
240   - <input type="text" name="mileage" required>
241   - </div>
242   - </div>
243   - <div class="uk-grid">
244   - <div class="uk-width-3-10">
245   - <div class="uk-form-row">
246   - <label class="uk-form-label">开始时间</label>
247   - </div>
248   - </div>
249   - <div class="uk-width-7-10 pl5">
250   - <input type="time" name="startDate" required disabled>
251   - </div>
252   - </div>
253   - <div class="uk-grid" style="height: 30px;">
254   - </div>
255   - </script>
256   -
257   - <div class="ct-bottom-drawer">
258   - <div class="ct-bottom-drawer-body"></div>
259   - </div>
260   -
261   - <script>
262   - (function () {
263   - var modal = '#add-sub-task-range_turn-modal',
264   - sch, nextSch, stationRoutes, information, timeLocStations;
265   - var adjustExps = ['配车', '保养', '故障', '肇事', '路阻', '纠纷', '缺人', '客稀', '缺车', '气候', '援外', '吊慢', '抽减', '其他'];
266   -
267   - var csf = $('form[curr_service_form]', modal);
268   - var nsf = $('form[next_service_form]', modal);
269   - var cdf = $('form[curr_destroy_form]', modal);
270   - var ndf = $('form[next_destroy_form]', modal);
271   -
272   - //掉头站点
273   - var turnStation, turnStationName;
274   - $(modal).on('init', function (e, data) {
275   - sch = data.sch;
276   - nextSch = gb_schedule_table.getNextSch(sch);
277   -
278   - //主任务信息
279   - $('.main-sch-panel.curr', modal).html(template('range_turn_main_sch-temp', sch));
280   - $('.main-sch-panel.next', modal).html(template('range_turn_main_sch-temp', nextSch));
281   -
282   - //站点路由
283   - stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) {
284   - return a.stationRouteCode - b.stationRouteCode;
285   - }), 'directions');
286   -
287   - var currData = {sch: sch, routes: stationRoutes[sch.xlDir]}
288   - , nextData = {sch: nextSch, routes: stationRoutes[nextSch.xlDir]};
289   - //营运1
290   - csf.html(template('range_turn_child_service-temp', currData));
291   - disabledField(csf, 'startStation');
292   - //营运结束时间
293   - $('[name=endDate]', csf).on('input', synchroDate);
294   -
295   - //营运2
296   - nsf.html(template('range_turn_child_service-temp', nextData));
297   - disabledField(nsf, 'endDate');
298   - //烂班1
299   - cdf.html(template('range_turn_child_destroy-temp', currData));
300   - disabledField(cdf, 'endStation');
301   - //烂班2
302   - ndf.html(template('range_turn_child_destroy-temp', nextData));
303   - $('[name=startStation]', ndf).val(nextSch.qdzCode);
304   - //烂班2终点改变
305   - $('[name=endStation]', ndf).on('change', reCalcSecond);
306   - //营运2起点改变
307   - $('[name=startStation]', nsf).on('change', reCalcSecond);
308   -
309   - //掉头站点
310   - var opts = '';
311   - $.each(currData.routes, function () {
312   - opts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>';
313   - });
314   - $('#turnStationSelect', modal).append(opts);
315   - opts = '';
316   - $.each(adjustExps, function () {
317   - opts += '<option value="' + this + '">' + this + '</option>';
318   - });
319   - //掉头原因
320   - $('#turnReason', modal).append(opts);
321   -
322   - //线路标准
323   - information = gb_data_basic.getLineInformation(sch.xlBm);
324   - //本地存储的站点耗时
325   - getLocStationsSpace();
326   -
327   - var dataArray = [];
328   - var fs = $('.sub-task-card form', modal).formValidation({
329   - framework: 'uikit',
330   - locale: 'zh_CN'
331   - });
332   - fs.on('success.form.fv', function (e) {
333   - e.preventDefault();
334   - dataArray.push($.extend($(this).serializeJSON(), getDisabledVal(this),
335   - {remarks: $('#turnReason', modal).val(), destroyReason: $('#turnReason', modal).val()}));
336   - $(this).data('valid', true);
337   -
338   - if (allValidSuccess()) {
339   - var i = 0;
340   - (function () {
341   - var f = arguments.callee;
342   - if (i >= dataArray.length) {
343   - /**
344   - * 为班次添加备注
345   - */
346   - var remarks = '掉头' + $('[name=endDate]', csf).val() + ' 因 ' + $('#turnReason', modal).val() + '在' + $('[name=endStation] option:selected', csf).text() + '掉头';
347   - gb_schedule_table.addRemarks([sch, nextSch], remarks);
348   - UIkit.modal(modal).hide();
349   - $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch});
350   - return;
351   - }
352   - var data = dataArray[i];
353   - gb_common.$post('/childTask', data, function (rs) {
354   - notify_succ('子任务添加成功');
355   - gb_schedule_table.updateSchedule(rs.t);
356   - i++;
357   - f();
358   - });
359   - })();
360   - }
361   - });
362   -
363   - //校验不过
364   - fs.on('err.field.fv', function () {
365   - $('#submitChildTaskBtn', modal).removeClass('disabled').removeAttr('disabled');
366   - });
367   -
368   - //submit
369   - $('#submitChildTaskBtn', modal).on('click', function () {
370   - if ($('#turnReason', modal).val() == '') {
371   - return notify_err('你必须选择掉头原因!');
372   - }
373   -
374   - $(this).addClass('disabled').attr('disabled', 'disabled');
375   - dataArray = [];
376   - fs.data('valid', false);
377   - fs.formValidation('validate');
378   - });
379   -
380   - //掉头站切换
381   - $('#turnStationSelect', modal).on('change', function () {
382   - turnStation = $(this).val();
383   - turnStationName = $('option:selected', this).text();
384   - reClac();
385   - });
386   - });
387   -
388   - function disabledField(f, itemName) {
389   - $('[name=' + itemName + ']', f).attr('disabled', 'disabled');
390   - }
391   -
392   - function allValidSuccess() {
393   - var flag = true;
394   - $('.sub-task-card form:visible', modal).each(function (i, f) {
395   - if (!$(f).data('valid')) {
396   - flag = false;
397   - return false;
398   - }
399   - });
400   - return flag;
401   - }
402   -
403   - //获取表单disabled 项的值
404   - function getDisabledVal(f) {
405   - var rs = {};
406   - $('input,select', f).each(function () {
407   - if ($(this).attr('disabled')) {
408   - rs[$(this).attr('name')] = $(this).val();
409   - }
410   - });
411   - return rs;
412   - }
413   -
414   - function reClac() {
415   - if (!turnStation || turnStation == '')
416   - return;
417   -
418   - var mileage, et, ets;
419   -
420   - $('#turnStationSelect', modal).val(turnStation);
421   - //营运1终点
422   - $('[name=endStation]', csf).val(turnStation);
423   - calcFormMileage(csf, sch.xlDir);//里程
424   - //结束时间
425   - ets = calcFirstEndDate();
426   -
427   - //烂班1起点
428   - $('[name=startStation]', cdf).val(turnStation);
429   - calcFormMileage(cdf, sch.xlDir);
430   - //开始时间
431   - $('[name=startDate]', cdf).val(ets);
432   - //烂班2终点
433   - try {
434   - $('[name=endStation]', ndf).val(searchParallelStation());
435   - calcFormMileage(ndf, nextSch.xlDir);
436   - } catch (e) {
437   - }
438   - //开始时间
439   - $('[name=startDate]', ndf).val(ets);
440   -
441   - //营运2起点
442   - try {
443   - $('[name=startStation]', nsf).val(searchParallelStation());
444   - calcFormMileage(nsf, nextSch.xlDir);
445   - } catch (e) {
446   - }
447   - //开始时间
448   - $('[name=startDate]', nsf).val(ets);
449   - //结束时间
450   - calcSecondEndDate();
451   - }
452   -
453   - function calcFirstEndDate() {
454   - var mileage = parseInt($('[name=mileage]', csf).val());
455   - var et = sch.dfsjT + (mileage / sch.jhlc * sch.bcsj * 60 * 1000);
456   - var ets = et > sch.zdsjT ? sch.zdsj : moment(et).format('HH:mm');
457   - $('[name=endDate]', csf).val(ets);
458   - return ets;
459   - }
460   -
461   - function calcSecondEndDate() {
462   - var mileage = parseInt($('[name=mileage]', nsf).val());
463   - var ets = moment($('[name=startDate]', nsf).val(), 'HH:mm')
464   - .add(mileage / nextSch.jhlc * nextSch.bcsj * 60, 'seconds')
465   - .format('HH:mm');
466   - $('[name=endDate]', nsf).val(ets);
467   - return ets;
468   - }
469   -
470   - //返回另一个走向对应的站点
471   - function searchParallelStation() {
472   - var routes = stationRoutes[nextSch.xlDir]
473   - , len = routes.length;
474   -
475   - for (var i = 0; i < len; i++) {
476   - if (routes[i].stationName == turnStationName)
477   - return routes[i].stationCode;
478   - }
479   - }
480   -
481   - //计算第二个班次
482   - function reCalcSecond() {
483   - var code = $(this).val()
484   - , updown = nextSch.xlDir;
485   -
486   - $('[name=endStation]', ndf).val(code);
487   - calcFormMileage(ndf, updown);
488   -
489   - $('[name=startStation]', nsf).val(code);
490   - calcFormMileage(nsf, updown);
491   - //结束时间
492   - calcSecondEndDate();
493   - }
494   -
495   - //同步时间
496   - function synchroDate() {
497   - var date = $(this).val();
498   - $('[name=startDate]', cdf).val(date);
499   - $('[name=startDate]', ndf).val(date);
500   - $('[name=startDate]', nsf).val(date);
501   - calcSecondEndDate();
502   - }
503   -
504   - function calcFormMileage(f, updown) {
505   - var s = $('[name=startStation]', f).val()
506   - , e = $('[name=endStation]', f).val();
507   -
508   - $('[name=mileage]', f).val(calcMileage(s, e, updown));
509   - }
510   -
511   - function calcMileage(s, e, updown) {
512   - var mileage = 0, flag, code;
513   - if (timeLocStations) {
514   - //空间坐标计算的站距
515   - $.each(timeLocStations[updown == 0 ? 'up' : 'down'], function () {
516   - code = this.station['STATION_CODE'];
517   - if (flag)
518   - mileage = gb_common.accAdd(mileage, this.toDistanceGl);
519   - if (code == s)
520   - flag = true;
521   - if (code == e)
522   - return false;
523   - });
524   - }
525   - else {
526   - //从原始站点路由字段里取值
527   - $.each(stationRoutes[updown], function () {
528   - code = this['stationCode'];
529   - if (flag)
530   - mileage = gb_common.accAdd(mileage, this.distances);
531   - if (code == s)
532   - flag = true;
533   - if (code == e)
534   - return false;
535   - });
536   - }
537   - return mileage;
538   - }
539   -
540   - //从本地localStorage获取站间距数据
541   - function getLocStationsSpace() {
542   - try {
543   - timeLocStations = window.localStorage.getItem('control_route_distance_' + sch.xlBm);
544   - if (timeLocStations)
545   - timeLocStations = JSON.parse(timeLocStations).stations;
546   - } catch (e) {
547   - console.log(e);
548   - }
549   - }
550   -
551   - //站间距计算后刷新
552   - $(modal).on('refresh_station_space', function () {
553   - getLocStationsSpace();
554   - reClac();
555   - });
556   -
557   - //------ 下抽屉 ------
558   - $('#betweenStationRangeCalc', modal).on('click', function () {
559   - var id = $(this).data('drawer-id');
560   - switchBtmDrawer(id, '/real_control_v2/fragments/line_schedule/context_menu/sub_task/station_route_spacing_chart.html');
561   - });
562   -
563   - var btmDrawer = $('.ct-bottom-drawer', modal);
564   - //打开事件
565   - btmDrawer.on('drawer_show', function () {
566   - var url = $(this).data('url');
567   - if (!url) {
568   - alert('无效的地址');
569   - }
570   -
571   - var drawerPanel = $(this).data('name');
572   - $('.ct-bottom-drawer-body', btmDrawer).load(url, function () {
573   - $('#' + drawerPanel).trigger('drawer-init', {sch: sch});
574   - });
575   - });
576   -
577   - function switchBtmDrawer(id, url) {
578   - if (btmDrawer.hasClass('open') && btmDrawer.data('name') == id) {
579   - btmDrawer.removeClass('open');
580   - btmDrawer.removeData('name').removeData('url');
581   - }
582   - else {
583   - btmDrawer.addClass('open');
584   - btmDrawer.data('name', id).data('url', url).trigger('drawer_show');
585   - }
586   - }
587   - })();
588   - </script>
  1 +<div class="uk-modal ct-form-modal" id="add-sub-task-range_turn-modal">
  2 + <div class="uk-modal-dialog" style="width: 1200px;">
  3 + <a href="" class="uk-modal-close uk-close"></a>
  4 + <div class="uk-modal-header">
  5 + <h2>区间掉头子任务</h2></div>
  6 +
  7 + <div style="width: 100%;padding-left: 1%;">
  8 + <form class="uk-form uk-form-horizontal">
  9 + <div class="uk-grid">
  10 + <div class="uk-width-1-4">
  11 + <div class="uk-form-row" style="margin-top: 20px;">
  12 + <label class="uk-form-label">掉头站点</label>
  13 + <div class="uk-form-controls">
  14 + <select id="turnStationSelect">
  15 + <option value="">请选择...</option>
  16 + </select>
  17 + </div>
  18 + </div>
  19 + </div>
  20 + <div class="uk-width-1-4">
  21 + <div class="uk-form-row" style="margin-top: 20px;">
  22 + <label class="uk-form-label">掉头原因</label>
  23 + <div class="uk-form-controls">
  24 + <select id="turnReason" style="width: calc(100% - 9px);">
  25 + <option value="">请选择...</option>
  26 + </select>
  27 + </div>
  28 + </div>
  29 + </div>
  30 + <div class="uk-width-2-4" style="padding-left: 28px;">
  31 + <h6 style="color: #a7a5a5;margin-top: 35px;"><i class="uk-icon-question-circle"> </i>
  32 + 如果“掉头站点”在另一个走向不存在,你需要手动选择第二个营运起点</h6>
  33 + </div>
  34 + </div>
  35 + </form>
  36 + </div>
  37 + <hr class="modal-dotted-hr">
  38 + <div class="uk-grid">
  39 + <div class="uk-width-1-2">
  40 + <div class="main-sch-panel curr"></div>
  41 +
  42 + <div style="margin-top: 5px;">
  43 + <div class="sub-task-card" style="margin: 0 0 0 7px;">
  44 + <div class="uk-panel uk-panel-box uk-panel-box-primary" style="padding-bottom: 32px;">
  45 + <div class="uk-panel-badge uk-badge">营运</div>
  46 + <h3 class="uk-panel-title">线路上站点间</h3>
  47 +
  48 + <form class="uk-form uk-form-horizontal" curr_service_form>
  49 + </form>
  50 + </div>
  51 + </div>
  52 + <div class="sub-task-card " style="margin: 0;">
  53 + <div class="uk-panel uk-panel-box" style="padding-bottom: 32px;">
  54 + <div class="uk-panel-badge uk-badge uk-badge-danger">烂班</div>
  55 + <h3 class="uk-panel-title">线路上站点间</h3>
  56 + <form class="uk-form uk-form-horizontal " curr_destroy_form>
  57 + </form>
  58 + </div>
  59 + </div>
  60 + </div>
  61 + </div>
  62 + <div class="uk-width-1-2">
  63 + <div class="main-sch-panel next"></div>
  64 +
  65 + <div style="margin: 5px;">
  66 + <div class="sub-task-card " style="margin: 0 0 0 7px;">
  67 + <div class="uk-panel uk-panel-box" style="padding-bottom: 32px;">
  68 + <div class="uk-panel-badge uk-badge uk-badge-danger">烂班</div>
  69 + <h3 class="uk-panel-title">线路上站点间</h3>
  70 + <form class="uk-form uk-form-horizontal " next_destroy_form></form>
  71 + </div>
  72 + </div>
  73 + <div class="sub-task-card" style="margin: 0;">
  74 + <div class="uk-panel uk-panel-box uk-panel-box-primary" style="padding-bottom: 32px;">
  75 + <div class="uk-panel-badge uk-badge">营运</div>
  76 + <h3 class="uk-panel-title">线路上站点间</h3>
  77 +
  78 + <form class="uk-form uk-form-horizontal" next_service_form>
  79 + </form>
  80 + </div>
  81 + </div>
  82 + </div>
  83 + </div>
  84 + </div>
  85 +
  86 +
  87 + <div class="uk-modal-footer uk-text-right">
  88 + <button type="button" class="uk-button uk-modal-close">取消</button>
  89 + <button type="button" class="uk-button uk-button-primary" id="submitChildTaskBtn">提交子任务</button>
  90 +
  91 + <div class="ct-footer-left">
  92 + <a id="betweenStationRangeCalc" data-drawer-id="station_route_spacing_chart_drawer">站点间公里不准?</a>
  93 + </div>
  94 + </div>
  95 + </div>
  96 + <!-- 主任务信息 -->
  97 + <script id="range_turn_main_sch-temp" type="text/html">
  98 + <div class="ct_row">
  99 + <div class="ct_cell c_1_3">
  100 + <label>待发</label>
  101 + <span>{{dfsj}}</span>
  102 + </div>
  103 + <div class="ct_cell c_1_3">
  104 + <label>计达</label>
  105 + <span>{{zdsj}}</span>
  106 + </div>
  107 + <div class="ct_cell c_1_3">
  108 + <label>车辆</label>
  109 + <span>{{clZbh}}</span>
  110 + </div>
  111 + </div>
  112 + <div class="ct_row">
  113 + <div class="ct_cell c_1_3">
  114 + <label>起点</label>
  115 + <span>{{qdzName}}</span>
  116 + </div>
  117 + <div class="ct_cell c_1_3">
  118 + <label>终点</label>
  119 + <span>{{zdzName}}</span>
  120 + </div>
  121 + <div class="ct_cell c_1_3">
  122 + <label>里程</label>
  123 + <span>{{jhlc}}</span>
  124 + </div>
  125 + </div>
  126 + </script>
  127 +
  128 + <!-- 子任务营运表单 -->
  129 + <script id="range_turn_child_service-temp" type="text/html">
  130 + <input type="hidden" name="schedule.id" value="{{sch.id}}">
  131 + <input type="hidden" name="type2" value="1">
  132 + <input type="hidden" value="正常" name="type1">
  133 + <input type="hidden" name="mileageType" value="service">
  134 + <div class="uk-grid">
  135 + <div class="uk-width-3-10">
  136 + <div class="uk-form-row">
  137 + <label class="uk-form-label">起点 </label>
  138 + </div>
  139 + </div>
  140 + <div class="uk-width-7-10 pl5">
  141 + <select name="startStation">
  142 + {{each routes as r i}}
  143 + <option value="{{r.stationCode}}">{{r.stationName}}</option>
  144 + {{/each}}
  145 + </select>
  146 + </div>
  147 + </div>
  148 + <div class="uk-grid">
  149 + <div class="uk-width-3-10">
  150 + <div class="uk-form-row">
  151 + <label class="uk-form-label">终点 </label>
  152 + </div>
  153 + </div>
  154 + <div class="uk-width-7-10 pl5">
  155 + <select name="endStation" class="ct_focus" disabled>
  156 + {{each routes as r i}}
  157 + <option value="{{r.stationCode}}" {{if r.stationCode==sch.zdzCode}}selected{{/if}}>
  158 + {{r.stationName}}
  159 + </option>
  160 + {{/each}}
  161 + </select>
  162 + </div>
  163 + </div>
  164 + <div class="uk-grid">
  165 + <div class="uk-width-3-10">
  166 + <div class="uk-form-row">
  167 + <label class="uk-form-label">营运里程</label>
  168 + </div>
  169 + </div>
  170 + <div class="uk-width-7-10 pl5">
  171 + <input type="text" name="mileage" value="{{sch.jhlc}}" required>
  172 + </div>
  173 + </div>
  174 + <div class="uk-grid">
  175 + <div class="uk-width-3-10">
  176 + <div class="uk-form-row">
  177 + <label class="uk-form-label">开始时间</label>
  178 + </div>
  179 + </div>
  180 + <div class="uk-width-7-10 pl5">
  181 + <input type="time" name="startDate" value="{{sch.dfsj}}" required disabled>
  182 + </div>
  183 + </div>
  184 + <div class="uk-grid">
  185 + <div class="uk-width-3-10">
  186 + <div class="uk-form-row">
  187 + <label class="uk-form-label">结束时间</label>
  188 + </div>
  189 + </div>
  190 + <div class="uk-width-7-10 pl5">
  191 + <input type="time" name="endDate" value="{{sch.zdsj}}" required>
  192 + </div>
  193 + </div>
  194 + </script>
  195 +
  196 + <!-- 子任务烂班表单 -->
  197 + <script id="range_turn_child_destroy-temp" type="text/html">
  198 + <input type="hidden" name="schedule.id" value="{{sch.id}}">
  199 + <input type="hidden" value="正常" name="type1">
  200 + <input type="hidden" value="1" name="type2">
  201 + <input type="hidden" name="mileageType" value="service">
  202 + <input type="hidden" name="destroy" value="true">
  203 + <div class="uk-grid">
  204 + <div class="uk-width-3-10">
  205 + <div class="uk-form-row">
  206 + <label class="uk-form-label">起点 </label>
  207 + </div>
  208 + </div>
  209 + <div class="uk-width-7-10 pl5">
  210 + <select name="startStation" required disabled>
  211 + {{each routes as r i}}
  212 + <option value="{{r.stationCode}}">{{r.stationName}}</option>
  213 + {{/each}}
  214 + </select>
  215 + </div>
  216 + </div>
  217 + <div class="uk-grid">
  218 + <div class="uk-width-3-10">
  219 + <div class="uk-form-row">
  220 + <label class="uk-form-label">终点 </label>
  221 + </div>
  222 + </div>
  223 + <div class="uk-width-7-10 pl5">
  224 + <select name="endStation" required class="ct_focus">
  225 + {{each routes as r i}}
  226 + <option value="{{r.stationCode}}" {{if r.stationCode==sch.zdzCode}}selected{{/if}}>
  227 + {{r.stationName}}
  228 + </option>
  229 + {{/each}}
  230 + </select>
  231 + </div>
  232 + </div>
  233 + <div class="uk-grid">
  234 + <div class="uk-width-3-10">
  235 + <div class="uk-form-row">
  236 + <label class="uk-form-label">烂班里程</label>
  237 + </div>
  238 + </div>
  239 + <div class="uk-width-7-10 pl5">
  240 + <input type="text" name="mileage" required>
  241 + </div>
  242 + </div>
  243 + <div class="uk-grid">
  244 + <div class="uk-width-3-10">
  245 + <div class="uk-form-row">
  246 + <label class="uk-form-label">开始时间</label>
  247 + </div>
  248 + </div>
  249 + <div class="uk-width-7-10 pl5">
  250 + <input type="time" name="startDate" required disabled>
  251 + </div>
  252 + </div>
  253 + <div class="uk-grid" style="height: 30px;">
  254 + </div>
  255 + </script>
  256 +
  257 + <div class="ct-bottom-drawer">
  258 + <div class="ct-bottom-drawer-body"></div>
  259 + </div>
  260 +
  261 + <script>
  262 + (function () {
  263 + var modal = '#add-sub-task-range_turn-modal',
  264 + sch, nextSch, stationRoutes, information, timeLocStations;
  265 + var adjustExps = ['配车', '保养', '故障', '肇事', '路阻', '纠纷', '缺人', '客稀', '缺车', '气候', '援外', '吊慢', '抽减', '其他'];
  266 +
  267 + var csf = $('form[curr_service_form]', modal);
  268 + var nsf = $('form[next_service_form]', modal);
  269 + var cdf = $('form[curr_destroy_form]', modal);
  270 + var ndf = $('form[next_destroy_form]', modal);
  271 +
  272 + //掉头站点
  273 + var turnStation, turnStationName;
  274 + $(modal).on('init', function (e, data) {
  275 + sch = data.sch;
  276 + nextSch = gb_schedule_table.getNextSch(sch);
  277 +
  278 + //主任务信息
  279 + $('.main-sch-panel.curr', modal).html(template('range_turn_main_sch-temp', sch));
  280 + $('.main-sch-panel.next', modal).html(template('range_turn_main_sch-temp', nextSch));
  281 +
  282 + //站点路由
  283 + stationRoutes = gb_common.groupBy(gb_data_basic.stationRoutes(sch.xlBm).sort(function (a, b) {
  284 + return a.stationRouteCode - b.stationRouteCode;
  285 + }), 'directions');
  286 +
  287 + var currData = {sch: sch, routes: stationRoutes[sch.xlDir]}
  288 + , nextData = {sch: nextSch, routes: stationRoutes[nextSch.xlDir]};
  289 + //营运1
  290 + csf.html(template('range_turn_child_service-temp', currData));
  291 + disabledField(csf, 'startStation');
  292 + //营运结束时间
  293 + $('[name=endDate]', csf).on('input', synchroDate);
  294 +
  295 + //营运2
  296 + nsf.html(template('range_turn_child_service-temp', nextData));
  297 + disabledField(nsf, 'endDate');
  298 + //烂班1
  299 + cdf.html(template('range_turn_child_destroy-temp', currData));
  300 + disabledField(cdf, 'endStation');
  301 + //烂班2
  302 + ndf.html(template('range_turn_child_destroy-temp', nextData));
  303 + $('[name=startStation]', ndf).val(nextSch.qdzCode);
  304 + //烂班2终点改变
  305 + $('[name=endStation]', ndf).on('change', reCalcSecond);
  306 + //营运2起点改变
  307 + $('[name=startStation]', nsf).on('change', reCalcSecond);
  308 +
  309 + //掉头站点
  310 + var opts = '';
  311 + $.each(currData.routes, function () {
  312 + opts += '<option value="' + this.stationCode + '">' + this.stationName + '</option>';
  313 + });
  314 + $('#turnStationSelect', modal).append(opts);
  315 + opts = '';
  316 + $.each(adjustExps, function () {
  317 + opts += '<option value="' + this + '">' + this + '</option>';
  318 + });
  319 + //掉头原因
  320 + $('#turnReason', modal).append(opts);
  321 +
  322 + //线路标准
  323 + information = gb_data_basic.getLineInformation(sch.xlBm);
  324 + //本地存储的站点耗时
  325 + getLocStationsSpace();
  326 +
  327 + var dataArray = [];
  328 + var fs = $('.sub-task-card form', modal).formValidation({
  329 + framework: 'uikit',
  330 + locale: 'zh_CN'
  331 + });
  332 + fs.on('success.form.fv', function (e) {
  333 + e.preventDefault();
  334 + dataArray.push($.extend($(this).serializeJSON(), getDisabledVal(this),
  335 + {remarks: $('#turnReason', modal).val(), destroyReason: $('#turnReason', modal).val()}));
  336 + $(this).data('valid', true);
  337 +
  338 + if (allValidSuccess()) {
  339 + var i = 0;
  340 + (function () {
  341 + var f = arguments.callee;
  342 + if (i >= dataArray.length) {
  343 + /**
  344 + * 为班次添加备注
  345 + */
  346 + var remarks = '掉头' + $('[name=endDate]', csf).val() + ' 因 ' + $('#turnReason', modal).val() + '在' + $('[name=endStation] option:selected', csf).text() + '掉头';
  347 + gb_schedule_table.addRemarks([sch, nextSch], remarks);
  348 + UIkit.modal(modal).hide();
  349 + $('#schedule-lj_zrw-modal .main-schedule-table').trigger('refresh', {sch: sch});
  350 + return;
  351 + }
  352 + var data = dataArray[i];
  353 + gb_common.$post('/childTask', data, function (rs) {
  354 + notify_succ('子任务添加成功');
  355 + gb_schedule_table.updateSchedule(rs.t);
  356 + i++;
  357 + f();
  358 + });
  359 + })();
  360 + }
  361 + });
  362 +
  363 + //校验不过
  364 + fs.on('err.field.fv', function () {
  365 + $('#submitChildTaskBtn', modal).removeClass('disabled').removeAttr('disabled');
  366 + });
  367 +
  368 + //submit
  369 + $('#submitChildTaskBtn', modal).on('click', function () {
  370 + if ($('#turnReason', modal).val() == '') {
  371 + return notify_err('你必须选择掉头原因!');
  372 + }
  373 +
  374 + $(this).addClass('disabled').attr('disabled', 'disabled');
  375 + dataArray = [];
  376 + fs.data('valid', false);
  377 + fs.formValidation('validate');
  378 + });
  379 +
  380 + //掉头站切换
  381 + $('#turnStationSelect', modal).on('change', function () {
  382 + turnStation = $(this).val();
  383 + turnStationName = $('option:selected', this).text();
  384 + reClac();
  385 + });
  386 + });
  387 +
  388 + function disabledField(f, itemName) {
  389 + $('[name=' + itemName + ']', f).attr('disabled', 'disabled');
  390 + }
  391 +
  392 + function allValidSuccess() {
  393 + var flag = true;
  394 + $('.sub-task-card form:visible', modal).each(function (i, f) {
  395 + if (!$(f).data('valid')) {
  396 + flag = false;
  397 + return false;
  398 + }
  399 + });
  400 + return flag;
  401 + }
  402 +
  403 + //获取表单disabled 项的值
  404 + function getDisabledVal(f) {
  405 + var rs = {};
  406 + $('input,select', f).each(function () {
  407 + if ($(this).attr('disabled')) {
  408 + rs[$(this).attr('name')] = $(this).val();
  409 + }
  410 + });
  411 + return rs;
  412 + }
  413 +
  414 + function reClac() {
  415 + if (!turnStation || turnStation == '')
  416 + return;
  417 +
  418 + var mileage, et, ets;
  419 +
  420 + $('#turnStationSelect', modal).val(turnStation);
  421 + //营运1终点
  422 + $('[name=endStation]', csf).val(turnStation);
  423 + calcFormMileage(csf, sch.xlDir);//里程
  424 + //结束时间
  425 + ets = calcFirstEndDate();
  426 +
  427 + //烂班1起点
  428 + $('[name=startStation]', cdf).val(turnStation);
  429 + calcFormMileage(cdf, sch.xlDir);
  430 + //开始时间
  431 + $('[name=startDate]', cdf).val(ets);
  432 + //烂班2终点
  433 + try {
  434 + $('[name=endStation]', ndf).val(searchParallelStation());
  435 + calcFormMileage(ndf, nextSch.xlDir);
  436 + } catch (e) {
  437 + }
  438 + //开始时间
  439 + $('[name=startDate]', ndf).val(ets);
  440 +
  441 + //营运2起点
  442 + try {
  443 + $('[name=startStation]', nsf).val(searchParallelStation());
  444 + calcFormMileage(nsf, nextSch.xlDir);
  445 + } catch (e) {
  446 + }
  447 + //开始时间
  448 + $('[name=startDate]', nsf).val(ets);
  449 + //结束时间
  450 + calcSecondEndDate();
  451 + }
  452 +
  453 + function calcFirstEndDate() {
  454 + var mileage = parseInt($('[name=mileage]', csf).val());
  455 + var et = sch.dfsjT + (mileage / sch.jhlc * sch.bcsj * 60 * 1000);
  456 + var ets = et > sch.zdsjT ? sch.zdsj : moment(et).format('HH:mm');
  457 + $('[name=endDate]', csf).val(ets);
  458 + return ets;
  459 + }
  460 +
  461 + function calcSecondEndDate() {
  462 + var mileage = parseInt($('[name=mileage]', nsf).val());
  463 + var ets = moment($('[name=startDate]', nsf).val(), 'HH:mm')
  464 + .add(mileage / nextSch.jhlc * nextSch.bcsj * 60, 'seconds')
  465 + .format('HH:mm');
  466 + $('[name=endDate]', nsf).val(ets);
  467 + return ets;
  468 + }
  469 +
  470 + //返回另一个走向对应的站点
  471 + function searchParallelStation() {
  472 + var routes = stationRoutes[nextSch.xlDir]
  473 + , len = routes.length;
  474 +
  475 + for (var i = 0; i < len; i++) {
  476 + if (routes[i].stationName == turnStationName)
  477 + return routes[i].stationCode;
  478 + }
  479 + }
  480 +
  481 + //计算第二个班次
  482 + function reCalcSecond() {
  483 + var code = $(this).val()
  484 + , updown = nextSch.xlDir;
  485 +
  486 + $('[name=endStation]', ndf).val(code);
  487 + calcFormMileage(ndf, updown);
  488 +
  489 + $('[name=startStation]', nsf).val(code);
  490 + calcFormMileage(nsf, updown);
  491 + //结束时间
  492 + calcSecondEndDate();
  493 + }
  494 +
  495 + //同步时间
  496 + function synchroDate() {
  497 + var date = $(this).val();
  498 + $('[name=startDate]', cdf).val(date);
  499 + $('[name=startDate]', ndf).val(date);
  500 + $('[name=startDate]', nsf).val(date);
  501 + calcSecondEndDate();
  502 + }
  503 +
  504 + function calcFormMileage(f, updown) {
  505 + var s = $('[name=startStation]', f).val()
  506 + , e = $('[name=endStation]', f).val();
  507 +
  508 + $('[name=mileage]', f).val(calcMileage(s, e, updown));
  509 + }
  510 +
  511 + function calcMileage(s, e, updown) {
  512 + var mileage = 0, flag, code;
  513 + if (timeLocStations) {
  514 + //空间坐标计算的站距
  515 + $.each(timeLocStations[updown == 0 ? 'up' : 'down'], function () {
  516 + code = this.station['STATION_CODE'];
  517 + if (flag)
  518 + mileage = gb_common.accAdd(mileage, this.toDistanceGl);
  519 + if (code == s)
  520 + flag = true;
  521 + if (code == e)
  522 + return false;
  523 + });
  524 + }
  525 + else {
  526 + //从原始站点路由字段里取值
  527 + $.each(stationRoutes[updown], function () {
  528 + code = this['stationCode'];
  529 + if (flag)
  530 + mileage = gb_common.accAdd(mileage, this.distances);
  531 + if (code == s)
  532 + flag = true;
  533 + if (code == e)
  534 + return false;
  535 + });
  536 + }
  537 + return mileage;
  538 + }
  539 +
  540 + //从本地localStorage获取站间距数据
  541 + function getLocStationsSpace() {
  542 + try {
  543 + timeLocStations = window.localStorage.getItem('control_route_distance_' + sch.xlBm);
  544 + if (timeLocStations)
  545 + timeLocStations = JSON.parse(timeLocStations).stations;
  546 + } catch (e) {
  547 + console.log(e);
  548 + }
  549 + }
  550 +
  551 + //站间距计算后刷新
  552 + $(modal).on('refresh_station_space', function () {
  553 + getLocStationsSpace();
  554 + reClac();
  555 + });
  556 +
  557 + //------ 下抽屉 ------
  558 + $('#betweenStationRangeCalc', modal).on('click', function () {
  559 + var id = $(this).data('drawer-id');
  560 + switchBtmDrawer(id, '/real_control_v2/fragments/line_schedule/context_menu/sub_task/station_route_spacing_chart.html');
  561 + });
  562 +
  563 + var btmDrawer = $('.ct-bottom-drawer', modal);
  564 + //打开事件
  565 + btmDrawer.on('drawer_show', function () {
  566 + var url = $(this).data('url');
  567 + if (!url) {
  568 + alert('无效的地址');
  569 + }
  570 +
  571 + var drawerPanel = $(this).data('name');
  572 + $('.ct-bottom-drawer-body', btmDrawer).load(url, function () {
  573 + $('#' + drawerPanel).trigger('drawer-init', {sch: sch});
  574 + });
  575 + });
  576 +
  577 + function switchBtmDrawer(id, url) {
  578 + if (btmDrawer.hasClass('open') && btmDrawer.data('name') == id) {
  579 + btmDrawer.removeClass('open');
  580 + btmDrawer.removeData('name').removeData('url');
  581 + }
  582 + else {
  583 + btmDrawer.addClass('open');
  584 + btmDrawer.data('name', id).data('url', url).trigger('drawer_show');
  585 + }
  586 + }
  587 + })();
  588 + </script>
589 589 </div>
590 590 \ No newline at end of file
... ...
src/main/resources/static/real_control_v2/js/data/data_basic.js
... ... @@ -135,6 +135,9 @@ var gb_data_basic = (function () {
135 135 return nbbm2deviceMap;
136 136 },
137 137 getLineInformation: getLineInformation,
  138 + allInformations: function () {
  139 + return lineInformations;
  140 + },
138 141 stationRoutes: function (lineCode) {
139 142 return stationRoutes[lineCode]
140 143 },
... ...
src/main/resources/static/real_control_v2/js/data/data_gps.js
... ... @@ -3,7 +3,7 @@
3 3 var gb_data_gps = (function() {
4 4  
5 5 //fixed time refresh delay
6   - var delay = 1000 * 5;
  6 + var delay = 1000 * 7;
7 7 //deviceId ——> gps
8 8 var realData = {};
9 9 //refresh after callback
... ... @@ -38,11 +38,13 @@ var gb_data_gps = (function() {
38 38 $.each(rs, function() {
39 39 old = realData[this.deviceId];
40 40 if (old) {
41   - if (old.timestamp < this.timestamp)
  41 + if (this.timestamp > old.timestamp){
42 42 if (old.upDown != this.upDown)
43 43 upDownChange.push(this);
44 44 else
45 45 upArr.push(this);
  46 + }
  47 +
46 48 } else
47 49 addArr.push(this);
48 50  
... ... @@ -55,8 +57,6 @@ var gb_data_gps = (function() {
55 57  
56 58 //时间格式化
57 59 this.dateStr = moment(this.timestamp).format('YYYY-MM-DD HH:mm:ss');
58   - //异常检测
59   - gb_gps_abnormal.check(this);
60 60 realData[this.deviceId] = this;
61 61 });
62 62  
... ...
src/main/resources/static/real_control_v2/js/data/gps_abnormal.js
1   -/** gps 信号异常状态,无效 | 越界 | 超速 */
  1 +/** gps 信号异常状态,无效 | 越界 | 超速
  2 + *
  3 + *
  4 + * 前端计算略微有点卡顿, 交由后端计算
  5 + * */
2 6  
3 7 var gb_gps_abnormal = (function () {
4 8  
... ... @@ -11,7 +15,12 @@ var gb_gps_abnormal = (function () {
11 15 };
12 16  
13 17 //越界
  18 + var threshold = 120;
14 19 var gpsOutOfBounds = function (gps) {
  20 + //进场班次不管
  21 + if (gps.sch && gps.sch.bcType == 'in')
  22 + return;
  23 +
15 24 var roads = allRoads[gps.lineId + '_' + gps.upDown];
16 25 if (!roads)
17 26 return;
... ... @@ -25,15 +34,19 @@ var gb_gps_abnormal = (function () {
25 34 });
26 35  
27 36 //越界阈值 120米
28   - var threshold = 120;
29   - if (gps.sch && gps.sch.bcType == 'in')
30   - return;
31   -
32 37 if (min > threshold) {
33 38 gps.abnormal = 'outBounds';
34 39 gps.outBoundsDistance = min;
  40 + return true;
35 41 }
36   - //console.log('最短距离', min, gps.nbbm);
  42 + };
  43 +
  44 +
  45 + //线路限速数据
  46 + var lineSpeedLimit = {};
  47 + //超速
  48 + var overspeed = function (gps) {
  49 +
37 50 };
38 51  
39 52 /**
... ... @@ -56,6 +69,14 @@ var gb_gps_abnormal = (function () {
56 69 //按线路_走向 分组数据
57 70 allRoads = groupByLineAndUpdown(list);
58 71 });
  72 +
  73 + //线路限速数据
  74 + var infos = gb_data_basic.allInformations();
  75 + for (var lineCode in infos) {
  76 + lineSpeedLimit[lineCode] = infos[lineCode].speedLimit == null ? 70 : infos[lineCode].speedLimit;
  77 + }
  78 +
  79 + console.log('lineSpeedLimit', lineSpeedLimit);
59 80 };
60 81  
61 82 function minDistanceFromRoad(pos, gps) {
... ... @@ -69,6 +90,9 @@ var gb_gps_abnormal = (function () {
69 90  
70 91 if (!min || min > distance)
71 92 min = distance;
  93 +
  94 + if (distance <= threshold)
  95 + return threshold;
72 96 }
73 97  
74 98 return min;
... ... @@ -104,10 +128,11 @@ var gb_gps_abnormal = (function () {
104 128 return {
105 129 initData: initData,
106 130 check: function (gps) {
107   - if (!allRoads) {
  131 + if (!allRoads || gps.instation == 2) {
108 132 return;
109 133 }
110 134  
  135 + //越界判定
111 136 gpsOutOfBounds(gps);
112 137 }
113 138 }
... ...
src/main/resources/static/real_control_v2/js/utils/svg_chart.js
... ... @@ -183,7 +183,7 @@ var gb_svg_chart = (function () {
183 183 var circle = get_circle(gps.stopNo + '_' + gps.upDown, svg);
184 184 if (!circle) return -100;
185 185  
186   - return circle.attr('cx') - 17.5;
  186 + return circle.attr('cx') - 16.5;
187 187 },
188 188 gy = function (gps, svg) {
189 189 var circle = get_circle(gps.stopNo + '_' + gps.upDown, svg);
... ... @@ -322,14 +322,14 @@ var gb_svg_chart = (function () {
322 322 'merge-item': true
323 323 });
324 324 //merge rect
325   - mergerG.append('rect').attr('x', x - 12)
  325 + mergerG.append('rect').attr('x', x - 11)
326 326 .attr('y', function () {
327   - return isDown ? y + 7 : y - 32;
  327 + return isDown ? y + 8 : y - 31;
328 328 });
329 329 //merge text
330 330 var len = gpsArr.length;
331 331 mergerG.append('text').text(len)
332   - .attr('x', x - ((len + '').length * 4))
  332 + .attr('x', x - ((len + '').length * 4.5))
333 333 .attr('y', isDown ? y + 24 : y - 14);
334 334 };
335 335  
... ...
src/main/resources/static/real_control_v2/js/utils/svg_chart_tooltip.js
... ... @@ -13,7 +13,6 @@ var gb_svg_tooltip = (function () {
13 13 if (rect.attr('aria-describedby'))
14 14 return;
15 15 var gps = gb_data_gps.findOne($(this).attr('_id').split('_')[1]);
16   - console.log('gps', gps);
17 16 $(this).qtip({
18 17 show: {
19 18 ready: true,
... ...