Commit 199915a65f4b017851225e6230cf9c964e24ed77

Authored by 廖磊
2 parents deab9798 2ea9f571

Merge branch 'minhang' of

http://222.66.0.204:8090/panzhaov5/bsth_control into minhang
src/main/java/com/bsth/service/schedule/impl/BServiceImpl.java
... ... @@ -4,11 +4,9 @@ import com.bsth.entity.search.CustomerSpecs;
4 4 import com.bsth.repository.BaseRepository;
5 5 import com.bsth.service.schedule.BService;
6 6 import com.bsth.service.schedule.exception.ScheduleException;
7   -import com.bsth.service.schedule.utils.DataToolsService;
8 7 import org.slf4j.Logger;
9 8 import org.slf4j.LoggerFactory;
10 9 import org.springframework.beans.factory.annotation.Autowired;
11   -import org.springframework.beans.factory.annotation.Qualifier;
12 10 import org.springframework.beans.factory.annotation.Value;
13 11 import org.springframework.data.domain.Page;
14 12 import org.springframework.data.domain.Pageable;
... ... @@ -32,10 +30,6 @@ public class BServiceImpl<T, ID extends Serializable> implements BService<T, ID>
32 30 @Value("${hibernate.jdbc.batch_size}")
33 31 private int batchSize;
34 32  
35   - @Autowired
36   - @Qualifier(value = "dataToolsServiceImpl")
37   - private DataToolsService dataToolsService;
38   -
39 33 /** 日志记录器 */
40 34 protected Logger logger = LoggerFactory.getLogger(this.getClass());
41 35  
... ...
src/main/resources/datatools/ktrs/legecy/scheduleRuleDataInput_insertupdate.ktr 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>&#x6392;&#x73ed;&#x89c4;&#x5219;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</name>
  5 + <description/>
  6 + <extended_description/>
  7 + <trans_version/>
  8 + <trans_type>Normal</trans_type>
  9 + <trans_status>0</trans_status>
  10 + <directory>&#x2f;</directory>
  11 + <parameters>
  12 + <parameter>
  13 + <name>erroroutputdir</name>
  14 + <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project_code&#x2f;bsth_project&#x2f;bsth_control_etl&#x2f;&#x5bfc;&#x5165;&#x5bfc;&#x51fa;1</default_value>
  15 + <description>ktr step&#x914d;&#x7f6e;&#x7684;&#x9519;&#x8bef;&#x8f93;&#x51fa;&#x76ee;&#x5f55;</description>
  16 + </parameter>
  17 + <parameter>
  18 + <name>filepath</name>
  19 + <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project_code&#x2f;bsth_project&#x2f;bsth_control_etl&#x2f;&#x5bfc;&#x5165;&#x5bfc;&#x51fa;1&#x2f;&#x6392;&#x7248;&#x89c4;&#x5219;&#x4fe1;&#x606f;.xls</default_value>
  20 + <description>&#x5f85;&#x5904;&#x7406;&#x5bfc;&#x5165;&#x7684;excel&#x6587;&#x4ef6;</description>
  21 + </parameter>
  22 + </parameters>
  23 + <log>
  24 +<trans-log-table><connection/>
  25 +<schema/>
  26 +<table/>
  27 +<size_limit_lines/>
  28 +<interval/>
  29 +<timeout_days/>
  30 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table>
  31 +<perf-log-table><connection/>
  32 +<schema/>
  33 +<table/>
  34 +<interval/>
  35 +<timeout_days/>
  36 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table>
  37 +<channel-log-table><connection/>
  38 +<schema/>
  39 +<table/>
  40 +<timeout_days/>
  41 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table>
  42 +<step-log-table><connection/>
  43 +<schema/>
  44 +<table/>
  45 +<timeout_days/>
  46 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table>
  47 +<metrics-log-table><connection/>
  48 +<schema/>
  49 +<table/>
  50 +<timeout_days/>
  51 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table>
  52 + </log>
  53 + <maxdate>
  54 + <connection/>
  55 + <table/>
  56 + <field/>
  57 + <offset>0.0</offset>
  58 + <maxdiff>0.0</maxdiff>
  59 + </maxdate>
  60 + <size_rowset>10000</size_rowset>
  61 + <sleep_time_empty>50</sleep_time_empty>
  62 + <sleep_time_full>50</sleep_time_full>
  63 + <unique_connections>N</unique_connections>
  64 + <feedback_shown>Y</feedback_shown>
  65 + <feedback_size>50000</feedback_size>
  66 + <using_thread_priorities>Y</using_thread_priorities>
  67 + <shared_objects_file/>
  68 + <capture_step_performance>N</capture_step_performance>
  69 + <step_performance_capturing_delay>1000</step_performance_capturing_delay>
  70 + <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
  71 + <dependencies>
  72 + </dependencies>
  73 + <partitionschemas>
  74 + </partitionschemas>
  75 + <slaveservers>
  76 + </slaveservers>
  77 + <clusterschemas>
  78 + </clusterschemas>
  79 + <created_user>-</created_user>
  80 + <created_date>2017&#x2f;01&#x2f;09 10&#x3a;10&#x3a;36.915</created_date>
  81 + <modified_user>-</modified_user>
  82 + <modified_date>2017&#x2f;01&#x2f;09 10&#x3a;10&#x3a;36.915</modified_date>
  83 + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</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>xlab_mysql_youle</name>
  196 + <server>101.231.124.8</server>
  197 + <type>MYSQL</type>
  198 + <access>Native</access>
  199 + <database>xlab_youle</database>
  200 + <port>45687</port>
  201 + <username>xlab-youle</username>
  202 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
  203 + <servername/>
  204 + <data_tablespace/>
  205 + <index_tablespace/>
  206 + <attributes>
  207 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  208 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  209 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  210 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  211 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  212 + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
  213 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  214 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  215 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  216 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  217 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  218 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  219 + </attributes>
  220 + </connection>
  221 + <connection>
  222 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  223 + <server>localhost</server>
  224 + <type>MYSQL</type>
  225 + <access>Native</access>
  226 + <database>xlab_youle</database>
  227 + <port>3306</port>
  228 + <username>root</username>
  229 + <password>Encrypted </password>
  230 + <servername/>
  231 + <data_tablespace/>
  232 + <index_tablespace/>
  233 + <attributes>
  234 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  235 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  236 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  237 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  238 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  239 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  240 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  241 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  242 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  243 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  244 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  245 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  246 + </attributes>
  247 + </connection>
  248 + <connection>
  249 + <name>xlab_youle</name>
  250 + <server/>
  251 + <type>MYSQL</type>
  252 + <access>JNDI</access>
  253 + <database>xlab_youle</database>
  254 + <port>1521</port>
  255 + <username/>
  256 + <password>Encrypted </password>
  257 + <servername/>
  258 + <data_tablespace/>
  259 + <index_tablespace/>
  260 + <attributes>
  261 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  262 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  263 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  264 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  265 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  266 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  267 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  268 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  269 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  270 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  271 + </attributes>
  272 + </connection>
  273 + <order>
  274 + <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>
  275 + <hop> <from>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</from><to>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</to><enabled>Y</enabled> </hop>
  276 + <hop> <from>&#x62c6;&#x5206;&#x8def;&#x724c;&#x8303;&#x56f4;</from><to>&#x8def;&#x724c;id&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  277 + <hop> <from>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</from><to>&#x5206;&#x7ec4;&#x5408;&#x5e76;&#x8def;&#x724c;id</to><enabled>Y</enabled> </hop>
  278 + <hop> <from>&#x5206;&#x7ec4;&#x5408;&#x5e76;&#x8def;&#x724c;id</from><to>&#x62c6;&#x5206;&#x4eba;&#x5458;&#x8303;&#x56f4;</to><enabled>Y</enabled> </hop>
  279 + <hop> <from>&#x62c6;&#x5206;&#x4eba;&#x5458;&#x8303;&#x56f4;</from><to>&#x62c6;&#x5206;&#x5206;&#x73ed;&#x642d;&#x73ed;&#x7f16;&#x7801;&#x5b57;&#x6bb5;</to><enabled>Y</enabled> </hop>
  280 + <hop> <from>&#x62c6;&#x5206;&#x5206;&#x73ed;&#x642d;&#x73ed;&#x7f16;&#x7801;&#x5b57;&#x6bb5;</from><to>&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  281 + <hop> <from>&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x67e5;&#x8be2;</from><to>&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x67e5;&#x8be2; 2</to><enabled>Y</enabled> </hop>
  282 + <hop> <from>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</from><to>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  283 + <hop> <from>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</from><to>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  284 + <hop> <from>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</from><to>&#x8f66;&#x8f86;&#x914d;&#x7f6e;id&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  285 + <hop> <from>&#x8f66;&#x8f86;&#x914d;&#x7f6e;id&#x67e5;&#x8be2;</from><to>&#x8fc7;&#x6ee4;&#x8f66;&#x8f86;&#x914d;&#x7f6e;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  286 + <hop> <from>&#x8fc7;&#x6ee4;&#x8f66;&#x8f86;&#x914d;&#x7f6e;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</from><to>&#x62c6;&#x5206;&#x8def;&#x724c;&#x8303;&#x56f4;</to><enabled>Y</enabled> </hop>
  287 + <hop> <from>&#x8def;&#x724c;id&#x67e5;&#x8be2;</from><to>&#x8fc7;&#x6ee4;&#x8def;&#x724c;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  288 + <hop> <from>&#x8fc7;&#x6ee4;&#x8def;&#x724c;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</from><to>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  289 + <hop> <from>&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x67e5;&#x8be2; 2</from><to>&#x8fc7;&#x6ee4;&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  290 + <hop> <from>&#x8fc7;&#x6ee4;&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</from><to>&#x5408;&#x5e76;&#x5206;&#x73ed;&#x4eba;&#x5458;&#x914d;&#x7f6e;id</to><enabled>Y</enabled> </hop>
  291 + <hop> <from>&#x5408;&#x5e76;&#x5206;&#x73ed;&#x4eba;&#x5458;&#x914d;&#x7f6e;id</from><to>&#x6392;&#x5e8f;&#x8bb0;&#x5f55; 2</to><enabled>Y</enabled> </hop>
  292 + <hop> <from>&#x6392;&#x5e8f;&#x8bb0;&#x5f55; 2</from><to>&#x5206;&#x7ec4;&#x5408;&#x5e76;&#x4eba;&#x5458;&#x914d;&#x7f6e;id</to><enabled>Y</enabled> </hop>
  293 + <hop> <from>&#x63d2;&#x5165; &#x2f; &#x66f4;&#x65b0;bsth_c_s_sr1_flat</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa; 2</to><enabled>Y</enabled> </hop>
  294 + <hop> <from>&#x5206;&#x7ec4;&#x5408;&#x5e76;&#x4eba;&#x5458;&#x914d;&#x7f6e;id</from><to>&#x542f;&#x7528;&#x65e5;&#x671f;&#x8f6c;&#x6362;</to><enabled>Y</enabled> </hop>
  295 + <hop> <from>&#x542f;&#x7528;&#x65e5;&#x671f;&#x8f6c;&#x6362;</from><to>&#x63d2;&#x5165; &#x2f; &#x66f4;&#x65b0;bsth_c_s_sr1_flat</to><enabled>Y</enabled> </hop>
  296 + </order>
  297 + <step>
  298 + <name>&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x67e5;&#x8be2;</name>
  299 + <type>DBLookup</type>
  300 + <description/>
  301 + <distribute>Y</distribute>
  302 + <custom_distribution/>
  303 + <copies>1</copies>
  304 + <partitioning>
  305 + <method>none</method>
  306 + <schema_name/>
  307 + </partitioning>
  308 + <connection>bus_control_variable</connection>
  309 + <cache>N</cache>
  310 + <cache_load_all>Y</cache_load_all>
  311 + <cache_size>0</cache_size>
  312 + <lookup>
  313 + <schema/>
  314 + <table>bsth_c_s_ecinfo</table>
  315 + <orderby/>
  316 + <fail_on_multiple>N</fail_on_multiple>
  317 + <eat_row_on_failure>N</eat_row_on_failure>
  318 + <key>
  319 + <name>xlid</name>
  320 + <field>xl</field>
  321 + <condition>&#x3d;</condition>
  322 + <name2/>
  323 + </key>
  324 + <key>
  325 + <name>dbbm1</name>
  326 + <field>dbbm</field>
  327 + <condition>&#x3d;</condition>
  328 + <name2/>
  329 + </key>
  330 + <key>
  331 + <name>isCancel</name>
  332 + <field>is_cancel</field>
  333 + <condition>&#x3d;</condition>
  334 + <name2/>
  335 + </key>
  336 + <value>
  337 + <name>id</name>
  338 + <rename>rycid1</rename>
  339 + <default/>
  340 + <type>Integer</type>
  341 + </value>
  342 + </lookup>
  343 + <cluster_schema/>
  344 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  345 + <xloc>904</xloc>
  346 + <yloc>101</yloc>
  347 + <draw>Y</draw>
  348 + </GUI>
  349 + </step>
  350 +
  351 + <step>
  352 + <name>&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x67e5;&#x8be2; 2</name>
  353 + <type>DBLookup</type>
  354 + <description/>
  355 + <distribute>Y</distribute>
  356 + <custom_distribution/>
  357 + <copies>1</copies>
  358 + <partitioning>
  359 + <method>none</method>
  360 + <schema_name/>
  361 + </partitioning>
  362 + <connection>bus_control_variable</connection>
  363 + <cache>N</cache>
  364 + <cache_load_all>Y</cache_load_all>
  365 + <cache_size>0</cache_size>
  366 + <lookup>
  367 + <schema/>
  368 + <table>bsth_c_s_ecinfo</table>
  369 + <orderby/>
  370 + <fail_on_multiple>N</fail_on_multiple>
  371 + <eat_row_on_failure>N</eat_row_on_failure>
  372 + <key>
  373 + <name>xlid</name>
  374 + <field>xl</field>
  375 + <condition>&#x3d;</condition>
  376 + <name2/>
  377 + </key>
  378 + <key>
  379 + <name>dbbm2</name>
  380 + <field>dbbm</field>
  381 + <condition>&#x3d;</condition>
  382 + <name2/>
  383 + </key>
  384 + <key>
  385 + <name>isCancel</name>
  386 + <field>is_cancel</field>
  387 + <condition>&#x3d;</condition>
  388 + <name2/>
  389 + </key>
  390 + <value>
  391 + <name>id</name>
  392 + <rename>rycid2</rename>
  393 + <default/>
  394 + <type>Integer</type>
  395 + </value>
  396 + </lookup>
  397 + <cluster_schema/>
  398 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  399 + <xloc>778</xloc>
  400 + <yloc>103</yloc>
  401 + <draw>Y</draw>
  402 + </GUI>
  403 + </step>
  404 +
  405 + <step>
  406 + <name>&#x5206;&#x7ec4;&#x5408;&#x5e76;&#x4eba;&#x5458;&#x914d;&#x7f6e;id</name>
  407 + <type>GroupBy</type>
  408 + <description/>
  409 + <distribute>Y</distribute>
  410 + <custom_distribution/>
  411 + <copies>1</copies>
  412 + <partitioning>
  413 + <method>none</method>
  414 + <schema_name/>
  415 + </partitioning>
  416 + <all_rows>N</all_rows>
  417 + <ignore_aggregate>N</ignore_aggregate>
  418 + <field_ignore/>
  419 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  420 + <prefix>grp</prefix>
  421 + <add_linenr>N</add_linenr>
  422 + <linenr_fieldname/>
  423 + <give_back_row>N</give_back_row>
  424 + <group>
  425 + <field>
  426 + <name>xlid</name>
  427 + </field>
  428 + <field>
  429 + <name>cid</name>
  430 + </field>
  431 + <field>
  432 + <name>lpnames</name>
  433 + </field>
  434 + <field>
  435 + <name>lpids</name>
  436 + </field>
  437 + <field>
  438 + <name>&#x8d77;&#x59cb;&#x8def;&#x724c;</name>
  439 + </field>
  440 + <field>
  441 + <name>&#x8d77;&#x59cb;&#x4eba;&#x5458;</name>
  442 + </field>
  443 + <field>
  444 + <name>&#x4eba;&#x5458;&#x8303;&#x56f4;</name>
  445 + </field>
  446 + <field>
  447 + <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  448 + </field>
  449 + <field>
  450 + <name>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</name>
  451 + </field>
  452 + <field>
  453 + <name>isCancel</name>
  454 + </field>
  455 + </group>
  456 + <fields>
  457 + <field>
  458 + <aggregate>rycids</aggregate>
  459 + <subject>rycid</subject>
  460 + <type>CONCAT_STRING</type>
  461 + <valuefield>,</valuefield>
  462 + </field>
  463 + <field>
  464 + <aggregate>rybms</aggregate>
  465 + <subject>rybm</subject>
  466 + <type>CONCAT_STRING</type>
  467 + <valuefield>,</valuefield>
  468 + </field>
  469 + </fields>
  470 + <cluster_schema/>
  471 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  472 + <xloc>780</xloc>
  473 + <yloc>291</yloc>
  474 + <draw>Y</draw>
  475 + </GUI>
  476 + </step>
  477 +
  478 + <step>
  479 + <name>&#x5206;&#x7ec4;&#x5408;&#x5e76;&#x8def;&#x724c;id</name>
  480 + <type>GroupBy</type>
  481 + <description/>
  482 + <distribute>Y</distribute>
  483 + <custom_distribution/>
  484 + <copies>1</copies>
  485 + <partitioning>
  486 + <method>none</method>
  487 + <schema_name/>
  488 + </partitioning>
  489 + <all_rows>N</all_rows>
  490 + <ignore_aggregate>N</ignore_aggregate>
  491 + <field_ignore/>
  492 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  493 + <prefix>grp</prefix>
  494 + <add_linenr>N</add_linenr>
  495 + <linenr_fieldname/>
  496 + <give_back_row>N</give_back_row>
  497 + <group>
  498 + <field>
  499 + <name>xlid</name>
  500 + </field>
  501 + <field>
  502 + <name>cid</name>
  503 + </field>
  504 + <field>
  505 + <name>&#x8d77;&#x59cb;&#x8def;&#x724c;</name>
  506 + </field>
  507 + <field>
  508 + <name>&#x8d77;&#x59cb;&#x4eba;&#x5458;</name>
  509 + </field>
  510 + <field>
  511 + <name>&#x4eba;&#x5458;&#x8303;&#x56f4;</name>
  512 + </field>
  513 + <field>
  514 + <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  515 + </field>
  516 + <field>
  517 + <name>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</name>
  518 + </field>
  519 + <field>
  520 + <name>isCancel</name>
  521 + </field>
  522 + </group>
  523 + <fields>
  524 + <field>
  525 + <aggregate>lpids</aggregate>
  526 + <subject>lpid</subject>
  527 + <type>CONCAT_STRING</type>
  528 + <valuefield>,</valuefield>
  529 + </field>
  530 + <field>
  531 + <aggregate>lpnames</aggregate>
  532 + <subject>lpname</subject>
  533 + <type>CONCAT_STRING</type>
  534 + <valuefield>,</valuefield>
  535 + </field>
  536 + </fields>
  537 + <cluster_schema/>
  538 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  539 + <xloc>653</xloc>
  540 + <yloc>119</yloc>
  541 + <draw>Y</draw>
  542 + </GUI>
  543 + </step>
  544 +
  545 + <step>
  546 + <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name>
  547 + <type>ExcelInput</type>
  548 + <description/>
  549 + <distribute>Y</distribute>
  550 + <custom_distribution/>
  551 + <copies>1</copies>
  552 + <partitioning>
  553 + <method>none</method>
  554 + <schema_name/>
  555 + </partitioning>
  556 + <header>Y</header>
  557 + <noempty>Y</noempty>
  558 + <stoponempty>N</stoponempty>
  559 + <filefield/>
  560 + <sheetfield/>
  561 + <sheetrownumfield/>
  562 + <rownumfield/>
  563 + <sheetfield/>
  564 + <filefield/>
  565 + <limit>0</limit>
  566 + <encoding/>
  567 + <add_to_result_filenames>Y</add_to_result_filenames>
  568 + <accept_filenames>Y</accept_filenames>
  569 + <accept_field>filepath_</accept_field>
  570 + <accept_stepname>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</accept_stepname>
  571 + <file>
  572 + <name/>
  573 + <filemask/>
  574 + <exclude_filemask/>
  575 + <file_required>N</file_required>
  576 + <include_subfolders>N</include_subfolders>
  577 + </file>
  578 + <fields>
  579 + <field>
  580 + <name>&#x7ebf;&#x8def;</name>
  581 + <type>String</type>
  582 + <length>-1</length>
  583 + <precision>-1</precision>
  584 + <trim_type>none</trim_type>
  585 + <repeat>N</repeat>
  586 + <format/>
  587 + <currency/>
  588 + <decimal/>
  589 + <group/>
  590 + </field>
  591 + <field>
  592 + <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
  593 + <type>String</type>
  594 + <length>-1</length>
  595 + <precision>-1</precision>
  596 + <trim_type>none</trim_type>
  597 + <repeat>N</repeat>
  598 + <format/>
  599 + <currency/>
  600 + <decimal/>
  601 + <group/>
  602 + </field>
  603 + <field>
  604 + <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  605 + <type>String</type>
  606 + <length>-1</length>
  607 + <precision>-1</precision>
  608 + <trim_type>none</trim_type>
  609 + <repeat>N</repeat>
  610 + <format/>
  611 + <currency/>
  612 + <decimal/>
  613 + <group/>
  614 + </field>
  615 + <field>
  616 + <name>&#x8d77;&#x59cb;&#x8def;&#x724c;</name>
  617 + <type>String</type>
  618 + <length>-1</length>
  619 + <precision>-1</precision>
  620 + <trim_type>none</trim_type>
  621 + <repeat>N</repeat>
  622 + <format>&#x23;</format>
  623 + <currency/>
  624 + <decimal/>
  625 + <group/>
  626 + </field>
  627 + <field>
  628 + <name>&#x8def;&#x724c;&#x8303;&#x56f4;</name>
  629 + <type>String</type>
  630 + <length>-1</length>
  631 + <precision>-1</precision>
  632 + <trim_type>none</trim_type>
  633 + <repeat>N</repeat>
  634 + <format>&#x23;</format>
  635 + <currency/>
  636 + <decimal/>
  637 + <group/>
  638 + </field>
  639 + <field>
  640 + <name>&#x8d77;&#x59cb;&#x4eba;&#x5458;</name>
  641 + <type>String</type>
  642 + <length>-1</length>
  643 + <precision>-1</precision>
  644 + <trim_type>none</trim_type>
  645 + <repeat>N</repeat>
  646 + <format>&#x23;</format>
  647 + <currency/>
  648 + <decimal/>
  649 + <group/>
  650 + </field>
  651 + <field>
  652 + <name>&#x4eba;&#x5458;&#x8303;&#x56f4;</name>
  653 + <type>String</type>
  654 + <length>-1</length>
  655 + <precision>-1</precision>
  656 + <trim_type>none</trim_type>
  657 + <repeat>N</repeat>
  658 + <format>&#x23;</format>
  659 + <currency/>
  660 + <decimal/>
  661 + <group/>
  662 + </field>
  663 + <field>
  664 + <name>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</name>
  665 + <type>String</type>
  666 + <length>-1</length>
  667 + <precision>-1</precision>
  668 + <trim_type>none</trim_type>
  669 + <repeat>N</repeat>
  670 + <format>&#x23;</format>
  671 + <currency/>
  672 + <decimal/>
  673 + <group/>
  674 + </field>
  675 + </fields>
  676 + <sheets>
  677 + <sheet>
  678 + <name>&#x5de5;&#x4f5c;&#x8868;1</name>
  679 + <startrow>0</startrow>
  680 + <startcol>0</startcol>
  681 + </sheet>
  682 + </sheets>
  683 + <strict_types>N</strict_types>
  684 + <error_ignored>N</error_ignored>
  685 + <error_line_skipped>N</error_line_skipped>
  686 + <bad_line_files_destination_directory/>
  687 + <bad_line_files_extension>warning</bad_line_files_extension>
  688 + <error_line_files_destination_directory/>
  689 + <error_line_files_extension>error</error_line_files_extension>
  690 + <line_number_files_destination_directory/>
  691 + <line_number_files_extension>line</line_number_files_extension>
  692 + <shortFileFieldName/>
  693 + <pathFieldName/>
  694 + <hiddenFieldName/>
  695 + <lastModificationTimeFieldName/>
  696 + <uriNameFieldName/>
  697 + <rootUriNameFieldName/>
  698 + <extensionFieldName/>
  699 + <sizeFieldName/>
  700 + <spreadsheet_type>JXL</spreadsheet_type>
  701 + <cluster_schema/>
  702 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  703 + <xloc>208</xloc>
  704 + <yloc>21</yloc>
  705 + <draw>Y</draw>
  706 + </GUI>
  707 + </step>
  708 +
  709 + <step>
  710 + <name>&#x5408;&#x5e76;&#x5206;&#x73ed;&#x4eba;&#x5458;&#x914d;&#x7f6e;id</name>
  711 + <type>ScriptValueMod</type>
  712 + <description/>
  713 + <distribute>Y</distribute>
  714 + <custom_distribution/>
  715 + <copies>1</copies>
  716 + <partitioning>
  717 + <method>none</method>
  718 + <schema_name/>
  719 + </partitioning>
  720 + <compatible>N</compatible>
  721 + <optimizationLevel>9</optimizationLevel>
  722 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  723 + <jsScript_name>Script 1</jsScript_name>
  724 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var rycid&#x3b;&#xa;var rybm&#x3b;&#xa;&#xa;if &#x28;rycid2 &#x3d;&#x3d; null&#x29; &#x7b;&#xa; rycid &#x3d; rycid1&#x3b;&#xa; rybm &#x3d; dbbm1&#x3b;&#xa;&#x7d; else &#x7b;&#xa; rycid &#x3d; rycid1 &#x2b; &#x22;-&#x22; &#x2b; rycid2&#x3b;&#xa; rybm &#x3d; dbbm1 &#x2b; &#x22;-&#x22; &#x2b; dbbm2&#x3b;&#xa;&#x7d;</jsScript_script>
  725 + </jsScript> </jsScripts> <fields> <field> <name>rycid</name>
  726 + <rename>rycid</rename>
  727 + <type>String</type>
  728 + <length>-1</length>
  729 + <precision>-1</precision>
  730 + <replace>N</replace>
  731 + </field> <field> <name>rybm</name>
  732 + <rename>rybm</rename>
  733 + <type>String</type>
  734 + <length>-1</length>
  735 + <precision>-1</precision>
  736 + <replace>N</replace>
  737 + </field> </fields> <cluster_schema/>
  738 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  739 + <xloc>917</xloc>
  740 + <yloc>201</yloc>
  741 + <draw>Y</draw>
  742 + </GUI>
  743 + </step>
  744 +
  745 + <step>
  746 + <name>&#x542f;&#x7528;&#x65e5;&#x671f;&#x8f6c;&#x6362;</name>
  747 + <type>SelectValues</type>
  748 + <description/>
  749 + <distribute>Y</distribute>
  750 + <custom_distribution/>
  751 + <copies>1</copies>
  752 + <partitioning>
  753 + <method>none</method>
  754 + <schema_name/>
  755 + </partitioning>
  756 + <fields> <select_unspecified>N</select_unspecified>
  757 + <meta> <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  758 + <rename>&#x542f;&#x7528;&#x65e5;&#x671f;</rename>
  759 + <type>Timestamp</type>
  760 + <length>-2</length>
  761 + <precision>-2</precision>
  762 + <conversion_mask>yyyy-MM-dd</conversion_mask>
  763 + <date_format_lenient>false</date_format_lenient>
  764 + <date_format_locale/>
  765 + <date_format_timezone/>
  766 + <lenient_string_to_number>false</lenient_string_to_number>
  767 + <encoding/>
  768 + <decimal_symbol/>
  769 + <grouping_symbol/>
  770 + <currency_symbol/>
  771 + <storage_type/>
  772 + </meta> </fields> <cluster_schema/>
  773 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  774 + <xloc>777</xloc>
  775 + <yloc>368</yloc>
  776 + <draw>Y</draw>
  777 + </GUI>
  778 + </step>
  779 +
  780 + <step>
  781 + <name>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</name>
  782 + <type>Constant</type>
  783 + <description/>
  784 + <distribute>Y</distribute>
  785 + <custom_distribution/>
  786 + <copies>1</copies>
  787 + <partitioning>
  788 + <method>none</method>
  789 + <schema_name/>
  790 + </partitioning>
  791 + <fields>
  792 + <field>
  793 + <name>isCancel</name>
  794 + <type>Integer</type>
  795 + <format/>
  796 + <currency/>
  797 + <decimal/>
  798 + <group/>
  799 + <nullif>0</nullif>
  800 + <length>-1</length>
  801 + <precision>-1</precision>
  802 + <set_empty_string>N</set_empty_string>
  803 + </field>
  804 + </fields>
  805 + <cluster_schema/>
  806 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  807 + <xloc>361</xloc>
  808 + <yloc>22</yloc>
  809 + <draw>Y</draw>
  810 + </GUI>
  811 + </step>
  812 +
  813 + <step>
  814 + <name>&#x62c6;&#x5206;&#x4eba;&#x5458;&#x8303;&#x56f4;</name>
  815 + <type>SplitFieldToRows3</type>
  816 + <description/>
  817 + <distribute>Y</distribute>
  818 + <custom_distribution/>
  819 + <copies>1</copies>
  820 + <partitioning>
  821 + <method>none</method>
  822 + <schema_name/>
  823 + </partitioning>
  824 + <splitfield>&#x4eba;&#x5458;&#x8303;&#x56f4;</splitfield>
  825 + <delimiter>,</delimiter>
  826 + <newfield>dbbm</newfield>
  827 + <rownum>N</rownum>
  828 + <rownum_field/>
  829 + <resetrownumber>Y</resetrownumber>
  830 + <delimiter_is_regex>N</delimiter_is_regex>
  831 + <cluster_schema/>
  832 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  833 + <xloc>777</xloc>
  834 + <yloc>22</yloc>
  835 + <draw>Y</draw>
  836 + </GUI>
  837 + </step>
  838 +
  839 + <step>
  840 + <name>&#x62c6;&#x5206;&#x5206;&#x73ed;&#x642d;&#x73ed;&#x7f16;&#x7801;&#x5b57;&#x6bb5;</name>
  841 + <type>FieldSplitter</type>
  842 + <description/>
  843 + <distribute>Y</distribute>
  844 + <custom_distribution/>
  845 + <copies>1</copies>
  846 + <partitioning>
  847 + <method>none</method>
  848 + <schema_name/>
  849 + </partitioning>
  850 + <splitfield>dbbm</splitfield>
  851 + <delimiter>-</delimiter>
  852 + <enclosure/>
  853 + <fields> <field> <name>dbbm1</name>
  854 + <id/>
  855 + <idrem>N</idrem>
  856 + <type>String</type>
  857 + <format/>
  858 + <group/>
  859 + <decimal/>
  860 + <currency/>
  861 + <length>-1</length>
  862 + <precision>-1</precision>
  863 + <nullif/>
  864 + <ifnull/>
  865 + <trimtype>none</trimtype>
  866 + </field> <field> <name>dbbm2</name>
  867 + <id/>
  868 + <idrem>N</idrem>
  869 + <type>String</type>
  870 + <format/>
  871 + <group/>
  872 + <decimal/>
  873 + <currency/>
  874 + <length>-1</length>
  875 + <precision>-1</precision>
  876 + <nullif/>
  877 + <ifnull/>
  878 + <trimtype>none</trimtype>
  879 + </field> </fields> <cluster_schema/>
  880 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  881 + <xloc>901</xloc>
  882 + <yloc>22</yloc>
  883 + <draw>Y</draw>
  884 + </GUI>
  885 + </step>
  886 +
  887 + <step>
  888 + <name>&#x62c6;&#x5206;&#x8def;&#x724c;&#x8303;&#x56f4;</name>
  889 + <type>SplitFieldToRows3</type>
  890 + <description/>
  891 + <distribute>Y</distribute>
  892 + <custom_distribution/>
  893 + <copies>1</copies>
  894 + <partitioning>
  895 + <method>none</method>
  896 + <schema_name/>
  897 + </partitioning>
  898 + <splitfield>&#x8def;&#x724c;&#x8303;&#x56f4;</splitfield>
  899 + <delimiter>,</delimiter>
  900 + <newfield>lpname</newfield>
  901 + <rownum>N</rownum>
  902 + <rownum_field/>
  903 + <resetrownumber>Y</resetrownumber>
  904 + <delimiter_is_regex>N</delimiter_is_regex>
  905 + <cluster_schema/>
  906 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  907 + <xloc>364</xloc>
  908 + <yloc>259</yloc>
  909 + <draw>Y</draw>
  910 + </GUI>
  911 + </step>
  912 +
  913 + <step>
  914 + <name>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</name>
  915 + <type>SortRows</type>
  916 + <description/>
  917 + <distribute>Y</distribute>
  918 + <custom_distribution/>
  919 + <copies>1</copies>
  920 + <partitioning>
  921 + <method>none</method>
  922 + <schema_name/>
  923 + </partitioning>
  924 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  925 + <prefix>out</prefix>
  926 + <sort_size>1000000</sort_size>
  927 + <free_memory/>
  928 + <compress>N</compress>
  929 + <compress_variable/>
  930 + <unique_rows>N</unique_rows>
  931 + <fields>
  932 + <field>
  933 + <name>xlid</name>
  934 + <ascending>Y</ascending>
  935 + <case_sensitive>N</case_sensitive>
  936 + <presorted>N</presorted>
  937 + </field>
  938 + <field>
  939 + <name>cid</name>
  940 + <ascending>Y</ascending>
  941 + <case_sensitive>N</case_sensitive>
  942 + <presorted>N</presorted>
  943 + </field>
  944 + <field>
  945 + <name>&#x8d77;&#x59cb;&#x8def;&#x724c;</name>
  946 + <ascending>Y</ascending>
  947 + <case_sensitive>N</case_sensitive>
  948 + <presorted>N</presorted>
  949 + </field>
  950 + <field>
  951 + <name>&#x8d77;&#x59cb;&#x4eba;&#x5458;</name>
  952 + <ascending>Y</ascending>
  953 + <case_sensitive>N</case_sensitive>
  954 + <presorted>N</presorted>
  955 + </field>
  956 + <field>
  957 + <name>&#x4eba;&#x5458;&#x8303;&#x56f4;</name>
  958 + <ascending>Y</ascending>
  959 + <case_sensitive>N</case_sensitive>
  960 + <presorted>N</presorted>
  961 + </field>
  962 + <field>
  963 + <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  964 + <ascending>Y</ascending>
  965 + <case_sensitive>N</case_sensitive>
  966 + <presorted>N</presorted>
  967 + </field>
  968 + <field>
  969 + <name>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</name>
  970 + <ascending>Y</ascending>
  971 + <case_sensitive>N</case_sensitive>
  972 + <presorted>N</presorted>
  973 + </field>
  974 + <field>
  975 + <name>isCancel</name>
  976 + <ascending>Y</ascending>
  977 + <case_sensitive>N</case_sensitive>
  978 + <presorted>N</presorted>
  979 + </field>
  980 + </fields>
  981 + <cluster_schema/>
  982 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  983 + <xloc>516</xloc>
  984 + <yloc>119</yloc>
  985 + <draw>Y</draw>
  986 + </GUI>
  987 + </step>
  988 +
  989 + <step>
  990 + <name>&#x6392;&#x5e8f;&#x8bb0;&#x5f55; 2</name>
  991 + <type>SortRows</type>
  992 + <description/>
  993 + <distribute>Y</distribute>
  994 + <custom_distribution/>
  995 + <copies>1</copies>
  996 + <partitioning>
  997 + <method>none</method>
  998 + <schema_name/>
  999 + </partitioning>
  1000 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  1001 + <prefix>out</prefix>
  1002 + <sort_size>1000000</sort_size>
  1003 + <free_memory/>
  1004 + <compress>N</compress>
  1005 + <compress_variable/>
  1006 + <unique_rows>N</unique_rows>
  1007 + <fields>
  1008 + <field>
  1009 + <name>xlid</name>
  1010 + <ascending>Y</ascending>
  1011 + <case_sensitive>N</case_sensitive>
  1012 + <presorted>N</presorted>
  1013 + </field>
  1014 + <field>
  1015 + <name>cid</name>
  1016 + <ascending>Y</ascending>
  1017 + <case_sensitive>N</case_sensitive>
  1018 + <presorted>N</presorted>
  1019 + </field>
  1020 + <field>
  1021 + <name>lpnames</name>
  1022 + <ascending>Y</ascending>
  1023 + <case_sensitive>N</case_sensitive>
  1024 + <presorted>N</presorted>
  1025 + </field>
  1026 + <field>
  1027 + <name>lpids</name>
  1028 + <ascending>Y</ascending>
  1029 + <case_sensitive>N</case_sensitive>
  1030 + <presorted>N</presorted>
  1031 + </field>
  1032 + <field>
  1033 + <name>&#x8d77;&#x59cb;&#x8def;&#x724c;</name>
  1034 + <ascending>Y</ascending>
  1035 + <case_sensitive>N</case_sensitive>
  1036 + <presorted>N</presorted>
  1037 + </field>
  1038 + <field>
  1039 + <name>&#x8d77;&#x59cb;&#x4eba;&#x5458;</name>
  1040 + <ascending>Y</ascending>
  1041 + <case_sensitive>N</case_sensitive>
  1042 + <presorted>N</presorted>
  1043 + </field>
  1044 + <field>
  1045 + <name>&#x4eba;&#x5458;&#x8303;&#x56f4;</name>
  1046 + <ascending>Y</ascending>
  1047 + <case_sensitive>N</case_sensitive>
  1048 + <presorted>N</presorted>
  1049 + </field>
  1050 + <field>
  1051 + <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  1052 + <ascending>Y</ascending>
  1053 + <case_sensitive>N</case_sensitive>
  1054 + <presorted>N</presorted>
  1055 + </field>
  1056 + <field>
  1057 + <name>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</name>
  1058 + <ascending>Y</ascending>
  1059 + <case_sensitive>N</case_sensitive>
  1060 + <presorted>N</presorted>
  1061 + </field>
  1062 + <field>
  1063 + <name>isCancel</name>
  1064 + <ascending>Y</ascending>
  1065 + <case_sensitive>N</case_sensitive>
  1066 + <presorted>N</presorted>
  1067 + </field>
  1068 + </fields>
  1069 + <cluster_schema/>
  1070 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1071 + <xloc>919</xloc>
  1072 + <yloc>289</yloc>
  1073 + <draw>Y</draw>
  1074 + </GUI>
  1075 + </step>
  1076 +
  1077 + <step>
  1078 + <name>&#x63d2;&#x5165; &#x2f; &#x66f4;&#x65b0;bsth_c_s_sr1_flat</name>
  1079 + <type>InsertUpdate</type>
  1080 + <description/>
  1081 + <distribute>Y</distribute>
  1082 + <custom_distribution/>
  1083 + <copies>1</copies>
  1084 + <partitioning>
  1085 + <method>none</method>
  1086 + <schema_name/>
  1087 + </partitioning>
  1088 + <connection>bus_control_variable</connection>
  1089 + <commit>100</commit>
  1090 + <update_bypassed>N</update_bypassed>
  1091 + <lookup>
  1092 + <schema/>
  1093 + <table>bsth_c_s_sr1_flat</table>
  1094 + <key>
  1095 + <name>xlid</name>
  1096 + <field>xl</field>
  1097 + <condition>&#x3d;</condition>
  1098 + <name2/>
  1099 + </key>
  1100 + <key>
  1101 + <name>cid</name>
  1102 + <field>car_config_info</field>
  1103 + <condition>&#x3d;</condition>
  1104 + <name2/>
  1105 + </key>
  1106 + <value>
  1107 + <name>xl</name>
  1108 + <rename>xlid</rename>
  1109 + <update>Y</update>
  1110 + </value>
  1111 + <value>
  1112 + <name>car_config_info</name>
  1113 + <rename>cid</rename>
  1114 + <update>Y</update>
  1115 + </value>
  1116 + <value>
  1117 + <name>lp_names</name>
  1118 + <rename>lpnames</rename>
  1119 + <update>Y</update>
  1120 + </value>
  1121 + <value>
  1122 + <name>lp_ids</name>
  1123 + <rename>lpids</rename>
  1124 + <update>Y</update>
  1125 + </value>
  1126 + <value>
  1127 + <name>lp_start</name>
  1128 + <rename>&#x8d77;&#x59cb;&#x8def;&#x724c;</rename>
  1129 + <update>Y</update>
  1130 + </value>
  1131 + <value>
  1132 + <name>ry_start</name>
  1133 + <rename>&#x8d77;&#x59cb;&#x4eba;&#x5458;</rename>
  1134 + <update>Y</update>
  1135 + </value>
  1136 + <value>
  1137 + <name>ry_dbbms</name>
  1138 + <rename>rybms</rename>
  1139 + <update>Y</update>
  1140 + </value>
  1141 + <value>
  1142 + <name>qyrq</name>
  1143 + <rename>&#x542f;&#x7528;&#x65e5;&#x671f;</rename>
  1144 + <update>Y</update>
  1145 + </value>
  1146 + <value>
  1147 + <name>ry_config_ids</name>
  1148 + <rename>rycids</rename>
  1149 + <update>Y</update>
  1150 + </value>
  1151 + <value>
  1152 + <name>fbgs</name>
  1153 + <rename>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</rename>
  1154 + <update>Y</update>
  1155 + </value>
  1156 + </lookup>
  1157 + <cluster_schema/>
  1158 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1159 + <xloc>532</xloc>
  1160 + <yloc>297</yloc>
  1161 + <draw>Y</draw>
  1162 + </GUI>
  1163 + </step>
  1164 +
  1165 + <step>
  1166 + <name>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</name>
  1167 + <type>DBLookup</type>
  1168 + <description/>
  1169 + <distribute>Y</distribute>
  1170 + <custom_distribution/>
  1171 + <copies>1</copies>
  1172 + <partitioning>
  1173 + <method>none</method>
  1174 + <schema_name/>
  1175 + </partitioning>
  1176 + <connection>bus_control_variable</connection>
  1177 + <cache>N</cache>
  1178 + <cache_load_all>Y</cache_load_all>
  1179 + <cache_size>0</cache_size>
  1180 + <lookup>
  1181 + <schema/>
  1182 + <table>bsth_c_line</table>
  1183 + <orderby/>
  1184 + <fail_on_multiple>N</fail_on_multiple>
  1185 + <eat_row_on_failure>N</eat_row_on_failure>
  1186 + <key>
  1187 + <name>&#x7ebf;&#x8def;</name>
  1188 + <field>name</field>
  1189 + <condition>&#x3d;</condition>
  1190 + <name2/>
  1191 + </key>
  1192 + <key>
  1193 + <name>isCancel</name>
  1194 + <field>destroy</field>
  1195 + <condition>&#x3d;</condition>
  1196 + <name2/>
  1197 + </key>
  1198 + <value>
  1199 + <name>id</name>
  1200 + <rename>xlid</rename>
  1201 + <default/>
  1202 + <type>Integer</type>
  1203 + </value>
  1204 + </lookup>
  1205 + <cluster_schema/>
  1206 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1207 + <xloc>359</xloc>
  1208 + <yloc>110</yloc>
  1209 + <draw>Y</draw>
  1210 + </GUI>
  1211 + </step>
  1212 +
  1213 + <step>
  1214 + <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>
  1215 + <type>GetVariable</type>
  1216 + <description/>
  1217 + <distribute>Y</distribute>
  1218 + <custom_distribution/>
  1219 + <copies>1</copies>
  1220 + <partitioning>
  1221 + <method>none</method>
  1222 + <schema_name/>
  1223 + </partitioning>
  1224 + <fields>
  1225 + <field>
  1226 + <name>filepath_</name>
  1227 + <variable>&#x24;&#x7b;filepath&#x7d;</variable>
  1228 + <type>String</type>
  1229 + <format/>
  1230 + <currency/>
  1231 + <decimal/>
  1232 + <group/>
  1233 + <length>-1</length>
  1234 + <precision>-1</precision>
  1235 + <trim_type>none</trim_type>
  1236 + </field>
  1237 + <field>
  1238 + <name>erroroutputdir_</name>
  1239 + <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
  1240 + <type>String</type>
  1241 + <format/>
  1242 + <currency/>
  1243 + <decimal/>
  1244 + <group/>
  1245 + <length>-1</length>
  1246 + <precision>-1</precision>
  1247 + <trim_type>none</trim_type>
  1248 + </field>
  1249 + </fields>
  1250 + <cluster_schema/>
  1251 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1252 + <xloc>53</xloc>
  1253 + <yloc>23</yloc>
  1254 + <draw>Y</draw>
  1255 + </GUI>
  1256 + </step>
  1257 +
  1258 + <step>
  1259 + <name>&#x8def;&#x724c;id&#x67e5;&#x8be2;</name>
  1260 + <type>DBLookup</type>
  1261 + <description/>
  1262 + <distribute>Y</distribute>
  1263 + <custom_distribution/>
  1264 + <copies>1</copies>
  1265 + <partitioning>
  1266 + <method>none</method>
  1267 + <schema_name/>
  1268 + </partitioning>
  1269 + <connection>bus_control_variable</connection>
  1270 + <cache>N</cache>
  1271 + <cache_load_all>Y</cache_load_all>
  1272 + <cache_size>0</cache_size>
  1273 + <lookup>
  1274 + <schema/>
  1275 + <table>bsth_c_s_gbi</table>
  1276 + <orderby/>
  1277 + <fail_on_multiple>N</fail_on_multiple>
  1278 + <eat_row_on_failure>N</eat_row_on_failure>
  1279 + <key>
  1280 + <name>xlid</name>
  1281 + <field>xl</field>
  1282 + <condition>&#x3d;</condition>
  1283 + <name2/>
  1284 + </key>
  1285 + <key>
  1286 + <name>lpname</name>
  1287 + <field>lp_name</field>
  1288 + <condition>&#x3d;</condition>
  1289 + <name2/>
  1290 + </key>
  1291 + <key>
  1292 + <name>isCancel</name>
  1293 + <field>is_cancel</field>
  1294 + <condition>&#x3d;</condition>
  1295 + <name2/>
  1296 + </key>
  1297 + <value>
  1298 + <name>id</name>
  1299 + <rename>lpid</rename>
  1300 + <default/>
  1301 + <type>Integer</type>
  1302 + </value>
  1303 + </lookup>
  1304 + <cluster_schema/>
  1305 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1306 + <xloc>516</xloc>
  1307 + <yloc>21</yloc>
  1308 + <draw>Y</draw>
  1309 + </GUI>
  1310 + </step>
  1311 +
  1312 + <step>
  1313 + <name>&#x8f66;&#x8f86;&#x914d;&#x7f6e;id&#x67e5;&#x8be2;</name>
  1314 + <type>DBJoin</type>
  1315 + <description/>
  1316 + <distribute>Y</distribute>
  1317 + <custom_distribution/>
  1318 + <copies>1</copies>
  1319 + <partitioning>
  1320 + <method>none</method>
  1321 + <schema_name/>
  1322 + </partitioning>
  1323 + <connection>bus_control_variable</connection>
  1324 + <rowlimit>1</rowlimit>
  1325 + <sql>select t1.id as cid from bsth_c_s_ccinfo t1 left join bsth_c_cars t2 on t1.cl &#x3d; t2.id&#xa;where t1.xl &#x3d; &#x3f; and t2.inside_code &#x3d; &#x3f; and t1.is_cancel &#x3d; &#x3f;</sql>
  1326 + <outer_join>Y</outer_join>
  1327 + <replace_vars>N</replace_vars>
  1328 + <parameter>
  1329 + <field>
  1330 + <name>xlid</name>
  1331 + <type>Integer</type>
  1332 + </field>
  1333 + <field>
  1334 + <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
  1335 + <type>String</type>
  1336 + </field>
  1337 + <field>
  1338 + <name>isCancel</name>
  1339 + <type>Integer</type>
  1340 + </field>
  1341 + </parameter>
  1342 + <cluster_schema/>
  1343 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1344 + <xloc>360</xloc>
  1345 + <yloc>184</yloc>
  1346 + <draw>Y</draw>
  1347 + </GUI>
  1348 + </step>
  1349 +
  1350 + <step>
  1351 + <name>&#x8fc7;&#x6ee4;&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>
  1352 + <type>FilterRows</type>
  1353 + <description/>
  1354 + <distribute>Y</distribute>
  1355 + <custom_distribution/>
  1356 + <copies>1</copies>
  1357 + <partitioning>
  1358 + <method>none</method>
  1359 + <schema_name/>
  1360 + </partitioning>
  1361 +<send_true_to/>
  1362 +<send_false_to/>
  1363 + <compare>
  1364 +<condition>
  1365 + <negated>N</negated>
  1366 + <conditions>
  1367 + <condition>
  1368 + <negated>N</negated>
  1369 + <leftvalue>rycid1</leftvalue>
  1370 + <function>IS NOT NULL</function>
  1371 + <rightvalue/>
  1372 + </condition>
  1373 + <condition>
  1374 + <negated>N</negated>
  1375 + <operator>OR</operator>
  1376 + <leftvalue>rycid2</leftvalue>
  1377 + <function>IS NOT NULL</function>
  1378 + <rightvalue/>
  1379 + </condition>
  1380 + </conditions>
  1381 + </condition>
  1382 + </compare>
  1383 + <cluster_schema/>
  1384 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1385 + <xloc>776</xloc>
  1386 + <yloc>204</yloc>
  1387 + <draw>Y</draw>
  1388 + </GUI>
  1389 + </step>
  1390 +
  1391 + <step>
  1392 + <name>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>
  1393 + <type>FilterRows</type>
  1394 + <description/>
  1395 + <distribute>Y</distribute>
  1396 + <custom_distribution/>
  1397 + <copies>1</copies>
  1398 + <partitioning>
  1399 + <method>none</method>
  1400 + <schema_name/>
  1401 + </partitioning>
  1402 +<send_true_to>&#x8f66;&#x8f86;&#x914d;&#x7f6e;id&#x67e5;&#x8be2;</send_true_to>
  1403 +<send_false_to/>
  1404 + <compare>
  1405 +<condition>
  1406 + <negated>N</negated>
  1407 + <leftvalue>xlid</leftvalue>
  1408 + <function>IS NOT NULL</function>
  1409 + <rightvalue/>
  1410 + </condition>
  1411 + </compare>
  1412 + <cluster_schema/>
  1413 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1414 + <xloc>203</xloc>
  1415 + <yloc>110</yloc>
  1416 + <draw>Y</draw>
  1417 + </GUI>
  1418 + </step>
  1419 +
  1420 + <step>
  1421 + <name>&#x8fc7;&#x6ee4;&#x8def;&#x724c;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>
  1422 + <type>FilterRows</type>
  1423 + <description/>
  1424 + <distribute>Y</distribute>
  1425 + <custom_distribution/>
  1426 + <copies>1</copies>
  1427 + <partitioning>
  1428 + <method>none</method>
  1429 + <schema_name/>
  1430 + </partitioning>
  1431 +<send_true_to>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</send_true_to>
  1432 +<send_false_to/>
  1433 + <compare>
  1434 +<condition>
  1435 + <negated>N</negated>
  1436 + <leftvalue>lpid</leftvalue>
  1437 + <function>IS NOT NULL</function>
  1438 + <rightvalue/>
  1439 + </condition>
  1440 + </compare>
  1441 + <cluster_schema/>
  1442 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1443 + <xloc>653</xloc>
  1444 + <yloc>23</yloc>
  1445 + <draw>Y</draw>
  1446 + </GUI>
  1447 + </step>
  1448 +
  1449 + <step>
  1450 + <name>&#x8fc7;&#x6ee4;&#x8f66;&#x8f86;&#x914d;&#x7f6e;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>
  1451 + <type>FilterRows</type>
  1452 + <description/>
  1453 + <distribute>Y</distribute>
  1454 + <custom_distribution/>
  1455 + <copies>1</copies>
  1456 + <partitioning>
  1457 + <method>none</method>
  1458 + <schema_name/>
  1459 + </partitioning>
  1460 +<send_true_to>&#x62c6;&#x5206;&#x8def;&#x724c;&#x8303;&#x56f4;</send_true_to>
  1461 +<send_false_to/>
  1462 + <compare>
  1463 +<condition>
  1464 + <negated>N</negated>
  1465 + <leftvalue>cid</leftvalue>
  1466 + <function>IS NOT NULL</function>
  1467 + <rightvalue/>
  1468 + </condition>
  1469 + </compare>
  1470 + <cluster_schema/>
  1471 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1472 + <xloc>208</xloc>
  1473 + <yloc>182</yloc>
  1474 + <draw>Y</draw>
  1475 + </GUI>
  1476 + </step>
  1477 +
  1478 + <step>
  1479 + <name>&#x9519;&#x8bef;&#x8f93;&#x51fa; 2</name>
  1480 + <type>ExcelOutput</type>
  1481 + <description/>
  1482 + <distribute>Y</distribute>
  1483 + <custom_distribution/>
  1484 + <copies>1</copies>
  1485 + <partitioning>
  1486 + <method>none</method>
  1487 + <schema_name/>
  1488 + </partitioning>
  1489 + <header>Y</header>
  1490 + <footer>N</footer>
  1491 + <encoding>UTF-8</encoding>
  1492 + <append>N</append>
  1493 + <add_to_result_filenames>Y</add_to_result_filenames>
  1494 + <file>
  1495 + <name>&#x24;&#x7b;erroroutputdir&#x7d;&#x2f;&#x6392;&#x7248;&#x89c4;&#x5219;&#x4fe1;&#x606f;&#x5bfc;&#x5165;_&#x9519;&#x8bef;</name>
  1496 + <extention>xls</extention>
  1497 + <do_not_open_newfile_init>N</do_not_open_newfile_init>
  1498 + <create_parent_folder>N</create_parent_folder>
  1499 + <split>N</split>
  1500 + <add_date>N</add_date>
  1501 + <add_time>N</add_time>
  1502 + <SpecifyFormat>N</SpecifyFormat>
  1503 + <date_time_format/>
  1504 + <sheetname>Sheet1</sheetname>
  1505 + <autosizecolums>N</autosizecolums>
  1506 + <nullisblank>N</nullisblank>
  1507 + <protect_sheet>N</protect_sheet>
  1508 + <password>Encrypted </password>
  1509 + <splitevery>0</splitevery>
  1510 + <usetempfiles>N</usetempfiles>
  1511 + <tempdirectory/>
  1512 + </file>
  1513 + <template>
  1514 + <enabled>N</enabled>
  1515 + <append>N</append>
  1516 + <filename>template.xls</filename>
  1517 + </template>
  1518 + <fields>
  1519 + <field>
  1520 + <name>xlid</name>
  1521 + <type>Integer</type>
  1522 + <format/>
  1523 + </field>
  1524 + <field>
  1525 + <name>cid</name>
  1526 + <type>Integer</type>
  1527 + <format/>
  1528 + </field>
  1529 + <field>
  1530 + <name>lpnames</name>
  1531 + <type>String</type>
  1532 + <format/>
  1533 + </field>
  1534 + <field>
  1535 + <name>lpids</name>
  1536 + <type>String</type>
  1537 + <format/>
  1538 + </field>
  1539 + <field>
  1540 + <name>&#x8d77;&#x59cb;&#x8def;&#x724c;</name>
  1541 + <type>String</type>
  1542 + <format/>
  1543 + </field>
  1544 + <field>
  1545 + <name>&#x8d77;&#x59cb;&#x4eba;&#x5458;</name>
  1546 + <type>String</type>
  1547 + <format/>
  1548 + </field>
  1549 + <field>
  1550 + <name>&#x4eba;&#x5458;&#x8303;&#x56f4;</name>
  1551 + <type>String</type>
  1552 + <format/>
  1553 + </field>
  1554 + <field>
  1555 + <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  1556 + <type>Timestamp</type>
  1557 + <format/>
  1558 + </field>
  1559 + <field>
  1560 + <name>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</name>
  1561 + <type>String</type>
  1562 + <format/>
  1563 + </field>
  1564 + <field>
  1565 + <name>isCancel</name>
  1566 + <type>Integer</type>
  1567 + <format/>
  1568 + </field>
  1569 + <field>
  1570 + <name>rycids</name>
  1571 + <type>String</type>
  1572 + <format/>
  1573 + </field>
  1574 + <field>
  1575 + <name>rybms</name>
  1576 + <type>String</type>
  1577 + <format/>
  1578 + </field>
  1579 + <field>
  1580 + <name>error_count</name>
  1581 + <type>Integer</type>
  1582 + <format/>
  1583 + </field>
  1584 + <field>
  1585 + <name>error_desc</name>
  1586 + <type>String</type>
  1587 + <format/>
  1588 + </field>
  1589 + <field>
  1590 + <name>error_column1</name>
  1591 + <type>String</type>
  1592 + <format/>
  1593 + </field>
  1594 + <field>
  1595 + <name>error_column2</name>
  1596 + <type>String</type>
  1597 + <format/>
  1598 + </field>
  1599 + </fields>
  1600 + <custom>
  1601 + <header_font_name>arial</header_font_name>
  1602 + <header_font_size>10</header_font_size>
  1603 + <header_font_bold>N</header_font_bold>
  1604 + <header_font_italic>N</header_font_italic>
  1605 + <header_font_underline>no</header_font_underline>
  1606 + <header_font_orientation>horizontal</header_font_orientation>
  1607 + <header_font_color>black</header_font_color>
  1608 + <header_background_color>none</header_background_color>
  1609 + <header_row_height>255</header_row_height>
  1610 + <header_alignment>left</header_alignment>
  1611 + <header_image/>
  1612 + <row_font_name>arial</row_font_name>
  1613 + <row_font_size>10</row_font_size>
  1614 + <row_font_color>black</row_font_color>
  1615 + <row_background_color>none</row_background_color>
  1616 + </custom>
  1617 + <cluster_schema/>
  1618 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1619 + <xloc>534</xloc>
  1620 + <yloc>392</yloc>
  1621 + <draw>Y</draw>
  1622 + </GUI>
  1623 + </step>
  1624 +
  1625 + <step_error_handling>
  1626 + <error>
  1627 + <source_step>&#x63d2;&#x5165; &#x2f; &#x66f4;&#x65b0;bsth_c_s_sr1_flat</source_step>
  1628 + <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa; 2</target_step>
  1629 + <is_enabled>Y</is_enabled>
  1630 + <nr_valuename>error_count</nr_valuename>
  1631 + <descriptions_valuename>error_desc</descriptions_valuename>
  1632 + <fields_valuename>error_column1</fields_valuename>
  1633 + <codes_valuename>error_column2</codes_valuename>
  1634 + <max_errors/>
  1635 + <max_pct_errors/>
  1636 + <min_pct_rows/>
  1637 + </error>
  1638 + </step_error_handling>
  1639 + <slave-step-copy-partition-distribution>
  1640 +</slave-step-copy-partition-distribution>
  1641 + <slave_transformation>N</slave_transformation>
  1642 +
  1643 +</transformation>
