Commit 5bc08957348fc01ab495cc9d94da228186f3d60a

Authored by 徐烜
1 parent 2298d97f

Update

src/main/java/com/bsth/entity/schedule/rule/ScheduleRule1Flat.java
1 package com.bsth.entity.schedule.rule; 1 package com.bsth.entity.schedule.rule;
2 2
3 import com.bsth.entity.Line; 3 import com.bsth.entity.Line;
  4 +import com.bsth.entity.schedule.BEntity;
4 import com.bsth.entity.schedule.CarConfigInfo; 5 import com.bsth.entity.schedule.CarConfigInfo;
5 -import com.bsth.entity.sys.SysUser;  
6 6
7 import javax.persistence.*; 7 import javax.persistence.*;
8 import javax.validation.constraints.NotNull; 8 import javax.validation.constraints.NotNull;
@@ -35,7 +35,7 @@ import java.util.Date; @@ -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 /** 主键Id */ 39 /** 主键Id */
40 @Id 40 @Id
41 @GeneratedValue 41 @GeneratedValue
@@ -74,19 +74,6 @@ public class ScheduleRule1Flat { @@ -74,19 +74,6 @@ public class ScheduleRule1Flat {
74 /** 翻班格式(TODO:这个用在车子上的,暂时不管)*/ 74 /** 翻班格式(TODO:这个用在车子上的,暂时不管)*/
75 private String fbgs; 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 public Long getId() { 77 public Long getId() {
91 return id; 78 return id;
92 } 79 }
@@ -175,35 +162,4 @@ public class ScheduleRule1Flat { @@ -175,35 +162,4 @@ public class ScheduleRule1Flat {
175 this.fbgs = fbgs; 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/service/schedule/impl/ScheduleRule1FlatServiceImpl.java
@@ -29,6 +29,34 @@ public class ScheduleRule1FlatServiceImpl extends BServiceImpl<ScheduleRule1Flat @@ -29,6 +29,34 @@ public class ScheduleRule1FlatServiceImpl extends BServiceImpl<ScheduleRule1Flat
29 private DataToolsProperties dataToolsProperties; 29 private DataToolsProperties dataToolsProperties;
30 30
31 @Override 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 public File exportData(Map<String, Object> params) throws ScheduleException { 60 public File exportData(Map<String, Object> params) throws ScheduleException {
33 try { 61 try {
34 LOGGER.info("//---------------- 导出排版规则信息 start... ----------------//"); 62 LOGGER.info("//---------------- 导出排版规则信息 start... ----------------//");
src/main/java/com/bsth/service/schedule/utils/DataToolsProperties.java
@@ -45,7 +45,7 @@ public class DataToolsProperties { @@ -45,7 +45,7 @@ public class DataToolsProperties {
45 private String kvarsDbdname; 45 private String kvarsDbdname;
46 46
47 /**------------------------- 导入数据ktr --------------------------*/ 47 /**------------------------- 导入数据ktr --------------------------*/
48 - /** 测试temp的ktr转换文件 */ 48 + /** 车辆信息导入ktr转换 */
49 @NotNull 49 @NotNull
50 private String carsDatainputktr; 50 private String carsDatainputktr;
51 /** 人员信息导入ktr转换 */ 51 /** 人员信息导入ktr转换 */
@@ -66,12 +66,16 @@ public class DataToolsProperties { @@ -66,12 +66,16 @@ public class DataToolsProperties {
66 /** 时刻表明细信息导入(元数据) */ 66 /** 时刻表明细信息导入(元数据) */
67 @NotNull 67 @NotNull
68 private String ttinfodetailMetadatainputktr; 68 private String ttinfodetailMetadatainputktr;
69 - /** 时刻表明细编辑用数据(TODO:之后要换成元数据形式输入) */ 69 + /** 时刻表明细编辑用数据 */
70 @NotNull 70 @NotNull
71 private String ttinfodetailForeditktr; 71 private String ttinfodetailForeditktr;
72 /** 时刻表明细信息导入 */ 72 /** 时刻表明细信息导入 */
73 @NotNull 73 @NotNull
74 private String ttinfodetailDatainputktr; 74 private String ttinfodetailDatainputktr;
  75 + /** 排班规则信息导入 */
  76 + @NotNull
  77 + private String scheduleruleDatainputktr;
  78 +
75 79
76 /**------------------------- 导出数据ktr --------------------------*/ 80 /**------------------------- 导出数据ktr --------------------------*/
77 /** 车辆信息导出ktr转换 */ 81 /** 车辆信息导出ktr转换 */
@@ -196,6 +200,14 @@ public class DataToolsProperties { @@ -196,6 +200,14 @@ public class DataToolsProperties {
196 this.ttinfodetailDatainputktr = ttinfodetailDatainputktr; 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 public String getKettleProperties() { 211 public String getKettleProperties() {
200 return kettleProperties; 212 return kettleProperties;
201 } 213 }
src/main/resources/datatools/config-dev.properties
@@ -31,7 +31,7 @@ datatools.guideboards_datainputktr=/datatools/ktrs/guideboardDataInput.ktr @@ -31,7 +31,7 @@ datatools.guideboards_datainputktr=/datatools/ktrs/guideboardDataInput.ktr
31 datatools.ttinfo_datainputktr=/datatools/ktrs/ttinfoDataInput.ktr 31 datatools.ttinfo_datainputktr=/datatools/ktrs/ttinfoDataInput.ktr
32 # 时刻表明细信息导入(元数据) 32 # 时刻表明细信息导入(元数据)
33 datatools.ttinfodetail_metadatainputktr=/datatools/ktrs/ttinfodetailMetaData.ktr 33 datatools.ttinfodetail_metadatainputktr=/datatools/ktrs/ttinfodetailMetaData.ktr
34 -# 时刻表明细编辑用数据(TODO:之后要换成元数据形式输入) 34 +# 时刻表明细编辑用数据
35 datatools.ttinfodetail_foreditktr=/datatools/ktrs/ttinfodetailoutputforedit.ktr 35 datatools.ttinfodetail_foreditktr=/datatools/ktrs/ttinfodetailoutputforedit.ktr
36 # 时刻表明细信息导入 36 # 时刻表明细信息导入
37 datatools.ttinfodetail_datainputktr=/datatools/ktrs/ttinfodetailDataInput.ktr 37 datatools.ttinfodetail_datainputktr=/datatools/ktrs/ttinfodetailDataInput.ktr
@@ -41,8 +41,8 @@ datatools.carsconfig_datainputktr=/datatools/ktrs/carsConfigDataInput.ktr @@ -41,8 +41,8 @@ datatools.carsconfig_datainputktr=/datatools/ktrs/carsConfigDataInput.ktr
41 # 人员配置信息导入 41 # 人员配置信息导入
42 datatools.employeesconfig_datainputktr=/datatools/ktrs/employeesConfigDataInput.ktr 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 # 4、数据导出配置信息 47 # 4、数据导出配置信息
48 # 导出数据文件目录配置(根据不同的环境需要修正) 48 # 导出数据文件目录配置(根据不同的环境需要修正)
src/main/resources/datatools/config-prod.properties
@@ -32,7 +32,7 @@ datatools.guideboards_datainputktr=/datatools/ktrs/guideboardDataInput.ktr @@ -32,7 +32,7 @@ datatools.guideboards_datainputktr=/datatools/ktrs/guideboardDataInput.ktr
32 datatools.ttinfo_datainputktr=/datatools/ktrs/ttinfoDataInput.ktr 32 datatools.ttinfo_datainputktr=/datatools/ktrs/ttinfoDataInput.ktr
33 # 时刻表明细信息导入(元数据) 33 # 时刻表明细信息导入(元数据)
34 datatools.ttinfodetail_metadatainputktr=/datatools/ktrs/ttinfodetailMetaData.ktr 34 datatools.ttinfodetail_metadatainputktr=/datatools/ktrs/ttinfodetailMetaData.ktr
35 -# 时刻表明细编辑用数据(TODO:之后要换成元数据形式输入) 35 +# 时刻表明细编辑用数据
36 datatools.ttinfodetail_foreditktr=/datatools/ktrs/ttinfodetailoutputforedit.ktr 36 datatools.ttinfodetail_foreditktr=/datatools/ktrs/ttinfodetailoutputforedit.ktr
37 # 时刻表明细信息导入 37 # 时刻表明细信息导入
38 datatools.ttinfodetail_datainputktr=/datatools/ktrs/ttinfodetailDataInput.ktr 38 datatools.ttinfodetail_datainputktr=/datatools/ktrs/ttinfodetailDataInput.ktr
@@ -42,8 +42,8 @@ datatools.carsconfig_datainputktr=/datatools/ktrs/carsConfigDataInput.ktr @@ -42,8 +42,8 @@ datatools.carsconfig_datainputktr=/datatools/ktrs/carsConfigDataInput.ktr
42 # 人员配置信息导入 42 # 人员配置信息导入
43 datatools.employeesconfig_datainputktr=/datatools/ktrs/employeesConfigDataInput.ktr 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 # 4、数据导出配置信息 48 # 4、数据导出配置信息
49 # 导出数据文件目录配置(根据不同的环境需要修正) 49 # 导出数据文件目录配置(根据不同的环境需要修正)
src/main/resources/datatools/ktrs/scheduleRuleDataInput.ktr
@@ -6,8 +6,19 @@ @@ -6,8 +6,19 @@
6 <extended_description/> 6 <extended_description/>
7 <trans_version/> 7 <trans_version/>
8 <trans_type>Normal</trans_type> 8 <trans_type>Normal</trans_type>
  9 + <trans_status>0</trans_status>
9 <directory>&#x2f;</directory> 10 <directory>&#x2f;</directory>
10 <parameters> 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>
11 </parameters> 22 </parameters>
12 <log> 23 <log>
13 <trans-log-table><connection/> 24 <trans-log-table><connection/>
@@ -73,6 +84,27 @@ @@ -73,6 +84,27 @@
73 <is_key_private>N</is_key_private> 84 <is_key_private>N</is_key_private>
74 </info> 85 </info>
75 <notepads> 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>
76 </notepads> 108 </notepads>
77 <connection> 109 <connection>
78 <name>bus_control_variable</name> 110 <name>bus_control_variable</name>
@@ -236,14 +268,32 @@ @@ -236,14 +268,32 @@
236 </attributes> 268 </attributes>
237 </connection> 269 </connection>
238 <order> 270 <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> 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>
243 </order> 293 </order>
244 <step> 294 <step>
245 - <name>&#x81ea;&#x5b9a;&#x4e49;&#x5e38;&#x91cf;&#x6570;&#x636e;</name>  
246 - <type>DataGrid</type> 295 + <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name>
  296 + <type>ExcelInput</type>
247 <description/> 297 <description/>
248 <distribute>Y</distribute> 298 <distribute>Y</distribute>
249 <custom_distribution/> 299 <custom_distribution/>
@@ -252,31 +302,174 @@ @@ -252,31 +302,174 @@
252 <method>none</method> 302 <method>none</method>
253 <schema_name/> 303 <schema_name/>
254 </partitioning> 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>
255 <fields> 327 <fields>
256 <field> 328 <field>
257 - <name>line</name> 329 + <name>&#x7ebf;&#x8def;</name>
258 <type>String</type> 330 <type>String</type>
  331 + <length>-1</length>
  332 + <precision>-1</precision>
  333 + <trim_type>none</trim_type>
  334 + <repeat>N</repeat>
259 <format/> 335 <format/>
260 <currency/> 336 <currency/>
261 <decimal/> 337 <decimal/>
262 <group/> 338 <group/>
  339 + </field>
  340 + <field>
  341 + <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
  342 + <type>String</type>
263 <length>-1</length> 343 <length>-1</length>
264 <precision>-1</precision> 344 <precision>-1</precision>
265 - <set_empty_string>N</set_empty_string> 345 + <trim_type>none</trim_type>
  346 + <repeat>N</repeat>
  347 + <format/>
  348 + <currency/>
  349 + <decimal/>
  350 + <group/>
266 </field> 351 </field>
267 <field> 352 <field>
268 - <name>carconfigids</name> 353 + <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
269 <type>String</type> 354 <type>String</type>
  355 + <length>-1</length>
  356 + <precision>-1</precision>
  357 + <trim_type>none</trim_type>
  358 + <repeat>N</repeat>
270 <format/> 359 <format/>
271 <currency/> 360 <currency/>
272 <decimal/> 361 <decimal/>
273 <group/> 362 <group/>
  363 + </field>
  364 + <field>
  365 + <name>&#x8d77;&#x59cb;&#x8def;&#x724c;</name>
  366 + <type>String</type>
274 <length>-1</length> 367 <length>-1</length>
275 <precision>-1</precision> 368 <precision>-1</precision>
276 - <set_empty_string>N</set_empty_string> 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/>
277 </field> 411 </field>
278 <field> 412 <field>
279 - <name>employeeconfigids</name> 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>
280 <type>String</type> 473 <type>String</type>
281 <format/> 474 <format/>
282 <currency/> 475 <currency/>
@@ -284,10 +477,11 @@ @@ -284,10 +477,11 @@
284 <group/> 477 <group/>
285 <length>-1</length> 478 <length>-1</length>
286 <precision>-1</precision> 479 <precision>-1</precision>
287 - <set_empty_string>N</set_empty_string> 480 + <trim_type>none</trim_type>
288 </field> 481 </field>
289 <field> 482 <field>
290 - <name>lpids</name> 483 + <name>erroroutputdir_</name>
  484 + <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
291 <type>String</type> 485 <type>String</type>
292 <format/> 486 <format/>
293 <currency/> 487 <currency/>
@@ -295,22 +489,19 @@ @@ -295,22 +489,19 @@
295 <group/> 489 <group/>
296 <length>-1</length> 490 <length>-1</length>
297 <precision>-1</precision> 491 <precision>-1</precision>
298 - <set_empty_string>N</set_empty_string> 492 + <trim_type>none</trim_type>
299 </field> 493 </field>
300 </fields> 494 </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/> 495 <cluster_schema/>
305 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 496 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
306 - <xloc>200</xloc>  
307 - <yloc>100</yloc> 497 + <xloc>53</xloc>
  498 + <yloc>23</yloc>
308 <draw>Y</draw> 499 <draw>Y</draw>
309 </GUI> 500 </GUI>
310 </step> 501 </step>
311 502
312 <step> 503 <step>
313 - <name>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</name> 504 + <name>&#x62c6;&#x5206;&#x8def;&#x724c;&#x8303;&#x56f4;</name>
314 <type>SplitFieldToRows3</type> 505 <type>SplitFieldToRows3</type>
315 <description/> 506 <description/>
316 <distribute>Y</distribute> 507 <distribute>Y</distribute>
@@ -320,23 +511,158 @@ @@ -320,23 +511,158 @@
320 <method>none</method> 511 <method>none</method>
321 <schema_name/> 512 <schema_name/>
322 </partitioning> 513 </partitioning>
323 - <splitfield>employeeconfigids</splitfield> 514 + <splitfield>&#x8def;&#x724c;&#x8303;&#x56f4;</splitfield>
324 <delimiter>,</delimiter> 515 <delimiter>,</delimiter>
325 - <newfield>ecid</newfield> 516 + <newfield>lpname</newfield>
326 <rownum>N</rownum> 517 <rownum>N</rownum>
327 <rownum_field/> 518 <rownum_field/>
328 <resetrownumber>Y</resetrownumber> 519 <resetrownumber>Y</resetrownumber>
329 <delimiter_is_regex>N</delimiter_is_regex> 520 <delimiter_is_regex>N</delimiter_is_regex>
330 <cluster_schema/> 521 <cluster_schema/>
331 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 522 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
332 - <xloc>400</xloc>  
333 - <yloc>100</yloc> 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>
334 <draw>Y</draw> 660 <draw>Y</draw>
335 </GUI> 661 </GUI>
336 </step> 662 </step>
337 663
338 <step> 664 <step>
339 - <name>&#x5206;&#x7ec4;</name> 665 + <name>&#x5206;&#x7ec4;&#x5408;&#x5e76;&#x8def;&#x724c;id</name>
340 <type>GroupBy</type> 666 <type>GroupBy</type>
341 <description/> 667 <description/>
342 <distribute>Y</distribute> 668 <distribute>Y</distribute>
@@ -356,30 +682,133 @@ @@ -356,30 +682,133 @@
356 <give_back_row>N</give_back_row> 682 <give_back_row>N</give_back_row>
357 <group> 683 <group>
358 <field> 684 <field>
359 - <name>line</name> 685 + <name>xlid</name>
360 </field> 686 </field>
361 <field> 687 <field>
362 - <name>lpids</name> 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>
363 </field> 710 </field>
364 </group> 711 </group>
365 <fields> 712 <fields>
366 <field> 713 <field>
367 - <aggregate>ecid2</aggregate>  
368 - <subject>ecid</subject> 714 + <aggregate>lpids</aggregate>
  715 + <subject>lpid</subject>
369 <type>CONCAT_STRING</type> 716 <type>CONCAT_STRING</type>
370 <valuefield>,</valuefield> 717 <valuefield>,</valuefield>
371 </field> 718 </field>
372 </fields> 719 </fields>
373 <cluster_schema/> 720 <cluster_schema/>
374 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 721 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
375 - <xloc>397</xloc>  
376 - <yloc>185</yloc> 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>
377 <draw>Y</draw> 806 <draw>Y</draw>
378 </GUI> 807 </GUI>
379 </step> 808 </step>
380 809
381 <step> 810 <step>
382 - <name>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</name> 811 + <name>&#x62c6;&#x5206;&#x4eba;&#x5458;&#x8303;&#x56f4;</name>
383 <type>SplitFieldToRows3</type> 812 <type>SplitFieldToRows3</type>
384 <description/> 813 <description/>
385 <distribute>Y</distribute> 814 <distribute>Y</distribute>
@@ -389,23 +818,463 @@ @@ -389,23 +818,463 @@
389 <method>none</method> 818 <method>none</method>
390 <schema_name/> 819 <schema_name/>
391 </partitioning> 820 </partitioning>
392 - <splitfield>lpids</splitfield> 821 + <splitfield>&#x4eba;&#x5458;&#x8303;&#x56f4;</splitfield>
393 <delimiter>,</delimiter> 822 <delimiter>,</delimiter>
394 - <newfield>lpid</newfield> 823 + <newfield>dbbm</newfield>
395 <rownum>N</rownum> 824 <rownum>N</rownum>
396 <rownum_field/> 825 <rownum_field/>
397 <resetrownumber>Y</resetrownumber> 826 <resetrownumber>Y</resetrownumber>
398 <delimiter_is_regex>N</delimiter_is_regex> 827 <delimiter_is_regex>N</delimiter_is_regex>
399 <cluster_schema/> 828 <cluster_schema/>
400 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 829 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
401 - <xloc>546</xloc> 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>
402 <yloc>101</yloc> 933 <yloc>101</yloc>
403 <draw>Y</draw> 934 <draw>Y</draw>
404 </GUI> 935 </GUI>
405 </step> 936 </step>
406 937
407 <step> 938 <step>
408 - <name>&#x5206;&#x7ec4; 2</name> 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>
409 <type>GroupBy</type> 1278 <type>GroupBy</type>
410 <description/> 1279 <description/>
411 <distribute>Y</distribute> 1280 <distribute>Y</distribute>
@@ -425,29 +1294,336 @@ @@ -425,29 +1294,336 @@
425 <give_back_row>N</give_back_row> 1294 <give_back_row>N</give_back_row>
426 <group> 1295 <group>
427 <field> 1296 <field>
428 - <name>line</name> 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>
429 </field> 1316 </field>
430 <field> 1317 <field>
431 - <name>ecid2</name> 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>
432 </field> 1325 </field>
433 </group> 1326 </group>
434 <fields> 1327 <fields>
435 <field> 1328 <field>
436 - <aggregate>lpid2</aggregate>  
437 - <subject>lpid</subject> 1329 + <aggregate>rycids</aggregate>
  1330 + <subject>rycid</subject>
438 <type>CONCAT_STRING</type> 1331 <type>CONCAT_STRING</type>
439 <valuefield>,</valuefield> 1332 <valuefield>,</valuefield>
440 </field> 1333 </field>
441 </fields> 1334 </fields>
442 <cluster_schema/> 1335 <cluster_schema/>
443 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1336 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
444 - <xloc>548</xloc>  
445 - <yloc>185</yloc> 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>
446 <draw>Y</draw> 1610 <draw>Y</draw>
447 </GUI> 1611 </GUI>
448 </step> 1612 </step>
449 1613
450 <step_error_handling> 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>
451 </step_error_handling> 1627 </step_error_handling>
452 <slave-step-copy-partition-distribution> 1628 <slave-step-copy-partition-distribution>
453 </slave-step-copy-partition-distribution> 1629 </slave-step-copy-partition-distribution>
src/main/resources/datatools/ktrs/scheduleRuleDataOutput.ktr
@@ -75,7 +75,7 @@ @@ -75,7 +75,7 @@
75 <created_date>2017&#x2f;01&#x2f;09 13&#x3a;35&#x3a;19.384</created_date> 75 <created_date>2017&#x2f;01&#x2f;09 13&#x3a;35&#x3a;19.384</created_date>
76 <modified_user>-</modified_user> 76 <modified_user>-</modified_user>
77 <modified_date>2017&#x2f;01&#x2f;09 13&#x3a;35&#x3a;19.384</modified_date> 77 <modified_date>2017&#x2f;01&#x2f;09 13&#x3a;35&#x3a;19.384</modified_date>
78 - <key_for_session_key/> 78 + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
79 <is_key_private>N</is_key_private> 79 <is_key_private>N</is_key_private>
80 </info> 80 </info>
81 <notepads> 81 <notepads>
@@ -267,38 +267,13 @@ @@ -267,38 +267,13 @@
267 <hop> <from>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</from><to>&#x8f66;&#x8f86;&#x914d;&#x7f6e;&#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> 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> 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> 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>
271 <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>Excel&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop> 272 <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>Excel&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
272 </order> 273 </order>
273 <step> 274 <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> 275 + <name>Excel&#x8f93;&#x51fa;</name>
  276 + <type>ExcelOutput</type>
302 <description/> 277 <description/>
303 <distribute>Y</distribute> 278 <distribute>Y</distribute>
304 <custom_distribution/> 279 <custom_distribution/>
@@ -307,33 +282,98 @@ @@ -307,33 +282,98 @@
307 <method>none</method> 282 <method>none</method>
308 <schema_name/> 283 <schema_name/>
309 </partitioning> 284 </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/> 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>
330 <type>String</type> 317 <type>String</type>
331 - </value>  
332 - </lookup> 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>
333 <cluster_schema/> 373 <cluster_schema/>
334 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 374 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
335 - <xloc>329</xloc>  
336 - <yloc>65</yloc> 375 + <xloc>707</xloc>
  376 + <yloc>348</yloc>
337 <draw>Y</draw> 377 <draw>Y</draw>
338 </GUI> 378 </GUI>
339 </step> 379 </step>
@@ -384,14 +424,105 @@ @@ -384,14 +424,105 @@
384 </field> <select_unspecified>N</select_unspecified> 424 </field> <select_unspecified>N</select_unspecified>
385 </fields> <cluster_schema/> 425 </fields> <cluster_schema/>
386 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 426 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
387 - <xloc>706</xloc>  
388 - <yloc>163</yloc> 427 + <xloc>705</xloc>
  428 + <yloc>270</yloc>
389 <draw>Y</draw> 429 <draw>Y</draw>
390 </GUI> 430 </GUI>
391 </step> 431 </step>
392 432
393 <step> 433 <step>
394 - <name>&#x8f66;&#x8f86;&#x914d;&#x7f6e;&#x67e5;&#x8be2;</name> 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>
395 <type>DBLookup</type> 526 <type>DBLookup</type>
396 <description/> 527 <description/>
397 <distribute>Y</distribute> 528 <distribute>Y</distribute>
@@ -402,32 +533,32 @@ @@ -402,32 +533,32 @@
402 <schema_name/> 533 <schema_name/>
403 </partitioning> 534 </partitioning>
404 <connection>bus_control_variable</connection> 535 <connection>bus_control_variable</connection>
405 - <cache>N</cache>  
406 - <cache_load_all>N</cache_load_all> 536 + <cache>Y</cache>
  537 + <cache_load_all>Y</cache_load_all>
407 <cache_size>0</cache_size> 538 <cache_size>0</cache_size>
408 <lookup> 539 <lookup>
409 <schema/> 540 <schema/>
410 - <table>bsth_c_s_ccinfo</table> 541 + <table>bsth_c_line</table>
411 <orderby/> 542 <orderby/>
412 <fail_on_multiple>N</fail_on_multiple> 543 <fail_on_multiple>N</fail_on_multiple>
413 <eat_row_on_failure>N</eat_row_on_failure> 544 <eat_row_on_failure>N</eat_row_on_failure>
414 <key> 545 <key>
415 - <name>car_config_info</name> 546 + <name>xl</name>
416 <field>id</field> 547 <field>id</field>
417 <condition>&#x3d;</condition> 548 <condition>&#x3d;</condition>
418 <name2/> 549 <name2/>
419 </key> 550 </key>
420 <value> 551 <value>
421 - <name>cl</name>  
422 - <rename>clid</rename> 552 + <name>name</name>
  553 + <rename>xlmc</rename>
423 <default/> 554 <default/>
424 - <type>Integer</type> 555 + <type>String</type>
425 </value> 556 </value>
426 </lookup> 557 </lookup>
427 <cluster_schema/> 558 <cluster_schema/>
428 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 559 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
429 - <xloc>471</xloc>  
430 - <yloc>64</yloc> 560 + <xloc>329</xloc>
  561 + <yloc>65</yloc>
431 <draw>Y</draw> 562 <draw>Y</draw>
432 </GUI> 563 </GUI>
433 </step> 564 </step>
@@ -475,8 +606,8 @@ @@ -475,8 +606,8 @@
475 </step> 606 </step>
476 607
477 <step> 608 <step>
478 - <name>&#x683c;&#x5f0f;&#x5316;&#x65e5;&#x671f;</name>  
479 - <type>SelectValues</type> 609 + <name>&#x8f66;&#x8f86;&#x914d;&#x7f6e;&#x67e5;&#x8be2;</name>
  610 + <type>DBLookup</type>
480 <description/> 611 <description/>
481 <distribute>Y</distribute> 612 <distribute>Y</distribute>
482 <custom_distribution/> 613 <custom_distribution/>
@@ -485,63 +616,40 @@ @@ -485,63 +616,40 @@
485 <method>none</method> 616 <method>none</method>
486 <schema_name/> 617 <schema_name/>
487 </partitioning> 618 </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/> 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/>
535 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 643 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
536 - <xloc>705</xloc>  
537 - <yloc>65</yloc> 644 + <xloc>471</xloc>
  645 + <yloc>64</yloc>
538 <draw>Y</draw> 646 <draw>Y</draw>
539 </GUI> 647 </GUI>
540 </step> 648 </step>
541 649
542 <step> 650 <step>
543 - <name>Excel&#x8f93;&#x51fa;</name>  
544 - <type>ExcelOutput</type> 651 + <name>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</name>
  652 + <type>SortRows</type>
545 <description/> 653 <description/>
546 <distribute>Y</distribute> 654 <distribute>Y</distribute>
547 <custom_distribution/> 655 <custom_distribution/>
@@ -550,98 +658,49 @@ @@ -550,98 +658,49 @@
550 <method>none</method> 658 <method>none</method>
551 <schema_name/> 659 <schema_name/>
552 </partitioning> 660 </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> 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>
582 <fields> 668 <fields>
583 <field> 669 <field>
584 - <name>&#x7ebf;&#x8def;</name>  
585 - <type>String</type>  
586 - <format/> 670 + <name>xlmc</name>
  671 + <ascending>Y</ascending>
  672 + <case_sensitive>N</case_sensitive>
  673 + <presorted>N</presorted>
587 </field> 674 </field>
588 <field> 675 <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/> 676 + <name>zbh</name>
  677 + <ascending>Y</ascending>
  678 + <case_sensitive>N</case_sensitive>
  679 + <presorted>N</presorted>
597 </field> 680 </field>
598 <field> 681 <field>
599 - <name>&#x8d77;&#x59cb;&#x8def;&#x724c;</name>  
600 - <type>String</type>  
601 - <format/> 682 + <name>qyrq</name>
  683 + <ascending>Y</ascending>
  684 + <case_sensitive>N</case_sensitive>
  685 + <presorted>N</presorted>
602 </field> 686 </field>
603 <field> 687 <field>
604 - <name>&#x8def;&#x724c;&#x8303;&#x56f4;</name>  
605 - <type>String</type>  
606 - <format/> 688 + <name>lp_names</name>
  689 + <ascending>Y</ascending>
  690 + <case_sensitive>N</case_sensitive>
  691 + <presorted>N</presorted>
607 </field> 692 </field>
608 <field> 693 <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/> 694 + <name>ry_dbbms</name>
  695 + <ascending>Y</ascending>
  696 + <case_sensitive>N</case_sensitive>
  697 + <presorted>N</presorted>
622 </field> 698 </field>
623 </fields> 699 </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/> 700 <cluster_schema/>
642 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 701 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
643 - <xloc>707</xloc>  
644 - <yloc>259</yloc> 702 + <xloc>705</xloc>
  703 + <yloc>177</yloc>
645 <draw>Y</draw> 704 <draw>Y</draw>
646 </GUI> 705 </GUI>
647 </step> 706 </step>
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,7 +455,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;ScheduleRuleManageService_g&#39;, [&#39;$resource
455 return { 455 return {
456 rest: $resource( 456 rest: $resource(
457 '/sr1fc/:id', 457 '/sr1fc/:id',
458 - {order: 'createDate', direction: 'DESC', id: '@id_route'}, 458 + {order: 'xl.id,updateDate', direction: 'ASC,DESC', id: '@id'},
459 { 459 {
460 list: { 460 list: {
461 method: 'GET', 461 method: 'GET',
src/main/resources/static/pages/scheduleApp/module/common/prj-common-ui-route-state.js
@@ -889,6 +889,7 @@ ScheduleApp.config([ @@ -889,6 +889,7 @@ ScheduleApp.config([
889 files: [ 889 files: [
890 "assets/bower_components/angular-ui-select/dist/select.min.css", 890 "assets/bower_components/angular-ui-select/dist/select.min.css",
891 "assets/bower_components/angular-ui-select/dist/select.min.js", 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 "pages/scheduleApp/module/core/scheduleRuleManage/module.js" 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 \ No newline at end of file 73 \ No newline at end of file
src/main/resources/static/pages/scheduleApp/module/core/scheduleRuleManage/index.html
@@ -40,6 +40,12 @@ @@ -40,6 +40,12 @@
40 </a> 40 </a>
41 <ul class="dropdown-menu pull-right"> 41 <ul class="dropdown-menu pull-right">
42 <li> 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 <a href="javascript:" class="tool-action" ng-click="ctrl.exportData()"> 49 <a href="javascript:" class="tool-action" ng-click="ctrl.exportData()">
44 <i class="fa fa-file-excel-o"></i> 50 <i class="fa fa-file-excel-o"></i>
45 导出excel 51 导出excel
src/main/resources/static/pages/scheduleApp/module/core/scheduleRuleManage/module.js
@@ -70,8 +70,9 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -70,8 +70,9 @@ angular.module(&#39;ScheduleApp&#39;).controller(
70 [ 70 [
71 'ScheduleRuleManageService', 71 'ScheduleRuleManageService',
72 '$state', 72 '$state',
  73 + '$uibModal',
73 'FileDownload_g', 74 'FileDownload_g',
74 - function(service, $state, fileDownload) { 75 + function(service, $state, $uibModal, fileDownload) {
75 var self = this; 76 var self = this;
76 77
77 // 切换到form状态 78 // 切换到form状态
@@ -80,6 +81,31 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -80,6 +81,31 @@ angular.module(&#39;ScheduleApp&#39;).controller(
80 $state.go("scheduleRuleManage_form"); 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 // 导出excel 110 // 导出excel
85 self.exportData = function() { 111 self.exportData = function() {
@@ -97,6 +123,59 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -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 // list.html控制器 179 // list.html控制器
101 angular.module('ScheduleApp').controller( 180 angular.module('ScheduleApp').controller(
102 'ScheduleRuleManageListCtrl', 181 'ScheduleRuleManageListCtrl',
src/main/resources/static/pages/scheduleApp/module/core/scheduleRuleManage/route.js
@@ -28,6 +28,7 @@ ScheduleApp.config([ @@ -28,6 +28,7 @@ ScheduleApp.config([
28 files: [ 28 files: [
29 "assets/bower_components/angular-ui-select/dist/select.min.css", 29 "assets/bower_components/angular-ui-select/dist/select.min.css",
30 "assets/bower_components/angular-ui-select/dist/select.min.js", 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 "pages/scheduleApp/module/core/scheduleRuleManage/module.js" 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,7 +3,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;ScheduleRuleManageService_g&#39;, [&#39;$resource
3 return { 3 return {
4 rest: $resource( 4 rest: $resource(
5 '/sr1fc/:id', 5 '/sr1fc/:id',
6 - {order: 'createDate', direction: 'DESC', id: '@id_route'}, 6 + {order: 'xl.id,updateDate', direction: 'ASC,DESC', id: '@id'},
7 { 7 {
8 list: { 8 list: {
9 method: 'GET', 9 method: 'GET',