Commit 24b631bc01886c5b83ae4c174cd02d14f4c1831e

Authored by 徐烜
1 parent dc0610f2

添加登入,登出excel导出功能

src/main/java/com/bsth/service/logger/impl/UserSignDataToolsImpl.java 0 → 100644
  1 +package com.bsth.service.logger.impl;
  2 +
  3 +import com.bsth.service.schedule.exception.ScheduleException;
  4 +import com.bsth.service.schedule.utils.DataToolsFile;
  5 +import com.bsth.service.schedule.utils.DataToolsProperties;
  6 +import com.bsth.service.schedule.utils.DataToolsService;
  7 +import org.slf4j.Logger;
  8 +import org.slf4j.LoggerFactory;
  9 +import org.springframework.beans.factory.annotation.Autowired;
  10 +import org.springframework.beans.factory.annotation.Qualifier;
  11 +import org.springframework.boot.context.properties.EnableConfigurationProperties;
  12 +import org.springframework.stereotype.Service;
  13 +
  14 +import java.io.File;
  15 +import java.io.PrintWriter;
  16 +import java.io.StringWriter;
  17 +import java.util.HashMap;
  18 +import java.util.Map;
  19 +
  20 +@EnableConfigurationProperties(DataToolsProperties.class)
  21 +@Service(value = "usersign_dataTool")
  22 +public class UserSignDataToolsImpl implements DataToolsService {
  23 + /** 日志记录器 */
  24 + private final static Logger LOGGER = LoggerFactory.getLogger(UserSignDataToolsImpl.class);
  25 +
  26 + @Autowired
  27 + @Qualifier(value = "dataToolsServiceImpl")
  28 + private DataToolsService dataToolsService;
  29 +
  30 + @Autowired
  31 + private DataToolsProperties dataToolsProperties;
  32 +
  33 + @Override
  34 + public DataToolsFile uploadFile(String filename, byte[] filedata) throws ScheduleException {
  35 + throw new RuntimeException("不支持DataToolsFile!");
  36 + }
  37 +
  38 + @Override
  39 + public void importData(File file, Map<String, Object> params) throws ScheduleException {
  40 + throw new RuntimeException("不支持importData!");
  41 + }
  42 +
  43 + @Override
  44 + public DataToolsFile exportData(Map<String, Object> params) throws ScheduleException {
  45 + try {
  46 + LOGGER.info("//---------------- 导出用户登录日志 start... ----------------//");
  47 + // 创建ktr转换所需参数
  48 + Map<String, Object> ktrParms = new HashMap<>();
  49 + File ktrFile = new File(this.getClass().getResource(
  50 + dataToolsProperties.getUsersignDataoutputktr()).toURI());
  51 +
  52 + // 通用参数,转换文件路径,excel输出文件名
  53 + ktrParms.put("transpath", ktrFile.getAbsolutePath());
  54 + ktrParms.put("filename", "用户登录日志_download-");
  55 +
  56 + ktrParms.putAll(params);
  57 +
  58 + DataToolsFile file = dataToolsService.exportData(ktrParms);
  59 +
  60 + LOGGER.info("//---------------- 导出用户登录日志 success... ----------------//");
  61 +
  62 + return file;
  63 +
  64 + } catch (Exception exp) {
  65 + LOGGER.info("//---------------- 导出用户登录日志 failed... ----------------//");
  66 +
  67 + StringWriter sw = new StringWriter();
  68 + exp.printStackTrace(new PrintWriter(sw));
  69 + LOGGER.info(sw.toString());
  70 +
  71 + throw new ScheduleException(exp.getMessage());
  72 + }
  73 + }
  74 +
  75 +}
src/main/java/com/bsth/service/logger/impl/UserSignServiceImpl.java
@@ -7,11 +7,13 @@ import com.bsth.service.logger.UserSignService; @@ -7,11 +7,13 @@ import com.bsth.service.logger.UserSignService;
7 import com.bsth.service.schedule.exception.ScheduleException; 7 import com.bsth.service.schedule.exception.ScheduleException;
8 import com.bsth.service.schedule.impl.BServiceImpl; 8 import com.bsth.service.schedule.impl.BServiceImpl;
9 import com.bsth.service.schedule.utils.DataToolsFile; 9 import com.bsth.service.schedule.utils.DataToolsFile;
  10 +import com.bsth.service.schedule.utils.DataToolsService;
10 import com.bsth.service.sys.SysUserService; 11 import com.bsth.service.sys.SysUserService;
11 import org.joda.time.DateTime; 12 import org.joda.time.DateTime;
12 import org.slf4j.Logger; 13 import org.slf4j.Logger;
13 import org.slf4j.LoggerFactory; 14 import org.slf4j.LoggerFactory;
14 import org.springframework.beans.factory.annotation.Autowired; 15 import org.springframework.beans.factory.annotation.Autowired;
  16 +import org.springframework.beans.factory.annotation.Qualifier;