... ...
src/main/resources/datatools/ktrs/scheduleRuleDataInput.ktr
... ... @@ -290,9 +290,11 @@
290 290 <hop> <from>&#x8fc7;&#x6ee4;&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</from><to>&#x5408;&#x5e76;&#x5206;&#x73ed;&#x4eba;&#x5458;&#x914d;&#x7f6e;id</to><enabled>Y</enabled> </hop>
291 291 <hop> <from>&#x5408;&#x5e76;&#x5206;&#x73ed;&#x4eba;&#x5458;&#x914d;&#x7f6e;id</from><to>&#x6392;&#x5e8f;&#x8bb0;&#x5f55; 2</to><enabled>Y</enabled> </hop>
292 292 <hop> <from>&#x6392;&#x5e8f;&#x8bb0;&#x5f55; 2</from><to>&#x5206;&#x7ec4;&#x5408;&#x5e76;&#x4eba;&#x5458;&#x914d;&#x7f6e;id</to><enabled>Y</enabled> </hop>
293   - <hop> <from>&#x63d2;&#x5165; &#x2f; &#x66f4;&#x65b0;bsth_c_s_sr1_flat</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa; 2</to><enabled>Y</enabled> </hop>
294 293 <hop> <from>&#x5206;&#x7ec4;&#x5408;&#x5e76;&#x4eba;&#x5458;&#x914d;&#x7f6e;id</from><to>&#x542f;&#x7528;&#x65e5;&#x671f;&#x8f6c;&#x6362;</to><enabled>Y</enabled> </hop>
295   - <hop> <from>&#x542f;&#x7528;&#x65e5;&#x671f;&#x8f6c;&#x6362;</from><to>&#x63d2;&#x5165; &#x2f; &#x66f4;&#x65b0;bsth_c_s_sr1_flat</to><enabled>Y</enabled> </hop>
  294 + <hop> <from>&#x542f;&#x7528;&#x65e5;&#x671f;&#x8f6c;&#x6362;</from><to>&#x5220;&#x9664;</to><enabled>Y</enabled> </hop>
  295 + <hop> <from>&#x5220;&#x9664;</from><to>&#x963b;&#x585e;&#x6570;&#x636e;&#x76f4;&#x5230;&#x6b65;&#x9aa4;&#x90fd;&#x5b8c;&#x6210;</to><enabled>Y</enabled> </hop>
  296 + <hop> <from>&#x963b;&#x585e;&#x6570;&#x636e;&#x76f4;&#x5230;&#x6b65;&#x9aa4;&#x90fd;&#x5b8c;&#x6210;</from><to>&#x89c4;&#x5219;&#x8868;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
  297 + <hop> <from>&#x89c4;&#x5219;&#x8868;&#x8f93;&#x51fa;</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa; 2</to><enabled>Y</enabled> </hop>
