Commit d7fbf13f31618c2848a81081d8eb88637fb679e8

Authored by 潘钊
2 parents a69064bd e83e662f

Merge branch 'master' of 192.168.168.201:panzhaov5/bsth_control

# Conflicts:
#	src/main/resources/application.properties
Showing 37 changed files with 2143 additions and 1010 deletions

Too many changes to show.

To preserve performance only 37 of 138 files are displayed.

... ... @@ -115,6 +115,11 @@
115 115 <artifactId>commons-net</artifactId>
116 116 <version>3.5</version>
117 117 </dependency>
  118 + <dependency>
  119 + <groupId>org.apache.commons</groupId>
  120 + <artifactId>commons-compress</artifactId>
  121 + <version>1.3</version>
  122 + </dependency>
118 123 <!-- drools 6依赖 -->
119 124 <dependency>
120 125 <groupId>org.kie</groupId>
... ... @@ -164,6 +169,16 @@
164 169 <artifactId>jxl</artifactId>
165 170 <version>2.6.12</version>
166 171 </dependency>
  172 + <dependency>
  173 + <groupId>rhino</groupId>
  174 + <artifactId>js</artifactId>
  175 + <version>1.7R2</version>
  176 + </dependency>
  177 + <dependency>
  178 + <groupId>javax.mail</groupId>
  179 + <artifactId>mail</artifactId>
  180 + <version>1.4.7</version>
  181 + </dependency>
167 182  
168 183 </dependencies>
169 184  
... ... @@ -227,4 +242,4 @@
227 242 <url>http://repo.spring.io/milestone</url>
228 243 </pluginRepository>
229 244 </pluginRepositories>
230   -</project>
231 245 \ No newline at end of file
  246 +</project>
... ...
src/main/java/com/bsth/controller/BaseController.java
... ... @@ -32,7 +32,7 @@ import java.util.Map;
32 32 public class BaseController<T, ID extends Serializable> {
33 33  
34 34 @Autowired
35   - BaseService<T, ID> baseService;
  35 + protected BaseService<T, ID> baseService;
36 36 @Autowired
37 37 DataImportExportService dataImportExportService;
38 38  
... ...
src/main/java/com/bsth/controller/CarParkController.java
... ... @@ -29,6 +29,22 @@ public class CarParkController extends BaseController&lt;CarPark, Integer&gt; {
29 29  
30 30 }
31 31  
  32 +
  33 + /**
  34 + * 新增停车场信息
  35 + *
  36 + *
  37 + * @param map<area:面积;bCenterPoint:中心点百度坐标;bParkPoint:多边形图形百度坐标点集合;
  38 + *
  39 + * brancheCompany:分公司;company:公司;createBy:创建人;createDate:创建日期;dbType:原坐标类型;descriptions:描述;
  40 + *
  41 + * destroy:是否撤销;gCenterPoint:WGS中心点坐标;gParkPoint:WGS多边形图形坐标集合;id:停车场ID;parkCode:停车场编码;
  42 + *
  43 + * parkName:停车名称;radius:圆半径;shapesType:图形类型;versions:版本号>
  44 + *
  45 + * @return map <SUCCESS:成功;ERROR:失败>
  46 + *
  47 + */
32 48 @RequestMapping(value="carParkSave" , method = RequestMethod.POST)
33 49 public Map<String, Object> stationSave(@RequestParam Map<String, Object> map) {
34 50  
... ... @@ -46,6 +62,21 @@ public class CarParkController extends BaseController&lt;CarPark, Integer&gt; {
46 62 return service.findCarParkInfoFormId(map);
47 63 }
48 64  
  65 + /**
  66 + * 修改停车场信息
  67 + *
  68 + *
  69 + * @param map<area:面积;bCenterPoint:中心点百度坐标;bParkPoint:多边形图形百度坐标点集合;
  70 + *
  71 + * brancheCompany:分公司;company:公司;createBy:创建人;createDate:创建日期;dbType:原坐标类型;descriptions:描述;
  72 + *
  73 + * destroy:是否撤销;gCenterPoint:WGS中心点坐标;gParkPoint:WGS多边形图形坐标集合;id:停车场ID;parkCode:停车场编码;
  74 + *
  75 + * parkName:停车名称;radius:圆半径;shapesType:图形类型;versions:版本号>
  76 + *
  77 + * @return map <SUCCESS:成功;ERROR:失败>
  78 + *
  79 + */
49 80 @RequestMapping(value="carParkUpdate" , method = RequestMethod.POST)
50 81 public Map<String, Object> carParkUpdate(@RequestParam Map<String, Object> map) {
51 82  
... ...
src/main/java/com/bsth/controller/PersonnelController.java
1   -package com.bsth.controller;
2   -
3   -import com.bsth.entity.Personnel;
4   -import com.bsth.service.schedule.utils.DataToolsProperties;
5   -import org.springframework.beans.factory.annotation.Autowired;
6   -import org.springframework.boot.context.properties.EnableConfigurationProperties;
7   -import org.springframework.web.bind.annotation.*;
8   -
9   -import java.util.Map;
10   -
11   -/**
12   - * Created by xu on 16/6/15.
13   - */
14   -@RestController
15   -@RequestMapping("personnel")
16   -@EnableConfigurationProperties(DataToolsProperties.class)
17   -public class PersonnelController extends BaseController<Personnel, Integer> {
18   -
19   - @Autowired
20   - private DataToolsProperties dataToolsProperties;
21   -
22   - /**
23   - * 覆写方法,因为form提交的方式参数不全,改用 json形式提交 @RequestBody
24   - * @Title: save
25   - * @Description: TODO(持久化对象)
26   - * @param @param t
27   - * @param @return 设定文件
28   - * @return Map<String,Object> {status: 1(成功),-1(失败)}
29   - * @throws
30   - */
31   - @RequestMapping(method = RequestMethod.POST)
32   - public Map<String, Object> save(@RequestBody Personnel t){
33   - return baseService.save(t);
34   - }
35   -
36   - /**
37   - * 验证。
38   - * @param map
39   - * @return
40   - */
41   - @RequestMapping(value = "/validate/equale", method = RequestMethod.GET)
42   - public Map<String, Object> validateData(@RequestParam Map<String, Object> map) {
43   - // 一般比较相同公司下工号是否相同
44   - return baseService.validateEquale(map);
45   - }
46   -
47   - @Override
48   - protected String getDataImportKtrClasspath() {
49   - return dataToolsProperties.getEmployeesDatainputktr();
50   - }
51   -}
  1 +package com.bsth.controller;
  2 +
  3 +import com.bsth.entity.Personnel;
  4 +import com.bsth.service.schedule.utils.DataToolsProperties;
  5 +import org.springframework.beans.factory.annotation.Autowired;
  6 +import org.springframework.boot.context.properties.EnableConfigurationProperties;
  7 +import org.springframework.web.bind.annotation.*;
  8 +
  9 +import java.util.Map;
  10 +
  11 +/**
  12 + * Created by xu on 16/6/15.
  13 + */
  14 +@RestController
  15 +@RequestMapping("personnel")
  16 +@EnableConfigurationProperties(DataToolsProperties.class)
  17 +public class PersonnelController extends BaseController<Personnel, Integer> {
  18 +
  19 + @Autowired
  20 + private DataToolsProperties dataToolsProperties;
  21 +
  22 + /**
  23 + * 覆写方法,因为form提交的方式参数不全,改用 json形式提交 @RequestBody
  24 + * @Title: save
  25 + * @Description: TODO(持久化对象)
  26 + * @param @param t
  27 + * @param @return 设定文件
  28 + * @return Map<String,Object> {status: 1(成功),-1(失败)}
  29 + * @throws
  30 + */
  31 + @RequestMapping(method = RequestMethod.POST)
  32 + public Map<String, Object> save(@RequestBody Personnel t){
  33 + return baseService.save(t);
  34 + }
  35 +
  36 + /**
  37 + * 验证。
  38 + * @param map
  39 + * @return
  40 + */
  41 + @RequestMapping(value = "/validate/equale", method = RequestMethod.GET)
  42 + public Map<String, Object> validateData(@RequestParam Map<String, Object> map) {
  43 + // 一般比较相同公司下工号是否相同
  44 + return baseService.validateEquale(map);
  45 + }
  46 +
  47 + @Override
  48 + protected String getDataImportKtrClasspath() {
  49 + return dataToolsProperties.getEmployeesDatainputktr();
  50 + }
  51 +}
... ...
src/main/java/com/bsth/controller/SectionRouteController.java
... ... @@ -60,4 +60,16 @@ public class SectionRouteController extends BaseController&lt;SectionRoute, Integer
60 60  
61 61 return routeService.findSectionRouteInfoFormId(map);
62 62 }
  63 +
  64 + /**
  65 + * @Description :TODO(查询线路某方向下的上一个路段序号)
  66 + *
  67 + * @param map <lineId:线路ID; direction:方向;sectionRouteCode:路段编码>
  68 + *
  69 + * @return List<Map<String, Object>>
  70 + */
  71 + @RequestMapping(value = "/findUpStationRouteCode" , method = RequestMethod.GET)
  72 + public List<Map<String, Object>> findUpStationRouteCode(@RequestParam Map<String, Object> map) {
  73 + return routeService.findUpSectionRouteCode(map);
  74 + }
63 75 }
... ...
src/main/java/com/bsth/controller/schedule/CarConfigInfoController.java
... ... @@ -2,11 +2,13 @@ package com.bsth.controller.schedule;
2 2  
3 3 import com.bsth.controller.BaseController;
4 4 import com.bsth.entity.schedule.CarConfigInfo;
  5 +import com.bsth.repository.schedule.CarConfigInfoRepository;
5 6 import com.bsth.service.schedule.utils.DataToolsProperties;
6 7 import org.springframework.beans.factory.annotation.Autowired;
7 8 import org.springframework.boot.context.properties.EnableConfigurationProperties;
8   -import org.springframework.web.bind.annotation.RequestMapping;
9   -import org.springframework.web.bind.annotation.RestController;
  9 +import org.springframework.web.bind.annotation.*;
  10 +
  11 +import java.util.Map;
10 12  
11 13 /**
12 14 * Created by xu on 16/5/9.
... ... @@ -17,9 +19,30 @@ import org.springframework.web.bind.annotation.RestController;
17 19 public class CarConfigInfoController extends BaseController<CarConfigInfo, Long> {
18 20 @Autowired
19 21 private DataToolsProperties dataToolsProperties;
  22 + @Autowired
  23 + private CarConfigInfoRepository carConfigInfoRepository;
20 24  
21 25 @Override
22 26 protected String getDataImportKtrClasspath() {
23 27 return dataToolsProperties.getCarsconfigDatainputktr();
24 28 }
  29 +
  30 + @Override
  31 + public CarConfigInfo findById(@PathVariable("id") Long aLong) {
  32 + return carConfigInfoRepository.findOneExtend(aLong);
  33 + }
  34 +
  35 + /**
  36 + * 覆写方法,因为form提交的方式参数不全,改用 json形式提交 @RequestBody
  37 + * @Title: save
  38 + * @Description: TODO(持久化对象)
  39 + * @param @param t
  40 + * @param @return 设定文件
  41 + * @return Map<String,Object> {status: 1(成功),-1(失败)}
  42 + * @throws
  43 + */
  44 + @RequestMapping(method = RequestMethod.POST)
  45 + public Map<String, Object> save(@RequestBody CarConfigInfo t){
  46 + return baseService.save(t);
  47 + }
25 48 }
... ...
src/main/java/com/bsth/controller/schedule/EmployeeConfigInfoController.java
... ... @@ -2,11 +2,13 @@ package com.bsth.controller.schedule;
2 2  
3 3 import com.bsth.controller.BaseController;
4 4 import com.bsth.entity.schedule.EmployeeConfigInfo;
  5 +import com.bsth.repository.schedule.EmployeeConfigInfoRepository;
5 6 import com.bsth.service.schedule.utils.DataToolsProperties;
6 7 import org.springframework.beans.factory.annotation.Autowired;
7 8 import org.springframework.boot.context.properties.EnableConfigurationProperties;
8   -import org.springframework.web.bind.annotation.RequestMapping;
9   -import org.springframework.web.bind.annotation.RestController;
  9 +import org.springframework.web.bind.annotation.*;
  10 +
  11 +import java.util.Map;
10 12  
11 13 /**
12 14 * Created by xu on 16/5/10.
... ... @@ -17,9 +19,30 @@ import org.springframework.web.bind.annotation.RestController;
17 19 public class EmployeeConfigInfoController extends BaseController<EmployeeConfigInfo, Long> {
18 20 @Autowired
19 21 private DataToolsProperties dataToolsProperties;
  22 + @Autowired
  23 + private EmployeeConfigInfoRepository employeeConfigInfoRepository;
20 24  
21 25 @Override
22 26 protected String getDataImportKtrClasspath() {
23 27 return dataToolsProperties.getEmployeesconfigDatainputktr();
24 28 }
  29 +
  30 + @Override
  31 + public EmployeeConfigInfo findById(@PathVariable("id") Long aLong) {
  32 + return employeeConfigInfoRepository.findOneExtend(aLong);
  33 + }
  34 +
  35 + /**
  36 + * 覆写方法,因为form提交的方式参数不全,改用 json形式提交 @RequestBody
  37 + * @Title: save
  38 + * @Description: TODO(持久化对象)
  39 + * @param @param t
  40 + * @param @return 设定文件
  41 + * @return Map<String,Object> {status: 1(成功),-1(失败)}
  42 + * @throws
  43 + */
  44 + @RequestMapping(method = RequestMethod.POST)
  45 + public Map<String, Object> save(@RequestBody EmployeeConfigInfo t){
  46 + return baseService.save(t);
  47 + }
25 48 }
... ...
src/main/java/com/bsth/controller/schedule/GuideboardInfoController.java
... ... @@ -2,9 +2,11 @@ package com.bsth.controller.schedule;
2 2  
3 3 import com.bsth.controller.BaseController;
4 4 import com.bsth.entity.schedule.GuideboardInfo;
  5 +import com.bsth.repository.schedule.GuideboardInfoRepository;
5 6 import com.bsth.service.schedule.utils.DataToolsProperties;
6 7 import org.springframework.beans.factory.annotation.Autowired;
7 8 import org.springframework.boot.context.properties.EnableConfigurationProperties;
  9 +import org.springframework.web.bind.annotation.PathVariable;
8 10 import org.springframework.web.bind.annotation.RequestMapping;
9 11 import org.springframework.web.bind.annotation.RestController;
10 12  
... ... @@ -17,9 +19,16 @@ import org.springframework.web.bind.annotation.RestController;
17 19 public class GuideboardInfoController extends BaseController<GuideboardInfo, Long> {
18 20 @Autowired
19 21 private DataToolsProperties dataToolsProperties;
  22 + @Autowired
  23 + private GuideboardInfoRepository guideboardInfoRepository;
20 24  
21 25 @Override
22 26 protected String getDataImportKtrClasspath() {
23 27 return dataToolsProperties.getGuideboardsDatainputktr();
24 28 }
  29 +
  30 + @Override
  31 + public GuideboardInfo findById(@PathVariable("id") Long aLong) {
  32 + return guideboardInfoRepository.findOneExtend(aLong);
  33 + }
25 34 }
... ...
src/main/java/com/bsth/controller/schedule/ScheduleRule1FlatController.java 0 → 100644
  1 +package com.bsth.controller.schedule;
  2 +
  3 +import com.bsth.controller.BaseController;
  4 +import com.bsth.entity.schedule.EmployeeConfigInfo;
  5 +import com.bsth.entity.schedule.GuideboardInfo;
  6 +import com.bsth.entity.schedule.rule.ScheduleRule1Flat;
  7 +import com.bsth.repository.ScheduleRule1FlatRepository;
  8 +import com.bsth.service.schedule.EmployeeConfigInfoService;
  9 +import com.bsth.service.schedule.GuideboardInfoService;
  10 +import org.apache.commons.lang3.StringUtils;
  11 +import org.springframework.beans.factory.annotation.Autowired;
  12 +import org.springframework.web.bind.annotation.*;
  13 +
  14 +import java.util.HashMap;
  15 +import java.util.Map;
  16 +
  17 +/**
  18 + * Created by xu on 16/7/4.
  19 + */
  20 +@RestController
  21 +@RequestMapping("sr1fc")
  22 +public class ScheduleRule1FlatController extends BaseController<ScheduleRule1Flat, Long> {
  23 +
  24 + @Autowired
  25 + private ScheduleRule1FlatRepository scheduleRule1FlatRepository;
  26 + @Autowired
  27 + private GuideboardInfoService guideboardInfoService;
  28 + @Autowired
  29 + private EmployeeConfigInfoService employeeConfigInfoService;
  30 +
  31 + @Override
  32 + public ScheduleRule1Flat findById(@PathVariable("id") Long aLong) {
  33 + return scheduleRule1FlatRepository.findOneExtend(aLong);
  34 + }
  35 +
  36 + /**
  37 + * 覆写方法,因为form提交的方式参数不全,改用 json形式提交 @RequestBody
  38 + * @Title: save
  39 + * @Description: TODO(持久化对象)
  40 + * @param @param t
  41 + * @param @return 设定文件
  42 + * @return Map<String,Object> {status: 1(成功),-1(失败)}
  43 + * @throws
  44 + */
  45 + @RequestMapping(method = RequestMethod.POST)
  46 + public Map<String, Object> save(@RequestBody ScheduleRule1Flat t){
  47 + // TODO:根据编码查找id,不做错误检测,暂时这样做,以后前端直接传过来
  48 + // 1、查找路牌配置id
  49 + Map<String, Object> param1 = new HashMap<>();
  50 + param1.put("xl.id_eq", t.getXl().getId());
  51 + param1.put("lpName_eq", null);
  52 +
  53 + String[] lpNames = t.getLpNames().split(",");
  54 + String[] lpIds = new String[lpNames.length];
  55 + for (int i = 0; i < lpNames.length; i++) {
  56 + param1.put("lpName_eq", lpNames[i]);
  57 + Iterable<GuideboardInfo> guideboardInfos = guideboardInfoService.list(param1);
  58 + lpIds[i] = guideboardInfos.iterator().next().getId().toString();
  59 + }
  60 + t.setLpIds(StringUtils.join(lpIds, ","));
  61 +
  62 + // 2、查找人员配置id
  63 + Map<String, Object> param2 = new HashMap<>();
  64 + param2.put("xl.id_eq", t.getXl().getId());
  65 + param2.put("dbbm_eq", null);
  66 +
  67 + String[] ryDbbms = t.getRyDbbms().split(",");
  68 + String[] ryIds = new String[ryDbbms.length];
  69 + for (int j = 0; j < ryDbbms.length; j++) {
  70 + param2.put("dbbm_eq", ryDbbms[j]);
  71 + Iterable<EmployeeConfigInfo> employeeConfigInfos = employeeConfigInfoService.list(param2);
  72 + ryIds[j] = employeeConfigInfos.iterator().next().getId().toString();
  73 + }
  74 + t.setRyIds(StringUtils.join(ryIds, ","));
  75 +
  76 + return baseService.save(t);
  77 + }
  78 +
  79 +}
