Commit 4a83e333e88f8767830d11bd2822ac73825fc339

Authored by 徐烜
1 parent e60deedd

update

src/main/java/com/bsth/controller/BaseController.java
... ... @@ -14,8 +14,8 @@ import org.springframework.web.bind.annotation.RequestMethod;
14 14 import org.springframework.web.bind.annotation.RequestParam;
15 15 import org.springframework.web.multipart.MultipartFile;
16 16  
17   -import java.io.File;
18   -import java.io.Serializable;
  17 +import javax.servlet.http.HttpServletResponse;
  18 +import java.io.*;
19 19 import java.util.HashMap;
20 20 import java.util.Map;
21 21  
... ... @@ -51,7 +51,7 @@ public class BaseController<T, ID extends Serializable> {
51 51 @RequestParam(defaultValue = "10") int size,
52 52 @RequestParam(defaultValue = "id") String order,
53 53 @RequestParam(defaultValue = "DESC") String direction){
54   -
  54 +
55 55 Direction d;
56 56  
57 57 if(null != direction && direction.equals("ASC"))
... ... @@ -141,6 +141,66 @@ public class BaseController<T, ID extends Serializable> {
141 141 }
142 142  
143 143 /**
  144 + * 使用ktr导出数据。
  145 + * @param response
  146 + * @throws Exception
  147 + */
  148 + @RequestMapping(value = "/dataExport", method = RequestMethod.GET)
  149 + public void dataExport(HttpServletResponse response) throws Exception {
  150 + // 1、使用ktr转换获取输出文件
  151 + File ktrfile = new File(this.getClass().getResource(getDataExportKtrClasspath()).toURI());
  152 + File outputfile = dataImportExportService.fileDataOutput(
  153 + getDataExportFilename(),
  154 + ktrfile);
  155 +
  156 + System.out.println(outputfile.getName());
  157 + String filePath = outputfile.getAbsolutePath();
  158 + String fp[] = filePath.split(File.separator);
  159 + String fileName = fp[fp.length - 1];
  160 +
  161 + // TODO:使用ktr获取导出数据
  162 +
  163 + response.setHeader("conent-type", "application/octet-stream");
  164 + response.setContentType("application/octet-stream");
  165 + response.setHeader("Content-Disposition", "attachment; filename=" + "东东");
  166 +
  167 + OutputStream os = response.getOutputStream();
  168 + BufferedOutputStream bos = new BufferedOutputStream(os);
  169 +
  170 + InputStream is = null;
  171 +
  172 + is = new FileInputStream(filePath);
  173 + BufferedInputStream bis = new BufferedInputStream(is);
  174 +
  175 + int length = 0;
  176 + byte[] temp = new byte[1 * 1024 * 10];
  177 +
  178 + while ((length = bis.read(temp)) != -1) {
  179 + bos.write(temp, 0, length);
  180 + }
  181 + bos.flush();
  182 + bis.close();
  183 + bos.close();
  184 + is.close();
  185 + }
  186 +
  187 + /**
  188 + * @return 数据导出的ktr转换文件类路径。
  189 + */
  190 + protected String getDataExportKtrClasspath() {
  191 + // 默认返回异常,子类如果要使用导出功能,必须覆写此方法,指定ktr文件类路径
  192 + throw new RuntimeException("必须override,并指定ktr classpath");
  193 + }
  194 +
  195 + /**
  196 + * @return 导出文件名。
  197 + */
  198 + protected String getDataExportFilename() {
  199 + // 默认返回异常,子类如果要使用导出功能,必须覆写此方法,指定导出的文件路径名
  200 + throw new RuntimeException("必须override,并指定导出文件名");
  201 + }
  202 +
  203 + /**
144 204 * @return 数据导入的ktr转换文件类路径。
145 205 */
146 206 protected String getDataImportKtrClasspath() {
... ...
src/main/java/com/bsth/controller/CarsController.java
... ... @@ -48,4 +48,14 @@ public class CarsController extends BaseController<Cars, Integer> {
48 48 protected String getDataImportKtrClasspath() {
49 49 return dataToolsProperties.getCarsDatainputktr();
50 50 }
  51 +
  52 + @Override
  53 + protected String getDataExportKtrClasspath() {
  54 + return dataToolsProperties.getCarsDataoutputktr();
  55 + }
  56 +
  57 + @Override
  58 + protected String getDataExportFilename() {
  59 + return "车辆基础数据";
  60 + }
51 61 }
... ...
src/main/java/com/bsth/service/schedule/utils/DataImportExportService.java
... ... @@ -23,4 +23,13 @@ public interface DataImportExportService {
23 23 * @throws Exception
24 24 */
25 25 void fileDataImport(MultipartFile datafile, File ktrFile) throws Exception;
  26 +
  27 + /**
  28 + * 数据导出。
  29 + * @param fileName 文件名
  30 + * @param ktrFile 导出的逻辑ktr文件
  31 + * @return 导出的文件
  32 + * @throws Exception
  33 + */
  34 + File fileDataOutput(String fileName, File ktrFile) throws Exception;
26 35 }
... ...
src/main/java/com/bsth/service/schedule/utils/DataImportExportServiceImpl.java
1 1 package com.bsth.service.schedule.utils;
2 2  
3 3 import com.google.common.io.Files;
  4 +import org.joda.time.DateTime;
4 5 import org.pentaho.di.core.KettleEnvironment;
5 6 import org.pentaho.di.core.util.EnvUtil;
6 7 import org.pentaho.di.trans.Trans;
... ... @@ -106,4 +107,27 @@ public class DataImportExportServiceImpl implements DataImportExportService, Ini
106 107 throw new Exception("转换数据部分错误,请查看相关错误输出文件!");
107 108 }
108 109 }
  110 +
  111 + @Override
  112 + public File fileDataOutput(String fileName, File ktrFile) throws Exception {
  113 + // 初始化转换,元数据,转换对象
  114 + TransMeta transMeta = new TransMeta(ktrFile.getAbsolutePath());
  115 + Trans trans = new Trans(transMeta);
  116 + // 设定命名参数
  117 + String filepath = dataToolsProperties.getFileoutputDir() +
  118 + File.separator +
  119 + fileName +
  120 + new DateTime().toString("yyyyMMddHHmmss") + ".xls";
  121 + trans.setParameterValue("filepath", filepath);
  122 + // 执行转换
  123 + trans.execute(null);
  124 + // 等待转换结束
  125 + trans.waitUntilFinished();
  126 +
  127 + if (trans.getErrors() > 0) {
  128 + throw new Exception("转换数据部分错误,请查看相关错误输出文件!");
  129 + }
  130 +
  131 + return new File(filepath);
  132 + }
