Commit 1cd873841de7dcc920fbcff2ed5e504ec909f14b
1 parent
85d31a80
Update
Showing
13 changed files
with
1566 additions
and
802 deletions
src/main/java/com/bsth/entity/schedule/SchedulePlan.java
| @@ -2,6 +2,7 @@ package com.bsth.entity.schedule; | @@ -2,6 +2,7 @@ package com.bsth.entity.schedule; | ||
| 2 | 2 | ||
| 3 | import com.bsth.entity.Line; | 3 | import com.bsth.entity.Line; |
| 4 | import com.fasterxml.jackson.annotation.JsonIgnore; | 4 | import com.fasterxml.jackson.annotation.JsonIgnore; |
| 5 | +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; | ||
| 5 | import org.apache.commons.lang3.BooleanUtils; | 6 | import org.apache.commons.lang3.BooleanUtils; |
| 6 | 7 | ||
| 7 | import javax.persistence.*; | 8 | import javax.persistence.*; |
| @@ -21,6 +22,7 @@ import java.util.List; | @@ -21,6 +22,7 @@ import java.util.List; | ||
| 21 | @NamedAttributeNode("xl"), | 22 | @NamedAttributeNode("xl"), |
| 22 | }) | 23 | }) |
| 23 | }) | 24 | }) |
| 25 | +@JsonIgnoreProperties(value={"hibernateLazyInitializer","handler","fieldHandler"}) | ||
| 24 | public class SchedulePlan extends BEntity { | 26 | public class SchedulePlan extends BEntity { |
| 25 | 27 | ||
| 26 | /** 主键Id */ | 28 | /** 主键Id */ |
src/main/java/com/bsth/entity/schedule/SchedulePlanInfo.java
| 1 | package com.bsth.entity.schedule; | 1 | package com.bsth.entity.schedule; |
| 2 | 2 | ||
| 3 | import com.bsth.entity.Line; | 3 | import com.bsth.entity.Line; |
| 4 | -import com.bsth.entity.sys.SysUser; | ||
| 5 | import com.bsth.service.schedule.rules.rerun.RerunRule_input; | 4 | import com.bsth.service.schedule.rules.rerun.RerunRule_input; |
| 6 | import com.bsth.service.schedule.rules.shiftloop.ScheduleResult_output; | 5 | import com.bsth.service.schedule.rules.shiftloop.ScheduleResult_output; |
| 7 | import org.apache.commons.lang3.StringUtils; | 6 | import org.apache.commons.lang3.StringUtils; |
| @@ -20,7 +19,7 @@ import java.util.List; | @@ -20,7 +19,7 @@ import java.util.List; | ||
| 20 | */ | 19 | */ |
| 21 | @Entity | 20 | @Entity |
| 22 | @Table(name = "bsth_c_s_sp_info") | 21 | @Table(name = "bsth_c_s_sp_info") |
| 23 | -public class SchedulePlanInfo { | 22 | +public class SchedulePlanInfo extends BEntity { |
| 24 | 23 | ||
| 25 | /** 主键Id */ | 24 | /** 主键Id */ |
| 26 | @Id | 25 | @Id |
| @@ -138,20 +137,6 @@ public class SchedulePlanInfo { | @@ -138,20 +137,6 @@ public class SchedulePlanInfo { | ||
| 138 | private String remark; | 137 | private String remark; |
| 139 | 138 | ||
| 140 | 139 | ||
| 141 | - /** 创建人 */ | ||
| 142 | - @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY) | ||
| 143 | - private SysUser createBy; | ||
| 144 | - /** 修改人 */ | ||
| 145 | - @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY) | ||
| 146 | - private SysUser updateBy; | ||
| 147 | - /** 创建日期 */ | ||
| 148 | - @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP") | ||
| 149 | - private Date createDate; | ||
| 150 | - /** 修改日期 */ | ||
| 151 | - @Column(name = "update_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP") | ||
| 152 | - private Date updateDate; | ||
| 153 | - | ||
| 154 | - | ||
| 155 | // @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY) | 140 | // @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY) |
| 156 | // @JoinTable( | 141 | // @JoinTable( |
| 157 | // name = "bsth_c_s_sp_r_info", | 142 | // name = "bsth_c_s_sp_r_info", |
| @@ -468,10 +453,10 @@ public class SchedulePlanInfo { | @@ -468,10 +453,10 @@ public class SchedulePlanInfo { | ||
| 468 | if (this.ttInfoName != null) ps.setString(34, this.ttInfoName); else ps.setNull(34, Types.VARCHAR); | 453 | if (this.ttInfoName != null) ps.setString(34, this.ttInfoName); else ps.setNull(34, Types.VARCHAR); |
| 469 | if (this.remark != null) ps.setString(35, this.remark); else ps.setNull(35, Types.VARCHAR); | 454 | if (this.remark != null) ps.setString(35, this.remark); else ps.setNull(35, Types.VARCHAR); |
| 470 | if (this.schedulePlan != null) ps.setLong(36, this.schedulePlan.getId()); else ps.setNull(36, Types.BIGINT); | 455 | if (this.schedulePlan != null) ps.setLong(36, this.schedulePlan.getId()); else ps.setNull(36, Types.BIGINT); |
| 471 | - if (this.createBy != null) ps.setInt(37, this.createBy.getId()); else ps.setNull(37, Types.INTEGER); | ||
| 472 | - if (this.updateBy != null) ps.setInt(38, this.updateBy.getId()); else ps.setNull(38, Types.INTEGER); | ||
| 473 | - if (this.createDate != null) ps.setTimestamp(39, new java.sql.Timestamp(this.createDate.getTime())); else ps.setNull(39, Types.TIMESTAMP); | ||
| 474 | - if (this.updateDate != null) ps.setTimestamp(40, new java.sql.Timestamp(this.updateDate.getTime())); else ps.setNull(40, Types.TIMESTAMP); | 456 | + if (this.getCreateBy() != null) ps.setInt(37, this.getCreateBy().getId()); else ps.setNull(37, Types.INTEGER); |
| 457 | + if (this.getUpdateBy() != null) ps.setInt(38, this.getUpdateBy().getId()); else ps.setNull(38, Types.INTEGER); | ||
| 458 | + if (this.getCreateDate() != null) ps.setTimestamp(39, new java.sql.Timestamp(this.getCreateDate().getTime())); else ps.setNull(39, Types.TIMESTAMP); | ||
| 459 | + if (this.getUpdateDate() != null) ps.setTimestamp(40, new java.sql.Timestamp(this.getUpdateDate().getTime())); else ps.setNull(40, Types.TIMESTAMP); | ||
| 475 | } | 460 | } |
| 476 | 461 | ||
| 477 | public Long getId() { | 462 | public Long getId() { |
| @@ -762,38 +747,6 @@ public class SchedulePlanInfo { | @@ -762,38 +747,6 @@ public class SchedulePlanInfo { | ||
| 762 | this.remark = remark; | 747 | this.remark = remark; |
| 763 | } | 748 | } |
| 764 | 749 | ||
| 765 | - public SysUser getCreateBy() { | ||
| 766 | - return createBy; | ||
| 767 | - } | ||
| 768 | - | ||
| 769 | - public void setCreateBy(SysUser createBy) { | ||
| 770 | - this.createBy = createBy; | ||
| 771 | - } | ||
| 772 | - | ||
| 773 | - public SysUser getUpdateBy() { | ||
| 774 | - return updateBy; | ||
| 775 | - } | ||
| 776 | - | ||
| 777 | - public void setUpdateBy(SysUser updateBy) { | ||
| 778 | - this.updateBy = updateBy; | ||
| 779 | - } | ||
| 780 | - | ||
| 781 | - public Date getCreateDate() { | ||
| 782 | - return createDate; | ||
| 783 | - } | ||
| 784 | - | ||
| 785 | - public void setCreateDate(Date createDate) { | ||
| 786 | - this.createDate = createDate; | ||
| 787 | - } | ||
| 788 | - | ||
| 789 | - public Date getUpdateDate() { | ||
| 790 | - return updateDate; | ||
| 791 | - } | ||
| 792 | - | ||
| 793 | - public void setUpdateDate(Date updateDate) { | ||
| 794 | - this.updateDate = updateDate; | ||
| 795 | - } | ||
| 796 | - | ||
| 797 | public SchedulePlan getSchedulePlan() { | 750 | public SchedulePlan getSchedulePlan() { |
| 798 | return schedulePlan; | 751 | return schedulePlan; |
| 799 | } | 752 | } |
src/main/java/com/bsth/service/schedule/SchedulePlanInfoService.java
| @@ -164,7 +164,7 @@ public interface SchedulePlanInfoService extends BService<SchedulePlanInfo, Long | @@ -164,7 +164,7 @@ public interface SchedulePlanInfoService extends BService<SchedulePlanInfo, Long | ||
| 164 | this.spyGhs.addAll(Arrays.asList(spyGhs_temp.split(","))); | 164 | this.spyGhs.addAll(Arrays.asList(spyGhs_temp.split(","))); |
| 165 | } | 165 | } |
| 166 | 166 | ||
| 167 | - this.updateDate = new Date(rs.getDate("updateDate").getTime()); | 167 | + this.updateDate = new Date(rs.getTimestamp("updateDate").getTime()); |
| 168 | this.updateByName = rs.getString("updateUserName"); | 168 | this.updateByName = rs.getString("updateUserName"); |
| 169 | this.ttInfoName = rs.getString("ttInfoName"); | 169 | this.ttInfoName = rs.getString("ttInfoName"); |
| 170 | 170 |
src/main/resources/datatools/ktrs/ttinfodetailDataOutputMetaData.ktr
| 1 | -<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | -<transformation> | ||
| 3 | - <info> | ||
| 4 | - <name>时刻表明细导出元数据</name> | ||
| 5 | - <description/> | ||
| 6 | - <extended_description/> | ||
| 7 | - <trans_version/> | ||
| 8 | - <trans_type>Normal</trans_type> | ||
| 9 | - <trans_status>0</trans_status> | ||
| 10 | - <directory>/</directory> | ||
| 11 | - <parameters> | ||
| 12 | - <parameter> | ||
| 13 | - <name>filepath</name> | ||
| 14 | - <default_value>/Users/xu/resource/project_code/runtime_temp/bsth_control_u_d_files/ttinfodetail_test.xls</default_value> | ||
| 15 | - <description>时刻表excel导出文件路径名</description> | ||
| 16 | - </parameter> | ||
| 17 | - <parameter> | ||
| 18 | - <name>injectktrfile</name> | ||
| 19 | - <default_value>/Users/xu/resource/project_code/bsth_project/bsth_control/src/main/resources/datatools/ktrs/ttinfodetailDataOutput.ktr</default_value> | ||
| 20 | - <description>注入元数据的ktr文件</description> | ||
| 21 | - </parameter> | ||
| 22 | - <parameter> | ||
| 23 | - <name>ttinfoid</name> | ||
| 24 | - <default_value>56</default_value> | ||
| 25 | - <description>时刻表id</description> | ||
| 26 | - </parameter> | ||
| 27 | - </parameters> | ||
| 28 | - <log> | ||
| 29 | -<trans-log-table><connection/> | ||
| 30 | -<schema/> | ||
| 31 | -<table/> | ||
| 32 | -<size_limit_lines/> | ||
| 33 | -<interval/> | ||
| 34 | -<timeout_days/> | ||
| 35 | -<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> | ||
| 36 | -<perf-log-table><connection/> | ||
| 37 | -<schema/> | ||
| 38 | -<table/> | ||
| 39 | -<interval/> | ||
| 40 | -<timeout_days/> | ||
| 41 | -<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> | ||
| 42 | -<channel-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>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> | ||
| 47 | -<step-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>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> | ||
| 52 | -<metrics-log-table><connection/> | ||
| 53 | -<schema/> | ||
| 54 | -<table/> | ||
| 55 | -<timeout_days/> | ||
| 56 | -<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> | ||
| 57 | - </log> | ||
| 58 | - <maxdate> | ||
| 59 | - <connection/> | ||
| 60 | - <table/> | ||
| 61 | - <field/> | ||
| 62 | - <offset>0.0</offset> | ||
| 63 | - <maxdiff>0.0</maxdiff> | ||
| 64 | - </maxdate> | ||
| 65 | - <size_rowset>10000</size_rowset> | ||
| 66 | - <sleep_time_empty>50</sleep_time_empty> | ||
| 67 | - <sleep_time_full>50</sleep_time_full> | ||
| 68 | - <unique_connections>N</unique_connections> | ||
| 69 | - <feedback_shown>Y</feedback_shown> | ||
| 70 | - <feedback_size>50000</feedback_size> | ||
| 71 | - <using_thread_priorities>Y</using_thread_priorities> | ||
| 72 | - <shared_objects_file/> | ||
| 73 | - <capture_step_performance>N</capture_step_performance> | ||
| 74 | - <step_performance_capturing_delay>1000</step_performance_capturing_delay> | ||
| 75 | - <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit> | ||
| 76 | - <dependencies> | ||
| 77 | - </dependencies> | ||
| 78 | - <partitionschemas> | ||
| 79 | - </partitionschemas> | ||
| 80 | - <slaveservers> | ||
| 81 | - </slaveservers> | ||
| 82 | - <clusterschemas> | ||
| 83 | - </clusterschemas> | ||
| 84 | - <created_user>-</created_user> | ||
| 85 | - <created_date>2016/11/15 15:02:41.624</created_date> | ||
| 86 | - <modified_user>-</modified_user> | ||
| 87 | - <modified_date>2016/11/15 15:02:41.624</modified_date> | ||
| 88 | - <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA=</key_for_session_key> | ||
| 89 | - <is_key_private>N</is_key_private> | ||
| 90 | - </info> | ||
| 91 | - <notepads> | ||
| 92 | - <notepad> | ||
| 93 | - <note>这里有些问题
在window2012的环境下,
MySql数据库查询中如果返回中文内容的字段,这个内容乱码
解决办法,就是数据库查询全部缓存,就不乱码
linux环境下没问题</note> | ||
| 94 | - <xloc>165</xloc> | ||
| 95 | - <yloc>402</yloc> | ||
| 96 | - <width>333</width> | ||
| 97 | - <heigth>90</heigth> | ||
| 98 | - <fontname>YaHei Consolas Hybrid</fontname> | ||
| 99 | - <fontsize>12</fontsize> | ||
| 100 | - <fontbold>N</fontbold> | ||
| 101 | - <fontitalic>N</fontitalic> | ||
| 102 | - <fontcolorred>0</fontcolorred> | ||
| 103 | - <fontcolorgreen>0</fontcolorgreen> | ||
| 104 | - <fontcolorblue>0</fontcolorblue> | ||
| 105 | - <backgroundcolorred>255</backgroundcolorred> | ||
| 106 | - <backgroundcolorgreen>205</backgroundcolorgreen> | ||
| 107 | - <backgroundcolorblue>112</backgroundcolorblue> | ||
| 108 | - <bordercolorred>100</bordercolorred> | ||
| 109 | - <bordercolorgreen>100</bordercolorgreen> | ||
| 110 | - <bordercolorblue>100</bordercolorblue> | ||
| 111 | - <drawshadow>Y</drawshadow> | ||
| 112 | - </notepad> | ||
| 113 | - </notepads> | ||
| 114 | - <connection> | ||
| 115 | - <name>bus_control_variable</name> | ||
| 116 | - <server>${v_db_ip}</server> | ||
| 117 | - <type>MYSQL</type> | ||
| 118 | - <access>Native</access> | ||
| 119 | - <database>${v_db_dname}</database> | ||
| 120 | - <port>3306</port> | ||
| 121 | - <username>${v_db_uname}</username> | ||
| 122 | - <password>${v_db_pwd}</password> | ||
| 123 | - <servername/> | ||
| 124 | - <data_tablespace/> | ||
| 125 | - <index_tablespace/> | ||
| 126 | - <attributes> | ||
| 127 | - <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute> | ||
| 128 | - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute> | ||
| 129 | - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute> | ||
| 130 | - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 131 | - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 132 | - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 133 | - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute> | ||
| 134 | - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 135 | - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 136 | - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute> | ||
| 137 | - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 138 | - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 139 | - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 140 | - </attributes> | ||
| 141 | - </connection> | ||
| 142 | - <connection> | ||
| 143 | - <name>bus_control_公司_201</name> | ||
| 144 | - <server>localhost</server> | ||
| 145 | - <type>MYSQL</type> | ||
| 146 | - <access>Native</access> | ||
| 147 | - <database>control</database> | ||
| 148 | - <port>3306</port> | ||
| 149 | - <username>root</username> | ||
| 150 | - <password>Encrypted </password> | ||
| 151 | - <servername/> | ||
| 152 | - <data_tablespace/> | ||
| 153 | - <index_tablespace/> | ||
| 154 | - <attributes> | ||
| 155 | - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute> | ||
| 156 | - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute> | ||
| 157 | - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 158 | - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 159 | - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 160 | - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute> | ||
| 161 | - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 162 | - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 163 | - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute> | ||
| 164 | - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 165 | - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 166 | - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 167 | - </attributes> | ||
| 168 | - </connection> | ||
| 169 | - <connection> | ||
| 170 | - <name>bus_control_本机</name> | ||
| 171 | - <server>localhost</server> | ||
| 172 | - <type>MYSQL</type> | ||
| 173 | - <access>Native</access> | ||
| 174 | - <database>control</database> | ||
| 175 | - <port>3306</port> | ||
| 176 | - <username>root</username> | ||
| 177 | - <password>Encrypted </password> | ||
| 178 | - <servername/> | ||
| 179 | - <data_tablespace/> | ||
| 180 | - <index_tablespace/> | ||
| 181 | - <attributes> | ||
| 182 | - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute> | ||
| 183 | - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute> | ||
| 184 | - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 185 | - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 186 | - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 187 | - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute> | ||
| 188 | - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 189 | - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 190 | - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute> | ||
| 191 | - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 192 | - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 193 | - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 194 | - </attributes> | ||
| 195 | - </connection> | ||
| 196 | - <connection> | ||
| 197 | - <name>xlab_mysql_youle</name> | ||
| 198 | - <server>101.231.124.8</server> | ||
| 199 | - <type>MYSQL</type> | ||
| 200 | - <access>Native</access> | ||
| 201 | - <database>xlab_youle</database> | ||
| 202 | - <port>45687</port> | ||
| 203 | - <username>xlab-youle</username> | ||
| 204 | - <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password> | ||
| 205 | - <servername/> | ||
| 206 | - <data_tablespace/> | ||
| 207 | - <index_tablespace/> | ||
| 208 | - <attributes> | ||
| 209 | - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute> | ||
| 210 | - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute> | ||
| 211 | - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 212 | - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 213 | - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 214 | - <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute> | ||
| 215 | - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 216 | - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 217 | - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute> | ||
| 218 | - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute> | ||
| 219 | - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute> | ||
| 220 | - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 221 | - </attributes> | ||
| 222 | - </connection> | ||
| 223 | - <connection> | ||
| 224 | - <name>xlab_mysql_youle(本机)</name> | ||
| 225 | - <server>localhost</server> | ||
| 226 | - <type>MYSQL</type> | ||
| 227 | - <access>Native</access> | ||
| 228 | - <database>xlab_youle</database> | ||
| 229 | - <port>3306</port> | ||
| 230 | - <username>root</username> | ||
| 231 | - <password>Encrypted </password> | ||
| 232 | - <servername/> | ||
| 233 | - <data_tablespace/> | ||
| 234 | - <index_tablespace/> | ||
| 235 | - <attributes> | ||
| 236 | - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute> | ||
| 237 | - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute> | ||
| 238 | - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 239 | - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 240 | - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 241 | - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute> | ||
| 242 | - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 243 | - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 244 | - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute> | ||
| 245 | - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute> | ||
| 246 | - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute> | ||
| 247 | - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 248 | - </attributes> | ||
| 249 | - </connection> | ||
| 250 | - <connection> | ||
| 251 | - <name>xlab_youle</name> | ||
| 252 | - <server/> | ||
| 253 | - <type>MYSQL</type> | ||
| 254 | - <access>JNDI</access> | ||
| 255 | - <database>xlab_youle</database> | ||
| 256 | - <port>1521</port> | ||
| 257 | - <username/> | ||
| 258 | - <password>Encrypted </password> | ||
| 259 | - <servername/> | ||
| 260 | - <data_tablespace/> | ||
| 261 | - <index_tablespace/> | ||
| 262 | - <attributes> | ||
| 263 | - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 264 | - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 265 | - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 266 | - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute> | ||
| 267 | - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 268 | - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 269 | - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute> | ||
| 270 | - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 271 | - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 272 | - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 273 | - </attributes> | ||
| 274 | - </connection> | ||
| 275 | - <order> | ||
| 276 | - <hop> <from>时刻表明细分组数据</from><to>过滤记录</to><enabled>Y</enabled> </hop> | ||
| 277 | - <hop> <from>过滤记录</from><to>计算站点</to><enabled>Y</enabled> </hop> | ||
| 278 | - <hop> <from>计算站点</from><to>查找站点名</to><enabled>Y</enabled> </hop> | ||
| 279 | - <hop> <from>查找站点名</from><to>计算反范式元数据</to><enabled>Y</enabled> </hop> | ||
| 280 | - <hop> <from>查找站点名</from><to>计算excel输出字段</to><enabled>Y</enabled> </hop> | ||
| 281 | - <hop> <from>计算excel输出字段</from><to>字段选择</to><enabled>Y</enabled> </hop> | ||
| 282 | - <hop> <from>字段选择</from><to>排序记录</to><enabled>Y</enabled> </hop> | ||
| 283 | - <hop> <from>生成路牌字段</from><to>排序记录</to><enabled>Y</enabled> </hop> | ||
| 284 | - <hop> <from>计算反范式元数据</from><to>ETL元数据注入</to><enabled>Y</enabled> </hop> | ||
| 285 | - <hop> <from>排序记录</from><to>ETL元数据注入</to><enabled>Y</enabled> </hop> | ||
| 286 | - </order> | ||
| 287 | - <step> | ||
| 288 | - <name>ETL元数据注入</name> | ||
| 289 | - <type>MetaInject</type> | ||
| 290 | - <description/> | ||
| 291 | - <distribute>Y</distribute> | ||
| 292 | - <custom_distribution/> | ||
| 293 | - <copies>1</copies> | ||
| 294 | - <partitioning> | ||
| 295 | - <method>none</method> | ||
| 296 | - <schema_name/> | ||
| 297 | - </partitioning> | ||
| 298 | - <specification_method>filename</specification_method> | ||
| 299 | - <trans_object_id/> | ||
| 300 | - <trans_name/> | ||
| 301 | - <filename>${injectktrfile}</filename> | ||
| 302 | - <directory_path/> | ||
| 303 | - <source_step/> | ||
| 304 | - <source_output_fields> </source_output_fields> <target_file/> | ||
| 305 | - <no_execution>N</no_execution> | ||
| 306 | - <stream_source_step/> | ||
| 307 | - <stream_target_step/> | ||
| 308 | - <mappings> <mapping> <target_step_name>列转行</target_step_name> | ||
| 309 | - <target_attribute_key>TARGET_TYPE</target_attribute_key> | ||
| 310 | - <target_detail>Y</target_detail> | ||
| 311 | - <source_step>计算反范式元数据</source_step> | ||
| 312 | - <source_field>targettype</source_field> | ||
| 313 | - </mapping> <mapping> <target_step_name>Excel输出</target_step_name> | ||
| 314 | - <target_attribute_key>TYPE</target_attribute_key> | ||
| 315 | - <target_detail>Y</target_detail> | ||
| 316 | - <source_step>排序记录</source_step> | ||
| 317 | - <source_field>fieldtype</source_field> | ||
| 318 | - </mapping> <mapping> <target_step_name>列转行</target_step_name> | ||
| 319 | - <target_attribute_key>NAME</target_attribute_key> | ||
| 320 | - <target_detail>Y</target_detail> | ||
| 321 | - <source_step>计算反范式元数据</source_step> | ||
| 322 | - <source_field>valuefieldname</source_field> | ||
| 323 | - </mapping> <mapping> <target_step_name>Excel输出</target_step_name> | ||
| 324 | - <target_attribute_key>NAME</target_attribute_key> | ||
| 325 | - <target_detail>Y</target_detail> | ||
| 326 | - <source_step>排序记录</source_step> | ||
| 327 | - <source_field>fieldname</source_field> | ||
| 328 | - </mapping> <mapping> <target_step_name>列转行</target_step_name> | ||
| 329 | - <target_attribute_key>TARGET_NAME</target_attribute_key> | ||
| 330 | - <target_detail>Y</target_detail> | ||
| 331 | - <source_step>计算反范式元数据</source_step> | ||
| 332 | - <source_field>targetfieldname</source_field> | ||
| 333 | - </mapping> <mapping> <target_step_name>列转行</target_step_name> | ||
| 334 | - <target_attribute_key>KEY_VALUE</target_attribute_key> | ||
| 335 | - <target_detail>Y</target_detail> | ||
| 336 | - <source_step>计算反范式元数据</source_step> | ||
| 337 | - <source_field>keyvalue</source_field> | ||
| 338 | - </mapping> </mappings> <cluster_schema/> | ||
| 339 | - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 340 | - <xloc>640</xloc> | ||
| 341 | - <yloc>64</yloc> | ||
| 342 | - <draw>Y</draw> | ||
| 343 | - </GUI> | ||
| 344 | - </step> | ||
| 345 | - | ||
| 346 | - <step> | ||
| 347 | - <name>字段选择</name> | ||
| 348 | - <type>SelectValues</type> | ||
| 349 | - <description/> | ||
| 350 | - <distribute>Y</distribute> | ||
| 351 | - <custom_distribution/> | ||
| 352 | - <copies>1</copies> | ||
| 353 | - <partitioning> | ||
| 354 | - <method>none</method> | ||
| 355 | - <schema_name/> | ||
| 356 | - </partitioning> | ||
| 357 | - <fields> <field> <name>fieldname</name> | ||
| 358 | - <rename/> | ||
| 359 | - <length>-2</length> | ||
| 360 | - <precision>-2</precision> | ||
| 361 | - </field> <field> <name>fieldtype</name> | ||
| 362 | - <rename/> | ||
| 363 | - <length>-2</length> | ||
| 364 | - <precision>-2</precision> | ||
| 365 | - </field> <field> <name>fcno</name> | ||
| 366 | - <rename/> | ||
| 367 | - <length>-2</length> | ||
| 368 | - <precision>-2</precision> | ||
| 369 | - </field> <select_unspecified>N</select_unspecified> | ||
| 370 | - </fields> <cluster_schema/> | ||
| 371 | - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 372 | - <xloc>533</xloc> | ||
| 373 | - <yloc>325</yloc> | ||
| 374 | - <draw>Y</draw> | ||
| 375 | - </GUI> | ||
| 376 | - </step> | ||
| 377 | - | ||
| 378 | - <step> | ||
| 379 | - <name>排序记录</name> | ||
| 380 | - <type>SortRows</type> | ||
| 381 | - <description/> | ||
| 382 | - <distribute>Y</distribute> | ||
| 383 | - <custom_distribution/> | ||
| 384 | - <copies>1</copies> | ||
| 385 | - <partitioning> | ||
| 386 | - <method>none</method> | ||
| 387 | - <schema_name/> | ||
| 388 | - </partitioning> | ||
| 389 | - <directory>%%java.io.tmpdir%%</directory> | ||
| 390 | - <prefix>out</prefix> | ||
| 391 | - <sort_size>1000000</sort_size> | ||
| 392 | - <free_memory/> | ||
| 393 | - <compress>N</compress> | ||
| 394 | - <compress_variable/> | ||
| 395 | - <unique_rows>N</unique_rows> | ||
| 396 | - <fields> | ||
| 397 | - <field> | ||
| 398 | - <name>fcno</name> | ||
| 399 | - <ascending>Y</ascending> | ||
| 400 | - <case_sensitive>N</case_sensitive> | ||
| 401 | - <presorted>N</presorted> | ||
| 402 | - </field> | ||
| 403 | - </fields> | ||
| 404 | - <cluster_schema/> | ||
| 405 | - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 406 | - <xloc>642</xloc> | ||
| 407 | - <yloc>325</yloc> | ||
| 408 | - <draw>Y</draw> | ||
| 409 | - </GUI> | ||
| 410 | - </step> | ||
| 411 | - | ||
| 412 | - <step> | ||
| 413 | - <name>时刻表明细分组数据</name> | ||
| 414 | - <type>TableInput</type> | ||
| 415 | - <description/> | ||
| 416 | - <distribute>Y</distribute> | ||
| 417 | - <custom_distribution/> | ||
| 418 | - <copies>1</copies> | ||
| 419 | - <partitioning> | ||
| 420 | - <method>none</method> | ||
| 421 | - <schema_name/> | ||
| 422 | - </partitioning> | ||
| 423 | - <connection>bus_control_variable</connection> | ||
| 424 | - <sql>select 
fcno
, min(xl_dir) xl_dir
,min(qdz) qdz
,min(zdz) zdz
,bc_type 
from bsth_c_s_ttinfo_detail
where ttinfo = ${ttinfoid}
group by fcno,bc_type</sql> | ||
| 425 | - <limit>0</limit> | ||
| 426 | - <lookup/> | ||
| 427 | - <execute_each_row>N</execute_each_row> | ||
| 428 | - <variables_active>Y</variables_active> | ||
| 429 | - <lazy_conversion_active>N</lazy_conversion_active> | ||
| 430 | - <cluster_schema/> | ||
| 431 | - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 432 | - <xloc>56</xloc> | ||
| 433 | - <yloc>185</yloc> | ||
| 434 | - <draw>Y</draw> | ||
| 435 | - </GUI> | ||
| 436 | - </step> | ||
| 437 | - | ||
| 438 | - <step> | ||
| 439 | - <name>查找站点名</name> | ||
| 440 | - <type>DBLookup</type> | ||
| 441 | - <description/> | ||
| 442 | - <distribute>N</distribute> | ||
| 443 | - <custom_distribution/> | ||
| 444 | - <copies>1</copies> | ||
| 445 | - <partitioning> | ||
| 446 | - <method>none</method> | ||
| 447 | - <schema_name/> | ||
| 448 | - </partitioning> | ||
| 449 | - <connection>bus_control_variable</connection> | ||
| 450 | - <cache>Y</cache> | ||
| 451 | - <cache_load_all>Y</cache_load_all> | ||
| 452 | - <cache_size>0</cache_size> | ||
| 453 | - <lookup> | ||
| 454 | - <schema/> | ||
| 455 | - <table>bsth_c_stationroute</table> | ||
| 456 | - <orderby/> | ||
| 457 | - <fail_on_multiple>N</fail_on_multiple> | ||
| 458 | - <eat_row_on_failure>N</eat_row_on_failure> | ||
| 459 | - <key> | ||
| 460 | - <name>zd</name> | ||
| 461 | - <field>station</field> | ||
| 462 | - <condition>=</condition> | ||
| 463 | - <name2/> | ||
| 464 | - </key> | ||
| 465 | - <key> | ||
| 466 | - <name>xl_dir</name> | ||
| 467 | - <field>directions</field> | ||
| 468 | - <condition>=</condition> | ||
| 469 | - <name2/> | ||
| 470 | - </key> | ||
| 471 | - <value> | ||
| 472 | - <name>station_name</name> | ||
| 473 | - <rename>zdname</rename> | ||
| 474 | - <default/> | ||
| 475 | - <type>String</type> | ||
| 476 | - </value> | ||
| 477 | - </lookup> | ||
| 478 | - <cluster_schema/> | ||
| 479 | - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 480 | - <xloc>410</xloc> | ||
| 481 | - <yloc>191</yloc> | ||
| 482 | - <draw>Y</draw> | ||
| 483 | - </GUI> | ||
| 484 | - </step> | ||
| 485 | - | ||
| 486 | - <step> | ||
| 487 | - <name>生成路牌字段</name> | ||
| 488 | - <type>RowGenerator</type> | ||
| 489 | - <description/> | ||
| 490 | - <distribute>Y</distribute> | ||
| 491 | - <custom_distribution/> | ||
| 492 | - <copies>1</copies> | ||
| 493 | - <partitioning> | ||
| 494 | - <method>none</method> | ||
| 495 | - <schema_name/> | ||
| 496 | - </partitioning> | ||
| 497 | - <fields> | ||
| 498 | - <field> | ||
| 499 | - <name>fieldname</name> | ||
| 500 | - <type>String</type> | ||
| 501 | - <format/> | ||
| 502 | - <currency/> | ||
| 503 | - <decimal/> | ||
| 504 | - <group/> | ||
| 505 | - <nullif>路牌</nullif> | ||
| 506 | - <length>-1</length> | ||
| 507 | - <precision>-1</precision> | ||
| 508 | - <set_empty_string>N</set_empty_string> | ||
| 509 | - </field> | ||
| 510 | - <field> | ||
| 511 | - <name>fieldtype</name> | ||
| 512 | - <type>String</type> | ||
| 513 | - <format/> | ||
| 514 | - <currency/> | ||
| 515 | - <decimal/> | ||
| 516 | - <group/> | ||
| 517 | - <nullif>String</nullif> | ||
| 518 | - <length>-1</length> | ||
| 519 | - <precision>-1</precision> | ||
| 520 | - <set_empty_string>N</set_empty_string> | ||
| 521 | - </field> | ||
| 522 | - <field> | ||
| 523 | - <name>fcno</name> | ||
| 524 | - <type>Integer</type> | ||
| 525 | - <format/> | ||
| 526 | - <currency/> | ||
| 527 | - <decimal/> | ||
| 528 | - <group/> | ||
| 529 | - <nullif>0</nullif> | ||
| 530 | - <length>-1</length> | ||
| 531 | - <precision>-1</precision> | ||
| 532 | - <set_empty_string>N</set_empty_string> | ||
| 533 | - </field> | ||
| 534 | - </fields> | ||
| 535 | - <limit>1</limit> | ||
| 536 | - <never_ending>N</never_ending> | ||
| 537 | - <interval_in_ms>5000</interval_in_ms> | ||
| 538 | - <row_time_field>now</row_time_field> | ||
| 539 | - <last_time_field>FiveSecondsAgo</last_time_field> | ||
| 540 | - <cluster_schema/> | ||
| 541 | - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 542 | - <xloc>530</xloc> | ||
| 543 | - <yloc>194</yloc> | ||
| 544 | - <draw>Y</draw> | ||
| 545 | - </GUI> | ||
| 546 | - </step> | ||
| 547 | - | ||
| 548 | - <step> | ||
| 549 | - <name>计算excel输出字段</name> | ||
| 550 | - <type>ScriptValueMod</type> | ||
| 551 | - <description/> | ||
| 552 | - <distribute>Y</distribute> | ||
| 553 | - <custom_distribution/> | ||
| 554 | - <copies>1</copies> | ||
| 555 | - <partitioning> | ||
| 556 | - <method>none</method> | ||
| 557 | - <schema_name/> | ||
| 558 | - </partitioning> | ||
| 559 | - <compatible>N</compatible> | ||
| 560 | - <optimizationLevel>9</optimizationLevel> | ||
| 561 | - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type> | ||
| 562 | - <jsScript_name>Script 1</jsScript_name> | ||
| 563 | - <jsScript_script>//Script here

var fieldname; // 字段名
var fieldtype; // 字段类型

if (bc_type == 'in') {
 fieldname = '进场' + fcno;
} else if (bc_type == 'out') {
 fieldname = '出场' + fcno;
} else if (bc_type == 'normal') {
 fieldname = zdname + fcno;
} else {
 fieldname = zdname + fcno;
} 

fieldtype = 'String';
</jsScript_script> | ||
| 564 | - </jsScript> </jsScripts> <fields> <field> <name>fieldname</name> | ||
| 565 | - <rename>fieldname</rename> | ||
| 566 | - <type>String</type> | ||
| 567 | - <length>-1</length> | ||
| 568 | - <precision>-1</precision> | ||
| 569 | - <replace>N</replace> | ||
| 570 | - </field> <field> <name>fieldtype</name> | ||
| 571 | - <rename>fieldtype</rename> | ||
| 572 | - <type>String</type> | ||
| 573 | - <length>-1</length> | ||
| 574 | - <precision>-1</precision> | ||
| 575 | - <replace>N</replace> | ||
| 576 | - </field> </fields> <cluster_schema/> | ||
| 577 | - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 578 | - <xloc>410</xloc> | ||
| 579 | - <yloc>326</yloc> | ||
| 580 | - <draw>Y</draw> | ||
| 581 | - </GUI> | ||
| 582 | - </step> | ||
| 583 | - | ||
| 584 | - <step> | ||
| 585 | - <name>计算反范式元数据</name> | ||
| 586 | - <type>ScriptValueMod</type> | ||
| 587 | - <description/> | ||
| 588 | - <distribute>Y</distribute> | ||
| 589 | - <custom_distribution/> | ||
| 590 | - <copies>1</copies> | ||
| 591 | - <partitioning> | ||
| 592 | - <method>none</method> | ||
| 593 | - <schema_name/> | ||
| 594 | - </partitioning> | ||
| 595 | - <compatible>N</compatible> | ||
| 596 | - <optimizationLevel>9</optimizationLevel> | ||
| 597 | - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type> | ||
| 598 | - <jsScript_name>Script 1</jsScript_name> | ||
| 599 | - <jsScript_script>//Script here

var targetfieldname; // 目标字段名
var targettype; // 目标类型
var valuefieldname; // 值字段名
var keyvalue; // 关键字值

if (bc_type == 'in') {
 targetfieldname = '进场' + fcno;
} else if (bc_type == 'out') {
 targetfieldname = '出场' + fcno;
} else if (bc_type == 'normal') {
 targetfieldname = zdname + fcno;
} else {
 targetfieldname = zdname + fcno;
} 

targettype = 'String';
valuefieldname = 'fcsj';
keyvalue = fcno;
</jsScript_script> | ||
| 600 | - </jsScript> </jsScripts> <fields> <field> <name>targetfieldname</name> | ||
| 601 | - <rename>targetfieldname</rename> | ||
| 602 | - <type>String</type> | ||
| 603 | - <length>-1</length> | ||
| 604 | - <precision>-1</precision> | ||
| 605 | - <replace>N</replace> | ||
| 606 | - </field> <field> <name>targettype</name> | ||
| 607 | - <rename>targettype</rename> | ||
| 608 | - <type>String</type> | ||
| 609 | - <length>-1</length> | ||
| 610 | - <precision>-1</precision> | ||
| 611 | - <replace>N</replace> | ||
| 612 | - </field> <field> <name>valuefieldname</name> | ||
| 613 | - <rename>valuefieldname</rename> | ||
| 614 | - <type>String</type> | ||
| 615 | - <length>-1</length> | ||
| 616 | - <precision>-1</precision> | ||
| 617 | - <replace>N</replace> | ||
| 618 | - </field> <field> <name>keyvalue</name> | ||
| 619 | - <rename>keyvalue</rename> | ||
| 620 | - <type>String</type> | ||
| 621 | - <length>-1</length> | ||
| 622 | - <precision>-1</precision> | ||
| 623 | - <replace>N</replace> | ||
| 624 | - </field> </fields> <cluster_schema/> | ||
| 625 | - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 626 | - <xloc>410</xloc> | ||
| 627 | - <yloc>64</yloc> | ||
| 628 | - <draw>Y</draw> | ||
| 629 | - </GUI> | ||
| 630 | - </step> | ||
| 631 | - | ||
| 632 | - <step> | ||
| 633 | - <name>计算站点</name> | ||
| 634 | - <type>ScriptValueMod</type> | ||
| 635 | - <description/> | ||
| 636 | - <distribute>Y</distribute> | ||
| 637 | - <custom_distribution/> | ||
| 638 | - <copies>1</copies> | ||
| 639 | - <partitioning> | ||
| 640 | - <method>none</method> | ||
| 641 | - <schema_name/> | ||
| 642 | - </partitioning> | ||
| 643 | - <compatible>N</compatible> | ||
| 644 | - <optimizationLevel>9</optimizationLevel> | ||
| 645 | - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type> | ||
| 646 | - <jsScript_name>Script 1</jsScript_name> | ||
| 647 | - <jsScript_script>//Script here

var zd;

if (bc_type == 'in') {
 zd = qdz;
} else if (bc_type == 'out') {
 zd = zdz;
} else if (bc_type == 'normal') {
 zd = qdz;
} else {
 zd = qdz;
}
</jsScript_script> | ||
| 648 | - </jsScript> </jsScripts> <fields> <field> <name>zd</name> | ||
| 649 | - <rename>zd</rename> | ||
| 650 | - <type>String</type> | ||
| 651 | - <length>-1</length> | ||
| 652 | - <precision>-1</precision> | ||
| 653 | - <replace>N</replace> | ||
| 654 | - </field> </fields> <cluster_schema/> | ||
| 655 | - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 656 | - <xloc>300</xloc> | ||
| 657 | - <yloc>190</yloc> | ||
| 658 | - <draw>Y</draw> | ||
| 659 | - </GUI> | ||
| 660 | - </step> | ||
| 661 | - | ||
| 662 | - <step> | ||
| 663 | - <name>过滤记录</name> | ||
| 664 | - <type>FilterRows</type> | ||
| 665 | - <description/> | ||
| 666 | - <distribute>Y</distribute> | ||
| 667 | - <custom_distribution/> | ||
| 668 | - <copies>1</copies> | ||
| 669 | - <partitioning> | ||
| 670 | - <method>none</method> | ||
| 671 | - <schema_name/> | ||
| 672 | - </partitioning> | ||
| 673 | -<send_true_to/> | ||
| 674 | -<send_false_to/> | ||
| 675 | - <compare> | ||
| 676 | -<condition> | ||
| 677 | - <negated>N</negated> | ||
| 678 | - <leftvalue>bc_type</leftvalue> | ||
| 679 | - <function>IS NOT NULL</function> | ||
| 680 | - <rightvalue/> | ||
| 681 | - </condition> | ||
| 682 | - </compare> | ||
| 683 | - <cluster_schema/> | ||
| 684 | - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 685 | - <xloc>182</xloc> | ||
| 686 | - <yloc>189</yloc> | ||
| 687 | - <draw>Y</draw> | ||
| 688 | - </GUI> | ||
| 689 | - </step> | ||
| 690 | - | ||
| 691 | - <step_error_handling> | ||
| 692 | - </step_error_handling> | ||
| 693 | - <slave-step-copy-partition-distribution> | ||
| 694 | -</slave-step-copy-partition-distribution> | ||
| 695 | - <slave_transformation>N</slave_transformation> | ||
| 696 | - | ||
| 697 | -</transformation> | 1 | +<?xml version="1.0" encoding="UTF-8"?> |
| 2 | +<transformation> | ||
| 3 | + <info> | ||
| 4 | + <name>时刻表明细导出元数据</name> | ||
| 5 | + <description/> | ||
| 6 | + <extended_description/> | ||
| 7 | + <trans_version/> | ||
| 8 | + <trans_type>Normal</trans_type> | ||
| 9 | + <trans_status>0</trans_status> | ||
| 10 | + <directory>/</directory> | ||
| 11 | + <parameters> | ||
| 12 | + <parameter> | ||
| 13 | + <name>filepath</name> | ||
| 14 | + <default_value>/Users/xu/resource/project_code/runtime_temp/bsth_control_u_d_files/ttinfodetail_test.xls</default_value> | ||
| 15 | + <description>时刻表excel导出文件路径名</description> | ||
| 16 | + </parameter> | ||
| 17 | + <parameter> | ||
| 18 | + <name>injectktrfile</name> | ||
| 19 | + <default_value>/Users/xu/resource/project_code/bsth_project/bsth_control/src/main/resources/datatools/ktrs/ttinfodetailDataOutput.ktr</default_value> | ||
| 20 | + <description>注入元数据的ktr文件</description> | ||
| 21 | + </parameter> | ||
| 22 | + <parameter> | ||
| 23 | + <name>ttinfoid</name> | ||
| 24 | + <default_value>56</default_value> | ||
| 25 | + <description>时刻表id</description> | ||
| 26 | + </parameter> | ||
| 27 | + </parameters> | ||
| 28 | + <log> | ||
| 29 | +<trans-log-table><connection/> | ||
| 30 | +<schema/> | ||
| 31 | +<table/> | ||
| 32 | +<size_limit_lines/> | ||
| 33 | +<interval/> | ||
| 34 | +<timeout_days/> | ||
| 35 | +<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> | ||
| 36 | +<perf-log-table><connection/> | ||
| 37 | +<schema/> | ||
| 38 | +<table/> | ||
| 39 | +<interval/> | ||
| 40 | +<timeout_days/> | ||
| 41 | +<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> | ||
| 42 | +<channel-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>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> | ||
| 47 | +<step-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>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> | ||
| 52 | +<metrics-log-table><connection/> | ||
| 53 | +<schema/> | ||
| 54 | +<table/> | ||
| 55 | +<timeout_days/> | ||
| 56 | +<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> | ||
| 57 | + </log> | ||
| 58 | + <maxdate> | ||
| 59 | + <connection/> | ||
| 60 | + <table/> | ||
| 61 | + <field/> | ||
| 62 | + <offset>0.0</offset> | ||
| 63 | + <maxdiff>0.0</maxdiff> | ||
| 64 | + </maxdate> | ||
| 65 | + <size_rowset>10000</size_rowset> | ||
| 66 | + <sleep_time_empty>50</sleep_time_empty> | ||
| 67 | + <sleep_time_full>50</sleep_time_full> | ||
| 68 | + <unique_connections>N</unique_connections> | ||
| 69 | + <feedback_shown>Y</feedback_shown> | ||
| 70 | + <feedback_size>50000</feedback_size> | ||
| 71 | + <using_thread_priorities>Y</using_thread_priorities> | ||
| 72 | + <shared_objects_file/> | ||
| 73 | + <capture_step_performance>N</capture_step_performance> | ||
| 74 | + <step_performance_capturing_delay>1000</step_performance_capturing_delay> | ||
| 75 | + <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit> | ||
| 76 | + <dependencies> | ||
| 77 | + </dependencies> | ||
| 78 | + <partitionschemas> | ||
| 79 | + </partitionschemas> | ||
| 80 | + <slaveservers> | ||
| 81 | + </slaveservers> | ||
| 82 | + <clusterschemas> | ||
| 83 | + </clusterschemas> | ||
| 84 | + <created_user>-</created_user> | ||
| 85 | + <created_date>2016/11/15 15:02:41.624</created_date> | ||
| 86 | + <modified_user>-</modified_user> | ||
| 87 | + <modified_date>2016/11/15 15:02:41.624</modified_date> | ||
| 88 | + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA=</key_for_session_key> | ||
| 89 | + <is_key_private>N</is_key_private> | ||
| 90 | + </info> | ||
| 91 | + <notepads> | ||
| 92 | + <notepad> | ||
| 93 | + <note>这里有些问题
在window2012的环境下,
MySql数据库查询中如果返回中文内容的字段,这个内容乱码
解决办法,就是数据库查询全部缓存,就不乱码
linux环境下没问题</note> | ||
| 94 | + <xloc>165</xloc> | ||
| 95 | + <yloc>402</yloc> | ||
| 96 | + <width>333</width> | ||
| 97 | + <heigth>90</heigth> | ||
| 98 | + <fontname>YaHei Consolas Hybrid</fontname> | ||
| 99 | + <fontsize>12</fontsize> | ||
| 100 | + <fontbold>N</fontbold> | ||
| 101 | + <fontitalic>N</fontitalic> | ||
| 102 | + <fontcolorred>0</fontcolorred> | ||
| 103 | + <fontcolorgreen>0</fontcolorgreen> | ||
| 104 | + <fontcolorblue>0</fontcolorblue> | ||
| 105 | + <backgroundcolorred>255</backgroundcolorred> | ||
| 106 | + <backgroundcolorgreen>205</backgroundcolorgreen> | ||
| 107 | + <backgroundcolorblue>112</backgroundcolorblue> | ||
| 108 | + <bordercolorred>100</bordercolorred> | ||
| 109 | + <bordercolorgreen>100</bordercolorgreen> | ||
| 110 | + <bordercolorblue>100</bordercolorblue> | ||
| 111 | + <drawshadow>Y</drawshadow> | ||
| 112 | + </notepad> | ||
| 113 | + </notepads> | ||
| 114 | + <connection> | ||
| 115 | + <name>192.168.168.1_jwgl_dw</name> | ||
| 116 | + <server>192.168.168.1</server> | ||
| 117 | + <type>ORACLE</type> | ||
| 118 | + <access>Native</access> | ||
| 119 | + <database>orcl</database> | ||
| 120 | + <port>1521</port> | ||
| 121 | + <username>jwgl_dw</username> | ||
| 122 | + <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password> | ||
| 123 | + <servername/> | ||
| 124 | + <data_tablespace/> | ||
| 125 | + <index_tablespace/> | ||
| 126 | + <attributes> | ||
| 127 | + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 128 | + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 129 | + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 130 | + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute> | ||
| 131 | + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 132 | + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 133 | + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 134 | + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 135 | + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 136 | + </attributes> | ||
| 137 | + </connection> | ||
| 138 | + <connection> | ||
| 139 | + <name>bus_control_variable</name> | ||
| 140 | + <server>${v_db_ip}</server> | ||
| 141 | + <type>MYSQL</type> | ||
| 142 | + <access>Native</access> | ||
| 143 | + <database>${v_db_dname}</database> | ||
| 144 | + <port>3306</port> | ||
| 145 | + <username>${v_db_uname}</username> | ||
| 146 | + <password>${v_db_pwd}</password> | ||
| 147 | + <servername/> | ||
| 148 | + <data_tablespace/> | ||
| 149 | + <index_tablespace/> | ||
| 150 | + <attributes> | ||
| 151 | + <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute> | ||
| 152 | + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute> | ||
| 153 | + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute> | ||
| 154 | + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 155 | + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 156 | + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 157 | + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute> | ||
| 158 | + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 159 | + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 160 | + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute> | ||
| 161 | + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 162 | + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 163 | + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 164 | + </attributes> | ||
| 165 | + </connection> | ||
| 166 | + <connection> | ||
| 167 | + <name>bus_control_公司_201</name> | ||
| 168 | + <server>localhost</server> | ||
| 169 | + <type>MYSQL</type> | ||
| 170 | + <access>Native</access> | ||
| 171 | + <database>control</database> | ||
| 172 | + <port>3306</port> | ||
| 173 | + <username>root</username> | ||
| 174 | + <password>Encrypted </password> | ||
| 175 | + <servername/> | ||
| 176 | + <data_tablespace/> | ||
| 177 | + <index_tablespace/> | ||
| 178 | + <attributes> | ||
| 179 | + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute> | ||
| 180 | + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute> | ||
| 181 | + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 182 | + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 183 | + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 184 | + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute> | ||
| 185 | + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 186 | + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 187 | + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute> | ||
| 188 | + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 189 | + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 190 | + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 191 | + </attributes> | ||
| 192 | + </connection> | ||
| 193 | + <connection> | ||
| 194 | + <name>bus_control_本机</name> | ||
| 195 | + <server>localhost</server> | ||
| 196 | + <type>MYSQL</type> | ||
| 197 | + <access>Native</access> | ||
| 198 | + <database>control</database> | ||
| 199 | + <port>3306</port> | ||
| 200 | + <username>root</username> | ||
| 201 | + <password>Encrypted </password> | ||
| 202 | + <servername/> | ||
| 203 | + <data_tablespace/> | ||
| 204 | + <index_tablespace/> | ||
| 205 | + <attributes> | ||
| 206 | + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute> | ||
| 207 | + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute> | ||
| 208 | + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 209 | + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 210 | + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 211 | + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute> | ||
| 212 | + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 213 | + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 214 | + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute> | ||
| 215 | + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 216 | + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 217 | + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 218 | + </attributes> | ||
| 219 | + </connection> | ||
| 220 | + <connection> | ||
| 221 | + <name>xlab_mysql_youle</name> | ||
| 222 | + <server>101.231.124.8</server> | ||
| 223 | + <type>MYSQL</type> | ||
| 224 | + <access>Native</access> | ||
| 225 | + <database>xlab_youle</database> | ||
| 226 | + <port>45687</port> | ||
| 227 | + <username>xlab-youle</username> | ||
| 228 | + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password> | ||
| 229 | + <servername/> | ||
| 230 | + <data_tablespace/> | ||
| 231 | + <index_tablespace/> | ||
| 232 | + <attributes> | ||
| 233 | + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute> | ||
| 234 | + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute> | ||
| 235 | + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 236 | + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 237 | + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 238 | + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute> | ||
| 239 | + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 240 | + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 241 | + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute> | ||
| 242 | + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute> | ||
| 243 | + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute> | ||
| 244 | + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 245 | + </attributes> | ||
| 246 | + </connection> | ||
| 247 | + <connection> | ||
| 248 | + <name>xlab_mysql_youle(本机)</name> | ||
| 249 | + <server>localhost</server> | ||
| 250 | + <type>MYSQL</type> | ||
| 251 | + <access>Native</access> | ||
| 252 | + <database>xlab_youle</database> | ||
| 253 | + <port>3306</port> | ||
| 254 | + <username>root</username> | ||
| 255 | + <password>Encrypted </password> | ||
| 256 | + <servername/> | ||
| 257 | + <data_tablespace/> | ||
| 258 | + <index_tablespace/> | ||
| 259 | + <attributes> | ||
| 260 | + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute> | ||
| 261 | + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute> | ||
| 262 | + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 263 | + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 264 | + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 265 | + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute> | ||
| 266 | + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 267 | + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 268 | + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute> | ||
| 269 | + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute> | ||
| 270 | + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute> | ||
| 271 | + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 272 | + </attributes> | ||
| 273 | + </connection> | ||
| 274 | + <connection> | ||
| 275 | + <name>xlab_youle</name> | ||
| 276 | + <server/> | ||
| 277 | + <type>MYSQL</type> | ||
| 278 | + <access>JNDI</access> | ||
| 279 | + <database>xlab_youle</database> | ||
| 280 | + <port>1521</port> | ||
| 281 | + <username/> | ||
| 282 | + <password>Encrypted </password> | ||
| 283 | + <servername/> | ||
| 284 | + <data_tablespace/> | ||
| 285 | + <index_tablespace/> | ||
| 286 | + <attributes> | ||
| 287 | + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute> | ||
| 288 | + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute> | ||
| 289 | + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute> | ||
| 290 | + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute> | ||
| 291 | + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute> | ||
| 292 | + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute> | ||
| 293 | + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute> | ||
| 294 | + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 295 | + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute> | ||
| 296 | + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute> | ||
| 297 | + </attributes> | ||
| 298 | + </connection> | ||
| 299 | + <order> | ||
| 300 | + <hop> <from>时刻表明细分组数据</from><to>过滤记录</to><enabled>Y</enabled> </hop> | ||
| 301 | + <hop> <from>过滤记录</from><to>计算站点</to><enabled>Y</enabled> </hop> | ||
| 302 | + <hop> <from>计算站点</from><to>查找站点名</to><enabled>Y</enabled> </hop> | ||
| 303 | + <hop> <from>查找站点名</from><to>计算反范式元数据</to><enabled>Y</enabled> </hop> | ||
| 304 | + <hop> <from>查找站点名</from><to>计算excel输出字段</to><enabled>Y</enabled> </hop> | ||
| 305 | + <hop> <from>计算excel输出字段</from><to>字段选择</to><enabled>Y</enabled> </hop> | ||
| 306 | + <hop> <from>字段选择</from><to>排序记录</to><enabled>Y</enabled> </hop> | ||
| 307 | + <hop> <from>生成路牌字段</from><to>排序记录</to><enabled>Y</enabled> </hop> | ||
| 308 | + <hop> <from>计算反范式元数据</from><to>ETL元数据注入</to><enabled>Y</enabled> </hop> | ||
| 309 | + <hop> <from>排序记录</from><to>ETL元数据注入</to><enabled>Y</enabled> </hop> | ||
| 310 | + </order> | ||
| 311 | + <step> | ||
| 312 | + <name>ETL元数据注入</name> | ||
| 313 | + <type>MetaInject</type> | ||
| 314 | + <description/> | ||
| 315 | + <distribute>Y</distribute> | ||
| 316 | + <custom_distribution/> | ||
| 317 | + <copies>1</copies> | ||
| 318 | + <partitioning> | ||
| 319 | + <method>none</method> | ||
| 320 | + <schema_name/> | ||
| 321 | + </partitioning> | ||
| 322 | + <specification_method>filename</specification_method> | ||
| 323 | + <trans_object_id/> | ||
| 324 | + <trans_name/> | ||
| 325 | + <filename>${injectktrfile}</filename> | ||
| 326 | + <directory_path/> | ||
| 327 | + <source_step/> | ||
| 328 | + <source_output_fields> </source_output_fields> <target_file/> | ||
| 329 | + <no_execution>N</no_execution> | ||
| 330 | + <stream_source_step/> | ||
| 331 | + <stream_target_step/> | ||
| 332 | + <mappings> <mapping> <target_step_name>列转行</target_step_name> | ||
| 333 | + <target_attribute_key>TARGET_TYPE</target_attribute_key> | ||
| 334 | + <target_detail>Y</target_detail> | ||
| 335 | + <source_step>计算反范式元数据</source_step> | ||
| 336 | + <source_field>targettype</source_field> | ||
| 337 | + </mapping> <mapping> <target_step_name>Excel输出</target_step_name> | ||
| 338 | + <target_attribute_key>TYPE</target_attribute_key> | ||
| 339 | + <target_detail>Y</target_detail> | ||
| 340 | + <source_step>排序记录</source_step> | ||
| 341 | + <source_field>fieldtype</source_field> | ||
| 342 | + </mapping> <mapping> <target_step_name>列转行</target_step_name> | ||
| 343 | + <target_attribute_key>NAME</target_attribute_key> | ||
| 344 | + <target_detail>Y</target_detail> | ||
| 345 | + <source_step>计算反范式元数据</source_step> | ||
| 346 | + <source_field>valuefieldname</source_field> | ||
| 347 | + </mapping> <mapping> <target_step_name>Excel输出</target_step_name> | ||
| 348 | + <target_attribute_key>NAME</target_attribute_key> | ||
| 349 | + <target_detail>Y</target_detail> | ||
| 350 | + <source_step>排序记录</source_step> | ||
| 351 | + <source_field>fieldname</source_field> | ||
| 352 | + </mapping> <mapping> <target_step_name>列转行</target_step_name> | ||
| 353 | + <target_attribute_key>TARGET_NAME</target_attribute_key> | ||
| 354 | + <target_detail>Y</target_detail> | ||
| 355 | + <source_step>计算反范式元数据</source_step> | ||
| 356 | + <source_field>targetfieldname</source_field> | ||
| 357 | + </mapping> <mapping> <target_step_name>列转行</target_step_name> | ||
| 358 | + <target_attribute_key>KEY_VALUE</target_attribute_key> | ||
| 359 | + <target_detail>Y</target_detail> | ||
| 360 | + <source_step>计算反范式元数据</source_step> | ||
| 361 | + <source_field>keyvalue</source_field> | ||
| 362 | + </mapping> </mappings> <cluster_schema/> | ||
| 363 | + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 364 | + <xloc>640</xloc> | ||
| 365 | + <yloc>64</yloc> | ||
| 366 | + <draw>Y</draw> | ||
| 367 | + </GUI> | ||
| 368 | + </step> | ||
| 369 | + | ||
| 370 | + <step> | ||
| 371 | + <name>字段选择</name> | ||
| 372 | + <type>SelectValues</type> | ||
| 373 | + <description/> | ||
| 374 | + <distribute>Y</distribute> | ||
| 375 | + <custom_distribution/> | ||
| 376 | + <copies>1</copies> | ||
| 377 | + <partitioning> | ||
| 378 | + <method>none</method> | ||
| 379 | + <schema_name/> | ||
| 380 | + </partitioning> | ||
| 381 | + <fields> <field> <name>fieldname</name> | ||
| 382 | + <rename/> | ||
| 383 | + <length>-2</length> | ||
| 384 | + <precision>-2</precision> | ||
| 385 | + </field> <field> <name>fieldtype</name> | ||
| 386 | + <rename/> | ||
| 387 | + <length>-2</length> | ||
| 388 | + <precision>-2</precision> | ||
| 389 | + </field> <field> <name>fcno</name> | ||
| 390 | + <rename/> | ||
| 391 | + <length>-2</length> | ||
| 392 | + <precision>-2</precision> | ||
| 393 | + </field> <select_unspecified>N</select_unspecified> | ||
| 394 | + </fields> <cluster_schema/> | ||
| 395 | + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 396 | + <xloc>533</xloc> | ||
| 397 | + <yloc>325</yloc> | ||
| 398 | + <draw>Y</draw> | ||
| 399 | + </GUI> | ||
| 400 | + </step> | ||
| 401 | + | ||
| 402 | + <step> | ||
| 403 | + <name>排序记录</name> | ||
| 404 | + <type>SortRows</type> | ||
| 405 | + <description/> | ||
| 406 | + <distribute>Y</distribute> | ||
| 407 | + <custom_distribution/> | ||
| 408 | + <copies>1</copies> | ||
| 409 | + <partitioning> | ||
| 410 | + <method>none</method> | ||
| 411 | + <schema_name/> | ||
| 412 | + </partitioning> | ||
| 413 | + <directory>%%java.io.tmpdir%%</directory> | ||
| 414 | + <prefix>out</prefix> | ||
| 415 | + <sort_size>1000000</sort_size> | ||
| 416 | + <free_memory/> | ||
| 417 | + <compress>N</compress> | ||
| 418 | + <compress_variable/> | ||
| 419 | + <unique_rows>N</unique_rows> | ||
| 420 | + <fields> | ||
| 421 | + <field> | ||
| 422 | + <name>fcno</name> | ||
| 423 | + <ascending>Y</ascending> | ||
| 424 | + <case_sensitive>N</case_sensitive> | ||
| 425 | + <presorted>N</presorted> | ||
| 426 | + </field> | ||
| 427 | + </fields> | ||
| 428 | + <cluster_schema/> | ||
| 429 | + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 430 | + <xloc>642</xloc> | ||
| 431 | + <yloc>325</yloc> | ||
| 432 | + <draw>Y</draw> | ||
| 433 | + </GUI> | ||
| 434 | + </step> | ||
| 435 | + | ||
| 436 | + <step> | ||
| 437 | + <name>时刻表明细分组数据</name> | ||
| 438 | + <type>TableInput</type> | ||
| 439 | + <description/> | ||
| 440 | + <distribute>Y</distribute> | ||
| 441 | + <custom_distribution/> | ||
| 442 | + <copies>1</copies> | ||
| 443 | + <partitioning> | ||
| 444 | + <method>none</method> | ||
| 445 | + <schema_name/> | ||
| 446 | + </partitioning> | ||
| 447 | + <connection>bus_control_variable</connection> | ||
| 448 | + <sql>select 
fcno
, min(xl_dir) xl_dir
,min(qdz) qdz
,min(zdz) zdz
,bc_type 
from bsth_c_s_ttinfo_detail
where ttinfo = ${ttinfoid}
group by fcno,bc_type</sql> | ||
| 449 | + <limit>0</limit> | ||
| 450 | + <lookup/> | ||
| 451 | + <execute_each_row>N</execute_each_row> | ||
| 452 | + <variables_active>Y</variables_active> | ||
| 453 | + <lazy_conversion_active>N</lazy_conversion_active> | ||
| 454 | + <cluster_schema/> | ||
| 455 | + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 456 | + <xloc>56</xloc> | ||
| 457 | + <yloc>185</yloc> | ||
| 458 | + <draw>Y</draw> | ||
| 459 | + </GUI> | ||
| 460 | + </step> | ||
| 461 | + | ||
| 462 | + <step> | ||
| 463 | + <name>查找站点名</name> | ||
| 464 | + <type>DBLookup</type> | ||
| 465 | + <description/> | ||
| 466 | + <distribute>N</distribute> | ||
| 467 | + <custom_distribution/> | ||
| 468 | + <copies>1</copies> | ||
| 469 | + <partitioning> | ||
| 470 | + <method>none</method> | ||
| 471 | + <schema_name/> | ||
| 472 | + </partitioning> | ||
| 473 | + <connection>bus_control_variable</connection> | ||
| 474 | + <cache>N</cache> | ||
| 475 | + <cache_load_all>Y</cache_load_all> | ||
| 476 | + <cache_size>0</cache_size> | ||
| 477 | + <lookup> | ||
| 478 | + <schema/> | ||
| 479 | + <table>bsth_c_stationroute</table> | ||
| 480 | + <orderby/> | ||
| 481 | + <fail_on_multiple>N</fail_on_multiple> | ||
| 482 | + <eat_row_on_failure>N</eat_row_on_failure> | ||
| 483 | + <key> | ||
| 484 | + <name>zd</name> | ||
| 485 | + <field>station</field> | ||
| 486 | + <condition>=</condition> | ||
| 487 | + <name2/> | ||
| 488 | + </key> | ||
| 489 | + <key> | ||
| 490 | + <name>xl_dir</name> | ||
| 491 | + <field>directions</field> | ||
| 492 | + <condition>=</condition> | ||
| 493 | + <name2/> | ||
| 494 | + </key> | ||
| 495 | + <value> | ||
| 496 | + <name>station_name</name> | ||
| 497 | + <rename>zdname</rename> | ||
| 498 | + <default/> | ||
| 499 | + <type>String</type> | ||
| 500 | + </value> | ||
| 501 | + </lookup> | ||
| 502 | + <cluster_schema/> | ||
| 503 | + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 504 | + <xloc>410</xloc> | ||
| 505 | + <yloc>191</yloc> | ||
| 506 | + <draw>Y</draw> | ||
| 507 | + </GUI> | ||
| 508 | + </step> | ||
| 509 | + | ||
| 510 | + <step> | ||
| 511 | + <name>生成路牌字段</name> | ||
| 512 | + <type>RowGenerator</type> | ||
| 513 | + <description/> | ||
| 514 | + <distribute>Y</distribute> | ||
| 515 | + <custom_distribution/> | ||
| 516 | + <copies>1</copies> | ||
| 517 | + <partitioning> | ||
| 518 | + <method>none</method> | ||
| 519 | + <schema_name/> | ||
| 520 | + </partitioning> | ||
| 521 | + <fields> | ||
| 522 | + <field> | ||
| 523 | + <name>fieldname</name> | ||
| 524 | + <type>String</type> | ||
| 525 | + <format/> | ||
| 526 | + <currency/> | ||
| 527 | + <decimal/> | ||
| 528 | + <group/> | ||
| 529 | + <nullif>路牌</nullif> | ||
| 530 | + <length>-1</length> | ||
| 531 | + <precision>-1</precision> | ||
| 532 | + <set_empty_string>N</set_empty_string> | ||
| 533 | + </field> | ||
| 534 | + <field> | ||
| 535 | + <name>fieldtype</name> | ||
| 536 | + <type>String</type> | ||
| 537 | + <format/> | ||
| 538 | + <currency/> | ||
| 539 | + <decimal/> | ||
| 540 | + <group/> | ||
| 541 | + <nullif>String</nullif> | ||
| 542 | + <length>-1</length> | ||
| 543 | + <precision>-1</precision> | ||
| 544 | + <set_empty_string>N</set_empty_string> | ||
| 545 | + </field> | ||
| 546 | + <field> | ||
| 547 | + <name>fcno</name> | ||
| 548 | + <type>Integer</type> | ||
| 549 | + <format/> | ||
| 550 | + <currency/> | ||
| 551 | + <decimal/> | ||
| 552 | + <group/> | ||
| 553 | + <nullif>0</nullif> | ||
| 554 | + <length>-1</length> | ||
| 555 | + <precision>-1</precision> | ||
| 556 | + <set_empty_string>N</set_empty_string> | ||
| 557 | + </field> | ||
| 558 | + </fields> | ||
| 559 | + <limit>1</limit> | ||
| 560 | + <never_ending>N</never_ending> | ||
| 561 | + <interval_in_ms>5000</interval_in_ms> | ||
| 562 | + <row_time_field>now</row_time_field> | ||
| 563 | + <last_time_field>FiveSecondsAgo</last_time_field> | ||
| 564 | + <cluster_schema/> | ||
| 565 | + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 566 | + <xloc>530</xloc> | ||
| 567 | + <yloc>194</yloc> | ||
| 568 | + <draw>Y</draw> | ||
| 569 | + </GUI> | ||
| 570 | + </step> | ||
| 571 | + | ||
| 572 | + <step> | ||
| 573 | + <name>计算excel输出字段</name> | ||
| 574 | + <type>ScriptValueMod</type> | ||
| 575 | + <description/> | ||
| 576 | + <distribute>Y</distribute> | ||
| 577 | + <custom_distribution/> | ||
| 578 | + <copies>1</copies> | ||
| 579 | + <partitioning> | ||
| 580 | + <method>none</method> | ||
| 581 | + <schema_name/> | ||
| 582 | + </partitioning> | ||
| 583 | + <compatible>N</compatible> | ||
| 584 | + <optimizationLevel>9</optimizationLevel> | ||
| 585 | + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type> | ||
| 586 | + <jsScript_name>Script 1</jsScript_name> | ||
| 587 | + <jsScript_script>//Script here

var fieldname; // 字段名
var fieldtype; // 字段类型

if (bc_type == 'in') {
 fieldname = '进场' + fcno;
} else if (bc_type == 'out') {
 fieldname = '出场' + fcno;
} else if (bc_type == 'normal') {
 fieldname = zdname + fcno;
} else {
 fieldname = zdname + fcno;
} 

fieldtype = 'String';
</jsScript_script> | ||
| 588 | + </jsScript> </jsScripts> <fields> <field> <name>fieldname</name> | ||
| 589 | + <rename>fieldname</rename> | ||
| 590 | + <type>String</type> | ||
| 591 | + <length>-1</length> | ||
| 592 | + <precision>-1</precision> | ||
| 593 | + <replace>N</replace> | ||
| 594 | + </field> <field> <name>fieldtype</name> | ||
| 595 | + <rename>fieldtype</rename> | ||
| 596 | + <type>String</type> | ||
| 597 | + <length>-1</length> | ||
| 598 | + <precision>-1</precision> | ||
| 599 | + <replace>N</replace> | ||
| 600 | + </field> </fields> <cluster_schema/> | ||
| 601 | + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 602 | + <xloc>410</xloc> | ||
| 603 | + <yloc>326</yloc> | ||
| 604 | + <draw>Y</draw> | ||
| 605 | + </GUI> | ||
| 606 | + </step> | ||
| 607 | + | ||
| 608 | + <step> | ||
| 609 | + <name>计算反范式元数据</name> | ||
| 610 | + <type>ScriptValueMod</type> | ||
| 611 | + <description/> | ||
| 612 | + <distribute>Y</distribute> | ||
| 613 | + <custom_distribution/> | ||
| 614 | + <copies>1</copies> | ||
| 615 | + <partitioning> | ||
| 616 | + <method>none</method> | ||
| 617 | + <schema_name/> | ||
| 618 | + </partitioning> | ||
| 619 | + <compatible>N</compatible> | ||
| 620 | + <optimizationLevel>9</optimizationLevel> | ||
| 621 | + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type> | ||
| 622 | + <jsScript_name>Script 1</jsScript_name> | ||
| 623 | + <jsScript_script>//Script here

var targetfieldname; // 目标字段名
var targettype; // 目标类型
var valuefieldname; // 值字段名
var keyvalue; // 关键字值

if (bc_type == 'in') {
 targetfieldname = '进场' + fcno;
} else if (bc_type == 'out') {
 targetfieldname = '出场' + fcno;
} else if (bc_type == 'normal') {
 targetfieldname = zdname + fcno;
} else {
 targetfieldname = zdname + fcno;
} 

targettype = 'String';
valuefieldname = 'fcsj';
keyvalue = fcno;
</jsScript_script> | ||
| 624 | + </jsScript> </jsScripts> <fields> <field> <name>targetfieldname</name> | ||
| 625 | + <rename>targetfieldname</rename> | ||
| 626 | + <type>String</type> | ||
| 627 | + <length>-1</length> | ||
| 628 | + <precision>-1</precision> | ||
| 629 | + <replace>N</replace> | ||
| 630 | + </field> <field> <name>targettype</name> | ||
| 631 | + <rename>targettype</rename> | ||
| 632 | + <type>String</type> | ||
| 633 | + <length>-1</length> | ||
| 634 | + <precision>-1</precision> | ||
| 635 | + <replace>N</replace> | ||
| 636 | + </field> <field> <name>valuefieldname</name> | ||
| 637 | + <rename>valuefieldname</rename> | ||
| 638 | + <type>String</type> | ||
| 639 | + <length>-1</length> | ||
| 640 | + <precision>-1</precision> | ||
| 641 | + <replace>N</replace> | ||
| 642 | + </field> <field> <name>keyvalue</name> | ||
| 643 | + <rename>keyvalue</rename> | ||
| 644 | + <type>String</type> | ||
| 645 | + <length>-1</length> | ||
| 646 | + <precision>-1</precision> | ||
| 647 | + <replace>N</replace> | ||
| 648 | + </field> </fields> <cluster_schema/> | ||
| 649 | + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 650 | + <xloc>410</xloc> | ||
| 651 | + <yloc>64</yloc> | ||
| 652 | + <draw>Y</draw> | ||
| 653 | + </GUI> | ||
| 654 | + </step> | ||
| 655 | + | ||
| 656 | + <step> | ||
| 657 | + <name>计算站点</name> | ||
| 658 | + <type>ScriptValueMod</type> | ||
| 659 | + <description/> | ||
| 660 | + <distribute>Y</distribute> | ||
| 661 | + <custom_distribution/> | ||
| 662 | + <copies>1</copies> | ||
| 663 | + <partitioning> | ||
| 664 | + <method>none</method> | ||
| 665 | + <schema_name/> | ||
| 666 | + </partitioning> | ||
| 667 | + <compatible>N</compatible> | ||
| 668 | + <optimizationLevel>9</optimizationLevel> | ||
| 669 | + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type> | ||
| 670 | + <jsScript_name>Script 1</jsScript_name> | ||
| 671 | + <jsScript_script>//Script here

var zd;

if (bc_type == 'in') {
 zd = qdz;
} else if (bc_type == 'out') {
 zd = zdz;
} else if (bc_type == 'normal') {
 zd = qdz;
} else {
 zd = qdz;
}
</jsScript_script> | ||
| 672 | + </jsScript> </jsScripts> <fields> <field> <name>zd</name> | ||
| 673 | + <rename>zd</rename> | ||
| 674 | + <type>String</type> | ||
| 675 | + <length>-1</length> | ||
| 676 | + <precision>-1</precision> | ||
| 677 | + <replace>N</replace> | ||
| 678 | + </field> </fields> <cluster_schema/> | ||
| 679 | + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 680 | + <xloc>300</xloc> | ||
| 681 | + <yloc>190</yloc> | ||
| 682 | + <draw>Y</draw> | ||
| 683 | + </GUI> | ||
| 684 | + </step> | ||
| 685 | + | ||
| 686 | + <step> | ||
| 687 | + <name>过滤记录</name> | ||
| 688 | + <type>FilterRows</type> | ||
| 689 | + <description/> | ||
| 690 | + <distribute>Y</distribute> | ||
| 691 | + <custom_distribution/> | ||
| 692 | + <copies>1</copies> | ||
| 693 | + <partitioning> | ||
| 694 | + <method>none</method> | ||
| 695 | + <schema_name/> | ||
| 696 | + </partitioning> | ||
| 697 | +<send_true_to/> | ||
| 698 | +<send_false_to/> | ||
| 699 | + <compare> | ||
| 700 | +<condition> | ||
| 701 | + <negated>N</negated> | ||
| 702 | + <leftvalue>bc_type</leftvalue> | ||
| 703 | + <function>IS NOT NULL</function> | ||
| 704 | + <rightvalue/> | ||
| 705 | + </condition> | ||
| 706 | + </compare> | ||
| 707 | + <cluster_schema/> | ||
| 708 | + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> | ||
| 709 | + <xloc>182</xloc> | ||
| 710 | + <yloc>189</yloc> | ||
| 711 | + <draw>Y</draw> | ||
| 712 | + </GUI> | ||
| 713 | + </step> | ||
| 714 | + | ||
| 715 | + <step_error_handling> | ||
| 716 | + </step_error_handling> | ||
| 717 | + <slave-step-copy-partition-distribution> | ||
| 718 | +</slave-step-copy-partition-distribution> | ||
| 719 | + <slave_transformation>N</slave_transformation> | ||
| 720 | + | ||
| 721 | +</transformation> |
src/main/resources/static/pages/scheduleApp/module/common/dts1/select/saSelect5.js
| @@ -173,7 +173,7 @@ angular.module('ScheduleApp').directive('saSelect5', [ | @@ -173,7 +173,7 @@ angular.module('ScheduleApp').directive('saSelect5', [ | ||
| 173 | // 处理search | 173 | // 处理search |
| 174 | console.log("search:" + search); | 174 | console.log("search:" + search); |
| 175 | 175 | ||
| 176 | - if (dataModelType == 'ajax') { | 176 | + if (dataModelType == 'ajax' || dataModelType == 'local') { |
| 177 | scope[ctrlAs].$$data = []; | 177 | scope[ctrlAs].$$data = []; |
| 178 | for (var k = 0; k < scope[ctrlAs].$$data_real.length; k++) { | 178 | for (var k = 0; k < scope[ctrlAs].$$data_real.length; k++) { |
| 179 | var upTerm = search.toUpperCase(); | 179 | var upTerm = search.toUpperCase(); |
| @@ -400,6 +400,25 @@ angular.module('ScheduleApp').directive('saSelect5', [ | @@ -400,6 +400,25 @@ angular.module('ScheduleApp').directive('saSelect5', [ | ||
| 400 | }; | 400 | }; |
| 401 | 401 | ||
| 402 | /** | 402 | /** |
| 403 | + * 内部方法,读取传过来的动态数据源。 | ||
| 404 | + * @param ldata | ||
| 405 | + */ | ||
| 406 | + scope[ctrlAs].$$internal_pass_data = function(ldata) { | ||
| 407 | + // 重新创建内部保存的数据 | ||
| 408 | + scope[ctrlAs].$$data_real = []; | ||
| 409 | + // 重新创建内部ui-select显示用数据,默认取10条记录显示 | ||
| 410 | + scope[ctrlAs].$$data = []; | ||
| 411 | + | ||
| 412 | + // 本地动态数据直接显示,暂时不优化 | ||
| 413 | + for (var i = 0; i < ldata.length; i++) { | ||
| 414 | + scope[ctrlAs].$$data_real.push(ldata[i]); | ||
| 415 | + scope[ctrlAs].$$data.push(ldata[i]); | ||
| 416 | + } | ||
| 417 | + | ||
| 418 | + scope[ctrlAs].$$internal_validate_model(); | ||
| 419 | + }; | ||
| 420 | + | ||
| 421 | + /** | ||
| 403 | * 监控dsparams属性变化 | 422 | * 监控dsparams属性变化 |
| 404 | */ | 423 | */ |
| 405 | attr.$observe("dsparams", function(value) { | 424 | attr.$observe("dsparams", function(value) { |
| @@ -411,6 +430,7 @@ angular.module('ScheduleApp').directive('saSelect5', [ | @@ -411,6 +430,7 @@ angular.module('ScheduleApp').directive('saSelect5', [ | ||
| 411 | // {type: 'ajax', param: 'ajax查询参数对象', atype: 'ajax查询累西'} | 430 | // {type: 'ajax', param: 'ajax查询参数对象', atype: 'ajax查询累西'} |
| 412 | // {type: 'dic', param: 'dic名字'} | 431 | // {type: 'dic', param: 'dic名字'} |
| 413 | // {type: 'local', param: '本地存储type名字'} | 432 | // {type: 'local', param: '本地存储type名字'} |
| 433 | + // {type: 'passdata', : 'ldata': '本地存储数据'} | ||
| 414 | 434 | ||
| 415 | if (obj.type == 'dic') { | 435 | if (obj.type == 'dic') { |
| 416 | dataModelType = 'dic'; | 436 | dataModelType = 'dic'; |
| @@ -422,6 +442,9 @@ angular.module('ScheduleApp').directive('saSelect5', [ | @@ -422,6 +442,9 @@ angular.module('ScheduleApp').directive('saSelect5', [ | ||
| 422 | } else if (obj.type == 'local') { | 442 | } else if (obj.type == 'local') { |
| 423 | dataModelType = 'local'; | 443 | dataModelType = 'local'; |
| 424 | scope[ctrlAs].$$internal_local_data(obj.param); | 444 | scope[ctrlAs].$$internal_local_data(obj.param); |
| 445 | + } else if (obj.type == 'passdata') { | ||
| 446 | + dataModelType = 'passdata'; | ||
| 447 | + scope[ctrlAs].$$internal_pass_data(obj.ldata); | ||
| 425 | } else { | 448 | } else { |
| 426 | throw new Error("dsparams参数格式异常=" + obj); | 449 | throw new Error("dsparams参数格式异常=" + obj); |
| 427 | } | 450 | } |
src/main/resources/static/pages/scheduleApp/module/common/dts2/scheduleplan/saPlanInfoEdit.js
| @@ -22,9 +22,8 @@ angular.module('ScheduleApp').directive( | @@ -22,9 +22,8 @@ angular.module('ScheduleApp').directive( | ||
| 22 | controllerAs: '$saPlanInfoEditCtrl', | 22 | controllerAs: '$saPlanInfoEditCtrl', |
| 23 | bindToController: true, | 23 | bindToController: true, |
| 24 | controller: function() { | 24 | controller: function() { |
| 25 | - var self = this; | 25 | + //var self = this; |
| 26 | 26 | ||
| 27 | - // TODO: | ||
| 28 | }, | 27 | }, |
| 29 | 28 | ||
| 30 | compile: function(tElem, tAttrs) { | 29 | compile: function(tElem, tAttrs) { |
| @@ -42,8 +41,20 @@ angular.module('ScheduleApp').directive( | @@ -42,8 +41,20 @@ angular.module('ScheduleApp').directive( | ||
| 42 | var old_cl = {}; // key:{车辆id_车辆自编号},value:所在list下标数组 | 41 | var old_cl = {}; // key:{车辆id_车辆自编号},value:所在list下标数组 |
| 43 | var old_j = {}; // key:{驾驶员id_姓名_工号}, value:所在list下标数组 | 42 | var old_j = {}; // key:{驾驶员id_姓名_工号}, value:所在list下标数组 |
| 44 | var old_s = {}; // key:{售票员id_姓名_工号}, value:所在list下标数组 | 43 | var old_s = {}; // key:{售票员id_姓名_工号}, value:所在list下标数组 |
| 44 | + var old_isfb = false; // 是否有分班 | ||
| 45 | + var old_isfb_index = 0; // 分班开始索引 | ||
| 46 | + var old_hasJCBC = false; // 是否有进场班次 | ||
| 47 | + var old_max_fcno = 0; // 最大发车顺序号 | ||
| 48 | + var old_firstJCBCFcno = 0; // 第一个进场班次发车顺序号 | ||
| 49 | + var old_half_bcs = 0; // 一般的班次数量 | ||
| 45 | 50 | ||
| 46 | // 内部变量,变更的车辆,变更的人员 | 51 | // 内部变量,变更的车辆,变更的人员 |
| 52 | + var new_cl1 = undefined; // 新的车辆1(车辆id_车辆自编号) | ||
| 53 | + var new_cl2 = undefined; // 新的车辆2(车辆id_车辆自编号) | ||
| 54 | + var new_j1 = undefined; // 新的驾驶员1(驾驶员id_姓名_工号) | ||
| 55 | + var new_j2 = undefined; // 新的驾驶员2(驾驶员id_姓名_工号) | ||
| 56 | + var new_s1 = undefined; // 新的售票员1(售票员id_姓名_工号) | ||
| 57 | + var new_s2 = undefined; // 新的售票员2(售票员id_姓名_工号) | ||
| 47 | 58 | ||
| 48 | return { | 59 | return { |
| 49 | pre: function(scope, element, attr) { | 60 | pre: function(scope, element, attr) { |
| @@ -51,33 +62,361 @@ angular.module('ScheduleApp').directive( | @@ -51,33 +62,361 @@ angular.module('ScheduleApp').directive( | ||
| 51 | }, | 62 | }, |
| 52 | post: function(scope, element, attr) { | 63 | post: function(scope, element, attr) { |
| 53 | 64 | ||
| 65 | + /** | ||
| 66 | + * 刷新车辆数据。 | ||
| 67 | + */ | ||
| 68 | + scope[ctrlAs].$$internal_refresh_dsdata_cl = function() { | ||
| 69 | + if (new_cl1) { | ||
| 70 | + var new_cl1_id = new_cl1.split("_")[0]; | ||
| 71 | + var new_cl1_zbh = new_cl1.split("_")[1]; | ||
| 72 | + | ||
| 73 | + if (new_cl2) { | ||
| 74 | + var new_cl2_id = new_cl2.split("_")[0]; | ||
| 75 | + var new_cl2_zbh = new_cl2.split("_")[1]; | ||
| 76 | + | ||
| 77 | + if (old_isfb) { // 使用分班判定 | ||
| 78 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | ||
| 79 | + if (index < old_isfb_index) { | ||
| 80 | + obj.cl = new_cl1_id; | ||
| 81 | + obj.clZbh = new_cl1_zbh; | ||
| 82 | + } else { | ||
| 83 | + obj.cl = new_cl2_id; | ||
| 84 | + obj.clZbh = new_cl2_zbh; | ||
| 85 | + } | ||
| 86 | + }); | ||
| 87 | + | ||
| 88 | + } else if (old_hasJCBC && old_firstJCBCFcno < old_max_fcno) { // 使用进出场判定 | ||
| 89 | + angular.forEach(scope[ctrlAs].ds, function(obj) { | ||
| 90 | + if (obj.fcno <= old_firstJCBCFcno) { | ||
| 91 | + obj.cl = new_cl1_id; | ||
| 92 | + obj.clZbh = new_cl1_zbh; | ||
| 93 | + } else { | ||
| 94 | + obj.cl = new_cl2_id; | ||
| 95 | + obj.clZbh = new_cl2_zbh; | ||
| 96 | + } | ||
| 97 | + }); | ||
| 98 | + } else { // 使用一半一半班次判定 | ||
| 99 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | ||
| 100 | + if (index < old_half_bcs) { | ||
| 101 | + obj.cl = new_cl1_id; | ||
| 102 | + obj.clZbh = new_cl1_zbh; | ||
| 103 | + } else { | ||
| 104 | + obj.cl = new_cl2_id; | ||
| 105 | + obj.clZbh = new_cl2_zbh; | ||
| 106 | + } | ||
| 107 | + }); | ||
| 108 | + } | ||
| 109 | + | ||
| 110 | + } else { | ||
| 111 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | ||
| 112 | + obj.cl = new_cl1_id; | ||
| 113 | + obj.clZbh = new_cl1_zbh; | ||
| 114 | + }); | ||
| 115 | + } | ||
| 116 | + | ||
| 117 | + } else { | ||
| 118 | + // 使用旧的 | ||
| 119 | + angular.forEach(old_cl, function(value, key) { | ||
| 120 | + angular.forEach(value, function(i) { | ||
| 121 | + scope[ctrlAs].ds[i].cl = key.split("_")[0]; | ||
| 122 | + scope[ctrlAs].ds[i].clZbh = key.split("_")[1]; | ||
| 123 | + }); | ||
| 124 | + }); | ||
| 125 | + } | ||
| 126 | + }; | ||
| 127 | + | ||
| 128 | + /** | ||
| 129 | + * 刷新驾驶员数据。 | ||
| 130 | + */ | ||
| 131 | + scope[ctrlAs].$$internal_refresh_dsdata_j = function() { | ||
| 132 | + if (new_j1) { | ||
| 133 | + var new_j1_id = new_j1.split("_")[0]; | ||
| 134 | + var new_j1_name = new_j1.split("_")[1]; | ||
| 135 | + var new_j1_gh = new_j1.split("_")[2]; | ||
| 136 | + | ||
| 137 | + if (new_j2) { | ||
| 138 | + var new_j2_id = new_j2.split("_")[0]; | ||
| 139 | + var new_j2_name = new_j2.split("_")[1]; | ||
| 140 | + var new_j2_gh = new_j2.split("_")[2]; | ||
| 141 | + | ||
| 142 | + if (old_isfb) { // 使用分班判定 | ||
| 143 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | ||
| 144 | + if (index < old_isfb_index) { | ||
| 145 | + obj.j = new_j1_id; | ||
| 146 | + obj.jGh = new_j1_gh; | ||
| 147 | + obj.jName = new_j1_name; | ||
| 148 | + } else { | ||
| 149 | + obj.j = new_j2_id; | ||
| 150 | + obj.jGh = new_j2_gh; | ||
| 151 | + obj.jName = new_j2_name; | ||
| 152 | + } | ||
| 153 | + }); | ||
| 154 | + | ||
| 155 | + } else if (old_hasJCBC && old_firstJCBCFcno < old_max_fcno) { // 使用进出场判定 | ||
| 156 | + angular.forEach(scope[ctrlAs].ds, function(obj) { | ||
| 157 | + if (obj.fcno <= old_firstJCBCFcno) { | ||
| 158 | + obj.j = new_j1_id; | ||
| 159 | + obj.jGh = new_j1_gh; | ||
| 160 | + obj.jName = new_j1_name; | ||
| 161 | + } else { | ||
| 162 | + obj.j = new_j2_id; | ||
| 163 | + obj.jGh = new_j2_gh; | ||
| 164 | + obj.jName = new_j2_name; | ||
| 165 | + } | ||
| 166 | + }); | ||
| 167 | + } else { // 使用一半一半班次判定 | ||
| 168 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | ||
| 169 | + if (index < old_half_bcs) { | ||
| 170 | + obj.j = new_j1_id; | ||
| 171 | + obj.jGh = new_j1_gh; | ||
| 172 | + obj.jName = new_j1_name; | ||
| 173 | + } else { | ||
| 174 | + obj.j = new_j2_id; | ||
| 175 | + obj.jGh = new_j2_gh; | ||
| 176 | + obj.jName = new_j2_name; | ||
| 177 | + } | ||
| 178 | + }); | ||
| 179 | + } | ||
| 180 | + | ||
| 181 | + } else { | ||
| 182 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | ||
| 183 | + obj.j = new_j1_id; | ||
| 184 | + obj.jGh = new_j1_gh; | ||
| 185 | + obj.jName = new_j1_name; | ||
| 186 | + }); | ||
| 187 | + } | ||
| 188 | + | ||
| 189 | + } else { | ||
| 190 | + // 使用旧的 | ||
| 191 | + angular.forEach(old_j, function(value, key) { | ||
| 192 | + angular.forEach(value, function(i) { | ||
| 193 | + scope[ctrlAs].ds[i].j = key.split("_")[0]; | ||
| 194 | + scope[ctrlAs].ds[i].jName = key.split("_")[1]; | ||
| 195 | + scope[ctrlAs].ds[i].jGh = key.split("_")[2]; | ||
| 196 | + }); | ||
| 197 | + }); | ||
| 198 | + } | ||
| 199 | + }; | ||
| 200 | + /** | ||
| 201 | + * 刷新售票员数据。 | ||
| 202 | + */ | ||
| 203 | + scope[ctrlAs].$$internal_refresh_dsdata_s = function() { | ||
| 204 | + if (new_s1) { | ||
| 205 | + var new_s1_id = new_s1.split("_")[0]; | ||
| 206 | + var new_s1_name = new_s1.split("_")[1]; | ||
| 207 | + var new_s1_gh = new_s1.split("_")[2]; | ||
| 208 | + | ||
| 209 | + if (new_s2) { | ||
| 210 | + var new_s2_id = new_s2.split("_")[0]; | ||
| 211 | + var new_s2_name = new_s2.split("_")[1]; | ||
| 212 | + var new_s2_gh = new_s2.split("_")[2]; | ||
| 213 | + | ||
| 214 | + if (old_isfb) { // 使用分班判定 | ||
| 215 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | ||
| 216 | + if (index < old_isfb_index) { | ||
| 217 | + obj.s = new_s1_id; | ||
| 218 | + obj.sGh = new_s1_gh; | ||
| 219 | + obj.sName = new_s1_name; | ||
| 220 | + } else { | ||
| 221 | + obj.s = new_s2_id; | ||
| 222 | + obj.sGh = new_s2_gh; | ||
| 223 | + obj.sName = new_s2_name; | ||
| 224 | + } | ||
| 225 | + }); | ||
| 226 | + | ||
| 227 | + } else if (old_hasJCBC && old_firstJCBCFcno < old_max_fcno) { // 使用进出场判定 | ||
| 228 | + angular.forEach(scope[ctrlAs].ds, function(obj) { | ||
| 229 | + if (obj.fcno <= old_firstJCBCFcno) { | ||
| 230 | + obj.s = new_s1_id; | ||
| 231 | + obj.sGh = new_s1_gh; | ||
| 232 | + obj.sName = new_s1_name; | ||
| 233 | + } else { | ||
| 234 | + obj.s = new_s2_id; | ||
| 235 | + obj.sGh = new_s2_gh; | ||
| 236 | + obj.sName = new_s2_name; | ||
| 237 | + } | ||
| 238 | + }); | ||
| 239 | + } else { // 使用一半一半班次判定 | ||
| 240 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | ||
| 241 | + if (index < old_half_bcs) { | ||
| 242 | + obj.s = new_s1_id; | ||
| 243 | + obj.sGh = new_s1_gh; | ||
| 244 | + obj.sName = new_s1_name; | ||
| 245 | + } else { | ||
| 246 | + obj.s = new_s2_id; | ||
| 247 | + obj.sGh = new_s2_gh; | ||
| 248 | + obj.sName = new_s2_name; | ||
| 249 | + } | ||
| 250 | + }); | ||
| 251 | + } | ||
| 252 | + | ||
| 253 | + } else { | ||
| 254 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | ||
| 255 | + obj.s = new_s1_id; | ||
| 256 | + obj.sGh = new_s1_gh; | ||
| 257 | + obj.sName = new_s1_name; | ||
| 258 | + }); | ||
| 259 | + } | ||
| 260 | + | ||
| 261 | + } else { | ||
| 262 | + // 先清空 | ||
| 263 | + angular.forEach(scope[ctrlAs].ds, function(obj) { | ||
| 264 | + obj.s = undefined; | ||
| 265 | + obj.sGh = undefined; | ||
| 266 | + obj.sName = undefined; | ||
| 267 | + }); | ||
| 268 | + | ||
| 269 | + // 使用旧的 | ||
| 270 | + angular.forEach(old_s, function(value, key) { | ||
| 271 | + angular.forEach(value, function(i) { | ||
| 272 | + scope[ctrlAs].ds[i].s = key.split("_")[0]; | ||
| 273 | + scope[ctrlAs].ds[i].sName = key.split("_")[1]; | ||
| 274 | + scope[ctrlAs].ds[i].sGh = key.split("_")[2]; | ||
| 275 | + }); | ||
| 276 | + }); | ||
| 277 | + } | ||
| 278 | + }; | ||
| 279 | + | ||
| 280 | + /** | ||
| 281 | + * 刷新内部数据。 | ||
| 282 | + */ | ||
| 283 | + scope[ctrlAs].$$internal_refresh_dsdata = function() { | ||
| 284 | + // 更新车辆 | ||
| 285 | + scope[ctrlAs].$$internal_refresh_dsdata_cl(); | ||
| 286 | + | ||
| 287 | + // 更新驾驶员 | ||
| 288 | + scope[ctrlAs].$$internal_refresh_dsdata_j(); | ||
| 289 | + | ||
| 290 | + // 更新售票员 | ||
| 291 | + scope[ctrlAs].$$internal_refresh_dsdata_s(); | ||
| 292 | + }; | ||
| 293 | + | ||
| 54 | // -------------- 监控function ---------------// | 294 | // -------------- 监控function ---------------// |
| 295 | + attr.$observe('cl1', function(value) { | ||
| 296 | + if (value && value != "") { | ||
| 297 | + var obj = JSON.parse(value); | ||
| 298 | + if (obj.id && obj.zbh) { | ||
| 299 | + new_cl1 = obj.id + "_" + obj.zbh; | ||
| 300 | + } else { | ||
| 301 | + new_cl1 = undefined; | ||
| 302 | + } | ||
| 303 | + scope[ctrlAs].$$internal_refresh_dsdata(); | ||
| 304 | + } | ||
| 305 | + }); | ||
| 306 | + | ||
| 307 | + attr.$observe('cl2', function(value) { | ||
| 308 | + if (value && value != "") { | ||
| 309 | + var obj = JSON.parse(value); | ||
| 310 | + if (obj.id && obj.zbh) { | ||
| 311 | + new_cl2 = obj.id + "_" + obj.zbh; | ||
| 312 | + } else { | ||
| 313 | + new_cl2 = undefined; | ||
| 314 | + } | ||
| 315 | + scope[ctrlAs].$$internal_refresh_dsdata(); | ||
| 316 | + } | ||
| 317 | + }); | ||
| 318 | + | ||
| 319 | + attr.$observe('j1', function(value) { | ||
| 320 | + if (value && value != "") { | ||
| 321 | + var obj = JSON.parse(value); | ||
| 322 | + if (obj.id && obj.name && obj.jobCode) { | ||
| 323 | + new_j1 = obj.id + "_" + obj.name + "_" + obj.jobCode; | ||
| 324 | + } else { | ||
| 325 | + new_j1 = undefined; | ||
| 326 | + } | ||
| 327 | + scope[ctrlAs].$$internal_refresh_dsdata(); | ||
| 328 | + } | ||
| 329 | + }); | ||
| 330 | + | ||
| 331 | + attr.$observe('j2', function(value) { | ||
| 332 | + if (value && value != "") { | ||
| 333 | + var obj = JSON.parse(value); | ||
| 334 | + if (obj.id && obj.name && obj.jobCode) { | ||
| 335 | + new_j2 = obj.id + "_" + obj.name + "_" + obj.jobCode; | ||
| 336 | + } else { | ||
| 337 | + new_j2 = undefined; | ||
| 338 | + } | ||
| 339 | + scope[ctrlAs].$$internal_refresh_dsdata(); | ||
| 340 | + } | ||
| 341 | + }); | ||
| 342 | + | ||
| 343 | + attr.$observe('s1', function(value) { | ||
| 344 | + if (value && value != "") { | ||
| 345 | + var obj = JSON.parse(value); | ||
| 346 | + if (obj.id && obj.name && obj.jobCode) { | ||
| 347 | + new_s1 = obj.id + "_" + obj.name + "_" + obj.jobCode; | ||
| 348 | + } else { | ||
| 349 | + new_s1 = undefined; | ||
| 350 | + } | ||
| 351 | + scope[ctrlAs].$$internal_refresh_dsdata(); | ||
| 352 | + } | ||
| 353 | + }); | ||
| 354 | + | ||
| 355 | + attr.$observe('s2', function(value) { | ||
| 356 | + if (value && value != "") { | ||
| 357 | + var obj = JSON.parse(value); | ||
| 358 | + if (obj.id && obj.name && obj.jobCode) { | ||
| 359 | + new_s2 = obj.id + "_" + obj.name + "_" + obj.jobCode; | ||
| 360 | + } else { | ||
| 361 | + new_s2 = undefined; | ||
| 362 | + } | ||
| 363 | + scope[ctrlAs].$$internal_refresh_dsdata(); | ||
| 364 | + } | ||
| 365 | + }); | ||
| 366 | + | ||
| 55 | scope.$watch( | 367 | scope.$watch( |
| 56 | function() { | 368 | function() { |
| 57 | return scope[ctrlAs].ds; | 369 | return scope[ctrlAs].ds; |
| 58 | }, | 370 | }, |
| 59 | function(newValue, oldValue) { | 371 | function(newValue, oldValue) { |
| 60 | if (newValue && newValue.length > 0) { | 372 | if (newValue && newValue.length > 0) { |
| 373 | + | ||
| 374 | + var j1 = newValue[0].j; | ||
| 375 | + | ||
| 61 | angular.forEach(newValue, function(obj, index) { | 376 | angular.forEach(newValue, function(obj, index) { |
| 62 | var k1 = obj.cl + "_" + obj.clZbh; | 377 | var k1 = obj.cl + "_" + obj.clZbh; |
| 63 | - var k2 = obj.j + "_" + obj.jName + "_" + obj.jGh; | ||
| 64 | - var k3 = obj.s + "_" + obj.sName + "_" + obj.sGh; | 378 | + var k2 = !obj.j? undefined: obj.j + "_" + obj.jName + "_" + obj.jGh; |
| 379 | + var k3 = !obj.s? undefined: obj.s + "_" + obj.sName + "_" + obj.sGh; | ||
| 65 | 380 | ||
| 66 | - if (!old_cl.k1) { | 381 | + if (!old_cl[k1]) { |
| 67 | old_cl[k1] = []; | 382 | old_cl[k1] = []; |
| 68 | } | 383 | } |
| 69 | - if (!old_j.k2) { | 384 | + if (!old_j[k2] && k2) { |
| 70 | old_j[k2] = []; | 385 | old_j[k2] = []; |
| 71 | } | 386 | } |
| 72 | - if (!old_s.k3) { | 387 | + if (!old_s[k3] && k3) { |
| 73 | old_s[k3] = []; | 388 | old_s[k3] = []; |
| 74 | } | 389 | } |
| 75 | 390 | ||
| 76 | - old_cl[k1].push(index); | ||
| 77 | - old_j[k2].push(index); | ||
| 78 | - old_s[k3].push(index); | 391 | + // 闭包 |
| 392 | + (function(i) { | ||
| 393 | + old_cl[k1].push(i); | ||
| 394 | + if (k2) { | ||
| 395 | + old_j[k2].push(i); | ||
| 396 | + } | ||
| 397 | + if (k3) { | ||
| 398 | + old_s[k3].push(i); | ||
| 399 | + } | ||
| 400 | + })(index); | ||
| 401 | + | ||
| 402 | + // 判断是否分班 | ||
| 403 | + if (j1 != obj.j && !old_isfb) { | ||
| 404 | + old_isfb = true; | ||
| 405 | + old_isfb_index = index; | ||
| 406 | + } | ||
| 407 | + | ||
| 408 | + // 判断进出场 | ||
| 409 | + if (obj.bcType == 'in' && !old_hasJCBC) { | ||
| 410 | + old_hasJCBC = true; | ||
| 411 | + old_firstJCBCFcno = obj.fcno; | ||
| 412 | + } | ||
| 413 | + }); | ||
| 414 | + | ||
| 415 | + old_max_fcno = newValue[newValue.length - 1].fcno; | ||
| 416 | + old_half_bcs = newValue.length / 2; | ||
| 79 | 417 | ||
| 80 | - }) | 418 | + // 可以用resource封装一下 |
| 419 | + // TODO: | ||
| 81 | } | 420 | } |
| 82 | } | 421 | } |
| 83 | ); | 422 | ); |
src/main/resources/static/pages/scheduleApp/module/common/dts2/scheduleplan/saPlaninfoeditTemplate.html
| @@ -8,6 +8,7 @@ | @@ -8,6 +8,7 @@ | ||
| 8 | <tr role="row" class="heading"> | 8 | <tr role="row" class="heading"> |
| 9 | <th style="width: 50px;">序号</th> | 9 | <th style="width: 50px;">序号</th> |
| 10 | <th style="width: 80px;">发车时间</th> | 10 | <th style="width: 80px;">发车时间</th> |
| 11 | + <th style="width: 70px;">车辆</th> | ||
| 11 | <th style="width: 60px;">驾驶员</th> | 12 | <th style="width: 60px;">驾驶员</th> |
| 12 | <th style="width: 60px;">售票员</th> | 13 | <th style="width: 60px;">售票员</th> |
| 13 | <th style="width: 100px;">停车场</th> | 14 | <th style="width: 100px;">停车场</th> |
| @@ -25,6 +26,11 @@ | @@ -25,6 +26,11 @@ | ||
| 25 | </td> | 26 | </td> |
| 26 | <td> | 27 | <td> |
| 27 | <a href="#"> | 28 | <a href="#"> |
| 29 | + <span ng-bind="info.clZbh"></span> | ||
| 30 | + </a> | ||
| 31 | + </td> | ||
| 32 | + <td> | ||
| 33 | + <a href="#"> | ||
| 28 | <span ng-bind="info.jName"></span> | 34 | <span ng-bind="info.jName"></span> |
| 29 | </a> | 35 | </a> |
| 30 | </td> | 36 | </td> |
| @@ -34,9 +40,12 @@ | @@ -34,9 +40,12 @@ | ||
| 34 | </a> | 40 | </a> |
| 35 | </td> | 41 | </td> |
| 36 | <td> | 42 | <td> |
| 37 | - <a href="#"> | 43 | + <a href="#" ng-if="info.bcType == 'in'"> |
| 38 | <span ng-bind="info.zdzName"></span> | 44 | <span ng-bind="info.zdzName"></span> |
| 39 | </a> | 45 | </a> |
| 46 | + <a href="#" ng-if="info.bcType == 'out'"> | ||
| 47 | + <span ng-bind="info.qdzName"></span> | ||
| 48 | + </a> | ||
| 40 | </td> | 49 | </td> |
| 41 | </tr> | 50 | </tr> |
| 42 | </tbody> | 51 | </tbody> |
src/main/resources/static/pages/scheduleApp/module/common/main.js
| @@ -68,11 +68,11 @@ ScheduleApp.factory('DataStore', [ | @@ -68,11 +68,11 @@ ScheduleApp.factory('DataStore', [ | ||
| 68 | dataMap.cl = result.data.data; | 68 | dataMap.cl = result.data.data; |
| 69 | angular.forEach(result.data.data, function(obj) { | 69 | angular.forEach(result.data.data, function(obj) { |
| 70 | // 全拼 | 70 | // 全拼 |
| 71 | - obj["$fullChars"] = pinyin.getFullChars(obj.insideCode ? "": obj.insideCode); | 71 | + obj["$fullChars"] = pinyin.getFullChars(obj.insideCode ? obj.insideCode: ""); |
| 72 | // 简拼 | 72 | // 简拼 |
| 73 | - obj["$camelChars"] = pinyin.getCamelChars(obj.insideCode ? "": obj.insideCode); | 73 | + obj["$camelChars"] = pinyin.getCamelChars(obj.insideCode ? obj.insideCode: ""); |
| 74 | // 原值 | 74 | // 原值 |
| 75 | - obj["$calcu_str"] = obj.insideCode? "": obj.insideCode; | 75 | + obj["$calcu_str"] = obj.insideCode? obj.insideCode: ""; |
| 76 | }); | 76 | }); |
| 77 | }); | 77 | }); |
| 78 | 78 | ||
| @@ -82,7 +82,7 @@ ScheduleApp.factory('DataStore', [ | @@ -82,7 +82,7 @@ ScheduleApp.factory('DataStore', [ | ||
| 82 | }).then(function(result) { | 82 | }).then(function(result) { |
| 83 | // 简拼数据 | 83 | // 简拼数据 |
| 84 | dataMap.ry = result.data.data; | 84 | dataMap.ry = result.data.data; |
| 85 | - angular.forEach(dataMap.ryInfos, function(obj) { | 85 | + angular.forEach(result.data.data, function(obj) { |
| 86 | // 全拼 | 86 | // 全拼 |
| 87 | obj["$fullChars"] = pinyin.getFullChars(obj.personnelName + "-" + obj.jobCode); | 87 | obj["$fullChars"] = pinyin.getFullChars(obj.personnelName + "-" + obj.jobCode); |
| 88 | // 简拼 | 88 | // 简拼 |
src/main/resources/static/pages/scheduleApp/module/common/prj-common-directive.js
| @@ -1478,7 +1478,7 @@ angular.module('ScheduleApp').directive('saSelect5', [ | @@ -1478,7 +1478,7 @@ angular.module('ScheduleApp').directive('saSelect5', [ | ||
| 1478 | // 处理search | 1478 | // 处理search |
| 1479 | console.log("search:" + search); | 1479 | console.log("search:" + search); |
| 1480 | 1480 | ||
| 1481 | - if (dataModelType == 'ajax') { | 1481 | + if (dataModelType == 'ajax' || dataModelType == 'local') { |
| 1482 | scope[ctrlAs].$$data = []; | 1482 | scope[ctrlAs].$$data = []; |
| 1483 | for (var k = 0; k < scope[ctrlAs].$$data_real.length; k++) { | 1483 | for (var k = 0; k < scope[ctrlAs].$$data_real.length; k++) { |
| 1484 | var upTerm = search.toUpperCase(); | 1484 | var upTerm = search.toUpperCase(); |
| @@ -1705,6 +1705,25 @@ angular.module('ScheduleApp').directive('saSelect5', [ | @@ -1705,6 +1705,25 @@ angular.module('ScheduleApp').directive('saSelect5', [ | ||
| 1705 | }; | 1705 | }; |
| 1706 | 1706 | ||
| 1707 | /** | 1707 | /** |
| 1708 | + * 内部方法,读取传过来的动态数据源。 | ||
| 1709 | + * @param ldata | ||
| 1710 | + */ | ||
| 1711 | + scope[ctrlAs].$$internal_pass_data = function(ldata) { | ||
| 1712 | + // 重新创建内部保存的数据 | ||
| 1713 | + scope[ctrlAs].$$data_real = []; | ||
| 1714 | + // 重新创建内部ui-select显示用数据,默认取10条记录显示 | ||
| 1715 | + scope[ctrlAs].$$data = []; | ||
| 1716 | + | ||
| 1717 | + // 本地动态数据直接显示,暂时不优化 | ||
| 1718 | + for (var i = 0; i < ldata.length; i++) { | ||
| 1719 | + scope[ctrlAs].$$data_real.push(ldata[i]); | ||
| 1720 | + scope[ctrlAs].$$data.push(ldata[i]); | ||
| 1721 | + } | ||
| 1722 | + | ||
| 1723 | + scope[ctrlAs].$$internal_validate_model(); | ||
| 1724 | + }; | ||
| 1725 | + | ||
| 1726 | + /** | ||
| 1708 | * 监控dsparams属性变化 | 1727 | * 监控dsparams属性变化 |
| 1709 | */ | 1728 | */ |
| 1710 | attr.$observe("dsparams", function(value) { | 1729 | attr.$observe("dsparams", function(value) { |
| @@ -1716,6 +1735,7 @@ angular.module('ScheduleApp').directive('saSelect5', [ | @@ -1716,6 +1735,7 @@ angular.module('ScheduleApp').directive('saSelect5', [ | ||
| 1716 | // {type: 'ajax', param: 'ajax查询参数对象', atype: 'ajax查询累西'} | 1735 | // {type: 'ajax', param: 'ajax查询参数对象', atype: 'ajax查询累西'} |
| 1717 | // {type: 'dic', param: 'dic名字'} | 1736 | // {type: 'dic', param: 'dic名字'} |
| 1718 | // {type: 'local', param: '本地存储type名字'} | 1737 | // {type: 'local', param: '本地存储type名字'} |
| 1738 | + // {type: 'passdata', : 'ldata': '本地存储数据'} | ||
| 1719 | 1739 | ||
| 1720 | if (obj.type == 'dic') { | 1740 | if (obj.type == 'dic') { |
| 1721 | dataModelType = 'dic'; | 1741 | dataModelType = 'dic'; |
| @@ -1727,6 +1747,9 @@ angular.module('ScheduleApp').directive('saSelect5', [ | @@ -1727,6 +1747,9 @@ angular.module('ScheduleApp').directive('saSelect5', [ | ||
| 1727 | } else if (obj.type == 'local') { | 1747 | } else if (obj.type == 'local') { |
| 1728 | dataModelType = 'local'; | 1748 | dataModelType = 'local'; |
| 1729 | scope[ctrlAs].$$internal_local_data(obj.param); | 1749 | scope[ctrlAs].$$internal_local_data(obj.param); |
| 1750 | + } else if (obj.type == 'passdata') { | ||
| 1751 | + dataModelType = 'passdata'; | ||
| 1752 | + scope[ctrlAs].$$internal_pass_data(obj.ldata); | ||
| 1730 | } else { | 1753 | } else { |
| 1731 | throw new Error("dsparams参数格式异常=" + obj); | 1754 | throw new Error("dsparams参数格式异常=" + obj); |
| 1732 | } | 1755 | } |
| @@ -4302,9 +4325,8 @@ angular.module('ScheduleApp').directive( | @@ -4302,9 +4325,8 @@ angular.module('ScheduleApp').directive( | ||
| 4302 | controllerAs: '$saPlanInfoEditCtrl', | 4325 | controllerAs: '$saPlanInfoEditCtrl', |
| 4303 | bindToController: true, | 4326 | bindToController: true, |
| 4304 | controller: function() { | 4327 | controller: function() { |
| 4305 | - var self = this; | 4328 | + //var self = this; |
| 4306 | 4329 | ||
| 4307 | - // TODO: | ||
| 4308 | }, | 4330 | }, |
| 4309 | 4331 | ||
| 4310 | compile: function(tElem, tAttrs) { | 4332 | compile: function(tElem, tAttrs) { |
| @@ -4322,8 +4344,20 @@ angular.module('ScheduleApp').directive( | @@ -4322,8 +4344,20 @@ angular.module('ScheduleApp').directive( | ||
| 4322 | var old_cl = {}; // key:{车辆id_车辆自编号},value:所在list下标数组 | 4344 | var old_cl = {}; // key:{车辆id_车辆自编号},value:所在list下标数组 |
| 4323 | var old_j = {}; // key:{驾驶员id_姓名_工号}, value:所在list下标数组 | 4345 | var old_j = {}; // key:{驾驶员id_姓名_工号}, value:所在list下标数组 |
| 4324 | var old_s = {}; // key:{售票员id_姓名_工号}, value:所在list下标数组 | 4346 | var old_s = {}; // key:{售票员id_姓名_工号}, value:所在list下标数组 |
| 4347 | + var old_isfb = false; // 是否有分班 | ||
| 4348 | + var old_isfb_index = 0; // 分班开始索引 | ||
| 4349 | + var old_hasJCBC = false; // 是否有进场班次 | ||
| 4350 | + var old_max_fcno = 0; // 最大发车顺序号 | ||
| 4351 | + var old_firstJCBCFcno = 0; // 第一个进场班次发车顺序号 | ||
| 4352 | + var old_half_bcs = 0; // 一般的班次数量 | ||
| 4325 | 4353 | ||
| 4326 | // 内部变量,变更的车辆,变更的人员 | 4354 | // 内部变量,变更的车辆,变更的人员 |
| 4355 | + var new_cl1 = undefined; // 新的车辆1(车辆id_车辆自编号) | ||
| 4356 | + var new_cl2 = undefined; // 新的车辆2(车辆id_车辆自编号) | ||
| 4357 | + var new_j1 = undefined; // 新的驾驶员1(驾驶员id_姓名_工号) | ||
| 4358 | + var new_j2 = undefined; // 新的驾驶员2(驾驶员id_姓名_工号) | ||
| 4359 | + var new_s1 = undefined; // 新的售票员1(售票员id_姓名_工号) | ||
| 4360 | + var new_s2 = undefined; // 新的售票员2(售票员id_姓名_工号) | ||
| 4327 | 4361 | ||
| 4328 | return { | 4362 | return { |
| 4329 | pre: function(scope, element, attr) { | 4363 | pre: function(scope, element, attr) { |
| @@ -4331,33 +4365,361 @@ angular.module('ScheduleApp').directive( | @@ -4331,33 +4365,361 @@ angular.module('ScheduleApp').directive( | ||
| 4331 | }, | 4365 | }, |
| 4332 | post: function(scope, element, attr) { | 4366 | post: function(scope, element, attr) { |
| 4333 | 4367 | ||
| 4368 | + /** | ||
| 4369 | + * 刷新车辆数据。 | ||
| 4370 | + */ | ||
| 4371 | + scope[ctrlAs].$$internal_refresh_dsdata_cl = function() { | ||
| 4372 | + if (new_cl1) { | ||
| 4373 | + var new_cl1_id = new_cl1.split("_")[0]; | ||
| 4374 | + var new_cl1_zbh = new_cl1.split("_")[1]; | ||
| 4375 | + | ||
| 4376 | + if (new_cl2) { | ||
| 4377 | + var new_cl2_id = new_cl2.split("_")[0]; | ||
| 4378 | + var new_cl2_zbh = new_cl2.split("_")[1]; | ||
| 4379 | + | ||
| 4380 | + if (old_isfb) { // 使用分班判定 | ||
| 4381 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | ||
| 4382 | + if (index < old_isfb_index) { | ||
| 4383 | + obj.cl = new_cl1_id; | ||
| 4384 | + obj.clZbh = new_cl1_zbh; | ||
| 4385 | + } else { | ||
| 4386 | + obj.cl = new_cl2_id; | ||
| 4387 | + obj.clZbh = new_cl2_zbh; | ||
| 4388 | + } | ||
| 4389 | + }); | ||
| 4390 | + | ||
| 4391 | + } else if (old_hasJCBC && old_firstJCBCFcno < old_max_fcno) { // 使用进出场判定 | ||
| 4392 | + angular.forEach(scope[ctrlAs].ds, function(obj) { | ||
| 4393 | + if (obj.fcno <= old_firstJCBCFcno) { | ||
| 4394 | + obj.cl = new_cl1_id; | ||
| 4395 | + obj.clZbh = new_cl1_zbh; | ||
| 4396 | + } else { | ||
| 4397 | + obj.cl = new_cl2_id; | ||
| 4398 | + obj.clZbh = new_cl2_zbh; | ||
| 4399 | + } | ||
| 4400 | + }); | ||
| 4401 | + } else { // 使用一半一半班次判定 | ||
| 4402 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | ||
| 4403 | + if (index < old_half_bcs) { | ||
| 4404 | + obj.cl = new_cl1_id; | ||
| 4405 | + obj.clZbh = new_cl1_zbh; | ||
| 4406 | + } else { | ||
| 4407 | + obj.cl = new_cl2_id; | ||
| 4408 | + obj.clZbh = new_cl2_zbh; | ||
| 4409 | + } | ||
| 4410 | + }); | ||
| 4411 | + } | ||
| 4412 | + | ||
| 4413 | + } else { | ||
| 4414 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | ||
| 4415 | + obj.cl = new_cl1_id; | ||
| 4416 | + obj.clZbh = new_cl1_zbh; | ||
| 4417 | + }); | ||
| 4418 | + } | ||
| 4419 | + | ||
| 4420 | + } else { | ||
| 4421 | + // 使用旧的 | ||
| 4422 | + angular.forEach(old_cl, function(value, key) { | ||
| 4423 | + angular.forEach(value, function(i) { | ||
| 4424 | + scope[ctrlAs].ds[i].cl = key.split("_")[0]; | ||
| 4425 | + scope[ctrlAs].ds[i].clZbh = key.split("_")[1]; | ||
| 4426 | + }); | ||
| 4427 | + }); | ||
| 4428 | + } | ||
| 4429 | + }; | ||
| 4430 | + | ||
| 4431 | + /** | ||
| 4432 | + * 刷新驾驶员数据。 | ||
| 4433 | + */ | ||
| 4434 | + scope[ctrlAs].$$internal_refresh_dsdata_j = function() { | ||
| 4435 | + if (new_j1) { | ||
| 4436 | + var new_j1_id = new_j1.split("_")[0]; | ||
| 4437 | + var new_j1_name = new_j1.split("_")[1]; | ||
| 4438 | + var new_j1_gh = new_j1.split("_")[2]; | ||
| 4439 | + | ||
| 4440 | + if (new_j2) { | ||
| 4441 | + var new_j2_id = new_j2.split("_")[0]; | ||
| 4442 | + var new_j2_name = new_j2.split("_")[1]; | ||
| 4443 | + var new_j2_gh = new_j2.split("_")[2]; | ||
| 4444 | + | ||
| 4445 | + if (old_isfb) { // 使用分班判定 | ||
| 4446 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | ||
| 4447 | + if (index < old_isfb_index) { | ||
| 4448 | + obj.j = new_j1_id; | ||
| 4449 | + obj.jGh = new_j1_gh; | ||
| 4450 | + obj.jName = new_j1_name; | ||
| 4451 | + } else { | ||
| 4452 | + obj.j = new_j2_id; | ||
| 4453 | + obj.jGh = new_j2_gh; | ||
| 4454 | + obj.jName = new_j2_name; | ||
| 4455 | + } | ||
| 4456 | + }); | ||
| 4457 | + | ||
| 4458 | + } else if (old_hasJCBC && old_firstJCBCFcno < old_max_fcno) { // 使用进出场判定 | ||
| 4459 | + angular.forEach(scope[ctrlAs].ds, function(obj) { | ||
| 4460 | + if (obj.fcno <= old_firstJCBCFcno) { | ||
| 4461 | + obj.j = new_j1_id; | ||
| 4462 | + obj.jGh = new_j1_gh; | ||
| 4463 | + obj.jName = new_j1_name; | ||
| 4464 | + } else { | ||
| 4465 | + obj.j = new_j2_id; | ||
| 4466 | + obj.jGh = new_j2_gh; | ||
| 4467 | + obj.jName = new_j2_name; | ||
| 4468 | + } | ||
| 4469 | + }); | ||
| 4470 | + } else { // 使用一半一半班次判定 | ||
| 4471 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | ||
| 4472 | + if (index < old_half_bcs) { | ||
| 4473 | + obj.j = new_j1_id; | ||
| 4474 | + obj.jGh = new_j1_gh; | ||
| 4475 | + obj.jName = new_j1_name; | ||
| 4476 | + } else { | ||
| 4477 | + obj.j = new_j2_id; | ||
| 4478 | + obj.jGh = new_j2_gh; | ||
| 4479 | + obj.jName = new_j2_name; | ||
| 4480 | + } | ||
| 4481 | + }); | ||
| 4482 | + } | ||
| 4483 | + | ||
| 4484 | + } else { | ||
| 4485 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | ||
| 4486 | + obj.j = new_j1_id; | ||
| 4487 | + obj.jGh = new_j1_gh; | ||
| 4488 | + obj.jName = new_j1_name; | ||
| 4489 | + }); | ||
| 4490 | + } | ||
| 4491 | + | ||
| 4492 | + } else { | ||
| 4493 | + // 使用旧的 | ||
| 4494 | + angular.forEach(old_j, function(value, key) { | ||
| 4495 | + angular.forEach(value, function(i) { | ||
| 4496 | + scope[ctrlAs].ds[i].j = key.split("_")[0]; | ||
| 4497 | + scope[ctrlAs].ds[i].jName = key.split("_")[1]; | ||
| 4498 | + scope[ctrlAs].ds[i].jGh = key.split("_")[2]; | ||
| 4499 | + }); | ||
| 4500 | + }); | ||
| 4501 | + } | ||
| 4502 | + }; | ||
| 4503 | + /** | ||
| 4504 | + * 刷新售票员数据。 | ||
| 4505 | + */ | ||
| 4506 | + scope[ctrlAs].$$internal_refresh_dsdata_s = function() { | ||
| 4507 | + if (new_s1) { | ||
| 4508 | + var new_s1_id = new_s1.split("_")[0]; | ||
| 4509 | + var new_s1_name = new_s1.split("_")[1]; | ||
| 4510 | + var new_s1_gh = new_s1.split("_")[2]; | ||
| 4511 | + | ||
| 4512 | + if (new_s2) { | ||
| 4513 | + var new_s2_id = new_s2.split("_")[0]; | ||
| 4514 | + var new_s2_name = new_s2.split("_")[1]; | ||
| 4515 | + var new_s2_gh = new_s2.split("_")[2]; | ||
| 4516 | + | ||
| 4517 | + if (old_isfb) { // 使用分班判定 | ||
| 4518 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | ||
| 4519 | + if (index < old_isfb_index) { | ||
| 4520 | + obj.s = new_s1_id; | ||
| 4521 | + obj.sGh = new_s1_gh; | ||
| 4522 | + obj.sName = new_s1_name; | ||
| 4523 | + } else { | ||
| 4524 | + obj.s = new_s2_id; | ||
| 4525 | + obj.sGh = new_s2_gh; | ||
| 4526 | + obj.sName = new_s2_name; | ||
| 4527 | + } | ||
| 4528 | + }); | ||
| 4529 | + | ||
| 4530 | + } else if (old_hasJCBC && old_firstJCBCFcno < old_max_fcno) { // 使用进出场判定 | ||
| 4531 | + angular.forEach(scope[ctrlAs].ds, function(obj) { | ||
| 4532 | + if (obj.fcno <= old_firstJCBCFcno) { | ||
| 4533 | + obj.s = new_s1_id; | ||
| 4534 | + obj.sGh = new_s1_gh; | ||
| 4535 | + obj.sName = new_s1_name; | ||
| 4536 | + } else { | ||
| 4537 | + obj.s = new_s2_id; | ||
| 4538 | + obj.sGh = new_s2_gh; | ||
| 4539 | + obj.sName = new_s2_name; | ||
| 4540 | + } | ||
| 4541 | + }); | ||
| 4542 | + } else { // 使用一半一半班次判定 | ||
| 4543 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | ||
| 4544 | + if (index < old_half_bcs) { | ||
| 4545 | + obj.s = new_s1_id; | ||
| 4546 | + obj.sGh = new_s1_gh; | ||
| 4547 | + obj.sName = new_s1_name; | ||
| 4548 | + } else { | ||
| 4549 | + obj.s = new_s2_id; | ||
| 4550 | + obj.sGh = new_s2_gh; | ||
| 4551 | + obj.sName = new_s2_name; | ||
| 4552 | + } | ||
| 4553 | + }); | ||
| 4554 | + } | ||
| 4555 | + | ||
| 4556 | + } else { | ||
| 4557 | + angular.forEach(scope[ctrlAs].ds, function(obj, index) { | ||
| 4558 | + obj.s = new_s1_id; | ||
| 4559 | + obj.sGh = new_s1_gh; | ||
| 4560 | + obj.sName = new_s1_name; | ||
| 4561 | + }); | ||
| 4562 | + } | ||
| 4563 | + | ||
| 4564 | + } else { | ||
| 4565 | + // 先清空 | ||
| 4566 | + angular.forEach(scope[ctrlAs].ds, function(obj) { | ||
| 4567 | + obj.s = undefined; | ||
| 4568 | + obj.sGh = undefined; | ||
| 4569 | + obj.sName = undefined; | ||
| 4570 | + }); | ||
| 4571 | + | ||
| 4572 | + // 使用旧的 | ||
| 4573 | + angular.forEach(old_s, function(value, key) { | ||
| 4574 | + angular.forEach(value, function(i) { | ||
| 4575 | + scope[ctrlAs].ds[i].s = key.split("_")[0]; | ||
| 4576 | + scope[ctrlAs].ds[i].sName = key.split("_")[1]; | ||
| 4577 | + scope[ctrlAs].ds[i].sGh = key.split("_")[2]; | ||
| 4578 | + }); | ||
| 4579 | + }); | ||
| 4580 | + } | ||
| 4581 | + }; | ||
| 4582 | + | ||
| 4583 | + /** | ||
| 4584 | + * 刷新内部数据。 | ||
| 4585 | + */ | ||
| 4586 | + scope[ctrlAs].$$internal_refresh_dsdata = function() { | ||
| 4587 | + // 更新车辆 | ||
| 4588 | + scope[ctrlAs].$$internal_refresh_dsdata_cl(); | ||
| 4589 | + | ||
| 4590 | + // 更新驾驶员 | ||
| 4591 | + scope[ctrlAs].$$internal_refresh_dsdata_j(); | ||
| 4592 | + | ||
| 4593 | + // 更新售票员 | ||
| 4594 | + scope[ctrlAs].$$internal_refresh_dsdata_s(); | ||
| 4595 | + }; | ||
| 4596 | + | ||
| 4334 | // -------------- 监控function ---------------// | 4597 | // -------------- 监控function ---------------// |
| 4598 | + attr.$observe('cl1', function(value) { | ||
| 4599 | + if (value && value != "") { | ||
| 4600 | + var obj = JSON.parse(value); | ||
| 4601 | + if (obj.id && obj.zbh) { | ||
| 4602 | + new_cl1 = obj.id + "_" + obj.zbh; | ||
| 4603 | + } else { | ||
| 4604 | + new_cl1 = undefined; | ||
| 4605 | + } | ||
| 4606 | + scope[ctrlAs].$$internal_refresh_dsdata(); | ||
| 4607 | + } | ||
| 4608 | + }); | ||
| 4609 | + | ||
| 4610 | + attr.$observe('cl2', function(value) { | ||
| 4611 | + if (value && value != "") { | ||
| 4612 | + var obj = JSON.parse(value); | ||
| 4613 | + if (obj.id && obj.zbh) { | ||
| 4614 | + new_cl2 = obj.id + "_" + obj.zbh; | ||
| 4615 | + } else { | ||
| 4616 | + new_cl2 = undefined; | ||
| 4617 | + } | ||
| 4618 | + scope[ctrlAs].$$internal_refresh_dsdata(); | ||
| 4619 | + } | ||
| 4620 | + }); | ||
| 4621 | + | ||
| 4622 | + attr.$observe('j1', function(value) { | ||
| 4623 | + if (value && value != "") { | ||
| 4624 | + var obj = JSON.parse(value); | ||
| 4625 | + if (obj.id && obj.name && obj.jobCode) { | ||
| 4626 | + new_j1 = obj.id + "_" + obj.name + "_" + obj.jobCode; | ||
| 4627 | + } else { | ||
| 4628 | + new_j1 = undefined; | ||
| 4629 | + } | ||
| 4630 | + scope[ctrlAs].$$internal_refresh_dsdata(); | ||
| 4631 | + } | ||
| 4632 | + }); | ||
| 4633 | + | ||
| 4634 | + attr.$observe('j2', function(value) { | ||
| 4635 | + if (value && value != "") { | ||
| 4636 | + var obj = JSON.parse(value); | ||
| 4637 | + if (obj.id && obj.name && obj.jobCode) { | ||
| 4638 | + new_j2 = obj.id + "_" + obj.name + "_" + obj.jobCode; | ||
| 4639 | + } else { | ||
| 4640 | + new_j2 = undefined; | ||
| 4641 | + } | ||
| 4642 | + scope[ctrlAs].$$internal_refresh_dsdata(); | ||
| 4643 | + } | ||
| 4644 | + }); | ||
| 4645 | + | ||
| 4646 | + attr.$observe('s1', function(value) { | ||
| 4647 | + if (value && value != "") { | ||
| 4648 | + var obj = JSON.parse(value); | ||
| 4649 | + if (obj.id && obj.name && obj.jobCode) { | ||
| 4650 | + new_s1 = obj.id + "_" + obj.name + "_" + obj.jobCode; | ||
| 4651 | + } else { | ||
| 4652 | + new_s1 = undefined; | ||
| 4653 | + } | ||
| 4654 | + scope[ctrlAs].$$internal_refresh_dsdata(); | ||
| 4655 | + } | ||
| 4656 | + }); | ||
| 4657 | + | ||
| 4658 | + attr.$observe('s2', function(value) { | ||
| 4659 | + if (value && value != "") { | ||
| 4660 | + var obj = JSON.parse(value); | ||
| 4661 | + if (obj.id && obj.name && obj.jobCode) { | ||
| 4662 | + new_s2 = obj.id + "_" + obj.name + "_" + obj.jobCode; | ||
| 4663 | + } else { | ||
| 4664 | + new_s2 = undefined; | ||
| 4665 | + } | ||
| 4666 | + scope[ctrlAs].$$internal_refresh_dsdata(); | ||
| 4667 | + } | ||
| 4668 | + }); | ||
| 4669 | + | ||
| 4335 | scope.$watch( | 4670 | scope.$watch( |
| 4336 | function() { | 4671 | function() { |
| 4337 | return scope[ctrlAs].ds; | 4672 | return scope[ctrlAs].ds; |
| 4338 | }, | 4673 | }, |
| 4339 | function(newValue, oldValue) { | 4674 | function(newValue, oldValue) { |
| 4340 | if (newValue && newValue.length > 0) { | 4675 | if (newValue && newValue.length > 0) { |
| 4676 | + | ||
| 4677 | + var j1 = newValue[0].j; | ||
| 4678 | + | ||
| 4341 | angular.forEach(newValue, function(obj, index) { | 4679 | angular.forEach(newValue, function(obj, index) { |
| 4342 | var k1 = obj.cl + "_" + obj.clZbh; | 4680 | var k1 = obj.cl + "_" + obj.clZbh; |
| 4343 | - var k2 = obj.j + "_" + obj.jName + "_" + obj.jGh; | ||
| 4344 | - var k3 = obj.s + "_" + obj.sName + "_" + obj.sGh; | 4681 | + var k2 = !obj.j? undefined: obj.j + "_" + obj.jName + "_" + obj.jGh; |
| 4682 | + var k3 = !obj.s? undefined: obj.s + "_" + obj.sName + "_" + obj.sGh; | ||
| 4345 | 4683 | ||
| 4346 | - if (!old_cl.k1) { | 4684 | + if (!old_cl[k1]) { |
| 4347 | old_cl[k1] = []; | 4685 | old_cl[k1] = []; |
| 4348 | } | 4686 | } |
| 4349 | - if (!old_j.k2) { | 4687 | + if (!old_j[k2] && k2) { |
| 4350 | old_j[k2] = []; | 4688 | old_j[k2] = []; |
| 4351 | } | 4689 | } |
| 4352 | - if (!old_s.k3) { | 4690 | + if (!old_s[k3] && k3) { |
| 4353 | old_s[k3] = []; | 4691 | old_s[k3] = []; |
| 4354 | } | 4692 | } |
| 4355 | 4693 | ||
| 4356 | - old_cl[k1].push(index); | ||
| 4357 | - old_j[k2].push(index); | ||
| 4358 | - old_s[k3].push(index); | 4694 | + // 闭包 |
| 4695 | + (function(i) { | ||
| 4696 | + old_cl[k1].push(i); | ||
| 4697 | + if (k2) { | ||
| 4698 | + old_j[k2].push(i); | ||
| 4699 | + } | ||
| 4700 | + if (k3) { | ||
| 4701 | + old_s[k3].push(i); | ||
| 4702 | + } | ||
| 4703 | + })(index); | ||
| 4704 | + | ||
| 4705 | + // 判断是否分班 | ||
| 4706 | + if (j1 != obj.j && !old_isfb) { | ||
| 4707 | + old_isfb = true; | ||
| 4708 | + old_isfb_index = index; | ||
| 4709 | + } | ||
| 4710 | + | ||
| 4711 | + // 判断进出场 | ||
| 4712 | + if (obj.bcType == 'in' && !old_hasJCBC) { | ||
| 4713 | + old_hasJCBC = true; | ||
| 4714 | + old_firstJCBCFcno = obj.fcno; | ||
| 4715 | + } | ||
| 4716 | + }); | ||
| 4717 | + | ||
| 4718 | + old_max_fcno = newValue[newValue.length - 1].fcno; | ||
| 4719 | + old_half_bcs = newValue.length / 2; | ||
| 4359 | 4720 | ||
| 4360 | - }) | 4721 | + // 可以用resource封装一下 |
| 4722 | + // TODO: | ||
| 4361 | } | 4723 | } |
| 4362 | } | 4724 | } |
| 4363 | ); | 4725 | ); |
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/report/ext/edit.html
| @@ -51,7 +51,7 @@ | @@ -51,7 +51,7 @@ | ||
| 51 | <div class="col-md-7"> | 51 | <div class="col-md-7"> |
| 52 | <sa-Select5 name="cl1" | 52 | <sa-Select5 name="cl1" |
| 53 | model="ctrl.formData" | 53 | model="ctrl.formData" |
| 54 | - cmaps="{'cl1.id': 'id'}" | 54 | + cmaps="{'cl1.id': 'id', 'cl1.zbh': 'insideCode'}" |
| 55 | dcname="cl1.id" | 55 | dcname="cl1.id" |
| 56 | icname="id" | 56 | icname="id" |
| 57 | dsparams="{{ {type: 'local', param: 'cl' } | json }}" | 57 | dsparams="{{ {type: 'local', param: 'cl' } | json }}" |
| @@ -59,20 +59,21 @@ | @@ -59,20 +59,21 @@ | ||
| 59 | iterobjexp="item.insideCode" | 59 | iterobjexp="item.insideCode" |
| 60 | searchph="请输拼音..." | 60 | searchph="请输拼音..." |
| 61 | searchexp="this.insideCode" | 61 | searchexp="this.insideCode" |
| 62 | - required > | 62 | + <!--required --> |
| 63 | + > | ||
| 63 | </sa-Select5> | 64 | </sa-Select5> |
| 64 | </div> | 65 | </div> |
| 65 | - <!-- 隐藏块,显示验证信息 --> | ||
| 66 | - <div class="alert alert-danger well-sm" ng-show="myForm.cl1.$error.required"> | ||
| 67 | - 车辆1必须选择 | ||
| 68 | - </div> | 66 | + <!--<!– 隐藏块,显示验证信息 –>--> |
| 67 | + <!--<div class="alert alert-danger well-sm" ng-show="myForm.cl1.$error.required">--> | ||
| 68 | + <!--车辆1必须选择--> | ||
| 69 | + <!--</div>--> | ||
| 69 | </div> | 70 | </div> |
| 70 | <div class="form-group has-success has-feedback"> | 71 | <div class="form-group has-success has-feedback"> |
| 71 | <label class="col-md-5 control-label">车辆2:</label> | 72 | <label class="col-md-5 control-label">车辆2:</label> |
| 72 | <div class="col-md-7"> | 73 | <div class="col-md-7"> |
| 73 | <sa-Select5 name="cl2" | 74 | <sa-Select5 name="cl2" |
| 74 | model="ctrl.formData" | 75 | model="ctrl.formData" |
| 75 | - cmaps="{'cl2.id': 'id'}" | 76 | + cmaps="{'cl2.id': 'id', 'cl2.zbh': 'insideCode'}" |
| 76 | dcname="cl2.id" | 77 | dcname="cl2.id" |
| 77 | icname="id" | 78 | icname="id" |
| 78 | dsparams="{{ {type: 'local', param: 'cl' } | json }}" | 79 | dsparams="{{ {type: 'local', param: 'cl' } | json }}" |
| @@ -90,28 +91,30 @@ | @@ -90,28 +91,30 @@ | ||
| 90 | <div class="col-md-7"> | 91 | <div class="col-md-7"> |
| 91 | <sa-Select5 name="j1" | 92 | <sa-Select5 name="j1" |
| 92 | model="ctrl.formData" | 93 | model="ctrl.formData" |
| 93 | - cmaps="{'j1.id' : 'id'}" | 94 | + cmaps="{'j1.id' : 'id', 'j1.jobCode': 'jobCode', 'j1.name': 'personnelName'}" |
| 94 | dcname="j1.id" | 95 | dcname="j1.id" |
| 95 | icname="id" | 96 | icname="id" |
| 96 | dsparams="{{ {type: 'local', param: 'ry' } | json }}" | 97 | dsparams="{{ {type: 'local', param: 'ry' } | json }}" |
| 97 | iterobjname="item" | 98 | iterobjname="item" |
| 98 | - iterobjexp="item.personnelName" | 99 | + iterobjexp="item.personnelName + '(' + item.jobCode + ')'" |
| 99 | searchph="请输拼音..." | 100 | searchph="请输拼音..." |
| 100 | searchexp="this.personnelName" | 101 | searchexp="this.personnelName" |
| 101 | - required > | 102 | + <!--required --> |
| 103 | + > | ||
| 102 | </sa-Select5> | 104 | </sa-Select5> |
| 103 | </div> | 105 | </div> |
| 104 | - <!-- 隐藏块,显示验证信息 --> | ||
| 105 | - <div class="alert alert-danger well-sm" ng-show="myForm.j1.$error.required"> | ||
| 106 | - 驾驶员必须选择 | ||
| 107 | - </div> | 106 | + <!--<!– 隐藏块,显示验证信息 –>--> |
| 107 | + <!--<div class="alert alert-danger well-sm" ng-show="myForm.j1.$error.required">--> | ||
| 108 | + <!--驾驶员必须选择--> | ||
| 109 | + <!--</div>--> | ||
| 108 | </div> | 110 | </div> |
| 111 | + | ||
| 109 | <div class="form-group has-success has-feedback"> | 112 | <div class="form-group has-success has-feedback"> |
| 110 | <label class="col-md-5 control-label">售票员1:</label> | 113 | <label class="col-md-5 control-label">售票员1:</label> |
| 111 | <div class="col-md-7"> | 114 | <div class="col-md-7"> |
| 112 | <sa-Select5 name="s1" | 115 | <sa-Select5 name="s1" |
| 113 | model="ctrl.formData" | 116 | model="ctrl.formData" |
| 114 | - cmaps="{'s1.id' : 'id'}" | 117 | + cmaps="{'s1.id' : 'id', 's1.jobCode': 'jobCode', 's1.name': 'personnelName'}" |
| 115 | dcname="s1.id" | 118 | dcname="s1.id" |
| 116 | icname="id" | 119 | icname="id" |
| 117 | dsparams="{{ {type: 'local', param: 'ry' } | json }}" | 120 | dsparams="{{ {type: 'local', param: 'ry' } | json }}" |
| @@ -129,7 +132,7 @@ | @@ -129,7 +132,7 @@ | ||
| 129 | <div class="col-md-7"> | 132 | <div class="col-md-7"> |
| 130 | <sa-Select5 name="j2" | 133 | <sa-Select5 name="j2" |
| 131 | model="ctrl.formData" | 134 | model="ctrl.formData" |
| 132 | - cmaps="{'j2.id' : 'id'}" | 135 | + cmaps="{'j2.id' : 'id', 'j2.jobCode': 'jobCode', 'j2.name': 'personnelName'}" |
| 133 | dcname="j2.id" | 136 | dcname="j2.id" |
| 134 | icname="id" | 137 | icname="id" |
| 135 | dsparams="{{ {type: 'local', param: 'ry' } | json }}" | 138 | dsparams="{{ {type: 'local', param: 'ry' } | json }}" |
| @@ -141,12 +144,13 @@ | @@ -141,12 +144,13 @@ | ||
| 141 | </sa-Select5> | 144 | </sa-Select5> |
| 142 | </div> | 145 | </div> |
| 143 | </div> | 146 | </div> |
| 147 | + | ||
| 144 | <div class="form-group has-success has-feedback"> | 148 | <div class="form-group has-success has-feedback"> |
| 145 | <label class="col-md-5 control-label">售票员2:</label> | 149 | <label class="col-md-5 control-label">售票员2:</label> |
| 146 | <div class="col-md-7"> | 150 | <div class="col-md-7"> |
| 147 | <sa-Select5 name="s2" | 151 | <sa-Select5 name="s2" |
| 148 | model="ctrl.formData" | 152 | model="ctrl.formData" |
| 149 | - cmaps="{'s2.id' : 'id'}" | 153 | + cmaps="{'s2.id' : 'id', 's2.jobCode': 'jobCode', 's2.name': 'personnelName'}" |
| 150 | dcname="s2.id" | 154 | dcname="s2.id" |
| 151 | icname="id" | 155 | icname="id" |
| 152 | dsparams="{{ {type: 'local', param: 'ry' } | json }}" | 156 | dsparams="{{ {type: 'local', param: 'ry' } | json }}" |
| @@ -164,7 +168,7 @@ | @@ -164,7 +168,7 @@ | ||
| 164 | <div class="col-md-7"> | 168 | <div class="col-md-7"> |
| 165 | <sa-Select5 name="j3" | 169 | <sa-Select5 name="j3" |
| 166 | model="ctrl.formData" | 170 | model="ctrl.formData" |
| 167 | - cmaps="{'j3.id' : 'id'}" | 171 | + cmaps="{'j3.id' : 'id', 'j3.jobCode': 'jobCode', 'j3.name': 'personnelName'}" |
| 168 | dcname="j3.id" | 172 | dcname="j3.id" |
| 169 | icname="id" | 173 | icname="id" |
| 170 | dsparams="{{ {type: 'local', param: 'ry' } | json }}" | 174 | dsparams="{{ {type: 'local', param: 'ry' } | json }}" |
| @@ -176,12 +180,13 @@ | @@ -176,12 +180,13 @@ | ||
| 176 | </sa-Select5> | 180 | </sa-Select5> |
| 177 | </div> | 181 | </div> |
| 178 | </div> | 182 | </div> |
| 183 | + | ||
| 179 | <div class="form-group has-success has-feedback"> | 184 | <div class="form-group has-success has-feedback"> |
| 180 | <label class="col-md-5 control-label">售票员3:</label> | 185 | <label class="col-md-5 control-label">售票员3:</label> |
| 181 | <div class="col-md-7"> | 186 | <div class="col-md-7"> |
| 182 | <sa-Select5 name="s3" | 187 | <sa-Select5 name="s3" |
| 183 | model="ctrl.formData" | 188 | model="ctrl.formData" |
| 184 | - cmaps="{'s3.id' : 'id'}" | 189 | + cmaps="{'s3.id' : 'id', 's3.jobCode': 'jobCode', 's3.name': 'personnelName'}" |
| 185 | dcname="s3.id" | 190 | dcname="s3.id" |
| 186 | icname="id" | 191 | icname="id" |
| 187 | dsparams="{{ {type: 'local', param: 'ry' } | json }}" | 192 | dsparams="{{ {type: 'local', param: 'ry' } | json }}" |
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/report/ext/list.html
| @@ -71,7 +71,7 @@ | @@ -71,7 +71,7 @@ | ||
| 71 | <span ng-bind="$index + 1"></span> | 71 | <span ng-bind="$index + 1"></span> |
| 72 | </td> | 72 | </td> |
| 73 | <td> | 73 | <td> |
| 74 | - <!--<a ui-sref="schedulePlanInfoExtFormManage_edit({xlId: info.xlId, xlName: info.xlName, sd: info.scheduleDate, lpId: info.lpId, lpName: info.lpName})" class="btn btn-info btn-sm" > 修改 </a>--> | 74 | + <a ui-sref="schedulePlanInfoExtFormManage_edit({xlId: info.xlId, xlName: info.xlName, sd: info.scheduleDate, lpId: info.lpId, lpName: info.lpName})" class="btn btn-info btn-sm" > 修改 </a> |
| 75 | </td> | 75 | </td> |
| 76 | <td> | 76 | <td> |
| 77 | <span ng-bind="info.xlName"></span> | 77 | <span ng-bind="info.xlName"></span> |
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/report/ext/module.js
| @@ -43,6 +43,45 @@ angular.module('ScheduleApp').factory( | @@ -43,6 +43,45 @@ angular.module('ScheduleApp').factory( | ||
| 43 | var params = currentSearchCondition; // 查询条件 | 43 | var params = currentSearchCondition; // 查询条件 |
| 44 | return service.groupInfo_ext.list(params).$promise; | 44 | return service.groupInfo_ext.list(params).$promise; |
| 45 | 45 | ||
| 46 | + }, | ||
| 47 | + | ||
| 48 | + /** | ||
| 49 | + * 批量保存排班明细。 | ||
| 50 | + * @param rs | ||
| 51 | + */ | ||
| 52 | + batchUpdatePlanInfo: function(rs) { | ||
| 53 | + var deferred = $q.defer(); | ||
| 54 | + | ||
| 55 | + // ajax调用 | ||
| 56 | + var success_counts = 0; // 成功数 | ||
| 57 | + var error_counts = 0; // 失败数 | ||
| 58 | + | ||
| 59 | + angular.forEach(rs, function(obj) { | ||
| 60 | + console.log(rs.length); | ||
| 61 | + queryClass.save(obj, | ||
| 62 | + function(value) { | ||
| 63 | + if (value.status == 'ERROR') { | ||
| 64 | + error_counts ++; | ||
| 65 | + if (success_counts + error_counts == rs.length) { | ||
| 66 | + deferred.reject(); | ||
| 67 | + } | ||
| 68 | + } else { | ||
| 69 | + success_counts ++; | ||
| 70 | + if (success_counts + error_counts == rs.length) { | ||
| 71 | + deferred.resolve(); | ||
| 72 | + } | ||
| 73 | + } | ||
| 74 | + }, | ||
| 75 | + function() { | ||
| 76 | + error_counts ++; | ||
| 77 | + if (success_counts + error_counts == rs.length) { | ||
| 78 | + deferred.reject(); | ||
| 79 | + } | ||
| 80 | + } | ||
| 81 | + ) | ||
| 82 | + }); | ||
| 83 | + | ||
| 84 | + return deferred.promise; | ||
| 46 | } | 85 | } |
| 47 | 86 | ||
| 48 | }; | 87 | }; |
| @@ -154,7 +193,8 @@ angular.module('ScheduleApp').controller( | @@ -154,7 +193,8 @@ angular.module('ScheduleApp').controller( | ||
| 154 | [ | 193 | [ |
| 155 | 'SchedulePlanReportExtManageService', | 194 | 'SchedulePlanReportExtManageService', |
| 156 | '$stateParams', | 195 | '$stateParams', |
| 157 | - function(service, $stateParams) { | 196 | + '$state', |
| 197 | + function(service, $stateParams, $state) { | ||
| 158 | var self = this; | 198 | var self = this; |
| 159 | 199 | ||
| 160 | var SPlanInfo = service.getQueryClass(); | 200 | var SPlanInfo = service.getQueryClass(); |
| @@ -195,7 +235,14 @@ angular.module('ScheduleApp').controller( | @@ -195,7 +235,14 @@ angular.module('ScheduleApp').controller( | ||
| 195 | 235 | ||
| 196 | // 提交方法 | 236 | // 提交方法 |
| 197 | self.submit = function() { | 237 | self.submit = function() { |
| 198 | - // TODO:保存更新排班明细 | 238 | + service.batchUpdatePlanInfo(self.formData.planInfos).then( |
| 239 | + function() { | ||
| 240 | + $state.go("schedulePlanReportExtManage"); | ||
| 241 | + }, | ||
| 242 | + function() { | ||
| 243 | + alert("保存失败!"); | ||
| 244 | + } | ||
| 245 | + ); | ||
| 199 | 246 | ||
| 200 | }; | 247 | }; |
| 201 | 248 |
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/detailedit/form.html
| @@ -110,7 +110,7 @@ | @@ -110,7 +110,7 @@ | ||
| 110 | cmaps="{'sheetname' : 'name'}" | 110 | cmaps="{'sheetname' : 'name'}" |
| 111 | dcname="sheetname" | 111 | dcname="sheetname" |
| 112 | icname="name" | 112 | icname="name" |
| 113 | - dsparams="{{ {type: 'local', ldata: ctrl.sheetnames} | json }}" | 113 | + dsparams="{{ {type: 'passdata', ldata: ctrl.sheetnames} | json }}" |
| 114 | iterobjname="item" | 114 | iterobjname="item" |
| 115 | iterobjexp="item.name" | 115 | iterobjexp="item.name" |
| 116 | searchph="请选择..." | 116 | searchph="请选择..." |