15 import org.springframework.stereotype.Service; 17 import org.springframework.stereotype.Service;
16 import org.springframework.transaction.annotation.Isolation; 18 import org.springframework.transaction.annotation.Isolation;
17 import org.springframework.transaction.annotation.Propagation; 19 import org.springframework.transaction.annotation.Propagation;
@@ -28,6 +30,10 @@ public class UserSignServiceImpl extends BServiceImpl&lt;UserSign, Long&gt; implements @@ -28,6 +30,10 @@ public class UserSignServiceImpl extends BServiceImpl&lt;UserSign, Long&gt; implements
28 private final static Logger LOG = LoggerFactory.getLogger(UserSignServiceImpl.class); 30 private final static Logger LOG = LoggerFactory.getLogger(UserSignServiceImpl.class);
29 31
30 @Autowired 32 @Autowired
  33 + @Qualifier(value = "usersign_dataTool")
  34 + private DataToolsService dataToolsService;
  35 +
  36 + @Autowired
31 private UserSignRepository userLogInoutRepository; 37 private UserSignRepository userLogInoutRepository;
32 @Autowired 38 @Autowired
33 private SysUserService sysUserService; 39 private SysUserService sysUserService;
@@ -123,4 +129,9 @@ public class UserSignServiceImpl extends BServiceImpl&lt;UserSign, Long&gt; implements @@ -123,4 +129,9 @@ public class UserSignServiceImpl extends BServiceImpl&lt;UserSign, Long&gt; implements
123 public void importData(File file, Map<String, Object> params) throws ScheduleException { 129 public void importData(File file, Map<String, Object> params) throws ScheduleException {
124 throw new RuntimeException("不支持importData方法!"); 130 throw new RuntimeException("不支持importData方法!");
125 } 131 }
  132 +
  133 + @Override
  134 + public DataToolsFile exportData(Map<String, Object> params) throws ScheduleException {
  135 + return dataToolsService.exportData(params);
  136 + }