296 298 </order>
297 299 <step>
298 300 <name>&#x4eba;&#x5458;&#x914d;&#x7f6e;id&#x67e5;&#x8be2;</name>
... ... @@ -1075,94 +1077,6 @@
1075 1077 </step>
1076 1078  
1077 1079 <step>
1078   - <name>&#x63d2;&#x5165; &#x2f; &#x66f4;&#x65b0;bsth_c_s_sr1_flat</name>
1079   - <type>InsertUpdate</type>
1080   - <description/>
1081   - <distribute>Y</distribute>
1082   - <custom_distribution/>
1083   - <copies>1</copies>
1084   - <partitioning>
1085   - <method>none</method>
1086   - <schema_name/>
1087   - </partitioning>
1088   - <connection>bus_control_variable</connection>
1089   - <commit>100</commit>
1090   - <update_bypassed>N</update_bypassed>
1091   - <lookup>
1092   - <schema/>
1093   - <table>bsth_c_s_sr1_flat</table>
1094   - <key>
1095   - <name>xlid</name>
1096   - <field>xl</field>
1097   - <condition>&#x3d;</condition>
1098   - <name2/>
1099   - </key>
1100   - <key>
1101   - <name>cid</name>
1102   - <field>car_config_info</field>
1103   - <condition>&#x3d;</condition>
1104   - <name2/>
1105   - </key>
1106   - <value>
1107   - <name>xl</name>
1108   - <rename>xlid</rename>
1109   - <update>Y</update>
1110   - </value>
1111   - <value>
1112   - <name>car_config_info</name>
1113   - <rename>cid</rename>
1114   - <update>Y</update>
1115   - </value>
1116   - <value>
1117   - <name>lp_names</name>
1118   - <rename>lpnames</rename>
1119   - <update>Y</update>
1120   - </value>
1121   - <value>
1122   - <name>lp_ids</name>
1123   - <rename>lpids</rename>
1124   - <update>Y</update>
1125   - </value>
1126   - <value>
1127   - <name>lp_start</name>
1128   - <rename>&#x8d77;&#x59cb;&#x8def;&#x724c;</rename>
1129   - <update>Y</update>
1130   - </value>
1131   - <value>
1132   - <name>ry_start</name>
1133   - <rename>&#x8d77;&#x59cb;&#x4eba;&#x5458;</rename>
1134   - <update>Y</update>
1135   - </value>
1136   - <value>
1137   - <name>ry_dbbms</name>
1138   - <rename>rybms</rename>
1139   - <update>Y</update>
1140   - </value>
1141   - <value>
1142   - <name>qyrq</name>
1143   - <rename>&#x542f;&#x7528;&#x65e5;&#x671f;</rename>
1144   - <update>Y</update>
1145   - </value>
1146   - <value>
1147   - <name>ry_config_ids</name>
1148   - <rename>rycids</rename>
1149   - <update>Y</update>
1150   - </value>
1151   - <value>
1152   - <name>fbgs</name>
1153   - <rename>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</rename>
1154   - <update>Y</update>
1155   - </value>
1156   - </lookup>
1157   - <cluster_schema/>
1158   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1159   - <xloc>532</xloc>
1160   - <yloc>297</yloc>
1161   - <draw>Y</draw>
1162   - </GUI>
1163   - </step>
1164   -
1165   - <step>
1166 1080 <name>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</name>
1167 1081 <type>DBLookup</type>
1168 1082 <description/>
... ... @@ -1527,7 +1441,7 @@
1527 1441 <format/>
1528 1442 </field>
1529 1443 <field>
1530   - <name>&#x8def;&#x724c;&#x8303;&#x56f4;</name>
  1444 + <name>lpnames</name>