... ...
src/main/java/com/bsth/controller/schedule/TTInfoDetailController.java 0 → 100644
  1 +package com.bsth.controller.schedule;
  2 +
  3 +import com.bsth.common.ResponseCode;
  4 +import com.bsth.controller.BaseController;
  5 +import com.bsth.entity.schedule.TTInfoDetail;
  6 +import com.bsth.service.schedule.TTInfoDetailServiceImpl;
  7 +import org.springframework.beans.factory.annotation.Autowired;
  8 +import org.springframework.web.bind.annotation.RequestMapping;
  9 +import org.springframework.web.bind.annotation.RequestMethod;
  10 +import org.springframework.web.bind.annotation.RestController;
  11 +import org.springframework.web.multipart.MultipartFile;
  12 +
  13 +import java.util.HashMap;
  14 +import java.util.Map;
  15 +
  16 +/**
  17 + * Created by xu on 16/7/2.
  18 + */
  19 +@RestController
  20 +@RequestMapping("tidc")
  21 +public class TTInfoDetailController extends BaseController<TTInfoDetail, Long> {
  22 + @Autowired
  23 + private TTInfoDetailServiceImpl ttInfoDetailService;
  24 +
  25 + @RequestMapping(value = "/dataImportExtend", method = RequestMethod.POST)
  26 + public Map<String, Object> uploadDataAndImport(
  27 + MultipartFile file, String xlmc, String ttinfoname, String tccname) throws Exception {
  28 + Map<String, Object> resultMap = new HashMap<>();
  29 +
  30 + try {
  31 + ttInfoDetailService.fileDataImport(file, xlmc, ttinfoname, tccname);
  32 + resultMap.put("status", ResponseCode.SUCCESS);
  33 + resultMap.put("msg", "导入成功");
  34 + } catch (Exception exp) {
  35 + exp.printStackTrace();
  36 + throw exp;
  37 + }
  38 +
  39 + return resultMap;
  40 + }
  41 +}