109 133 }
... ...
src/main/java/com/bsth/service/schedule/utils/DataToolsProperties.java
... ... @@ -17,6 +17,9 @@ public class DataToolsProperties {
17 17 /** 上传文件目录配置(根据不同的环境需要修正) */
18 18 @NotNull
19 19 private String fileuploadDir;
  20 + /** 导出数据文件目录配置(根据不同的环境需要修正) */
  21 + @NotNull
  22 + private String fileoutputDir;
20 23  
21 24 /** ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正) */
22 25 @NotNull
... ... @@ -39,6 +42,7 @@ public class DataToolsProperties {
39 42 @NotNull
40 43 private String kvarsDbpwd;
41 44  
  45 + /**------------------------- 导入数据ktr --------------------------*/
42 46 /** 测试temp的ktr转换文件 */
43 47 @NotNull
44 48 private String tempDatainputktr;
... ... @@ -70,6 +74,11 @@ public class DataToolsProperties {
70 74 @NotNull
71 75 private String ttinfodetailDatainputktr;
72 76  
  77 + /**------------------------- 导出数据ktr --------------------------*/
  78 + /** 车辆信息导出ktr转换 */
  79 + @NotNull
  80 + private String carsDataoutputktr;
  81 +
73 82 // TODO:
74 83  
75 84 public String getFileuploadDir() {
... ... @@ -207,4 +216,20 @@ public class DataToolsProperties {
207 216 public void setTtinfodetailForeditktr(String ttinfodetailForeditktr) {
208 217 this.ttinfodetailForeditktr = ttinfodetailForeditktr;
209 218 }
  219 +
  220 + public String getFileoutputDir() {
  221 + return fileoutputDir;
  222 + }
  223 +
  224 + public void setFileoutputDir(String fileoutputDir) {
  225 + this.fileoutputDir = fileoutputDir;
  226 + }
  227 +
  228 + public String getCarsDataoutputktr() {
  229 + return carsDataoutputktr;
  230 + }
  231 +
  232 + public void setCarsDataoutputktr(String carsDataoutputktr) {
  233 + this.carsDataoutputktr = carsDataoutputktr;
  234 + }
210 235 }
... ...
src/main/resources/datatools/config-dev.properties
1 1 # 配置数据导入导出用到的配置信息
2 2  
3   -# 上传文件目录配置(根据不同的环境需要修正)
4   -datatools.fileupload_dir=/Users/xu/resource/project/bsth_control_u_d_files
5   -# ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正)
6   -datatools.trans_errordir=/Users/xu/resource/project/bsth_control_u_d_files/erroroutput
7   -# 临时输出文件目录
8   -datatools.trans_tempdir=/Users/xu/resource/project/bsth_control_u_d_files/temp
9   -
10   -#------------------- ktr主配置文件路径(类路径) ------------------
  3 +# 1、kettle配置文件路径(类路径)
11 4 datatools.kettle_properties=/datatools/kettle.properties
12   -
13   -##------------------ ktr通用变量 ------------------
  5 +# 2、ktr文件通用配置变量(数据库连接,根据不同的环境需要修正)
14 6 #数据库ip地址
15 7 datatools.kvars_dbip=127.0.0.1
16 8 #数据库用户名
... ... @@ -18,7 +10,15 @@ datatools.kvars_dbuname=root
18 10 #数据库密码
19 11 datatools.kvars_dbpwd=
20 12  
21   -# 以下是封装数据导入导出逻辑的ktr转换文件,类路径,以后考虑放到数据库中
  13 +# 3、上传数据配置信息
  14 +# 上传文件目录配置(根据不同的环境需要修正)
  15 +datatools.fileupload_dir=/Users/xu/resource/project/bsth_control_u_d_files
  16 +# ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正)
  17 +datatools.trans_errordir=/Users/xu/resource/project/bsth_control_u_d_files/erroroutput
  18 +# 临时输出文件目录
  19 +datatools.trans_tempdir=/Users/xu/resource/project/bsth_control_u_d_files/temp
  20 +
  21 +##---------------------------- 导入数据ktr ----------------------------##
22 22 # 测试temp的ktr转换文件
23 23 datatools.temp_datainputktr=/datatools/ktrs/test.ktr
24 24 # 车辆信息导入ktr转换
... ... @@ -41,5 +41,22 @@ datatools.carsconfig_datainputktr=/datatools/ktrs/carsConfigDataInput.ktr
41 41 # 人员配置信息导入
42 42 datatools.employeesconfig_datainputktr=/datatools/ktrs/employeesConfigDataInput.ktr
43 43  
44   -# 排班规则信息导入
  44 +# TODO:排班规则信息导入
  45 +
  46 +
  47 +# 4、数据导出配置信息
  48 +# 导出数据文件目录配置(根据不同的环境需要修正)
  49 +datatools.fileoutput_dir=/Users/xu/resource/project/bsth_control_u_d_files
  50 +
  51 +##---------------------------- 导出数据ktr -----------------------------##
  52 +# 车辆信息导出ktr转换
  53 +datatools.cars_dataoutputktr=/datatools/ktrs/carsDataOutput.ktr
  54 +
  55 +
  56 +
  57 +
  58 +
  59 +
  60 +
  61 +
45 62  
... ...
src/main/resources/datatools/config-prod.properties
1 1 # 配置数据导入导出用到的配置信息
2 2  
3   -# 上传文件目录配置(根据不同的环境需要修正)
4   -datatools.fileupload_dir=/opt/bsth_control_u_d_files
5   -# ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正)
6   -datatools.trans_errordir=/opt/bsth_control_u_d_files/erroroutput
7   -# 临时输出文件目录
8   -datatools.trans_tempdir=/opt/bsth_control_u_d_files/temp
9   -
10   -#------------------- ktr主配置文件路径(类路径) ------------------
  3 +# 1、kettle配置文件路径(类路径)
11 4 datatools.kettle_properties=/datatools/kettle.properties
12   -
13   -##------------------ ktr通用变量 ------------------
  5 +# 2、ktr文件通用配置变量(数据库连接,根据不同的环境需要修正)
14 6 #数据库ip地址
15 7 datatools.kvars_dbip=192.168.168.171
16 8 #数据库用户名
... ... @@ -18,7 +10,15 @@ datatools.kvars_dbuname=root
18 10 #数据库密码
19 11 datatools.kvars_dbpwd=root2jsp
20 12  
21   -# 以下是封装数据导入导出逻辑的ktr转换文件,类路径,以后考虑放到数据库中
  13 +# 3、上传数据配置信息
  14 +# 上传文件目录配置(根据不同的环境需要修正)
  15 +datatools.fileupload_dir=/opt/bsth_control_u_d_files
  16 +# ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正)
  17 +datatools.trans_errordir=/opt/bsth_control_u_d_files/erroroutput
  18 +# 临时输出文件目录
  19 +datatools.trans_tempdir=/opt/bsth_control_u_d_files/temp
  20 +
  21 +##---------------------------- 导入数据ktr ----------------------------##
22 22 # 测试temp的ktr转换文件
23 23 datatools.temp_datainputktr=/datatools/ktrs/test.ktr
24 24 # 车辆信息导入ktr转换
... ... @@ -41,5 +41,23 @@ datatools.carsconfig_datainputktr=/datatools/ktrs/carsConfigDataInput.ktr
41 41 # 人员配置信息导入
42 42 datatools.employeesconfig_datainputktr=/datatools/ktrs/employeesConfigDataInput.ktr
43 43  
44   -# 排班规则信息导入
  44 +# TODO:排班规则信息导入
  45 +
  46 +
  47 +# 4、数据导出配置信息
  48 +# 导出数据文件目录配置(根据不同的环境需要修正)
  49 +datatools.fileoutput_dir=/opt/bsth_control_u_d_files
  50 +
  51 +##---------------------------- 导出数据ktr -----------------------------##
  52 +# 车辆信息导出ktr转换
  53 +datatools.cars_dataoutputktr=/datatools/ktrs/carsDataOutput.ktr
  54 +
  55 +
  56 +
  57 +
  58 +
  59 +
  60 +
  61 +
  62 +
45 63  
... ...
src/main/resources/datatools/ktrs/carsDataInput.ktr
... ... @@ -85,11 +85,11 @@
85 85 </info>
86 86 <notepads>
87 87 <notepad>
88   - <note>&#x539f;&#x7cfb;&#x7edf;&#x7684;&#x5bfc;&#x51fa;&#x8868;&#xff0c;&#x6709;&#x4e9b;&#x6570;&#x636e;&#x662f;&#x6ca1;&#x6709;&#x7684;&#xff0c;&#x6709;&#x4e9b;&#x6570;&#x636e;&#x4e5f;&#x6709;&#x95ee;&#x9898;&#xff0c;&#x5982;&#x4e0b;&#xa;&#x62a5;&#x5e9f;&#x65e5;&#x671f;&#x53bb;&#x6389;&#xa;&#x8f66;&#x8f86;&#x7f16;&#x7801;&#xff0c;&#x6682;&#x65f6;&#x7528;1&#x4ee3;&#x66ff;&#xa;&#x662f;&#x5426;&#x7535;&#x8f66; &#x6ca1;&#x6709;&#xa;&#x8f66;&#x8f86;&#x5e8f;&#x53f7; &#x6ca1;&#x6709;&#xa;&#x662f;&#x5426;&#x5207;&#x6362; &#x6ca1;&#x6709;&#xa;&#x7ebf;&#x8def;&#x540d;&#x79f0;&#xff08;&#x8fd9;&#x91cc;&#x4e0d;&#x505a;&#x5173;&#x8054;&#xff0c;&#x53ea;&#x662f;&#x767b;&#x8bb0;&#x7684;&#x65f6;&#x5019;&#x4f7f;&#x7528;&#xff09; &#x54a9;&#x6709;</note>
89   - <xloc>365</xloc>
90   - <yloc>136</yloc>
  88 + <note>&#x539f;&#x7cfb;&#x7edf;&#x7684;&#x5bfc;&#x51fa;&#x8868;&#xff0c;&#x6709;&#x4e9b;&#x6570;&#x636e;&#x662f;&#x6ca1;&#x6709;&#x7684;&#xff0c;&#x6709;&#x4e9b;&#x6570;&#x636e;&#x4e5f;&#x6709;&#x95ee;&#x9898;&#xff0c;&#x5982;&#x4e0b;&#xa;&#x62a5;&#x5e9f;&#x65e5;&#x671f;&#x53bb;&#x6389;&#xa;&#x8f66;&#x8f86;&#x7f16;&#x7801;&#xff0c;&#x6682;&#x65f6;&#x7528;1&#x4ee3;&#x66ff;&#xa;&#x662f;&#x5426;&#x7535;&#x8f66; &#x6ca1;&#x6709;&#xa;&#x8f66;&#x8f86;&#x5e8f;&#x53f7; &#x6ca1;&#x6709;&#xa;&#x662f;&#x5426;&#x5207;&#x6362; &#x6ca1;&#x6709;&#xa;&#x7ebf;&#x8def;&#x540d;&#x79f0;&#xff08;&#x8fd9;&#x91cc;&#x4e0d;&#x505a;&#x5173;&#x8054;&#xff0c;&#x53ea;&#x662f;&#x767b;&#x8bb0;&#x7684;&#x65f6;&#x5019;&#x4f7f;&#x7528;&#xff09; &#x54a9;&#x6709;&#xa;&#xa;&#x5b57;&#x5178;&#xa;&#x662f;&#x4e0e;&#x5426;truefalseType &#x662f; 1&#xa;&#x662f;&#x4e0e;&#x5426;truefalseType &#x5426; 0&#xa;&#xa;&#x4f9b;&#x5e94;&#x5546;&#x540d;&#x79f0;snames &#x5df4;&#x58eb;&#x62d3;&#x534e; 1&#xa;&#x4f9b;&#x5e94;&#x5546;&#x540d;&#x79f0;snames &#x535a;&#x5eb7; 2&#xa;&#xa;&#x8425;&#x8fd0;&#x72b6;&#x6001;yyztType &#x8425;&#x8fd0; 1&#xa;&#x8425;&#x8fd0;&#x72b6;&#x6001;yyztType &#x505c;&#x8fd0; 2&#xa;&#x8425;&#x8fd0;&#x72b6;&#x6001;yyztType &#x6302;&#x5931; 3&#xa;&#x8425;&#x8fd0;&#x72b6;&#x6001;yyztType &#x8fc1;&#x51fa;&#xff08;&#x8fc7;&#x6237;&#xff09; 4&#xa;&#x8425;&#x8fd0;&#x72b6;&#x6001;yyztType &#x8fc1;&#x51fa;&#xff08;&#x8f6c;&#x7c4d;&#xff09; 5&#xa;&#x8425;&#x8fd0;&#x72b6;&#x6001;yyztType &#x62a5;&#x5e9f; 6&#xa;&#x8425;&#x8fd0;&#x72b6;&#x6001;yyztType &#x6b47;&#x4e1a; 7&#xa;&#x8425;&#x8fd0;&#x72b6;&#x6001;yyztType &#x6ce8;&#x9500; 8&#xa;&#x8425;&#x8fd0;&#x72b6;&#x6001;yyztType &#x6d4b;&#x8bd5; 9&#xa;&#x8425;&#x8fd0;&#x72b6;&#x6001;yyztType &#x5176;&#x4ed6; 10&#xa;&#xa;&#x673a;&#x52a8;&#x8f66;&#x7c7b;&#x578b;jdcType &#x975e;&#x673a;&#x52a8;&#x8f66; 1&#xa;&#x673a;&#x52a8;&#x8f66;&#x7c7b;&#x578b;jdcType &#x673a;&#x52a8;&#x4e00;&#x961f; 2&#xa;&#x673a;&#x52a8;&#x8f66;&#x7c7b;&#x578b;jdcType &#x673a;&#x52a8;&#x4e8c;&#x961f; 3&#xa;&#x673a;&#x52a8;&#x8f66;&#x7c7b;&#x578b;jdcType &#x673a;&#x52a8;&#x4e09;&#x961f; 4&#xa;&#x673a;&#x52a8;&#x8f66;&#x7c7b;&#x578b;jdcType &#x5907;&#x8f66; 5&#xa;&#x673a;&#x52a8;&#x8f66;&#x7c7b;&#x578b;jdcType &#x62a2;&#x4fee;&#x8f66; 6&#xa;&#xa;&#x8f66;&#x8f86;&#x7c7b;&#x578b;carType &#x8425;&#x8fd0;&#x8f66; 1&#xa;&#x8f66;&#x8f86;&#x7c7b;&#x578b;carType &#x5305;&#x8f66; 2&#xa;&#x8f66;&#x8f86;&#x7c7b;&#x578b;carType &#x5b66;&#x6821;&#x73ed;&#x8f66; 3&#xa;&#x8f66;&#x8f86;&#x7c7b;&#x578b;carType &#x516c;&#x53f8;&#x73ed;&#x8f66; 4&#xa;&#x8f66;&#x8f86;&#x7c7b;&#x578b;carType &#x5f85;&#x62a5;&#x5e9f;&#x8f66; 5&#xa;&#x8f66;&#x8f86;&#x7c7b;&#x578b;carType &#x5907;&#x8f66; 6&#xa;&#x8f66;&#x8f86;&#x7c7b;&#x578b;carType &#x6d4b;&#x8bd5;&#x8bbe;&#x5907; 7&#xa;&#xa;&#xa;&#xa;</note>
  89 + <xloc>45</xloc>
  90 + <yloc>254</yloc>
91 91 <width>346</width>
92   - <heigth>122</heigth>
  92 + <heigth>714</heigth>
93 93 <fontname>YaHei Consolas Hybrid</fontname>
94 94 <fontsize>12</fontsize>
95 95 <fontbold>N</fontbold>
... ... @@ -269,64 +269,21 @@
269 269 <order>
270 270 <hop> <from>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
271 271 <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x662f;&#x5426;&#x7a7a;&#x8c03;&#x8f66;</to><enabled>Y</enabled> </hop>
272   - <hop> <from>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
273 272 <hop> <from>&#x662f;&#x5426;&#x6709;LED&#x670d;&#x52a1;&#x5c4f;</from><to>&#x662f;&#x5426;&#x6709;TV&#x89c6;&#x9891;</to><enabled>Y</enabled> </hop>
274 273 <hop> <from>&#x662f;&#x5426;&#x6709;TV&#x89c6;&#x9891;</from><to>&#x662f;&#x5426;&#x7684;&#x53d8;&#x6210;&#x6570;&#x5b57;&#x578b;</to><enabled>Y</enabled> </hop>
275   - <hop> <from>&#x662f;&#x5426;&#x7684;&#x53d8;&#x6210;&#x6570;&#x5b57;&#x578b;</from><to>&#x516c;&#x4ea4;&#x4f01;&#x4e1a;&#x4ee3;&#x7801;</to><enabled>Y</enabled> </hop>
276 274 <hop> <from>&#x662f;&#x5426;&#x7a7a;&#x8c03;&#x8f66;</from><to>&#x6709;&#x65e0;&#x4eba;&#x552e;&#x7968;</to><enabled>Y</enabled> </hop>
277 275 <hop> <from>&#x6709;&#x65e0;&#x4eba;&#x552e;&#x7968;</from><to>&#x662f;&#x5426;&#x6709;LED&#x670d;&#x52a1;&#x5c4f;</to><enabled>Y</enabled> </hop>
278   - <hop> <from>&#x516c;&#x4ea4;&#x4f01;&#x4e1a;&#x4ee3;&#x7801;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars</to><enabled>Y</enabled> </hop>
279 276 <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>
  277 + <hop> <from>&#x4f9b;&#x5e94;&#x5546;&#x540d;&#x79f0;</from><to>&#x8425;&#x8fd0;&#x72b6;&#x6001;</to><enabled>Y</enabled> </hop>
  278 + <hop> <from>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars 2</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa; 2</to><enabled>Y</enabled> </hop>
  279 + <hop> <from>&#x673a;&#x52a8;&#x8f66;&#x7c7b;&#x578b;</from><to>&#x8f66;&#x8f86;&#x7c7b;&#x578b;</to><enabled>Y</enabled> </hop>
  280 + <hop> <from>&#x8425;&#x8fd0;&#x72b6;&#x6001;</from><to>&#x673a;&#x52a8;&#x8f66;&#x7c7b;&#x578b;</to><enabled>Y</enabled> </hop>
  281 + <hop> <from>&#x8f66;&#x8f86;&#x7c7b;&#x578b;</from><to>&#x8f66;&#x8f86;&#x7f16;&#x7801;</to><enabled>Y</enabled> </hop>
  282 + <hop> <from>&#x8f66;&#x8f86;&#x7f16;&#x7801;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars 2</to><enabled>Y</enabled> </hop>
  283 + <hop> <from>&#x662f;&#x5426;&#x7684;&#x53d8;&#x6210;&#x6570;&#x5b57;&#x578b;</from><to>&#x516c;&#x4ea4;&#x4f01;&#x4e1a;&#x4ee3;&#x7801;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  284 + <hop> <from>&#x516c;&#x4ea4;&#x4f01;&#x4e1a;&#x4ee3;&#x7801;&#x67e5;&#x8be2;</from><to>&#x4f9b;&#x5e94;&#x5546;&#x540d;&#x79f0;</to><enabled>Y</enabled> </hop>
280 285 </order>
281 286 <step>
282   - <name>&#x516c;&#x4ea4;&#x4f01;&#x4e1a;&#x4ee3;&#x7801;</name>
283   - <type>ValueMapper</type>
284   - <description/>
285   - <distribute>Y</distribute>
286   - <custom_distribution/>
287   - <copies>1</copies>
288   - <partitioning>
289   - <method>none</method>
290   - <schema_name/>
291   - </partitioning>
292   - <field_to_use>company</field_to_use>
293   - <target_field>businessCode</target_field>
294   - <non_match_default/>
295   - <fields>
296   - <field>
297   - <source_value>&#x4e0a;&#x5357;&#x516c;&#x53f8;</source_value>
298   - <target_value>55</target_value>
299   - </field>
300   - <field>
301   - <source_value>&#x91d1;&#x9ad8;&#x516c;&#x53f8;</source_value>
302   - <target_value>22</target_value>
303   - </field>
304   - <field>
305   - <source_value>&#x6768;&#x9ad8;&#x516c;&#x53f8;</source_value>
306   - <target_value>05</target_value>
307   - </field>
308   - <field>
309   - <source_value>&#x5357;&#x6c47;&#x516c;&#x53f8;</source_value>
310   - <target_value>26</target_value>
311   - </field>
312   - <field>
313   - <source_value>&#x516c;&#x4ea4;&#x516c;&#x53f8;</source_value>
314   - <target_value>88</target_value>
315   - </field>
316   - <field>
317   - <source_value>&#x95f5;&#x884c;&#x516c;&#x4ea4;</source_value>
318   - <target_value>77</target_value>
319   - </field>
320   - </fields>
321   - <cluster_schema/>
322   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
323   - <xloc>841</xloc>
324   - <yloc>166</yloc>
325   - <draw>Y</draw>
326   - </GUI>
327   - </step>
328   -
329   - <step>
330 287 <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name>
331 288 <type>ExcelInput</type>
332 289 <description/>
... ... @@ -967,208 +924,6 @@
967 924 </step>
968 925  
969 926 <step>
970   - <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars</name>
971   - <type>InsertUpdate</type>
972   - <description/>
973   - <distribute>Y</distribute>
974   - <custom_distribution/>
975   - <copies>1</copies>
976   - <partitioning>
977   - <method>none</method>
978   - <schema_name/>
979   - </partitioning>
980   - <connection>bus_control_variable</connection>
981   - <commit>1000</commit>
982   - <update_bypassed>N</update_bypassed>
983   - <lookup>
984   - <schema/>
985   - <table>bsth_c_cars</table>
986   - <key>
987   - <name>insideCode</name>
988   - <field>inside_code</field>
989   - <condition>&#x3d;</condition>
990   - <name2/>
991   - </key>
992   - <value>
993   - <name>inside_code</name>
994   - <rename>insideCode</rename>
995   - <update>Y</update>
996   - </value>
997   - <value>
998   - <name>company</name>
999   - <rename>company</rename>
1000   - <update>Y</update>
1001   - </value>
1002   - <value>
1003   - <name>branche_company</name>
1004   - <rename>brancheCompany</rename>
1005   - <update>Y</update>
1006   - </value>
1007   - <value>
1008   - <name>car_plate</name>
1009   - <rename>carPlate</rename>
1010   - <update>Y</update>
1011   - </value>
1012   - <value>
1013   - <name>supplier_name</name>
1014   - <rename>supplierName</rename>
1015   - <update>Y</update>
1016   - </value>
1017   - <value>
1018   - <name>equipment_code</name>
1019   - <rename>equipmentCode</rename>
1020   - <update>Y</update>
1021   - </value>
1022   - <value>
1023   - <name>car_class</name>
1024   - <rename>carClass</rename>
1025   - <update>Y</update>
1026   - </value>
1027   - <value>
1028   - <name>speed</name>
1029   - <rename>speed</rename>
1030   - <update>Y</update>
1031   - </value>
1032   - <value>
1033   - <name>car_seatn_number</name>
1034   - <rename>carSeatnNumber</rename>
1035   - <update>Y</update>
1036   - </value>
1037   - <value>
1038   - <name>car_standard</name>
1039   - <rename>carStandard</rename>
1040   - <update>Y</update>
1041   - </value>
1042   - <value>
1043   - <name>car_code</name>
1044   - <rename>carCode</rename>
1045   - <update>Y</update>
1046   - </value>
1047   - <value>
1048   - <name>kburn_standard</name>
1049   - <rename>kburnStandard</rename>
1050   - <update>Y</update>
1051   - </value>
1052   - <value>
1053   - <name>gburn_standard</name>
1054   - <rename>gburnStandard</rename>
1055   - <update>Y</update>
1056   - </value>
1057   - <value>
1058   - <name>scrap_code</name>
1059   - <rename>scrapCode</rename>
1060   - <update>Y</update>
1061   - </value>
1062   - <value>
1063   - <name>make_code_one</name>
1064   - <rename>makeCodeOne</rename>
1065   - <update>Y</update>
1066   - </value>
1067   - <value>
1068   - <name>make_code_two</name>
1069   - <rename>makeCodeTwo</rename>
1070   - <update>Y</update>
1071   - </value>
1072   - <value>
1073   - <name>car_gride</name>
1074   - <rename>carGride</rename>
1075   - <update>Y</update>
1076   - </value>
1077   - <value>
1078   - <name>emissions_standard</name>
1079   - <rename>emissionsStandard</rename>
1080   - <update>Y</update>
1081   - </value>
1082   - <value>
1083   - <name>engine_code_one</name>
1084   - <rename>engineCodeOne</rename>
1085   - <update>Y</update>
1086   - </value>
1087   - <value>
1088   - <name>engine_code_two</name>
1089   - <rename>engineCodeTwo</rename>
1090   - <update>Y</update>
1091   - </value>
1092   - <value>
1093   - <name>car_number_one</name>
1094   - <rename>carNumberOne</rename>
1095   - <update>Y</update>
1096   - </value>
1097   - <value>
1098   - <name>car_number_two</name>
1099   - <rename>carNumberTwo</rename>
1100   - <update>Y</update>
1101   - </value>
1102   - <value>
1103   - <name>open_date</name>
1104   - <rename>openDate</rename>
1105   - <update>Y</update>
1106   - </value>
1107   - <value>
1108   - <name>close_date</name>
1109   - <rename>closeDate</rename>
1110   - <update>Y</update>
1111   - </value>
1112   - <value>
1113   - <name>hvac_car</name>
1114   - <rename>hvacCar</rename>
1115   - <update>Y</update>
1116   - </value>
1117   - <value>
1118   - <name>ticket_type</name>
1119   - <rename>ticketType</rename>
1120   - <update>Y</update>
1121   - </value>
1122   - <value>
1123   - <name>led_screen</name>
1124   - <rename>ledScreen</rename>
1125   - <update>Y</update>
1126   - </value>
1127   - <value>
1128   - <name>tv_video_type</name>
1129   - <rename>tvVideoType</rename>
1130   - <update>Y</update>
1131   - </value>
1132   - <value>
1133   - <name>car_type</name>
1134   - <rename>carType</rename>
1135   - <update>Y</update>
1136   - </value>
1137   - <value>
1138   - <name>vehicle_stats</name>
1139   - <rename>vehicleStats</rename>
1140   - <update>Y</update>
1141   - </value>
1142   - <value>
1143   - <name>operators_state</name>
1144   - <rename>operatorsState</rename>
1145   - <update>Y</update>
1146   - </value>
1147   - <value>
1148   - <name>descriptions</name>
1149   - <rename>descriptions</rename>
1150   - <update>Y</update>
1151   - </value>
1152   - <value>
1153   - <name>video_code</name>
1154   - <rename>videoCode</rename>
1155   - <update>Y</update>
1156   - </value>
1157   - <value>
1158   - <name>business_code</name>
1159   - <rename>businessCode</rename>
1160   - <update>Y</update>
1161   - </value>
1162   - </lookup>
1163   - <cluster_schema/>
1164   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1165   - <xloc>842</xloc>
1166   - <yloc>319</yloc>
1167   - <draw>Y</draw>
1168   - </GUI>
1169   - </step>
1170   -
1171   - <step>
1172 927 <name>&#x662f;&#x5426;&#x6709;LED&#x670d;&#x52a1;&#x5c4f;</name>
1173 928 <type>ValueMapper</type>
1174 929 <description/>
... ... @@ -1422,8 +1177,8 @@
1422 1177 </step>
1423 1178  
1424 1179 <step>
1425   - <name>&#x9519;&#x8bef;&#x8f93;&#x51fa;</name>
1426   - <type>ExcelOutput</type>
  1180 + <name>&#x4f9b;&#x5e94;&#x5546;&#x540d;&#x79f0;</name>
  1181 + <type>ValueMapper</type>
1427 1182 <description/>
1428 1183 <distribute>Y</distribute>
1429 1184 <custom_distribution/>
... ... @@ -1432,30 +1187,461 @@
1432 1187 <method>none</method>
1433 1188 <schema_name/>
1434 1189 </partitioning>
1435   - <header>Y</header>
1436   - <footer>N</footer>
1437   - <encoding/>
1438   - <append>N</append>
1439   - <add_to_result_filenames>Y</add_to_result_filenames>
1440   - <file>
1441   - <name>&#x24;&#x7b;erroroutputdir&#x7d;&#x2f;&#x8f66;&#x8f86;&#x57fa;&#x7840;&#x4fe1;&#x606f;_&#x9519;&#x8bef;</name>
1442   - <extention>xls</extention>
1443   - <do_not_open_newfile_init>N</do_not_open_newfile_init>
1444   - <create_parent_folder>N</create_parent_folder>
1445   - <split>N</split>
1446   - <add_date>N</add_date>
1447   - <add_time>N</add_time>
1448   - <SpecifyFormat>N</SpecifyFormat>
1449   - <date_time_format/>
1450   - <sheetname>Sheet1</sheetname>
1451   - <autosizecolums>N</autosizecolums>
1452   - <nullisblank>N</nullisblank>
1453   - <protect_sheet>N</protect_sheet>
1454   - <password>Encrypted </password>
1455   - <splitevery>0</splitevery>
1456   - <usetempfiles>N</usetempfiles>
1457   - <tempdirectory/>
1458   - </file>
  1190 + <field_to_use>supplierName</field_to_use>
  1191 + <target_field/>
  1192 + <non_match_default/>
  1193 + <fields>
  1194 + <field>
  1195 + <source_value>&#x5df4;&#x58eb;&#x62d3;&#x534e;</source_value>
  1196 + <target_value>1</target_value>
  1197 + </field>
  1198 + <field>
  1199 + <source_value>&#x535a;&#x5eb7;</source_value>
  1200 + <target_value>2</target_value>
  1201 + </field>
  1202 + </fields>
  1203 + <cluster_schema/>
  1204 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1205 + <xloc>709</xloc>
  1206 + <yloc>172</yloc>
  1207 + <draw>Y</draw>
  1208 + </GUI>
  1209 + </step>
  1210 +
  1211 + <step>
  1212 + <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars 2</name>
  1213 + <type>InsertUpdate</type>
  1214 + <description/>
  1215 + <distribute>Y</distribute>
  1216 + <custom_distribution/>
  1217 + <copies>1</copies>
  1218 + <partitioning>
  1219 + <method>none</method>
  1220 + <schema_name/>
  1221 + </partitioning>
  1222 + <connection>bus_control_&#x516c;&#x53f8;_201</connection>
  1223 + <commit>1000</commit>
  1224 + <update_bypassed>N</update_bypassed>
  1225 + <lookup>
  1226 + <schema/>
  1227 + <table>bsth_c_cars</table>
  1228 + <key>
  1229 + <name>insideCode</name>
  1230 + <field>inside_code</field>
  1231 + <condition>&#x3d;</condition>
  1232 + <name2/>
  1233 + </key>
  1234 + <value>
  1235 + <name>inside_code</name>
  1236 + <rename>insideCode</rename>
  1237 + <update>Y</update>
  1238 + </value>
  1239 + <value>
  1240 + <name>company</name>
  1241 + <rename>company</rename>
  1242 + <update>Y</update>
  1243 + </value>
  1244 + <value>
  1245 + <name>branche_company</name>
  1246 + <rename>brancheCompany</rename>
  1247 + <update>Y</update>
  1248 + </value>
  1249 + <value>
  1250 + <name>car_plate</name>
  1251 + <rename>carPlate</rename>
  1252 + <update>Y</update>
  1253 + </value>
  1254 + <value>
  1255 + <name>supplier_name</name>
  1256 + <rename>supplierName</rename>
  1257 + <update>Y</update>
  1258 + </value>
  1259 + <value>
  1260 + <name>equipment_code</name>
  1261 + <rename>equipmentCode</rename>
  1262 + <update>Y</update>
  1263 + </value>
  1264 + <value>
  1265 + <name>car_class</name>
  1266 + <rename>carClass</rename>
  1267 + <update>Y</update>
  1268 + </value>
  1269 + <value>
  1270 + <name>speed</name>
  1271 + <rename>speed</rename>
  1272 + <update>Y</update>
  1273 + </value>
  1274 + <value>
  1275 + <name>car_seatn_number</name>
  1276 + <rename>carSeatnNumber</rename>
  1277 + <update>Y</update>
  1278 + </value>
  1279 + <value>
  1280 + <name>car_standard</name>
  1281 + <rename>carStandard</rename>
  1282 + <update>Y</update>
  1283 + </value>
  1284 + <value>
  1285 + <name>car_code</name>
  1286 + <rename>carCode</rename>
  1287 + <update>Y</update>
  1288 + </value>
  1289 + <value>
  1290 + <name>kburn_standard</name>
  1291 + <rename>kburnStandard</rename>
  1292 + <update>Y</update>
  1293 + </value>
  1294 + <value>
  1295 + <name>gburn_standard</name>
  1296 + <rename>gburnStandard</rename>
  1297 + <update>Y</update>
  1298 + </value>
  1299 + <value>
  1300 + <name>scrap_code</name>
  1301 + <rename>scrapCode</rename>
  1302 + <update>Y</update>
  1303 + </value>
  1304 + <value>
  1305 + <name>make_code_one</name>
  1306 + <rename>makeCodeOne</rename>
  1307 + <update>Y</update>
  1308 + </value>
  1309 + <value>
  1310 + <name>make_code_two</name>
  1311 + <rename>makeCodeTwo</rename>
  1312 + <update>Y</update>
  1313 + </value>
  1314 + <value>
  1315 + <name>car_gride</name>
  1316 + <rename>carGride</rename>
  1317 + <update>Y</update>
  1318 + </value>
  1319 + <value>
  1320 + <name>emissions_standard</name>
  1321 + <rename>emissionsStandard</rename>
  1322 + <update>Y</update>
  1323 + </value>
  1324 + <value>
  1325 + <name>engine_code_one</name>
  1326 + <rename>engineCodeOne</rename>
  1327 + <update>Y</update>
  1328 + </value>
  1329 + <value>
  1330 + <name>engine_code_two</name>
  1331 + <rename>engineCodeTwo</rename>
  1332 + <update>Y</update>
  1333 + </value>
  1334 + <value>
  1335 + <name>car_number_one</name>
  1336 + <rename>carNumberOne</rename>
  1337 + <update>Y</update>
  1338 + </value>
  1339 + <value>
  1340 + <name>car_number_two</name>
  1341 + <rename>carNumberTwo</rename>
  1342 + <update>Y</update>
  1343 + </value>
  1344 + <value>
  1345 + <name>open_date</name>
  1346 + <rename>openDate</rename>
  1347 + <update>Y</update>
  1348 + </value>
  1349 + <value>
  1350 + <name>close_date</name>
  1351 + <rename>closeDate</rename>
  1352 + <update>Y</update>
  1353 + </value>
  1354 + <value>
  1355 + <name>hvac_car</name>
  1356 + <rename>hvacCar</rename>
  1357 + <update>Y</update>
  1358 + </value>
  1359 + <value>
  1360 + <name>ticket_type</name>
  1361 + <rename>ticketType</rename>
  1362 + <update>Y</update>
  1363 + </value>
  1364 + <value>
  1365 + <name>led_screen</name>
  1366 + <rename>ledScreen</rename>
  1367 + <update>Y</update>
  1368 + </value>
  1369 + <value>
  1370 + <name>tv_video_type</name>
  1371 + <rename>tvVideoType</rename>
  1372 + <update>Y</update>
  1373 + </value>
  1374 + <value>
  1375 + <name>car_type</name>
  1376 + <rename>carType</rename>
  1377 + <update>Y</update>
  1378 + </value>
  1379 + <value>
  1380 + <name>vehicle_stats</name>
  1381 + <rename>vehicleStats</rename>
  1382 + <update>Y</update>
  1383 + </value>
  1384 + <value>
  1385 + <name>operators_state</name>
  1386 + <rename>operatorsState</rename>
  1387 + <update>Y</update>
  1388 + </value>
  1389 + <value>
  1390 + <name>descriptions</name>
  1391 + <rename>descriptions</rename>
  1392 + <update>Y</update>
  1393 + </value>
  1394 + <value>
  1395 + <name>video_code</name>
  1396 + <rename>videoCode</rename>
  1397 + <update>Y</update>
  1398 + </value>
  1399 + <value>
  1400 + <name>business_code</name>
  1401 + <rename>businessCode</rename>
  1402 + <update>Y</update>
  1403 + </value>
  1404 + </lookup>
  1405 + <cluster_schema/>
  1406 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1407 + <xloc>821</xloc>
  1408 + <yloc>362</yloc>
  1409 + <draw>Y</draw>
  1410 + </GUI>
  1411 + </step>
  1412 +
  1413 + <step>
  1414 + <name>&#x673a;&#x52a8;&#x8f66;&#x7c7b;&#x578b;</name>
  1415 + <type>ValueMapper</type>
  1416 + <description/>
  1417 + <distribute>Y</distribute>
  1418 + <custom_distribution/>
  1419 + <copies>1</copies>
  1420 + <partitioning>
  1421 + <method>none</method>
  1422 + <schema_name/>
  1423 + </partitioning>
  1424 + <field_to_use>vehicleStats</field_to_use>
  1425 + <target_field/>
  1426 + <non_match_default/>
  1427 + <fields>
  1428 + <field>
  1429 + <source_value>&#x975e;&#x673a;&#x52a8;&#x8f66;</source_value>
  1430 + <target_value>1</target_value>
  1431 + </field>
  1432 + <field>
  1433 + <source_value>&#x673a;&#x52a8;&#x4e00;&#x961f;</source_value>
  1434 + <target_value>2</target_value>
  1435 + </field>
  1436 + <field>
  1437 + <source_value>&#x673a;&#x52a8;&#x4e8c;&#x961f;</source_value>
  1438 + <target_value>3</target_value>
  1439 + </field>
  1440 + <field>
  1441 + <source_value>&#x673a;&#x52a8;&#x4e09;&#x961f;</source_value>
  1442 + <target_value>4</target_value>
  1443 + </field>
  1444 + <field>
  1445 + <source_value>&#x5907;&#x8f66;</source_value>
  1446 + <target_value>5</target_value>
  1447 + </field>
  1448 + <field>
  1449 + <source_value>&#x62a2;&#x4fee;&#x8f66;</source_value>
  1450 + <target_value>6</target_value>
  1451 + </field>
  1452 + </fields>
  1453 + <cluster_schema/>
  1454 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1455 + <xloc>519</xloc>
  1456 + <yloc>174</yloc>
  1457 + <draw>Y</draw>
  1458 + </GUI>
  1459 + </step>
  1460 +
  1461 + <step>
  1462 + <name>&#x8425;&#x8fd0;&#x72b6;&#x6001;</name>
  1463 + <type>ValueMapper</type>
  1464 + <description/>
  1465 + <distribute>Y</distribute>
  1466 + <custom_distribution/>
  1467 + <copies>1</copies>
  1468 + <partitioning>
  1469 + <method>none</method>
  1470 + <schema_name/>
  1471 + </partitioning>
  1472 + <field_to_use>operatorsState</field_to_use>
  1473 + <target_field/>
  1474 + <non_match_default/>
  1475 + <fields>
  1476 + <field>
  1477 + <source_value>&#x8425;&#x8fd0;</source_value>
  1478 + <target_value>1</target_value>
  1479 + </field>
  1480 + <field>
  1481 + <source_value>&#x505c;&#x8fd0;</source_value>
  1482 + <target_value>2</target_value>
  1483 + </field>
  1484 + <field>
  1485 + <source_value>&#x6302;&#x5931;</source_value>
  1486 + <target_value>3</target_value>
  1487 + </field>
  1488 + <field>
  1489 + <source_value>&#x8fc1;&#x51fa;&#xff08;&#x8fc7;&#x6237;&#xff09;</source_value>
  1490 + <target_value>4</target_value>
  1491 + </field>
  1492 + <field>
  1493 + <source_value>&#x8fc1;&#x51fa;&#xff08;&#x8f6c;&#x7c4d;&#xff09;</source_value>
  1494 + <target_value>5</target_value>
  1495 + </field>
  1496 + <field>
  1497 + <source_value>&#x62a5;&#x5e9f;</source_value>
  1498 + <target_value>6</target_value>
  1499 + </field>
  1500 + <field>
  1501 + <source_value>&#x6b47;&#x4e1a;</source_value>
  1502 + <target_value>7</target_value>
  1503 + </field>
  1504 + <field>
  1505 + <source_value>&#x6ce8;&#x9500;</source_value>
  1506 + <target_value>8</target_value>
  1507 + </field>
  1508 + <field>
  1509 + <source_value>&#x6d4b;&#x8bd5;</source_value>
  1510 + <target_value>9</target_value>
  1511 + </field>
  1512 + <field>
  1513 + <source_value>&#x5176;&#x4ed6;</source_value>
  1514 + <target_value>10</target_value>
  1515 + </field>
  1516 + </fields>
  1517 + <cluster_schema/>
  1518 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1519 + <xloc>615</xloc>
  1520 + <yloc>173</yloc>
  1521 + <draw>Y</draw>
  1522 + </GUI>
  1523 + </step>
  1524 +
  1525 + <step>
  1526 + <name>&#x8f66;&#x8f86;&#x7c7b;&#x578b;</name>
  1527 + <type>ValueMapper</type>
  1528 + <description/>
  1529 + <distribute>Y</distribute>
  1530 + <custom_distribution/>
  1531 + <copies>1</copies>
  1532 + <partitioning>
  1533 + <method>none</method>
  1534 + <schema_name/>
  1535 + </partitioning>
  1536 + <field_to_use>carType</field_to_use>
  1537 + <target_field/>
  1538 + <non_match_default/>
  1539 + <fields>
  1540 + <field>
  1541 + <source_value>&#x8425;&#x8fd0;&#x8f66;</source_value>
  1542 + <target_value>1</target_value>
  1543 + </field>
  1544 + <field>
  1545 + <source_value>&#x5305;&#x8f66;</source_value>
  1546 + <target_value>2</target_value>
  1547 + </field>
  1548 + <field>
  1549 + <source_value>&#x5b66;&#x6821;&#x73ed;&#x8f66;</source_value>
  1550 + <target_value>3</target_value>
  1551 + </field>
  1552 + <field>
  1553 + <source_value>&#x516c;&#x53f8;&#x73ed;&#x8f66;</source_value>
  1554 + <target_value>4</target_value>
  1555 + </field>
  1556 + <field>
  1557 + <source_value>&#x5f85;&#x62a5;&#x5e9f;&#x8f66;</source_value>
  1558 + <target_value>5</target_value>
  1559 + </field>
  1560 + <field>
  1561 + <source_value>&#x5907;&#x8f66;</source_value>
  1562 + <target_value>6</target_value>
  1563 + </field>
  1564 + <field>
  1565 + <source_value>&#x6d4b;&#x8bd5;&#x8bbe;&#x5907;</source_value>
  1566 + <target_value>7</target_value>
  1567 + </field>
  1568 + </fields>
  1569 + <cluster_schema/>
  1570 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1571 + <xloc>521</xloc>
  1572 + <yloc>275</yloc>
  1573 + <draw>Y</draw>
  1574 + </GUI>
  1575 + </step>
  1576 +
  1577 + <step>
  1578 + <name>&#x8f66;&#x8f86;&#x7f16;&#x7801;</name>
  1579 + <type>Constant</type>
  1580 + <description/>
  1581 + <distribute>Y</distribute>
  1582 + <custom_distribution/>
  1583 + <copies>1</copies>
  1584 + <partitioning>
  1585 + <method>none</method>
  1586 + <schema_name/>
  1587 + </partitioning>
  1588 + <fields>
  1589 + <field>
  1590 + <name>carCode</name>
  1591 + <type>String</type>
  1592 + <format/>
  1593 + <currency/>
  1594 + <decimal/>
  1595 + <group/>
  1596 + <nullif>1</nullif>
  1597 + <length>-1</length>
  1598 + <precision>-1</precision>
  1599 + <set_empty_string>N</set_empty_string>
  1600 + </field>
  1601 + </fields>
  1602 + <cluster_schema/>
  1603 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1604 + <xloc>820</xloc>
  1605 + <yloc>272</yloc>
  1606 + <draw>Y</draw>
  1607 + </GUI>
  1608 + </step>
  1609 +
  1610 + <step>
  1611 + <name>&#x9519;&#x8bef;&#x8f93;&#x51fa; 2</name>
  1612 + <type>ExcelOutput</type>
  1613 + <description/>
  1614 + <distribute>Y</distribute>
  1615 + <custom_distribution/>
  1616 + <copies>1</copies>
  1617 + <partitioning>
  1618 + <method>none</method>
  1619 + <schema_name/>
  1620 + </partitioning>
  1621 + <header>Y</header>
  1622 + <footer>N</footer>
  1623 + <encoding/>
  1624 + <append>N</append>
  1625 + <add_to_result_filenames>Y</add_to_result_filenames>
  1626 + <file>
  1627 + <name>&#x24;&#x7b;erroroutputdir&#x7d;&#x2f;&#x8f66;&#x8f86;&#x57fa;&#x7840;&#x4fe1;&#x606f;_&#x9519;&#x8bef;</name>
  1628 + <extention>xls</extention>
  1629 + <do_not_open_newfile_init>N</do_not_open_newfile_init>
  1630 + <create_parent_folder>N</create_parent_folder>
  1631 + <split>N</split>
  1632 + <add_date>N</add_date>
  1633 + <add_time>N</add_time>
  1634 + <SpecifyFormat>N</SpecifyFormat>
  1635 + <date_time_format/>
  1636 + <sheetname>Sheet1</sheetname>
  1637 + <autosizecolums>N</autosizecolums>
  1638 + <nullisblank>N</nullisblank>
  1639 + <protect_sheet>N</protect_sheet>
  1640 + <password>Encrypted </password>
  1641 + <splitevery>0</splitevery>
  1642 + <usetempfiles>N</usetempfiles>
  1643 + <tempdirectory/>
  1644 + </file>
1459 1645 <template>
1460 1646 <enabled>N</enabled>
1461 1647 <append>N</append>
... ... @@ -1672,16 +1858,58 @@
1672 1858 </custom>
1673 1859 <cluster_schema/>
1674 1860 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1675   - <xloc>637</xloc>
1676   - <yloc>320</yloc>
  1861 + <xloc>633</xloc>
  1862 + <yloc>364</yloc>
  1863 + <draw>Y</draw>
  1864 + </GUI>
  1865 + </step>
  1866 +
  1867 + <step>
  1868 + <name>&#x516c;&#x4ea4;&#x4f01;&#x4e1a;&#x4ee3;&#x7801;&#x67e5;&#x8be2;</name>
  1869 + <type>DBLookup</type>
  1870 + <description/>
  1871 + <distribute>Y</distribute>
  1872 + <custom_distribution/>
  1873 + <copies>1</copies>
  1874 + <partitioning>
  1875 + <method>none</method>
  1876 + <schema_name/>
  1877 + </partitioning>
  1878 + <connection>bus_control_variable</connection>
  1879 + <cache>N</cache>
  1880 + <cache_load_all>N</cache_load_all>
  1881 + <cache_size>0</cache_size>
  1882 + <lookup>
  1883 + <schema/>
  1884 + <table>bsth_c_business</table>
  1885 + <orderby/>
  1886 + <fail_on_multiple>N</fail_on_multiple>
  1887 + <eat_row_on_failure>N</eat_row_on_failure>
  1888 + <key>
  1889 + <name>company</name>
  1890 + <field>business_name</field>
  1891 + <condition>&#x3d;</condition>
  1892 + <name2/>
  1893 + </key>
  1894 + <value>
  1895 + <name>business_code</name>
  1896 + <rename>businessCode</rename>
  1897 + <default/>
  1898 + <type>String</type>
  1899 + </value>
  1900 + </lookup>
  1901 + <cluster_schema/>
  1902 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1903 + <xloc>839</xloc>
  1904 + <yloc>169</yloc>
1677 1905 <draw>Y</draw>
1678 1906 </GUI>
1679 1907 </step>
1680 1908  
1681 1909 <step_error_handling>
1682 1910 <error>
1683   - <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars</source_step>
1684   - <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa;</target_step>
  1911 + <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars 2</source_step>
  1912 + <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa; 2</target_step>
1685 1913 <is_enabled>Y</is_enabled>
1686 1914 <nr_valuename>error_count</nr_valuename>
1687 1915 <descriptions_valuename>error_desc</descriptions_valuename>
... ...
src/main/resources/datatools/ktrs/carsDataOutput.ktr 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>carsDataOutput</name>
  5 + <description>&#x8f66;&#x8f86;&#x4fe1;&#x606f;&#x5bfc;&#x51fa;</description>
  6 + <extended_description>&#x8f66;&#x8f86;&#x57fa;&#x7840;&#x4fe1;&#x606f;</extended_description>
  7 + <trans_version/>
  8 + <trans_type>Normal</trans_type>
  9 + <trans_status>0</trans_status>
  10 + <directory>&#x2f;</directory>
  11 + <parameters>
  12 + <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>2016&#x2f;08&#x2f;05 16&#x3a;42&#x3a;22.753</created_date>
  76 + <modified_user>-</modified_user>
  77 + <modified_date>2016&#x2f;08&#x2f;05 16&#x3a;42&#x3a;22.753</modified_date>
  78 + <key_for_session_key/>
  79 + <is_key_private>N</is_key_private>
  80 + </info>
  81 + <notepads>
  82 + </notepads>
  83 + <connection>
  84 + <name>bus_control_variable</name>
  85 + <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
  86 + <type>MYSQL</type>
  87 + <access>Native</access>
  88 + <database>control</database>
  89 + <port>3306</port>
  90 + <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
  91 + <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
  92 + <servername/>
  93 + <data_tablespace/>
  94 + <index_tablespace/>
  95 + <attributes>
  96 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  97 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  98 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  99 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  100 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  101 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  102 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  103 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  104 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  105 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  106 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  107 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  108 + </attributes>
  109 + </connection>
  110 + <connection>
  111 + <name>bus_control_&#x516c;&#x53f8;_201</name>
  112 + <server>localhost</server>
  113 + <type>MYSQL</type>
  114 + <access>Native</access>
  115 + <database>control</database>
  116 + <port>3306</port>
  117 + <username>root</username>
  118 + <password>Encrypted </password>
  119 + <servername/>
  120 + <data_tablespace/>
  121 + <index_tablespace/>
  122 + <attributes>
  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_&#x672c;&#x673a;</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>Y</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>xlab_mysql_youle</name>
  166 + <server>101.231.124.8</server>
  167 + <type>MYSQL</type>
  168 + <access>Native</access>
  169 + <database>xlab_youle</database>
  170 + <port>45687</port>
  171 + <username>xlab-youle</username>
  172 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</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>45687</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>N</attribute></attribute>
  187 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  188 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  189 + </attributes>
  190 + </connection>
  191 + <connection>
  192 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  193 + <server>localhost</server>
  194 + <type>MYSQL</type>
  195 + <access>Native</access>
  196 + <database>xlab_youle</database>
  197 + <port>3306</port>
  198 + <username>root</username>
  199 + <password>Encrypted </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>3306</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_youle</name>
  220 + <server/>
  221 + <type>MYSQL</type>
  222 + <access>JNDI</access>
  223 + <database>xlab_youle</database>
  224 + <port>1521</port>
  225 + <username/>
  226 + <password>Encrypted </password>
  227 + <servername/>
  228 + <data_tablespace/>
  229 + <index_tablespace/>
  230 + <attributes>
  231 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  232 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  233 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  234 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  235 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  236 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  237 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  238 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  239 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  240 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  241 + </attributes>
  242 + </connection>
  243 + <order>
  244 + <hop> <from>&#x8868;&#x8f93;&#x5165;</from><to>Excel&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
  245 + </order>
  246 + <step>
  247 + <name>&#x8868;&#x8f93;&#x5165;</name>
  248 + <type>TableInput</type>
  249 + <description/>
  250 + <distribute>Y</distribute>
  251 + <custom_distribution/>
  252 + <copies>1</copies>
  253 + <partitioning>
  254 + <method>none</method>
  255 + <schema_name/>
  256 + </partitioning>
  257 + <connection>bus_control_variable</connection>
  258 + <sql>SELECT &#x2a; FROM control.bsth_c_cars&#x3b;</sql>
  259 + <limit>0</limit>
  260 + <lookup/>
  261 + <execute_each_row>N</execute_each_row>
  262 + <variables_active>N</variables_active>
  263 + <lazy_conversion_active>N</lazy_conversion_active>
  264 + <cluster_schema/>
  265 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  266 + <xloc>105</xloc>
  267 + <yloc>67</yloc>
  268 + <draw>Y</draw>
  269 + </GUI>
  270 + </step>
  271 +
  272 + <step>
  273 + <name>Excel&#x8f93;&#x51fa;</name>
  274 + <type>ExcelOutput</type>
  275 + <description/>
  276 + <distribute>Y</distribute>
  277 + <custom_distribution/>
  278 + <copies>1</copies>
  279 + <partitioning>
  280 + <method>none</method>
  281 + <schema_name/>
  282 + </partitioning>
  283 + <header>Y</header>
  284 + <footer>N</footer>
  285 + <encoding/>
  286 + <append>N</append>
  287 + <add_to_result_filenames>Y</add_to_result_filenames>
  288 + <file>
  289 + <name>&#x24;&#x7b;filepath&#x7d;</name>
  290 + <extention/>
  291 + <do_not_open_newfile_init>N</do_not_open_newfile_init>
  292 + <create_parent_folder>N</create_parent_folder>
  293 + <split>N</split>
  294 + <add_date>N</add_date>
  295 + <add_time>N</add_time>
  296 + <SpecifyFormat>N</SpecifyFormat>
  297 + <date_time_format>yyyyMMddHHmmss</date_time_format>
  298 + <sheetname>&#x5de5;&#x4f5c;&#x8868;1</sheetname>
  299 + <autosizecolums>N</autosizecolums>
  300 + <nullisblank>N</nullisblank>
  301 + <protect_sheet>N</protect_sheet>
  302 + <password>Encrypted </password>
  303 + <splitevery>0</splitevery>
  304 + <usetempfiles>N</usetempfiles>
  305 + <tempdirectory/>
  306 + </file>
  307 + <template>
  308 + <enabled>N</enabled>
  309 + <append>N</append>
  310 + <filename>template.xls</filename>
  311 + </template>
  312 + <fields>
  313 + <field>
  314 + <name>id</name>
  315 + <type>Integer</type>
  316 + <format/>
  317 + </field>
  318 + <field>
  319 + <name>branche_company</name>
  320 + <type>String</type>
  321 + <format/>
  322 + </field>
  323 + <field>
  324 + <name>branche_company_code</name>
  325 + <type>String</type>
  326 + <format/>
  327 + </field>
  328 + <field>
  329 + <name>business_code</name>
  330 + <type>String</type>
  331 + <format/>
  332 + </field>
  333 + <field>
  334 + <name>car_class</name>
  335 + <type>String</type>
  336 + <format/>
  337 + </field>
  338 + <field>
  339 + <name>car_code</name>
  340 + <type>String</type>
  341 + <format/>
  342 + </field>
  343 + <field>
  344 + <name>car_gride</name>
  345 + <type>String</type>
  346 + <format/>
  347 + </field>
  348 + <field>
  349 + <name>car_number_one</name>
  350 + <type>String</type>
  351 + <format/>
  352 + </field>
  353 + <field>
  354 + <name>car_number_two</name>
  355 + <type>String</type>
  356 + <format/>
  357 + </field>
  358 + <field>
  359 + <name>car_ordinal</name>
  360 + <type>String</type>
  361 + <format/>
  362 + </field>
  363 + <field>
  364 + <name>car_plate</name>
  365 + <type>String</type>
  366 + <format/>
  367 + </field>
  368 + <field>
  369 + <name>car_seatn_number</name>
  370 + <type>Integer</type>
  371 + <format/>
  372 + </field>
  373 + <field>
  374 + <name>car_standard</name>
  375 + <type>String</type>
  376 + <format/>
  377 + </field>
  378 + <field>
  379 + <name>car_type</name>
  380 + <type>String</type>
  381 + <format/>
  382 + </field>
  383 + <field>
  384 + <name>close_date</name>
  385 + <type>Timestamp</type>
  386 + <format/>
  387 + </field>
  388 + <field>
  389 + <name>company</name>
  390 + <type>String</type>
  391 + <format/>
  392 + </field>
  393 + <field>
  394 + <name>create_date</name>
  395 + <type>Timestamp</type>
  396 + <format/>
  397 + </field>
  398 + <field>
  399 + <name>descriptions</name>
  400 + <type>String</type>
  401 + <format/>
  402 + </field>
  403 + <field>
  404 + <name>emissions_standard</name>
  405 + <type>String</type>
  406 + <format/>
  407 + </field>
  408 + <field>
  409 + <name>engine_code_one</name>
  410 + <type>String</type>
  411 + <format/>
  412 + </field>
  413 + <field>
  414 + <name>engine_code_two</name>
  415 + <type>String</type>
  416 + <format/>
  417 + </field>
  418 + <field>
  419 + <name>equipment_code</name>
  420 + <type>String</type>
  421 + <format/>
  422 + </field>
  423 + <field>
  424 + <name>gburn_standard</name>
  425 + <type>Number</type>
  426 + <format/>
  427 + </field>
  428 + <field>
  429 + <name>hvac_car</name>
  430 + <type>Boolean</type>
  431 + <format/>
  432 + </field>
  433 + <field>
  434 + <name>inside_code</name>
  435 + <type>String</type>
  436 + <format/>
  437 + </field>
  438 + <field>
  439 + <name>is_switch</name>
  440 + <type>Integer</type>
  441 + <format/>
  442 + </field>
  443 + <field>
  444 + <name>kburn_standard</name>
  445 + <type>Number</type>
  446 + <format/>
  447 + </field>
  448 + <field>
  449 + <name>led_screen</name>
  450 + <type>Boolean</type>
  451 + <format/>
  452 + </field>
  453 + <field>
  454 + <name>make_code_one</name>
  455 + <type>String</type>
  456 + <format/>
  457 + </field>
  458 + <field>
  459 + <name>make_code_two</name>
  460 + <type>String</type>
  461 + <format/>
  462 + </field>
  463 + <field>
  464 + <name>open_date</name>
  465 + <type>Timestamp</type>
  466 + <format/>
  467 + </field>
  468 + <field>
  469 + <name>operators_state</name>
  470 + <type>String</type>
  471 + <format/>
  472 + </field>
  473 + <field>
  474 + <name>scrap_code</name>
  475 + <type>String</type>
  476 + <format/>
  477 + </field>
  478 + <field>
  479 + <name>scrap_date</name>
  480 + <type>Timestamp</type>
  481 + <format/>
  482 + </field>
  483 + <field>
  484 + <name>scrap_state</name>
  485 + <type>Boolean</type>
  486 + <format/>
  487 + </field>
  488 + <field>
  489 + <name>sfdc</name>
  490 + <type>Boolean</type>
  491 + <format/>
  492 + </field>
  493 + <field>
  494 + <name>speed</name>
  495 + <type>Number</type>
  496 + <format/>
  497 + </field>
  498 + <field>
  499 + <name>supplier_name</name>
  500 + <type>String</type>
  501 + <format/>
  502 + </field>
  503 + <field>
  504 + <name>ticket_type</name>
  505 + <type>Boolean</type>
  506 + <format/>
  507 + </field>
  508 + <field>
  509 + <name>tv_video_type</name>
  510 + <type>Boolean</type>
  511 + <format/>
  512 + </field>
  513 + <field>
  514 + <name>update_date</name>
  515 + <type>Timestamp</type>
  516 + <format/>
  517 + </field>
  518 + <field>
  519 + <name>vehicle_stats</name>
  520 + <type>String</type>
  521 + <format/>
  522 + </field>
  523 + <field>
  524 + <name>video_code</name>
  525 + <type>String</type>
  526 + <format/>
  527 + </field>
  528 + <field>
  529 + <name>xlmc</name>
  530 + <type>String</type>
  531 + <format/>
  532 + </field>
  533 + <field>
  534 + <name>create_by</name>
  535 + <type>Integer</type>
  536 + <format/>
  537 + </field>
  538 + <field>
  539 + <name>update_by</name>
  540 + <type>Integer</type>
  541 + <format/>
  542 + </field>
  543 + </fields>
  544 + <custom>
  545 + <header_font_name>arial</header_font_name>
  546 + <header_font_size>10</header_font_size>
  547 + <header_font_bold>N</header_font_bold>
  548 + <header_font_italic>N</header_font_italic>
  549 + <header_font_underline>no</header_font_underline>
  550 + <header_font_orientation>horizontal</header_font_orientation>
  551 + <header_font_color>black</header_font_color>
  552 + <header_background_color>none</header_background_color>
  553 + <header_row_height>255</header_row_height>
  554 + <header_alignment>left</header_alignment>
  555 + <header_image/>
  556 + <row_font_name>arial</row_font_name>
  557 + <row_font_size>10</row_font_size>
  558 + <row_font_color>black</row_font_color>
  559 + <row_background_color>none</row_background_color>
  560 + </custom>
  561 + <cluster_schema/>
  562 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  563 + <xloc>305</xloc>
  564 + <yloc>67</yloc>
  565 + <draw>Y</draw>
  566 + </GUI>
  567 + </step>
  568 +
  569 + <step_error_handling>
  570 + </step_error_handling>
  571 + <slave-step-copy-partition-distribution>
  572 +</slave-step-copy-partition-distribution>
  573 + <slave_transformation>N</slave_transformation>
  574 +
  575 +</transformation>
... ...
src/main/resources/static/pages/scheduleApp/module/basicInfo/busInfoManage/busInfoManage.js
... ... @@ -63,11 +63,20 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;BusInfoManageService&#39;, [&#39;BusInfoManageSer
63 63 */
64 64 saveDetail: function(obj) {
65 65 return service.rest.save(obj).$promise;
  66 + },
  67 + /**
  68 + * 数据导出。
  69 + * @returns {*|Function|promise|n}
  70 + */
  71 + dataExport: function() {
  72 + return service.dataTools.dataExport().$promise;
66 73 }
67 74 };
68 75 }]);
69 76  
70   -angular.module('ScheduleApp').controller('BusInfoManageCtrl', ['BusInfoManageService','$state', '$uibModal', function(busInfoManageService, $state, $uibModal) {
  77 +angular.module('ScheduleApp').controller('BusInfoManageCtrl', [
  78 + 'BusInfoManageService','$state', '$uibModal', 'FileDownload_g',
  79 + function(busInfoManageService, $state, $uibModal, fileDownload) {
71 80 var self = this;
72 81  
73 82 // 切换到form状态
... ... @@ -101,6 +110,18 @@ angular.module(&#39;ScheduleApp&#39;).controller(&#39;BusInfoManageCtrl&#39;, [&#39;BusInfoManageSer
101 110 }
102 111 );
103 112 };
  113 +
  114 + // 导出excel
  115 + self.exportData = function() {
  116 + busInfoManageService.dataExport().then(
  117 + function(result) {
  118 + fileDownload.downloadFile(result.data, "application/octet-stream", "车辆基础信息.xls");
  119 + },
  120 + function(result) {
  121 + console.log("exportData failed:" + result);
  122 + }
  123 + );
  124 + };
104 125 }]);
105 126  
106 127 angular.module('ScheduleApp').controller('BusInfoManageToolsCtrl', ['$modalInstance', 'FileUploader', function($modalInstance, FileUploader) {
... ...
src/main/resources/static/pages/scheduleApp/module/basicInfo/busInfoManage/index.html
... ... @@ -46,18 +46,18 @@
46 46 </a>
47 47 </li>
48 48 <li>
49   - <a href="javascript:" class="tool-action">
  49 + <a href="javascript:" class="tool-action" ng-click="ctrl.exportData()">
50 50 <i class="fa fa-file-excel-o"></i>
51 51 导出excel
52 52 </a>
53 53 </li>
54   - <li class="divider"></li>
55   - <li>
56   - <a href="javascript:" class="tool-action">
57   - <i class="fa fa-download"></i>
58   - excel模版
59   - </a>
60   - </li>
  54 + <!--<li class="divider"></li>-->
  55 + <!--<li>-->
  56 + <!--<a href="javascript:" class="tool-action">-->
  57 + <!--<i class="fa fa-download"></i>-->
  58 + <!--excel模版-->
  59 + <!--</a>-->
  60 + <!--</li>-->
61 61 </ul>
62 62 </div>
63 63 </div>
... ...
src/main/resources/static/pages/scheduleApp/module/common/prj-common-globalservice.js
1 1 // 项目通用的全局service服务,供不同的controller使用,自定义指令不使用
2 2  
  3 +// 文件下载服务
  4 +angular.module('ScheduleApp').factory('FileDownload_g', function() {
  5 + return {
  6 + downloadFile: function (data, mimeType, fileName) {
  7 + var success = false;
  8 + var blob = new Blob([data], { type: mimeType });
  9 + try {
  10 + if (navigator.msSaveBlob)
  11 + navigator.msSaveBlob(blob, fileName);
  12 + else {
  13 + // Try using other saveBlob implementations, if available
  14 + var saveBlob = navigator.webkitSaveBlob || navigator.mozSaveBlob || navigator.saveBlob;
  15 + if (saveBlob === undefined) throw "Not supported";
  16 + saveBlob(blob, fileName);
  17 + }
  18 + success = true;
  19 + } catch (ex) {
  20 + console.log("saveBlob method failed with the following exception:");
  21 + console.log(ex);
  22 + }
  23 +
  24 + if (!success) {
  25 + // Get the blob url creator
  26 + var urlCreator = window.URL || window.webkitURL || window.mozURL || window.msURL;
  27 + if (urlCreator) {
  28 + // Try to use a download link
  29 + var link = document.createElement('a');
  30 + if ('download' in link) {
  31 + // Try to simulate a click
  32 + try {
  33 + // Prepare a blob URL
  34 + var url = urlCreator.createObjectURL(blob);
  35 + link.setAttribute('href', url);
  36 +
  37 + // Set the download attribute (Supported in Chrome 14+ / Firefox 20+)
  38 + link.setAttribute("download", fileName);
  39 +
  40 + // Simulate clicking the download link
  41 + var event = document.createEvent('MouseEvents');
  42 + event.initMouseEvent('click', true, true, window, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
  43 + link.dispatchEvent(event);
  44 + success = true;
  45 +
  46 + } catch (ex) {
  47 + console.log("Download link method with simulated click failed with the following exception:");
  48 + console.log(ex);
  49 + }
  50 + }
  51 +
  52 + if (!success) {
  53 + // Fallback to window.location method
  54 + try {
  55 + // Prepare a blob URL
  56 + // Use application/octet-stream when using window.location to force download
  57 + var url = urlCreator.createObjectURL(blob);
  58 + window.location = url;
  59 + console.log("Download link method with window.location succeeded");
  60 + success = true;
  61 + } catch (ex) {
  62 + console.log("Download link method with window.location failed with the following exception:");
  63 + console.log(ex);
  64 + }
  65 + }
  66 + }
  67 + }
  68 +
  69 + if (!success) {
  70 + // Fallback to window.open method
  71 + console.log("No methods worked for saving the arraybuffer, using last resort window.open");
  72 + window.open("", '_blank', '');
  73 + }
  74 + }
  75 + };
  76 +});
  77 +
3 78 // 车辆信息service
4 79 angular.module('ScheduleApp').factory('BusInfoManageService_g', ['$resource', function($resource) {
5 80 return {
... ... @@ -29,6 +104,22 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;BusInfoManageService_g&#39;, [&#39;$resource&#39;, fu
29 104 method: 'GET'
30 105 }
31 106 }
  107 + ),
  108 + dataTools: $resource(
  109 + '/cars/:type',
  110 + {},
  111 + {
  112 + dataExport: {
  113 + method: 'GET',
  114 + responseType: "arraybuffer",
  115 + params: {
  116 + type: "dataExport"
  117 + },
  118 + transformResponse: function(data, headers){
  119 + return {data : data};
  120 + }
  121 + }
  122 + }
32 123 )
33 124 };
34 125 }]);
... ...