1531 1445 <type>String</type>
1532 1446 <format/>
1533 1447 </field>
... ... @@ -1572,6 +1486,11 @@
1572 1486 <format/>
1573 1487 </field>
1574 1488 <field>
  1489 + <name>rybms</name>
  1490 + <type>String</type>
  1491 + <format/>
  1492 + </field>
  1493 + <field>
1575 1494 <name>error_count</name>
1576 1495 <type>Integer</type>
1577 1496 <format/>
... ... @@ -1611,15 +1530,149 @@
1611 1530 </custom>
1612 1531 <cluster_schema/>
1613 1532 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1614   - <xloc>534</xloc>
1615   - <yloc>392</yloc>
  1533 + <xloc>253</xloc>
  1534 + <yloc>501</yloc>
  1535 + <draw>Y</draw>
  1536 + </GUI>
  1537 + </step>
  1538 +
  1539 + <step>
  1540 + <name>&#x5220;&#x9664;</name>
  1541 + <type>Delete</type>
  1542 + <description/>
  1543 + <distribute>Y</distribute>
  1544 + <custom_distribution/>
  1545 + <copies>1</copies>
  1546 + <partitioning>
  1547 + <method>none</method>
  1548 + <schema_name/>
  1549 + </partitioning>
  1550 + <connection>bus_control_variable</connection>
  1551 + <commit>100</commit>
  1552 + <lookup>
  1553 + <schema/>
  1554 + <table>bsth_c_s_sr1_flat</table>
  1555 + <key>
  1556 + <name>xlid</name>
  1557 + <field>xl</field>
  1558 + <condition>&#x3d;</condition>
  1559 + <name2/>
  1560 + </key>
  1561 + </lookup>
  1562 + <cluster_schema/>
  1563 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1564 + <xloc>619</xloc>
  1565 + <yloc>370</yloc>
  1566 + <draw>Y</draw>
  1567 + </GUI>
  1568 + </step>
  1569 +
  1570 + <step>
  1571 + <name>&#x963b;&#x585e;&#x6570;&#x636e;&#x76f4;&#x5230;&#x6b65;&#x9aa4;&#x90fd;&#x5b8c;&#x6210;</name>
  1572 + <type>BlockUntilStepsFinish</type>
  1573 + <description/>
  1574 + <distribute>Y</distribute>
  1575 + <custom_distribution/>
  1576 + <copies>1</copies>
  1577 + <partitioning>
  1578 + <method>none</method>
  1579 + <schema_name/>
  1580 + </partitioning>
  1581 + <steps>
  1582 + <step>
  1583 + <name>&#x5220;&#x9664;</name>
  1584 + <CopyNr>0</CopyNr>
  1585 + </step>
  1586 + </steps>
  1587 + <cluster_schema/>
  1588 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1589 + <xloc>450</xloc>
  1590 + <yloc>370</yloc>
  1591 + <draw>Y</draw>
  1592 + </GUI>
  1593 + </step>
  1594 +
  1595 + <step>
  1596 + <name>&#x89c4;&#x5219;&#x8868;&#x8f93;&#x51fa;</name>
  1597 + <type>TableOutput</type>
  1598 + <description/>
  1599 + <distribute>Y</distribute>
  1600 + <custom_distribution/>
  1601 + <copies>1</copies>
  1602 + <partitioning>
  1603 + <method>none</method>
  1604 + <schema_name/>
  1605 + </partitioning>
  1606 + <connection>bus_control_variable</connection>
  1607 + <schema/>
  1608 + <table>bsth_c_s_sr1_flat</table>
  1609 + <commit>1000</commit>
  1610 + <truncate>N</truncate>
  1611 + <ignore_errors>N</ignore_errors>
  1612 + <use_batch>Y</use_batch>
  1613 + <specify_fields>Y</specify_fields>
  1614 + <partitioning_enabled>N</partitioning_enabled>
  1615 + <partitioning_field/>
  1616 + <partitioning_daily>N</partitioning_daily>
  1617 + <partitioning_monthly>Y</partitioning_monthly>
  1618 + <tablename_in_field>N</tablename_in_field>
  1619 + <tablename_field/>
  1620 + <tablename_in_table>Y</tablename_in_table>
  1621 + <return_keys>N</return_keys>
  1622 + <return_field/>
  1623 + <fields>
  1624 + <field>
  1625 + <column_name>xl</column_name>
  1626 + <stream_name>xlid</stream_name>
  1627 + </field>
  1628 + <field>
  1629 + <column_name>car_config_info</column_name>
  1630 + <stream_name>cid</stream_name>
  1631 + </field>
  1632 + <field>
  1633 + <column_name>lp_names</column_name>
  1634 + <stream_name>lpnames</stream_name>
  1635 + </field>
  1636 + <field>
  1637 + <column_name>lp_ids</column_name>
  1638 + <stream_name>lpids</stream_name>
  1639 + </field>
  1640 + <field>
  1641 + <column_name>lp_start</column_name>
  1642 + <stream_name>&#x8d77;&#x59cb;&#x8def;&#x724c;</stream_name>
  1643 + </field>
  1644 + <field>
  1645 + <column_name>ry_start</column_name>
  1646 + <stream_name>&#x8d77;&#x59cb;&#x4eba;&#x5458;</stream_name>
  1647 + </field>
  1648 + <field>
  1649 + <column_name>qyrq</column_name>
  1650 + <stream_name>&#x542f;&#x7528;&#x65e5;&#x671f;</stream_name>
  1651 + </field>
  1652 + <field>
  1653 + <column_name>fbgs</column_name>
  1654 + <stream_name>&#x7ffb;&#x73ed;&#x683c;&#x5f0f;</stream_name>
  1655 + </field>
  1656 + <field>
  1657 + <column_name>ry_dbbms</column_name>
  1658 + <stream_name>rybms</stream_name>
  1659 + </field>
  1660 + <field>
  1661 + <column_name>ry_config_ids</column_name>
  1662 + <stream_name>rycids</stream_name>
  1663 + </field>
  1664 + </fields>
  1665 + <cluster_schema/>
  1666 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1667 + <xloc>259</xloc>
  1668 + <yloc>369</yloc>
1616 1669 <draw>Y</draw>
1617 1670 </GUI>
1618 1671 </step>
1619 1672  
1620 1673 <step_error_handling>
1621 1674 <error>
1622   - <source_step>&#x63d2;&#x5165; &#x2f; &#x66f4;&#x65b0;bsth_c_s_sr1_flat</source_step>
  1675 + <source_step>&#x89c4;&#x5219;&#x8868;&#x8f93;&#x51fa;</source_step>
