Commit 9f777d7e2a26af9520eeb6ce0d0daec03e4a3f90

Authored by 徐烜
1 parent d49b419f

update

src/main/java/com/bsth/controller/schedule/EmployeeConfigInfoController.java
@@ -2,6 +2,9 @@ package com.bsth.controller.schedule; @@ -2,6 +2,9 @@ package com.bsth.controller.schedule;
2 2
3 import com.bsth.controller.BaseController; 3 import com.bsth.controller.BaseController;
4 import com.bsth.entity.schedule.EmployeeConfigInfo; 4 import com.bsth.entity.schedule.EmployeeConfigInfo;
  5 +import com.bsth.service.schedule.utils.DataToolsProperties;
  6 +import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.boot.context.properties.EnableConfigurationProperties;
5 import org.springframework.web.bind.annotation.RequestMapping; 8 import org.springframework.web.bind.annotation.RequestMapping;
6 import org.springframework.web.bind.annotation.RestController; 9 import org.springframework.web.bind.annotation.RestController;
7 10
@@ -10,5 +13,13 @@ import org.springframework.web.bind.annotation.RestController; @@ -10,5 +13,13 @@ import org.springframework.web.bind.annotation.RestController;
10 */ 13 */
11 @RestController 14 @RestController
12 @RequestMapping("eci") 15 @RequestMapping("eci")
  16 +@EnableConfigurationProperties(DataToolsProperties.class)
13 public class EmployeeConfigInfoController extends BaseController<EmployeeConfigInfo, Long> { 17 public class EmployeeConfigInfoController extends BaseController<EmployeeConfigInfo, Long> {
  18 + @Autowired
  19 + private DataToolsProperties dataToolsProperties;
  20 +
  21 + @Override
  22 + protected String getDataImportKtrClasspath() {
  23 + return dataToolsProperties.getEmployeesconfigDatainputktr();
  24 + }
14 } 25 }
src/main/java/com/bsth/entity/schedule/TTInfo.java
@@ -11,6 +11,11 @@ import java.util.Date; @@ -11,6 +11,11 @@ import java.util.Date;
11 */ 11 */
12 @Entity 12 @Entity
13 @Table(name="bsth_c_s_ttinfo") 13 @Table(name="bsth_c_s_ttinfo")
  14 +@NamedEntityGraphs({
  15 + @NamedEntityGraph(name = "ttInfo_xl", attributeNodes = {
  16 + @NamedAttributeNode("xl")
  17 + })
  18 +})
14 public class TTInfo { 19 public class TTInfo {
15 20
16 /** 主键Id */ 21 /** 主键Id */
src/main/java/com/bsth/repository/schedule/EmployeeConfigInfoRepository.java
@@ -5,6 +5,9 @@ import com.bsth.repository.BaseRepository; @@ -5,6 +5,9 @@ import com.bsth.repository.BaseRepository;
5 5
6 import java.util.List; 6 import java.util.List;
7 7
  8 +import org.springframework.data.domain.Page;
  9 +import org.springframework.data.domain.Pageable;
  10 +import org.springframework.data.jpa.domain.Specification;
8 import org.springframework.data.jpa.repository.EntityGraph; 11 import org.springframework.data.jpa.repository.EntityGraph;
9 import org.springframework.data.jpa.repository.Query; 12 import org.springframework.data.jpa.repository.Query;
10 import org.springframework.stereotype.Repository; 13 import org.springframework.stereotype.Repository;
@@ -18,4 +21,8 @@ public interface EmployeeConfigInfoRepository extends BaseRepository&lt;EmployeeCon @@ -18,4 +21,8 @@ public interface EmployeeConfigInfoRepository extends BaseRepository&lt;EmployeeCon
18 @EntityGraph(value = "employeeConfigInfo_xl_cl", type = EntityGraph.EntityGraphType.FETCH) 21 @EntityGraph(value = "employeeConfigInfo_xl_cl", type = EntityGraph.EntityGraphType.FETCH)
19 @Query("select ec from EmployeeConfigInfo ec where ec.xl.lineCode=?1") 22 @Query("select ec from EmployeeConfigInfo ec where ec.xl.lineCode=?1")
20 List<EmployeeConfigInfo> findBylineCode(String lineCode); 23 List<EmployeeConfigInfo> findBylineCode(String lineCode);
  24 +
  25 + @EntityGraph(value = "employeeConfigInfo_xl_cl", type = EntityGraph.EntityGraphType.FETCH)
  26 + @Override
  27 + Page<EmployeeConfigInfo> findAll(Specification<EmployeeConfigInfo> spec, Pageable pageable);
21 } 28 }
src/main/java/com/bsth/repository/schedule/TTInfoRepository.java
@@ -2,6 +2,10 @@ package com.bsth.repository.schedule; @@ -2,6 +2,10 @@ package com.bsth.repository.schedule;
2 2
3 import com.bsth.entity.schedule.TTInfo; 3 import com.bsth.entity.schedule.TTInfo;
4 import com.bsth.repository.BaseRepository; 4 import com.bsth.repository.BaseRepository;
  5 +import org.springframework.data.domain.Page;
  6 +import org.springframework.data.domain.Pageable;
  7 +import org.springframework.data.jpa.domain.Specification;
  8 +import org.springframework.data.jpa.repository.EntityGraph;
