Commit 964e396bb1b5477ea2cd1a5a515811dd985d2efa

Authored by 潘钊
2 parents 94ff0ce8 04ef5d12

Merge branch 'minhang' of http://222.66.0.204:8090/panzhaov5/bsth_control into minhang

Showing 27 changed files with 1608 additions and 95 deletions
src/main/java/com/bsth/controller/BaseController.java
@@ -9,6 +9,7 @@ import org.springframework.data.domain.Page; @@ -9,6 +9,7 @@ import org.springframework.data.domain.Page;
9 import org.springframework.data.domain.PageRequest; 9 import org.springframework.data.domain.PageRequest;
10 import org.springframework.data.domain.Sort; 10 import org.springframework.data.domain.Sort;
11 import org.springframework.data.domain.Sort.Direction; 11 import org.springframework.data.domain.Sort.Direction;
  12 +import org.springframework.util.CollectionUtils;
12 import org.springframework.web.bind.annotation.PathVariable; 13 import org.springframework.web.bind.annotation.PathVariable;
13 import org.springframework.web.bind.annotation.RequestMapping; 14 import org.springframework.web.bind.annotation.RequestMapping;
14 import org.springframework.web.bind.annotation.RequestMethod; 15 import org.springframework.web.bind.annotation.RequestMethod;
@@ -167,11 +168,24 @@ public class BaseController<T, ID extends Serializable> { @@ -167,11 +168,24 @@ public class BaseController<T, ID extends Serializable> {
167 */ 168 */
168 @RequestMapping(value = "/dataExport", method = RequestMethod.GET) 169 @RequestMapping(value = "/dataExport", method = RequestMethod.GET)
169 public void dataExport(HttpServletResponse response) throws Exception { 170 public void dataExport(HttpServletResponse response) throws Exception {
  171 + dataExport(response, null);
  172 + }
  173 +
  174 + @RequestMapping(value = "/dataExportExt", method = RequestMethod.GET)
  175 + public void dataExport(HttpServletResponse response, @RequestParam Map<String, Object> param) throws Exception {
170 // 1、使用ktr转换获取输出文件 176 // 1、使用ktr转换获取输出文件
171 File ktrfile = new File(this.getClass().getResource(getDataExportKtrClasspath()).toURI()); 177 File ktrfile = new File(this.getClass().getResource(getDataExportKtrClasspath()).toURI());
172 - File outputfile = dataImportExportService.fileDataOutput(  
173 - getDataExportFilename(),  
174 - ktrfile); 178 + File outputfile = null;
  179 + if (!CollectionUtils.isEmpty(param)) {
  180 + outputfile = dataImportExportService.fileDataOutput(
  181 + getDataExportFilename(),
  182 + ktrfile,
  183 + param);
  184 + } else {
  185 + outputfile = dataImportExportService.fileDataOutput(
  186 + getDataExportFilename(),
  187 + ktrfile);
  188 + }
175 189
176 System.out.println(outputfile.getName()); 190 System.out.println(outputfile.getName());
177 String filePath = outputfile.getAbsolutePath(); 191 String filePath = outputfile.getAbsolutePath();
src/main/java/com/bsth/controller/schedule/TTInfoDetailController.java
@@ -14,6 +14,7 @@ import com.bsth.service.StationRouteService; @@ -14,6 +14,7 @@ import com.bsth.service.StationRouteService;
14 import com.bsth.service.schedule.GuideboardInfoService; 14 import com.bsth.service.schedule.GuideboardInfoService;
15 import com.bsth.service.schedule.TTInfoDetailService; 15 import com.bsth.service.schedule.TTInfoDetailService;
16 import com.bsth.service.schedule.utils.DataImportExportService; 16 import com.bsth.service.schedule.utils.DataImportExportService;
  17 +import com.bsth.service.schedule.utils.DataToolsProperties;
17 import jxl.Cell; 18 import jxl.Cell;
18 import jxl.Sheet; 19 import jxl.Sheet;
19 import jxl.Workbook; 20 import jxl.Workbook;
@@ -26,6 +27,7 @@ import org.springframework.util.CollectionUtils; @@ -26,6 +27,7 @@ import org.springframework.util.CollectionUtils;
26 import org.springframework.web.bind.annotation.*; 27 import org.springframework.web.bind.annotation.*;
27 import org.springframework.web.multipart.MultipartFile; 28 import org.springframework.web.multipart.MultipartFile;
28 29
  30 +import javax.servlet.http.HttpServletResponse;
29 import java.io.File; 31 import java.io.File;
30 import java.util.*; 32 import java.util.*;
31 import java.util.regex.Matcher; 33 import java.util.regex.Matcher;
@@ -51,6 +53,8 @@ public class TTInfoDetailController extends BaseController&lt;TTInfoDetail, Long&gt; { @@ -51,6 +53,8 @@ public class TTInfoDetailController extends BaseController&lt;TTInfoDetail, Long&gt; {
51 private StationRouteService stationRouteService; 53 private StationRouteService stationRouteService;
52 @Autowired 54 @Autowired
53 private GuideboardInfoService guideboardInfoService; 55 private GuideboardInfoService guideboardInfoService;
  56 + @Autowired
  57 + private DataToolsProperties dataToolsProperties;
54 58
55 59
56 public static class ExcelFileOutput { 60 public static class ExcelFileOutput {
@@ -126,11 +130,15 @@ public class TTInfoDetailController extends BaseController&lt;TTInfoDetail, Long&gt; { @@ -126,11 +130,15 @@ public class TTInfoDetailController extends BaseController&lt;TTInfoDetail, Long&gt; {
126 Cell[] cells = sheet.getRow(0); // 获取第一行数据列 130 Cell[] cells = sheet.getRow(0); // 获取第一行数据列
127 for (int i = 0; i < cells.length; i++) { 131 for (int i = 0; i < cells.length; i++) {
128 String cell_con = cells[i].getContents(); 132 String cell_con = cells[i].getContents();
  133 +
129 if (StringUtils.isEmpty(cell_con)) { 134 if (StringUtils.isEmpty(cell_con)) {
130 rtn.put("status", ResponseCode.ERROR); 135 rtn.put("status", ResponseCode.ERROR);
131 rtn.put("msg", String.format("第1行,第%d列数据不能为空", i + 1)); 136 rtn.put("msg", String.format("第1行,第%d列数据不能为空", i + 1));
132 return rtn; 137 return rtn;
133 } else { 138 } else {
  139 + // 正则表达式去除数字
  140 + cell_con = cell_con.replaceAll("[\\d+]", "");
  141 +
134 if (i == 0) { // 第一列必须是路牌2个字 142 if (i == 0) { // 第一列必须是路牌2个字
135 if (!"路牌".equals(cell_con.trim())) { 143 if (!"路牌".equals(cell_con.trim())) {
136 rtn.put("status", ResponseCode.ERROR); 144 rtn.put("status", ResponseCode.ERROR);
@@ -457,4 +465,25 @@ public class TTInfoDetailController extends BaseController&lt;TTInfoDetail, Long&gt; { @@ -457,4 +465,25 @@ public class TTInfoDetailController extends BaseController&lt;TTInfoDetail, Long&gt; {
457 public List<TTInfoDetail> findBcdetails(Integer xlId, Long ttinfoId, Long lpId) { 465 public List<TTInfoDetail> findBcdetails(Integer xlId, Long ttinfoId, Long lpId) {
458 return ttInfoDetailRepository.findBcdetails(xlId, ttinfoId, lpId); 466 return ttInfoDetailRepository.findBcdetails(xlId, ttinfoId, lpId);
459 } 467 }
  468 +
  469 + @Override
  470 + public void dataExport(HttpServletResponse response, @RequestParam Map<String, Object> param) throws Exception {
  471 + // 获取injectktr
  472 + File ktrFile2 = new File(this.getClass().getResource(
  473 + dataToolsProperties.getTtinfodetailOutput()).toURI());
  474 + param.put("injectktrfile", ktrFile2.getAbsolutePath());
  475 + param.put("ttinfoid", param.get("ttinfoid"));
  476 +
  477 + super.dataExport(response, param);
  478 + }
  479 +
  480 + @Override
  481 + protected String getDataExportKtrClasspath() {
  482 + return dataToolsProperties.getTtinfodetailMetaoutput();
  483 + }
  484 +
  485 + @Override
  486 + protected String getDataExportFilename() {
  487 + return "时刻表";
  488 + }
460 } 489 }
src/main/java/com/bsth/entity/Station.java
@@ -97,7 +97,16 @@ public class Station { @@ -97,7 +97,16 @@ public class Station {
97 97
98 // 版本号 98 // 版本号
99 private Integer versions; 99 private Integer versions;
100 - 100 +
  101 + /** 是否有电子站牌 这里是老调度系统的原始字段,暂时保留该字段。 */
  102 + private Integer isHaveLed;
  103 +
  104 + /** 是否有候车亭 这里是老调度系统的原始字段,暂时保留该字段。*/
  105 + private Integer isHaveShelter;
  106 +
  107 + /** 是否港湾式公交站 这里是老调度系统的原始字段,暂时保留该字段。*/
  108 + private Integer isHarbourStation;
  109 +
101 // 描述 110 // 描述
102 private String descriptions; 111 private String descriptions;
103 112
@@ -115,6 +124,30 @@ public class Station { @@ -115,6 +124,30 @@ public class Station {
115 @Column(name = "update_date", columnDefinition = "timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP") 124 @Column(name = "update_date", columnDefinition = "timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
116 private Date updateDate; 125 private Date updateDate;
117 126
  127 + public Integer getIsHaveLed() {
  128 + return isHaveLed;
  129 + }
  130 +
  131 + public void setIsHaveLed(Integer isHaveLed) {
  132 + this.isHaveLed = isHaveLed;
  133 + }
  134 +
  135 + public Integer getIsHaveShelter() {
  136 + return isHaveShelter;
  137 + }
  138 +
  139 + public void setIsHaveShelter(Integer isHaveShelter) {
  140 + this.isHaveShelter = isHaveShelter;
  141 + }
  142 +
  143 + public Integer getIsHarbourStation() {
  144 + return isHarbourStation;
  145 + }
  146 +
  147 + public void setIsHarbourStation(Integer isHarbourStation) {
  148 + this.isHarbourStation = isHarbourStation;
  149 + }
  150 +
118 public String getAddr() { 151 public String getAddr() {
119 return addr; 152 return addr;
120 } 153 }
src/main/java/com/bsth/repository/CarParkRepository.java
@@ -33,9 +33,9 @@ public interface CarParkRepository extends BaseRepository&lt;CarPark, Integer&gt;{ @@ -33,9 +33,9 @@ public interface CarParkRepository extends BaseRepository&lt;CarPark, Integer&gt;{
33 33
34 "?6 , str_to_date(?7,'%Y-%m-%d %H:%i:%s') , ?8 , ?9 , ?10," + 34 "?6 , str_to_date(?7,'%Y-%m-%d %H:%i:%s') , ?8 , ?9 , ?10," +
35 35
36 - "str_to_date(?11,'%Y-%m-%d %H:%i:%s'), ?12 ,?13,GeomFromText(?14), ?15, " + 36 + "str_to_date(?11,'%Y-%m-%d %H:%i:%s'), ?12 ,?13,ST_GeomFromText(?14), ?15, " +
37 37
38 - "?16, GeomFromText(?17), ?18,?19)", nativeQuery=true) 38 + "?16, ST_GeomFromText(?17), ?18,?19)", nativeQuery=true)
39 public void carParkSave(Double area,String company,String parkCode,String parkName, 39 public void carParkSave(Double area,String company,String parkCode,String parkName,
40 40
41 String brancheCompany,Integer createBy,String createDate,String descriptions,Integer destroy, 41 String brancheCompany,Integer createBy,String createDate,String descriptions,Integer destroy,
@@ -91,8 +91,8 @@ public interface CarParkRepository extends BaseRepository&lt;CarPark, Integer&gt;{ @@ -91,8 +91,8 @@ public interface CarParkRepository extends BaseRepository&lt;CarPark, Integer&gt;{
91 "versions = ?12 , " + 91 "versions = ?12 , " +
92 "b_center_point = ?13 , " + 92 "b_center_point = ?13 , " +
93 "g_center_point = ?14 , " + 93 "g_center_point = ?14 , " +
94 - "b_park_point = GeomFromText(?15) , " +  
95 - "g_park_point = GeomFromText(?16) , " + 94 + "b_park_point = ST_GeomFromText(?15) , " +
  95 + "g_park_point = ST_GeomFromText(?16) , " +
96 "db_type = ?17 , " + 96 "db_type = ?17 , " +
97 "radius = ?18 , " + 97 "radius = ?18 , " +
98 "shapes_type = ?19 " + 98 "shapes_type = ?19 " +
src/main/java/com/bsth/repository/SectionRepository.java
@@ -83,33 +83,32 @@ public interface SectionRepository extends BaseRepository&lt;Section, Integer&gt; { @@ -83,33 +83,32 @@ public interface SectionRepository extends BaseRepository&lt;Section, Integer&gt; {
83 @Transactional 83 @Transactional
84 @Modifying 84 @Modifying
85 @Query(value="UPDATE bsth_c_section SET " + 85 @Query(value="UPDATE bsth_c_section SET " +
86 - "gsection_vector = ST_GeomFromText(?2) , " +  
87 - "bsection_vector = ST_GeomFromText(?3)," +  
88 - "section_code = ?4," +  
89 - "section_name = ?5," +  
90 - "croses_road = ?6," +  
91 - "end_node = ?7," +  
92 - "start_node = ?8," +  
93 - "middle_node = ?9," +  
94 - "section_type = ?10," +  
95 - "csection_vector = ?11," +  
96 - "road_coding = ?12," +  
97 - "section_distance = ?13," +  
98 - "section_time = ?14," +  
99 - "db_type = ?15," +  
100 - "speed_limit = ?16," +  
101 - "descriptions = ?17," +  
102 - "versions = ?18," +  
103 - "create_by = ?19," +  
104 - "create_date = str_to_date(?20,'%Y-%m-%d %H:%i:%s')," +  
105 - "update_by = ?21," +  
106 - "update_date = str_to_date(?22,'%Y-%m-%d %H:%i:%s')" + 86 + " gsection_vector = ST_GeomFromText(?2) , " +
  87 + " bsection_vector = ST_GeomFromText(?3)," +
  88 + " section_code = ?4," +
  89 + " section_name = ?5," +
  90 + " croses_road = ?6," +
  91 + " end_node = ?7," +
  92 + " start_node = ?8," +
  93 + " middle_node = ?9," +
  94 + " section_type = ?10," +
  95 + " road_coding = ?11," +
  96 + " section_distance = ?12," +
  97 + " section_time = ?13," +
  98 + " db_type = ?14," +
  99 + " speed_limit = ?15," +
  100 + " descriptions = ?16," +
  101 + " versions = ?17," +
  102 + " create_by = ?18," +
  103 + " create_date = str_to_date(?19,'%Y-%m-%d %H:%i:%s')," +
  104 + " update_by = ?20," +
  105 + " update_date = str_to_date(?21,'%Y-%m-%d %H:%i:%s')" +
107 " WHERE id = ?1", nativeQuery=true) 106 " WHERE id = ?1", nativeQuery=true)
108 public void sectionUpdate(Integer sectionId,String gsectionVector,String bsectionVector,String sectionCode,String sectionName, 107 public void sectionUpdate(Integer sectionId,String gsectionVector,String bsectionVector,String sectionCode,String sectionName,
109 108
110 String crosesRoad,String endNode,String startNode,String middleNode,String sectionType, 109 String crosesRoad,String endNode,String startNode,String middleNode,String sectionType,
111 110
112 - String csectionVector,String roadCoding,Double sectionDistance,Double sectionTime,String dbType, 111 + String roadCoding,Double sectionDistance,Double sectionTime,String dbType,
113 112
114 Double speedLimit,String descriptions,Integer version,Integer createBy,String createDate, 113 Double speedLimit,String descriptions,Integer version,Integer createBy,String createDate,
115 114
src/main/java/com/bsth/repository/SectionRouteRepository.java
@@ -69,7 +69,7 @@ public interface SectionRouteRepository extends BaseRepository&lt;SectionRoute, Int @@ -69,7 +69,7 @@ public interface SectionRouteRepository extends BaseRepository&lt;SectionRoute, Int
69 "r.versions AS versions," + 69 "r.versions AS versions," +
70 "r.descriptions AS descriptions" + 70 "r.descriptions AS descriptions" +
71 " FROM bsth_c_sectionroute r where r.line = ?1 and r.directions = ?2 and r.destroy=0 ) a " + 71 " FROM bsth_c_sectionroute r where r.line = ?1 and r.directions = ?2 and r.destroy=0 ) a " +
72 - " LEFT JOIN bsth_c_section b ON a.sectionrouteSection = b.id", nativeQuery=true) 72 + " LEFT JOIN bsth_c_section b ON a.sectionrouteSection = b.id order by a.sectionrouteCode asc", nativeQuery=true)
73 List<Object[]> getSectionRoute(int lineId, int directions); 73 List<Object[]> getSectionRoute(int lineId, int directions);
74 74
75 75
src/main/java/com/bsth/repository/StationRouteRepository.java
@@ -110,9 +110,12 @@ public interface StationRouteRepository extends BaseRepository&lt;StationRoute, Int @@ -110,9 +110,12 @@ public interface StationRouteRepository extends BaseRepository&lt;StationRoute, Int
110 * 110 *
111 * @return List<Object[]> 111 * @return List<Object[]>
112 */ 112 */
113 - @Query(value = "SELECT s.b_jwpoints,s.station_name FROM (" + 113 + /*@Query(value = "SELECT s.b_jwpoints,s.station_name FROM (" +
114 "SELECT b.station FROM bsth_c_stationroute b where b.line =?1 and b.directions = ?2 and b.destroy=0) r " + 114 "SELECT b.station FROM bsth_c_stationroute b where b.line =?1 and b.directions = ?2 and b.destroy=0) r " +
115 - "LEFT JOIN bsth_c_station s on r.station = s.id", nativeQuery=true) 115 + "LEFT JOIN bsth_c_station s on r.station = s.id", nativeQuery=true)*/
  116 + @Query(value = "SELECT s.b_jwpoints,s.station_name,r.station_route_code FROM (" +
  117 + "SELECT b.station,b.station_route_code FROM bsth_c_stationroute b where b.line =?1 and b.directions = ?2 and b.destroy=0) r " +
  118 + "LEFT JOIN bsth_c_station s on r.station = s.id order by r.station_route_code asc", nativeQuery=true)
116 List<Object[]> getSelectStationRouteCenterPoints(Integer lineId,Integer direction); 119 List<Object[]> getSelectStationRouteCenterPoints(Integer lineId,Integer direction);
117 120
118 /** 121 /**
src/main/java/com/bsth/service/impl/CarParkServiceImpl.java
@@ -75,9 +75,19 @@ public class CarParkServiceImpl extends BaseServiceImpl&lt;CarPark, Integer&gt; implem @@ -75,9 +75,19 @@ public class CarParkServiceImpl extends BaseServiceImpl&lt;CarPark, Integer&gt; implem
75 75
76 } 76 }
77 77
78 - bParkPoint = "POLYGON((" + bParkPoint +"))"; 78 + if(bParkPoint.equals(""))
  79 + bParkPoint = null;
  80 + else
  81 + bParkPoint = "POLYGON((" + bParkPoint +"))";
  82 +
  83 + if(gParkPoint.equals(""))
  84 + gParkPoint = null;
  85 + else
  86 + gParkPoint = "POLYGON((" + gParkPoint +"))";
79 87
80 - gParkPoint = "POLYGON((" + gParkPoint +"))"; 88 + /*bParkPoint = "POLYGON((" + bParkPoint +"))";
  89 +
  90 + gParkPoint = "POLYGON((" + gParkPoint +"))";*/
81 91
82 // 地理位置中心点(百度坐标) 92 // 地理位置中心点(百度坐标)
83 String bCenterPoint = map.get("bCenterPoint").equals("") ? "" : map.get("bCenterPoint").toString(); 93 String bCenterPoint = map.get("bCenterPoint").equals("") ? "" : map.get("bCenterPoint").toString();
@@ -93,7 +103,7 @@ public class CarParkServiceImpl extends BaseServiceImpl&lt;CarPark, Integer&gt; implem @@ -93,7 +103,7 @@ public class CarParkServiceImpl extends BaseServiceImpl&lt;CarPark, Integer&gt; implem
93 103
94 } 104 }
95 105
96 - String gCenterPoint = ""; 106 + String gCenterPoint = null;
97 107
98 if(bJwpointsArray.length>0) { 108 if(bJwpointsArray.length>0) {
99 109
@@ -147,6 +157,9 @@ public class CarParkServiceImpl extends BaseServiceImpl&lt;CarPark, Integer&gt; implem @@ -147,6 +157,9 @@ public class CarParkServiceImpl extends BaseServiceImpl&lt;CarPark, Integer&gt; implem
147 // 修改人 157 // 修改人
148 Integer updateBy = map.get("updateBy").equals("") ? null : Integer.parseInt(map.get("updateBy").toString()); 158 Integer updateBy = map.get("updateBy").equals("") ? null : Integer.parseInt(map.get("updateBy").toString());
149 159
  160 +
  161 +
  162 +
150 carParkRepository.carParkSave(area, company, parkCode, parkName, 163 carParkRepository.carParkSave(area, company, parkCode, parkName,
151 164
152 brancheCompany, createBy, createDate, descriptions, destroy, 165 brancheCompany, createBy, createDate, descriptions, destroy,
@@ -296,7 +309,7 @@ public class CarParkServiceImpl extends BaseServiceImpl&lt;CarPark, Integer&gt; implem @@ -296,7 +309,7 @@ public class CarParkServiceImpl extends BaseServiceImpl&lt;CarPark, Integer&gt; implem
296 309
297 } 310 }
298 311
299 - String gCenterPoint = ""; 312 + String gCenterPoint =null;
300 313
301 if(bJwpointsArray.length>0) { 314 if(bJwpointsArray.length>0) {
302 315
@@ -337,10 +350,18 @@ public class CarParkServiceImpl extends BaseServiceImpl&lt;CarPark, Integer&gt; implem @@ -337,10 +350,18 @@ public class CarParkServiceImpl extends BaseServiceImpl&lt;CarPark, Integer&gt; implem
337 } 350 }
338 351
339 } 352 }
  353 + if(bParkPoint.equals(""))
  354 + bParkPoint = null;
  355 + else
  356 + bParkPoint = "POLYGON((" + bParkPoint +"))";
  357 +
  358 + if(gParkPoint.equals(""))
  359 + gParkPoint = null;
  360 + else
  361 + gParkPoint = "POLYGON((" + gParkPoint +"))";
  362 + /*bParkPoint = "POLYGON((" + bParkPoint +"))";
340 363
341 - bParkPoint = "POLYGON((" + bParkPoint +"))";  
342 -  
343 - gParkPoint = "POLYGON((" + gParkPoint +"))"; 364 + gParkPoint = "POLYGON((" + gParkPoint +"))";*/
344 365
345 // 编码 366 // 编码
346 String parkCode = map.get("parkCode").equals("") ? "" : map.get("parkCode").toString(); 367 String parkCode = map.get("parkCode").equals("") ? "" : map.get("parkCode").toString();
src/main/java/com/bsth/service/impl/SectionServiceImpl.java
@@ -213,10 +213,11 @@ public class SectionServiceImpl extends BaseServiceImpl&lt;Section, Integer&gt; implem @@ -213,10 +213,11 @@ public class SectionServiceImpl extends BaseServiceImpl&lt;Section, Integer&gt; implem
213 213
214 String sectionType=""; 214 String sectionType="";
215 215
216 - String csectionVector=""; 216 + // String csectionVector="";
217 217
218 // 更新 218 // 更新
219 - repository.sectionUpdate(sectionId, gsectionVector, bsectionVectorS, sectionCode, sectionName, crosesRoad, endNode, startNode, middleNode, sectionType, csectionVector, roadCoding, sectionDistance, sectionTime, dbType, speedLimit, descriptions, version, createBy, createDate, updateBy, updateDate); 219 + /*repository.sectionUpdate(sectionId, gsectionVector, bsectionVectorS, sectionCode, sectionName, crosesRoad, endNode, startNode, middleNode, sectionType, csectionVector, roadCoding, sectionDistance, sectionTime, dbType, speedLimit, descriptions, version, createBy, createDate, updateBy, updateDate);*/
  220 + repository.sectionUpdate(sectionId, gsectionVector, bsectionVectorS, sectionCode, sectionName, crosesRoad, endNode, startNode, middleNode, sectionType, roadCoding, sectionDistance, sectionTime, dbType, speedLimit, descriptions, version, createBy, createDate, updateBy, updateDate);
220 221
221 SectionRoute route = new SectionRoute(); 222 SectionRoute route = new SectionRoute();
222 223
@@ -393,7 +394,7 @@ public class SectionServiceImpl extends BaseServiceImpl&lt;Section, Integer&gt; implem @@ -393,7 +394,7 @@ public class SectionServiceImpl extends BaseServiceImpl&lt;Section, Integer&gt; implem
393 394
394 String sectionType=""; 395 String sectionType="";
395 396
396 - String csectionVector=""; 397 + String csectionVector=null;
397 398
398 Integer id = Integer.valueOf(sectionCode); 399 Integer id = Integer.valueOf(sectionCode);
399 400
src/main/java/com/bsth/service/impl/StationServiceImpl.java
@@ -977,9 +977,9 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem @@ -977,9 +977,9 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem
977 977
978 } 978 }
979 979
980 - bPloygonGrid = "POLYGON((" + bPloygonGrid +"))"; 980 + /* bPloygonGrid = "POLYGON((" + bPloygonGrid +"))";
981 981
982 - gPloygonGrid = "POLYGON((" + gPloygonGrid +"))"; 982 + gPloygonGrid = "POLYGON((" + gPloygonGrid +"))";*/
983 983
984 // 是否撤销 984 // 是否撤销
985 Integer destroy = map.get("destroy").equals("") ? null : Integer.parseInt(map.get("destroy").toString()); 985 Integer destroy = map.get("destroy").equals("") ? null : Integer.parseInt(map.get("destroy").toString());
src/main/java/com/bsth/service/schedule/utils/DataImportExportService.java
@@ -3,6 +3,7 @@ package com.bsth.service.schedule.utils; @@ -3,6 +3,7 @@ package com.bsth.service.schedule.utils;
3 import org.springframework.web.multipart.MultipartFile; 3 import org.springframework.web.multipart.MultipartFile;
4 4
5 import java.io.File; 5 import java.io.File;
  6 +import java.util.Map;
6 7
7 /** 8 /**
8 * 数据导入导出服务。 9 * 数据导入导出服务。
@@ -32,4 +33,7 @@ public interface DataImportExportService { @@ -32,4 +33,7 @@ public interface DataImportExportService {
32 * @throws Exception 33 * @throws Exception
33 */ 34 */
34 File fileDataOutput(String fileName, File ktrFile) throws Exception; 35 File fileDataOutput(String fileName, File ktrFile) throws Exception;
  36 +
  37 +
  38 + File fileDataOutput(String fileName, File ktrFile, Map<String, Object> param) throws Exception;
35 } 39 }
src/main/java/com/bsth/service/schedule/utils/DataImportExportServiceImpl.java
@@ -10,6 +10,7 @@ import org.springframework.beans.factory.InitializingBean; @@ -10,6 +10,7 @@ import org.springframework.beans.factory.InitializingBean;
10 import org.springframework.beans.factory.annotation.Autowired; 10 import org.springframework.beans.factory.annotation.Autowired;
11 import org.springframework.boot.context.properties.EnableConfigurationProperties; 11 import org.springframework.boot.context.properties.EnableConfigurationProperties;
12 import org.springframework.stereotype.Service; 12 import org.springframework.stereotype.Service;
  13 +import org.springframework.util.CollectionUtils;
13 import org.springframework.web.multipart.MultipartFile; 14 import org.springframework.web.multipart.MultipartFile;
14 15
15 import java.io.File; 16 import java.io.File;
@@ -111,6 +112,11 @@ public class DataImportExportServiceImpl implements DataImportExportService, Ini @@ -111,6 +112,11 @@ public class DataImportExportServiceImpl implements DataImportExportService, Ini
111 112
112 @Override 113 @Override
113 public File fileDataOutput(String fileName, File ktrFile) throws Exception { 114 public File fileDataOutput(String fileName, File ktrFile) throws Exception {
  115 + return fileDataOutput(fileName, ktrFile, null);
  116 + }
  117 +
  118 + @Override
  119 + public File fileDataOutput(String fileName, File ktrFile, Map<String, Object> param) throws Exception {
114 // 初始化转换,元数据,转换对象 120 // 初始化转换,元数据,转换对象
115 TransMeta transMeta = new TransMeta(ktrFile.getAbsolutePath()); 121 TransMeta transMeta = new TransMeta(ktrFile.getAbsolutePath());
116 Trans trans = new Trans(transMeta); 122 Trans trans = new Trans(transMeta);
@@ -120,6 +126,14 @@ public class DataImportExportServiceImpl implements DataImportExportService, Ini @@ -120,6 +126,14 @@ public class DataImportExportServiceImpl implements DataImportExportService, Ini
120 fileName + 126 fileName +
121 new DateTime().toString("yyyyMMddHHmmss") + ".xls"; 127 new DateTime().toString("yyyyMMddHHmmss") + ".xls";
122 trans.setParameterValue("filepath", filepath); 128 trans.setParameterValue("filepath", filepath);
  129 +
  130 + // 添加其他参数
  131 + if (!CollectionUtils.isEmpty(param)) {
  132 + for (String key : param.keySet()) {
  133 + trans.setParameterValue(key, String.valueOf(param.get(key)));
  134 + }
  135 + }
  136 +
123 // 执行转换 137 // 执行转换
124 trans.execute(null); 138 trans.execute(null);
125 // 等待转换结束 139 // 等待转换结束
src/main/java/com/bsth/service/schedule/utils/DataToolsProperties.java
@@ -83,6 +83,10 @@ public class DataToolsProperties { @@ -83,6 +83,10 @@ public class DataToolsProperties {
83 /** 人员信息导出ktr转换 */ 83 /** 人员信息导出ktr转换 */
84 @NotNull 84 @NotNull
85 private String employeesDataoutputktr; 85 private String employeesDataoutputktr;
  86 + /** 时刻表导出元数据ktr转换 */
  87 + private String ttinfodetailMetaoutput;
  88 + /** 时刻表导出数据ktr转换 */
  89 + private String ttinfodetailOutput;
86 90
87 // TODO: 91 // TODO:
88 92
@@ -253,4 +257,20 @@ public class DataToolsProperties { @@ -253,4 +257,20 @@ public class DataToolsProperties {
253 public void setKvarsDbdname(String kvarsDbdname) { 257 public void setKvarsDbdname(String kvarsDbdname) {
254 this.kvarsDbdname = kvarsDbdname; 258 this.kvarsDbdname = kvarsDbdname;
255 } 259 }
  260 +
  261 + public String getTtinfodetailMetaoutput() {
  262 + return ttinfodetailMetaoutput;
  263 + }
  264 +
  265 + public void setTtinfodetailMetaoutput(String ttinfodetailMetaoutput) {
  266 + this.ttinfodetailMetaoutput = ttinfodetailMetaoutput;
  267 + }
  268 +
  269 + public String getTtinfodetailOutput() {
  270 + return ttinfodetailOutput;
  271 + }
  272 +
  273 + public void setTtinfodetailOutput(String ttinfodetailOutput) {
  274 + this.ttinfodetailOutput = ttinfodetailOutput;
  275 + }
256 } 276 }
src/main/java/com/bsth/util/Geo/SHCJ2BDJW.java
@@ -25,9 +25,11 @@ public class SHCJ2BDJW { @@ -25,9 +25,11 @@ public class SHCJ2BDJW {
25 25
26 ResultSet rs = null; 26 ResultSet rs = null;
27 27
28 - String sqlSelect = "SELECT b.SHAPESTRING as SHAPE , b.id as ID FROM jjwgps_t_gjldb b where SHAPESTRING is not null order by b.ldbh asc "; 28 + /*String sqlSelect = "SELECT b.SHAPESTRING as SHAPE , b.id as ID FROM jjwgps_t_gjldb b where SHAPESTRING is not null order by b.ldbh asc ";*/
  29 + /*String sqlSelect = "select s.id,s.descriptions from bsth_c_station s order by s.id asc ";*/
  30 + String sqlSelect = "SELECT s.id,s.descriptions FROM bsth_c_section s order by s.id asc ";
29 31
30 - String sqlUpdate = "UPDATE jjwgps_t_gjldb SET bdjw = GeomFromText(?),SHAPE = GeomFromText(?) where id = ?"; 32 + String sqlUpdate = "UPDATE bsth_c_section SET csection_vector = ST_GeomFromText(?) , bsection_vector=ST_GeomFromText(?) , gsection_vector=ST_GeomFromText(?) where id = ?";
31 33
32 List<Map<String, Object>> list = new ArrayList<>(); 34 List<Map<String, Object>> list = new ArrayList<>();
33 35
@@ -42,9 +44,9 @@ public class SHCJ2BDJW { @@ -42,9 +44,9 @@ public class SHCJ2BDJW {
42 44
43 Map<String, Object> map = new HashMap<String, Object>(); 45 Map<String, Object> map = new HashMap<String, Object>();
44 46
45 - map.put("shape", rs.getString("SHAPE")); 47 + map.put("descriptions", rs.getString("descriptions"));
46 48
47 - map.put("id", rs.getInt("ID")); 49 + map.put("id", rs.getInt("id"));
48 50
49 list.add(map); 51 list.add(map);
50 } 52 }
@@ -52,15 +54,29 @@ public class SHCJ2BDJW { @@ -52,15 +54,29 @@ public class SHCJ2BDJW {
52 for(int i =0;i<list.size();i++) { 54 for(int i =0;i<list.size();i++) {
53 55
54 Map<String, Object> temp = list.get(i); 56 Map<String, Object> temp = list.get(i);
55 -  
56 - String lineString = temp.get("shape").toString();  
57 - /*String lineString = "LINESTRING (13532.5305161702 -3677.63275264995, 13433.22401617 -3881.74765264988)";*/  
58 - 57 + // POINT (8229.30921617 -933.16425265)
  58 + String lineString = temp.get("descriptions").toString();
  59 + int id = Integer.parseInt(temp.get("id").toString());
59 60
60 String arrayP[] = lineString.substring(lineString.indexOf("(")+1, lineString.length()-1).split(", "); 61 String arrayP[] = lineString.substring(lineString.indexOf("(")+1, lineString.length()-1).split(", ");
61 -  
62 - int id = Integer.parseInt(temp.get("id").toString());  
63 - String geometry = ""; 62 + /*String arrayP[] = lineString.substring(lineString.indexOf("(")+1, lineString.length()-1).split(" ");
  63 + String b_jwpoints = "";
  64 + Float g_lonx=0.0f,g_laty=0.0f,x=0.0f,y=0.0f;*/
  65 +
  66 + /*Double lng = Double.parseDouble(arrayP[0]);
  67 + Double lat = Double.parseDouble(arrayP[1]);
  68 + x = Float.parseFloat(arrayP[0]);
  69 + y = Float.parseFloat(arrayP[1]);
  70 + // WGS84
  71 + Map map_2 = JWDUtil.ConvertSHToJW(lng,lat);
  72 + g_lonx = Float.parseFloat(map_2.get("x").toString());
  73 + g_laty = Float.parseFloat(map_2.get("y").toString());
  74 + Location location = TransGPS.LocationMake(Float.parseFloat(map_2.get("x").toString()), Float.parseFloat(map_2.get("y").toString()));
  75 + location = TransGPS.bd_encrypt(TransGPS.transformFromWGSToGCJ(location));
  76 + b_jwpoints = (location.getLng()+0.000727) + " " + (location.getLat() - 0.0000624);*/
  77 + //b_jwpoints = (location.getLng()) + " " + (location.getLat());
  78 +
  79 + String csection_vector="",bsection_vector="",gsection_vector="";
64 80
65 for(int k =0;k<arrayP.length;k++) { 81 for(int k =0;k<arrayP.length;k++) {
66 82
@@ -76,28 +92,42 @@ public class SHCJ2BDJW { @@ -76,28 +92,42 @@ public class SHCJ2BDJW {
76 92
77 location = TransGPS.bd_encrypt(TransGPS.transformFromWGSToGCJ(location)); 93 location = TransGPS.bd_encrypt(TransGPS.transformFromWGSToGCJ(location));
78 94
79 - if(k==arrayP.length-1)  
80 - geometry = geometry + (location.getLng()+0.000727) + " " + (location.getLat() - 0.0000624);  
81 - else  
82 - geometry = geometry + (location.getLng()+0.000727) + " " + (location.getLat() - 0.0000624) + ","; 95 + if(k==arrayP.length-1) {
  96 + bsection_vector = bsection_vector + (location.getLng()+0.000727) + " " + (location.getLat() - 0.0000624);
  97 + csection_vector = csection_vector + arrayXY[0] + " " + arrayXY[1];
  98 + gsection_vector = gsection_vector + map_2.get("x").toString() + " " + map_2.get("y").toString();
  99 + }else {
  100 + bsection_vector = bsection_vector + (location.getLng()+0.000727) + " " + (location.getLat() - 0.0000624) + ",";
  101 + csection_vector = csection_vector + arrayXY[0] + " " + arrayXY[1] +",";
  102 + gsection_vector = gsection_vector + map_2.get("x").toString() + " " + map_2.get("y").toString()+",";
  103 + }
83 104
84 105
85 } 106 }
86 107
87 ps = null; 108 ps = null;
88 -  
89 - geometry = "LINESTRING(" + geometry +")"; 109 + bsection_vector = "LINESTRING(" + bsection_vector +")";
  110 + csection_vector = "LINESTRING(" + csection_vector +")";
  111 + gsection_vector = "LINESTRING(" + gsection_vector +")";
90 112
91 ps = conn.prepareStatement(sqlUpdate); 113 ps = conn.prepareStatement(sqlUpdate);
92 114
93 - ps.setString(1, geometry);  
94 -  
95 - ps.setString(2, lineString);  
96 -  
97 - ps.setInt(3, id);  
98 - 115 + // String sqlUpdate = "UPDATE bsth_c_section SET csection_vector = ? , bsection_vector=? , gsection_vector=? where id = ?";
  116 + ps.setString(1, csection_vector);
  117 + ps.setString(2, bsection_vector);
  118 + ps.setString(3, gsection_vector);
  119 + ps.setInt(4, id);
  120 +
  121 + //int stauts = ps.executeUpdate();
  122 + // String sqlUpdate = "UPDATE bsth_c_station SET b_jwpoints = ?1 , g_lonx=?2 , g_laty=?3 , x = ?4 , y = ?5 where id = ?6";
  123 + /*ps.setString(1, b_jwpoints);
  124 + ps.setFloat(2, g_lonx);
  125 + ps.setFloat(3, g_laty);
  126 + ps.setFloat(4, x);
  127 + ps.setFloat(5, y);
  128 + ps.setFloat(6, id);*/
99 int stauts = ps.executeUpdate(); 129 int stauts = ps.executeUpdate();
100 - 130 + System.out.println(stauts);
101 } 131 }
102 132
103 } catch (SQLException e) { 133 } catch (SQLException e) {
src/main/resources/datatools/config-dev.properties
@@ -48,13 +48,19 @@ datatools.employeesconfig_datainputktr=/datatools/ktrs/employeesConfigDataInput. @@ -48,13 +48,19 @@ datatools.employeesconfig_datainputktr=/datatools/ktrs/employeesConfigDataInput.
48 48
49 # 4、数据导出配置信息 49 # 4、数据导出配置信息
50 # 导出数据文件目录配置(根据不同的环境需要修正) 50 # 导出数据文件目录配置(根据不同的环境需要修正)
51 -datatools.fileoutput_dir=/Users/xu/resource/project/bsth_control_u_d_files 51 +datatools.fileoutput_dir=/Users/xu/resource/project_code/runtime_temp/bsth_control_u_d_files
52 52
53 ##---------------------------- 导出数据ktr -----------------------------## 53 ##---------------------------- 导出数据ktr -----------------------------##
54 # 车辆信息导出ktr转换 54 # 车辆信息导出ktr转换
55 datatools.cars_dataoutputktr=/datatools/ktrs/carsDataOutput.ktr 55 datatools.cars_dataoutputktr=/datatools/ktrs/carsDataOutput.ktr
56 # 人员信息导出ktr转换 56 # 人员信息导出ktr转换
57 datatools.employees_dataoutputktr=/datatools/ktrs/employeesDataOutput.ktr 57 datatools.employees_dataoutputktr=/datatools/ktrs/employeesDataOutput.ktr
  58 +# 时刻表导出元数据ktr转换
  59 +datatools.ttinfodetail_metaoutput=/datatools/ktrs/ttinfodetailDataOutputMetaData.ktr
  60 +# 时刻表导出数据ktr转换
  61 +datatools.ttinfodetail_output=/datatools/ktrs/ttinfodetailDataOutput.ktr
  62 +
  63 +
58 64
59 # TODO: 65 # TODO:
60 66
src/main/resources/datatools/config-prod.properties
@@ -56,5 +56,9 @@ datatools.fileoutput_dir=/opt/bsth_control_u_d_files @@ -56,5 +56,9 @@ datatools.fileoutput_dir=/opt/bsth_control_u_d_files
56 datatools.cars_dataoutputktr=/datatools/ktrs/carsDataOutput.ktr 56 datatools.cars_dataoutputktr=/datatools/ktrs/carsDataOutput.ktr
57 # 人员信息导出ktr转换 57 # 人员信息导出ktr转换
58 datatools.employees_dataoutputktr=/datatools/ktrs/employeesDataOutput.ktr 58 datatools.employees_dataoutputktr=/datatools/ktrs/employeesDataOutput.ktr
  59 +# 时刻表导出元数据ktr转换
  60 +datatools.ttinfodetail_metaoutput=/datatools/ktrs/ttinfodetailDataOutputMetaData.ktr
  61 +# 时刻表导出数据ktr转换
  62 +datatools.ttinfodetail_output=/datatools/ktrs/ttinfodetailDataOutput.ktr
59 63
60 # TODO: 64 # TODO:
61 \ No newline at end of file 65 \ No newline at end of file
src/main/resources/datatools/ktrs/ttinfodetailDataOutput.ktr 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x5bfc;&#x51fa;</name>
  5 + <description/>
  6 + <extended_description/>
  7 + <trans_version/>
  8 + <trans_type>Normal</trans_type>
  9 + <trans_status>0</trans_status>
  10 + <directory>&#x2f;</directory>
  11 + <parameters>
  12 + </parameters>
  13 + <log>
  14 +<trans-log-table><connection/>
  15 +<schema/>
  16 +<table/>
  17 +<size_limit_lines/>
  18 +<interval/>
  19 +<timeout_days/>
  20 +<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>
  21 +<perf-log-table><connection/>
  22 +<schema/>
  23 +<table/>
  24 +<interval/>
  25 +<timeout_days/>
  26 +<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>
  27 +<channel-log-table><connection/>
  28 +<schema/>
  29 +<table/>
  30 +<timeout_days/>
  31 +<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>
  32 +<step-log-table><connection/>
  33 +<schema/>
  34 +<table/>
  35 +<timeout_days/>
  36 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>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>
  37 +<metrics-log-table><connection/>
  38 +<schema/>
  39 +<table/>
  40 +<timeout_days/>
  41 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>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>
  42 + </log>
  43 + <maxdate>
  44 + <connection/>
  45 + <table/>
  46 + <field/>
  47 + <offset>0.0</offset>
  48 + <maxdiff>0.0</maxdiff>
  49 + </maxdate>
  50 + <size_rowset>10000</size_rowset>
  51 + <sleep_time_empty>50</sleep_time_empty>
  52 + <sleep_time_full>50</sleep_time_full>
  53 + <unique_connections>N</unique_connections>
  54 + <feedback_shown>Y</feedback_shown>
  55 + <feedback_size>50000</feedback_size>
  56 + <using_thread_priorities>Y</using_thread_priorities>
  57 + <shared_objects_file/>
  58 + <capture_step_performance>N</capture_step_performance>
  59 + <step_performance_capturing_delay>1000</step_performance_capturing_delay>
  60 + <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
  61 + <dependencies>
  62 + </dependencies>
  63 + <partitionschemas>
  64 + </partitionschemas>
  65 + <slaveservers>
  66 + </slaveservers>
  67 + <clusterschemas>
  68 + </clusterschemas>
  69 + <created_user>-</created_user>
  70 + <created_date>2016&#x2f;11&#x2f;15 13&#x3a;00&#x3a;52.076</created_date>
  71 + <modified_user>-</modified_user>
  72 + <modified_date>2016&#x2f;11&#x2f;15 13&#x3a;00&#x3a;52.076</modified_date>
  73 + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
  74 + <is_key_private>N</is_key_private>
  75 + </info>
  76 + <notepads>
  77 + </notepads>
  78 + <connection>
  79 + <name>bus_control_variable</name>
  80 + <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
  81 + <type>MYSQL</type>
  82 + <access>Native</access>
  83 + <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
  84 + <port>3306</port>
  85 + <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
  86 + <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
  87 + <servername/>
  88 + <data_tablespace/>
  89 + <index_tablespace/>
  90 + <attributes>
  91 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  92 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  93 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  94 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  95 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  96 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  97 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  98 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  99 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  100 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  101 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  102 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  103 + </attributes>
  104 + </connection>
  105 + <connection>
  106 + <name>bus_control_&#x516c;&#x53f8;_201</name>
  107 + <server>localhost</server>
  108 + <type>MYSQL</type>
  109 + <access>Native</access>
  110 + <database>control</database>
  111 + <port>3306</port>
  112 + <username>root</username>
  113 + <password>Encrypted </password>
  114 + <servername/>
  115 + <data_tablespace/>
  116 + <index_tablespace/>
  117 + <attributes>
  118 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  119 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  120 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  121 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  122 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  123 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  124 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  125 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  126 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  127 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  128 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  129 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  130 + </attributes>
  131 + </connection>
  132 + <connection>
  133 + <name>bus_control_&#x672c;&#x673a;</name>
  134 + <server>localhost</server>
  135 + <type>MYSQL</type>
  136 + <access>Native</access>
  137 + <database>control</database>
  138 + <port>3306</port>
  139 + <username>root</username>
  140 + <password>Encrypted </password>
  141 + <servername/>
  142 + <data_tablespace/>
  143 + <index_tablespace/>
  144 + <attributes>
  145 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  146 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  147 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  148 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  149 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  150 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  151 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  152 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  153 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  154 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  155 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  156 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  157 + </attributes>
  158 + </connection>
  159 + <connection>
  160 + <name>xlab_mysql_youle</name>
  161 + <server>101.231.124.8</server>
  162 + <type>MYSQL</type>
  163 + <access>Native</access>
  164 + <database>xlab_youle</database>
  165 + <port>45687</port>
  166 + <username>xlab-youle</username>
  167 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
  168 + <servername/>
  169 + <data_tablespace/>
  170 + <index_tablespace/>
  171 + <attributes>
  172 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  173 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  174 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  175 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  176 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  177 + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
  178 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  179 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  180 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  181 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  182 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  183 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  184 + </attributes>
  185 + </connection>
  186 + <connection>
  187 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  188 + <server>localhost</server>
  189 + <type>MYSQL</type>
  190 + <access>Native</access>
  191 + <database>xlab_youle</database>
  192 + <port>3306</port>
  193 + <username>root</username>
  194 + <password>Encrypted </password>
  195 + <servername/>
  196 + <data_tablespace/>
  197 + <index_tablespace/>
  198 + <attributes>
  199 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  200 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  201 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  202 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  203 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  204 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  205 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  206 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  207 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  208 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  209 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  210 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  211 + </attributes>
  212 + </connection>
  213 + <connection>
  214 + <name>xlab_youle</name>
  215 + <server/>
  216 + <type>MYSQL</type>
  217 + <access>JNDI</access>
  218 + <database>xlab_youle</database>
  219 + <port>1521</port>
  220 + <username/>
  221 + <password>Encrypted </password>
  222 + <servername/>
  223 + <data_tablespace/>
  224 + <index_tablespace/>
  225 + <attributes>
  226 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  227 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  228 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  229 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  230 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  231 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  232 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  233 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  234 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  235 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  236 + </attributes>
  237 + </connection>
  238 + <order>
  239 + <hop> <from>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</from><to>&#x5217;&#x8f6c;&#x884c;</to><enabled>Y</enabled> </hop>
  240 + <hop> <from>&#x5217;&#x8f6c;&#x884c;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
  241 + <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>Excel&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
  242 + <hop> <from>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x6570;&#x636e;&#x8868;</from><to>&#x8def;&#x724c;&#x540d;&#x5b57;&#x67e5;&#x627e;</to><enabled>Y</enabled> </hop>
  243 + <hop> <from>&#x8def;&#x724c;&#x540d;&#x5b57;&#x67e5;&#x627e;</from><to>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  244 + </order>
  245 + <step>
  246 + <name>&#x5217;&#x8f6c;&#x884c;</name>
  247 + <type>Denormaliser</type>
  248 + <description/>
  249 + <distribute>Y</distribute>
  250 + <custom_distribution/>
  251 + <copies>1</copies>
  252 + <partitioning>
  253 + <method>none</method>
  254 + <schema_name/>
  255 + </partitioning>
  256 + <key_field>fcno</key_field>
  257 + <group>
  258 + <field>
  259 + <name>lp</name>
  260 + </field>
  261 + </group>
  262 + <fields>
  263 + <field>
  264 + <field_name>fcsj</field_name>
  265 + <key_value>1</key_value>
  266 + <target_name>&#x51fa;&#x573a;1</target_name>
  267 + <target_type>String</target_type>
  268 + <target_format/>
  269 + <target_length>-1</target_length>
  270 + <target_precision>-1</target_precision>
  271 + <target_decimal_symbol/>
  272 + <target_grouping_symbol/>
  273 + <target_currency_symbol/>
  274 + <target_null_string/>
  275 + <target_aggregation_type>-</target_aggregation_type>
  276 + </field>
  277 + <field>
  278 + <field_name>fcsj</field_name>
  279 + <key_value>2</key_value>
  280 + <target_name>&#x9752;&#x5b89;&#x8def;&#x6c7d;&#x8f66;&#x7ad9;2</target_name>
  281 + <target_type>String</target_type>
  282 + <target_format/>
  283 + <target_length>-1</target_length>
  284 + <target_precision>-1</target_precision>
  285 + <target_decimal_symbol/>
  286 + <target_grouping_symbol/>
  287 + <target_currency_symbol/>
  288 + <target_null_string/>
  289 + <target_aggregation_type>-</target_aggregation_type>
  290 + </field>
  291 + <field>
  292 + <field_name>fcsj</field_name>
  293 + <key_value>3</key_value>
  294 + <target_name>&#x9752;&#x5b89;&#x8def;&#x6c7d;&#x8f66;&#x7ad9;3</target_name>
  295 + <target_type>String</target_type>
  296 + <target_format/>
  297 + <target_length>-1</target_length>
  298 + <target_precision>-1</target_precision>
  299 + <target_decimal_symbol/>
  300 + <target_grouping_symbol/>
  301 + <target_currency_symbol/>
  302 + <target_null_string/>
  303 + <target_aggregation_type>-</target_aggregation_type>
  304 + </field>
  305 + <field>
  306 + <field_name>fcsj</field_name>
  307 + <key_value>4</key_value>
  308 + <target_name>&#x9752;&#x5b89;&#x8def;&#x6c7d;&#x8f66;&#x7ad9;4</target_name>
  309 + <target_type>String</target_type>
  310 + <target_format/>
  311 + <target_length>-1</target_length>
  312 + <target_precision>-1</target_precision>
  313 + <target_decimal_symbol/>
  314 + <target_grouping_symbol/>
  315 + <target_currency_symbol/>
  316 + <target_null_string/>
  317 + <target_aggregation_type>-</target_aggregation_type>
  318 + </field>
  319 + <field>
  320 + <field_name>fcsj</field_name>
  321 + <key_value>5</key_value>
  322 + <target_name>&#x9752;&#x5b89;&#x8def;&#x6c7d;&#x8f66;&#x7ad9;5</target_name>
  323 + <target_type>String</target_type>
  324 + <target_format/>
  325 + <target_length>-1</target_length>
  326 + <target_precision>-1</target_precision>
  327 + <target_decimal_symbol/>
  328 + <target_grouping_symbol/>
  329 + <target_currency_symbol/>
  330 + <target_null_string/>
  331 + <target_aggregation_type>-</target_aggregation_type>
  332 + </field>
  333 + <field>
  334 + <field_name>fcsj</field_name>
  335 + <key_value>6</key_value>
  336 + <target_name>&#x9752;&#x5b89;&#x8def;&#x6c7d;&#x8f66;&#x7ad9;6</target_name>
  337 + <target_type>String</target_type>
  338 + <target_format/>
  339 + <target_length>-1</target_length>
  340 + <target_precision>-1</target_precision>
  341 + <target_decimal_symbol/>
  342 + <target_grouping_symbol/>
  343 + <target_currency_symbol/>
  344 + <target_null_string/>
  345 + <target_aggregation_type>-</target_aggregation_type>
  346 + </field>
  347 + <field>
  348 + <field_name>fcsj</field_name>
  349 + <key_value>7</key_value>
  350 + <target_name>&#x8fdb;&#x573a;7</target_name>
  351 + <target_type>String</target_type>
  352 + <target_format/>
  353 + <target_length>-1</target_length>
  354 + <target_precision>-1</target_precision>
  355 + <target_decimal_symbol/>
  356 + <target_grouping_symbol/>
  357 + <target_currency_symbol/>
  358 + <target_null_string/>
  359 + <target_aggregation_type>-</target_aggregation_type>
  360 + </field>
  361 + </fields>
  362 + <cluster_schema/>
  363 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  364 + <xloc>531</xloc>
  365 + <yloc>65</yloc>
  366 + <draw>Y</draw>
  367 + </GUI>
  368 + </step>
  369 +
  370 + <step>
  371 + <name>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</name>
  372 + <type>SortRows</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 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  382 + <prefix>out</prefix>
  383 + <sort_size>1000000</sort_size>
  384 + <free_memory/>
  385 + <compress>N</compress>
  386 + <compress_variable/>
  387 + <unique_rows>N</unique_rows>
  388 + <fields>
  389 + <field>
  390 + <name>lp</name>
  391 + <ascending>Y</ascending>
  392 + <case_sensitive>N</case_sensitive>
  393 + <presorted>N</presorted>
  394 + </field>
  395 + <field>
  396 + <name>fcno</name>
  397 + <ascending>Y</ascending>
  398 + <case_sensitive>N</case_sensitive>
  399 + <presorted>N</presorted>
  400 + </field>
  401 + </fields>
  402 + <cluster_schema/>
  403 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  404 + <xloc>331</xloc>
  405 + <yloc>65</yloc>
  406 + <draw>Y</draw>
  407 + </GUI>
  408 + </step>
  409 +
  410 + <step>
  411 + <name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x6570;&#x636e;&#x8868;</name>
  412 + <type>TableInput</type>
  413 + <description/>
  414 + <distribute>Y</distribute>
  415 + <custom_distribution/>
  416 + <copies>1</copies>
  417 + <partitioning>
  418 + <method>none</method>
  419 + <schema_name/>
  420 + </partitioning>
  421 + <connection>bus_control_variable</connection>
  422 + <sql>select &#x2a; from bsth_c_s_ttinfo_detail&#xa;where ttinfo &#x3d; &#x24;&#x7b;ttinfoid&#x7d;</sql>
  423 + <limit>0</limit>
  424 + <lookup/>
  425 + <execute_each_row>N</execute_each_row>
  426 + <variables_active>Y</variables_active>
  427 + <lazy_conversion_active>N</lazy_conversion_active>
  428 + <cluster_schema/>
  429 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  430 + <xloc>131</xloc>
  431 + <yloc>65</yloc>
  432 + <draw>Y</draw>
  433 + </GUI>
  434 + </step>
  435 +
  436 + <step>
  437 + <name>Excel&#x8f93;&#x51fa;</name>
  438 + <type>ExcelOutput</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 + <header>Y</header>
  448 + <footer>N</footer>
  449 + <encoding/>
  450 + <append>N</append>
  451 + <add_to_result_filenames>Y</add_to_result_filenames>
  452 + <file>
  453 + <name>&#x24;&#x7b;filepath&#x7d;</name>
  454 + <extention/>
  455 + <do_not_open_newfile_init>N</do_not_open_newfile_init>
  456 + <create_parent_folder>N</create_parent_folder>
  457 + <split>N</split>
  458 + <add_date>N</add_date>
  459 + <add_time>N</add_time>
  460 + <SpecifyFormat>N</SpecifyFormat>
  461 + <date_time_format/>
  462 + <sheetname>Sheet1</sheetname>
  463 + <autosizecolums>N</autosizecolums>
  464 + <nullisblank>N</nullisblank>
  465 + <protect_sheet>N</protect_sheet>
  466 + <password>Encrypted </password>
  467 + <splitevery>0</splitevery>
  468 + <usetempfiles>N</usetempfiles>
  469 + <tempdirectory/>
  470 + </file>
  471 + <template>
  472 + <enabled>N</enabled>
  473 + <append>N</append>
  474 + <filename>template.xls</filename>
  475 + </template>
  476 + <fields>
  477 + </fields>
  478 + <custom>
  479 + <header_font_name>arial</header_font_name>
  480 + <header_font_size>10</header_font_size>
  481 + <header_font_bold>N</header_font_bold>
  482 + <header_font_italic>N</header_font_italic>
  483 + <header_font_underline>no</header_font_underline>
  484 + <header_font_orientation>horizontal</header_font_orientation>
  485 + <header_font_color>black</header_font_color>
  486 + <header_background_color>none</header_background_color>
  487 + <header_row_height>255</header_row_height>
  488 + <header_alignment>left</header_alignment>
  489 + <header_image/>
  490 + <row_font_name>arial</row_font_name>
  491 + <row_font_size>10</row_font_size>
  492 + <row_font_color>black</row_font_color>
  493 + <row_background_color>none</row_background_color>
  494 + </custom>
  495 + <cluster_schema/>
  496 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  497 + <xloc>731</xloc>
  498 + <yloc>65</yloc>
  499 + <draw>Y</draw>
  500 + </GUI>
  501 + </step>
  502 +
  503 + <step>
  504 + <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
  505 + <type>SelectValues</type>
  506 + <description/>
  507 + <distribute>Y</distribute>
  508 + <custom_distribution/>
  509 + <copies>1</copies>
  510 + <partitioning>
  511 + <method>none</method>
  512 + <schema_name/>
  513 + </partitioning>
  514 + <fields> <field> <name>lp_name</name>
  515 + <rename>&#x8def;&#x724c;</rename>
  516 + <length>-2</length>
  517 + <precision>-2</precision>
  518 + </field> <select_unspecified>Y</select_unspecified>
  519 + </fields> <cluster_schema/>
  520 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  521 + <xloc>534</xloc>
  522 + <yloc>243</yloc>
  523 + <draw>Y</draw>
  524 + </GUI>
  525 + </step>
  526 +
  527 + <step>
  528 + <name>&#x8def;&#x724c;&#x540d;&#x5b57;&#x67e5;&#x627e;</name>
  529 + <type>DBLookup</type>
  530 + <description/>
  531 + <distribute>Y</distribute>
  532 + <custom_distribution/>
  533 + <copies>1</copies>
  534 + <partitioning>
  535 + <method>none</method>
  536 + <schema_name/>
  537 + </partitioning>
  538 + <connection>bus_control_variable</connection>
  539 + <cache>N</cache>
  540 + <cache_load_all>N</cache_load_all>
  541 + <cache_size>0</cache_size>
  542 + <lookup>
  543 + <schema/>
  544 + <table>bsth_c_s_gbi</table>
  545 + <orderby/>
  546 + <fail_on_multiple>N</fail_on_multiple>
  547 + <eat_row_on_failure>N</eat_row_on_failure>
  548 + <key>
  549 + <name>lp</name>
  550 + <field>id</field>
  551 + <condition>&#x3d;</condition>
  552 + <name2/>
  553 + </key>
  554 + <value>
  555 + <name>lp_name</name>
  556 + <rename>lp_name</rename>
  557 + <default/>
  558 + <type>String</type>
  559 + </value>
  560 + </lookup>
  561 + <cluster_schema/>
  562 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  563 + <xloc>237</xloc>
  564 + <yloc>156</yloc>
  565 + <draw>Y</draw>
  566 + </GUI>
  567 + </step>
  568 +
  569 + <step_error_handling>
  570 + </step_error_handling>
  571 + <slave-step-copy-partition-distribution>
  572 +</slave-step-copy-partition-distribution>
  573 + <slave_transformation>N</slave_transformation>
  574 +
  575 +</transformation>
src/main/resources/datatools/ktrs/ttinfodetailDataOutputMetaData.ktr 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x5bfc;&#x51fa;&#x5143;&#x6570;&#x636e;</name>
  5 + <description/>
  6 + <extended_description/>
  7 + <trans_version/>
  8 + <trans_type>Normal</trans_type>
  9 + <trans_status>0</trans_status>
  10 + <directory>&#x2f;</directory>
  11 + <parameters>
  12 + <parameter>
  13 + <name>filepath</name>
  14 + <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project_code&#x2f;runtime_temp&#x2f;bsth_control_u_d_files&#x2f;ttinfodetail_test.xls</default_value>
  15 + <description>&#x65f6;&#x523b;&#x8868;excel&#x5bfc;&#x51fa;&#x6587;&#x4ef6;&#x8def;&#x5f84;&#x540d;</description>
  16 + </parameter>
  17 + <parameter>
  18 + <name>injectktrfile</name>
  19 + <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project_code&#x2f;bsth_project&#x2f;bsth_control&#x2f;src&#x2f;main&#x2f;resources&#x2f;datatools&#x2f;ktrs&#x2f;ttinfodetailDataOutput.ktr</default_value>
  20 + <description>&#x6ce8;&#x5165;&#x5143;&#x6570;&#x636e;&#x7684;ktr&#x6587;&#x4ef6;</description>
  21 + </parameter>
  22 + <parameter>
  23 + <name>ttinfoid</name>
  24 + <default_value>56</default_value>
  25 + <description>&#x65f6;&#x523b;&#x8868;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&#x2f;11&#x2f;15 15&#x3a;02&#x3a;41.624</created_date>
  86 + <modified_user>-</modified_user>
  87 + <modified_date>2016&#x2f;11&#x2f;15 15&#x3a;02&#x3a;41.624</modified_date>
  88 + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
  89 + <is_key_private>N</is_key_private>
  90 + </info>
  91 + <notepads>
  92 + </notepads>
  93 + <connection>
  94 + <name>bus_control_variable</name>
  95 + <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
  96 + <type>MYSQL</type>
  97 + <access>Native</access>
  98 + <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
  99 + <port>3306</port>
  100 + <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
  101 + <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
  102 + <servername/>
  103 + <data_tablespace/>
  104 + <index_tablespace/>
  105 + <attributes>
  106 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  107 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  108 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  109 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  110 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  111 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  112 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  113 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  114 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  115 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  116 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  117 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  118 + </attributes>
  119 + </connection>
  120 + <connection>
  121 + <name>bus_control_&#x516c;&#x53f8;_201</name>
  122 + <server>localhost</server>
  123 + <type>MYSQL</type>
  124 + <access>Native</access>
  125 + <database>control</database>
  126 + <port>3306</port>
  127 + <username>root</username>
  128 + <password>Encrypted </password>
  129 + <servername/>
  130 + <data_tablespace/>
  131 + <index_tablespace/>
  132 + <attributes>
  133 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  134 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  135 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  136 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  137 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  138 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  139 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  140 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  141 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  142 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  143 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  144 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  145 + </attributes>
  146 + </connection>
  147 + <connection>
  148 + <name>bus_control_&#x672c;&#x673a;</name>
  149 + <server>localhost</server>
  150 + <type>MYSQL</type>
  151 + <access>Native</access>
  152 + <database>control</database>
  153 + <port>3306</port>
  154 + <username>root</username>
  155 + <password>Encrypted </password>
  156 + <servername/>
  157 + <data_tablespace/>
  158 + <index_tablespace/>
  159 + <attributes>
  160 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  161 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  162 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  163 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  164 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  165 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  166 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  167 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  168 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  169 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  170 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  171 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  172 + </attributes>
  173 + </connection>
  174 + <connection>
  175 + <name>xlab_mysql_youle</name>
  176 + <server>101.231.124.8</server>
  177 + <type>MYSQL</type>
  178 + <access>Native</access>
  179 + <database>xlab_youle</database>
  180 + <port>45687</port>
  181 + <username>xlab-youle</username>
  182 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
  183 + <servername/>
  184 + <data_tablespace/>
  185 + <index_tablespace/>
  186 + <attributes>
  187 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  188 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  189 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  190 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  191 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  192 + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
  193 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  194 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  195 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  196 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  197 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  198 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  199 + </attributes>
  200 + </connection>
  201 + <connection>
  202 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  203 + <server>localhost</server>
  204 + <type>MYSQL</type>
  205 + <access>Native</access>
  206 + <database>xlab_youle</database>
  207 + <port>3306</port>
  208 + <username>root</username>
  209 + <password>Encrypted </password>
  210 + <servername/>
  211 + <data_tablespace/>
  212 + <index_tablespace/>
  213 + <attributes>
  214 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  215 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  216 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  217 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  218 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  219 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  220 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  221 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  222 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  223 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  224 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  225 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  226 + </attributes>
  227 + </connection>
  228 + <connection>
  229 + <name>xlab_youle</name>
  230 + <server/>
  231 + <type>MYSQL</type>
  232 + <access>JNDI</access>
  233 + <database>xlab_youle</database>
  234 + <port>1521</port>
  235 + <username/>
  236 + <password>Encrypted </password>
  237 + <servername/>
  238 + <data_tablespace/>
  239 + <index_tablespace/>
  240 + <attributes>
  241 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  242 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  243 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  244 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  245 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  246 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  247 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  248 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  249 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  250 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  251 + </attributes>
  252 + </connection>
  253 + <order>
  254 + <hop> <from>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x5206;&#x7ec4;&#x6570;&#x636e;</from><to>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  255 + <hop> <from>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;</from><to>&#x8ba1;&#x7b97;&#x7ad9;&#x70b9;</to><enabled>Y</enabled> </hop>
  256 + <hop> <from>&#x8ba1;&#x7b97;&#x7ad9;&#x70b9;</from><to>&#x67e5;&#x627e;&#x7ad9;&#x70b9;&#x540d;</to><enabled>Y</enabled> </hop>
  257 + <hop> <from>&#x67e5;&#x627e;&#x7ad9;&#x70b9;&#x540d;</from><to>&#x8ba1;&#x7b97;&#x53cd;&#x8303;&#x5f0f;&#x5143;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
  258 + <hop> <from>&#x67e5;&#x627e;&#x7ad9;&#x70b9;&#x540d;</from><to>&#x8ba1;&#x7b97;excel&#x8f93;&#x51fa;&#x5b57;&#x6bb5;</to><enabled>Y</enabled> </hop>
  259 + <hop> <from>&#x8ba1;&#x7b97;excel&#x8f93;&#x51fa;&#x5b57;&#x6bb5;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
  260 + <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  261 + <hop> <from>&#x751f;&#x6210;&#x8def;&#x724c;&#x5b57;&#x6bb5;</from><to>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  262 + <hop> <from>&#x8ba1;&#x7b97;&#x53cd;&#x8303;&#x5f0f;&#x5143;&#x6570;&#x636e;</from><to>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</to><enabled>Y</enabled> </hop>
  263 + <hop> <from>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</from><to>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</to><enabled>Y</enabled> </hop>
  264 + </order>
  265 + <step>
  266 + <name>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</name>
  267 + <type>MetaInject</type>
  268 + <description/>
  269 + <distribute>Y</distribute>
  270 + <custom_distribution/>
  271 + <copies>1</copies>
  272 + <partitioning>
  273 + <method>none</method>
  274 + <schema_name/>
  275 + </partitioning>
  276 + <specification_method>filename</specification_method>
  277 + <trans_object_id/>
  278 + <trans_name/>
  279 + <filename>&#x24;&#x7b;injectktrfile&#x7d;</filename>
  280 + <directory_path/>
  281 + <source_step/>
  282 + <source_output_fields> </source_output_fields> <target_file/>
  283 + <no_execution>N</no_execution>
  284 + <stream_source_step/>
  285 + <stream_target_step/>
  286 + <mappings> <mapping> <target_step_name>&#x5217;&#x8f6c;&#x884c;</target_step_name>
  287 + <target_attribute_key>TARGET_TYPE</target_attribute_key>
  288 + <target_detail>Y</target_detail>
  289 + <source_step>&#x8ba1;&#x7b97;&#x53cd;&#x8303;&#x5f0f;&#x5143;&#x6570;&#x636e;</source_step>
  290 + <source_field>targettype</source_field>
  291 + </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x51fa;</target_step_name>
  292 + <target_attribute_key>TYPE</target_attribute_key>
  293 + <target_detail>Y</target_detail>
  294 + <source_step>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</source_step>
  295 + <source_field>fieldtype</source_field>
  296 + </mapping> <mapping> <target_step_name>&#x5217;&#x8f6c;&#x884c;</target_step_name>
  297 + <target_attribute_key>NAME</target_attribute_key>
  298 + <target_detail>Y</target_detail>
  299 + <source_step>&#x8ba1;&#x7b97;&#x53cd;&#x8303;&#x5f0f;&#x5143;&#x6570;&#x636e;</source_step>
  300 + <source_field>valuefieldname</source_field>
  301 + </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x51fa;</target_step_name>
  302 + <target_attribute_key>NAME</target_attribute_key>
  303 + <target_detail>Y</target_detail>
  304 + <source_step>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</source_step>
  305 + <source_field>fieldname</source_field>
  306 + </mapping> <mapping> <target_step_name>&#x5217;&#x8f6c;&#x884c;</target_step_name>
  307 + <target_attribute_key>TARGET_NAME</target_attribute_key>
  308 + <target_detail>Y</target_detail>
  309 + <source_step>&#x8ba1;&#x7b97;&#x53cd;&#x8303;&#x5f0f;&#x5143;&#x6570;&#x636e;</source_step>
  310 + <source_field>targetfieldname</source_field>
  311 + </mapping> <mapping> <target_step_name>&#x5217;&#x8f6c;&#x884c;</target_step_name>
  312 + <target_attribute_key>KEY_VALUE</target_attribute_key>
  313 + <target_detail>Y</target_detail>
  314 + <source_step>&#x8ba1;&#x7b97;&#x53cd;&#x8303;&#x5f0f;&#x5143;&#x6570;&#x636e;</source_step>
  315 + <source_field>keyvalue</source_field>
  316 + </mapping> </mappings> <cluster_schema/>
  317 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  318 + <xloc>640</xloc>
  319 + <yloc>64</yloc>
  320 + <draw>Y</draw>
  321 + </GUI>
  322 + </step>
  323 +
  324 + <step>
  325 + <name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x5206;&#x7ec4;&#x6570;&#x636e;</name>
  326 + <type>TableInput</type>
  327 + <description/>
  328 + <distribute>Y</distribute>
  329 + <custom_distribution/>
  330 + <copies>1</copies>
  331 + <partitioning>
  332 + <method>none</method>
  333 + <schema_name/>
  334 + </partitioning>
  335 + <connection>bus_control_variable</connection>
  336 + <sql>select &#xa;fcno&#xa;, min&#x28;xl_dir&#x29; xl_dir&#xa;,min&#x28;qdz&#x29; qdz&#xa;,min&#x28;zdz&#x29; zdz&#xa;,bc_type &#xa;from bsth_c_s_ttinfo_detail&#xa;where ttinfo &#x3d; &#x24;&#x7b;ttinfoid&#x7d;&#xa;group by fcno,bc_type</sql>
  337 + <limit>0</limit>
  338 + <lookup/>
  339 + <execute_each_row>N</execute_each_row>
  340 + <variables_active>Y</variables_active>
  341 + <lazy_conversion_active>N</lazy_conversion_active>
  342 + <cluster_schema/>
  343 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  344 + <xloc>56</xloc>
  345 + <yloc>185</yloc>
  346 + <draw>Y</draw>
  347 + </GUI>
  348 + </step>
  349 +
  350 + <step>
  351 + <name>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;</name>
  352 + <type>FilterRows</type>
  353 + <description/>
  354 + <distribute>Y</distribute>
  355 + <custom_distribution/>
  356 + <copies>1</copies>
  357 + <partitioning>
  358 + <method>none</method>
  359 + <schema_name/>
  360 + </partitioning>
  361 +<send_true_to/>
  362 +<send_false_to/>
  363 + <compare>
  364 +<condition>
  365 + <negated>N</negated>
  366 + <leftvalue>bc_type</leftvalue>
  367 + <function>IS NOT NULL</function>
  368 + <rightvalue/>
  369 + </condition>
  370 + </compare>
  371 + <cluster_schema/>
  372 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  373 + <xloc>182</xloc>
  374 + <yloc>189</yloc>
  375 + <draw>Y</draw>
  376 + </GUI>
  377 + </step>
  378 +
  379 + <step>
  380 + <name>&#x8ba1;&#x7b97;&#x7ad9;&#x70b9;</name>
  381 + <type>ScriptValueMod</type>
  382 + <description/>
  383 + <distribute>Y</distribute>
  384 + <custom_distribution/>
  385 + <copies>1</copies>
  386 + <partitioning>
  387 + <method>none</method>
  388 + <schema_name/>
  389 + </partitioning>
  390 + <compatible>N</compatible>
  391 + <optimizationLevel>9</optimizationLevel>
  392 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  393 + <jsScript_name>Script 1</jsScript_name>
  394 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var zd&#x3b;&#xa;&#xa;if &#x28;bc_type &#x3d;&#x3d; &#x27;in&#x27;&#x29; &#x7b;&#xa; zd &#x3d; qdz&#x3b;&#xa;&#x7d; else if &#x28;bc_type &#x3d;&#x3d; &#x27;out&#x27;&#x29; &#x7b;&#xa; zd &#x3d; zdz&#x3b;&#xa;&#x7d; else if &#x28;bc_type &#x3d;&#x3d; &#x27;normal&#x27;&#x29; &#x7b;&#xa; zd &#x3d; qdz&#x3b;&#xa;&#x7d; else &#x7b;&#xa; zd &#x3d; qdz&#x3b;&#xa;&#x7d;&#xa;</jsScript_script>
  395 + </jsScript> </jsScripts> <fields> <field> <name>zd</name>
  396 + <rename>zd</rename>
  397 + <type>String</type>
  398 + <length>-1</length>
  399 + <precision>-1</precision>
  400 + <replace>N</replace>
  401 + </field> </fields> <cluster_schema/>
  402 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  403 + <xloc>300</xloc>
  404 + <yloc>190</yloc>
  405 + <draw>Y</draw>
  406 + </GUI>
  407 + </step>
  408 +
  409 + <step>
  410 + <name>&#x67e5;&#x627e;&#x7ad9;&#x70b9;&#x540d;</name>
  411 + <type>DBLookup</type>
  412 + <description/>
  413 + <distribute>N</distribute>
  414 + <custom_distribution/>
  415 + <copies>1</copies>
  416 + <partitioning>
  417 + <method>none</method>
  418 + <schema_name/>
  419 + </partitioning>
  420 + <connection>bus_control_variable</connection>
  421 + <cache>N</cache>
  422 + <cache_load_all>N</cache_load_all>
  423 + <cache_size>0</cache_size>
  424 + <lookup>
  425 + <schema/>
  426 + <table>bsth_c_stationroute</table>
  427 + <orderby/>
  428 + <fail_on_multiple>N</fail_on_multiple>
  429 + <eat_row_on_failure>N</eat_row_on_failure>
  430 + <key>
  431 + <name>zd</name>
  432 + <field>station</field>
  433 + <condition>&#x3d;</condition>
  434 + <name2/>
  435 + </key>
  436 + <key>
  437 + <name>xl_dir</name>
  438 + <field>directions</field>
  439 + <condition>&#x3d;</condition>
  440 + <name2/>
  441 + </key>
  442 + <value>
  443 + <name>station_name</name>
  444 + <rename>zdname</rename>
  445 + <default/>
  446 + <type>String</type>
  447 + </value>
  448 + </lookup>
  449 + <cluster_schema/>
  450 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  451 + <xloc>410</xloc>
  452 + <yloc>191</yloc>
  453 + <draw>Y</draw>
  454 + </GUI>
  455 + </step>
  456 +
  457 + <step>
  458 + <name>&#x8ba1;&#x7b97;&#x53cd;&#x8303;&#x5f0f;&#x5143;&#x6570;&#x636e;</name>
  459 + <type>ScriptValueMod</type>
  460 + <description/>
  461 + <distribute>Y</distribute>
  462 + <custom_distribution/>
  463 + <copies>1</copies>
  464 + <partitioning>
  465 + <method>none</method>
  466 + <schema_name/>
  467 + </partitioning>
  468 + <compatible>N</compatible>
  469 + <optimizationLevel>9</optimizationLevel>
  470 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  471 + <jsScript_name>Script 1</jsScript_name>
  472 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var targetfieldname&#x3b; &#x2f;&#x2f; &#x76ee;&#x6807;&#x5b57;&#x6bb5;&#x540d;&#xa;var targettype&#x3b; &#x2f;&#x2f; &#x76ee;&#x6807;&#x7c7b;&#x578b;&#xa;var valuefieldname&#x3b; &#x2f;&#x2f; &#x503c;&#x5b57;&#x6bb5;&#x540d;&#xa;var keyvalue&#x3b; &#x2f;&#x2f; &#x5173;&#x952e;&#x5b57;&#x503c;&#xa;&#xa;if &#x28;bc_type &#x3d;&#x3d; &#x27;in&#x27;&#x29; &#x7b;&#xa; targetfieldname &#x3d; &#x27;&#x8fdb;&#x573a;&#x27; &#x2b; fcno&#x3b;&#xa;&#x7d; else if &#x28;bc_type &#x3d;&#x3d; &#x27;out&#x27;&#x29; &#x7b;&#xa; targetfieldname &#x3d; &#x27;&#x51fa;&#x573a;&#x27; &#x2b; fcno&#x3b;&#xa;&#x7d; else if &#x28;bc_type &#x3d;&#x3d; &#x27;normal&#x27;&#x29; &#x7b;&#xa; targetfieldname &#x3d; zdname &#x2b; fcno&#x3b;&#xa;&#x7d; else &#x7b;&#xa; targetfieldname &#x3d; zdname &#x2b; fcno&#x3b;&#xa;&#x7d; &#xa;&#xa;targettype &#x3d; &#x27;String&#x27;&#x3b;&#xa;valuefieldname &#x3d; &#x27;fcsj&#x27;&#x3b;&#xa;keyvalue &#x3d; fcno&#x3b;&#xa;</jsScript_script>
  473 + </jsScript> </jsScripts> <fields> <field> <name>targetfieldname</name>
  474 + <rename>targetfieldname</rename>
  475 + <type>String</type>
  476 + <length>-1</length>
  477 + <precision>-1</precision>
  478 + <replace>N</replace>
  479 + </field> <field> <name>targettype</name>
  480 + <rename>targettype</rename>
  481 + <type>String</type>
  482 + <length>-1</length>
  483 + <precision>-1</precision>
  484 + <replace>N</replace>
  485 + </field> <field> <name>valuefieldname</name>
  486 + <rename>valuefieldname</rename>
  487 + <type>String</type>
  488 + <length>-1</length>
  489 + <precision>-1</precision>
  490 + <replace>N</replace>
  491 + </field> <field> <name>keyvalue</name>
  492 + <rename>keyvalue</rename>
  493 + <type>String</type>
  494 + <length>-1</length>
  495 + <precision>-1</precision>
  496 + <replace>N</replace>
  497 + </field> </fields> <cluster_schema/>
  498 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  499 + <xloc>410</xloc>
  500 + <yloc>64</yloc>
  501 + <draw>Y</draw>
  502 + </GUI>
  503 + </step>
  504 +
  505 + <step>
  506 + <name>&#x8ba1;&#x7b97;excel&#x8f93;&#x51fa;&#x5b57;&#x6bb5;</name>
  507 + <type>ScriptValueMod</type>
  508 + <description/>
  509 + <distribute>Y</distribute>
  510 + <custom_distribution/>
  511 + <copies>1</copies>
  512 + <partitioning>
  513 + <method>none</method>
  514 + <schema_name/>
  515 + </partitioning>
  516 + <compatible>N</compatible>
  517 + <optimizationLevel>9</optimizationLevel>
  518 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  519 + <jsScript_name>Script 1</jsScript_name>
  520 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var fieldname&#x3b; &#x2f;&#x2f; &#x5b57;&#x6bb5;&#x540d;&#xa;var fieldtype&#x3b; &#x2f;&#x2f; &#x5b57;&#x6bb5;&#x7c7b;&#x578b;&#xa;&#xa;if &#x28;bc_type &#x3d;&#x3d; &#x27;in&#x27;&#x29; &#x7b;&#xa; fieldname &#x3d; &#x27;&#x8fdb;&#x573a;&#x27; &#x2b; fcno&#x3b;&#xa;&#x7d; else if &#x28;bc_type &#x3d;&#x3d; &#x27;out&#x27;&#x29; &#x7b;&#xa; fieldname &#x3d; &#x27;&#x51fa;&#x573a;&#x27; &#x2b; fcno&#x3b;&#xa;&#x7d; else if &#x28;bc_type &#x3d;&#x3d; &#x27;normal&#x27;&#x29; &#x7b;&#xa; fieldname &#x3d; zdname &#x2b; fcno&#x3b;&#xa;&#x7d; else &#x7b;&#xa; fieldname &#x3d; zdname &#x2b; fcno&#x3b;&#xa;&#x7d; &#xa;&#xa;fieldtype &#x3d; &#x27;String&#x27;&#x3b;&#xa;</jsScript_script>
  521 + </jsScript> </jsScripts> <fields> <field> <name>fieldname</name>
  522 + <rename>fieldname</rename>
  523 + <type>String</type>
  524 + <length>-1</length>
  525 + <precision>-1</precision>
  526 + <replace>N</replace>
  527 + </field> <field> <name>fieldtype</name>
  528 + <rename>fieldtype</rename>
  529 + <type>String</type>
  530 + <length>-1</length>
  531 + <precision>-1</precision>
  532 + <replace>N</replace>
  533 + </field> </fields> <cluster_schema/>
  534 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  535 + <xloc>410</xloc>
  536 + <yloc>326</yloc>
  537 + <draw>Y</draw>
  538 + </GUI>
  539 + </step>
  540 +
  541 + <step>
  542 + <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
  543 + <type>SelectValues</type>
  544 + <description/>
  545 + <distribute>Y</distribute>
  546 + <custom_distribution/>
  547 + <copies>1</copies>
  548 + <partitioning>
  549 + <method>none</method>
  550 + <schema_name/>
  551 + </partitioning>
  552 + <fields> <field> <name>fieldname</name>
  553 + <rename/>
  554 + <length>-2</length>
  555 + <precision>-2</precision>
  556 + </field> <field> <name>fieldtype</name>
  557 + <rename/>
  558 + <length>-2</length>
  559 + <precision>-2</precision>
  560 + </field> <field> <name>fcno</name>
  561 + <rename/>
  562 + <length>-2</length>
  563 + <precision>-2</precision>
  564 + </field> <select_unspecified>N</select_unspecified>
  565 + </fields> <cluster_schema/>
  566 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  567 + <xloc>533</xloc>
  568 + <yloc>325</yloc>
  569 + <draw>Y</draw>
  570 + </GUI>
  571 + </step>
  572 +
  573 + <step>
  574 + <name>&#x751f;&#x6210;&#x8def;&#x724c;&#x5b57;&#x6bb5;</name>
  575 + <type>RowGenerator</type>
  576 + <description/>
  577 + <distribute>Y</distribute>
  578 + <custom_distribution/>
  579 + <copies>1</copies>
  580 + <partitioning>
  581 + <method>none</method>
  582 + <schema_name/>
  583 + </partitioning>
  584 + <fields>
  585 + <field>
  586 + <name>fieldname</name>
  587 + <type>String</type>
  588 + <format/>
  589 + <currency/>
  590 + <decimal/>
  591 + <group/>
  592 + <nullif>&#x8def;&#x724c;</nullif>
  593 + <length>-1</length>
  594 + <precision>-1</precision>
  595 + <set_empty_string>N</set_empty_string>
  596 + </field>
  597 + <field>
  598 + <name>fieldtype</name>
  599 + <type>String</type>
  600 + <format/>
  601 + <currency/>
  602 + <decimal/>
  603 + <group/>
  604 + <nullif>String</nullif>
  605 + <length>-1</length>
  606 + <precision>-1</precision>
  607 + <set_empty_string>N</set_empty_string>
  608 + </field>
  609 + <field>
  610 + <name>fcno</name>
  611 + <type>Integer</type>
  612 + <format/>
  613 + <currency/>
  614 + <decimal/>
  615 + <group/>
  616 + <nullif>0</nullif>
  617 + <length>-1</length>
  618 + <precision>-1</precision>
  619 + <set_empty_string>N</set_empty_string>
  620 + </field>
  621 + </fields>
  622 + <limit>1</limit>
  623 + <never_ending>N</never_ending>
  624 + <interval_in_ms>5000</interval_in_ms>
  625 + <row_time_field>now</row_time_field>
  626 + <last_time_field>FiveSecondsAgo</last_time_field>
  627 + <cluster_schema/>
  628 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  629 + <xloc>530</xloc>
  630 + <yloc>194</yloc>
  631 + <draw>Y</draw>
  632 + </GUI>
  633 + </step>
  634 +
  635 + <step>
  636 + <name>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</name>
  637 + <type>SortRows</type>
  638 + <description/>
  639 + <distribute>Y</distribute>
  640 + <custom_distribution/>
  641 + <copies>1</copies>
  642 + <partitioning>
  643 + <method>none</method>
  644 + <schema_name/>
  645 + </partitioning>
  646 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  647 + <prefix>out</prefix>
  648 + <sort_size>1000000</sort_size>
  649 + <free_memory/>
  650 + <compress>N</compress>
  651 + <compress_variable/>
  652 + <unique_rows>N</unique_rows>
  653 + <fields>
  654 + <field>
  655 + <name>fcno</name>
  656 + <ascending>Y</ascending>
  657 + <case_sensitive>N</case_sensitive>
  658 + <presorted>N</presorted>
  659 + </field>
  660 + </fields>
  661 + <cluster_schema/>
  662 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  663 + <xloc>642</xloc>
  664 + <yloc>325</yloc>
  665 + <draw>Y</draw>
  666 + </GUI>
  667 + </step>
  668 +
  669 + <step_error_handling>
  670 + </step_error_handling>
  671 + <slave-step-copy-partition-distribution>
  672 +</slave-step-copy-partition-distribution>
  673 + <slave_transformation>N</slave_transformation>
  674 +
  675 +</transformation>
src/main/resources/static/pages/base/carpark/js/carpark-positions-function.js
@@ -59,11 +59,11 @@ var PublicFunctions = function () { @@ -59,11 +59,11 @@ var PublicFunctions = function () {
59 59
60 var shapesV = ''; 60 var shapesV = '';
61 61
62 - if(r[0].carParkShapesType='d') { 62 + if(r[0].carParkShapesType=='d') {
63 63
64 shapesV = '多边形'; 64 shapesV = '多边形';
65 65
66 - }else if(r[0].carParkShapesType='r') { 66 + }else if(r[0].carParkShapesType=='r') {
67 67
68 shapesV = '圆形'; 68 shapesV = '圆形';
69 69
src/main/resources/static/pages/base/carpark/js/carpark-positions-map.js
@@ -326,7 +326,6 @@ var CarParkPWorldsBMap = function () { @@ -326,7 +326,6 @@ var CarParkPWorldsBMap = function () {
326 326
327 // 编辑图形 327 // 编辑图形
328 editShapes : function(stationShapesTypeV,mindex) { 328 editShapes : function(stationShapesTypeV,mindex) {
329 -  
330 // 关闭信息窗口 329 // 关闭信息窗口
331 marker.closeInfoWindow(); 330 marker.closeInfoWindow();
332 331
src/main/resources/static/pages/base/stationroute/js/stationroute-list-function.js
@@ -438,10 +438,10 @@ var PublicFunctions = function () { @@ -438,10 +438,10 @@ var PublicFunctions = function () {
438 // 刷行左边树 438 // 刷行左边树
439 PublicFunctions.resjtreeDate(Line.id,stationRouteDirections); 439 PublicFunctions.resjtreeDate(Line.id,stationRouteDirections);
440 440
441 - /** 查询上行路段信息 @param:<Line.id:线路Id;0:上行> @return:data:上行路段数据 */ 441 + /** 查询上行路段信息 @param:<Line.id:线路Id;0:上行> @return:data:路段数据 */
442 GetAjaxData.getSectionRouteInfo(Line.id,stationRouteDirections,function(data) { 442 GetAjaxData.getSectionRouteInfo(Line.id,stationRouteDirections,function(data) {
443 443
444 - /** 在地图上画出线路走向 @param:<Line.id:线路Id;0:上行;data:上行路段数据> */ 444 + /** 在地图上画出线路走向 @param:<Line.id:线路Id;0:上行;data:路段数据> */
445 PublicFunctions.linePanlThree(Line.id,data,stationRouteDirections); 445 PublicFunctions.linePanlThree(Line.id,data,stationRouteDirections);
446 446
447 }); 447 });
@@ -594,8 +594,45 @@ var PublicFunctions = function () { @@ -594,8 +594,45 @@ var PublicFunctions = function () {
594 $('#descriptionsTextarea').val(Section.descriptions); 594 $('#descriptionsTextarea').val(Section.descriptions);
595 595
596 }, 596 },
  597 + //lineId,data,direction
  598 + treeSectionClick: function(lineId,data,direction){
  599 + /** 获取站点路由信息 @param:<Line.id:线路Id;0:上行> @return:<resultdata:站点路由数据> */
  600 + WorldsBMap.clearMarkAndOverlays();
  601 + // 编辑路段数据
  602 + for(var d= 0; d<data.length;d++){
  603 +
  604 + // 地图折线坐标点集合
  605 + var polylineArray = [];
  606 + // 获取路段折线坐标字符串
  607 + var sectionBsectionVectorStr = data[d].sectionBsectionVector;
  608 +
  609 + if(sectionBsectionVectorStr==null) {
  610 +
  611 + continue;
  612 +
  613 + }
  614 +
  615 + // 切割段折线坐标字符串
  616 + var tempStr = sectionBsectionVectorStr.substring(11,sectionBsectionVectorStr.length-1);
  617 +
  618 + // 分割折线坐标字符串
  619 + var lineArray = tempStr.split(',');
  620 +
  621 + for(var i = 0;i<lineArray.length;i++) {
  622 +
  623 + polylineArray.push(new BMap.Point(lineArray[i].split(' ')[0],lineArray[i].split(' ')[1]));
  624 +
  625 + }
  626 + var index = parseInt(polylineArray.length/2);
  627 + var center = polylineArray[index];
  628 + /** 在地图上画出线路走向 @param:<polylineArray:地图折线坐标点集合;resultdata:站点路由数据> */
  629 + WorldsBMap.drawingUpline(polylineArray,center);
  630 + /** 在地图上画点 @param:<point_center:中心坐标点> */
  631 + WorldsBMap.drawingUpStationPoint(center,data[d].name,d+1);
  632 + }
  633 + },
597 634
598 - /** 在地图上画出线路走向 @param:<Line.id:线路Id;0:上行;data:上行路段数据> */ 635 + /** 在地图上画出线路走向 @param:<Line.id:线路Id;0:上行;data:路段数据> */
599 linePanlThree : function(lineId,data,direction) { 636 linePanlThree : function(lineId,data,direction) {
600 637
601 /** 获取站点路由信息 @param:<Line.id:线路Id;0:上行> @return:<resultdata:站点路由数据> */ 638 /** 获取站点路由信息 @param:<Line.id:线路Id;0:上行> @return:<resultdata:站点路由数据> */
@@ -603,18 +640,26 @@ var PublicFunctions = function () { @@ -603,18 +640,26 @@ var PublicFunctions = function () {
603 640
604 WorldsBMap.clearMarkAndOverlays(); 641 WorldsBMap.clearMarkAndOverlays();
605 642
  643 + var ceter_index = Math.round(resultdata.length / 2);
  644 +
  645 + var ceterPointsStr = resultdata[ceter_index].bJwpoints;
  646 +
  647 + var ceterPointsArray = ceterPointsStr.split(' ');
  648 +
  649 + var polyline_center = new BMap.Point(ceterPointsArray[0],ceterPointsArray[1]);
  650 +
606 // 路段数据长度 651 // 路段数据长度
607 var dataLen = data.length; 652 var dataLen = data.length;
608 - 653 + //debugger;
609 // 如果大于零 654 // 如果大于零
610 if(dataLen>0) { 655 if(dataLen>0) {
611 656
612 - // 地图折线坐标点集合  
613 - var polylineArray = [];  
614 -  
615 // 编辑路段数据 657 // 编辑路段数据
616 for(var d= 0; d<dataLen;d++){ 658 for(var d= 0; d<dataLen;d++){
617 659
  660 + // 地图折线坐标点集合
  661 + var polylineArray = [];
  662 +
618 // 获取路段折线坐标字符串 663 // 获取路段折线坐标字符串
619 var sectionBsectionVectorStr = data[d].sectionBsectionVector; 664 var sectionBsectionVectorStr = data[d].sectionBsectionVector;
620 665
@@ -636,11 +681,11 @@ var PublicFunctions = function () { @@ -636,11 +681,11 @@ var PublicFunctions = function () {
636 681
637 } 682 }
638 683
  684 + /** 在地图上画出线路走向 @param:<polylineArray:地图折线坐标点集合;resultdata:站点路由数据> */
  685 + WorldsBMap.drawingUpline(polylineArray,polyline_center);
  686 +
639 } 687 }
640 688
641 - /** 在地图上画出线路走向 @param:<polylineArray:地图折线坐标点集合;resultdata:站点路由数据> */  
642 - WorldsBMap.drawingUpline(polylineArray,resultdata);  
643 -  
644 // 如果站点路由数据不为空 689 // 如果站点路由数据不为空
645 if(resultdata.length>0) { 690 if(resultdata.length>0) {
646 691
src/main/resources/static/pages/base/stationroute/js/stationroute-list-map.js
@@ -651,10 +651,9 @@ var WorldsBMap = function () { @@ -651,10 +651,9 @@ var WorldsBMap = function () {
651 }, 651 },
652 652
653 // 在地图上画出上行线路走向 653 // 在地图上画出上行线路走向
654 - drawingUpline : function (polylineArray,resultdata) {  
655 -  
656 - WorldsBMap.clearMarkAndOverlays(); 654 + drawingUpline : function (polylineArray,polyline_center) {
657 655
  656 + /*WorldsBMap.clearMarkAndOverlays();*/
658 polyUpline = ''; 657 polyUpline = '';
659 658
660 // 创建线路走向 659 // 创建线路走向
@@ -663,13 +662,13 @@ var WorldsBMap = function () { @@ -663,13 +662,13 @@ var WorldsBMap = function () {
663 // 把折线添加到地图上 662 // 把折线添加到地图上
664 mapBValue.addOverlay(polyUpline); 663 mapBValue.addOverlay(polyUpline);
665 664
666 - var ceter_index = Math.round(resultdata.length / 2); 665 + /*var ceter_index = Math.round(resultdata.length / 2);
667 666
668 var ceterPointsStr = resultdata[ceter_index].bJwpoints; 667 var ceterPointsStr = resultdata[ceter_index].bJwpoints;
669 668
670 var ceterPointsArray = ceterPointsStr.split(' '); 669 var ceterPointsArray = ceterPointsStr.split(' ');
671 670
672 - var polyline_center = new BMap.Point(ceterPointsArray[0],ceterPointsArray[1]); 671 + var polyline_center = new BMap.Point(ceterPointsArray[0],ceterPointsArray[1]);*/
673 672
674 var PanOptions_ ={noAnimation :true}; 673 var PanOptions_ ={noAnimation :true};
675 674
src/main/resources/static/pages/base/stationroute/js/stationroute-list-reload.js
@@ -62,10 +62,10 @@ $(function(){ @@ -62,10 +62,10 @@ $(function(){
62 /** 初始化下行树 @param:<Line.id:线路Id;0:下行> */ 62 /** 初始化下行树 @param:<Line.id:线路Id;0:下行> */
63 PublicFunctions.TreeUpOrDown(Line.id,'1'); 63 PublicFunctions.TreeUpOrDown(Line.id,'1');
64 64
65 - /** 查询上行路段信息 @param:<Line.id:线路Id;0:上行> @return:data:上行路段数据 */ 65 + /** 查询路段信息 @param:<Line.id:线路Id;0:上行> @return:data:路段数据 */
66 GetAjaxData.getSectionRouteInfo(Line.id,'0',function(data) { 66 GetAjaxData.getSectionRouteInfo(Line.id,'0',function(data) {
67 67
68 - /** 在地图上画出线路走向 @param:<Line.id:线路Id;0:上行;data:上行路段数据> */ 68 + /** 在地图上画出线路走向 @param:<Line.id:线路Id;0:上行;data:路段数据> */
69 PublicFunctions.linePanlThree(Line.id,data,'0'); 69 PublicFunctions.linePanlThree(Line.id,data,'0');
70 70
71 }); 71 });
src/main/resources/static/pages/base/stationroute/js/stationroute-list-treedata.js
@@ -57,8 +57,10 @@ var StationTreeData = function(){ @@ -57,8 +57,10 @@ var StationTreeData = function(){
57 // 线路ID 57 // 线路ID
58 var Line = LineObj.getLineObj(); 58 var Line = LineObj.getLineObj();
59 59
  60 + /*// 百度地图画路段
  61 + PublicFunctions.linePanlThree(Line.id,polylineArray,dire_);*/
60 // 百度地图画路段 62 // 百度地图画路段
61 - PublicFunctions.linePanlThree(Line.id,polylineArray,dire_); 63 + PublicFunctions.treeSectionClick(Line.id,polylineArray,dire_);
62 64
63 } 65 }
64 66
@@ -151,7 +153,8 @@ var StationTreeData = function(){ @@ -151,7 +153,8 @@ var StationTreeData = function(){
151 var polylineArray_ = [edtste]; 153 var polylineArray_ = [edtste];
152 154
153 // 百度地图画路段 155 // 百度地图画路段
154 - PublicFunctions.linePanlThree(edtste.sectionrouteLine,polylineArray_,edtste.sectionrouteDirections); 156 + // PublicFunctions.linePanlThree(edtste.sectionrouteLine,polylineArray_,edtste.sectionrouteDirections);
  157 + PublicFunctions.treeSectionClick(Line.id,polylineArray,dire_);
155 158
156 parmasObj(); 159 parmasObj();
157 160
src/main/resources/static/pages/scheduleApp/module/common/prj-common-globalservice.js
@@ -403,6 +403,22 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;TimeTableDetailManageService_g&#39;, [&#39;$resou @@ -403,6 +403,22 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;TimeTableDetailManageService_g&#39;, [&#39;$resou
403 isArray: true 403 isArray: true
404 } 404 }
405 } 405 }
  406 + ),
  407 + dataTools: $resource(
  408 + '/tidc/:type',
  409 + {},
  410 + {
  411 + dataExport: {
  412 + method: 'GET',
  413 + responseType: "arraybuffer",
  414 + params: {
  415 + type: "dataExportExt"
  416 + },
  417 + transformResponse: function(data, headers){
  418 + return {data : data};
  419 + }
  420 + }
  421 + }
406 ) 422 )
407 423
408 // TODO:导入数据 424 // TODO:导入数据
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/list.html
@@ -77,7 +77,7 @@ @@ -77,7 +77,7 @@
77 class="btn btn-info btn-sm" ng-if="info.isCancel == '0'"> 编辑 </a> 77 class="btn btn-info btn-sm" ng-if="info.isCancel == '0'"> 编辑 </a>
78 <a ui-sref="ttInfoDetailManage_form({xlid: info.xl.id, ttid : info.id, xlname: info.xl.name, ttname : info.name})" 78 <a ui-sref="ttInfoDetailManage_form({xlid: info.xl.id, ttid : info.id, xlname: info.xl.name, ttname : info.name})"
79 class="btn btn-info btn-sm" ng-if="info.isCancel == '0'"> 导入 </a> 79 class="btn btn-info btn-sm" ng-if="info.isCancel == '0'"> 导入 </a>
80 - <a href="javascript:" class="btn btn-info btn-sm"> 导出 </a> 80 + <a href="javascript:" class="btn btn-info btn-sm" ng-click="ctrl.exportData(info.id)"> 导出 </a>
81 </td> 81 </td>
82 <td> 82 <td>
83 <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>--> 83 <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>-->
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/main.js
@@ -3,7 +3,8 @@ angular.module(&#39;ScheduleApp&#39;).factory( @@ -3,7 +3,8 @@ angular.module(&#39;ScheduleApp&#39;).factory(
3 'TtInfoManageService', 3 'TtInfoManageService',
4 [ 4 [
5 'TimeTableManageService_g', 5 'TimeTableManageService_g',
6 - function(service) { 6 + 'TimeTableDetailManageService_g',
  7 + function(service, dservice) {
7 // 当前查询的内容条件搜索对象 8 // 当前查询的内容条件搜索对象
8 var currentSearchCondition = {page: 0}; 9 var currentSearchCondition = {page: 0};
9 // 当前查询返回的信息 10 // 当前查询返回的信息
@@ -42,6 +43,16 @@ angular.module(&#39;ScheduleApp&#39;).factory( @@ -42,6 +43,16 @@ angular.module(&#39;ScheduleApp&#39;).factory(
42 content: [], 43 content: [],
43 uiNumber: 1 44 uiNumber: 1
44 }; 45 };
  46 + },
  47 + /**
  48 + * 数据导出。
  49 + * @returns {*|Function|promise|n}
  50 + */
  51 + dataExport: function(ttinfoid) {
  52 + var param = {};
  53 + param.type = 'dataExportExt';
  54 + param.ttinfoid = ttinfoid;
  55 + return dservice.dataTools.dataExport(param).$promise;
45 } 56 }
46 57
47 58
@@ -73,7 +84,8 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -73,7 +84,8 @@ angular.module(&#39;ScheduleApp&#39;).controller(
73 'TtInfoManageListCtrl', 84 'TtInfoManageListCtrl',
74 [ 85 [
75 'TtInfoManageService', 86 'TtInfoManageService',
76 - function(service) { 87 + 'FileDownload_g',
  88 + function(service, fileDownload) {
77 var self = this; 89 var self = this;
78 var TtInfo = service.getTtInfoQueryClass(); 90 var TtInfo = service.getTtInfoQueryClass();
79 91
@@ -105,6 +117,17 @@ angular.module(&#39;ScheduleApp&#39;).controller( @@ -105,6 +117,17 @@ angular.module(&#39;ScheduleApp&#39;).controller(
105 } 117 }
106 }); 118 });
107 }; 119 };
  120 + // 导出excel
  121 + self.exportData = function(ttinfoid) {
  122 + service.dataExport(ttinfoid).then(
  123 + function(result) {
  124 + fileDownload.downloadFile(result.data, "application/octet-stream", "时刻表.xls");
  125 + },
  126 + function(result) {
  127 + console.log("exportData failed:" + result);
  128 + }
  129 + );
  130 + };
108 131
109 self.doPage(); 132 self.doPage();
110 133