... ...
src/main/java/com/bsth/entity/schedule/CarConfigInfo.java
... ... @@ -26,11 +26,11 @@ public class CarConfigInfo implements Serializable {
26 26 @GeneratedValue
27 27 private Long id;
28 28  
29   - /** 线路关联 */
30   - @ManyToOne(optional = false, cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  29 + /** 线路关联(jpa2 detach)*/
  30 + @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
31 31 private Line xl;
32   - /** 车辆关联 */
33   - @ManyToOne(optional = false, cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  32 + /** 车辆关联 (jpa2 detach) */
  33 + @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
34 34 private Cars cl;
35 35  
36 36  
... ...
src/main/java/com/bsth/entity/schedule/EmployeeConfigInfo.java
... ... @@ -6,6 +6,7 @@ import com.bsth.entity.Personnel;
6 6 import com.bsth.entity.sys.SysUser;
7 7  
8 8 import javax.persistence.*;
  9 +import javax.validation.constraints.NotNull;
9 10 import java.util.Date;
10 11  
11 12 /**
... ... @@ -14,7 +15,7 @@ import java.util.Date;
14 15 @Entity
15 16 @Table(name = "bsth_c_s_ecinfo")
16 17 @NamedEntityGraphs({
17   - @NamedEntityGraph(name = "employeeConfigInfo_xl_cl", attributeNodes = {
  18 + @NamedEntityGraph(name = "employeeConfigInfo_jsy_spy_xl", attributeNodes = {
18 19 @NamedAttributeNode("jsy"),
19 20 @NamedAttributeNode("spy"),
20 21 @NamedAttributeNode("xl")
... ... @@ -28,19 +29,20 @@ public class EmployeeConfigInfo {
28 29 private Long id;
29 30  
30 31 /** 线路关联 */
31   - @ManyToOne(optional = false, cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  32 + @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
32 33 private Line xl;
33   - /** 车辆关联 */
34   - @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  34 + /** 车辆关联(TODO:貌似没用了) */
  35 + @ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
35 36 private Cars cl;
36 37 /** 人员关联(驾驶员) */
37   - @ManyToOne(optional = false, cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  38 + @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
38 39 private Personnel jsy;
39 40 /** 人员关联(售票员) */
40   - @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  41 + @ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
41 42 private Personnel spy;
42 43  
43   - /** 搭班编码(TODO:估计是售票员和驾驶员搭配时使用) */
  44 + /** 搭班编码(是售票员和驾驶员搭配时使用,同一条线路搭班编码不能重复) */
  45 + @NotNull
44 46 private String dbbm;
45 47  
46 48 /** 创建人 */
... ...
src/main/java/com/bsth/entity/schedule/GuideboardInfo.java
... ... @@ -25,7 +25,7 @@ public class GuideboardInfo {
25 25 private Long id;
26 26  
27 27 /** 线路关联 */
28   - @ManyToOne(optional = false, cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  28 + @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
29 29 private Line xl;
30 30  
31 31 /** 路牌顺序号 */
... ...
src/main/java/com/bsth/entity/schedule/rule/ScheduleRule1Flat.java 0 → 100644
  1 +package com.bsth.entity.schedule.rule;
  2 +
  3 +import com.bsth.entity.Cars;
  4 +import com.bsth.entity.Line;
  5 +import com.bsth.entity.sys.SysUser;
  6 +
  7 +import javax.persistence.*;
  8 +import javax.validation.constraints.NotNull;
  9 +import java.util.Date;
  10 +
  11 +/**
  12 + * 排班规则1(flat,路牌,人员都不关联表,全部保存相关id),
  13 + * 基于老系统的规则设定实体,
  14 + * 有所谓的路牌范围,就是关联多个路牌
  15 + * 有所谓的人员返回,就是关联多个人(可能带早晚班)
  16 + * 有起始路牌,起始人员,翻班格式
  17 + */
  18 +@Entity
  19 +@Table(name = "bsth_c_s_sr1_flat")
  20 +@NamedEntityGraphs({
  21 + @NamedEntityGraph(name = "scheduleRule1Flat_xl_cl", attributeNodes = {
  22 + @NamedAttributeNode("xl"),
  23 + @NamedAttributeNode("cl")
  24 + })
  25 +})
  26 +public class ScheduleRule1Flat {
  27 + /** 主键Id */
  28 + @Id
  29 + @GeneratedValue
  30 + private Long id;
  31 +
  32 + /** 关联线路 */
  33 + @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
  34 + private Line xl;
  35 + /** 关联车辆 */
  36 + @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
  37 + private Cars cl;
  38 + /** 启用日期 */
  39 + @NotNull
  40 + private Date qyrq;
  41 +
  42 + /** 路牌名称s(用逗号隔开) */
  43 + @NotNull
  44 + private String lpNames;
  45 + /** 对应的路牌ids(用逗号隔开) */
  46 + @NotNull
  47 + private String lpIds;
  48 + /** 起始路牌(从0开始) */
  49 + @NotNull
  50 + private Integer lpStart;
  51 + /** 人员搭班编码s(用逗号隔开) */
  52 + @NotNull
  53 + private String ryDbbms;
  54 + /** 对应的人员配置ids(用逗号隔开) */
  55 + @NotNull
  56 + private String ryIds;
  57 + /** 起始人员(从0开始) */
  58 + @NotNull
  59 + private Integer ryStart;
  60 +
  61 + /** 翻班格式(TODO:这个用在车子上的,暂时不管)*/
  62 + private String fbgs;
  63 +
  64 + /** 创建人 */
  65 + @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  66 + private SysUser createBy;
  67 + /** 修改人 */
  68 + @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  69 + private SysUser updateBy;
  70 + /** 创建日期 */
  71 + @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
  72 + private Date createDate;
  73 + /** 修改日期 */
  74 + @Column(name = "update_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
  75 + private Date updateDate;
  76 +
  77 + public Long getId() {
  78 + return id;
  79 + }
  80 +
  81 + public void setId(Long id) {
  82 + this.id = id;
  83 + }
  84 +
  85 + public Line getXl() {
  86 + return xl;
  87 + }
  88 +
  89 + public void setXl(Line xl) {
  90 + this.xl = xl;
  91 + }
  92 +
  93 + public Cars getCl() {
  94 + return cl;
  95 + }
  96 +
  97 + public void setCl(Cars cl) {
  98 + this.cl = cl;
  99 + }
  100 +
  101 + public Date getQyrq() {
  102 + return qyrq;
  103 + }
  104 +
  105 + public void setQyrq(Date qyrq) {
  106 + this.qyrq = qyrq;
  107 + }
  108 +
  109 + public String getLpNames() {
  110 + return lpNames;
  111 + }
  112 +
  113 + public void setLpNames(String lpNames) {
  114 + this.lpNames = lpNames;
  115 + }
  116 +
  117 + public String getLpIds() {
  118 + return lpIds;
  119 + }
  120 +
  121 + public void setLpIds(String lpIds) {
  122 + this.lpIds = lpIds;
  123 + }
  124 +
  125 + public Integer getLpStart() {
  126 + return lpStart;
  127 + }
  128 +
  129 + public void setLpStart(Integer lpStart) {
  130 + this.lpStart = lpStart;
  131 + }
  132 +
  133 + public String getRyDbbms() {
  134 + return ryDbbms;
  135 + }
  136 +
  137 + public void setRyDbbms(String ryDbbms) {
  138 + this.ryDbbms = ryDbbms;
  139 + }
  140 +
  141 + public String getRyIds() {
  142 + return ryIds;
  143 + }
  144 +
  145 + public void setRyIds(String ryIds) {
  146 + this.ryIds = ryIds;
  147 + }
  148 +
  149 + public Integer getRyStart() {
  150 + return ryStart;
  151 + }
  152 +
  153 + public void setRyStart(Integer ryStart) {
  154 + this.ryStart = ryStart;
  155 + }
  156 +
  157 + public String getFbgs() {
  158 + return fbgs;
  159 + }
  160 +
  161 + public void setFbgs(String fbgs) {
  162 + this.fbgs = fbgs;
  163 + }
  164 +
  165 + public SysUser getCreateBy() {
  166 + return createBy;
  167 + }
  168 +
  169 + public void setCreateBy(SysUser createBy) {
  170 + this.createBy = createBy;
  171 + }
  172 +
  173 + public SysUser getUpdateBy() {
  174 + return updateBy;
  175 + }
  176 +
  177 + public void setUpdateBy(SysUser updateBy) {
  178 + this.updateBy = updateBy;
  179 + }
  180 +
  181 + public Date getCreateDate() {
  182 + return createDate;
  183 + }
  184 +
  185 + public void setCreateDate(Date createDate) {
  186 + this.createDate = createDate;
  187 + }
  188 +
  189 + public Date getUpdateDate() {
  190 + return updateDate;
  191 + }
  192 +
  193 + public void setUpdateDate(Date updateDate) {
  194 + this.updateDate = updateDate;
  195 + }
  196 +}
... ...
src/main/java/com/bsth/repository/CarParkRepository.java
... ... @@ -76,11 +76,11 @@ public interface CarParkRepository extends BaseRepository&lt;CarPark, Integer&gt;{
76 76 "park_name = ?4 , " +
77 77 "branche_company = ?5 , " +
78 78 "create_by = ?6 , " +
79   - "create_date = ?7 , " +
  79 + "create_date = str_to_date(?7,'%Y-%m-%d %H:%i:%s') , " +
80 80 "descriptions = ?8 , " +
81 81 "destroy = ?9 , " +
82 82 "update_by = ?10 , " +
83   - "update_date = ?11 , " +
  83 + "update_date =str_to_date(?11,'%Y-%m-%d %H:%i:%s') , " +
84 84 "versions = ?12 , " +
85 85 "b_center_point = ?13 , " +
86 86 "g_center_point = ?14 , " +
... ...
src/main/java/com/bsth/repository/ScheduleRule1FlatRepository.java 0 → 100644
  1 +package com.bsth.repository;
  2 +
  3 +import com.bsth.entity.schedule.rule.ScheduleRule1Flat;
  4 +import org.springframework.data.domain.Page;
  5 +import org.springframework.data.domain.Pageable;
  6 +import org.springframework.data.jpa.domain.Specification;
  7 +import org.springframework.data.jpa.repository.EntityGraph;
  8 +import org.springframework.data.jpa.repository.Query;
  9 +import org.springframework.stereotype.Repository;
  10 +
  11 +/**
  12 + * Created by xu on 16/7/4.
  13 + */
  14 +@Repository
  15 +public interface ScheduleRule1FlatRepository extends BaseRepository<ScheduleRule1Flat, Long> {
  16 +
  17 + @EntityGraph(value = "scheduleRule1Flat_xl_cl", type = EntityGraph.EntityGraphType.FETCH)
  18 + @Override
  19 + Page<ScheduleRule1Flat> findAll(Specification<ScheduleRule1Flat> spec, Pageable pageable);
  20 +
  21 + @EntityGraph(value = "scheduleRule1Flat_xl_cl", type = EntityGraph.EntityGraphType.FETCH)
  22 + @Query("select cc from ScheduleRule1Flat cc where cc.id=?1")
  23 + ScheduleRule1Flat findOneExtend(Long aLong);
  24 +}
... ...
src/main/java/com/bsth/repository/SectionRouteRepository.java
... ... @@ -57,15 +57,18 @@ public interface SectionRouteRepository extends BaseRepository&lt;SectionRoute, Int
57 57 " b.section_distance AS sectionDistance," +
58 58 " b.section_time AS sectionTime," +
59 59 " b.db_type AS sectiondbType," +
60   - " b.speed_limit AS sectionSpeedLimet FROM (" +
  60 + " b.speed_limit AS sectionSpeedLimet ,a.destroy,a.versions,a.descriptions FROM (" +
61 61 "SELECT r.id AS sectionrouteId," +
62 62 "r.line AS sectionrouteLine," +
63 63 "r.line_code AS sectionrouteLineCode," +
64 64 "r.section AS sectionrouteSection," +
65 65 "r.section_code AS sectionrouteSectionCode," +
66 66 "r.sectionroute_code AS sectionrouteCode," +
67   - "r.directions AS sectionrouteDirections" +
68   - " FROM bsth_c_sectionroute r where r.line = ?1 and r.directions = ?2 and r.destroy=0 ) a " +
  67 + "r.directions AS sectionrouteDirections," +
  68 + "r.destroy AS destroy," +
  69 + "r.versions AS versions," +
  70 + "r.descriptions AS descriptions" +
  71 + " FROM bsth_c_sectionroute r where r.line = ?1 and r.directions = ?2 and r.destroy=0 ) a " +
69 72 " LEFT JOIN bsth_c_section b ON a.sectionrouteSection = b.id", nativeQuery=true)
70 73 List<Object[]> getSectionRoute(int lineId, int directions);
71 74  
... ... @@ -128,4 +131,14 @@ public interface SectionRouteRepository extends BaseRepository&lt;SectionRoute, Int
128 131 " LEFT JOIN bsth_c_section b on a.sectionRouteSection = b.id", nativeQuery=true)
129 132 List<Object[]> findSectionRouteInfoFormId(int id);
130 133  
  134 +
  135 + /**
  136 + * @Description :TODO(查询线路某方向下的上一个路段序号)
  137 + *
  138 + * @param map <lineId:线路ID; direction:方向;sectionRouteCode:路段编码>
  139 + *
  140 + * @return List<Map<String, Object>>
  141 + */
  142 + @Query(value = " select MAX(r.sectionroute_code) as sectionrouteCode from bsth_c_sectionroute r WHERE r.line=?1 and r.directions =?2 and r.sectionroute_code< ?3", nativeQuery=true)
  143 + List<Object[]> findUpSectionRouteCode(Integer lineId,Integer direction,Integer stationRouteCode);
131 144 }
... ...
src/main/java/com/bsth/repository/StationRepository.java
... ... @@ -103,7 +103,7 @@ public interface StationRepository extends BaseRepository&lt;Station, Integer&gt; {
103 103 " WHERE id = ?17 ", nativeQuery=true)
104 104 public void stationUpdate(String stationCod,String stationName,String roadCoding,String dbType,String bJwpoints,
105 105  
106   - String gLonx,String gLaty,Float x,Float y, String bPolygonGrid,String gPolygonGrid,
  106 + Float gLonx,Float gLaty,Float x,Float y, String bPolygonGrid,String gPolygonGrid,
107 107  
108 108 Integer destroy, Integer radius,String shapesType, Integer versions,String descriptions,Integer stationId);
109 109  
... ...
src/main/java/com/bsth/repository/schedule/CarConfigInfoRepository.java
... ... @@ -21,8 +21,13 @@ public interface CarConfigInfoRepository extends BaseRepository&lt;CarConfigInfo, L
21 21 @EntityGraph(value = "carConfigInfo_xl_cl", type = EntityGraph.EntityGraphType.FETCH)
22 22 @Override
23 23 Page<CarConfigInfo> findAll(Specification<CarConfigInfo> spec, Pageable pageable);
24   -
25   - @EntityGraph(value = "carConfigInfo_xl_cl", type = EntityGraph.EntityGraphType.FETCH)
  24 +
  25 + @EntityGraph(value = "carConfigInfo_xl_cl", type = EntityGraph.EntityGraphType.FETCH)
  26 + @Query("select cc from CarConfigInfo cc where cc.id=?1")
  27 + CarConfigInfo findOneExtend(Long aLong);
  28 +
  29 +
  30 + @EntityGraph(value = "carConfigInfo_xl_cl", type = EntityGraph.EntityGraphType.FETCH)
26 31 @Query("select cc from CarConfigInfo cc where cc.xl.lineCode=?1")
27 32 List<CarConfigInfo> findBylineCode(String lineCode);
28 33 }
29 34 \ No newline at end of file
... ...
src/main/java/com/bsth/repository/schedule/EmployeeConfigInfoRepository.java
1 1 package com.bsth.repository.schedule;
2 2  
  3 +import com.bsth.entity.schedule.CarConfigInfo;
3 4 import com.bsth.entity.schedule.EmployeeConfigInfo;
4 5 import com.bsth.repository.BaseRepository;
5 6  
... ... @@ -22,7 +23,11 @@ public interface EmployeeConfigInfoRepository extends BaseRepository&lt;EmployeeCon
22 23 @Query("select ec from EmployeeConfigInfo ec where ec.xl.lineCode=?1")
23 24 List<EmployeeConfigInfo> findBylineCode(String lineCode);
24 25  
25   - @EntityGraph(value = "employeeConfigInfo_xl_cl", type = EntityGraph.EntityGraphType.FETCH)
  26 + @EntityGraph(value = "employeeConfigInfo_jsy_spy_xl", type = EntityGraph.EntityGraphType.FETCH)
26 27 @Override
27 28 Page<EmployeeConfigInfo> findAll(Specification<EmployeeConfigInfo> spec, Pageable pageable);
  29 +
  30 + @EntityGraph(value = "employeeConfigInfo_jsy_spy_xl", type = EntityGraph.EntityGraphType.FETCH)
  31 + @Query("select cc from EmployeeConfigInfo cc where cc.id=?1")
  32 + EmployeeConfigInfo findOneExtend(Long aLong);
28 33 }
... ...
src/main/java/com/bsth/repository/schedule/GuideboardInfoRepository.java
1 1 package com.bsth.repository.schedule;
2 2  
  3 +import com.bsth.entity.schedule.EmployeeConfigInfo;
3 4 import com.bsth.entity.schedule.GuideboardInfo;
4 5 import com.bsth.repository.BaseRepository;
5 6 import org.springframework.data.domain.Page;
6 7 import org.springframework.data.domain.Pageable;
7 8 import org.springframework.data.jpa.domain.Specification;
8 9 import org.springframework.data.jpa.repository.EntityGraph;
  10 +import org.springframework.data.jpa.repository.Query;
9 11 import org.springframework.stereotype.Repository;
10 12  
11 13 /**
... ... @@ -17,4 +19,8 @@ public interface GuideboardInfoRepository extends BaseRepository&lt;GuideboardInfo,
17 19 @EntityGraph(value = "guideboardInfo_xl", type = EntityGraph.EntityGraphType.FETCH)
18 20 @Override
19 21 Page<GuideboardInfo> findAll(Specification<GuideboardInfo> spec, Pageable pageable);
  22 +
  23 + @EntityGraph(value = "guideboardInfo_xl", type = EntityGraph.EntityGraphType.FETCH)
  24 + @Query("select cc from GuideboardInfo cc where cc.id=?1")
  25 + GuideboardInfo findOneExtend(Long aLong);
20 26 }
... ...
src/main/java/com/bsth/repository/schedule/TTInfoDetailRepository.java 0 → 100644
  1 +package com.bsth.repository.schedule;
  2 +
  3 +import com.bsth.entity.schedule.TTInfoDetail;
  4 +import com.bsth.repository.BaseRepository;
  5 +import org.springframework.stereotype.Repository;
  6 +
  7 +/**
  8 + * Created by xu on 16/7/2.
  9 + */
  10 +@Repository
  11 +public interface TTInfoDetailRepository extends BaseRepository<TTInfoDetail, Long> {
  12 +}
... ...
src/main/java/com/bsth/service/CarParkService.java
... ... @@ -11,6 +11,22 @@ public interface CarParkService extends BaseService&lt;CarPark, Integer&gt; {
11 11  
12 12 List<Map<String, Object>> findCarParkInfoFormId(Map<String, Object> map);
13 13  
  14 +
  15 + /**
  16 + * 修改停车场信息
  17 + *
  18 + *
  19 + * @param map<area:面积;bCenterPoint:中心点百度坐标;bParkPoint:多边形图形百度坐标点集合;
  20 + *
  21 + * brancheCompany:分公司;company:公司;createBy:创建人;createDate:创建日期;dbType:原坐标类型;descriptions:描述;
  22 + *
  23 + * destroy:是否撤销;gCenterPoint:WGS中心点坐标;gParkPoint:WGS多边形图形坐标集合;id:停车场ID;parkCode:停车场编码;
  24 + *
  25 + * parkName:停车名称;radius:圆半径;shapesType:图形类型;versions:版本号>
  26 + *
  27 + * @return map <SUCCESS:成功;ERROR:失败>
  28 + *
  29 + */
14 30 Map<String, Object> carParkUpdate(Map<String, Object> map);
15 31  
16 32 }
... ...
src/main/java/com/bsth/service/SectionRouteService.java
... ... @@ -32,4 +32,13 @@ public interface SectionRouteService extends BaseService&lt;SectionRoute, Integer&gt;
32 32 * @return List<Map<String, Object>>
33 33 */
34 34 List<Map<String, Object>> findSectionRouteInfoFormId(Map<String, Object> map);
  35 +
  36 + /**
  37 + * @Description :TODO(查询线路某方向下的上一个路段序号)
  38 + *
  39 + * @param map <lineId:线路ID; direction:方向;sectionRouteCode:路段编码>
  40 + *
  41 + * @return List<Map<String, Object>>
  42 + */
  43 + List<Map<String, Object>> findUpSectionRouteCode(Map<String, Object> map);
35 44 }
... ...
src/main/java/com/bsth/service/impl/CarParkServiceImpl.java
... ... @@ -11,6 +11,8 @@ import com.bsth.common.ResponseCode;
11 11 import com.bsth.entity.CarPark;
12 12 import com.bsth.repository.CarParkRepository;
13 13 import com.bsth.service.CarParkService;
  14 +import com.bsth.util.TransGPS;
  15 +import com.bsth.util.TransGPS.Location;
14 16  
15 17 import org.springframework.beans.factory.annotation.Autowired;
16 18 import org.springframework.stereotype.Service;
... ... @@ -42,13 +44,64 @@ public class CarParkServiceImpl extends BaseServiceImpl&lt;CarPark, Integer&gt; implem
42 44 String bParkPoint = map.get("bParkPoint").equals("") ? "" : map.get("bParkPoint").toString();
43 45  
44 46 // 地理位置(WGS坐标集合)
45   - String gParkPoint = map.get("gParkPoint").equals("") ? "" :map.get("gParkPoint").toString();
  47 + // String gParkPoint = map.get("gParkPoint").equals("") ? "" :map.get("gParkPoint").toString();
  48 +
  49 + // 多边形WGS坐标点集合
  50 + String gParkPoint ="";
  51 +
  52 + if(!bParkPoint.equals("")) {
  53 +
  54 + String bPloygonGridArray[] = bParkPoint.split(",");
  55 +
  56 + int bLen_ = bPloygonGridArray.length;
  57 +
  58 + for(int b = 0 ;b<bLen_;b++) {
  59 +
  60 + String tempArray[]= bPloygonGridArray[b].split(" ");
  61 +
  62 + Location resultPoint = FromBDPointToWGSPoint(tempArray[0],tempArray[1]);
  63 +
  64 + if(b==0) {
  65 +
  66 + gParkPoint = resultPoint.getLng() + " " + resultPoint.getLat();
  67 +
  68 + }else {
  69 +
  70 + gParkPoint = gParkPoint + ',' + resultPoint.getLng() + " " + resultPoint.getLat();
  71 +
  72 + }
  73 +
  74 + }
  75 +
  76 + }
  77 +
  78 + bParkPoint = "POLYGON((" + bParkPoint +"))";
  79 +
  80 + gParkPoint = "POLYGON((" + gParkPoint +"))";
46 81  
47 82 // 地理位置中心点(百度坐标)
48 83 String bCenterPoint = map.get("bCenterPoint").equals("") ? "" : map.get("bCenterPoint").toString();
49 84  
50 85 // 地理位置中心点(WGS坐标)
51   - String gCenterPoint = map.get("gCenterPoint").equals("") ? "" : map.get("gCenterPoint").toString();
  86 + // String gCenterPoint = map.get("gCenterPoint").equals("") ? "" : map.get("gCenterPoint").toString();
  87 +
  88 + String bJwpointsArray[] =null;
  89 +
  90 + if(bCenterPoint!=null) {
  91 +
  92 + bJwpointsArray = bCenterPoint.split(" ");
  93 +
  94 + }
  95 +
  96 + String gCenterPoint = "";
  97 +
  98 + if(bJwpointsArray.length>0) {
  99 +
  100 + Location resultPoint = FromBDPointToWGSPoint(bJwpointsArray[0],bJwpointsArray[1]);
  101 +
  102 + gCenterPoint = String.valueOf(resultPoint.getLng()) + " " + String.valueOf(resultPoint.getLat());
  103 +
  104 + }
52 105  
53 106 // 坐标类型
54 107 String dbType = map.get("dbType").equals("") ? "" : map.get("dbType").toString();
... ... @@ -179,7 +232,22 @@ public class CarParkServiceImpl extends BaseServiceImpl&lt;CarPark, Integer&gt; implem
179 232  
180 233 return resultList;
181 234 }
182   -
  235 +
  236 + /**
  237 + * 修改停车场信息
  238 + *
  239 + *
  240 + * @param map<area:面积;bCenterPoint:中心点百度坐标;bParkPoint:多边形图形百度坐标点集合;
  241 + *
  242 + * brancheCompany:分公司;company:公司;createBy:创建人;createDate:创建日期;dbType:原坐标类型;descriptions:描述;
  243 + *
  244 + * destroy:是否撤销;gCenterPoint:WGS中心点坐标;gParkPoint:WGS多边形图形坐标集合;id:停车场ID;parkCode:停车场编码;
  245 + *
  246 + * parkName:停车名称;radius:圆半径;shapesType:图形类型;versions:版本号>
  247 + *
  248 + * @return map <SUCCESS:成功;ERROR:失败>
  249 + *
  250 + */
183 251 @Override
184 252 public Map<String, Object> carParkUpdate(Map<String, Object> map) {
185 253 Map<String, Object> resultMap = new HashMap<String, Object>();
... ... @@ -216,10 +284,61 @@ public class CarParkServiceImpl extends BaseServiceImpl&lt;CarPark, Integer&gt; implem
216 284 Integer destroy = map.get("destroy").equals("") ? null : Integer.parseInt(map.get("destroy").toString());
217 285  
218 286 // 中心点(WGS坐标)
219   - String gCenterPoint = map.get("gCenterPoint").equals("") ? "" : map.get("gCenterPoint").toString();
  287 + // String gCenterPoint = map.get("gCenterPoint").equals("") ? "" : map.get("gCenterPoint").toString();
  288 +
  289 + String bJwpointsArray[] =null;
  290 +
  291 + if(bCenterPoint!=null) {
  292 +
  293 + bJwpointsArray = bCenterPoint.split(" ");
  294 +
  295 + }
  296 +
  297 + String gCenterPoint = "";
  298 +
  299 + if(bJwpointsArray.length>0) {
  300 +
  301 + Location resultPoint = FromBDPointToWGSPoint(bJwpointsArray[0],bJwpointsArray[1]);
  302 +
  303 + gCenterPoint = String.valueOf(resultPoint.getLng()) + " " + String.valueOf(resultPoint.getLat());
  304 +
  305 + }
220 306  
221 307 // 图形坐标点集合(WGS坐标)
222   - String gParkPoint = map.get("gParkPoint").equals("") ? "" : map.get("gParkPoint").toString();
  308 + // String gParkPoint = map.get("gParkPoint").equals("") ? "" : map.get("gParkPoint").toString();
  309 +
  310 + // 多边形WGS坐标点集合
  311 + String gParkPoint ="";
  312 +
  313 + if(!bParkPoint.equals("")) {
  314 +
  315 + String bPloygonGridArray[] = bParkPoint.split(",");
  316 +
  317 + int bLen_ = bPloygonGridArray.length;
  318 +
  319 + for(int b = 0 ;b<bLen_;b++) {
  320 +
  321 + String tempArray[]= bPloygonGridArray[b].split(" ");
  322 +
  323 + Location resultPoint = FromBDPointToWGSPoint(tempArray[0],tempArray[1]);
  324 +
  325 + if(b==0) {
  326 +
  327 + gParkPoint = resultPoint.getLng() + " " + resultPoint.getLat();
  328 +
  329 + }else {
  330 +
  331 + gParkPoint = gParkPoint + ',' + resultPoint.getLng() + " " + resultPoint.getLat();
  332 +
  333 + }
  334 +
  335 + }
  336 +
  337 + }
  338 +
  339 + bParkPoint = "POLYGON((" + bParkPoint +"))";
  340 +
  341 + gParkPoint = "POLYGON((" + gParkPoint +"))";
223 342  
224 343 // 编码
225 344 String parkCode = map.get("parkCode").equals("") ? "" : map.get("parkCode").toString();
... ... @@ -267,5 +386,22 @@ public class CarParkServiceImpl extends BaseServiceImpl&lt;CarPark, Integer&gt; implem
267 386  
268 387 return resultMap;
269 388 }
  389 +
  390 + /** 百度坐标转WGS坐标 */
  391 + public Location FromBDPointToWGSPoint(String bLonx,String bLatx) {
  392 +
  393 + double lng = Double.parseDouble(bLonx);
  394 +
  395 + double lat = Double.parseDouble(bLatx);
  396 +
  397 + Location bdLoc = TransGPS.LocationMake(lng, lat);
  398 +
  399 + Location location = TransGPS.bd_decrypt(bdLoc);
  400 +
  401 + Location WGSPoint = TransGPS.transformFromGCJToWGS(location);
  402 +
  403 + return WGSPoint;
  404 +
  405 + }
270 406  
271 407 }
... ...
src/main/java/com/bsth/service/impl/SectionRouteServiceImpl.java
... ... @@ -8,7 +8,6 @@ import java.util.Map;
8 8 import org.springframework.beans.factory.annotation.Autowired;
9 9 import org.springframework.stereotype.Service;
10 10  
11   -import com.bsth.common.ResponseCode;
12 11 import com.bsth.entity.SectionRoute;
13 12 import com.bsth.repository.SectionRouteRepository;
14 13 import com.bsth.service.SectionRouteService;
... ... @@ -191,4 +190,43 @@ public class SectionRouteServiceImpl extends BaseServiceImpl&lt;SectionRoute, Integ
191 190 return resultList;
192 191 }
193 192  
  193 +
  194 + /**
  195 + * @Description :TODO(查询线路某方向下的上一个路段序号)
  196 + *
  197 + * @param map <lineId:线路ID; direction:方向;sectionRouteCode:路段编码>
  198 + *
  199 + * @return List<Map<String, Object>>
  200 + */
  201 + @Override
  202 + public List<Map<String, Object>> findUpSectionRouteCode(Map<String, Object> map) {
  203 +
  204 + Integer lineId = map.get("lineId").equals("") ? null : Integer.parseInt(map.get("lineId").toString());
  205 +
  206 + Integer direction = map.get("direction").equals("") ? null : Integer.parseInt(map.get("direction").toString());
  207 +
  208 + Integer stationRouteCode = map.get("sectionRouteCode").equals("") ? null : Integer.parseInt(map.get("sectionRouteCode").toString());
  209 +
  210 + List<Object[]> reslutList = repository.findUpSectionRouteCode(lineId, direction, stationRouteCode);
  211 +
  212 + List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
  213 +
  214 + if(reslutList.get(0)!=null) {
  215 +
  216 + for(int i = 0 ; i <reslutList.size() ;i++){
  217 +
  218 + Map<String, Object> tempM = new HashMap<String, Object>();
  219 +
  220 + System.out.println(reslutList.get(i));
  221 +
  222 + tempM.put("sectionrouteCode", reslutList.get(i));
  223 +
  224 + list.add(tempM);
  225 +
  226 + }
  227 + }
  228 +
  229 + return list;
  230 + }
  231 +
