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,6 +115,11 @@
115 <artifactId>commons-net</artifactId> 115 <artifactId>commons-net</artifactId>
116 <version>3.5</version> 116 <version>3.5</version>
117 </dependency> 117 </dependency>
  118 + <dependency>
  119 + <groupId>org.apache.commons</groupId>
  120 + <artifactId>commons-compress</artifactId>
  121 + <version>1.3</version>
  122 + </dependency>
118 <!-- drools 6依赖 --> 123 <!-- drools 6依赖 -->
119 <dependency> 124 <dependency>
120 <groupId>org.kie</groupId> 125 <groupId>org.kie</groupId>
@@ -164,6 +169,16 @@ @@ -164,6 +169,16 @@
164 <artifactId>jxl</artifactId> 169 <artifactId>jxl</artifactId>
165 <version>2.6.12</version> 170 <version>2.6.12</version>
166 </dependency> 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 </dependencies> 183 </dependencies>
169 184
@@ -227,4 +242,4 @@ @@ -227,4 +242,4 @@
227 <url>http://repo.spring.io/milestone</url> 242 <url>http://repo.spring.io/milestone</url>
228 </pluginRepository> 243 </pluginRepository>
229 </pluginRepositories> 244 </pluginRepositories>
230 -</project>  
231 \ No newline at end of file 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,7 +32,7 @@ import java.util.Map;
32 public class BaseController<T, ID extends Serializable> { 32 public class BaseController<T, ID extends Serializable> {
33 33
34 @Autowired 34 @Autowired
35 - BaseService<T, ID> baseService; 35 + protected BaseService<T, ID> baseService;
36 @Autowired 36 @Autowired
37 DataImportExportService dataImportExportService; 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,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 @RequestMapping(value="carParkSave" , method = RequestMethod.POST) 48 @RequestMapping(value="carParkSave" , method = RequestMethod.POST)
33 public Map<String, Object> stationSave(@RequestParam Map<String, Object> map) { 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,6 +62,21 @@ public class CarParkController extends BaseController&lt;CarPark, Integer&gt; {
46 return service.findCarParkInfoFormId(map); 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 @RequestMapping(value="carParkUpdate" , method = RequestMethod.POST) 80 @RequestMapping(value="carParkUpdate" , method = RequestMethod.POST)
50 public Map<String, Object> carParkUpdate(@RequestParam Map<String, Object> map) { 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,4 +60,16 @@ public class SectionRouteController extends BaseController&lt;SectionRoute, Integer
60 60
61 return routeService.findSectionRouteInfoFormId(map); 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,11 +2,13 @@ package com.bsth.controller.schedule;
2 2
3 import com.bsth.controller.BaseController; 3 import com.bsth.controller.BaseController;
4 import com.bsth.entity.schedule.CarConfigInfo; 4 import com.bsth.entity.schedule.CarConfigInfo;
  5 +import com.bsth.repository.schedule.CarConfigInfoRepository;
5 import com.bsth.service.schedule.utils.DataToolsProperties; 6 import com.bsth.service.schedule.utils.DataToolsProperties;
6 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.boot.context.properties.EnableConfigurationProperties; 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 * Created by xu on 16/5/9. 14 * Created by xu on 16/5/9.
@@ -17,9 +19,30 @@ import org.springframework.web.bind.annotation.RestController; @@ -17,9 +19,30 @@ import org.springframework.web.bind.annotation.RestController;
17 public class CarConfigInfoController extends BaseController<CarConfigInfo, Long> { 19 public class CarConfigInfoController extends BaseController<CarConfigInfo, Long> {
18 @Autowired 20 @Autowired
19 private DataToolsProperties dataToolsProperties; 21 private DataToolsProperties dataToolsProperties;
  22 + @Autowired
  23 + private CarConfigInfoRepository carConfigInfoRepository;
20 24
21 @Override 25 @Override
22 protected String getDataImportKtrClasspath() { 26 protected String getDataImportKtrClasspath() {
23 return dataToolsProperties.getCarsconfigDatainputktr(); 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,11 +2,13 @@ package com.bsth.controller.schedule;
2 2
3 import com.bsth.controller.BaseController; 3 import com.bsth.controller.BaseController;
4 import com.bsth.entity.schedule.EmployeeConfigInfo; 4 import com.bsth.entity.schedule.EmployeeConfigInfo;
  5 +import com.bsth.repository.schedule.EmployeeConfigInfoRepository;
5 import com.bsth.service.schedule.utils.DataToolsProperties; 6 import com.bsth.service.schedule.utils.DataToolsProperties;
6 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.boot.context.properties.EnableConfigurationProperties; 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 * Created by xu on 16/5/10. 14 * Created by xu on 16/5/10.
@@ -17,9 +19,30 @@ import org.springframework.web.bind.annotation.RestController; @@ -17,9 +19,30 @@ import org.springframework.web.bind.annotation.RestController;
17 public class EmployeeConfigInfoController extends BaseController<EmployeeConfigInfo, Long> { 19 public class EmployeeConfigInfoController extends BaseController<EmployeeConfigInfo, Long> {
18 @Autowired 20 @Autowired
19 private DataToolsProperties dataToolsProperties; 21 private DataToolsProperties dataToolsProperties;
  22 + @Autowired
  23 + private EmployeeConfigInfoRepository employeeConfigInfoRepository;
20 24
21 @Override 25 @Override
22 protected String getDataImportKtrClasspath() { 26 protected String getDataImportKtrClasspath() {
23 return dataToolsProperties.getEmployeesconfigDatainputktr(); 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,9 +2,11 @@ package com.bsth.controller.schedule;
2 2
3 import com.bsth.controller.BaseController; 3 import com.bsth.controller.BaseController;
4 import com.bsth.entity.schedule.GuideboardInfo; 4 import com.bsth.entity.schedule.GuideboardInfo;
  5 +import com.bsth.repository.schedule.GuideboardInfoRepository;
5 import com.bsth.service.schedule.utils.DataToolsProperties; 6 import com.bsth.service.schedule.utils.DataToolsProperties;
6 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.boot.context.properties.EnableConfigurationProperties; 8 import org.springframework.boot.context.properties.EnableConfigurationProperties;
  9 +import org.springframework.web.bind.annotation.PathVariable;
8 import org.springframework.web.bind.annotation.RequestMapping; 10 import org.springframework.web.bind.annotation.RequestMapping;
9 import org.springframework.web.bind.annotation.RestController; 11 import org.springframework.web.bind.annotation.RestController;
10 12
@@ -17,9 +19,16 @@ import org.springframework.web.bind.annotation.RestController; @@ -17,9 +19,16 @@ import org.springframework.web.bind.annotation.RestController;
17 public class GuideboardInfoController extends BaseController<GuideboardInfo, Long> { 19 public class GuideboardInfoController extends BaseController<GuideboardInfo, Long> {
18 @Autowired 20 @Autowired
19 private DataToolsProperties dataToolsProperties; 21 private DataToolsProperties dataToolsProperties;
  22 + @Autowired
  23 + private GuideboardInfoRepository guideboardInfoRepository;
20 24
21 @Override 25 @Override
22 protected String getDataImportKtrClasspath() { 26 protected String getDataImportKtrClasspath() {
23 return dataToolsProperties.getGuideboardsDatainputktr(); 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,11 +26,11 @@ public class CarConfigInfo implements Serializable {
26 @GeneratedValue 26 @GeneratedValue
27 private Long id; 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 private Line xl; 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 private Cars cl; 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 +6,7 @@ import com.bsth.entity.Personnel;
6 import com.bsth.entity.sys.SysUser; 6 import com.bsth.entity.sys.SysUser;
7 7
8 import javax.persistence.*; 8 import javax.persistence.*;
  9 +import javax.validation.constraints.NotNull;
9 import java.util.Date; 10 import java.util.Date;
10 11
11 /** 12 /**
@@ -14,7 +15,7 @@ import java.util.Date; @@ -14,7 +15,7 @@ import java.util.Date;
14 @Entity 15 @Entity
15 @Table(name = "bsth_c_s_ecinfo") 16 @Table(name = "bsth_c_s_ecinfo")
16 @NamedEntityGraphs({ 17 @NamedEntityGraphs({
17 - @NamedEntityGraph(name = "employeeConfigInfo_xl_cl", attributeNodes = { 18 + @NamedEntityGraph(name = "employeeConfigInfo_jsy_spy_xl", attributeNodes = {
18 @NamedAttributeNode("jsy"), 19 @NamedAttributeNode("jsy"),
19 @NamedAttributeNode("spy"), 20 @NamedAttributeNode("spy"),
20 @NamedAttributeNode("xl") 21 @NamedAttributeNode("xl")
@@ -28,19 +29,20 @@ public class EmployeeConfigInfo { @@ -28,19 +29,20 @@ public class EmployeeConfigInfo {
28 private Long id; 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 private Line xl; 33 private Line xl;
33 - /** 车辆关联 */  
34 - @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY) 34 + /** 车辆关联(TODO:貌似没用了) */
  35 + @ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
35 private Cars cl; 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 private Personnel jsy; 39 private Personnel jsy;
39 /** 人员关联(售票员) */ 40 /** 人员关联(售票员) */
40 - @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY) 41 + @ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
41 private Personnel spy; 42 private Personnel spy;
42 43
43 - /** 搭班编码(TODO:估计是售票员和驾驶员搭配时使用) */ 44 + /** 搭班编码(是售票员和驾驶员搭配时使用,同一条线路搭班编码不能重复) */
  45 + @NotNull
44 private String dbbm; 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,7 +25,7 @@ public class GuideboardInfo {
25 private Long id; 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 private Line xl; 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,11 +76,11 @@ public interface CarParkRepository extends BaseRepository&lt;CarPark, Integer&gt;{
76 "park_name = ?4 , " + 76 "park_name = ?4 , " +
77 "branche_company = ?5 , " + 77 "branche_company = ?5 , " +
78 "create_by = ?6 , " + 78 "create_by = ?6 , " +
79 - "create_date = ?7 , " + 79 + "create_date = str_to_date(?7,'%Y-%m-%d %H:%i:%s') , " +
80 "descriptions = ?8 , " + 80 "descriptions = ?8 , " +
81 "destroy = ?9 , " + 81 "destroy = ?9 , " +
82 "update_by = ?10 , " + 82 "update_by = ?10 , " +
83 - "update_date = ?11 , " + 83 + "update_date =str_to_date(?11,'%Y-%m-%d %H:%i:%s') , " +
84 "versions = ?12 , " + 84 "versions = ?12 , " +
85 "b_center_point = ?13 , " + 85 "b_center_point = ?13 , " +
86 "g_center_point = ?14 , " + 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,15 +57,18 @@ public interface SectionRouteRepository extends BaseRepository&lt;SectionRoute, Int
57 " b.section_distance AS sectionDistance," + 57 " b.section_distance AS sectionDistance," +
58 " b.section_time AS sectionTime," + 58 " b.section_time AS sectionTime," +
59 " b.db_type AS sectiondbType," + 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 "SELECT r.id AS sectionrouteId," + 61 "SELECT r.id AS sectionrouteId," +
62 "r.line AS sectionrouteLine," + 62 "r.line AS sectionrouteLine," +
63 "r.line_code AS sectionrouteLineCode," + 63 "r.line_code AS sectionrouteLineCode," +
64 "r.section AS sectionrouteSection," + 64 "r.section AS sectionrouteSection," +
65 "r.section_code AS sectionrouteSectionCode," + 65 "r.section_code AS sectionrouteSectionCode," +
66 "r.sectionroute_code AS sectionrouteCode," + 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 " LEFT JOIN bsth_c_section b ON a.sectionrouteSection = b.id", nativeQuery=true) 72 " LEFT JOIN bsth_c_section b ON a.sectionrouteSection = b.id", nativeQuery=true)
70 List<Object[]> getSectionRoute(int lineId, int directions); 73 List<Object[]> getSectionRoute(int lineId, int directions);
71 74
@@ -128,4 +131,14 @@ public interface SectionRouteRepository extends BaseRepository&lt;SectionRoute, Int @@ -128,4 +131,14 @@ public interface SectionRouteRepository extends BaseRepository&lt;SectionRoute, Int
128 " LEFT JOIN bsth_c_section b on a.sectionRouteSection = b.id", nativeQuery=true) 131 " LEFT JOIN bsth_c_section b on a.sectionRouteSection = b.id", nativeQuery=true)
129 List<Object[]> findSectionRouteInfoFormId(int id); 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,7 +103,7 @@ public interface StationRepository extends BaseRepository&lt;Station, Integer&gt; {
103 " WHERE id = ?17 ", nativeQuery=true) 103 " WHERE id = ?17 ", nativeQuery=true)
104 public void stationUpdate(String stationCod,String stationName,String roadCoding,String dbType,String bJwpoints, 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 Integer destroy, Integer radius,String shapesType, Integer versions,String descriptions,Integer stationId); 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,8 +21,13 @@ public interface CarConfigInfoRepository extends BaseRepository&lt;CarConfigInfo, L
21 @EntityGraph(value = "carConfigInfo_xl_cl", type = EntityGraph.EntityGraphType.FETCH) 21 @EntityGraph(value = "carConfigInfo_xl_cl", type = EntityGraph.EntityGraphType.FETCH)
22 @Override 22 @Override
23 Page<CarConfigInfo> findAll(Specification<CarConfigInfo> spec, Pageable pageable); 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 @Query("select cc from CarConfigInfo cc where cc.xl.lineCode=?1") 31 @Query("select cc from CarConfigInfo cc where cc.xl.lineCode=?1")
27 List<CarConfigInfo> findBylineCode(String lineCode); 32 List<CarConfigInfo> findBylineCode(String lineCode);
28 } 33 }
29 \ No newline at end of file 34 \ No newline at end of file
src/main/java/com/bsth/repository/schedule/EmployeeConfigInfoRepository.java
1 package com.bsth.repository.schedule; 1 package com.bsth.repository.schedule;
2 2
  3 +import com.bsth.entity.schedule.CarConfigInfo;
3 import com.bsth.entity.schedule.EmployeeConfigInfo; 4 import com.bsth.entity.schedule.EmployeeConfigInfo;
4 import com.bsth.repository.BaseRepository; 5 import com.bsth.repository.BaseRepository;
5 6
@@ -22,7 +23,11 @@ public interface EmployeeConfigInfoRepository extends BaseRepository&lt;EmployeeCon @@ -22,7 +23,11 @@ public interface EmployeeConfigInfoRepository extends BaseRepository&lt;EmployeeCon
22 @Query("select ec from EmployeeConfigInfo ec where ec.xl.lineCode=?1") 23 @Query("select ec from EmployeeConfigInfo ec where ec.xl.lineCode=?1")
23 List<EmployeeConfigInfo> findBylineCode(String lineCode); 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 @Override 27 @Override
27 Page<EmployeeConfigInfo> findAll(Specification<EmployeeConfigInfo> spec, Pageable pageable); 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 package com.bsth.repository.schedule; 1 package com.bsth.repository.schedule;
2 2
  3 +import com.bsth.entity.schedule.EmployeeConfigInfo;
3 import com.bsth.entity.schedule.GuideboardInfo; 4 import com.bsth.entity.schedule.GuideboardInfo;
4 import com.bsth.repository.BaseRepository; 5 import com.bsth.repository.BaseRepository;
5 import org.springframework.data.domain.Page; 6 import org.springframework.data.domain.Page;
6 import org.springframework.data.domain.Pageable; 7 import org.springframework.data.domain.Pageable;
7 import org.springframework.data.jpa.domain.Specification; 8 import org.springframework.data.jpa.domain.Specification;
8 import org.springframework.data.jpa.repository.EntityGraph; 9 import org.springframework.data.jpa.repository.EntityGraph;
  10 +import org.springframework.data.jpa.repository.Query;
9 import org.springframework.stereotype.Repository; 11 import org.springframework.stereotype.Repository;
10 12
11 /** 13 /**
@@ -17,4 +19,8 @@ public interface GuideboardInfoRepository extends BaseRepository&lt;GuideboardInfo, @@ -17,4 +19,8 @@ public interface GuideboardInfoRepository extends BaseRepository&lt;GuideboardInfo,
17 @EntityGraph(value = "guideboardInfo_xl", type = EntityGraph.EntityGraphType.FETCH) 19 @EntityGraph(value = "guideboardInfo_xl", type = EntityGraph.EntityGraphType.FETCH)
18 @Override 20 @Override
19 Page<GuideboardInfo> findAll(Specification<GuideboardInfo> spec, Pageable pageable); 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,6 +11,22 @@ public interface CarParkService extends BaseService&lt;CarPark, Integer&gt; {
11 11
12 List<Map<String, Object>> findCarParkInfoFormId(Map<String, Object> map); 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 Map<String, Object> carParkUpdate(Map<String, Object> map); 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,4 +32,13 @@ public interface SectionRouteService extends BaseService&lt;SectionRoute, Integer&gt;
32 * @return List<Map<String, Object>> 32 * @return List<Map<String, Object>>
33 */ 33 */
34 List<Map<String, Object>> findSectionRouteInfoFormId(Map<String, Object> map); 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,6 +11,8 @@ import com.bsth.common.ResponseCode;
11 import com.bsth.entity.CarPark; 11 import com.bsth.entity.CarPark;
12 import com.bsth.repository.CarParkRepository; 12 import com.bsth.repository.CarParkRepository;
13 import com.bsth.service.CarParkService; 13 import com.bsth.service.CarParkService;
  14 +import com.bsth.util.TransGPS;
  15 +import com.bsth.util.TransGPS.Location;
14 16
15 import org.springframework.beans.factory.annotation.Autowired; 17 import org.springframework.beans.factory.annotation.Autowired;
16 import org.springframework.stereotype.Service; 18 import org.springframework.stereotype.Service;
@@ -42,13 +44,64 @@ public class CarParkServiceImpl extends BaseServiceImpl&lt;CarPark, Integer&gt; implem @@ -42,13 +44,64 @@ public class CarParkServiceImpl extends BaseServiceImpl&lt;CarPark, Integer&gt; implem
42 String bParkPoint = map.get("bParkPoint").equals("") ? "" : map.get("bParkPoint").toString(); 44 String bParkPoint = map.get("bParkPoint").equals("") ? "" : map.get("bParkPoint").toString();
43 45
44 // 地理位置(WGS坐标集合) 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 String bCenterPoint = map.get("bCenterPoint").equals("") ? "" : map.get("bCenterPoint").toString(); 83 String bCenterPoint = map.get("bCenterPoint").equals("") ? "" : map.get("bCenterPoint").toString();
49 84
50 // 地理位置中心点(WGS坐标) 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 String dbType = map.get("dbType").equals("") ? "" : map.get("dbType").toString(); 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,7 +232,22 @@ public class CarParkServiceImpl extends BaseServiceImpl&lt;CarPark, Integer&gt; implem
179 232
180 return resultList; 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 @Override 251 @Override
184 public Map<String, Object> carParkUpdate(Map<String, Object> map) { 252 public Map<String, Object> carParkUpdate(Map<String, Object> map) {
185 Map<String, Object> resultMap = new HashMap<String, Object>(); 253 Map<String, Object> resultMap = new HashMap<String, Object>();
@@ -216,10 +284,61 @@ public class CarParkServiceImpl extends BaseServiceImpl&lt;CarPark, Integer&gt; implem @@ -216,10 +284,61 @@ public class CarParkServiceImpl extends BaseServiceImpl&lt;CarPark, Integer&gt; implem
216 Integer destroy = map.get("destroy").equals("") ? null : Integer.parseInt(map.get("destroy").toString()); 284 Integer destroy = map.get("destroy").equals("") ? null : Integer.parseInt(map.get("destroy").toString());
217 285
218 // 中心点(WGS坐标) 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 // 图形坐标点集合(WGS坐标) 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 String parkCode = map.get("parkCode").equals("") ? "" : map.get("parkCode").toString(); 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,5 +386,22 @@ public class CarParkServiceImpl extends BaseServiceImpl&lt;CarPark, Integer&gt; implem
267 386
268 return resultMap; 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,7 +8,6 @@ import java.util.Map;
8 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.beans.factory.annotation.Autowired;
9 import org.springframework.stereotype.Service; 9 import org.springframework.stereotype.Service;
10 10
11 -import com.bsth.common.ResponseCode;  
12 import com.bsth.entity.SectionRoute; 11 import com.bsth.entity.SectionRoute;
13 import com.bsth.repository.SectionRouteRepository; 12 import com.bsth.repository.SectionRouteRepository;
14 import com.bsth.service.SectionRouteService; 13 import com.bsth.service.SectionRouteService;
@@ -191,4 +190,43 @@ public class SectionRouteServiceImpl extends BaseServiceImpl&lt;SectionRoute, Integ @@ -191,4 +190,43 @@ public class SectionRouteServiceImpl extends BaseServiceImpl&lt;SectionRoute, Integ
191 return resultList; 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,6 +282,15 @@ public class StationRouteServiceImpl extends BaseServiceImpl&lt;StationRoute, Integ
282 // 限速 282 // 限速
283 tempM.put("sectionSpeedLimet",sectionList.get(i)[22]); 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 tempM.put("name", sectionList.get(i)[9]); 294 tempM.put("name", sectionList.get(i)[9]);
286 295
287 tempM.put("text", sectionList.get(i)[9]); 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,11 +822,11 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem
822 822
823 if(b==0) { 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 }else { 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,6 +896,8 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem
896 // 线路 896 // 线路
897 arg0.setLine(resultLine); 897 arg0.setLine(resultLine);
898 898
  899 + arg0.setLineCode(resultLine.getLineCode());
  900 +
899 // 站点 901 // 站点
900 arg0.setStation(station); 902 arg0.setStation(station);
901 903
@@ -984,9 +986,33 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem @@ -984,9 +986,33 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem
984 String bJwpoints = map.get("bJwpoints").equals("") ? "" : map.get("bJwpoints").toString(); 986 String bJwpoints = map.get("bJwpoints").equals("") ? "" : map.get("bJwpoints").toString();
985 987
986 // WGS经纬度坐标 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 String gLonx = ""; 1016 String gLonx = "";
991 1017
992 // 站点地理位置WGS坐标纬度 1018 // 站点地理位置WGS坐标纬度
@@ -1000,7 +1026,7 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem @@ -1000,7 +1026,7 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem
1000 1026
1001 gLaty = gJwpointsArray[1]; 1027 gLaty = gJwpointsArray[1];
1002 1028
1003 - } 1029 + }*/
1004 1030
1005 // 图形类型 1031 // 图形类型
1006 String shapesType = map.get("shapesType").equals("") ? "" : map.get("shapesType").toString(); 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,10 +1035,43 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem
1009 Integer radius = map.get("radius").equals("") ? null : Integer.parseInt(map.get("radius").toString()); 1035 Integer radius = map.get("radius").equals("") ? null : Integer.parseInt(map.get("radius").toString());
1010 1036
1011 // 多边形空间WGS坐标点集合 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 Integer destroy = map.get("destroy").equals("") ? null : Integer.parseInt(map.get("destroy").toString()); 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,7 +1087,8 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem
1028 Float y = map.get("y").equals("") ? null : Float.parseFloat(map.get("y").toString()); 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 // 站点路由Id 1093 // 站点路由Id
1034 Integer stationRouteId = map.get("stationRouteId").equals("") ? null : Integer.parseInt(map.get("stationRouteId").toString()); 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 package com.bsth.service.schedule.utils; 1 package com.bsth.service.schedule.utils;
2 2
3 import com.google.common.io.Files; 3 import com.google.common.io.Files;
4 -import org.pentaho.di.core.KettleEnvironment;  
5 -import org.pentaho.di.core.util.EnvUtil;  
6 import org.pentaho.di.trans.Trans; 4 import org.pentaho.di.trans.Trans;
7 import org.pentaho.di.trans.TransMeta; 5 import org.pentaho.di.trans.TransMeta;
  6 +import org.springframework.beans.factory.InitializingBean;
8 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.beans.factory.annotation.Autowired;
9 import org.springframework.boot.context.properties.EnableConfigurationProperties; 8 import org.springframework.boot.context.properties.EnableConfigurationProperties;
10 import org.springframework.stereotype.Service; 9 import org.springframework.stereotype.Service;
@@ -17,18 +16,33 @@ import java.io.File; @@ -17,18 +16,33 @@ import java.io.File;
17 */ 16 */
18 @Service 17 @Service
19 @EnableConfigurationProperties(DataToolsProperties.class) 18 @EnableConfigurationProperties(DataToolsProperties.class)
20 -public class DataImportExportServiceImpl implements DataImportExportService { 19 +public class DataImportExportServiceImpl implements DataImportExportService, InitializingBean {
21 20
22 @Autowired 21 @Autowired
23 private DataToolsProperties dataToolsProperties; 22 private DataToolsProperties dataToolsProperties;
24 23
25 @Override 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 public File uploadFile(MultipartFile file) throws Exception { 39 public File uploadFile(MultipartFile file) throws Exception {
27 // TODO:以后的文件名要加时间戳 40 // TODO:以后的文件名要加时间戳
28 File newFile = new File( 41 File newFile = new File(
29 dataToolsProperties.getFileuploadDir() + File.separator + 42 dataToolsProperties.getFileuploadDir() + File.separator +
30 file.getOriginalFilename()); 43 file.getOriginalFilename());
31 Files.write(file.getBytes(), newFile); 44 Files.write(file.getBytes(), newFile);
  45 +
32 return newFile; 46 return newFile;
33 } 47 }
34 48
@@ -38,9 +52,7 @@ public class DataImportExportServiceImpl implements DataImportExportService { @@ -38,9 +52,7 @@ public class DataImportExportServiceImpl implements DataImportExportService {
38 File uploadFile = uploadFile(datafile); 52 File uploadFile = uploadFile(datafile);
39 53
40 // 2、使用kettle运行封装数据导入逻辑的ktr转换文件 54 // 2、使用kettle运行封装数据导入逻辑的ktr转换文件
41 - // 2.1、初始化kettle  
42 - EnvUtil.environmentInit();  
43 - KettleEnvironment.init(); 55 + // 2.1、初始化kettle(组件初始化已经做了)
44 // 2.2、创建转换元数据,转换 56 // 2.2、创建转换元数据,转换
45 TransMeta transMeta = new TransMeta(ktrFile.getAbsolutePath()); 57 TransMeta transMeta = new TransMeta(ktrFile.getAbsolutePath());
46 Trans trans = new Trans(transMeta); 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 \ No newline at end of file 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>