126 } 137 }
src/main/java/com/bsth/service/schedule/utils/DataToolsProperties.java
@@ -114,6 +114,9 @@ public class DataToolsProperties { @@ -114,6 +114,9 @@ public class DataToolsProperties {
114 @NotNull 114 @NotNull
115 /** 路牌信息导出 */ 115 /** 路牌信息导出 */
116 private String guideboardsDataoutputktr; 116 private String guideboardsDataoutputktr;
  117 + @NotNull
  118 + /** 用户登录日志信息导出 */
  119 + private String usersignDataoutputktr;
117 120
118 // TODO: 121 // TODO:
119 122
@@ -364,4 +367,12 @@ public class DataToolsProperties { @@ -364,4 +367,12 @@ public class DataToolsProperties {
364 public void setTtinfodetailDatainputktr2version2(String ttinfodetailDatainputktr2version2) { 367 public void setTtinfodetailDatainputktr2version2(String ttinfodetailDatainputktr2version2) {
365 this.ttinfodetailDatainputktr2version2 = ttinfodetailDatainputktr2version2; 368 this.ttinfodetailDatainputktr2version2 = ttinfodetailDatainputktr2version2;
366 } 369 }
  370 +
  371 + public String getUsersignDataoutputktr() {
  372 + return usersignDataoutputktr;
  373 + }
  374 +
  375 + public void setUsersignDataoutputktr(String usersignDataoutputktr) {
  376 + this.usersignDataoutputktr = usersignDataoutputktr;
  377 + }
367 } 378 }
src/main/resources/datatools/config-dev.properties
@@ -76,6 +76,8 @@ datatools.employeesconfig_dataoutputktr=/datatools/ktrs/employeesConfigDataOutpu @@ -76,6 +76,8 @@ datatools.employeesconfig_dataoutputktr=/datatools/ktrs/employeesConfigDataOutpu
76 # 路牌信息导出 76 # 路牌信息导出
77 datatools.guideboards_dataoutputktr=/datatools/ktrs/guideboardDataOutput.ktr 77 datatools.guideboards_dataoutputktr=/datatools/ktrs/guideboardDataOutput.ktr
78 78
  79 +# 用户登录日志导出
  80 +datatools.usersign_dataoutputktr=/datatools/ktrs/userSignLogOutput.ktr
79 81
80 # TODO: 82 # TODO:
81 83
src/main/resources/datatools/config-prod.properties
@@ -77,5 +77,7 @@ datatools.employeesconfig_dataoutputktr=/datatools/ktrs/employeesConfigDataOutpu @@ -77,5 +77,7 @@ datatools.employeesconfig_dataoutputktr=/datatools/ktrs/employeesConfigDataOutpu
77 # 路牌信息导出 77 # 路牌信息导出
78 datatools.guideboards_dataoutputktr=/datatools/ktrs/guideboardDataOutput.ktr 78 datatools.guideboards_dataoutputktr=/datatools/ktrs/guideboardDataOutput.ktr
79 79
  80 +# 用户登录日志导出
  81 +datatools.usersign_dataoutputktr=/datatools/ktrs/userSignLogOutput.ktr
80 82
81 # TODO: 83 # TODO:
src/main/resources/datatools/ktrs/userSignLogOutput.ktr 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>&#x7528;&#x6237;&#x767b;&#x5f55;&#x65e5;&#x5fd7;&#x5bfc;&#x51fa;</name>
  5 + <description/>
  6 + <extended_description/>
  7 + <trans_version/>
  8 + <trans_type>Normal</trans_type>
  9 + <trans_status>0</trans_status>
  10 + <directory>&#x2f;</directory>
  11 + <parameters>
  12 + <parameter>
  13 + <name>QUERY</name>
  14 + <default_value/>
  15 + <description>&#x67e5;&#x8be2;</description>
  16 + </parameter>
  17 + <parameter>
  18 + <name>filepath</name>
  19 + <default_value>1&#x3d;1</default_value>
  20 + <description>excel&#x6587;&#x4ef6;&#x8def;&#x5f84;</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>2020&#x2f;07&#x2f;30 13&#x3a;32&#x3a;25.920</created_date>
  81 + <modified_user>-</modified_user>
  82 + <modified_date>2020&#x2f;07&#x2f;30 13&#x3a;32&#x3a;25.920</modified_date>
  83 + <key_for_session_key/>
  84 + <is_key_private>N</is_key_private>
  85 + </info>
  86 + <notepads>
  87 + </notepads>
  88 + <connection>
  89 + <name>192.168.168.1_jwgl_dw</name>
  90 + <server>192.168.168.1</server>
  91 + <type>ORACLE</type>
  92 + <access>Native</access>
  93 + <database>orcl</database>
  94 + <port>1521</port>
  95 + <username>jwgl_dw</username>
  96 + <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password>
  97 + <servername/>
  98 + <data_tablespace/>
  99 + <index_tablespace/>
  100 + <attributes>
  101 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  102 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  103 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  104 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  105 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  106 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  107 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  108 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  109 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  110 + </attributes>
  111 + </connection>
  112 + <connection>
  113 + <name>bus_control_variable</name>
  114 + <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
  115 + <type>MYSQL</type>
  116 + <access>Native</access>
  117 + <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
  118 + <port>3306</port>
  119 + <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
  120 + <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
  121 + <servername/>
  122 + <data_tablespace/>
  123 + <index_tablespace/>
  124 + <attributes>
  125 + <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
  126 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  127 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  128 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  129 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  130 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  131 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  132 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  133 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  134 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  135 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  136 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  137 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  138 + </attributes>
  139 + </connection>
  140 + <connection>
  141 + <name>bus_control_&#x516c;&#x53f8;_201</name>
  142 + <server>localhost</server>
  143 + <type>MYSQL</type>
  144 + <access>Native</access>
  145 + <database>control</database>
  146 + <port>3306</port>
  147 + <username>root</username>
  148 + <password>Encrypted </password>
  149 + <servername/>
  150 + <data_tablespace/>
  151 + <index_tablespace/>
  152 + <attributes>
  153 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  154 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  155 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  156 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  157 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  158 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  159 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  160 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  161 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  162 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  163 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  164 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  165 + </attributes>
  166 + </connection>
  167 + <connection>
  168 + <name>bus_control_&#x672c;&#x673a;</name>
  169 + <server>localhost</server>
  170 + <type>MYSQL</type>
  171 + <access>Native</access>
  172 + <database>control</database>
  173 + <port>3306</port>
  174 + <username>root</username>
  175 + <password>Encrypted </password>
  176 + <servername/>
  177 + <data_tablespace/>
  178 + <index_tablespace/>
  179 + <attributes>
  180 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  181 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  182 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  183 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  184 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  185 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  186 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  187 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  188 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  189 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  190 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  191 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  192 + </attributes>
  193 + </connection>
  194 + <connection>
  195 + <name>JGJW_VM</name>
  196 + <server>192.168.198.240</server>
  197 + <type>ORACLE</type>
  198 + <access>Native</access>
  199 + <database>orcl</database>
  200 + <port>1521</port>
  201 + <username>jwgl</username>
  202 + <password>Encrypted 2be98afc86aa7f2e4cb79ce10d485a8d6</password>
  203 + <servername/>
  204 + <data_tablespace/>
  205 + <index_tablespace/>
  206 + <attributes>
  207 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  208 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  209 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  210 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  211 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  212 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  213 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  214 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  215 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  216 + </attributes>
  217 + </connection>
  218 + <connection>
  219 + <name>NHJW_VM</name>
  220 + <server>192.168.198.240</server>
  221 + <type>ORACLE</type>
  222 + <access>Native</access>
  223 + <database>orcl</database>
  224 + <port>1521</port>
  225 + <username>nhjw</username>
  226 + <password>Encrypted 2be98afc86aa7f2e4cb79ce10d09aa5cd</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>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  238 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  239 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  240 + </attributes>
  241 + </connection>
  242 + <connection>
  243 + <name>PDGJ_VM</name>
  244 + <server>192.168.198.240</server>
  245 + <type>ORACLE</type>
  246 + <access>Native</access>
  247 + <database>orcl</database>
  248 + <port>1521</port>
  249 + <username>pdgj</username>
  250 + <password>Encrypted 2be98afc86aa7f2e4cb79ce10ce96a8d0</password>
  251 + <servername/>
  252 + <data_tablespace/>
  253 + <index_tablespace/>
  254 + <attributes>
  255 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  256 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  257 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  258 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  259 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  260 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  261 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  262 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  263 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  264 + </attributes>
  265 + </connection>
  266 + <connection>
  267 + <name>SNJW_VM</name>
  268 + <server>192.168.198.240</server>
  269 + <type>ORACLE</type>
  270 + <access>Native</access>
  271 + <database>orcl</database>
  272 + <port>1521</port>
  273 + <username>snjw</username>
  274 + <password>Encrypted 2be98afc86aa7f2e4cb79ce10cd9ca5cd</password>
  275 + <servername/>
  276 + <data_tablespace/>
  277 + <index_tablespace/>
  278 + <attributes>
  279 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  280 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  281 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  282 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  283 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  284 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  285 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  286 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  287 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  288 + </attributes>
  289 + </connection>
  290 + <connection>
  291 + <name>test_control&#xff08;&#x672c;&#x673a;&#xff09;</name>
  292 + <server>127.0.0.1</server>
  293 + <type>MYSQL</type>
  294 + <access>Native</access>
  295 + <database>test_control</database>
  296 + <port>3306</port>
  297 + <username>root</username>
  298 + <password>Encrypted </password>
  299 + <servername/>
  300 + <data_tablespace/>
  301 + <index_tablespace/>
  302 + <attributes>
  303 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  304 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  305 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  306 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  307 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  308 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  309 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  310 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  311 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  312 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  313 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  314 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  315 + </attributes>
  316 + </connection>
  317 + <connection>
  318 + <name>xlab_mysql_youle</name>
  319 + <server>101.231.124.8</server>
  320 + <type>MYSQL</type>
  321 + <access>Native</access>
  322 + <database>xlab_youle</database>
  323 + <port>45687</port>
  324 + <username>xlab-youle</username>
  325 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
  326 + <servername/>
  327 + <data_tablespace/>
  328 + <index_tablespace/>
  329 + <attributes>
  330 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  331 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  332 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  333 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  334 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  335 + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
  336 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  337 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  338 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  339 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  340 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  341 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  342 + </attributes>
  343 + </connection>
  344 + <connection>
  345 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  346 + <server>localhost</server>
  347 + <type>MYSQL</type>
  348 + <access>Native</access>
  349 + <database>xlab_youle</database>
  350 + <port>3306</port>
  351 + <username>root</username>
  352 + <password>Encrypted </password>
  353 + <servername/>
  354 + <data_tablespace/>
  355 + <index_tablespace/>
  356 + <attributes>
  357 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  358 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  359 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  360 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  361 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  362 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  363 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  364 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  365 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  366 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  367 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  368 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  369 + </attributes>
  370 + </connection>
  371 + <connection>
  372 + <name>xlab_youle</name>
  373 + <server/>
  374 + <type>MYSQL</type>
  375 + <access>JNDI</access>
  376 + <database>xlab_youle</database>
  377 + <port>1521</port>
  378 + <username/>
  379 + <password>Encrypted </password>
  380 + <servername/>
  381 + <data_tablespace/>
  382 + <index_tablespace/>
  383 + <attributes>
  384 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  385 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  386 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  387 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  388 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  389 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  390 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  391 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  392 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  393 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  394 + </attributes>
  395 + </connection>
  396 + <connection>
  397 + <name>YGJW_VM</name>
  398 + <server>192.168.198.240</server>
  399 + <type>ORACLE</type>
  400 + <access>Native</access>
  401 + <database>orcl</database>
  402 + <port>1521</port>
  403 + <username>ygjw</username>
  404 + <password>Encrypted 2be98afc86aa7f2e4cb79ce10c795a5cd</password>
  405 + <servername/>
  406 + <data_tablespace/>
  407 + <index_tablespace/>
  408 + <attributes>
  409 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  410 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  411 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  412 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  413 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  414 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  415 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  416 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  417 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  418 + </attributes>
  419 + </connection>
  420 + <connection>
  421 + <name>&#x516c;&#x53f8;jgjw</name>
  422 + <server>192.168.168.1</server>
  423 + <type>ORACLE</type>
  424 + <access>Native</access>
  425 + <database>orcl</database>
  426 + <port>1521</port>
  427 + <username>jwgl</username>
  428 + <password>Encrypted 2be98afc86aa7f2e4cb79ce10d485a8d6</password>
  429 + <servername/>
  430 + <data_tablespace/>
  431 + <index_tablespace/>
  432 + <attributes>
  433 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  434 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  435 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  436 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  437 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  438 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  439 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  440 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  441 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  442 + </attributes>
  443 + </connection>
  444 + <connection>
  445 + <name>&#x516c;&#x53f8;snjw</name>
  446 + <server>192.168.168.1</server>
  447 + <type>ORACLE</type>
  448 + <access>Native</access>
  449 + <database>orcl</database>
  450 + <port>1521</port>
  451 + <username>snjw</username>
  452 + <password>Encrypted 2be98afc86aa7f2e4cb79ce10cd9ca5cd</password>
  453 + <servername/>
  454 + <data_tablespace/>
  455 + <index_tablespace/>
  456 + <attributes>
  457 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  458 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  459 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  460 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  461 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  462 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  463 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  464 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  465 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  466 + </attributes>
  467 + </connection>
  468 + <connection>
  469 + <name>&#x516c;&#x53f8;ygjw</name>
  470 + <server>192.168.168.1</server>
  471 + <type>ORACLE</type>
  472 + <access>Native</access>
  473 + <database>orcl</database>
  474 + <port>1521</port>
  475 + <username>ygjw</username>
  476 + <password>Encrypted 2be98afc86aa7f2e4cb79ce10c795a5cd</password>
  477 + <servername/>
  478 + <data_tablespace/>
  479 + <index_tablespace/>
  480 + <attributes>
  481 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  482 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  483 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  484 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  485 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  486 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  487 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  488 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  489 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  490 + </attributes>
  491 + </connection>
  492 + <order>
  493 + <hop> <from>&#x7528;&#x6237;&#x767b;&#x5f55;&#x65e5;&#x5fd7;&#x8f93;&#x5165;</from><to>&#x5904;&#x7406;&#x65e5;&#x671f;</to><enabled>Y</enabled> </hop>
  494 + <hop> <from>&#x5904;&#x7406;&#x65e5;&#x671f;</from><to>&#x8fc7;&#x6ee4;&#x65e5;&#x671f;&#x4e3a;&#x7a7a;</to><enabled>Y</enabled> </hop>
  495 + <hop> <from>&#x8fc7;&#x6ee4;&#x65e5;&#x671f;&#x4e3a;&#x7a7a;</from><to>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  496 + <hop> <from>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</from><to>&#x5b57;&#x6bb5;&#x8f6c;&#x6362;</to><enabled>Y</enabled> </hop>
  497 + <hop> <from>&#x5b57;&#x6bb5;&#x8f6c;&#x6362;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
  498 + <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>Excel&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
  499 + </order>
  500 + <step>
  501 + <name>&#x7528;&#x6237;&#x767b;&#x5f55;&#x65e5;&#x5fd7;&#x8f93;&#x5165;</name>
  502 + <type>TableInput</type>
  503 + <description/>
  504 + <distribute>Y</distribute>
  505 + <custom_distribution/>
  506 + <copies>1</copies>
  507 + <partitioning>
  508 + <method>none</method>
  509 + <schema_name/>
  510 + </partitioning>
  511 + <connection>bus_control_variable</connection>
  512 + <sql>select &#x2a; from logger_user_sign&#xa;where &#x24;&#x7b;QUERY&#x7d;</sql>
  513 + <limit>0</limit>
  514 + <lookup/>
  515 + <execute_each_row>N</execute_each_row>
  516 + <variables_active>Y</variables_active>
  517 + <lazy_conversion_active>N</lazy_conversion_active>
  518 + <cluster_schema/>
  519 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  520 + <xloc>111</xloc>
  521 + <yloc>60</yloc>
  522 + <draw>Y</draw>
  523 + </GUI>
  524 + </step>
  525 +
  526 + <step>
  527 + <name>&#x5904;&#x7406;&#x65e5;&#x671f;</name>
  528 + <type>ScriptValueMod</type>
  529 + <description/>
  530 + <distribute>Y</distribute>
  531 + <custom_distribution/>
  532 + <copies>1</copies>
  533 + <partitioning>
  534 + <method>none</method>
  535 + <schema_name/>
  536 + </partitioning>
  537 + <compatible>N</compatible>
  538 + <optimizationLevel>9</optimizationLevel>
  539 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  540 + <jsScript_name>Script 1</jsScript_name>
  541 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2a;&#xa; &#x8ba1;&#x7b97;&#x65e5;&#x671f;&#xff0c;&#x4ee5;&#x767b;&#x5f55;&#x65f6;&#x95f4;&#x4e3a;&#x4e3b;&#xff0c;&#x6ca1;&#x6709;&#x9009;&#x62e9;&#x767b;&#x51fa;&#x65f6;&#x95f4;&#xa;&#x2a;&#x2f;&#xa;var _date_ &#x3d; null&#x3b;&#xa;if &#x28;log_in_date &#x21;&#x3d; null&#x29; &#x7b;&#xa; _date_ &#x3d; log_in_date&#x3b;&#xa;&#x7d; else if &#x28;log_out_date &#x21;&#x3d; null&#x29; &#x7b;&#xa; _date_ &#x3d; log_out_date&#x3b;&#xa;&#x7d;</jsScript_script>
  542 + </jsScript> </jsScripts> <fields> <field> <name>_date_</name>
  543 + <rename>_date_</rename>
  544 + <type>Date</type>
  545 + <length>-1</length>
  546 + <precision>-1</precision>
  547 + <replace>N</replace>
  548 + </field> </fields> <cluster_schema/>
  549 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  550 + <xloc>236</xloc>
  551 + <yloc>60</yloc>
  552 + <draw>Y</draw>
  553 + </GUI>
  554 + </step>
  555 +
  556 + <step>
  557 + <name>&#x8fc7;&#x6ee4;&#x65e5;&#x671f;&#x4e3a;&#x7a7a;</name>
  558 + <type>FilterRows</type>
  559 + <description/>
  560 + <distribute>Y</distribute>
  561 + <custom_distribution/>
  562 + <copies>1</copies>
  563 + <partitioning>
  564 + <method>none</method>
  565 + <schema_name/>
  566 + </partitioning>
  567 +<send_true_to/>
  568 +<send_false_to/>
  569 + <compare>
  570 +<condition>
  571 + <negated>N</negated>
  572 + <leftvalue>_date_</leftvalue>
  573 + <function>IS NOT NULL</function>
  574 + <rightvalue/>
  575 + </condition>
  576 + </compare>
  577 + <cluster_schema/>
  578 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  579 + <xloc>382</xloc>
  580 + <yloc>61</yloc>
  581 + <draw>Y</draw>
  582 + </GUI>
  583 + </step>
  584 +
  585 + <step>
  586 + <name>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</name>
  587 + <type>SortRows</type>
  588 + <description/>
  589 + <distribute>Y</distribute>
  590 + <custom_distribution/>
  591 + <copies>1</copies>
  592 + <partitioning>
  593 + <method>none</method>
  594 + <schema_name/>
  595 + </partitioning>
  596 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  597 + <prefix>out</prefix>
  598 + <sort_size>1000000</sort_size>
  599 + <free_memory/>
  600 + <compress>N</compress>
  601 + <compress_variable/>
  602 + <unique_rows>N</unique_rows>
  603 + <fields>
  604 + <field>
  605 + <name>_date_</name>
  606 + <ascending>Y</ascending>
  607 + <case_sensitive>N</case_sensitive>
  608 + <presorted>N</presorted>
  609 + </field>
  610 + </fields>
  611 + <cluster_schema/>
  612 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  613 + <xloc>511</xloc>
  614 + <yloc>60</yloc>
  615 + <draw>Y</draw>
  616 + </GUI>
  617 + </step>
  618 +
  619 + <step>
  620 + <name>&#x5b57;&#x6bb5;&#x8f6c;&#x6362;</name>
  621 + <type>SelectValues</type>
  622 + <description/>
  623 + <distribute>Y</distribute>
  624 + <custom_distribution/>
  625 + <copies>1</copies>
  626 + <partitioning>
  627 + <method>none</method>
  628 + <schema_name/>
  629 + </partitioning>
  630 + <fields> <select_unspecified>N</select_unspecified>
  631 + <meta> <name>_date_</name>
  632 + <rename>&#x65e5;&#x671f;</rename>
  633 + <type>String</type>
  634 + <length>-2</length>
  635 + <precision>-2</precision>
  636 + <conversion_mask>yyyy&#x2f;MM&#x2f;dd</conversion_mask>
  637 + <date_format_lenient>false</date_format_lenient>
  638 + <date_format_locale/>
  639 + <date_format_timezone/>
  640 + <lenient_string_to_number>false</lenient_string_to_number>
  641 + <encoding/>
  642 + <decimal_symbol/>
  643 + <grouping_symbol/>
  644 + <currency_symbol/>
  645 + <storage_type/>
  646 + </meta> <meta> <name>log_name</name>
  647 + <rename>&#x8d26;&#x6237;&#x540d;&#x79f0;</rename>
  648 + <type>String</type>
  649 + <length>-2</length>
  650 + <precision>-2</precision>
  651 + <conversion_mask/>
  652 + <date_format_lenient>false</date_format_lenient>
  653 + <date_format_locale/>
  654 + <date_format_timezone/>
  655 + <lenient_string_to_number>false</lenient_string_to_number>
  656 + <encoding/>
  657 + <decimal_symbol/>
  658 + <grouping_symbol/>
  659 + <currency_symbol/>
  660 + <storage_type/>
  661 + </meta> <meta> <name>real_name</name>
  662 + <rename>&#x59d3;&#x540d;</rename>
  663 + <type>String</type>
  664 + <length>-2</length>
  665 + <precision>-2</precision>
  666 + <conversion_mask/>
  667 + <date_format_lenient>false</date_format_lenient>
  668 + <date_format_locale/>
  669 + <date_format_timezone/>
  670 + <lenient_string_to_number>false</lenient_string_to_number>
  671 + <encoding/>
  672 + <decimal_symbol/>
  673 + <grouping_symbol/>
  674 + <currency_symbol/>
  675 + <storage_type/>
  676 + </meta> <meta> <name>log_in_date_time</name>
  677 + <rename>&#x767b;&#x5165;&#x65f6;&#x95f4;</rename>
  678 + <type>String</type>
  679 + <length>-2</length>
  680 + <precision>-2</precision>
  681 + <conversion_mask>yyyy&#x2f;MM&#x2f;dd HH&#x3a;mm&#x3a;ss</conversion_mask>
  682 + <date_format_lenient>false</date_format_lenient>
  683 + <date_format_locale/>
  684 + <date_format_timezone/>
  685 + <lenient_string_to_number>false</lenient_string_to_number>
  686 + <encoding/>
  687 + <decimal_symbol/>
  688 + <grouping_symbol/>
  689 + <currency_symbol/>
  690 + <storage_type/>
  691 + </meta> <meta> <name>log_out_date_time</name>
  692 + <rename>&#x767b;&#x51fa;&#x65f6;&#x95f4;</rename>
  693 + <type>String</type>
  694 + <length>-2</length>
  695 + <precision>-2</precision>
  696 + <conversion_mask>yyyy&#x2f;MM&#x2f;dd HH&#x3a;mm&#x3a;ss</conversion_mask>
  697 + <date_format_lenient>false</date_format_lenient>
  698 + <date_format_locale/>
  699 + <date_format_timezone/>
  700 + <lenient_string_to_number>false</lenient_string_to_number>
  701 + <encoding/>
  702 + <decimal_symbol/>
  703 + <grouping_symbol/>
  704 + <currency_symbol/>
  705 + <storage_type/>
  706 + </meta> </fields> <cluster_schema/>
  707 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  708 + <xloc>631</xloc>
  709 + <yloc>60</yloc>
  710 + <draw>Y</draw>
  711 + </GUI>
  712 + </step>
  713 +
  714 + <step>
  715 + <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
  716 + <type>SelectValues</type>
  717 + <description/>
  718 + <distribute>Y</distribute>
  719 + <custom_distribution/>
  720 + <copies>1</copies>
  721 + <partitioning>
  722 + <method>none</method>
  723 + <schema_name/>
  724 + </partitioning>
  725 + <fields> <field> <name>&#x65e5;&#x671f;</name>
  726 + <rename/>
  727 + <length>-2</length>
  728 + <precision>-2</precision>
  729 + </field> <field> <name>&#x8d26;&#x6237;&#x540d;&#x79f0;</name>
  730 + <rename/>
  731 + <length>-2</length>
  732 + <precision>-2</precision>
  733 + </field> <field> <name>&#x59d3;&#x540d;</name>
  734 + <rename/>
  735 + <length>-2</length>
  736 + <precision>-2</precision>
  737 + </field> <field> <name>&#x767b;&#x5165;&#x65f6;&#x95f4;</name>
  738 + <rename/>
  739 + <length>-2</length>
  740 + <precision>-2</precision>
  741 + </field> <field> <name>&#x767b;&#x51fa;&#x65f6;&#x95f4;</name>
  742 + <rename/>
  743 + <length>-2</length>
  744 + <precision>-2</precision>
  745 + </field> <select_unspecified>N</select_unspecified>
  746 + </fields> <cluster_schema/>
  747 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  748 + <xloc>761</xloc>
  749 + <yloc>60</yloc>
  750 + <draw>Y</draw>
  751 + </GUI>
  752 + </step>
  753 +
  754 + <step>
  755 + <name>Excel&#x8f93;&#x51fa;</name>
  756 + <type>ExcelOutput</type>
  757 + <description/>
  758 + <distribute>Y</distribute>
  759 + <custom_distribution/>
  760 + <copies>1</copies>
  761 + <partitioning>
  762 + <method>none</method>
  763 + <schema_name/>
  764 + </partitioning>
  765 + <header>Y</header>
  766 + <footer>N</footer>
  767 + <encoding/>
  768 + <append>N</append>
  769 + <add_to_result_filenames>Y</add_to_result_filenames>
  770 + <file>
  771 + <name>&#x24;&#x7b;filepath&#x7d;</name>
  772 + <extention>xls</extention>
  773 + <do_not_open_newfile_init>N</do_not_open_newfile_init>
  774 + <create_parent_folder>N</create_parent_folder>
  775 + <split>N</split>
  776 + <add_date>N</add_date>
  777 + <add_time>N</add_time>
  778 + <SpecifyFormat>N</SpecifyFormat>
  779 + <date_time_format/>
  780 + <sheetname>Sheet1</sheetname>
  781 + <autosizecolums>N</autosizecolums>
  782 + <nullisblank>N</nullisblank>
  783 + <protect_sheet>N</protect_sheet>
  784 + <password>Encrypted </password>
  785 + <splitevery>0</splitevery>
  786 + <usetempfiles>N</usetempfiles>
  787 + <tempdirectory/>
  788 + </file>
  789 + <template>
  790 + <enabled>N</enabled>
  791 + <append>N</append>
  792 + <filename>template.xls</filename>
  793 + </template>
  794 + <fields>
  795 + <field>
  796 + <name>&#x65e5;&#x671f;</name>
  797 + <type>String</type>
  798 + <format/>
  799 + </field>
  800 + <field>
  801 + <name>&#x8d26;&#x6237;&#x540d;&#x79f0;</name>
  802 + <type>String</type>
  803 + <format/>
  804 + </field>
  805 + <field>
  806 + <name>&#x59d3;&#x540d;</name>
  807 + <type>String</type>
  808 + <format/>
  809 + </field>
  810 + <field>
  811 + <name>&#x767b;&#x5165;&#x65f6;&#x95f4;</name>
  812 + <type>String</type>
  813 + <format/>
  814 + </field>
  815 + <field>
  816 + <name>&#x767b;&#x51fa;&#x65f6;&#x95f4;</name>
  817 + <type>String</type>
  818 + <format/>
  819 + </field>
  820 + </fields>
  821 + <custom>
  822 + <header_font_name>arial</header_font_name>
  823 + <header_font_size>10</header_font_size>
  824 + <header_font_bold>N</header_font_bold>
  825 + <header_font_italic>N</header_font_italic>
  826 + <header_font_underline>no</header_font_underline>
  827 + <header_font_orientation>horizontal</header_font_orientation>
  828 + <header_font_color>black</header_font_color>
  829 + <header_background_color>none</header_background_color>
  830 + <header_row_height>255</header_row_height>
  831 + <header_alignment>left</header_alignment>
  832 + <header_image/>
  833 + <row_font_name>arial</row_font_name>
  834 + <row_font_size>10</row_font_size>
  835 + <row_font_color>black</row_font_color>
  836 + <row_background_color>none</row_background_color>
  837 + </custom>
  838 + <cluster_schema/>
  839 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  840 + <xloc>766</xloc>
  841 + <yloc>158</yloc>
  842 + <draw>Y</draw>
  843 + </GUI>
  844 + </step>
  845 +
  846 + <step_error_handling>
  847 + </step_error_handling>
  848 + <slave-step-copy-partition-distribution>
  849 +</slave-step-copy-partition-distribution>
  850 + <slave_transformation>N</slave_transformation>
  851 +
  852 +</transformation>
src/main/resources/static/pages/scheduleApp/module/sys/userSignManage/module.js
@@ -73,13 +73,9 @@ angular.module(&#39;ScheduleApp&#39;).factory( @@ -73,13 +73,9 @@ angular.module(&#39;ScheduleApp&#39;).factory(
73 * @returns {*|Function|promise|n} 73 * @returns {*|Function|promise|n}
74 */ 74 */
75 dataExport: function(query) { 75 dataExport: function(query) {
76 - if (UserPrincipal.getGsStrsQuery().length > 0) {  
77 - return service.dataTools.dataExport(  
78 - {'QUERY': query}  
79 - ).$promise;  
80 - } else {  
81 - return null;  
82 - } 76 + return service.dataTools.dataExport(
  77 + {'QUERY': query}
  78 + ).$promise;
83 } 79 }
84 }; 80 };
85 } 81 }
@@ -98,23 +94,44 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -98,23 +94,44 @@ angular.module(&#39;ScheduleApp&#39;).controller(
98 94
99 // 导出excel 95 // 导出excel
100 self.exportData = function() { 96 self.exportData = function() {
101 - // 组装查询条件 97 + // 组装查询条件(mysql)
102 var QUERY = []; 98 var QUERY = [];
103 - var key_map = {  
104 - "logName": "logName_like",  
105 - "realName": "realName_like"  
106 - };  
107 -  
108 - var key;  
109 - var value;  
110 - var field; 99 +
111 var condition = busInfoManageService.getSearchCondition(); 100 var condition = busInfoManageService.getSearchCondition();
112 - for (key in key_map) {  
113 - value = condition[key_map[key]];  
114 - if (value !== undefined && value !== "") {  
115 - field = key;  
116 - QUERY.push(field + " = " + "'" + value + "'");  
117 - } 101 +
  102 + // logName条件
  103 + if (condition["logName_like"]) {
  104 + QUERY.push("(log_name like '%" + condition["logName_like"] + "%'" + ")");
  105 + }
  106 + // realName条件
  107 + if (condition["realName_like"]) {
  108 + QUERY.push("(real_name like '%" + condition["realName_like"] + "%'" + ")");
  109 + }
  110 + // 日期条件
  111 + if (condition["logInDateTime_ge"]) {
  112 + var _date_ = moment(condition["logInDateTime_ge"]);
  113 + var _date_1_ = moment(condition["logInDateTime_le"]);
  114 + var _date_query_ = [];
  115 + _date_query_.push(" ( ");
  116 + _date_query_.push(" ( ");
  117 + _date_query_.push(" log_in_date_time >= '" + _date_.format("YYYY-MM-DD") + "' ");
  118 + _date_query_.push(" and ");
  119 + _date_query_.push(" log_in_date_time <= '" + _date_1_.format("YYYY-MM-DD") + "' ");
  120 + _date_query_.push(" ) ");
  121 + _date_query_.push(" or ");
  122 + _date_query_.push(" ( ");
  123 + _date_query_.push(" log_out_date_time >= '" + _date_.format("YYYY-MM-DD") + "' ");
  124 + _date_query_.push(" and ");
  125 + _date_query_.push(" log_out_date_time <= '" + _date_1_.format("YYYY-MM-DD") + "' ");
  126 + _date_query_.push(" ) ");
  127 + _date_query_.push(" ) ");
  128 + QUERY.push(_date_query_.join(""));
  129 + }
  130 +
  131 + // console.log(QUERY.join(" and "));
  132 +
  133 + if (QUERY.length == 0) {
  134 + QUERY.push(" 1 = 1 ");
118 } 135 }
119 136
120 var p = busInfoManageService.dataExport(QUERY.join(" and ")); 137 var p = busInfoManageService.dataExport(QUERY.join(" and "));
@@ -159,6 +176,9 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -159,6 +176,9 @@ angular.module(&#39;ScheduleApp&#39;).controller(
159 var _date_plus_day_1 = moment(self.statFromDateTime).add(1, 'd'); 176 var _date_plus_day_1 = moment(self.statFromDateTime).add(1, 'd');
160 service.getSearchCondition()['logInDateTime_ge'] = _date.toDate(); 177 service.getSearchCondition()['logInDateTime_ge'] = _date.toDate();
161 service.getSearchCondition()['logInDateTime_le'] = _date_plus_day_1.toDate(); 178 service.getSearchCondition()['logInDateTime_le'] = _date_plus_day_1.toDate();
  179 + } else {
  180 + service.getSearchCondition()['logInDateTime_ge'] = null;
  181 + service.getSearchCondition()['logInDateTime_le'] = null;
162 } 182 }
163 183
164 } 184 }