194 232 }
... ...
src/main/java/com/bsth/service/impl/StationRouteServiceImpl.java
... ... @@ -282,6 +282,15 @@ public class StationRouteServiceImpl extends BaseServiceImpl&lt;StationRoute, Integ
282 282 // 限速
283 283 tempM.put("sectionSpeedLimet",sectionList.get(i)[22]);
284 284  
  285 + // 是否撤销
  286 + tempM.put("destroy",sectionList.get(i)[23]);
  287 +
  288 + // 版本号
  289 + tempM.put("versions",sectionList.get(i)[24]);
  290 +
  291 + // 说明
  292 + tempM.put("descriptions",sectionList.get(i)[25]);
  293 +
285 294 tempM.put("name", sectionList.get(i)[9]);
286 295  
287 296 tempM.put("text", sectionList.get(i)[9]);
... ...
src/main/java/com/bsth/service/impl/StationServiceImpl.java
... ... @@ -822,11 +822,11 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem
822 822  
823 823 if(b==0) {
824 824  
825   - gPloygonGrid = resultPoint.getLng() + " " + resultPoint.getLat();
  825 + gPloygonGrid = String.valueOf(resultPoint.getLng()) + " " + String.valueOf(resultPoint.getLat());
826 826  
827 827 }else {
828 828  
829   - gPloygonGrid = gPloygonGrid + ',' + resultPoint.getLng() + " " + resultPoint.getLat();
  829 + gPloygonGrid = gPloygonGrid + ',' + String.valueOf(resultPoint.getLng()) + " " + String.valueOf(resultPoint.getLat());
830 830  
831 831 }
832 832  
... ... @@ -896,6 +896,8 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem
896 896 // 线路
897 897 arg0.setLine(resultLine);
898 898  
  899 + arg0.setLineCode(resultLine.getLineCode());
  900 +
899 901 // 站点
900 902 arg0.setStation(station);
901 903  
... ... @@ -984,9 +986,33 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem
984 986 String bJwpoints = map.get("bJwpoints").equals("") ? "" : map.get("bJwpoints").toString();
985 987  
986 988 // WGS经纬度坐标
987   - String gJwpoints = map.get("gJwpoints").equals("") ? "" : map.get("gJwpoints").toString();
  989 + // String gJwpoints = map.get("gJwpoints").equals("") ? "" : map.get("gJwpoints").toString();
  990 +
  991 + String bJwpointsArray[] =null;
  992 +
  993 + if(bJwpoints!=null) {
  994 +
  995 + bJwpointsArray = bJwpoints.split(" ");
  996 +
  997 + }
  998 +
  999 + // WGS经纬度
  1000 + Float gLonx = null;
  1001 +
  1002 + // WGS纬度
  1003 + Float gLaty = null;
988 1004  
989   - // 站点地理位置WGS坐标经度
  1005 + if(bJwpointsArray.length>0) {
  1006 +
  1007 + Location resultPoint = FromBDPointToWGSPoint(bJwpointsArray[0],bJwpointsArray[1]);
  1008 +
  1009 + gLonx = (float)resultPoint.getLng();
  1010 +
  1011 + gLaty = (float)resultPoint.getLat();
  1012 +
  1013 + }
  1014 +
  1015 + /*// 站点地理位置WGS坐标经度
990 1016 String gLonx = "";
991 1017  
992 1018 // 站点地理位置WGS坐标纬度
... ... @@ -1000,7 +1026,7 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem
1000 1026  
1001 1027 gLaty = gJwpointsArray[1];
1002 1028  
1003   - }
  1029 + }*/
1004 1030  
1005 1031 // 图形类型
1006 1032 String shapesType = map.get("shapesType").equals("") ? "" : map.get("shapesType").toString();
... ... @@ -1009,10 +1035,43 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem
1009 1035 Integer radius = map.get("radius").equals("") ? null : Integer.parseInt(map.get("radius").toString());
1010 1036  
1011 1037 // 多边形空间WGS坐标点集合
1012   - String gPolygonGrid = map.get("gPolygonGrid").equals("") ? "" : map.get("gPolygonGrid").toString();
  1038 + /*String gPolygonGrid = map.get("gPolygonGrid").equals("") ? "" : map.get("gPolygonGrid").toString();*/
1013 1039  
1014 1040 // 多边形空间原坐标坐标点集合
1015   - String bPolygonGrid = map.get("bPolygonGrid").equals("") ? "" : map.get("bPolygonGrid").toString();
  1041 + String bPloygonGrid = map.get("bPolygonGrid").equals("") ? "" : map.get("bPolygonGrid").toString();
  1042 +
  1043 + // 多边形WGS坐标点集合
  1044 + String gPloygonGrid ="";
  1045 +
  1046 + if(!bPloygonGrid.equals("")) {
  1047 +
  1048 + String bPloygonGridArray[] = bPloygonGrid.split(",");
  1049 +
  1050 + int bLen_ = bPloygonGridArray.length;
  1051 +
  1052 + for(int b = 0 ;b<bLen_;b++) {
  1053 +
  1054 + String tempArray[]= bPloygonGridArray[b].split(" ");
  1055 +
  1056 + Location resultPoint = FromBDPointToWGSPoint(tempArray[0],tempArray[1]);
  1057 +
  1058 + if(b==0) {
  1059 +
  1060 + gPloygonGrid = resultPoint.getLng() + " " + resultPoint.getLat();
  1061 +
  1062 + }else {
  1063 +
  1064 + gPloygonGrid = gPloygonGrid + ',' + resultPoint.getLng() + " " + resultPoint.getLat();
  1065 +
  1066 + }
  1067 +
  1068 + }
  1069 +
  1070 + }
  1071 +
  1072 + bPloygonGrid = "POLYGON((" + bPloygonGrid +"))";
  1073 +
  1074 + gPloygonGrid = "POLYGON((" + gPloygonGrid +"))";
1016 1075  
1017 1076 // 是否撤销
1018 1077 Integer destroy = map.get("destroy").equals("") ? null : Integer.parseInt(map.get("destroy").toString());
... ... @@ -1028,7 +1087,8 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem
1028 1087 Float y = map.get("y").equals("") ? null : Float.parseFloat(map.get("y").toString());
1029 1088  
1030 1089 // 更新
1031   - repository.stationUpdate(stationCod, stationName, roadCoding, dbType, bJwpoints, gLonx, gLaty, x, y, bPolygonGrid, gPolygonGrid, destroy, radius, shapesType, versions, descriptions, stationId);
  1090 + repository.stationUpdate(stationCod, stationName, roadCoding, dbType, bJwpoints, gLonx, gLaty, x, y, bPloygonGrid, gPloygonGrid, destroy, radius, shapesType, versions, descriptions, stationId);
  1091 +
1032 1092  
1033 1093 // 站点路由Id
1034 1094 Integer stationRouteId = map.get("stationRouteId").equals("") ? null : Integer.parseInt(map.get("stationRouteId").toString());
... ...
src/main/java/com/bsth/service/schedule/ScheduleRule1FlatService.java 0 → 100644
  1 +package com.bsth.service.schedule;
  2 +
  3 +import com.bsth.entity.schedule.rule.ScheduleRule1Flat;
  4 +import com.bsth.service.BaseService;
  5 +
  6 +/**
  7 + * Created by xu on 16/7/4.
  8 + */
  9 +public interface ScheduleRule1FlatService extends BaseService<ScheduleRule1Flat, Long> {
  10 +}
... ...
src/main/java/com/bsth/service/schedule/ScheduleRule1FlatServiceImpl.java 0 → 100644
  1 +package com.bsth.service.schedule;
  2 +
  3 +import com.bsth.entity.schedule.rule.ScheduleRule1Flat;
  4 +import com.bsth.service.impl.BaseServiceImpl;
  5 +import org.springframework.stereotype.Service;
  6 +
  7 +/**
  8 + * Created by xu on 16/7/4.
  9 + */
  10 +@Service
  11 +public class ScheduleRule1FlatServiceImpl extends BaseServiceImpl<ScheduleRule1Flat, Long> implements ScheduleRule1FlatService {
  12 +}
... ...
src/main/java/com/bsth/service/schedule/TTInfoDetailService.java 0 → 100644
  1 +package com.bsth.service.schedule;
  2 +
  3 +import com.bsth.entity.schedule.TTInfoDetail;
  4 +import com.bsth.service.BaseService;
  5 +
  6 +/**
  7 + * Created by xu on 16/7/2.
  8 + */
  9 +public interface TTInfoDetailService extends BaseService<TTInfoDetail, Long> {
  10 +}
... ...
src/main/java/com/bsth/service/schedule/TTInfoDetailServiceImpl.java 0 → 100644
  1 +package com.bsth.service.schedule;
  2 +
  3 +import com.bsth.entity.schedule.TTInfoDetail;
  4 +import com.bsth.service.impl.BaseServiceImpl;
  5 +import com.bsth.service.schedule.utils.DataImportExportService;
  6 +import com.bsth.service.schedule.utils.DataToolsProperties;
  7 +import jxl.Sheet;
  8 +import jxl.Workbook;
  9 +import org.apache.commons.lang3.StringUtils;
  10 +import org.pentaho.di.trans.Trans;
  11 +import org.pentaho.di.trans.TransMeta;
  12 +import org.springframework.beans.factory.annotation.Autowired;
  13 +import org.springframework.boot.context.properties.EnableConfigurationProperties;
  14 +import org.springframework.stereotype.Service;
  15 +import org.springframework.web.multipart.MultipartFile;
  16 +
  17 +import java.io.File;
  18 +import java.util.ArrayList;
  19 +import java.util.List;
  20 +
  21 +/**
  22 + * Created by xu on 16/7/2.
  23 + */
  24 +@Service
  25 +@EnableConfigurationProperties(DataToolsProperties.class)
  26 +public class TTInfoDetailServiceImpl extends BaseServiceImpl<TTInfoDetail, Long> implements TTInfoDetailService {
  27 + @Autowired
  28 + private DataImportExportService dataImportExportService;
  29 + @Autowired
  30 + private DataToolsProperties dataToolsProperties;
  31 +
  32 + /**
  33 + * 上传并导入数据,和DataImportExportService的同名方法有差别。
  34 + * @param datafile form上传文件
  35 + * @param xlmc 线路名称
  36 + * @param ttinfoname 时刻表名字
  37 + * @param tccname 停车场名字
  38 + * @throws Exception
  39 + */
  40 + public void fileDataImport(MultipartFile datafile,
  41 + String xlmc,
  42 + String ttinfoname,
  43 + String tccname) throws Exception {
  44 + // 1、上传数据文件
  45 + File uploadFile = dataImportExportService.uploadFile(datafile);
  46 +
  47 + System.out.println("线路名称:" + xlmc);
  48 + System.out.println("时刻表名称:" + ttinfoname);
  49 + System.out.println("停车场名字:" + tccname);
  50 + System.out.println("时刻表明细上传文件:" + uploadFile);
  51 +
  52 + // 2、jexcelapi读取excel文件
  53 + Workbook book = Workbook.getWorkbook(uploadFile);
  54 + Sheet sheet = book.getSheet(0);
  55 + List<String> columnames = new ArrayList<>();
  56 + for (int i = 0; i < sheet.getColumns(); i++) { // 获取第一行,数据,作为列名
  57 + columnames.add(sheet.getCell(i, 0).getContents());
  58 + }
  59 +
  60 + System.out.println("表头1:" + StringUtils.join(columnames.toArray(), ","));
  61 +
  62 + // 2、使用kettle运行封装数据导入逻辑的ktr转换文件
  63 + // 2.1、初始化kettle(组件初始化已经做了)
  64 + // 2.2、创建转换元数据,转换
  65 + File ktrFile = new File(this.getClass().getResource(
  66 + dataToolsProperties.getTtinfodetailMetadatainputktr()).toURI());
  67 + File ktrFile2 = new File(this.getClass().getResource(
  68 + dataToolsProperties.getTtinfodetailDatainputktr()).toURI());
  69 + TransMeta transMeta = new TransMeta(ktrFile.getAbsolutePath());
  70 + Trans trans = new Trans(transMeta);
  71 + // 2.3、设定命名参数,用于指定数据文件,注意每个ktr必须都有以下指定的命名参数
  72 + trans.setParameterValue("injectktrfile", ktrFile2.getAbsolutePath()); // 注入元数据的ktr文件
  73 + trans.setParameterValue("filepath", uploadFile.getAbsolutePath()); // 指定导入数据文件的位置
  74 + trans.setParameterValue("erroroutputdir", dataToolsProperties.getTransErrordir()); // ktr转换错误输出目录
  75 + trans.setParameterValue("xlname", xlmc); // 线路名称
  76 + trans.setParameterValue("ttinfoname", ttinfoname); // 时刻表名称
  77 + trans.setParameterValue("tccname", tccname); // 停车场名字
  78 + trans.setParameterValue("excelfieldnames", StringUtils.join(columnames.toArray(), ",")); // 时刻表excel输入字段名,以逗号连接
  79 + columnames.remove(0);
  80 + trans.setParameterValue("normalizefieldnames", StringUtils.join(columnames.toArray(), ",")); // 数据范式化字段名,以逗号连接
  81 +
  82 + // TODO:可以考虑设定日志输出
  83 + // 2.4、执行转换
  84 + trans.execute(null);
  85 + // 2.5、等待转换结束
  86 + trans.waitUntilFinished();
  87 +
  88 + // 3、判定ktr错误数,注意这种错误代表部分数据错误,不会终止转换执行,一般设计ktr的时候,会有错误输出文件,TODO:以后考虑使用日志实时输出
  89 + if (trans.getErrors() > 0) {
  90 + throw new Exception("转换数据部分错误,请查看相关错误输出文件!");
  91 + }
  92 + }
  93 +}
... ...
src/main/java/com/bsth/service/schedule/utils/DataImportExportServiceImpl.java
1 1 package com.bsth.service.schedule.utils;
2 2  
3 3 import com.google.common.io.Files;
4   -import org.pentaho.di.core.KettleEnvironment;
5   -import org.pentaho.di.core.util.EnvUtil;
6 4 import org.pentaho.di.trans.Trans;
7 5 import org.pentaho.di.trans.TransMeta;
  6 +import org.springframework.beans.factory.InitializingBean;