1623 1676 <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa; 2</target_step>
1624 1677 <is_enabled>Y</is_enabled>
1625 1678 <nr_valuename>error_count</nr_valuename>
... ...
src/main/resources/static/pages/base/timesmodel/js/base-fun.js
... ... @@ -332,6 +332,8 @@ var BaseFun = function() {
332 332 var rs = new Array(),bxrcgs= new Array();
333 333 // 遍历已分配好路牌的班型人次数组.
334 334 for(var x = 0 ; x < bxrclist.length; x++) {
  335 + /*if(x>0)
  336 + continue;*/
335 337 // 定义当前班型人次下的路牌数组.
336 338 var cla = bxrclist[x].sslp;
337 339 var dsdnmb = bxrclist[x].rs/bxrclist[x].fpcls;
... ... @@ -339,12 +341,13 @@ var BaseFun = function() {
339 341 var hoursV = bxrclist[x].hoursV*dsdnmb;
340 342 // 遍历路牌
341 343 for(var s = 0 ; s < cla.length; s++) {
  344 + /*if(s>1 || s==0)
  345 + continue;*/
342 346 //cla[s].lpName = bxrclist[x].type;
343 347 // 获取路牌编号.
344 348 var lpNo = cla[s].lpNo;
345 349 // 定义路牌下的所有班次.
346 350 var lpbc = new Array();
347   - bxrcgs.push({'lpNo':lpNo,'hoursV':hoursV,'type':bxrclist[x].type});
348 351 // 遍历班次数.
349 352 for(var i =0 ; i <jsonArray.length; i++) {
350 353 // 判断当期遍历的班次是否属于当前的路牌.
... ... @@ -359,10 +362,20 @@ var BaseFun = function() {
359 362 cara[l].lpName = bxrclist[x].type + '_' + lpNo ;
360 363 }
361 364 }
  365 + var _obj = baseF.getsxAndxxbc(lpbc,dataMap);
  366 + baseF.tcbc(_obj.sxbc,dataMap.smbcsjArr[0].kssj,dataMap.smbcsjArr[0].jssj);// 剔除上行不在时间范围内的班次
  367 + baseF.tcbc(_obj.xxbc,dataMap.smbcsjArr[1].kssj,dataMap.smbcsjArr[1].jssj);// 剔除下行不在时间范围内的班次
  368 + var tcnofwlpbc = _obj.sxbc.concat(_obj.xxbc);
362 369 // 按照发车序号顺序排序.
363   - lpbc.sort(function(a,b){return b.fcno-a.fcno});
  370 + tcnofwlpbc.sort(function(a,b){return b.fcno-a.fcno});
  371 + /*var gsv = 0 ;
  372 + for(var z = 0 ;z < tza.length;z++) {
  373 + gsv = gsv + tza[z].bcsj + tza[z].STOPTIME;
  374 + }*/
  375 + // parseFloat((gsv/60).toFixed(2))
  376 + bxrcgs.push({'lpNo':lpNo,'hoursV':hoursV,'type':bxrclist[x].type});
364 377 // 调整班次数.也就是说调整工时.
365   - rs = rs.concat(baseF.tzlpgs01(lpbc,hoursV,map,dataMap,lpNo,saa,bxrclist[x].type,lpNo,cara.length));
  378 + rs = rs.concat(baseF.tzlpgs01(tcnofwlpbc,hoursV,map,dataMap,lpNo,saa,bxrclist[x].type,lpNo,cara.length));
366 379 }
367 380 }
368 381 var jar01 = baseF.tzsmbcsj01(
... ... @@ -375,6 +388,26 @@ var BaseFun = function() {
375 388 var jar = baseF.tzsmbcsj01(
376 389 baseF.setbcsAndfcno(baseF.tzsmbcsj01(baseF.setbcsAndfcno(baseF.tzsztest(cara,jar01,dataMap)),dataMap.smbcsjArr,dataMap.ccsjArr,dataMap.cclcArr,dataMap.qdzArr,saa[0].lbsj,dataMap)),
377 390 dataMap.smbcsjArr,dataMap.ccsjArr,dataMap.cclcArr,dataMap.qdzArr,saa[0].lbsj,dataMap);
  391 + // return {'json':jar,'bxrcgs':bxrcgs};
  392 + for(var r = 0 ; r < bxrcgs.length; r++) {
  393 + var lpNo = bxrcgs[r].lpNo;
  394 + var gsv = 0 , bczs = 0;
  395 + for(var g = 0 ; g< jar.length; g++) {
  396 + if(jar[g].lpNo == lpNo) {
  397 + gsv = gsv + jar[g].bcsj + jar[g].STOPTIME;
  398 + bczs++;
  399 + }
  400 + }
  401 + bxrcgs[r].sjgsV = gsv;
  402 + bxrcgs[r].bczs = bczs;
  403 + }
  404 + var jar3 = baseF.dqbcsAndgs(bxrcgs,jar,dataMap,cara.length);
  405 + // return {'json':jar3,'bxrcgs':bxrcgs};
  406 + /*var jar4 = baseF.tzsmbcsj01(
  407 + baseF.setbcsAndfcno(baseF.tzsmbcsj01(baseF.setbcsAndfcno(baseF.tzsztest(cara,jar3,dataMap)),dataMap.smbcsjArr,dataMap.ccsjArr,dataMap.cclcArr,dataMap.qdzArr,saa[0].lbsj,dataMap)),
  408 + dataMap.smbcsjArr,dataMap.ccsjArr,dataMap.cclcArr,dataMap.qdzArr,saa[0].lbsj,dataMap);*/
  409 + var rsjar = baseF.tzsztest(cara,jar3,dataMap);
  410 + // return {'json':rsjar,'bxrcgs':bxrcgs};
378 411 var resultJA = new Array();
379 412 for(var m = 0 ; m < cara.length; m++) {
380 413 // 获取路牌编号.
... ... @@ -382,11 +415,11 @@ var BaseFun = function() {
382 415 // 定义路牌下的所有班次.
383 416 var lpbc_ = new Array();
384 417 // 遍历班次数.
385   - for(var x =0 ; x <jar.length; x++) {
  418 + for(var x =0 ; x <rsjar.length; x++) {
386 419 // 判断当期遍历的班次是否属于当前的路牌.
387   - if(jar[x].lpNo == lpNo_) {
388   - delete jar[x].fcint;
389   - lpbc_.push(jar[x]);
  420 + if(rsjar[x].lpNo == lpNo_) {
  421 + delete rsjar[x].fcint;
  422 + lpbc_.push(rsjar[x]);
390 423 }
391 424 }
392 425 // 按照发车序号顺序排序.
... ... @@ -396,6 +429,222 @@ var BaseFun = function() {
396 429 return {'json':resultJA,'bxrcgs':bxrcgs};
397 430 },
398 431  
  432 + dqbcsAndgs : function(bxrcgs,jar,dataMap,cla) {
  433 + var bxA = new Array(),rsA = new Array();
  434 + for(var b = 0 ;b <bxrcgs.length; b++) {
  435 + if(bxA.indexOf(bxrcgs[b].type)<0)
  436 + bxA.push(bxrcgs[b].type);
  437 + }
  438 + var maxXxsjA = [parseInt(dataMap.map.upTravelTime),parseInt(dataMap.map.downTravelTime)];
  439 + var v1 = Math.max.apply(null, maxXxsjA) *1.5;
  440 + for(var a = 0 ;a < bxA.length;a++) {
  441 + var type = bxA[a],bxszA = new Array();
  442 + for(var s = 0 ; s < bxrcgs.length; s++) {
  443 + if(type == bxrcgs[s].type)
  444 + bxszA.push({'szgs':bxrcgs[s].sjgsV,'szbc' : bxrcgs[s].bczs, 'lpNo':bxrcgs[s].lpNo,'type' :bxrcgs[s].type});
  445 + }
  446 + var lpA = new Array();
  447 + if(bxszA.length>1) {
  448 + /*bxszA.sort(function(c,d){return ((c.szbc - d.szbc) && (c.szgs - d.szgs))});*/
  449 + bxszA.sort(function(c,d){return d.szgs - c.szgs});
  450 + for(var t = 0 ;t < bxszA.length;t++) {
  451 + var lpN_ = bxszA[t].lpNo;
  452 + /*if(lpN_==bxszA[0].lpNo)
  453 + continue;*/
  454 + var dx = bxszA[t].szbc - bxszA[0].szbc;
  455 + var type_ = bxszA[t].type;
  456 + lpA = baseF.getlpbcA(lpN_,jar);
  457 + lpA.sort(function(x,y){return y.fcno - x.fcno});
  458 + var tempTag = false;
  459 + var isyddygbc = !baseF.issmbcsjArr(lpA[lpA.length-1].fcsj,dataMap.smbcsjArr);
  460 + var isydzhygbc = !baseF.issmbcsjArr(lpA[0].fcsj,dataMap.smbcsjArr);
  461 + if(dx>0) {
  462 + for(var j = 0 ; j < dx ; j++) {
  463 + for(var k = 0 ; k<lpA.length;k++) {
  464 + // 得到当前路牌下的发车时间.
  465 + var dqbcfcsj = baseF.getDateTime(lpA[k].fcsj);
  466 + // 判断时间范围.
  467 + if(dataMap.zgfsjd[0].ed < dqbcfcsj && dqbcfcsj < dataMap.wgfsjd[0].st) {
  468 + lpA.splice(k,1);
  469 + break;
  470 + }
  471 + }
  472 + }
  473 + tempTag = true;
  474 + }else if(bxszA[t].szgs < bxszA[0].szgs) {
  475 + var gsdx = bxszA[0].szgs - bxszA[t].szgs;
  476 + // console.log(gsdx + '---' + lpN_);
  477 + if(gsdx<=v1) {
  478 + if(isyddygbc && isydzhygbc) {
  479 + var dygbcydx = 0,zhygbcydx = 0;
  480 + if(gsdx%2==0) {
  481 + dygbcydx = gsdx/2;
  482 + zhygbcydx = dygbcydx;
  483 + }else {
  484 + dygbcydx = gsdx%2;
  485 + zhygbcydx = gsdx - dygbcydx;
  486 + }
  487 + baseF.dygbcUpd(lpA[lpA.length-1],dygbcydx);
  488 + baseF.zhygbcUpd(lpA[0],lpA[1],zhygbcydx);
  489 + }else if(isyddygbc) {
  490 + baseF.dygbcUpd(lpA[lpA.length-1],gsdx);
  491 + }else if(isydzhygbc) {
  492 + baseF.zhygbcUpd(lpA[0],lpA[1],gsdx);
  493 + }
  494 + }else {
  495 + var isZerInt = baseF.istzsjZero(lpA,dataMap);
  496 + var vag = 0,avgdx = 0;
  497 + if(gsdx % isZerInt==0) {
  498 + vag = gsdx / isZerInt;
  499 + }else {
  500 + vag = parseInt(gsdx / isZerInt);
  501 + avgdx = gsdx - vag*isZerInt;
  502 + if(isyddygbc && isydzhygbc) {
  503 + var dygbcydx = 0,zhygbcydx = 0;
  504 + if(avgdx%2==0) {
  505 + dygbcydx = avgdx/2;
  506 + zhygbcydx = dygbcydx;
  507 + }else {
  508 + dygbcydx = avgdx%2;
  509 + zhygbcydx = avgdx - dygbcydx;
  510 + }
  511 + baseF.dygbcUpd(lpA[lpA.length-1],dygbcydx);
  512 + baseF.zhygbcUpd(lpA[0],lpA[1],zhygbcydx);
  513 + }else if(isyddygbc) {
  514 + baseF.dygbcUpd(lpA[lpA.length-1],avgdx);
  515 + }else if(isydzhygbc) {
  516 + baseF.zhygbcUpd(lpA[0],lpA[1],avgdx);
  517 + }
  518 + }
  519 + var qbbfbc = new Array();
  520 + for(var v = 1 ; v < lpA.length;v++) {
  521 + var ddsj = baseF.getDateTime(lpA[v-1].fcsj);
  522 + if(baseF.getDateTime("13:00") <= baseF.getDateTime(lpA[v].fcsj)) {
  523 + if(lpA[v].STOPTIME > 0 && !baseF.issmbcsjArr(lpA[v].fcsj,dataMap.smbcsjArr) ) {
  524 + lpA[v].STOPTIME = lpA[v].STOPTIME + vag;
  525 + ddsj.setMinutes(ddsj.getMinutes() - lpA[v].STOPTIME);
  526 + lpA[v].ARRIVALTIME = baseF.getTimeStr(ddsj);
  527 + ddsj.setMinutes(ddsj.getMinutes() - lpA[v].bcsj);
  528 + lpA[v].fcsj = baseF.getTimeStr(ddsj);
  529 +
  530 + }
  531 + }else {
  532 + if(!baseF.issmbcsjArr(lpA[v].fcsj,dataMap.smbcsjArr)) {
  533 + qbbfbc.push(lpA[v]);
  534 + }
  535 + }
  536 + }
  537 + qbbfbc.sort(function(x,y){return x.fcno - y.fcno});
  538 + for(var q = 0 ; q < qbbfbc.length; q++) {
  539 + if(q<(qbbfbc.length-1))
  540 + qbbfbc[q].STOPTIME = qbbfbc[q].STOPTIME + vag;
  541 + if(q==0)
  542 + continue;
  543 + else {
  544 + var ddsj_ = baseF.getDateTime(qbbfbc[q-1].ARRIVALTIME);
  545 + ddsj_.setMinutes(ddsj_.getMinutes() + qbbfbc[q-1].STOPTIME);
  546 + qbbfbc[q].fcsj = baseF.getTimeStr(ddsj_);
  547 + ddsj_.setMinutes(ddsj_.getMinutes() + qbbfbc[q].bcsj);
  548 + qbbfbc[q].ARRIVALTIME = baseF.getTimeStr(ddsj_);
  549 + }
  550 + }
  551 + }
  552 + }
  553 + var start = baseF.getDateTime(lpA[0].ARRIVALTIME);
  554 + var end = baseF.getDateTime(lpA[lpA.length-1].fcsj);
  555 + var hourdx = start.getHours() - end.getHours();
  556 + var minuedx = hourdx* 60 + (start.getMinutes() - end.getMinutes()) + lpA[0].STOPTIME;
  557 + var dx = 0;
  558 + /*if(minuedx > bxszA[0].szgs && tempTag) {
  559 + dx = minuedx - bxszA[0].szgs;
  560 + console.log(dx);
  561 + }else */
  562 + if(minuedx < bxszA[0].szgs && tempTag) {
  563 + dx = bxszA[0].szgs - minuedx;
  564 + if(dx > v1 && isyddygbc && isydzhygbc) {
  565 + var dygbcydx = 0,zhygbcydx = 0;
  566 + if(dx%2==0) {
  567 + dygbcydx = dx/2;
  568 + zhygbcydx = dygbcydx;
  569 + }else {
  570 + dygbcydx = dx%2;
  571 + zhygbcydx = dx - dygbcydx;
  572 + }
  573 + baseF.dygbcUpd(lpA[lpA.length-1],dygbcydx);
  574 + baseF.zhygbcUpd(lpA[0],lpA[1],zhygbcydx);
  575 + }else {
  576 + if(isyddygbc && isydzhygbc) {
  577 + var dygbcydx = 0,zhygbcydx = 0;
  578 + if(dx%2==0) {
  579 + dygbcydx = dx/2;
  580 + zhygbcydx = dygbcydx;
  581 + }else {
  582 + dygbcydx = dx%2;
  583 + zhygbcydx = dx - dygbcydx;
  584 + }
  585 + baseF.dygbcUpd(lpA[lpA.length-1],dygbcydx);
  586 + baseF.zhygbcUpd(lpA[0],lpA[1],zhygbcydx);
  587 + }else if(isyddygbc) {
  588 + baseF.dygbcUpd(lpA[lpA.length-1],dx);
  589 + }else if(isydzhygbc) {
  590 + baseF.zhygbcUpd(lpA[0],lpA[1],dx);
  591 + }
  592 + }
  593 + }
  594 + rsA = rsA.concat(lpA);
  595 + }
  596 +
  597 + }else {
  598 + rsA = rsA.concat(baseF.getlpbcA(bxszA[0].lpNo,jar));
  599 + }
  600 + }
  601 + return rsA;
  602 + },
  603 +
  604 + istzsjZero : function(arr,dataMap) {
  605 + var rsint = 0;
  606 + for(var r = 1 ; r<arr.length;r++) {
  607 + if(arr[r].STOPTIME>0 && !baseF.issmbcsjArr(arr[r].fcsj,dataMap.smbcsjArr)) {
  608 + rsint++;
  609 + }
  610 + }
  611 + return rsint;
  612 + },
  613 +
  614 + dygbcUpd : function(obj,dx) {
  615 + obj.STOPTIME = obj.STOPTIME + dx;
  616 + var dygbcfcsj = baseF.getDateTime(obj.fcsj);
  617 + dygbcfcsj.setMinutes(dygbcfcsj.getMinutes() - dx);
  618 + obj.fcsj = baseF.getTimeStr(dygbcfcsj);
  619 + },
  620 +
  621 + zhygbcUpd: function(obj,xgOjb,dx) {
  622 + xgOjb.STOPTIME = xgOjb.STOPTIME + dx;
  623 + var zhygbcydx = baseF.getDateTime(obj.fcsj);
  624 + zhygbcydx.setMinutes(zhygbcydx.getMinutes() + dx);
  625 + obj.fcsj = baseF.getTimeStr(zhygbcydx);
  626 + zhygbcydx.setMinutes(zhygbcydx.getMinutes() + obj.bcsj);
  627 + obj.ARRIVALTIME = baseF.getTimeStr(zhygbcydx);
  628 + },
  629 +
  630 + issmbcsjArr : function(str,arr) {
  631 + var tag = false;
  632 + for(var a = 0 ;a < arr.length;a++) {
  633 + if(str == arr[a].kssj || str == arr[a].jssj)
  634 + tag = true;
  635 + }
  636 + return tag;
  637 + },
  638 +
  639 + getlpbcA : function(lpN_,jar) {
  640 + var lpA = new Array();
  641 + for(var p = 0 ; p < jar.length; p++ ) {
  642 + if(jar[p].lpNo == lpN_)
  643 + lpA.push(jar[p]);
  644 + }
  645 + return lpA;
  646 + },
  647 +
399 648 tzsztest : function(cara,tempa,dataMap) {
400 649 var jsrs = new Array();
401 650 for(var t = 0 ; t < cara.length; t++) {
... ... @@ -445,22 +694,32 @@ var BaseFun = function() {
445 694 },
446 695  
447 696 tztzsjInit01 : function(ar,dataMap) {
  697 + var maxXxsjA = [parseInt(dataMap.map.upTravelTime),parseInt(dataMap.map.downTravelTime)];
  698 + var v1 = Math.max.apply(null, maxXxsjA) *1.5;
448 699 for(var r = 0 ; r< ar.length-1;r++) {
449 700 var sgbcfcsj = baseF.getDateTime(ar[r+1].fcsj),dqbcddsj = baseF.getDateTime(ar[r].ARRIVALTIME);
450 701 var dxmin = parseInt( (sgbcfcsj - dqbcddsj)/60000);
451 702 if(dxmin<0 || ar[r].STOPTIME<0) {
452 703 var cctag = baseF.dirDmToIndex(ar[r].xlDir);
453 704 dxmin = ar[r].bcType == dataMap.bcTypeArr.cf ? 0 : baseF.isgfsjd01(baseF.getDateTime(ar[r].fcsj),dataMap) ? dataMap.gftzsj[cctag] : dataMap.dgtzsj[cctag];
454   - dqbcddsj.setMinutes(dqbcddsj.getMinutes() + dxmin);
  705 + /*dqbcddsj.setMinutes(dqbcddsj.getMinutes() + dxmin);
455 706 ar[r+1].fcsj = baseF.getTimeStr(dqbcddsj);
456 707 dqbcddsj.setMinutes(dqbcddsj.getMinutes() + ar[r+1].bcsj);
457   - ar[r+1].ARRIVALTIME = baseF.getTimeStr(dqbcddsj);
  708 + ar[r+1].ARRIVALTIME = baseF.getTimeStr(dqbcddsj);*/
458 709 /*sgbcfcsj.setMinutes(sgbcfcsj.getMinutes() - dxmin);
459 710 ar[r].ARRIVALTIME = baseF.getTimeStr(sgbcfcsj);
460 711 sgbcfcsj.setMinutes(sgbcfcsj.getMinutes() - ar[r].bcsj);
461 712 ar[r].fcsj = baseF.getTimeStr(sgbcfcsj);*/
  713 + }else if(dxmin >= v1 && dxmin < 180) {
  714 + dxmin = v1;
  715 + }
  716 + if(ar[r].STOPTIME >0) {
  717 + dqbcddsj.setMinutes(dqbcddsj.getMinutes() + dxmin);
  718 + ar[r+1].fcsj = baseF.getTimeStr(dqbcddsj);
  719 + dqbcddsj.setMinutes(dqbcddsj.getMinutes() + ar[r+1].bcsj);
  720 + ar[r+1].ARRIVALTIME = baseF.getTimeStr(dqbcddsj);
  721 + ar[r].STOPTIME = dxmin >= 180 ? 0 : parseInt(dxmin);
462 722 }
463   - ar[r].STOPTIME = dxmin>180 ? 0 : dxmin;
464 723 }
465 724 },
466 725  
... ... @@ -573,64 +832,129 @@ var BaseFun = function() {
573 832 var jczwsj = saa[0].lbsj*2 + dataMap.ccsjArr[baseF.dirDmToIndex(arr[0].xlDir)] +
574 833 dataMap.jcsjArr[baseF.dirDmToIndex(arr[arr.length-1].xlDir)];
575 834 // 定义路牌总工时.第一次切高峰之间和晚高峰之后的班次.
576   - var lpdqzgs = parseFloat(((baseF.getlpzgs(arr) + jczwsj)/60).toFixed(2));
577   - while(lpdqzgs>gs) {
578   - for(var t = 0 ; t<arr.length;t++) {
579   - // 得到当前路牌下的发车时间.
580   - var dqbcfcsj = baseF.getDateTime(arr[t].fcsj);
581   - // 判断时间范围.
582   - if(!baseF.issplice(dqbcfcsj,dataMap,type,lpNo,cla)) {
583   - arr.splice(t,1);
584   - break;
  835 + var lpdqzgs = parseFloat(((baseF.getlpzgs(arr) + jczwsj)/60).toFixed(2)),tagboolean = true;
  836 + while(tagboolean) {
  837 + if(lpdqzgs>gs) {
  838 + var temp = true ;
  839 + for(var t = 0 ; t<arr.length;t++) {
  840 + // 得到当前路牌下的发车时间.
  841 + var dqbcfcsj = baseF.getDateTime(arr[t].fcsj);
  842 + // 判断时间范围.
  843 + if(!baseF.issplice(dqbcfcsj,dataMap,type,lpNo,cla)) {
  844 + arr.splice(t,1);
  845 + temp = false;
  846 + break;
  847 + }
585 848 }
  849 + lpdqzgs = parseFloat(((baseF.getlpzgs(arr) + jczwsj)/60).toFixed(2));
  850 + if(temp)
  851 + tagboolean = false;
  852 + }else {
  853 + tagboolean = false;
586 854 }
587   - lpdqzgs = parseFloat(((baseF.getlpzgs(arr) + jczwsj)/60).toFixed(2));
588 855 }
  856 + if(arr[0].xlDir == arr[arr.length-1].xlDir) {
  857 + baseF.addbc01(arr,arr[0],dataMap);
  858 + }
  859 + var gfzjst = null
589 860 for(var c = 0 ; c<arr.length;c++) {
590 861 var cfsjbc = baseF.getDateTime(arr[c].fcsj);
591 862 if(dataMap.gfzjsjd[0].st <= cfsjbc && cfsjbc <= dataMap.gfzjsjd[0].ed && arr[c].bcType == dataMap.bcTypeArr.cf )
592 863 gfzjst = baseF.getDateTime(arr[c].ARRIVALTIME);
593 864 }
594   - gfzjst == null ? dataMap.gfzjsjd[0].st : gfzjst;
  865 + gfzjst = gfzjst == null ? dataMap.gfzjsjd[0].st : gfzjst;
595 866 var gfzjbc = new Array(),wgfbc = new Array(),zgfbc = new Array();
596   - for(var a = 0 ; a<arr.length;a++) {
597   - var tmkssj = baseF.getDateTime(arr[a].fcsj)
  867 + for(var x = 0 ; x<arr.length;x++) {
  868 + var tmkssj = baseF.getDateTime(arr[x].fcsj)
598 869 if(gfzjst <= tmkssj && tmkssj <= dataMap.gfzjsjd[0].ed)
599   - gfzjbc.push(arr[a]);
  870 + gfzjbc.push(arr[x]);
600 871 else if(dataMap.wgfsjd[0].st <= tmkssj && tmkssj <= dataMap.wgfsjd[0].ed)
601   - wgfbc.push(arr[a]);
  872 + wgfbc.push(arr[x]);
602 873 else
603   - zgfbc.push(arr[a]);
  874 + zgfbc.push(arr[x]);
604 875 }
605 876 gfzjbc.sort(function(a,b){return a.fcno-b.fcno});
606 877 wgfbc.sort(function(a,b){return a.fcno-b.fcno});
607   - if(gfzjbc[gfzjbc.length-1].xlDir == wgfbc[0].xlDir)
608   - gfzjbc.splice(gfzjbc.length-1,1);
609   - if(type!='五工二休') {
610   - var gfzjst = null;
611   - var dxmin = parseInt((baseF.getDateTime(wgfbc[0].fcsj) - baseF.getDateTime(gfzjbc[gfzjbc.length-1].ARRIVALTIME))/60000);
612   - var addmin = parseInt(dxmin/gfzjbc.length);
613   - for(var g = 0 ;g < gfzjbc.length;g++) {
614   - if(gfzjbc[g].bcType != dataMap.bcTypeArr.cf)
615   - gfzjbc[g].STOPTIME = gfzjbc[g].STOPTIME + addmin;
616   - if(g==0) {
617   - continue;
618   - }else {
619   - var tempd = baseF.getDateTime(gfzjbc[g-1].ARRIVALTIME);
620   - tempd.setMinutes(tempd.getMinutes() + gfzjbc[g-1].STOPTIME);
621   - gfzjbc[g].fcsj = baseF.getTimeStr(tempd);
622   - tempd.setMinutes(tempd.getMinutes() + gfzjbc[g].bcsj);
623   - gfzjbc[g].ARRIVALTIME = baseF.getTimeStr(tempd);
  878 + if(gfzjbc.length>0 && wgfbc.length>0) {
  879 + if(gfzjbc[gfzjbc.length-1].xlDir == wgfbc[0].xlDir && dataMap.map.linePlayType == "0"){
  880 + // addbc
  881 + baseF.addbc01(gfzjbc,gfzjbc[gfzjbc.length-1],dataMap);
  882 + }
  883 + if(type!='五工二休') {
  884 + var dxmin = parseInt((baseF.getDateTime(wgfbc[0].fcsj) - baseF.getDateTime(gfzjbc[gfzjbc.length-1].ARRIVALTIME))/60000);
  885 + var addmin = parseInt(dxmin/gfzjbc.length);
  886 + var rsM = baseF.gettzsjbs(gfzjbc,addmin,dataMap);
  887 + if(rsM.tag) {
  888 + for(var g = 0 ;g < gfzjbc.length;g++) {
  889 + if(gfzjbc[g].bcType != dataMap.bcTypeArr.cf)
  890 + gfzjbc[g].STOPTIME = gfzjbc[g].STOPTIME + addmin;
  891 + if(g==0) {
  892 + continue;
  893 + }else {
  894 + var tempd = baseF.getDateTime(gfzjbc[g-1].ARRIVALTIME);
  895 + tempd.setMinutes(tempd.getMinutes() + gfzjbc[g-1].STOPTIME);
  896 + gfzjbc[g].fcsj = baseF.getTimeStr(tempd);
  897 + tempd.setMinutes(tempd.getMinutes() + gfzjbc[g].bcsj);
  898 + gfzjbc[g].ARRIVALTIME = baseF.getTimeStr(tempd);
  899 + }
  900 + }
624 901 }
  902 + gfzjbc[gfzjbc.length-1].STOPTIME = parseInt((baseF.getDateTime(wgfbc[0].fcsj) - baseF.getDateTime(gfzjbc[gfzjbc.length-1].ARRIVALTIME))/60000);
625 903 }
626   - gfzjbc[gfzjbc.length-1].STOPTIME = parseInt((baseF.getDateTime(wgfbc[0].fcsj) - baseF.getDateTime(gfzjbc[gfzjbc.length-1].ARRIVALTIME))/60000);
627 904 }
628   - return gfzjbc.concat(wgfbc).concat(zgfbc);
  905 + var rsAy = gfzjbc.concat(wgfbc).concat(zgfbc);
  906 + rsAy.sort(function(a,b){return b.fcno-a.fcno});
  907 + rsAy[0].STOPTIME= 0;
  908 + return rsAy;
  909 + },
  910 +
  911 + addbc01 : function(gfzjbc,lastObj,dataMap) {
  912 + var kssj = new Date(),strArray = lastObj.ARRIVALTIME.split(':');
  913 + kssj.setHours(parseInt(strArray[0]));
  914 + kssj.setMinutes(parseInt(strArray[1]) + lastObj.STOPTIME);
  915 + var cctag = baseF.dirDmToIndex(lastObj.xlDir);
  916 + cctag = baseF.getfx(1,cctag);
  917 + var tzsj = baseF.isgfsjd01(kssj,dataMap) ? dataMap.gftzsj[cctag] : dataMap.dgtzsj[cctag];
  918 + var _xxsj = baseF.getxssj(dataMap.zgfsjd,dataMap.wgfsjd,kssj,dataMap.pcxssjArr,dataMap.gfxxsjArr,cctag);// 获取行驶时间
  919 + // 定义班次序号
  920 + var xhNo = lastObj.fcno+1;
  921 + var carArray = {'lp':lastObj.lp,'lpNo':lastObj.lpNo,'lpName':lastObj.lpName,'lpType':lastObj.lpType};
  922 + var ags = {'tcc_id':lastObj.tcc,'skbName':lastObj.ttinfo,'lineName':lastObj.xl+'_'};
  923 + gfzjbc.push(baseF.getbcObj( kssj,
  924 + _xxsj,
  925 + carArray,
  926 + 'normal',
  927 + dataMap.dira[cctag],
  928 + xhNo++,
  929 + dataMap.pcxslcArr[cctag],
  930 + ags,0,
  931 + dataMap.qdzArr[cctag],
  932 + dataMap.zdzArr[cctag],
  933 + null,tzsj,0));
  934 + },
  935 +
  936 + gettzsjbs : function(array,bs,dataMap) {
  937 + var tag = true,dx = 0;
  938 + var tempA = new Array(),maxXxsjA = [parseInt(dataMap.map.upTravelTime),parseInt(dataMap.map.downTravelTime)];
  939 + for(var r = 0 ; r<array.length;r++) {
  940 + tempA.push(array[r].STOPTIME + bs);
  941 + }
  942 + var v1 = Math.max.apply(null, maxXxsjA) *1.5;
  943 + var v2 = Math.max.apply(null, tempA);
  944 + if( v2 > v1) {
  945 + tag = false;
  946 + dx = parseInt(v2 -v1);
  947 + }
  948 + return {tag:tag,dx:dx};
629 949 },
630 950  
631 951 issplice : function (kssj,dataMap,type,lpNo,cla){
632   - var tag = false;
633   - if(type=='五工二休' || lpNo <Math.round(cla/2)) {
  952 + var tag = false,booleanTag = false ;
  953 + if(cla % 2 ==0)
  954 + booleanTag = lpNo <= Math.round(cla/2);
  955 + else
  956 + booleanTag = lpNo < Math.round(cla/2);
  957 + if(type=='五工二休' || booleanTag) {
634 958 if((dataMap.zgfsjd[0].st <=kssj && kssj<= dataMap.zgfsjd[0].ed ) ||
635 959 ( dataMap.wgfsjd[0].st <= kssj && kssj <= dataMap.wgfsjd[0].ed))
636 960 tag = true;
... ... @@ -1152,12 +1476,12 @@ var BaseFun = function() {
1152 1476 while(kssj<=endTime) {
1153 1477 cctag = map.linePlayType=='1' ? 0 : baseF.getfx(fxTagDm,cctag);
1154 1478 fxTagDm = 1;
1155   - var cfdd = baseF.getcfdd(map.cfdd,cctag);
  1479 + /*var cfdd = baseF.getcfdd(map.cfdd,cctag);
1156 1480 if(kssj> new Date (baseF.getCFDate(10,30)) &&
1157 1481 kssj<new Date (baseF.getCFDate(11,30)) && $_cfn<1 && cfdd == cctag) {
1158 1482 $_cfn++;
1159 1483 rs.push(baseF.getbcObj(
1160   - kssj,dataMap.zwcArr[0],cara[c],dataMap.bcTypeArr.cf,
  1484 + kssj,dataMap.zwcAr r[0],cara[c],dataMap.bcTypeArr.cf,
1161 1485 dataMap.dira[cctag],xhNo++,0,map,0,null,null,null,0,0));// 午餐班次
1162 1486 }else if(kssj> new Date (baseF.getCFDate(18,30)) &&
1163 1487 kssj<new Date (baseF.getCFDate(19,30)) && $_cfw<1 && cfdd == cctag &&
... ... @@ -1166,15 +1490,15 @@ var BaseFun = function() {
1166 1490 rs.push(baseF.getbcObj(
1167 1491 kssj,dataMap.zwcArr[1],cara[c],dataMap.bcTypeArr.cf,
1168 1492 dataMap.dira[cctag],xhNo++,0,map,0,null,null,null,0,0));// 晚餐班次
1169   - }
  1493 + }*/
1170 1494 var tzsj = baseF.isgfsjd01(kssj,dataMap) ? dataMap.gftzsj[cctag] : dataMap.dgtzsj[cctag];
1171 1495 // var tzsj = dataMap.ztjxA[cctag];
1172 1496 var _xxsj = baseF.getxssj(dataMap.zgfsjd,dataMap.wgfsjd,kssj,dataMap.pcxssjArr,dataMap.gfxxsjArr,cctag);// 获取行驶时间
1173   - tzsj = baseF.isLastbc(kssj,endTime,tzsj,_xxsj) ? 0 : tzsj;
  1497 + var xs_tzsj = baseF.isLastbc(kssj,endTime,tzsj,_xxsj) ? 0 : tzsj;
1174 1498 rs.push(baseF.getbcObj(
1175 1499 kssj,_xxsj,cara[c],dataMap.bcTypeArr.normal,
1176 1500 dataMap.dira[cctag],xhNo++,dataMap.pcxslcArr[cctag],map,0,
1177   - dataMap.qdzArr[cctag],dataMap.zdzArr[cctag],null,tzsj,0));// 正常班次
  1501 + dataMap.qdzArr[cctag],dataMap.zdzArr[cctag],null,xs_tzsj,0));// 正常班次
1178 1502 kssj = new Date(kssj.setMinutes(kssj.getMinutes() + tzsj));
1179 1503 }
1180 1504 }
... ... @@ -1336,8 +1660,8 @@ var BaseFun = function() {
1336 1660 var _obj = baseF.getsxAndxxbc(list);
1337 1661 baseF.tcbc(_obj.sxbc,smbcsj[0].kssj,smbcsj[0].jssj);// 剔除上行不在时间范围内的班次
1338 1662 baseF.tcbc(_obj.xxbc,smbcsj[1].kssj,smbcsj[1].jssj);// 剔除下行不在时间范围内的班次
1339   - baseF.dzsmsj(_obj.sxbc,smbcsj[0].kssj,smbcsj[0].jssj,_obj.xxbc);// 调整上行首末班车时间
1340 1663 baseF.dzsmsj(_obj.xxbc,smbcsj[1].kssj,smbcsj[1].jssj,_obj.sxbc);// 调整下行首末班车时间
  1664 + baseF.dzsmsj(_obj.sxbc,smbcsj[0].kssj,smbcsj[0].jssj,_obj.xxbc);// 调整上行首末班车时间
1341 1665 baseF.tzqtbc(_obj.sxbc,_obj.qt,sj,cl,zd,lbsj);
1342 1666 baseF.tzqtbc(_obj.xxbc,_obj.qt,sj,cl,zd,lbsj);
1343 1667 return _obj.sxbc.concat(_obj.xxbc).concat(_obj.qt);
... ... @@ -1353,8 +1677,14 @@ var BaseFun = function() {
1353 1677 var _obj = baseF.getsxAndxxbc(list,dm);
1354 1678 baseF.tcbc(_obj.sxbc,smbcsj[0].kssj,smbcsj[0].jssj ,_obj.xxbc);// 剔除上行不在时间范围内的班次
1355 1679 baseF.tcbc(_obj.xxbc,smbcsj[1].kssj,smbcsj[1].jssj,_obj.sxbc);// 剔除下行不在时间范围内的班次
1356   - baseF.dzsmsj(_obj.sxbc,smbcsj[0].kssj,smbcsj[0].jssj,_obj.xxbc);// 调整上行首末班车时间
1357   - baseF.dzsmsj(_obj.xxbc,smbcsj[1].kssj,smbcsj[1].jssj,_obj.sxbc);// 调整下行首末班车时间
  1680 + if(smbcsj[1].jssj < smbcsj[0].jssj ) {
  1681 + baseF.dzsmsj(_obj.xxbc,smbcsj[1].kssj,smbcsj[1].jssj,_obj.sxbc);// 调整下行首末班车时间
  1682 + baseF.dzsmsj(_obj.sxbc,smbcsj[0].kssj,smbcsj[0].jssj,_obj.xxbc);// 调整上行首末班车时间
  1683 + }else {
  1684 + baseF.dzsmsj(_obj.sxbc,smbcsj[0].kssj,smbcsj[0].jssj,_obj.xxbc);// 调整上行首末班车时间
  1685 + baseF.dzsmsj(_obj.xxbc,smbcsj[1].kssj,smbcsj[1].jssj,_obj.sxbc);// 调整下行首末班车时间
  1686 + }
  1687 +
1358 1688 return _obj.sxbc.concat(_obj.xxbc).concat(_obj.qt);
1359 1689 },
1360 1690 tcbc : function(ar,kssj,jssj,ppar) {
... ...
src/main/resources/static/pages/base/timesmodel/js/d3.relationshipgraph.js
... ... @@ -947,11 +947,30 @@ var RelationshipGraph = function () {
947 947 key : 'statistics',
948 948 value : function statistics() {
949 949 var $_this = this,
950   - array = $_this.getSvgyAxisTransformY(),
951   - gdata = d3.selectAll('rect.data')[0],
952   - arrayTemp = new Array(),
953   - minValue = 0,timeNum;
  950 + // array = $_this.getSvgyAxisTransformY(),
  951 + array = $_this.configuration.taskTypes,
  952 + tza = $_this.getDataArray();
954 953 for(var a=0;a<array.length;a++) {
  954 + var lpNo = array[a].lpNo;
  955 + var timeNum = 0 ,tempNum = 0;
  956 + for(var z = 0 ;z < tza.length;z++) {
  957 + if(tza[z].lpNo == lpNo) {
  958 + timeNum = timeNum + tza[z].bcsj + tza[z].STOPTIME;
  959 + tempNum ++;
  960 + }
  961 + }
  962 + var className = 'statis_container_' + lpNo;
  963 + var textNodes = $("."+className).children("text");
  964 + var hours = parseInt(timeNum/60);
  965 + var mimus = timeNum%60, zgs = hours + (mimus==0? "": "." + mimus);
  966 + var zgs = parseFloat((timeNum/60).toFixed(2));
  967 + // var zgs = timeNum;
  968 + $(textNodes[0]).text("总工时:" + zgs);
  969 + $(textNodes[1]).text("总班次:"+(tempNum));
  970 + // $_this.pptjbx($("."+className).children("rect")[2],zgs*1,lpNo,$_this);
  971 + }
  972 + /*for(var a=0;a<array.length;a++) {
  973 + debugger;
955 974 var tempNum = 0,timeNum = 0,lpNo = '';
956 975 for(var g = 0 ; g <gdata.length;g++) {
957 976 var temp_i = parseInt(d3.select(gdata[g]).attr('y'))-this.configuration.offsetY;
... ... @@ -968,13 +987,14 @@ var RelationshipGraph = function () {
968 987 minValue = array[a];
969 988 var className = 'statis_container_' + array[a];
970 989 var textNodes = $("."+className).children("text");
971   - /*var hours = parseInt(timeNum/60);
972   - var mimus = timeNum%60,zgs = hours + (mimus==0? "": "." + mimus);*/
  990 + var hours = parseInt(timeNum/60);
  991 + var mimus = timeNum%60,zgs = hours + (mimus==0? "": "." + mimus);
973 992 var zgs = parseFloat((timeNum/60).toFixed(2));
  993 + var zgs = timeNum;
974 994 $(textNodes[0]).text("总工时:" + zgs);
975 995 $(textNodes[1]).text("总班次:"+(tempNum));
976 996 $_this.pptjbx($("."+className).children("rect")[2],zgs*1,lpNo,$_this);
977   - }
  997 + }*/
978 998 }
979 999  
980 1000 }, {
... ... @@ -1025,11 +1045,12 @@ var RelationshipGraph = function () {
1025 1045 value : function createStatistics() {
1026 1046 var svg = d3.select('.gantt-chart'),
1027 1047 _this = this,
1028   - array = _this.getSvgyAxisTransformY();
  1048 + yAyxisA = _this.getSvgyAxisTransformY();
  1049 + array = _this.configuration.taskTypes;
1029 1050 var g_statis = svg.selectAll('.g_statis').data([1]).enter().append('g').classed({'g_statis':true}).attr("transform", "translate(" + _this.configuration.offsetX + ", " + _this.configuration.offsetY + ")");
1030 1051 for(var c = 0 ;c<array.length;c++) {
1031   - var className = 'statis_container_' + array[c];
1032   - var statis_container = g_statis.append('g').attr("class",className).attr("transform", "translate(" + 0 + ", " + array[c] + ")");
  1052 + var className = 'statis_container_' + array[c].lpNo;
  1053 + var statis_container = g_statis.append('g').attr("class",className).attr("transform", "translate(" + 0 + ", " + yAyxisA[c] + ")");
1033 1054 statis_container.append('rect').classed({'rect_shift':true})
1034 1055 .attr("x",-_this.configuration.offsetX)
1035 1056 .attr("y",9)
... ... @@ -1527,7 +1548,8 @@ var RelationshipGraph = function () {
1527 1548 key : 'setIdValue',
1528 1549 value : function setIdValue(obj) {
1529 1550 // 设置id属性值. 由一个 常量字符串 + 班次数 + 常量字符串 + 发车序号 + 常量字符 + 对应的y轴值.
1530   - return 'shift-rect-' + obj.bcs + '_' + obj.fcno + '_' + $_GlobalGraph.configuration.y(obj.parent);
  1551 + // return 'shift-rect-' + obj.bcs + '_' + obj.fcno + '_' + $_GlobalGraph.configuration.y(obj.parent);
  1552 + return 'shift-rect-' + obj.bcs + '_' + obj.fcno + '_' + $_GlobalGraph.configuration.y(obj.lpName);
1531 1553 }
1532 1554 }, {
1533 1555 /**
... ... @@ -1615,7 +1637,8 @@ var RelationshipGraph = function () {
1615 1637 * */
1616 1638 key : 'setRectParenNodeIdV',
1617 1639 value : function setRectParenNodeIdV(obj) {
1618   - return 'parent_' + $_GlobalGraph.configuration.y(obj.parent) + '_' + obj.bcs + "_node_" + obj.fcno;
  1640 + // return 'parent_' + $_GlobalGraph.configuration.y(obj.parent) + '_' + obj.bcs + "_node_" + obj.fcno;
  1641 + return 'parent_' + $_GlobalGraph.configuration.y(obj.lpName) + '_' + obj.bcs + "_node_" + obj.fcno;
1619 1642 }
1620 1643 }, {
1621 1644 /**
... ... @@ -1629,7 +1652,8 @@ var RelationshipGraph = function () {
1629 1652 * */
1630 1653 key : 'setNextNodeIdV',
1631 1654 value : function setNextNodeIdV(obj) {
1632   - return "shift-rect-" + (obj.bcs+1) + '_' + (obj.fcno+1) + '_' + $_GlobalGraph.configuration.y(obj.parent);
  1655 + // return "shift-rect-" + (obj.bcs+1) + '_' + (obj.fcno+1) + '_' + $_GlobalGraph.configuration.y(obj.parent);
  1656 + return "shift-rect-" + (obj.bcs+1) + '_' + (obj.fcno+1) + '_' + $_GlobalGraph.configuration.y(obj.lpName);
1633 1657 }
1634 1658 }, {
1635 1659 /**
... ... @@ -1643,7 +1667,8 @@ var RelationshipGraph = function () {
1643 1667 * */
1644 1668 key : 'setLastNodeIdV',
1645 1669 value : function setLastNodeIdV(obj) {
1646   - return "shift-rect-" + (obj.bcs-1) + '_' + (obj.fcno-1)+ '_' + $_GlobalGraph.configuration.y(obj.parent);
  1670 + // return "shift-rect-" + (obj.bcs-1) + '_' + (obj.fcno-1)+ '_' + $_GlobalGraph.configuration.y(obj.parent);
  1671 + return "shift-rect-" + (obj.bcs-1) + '_' + (obj.fcno-1)+ '_' + $_GlobalGraph.configuration.y(obj.lpName);
1647 1672 }
1648 1673 }, {
1649 1674 /**
... ... @@ -1671,7 +1696,8 @@ var RelationshipGraph = function () {
1671 1696 * */
1672 1697 key : 'setText01IdV',
1673 1698 value : function setText01IdV(obj) {
1674   - return "shift-rect-text01-" + obj.bcs + '_' + obj.fcno + $_GlobalGraph.configuration.y(obj.parent);
  1699 + // return "shift-rect-text01-" + obj.bcs + '_' + obj.fcno + $_GlobalGraph.configuration.y(obj.parent);
  1700 + return "shift-rect-text01-" + obj.bcs + '_' + obj.fcno + $_GlobalGraph.configuration.y(obj.lpName);
1675 1701 }
1676 1702 }, {
1677 1703 /**
... ... @@ -1755,7 +1781,8 @@ var RelationshipGraph = function () {
1755 1781 * */
1756 1782 key : 'setCircleIdV',
1757 1783 value : function setCircleIdV(obj) {
1758   - return "shift-rect-circle-" + obj.bcs + '_' + obj.fcno + $_GlobalGraph.configuration.y(obj.parent);
  1784 + // return "shift-rect-circle-" + obj.bcs + '_' + obj.fcno + $_GlobalGraph.configuration.y(obj.parent);
  1785 + return "shift-rect-circle-" + obj.bcs + '_' + obj.fcno + $_GlobalGraph.configuration.y(obj.lpName);
1759 1786 }
1760 1787 }, {
1761 1788 /**
... ... @@ -1833,7 +1860,8 @@ var RelationshipGraph = function () {
1833 1860 * */
1834 1861 key : 'setText02IdV',
1835 1862 value : function setText02IdV(obj) {
1836   - return "shift-rect-text02-" + obj.bcs + '_' + obj.fcno + $_GlobalGraph.configuration.y(obj.parent);
  1863 + // return "shift-rect-text02-" + obj.bcs + '_' + obj.fcno + $_GlobalGraph.configuration.y(obj.parent);
  1864 + return "shift-rect-text02-" + obj.bcs + '_' + obj.fcno + $_GlobalGraph.configuration.y(obj.lpName);
1837 1865 }
1838 1866 }, {
1839 1867 /**
... ... @@ -1873,7 +1901,9 @@ var RelationshipGraph = function () {
1873 1901 * */
1874 1902 key : 'setText03IdV',
1875 1903 value : function setText03IdV(obj) {
1876   - return "shift-rect-text03-" + obj.bcs + '_' + obj.fcno + $_GlobalGraph.configuration.y(obj.parent);
  1904 + /*return "shift-rect-text03-" + obj.bcs + '_' + obj.fcno + $_GlobalGraph.configuration.y(obj.parent);*/
  1905 + return "shift-rect-text03-" + obj.bcs + '_' + obj.fcno + $_GlobalGraph.configuration.y(obj.lpName);
  1906 +
1877 1907 }
1878 1908 }, {
1879 1909 /**
... ... @@ -1911,7 +1941,8 @@ var RelationshipGraph = function () {
1911 1941 * */
1912 1942 key : 'setText04IdV',
1913 1943 value : function (obj) {
1914   - return "shift-rect-text04-" + obj.bcs + '_' + obj.fcno + $_GlobalGraph.configuration.y(obj.parent);
  1944 + /*return "shift-rect-text04-" + obj.bcs + '_' + obj.fcno + $_GlobalGraph.configuration.y(obj.parent);*/
  1945 + return "shift-rect-text04-" + obj.bcs + '_' + obj.fcno + $_GlobalGraph.configuration.y(obj.lpName);
1915 1946 }
1916 1947 }, {
1917 1948 /**
... ... @@ -2011,7 +2042,8 @@ var RelationshipGraph = function () {
2011 2042 * */
2012 2043 key : 'setCoverRectIdV',
2013 2044 value : function setCoverRectIdV(obj) {
2014   - return "shift-rect-cover-" + obj.bcs + '_' + obj.fcno + $_GlobalGraph.configuration.y(obj.parent);
  2045 + /*return "shift-rect-cover-" + obj.bcs + '_' + obj.fcno + $_GlobalGraph.configuration.y(obj.parent);*/
  2046 + return "shift-rect-cover-" + obj.bcs + '_' + obj.fcno + $_GlobalGraph.configuration.y(obj.lpName);
2015 2047 }
2016 2048 }, {
2017 2049 /**
... ... @@ -2039,7 +2071,8 @@ var RelationshipGraph = function () {
2039 2071 * */
2040 2072 key : 'setCoverRectParentV',
2041 2073 value : function setCoverRectParentV(obj) {
2042   - return "shift-rect-" + obj.bcs + '_' + obj.fcno + '_' + $_GlobalGraph.configuration.y(obj.parent) + '-cover';
  2074 + //return "shift-rect-" + obj.bcs + '_' + obj.fcno + '_' + $_GlobalGraph.configuration.y(obj.parent) + '-cover';
  2075 + return "shift-rect-" + obj.bcs + '_' + obj.fcno + '_' + $_GlobalGraph.configuration.y(obj.lpName) + '-cover';
2043 2076 }
2044 2077 }, {
2045 2078 /**
... ... @@ -2053,7 +2086,8 @@ var RelationshipGraph = function () {
2053 2086 * */
2054 2087 key : 'setCoverRectLastIdV',
2055 2088 value : function setCoverRectLastIdV(obj) {
2056   - return "shift-rect-cover-" + obj.bcs + '_' + (obj.fcno+1) + $_GlobalGraph.configuration.y(obj.parent);
  2089 + // return "shift-rect-cover-" + obj.bcs + '_' + (obj.fcno+1) + $_GlobalGraph.configuration.y(obj.parent);
  2090 + return "shift-rect-cover-" + obj.bcs + '_' + (obj.fcno+1) + $_GlobalGraph.configuration.y(obj.lpName);
2057 2091 }
2058 2092 }, {
2059 2093 key : 'mouseUpEvent',
... ...
src/main/resources/static/pages/base/timesmodel/js/gantt.js
... ... @@ -388,7 +388,8 @@
388 388 * @return 返回甘特图的参数配置信息.
389 389 * */
390 390 function getGraphArgus(p) {
391   - var VALUEKEYNAME = 'Worldwide Gross',MULTIPLE = Math.round(105/parseInt(p.stopAraay[0].sxsj)) >=4 ? Math.round(90/parseInt(p.stopAraay[0].sxsj)) : 3 ,
  391 + var MULTIPLE = Math.round(105/parseInt(p.stopAraay[0].sxsj)) >=4 ? Math.round(90/parseInt(p.stopAraay[0].sxsj)) : Math.round(90/parseInt(p.stopAraay[0].sxsj)) *2;
  392 + var VALUEKEYNAME = 'Worldwide Gross' ,
392 393 DXHOURS = 24,MINUTE = 60,WIDTH = DXHOURS*MINUTE,MARGINLEFT = 380,HEIGHT = p.yAxisCarArray.length*60 + 240,
393 394 MARGINBOTTOM = 240,OFFSETX = 90,OFFSETY = 180,OFFSETUPY = 120,OFFSETDOWNY = 60,
394 395 STARTDATETIME = p.startDateTime ,ENDDATETIME = p.endDateTime ,TASKTYPES =p.yAxisCarArray ,TICKFORMAT ='%H:%M' ,SHOWTOOLTIPS = true;
... ...
src/test/java/com/bsth/service/schedule/BaseTest.java deleted 100644 → 0
1   -package com.bsth.service.schedule;
2   -
3   -import org.junit.runner.RunWith;
4   -import org.springframework.boot.test.SpringApplicationConfiguration;
5   -import org.springframework.test.context.ActiveProfiles;
6   -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
7   -
8   -/**
9   - * 基础测试类。
10   - */
11   -@RunWith(SpringJUnit4ClassRunner.class)
12   -@SpringApplicationConfiguration(classes = ScheduleTestApp.class)
13   -@ActiveProfiles("scheduletest")
14   -//@WebIntegrationTest({"server.port=0","management.port=0"})
15   -public class BaseTest {
16   -}
src/test/java/com/bsth/service/schedule/ScheduleTestApp.java deleted 100644 → 0
1   -package com.bsth.service.schedule;
2   -
3   -import com.bsth.service.schedule.impl.SchedulePlanRuleResultServiceImpl;
4   -import com.bsth.service.schedule.impl.SchedulePlanServiceImpl;
5   -import com.bsth.service.schedule.rules.MyDroolsConfiguration;
6   -import com.bsth.service.schedule.utils.DataToolsServiceImpl;
7   -import org.springframework.boot.autoconfigure.SpringBootApplication;
8   -import org.springframework.boot.orm.jpa.EntityScan;
9   -import org.springframework.context.annotation.ComponentScan;
10   -import org.springframework.context.annotation.Configuration;
11   -import org.springframework.context.annotation.FilterType;
12   -import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
13   -
14   -/**
15   - * 基础测试类(用于计划调度模块测试测试)。
16   - * 配置计划调度的模块的用到的entity,repository,service
17   - *
18   - * 注意:测试环境下测试类 TestApp 和springdata的类不在统一级包里,必须指定EnableJpaRepositories
19   - */
20   -@Configuration
21   -@EntityScan(
22   - basePackages = {"com.bsth.entity"}
23   -)
24   -@ComponentScan(
25   - basePackages = {"com.bsth.repository", "com.bsth.service"},
26   - useDefaultFilters = false,
27   - includeFilters = {
28   - @ComponentScan.Filter(
29   - type = FilterType.ASSIGNABLE_TYPE,
30   - value = SchedulePlanRuleResultServiceImpl.class
31   - ),
32   - @ComponentScan.Filter(
33   - type = FilterType.ASSIGNABLE_TYPE,
34   - value = SchedulePlanServiceImpl.class
35   - ),
36   - @ComponentScan.Filter(
37   - type = FilterType.ASSIGNABLE_TYPE,
38   - value = MyDroolsConfiguration.class
39   - ),
40   - @ComponentScan.Filter(
41   - type = FilterType.ASSIGNABLE_TYPE,
42   - value = DataToolsServiceImpl.class
43   - )
44   - }
45   -)
46   -@EnableJpaRepositories(
47   - basePackages = {"com.bsth.repository"}
48   -)
49   -@SpringBootApplication
50   -public class ScheduleTestApp {
51   -}
src/test/java/com/bsth/service/schedule/rules/RuleTest1.java deleted 100644 → 0
1   -package com.bsth.service.schedule.rules;
2   -
3   -import com.bsth.entity.sys.SysUser;
4   -import com.bsth.repository.sys.SysUserRepository;
5   -import com.bsth.service.schedule.BaseTest;
6   -import com.vividsolutions.jts.util.Assert;
7   -import org.dbunit.database.DatabaseConnection;
8   -import org.dbunit.database.IDatabaseConnection;
9   -import org.dbunit.dataset.IDataSet;
10   -import org.dbunit.dataset.xml.FlatXmlDataSetBuilder;
11   -import org.dbunit.operation.DatabaseOperation;
12   -import org.junit.After;
13   -import org.junit.Before;
14   -import org.slf4j.Logger;
15   -import org.slf4j.LoggerFactory;
16   -import org.springframework.beans.factory.annotation.Autowired;
17   -import org.springframework.core.io.ClassPathResource;
18   -import org.springframework.core.io.Resource;
19   -
20   -import javax.sql.DataSource;
21   -
22   -public class RuleTest1 extends BaseTest {
23   - /** 日志记录器 */
24   - private static final Logger logger = LoggerFactory.getLogger(RuleTest1.class);
25   -
26   - @Autowired
27   - private DataSource dataSource;
28   -
29   - @Autowired
30   - private SysUserRepository sysUserRepository;
31   -
32   - /**
33   - * 初始化数据。
34   - */
35   - @Before
36   - public void initData() throws Exception {
37   - logger.info("载入数据......");
38   -
39   - // 获取数据库连接
40   - IDatabaseConnection iDatabaseConnection = new DatabaseConnection(dataSource.getConnection());
41   - // 获取Dbunit数据源
42   - Resource res = new ClassPathResource("testdata/d1.xml");
43   - FlatXmlDataSetBuilder flatXmlDataSetBuilder = new FlatXmlDataSetBuilder();
44   - flatXmlDataSetBuilder.setColumnSensing(false);
45   - flatXmlDataSetBuilder.setCaseSensitiveTableNames(false);
46   - IDataSet iDataSet = flatXmlDataSetBuilder.build(res.getInputStream());
47   -
48   - // 载入数据
49   - DatabaseOperation.CLEAN_INSERT.execute(iDatabaseConnection, iDataSet);
50   - }
51   -
52   - /**
53   - * 清除数据。
54   - */
55   - @After
56   - public void destoryData() throws Exception {
57   - logger.info("清除数据......");
58   - // 获取数据库连接
59   - IDatabaseConnection iDatabaseConnection = new DatabaseConnection(dataSource.getConnection());
60   - // 获取Dbunit数据源
61   - Resource res = new ClassPathResource("testdata/d1.xml");
62   - FlatXmlDataSetBuilder flatXmlDataSetBuilder = new FlatXmlDataSetBuilder();
63   - flatXmlDataSetBuilder.setColumnSensing(false);
64   - flatXmlDataSetBuilder.setCaseSensitiveTableNames(false);
65   - IDataSet iDataSet = flatXmlDataSetBuilder.build(res.getInputStream());
66   -
67   - // 清除数据
68   - DatabaseOperation.DELETE_ALL.execute(iDatabaseConnection, iDataSet);
69   - }
70   -
71   - @org.junit.Test
72   - public void t1() {
73   - logger.info("t1()测试......");
74   - SysUser sysUser = sysUserRepository.findOne(1);
75   - Assert.equals("admin", sysUser.getUserName());
76   - }
77   -}
78   -
79   -//
80   -//
81   -//package com.bsth.service.schedule.rules;
82   -//
83   -// import com.bsth.Application;
84   -// import com.bsth.service.schedule.rules.shiftloop.ScheduleCalcuParam_input;
85   -// import com.bsth.service.schedule.rules.shiftloop.ScheduleResults_output;
86   -// import com.bsth.service.schedule.rules.shiftloop.ScheduleRule_input;
87   -// import com.bsth.service.schedule.rules.ttinfo.TTInfoCalcuParam_input;
88   -// import com.bsth.service.schedule.rules.ttinfo.TTInfoResults_output;
89   -// import com.bsth.service.schedule.rules.ttinfo.TTInfo_input;
90   -// import org.joda.time.DateTime;
91   -// import org.junit.Test;
92   -// import org.junit.runner.RunWith;
93   -// import org.kie.api.KieBase;
94   -// import org.kie.api.runtime.KieSession;
95   -// import org.slf4j.Logger;
96   -// import org.slf4j.LoggerFactory;
97   -// import org.springframework.beans.factory.annotation.Autowired;
98   -// import org.springframework.boot.test.SpringApplicationConfiguration;
99   -// import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
100   -//
101   -// import java.util.Arrays;
102   -//
103   -//@RunWith(SpringJUnit4ClassRunner.class)
104   -//@SpringApplicationConfiguration(classes = {Application.class})
105   -//public class DroolsRulesTest {
106   -//
107   -// /** 日志记录器 */
108   -// private final static Logger logger = LoggerFactory.getLogger(DroolsRulesTest.class);
109   -//
110   -// @Autowired
111   -// private KieBase kieBase;
112   -//
113   -//// @Test
114   -//// public void helloWorldDrlTest() throws Exception {
115   -//// // 1、创建session,内部配置的是stateful
116   -//// KieSession session = kieBase.newKieSession();
117   -////
118   -//// // 1.1 设置gloable对象,在drl中通过别名使用
119   -//// List<String> gloableList = new ArrayList<String>();
120   -//// session.setGlobal("list", gloableList);
121   -////
122   -//// // 1.2 可以设置一些监听器,再议
123   -////
124   -//// // 2、创建fact对象
125   -//// Message message = new Message();
126   -//// message.setMessage("Hello World");
127   -//// message.setStatus(Message.HELLO);
128   -//// session.insert(message);
129   -////
130   -//// // 3、执行rule
131   -//// session.fireAllRules();
132   -////
133   -//// System.out.println(gloableList);
134   -////
135   -//// // 4、执行完毕销毁,有日志的也要关闭
136   -//// session.dispose();
137   -//// }
138   -//
139   -// // @Test
140   -// public void ttinfoDrlTest() throws Exception {
141   -// logger.info("------------ttinfoDrlTest 测试---------------");
142   -//
143   -// // 1、创建session,内部配置的是stateful
144   -// KieSession session = kieBase.newKieSession();
145   -//
146   -// // 1.1 设置gloable对象,在drl中通过别人使用
147   -// session.setGlobal("log", logger);
148   -// TTInfoResults_output ttInfoResults_output = new TTInfoResults_output();
149   -// session.setGlobal("results", ttInfoResults_output);
150   -//
151   -// // 1.2 可以设置一些监听器,再议
152   -//
153   -// // 2、创建fact对象
154   -// TTInfoCalcuParam_input ttInfoCalcuParam_input = new TTInfoCalcuParam_input(
155   -// new DateTime(2016, 8, 1, 0, 0),
156   -// new DateTime(2016, 8, 10, 0, 0),
157   -// "1"
158   -// );
159   -//
160   -//
161   -// TTInfo_input ttInfo_input1 = new TTInfo_input();
162   -// ttInfo_input1.setTtInfoId("1");
163   -// ttInfo_input1.setXlId("1");
164   -// ttInfo_input1.setWeekdays(Arrays.asList(true, true, true, true, true, false, false));
165   -// ttInfo_input1.getSpecialDays().add(new DateTime(2016, 8, 1, 0, 0));
166   -// ttInfo_input1.setUpdateDate(new DateTime(2016, 1, 1, 0, 0));
167   -// ttInfo_input1.setIsEnable(true);
168   -// ttInfo_input1.setQyDate(new DateTime(2016, 1, 1, 0, 0));
169   -//
170   -// TTInfo_input ttInfo_input1_2 = new TTInfo_input();
171   -// ttInfo_input1_2.setTtInfoId("2");
172   -// ttInfo_input1_2.setXlId("1");
173   -// ttInfo_input1_2.setWeekdays(Arrays.asList(true, false, false, false, false, true, false));
174   -// ttInfo_input1_2.getSpecialDays().add(new DateTime(2016, 8, 11, 0, 0));
175   -// ttInfo_input1_2.setUpdateDate(new DateTime(2015, 2, 1, 0, 0));
176   -// ttInfo_input1_2.setIsEnable(true);
177   -// ttInfo_input1_2.setQyDate(new DateTime(2016, 1, 1, 0, 0));
178   -//
179   -//
180   -// TTInfoCalcuParam_input ttInfoCalcuParam_inpu2 = new TTInfoCalcuParam_input(
181   -// new DateTime(2016, 8, 1, 0, 0),
182   -// new DateTime(2016, 8, 10, 0, 0),
183   -// "2"
184   -// );
185   -//
186   -// TTInfo_input ttInfo_input2 = new TTInfo_input();
187   -// ttInfo_input2.setTtInfoId("2");
188   -// ttInfo_input2.setXlId("2");
189   -// ttInfo_input2.setWeekdays(Arrays.asList(true, false, false, false, false, true, false));
190   -// ttInfo_input2.getSpecialDays().add(new DateTime(2016, 8, 11, 0, 0));
191   -// ttInfo_input2.setUpdateDate(new DateTime(2016, 1, 1, 0, 0));
192   -// ttInfo_input2.setIsEnable(true);
193   -// ttInfo_input2.setQyDate(new DateTime(2016, 1, 1, 0, 0));
194   -//
195   -// session.insert(ttInfoCalcuParam_input);
196   -// session.insert(ttInfo_input1);
197   -// session.insert(ttInfo_input1_2);
198   -// session.insert(ttInfoCalcuParam_inpu2);
199   -// session.insert(ttInfo_input2);
200   -//
201   -//
202   -//
203   -// // 3、执行rule
204   -// session.fireAllRules();
205   -//
206   -// // 4、执行完毕销毁,有日志的也要关闭
207   -// session.dispose();
208   -//
209   -// // 打印global结果
210   -// logger.info(ttInfoResults_output.showTTInfoDesc1());
211   -//
212   -// }
213   -//
214   -// @Test
215   -// public void shiftloopDrlTest() throws Exception {
216   -// // 1、创建session,内部配置的是stateful
217   -// KieSession session = kieBase.newKieSession();
218   -//
219   -// // 1.1 设置gloable对象,在drl中通过别名使用
220   -// ScheduleResults_output scheduleResults_output = new ScheduleResults_output();
221   -// session.setGlobal("scheduleResult", scheduleResults_output);
222   -//
223   -// // 1.2 可以设置一些监听器,再议
224   -//
225   -// // 2、创建fact对象
226   -//
227   -// ScheduleCalcuParam_input scheduleCalcuParam_input = new ScheduleCalcuParam_input();
228   -// scheduleCalcuParam_input.setFromDate(new DateTime(2016, 8, 1, 0, 0));
229   -// scheduleCalcuParam_input.setToDate(new DateTime(2016, 8, 10, 0, 0));
230   -//
231   -// ScheduleRule_input scheduleRule_input1 = new ScheduleRule_input();
232   -// scheduleRule_input1.setRuleId("1");
233   -// scheduleRule_input1.setQyrq(new DateTime(2016, 7, 22, 0, 0));
234   -// scheduleRule_input1.getGuideboardIds().addAll(Arrays.asList(
235   -// "9", "9" , "8" ,"8" ,"7" ,"7" ,"6" ,"6", "5", "5", "4", "4", "3", "3", "2", "2", "1", "1"));
236   -// scheduleRule_input1.setStartGbdIndex(3);
237   -// scheduleRule_input1.getEmployeeConfigIds().addAll(Arrays.asList("1", "2"));
238   -// scheduleRule_input1.setStartEIndex(1);
239   -// scheduleRule_input1.setCarConfigId("1");
240   -//
241   -//// ScheduleRule_input scheduleRule_input2 = new ScheduleRule_input();
242   -//// scheduleRule_input2.setRuleId(2L);
243   -//// scheduleRule_input2.setQyrq(new DateTime(2016, 7, 22, 0, 0));
244   -//// scheduleRule_input2.getGuideboardIds().addAll(Arrays.asList(
245   -//// 1L, 1L, 2L, 2L, 3L, 3L, 4L, 4L, 5L, 5L, 6L, 6L, 7L, 7L, 8L, 8L, 9L, 9L, 10L, 10L,
246   -//// 11L, 11L, 12L, 12L, 13L, 13L));
247   -//// scheduleRule_input2.setStartGbdIndex(7);
248   -//// scheduleRule_input2.getEmployeeConfigIds().addAll(Arrays.asList(11L, 12L));
249   -//// scheduleRule_input2.setStartEIndex(1);
250   -//// scheduleRule_input2.setCarConfigId(2L);
251   -//
252   -// session.insert(scheduleCalcuParam_input);
253   -// session.insert(scheduleRule_input1);
254   -//// session.insert(scheduleRule_input2);
255   -//
256   -//
257   -// // 3、执行rule
258   -// session.fireAllRules();
259   -//
260   -// // 4、执行完毕销毁,有日志的也要关闭
261   -// session.dispose();
262   -//
263   -// System.out.println(scheduleResults_output.showGuideboardDesc1());
264   -//
265   -// }
266   -//}
267   -
src/test/java/com/bsth/service/schedule/rules/SchedulePlan1Test.java deleted 100644 → 0
1   -package com.bsth.service.schedule.rules;
2   -
3   -import com.bsth.service.schedule.BaseTest;
4   -import org.dbunit.database.DatabaseConnection;
5   -import org.dbunit.database.IDatabaseConnection;
6   -import org.dbunit.dataset.IDataSet;
7   -import org.dbunit.dataset.xml.FlatXmlDataSetBuilder;
8   -import org.dbunit.operation.DatabaseOperation;
9   -import org.junit.After;
10   -import org.junit.Before;
11   -import org.junit.Test;
12   -import org.slf4j.Logger;
13   -import org.slf4j.LoggerFactory;
14   -import org.springframework.beans.factory.annotation.Autowired;
15   -import org.springframework.core.io.ClassPathResource;
16   -import org.springframework.core.io.Resource;
17   -
18   -import javax.sql.DataSource;
19   -
20   -/**
21   - * 排班计划测试(手工排班测试)。
22   - */
23   -public class SchedulePlan1Test extends BaseTest {
24   - /** 日志记录器 */
25   - private static final Logger logger = LoggerFactory.getLogger(SchedulePlan1Test.class);
26   -
27   - @Autowired
28   - private DataSource dataSource;
29   -
30   - /**
31   - * 初始化数据。
32   - */
33   - @Before
34   - public void initData() throws Exception {
35   - logger.info("载入数据......");
36   -
37   - // 获取数据库连接
38   - IDatabaseConnection iDatabaseConnection = new DatabaseConnection(dataSource.getConnection());
39   - // 获取Dbunit数据源
40   - Resource res = new ClassPathResource("testdata/d2.xml");
41   - FlatXmlDataSetBuilder flatXmlDataSetBuilder = new FlatXmlDataSetBuilder();
42   - flatXmlDataSetBuilder.setColumnSensing(false);
43   - flatXmlDataSetBuilder.setCaseSensitiveTableNames(false);
44   - IDataSet iDataSet = flatXmlDataSetBuilder.build(res.getInputStream());
45   -
46   - // 载入数据
47   - DatabaseOperation.CLEAN_INSERT.execute(iDatabaseConnection, iDataSet);
48   - }
49   -
50   - /**
51   - * 清除数据。
52   - */
53   - @After
54   - public void destoryData() throws Exception {
55   - logger.info("清除数据......");
56   - // 获取数据库连接
57   - IDatabaseConnection iDatabaseConnection = new DatabaseConnection(dataSource.getConnection());
58   - // 获取Dbunit数据源
59   - Resource res = new ClassPathResource("testdata/d2.xml");
60   - FlatXmlDataSetBuilder flatXmlDataSetBuilder = new FlatXmlDataSetBuilder();
61   - flatXmlDataSetBuilder.setColumnSensing(false);
62   - flatXmlDataSetBuilder.setCaseSensitiveTableNames(false);
63   - IDataSet iDataSet = flatXmlDataSetBuilder.build(res.getInputStream());
64   -
65   - // 清除数据
66   - DatabaseOperation.DELETE_ALL.execute(iDatabaseConnection, iDataSet);
67   - }
68   -
69   -
70   - @Test
71   - public void t1() {
72   -
73   - }
74   -
75   -
76   -
77   -
78   -
79   -
80   -
81   -
82   -
83   -
84   -
85   -
86   -
87   -
88   -
89   -
90   -
91   -
92   -
93   -
94   -}
src/test/java/com/bsth/service/schedule/rules/SchedulePlan2Test.java deleted 100644 → 0
1   -package com.bsth.service.schedule.rules;
2   -
3   -/**
4   - * 时刻表测试(自动排班测试)。
5   - */
6   -public class SchedulePlan2Test {
7   - // TODO:
8   -}
src/test/resources/.gitkeep deleted 100644 → 0
src/test/resources/application-scheduletest.properties deleted 100644 → 0
1   -#嵌入式tomcat配置
2   -#server.port=9088
3   -#management.port= 9001
4   -#management.address= 127.0.0.1
5   -
6   -#JPA配置
7   -spring.jpa.hibernate.ddl-auto= update
8   -spring.jpa.hibernate.naming_strategy= org.hibernate.cfg.ImprovedNamingStrategy
9   -spring.jpa.database= MYSQL
10   -spring.jpa.show-sql= true
11   -
12   -#数据库连接池配置
13   -spring.datasource.driver-class-name= com.mysql.jdbc.Driver
14   -spring.datasource.url= jdbc:mysql://127.0.0.1/test_control?useUnicode=true&characterEncoding=utf-8&useSSL=false
15   -spring.datasource.username= root
16   -spring.datasource.password=
17   -
18   -#spring.datasource.driver-class-name= org.h2.Driver
19   -#spring.datasource.url= jdbc:h2:mem:bookstore;DB_CLOSE_ON_EXIT=FALSE
20   -#spring.datasource.username= sa
21   -#spring.datasource.password=
22   -
23   -spring.datasource.max-active=100
24   -spring.datasource.max-idle=8
25   -spring.datasource.min-idle=8
26   -spring.datasource.initial-size=5
27   -
28   -spring.datasource.test-on-borrow=true
29   -spring.datasource.test-on-connect=true
30   -spring.datasource.test-on-return=true
31   -spring.datasource.test-while-idle=true
32   -spring.datasource.validation-query=select 1
33   -
src/test/resources/datatools/config-scheduletest.properties deleted 100644 → 0
1   -# 配置数据导入导出用到的配置信息
2   -
3   -# 1、kettle配置文件路径(类路径)
4   -datatools.kettle_properties=/datatools/kettle.properties
5   -# 2、ktr文件通用配置变量(数据库连接,根据不同的环境需要修正)
6   -#数据库ip地址
7   -datatools.kvars_dbip=127.0.0.1
8   -#数据库用户名
9   -datatools.kvars_dbuname=root
10   -#数据库密码
11   -datatools.kvars_dbpwd=
12   -#数据库库名
13   -datatools.kvars_dbdname=qp_control
14   -
15   -# 3、上传数据配置信息
16   -# 上传文件目录配置(根据不同的环境需要修正)
17   -datatools.fileupload_dir=/Users/xu/resource/project_code/runtime_temp/bsth_control_u_d_files
18   -# ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正)
19   -datatools.trans_errordir=/Users/xu/resource/project_code/runtime_temp/bsth_control_u_d_files/erroroutput
20   -# 临时输出文件目录
21   -datatools.trans_tempdir=/Users/xu/resource/project_code/runtime_temp/bsth_control_u_d_files/temp
22   -# 模版文件目录
23   -datatools.trans_templatedir=/Users/xu/resource/project_code/runtime_temp/bsth_control_u_d_files/template
24   -
25   -##---------------------------- 导入数据ktr ----------------------------##
26   -# 车辆信息导入ktr转换
27   -datatools.cars_datainputktr=/datatools/ktrs/carsDataInput.ktr
28   -# 人员信息导入
29   -datatools.employees_datainputktr=/datatools/ktrs/employeesDataInput.ktr
30   -# 路牌信息导入
31   -datatools.guideboards_datainputktr=/datatools/ktrs/guideboardDataInput.ktr
32   -# 时刻表基础信息导入
33   -datatools.ttinfo_datainputktr=/datatools/ktrs/ttinfoDataInput.ktr
34   -# 时刻表明细信息导入(元数据)
35   -datatools.ttinfodetail_metadatainputktr=/datatools/ktrs/ttinfodetailDataInputMetaData.ktr
36   -# 时刻表明细编辑用数据
37   -datatools.ttinfodetail_foreditktr=/datatools/ktrs/ttinfodetailoutputforedit.ktr
38   -# 时刻表明细信息导入
39   -datatools.ttinfodetail_datainputktr=/datatools/ktrs/ttinfodetailDataInput.ktr
40   -# 时刻表明细信息导入2
41   -datatools.ttinfodetail_datainputktr2=/datatools/ktrs/ttinfodetailDataInput2.ktr
42   -
43   -# 车辆配置信息导入
44   -datatools.carsconfig_datainputktr=/datatools/ktrs/carsConfigDataInput.ktr
45   -# 人员配置信息导入
46   -datatools.employeesconfig_datainputktr=/datatools/ktrs/employeesConfigDataInput.ktr
47   -
48   -# 排版规则信息导入
49   -datatools.schedulerule_datainputktr=/datatools/ktrs/scheduleRuleDataInput.ktr
50   -
51   -# 4、数据导出配置信息
52   -# 导出数据文件目录配置(根据不同的环境需要修正)
53   -datatools.fileoutput_dir=/Users/xu/resource/project_code/runtime_temp/bsth_control_u_d_files
54   -
55   -##---------------------------- 导出数据ktr -----------------------------##
56   -# 车辆信息导出ktr转换
57   -datatools.cars_dataoutputktr=/datatools/ktrs/carsDataOutput.ktr
58   -# 人员信息导出ktr转换
59   -datatools.employees_dataoutputktr=/datatools/ktrs/employeesDataOutput.ktr
60   -# 时刻表导出元数据ktr转换
61   -datatools.ttinfodetail_metaoutput=/datatools/ktrs/ttinfodetailDataOutputMetaData.ktr
62   -# 时刻表导出数据ktr转换
63   -datatools.ttinfodetail_output=/datatools/ktrs/ttinfodetailDataOutput.ktr
64   -# 排版规则导出数据ktr转换
65   -datatools.schedulerule_output=/datatools/ktrs/scheduleRuleDataOutput.ktr
66   -
67   -# 车辆配置信息导出ktr转换
68   -datatools.carsconfig_dataoutputktr=/datatools/ktrs/carsConfigDataOutput.ktr
69   -# 人员配置信息导出ktr转换
70   -datatools.employeesconfig_dataoutputktr=/datatools/ktrs/employeesConfigDataOutput.ktr
71   -
72   -# 路牌信息导出
73   -datatools.guideboards_dataoutputktr=/datatools/ktrs/guideboardDataOutput.ktr
74   -
75   -
76   -# TODO:
77   -
78   -
79   -
80   -
81   -
82   -
83   -
84   -
src/test/resources/testdata/d1.xml deleted 100644 → 0
1   -<?xml version='1.0' encoding='UTF-8'?>
2   -<dataset>
3   - <!-- 用户数据 -->
4   - <bsth_c_sys_user id="1" user_name="admin" name="系统管理员" create_date="2000-01-01" enabled="1" last_login_date="2000-01-01" />
5   -
6   -</dataset>
7 0 \ No newline at end of file
src/test/resources/testdata/d2.xml deleted 100644 → 0
1   -<?xml version='1.0' encoding='UTF-8'?>
2   -<dataset>
3   - <!-- 用户(对应实体 SysUser) -->
4   - <bsth_c_sys_user id="1" user_name="admin" name="系统管理员" create_date="2000-01-01" enabled="1" last_login_date="2000-01-01" />
5   -
6   - <!-- 公司(对应实体 Business) -->
7   - <bsth_c_business id="1" business_name="公交公司" business_code="88" up_code="0" create_by="1" create_date="2000-01-01" update_by="1" update_date="2000-01-01" />
8   - <bsth_c_business id="2" business_name="金高公司" business_code="22" up_code="88" create_by="1" create_date="2000-01-01" update_by="1" update_date="2000-01-01" />
9   - <bsth_c_business id="3" business_name="杨高公司" business_code="05" up_code="88" create_by="1" create_date="2000-01-01" update_by="1" update_date="2000-01-01" />
10   - <bsth_c_business id="4" business_name="上南公司" business_code="55" up_code="88" create_by="1" create_date="2000-01-01" update_by="1" update_date="2000-01-01" />
11   - <bsth_c_business id="5" business_name="南汇公司" business_code="26" up_code="88" create_by="1" create_date="2000-01-01" update_by="1" update_date="2000-01-01" />
12   -
13   - <!-- 线路(对应实体 Line) -->
14   - <bsth_c_line id="1" name="测试线路1" line_code="l1" destroy="0" create_by="1" create_date="2000-01-01" update_by="1" update_date="2000-01-01" />
15   - <!-- 线路标准(对应实体 LineInformation) -->
16   - <bsth_c_line_information id="1" line="1" create_by="1" create_date="2000-01-01" update_by="1" update_date="2000-01-01" />
17   -
18   - <!-- 站点(对应实体 Station) -->
19   - <bsth_c_station id="1" station_name="站1" station_cod="#112233" create_by="1" create_date="2000-01-01" update_by="1" update_date="2000-01-01" />
20   - <bsth_c_station id="2" station_name="站2" station_cod="#223344" create_by="1" create_date="2000-01-01" update_by="1" update_date="2000-01-01" />
21   - <!-- 站点路由(对应实体 StationRoute)-->
22   - <bsth_c_stationroute id="1" line="1" station="1" station_name="上行起点站" station_mark="B" directions="0" destroy="0" create_by="1" create_date="2000-01-01" update_by="1" update_date="2000-01-01" />
23   - <bsth_c_stationroute id="2" line="1" station="2" station_name="上行终点站" station_mark="E" directions="0" destroy="0" create_by="1" create_date="2000-01-01" update_by="1" update_date="2000-01-01" />
24   - <bsth_c_stationroute id="3" line="1" station="2" station_name="下行起点站" station_mark="B" directions="1" destroy="0" create_by="1" create_date="2000-01-01" update_by="1" update_date="2000-01-01" />
25   - <bsth_c_stationroute id="4" line="1" station="1" station_name="下行终点站" station_mark="E" directions="1" destroy="0" create_by="1" create_date="2000-01-01" update_by="1" update_date="2000-01-01" />
26   -
27   - <!-- 停车场(对应实体) -->
28   -
29   - <!-- TODO -->
30   -
31   -</dataset>
32 0 \ No newline at end of file
src/test/resources/testdata/new.txt deleted 100644 → 0
1   -1、车辆配置,每辆车都可以配置单独的停车点及相关数据,并提供两种设置模式(早晚,复驶)
2   -2、规则管理,修改规则的界面图形化,更加方便修改
3   -3、时刻表管理,导入时刻表xls做严格数据判定,时刻表明细修改提供跟方便的图形化修改方式
4   -4、排班计划管理,提供每次排班的操作信息,时间段,所使用的时刻表,可以查看具体的排班明细(细化到班次)
5   - 生成排班时,提供详细的时刻表统计信息,提供两种排班模式(历史排班优先,规则优先)
6   -5、调度值勤日报,列出每天的基于线路,路牌的排班统计,可以更换车辆,人员
7 0 \ No newline at end of file
src/test/resources/testdata/problem.properties deleted 100644 → 0
1   -##1=时刻表明细导入,线路标准里所有的高峰低谷时间需要带入时刻表班次时间里,标准可以点击切换到线路标准界面
2   -##2=时刻表明细编辑功能,数据工具移到时刻表里,类似工具栏的样子
3   -3=时刻表导入,可以选一个已经存在的时刻表导入,而不是excel文件
4   -##4=所有的删除,作废,都要有提示框操作
5   -##5=排班计划错误提示,如果选的排班日期之前没有排班,提示错误,排班结果有重复与时刻表不符合,显示错误
6   -##6=调度执行日报,显示最近排班日期,修改操作强化
7   -7=警告功能,如时刻表选择相同的常规有效日,特殊有效日,车辆,人员配置重复等等
8   -##8=时刻表明细编辑,颜色覆盖冲突
9   -##9=下拉框貌似中文不能搜索
10   -10=时刻表明细编辑,环线,选上下行,上下的站点在下行站点列表里
11   -##11=人员基础信息导入问题,工号前要加公司代码
12   -##12=套跑规则嵌入到主排班规则中
13   -13=导入数据功能,需要加用户名
14   -14=路牌编号自动生成
15   -15=时刻表导入的时候表头后面不需要加数字
16   -##16=时间框中文
17   -##17=人员工号前公司编码自动加
18   -19=线路运营概览
19   -20=排班规则备注
20   -##21=时刻表,两点间空驶,算空驶
21   -22=搭班编码自动生成
22   -##23=时刻表明细修改终点站停驶(停止1个半小时以上)
23   -##24=线路标准里如果里程是0,用标准里程
24   -##25=规则导出的日期格式修正
25   -##26=人员录入,工号规则前加 "{公司编码}-"
26   -
27   -##27=调度执勤日报,换人后,工号前的-去掉
28   -##28=时刻表导出,元数据ktr转换站名匹配有问题
29   -##29=时刻编辑,超过70个班次,报错,改成150个班次
30   -##30=时刻表公里数 三位数
31   -
32   -31=规则修改,路牌范围,人员范围可以拖动
33   -##32=人员配置不存在的情况下,导入规则ktr,找不到的人员不添加,人员范围不存在的,规则不导入
34   -##33=时刻表明细班次,里添加,是否停驶选项(计算工时使用)
src/test/resources/testdata/test1.txt deleted 100644 → 0
1   -select * from jwgl_f_t_clxh_workflow_detail a where a.ID_LYSYLB = 36;
2   -
3   -select sum(amount - tl_amount) from jwgl_f_t_clxh_workflow_detail
4   -where
5   -to_date(statdateid, 'YYYYMMDD') >= to_date('20170301', 'YYYYMMDD')
6   -and to_date(statdateid, 'YYYYMMDD') <= to_date('20170331', 'YYYYMMDD')
7   -
8   -select * from JWGL_D_T_LYSYLB
9   -
10   -
11   -select
12   -statdateid statdate
13   -, ssjc gs
14   -, xl xl
15   -, zbh cl
16   -, b.SYLB1 || '-' || b.SYLB2 as lylb
17   -, (sum(amount) - sum(tl_amount)) ch
18   -from JWGL_F_T_CLXH_WORKFLOW_DETAIL a, JWGL_D_T_LYSYLB b
19   -where
20   -to_date(statdateid, 'YYYYMMDD') >= to_date('20170301', 'YYYYMMDD')
21   -and to_date(statdateid, 'YYYYMMDD') <= to_date('20170331', 'YYYYMMDD')
22   -and a.ID_LYSYLB = b.ID(+)
23   -group by
24   -statdateid
25   -, ssjc
26   -, xl
27   -, zbh
28   -, b.SYLB1 || '-' || b.SYLB2
29   -
30   --- part1
31   -
32   -select sum(ch) from
33   -(
34   -select
35   -statdateid statdate
36   -, ssjc gs
37   -, xl xl
38   -, zbh cl
39   -, b.SYLB1 || '-' || b.SYLB2 as lylb
40   -, (sum(amount) - sum(tl_amount)) ch
41   -from JWGL_F_T_CLXH_WORKFLOW_DETAIL a, JWGL_D_T_LYSYLB b
42   -where
43   -to_date(statdateid, 'YYYYMMDD') >= to_date('20170301', 'YYYYMMDD')
44   -and to_date(statdateid, 'YYYYMMDD') <= to_date('20170331', 'YYYYMMDD')
45   -and a.ID_LYSYLB = b.ID(+)
46   -group by
47   -statdateid
48   -, ssjc
49   -, xl
50   -, zbh
51   -, b.SYLB1 || '-' || b.SYLB2
52   -)
53   -where lylb in (
54   -'路救-路救',
55   -'小修-小修机工',
56   -'专项-安检',
57   -'专项-节检',
58   -'专项-水箱',
59   -'专项-电瓶',
60   -'小修-小修电工',
61   -'专项-电并',
62   -'小修-小修车身',
63   -'专项-镗固',
64   -'保养-一级保养',
65   -'小修-发动机',
66   -'专项-轮胎',
67   -'分摊-轮胎',
68   -'专项-润滑油',
69   -'总成-差变速',
70   -'总成-大泵',
71   -'总成-小总成',
72   -'总成-发动机',
73   -'保养-二级保养',
74   -'保养-三级保养',
75   -'整修-整修',
76   -'空调-保外',
77   -'空调-保内',
78   -'事故-事故'
79   -)
80   -
81   --- part2
82   -
83   -select sum(ch) from
84   -(
85   -select
86   -statdateid statdate
87   -, ssjc gs
88   -, xl xl
89   -, zbh cl
90   -, b.SYLB1 || '-' || b.SYLB2 as lylb
91   -, (sum(amount) - sum(tl_amount)) ch
92   -from JWGL_F_T_CLXH_WORKFLOW_DETAIL a, JWGL_D_T_LYSYLB b
93   -where
94   -to_date(statdateid, 'YYYYMMDD') >= to_date('20170301', 'YYYYMMDD')
95   -and to_date(statdateid, 'YYYYMMDD') <= to_date('20170331', 'YYYYMMDD')
96   -and a.ID_LYSYLB = b.ID(+)
97   -group by
98   -statdateid
99   -, ssjc
100   -, xl
101   -, zbh
102   -, b.SYLB1 || '-' || b.SYLB2
103   -)
104   -where lylb in(
105   -'分摊-镗固',
106   -'专项-机油',
107   -'分摊-机油',
108   -'总成-其它',
109   -'分摊-工具',
110   -'分摊-辅助料',
111   -'分摊-设备',
112   -'车间经费-车间经费'
113   -)
114   -
115   -
116   -
117   -
118   -
119   -
120   -
121   -
122   -
123   -
124   -
125   -
126   -
127   -
128   -
129   -
130   -
131   -
132   -
src/test/resources/testdata/test2.txt deleted 100644 → 0
1   -
2   -select * from JWGL_FR_T_CH_REPORT_DATA1;
3   -
4   -select * from JWGL_FR_T_CH_REPORT_DATA2;
5   -
6   --- sum part1
7   -
8   -select
9   -(
10   -sum(lj_lj) + sum(xx_xxjg) + sum(xx_xxdg) + sum(zx_db) + sum(xx_xxcs) + sum(zx_tg) + sum(by_b1) +
11   -sum(nvl(future_bx, 0)) + sum(xx_fdj) + sum(zx_lt) + sum(zx_rhy) + sum(zc_cbx) + sum(zc_db) + sum(zc_xzc) +
12   -sum(zc_fdj) + sum(by_b2) + sum(by_b3) + sum(nvl(future_wx_db, 0)) + sum(nvl(future_wxfy, 0)) + sum(nvl(future_ktwx, 0)) + sum(nvl(future_sx, 0)) +
13   -sum(nvl(future_dp, 0)) + sum(zx_zx) + sum(kt_bw) + sum(sg_sg)
14   -) as part1
15   -from JWGL_FR_T_CH_REPORT_DATA1
16   -where
17   -statdate >= to_date('20170301', 'YYYYMMDD')
18   -and statdate <= to_date('20170331', 'YYYYMMDD')
19   -
20   --- sum part2
21   -
22   -select
23   -(
24   -sum(zx_tg) + sum(jy) + sum(qt) + sum(zcfl) + sum(gj) + sum(sb) + sum(cjjf)
25   -) as part2
26   -from JWGL_FR_T_CH_REPORT_DATA2
27   -where statdate = to_date('20170331', 'YYYYMMDD')
28 0 \ No newline at end of file
src/test/resources/testdata/test3.txt deleted 100644 → 0
1   -select count(*) from bsth_c_s_sp_rule_rst
2   -
3   -show index from bsth_c_s_sp_rule_rst
4   -
5   -select * from bsth_c_s_sp_rule_rst t
6   -where not exists (select 1 from bsth_c_s_sp_rule_rst
7   -where create_date > t.create_date and schedule_date < '2017-04-17' )
8   -and t.xl_id = 10407 and t.schedule_date < '2017-04-17'
9   -
10   -show index from bsth_c_s_sp_rule_rst
11   -
12   -select * from bsth_c_s_sp_rule_rst
13   -where xl_id = 1
14   -
15   -select * from bsth_c_s_sp_rule_rst t
16   -where t.xl_id = 10407 and t.schedule_date < '2017-04-17'
17   -
18   -
19   -select count(distinct concat(xl_id ,schedule_date, create_date)) / count(*) from bsth_c_s_sp_rule_rst
20   -
21   -select * from bsth_c_s_sp_rule_rst a
22   -where exists (select 1 from
23   -(select t.rule_id as rid, max(t.schedule_date) as sd from bsth_c_s_sp_rule_rst t
24   -where t.xl_id = 10407 and t.schedule_date < '2017-04-17'
25   -group by t.rule_id) a2 where a.rule_id = rid and a.schedule_date = sd)
src/test/resources/testdata/test4.txt deleted 100644 → 0
1   -select count(*) from bsth_c_s_ttinfo_detail
2   -
3   -select * from bsth_c_s_ttinfo_detail
4   -
5   -select * from bsth_c_s_ttinfo_detail where zdz_code is null;
6   -
7   -select * from bsth_c_station;
8   -
9   -select * from bsth_c_car_park;
10   -
11   -update bsth_c_s_ttinfo_detail a
12   -set a.qdz_code = (select station_cod from bsth_c_station b where a.qdz = b.id)
13   -where a.bc_type <> 'out'
14   -
15   -update bsth_c_s_ttinfo_detail a
16   -set a.qdz_name = (select station_name from bsth_c_station b where a.qdz = b.id)
17   -where a.bc_type <> 'out'
18   -
19   -update bsth_c_s_ttinfo_detail a
20   -set a.zdz_code = (select station_cod from bsth_c_station b where a.zdz = b.id)
21   -where a.bc_type <> 'in'
22   -
23   -update bsth_c_s_ttinfo_detail a
24   -set a.zdz_name = (select station_name from bsth_c_station b where a.zdz = b.id)
25   -where a.bc_type <> 'in'
26   -
27   -update bsth_c_s_ttinfo_detail a
28   -set a.qdz_code = (select park_code from bsth_c_car_park b where a.tcc = b.id)
29   -where a.bc_type = 'out'
30   -
31   -update bsth_c_s_ttinfo_detail a
32   -set a.qdz_name = (select park_name from bsth_c_car_park b where a.tcc = b.id)
33   -where a.bc_type = 'out'
34   -
35   -update bsth_c_s_ttinfo_detail a
36   -set a.zdz_code = (select park_code from bsth_c_car_park b where a.tcc = b.id)
37   -where a.bc_type = 'in'
38   -
39   -update bsth_c_s_ttinfo_detail a
40   -set a.zdz_name = (select park_name from bsth_c_car_park b where a.tcc = b.id)
41   -where a.bc_type = 'in'
42   -
43   -commit;
44   -
45   -
46   -
src/test/resources/testdata/test5.txt deleted 100644 → 0
1   -update bsth_c_s_sp_info a
2   -set a.schedule_plan = (
3   -select sp_id from bsth_c_s_sp_r_info b where a.id = b.sp_info_id
4   -)
5   -where a.schedule_plan is null
6   -
7   -select count(*) from bsth_c_s_sp_info
8   -where schedule_plan is null
9 0 \ No newline at end of file
src/test/resources/testdata/test6.txt deleted 100644 → 0
1   -select * from bsth_c_s_sp_rule_rst;
2   -
3   -select * from bsth_c_s_sp_rule_rst
4   -where qyrq is null;
5   -
6   -update bsth_c_s_sp_rule_rst a
7   -set a.qyrq = (select qyrq from bsth_c_s_sr1_flat where id = a.rule_id)
8   -where a.qyrq is null;
9   -
10   -select * from bsth_c_s_sp_rule_rst
11   -where origingidindex is null;
12   -
13   -update bsth_c_s_sp_rule_rst a
14   -set a.origingidindex = (select lp_start from bsth_c_s_sr1_flat where id = a.rule_id)
15   -where a.origingidindex is null;
16   -
17   -970
18   -789
19   -604
20   -985
21   -北蔡2路
22   -1048
23   -1118
24   -上南二分通勤
25   -
26   -
27   --Xms128M -Xmx1024M -XX:PermSize=64M -XX:MaxPermSize=128M
28   -
29   -1118
30   -572康桥
31   -83