5 import org.springframework.stereotype.Repository; 9 import org.springframework.stereotype.Repository;
6 10
7 /** 11 /**
@@ -9,4 +13,8 @@ import org.springframework.stereotype.Repository; @@ -9,4 +13,8 @@ import org.springframework.stereotype.Repository;
9 */ 13 */
10 @Repository 14 @Repository
11 public interface TTInfoRepository extends BaseRepository<TTInfo, Long> { 15 public interface TTInfoRepository extends BaseRepository<TTInfo, Long> {
  16 +
  17 + @EntityGraph(value = "ttInfo_xl", type = EntityGraph.EntityGraphType.FETCH)
  18 + @Override
  19 + Page<TTInfo> findAll(Specification<TTInfo> spec, Pageable pageable);
12 } 20 }
src/main/java/com/bsth/service/schedule/utils/DataToolsProperties.java
@@ -34,6 +34,9 @@ public class DataToolsProperties { @@ -34,6 +34,9 @@ public class DataToolsProperties {
34 /** 车辆配置信息导入 */ 34 /** 车辆配置信息导入 */
35 @NotNull 35 @NotNull
36 private String carsconfigDatainputktr; 36 private String carsconfigDatainputktr;
  37 + /** 人员配置信息导入 */
  38 + @NotNull
  39 + private String employeesconfigDatainputktr;
37 40
38 // TODO: 41 // TODO:
39 42
@@ -84,4 +87,12 @@ public class DataToolsProperties { @@ -84,4 +87,12 @@ public class DataToolsProperties {
84 public void setCarsconfigDatainputktr(String carsconfigDatainputktr) { 87 public void setCarsconfigDatainputktr(String carsconfigDatainputktr) {
85 this.carsconfigDatainputktr = carsconfigDatainputktr; 88 this.carsconfigDatainputktr = carsconfigDatainputktr;
86 } 89 }
  90 +
  91 + public String getEmployeesconfigDatainputktr() {
  92 + return employeesconfigDatainputktr;
  93 + }
  94 +
  95 + public void setEmployeesconfigDatainputktr(String employeesconfigDatainputktr) {
  96 + this.employeesconfigDatainputktr = employeesconfigDatainputktr;
  97 + }
87 } 98 }
src/main/resources/datatools/config.properties
1 -<<<<<<< HEAD  
2 # 配置数据导入导出用到的配置信息 1 # 配置数据导入导出用到的配置信息
3 2
4 # 上传文件目录配置(根据不同的环境需要修正) 3 # 上传文件目录配置(根据不同的环境需要修正)
@@ -20,29 +19,6 @@ datatools.employees_datainputktr=/datatools/ktrs/employeesDataInput.ktr @@ -20,29 +19,6 @@ datatools.employees_datainputktr=/datatools/ktrs/employeesDataInput.ktr
20 # 车辆配置信息导入 19 # 车辆配置信息导入
21 datatools.carsconfig_datainputktr=/datatools/ktrs/carsConfigDataInput.ktr 20 datatools.carsconfig_datainputktr=/datatools/ktrs/carsConfigDataInput.ktr
22 # 人员配置信息导入 21 # 人员配置信息导入
  22 +datatools.employeesconfig_datainputktr=/datatools/ktrs/employeesConfigDataInput.ktr
23 23
24 -=======  
25 -# 配置数据导入导出用到的配置信息  
26 -  
27 -# 上传文件目录配置(根据不同的环境需要修正)  
28 -datatools.fileupload_dir=/Users/xu/resource/project/bsth_control_u_d_files  
29 -# ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正)  
30 -datatools.trans_errordir=/Users/xu/resource/project/bsth_control_u_d_files/erroroutput  
31 -  
32 -# 以下是封装数据导入导出逻辑的ktr转换文件,类路径,以后考虑放到数据库中  
33 -# 测试temp的ktr转换文件  
34 -datatools.temp_datainputktr=/datatools/ktrs/test.ktr  
35 -# 车辆信息导入ktr转换  
36 -datatools.cars_datainputktr=/datatools/ktrs/carsDataInput.ktr  
37 -# 人员信息导入  
38 -datatools.employees_datainputktr=/datatools/ktrs/employeesDataInput.ktr  
39 -# 时刻表基础信息导入  
40 -  
41 -# 时刻明细信息导入  
42 -  
43 -# 车辆配置信息导入  
44 -  
45 -# 人员配置信息导入  
46 -  
47 ->>>>>>> 502f6f7ff3ff76f0f6b6dbdac8a353604a7d5626  
48 -# 排班规则信息导入**  
49 \ No newline at end of file 24 \ No newline at end of file
  25 +# 排班规则信息导入
50 \ No newline at end of file 26 \ No newline at end of file
src/main/resources/datatools/ktrs/employeesConfigDataInput.ktr 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>employeesConfigDataInput</name>
  5 + <description>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description>
  6 + <extended_description>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#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>erroroutputdir</name>
  14 + <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/>
  20 + <description>&#x5f85;&#x5904;&#x7406;&#x5bfc;&#x5165;&#x7684;excel&#x6587;&#x4ef6;</description>
  21 + </parameter>
  22 + </parameters>
  23 + <log>
  24 +<trans-log-table><connection/>
  25 +<schema/>
  26 +<table/>
  27 +<size_limit_lines/>
  28 +<interval/>
  29 +<timeout_days/>
  30 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table>
  31 +<perf-log-table><connection/>
  32 +<schema/>
  33 +<table/>
  34 +<interval/>
  35 +<timeout_days/>
  36 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table>
  37 +<channel-log-table><connection/>
  38 +<schema/>
  39 +<table/>
  40 +<timeout_days/>
  41 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table>
  42 +<step-log-table><connection/>
  43 +<schema/>
  44 +<table/>
  45 +<timeout_days/>
  46 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table>
  47 +<metrics-log-table><connection/>
  48 +<schema/>
  49 +<table/>
  50 +<timeout_days/>
  51 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table>
  52 + </log>
  53 + <maxdate>
  54 + <connection/>
  55 + <table/>
  56 + <field/>
  57 + <offset>0.0</offset>
  58 + <maxdiff>0.0</maxdiff>
  59 + </maxdate>
  60 + <size_rowset>10000</size_rowset>
  61 + <sleep_time_empty>50</sleep_time_empty>
  62 + <sleep_time_full>50</sleep_time_full>
  63 + <unique_connections>N</unique_connections>
  64 + <feedback_shown>Y</feedback_shown>
  65 + <feedback_size>50000</feedback_size>
  66 + <using_thread_priorities>Y</using_thread_priorities>
  67 + <shared_objects_file/>
  68 + <capture_step_performance>N</capture_step_performance>
  69 + <step_performance_capturing_delay>1000</step_performance_capturing_delay>
  70 + <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
  71 + <dependencies>
  72 + </dependencies>
  73 + <partitionschemas>
  74 + </partitionschemas>
  75 + <slaveservers>
  76 + </slaveservers>
  77 + <clusterschemas>
  78 + </clusterschemas>
  79 + <created_user>-</created_user>
  80 + <created_date>2016&#x2f;06&#x2f;29 15&#x3a;12&#x3a;27.273</created_date>
  81 + <modified_user>-</modified_user>
  82 + <modified_date>2016&#x2f;06&#x2f;29 15&#x3a;12&#x3a;27.273</modified_date>
  83 + <key_for_session_key/>
  84 + <is_key_private>N</is_key_private>
  85 + </info>
  86 + <notepads>
  87 + <notepad>
  88 + <note>&#x539f;&#x7cfb;&#x7edf;&#x7684;&#x8868;&#x4e2d;&#xff0c;&#x8f66;&#x8f86;&#x5185;&#x90e8;&#x7f16;&#x7801;&#x662f;&#x6ca1;&#x7684;&#xff0c;&#xa;&#x642d;&#x73ed;&#x7f16;&#x7801; &#x8fd9;&#x4e2a;&#x8c8c;&#x4f3c;&#x7528;&#x4e8e;&#x9a7e;&#x9a76;&#x5458;&#x548c;&#x552e;&#x7968;&#x5458;&#x7528;&#x7684;&#xff0c;&#x597d;&#x50cf;&#x4e0d;&#x80fd;&#x4e00;&#x6837;&#x7684;&#xa;&#x8f66;&#x8f86;&#x5185;&#x90e8;&#x7f16;&#x7801; &#x6ca1;&#x6709;&#x6682;&#x65f6;&#x7a7a;&#x7740;</note>
  89 + <xloc>252</xloc>
  90 + <yloc>178</yloc>
  91 + <width>341</width>
  92 + <heigth>58</heigth>
  93 + <fontname>YaHei Consolas Hybrid</fontname>
  94 + <fontsize>12</fontsize>
  95 + <fontbold>N</fontbold>
  96 + <fontitalic>N</fontitalic>
  97 + <fontcolorred>0</fontcolorred>
  98 + <fontcolorgreen>0</fontcolorgreen>
  99 + <fontcolorblue>0</fontcolorblue>
  100 + <backgroundcolorred>255</backgroundcolorred>
  101 + <backgroundcolorgreen>205</backgroundcolorgreen>
  102 + <backgroundcolorblue>112</backgroundcolorblue>
  103 + <bordercolorred>100</bordercolorred>
  104 + <bordercolorgreen>100</bordercolorgreen>
  105 + <bordercolorblue>100</bordercolorblue>
  106 + <drawshadow>Y</drawshadow>
  107 + </notepad>
  108 + </notepads>
  109 + <connection>
  110 + <name>bus_control_&#x516c;&#x53f8;_201</name>
  111 + <server>192.168.168.201</server>
  112 + <type>MYSQL</type>
  113 + <access>Native</access>
  114 + <database>control</database>
  115 + <port>3306</port>
  116 + <username>root</username>
  117 + <password>Encrypted 2be98afc86aa7f2e4cb79ff228dc6fa8c</password>
  118 + <servername/>
  119 + <data_tablespace/>
  120 + <index_tablespace/>
  121 + <attributes>
  122 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  123 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  124 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  125 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  126 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  127 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  128 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  129 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  130 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  131 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  132 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  133 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  134 + </attributes>
  135 + </connection>
  136 + <connection>
  137 + <name>xlab_mysql_youle</name>
  138 + <server>101.231.124.8</server>
  139 + <type>MYSQL</type>
  140 + <access>Native</access>
  141 + <database>xlab_youle</database>
  142 + <port>45687</port>
  143 + <username>xlab-youle</username>
  144 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
  145 + <servername/>
  146 + <data_tablespace/>
  147 + <index_tablespace/>
  148 + <attributes>
  149 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  150 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  151 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  152 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  153 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  154 + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
  155 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  156 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  157 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  158 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  159 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  160 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  161 + </attributes>
  162 + </connection>
  163 + <connection>
  164 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  165 + <server>localhost</server>
  166 + <type>MYSQL</type>
  167 + <access>Native</access>
  168 + <database>xlab_youle</database>
  169 + <port>3306</port>
  170 + <username>root</username>
  171 + <password>Encrypted </password>
  172 + <servername/>
  173 + <data_tablespace/>
  174 + <index_tablespace/>
  175 + <attributes>
  176 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  177 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  178 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  179 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  180 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  181 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  182 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  183 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  184 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  185 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  186 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  187 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  188 + </attributes>
  189 + </connection>
  190 + <connection>
  191 + <name>xlab_youle</name>
  192 + <server/>
  193 + <type>MYSQL</type>
  194 + <access>JNDI</access>
  195 + <database>xlab_youle</database>
  196 + <port>1521</port>
  197 + <username/>
  198 + <password>Encrypted </password>
  199 + <servername/>
  200 + <data_tablespace/>
  201 + <index_tablespace/>
  202 + <attributes>
  203 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  204 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  205 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  206 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  207 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  208 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  209 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  210 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  211 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  212 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  213 + </attributes>
  214 + </connection>
  215 + <order>
  216 + <hop> <from>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
  217 + <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x67e5;&#x8be2;&#x7ebf;&#x8def;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
  218 + <hop> <from>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
  219 + <hop> <from>&#x67e5;&#x8be2;&#x552e;&#x7968;&#x5458;&#x5173;&#x8054;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</to><enabled>Y</enabled> </hop>
  220 + <hop> <from>&#x67e5;&#x8be2;&#x7ebf;&#x8def;&#x5173;&#x8054;</from><to>&#x67e5;&#x8be2;&#x9a7e;&#x9a76;&#x5458;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
  221 + <hop> <from>&#x67e5;&#x8be2;&#x9a7e;&#x9a76;&#x5458;&#x5173;&#x8054;</from><to>&#x67e5;&#x8be2;&#x552e;&#x7968;&#x5458;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
  222 + <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>
  223 + </order>
  224 + <step>
  225 + <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name>
  226 + <type>ExcelInput</type>
  227 + <description/>
  228 + <distribute>Y</distribute>
  229 + <custom_distribution/>
  230 + <copies>1</copies>
  231 + <partitioning>
  232 + <method>none</method>
  233 + <schema_name/>
  234 + </partitioning>
  235 + <header>Y</header>
  236 + <noempty>Y</noempty>
  237 + <stoponempty>N</stoponempty>
  238 + <filefield/>
  239 + <sheetfield/>
  240 + <sheetrownumfield/>
  241 + <rownumfield/>
  242 + <sheetfield/>
  243 + <filefield/>
  244 + <limit>0</limit>
  245 + <encoding/>
  246 + <add_to_result_filenames>Y</add_to_result_filenames>
  247 + <accept_filenames>Y</accept_filenames>
  248 + <accept_field>filepath_</accept_field>
  249 + <accept_stepname>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</accept_stepname>
  250 + <file>
  251 + <name/>
  252 + <filemask/>
  253 + <exclude_filemask/>
  254 + <file_required>N</file_required>
  255 + <include_subfolders>N</include_subfolders>
  256 + </file>
  257 + <fields>
  258 + <field>
  259 + <name>&#x7ebf;&#x8def;</name>
  260 + <type>String</type>
  261 + <length>-1</length>
  262 + <precision>-1</precision>
  263 + <trim_type>none</trim_type>
  264 + <repeat>N</repeat>
  265 + <format/>
  266 + <currency/>
  267 + <decimal/>
  268 + <group/>
  269 + </field>
  270 + <field>
  271 + <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>
  272 + <type>String</type>
  273 + <length>-1</length>
  274 + <precision>-1</precision>
  275 + <trim_type>none</trim_type>
  276 + <repeat>N</repeat>
  277 + <format/>
  278 + <currency/>
  279 + <decimal/>
  280 + <group/>
  281 + </field>
  282 + <field>
  283 + <name>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</name>
  284 + <type>String</type>
  285 + <length>-1</length>
  286 + <precision>-1</precision>
  287 + <trim_type>none</trim_type>
  288 + <repeat>N</repeat>
  289 + <format/>
  290 + <currency/>
  291 + <decimal/>
  292 + <group/>
  293 + </field>
  294 + <field>
  295 + <name>&#x9a7e;&#x9a76;&#x5458;</name>
  296 + <type>String</type>
  297 + <length>-1</length>
  298 + <precision>-1</precision>
  299 + <trim_type>none</trim_type>
  300 + <repeat>N</repeat>
  301 + <format/>
  302 + <currency/>
  303 + <decimal/>
  304 + <group/>
  305 + </field>
  306 + <field>
  307 + <name>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</name>
  308 + <type>String</type>
  309 + <length>-1</length>
  310 + <precision>-1</precision>
  311 + <trim_type>none</trim_type>
  312 + <repeat>N</repeat>
  313 + <format/>
  314 + <currency/>
  315 + <decimal/>
  316 + <group/>
  317 + </field>
  318 + <field>
  319 + <name>&#x552e;&#x7968;&#x5458;</name>
  320 + <type>String</type>
  321 + <length>-1</length>
  322 + <precision>-1</precision>
  323 + <trim_type>none</trim_type>
  324 + <repeat>N</repeat>
  325 + <format/>
  326 + <currency/>
  327 + <decimal/>
  328 + <group/>
  329 + </field>
  330 + <field>
  331 + <name>&#x8f66;&#x8f86;</name>
  332 + <type>String</type>
  333 + <length>-1</length>
  334 + <precision>-1</precision>
  335 + <trim_type>none</trim_type>
  336 + <repeat>N</repeat>
  337 + <format/>
  338 + <currency/>
  339 + <decimal/>
  340 + <group/>
  341 + </field>
  342 + </fields>
  343 + <sheets>
  344 + <sheet>
  345 + <name>&#x5de5;&#x4f5c;&#x8868;1</name>
  346 + <startrow>0</startrow>
  347 + <startcol>0</startcol>
  348 + </sheet>
  349 + </sheets>
  350 + <strict_types>N</strict_types>
  351 + <error_ignored>N</error_ignored>
  352 + <error_line_skipped>N</error_line_skipped>
  353 + <bad_line_files_destination_directory/>
  354 + <bad_line_files_extension>warning</bad_line_files_extension>
  355 + <error_line_files_destination_directory/>
  356 + <error_line_files_extension>error</error_line_files_extension>
  357 + <line_number_files_destination_directory/>
  358 + <line_number_files_extension>line</line_number_files_extension>
  359 + <shortFileFieldName/>
  360 + <pathFieldName/>
  361 + <hiddenFieldName/>
  362 + <lastModificationTimeFieldName/>
  363 + <uriNameFieldName/>
  364 + <rootUriNameFieldName/>
  365 + <extensionFieldName/>
  366 + <sizeFieldName/>
  367 + <spreadsheet_type>JXL</spreadsheet_type>
  368 + <cluster_schema/>
  369 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  370 + <xloc>144</xloc>
  371 + <yloc>49</yloc>
  372 + <draw>Y</draw>
  373 + </GUI>
  374 + </step>
  375 +
  376 + <step>
  377 + <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
  378 + <type>SelectValues</type>
  379 + <description/>
  380 + <distribute>Y</distribute>
  381 + <custom_distribution/>
  382 + <copies>1</copies>
  383 + <partitioning>
  384 + <method>none</method>
  385 + <schema_name/>
  386 + </partitioning>
  387 + <fields> <field> <name>&#x7ebf;&#x8def;</name>
  388 + <rename>xl</rename>
  389 + <length>-2</length>
  390 + <precision>-2</precision>
  391 + </field> <field> <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>
  392 + <rename>dbbm</rename>
  393 + <length>-2</length>
  394 + <precision>-2</precision>
  395 + </field> <field> <name>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</name>
  396 + <rename>jsy_no</rename>
  397 + <length>-2</length>
  398 + <precision>-2</precision>
  399 + </field> <field> <name>&#x9a7e;&#x9a76;&#x5458;</name>
  400 + <rename>jsy_name</rename>
  401 + <length>-2</length>
  402 + <precision>-2</precision>
  403 + </field> <field> <name>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</name>
  404 + <rename>spy_no</rename>
  405 + <length>-2</length>
  406 + <precision>-2</precision>
  407 + </field> <field> <name>&#x552e;&#x7968;&#x5458;</name>
  408 + <rename>spy_name</rename>
  409 + <length>-2</length>
  410 + <precision>-2</precision>
  411 + </field> <field> <name>&#x8f66;&#x8f86;</name>
  412 + <rename>cl</rename>
  413 + <length>-2</length>
  414 + <precision>-2</precision>
  415 + </field> <select_unspecified>N</select_unspecified>
  416 + </fields> <cluster_schema/>
  417 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  418 + <xloc>294</xloc>
  419 + <yloc>50</yloc>
  420 + <draw>Y</draw>
  421 + </GUI>
  422 + </step>
  423 +
  424 + <step>
  425 + <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</name>
  426 + <type>InsertUpdate</type>
  427 + <description/>
  428 + <distribute>Y</distribute>
  429 + <custom_distribution/>
  430 + <copies>1</copies>
  431 + <partitioning>
  432 + <method>none</method>
  433 + <schema_name/>
  434 + </partitioning>
  435 + <connection>bus_control_&#x516c;&#x53f8;_201</connection>
  436 + <commit>100</commit>
  437 + <update_bypassed>N</update_bypassed>
  438 + <lookup>
  439 + <schema/>
  440 + <table>bsth_c_s_ecinfo</table>
  441 + <key>
  442 + <name>xlid</name>
  443 + <field>xl</field>
  444 + <condition>&#x3d;</condition>
  445 + <name2/>
  446 + </key>
  447 + <key>
  448 + <name>jsyid</name>
  449 + <field>jsy</field>
  450 + <condition>&#x3d;</condition>
  451 + <name2/>
  452 + </key>
  453 + <key>
  454 + <name>spyid</name>
  455 + <field>spy</field>
  456 + <condition>&#x3d;</condition>
  457 + <name2/>
  458 + </key>
  459 + <value>
  460 + <name>xl</name>
  461 + <rename>xlid</rename>
  462 + <update>Y</update>
  463 + </value>
  464 + <value>
  465 + <name>dbbm</name>
  466 + <rename>dbbm</rename>
  467 + <update>Y</update>
  468 + </value>
  469 + <value>
  470 + <name>jsy</name>
  471 + <rename>jsyid</rename>
  472 + <update>Y</update>
  473 + </value>
  474 + <value>
  475 + <name>spy</name>
  476 + <rename>spyid</rename>
  477 + <update>Y</update>
  478 + </value>
  479 + </lookup>
  480 + <cluster_schema/>
  481 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  482 + <xloc>721</xloc>
  483 + <yloc>181</yloc>
  484 + <draw>Y</draw>
  485 + </GUI>
  486 + </step>
  487 +
  488 + <step>
  489 + <name>&#x67e5;&#x8be2;&#x552e;&#x7968;&#x5458;&#x5173;&#x8054;</name>
  490 + <type>DBLookup</type>
  491 + <description/>
  492 + <distribute>Y</distribute>
  493 + <custom_distribution/>
  494 + <copies>1</copies>
  495 + <partitioning>
  496 + <method>none</method>
  497 + <schema_name/>
  498 + </partitioning>
  499 + <connection>bus_control_&#x516c;&#x53f8;_201</connection>
  500 + <cache>N</cache>
  501 + <cache_load_all>N</cache_load_all>
  502 + <cache_size>0</cache_size>
  503 + <lookup>
  504 + <schema/>
  505 + <table>bsth_c_personnel</table>
  506 + <orderby/>
  507 + <fail_on_multiple>N</fail_on_multiple>
  508 + <eat_row_on_failure>N</eat_row_on_failure>
  509 + <key>
  510 + <name>spy_no</name>
  511 + <field>job_code</field>
  512 + <condition>&#x3d;</condition>
  513 + <name2/>
  514 + </key>
  515 + <value>
  516 + <name>id</name>
  517 + <rename>spyid</rename>
  518 + <default/>
  519 + <type>Integer</type>
  520 + </value>
  521 + </lookup>
  522 + <cluster_schema/>
  523 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  524 + <xloc>720</xloc>
  525 + <yloc>51</yloc>
  526 + <draw>Y</draw>
  527 + </GUI>
  528 + </step>
  529 +
  530 + <step>
  531 + <name>&#x67e5;&#x8be2;&#x7ebf;&#x8def;&#x5173;&#x8054;</name>
  532 + <type>DBLookup</type>
  533 + <description/>
  534 + <distribute>Y</distribute>
  535 + <custom_distribution/>
  536 + <copies>1</copies>
  537 + <partitioning>
  538 + <method>none</method>
  539 + <schema_name/>
  540 + </partitioning>
  541 + <connection>bus_control_&#x516c;&#x53f8;_201</connection>
  542 + <cache>N</cache>
  543 + <cache_load_all>N</cache_load_all>
  544 + <cache_size>0</cache_size>
  545 + <lookup>
  546 + <schema/>
  547 + <table>bsth_c_line</table>
  548 + <orderby/>
  549 + <fail_on_multiple>N</fail_on_multiple>
  550 + <eat_row_on_failure>N</eat_row_on_failure>
  551 + <key>
  552 + <name>xl</name>
  553 + <field>name</field>
  554 + <condition>&#x3d;</condition>
  555 + <name2/>
  556 + </key>
  557 + <value>
  558 + <name>id</name>
  559 + <rename>xlid</rename>
  560 + <default/>
  561 + <type>Integer</type>
  562 + </value>
  563 + </lookup>
  564 + <cluster_schema/>
  565 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  566 + <xloc>429</xloc>
  567 + <yloc>51</yloc>
  568 + <draw>Y</draw>
  569 + </GUI>
  570 + </step>
  571 +
  572 + <step>
  573 + <name>&#x67e5;&#x8be2;&#x9a7e;&#x9a76;&#x5458;&#x5173;&#x8054;</name>
  574 + <type>DBLookup</type>
  575 + <description/>
  576 + <distribute>Y</distribute>
  577 + <custom_distribution/>
  578 + <copies>1</copies>
  579 + <partitioning>
  580 + <method>none</method>
  581 + <schema_name/>
  582 + </partitioning>
  583 + <connection>bus_control_&#x516c;&#x53f8;_201</connection>
  584 + <cache>N</cache>
  585 + <cache_load_all>N</cache_load_all>
  586 + <cache_size>0</cache_size>
  587 + <lookup>
  588 + <schema/>
  589 + <table>bsth_c_personnel</table>
  590 + <orderby/>
  591 + <fail_on_multiple>N</fail_on_multiple>
  592 + <eat_row_on_failure>N</eat_row_on_failure>
  593 + <key>
  594 + <name>jsy_no</name>
  595 + <field>job_code</field>
  596 + <condition>&#x3d;</condition>
  597 + <name2/>
  598 + </key>
  599 + <value>
  600 + <name>id</name>
  601 + <rename>jsyid</rename>
  602 + <default/>
  603 + <type>Integer</type>
  604 + </value>
  605 + </lookup>
  606 + <cluster_schema/>
  607 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  608 + <xloc>573</xloc>
  609 + <yloc>51</yloc>
  610 + <draw>Y</draw>
  611 + </GUI>
  612 + </step>
  613 +
  614 + <step>
  615 + <name>&#x9519;&#x8bef;&#x8f93;&#x51fa;</name>
  616 + <type>ExcelOutput</type>
  617 + <description/>
  618 + <distribute>Y</distribute>
  619 + <custom_distribution/>
  620 + <copies>1</copies>
  621 + <partitioning>
  622 + <method>none</method>
  623 + <schema_name/>
  624 + </partitioning>
  625 + <header>Y</header>
  626 + <footer>N</footer>
  627 + <encoding>UTF-8</encoding>
  628 + <append>N</append>
  629 + <add_to_result_filenames>Y</add_to_result_filenames>
  630 + <file>
  631 + <name>&#x24;&#x7b;erroroutputdir&#x7d;&#x2f;&#x4eba;&#x5458;&#x914d;&#x7f6e;_&#x9519;&#x8bef;</name>
  632 + <extention>xls</extention>
  633 + <do_not_open_newfile_init>N</do_not_open_newfile_init>
  634 + <create_parent_folder>N</create_parent_folder>
  635 + <split>N</split>
  636 + <add_date>N</add_date>
  637 + <add_time>N</add_time>
  638 + <SpecifyFormat>N</SpecifyFormat>
  639 + <date_time_format/>
  640 + <sheetname>Sheet1</sheetname>
  641 + <autosizecolums>N</autosizecolums>
  642 + <nullisblank>N</nullisblank>
  643 + <protect_sheet>N</protect_sheet>
  644 + <password>Encrypted </password>
  645 + <splitevery>0</splitevery>
  646 + <usetempfiles>N</usetempfiles>
  647 + <tempdirectory/>
  648 + </file>
  649 + <template>
  650 + <enabled>N</enabled>
  651 + <append>N</append>
  652 + <filename>template.xls</filename>
  653 + </template>
  654 + <fields>
  655 + <field>
  656 + <name>xl</name>
  657 + <type>String</type>
  658 + <format/>
  659 + </field>
  660 + <field>
  661 + <name>dbbm</name>
  662 + <type>String</type>
  663 + <format/>
  664 + </field>
  665 + <field>
  666 + <name>jsy_no</name>
  667 + <type>String</type>
  668 + <format/>
  669 + </field>
  670 + <field>
  671 + <name>jsy_name</name>
  672 + <type>String</type>
  673 + <format/>
  674 + </field>
  675 + <field>
  676 + <name>spy_no</name>
  677 + <type>String</type>
  678 + <format/>
  679 + </field>
  680 + <field>
  681 + <name>spy_name</name>
  682 + <type>String</type>
  683 + <format/>
  684 + </field>
  685 + <field>
  686 + <name>cl</name>
  687 + <type>String</type>
  688 + <format/>
  689 + </field>
  690 + <field>
  691 + <name>xlid</name>
  692 + <type>Integer</type>
  693 + <format/>
  694 + </field>
  695 + <field>
  696 + <name>jsyid</name>
  697 + <type>Integer</type>
  698 + <format/>
  699 + </field>
  700 + <field>
  701 + <name>spyid</name>
  702 + <type>Integer</type>
  703 + <format/>
  704 + </field>
  705 + <field>
  706 + <name>error_count</name>
  707 + <type>Integer</type>
  708 + <format/>
  709 + </field>
  710 + <field>
  711 + <name>error_desc</name>
  712 + <type>String</type>
  713 + <format/>
  714 + </field>
  715 + <field>
  716 + <name>error_column1</name>
  717 + <type>String</type>
  718 + <format/>
  719 + </field>
  720 + <field>
  721 + <name>error_column2</name>
  722 + <type>String</type>
  723 + <format/>
  724 + </field>
  725 + </fields>
  726 + <custom>
  727 + <header_font_name>arial</header_font_name>
  728 + <header_font_size>10</header_font_size>
  729 + <header_font_bold>N</header_font_bold>
  730 + <header_font_italic>N</header_font_italic>
  731 + <header_font_underline>no</header_font_underline>
  732 + <header_font_orientation>horizontal</header_font_orientation>
  733 + <header_font_color>black</header_font_color>
  734 + <header_background_color>none</header_background_color>
  735 + <header_row_height>255</header_row_height>
  736 + <header_alignment>left</header_alignment>
  737 + <header_image/>
  738 + <row_font_name>arial</row_font_name>
  739 + <row_font_size>10</row_font_size>
  740 + <row_font_color>black</row_font_color>
  741 + <row_background_color>none</row_background_color>
  742 + </custom>
  743 + <cluster_schema/>
  744 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  745 + <xloc>721</xloc>
  746 + <yloc>304</yloc>
  747 + <draw>Y</draw>
  748 + </GUI>
  749 + </step>
  750 +
  751 + <step>
  752 + <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>
  753 + <type>GetVariable</type>
  754 + <description/>
  755 + <distribute>Y</distribute>
  756 + <custom_distribution/>
  757 + <copies>1</copies>
  758 + <partitioning>
  759 + <method>none</method>
  760 + <schema_name/>
  761 + </partitioning>
  762 + <fields>
  763 + <field>
  764 + <name>filepath_</name>
  765 + <variable>&#x24;&#x7b;filepath&#x7d;</variable>
  766 + <type>String</type>
  767 + <format/>
  768 + <currency/>
  769 + <decimal/>
  770 + <group/>
  771 + <length>-1</length>
  772 + <precision>-1</precision>
  773 + <trim_type>none</trim_type>
  774 + </field>
  775 + <field>
  776 + <name>erroroutputdir_</name>
  777 + <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
  778 + <type>String</type>
  779 + <format/>
  780 + <currency/>
  781 + <decimal/>
  782 + <group/>
  783 + <length>-1</length>
  784 + <precision>-1</precision>
  785 + <trim_type>none</trim_type>
  786 + </field>
  787 + </fields>
  788 + <cluster_schema/>
  789 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  790 + <xloc>94</xloc>
  791 + <yloc>178</yloc>
  792 + <draw>Y</draw>
  793 + </GUI>
  794 + </step>
  795 +
  796 + <step_error_handling>
  797 + <error>
  798 + <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</source_step>
  799 + <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa;</target_step>
  800 + <is_enabled>Y</is_enabled>
  801 + <nr_valuename>error_count</nr_valuename>
  802 + <descriptions_valuename>error_desc</descriptions_valuename>
  803 + <fields_valuename>error_column1</fields_valuename>
  804 + <codes_valuename>error_column2</codes_valuename>
  805 + <max_errors/>
  806 + <max_pct_errors/>
  807 + <min_pct_rows/>
  808 + </error>
  809 + </step_error_handling>
  810 + <slave-step-copy-partition-distribution>
  811 +</slave-step-copy-partition-distribution>
  812 + <slave_transformation>N</slave_transformation>
  813 +
  814 +</transformation>
src/main/resources/static/pages/scheduleApp/module/core/employeeConfig/dataExport.html 0 → 100644
src/main/resources/static/pages/scheduleApp/module/core/employeeConfig/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()">关闭</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/employeeConfig/detail.html
  1 +<h1>TODO</h1>
0 \ No newline at end of file 2 \ No newline at end of file
src/main/resources/static/pages/scheduleApp/module/core/employeeConfig/edit.html
  1 +<h1>TODO</h1>
0 \ No newline at end of file 2 \ No newline at end of file
src/main/resources/static/pages/scheduleApp/module/core/employeeConfig/employeeConfig.js
@@ -61,14 +61,76 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;EmployeeConfigService&#39;, [&#39;EmployeeConfigS @@ -61,14 +61,76 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;EmployeeConfigService&#39;, [&#39;EmployeeConfigS
61 }; 61 };
62 }]); 62 }]);
63 63
64 -angular.module('ScheduleApp').controller('EmployeeConfigCtrl', ['EmployeeConfigService', '$state', function(employeeConfigService, $state) { 64 +angular.module('ScheduleApp').controller('EmployeeConfigCtrl', ['EmployeeConfigService', '$state', '$uibModal', function(employeeConfigService, $state, $uibModal) {
65 var self = this; 65 var self = this;
66 66
67 // 切换到form状态 67 // 切换到form状态
68 self.goForm = function() { 68 self.goForm = function() {
69 //alert("切换"); 69 //alert("切换");
70 $state.go("employeeConfig_form"); 70 $state.go("employeeConfig_form");
71 - } 71 + };
  72 +
  73 + // 导入excel
  74 + self.importData = function() {
  75 + // large方式弹出模态对话框
  76 + var modalInstance = $uibModal.open({
  77 + templateUrl: '/pages/scheduleApp/module/core/employeeConfig/dataImport.html',
  78 + size: "lg",
  79 + animation: true,
  80 + backdrop: 'static',
  81 + resolve: {
  82 + // 可以传值给controller
  83 + },
  84 + windowClass: 'center-modal',
  85 + controller: "EmployeeConfigToolsCtrl",
  86 + controllerAs: "ctrl",
  87 + bindToController: true
  88 + });
  89 + modalInstance.result.then(
  90 + function() {
  91 + console.log("dataImport.html打开");
  92 + },
  93 + function() {
  94 + console.log("dataImport.html消失");
  95 + }
  96 + );
  97 + };
  98 +}]);
  99 +
  100 +angular.module('ScheduleApp').controller('EmployeeConfigToolsCtrl', ['$modalInstance', 'FileUploader', function($modalInstance, FileUploader) {
  101 + var self = this;
  102 + self.data = "TODO";
  103 +
  104 + // 关闭窗口
  105 + self.close = function() {
  106 + $modalInstance.dismiss("cancel");
  107 + };
  108 +
  109 + self.clearInputFile = function() {
  110 + angular.element("input[type='file']").val(null);
  111 + };
  112 +
  113 + // 上传文件组件
  114 + self.uploader = new FileUploader({
  115 + url: "/eci/dataImport",
  116 + filters: [] // 用于过滤文件,比如只允许导入excel
  117 + });
  118 + self.uploader.onAfterAddingFile = function(fileItem)
  119 + {
  120 + console.info('onAfterAddingFile', fileItem);
  121 + console.log(self.uploader.queue.length);
  122 + if (self.uploader.queue.length > 1)
  123 + self.uploader.removeFromQueue(0);
  124 + };
  125 + self.uploader.onSuccessItem = function(fileItem, response, status, headers)
  126 + {
  127 + console.info('onSuccessItem', fileItem, response, status, headers);
  128 + };
  129 + self.uploader.onErrorItem = function(fileItem, response, status, headers)
  130 + {
  131 + console.info('onErrorItem', fileItem, response, status, headers);
  132 + };
  133 +
72 }]); 134 }]);
73 135
74 angular.module('ScheduleApp').controller('EmployeeConfigListCtrl', ['EmployeeConfigService', function(employeeConfigService) { 136 angular.module('ScheduleApp').controller('EmployeeConfigListCtrl', ['EmployeeConfigService', function(employeeConfigService) {
src/main/resources/static/pages/scheduleApp/module/core/employeeConfig/form.html
  1 +<h1>TODO</h1>
0 \ No newline at end of file 2 \ No newline at end of file
src/main/resources/static/pages/scheduleApp/module/core/employeeConfig/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"> 49 <a href="javascript:" class="tool-action">
44 <i class="fa fa-file-excel-o"></i> 50 <i class="fa fa-file-excel-o"></i>
45 导出excel 51 导出excel
@@ -48,8 +54,8 @@ @@ -48,8 +54,8 @@
48 <li class="divider"></li> 54 <li class="divider"></li>
49 <li> 55 <li>
50 <a href="javascript:" class="tool-action"> 56 <a href="javascript:" class="tool-action">
51 - <i class="fa fa-refresh"></i>  
52 - 刷行数据 57 + <i class="fa fa-download"></i>
  58 + excel模版
53 </a> 59 </a>
54 </li> 60 </li>
55 </ul> 61 </ul>
src/main/resources/static/pages/scheduleApp/module/core/timeTableManage/index.html
@@ -29,7 +29,7 @@ @@ -29,7 +29,7 @@
29 <div class="actions"> 29 <div class="actions">
30 <a href="javascirpt:" class="btn btn-circle blue" ng-click="ctrl.goForm()"> 30 <a href="javascirpt:" class="btn btn-circle blue" ng-click="ctrl.goForm()">
31 <i class="fa fa-plus"></i> 31 <i class="fa fa-plus"></i>
32 - 添加基础信息 32 + 添加时刻表
33 </a> 33 </a>
34 34
35 <div class="btn-group"> 35 <div class="btn-group">
@@ -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"> 49 <a href="javascript:" class="tool-action">
44 <i class="fa fa-file-excel-o"></i> 50 <i class="fa fa-file-excel-o"></i>
45 导出excel 51 导出excel
@@ -48,8 +54,8 @@ @@ -48,8 +54,8 @@
48 <li class="divider"></li> 54 <li class="divider"></li>
49 <li> 55 <li>
50 <a href="javascript:" class="tool-action"> 56 <a href="javascript:" class="tool-action">
51 - <i class="fa fa-refresh"></i>  
52 - 刷行数据 57 + <i class="fa fa-download"></i>
  58 + excel模版
53 </a> 59 </a>
54 </li> 60 </li>
55 </ul> 61 </ul>
src/main/resources/static/pages/scheduleApp/module/core/timeTableManage/list.html
@@ -10,7 +10,8 @@ @@ -10,7 +10,8 @@
10 <th>圈数</th> 10 <th>圈数</th>
11 <th>是否启用</th> 11 <th>是否启用</th>
12 <th>修改时间</th> 12 <th>修改时间</th>
13 - <th width="16%">操作</th> 13 + <th>时刻表明细</th>
  14 + <th width="14%">操作</th>
14 </tr> 15 </tr>
15 <tr role="row" class="filter"> 16 <tr role="row" class="filter">
16 <td></td> 17 <td></td>
@@ -22,6 +23,7 @@ @@ -22,6 +23,7 @@
22 <td></td> 23 <td></td>
23 <td></td> 24 <td></td>
24 <td></td> 25 <td></td>
  26 + <td></td>
25 <td> 27 <td>
26 <button class="btn btn-sm green btn-outline filter-submit margin-bottom" 28 <button class="btn btn-sm green btn-outline filter-submit margin-bottom"
27 ng-click="ctrl.pageChanaged()"> 29 ng-click="ctrl.pageChanaged()">
@@ -58,10 +60,16 @@ @@ -58,10 +60,16 @@
58 <span ng-bind="info.updateDate | date: 'yyyy-MM-dd HH:mm:ss'"></span> 60 <span ng-bind="info.updateDate | date: 'yyyy-MM-dd HH:mm:ss'"></span>
59 </td> 61 </td>
60 <td> 62 <td>
  63 + <a ui-sref="timeTableInfoManage" class="btn default blue-stripe btn-sm"> 编辑 </a>
  64 + <a ui-sref="" class="btn default blue-stripe btn-sm"> 导入 </a>
  65 + <a ui-sref="" class="btn default blue-stripe btn-sm"> 导出 </a>
  66 + <a ui-sref="" class="btn default blue-stripe btn-sm"> 模版 </a>
  67 + </td>
  68 + <td>
61 <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>--> 69 <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>-->
62 <!--<a href="edit.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 修改 </a>--> 70 <!--<a href="edit.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 修改 </a>-->
63 <a ui-sref="busConfig_edit({id: info.id})" class="btn default blue-stripe btn-sm"> 修改 </a> 71 <a ui-sref="busConfig_edit({id: info.id})" class="btn default blue-stripe btn-sm"> 修改 </a>
64 - <a ui-sref="timeTableInfoManage" class="btn default blue-stripe btn-sm"> 时刻表明细 </a> 72 + <a ui-sref="" class="btn default blue-stripe btn-sm"> 查看 </a>
65 </td> 73 </td>
66 </tr> 74 </tr>
67 </tbody> 75 </tbody>
src/main/resources/static/pages/scheduleApp/module/main.js
@@ -385,6 +385,7 @@ ScheduleApp.config([&#39;$stateProvider&#39;, &#39;$urlRouterProvider&#39;, function($stateProvi @@ -385,6 +385,7 @@ ScheduleApp.config([&#39;$stateProvider&#39;, &#39;$urlRouterProvider&#39;, function($stateProvi
385 name: 'employeeConfig_module', 385 name: 'employeeConfig_module',
386 insertBefore: '#ng_load_plugins_before', // 动态载入模块时放置的位置 386 insertBefore: '#ng_load_plugins_before', // 动态载入模块时放置的位置
387 files: [ 387 files: [
  388 + "assets/bower_components/angular-file-upload/dist/angular-file-upload.min.js",
388 "pages/scheduleApp/module/core/employeeConfig/employeeConfig.js" 389 "pages/scheduleApp/module/core/employeeConfig/employeeConfig.js"
389 ] 390 ]
390 }); 391 });