8 7 import org.springframework.beans.factory.annotation.Autowired;
9 8 import org.springframework.boot.context.properties.EnableConfigurationProperties;
10 9 import org.springframework.stereotype.Service;
... ... @@ -17,18 +16,33 @@ import java.io.File;
17 16 */
18 17 @Service
19 18 @EnableConfigurationProperties(DataToolsProperties.class)
20   -public class DataImportExportServiceImpl implements DataImportExportService {
  19 +public class DataImportExportServiceImpl implements DataImportExportService, InitializingBean {
21 20  
22 21 @Autowired
23 22 private DataToolsProperties dataToolsProperties;
24 23  
25 24 @Override
  25 + public void afterPropertiesSet() throws Exception {
  26 + // TODO:有可能会报错,待会儿再改
  27 +// // 初始化kettle环境
  28 +// EnvUtil.environmentInit();
  29 +// // 添加全局ktr变量,并覆盖原来的设置
  30 +// Map<String, String> kvars = new HashMap<>();
  31 +// kvars.put("v_db_ip", dataToolsProperties.getKvarsDbip());
  32 +// kvars.put("v_db_uname", dataToolsProperties.getKvarsDbuname());
  33 +// kvars.put("v_db_pwd", dataToolsProperties.getKvarsDbpwd());
  34 +// EnvUtil.applyKettleProperties(kvars, true);
  35 +// KettleEnvironment.init();
  36 + }
  37 +
  38 + @Override
26 39 public File uploadFile(MultipartFile file) throws Exception {
27 40 // TODO:以后的文件名要加时间戳
28 41 File newFile = new File(
29 42 dataToolsProperties.getFileuploadDir() + File.separator +
30 43 file.getOriginalFilename());
31 44 Files.write(file.getBytes(), newFile);
  45 +
32 46 return newFile;
33 47 }
34 48  
... ... @@ -38,9 +52,7 @@ public class DataImportExportServiceImpl implements DataImportExportService {
38 52 File uploadFile = uploadFile(datafile);
39 53  
40 54 // 2、使用kettle运行封装数据导入逻辑的ktr转换文件
41   - // 2.1、初始化kettle
42   - EnvUtil.environmentInit();
43   - KettleEnvironment.init();
  55 + // 2.1、初始化kettle(组件初始化已经做了)
44 56 // 2.2、创建转换元数据,转换
45 57 TransMeta transMeta = new TransMeta(ktrFile.getAbsolutePath());
46 58 Trans trans = new Trans(transMeta);
... ...
src/main/java/com/bsth/service/schedule/utils/DataToolsProperties.java
1   -package com.bsth.service.schedule.utils;
2   -
3   -import org.springframework.boot.context.properties.ConfigurationProperties;
4   -
5   -import javax.validation.constraints.NotNull;
6   -
7   -/**
8   - * 配置数据导入导出用到的配置信息
9   - */
10   -@ConfigurationProperties(
11   - locations = "classpath:datatools/config.properties",
12   - ignoreInvalidFields = true,
13   - prefix = "datatools"
14   -)
15   -public class DataToolsProperties {
16   -
17   - /** 上传文件目录配置(根据不同的环境需要修正) */
18   - @NotNull
19   - private String fileuploadDir;
20   -
21   - /** ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正) */
22   - @NotNull
23   - private String transErrordir;
24   -
25   - /** 测试temp的ktr转换文件 */
26   - @NotNull
27   - private String tempDatainputktr;
28   - /** 车辆信息导入ktr转换 */
29   - @NotNull
30   - private String carsDatainputktr;
31   - /** 人员信息导入ktr转换 */
32   - @NotNull
33   - private String employeesDatainputktr;
34   - /** 车辆配置信息导入 */
35   - @NotNull
36   - private String carsconfigDatainputktr;
37   - /** 人员配置信息导入 */
38   - @NotNull
39   - private String employeesconfigDatainputktr;
40   - /** 路牌信息导入 */
41   - @NotNull
42   - private String guideboardsDatainputktr;
43   - /** 时刻表基础信息导入 */
44   - @NotNull
45   - private String ttinfoDatainputktr;
46   -
47   - // TODO:
48   -
49   - public String getFileuploadDir() {
50   - return fileuploadDir;
51   - }
52   -
53   - public void setFileuploadDir(String fileuploadDir) {
54   - this.fileuploadDir = fileuploadDir;
55   - }
56   -
57   - public String getTransErrordir() {
58   - return transErrordir;
59   - }
60   -
61   - public void setTransErrordir(String transErrordir) {
62   - this.transErrordir = transErrordir;
63   - }
64   -
65   - public String getTempDatainputktr() {
66   - return tempDatainputktr;
67   - }
68   -
69   - public void setTempDatainputktr(String tempDatainputktr) {
70   - this.tempDatainputktr = tempDatainputktr;
71   - }
72   -
73   - public String getCarsDatainputktr() {
74   - return carsDatainputktr;
75   - }
76   -
77   - public void setCarsDatainputktr(String carsDatainputktr) {
78   - this.carsDatainputktr = carsDatainputktr;
79   - }
80   -
81   - public String getEmployeesDatainputktr() {
82   - return employeesDatainputktr;
83   - }
84   -
85   - public void setEmployeesDatainputktr(String employeesDatainputktr) {
86   - this.employeesDatainputktr = employeesDatainputktr;
87   - }
88   -
89   - public String getCarsconfigDatainputktr() {
90   - return carsconfigDatainputktr;
91   - }
92   -
93   - public void setCarsconfigDatainputktr(String carsconfigDatainputktr) {
94   - this.carsconfigDatainputktr = carsconfigDatainputktr;
95   - }
96   -
97   - public String getEmployeesconfigDatainputktr() {
98   - return employeesconfigDatainputktr;
99   - }
100   -
101   - public void setEmployeesconfigDatainputktr(String employeesconfigDatainputktr) {
102   - this.employeesconfigDatainputktr = employeesconfigDatainputktr;
103   - }
104   -
105   - public String getGuideboardsDatainputktr() {
106   - return guideboardsDatainputktr;
107   - }
108   -
109   - public void setGuideboardsDatainputktr(String guideboardsDatainputktr) {
110   - this.guideboardsDatainputktr = guideboardsDatainputktr;
111   - }
112   -
113   - public String getTtinfoDatainputktr() {
114   - return ttinfoDatainputktr;
115   - }
116   -
117   - public void setTtinfoDatainputktr(String ttinfoDatainputktr) {
118   - this.ttinfoDatainputktr = ttinfoDatainputktr;
119   - }
120   -}
  1 +package com.bsth.service.schedule.utils;
  2 +
  3 +import org.springframework.boot.context.properties.ConfigurationProperties;
  4 +
  5 +import javax.validation.constraints.NotNull;
  6 +
  7 +/**
  8 + * 配置数据导入导出用到的配置信息
  9 + */
  10 +@ConfigurationProperties(
  11 + locations = "classpath:datatools/config.properties",
  12 + ignoreInvalidFields = true,
  13 + prefix = "datatools"
  14 +)
  15 +public class DataToolsProperties {
  16 +
  17 + /** 上传文件目录配置(根据不同的环境需要修正) */
  18 + @NotNull
  19 + private String fileuploadDir;
  20 +
  21 + /** ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正) */
  22 + @NotNull
  23 + private String transErrordir;
  24 +
  25 + /** ktr通用变量-数据库ip地址 */
  26 + @NotNull
  27 + private String kvarsDbip;
  28 + /** ktr通用变量-数据库用户名 */
  29 + @NotNull
  30 + private String kvarsDbuname;
  31 + /** ktr通用变量-数据库密码 */
  32 + @NotNull
  33 + private String kvarsDbpwd;
  34 +
  35 + /** 测试temp的ktr转换文件 */
  36 + @NotNull
  37 + private String tempDatainputktr;
  38 + /** 车辆信息导入ktr转换 */
  39 + @NotNull
  40 + private String carsDatainputktr;
  41 + /** 人员信息导入ktr转换 */
  42 + @NotNull
  43 + private String employeesDatainputktr;
  44 + /** 车辆配置信息导入 */
  45 + @NotNull
  46 + private String carsconfigDatainputktr;
  47 + /** 人员配置信息导入 */
  48 + @NotNull
  49 + private String employeesconfigDatainputktr;
  50 + /** 路牌信息导入 */
  51 + @NotNull
  52 + private String guideboardsDatainputktr;
  53 + /** 时刻表基础信息导入 */
  54 + @NotNull
  55 + private String ttinfoDatainputktr;
  56 + /** 时刻表明细信息导入(元数据) */
  57 + @NotNull
  58 + private String ttinfodetailMetadatainputktr;
  59 + /** 时刻表明细信息导入 */
  60 + @NotNull
  61 + private String ttinfodetailDatainputktr;
  62 +
  63 + // TODO:
  64 +
  65 + public String getFileuploadDir() {
  66 + return fileuploadDir;
  67 + }
  68 +
  69 + public void setFileuploadDir(String fileuploadDir) {
  70 + this.fileuploadDir = fileuploadDir;
  71 + }
  72 +
  73 + public String getTransErrordir() {
  74 + return transErrordir;
  75 + }
  76 +
  77 + public void setTransErrordir(String transErrordir) {
  78 + this.transErrordir = transErrordir;
  79 + }
  80 +
  81 + public String getTempDatainputktr() {
  82 + return tempDatainputktr;
  83 + }
  84 +
  85 + public void setTempDatainputktr(String tempDatainputktr) {
  86 + this.tempDatainputktr = tempDatainputktr;
  87 + }
  88 +
  89 + public String getCarsDatainputktr() {
  90 + return carsDatainputktr;
  91 + }
  92 +
  93 + public String getTtinfodetailMetadatainputktr() {
  94 + return ttinfodetailMetadatainputktr;
  95 + }
  96 +
  97 + public void setTtinfodetailMetadatainputktr(String ttinfodetailMetadatainputktr) {
  98 + this.ttinfodetailMetadatainputktr = ttinfodetailMetadatainputktr;
  99 + }
  100 +
  101 + public void setCarsDatainputktr(String carsDatainputktr) {
  102 + this.carsDatainputktr = carsDatainputktr;
  103 + }
  104 +
  105 + public String getEmployeesDatainputktr() {
  106 + return employeesDatainputktr;
  107 + }
  108 +
  109 + public void setEmployeesDatainputktr(String employeesDatainputktr) {
  110 + this.employeesDatainputktr = employeesDatainputktr;
  111 + }
  112 +
  113 + public String getCarsconfigDatainputktr() {
  114 + return carsconfigDatainputktr;
  115 + }
  116 +
  117 + public void setCarsconfigDatainputktr(String carsconfigDatainputktr) {
  118 + this.carsconfigDatainputktr = carsconfigDatainputktr;
  119 + }
  120 +
  121 + public String getEmployeesconfigDatainputktr() {
  122 + return employeesconfigDatainputktr;
  123 + }
  124 +
  125 + public void setEmployeesconfigDatainputktr(String employeesconfigDatainputktr) {
  126 + this.employeesconfigDatainputktr = employeesconfigDatainputktr;
  127 + }
  128 +
  129 + public String getGuideboardsDatainputktr() {
  130 + return guideboardsDatainputktr;
  131 + }
  132 +
  133 + public void setGuideboardsDatainputktr(String guideboardsDatainputktr) {
  134 + this.guideboardsDatainputktr = guideboardsDatainputktr;
  135 + }
  136 +
  137 + public String getTtinfoDatainputktr() {
  138 + return ttinfoDatainputktr;
  139 + }
  140 +
  141 + public String getKvarsDbip() {
  142 + return kvarsDbip;
  143 + }
  144 +
  145 + public void setKvarsDbip(String kvarsDbip) {
  146 + this.kvarsDbip = kvarsDbip;
  147 + }
  148 +
  149 + public String getKvarsDbuname() {
  150 + return kvarsDbuname;
  151 + }
  152 +
  153 + public void setKvarsDbuname(String kvarsDbuname) {
  154 + this.kvarsDbuname = kvarsDbuname;
  155 + }
  156 +
  157 + public String getKvarsDbpwd() {
  158 + return kvarsDbpwd;
  159 + }
  160 +
  161 + public void setKvarsDbpwd(String kvarsDbpwd) {
  162 + this.kvarsDbpwd = kvarsDbpwd;
  163 + }
  164 +
  165 + public void setTtinfoDatainputktr(String ttinfoDatainputktr) {
  166 + this.ttinfoDatainputktr = ttinfoDatainputktr;
  167 + }
  168 +
  169 + public String getTtinfodetailDatainputktr() {
  170 + return ttinfodetailDatainputktr;
  171 + }
  172 +
  173 + public void setTtinfodetailDatainputktr(String ttinfodetailDatainputktr) {
  174 + this.ttinfodetailDatainputktr = ttinfodetailDatainputktr;
  175 + }
  176 +}
... ...
src/main/java/com/bsth/util/Test.java 0 → 100644
  1 +package com.bsth.util;
  2 +
  3 +import java.io.File;
  4 +import java.io.FileInputStream;
  5 +import java.io.FileNotFoundException;
  6 +import java.io.FileOutputStream;
  7 +import java.io.IOException;
  8 +import java.util.zip.GZIPOutputStream;
  9 +
  10 +import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
  11 +import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream;
  12 +import org.apache.commons.compress.utils.IOUtils;
  13 +
  14 +public class Test {
  15 +
  16 +
  17 + /**
  18 + *
  19 + * @Title: pack
  20 + * @Description: 将一组文件打成tar包
  21 + * @param sources 要打包的原文件数组
  22 + * @param target 打包后的文件
  23 + * @return File 返回打包后的文件
  24 + * @throws
  25 + */
  26 + public static File pack(File[] sources, File target){
  27 + FileOutputStream out = null;
  28 + try {
  29 + out = new FileOutputStream(target);
  30 + } catch (FileNotFoundException e1) {
  31 + e1.printStackTrace();
  32 + }
  33 + TarArchiveOutputStream os = new TarArchiveOutputStream(out);
  34 + for (File file : sources) {
  35 + try {
  36 + os.putArchiveEntry(new TarArchiveEntry(file));
  37 + IOUtils.copy(new FileInputStream(file), os);
  38 + os.closeArchiveEntry();
  39 +
  40 + } catch (FileNotFoundException e) {
  41 + e.printStackTrace();
  42 + } catch (IOException e) {
  43 + e.printStackTrace();
  44 + }
  45 + }
  46 + if(os != null) {
  47 + try {
  48 + os.flush();
  49 + os.close();
  50 + } catch (IOException e) {
  51 + e.printStackTrace();
  52 + }
  53 + }
  54 +
  55 + return target;
  56 + }
  57 +
  58 + /**
  59 + *
  60 + * @Title: compress
  61 + * @Description: 将文件用gzip压缩
  62 + * @param source 需要压缩的文件
  63 + * @return File 返回压缩后的文件
  64 + * @throws
  65 + */
  66 + public static File compress(File source) {
  67 + File target = new File(source.getName() + ".gz");
  68 + FileInputStream in = null;
  69 + GZIPOutputStream out = null;
  70 + try {
  71 + in = new FileInputStream(source);
  72 + out = new GZIPOutputStream(new FileOutputStream(target));
  73 + byte[] array = new byte[1024];
  74 + int number = -1;
  75 + while((number = in.read(array, 0, array.length)) != -1) {
  76 + out.write(array, 0, number);
  77 + }
  78 + } catch (FileNotFoundException e) {
  79 + e.printStackTrace();
  80 + return null;
  81 + } catch (IOException e) {
  82 + e.printStackTrace();
  83 + return null;
  84 + } finally {
  85 + if(in != null) {
  86 + try {
  87 + in.close();
  88 + } catch (IOException e) {
  89 + e.printStackTrace();
  90 + return null;
  91 + }
  92 + }
  93 +
  94 + if(out != null) {
  95 + try {
  96 + out.close();
  97 + } catch (IOException e) {
  98 + e.printStackTrace();
  99 + return null;
  100 + }
  101 + }
  102 + }
  103 + return target;
  104 + }
  105 +
  106 + public static void main(String[] args) {
  107 + File[] sources = new File[] {new File("D:/test.txt"), new File("D:/test1.txt")};
  108 + File target = new File("release_package.tar");
  109 + File gzFile = compress(pack(sources, target));
  110 + }
  111 +}
... ...
src/main/resources/datatools/config.properties
1   -# 配置数据导入导出用到的配置信息
2   -
3   -# 上传文件目录配置(根据不同的环境需要修正)
4   -datatools.fileupload_dir=/Users/xu/resource/project/bsth_control_u_d_files
5   -# ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正)
6   -datatools.trans_errordir=/Users/xu/resource/project/bsth_control_u_d_files/erroroutput
7   -
8   -# 以下是封装数据导入导出逻辑的ktr转换文件,类路径,以后考虑放到数据库中
9   -# 测试temp的ktr转换文件
10   -datatools.temp_datainputktr=/datatools/ktrs/test.ktr
11   -# 车辆信息导入ktr转换
12   -datatools.cars_datainputktr=/datatools/ktrs/carsDataInput.ktr
13   -# 人员信息导入
14   -datatools.employees_datainputktr=/datatools/ktrs/employeesDataInput.ktr
15   -# 路牌信息导入
16   -datatools.guideboards_datainputktr=/datatools/ktrs/guideboardDataInput.ktr
17   -# 时刻表基础信息导入
18   -datatools.ttinfo_datainputktr=/datatools/ktrs/ttinfoDataInput.ktr
19   -# 时刻表明细信息导入
20   -
21   -# 车辆配置信息导入
22   -datatools.carsconfig_datainputktr=/datatools/ktrs/carsConfigDataInput.ktr
23   -# 人员配置信息导入
24   -datatools.employeesconfig_datainputktr=/datatools/ktrs/employeesConfigDataInput.ktr
25   -
  1 +# 配置数据导入导出用到的配置信息
  2 +
  3 +# 上传文件目录配置(根据不同的环境需要修正)
  4 +datatools.fileupload_dir=/Users/xu/resource/project/bsth_control_u_d_files
  5 +# ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正)
  6 +datatools.trans_errordir=/Users/xu/resource/project/bsth_control_u_d_files/erroroutput
  7 +
  8 +##------------------ ktr通用变量 ------------------
  9 +#数据库ip地址
  10 +datatools.kvars_dbip=localhost
  11 +#数据库用户名
  12 +datatools.kvars_dbuname=root
  13 +#数据库密码
  14 +datatools.kvars_dbpwd=
  15 +
  16 +# 以下是封装数据导入导出逻辑的ktr转换文件,类路径,以后考虑放到数据库中
  17 +# 测试temp的ktr转换文件
  18 +datatools.temp_datainputktr=/datatools/ktrs/test.ktr
  19 +# 车辆信息导入ktr转换
  20 +datatools.cars_datainputktr=/datatools/ktrs/carsDataInput.ktr
  21 +# 人员信息导入
  22 +datatools.employees_datainputktr=/datatools/ktrs/employeesDataInput.ktr
  23 +# 路牌信息导入
  24 +datatools.guideboards_datainputktr=/datatools/ktrs/guideboardDataInput.ktr
  25 +# 时刻表基础信息导入
  26 +datatools.ttinfo_datainputktr=/datatools/ktrs/ttinfoDataInput.ktr
  27 +# 时刻表明细信息导入(元数据)
  28 +datatools.ttinfodetail_metadatainputktr=/datatools/ktrs/ttinfodetailMetaData.ktr
  29 +# 时刻表明细信息导入
  30 +datatools.ttinfodetail_datainputktr=/datatools/ktrs/ttinfodetailDataInput.ktr
  31 +
  32 +# 车辆配置信息导入
  33 +datatools.carsconfig_datainputktr=/datatools/ktrs/carsConfigDataInput.ktr
  34 +# 人员配置信息导入
  35 +datatools.employeesconfig_datainputktr=/datatools/ktrs/employeesConfigDataInput.ktr
  36 +
26 37 # 排班规则信息导入
27 38 \ No newline at end of file
... ...
src/main/resources/datatools/ktrs/carsConfigDataInput.ktr
1   -<?xml version="1.0" encoding="UTF-8"?>
2   -<transformation>
3   - <info>
4   - <name>carsConfigDataInput</name>
5   - <description>&#x8f66;&#x8f86;&#x914d;&#x7f6e;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description>
6   - <extended_description>&#x914d;&#x8f66;&#x4fe1;&#x606f;</extended_description>
7   - <trans_version/>
8   - <trans_type>Normal</trans_type>
9   - <trans_status>0</trans_status>
10   - <directory>&#x2f;</directory>
11   - <parameters>
12   - <parameter>
13   - <name>erroroutputdir</name>
14   - <default_value/>
15   - <description>ktr step&#x914d;&#x7f6e;&#x7684;&#x9519;&#x8bef;&#x8f93;&#x51fa;&#x76ee;&#x5f55;</description>
16   - </parameter>
17   - <parameter>
18   - <name>filepath</name>
19   - <default_value/>
20   - <description>&#x5f85;&#x5904;&#x7406;&#x5bfc;&#x5165;&#x7684;excel&#x6587;&#x4ef6;</description>
21   - </parameter>
22   - </parameters>
23   - <log>
24   -<trans-log-table><connection/>
25   -<schema/>
26   -<table/>
27   -<size_limit_lines/>
28   -<interval/>
29   -<timeout_days/>
30   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table>
31   -<perf-log-table><connection/>
32   -<schema/>
33   -<table/>
34   -<interval/>
35   -<timeout_days/>
36   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table>
37   -<channel-log-table><connection/>
38   -<schema/>
39   -<table/>
40   -<timeout_days/>
41   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table>
42   -<step-log-table><connection/>
43   -<schema/>
44   -<table/>
45   -<timeout_days/>
46   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table>
47   -<metrics-log-table><connection/>
48   -<schema/>
49   -<table/>
50   -<timeout_days/>
51   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table>
52   - </log>
53   - <maxdate>
54   - <connection/>
55   - <table/>
56   - <field/>
57   - <offset>0.0</offset>
58   - <maxdiff>0.0</maxdiff>
59   - </maxdate>
60   - <size_rowset>10000</size_rowset>
61   - <sleep_time_empty>50</sleep_time_empty>
62   - <sleep_time_full>50</sleep_time_full>
63   - <unique_connections>N</unique_connections>
64   - <feedback_shown>Y</feedback_shown>
65   - <feedback_size>50000</feedback_size>
66   - <using_thread_priorities>Y</using_thread_priorities>
67   - <shared_objects_file/>
68   - <capture_step_performance>N</capture_step_performance>
69   - <step_performance_capturing_delay>1000</step_performance_capturing_delay>
70   - <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
71   - <dependencies>
72   - </dependencies>
73   - <partitionschemas>
74   - </partitionschemas>
75   - <slaveservers>
76   - </slaveservers>
77   - <clusterschemas>
78   - </clusterschemas>
79   - <created_user>-</created_user>
80   - <created_date>2016&#x2f;06&#x2f;29 13&#x3a;15&#x3a;32.118</created_date>
81   - <modified_user>-</modified_user>
82   - <modified_date>2016&#x2f;06&#x2f;29 13&#x3a;15&#x3a;32.118</modified_date>
83   - <key_for_session_key/>
84   - <is_key_private>N</is_key_private>
85   - </info>
86   - <notepads>
87   - <notepad>
88   - <note>&#x914d;&#x8f66;&#x5206;&#x5f53;&#x524d;&#x2f;&#x5386;&#x53f2;&#x2f;&#x8ba1;&#x5212;&#xff0c;&#x5386;&#x53f2;&#x914d;&#x8f66;&#x6709;&#x7ec8;&#x6b62;&#x65f6;&#x95f4;&#xff0c;&#x7136;&#x540e;&#x662f;&#x5426;&#x5207;&#x6362;&#x57fa;&#x672c;&#x90fd;&#x662f;1&#xa;&#x662f;&#x5426;&#x5207;&#x6362; &#x6682;&#x65f6;&#x4e0d;&#x77e5;&#x9053;&#x4ec0;&#x4e48;&#x610f;&#x601d;&#xff0c;&#x5f53;&#x524d;&#x914d;&#x8f66;&#x90fd;&#x8bbe;&#x7f6e;&#x4e3a;0&#xa;&#x7ec8;&#x6b62;&#x65f6;&#x95f4; &#x5f53;&#x524d;&#x914d;&#x8f66;&#x6ca1;&#x6709;&#x7ec8;&#x6b62;&#x65f6;&#x95f4;&#xff0c;&#x8fd9;&#x4e2a;&#x4f30;&#x8ba1;&#x8981;&#x4f5c;&#x4e3a;&#x67e5;&#x8be2;&#x6761;&#x4ef6;&#x7684;&#xa;&#x65e9;&#x73ed;&#x65f6;&#x95f4; &#x6ca1;&#x6709;&#x6682;&#x65f6;&#x7a7a;&#x7740;&#xa;&#x672b;&#x73ed;&#x65f6;&#x95f4; &#x6ca1;&#x6709;&#x6682;&#x65f6;&#x7a7a;&#x7740;</note>
89   - <xloc>260</xloc>
90   - <yloc>124</yloc>
91   - <width>391</width>
92   - <heigth>90</heigth>
93   - <fontname>YaHei Consolas Hybrid</fontname>
94   - <fontsize>12</fontsize>
95   - <fontbold>N</fontbold>
96   - <fontitalic>N</fontitalic>
97   - <fontcolorred>0</fontcolorred>
98   - <fontcolorgreen>0</fontcolorgreen>
99   - <fontcolorblue>0</fontcolorblue>
100   - <backgroundcolorred>255</backgroundcolorred>
101   - <backgroundcolorgreen>205</backgroundcolorgreen>
102   - <backgroundcolorblue>112</backgroundcolorblue>
103   - <bordercolorred>100</bordercolorred>
104   - <bordercolorgreen>100</bordercolorgreen>
105   - <bordercolorblue>100</bordercolorblue>
106   - <drawshadow>Y</drawshadow>
107   - </notepad>
108   - </notepads>
109   - <connection>
110   - <name>bus_control_&#x516c;&#x53f8;_201</name>
111   - <server>192.168.168.201</server>
112   - <type>MYSQL</type>
113   - <access>Native</access>
114   - <database>control</database>
115   - <port>3306</port>
116   - <username>root</username>
117   - <password>Encrypted 2be98afc86aa7f2e4cb79ff228dc6fa8c</password>
118   - <servername/>
119   - <data_tablespace/>
120   - <index_tablespace/>
121   - <attributes>
122   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
123   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
124   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
125   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
126   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
127   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
128   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
129   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
130   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
131   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
132   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
133   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
134   - </attributes>
135   - </connection>
136   - <connection>
137   - <name>xlab_mysql_youle</name>
138   - <server>101.231.124.8</server>
139   - <type>MYSQL</type>
140   - <access>Native</access>
141   - <database>xlab_youle</database>
142   - <port>45687</port>
143   - <username>xlab-youle</username>
144   - <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
145   - <servername/>
146   - <data_tablespace/>
147   - <index_tablespace/>
148   - <attributes>
149   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
150   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
151   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
152   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
153   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
154   - <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
155   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
156   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
157   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
158   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
159   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
160   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
161   - </attributes>
162   - </connection>
163   - <connection>
164   - <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
165   - <server>localhost</server>
166   - <type>MYSQL</type>
167   - <access>Native</access>
168   - <database>xlab_youle</database>
169   - <port>3306</port>
170   - <username>root</username>
171   - <password>Encrypted </password>
172   - <servername/>
173   - <data_tablespace/>
174   - <index_tablespace/>
175   - <attributes>
176   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
177   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
178   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
179   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
180   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
181   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
182   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
183   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
184   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
185   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
186   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
187   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
188   - </attributes>
189   - </connection>
190   - <connection>
191   - <name>xlab_youle</name>
192   - <server/>
193   - <type>MYSQL</type>
194   - <access>JNDI</access>
195   - <database>xlab_youle</database>
196   - <port>1521</port>
197   - <username/>
198   - <password>Encrypted </password>
199   - <servername/>
200   - <data_tablespace/>
201   - <index_tablespace/>
202   - <attributes>
203   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
204   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
205   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
206   - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
207   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
208   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
209   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
210   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
211   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
212   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
213   - </attributes>
214   - </connection>
215   - <order>
216   - <hop> <from>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
217   - <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
218   - <hop> <from>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ccinfo</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
219   - <hop> <from>&#x662f;&#x5426;&#x5207;&#x6362;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ccinfo</to><enabled>Y</enabled> </hop>
220   - <hop> <from>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</from><to>&#x67e5;&#x627e;&#x8f66;&#x8f86;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
221   - <hop> <from>&#x67e5;&#x627e;&#x8f66;&#x8f86;&#x5173;&#x8054;</from><to>&#x662f;&#x5426;&#x5207;&#x6362;</to><enabled>Y</enabled> </hop>
222   - <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>
223   - </order>
224   - <step>
225   - <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name>
226   - <type>ExcelInput</type>
227   - <description/>
228   - <distribute>Y</distribute>
229   - <custom_distribution/>
230   - <copies>1</copies>
231   - <partitioning>
232   - <method>none</method>
233   - <schema_name/>
234   - </partitioning>
235   - <header>Y</header>
236   - <noempty>Y</noempty>
237   - <stoponempty>N</stoponempty>
238   - <filefield/>
239   - <sheetfield/>
240   - <sheetrownumfield/>
241   - <rownumfield/>
242   - <sheetfield/>
243   - <filefield/>
244   - <limit>0</limit>
245   - <encoding/>
246   - <add_to_result_filenames>Y</add_to_result_filenames>
247   - <accept_filenames>Y</accept_filenames>
248   - <accept_field>filepath_</accept_field>
249   - <accept_stepname>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</accept_stepname>
250   - <file>
251   - <name/>
252   - <filemask/>
253   - <exclude_filemask/>
254   - <file_required>N</file_required>
255   - <include_subfolders>N</include_subfolders>
256   - </file>
257   - <fields>
258   - <field>
259   - <name>&#x7ebf;&#x8def;</name>
260   - <type>String</type>
261   - <length>-1</length>
262   - <precision>-1</precision>
263   - <trim_type>none</trim_type>
264   - <repeat>N</repeat>
265   - <format/>
266   - <currency/>
267   - <decimal/>
268   - <group/>
269   - </field>
270   - <field>
271   - <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
272   - <type>String</type>
273   - <length>-1</length>
274   - <precision>-1</precision>
275   - <trim_type>none</trim_type>
276   - <repeat>N</repeat>
277   - <format/>
278   - <currency/>
279   - <decimal/>
280   - <group/>
281   - </field>
282   - <field>
283   - <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
284   - <type>String</type>
285   - <length>-1</length>
286   - <precision>-1</precision>
287   - <trim_type>none</trim_type>
288   - <repeat>N</repeat>
289   - <format/>
290   - <currency/>
291   - <decimal/>
292   - <group/>
293   - </field>
294   - <field>
295   - <name>&#x7ec8;&#x7ed3;&#x65e5;&#x671f;</name>
296   - <type>String</type>
297   - <length>-1</length>
298   - <precision>-1</precision>
299   - <trim_type>none</trim_type>
300   - <repeat>N</repeat>
301   - <format/>
302   - <currency/>
303   - <decimal/>
304   - <group/>
305   - </field>
306   - <field>
307   - <name>&#x505c;&#x8f66;&#x70b9;</name>
308   - <type>String</type>
309   - <length>-1</length>
310   - <precision>-1</precision>
311   - <trim_type>none</trim_type>
312   - <repeat>N</repeat>
313   - <format/>
314   - <currency/>
315   - <decimal/>
316   - <group/>
317   - </field>
318   - </fields>
319   - <sheets>
320   - <sheet>
321   - <name>&#x5de5;&#x4f5c;&#x8868;1</name>
322   - <startrow>0</startrow>
323   - <startcol>0</startcol>
324   - </sheet>
325   - </sheets>
326   - <strict_types>N</strict_types>
327   - <error_ignored>N</error_ignored>
328   - <error_line_skipped>N</error_line_skipped>
329   - <bad_line_files_destination_directory/>
330   - <bad_line_files_extension>warning</bad_line_files_extension>
331   - <error_line_files_destination_directory/>
332   - <error_line_files_extension>error</error_line_files_extension>
333   - <line_number_files_destination_directory/>
334   - <line_number_files_extension>line</line_number_files_extension>
335   - <shortFileFieldName/>
336   - <pathFieldName/>
337   - <hiddenFieldName/>
338   - <lastModificationTimeFieldName/>
339   - <uriNameFieldName/>
340   - <rootUriNameFieldName/>
341   - <extensionFieldName/>
342   - <sizeFieldName/>
343   - <spreadsheet_type>JXL</spreadsheet_type>
344   - <cluster_schema/>
345   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
346   - <xloc>155</xloc>
347   - <yloc>56</yloc>
348   - <draw>Y</draw>
349   - </GUI>
350   - </step>
351   -
352   - <step>
353   - <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
354   - <type>SelectValues</type>
355   - <description/>
356   - <distribute>Y</distribute>
357   - <custom_distribution/>
358   - <copies>1</copies>
359   - <partitioning>
360   - <method>none</method>
361   - <schema_name/>
362   - </partitioning>
363   - <fields> <field> <name>&#x7ebf;&#x8def;</name>
364   - <rename>xl</rename>
365   - <length>-2</length>
366   - <precision>-2</precision>
367   - </field> <field> <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
368   - <rename>cl</rename>
369   - <length>-2</length>
370   - <precision>-2</precision>
371   - </field> <field> <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
372   - <rename>qyrq</rename>
373   - <length>-2</length>
374   - <precision>-2</precision>
375   - </field> <field> <name>&#x7ec8;&#x7ed3;&#x65e5;&#x671f;</name>
376   - <rename>zzrq</rename>
377   - <length>-2</length>
378   - <precision>-2</precision>
379   - </field> <field> <name>&#x505c;&#x8f66;&#x70b9;</name>
380   - <rename>tcd</rename>
381   - <length>-2</length>
382   - <precision>-2</precision>
383   - </field> <select_unspecified>N</select_unspecified>
384   - </fields> <cluster_schema/>
385   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
386   - <xloc>306</xloc>
387   - <yloc>56</yloc>
388   - <draw>Y</draw>
389   - </GUI>
390   - </step>
391   -
392   - <step>
393   - <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ccinfo</name>
394   - <type>InsertUpdate</type>
395   - <description/>
396   - <distribute>Y</distribute>
397   - <custom_distribution/>
398   - <copies>1</copies>
399   - <partitioning>
400   - <method>none</method>
401   - <schema_name/>
402   - </partitioning>
403   - <connection>bus_control_&#x516c;&#x53f8;_201</connection>
404   - <commit>100</commit>
405   - <update_bypassed>N</update_bypassed>
406   - <lookup>
407   - <schema/>
408   - <table>bsth_c_s_ccinfo</table>
409   - <key>
410   - <name>xlId</name>
411   - <field>xl</field>
412   - <condition>&#x3d;</condition>
413   - <name2/>
414   - </key>
415   - <key>
416   - <name>clId</name>
417   - <field>cl</field>
418   - <condition>&#x3d;</condition>
419   - <name2/>
420   - </key>
421   - <value>
422   - <name>xl</name>
423   - <rename>xlId</rename>
424   - <update>Y</update>
425   - </value>
426   - <value>
427   - <name>cl</name>
428   - <rename>clId</rename>
429   - <update>Y</update>
430   - </value>
431   - <value>
432   - <name>is_switch</name>
433   - <rename>isswitch</rename>
434   - <update>Y</update>
435   - </value>
436   - <value>
437   - <name>tcd</name>
438   - <rename>tcd</rename>
439   - <update>Y</update>
440   - </value>
441   - <value>
442   - <name>zzrq</name>
443   - <rename>zzrq</rename>
444   - <update>Y</update>
445   - </value>
446   - <value>
447   - <name>qyrq</name>
448   - <rename>qyrq</rename>
449   - <update>Y</update>
450   - </value>
451   - </lookup>
452   - <cluster_schema/>
453   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
454   - <xloc>715</xloc>
455   - <yloc>197</yloc>
456   - <draw>Y</draw>
457   - </GUI>
458   - </step>
459   -
460   - <step>
461   - <name>&#x662f;&#x5426;&#x5207;&#x6362;</name>
462   - <type>Constant</type>
463   - <description/>
464   - <distribute>Y</distribute>
465   - <custom_distribution/>
466   - <copies>1</copies>
467   - <partitioning>
468   - <method>none</method>
469   - <schema_name/>
470   - </partitioning>
471   - <fields>
472   - <field>
473   - <name>isswitch</name>
474   - <type>Integer</type>
475   - <format/>
476   - <currency/>
477   - <decimal/>
478   - <group/>
479   - <nullif>0</nullif>
480   - <length>-1</length>
481   - <precision>-1</precision>
482   - <set_empty_string>N</set_empty_string>
483   - </field>
484   - </fields>
485   - <cluster_schema/>
486   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
487   - <xloc>713</xloc>
488   - <yloc>54</yloc>
489   - <draw>Y</draw>
490   - </GUI>
491   - </step>
492   -
493   - <step>
494   - <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</name>
495   - <type>DBLookup</type>
496   - <description/>
497   - <distribute>Y</distribute>
498   - <custom_distribution/>
499   - <copies>1</copies>
500   - <partitioning>
501   - <method>none</method>
502   - <schema_name/>
503   - </partitioning>
504   - <connection>bus_control_&#x516c;&#x53f8;_201</connection>
505   - <cache>N</cache>
506   - <cache_load_all>N</cache_load_all>
507   - <cache_size>0</cache_size>
508   - <lookup>
509   - <schema/>
510   - <table>bsth_c_line</table>
511   - <orderby/>
512   - <fail_on_multiple>N</fail_on_multiple>
513   - <eat_row_on_failure>N</eat_row_on_failure>
514   - <key>
515   - <name>xl</name>
516   - <field>name</field>
517   - <condition>&#x3d;</condition>
518   - <name2/>
519   - </key>
520   - <value>
521   - <name>id</name>
522   - <rename>xlId</rename>
523   - <default/>
524   - <type>Integer</type>
525   - </value>
526   - </lookup>
527   - <cluster_schema/>
528   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
529   - <xloc>439</xloc>
530   - <yloc>56</yloc>
531   - <draw>Y</draw>
532   - </GUI>
533   - </step>
534   -
535   - <step>
536   - <name>&#x67e5;&#x627e;&#x8f66;&#x8f86;&#x5173;&#x8054;</name>
537   - <type>DBLookup</type>
538   - <description/>
539   - <distribute>Y</distribute>
540   - <custom_distribution/>
541   - <copies>1</copies>
542   - <partitioning>
543   - <method>none</method>
544   - <schema_name/>
545   - </partitioning>
546   - <connection>bus_control_&#x516c;&#x53f8;_201</connection>
547   - <cache>N</cache>
548   - <cache_load_all>N</cache_load_all>
549   - <cache_size>0</cache_size>
550   - <lookup>
551   - <schema/>
552   - <table>bsth_c_cars</table>
553   - <orderby/>
554   - <fail_on_multiple>N</fail_on_multiple>
555   - <eat_row_on_failure>N</eat_row_on_failure>
556   - <key>
557   - <name>cl</name>
558   - <field>inside_code</field>
559   - <condition>&#x3d;</condition>
560   - <name2/>
561   - </key>
562   - <value>
563   - <name>id</name>
564   - <rename>clId</rename>
565   - <default/>
566   - <type>Integer</type>
567   - </value>
568   - </lookup>
569   - <cluster_schema/>
570   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
571   - <xloc>579</xloc>
572   - <yloc>55</yloc>
573   - <draw>Y</draw>
574   - </GUI>
575   - </step>
576   -
577   - <step>
578   - <name>&#x9519;&#x8bef;&#x8f93;&#x51fa;</name>
579   - <type>ExcelOutput</type>
580   - <description/>
581   - <distribute>Y</distribute>
582   - <custom_distribution/>
583   - <copies>1</copies>
584   - <partitioning>
585   - <method>none</method>
586   - <schema_name/>
587   - </partitioning>
588   - <header>Y</header>
589   - <footer>N</footer>
590   - <encoding>UTF-8</encoding>
591   - <append>N</append>
592   - <add_to_result_filenames>Y</add_to_result_filenames>
593   - <file>
594   - <name>&#x24;&#x7b;erroroutputdir&#x7d;&#x2f;&#x5f53;&#x524d;&#x914d;&#x8f66;_&#x9519;&#x8bef;</name>
595   - <extention>xls</extention>
596   - <do_not_open_newfile_init>N</do_not_open_newfile_init>
597   - <create_parent_folder>N</create_parent_folder>
598   - <split>N</split>
599   - <add_date>N</add_date>
600   - <add_time>N</add_time>
601   - <SpecifyFormat>N</SpecifyFormat>
602   - <date_time_format/>
603   - <sheetname>Sheet1</sheetname>
604   - <autosizecolums>N</autosizecolums>
605   - <nullisblank>N</nullisblank>
606   - <protect_sheet>N</protect_sheet>
607   - <password>Encrypted </password>
608   - <splitevery>0</splitevery>
609   - <usetempfiles>N</usetempfiles>
610   - <tempdirectory/>
611   - </file>
612   - <template>
613   - <enabled>N</enabled>
614   - <append>N</append>
615   - <filename>template.xls</filename>
616   - </template>
617   - <fields>
618   - <field>
619   - <name>xl</name>
620   - <type>String</type>
621   - <format/>
622   - </field>
623   - <field>
624   - <name>cl</name>
625   - <type>String</type>
626   - <format/>
627   - </field>
628   - <field>
629   - <name>qyrq</name>
630   - <type>String</type>
631   - <format/>
632   - </field>
633   - <field>
634   - <name>zzrq</name>
635   - <type>String</type>
636   - <format/>
637   - </field>
638   - <field>
639   - <name>tcd</name>
640   - <type>String</type>
641   - <format/>
642   - </field>
643   - <field>
644   - <name>xlId</name>
645   - <type>Integer</type>
646   - <format/>
647   - </field>
648   - <field>
649   - <name>clId</name>
650   - <type>Integer</type>
651   - <format/>
652   - </field>
653   - <field>
654   - <name>isswitch</name>
655   - <type>Integer</type>
656   - <format/>
657   - </field>
658   - <field>
659   - <name>error_count</name>
660   - <type>Integer</type>
661   - <format/>
662   - </field>
663   - <field>
664   - <name>error_desc</name>
665   - <type>String</type>
666   - <format/>
667   - </field>
668   - <field>
669   - <name>error_column1</name>
670   - <type>String</type>
671   - <format/>
672   - </field>
673   - <field>
674   - <name>error_column2</name>
675   - <type>String</type>
676   - <format/>
677   - </field>
678   - </fields>
679   - <custom>
680   - <header_font_name>arial</header_font_name>
681   - <header_font_size>10</header_font_size>
682   - <header_font_bold>N</header_font_bold>
683   - <header_font_italic>N</header_font_italic>
684   - <header_font_underline>no</header_font_underline>
685   - <header_font_orientation>horizontal</header_font_orientation>
686   - <header_font_color>black</header_font_color>
687   - <header_background_color>none</header_background_color>
688   - <header_row_height>255</header_row_height>
689   - <header_alignment>left</header_alignment>
690   - <header_image/>
691   - <row_font_name>arial</row_font_name>
692   - <row_font_size>10</row_font_size>
693   - <row_font_color>black</row_font_color>
694   - <row_background_color>none</row_background_color>
695   - </custom>
696   - <cluster_schema/>
697   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
698   - <xloc>718</xloc>
699   - <yloc>314</yloc>
700   - <draw>Y</draw>
701   - </GUI>
702   - </step>
703   -
704   - <step>
705   - <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>
706   - <type>GetVariable</type>
707   - <description/>
708   - <distribute>Y</distribute>
709   - <custom_distribution/>
710   - <copies>1</copies>
711   - <partitioning>
712   - <method>none</method>
713   - <schema_name/>
714   - </partitioning>
715   - <fields>
716   - <field>
717   - <name>filepath_</name>
718   - <variable>&#x24;&#x7b;filepath&#x7d;</variable>
719   - <type>String</type>
720   - <format/>
721   - <currency/>
722   - <decimal/>
723   - <group/>
724   - <length>-1</length>
725   - <precision>-1</precision>
726   - <trim_type>none</trim_type>
727   - </field>
728   - <field>
729   - <name>erroroutputdir_</name>
730   - <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
731   - <type>String</type>
732   - <format/>
733   - <currency/>
734   - <decimal/>
735   - <group/>
736   - <length>-1</length>
737   - <precision>-1</precision>
738   - <trim_type>none</trim_type>
739   - </field>
740   - </fields>
741   - <cluster_schema/>
742   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
743   - <xloc>156</xloc>
744   - <yloc>150</yloc>
745   - <draw>Y</draw>
746   - </GUI>
747   - </step>
748   -
749   - <step_error_handling>
750   - <error>
751   - <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ccinfo</source_step>
752   - <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa;</target_step>
753   - <is_enabled>Y</is_enabled>
754   - <nr_valuename>error_count</nr_valuename>
755   - <descriptions_valuename>error_desc</descriptions_valuename>
756   - <fields_valuename>error_column1</fields_valuename>
757   - <codes_valuename>error_column2</codes_valuename>
758   - <max_errors/>
759   - <max_pct_errors/>
760   - <min_pct_rows/>
761   - </error>
762   - </step_error_handling>
763   - <slave-step-copy-partition-distribution>
764   -</slave-step-copy-partition-distribution>
765   - <slave_transformation>N</slave_transformation>
766   -
767   -</transformation>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>carsConfigDataInput</name>
  5 + <description>&#x8f66;&#x8f86;&#x914d;&#x7f6e;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description>
  6 + <extended_description>&#x914d;&#x8f66;&#x4fe1;&#x606f;</extended_description>
  7 + <trans_version/>
  8 + <trans_type>Normal</trans_type>
  9 + <trans_status>0</trans_status>
  10 + <directory>&#x2f;</directory>
  11 + <parameters>
  12 + <parameter>
  13 + <name>erroroutputdir</name>
  14 + <default_value/>
  15 + <description>ktr step&#x914d;&#x7f6e;&#x7684;&#x9519;&#x8bef;&#x8f93;&#x51fa;&#x76ee;&#x5f55;</description>
  16 + </parameter>
  17 + <parameter>
  18 + <name>filepath</name>
  19 + <default_value/>
  20 + <description>&#x5f85;&#x5904;&#x7406;&#x5bfc;&#x5165;&#x7684;excel&#x6587;&#x4ef6;</description>
  21 + </parameter>
  22 + </parameters>
  23 + <log>
  24 +<trans-log-table><connection/>
  25 +<schema/>
  26 +<table/>
  27 +<size_limit_lines/>
  28 +<interval/>
  29 +<timeout_days/>
  30 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table>
  31 +<perf-log-table><connection/>
  32 +<schema/>
  33 +<table/>
  34 +<interval/>
  35 +<timeout_days/>
  36 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table>
  37 +<channel-log-table><connection/>
  38 +<schema/>
  39 +<table/>
  40 +<timeout_days/>
  41 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table>
  42 +<step-log-table><connection/>
  43 +<schema/>
  44 +<table/>
  45 +<timeout_days/>
  46 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table>
  47 +<metrics-log-table><connection/>
  48 +<schema/>
  49 +<table/>
  50 +<timeout_days/>
  51 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table>
  52 + </log>
  53 + <maxdate>
  54 + <connection/>
  55 + <table/>
  56 + <field/>
  57 + <offset>0.0</offset>
  58 + <maxdiff>0.0</maxdiff>
  59 + </maxdate>
  60 + <size_rowset>10000</size_rowset>
  61 + <sleep_time_empty>50</sleep_time_empty>
  62 + <sleep_time_full>50</sleep_time_full>
  63 + <unique_connections>N</unique_connections>
  64 + <feedback_shown>Y</feedback_shown>
  65 + <feedback_size>50000</feedback_size>
  66 + <using_thread_priorities>Y</using_thread_priorities>
  67 + <shared_objects_file/>
  68 + <capture_step_performance>N</capture_step_performance>
  69 + <step_performance_capturing_delay>1000</step_performance_capturing_delay>
  70 + <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
  71 + <dependencies>
  72 + </dependencies>
  73 + <partitionschemas>
  74 + </partitionschemas>
  75 + <slaveservers>
  76 + </slaveservers>
  77 + <clusterschemas>
  78 + </clusterschemas>
  79 + <created_user>-</created_user>
  80 + <created_date>2016&#x2f;06&#x2f;29 13&#x3a;15&#x3a;32.118</created_date>
  81 + <modified_user>-</modified_user>
  82 + <modified_date>2016&#x2f;06&#x2f;29 13&#x3a;15&#x3a;32.118</modified_date>
  83 + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
  84 + <is_key_private>N</is_key_private>
  85 + </info>
  86 + <notepads>
  87 + <notepad>
  88 + <note>&#x914d;&#x8f66;&#x5206;&#x5f53;&#x524d;&#x2f;&#x5386;&#x53f2;&#x2f;&#x8ba1;&#x5212;&#xff0c;&#x5386;&#x53f2;&#x914d;&#x8f66;&#x6709;&#x7ec8;&#x6b62;&#x65f6;&#x95f4;&#xff0c;&#x7136;&#x540e;&#x662f;&#x5426;&#x5207;&#x6362;&#x57fa;&#x672c;&#x90fd;&#x662f;1&#xa;&#x662f;&#x5426;&#x5207;&#x6362; &#x6682;&#x65f6;&#x4e0d;&#x77e5;&#x9053;&#x4ec0;&#x4e48;&#x610f;&#x601d;&#xff0c;&#x5f53;&#x524d;&#x914d;&#x8f66;&#x90fd;&#x8bbe;&#x7f6e;&#x4e3a;0&#xa;&#x7ec8;&#x6b62;&#x65f6;&#x95f4; &#x5f53;&#x524d;&#x914d;&#x8f66;&#x6ca1;&#x6709;&#x7ec8;&#x6b62;&#x65f6;&#x95f4;&#xff0c;&#x8fd9;&#x4e2a;&#x4f30;&#x8ba1;&#x8981;&#x4f5c;&#x4e3a;&#x67e5;&#x8be2;&#x6761;&#x4ef6;&#x7684;&#xa;&#x65e9;&#x73ed;&#x65f6;&#x95f4; &#x6ca1;&#x6709;&#x6682;&#x65f6;&#x7a7a;&#x7740;&#xa;&#x672b;&#x73ed;&#x65f6;&#x95f4; &#x6ca1;&#x6709;&#x6682;&#x65f6;&#x7a7a;&#x7740;</note>
  89 + <xloc>260</xloc>
  90 + <yloc>124</yloc>
  91 + <width>391</width>
  92 + <heigth>90</heigth>
  93 + <fontname>YaHei Consolas Hybrid</fontname>
  94 + <fontsize>12</fontsize>
  95 + <fontbold>N</fontbold>
  96 + <fontitalic>N</fontitalic>
  97 + <fontcolorred>0</fontcolorred>
  98 + <fontcolorgreen>0</fontcolorgreen>
  99 + <fontcolorblue>0</fontcolorblue>
  100 + <backgroundcolorred>255</backgroundcolorred>
  101 + <backgroundcolorgreen>205</backgroundcolorgreen>
  102 + <backgroundcolorblue>112</backgroundcolorblue>
  103 + <bordercolorred>100</bordercolorred>
  104 + <bordercolorgreen>100</bordercolorgreen>
  105 + <bordercolorblue>100</bordercolorblue>
  106 + <drawshadow>Y</drawshadow>
  107 + </notepad>
  108 + </notepads>
  109 + <connection>
  110 + <name>bus_control_variable</name>
  111 + <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
  112 + <type>MYSQL</type>
  113 + <access>Native</access>
  114 + <database>control</database>
  115 + <port>3306</port>
  116 + <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
  117 + <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
  118 + <servername/>
  119 + <data_tablespace/>
  120 + <index_tablespace/>
  121 + <attributes>
  122 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  123 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  124 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  125 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  126 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  127 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  128 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  129 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  130 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  131 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  132 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  133 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  134 + </attributes>
  135 + </connection>
  136 + <connection>
  137 + <name>bus_control_&#x516c;&#x53f8;_201</name>
  138 + <server>localhost</server>
  139 + <type>MYSQL</type>
  140 + <access>Native</access>
  141 + <database>control</database>
  142 + <port>3306</port>
  143 + <username>root</username>
  144 + <password>Encrypted </password>
  145 + <servername/>
  146 + <data_tablespace/>
  147 + <index_tablespace/>
  148 + <attributes>
  149 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  150 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  151 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  152 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  153 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  154 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  155 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  156 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  157 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  158 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  159 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  160 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  161 + </attributes>
  162 + </connection>
  163 + <connection>
  164 + <name>bus_control_&#x672c;&#x673a;</name>
  165 + <server>localhost</server>
  166 + <type>MYSQL</type>
  167 + <access>Native</access>
  168 + <database>control</database>
  169 + <port>3306</port>
  170 + <username>root</username>
  171 + <password>Encrypted </password>
  172 + <servername/>
  173 + <data_tablespace/>
  174 + <index_tablespace/>
  175 + <attributes>
  176 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  177 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  178 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  179 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  180 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  181 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  182 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  183 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  184 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  185 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  186 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  187 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  188 + </attributes>
  189 + </connection>
  190 + <connection>
  191 + <name>xlab_mysql_youle</name>
  192 + <server>101.231.124.8</server>
  193 + <type>MYSQL</type>
  194 + <access>Native</access>
  195 + <database>xlab_youle</database>
  196 + <port>45687</port>
  197 + <username>xlab-youle</username>
  198 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
  199 + <servername/>
  200 + <data_tablespace/>
  201 + <index_tablespace/>
  202 + <attributes>
  203 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  204 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  205 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  206 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  207 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  208 + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
  209 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  210 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  211 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  212 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  213 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  214 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  215 + </attributes>
  216 + </connection>
  217 + <connection>
  218 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  219 + <server>localhost</server>
  220 + <type>MYSQL</type>
  221 + <access>Native</access>
  222 + <database>xlab_youle</database>
  223 + <port>3306</port>
  224 + <username>root</username>
  225 + <password>Encrypted </password>
  226 + <servername/>
  227 + <data_tablespace/>
  228 + <index_tablespace/>
  229 + <attributes>
  230 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  231 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  232 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  233 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  234 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  235 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  236 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  237 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  238 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  239 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  240 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  241 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  242 + </attributes>
  243 + </connection>
  244 + <connection>
  245 + <name>xlab_youle</name>
  246 + <server/>
  247 + <type>MYSQL</type>
  248 + <access>JNDI</access>
  249 + <database>xlab_youle</database>
  250 + <port>1521</port>
  251 + <username/>
  252 + <password>Encrypted </password>
  253 + <servername/>
  254 + <data_tablespace/>
  255 + <index_tablespace/>
  256 + <attributes>
  257 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  258 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  259 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  260 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  261 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  262 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  263 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  264 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  265 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  266 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  267 + </attributes>
  268 + </connection>
  269 + <order>
  270 + <hop> <from>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
  271 + <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
  272 + <hop> <from>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ccinfo</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
  273 + <hop> <from>&#x662f;&#x5426;&#x5207;&#x6362;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ccinfo</to><enabled>Y</enabled> </hop>
  274 + <hop> <from>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</from><to>&#x67e5;&#x627e;&#x8f66;&#x8f86;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
  275 + <hop> <from>&#x67e5;&#x627e;&#x8f66;&#x8f86;&#x5173;&#x8054;</from><to>&#x662f;&#x5426;&#x5207;&#x6362;</to><enabled>Y</enabled> </hop>
  276 + <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>
  277 + </order>
  278 + <step>
  279 + <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name>
  280 + <type>ExcelInput</type>
  281 + <description/>
  282 + <distribute>Y</distribute>
  283 + <custom_distribution/>
  284 + <copies>1</copies>
  285 + <partitioning>
  286 + <method>none</method>
  287 + <schema_name/>
  288 + </partitioning>
  289 + <header>Y</header>
  290 + <noempty>Y</noempty>
  291 + <stoponempty>N</stoponempty>
  292 + <filefield/>
  293 + <sheetfield/>
  294 + <sheetrownumfield/>
  295 + <rownumfield/>
  296 + <sheetfield/>
  297 + <filefield/>
  298 + <limit>0</limit>
  299 + <encoding/>
  300 + <add_to_result_filenames>Y</add_to_result_filenames>
  301 + <accept_filenames>Y</accept_filenames>
  302 + <accept_field>filepath_</accept_field>
  303 + <accept_stepname>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</accept_stepname>
  304 + <file>
  305 + <name/>
  306 + <filemask/>
  307 + <exclude_filemask/>
  308 + <file_required>N</file_required>
  309 + <include_subfolders>N</include_subfolders>
  310 + </file>
  311 + <fields>
  312 + <field>
  313 + <name>&#x7ebf;&#x8def;</name>
  314 + <type>String</type>
  315 + <length>-1</length>
  316 + <precision>-1</precision>
  317 + <trim_type>none</trim_type>
  318 + <repeat>N</repeat>
  319 + <format/>
  320 + <currency/>
  321 + <decimal/>
  322 + <group/>
  323 + </field>
  324 + <field>
  325 + <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
  326 + <type>String</type>
  327 + <length>-1</length>
  328 + <precision>-1</precision>
  329 + <trim_type>none</trim_type>
  330 + <repeat>N</repeat>
  331 + <format/>
  332 + <currency/>
  333 + <decimal/>
  334 + <group/>
  335 + </field>
  336 + <field>
  337 + <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  338 + <type>String</type>
  339 + <length>-1</length>
  340 + <precision>-1</precision>
  341 + <trim_type>none</trim_type>
  342 + <repeat>N</repeat>
  343 + <format/>
  344 + <currency/>
  345 + <decimal/>
  346 + <group/>
  347 + </field>
  348 + <field>
  349 + <name>&#x7ec8;&#x7ed3;&#x65e5;&#x671f;</name>
  350 + <type>String</type>
  351 + <length>-1</length>
  352 + <precision>-1</precision>
  353 + <trim_type>none</trim_type>
  354 + <repeat>N</repeat>
  355 + <format/>
  356 + <currency/>
  357 + <decimal/>
  358 + <group/>
  359 + </field>
  360 + <field>
  361 + <name>&#x505c;&#x8f66;&#x70b9;</name>
  362 + <type>String</type>
  363 + <length>-1</length>
  364 + <precision>-1</precision>
  365 + <trim_type>none</trim_type>
  366 + <repeat>N</repeat>
  367 + <format/>
  368 + <currency/>
  369 + <decimal/>
  370 + <group/>
  371 + </field>
  372 + </fields>
  373 + <sheets>
  374 + <sheet>
  375 + <name>&#x5de5;&#x4f5c;&#x8868;1</name>
  376 + <startrow>0</startrow>
  377 + <startcol>0</startcol>
  378 + </sheet>
  379 + </sheets>
  380 + <strict_types>N</strict_types>
  381 + <error_ignored>N</error_ignored>
  382 + <error_line_skipped>N</error_line_skipped>
  383 + <bad_line_files_destination_directory/>
  384 + <bad_line_files_extension>warning</bad_line_files_extension>
  385 + <error_line_files_destination_directory/>
  386 + <error_line_files_extension>error</error_line_files_extension>
  387 + <line_number_files_destination_directory/>
  388 + <line_number_files_extension>line</line_number_files_extension>
  389 + <shortFileFieldName/>
  390 + <pathFieldName/>
  391 + <hiddenFieldName/>
  392 + <lastModificationTimeFieldName/>
  393 + <uriNameFieldName/>
  394 + <rootUriNameFieldName/>
  395 + <extensionFieldName/>
  396 + <sizeFieldName/>
  397 + <spreadsheet_type>JXL</spreadsheet_type>
  398 + <cluster_schema/>
  399 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  400 + <xloc>155</xloc>
  401 + <yloc>56</yloc>
  402 + <draw>Y</draw>
  403 + </GUI>
  404 + </step>
  405 +
  406 + <step>
  407 + <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
  408 + <type>SelectValues</type>
  409 + <description/>
  410 + <distribute>Y</distribute>
  411 + <custom_distribution/>
  412 + <copies>1</copies>
  413 + <partitioning>
  414 + <method>none</method>
  415 + <schema_name/>
  416 + </partitioning>
  417 + <fields> <field> <name>&#x7ebf;&#x8def;</name>
  418 + <rename>xl</rename>
  419 + <length>-2</length>
  420 + <precision>-2</precision>
  421 + </field> <field> <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
  422 + <rename>cl</rename>
  423 + <length>-2</length>
  424 + <precision>-2</precision>
  425 + </field> <field> <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  426 + <rename>qyrq</rename>
  427 + <length>-2</length>
  428 + <precision>-2</precision>
  429 + </field> <field> <name>&#x7ec8;&#x7ed3;&#x65e5;&#x671f;</name>
  430 + <rename>zzrq</rename>
  431 + <length>-2</length>
  432 + <precision>-2</precision>
  433 + </field> <field> <name>&#x505c;&#x8f66;&#x70b9;</name>
  434 + <rename>tcd</rename>
  435 + <length>-2</length>
  436 + <precision>-2</precision>
  437 + </field> <select_unspecified>N</select_unspecified>
  438 + </fields> <cluster_schema/>
  439 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  440 + <xloc>306</xloc>
  441 + <yloc>56</yloc>
  442 + <draw>Y</draw>
  443 + </GUI>
  444 + </step>
  445 +
  446 + <step>
  447 + <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ccinfo</name>
  448 + <type>InsertUpdate</type>
  449 + <description/>
  450 + <distribute>Y</distribute>
  451 + <custom_distribution/>
  452 + <copies>1</copies>
  453 + <partitioning>
  454 + <method>none</method>
  455 + <schema_name/>
  456 + </partitioning>
  457 + <connection>bus_control_variable</connection>
  458 + <commit>100</commit>
  459 + <update_bypassed>N</update_bypassed>
  460 + <lookup>
  461 + <schema/>
  462 + <table>bsth_c_s_ccinfo</table>
  463 + <key>
  464 + <name>xlId</name>
  465 + <field>xl</field>
  466 + <condition>&#x3d;</condition>
  467 + <name2/>
  468 + </key>
  469 + <key>
  470 + <name>clId</name>
  471 + <field>cl</field>
  472 + <condition>&#x3d;</condition>
  473 + <name2/>
  474 + </key>
  475 + <value>
  476 + <name>xl</name>
  477 + <rename>xlId</rename>
  478 + <update>Y</update>
  479 + </value>
  480 + <value>
  481 + <name>cl</name>
  482 + <rename>clId</rename>
  483 + <update>Y</update>
  484 + </value>
  485 + <value>
  486 + <name>is_switch</name>
  487 + <rename>isswitch</rename>
  488 + <update>Y</update>
  489 + </value>
  490 + <value>
  491 + <name>tcd</name>
  492 + <rename>tcd</rename>
  493 + <update>Y</update>
  494 + </value>
  495 + <value>
  496 + <name>zzrq</name>
  497 + <rename>zzrq</rename>
  498 + <update>Y</update>
  499 + </value>
  500 + <value>
  501 + <name>qyrq</name>
  502 + <rename>qyrq</rename>
  503 + <update>Y</update>
  504 + </value>
  505 + </lookup>
  506 + <cluster_schema/>
  507 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  508 + <xloc>715</xloc>
  509 + <yloc>197</yloc>
  510 + <draw>Y</draw>
  511 + </GUI>
  512 + </step>
  513 +
  514 + <step>
  515 + <name>&#x662f;&#x5426;&#x5207;&#x6362;</name>
  516 + <type>Constant</type>
  517 + <description/>
  518 + <distribute>Y</distribute>
  519 + <custom_distribution/>
  520 + <copies>1</copies>
  521 + <partitioning>
  522 + <method>none</method>
  523 + <schema_name/>
  524 + </partitioning>
  525 + <fields>
  526 + <field>
  527 + <name>isswitch</name>
  528 + <type>Integer</type>
  529 + <format/>
  530 + <currency/>
  531 + <decimal/>
  532 + <group/>
  533 + <nullif>0</nullif>
  534 + <length>-1</length>
  535 + <precision>-1</precision>
  536 + <set_empty_string>N</set_empty_string>
  537 + </field>
  538 + </fields>
  539 + <cluster_schema/>
  540 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  541 + <xloc>713</xloc>
  542 + <yloc>54</yloc>
  543 + <draw>Y</draw>
  544 + </GUI>
  545 + </step>
  546 +
  547 + <step>
  548 + <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</name>
  549 + <type>DBLookup</type>
  550 + <description/>
  551 + <distribute>Y</distribute>
  552 + <custom_distribution/>
  553 + <copies>1</copies>
  554 + <partitioning>
  555 + <method>none</method>
  556 + <schema_name/>
  557 + </partitioning>
  558 + <connection>bus_control_variable</connection>
  559 + <cache>N</cache>
  560 + <cache_load_all>N</cache_load_all>
  561 + <cache_size>0</cache_size>
  562 + <lookup>
  563 + <schema/>
  564 + <table>bsth_c_line</table>
  565 + <orderby/>
  566 + <fail_on_multiple>N</fail_on_multiple>
  567 + <eat_row_on_failure>N</eat_row_on_failure>
  568 + <key>
  569 + <name>xl</name>
  570 + <field>name</field>
  571 + <condition>&#x3d;</condition>
  572 + <name2/>
  573 + </key>
  574 + <value>
  575 + <name>id</name>
  576 + <rename>xlId</rename>
  577 + <default/>
  578 + <type>Integer</type>
  579 + </value>
  580 + </lookup>
  581 + <cluster_schema/>
  582 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  583 + <xloc>439</xloc>
  584 + <yloc>56</yloc>
  585 + <draw>Y</draw>
  586 + </GUI>
  587 + </step>
  588 +
  589 + <step>
  590 + <name>&#x67e5;&#x627e;&#x8f66;&#x8f86;&#x5173;&#x8054;</name>
  591 + <type>DBLookup</type>
  592 + <description/>
  593 + <distribute>Y</distribute>
  594 + <custom_distribution/>
  595 + <copies>1</copies>
  596 + <partitioning>
  597 + <method>none</method>
  598 + <schema_name/>
  599 + </partitioning>
  600 + <connection>bus_control_variable</connection>
  601 + <cache>N</cache>
  602 + <cache_load_all>N</cache_load_all>
  603 + <cache_size>0</cache_size>
  604 + <lookup>
  605 + <schema/>
  606 + <table>bsth_c_cars</table>
  607 + <orderby/>
  608 + <fail_on_multiple>N</fail_on_multiple>
  609 + <eat_row_on_failure>N</eat_row_on_failure>
  610 + <key>
  611 + <name>cl</name>
  612 + <field>inside_code</field>
  613 + <condition>&#x3d;</condition>
  614 + <name2/>
  615 + </key>
  616 + <value>
  617 + <name>id</name>
  618 + <rename>clId</rename>
  619 + <default/>
  620 + <type>Integer</type>
  621 + </value>
  622 + </lookup>
  623 + <cluster_schema/>
  624 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  625 + <xloc>579</xloc>
  626 + <yloc>55</yloc>
  627 + <draw>Y</draw>
  628 + </GUI>
  629 + </step>
  630 +
  631 + <step>
  632 + <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>
  633 + <type>GetVariable</type>
  634 + <description/>
  635 + <distribute>Y</distribute>
  636 + <custom_distribution/>
  637 + <copies>1</copies>
  638 + <partitioning>
  639 + <method>none</method>
  640 + <schema_name/>
  641 + </partitioning>
  642 + <fields>
  643 + <field>
  644 + <name>filepath_</name>
  645 + <variable>&#x24;&#x7b;filepath&#x7d;</variable>
  646 + <type>String</type>
  647 + <format/>
  648 + <currency/>
  649 + <decimal/>
  650 + <group/>
  651 + <length>-1</length>
  652 + <precision>-1</precision>
  653 + <trim_type>none</trim_type>
  654 + </field>
  655 + <field>
  656 + <name>erroroutputdir_</name>
  657 + <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
  658 + <type>String</type>
  659 + <format/>
  660 + <currency/>
  661 + <decimal/>
  662 + <group/>
  663 + <length>-1</length>
  664 + <precision>-1</precision>
  665 + <trim_type>none</trim_type>
  666 + </field>
  667 + </fields>
  668 + <cluster_schema/>
  669 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  670 + <xloc>156</xloc>
  671 + <yloc>150</yloc>
  672 + <draw>Y</draw>
  673 + </GUI>
  674 + </step>
  675 +
  676 + <step>
  677 + <name>&#x9519;&#x8bef;&#x8f93;&#x51fa;</name>
  678 + <type>ExcelOutput</type>
  679 + <description/>
  680 + <distribute>Y</distribute>
  681 + <custom_distribution/>
  682 + <copies>1</copies>
  683 + <partitioning>
  684 + <method>none</method>
  685 + <schema_name/>
  686 + </partitioning>
  687 + <header>Y</header>
  688 + <footer>N</footer>
  689 + <encoding>UTF-8</encoding>
  690 + <append>N</append>
  691 + <add_to_result_filenames>Y</add_to_result_filenames>
  692 + <file>
  693 + <name>&#x24;&#x7b;erroroutputdir&#x7d;&#x2f;&#x5f53;&#x524d;&#x914d;&#x8f66;_&#x9519;&#x8bef;</name>
  694 + <extention>xls</extention>
  695 + <do_not_open_newfile_init>N</do_not_open_newfile_init>
  696 + <create_parent_folder>N</create_parent_folder>
  697 + <split>N</split>
  698 + <add_date>N</add_date>
  699 + <add_time>N</add_time>
  700 + <SpecifyFormat>N</SpecifyFormat>
  701 + <date_time_format/>
  702 + <sheetname>Sheet1</sheetname>
  703 + <autosizecolums>N</autosizecolums>
  704 + <nullisblank>N</nullisblank>
  705 + <protect_sheet>N</protect_sheet>
  706 + <password>Encrypted </password>
  707 + <splitevery>0</splitevery>
  708 + <usetempfiles>N</usetempfiles>
  709 + <tempdirectory/>
  710 + </file>
  711 + <template>
  712 + <enabled>N</enabled>
  713 + <append>N</append>
  714 + <filename>template.xls</filename>
  715 + </template>
  716 + <fields>
  717 + <field>
  718 + <name>xl</name>
  719 + <type>String</type>
  720 + <format/>
  721 + </field>
  722 + <field>
  723 + <name>cl</name>
  724 + <type>String</type>
  725 + <format/>
  726 + </field>
  727 + <field>
  728 + <name>qyrq</name>
  729 + <type>String</type>
  730 + <format/>
  731 + </field>
  732 + <field>
  733 + <name>zzrq</name>
  734 + <type>String</type>
  735 + <format/>
  736 + </field>
  737 + <field>
  738 + <name>tcd</name>
  739 + <type>String</type>
  740 + <format/>
  741 + </field>
  742 + <field>
  743 + <name>xlId</name>
  744 + <type>Integer</type>
  745 + <format/>
  746 + </field>
  747 + <field>
  748 + <name>clId</name>
  749 + <type>Integer</type>
  750 + <format/>
  751 + </field>
  752 + <field>
  753 + <name>isswitch</name>
  754 + <type>Integer</type>
  755 + <format/>
  756 + </field>
  757 + <field>
  758 + <name>error_count</name>
  759 + <type>Integer</type>
  760 + <format/>
  761 + </field>
  762 + <field>
  763 + <name>error_desc</name>
  764 + <type>String</type>
  765 + <format/>
  766 + </field>
  767 + <field>
  768 + <name>error_column1</name>
  769 + <type>String</type>
  770 + <format/>
  771 + </field>
  772 + <field>
  773 + <name>error_column2</name>
  774 + <type>String</type>
  775 + <format/>
  776 + </field>
  777 + </fields>
  778 + <custom>
  779 + <header_font_name>arial</header_font_name>
  780 + <header_font_size>10</header_font_size>
  781 + <header_font_bold>N</header_font_bold>
  782 + <header_font_italic>N</header_font_italic>
  783 + <header_font_underline>no</header_font_underline>
  784 + <header_font_orientation>horizontal</header_font_orientation>
  785 + <header_font_color>black</header_font_color>
  786 + <header_background_color>none</header_background_color>
  787 + <header_row_height>255</header_row_height>
  788 + <header_alignment>left</header_alignment>
  789 + <header_image/>
  790 + <row_font_name>arial</row_font_name>
  791 + <row_font_size>10</row_font_size>
  792 + <row_font_color>black</row_font_color>
  793 + <row_background_color>none</row_background_color>
  794 + </custom>
  795 + <cluster_schema/>
  796 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  797 + <xloc>718</xloc>
  798 + <yloc>314</yloc>
  799 + <draw>Y</draw>
  800 + </GUI>
  801 + </step>
  802 +
  803 + <step_error_handling>
  804 + <error>
  805 + <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ccinfo</source_step>
  806 + <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa;</target_step>
  807 + <is_enabled>Y</is_enabled>
  808 + <nr_valuename>error_count</nr_valuename>
  809 + <descriptions_valuename>error_desc</descriptions_valuename>
  810 + <fields_valuename>error_column1</fields_valuename>
  811 + <codes_valuename>error_column2</codes_valuename>
  812 + <max_errors/>
  813 + <max_pct_errors/>
  814 + <min_pct_rows/>
  815 + </error>
  816 + </step_error_handling>
  817 + <slave-step-copy-partition-distribution>
  818 +</slave-step-copy-partition-distribution>
  819 + <slave_transformation>N</slave_transformation>
  820 +
  821 +</transformation>
... ...