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 138 changed files with 15353 additions and 10570 deletions
... ... @@ -115,6 +115,11 @@
115 115 <artifactId>commons-net</artifactId>
116 116 <version>3.5</version>
117 117 </dependency>
  118 + <dependency>
  119 + <groupId>org.apache.commons</groupId>
  120 + <artifactId>commons-compress</artifactId>
  121 + <version>1.3</version>
  122 + </dependency>
118 123 <!-- drools 6依赖 -->
119 124 <dependency>
120 125 <groupId>org.kie</groupId>
... ... @@ -164,6 +169,16 @@
164 169 <artifactId>jxl</artifactId>
165 170 <version>2.6.12</version>
166 171 </dependency>
  172 + <dependency>
  173 + <groupId>rhino</groupId>
  174 + <artifactId>js</artifactId>
  175 + <version>1.7R2</version>
  176 + </dependency>
  177 + <dependency>
  178 + <groupId>javax.mail</groupId>
  179 + <artifactId>mail</artifactId>
  180 + <version>1.4.7</version>
  181 + </dependency>
167 182  
168 183 </dependencies>
169 184  
... ... @@ -227,4 +242,4 @@
227 242 <url>http://repo.spring.io/milestone</url>
228 243 </pluginRepository>
229 244 </pluginRepositories>
230   -</project>
231 245 \ No newline at end of file
  246 +</project>
... ...
src/main/java/com/bsth/controller/BaseController.java
... ... @@ -32,7 +32,7 @@ import java.util.Map;
32 32 public class BaseController<T, ID extends Serializable> {
33 33  
34 34 @Autowired
35   - BaseService<T, ID> baseService;
  35 + protected BaseService<T, ID> baseService;
36 36 @Autowired
37 37 DataImportExportService dataImportExportService;
38 38  
... ...
src/main/java/com/bsth/controller/CarParkController.java
... ... @@ -29,6 +29,22 @@ public class CarParkController extends BaseController&lt;CarPark, Integer&gt; {
29 29  
30 30 }
31 31  
  32 +
  33 + /**
  34 + * 新增停车场信息
  35 + *
  36 + *
  37 + * @param map<area:面积;bCenterPoint:中心点百度坐标;bParkPoint:多边形图形百度坐标点集合;
  38 + *
  39 + * brancheCompany:分公司;company:公司;createBy:创建人;createDate:创建日期;dbType:原坐标类型;descriptions:描述;
  40 + *
  41 + * destroy:是否撤销;gCenterPoint:WGS中心点坐标;gParkPoint:WGS多边形图形坐标集合;id:停车场ID;parkCode:停车场编码;
  42 + *
  43 + * parkName:停车名称;radius:圆半径;shapesType:图形类型;versions:版本号>
  44 + *
  45 + * @return map <SUCCESS:成功;ERROR:失败>
  46 + *
  47 + */
32 48 @RequestMapping(value="carParkSave" , method = RequestMethod.POST)
33 49 public Map<String, Object> stationSave(@RequestParam Map<String, Object> map) {
34 50  
... ... @@ -46,6 +62,21 @@ public class CarParkController extends BaseController&lt;CarPark, Integer&gt; {
46 62 return service.findCarParkInfoFormId(map);
47 63 }
48 64  
  65 + /**
  66 + * 修改停车场信息
  67 + *
  68 + *
  69 + * @param map<area:面积;bCenterPoint:中心点百度坐标;bParkPoint:多边形图形百度坐标点集合;
  70 + *
  71 + * brancheCompany:分公司;company:公司;createBy:创建人;createDate:创建日期;dbType:原坐标类型;descriptions:描述;
  72 + *
  73 + * destroy:是否撤销;gCenterPoint:WGS中心点坐标;gParkPoint:WGS多边形图形坐标集合;id:停车场ID;parkCode:停车场编码;
  74 + *
  75 + * parkName:停车名称;radius:圆半径;shapesType:图形类型;versions:版本号>
  76 + *
  77 + * @return map <SUCCESS:成功;ERROR:失败>
  78 + *
  79 + */
49 80 @RequestMapping(value="carParkUpdate" , method = RequestMethod.POST)
50 81 public Map<String, Object> carParkUpdate(@RequestParam Map<String, Object> map) {
51 82  
... ...
src/main/java/com/bsth/controller/PersonnelController.java
1   -package com.bsth.controller;
2   -
3   -import com.bsth.entity.Personnel;
4   -import com.bsth.service.schedule.utils.DataToolsProperties;
5   -import org.springframework.beans.factory.annotation.Autowired;
6   -import org.springframework.boot.context.properties.EnableConfigurationProperties;
7   -import org.springframework.web.bind.annotation.*;
8   -
9   -import java.util.Map;
10   -
11   -/**
12   - * Created by xu on 16/6/15.
13   - */
14   -@RestController
15   -@RequestMapping("personnel")
16   -@EnableConfigurationProperties(DataToolsProperties.class)
17   -public class PersonnelController extends BaseController<Personnel, Integer> {
18   -
19   - @Autowired
20   - private DataToolsProperties dataToolsProperties;
21   -
22   - /**
23   - * 覆写方法,因为form提交的方式参数不全,改用 json形式提交 @RequestBody
24   - * @Title: save
25   - * @Description: TODO(持久化对象)
26   - * @param @param t
27   - * @param @return 设定文件
28   - * @return Map<String,Object> {status: 1(成功),-1(失败)}
29   - * @throws
30   - */
31   - @RequestMapping(method = RequestMethod.POST)
32   - public Map<String, Object> save(@RequestBody Personnel t){
33   - return baseService.save(t);
34   - }
35   -
36   - /**
37   - * 验证。
38   - * @param map
39   - * @return
40   - */
41   - @RequestMapping(value = "/validate/equale", method = RequestMethod.GET)
42   - public Map<String, Object> validateData(@RequestParam Map<String, Object> map) {
43   - // 一般比较相同公司下工号是否相同
44   - return baseService.validateEquale(map);
45   - }
46   -
47   - @Override
48   - protected String getDataImportKtrClasspath() {
49   - return dataToolsProperties.getEmployeesDatainputktr();
50   - }
51   -}
  1 +package com.bsth.controller;
  2 +
  3 +import com.bsth.entity.Personnel;
  4 +import com.bsth.service.schedule.utils.DataToolsProperties;
  5 +import org.springframework.beans.factory.annotation.Autowired;
  6 +import org.springframework.boot.context.properties.EnableConfigurationProperties;
  7 +import org.springframework.web.bind.annotation.*;
  8 +
  9 +import java.util.Map;
  10 +
  11 +/**
  12 + * Created by xu on 16/6/15.
  13 + */
  14 +@RestController
  15 +@RequestMapping("personnel")
  16 +@EnableConfigurationProperties(DataToolsProperties.class)
  17 +public class PersonnelController extends BaseController<Personnel, Integer> {
  18 +
  19 + @Autowired
  20 + private DataToolsProperties dataToolsProperties;
  21 +
  22 + /**
  23 + * 覆写方法,因为form提交的方式参数不全,改用 json形式提交 @RequestBody
  24 + * @Title: save
  25 + * @Description: TODO(持久化对象)
  26 + * @param @param t
  27 + * @param @return 设定文件
  28 + * @return Map<String,Object> {status: 1(成功),-1(失败)}
  29 + * @throws
  30 + */
  31 + @RequestMapping(method = RequestMethod.POST)
  32 + public Map<String, Object> save(@RequestBody Personnel t){
  33 + return baseService.save(t);
  34 + }
  35 +
  36 + /**
  37 + * 验证。
  38 + * @param map
  39 + * @return
  40 + */
  41 + @RequestMapping(value = "/validate/equale", method = RequestMethod.GET)
  42 + public Map<String, Object> validateData(@RequestParam Map<String, Object> map) {
  43 + // 一般比较相同公司下工号是否相同
  44 + return baseService.validateEquale(map);
  45 + }
  46 +
  47 + @Override
  48 + protected String getDataImportKtrClasspath() {
  49 + return dataToolsProperties.getEmployeesDatainputktr();
  50 + }
  51 +}
... ...
src/main/java/com/bsth/controller/SectionRouteController.java
... ... @@ -60,4 +60,16 @@ public class SectionRouteController extends BaseController&lt;SectionRoute, Integer
60 60  
61 61 return routeService.findSectionRouteInfoFormId(map);
62 62 }
  63 +
  64 + /**
  65 + * @Description :TODO(查询线路某方向下的上一个路段序号)
  66 + *
  67 + * @param map <lineId:线路ID; direction:方向;sectionRouteCode:路段编码>
  68 + *
  69 + * @return List<Map<String, Object>>
  70 + */
  71 + @RequestMapping(value = "/findUpStationRouteCode" , method = RequestMethod.GET)
  72 + public List<Map<String, Object>> findUpStationRouteCode(@RequestParam Map<String, Object> map) {
  73 + return routeService.findUpSectionRouteCode(map);
  74 + }
63 75 }
... ...
src/main/java/com/bsth/controller/schedule/CarConfigInfoController.java
... ... @@ -2,11 +2,13 @@ package com.bsth.controller.schedule;
2 2  
3 3 import com.bsth.controller.BaseController;
4 4 import com.bsth.entity.schedule.CarConfigInfo;
  5 +import com.bsth.repository.schedule.CarConfigInfoRepository;
5 6 import com.bsth.service.schedule.utils.DataToolsProperties;
6 7 import org.springframework.beans.factory.annotation.Autowired;
7 8 import org.springframework.boot.context.properties.EnableConfigurationProperties;
8   -import org.springframework.web.bind.annotation.RequestMapping;
9   -import org.springframework.web.bind.annotation.RestController;
  9 +import org.springframework.web.bind.annotation.*;
  10 +
  11 +import java.util.Map;
10 12  
11 13 /**
12 14 * Created by xu on 16/5/9.
... ... @@ -17,9 +19,30 @@ import org.springframework.web.bind.annotation.RestController;
17 19 public class CarConfigInfoController extends BaseController<CarConfigInfo, Long> {
18 20 @Autowired
19 21 private DataToolsProperties dataToolsProperties;
  22 + @Autowired
  23 + private CarConfigInfoRepository carConfigInfoRepository;
20 24  
21 25 @Override
22 26 protected String getDataImportKtrClasspath() {
23 27 return dataToolsProperties.getCarsconfigDatainputktr();
24 28 }
  29 +
  30 + @Override
  31 + public CarConfigInfo findById(@PathVariable("id") Long aLong) {
  32 + return carConfigInfoRepository.findOneExtend(aLong);
  33 + }
  34 +
  35 + /**
  36 + * 覆写方法,因为form提交的方式参数不全,改用 json形式提交 @RequestBody
  37 + * @Title: save
  38 + * @Description: TODO(持久化对象)
  39 + * @param @param t
  40 + * @param @return 设定文件
  41 + * @return Map<String,Object> {status: 1(成功),-1(失败)}
  42 + * @throws
  43 + */
  44 + @RequestMapping(method = RequestMethod.POST)
  45 + public Map<String, Object> save(@RequestBody CarConfigInfo t){
  46 + return baseService.save(t);
  47 + }
25 48 }
... ...
src/main/java/com/bsth/controller/schedule/EmployeeConfigInfoController.java
... ... @@ -2,11 +2,13 @@ package com.bsth.controller.schedule;
2 2  
3 3 import com.bsth.controller.BaseController;
4 4 import com.bsth.entity.schedule.EmployeeConfigInfo;
  5 +import com.bsth.repository.schedule.EmployeeConfigInfoRepository;
5 6 import com.bsth.service.schedule.utils.DataToolsProperties;
6 7 import org.springframework.beans.factory.annotation.Autowired;
7 8 import org.springframework.boot.context.properties.EnableConfigurationProperties;
8   -import org.springframework.web.bind.annotation.RequestMapping;
9   -import org.springframework.web.bind.annotation.RestController;
  9 +import org.springframework.web.bind.annotation.*;
  10 +
  11 +import java.util.Map;
10 12  
11 13 /**
12 14 * Created by xu on 16/5/10.
... ... @@ -17,9 +19,30 @@ import org.springframework.web.bind.annotation.RestController;
17 19 public class EmployeeConfigInfoController extends BaseController<EmployeeConfigInfo, Long> {
18 20 @Autowired
19 21 private DataToolsProperties dataToolsProperties;
  22 + @Autowired
  23 + private EmployeeConfigInfoRepository employeeConfigInfoRepository;
20 24  
21 25 @Override
22 26 protected String getDataImportKtrClasspath() {
23 27 return dataToolsProperties.getEmployeesconfigDatainputktr();
24 28 }
  29 +
  30 + @Override
  31 + public EmployeeConfigInfo findById(@PathVariable("id") Long aLong) {
  32 + return employeeConfigInfoRepository.findOneExtend(aLong);
  33 + }
  34 +
  35 + /**
  36 + * 覆写方法,因为form提交的方式参数不全,改用 json形式提交 @RequestBody
  37 + * @Title: save
  38 + * @Description: TODO(持久化对象)
  39 + * @param @param t
  40 + * @param @return 设定文件
  41 + * @return Map<String,Object> {status: 1(成功),-1(失败)}
  42 + * @throws
  43 + */
  44 + @RequestMapping(method = RequestMethod.POST)
  45 + public Map<String, Object> save(@RequestBody EmployeeConfigInfo t){
  46 + return baseService.save(t);
  47 + }
25 48 }
... ...
src/main/java/com/bsth/controller/schedule/GuideboardInfoController.java
... ... @@ -2,9 +2,11 @@ package com.bsth.controller.schedule;
2 2  
3 3 import com.bsth.controller.BaseController;
4 4 import com.bsth.entity.schedule.GuideboardInfo;
  5 +import com.bsth.repository.schedule.GuideboardInfoRepository;
5 6 import com.bsth.service.schedule.utils.DataToolsProperties;
6 7 import org.springframework.beans.factory.annotation.Autowired;
7 8 import org.springframework.boot.context.properties.EnableConfigurationProperties;
  9 +import org.springframework.web.bind.annotation.PathVariable;
8 10 import org.springframework.web.bind.annotation.RequestMapping;
9 11 import org.springframework.web.bind.annotation.RestController;
10 12  
... ... @@ -17,9 +19,16 @@ import org.springframework.web.bind.annotation.RestController;
17 19 public class GuideboardInfoController extends BaseController<GuideboardInfo, Long> {
18 20 @Autowired
19 21 private DataToolsProperties dataToolsProperties;
  22 + @Autowired
  23 + private GuideboardInfoRepository guideboardInfoRepository;
20 24  
21 25 @Override
22 26 protected String getDataImportKtrClasspath() {
23 27 return dataToolsProperties.getGuideboardsDatainputktr();
24 28 }
  29 +
  30 + @Override
  31 + public GuideboardInfo findById(@PathVariable("id") Long aLong) {
  32 + return guideboardInfoRepository.findOneExtend(aLong);
  33 + }
25 34 }
... ...
src/main/java/com/bsth/controller/schedule/ScheduleRule1FlatController.java 0 → 100644
  1 +package com.bsth.controller.schedule;
  2 +
  3 +import com.bsth.controller.BaseController;
  4 +import com.bsth.entity.schedule.EmployeeConfigInfo;
  5 +import com.bsth.entity.schedule.GuideboardInfo;
  6 +import com.bsth.entity.schedule.rule.ScheduleRule1Flat;
  7 +import com.bsth.repository.ScheduleRule1FlatRepository;
  8 +import com.bsth.service.schedule.EmployeeConfigInfoService;
  9 +import com.bsth.service.schedule.GuideboardInfoService;
  10 +import org.apache.commons.lang3.StringUtils;
  11 +import org.springframework.beans.factory.annotation.Autowired;
  12 +import org.springframework.web.bind.annotation.*;
  13 +
  14 +import java.util.HashMap;
  15 +import java.util.Map;
  16 +
  17 +/**
  18 + * Created by xu on 16/7/4.
  19 + */
  20 +@RestController
  21 +@RequestMapping("sr1fc")
  22 +public class ScheduleRule1FlatController extends BaseController<ScheduleRule1Flat, Long> {
  23 +
  24 + @Autowired
  25 + private ScheduleRule1FlatRepository scheduleRule1FlatRepository;
  26 + @Autowired
  27 + private GuideboardInfoService guideboardInfoService;
  28 + @Autowired
  29 + private EmployeeConfigInfoService employeeConfigInfoService;
  30 +
  31 + @Override
  32 + public ScheduleRule1Flat findById(@PathVariable("id") Long aLong) {
  33 + return scheduleRule1FlatRepository.findOneExtend(aLong);
  34 + }
  35 +
  36 + /**
  37 + * 覆写方法,因为form提交的方式参数不全,改用 json形式提交 @RequestBody
  38 + * @Title: save
  39 + * @Description: TODO(持久化对象)
  40 + * @param @param t
  41 + * @param @return 设定文件
  42 + * @return Map<String,Object> {status: 1(成功),-1(失败)}
  43 + * @throws
  44 + */
  45 + @RequestMapping(method = RequestMethod.POST)
  46 + public Map<String, Object> save(@RequestBody ScheduleRule1Flat t){
  47 + // TODO:根据编码查找id,不做错误检测,暂时这样做,以后前端直接传过来
  48 + // 1、查找路牌配置id
  49 + Map<String, Object> param1 = new HashMap<>();
  50 + param1.put("xl.id_eq", t.getXl().getId());
  51 + param1.put("lpName_eq", null);
  52 +
  53 + String[] lpNames = t.getLpNames().split(",");
  54 + String[] lpIds = new String[lpNames.length];
  55 + for (int i = 0; i < lpNames.length; i++) {
  56 + param1.put("lpName_eq", lpNames[i]);
  57 + Iterable<GuideboardInfo> guideboardInfos = guideboardInfoService.list(param1);
  58 + lpIds[i] = guideboardInfos.iterator().next().getId().toString();
  59 + }
  60 + t.setLpIds(StringUtils.join(lpIds, ","));
  61 +
  62 + // 2、查找人员配置id
  63 + Map<String, Object> param2 = new HashMap<>();
  64 + param2.put("xl.id_eq", t.getXl().getId());
  65 + param2.put("dbbm_eq", null);
  66 +
  67 + String[] ryDbbms = t.getRyDbbms().split(",");
  68 + String[] ryIds = new String[ryDbbms.length];
  69 + for (int j = 0; j < ryDbbms.length; j++) {
  70 + param2.put("dbbm_eq", ryDbbms[j]);
  71 + Iterable<EmployeeConfigInfo> employeeConfigInfos = employeeConfigInfoService.list(param2);
  72 + ryIds[j] = employeeConfigInfos.iterator().next().getId().toString();
  73 + }
  74 + t.setRyIds(StringUtils.join(ryIds, ","));
  75 +
  76 + return baseService.save(t);
  77 + }
  78 +
  79 +}
... ...
src/main/java/com/bsth/controller/schedule/TTInfoDetailController.java 0 → 100644
  1 +package com.bsth.controller.schedule;
  2 +
  3 +import com.bsth.common.ResponseCode;
  4 +import com.bsth.controller.BaseController;
  5 +import com.bsth.entity.schedule.TTInfoDetail;
  6 +import com.bsth.service.schedule.TTInfoDetailServiceImpl;
  7 +import org.springframework.beans.factory.annotation.Autowired;
  8 +import org.springframework.web.bind.annotation.RequestMapping;
  9 +import org.springframework.web.bind.annotation.RequestMethod;
  10 +import org.springframework.web.bind.annotation.RestController;
  11 +import org.springframework.web.multipart.MultipartFile;
  12 +
  13 +import java.util.HashMap;
  14 +import java.util.Map;
  15 +
  16 +/**
  17 + * Created by xu on 16/7/2.
  18 + */
  19 +@RestController
  20 +@RequestMapping("tidc")
  21 +public class TTInfoDetailController extends BaseController<TTInfoDetail, Long> {
  22 + @Autowired
  23 + private TTInfoDetailServiceImpl ttInfoDetailService;
  24 +
  25 + @RequestMapping(value = "/dataImportExtend", method = RequestMethod.POST)
  26 + public Map<String, Object> uploadDataAndImport(
  27 + MultipartFile file, String xlmc, String ttinfoname, String tccname) throws Exception {
  28 + Map<String, Object> resultMap = new HashMap<>();
  29 +
  30 + try {
  31 + ttInfoDetailService.fileDataImport(file, xlmc, ttinfoname, tccname);
  32 + resultMap.put("status", ResponseCode.SUCCESS);
  33 + resultMap.put("msg", "导入成功");
  34 + } catch (Exception exp) {
  35 + exp.printStackTrace();
  36 + throw exp;
  37 + }
  38 +
  39 + return resultMap;
  40 + }
  41 +}
... ...
src/main/java/com/bsth/entity/schedule/CarConfigInfo.java
... ... @@ -26,11 +26,11 @@ public class CarConfigInfo implements Serializable {
26 26 @GeneratedValue
27 27 private Long id;
28 28  
29   - /** 线路关联 */
30   - @ManyToOne(optional = false, cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  29 + /** 线路关联(jpa2 detach)*/
  30 + @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
31 31 private Line xl;
32   - /** 车辆关联 */
33   - @ManyToOne(optional = false, cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  32 + /** 车辆关联 (jpa2 detach) */
  33 + @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
34 34 private Cars cl;
35 35  
36 36  
... ...
src/main/java/com/bsth/entity/schedule/EmployeeConfigInfo.java
... ... @@ -6,6 +6,7 @@ import com.bsth.entity.Personnel;
6 6 import com.bsth.entity.sys.SysUser;
7 7  
8 8 import javax.persistence.*;
  9 +import javax.validation.constraints.NotNull;
9 10 import java.util.Date;
10 11  
11 12 /**
... ... @@ -14,7 +15,7 @@ import java.util.Date;
14 15 @Entity
15 16 @Table(name = "bsth_c_s_ecinfo")
16 17 @NamedEntityGraphs({
17   - @NamedEntityGraph(name = "employeeConfigInfo_xl_cl", attributeNodes = {
  18 + @NamedEntityGraph(name = "employeeConfigInfo_jsy_spy_xl", attributeNodes = {
18 19 @NamedAttributeNode("jsy"),
19 20 @NamedAttributeNode("spy"),
20 21 @NamedAttributeNode("xl")
... ... @@ -28,19 +29,20 @@ public class EmployeeConfigInfo {
28 29 private Long id;
29 30  
30 31 /** 线路关联 */
31   - @ManyToOne(optional = false, cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  32 + @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
32 33 private Line xl;
33   - /** 车辆关联 */
34   - @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  34 + /** 车辆关联(TODO:貌似没用了) */
  35 + @ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
35 36 private Cars cl;
36 37 /** 人员关联(驾驶员) */
37   - @ManyToOne(optional = false, cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  38 + @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
38 39 private Personnel jsy;
39 40 /** 人员关联(售票员) */
40   - @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  41 + @ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
41 42 private Personnel spy;
42 43  
43   - /** 搭班编码(TODO:估计是售票员和驾驶员搭配时使用) */
  44 + /** 搭班编码(是售票员和驾驶员搭配时使用,同一条线路搭班编码不能重复) */
  45 + @NotNull
44 46 private String dbbm;
45 47  
46 48 /** 创建人 */
... ...
src/main/java/com/bsth/entity/schedule/GuideboardInfo.java
... ... @@ -25,7 +25,7 @@ public class GuideboardInfo {
25 25 private Long id;
26 26  
27 27 /** 线路关联 */
28   - @ManyToOne(optional = false, cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  28 + @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
29 29 private Line xl;
30 30  
31 31 /** 路牌顺序号 */
... ...
src/main/java/com/bsth/entity/schedule/rule/ScheduleRule1Flat.java 0 → 100644
  1 +package com.bsth.entity.schedule.rule;
  2 +
  3 +import com.bsth.entity.Cars;
  4 +import com.bsth.entity.Line;
  5 +import com.bsth.entity.sys.SysUser;
  6 +
  7 +import javax.persistence.*;
  8 +import javax.validation.constraints.NotNull;
  9 +import java.util.Date;
  10 +
  11 +/**
  12 + * 排班规则1(flat,路牌,人员都不关联表,全部保存相关id),
  13 + * 基于老系统的规则设定实体,
  14 + * 有所谓的路牌范围,就是关联多个路牌
  15 + * 有所谓的人员返回,就是关联多个人(可能带早晚班)
  16 + * 有起始路牌,起始人员,翻班格式
  17 + */
  18 +@Entity
  19 +@Table(name = "bsth_c_s_sr1_flat")
  20 +@NamedEntityGraphs({
  21 + @NamedEntityGraph(name = "scheduleRule1Flat_xl_cl", attributeNodes = {
  22 + @NamedAttributeNode("xl"),
  23 + @NamedAttributeNode("cl")
  24 + })
  25 +})
  26 +public class ScheduleRule1Flat {
  27 + /** 主键Id */
  28 + @Id
  29 + @GeneratedValue
  30 + private Long id;
  31 +
  32 + /** 关联线路 */
  33 + @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
  34 + private Line xl;
  35 + /** 关联车辆 */
  36 + @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
  37 + private Cars cl;
  38 + /** 启用日期 */
  39 + @NotNull
  40 + private Date qyrq;
  41 +
  42 + /** 路牌名称s(用逗号隔开) */
  43 + @NotNull
  44 + private String lpNames;
  45 + /** 对应的路牌ids(用逗号隔开) */
  46 + @NotNull
  47 + private String lpIds;
  48 + /** 起始路牌(从0开始) */
  49 + @NotNull
  50 + private Integer lpStart;
  51 + /** 人员搭班编码s(用逗号隔开) */
  52 + @NotNull
  53 + private String ryDbbms;
  54 + /** 对应的人员配置ids(用逗号隔开) */
  55 + @NotNull
  56 + private String ryIds;
  57 + /** 起始人员(从0开始) */
  58 + @NotNull
  59 + private Integer ryStart;
  60 +
  61 + /** 翻班格式(TODO:这个用在车子上的,暂时不管)*/
  62 + private String fbgs;
  63 +
  64 + /** 创建人 */
  65 + @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  66 + private SysUser createBy;
  67 + /** 修改人 */
  68 + @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  69 + private SysUser updateBy;
  70 + /** 创建日期 */
  71 + @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
  72 + private Date createDate;
  73 + /** 修改日期 */
  74 + @Column(name = "update_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
  75 + private Date updateDate;
  76 +
  77 + public Long getId() {
  78 + return id;
  79 + }
  80 +
  81 + public void setId(Long id) {
  82 + this.id = id;
  83 + }
  84 +
  85 + public Line getXl() {
  86 + return xl;
  87 + }
  88 +
  89 + public void setXl(Line xl) {
  90 + this.xl = xl;
  91 + }
  92 +
  93 + public Cars getCl() {
  94 + return cl;
  95 + }
  96 +
  97 + public void setCl(Cars cl) {
  98 + this.cl = cl;
  99 + }
  100 +
  101 + public Date getQyrq() {
  102 + return qyrq;
  103 + }
  104 +
  105 + public void setQyrq(Date qyrq) {
  106 + this.qyrq = qyrq;
  107 + }
  108 +
  109 + public String getLpNames() {
  110 + return lpNames;
  111 + }
  112 +
  113 + public void setLpNames(String lpNames) {
  114 + this.lpNames = lpNames;
  115 + }
  116 +
  117 + public String getLpIds() {
  118 + return lpIds;
  119 + }
  120 +
  121 + public void setLpIds(String lpIds) {
  122 + this.lpIds = lpIds;
  123 + }
  124 +
  125 + public Integer getLpStart() {
  126 + return lpStart;
  127 + }
  128 +
  129 + public void setLpStart(Integer lpStart) {
  130 + this.lpStart = lpStart;
  131 + }
  132 +
  133 + public String getRyDbbms() {
  134 + return ryDbbms;
  135 + }
  136 +
  137 + public void setRyDbbms(String ryDbbms) {
  138 + this.ryDbbms = ryDbbms;
  139 + }
  140 +
  141 + public String getRyIds() {
  142 + return ryIds;
  143 + }
  144 +
  145 + public void setRyIds(String ryIds) {
  146 + this.ryIds = ryIds;
  147 + }
  148 +
  149 + public Integer getRyStart() {
  150 + return ryStart;
  151 + }
  152 +
  153 + public void setRyStart(Integer ryStart) {
  154 + this.ryStart = ryStart;
  155 + }
  156 +
  157 + public String getFbgs() {
  158 + return fbgs;
  159 + }
  160 +
  161 + public void setFbgs(String fbgs) {
  162 + this.fbgs = fbgs;
  163 + }
  164 +
  165 + public SysUser getCreateBy() {
  166 + return createBy;
  167 + }
  168 +
  169 + public void setCreateBy(SysUser createBy) {
  170 + this.createBy = createBy;
  171 + }
  172 +
  173 + public SysUser getUpdateBy() {
  174 + return updateBy;
  175 + }
  176 +
  177 + public void setUpdateBy(SysUser updateBy) {
  178 + this.updateBy = updateBy;
  179 + }
  180 +
  181 + public Date getCreateDate() {
  182 + return createDate;
  183 + }
  184 +
  185 + public void setCreateDate(Date createDate) {
  186 + this.createDate = createDate;
  187 + }
  188 +
  189 + public Date getUpdateDate() {
  190 + return updateDate;
  191 + }
  192 +
  193 + public void setUpdateDate(Date updateDate) {
  194 + this.updateDate = updateDate;
  195 + }
  196 +}
... ...
src/main/java/com/bsth/repository/CarParkRepository.java
... ... @@ -76,11 +76,11 @@ public interface CarParkRepository extends BaseRepository&lt;CarPark, Integer&gt;{
76 76 "park_name = ?4 , " +
77 77 "branche_company = ?5 , " +
78 78 "create_by = ?6 , " +
79   - "create_date = ?7 , " +
  79 + "create_date = str_to_date(?7,'%Y-%m-%d %H:%i:%s') , " +
80 80 "descriptions = ?8 , " +
81 81 "destroy = ?9 , " +
82 82 "update_by = ?10 , " +
83   - "update_date = ?11 , " +
  83 + "update_date =str_to_date(?11,'%Y-%m-%d %H:%i:%s') , " +
84 84 "versions = ?12 , " +
85 85 "b_center_point = ?13 , " +
86 86 "g_center_point = ?14 , " +
... ...
src/main/java/com/bsth/repository/ScheduleRule1FlatRepository.java 0 → 100644
  1 +package com.bsth.repository;
  2 +
  3 +import com.bsth.entity.schedule.rule.ScheduleRule1Flat;
  4 +import org.springframework.data.domain.Page;
  5 +import org.springframework.data.domain.Pageable;
  6 +import org.springframework.data.jpa.domain.Specification;
  7 +import org.springframework.data.jpa.repository.EntityGraph;
  8 +import org.springframework.data.jpa.repository.Query;
  9 +import org.springframework.stereotype.Repository;
  10 +
  11 +/**
  12 + * Created by xu on 16/7/4.
  13 + */
  14 +@Repository
  15 +public interface ScheduleRule1FlatRepository extends BaseRepository<ScheduleRule1Flat, Long> {
  16 +
  17 + @EntityGraph(value = "scheduleRule1Flat_xl_cl", type = EntityGraph.EntityGraphType.FETCH)
  18 + @Override
  19 + Page<ScheduleRule1Flat> findAll(Specification<ScheduleRule1Flat> spec, Pageable pageable);
  20 +
  21 + @EntityGraph(value = "scheduleRule1Flat_xl_cl", type = EntityGraph.EntityGraphType.FETCH)
  22 + @Query("select cc from ScheduleRule1Flat cc where cc.id=?1")
  23 + ScheduleRule1Flat findOneExtend(Long aLong);
  24 +}
... ...
src/main/java/com/bsth/repository/SectionRouteRepository.java
... ... @@ -57,15 +57,18 @@ public interface SectionRouteRepository extends BaseRepository&lt;SectionRoute, Int
57 57 " b.section_distance AS sectionDistance," +
58 58 " b.section_time AS sectionTime," +
59 59 " b.db_type AS sectiondbType," +
60   - " b.speed_limit AS sectionSpeedLimet FROM (" +
  60 + " b.speed_limit AS sectionSpeedLimet ,a.destroy,a.versions,a.descriptions FROM (" +
61 61 "SELECT r.id AS sectionrouteId," +
62 62 "r.line AS sectionrouteLine," +
63 63 "r.line_code AS sectionrouteLineCode," +
64 64 "r.section AS sectionrouteSection," +
65 65 "r.section_code AS sectionrouteSectionCode," +
66 66 "r.sectionroute_code AS sectionrouteCode," +
67   - "r.directions AS sectionrouteDirections" +
68   - " FROM bsth_c_sectionroute r where r.line = ?1 and r.directions = ?2 and r.destroy=0 ) a " +
  67 + "r.directions AS sectionrouteDirections," +
  68 + "r.destroy AS destroy," +
  69 + "r.versions AS versions," +
  70 + "r.descriptions AS descriptions" +
  71 + " FROM bsth_c_sectionroute r where r.line = ?1 and r.directions = ?2 and r.destroy=0 ) a " +
69 72 " LEFT JOIN bsth_c_section b ON a.sectionrouteSection = b.id", nativeQuery=true)
70 73 List<Object[]> getSectionRoute(int lineId, int directions);
71 74  
... ... @@ -128,4 +131,14 @@ public interface SectionRouteRepository extends BaseRepository&lt;SectionRoute, Int
128 131 " LEFT JOIN bsth_c_section b on a.sectionRouteSection = b.id", nativeQuery=true)
129 132 List<Object[]> findSectionRouteInfoFormId(int id);
130 133  
  134 +
  135 + /**
  136 + * @Description :TODO(查询线路某方向下的上一个路段序号)
  137 + *
  138 + * @param map <lineId:线路ID; direction:方向;sectionRouteCode:路段编码>
  139 + *
  140 + * @return List<Map<String, Object>>
  141 + */
  142 + @Query(value = " select MAX(r.sectionroute_code) as sectionrouteCode from bsth_c_sectionroute r WHERE r.line=?1 and r.directions =?2 and r.sectionroute_code< ?3", nativeQuery=true)
  143 + List<Object[]> findUpSectionRouteCode(Integer lineId,Integer direction,Integer stationRouteCode);
131 144 }
... ...
src/main/java/com/bsth/repository/StationRepository.java
... ... @@ -103,7 +103,7 @@ public interface StationRepository extends BaseRepository&lt;Station, Integer&gt; {
103 103 " WHERE id = ?17 ", nativeQuery=true)
104 104 public void stationUpdate(String stationCod,String stationName,String roadCoding,String dbType,String bJwpoints,
105 105  
106   - String gLonx,String gLaty,Float x,Float y, String bPolygonGrid,String gPolygonGrid,
  106 + Float gLonx,Float gLaty,Float x,Float y, String bPolygonGrid,String gPolygonGrid,
107 107  
108 108 Integer destroy, Integer radius,String shapesType, Integer versions,String descriptions,Integer stationId);
109 109  
... ...
src/main/java/com/bsth/repository/schedule/CarConfigInfoRepository.java
... ... @@ -21,8 +21,13 @@ public interface CarConfigInfoRepository extends BaseRepository&lt;CarConfigInfo, L
21 21 @EntityGraph(value = "carConfigInfo_xl_cl", type = EntityGraph.EntityGraphType.FETCH)
22 22 @Override
23 23 Page<CarConfigInfo> findAll(Specification<CarConfigInfo> spec, Pageable pageable);
24   -
25   - @EntityGraph(value = "carConfigInfo_xl_cl", type = EntityGraph.EntityGraphType.FETCH)
  24 +
  25 + @EntityGraph(value = "carConfigInfo_xl_cl", type = EntityGraph.EntityGraphType.FETCH)
  26 + @Query("select cc from CarConfigInfo cc where cc.id=?1")
  27 + CarConfigInfo findOneExtend(Long aLong);
  28 +
  29 +
  30 + @EntityGraph(value = "carConfigInfo_xl_cl", type = EntityGraph.EntityGraphType.FETCH)
26 31 @Query("select cc from CarConfigInfo cc where cc.xl.lineCode=?1")
27 32 List<CarConfigInfo> findBylineCode(String lineCode);
28 33 }
29 34 \ No newline at end of file
... ...
src/main/java/com/bsth/repository/schedule/EmployeeConfigInfoRepository.java
1 1 package com.bsth.repository.schedule;
2 2  
  3 +import com.bsth.entity.schedule.CarConfigInfo;
3 4 import com.bsth.entity.schedule.EmployeeConfigInfo;
4 5 import com.bsth.repository.BaseRepository;
5 6  
... ... @@ -22,7 +23,11 @@ public interface EmployeeConfigInfoRepository extends BaseRepository&lt;EmployeeCon
22 23 @Query("select ec from EmployeeConfigInfo ec where ec.xl.lineCode=?1")
23 24 List<EmployeeConfigInfo> findBylineCode(String lineCode);
24 25  
25   - @EntityGraph(value = "employeeConfigInfo_xl_cl", type = EntityGraph.EntityGraphType.FETCH)
  26 + @EntityGraph(value = "employeeConfigInfo_jsy_spy_xl", type = EntityGraph.EntityGraphType.FETCH)
26 27 @Override
27 28 Page<EmployeeConfigInfo> findAll(Specification<EmployeeConfigInfo> spec, Pageable pageable);
  29 +
  30 + @EntityGraph(value = "employeeConfigInfo_jsy_spy_xl", type = EntityGraph.EntityGraphType.FETCH)
  31 + @Query("select cc from EmployeeConfigInfo cc where cc.id=?1")
  32 + EmployeeConfigInfo findOneExtend(Long aLong);
28 33 }
... ...
src/main/java/com/bsth/repository/schedule/GuideboardInfoRepository.java
1 1 package com.bsth.repository.schedule;
2 2  
  3 +import com.bsth.entity.schedule.EmployeeConfigInfo;
3 4 import com.bsth.entity.schedule.GuideboardInfo;
4 5 import com.bsth.repository.BaseRepository;
5 6 import org.springframework.data.domain.Page;
6 7 import org.springframework.data.domain.Pageable;
7 8 import org.springframework.data.jpa.domain.Specification;
8 9 import org.springframework.data.jpa.repository.EntityGraph;
  10 +import org.springframework.data.jpa.repository.Query;
9 11 import org.springframework.stereotype.Repository;
10 12  
11 13 /**
... ... @@ -17,4 +19,8 @@ public interface GuideboardInfoRepository extends BaseRepository&lt;GuideboardInfo,
17 19 @EntityGraph(value = "guideboardInfo_xl", type = EntityGraph.EntityGraphType.FETCH)
18 20 @Override
19 21 Page<GuideboardInfo> findAll(Specification<GuideboardInfo> spec, Pageable pageable);
  22 +
  23 + @EntityGraph(value = "guideboardInfo_xl", type = EntityGraph.EntityGraphType.FETCH)
  24 + @Query("select cc from GuideboardInfo cc where cc.id=?1")
  25 + GuideboardInfo findOneExtend(Long aLong);
20 26 }
... ...
src/main/java/com/bsth/repository/schedule/TTInfoDetailRepository.java 0 → 100644
  1 +package com.bsth.repository.schedule;
  2 +
  3 +import com.bsth.entity.schedule.TTInfoDetail;
  4 +import com.bsth.repository.BaseRepository;
  5 +import org.springframework.stereotype.Repository;
  6 +
  7 +/**
  8 + * Created by xu on 16/7/2.
  9 + */
  10 +@Repository
  11 +public interface TTInfoDetailRepository extends BaseRepository<TTInfoDetail, Long> {
  12 +}
... ...
src/main/java/com/bsth/service/CarParkService.java
... ... @@ -11,6 +11,22 @@ public interface CarParkService extends BaseService&lt;CarPark, Integer&gt; {
11 11  
12 12 List<Map<String, Object>> findCarParkInfoFormId(Map<String, Object> map);
13 13  
  14 +
  15 + /**
  16 + * 修改停车场信息
  17 + *
  18 + *
  19 + * @param map<area:面积;bCenterPoint:中心点百度坐标;bParkPoint:多边形图形百度坐标点集合;
  20 + *
  21 + * brancheCompany:分公司;company:公司;createBy:创建人;createDate:创建日期;dbType:原坐标类型;descriptions:描述;
  22 + *
  23 + * destroy:是否撤销;gCenterPoint:WGS中心点坐标;gParkPoint:WGS多边形图形坐标集合;id:停车场ID;parkCode:停车场编码;
  24 + *
  25 + * parkName:停车名称;radius:圆半径;shapesType:图形类型;versions:版本号>
  26 + *
  27 + * @return map <SUCCESS:成功;ERROR:失败>
  28 + *
  29 + */
14 30 Map<String, Object> carParkUpdate(Map<String, Object> map);
15 31  
16 32 }
... ...
src/main/java/com/bsth/service/SectionRouteService.java
... ... @@ -32,4 +32,13 @@ public interface SectionRouteService extends BaseService&lt;SectionRoute, Integer&gt;
32 32 * @return List<Map<String, Object>>
33 33 */
34 34 List<Map<String, Object>> findSectionRouteInfoFormId(Map<String, Object> map);
  35 +
  36 + /**
  37 + * @Description :TODO(查询线路某方向下的上一个路段序号)
  38 + *
  39 + * @param map <lineId:线路ID; direction:方向;sectionRouteCode:路段编码>
  40 + *
  41 + * @return List<Map<String, Object>>
  42 + */
  43 + List<Map<String, Object>> findUpSectionRouteCode(Map<String, Object> map);
35 44 }
... ...
src/main/java/com/bsth/service/impl/CarParkServiceImpl.java
... ... @@ -11,6 +11,8 @@ import com.bsth.common.ResponseCode;
11 11 import com.bsth.entity.CarPark;
12 12 import com.bsth.repository.CarParkRepository;
13 13 import com.bsth.service.CarParkService;
  14 +import com.bsth.util.TransGPS;
  15 +import com.bsth.util.TransGPS.Location;
14 16  
15 17 import org.springframework.beans.factory.annotation.Autowired;
16 18 import org.springframework.stereotype.Service;
... ... @@ -42,13 +44,64 @@ public class CarParkServiceImpl extends BaseServiceImpl&lt;CarPark, Integer&gt; implem
42 44 String bParkPoint = map.get("bParkPoint").equals("") ? "" : map.get("bParkPoint").toString();
43 45  
44 46 // 地理位置(WGS坐标集合)
45   - String gParkPoint = map.get("gParkPoint").equals("") ? "" :map.get("gParkPoint").toString();
  47 + // String gParkPoint = map.get("gParkPoint").equals("") ? "" :map.get("gParkPoint").toString();
  48 +
  49 + // 多边形WGS坐标点集合
  50 + String gParkPoint ="";
  51 +
  52 + if(!bParkPoint.equals("")) {
  53 +
  54 + String bPloygonGridArray[] = bParkPoint.split(",");
  55 +
  56 + int bLen_ = bPloygonGridArray.length;
  57 +
  58 + for(int b = 0 ;b<bLen_;b++) {
  59 +
  60 + String tempArray[]= bPloygonGridArray[b].split(" ");
  61 +
  62 + Location resultPoint = FromBDPointToWGSPoint(tempArray[0],tempArray[1]);
  63 +
  64 + if(b==0) {
  65 +
  66 + gParkPoint = resultPoint.getLng() + " " + resultPoint.getLat();
  67 +
  68 + }else {
  69 +
  70 + gParkPoint = gParkPoint + ',' + resultPoint.getLng() + " " + resultPoint.getLat();
  71 +
  72 + }
  73 +
  74 + }
  75 +
  76 + }
  77 +
  78 + bParkPoint = "POLYGON((" + bParkPoint +"))";
  79 +
  80 + gParkPoint = "POLYGON((" + gParkPoint +"))";
46 81  
47 82 // 地理位置中心点(百度坐标)
48 83 String bCenterPoint = map.get("bCenterPoint").equals("") ? "" : map.get("bCenterPoint").toString();
49 84  
50 85 // 地理位置中心点(WGS坐标)
51   - String gCenterPoint = map.get("gCenterPoint").equals("") ? "" : map.get("gCenterPoint").toString();
  86 + // String gCenterPoint = map.get("gCenterPoint").equals("") ? "" : map.get("gCenterPoint").toString();
  87 +
  88 + String bJwpointsArray[] =null;
  89 +
  90 + if(bCenterPoint!=null) {
  91 +
  92 + bJwpointsArray = bCenterPoint.split(" ");
  93 +
  94 + }
  95 +
  96 + String gCenterPoint = "";
  97 +
  98 + if(bJwpointsArray.length>0) {
  99 +
  100 + Location resultPoint = FromBDPointToWGSPoint(bJwpointsArray[0],bJwpointsArray[1]);
  101 +
  102 + gCenterPoint = String.valueOf(resultPoint.getLng()) + " " + String.valueOf(resultPoint.getLat());
  103 +
  104 + }
52 105  
53 106 // 坐标类型
54 107 String dbType = map.get("dbType").equals("") ? "" : map.get("dbType").toString();
... ... @@ -179,7 +232,22 @@ public class CarParkServiceImpl extends BaseServiceImpl&lt;CarPark, Integer&gt; implem
179 232  
180 233 return resultList;
181 234 }
182   -
  235 +
  236 + /**
  237 + * 修改停车场信息
  238 + *
  239 + *
  240 + * @param map<area:面积;bCenterPoint:中心点百度坐标;bParkPoint:多边形图形百度坐标点集合;
  241 + *
  242 + * brancheCompany:分公司;company:公司;createBy:创建人;createDate:创建日期;dbType:原坐标类型;descriptions:描述;
  243 + *
  244 + * destroy:是否撤销;gCenterPoint:WGS中心点坐标;gParkPoint:WGS多边形图形坐标集合;id:停车场ID;parkCode:停车场编码;
  245 + *
  246 + * parkName:停车名称;radius:圆半径;shapesType:图形类型;versions:版本号>
  247 + *
  248 + * @return map <SUCCESS:成功;ERROR:失败>
  249 + *
  250 + */
183 251 @Override
184 252 public Map<String, Object> carParkUpdate(Map<String, Object> map) {
185 253 Map<String, Object> resultMap = new HashMap<String, Object>();
... ... @@ -216,10 +284,61 @@ public class CarParkServiceImpl extends BaseServiceImpl&lt;CarPark, Integer&gt; implem
216 284 Integer destroy = map.get("destroy").equals("") ? null : Integer.parseInt(map.get("destroy").toString());
217 285  
218 286 // 中心点(WGS坐标)
219   - String gCenterPoint = map.get("gCenterPoint").equals("") ? "" : map.get("gCenterPoint").toString();
  287 + // String gCenterPoint = map.get("gCenterPoint").equals("") ? "" : map.get("gCenterPoint").toString();
  288 +
  289 + String bJwpointsArray[] =null;
  290 +
  291 + if(bCenterPoint!=null) {
  292 +
  293 + bJwpointsArray = bCenterPoint.split(" ");
  294 +
  295 + }
  296 +
  297 + String gCenterPoint = "";
  298 +
  299 + if(bJwpointsArray.length>0) {
  300 +
  301 + Location resultPoint = FromBDPointToWGSPoint(bJwpointsArray[0],bJwpointsArray[1]);
  302 +
  303 + gCenterPoint = String.valueOf(resultPoint.getLng()) + " " + String.valueOf(resultPoint.getLat());
  304 +
  305 + }
220 306  
221 307 // 图形坐标点集合(WGS坐标)
222   - String gParkPoint = map.get("gParkPoint").equals("") ? "" : map.get("gParkPoint").toString();
  308 + // String gParkPoint = map.get("gParkPoint").equals("") ? "" : map.get("gParkPoint").toString();
  309 +
  310 + // 多边形WGS坐标点集合
  311 + String gParkPoint ="";
  312 +
  313 + if(!bParkPoint.equals("")) {
  314 +
  315 + String bPloygonGridArray[] = bParkPoint.split(",");
  316 +
  317 + int bLen_ = bPloygonGridArray.length;
  318 +
  319 + for(int b = 0 ;b<bLen_;b++) {
  320 +
  321 + String tempArray[]= bPloygonGridArray[b].split(" ");
  322 +
  323 + Location resultPoint = FromBDPointToWGSPoint(tempArray[0],tempArray[1]);
  324 +
  325 + if(b==0) {
  326 +
  327 + gParkPoint = resultPoint.getLng() + " " + resultPoint.getLat();
  328 +
  329 + }else {
  330 +
  331 + gParkPoint = gParkPoint + ',' + resultPoint.getLng() + " " + resultPoint.getLat();
  332 +
  333 + }
  334 +
  335 + }
  336 +
  337 + }
  338 +
  339 + bParkPoint = "POLYGON((" + bParkPoint +"))";
  340 +
  341 + gParkPoint = "POLYGON((" + gParkPoint +"))";
223 342  
224 343 // 编码
225 344 String parkCode = map.get("parkCode").equals("") ? "" : map.get("parkCode").toString();
... ... @@ -267,5 +386,22 @@ public class CarParkServiceImpl extends BaseServiceImpl&lt;CarPark, Integer&gt; implem
267 386  
268 387 return resultMap;
269 388 }
  389 +
  390 + /** 百度坐标转WGS坐标 */
  391 + public Location FromBDPointToWGSPoint(String bLonx,String bLatx) {
  392 +
  393 + double lng = Double.parseDouble(bLonx);
  394 +
  395 + double lat = Double.parseDouble(bLatx);
  396 +
  397 + Location bdLoc = TransGPS.LocationMake(lng, lat);
  398 +
  399 + Location location = TransGPS.bd_decrypt(bdLoc);
  400 +
  401 + Location WGSPoint = TransGPS.transformFromGCJToWGS(location);
  402 +
  403 + return WGSPoint;
  404 +
  405 + }
270 406  
271 407 }
... ...
src/main/java/com/bsth/service/impl/SectionRouteServiceImpl.java
... ... @@ -8,7 +8,6 @@ import java.util.Map;
8 8 import org.springframework.beans.factory.annotation.Autowired;
9 9 import org.springframework.stereotype.Service;
10 10  
11   -import com.bsth.common.ResponseCode;
12 11 import com.bsth.entity.SectionRoute;
13 12 import com.bsth.repository.SectionRouteRepository;
14 13 import com.bsth.service.SectionRouteService;
... ... @@ -191,4 +190,43 @@ public class SectionRouteServiceImpl extends BaseServiceImpl&lt;SectionRoute, Integ
191 190 return resultList;
192 191 }
193 192  
  193 +
  194 + /**
  195 + * @Description :TODO(查询线路某方向下的上一个路段序号)
  196 + *
  197 + * @param map <lineId:线路ID; direction:方向;sectionRouteCode:路段编码>
  198 + *
  199 + * @return List<Map<String, Object>>
  200 + */
  201 + @Override
  202 + public List<Map<String, Object>> findUpSectionRouteCode(Map<String, Object> map) {
  203 +
  204 + Integer lineId = map.get("lineId").equals("") ? null : Integer.parseInt(map.get("lineId").toString());
  205 +
  206 + Integer direction = map.get("direction").equals("") ? null : Integer.parseInt(map.get("direction").toString());
  207 +
  208 + Integer stationRouteCode = map.get("sectionRouteCode").equals("") ? null : Integer.parseInt(map.get("sectionRouteCode").toString());
  209 +
  210 + List<Object[]> reslutList = repository.findUpSectionRouteCode(lineId, direction, stationRouteCode);
  211 +
  212 + List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
  213 +
  214 + if(reslutList.get(0)!=null) {
  215 +
  216 + for(int i = 0 ; i <reslutList.size() ;i++){
  217 +
  218 + Map<String, Object> tempM = new HashMap<String, Object>();
  219 +
  220 + System.out.println(reslutList.get(i));
  221 +
  222 + tempM.put("sectionrouteCode", reslutList.get(i));
  223 +
  224 + list.add(tempM);
  225 +
  226 + }
  227 + }
  228 +
  229 + return list;
  230 + }
  231 +
194 232 }
... ...
src/main/java/com/bsth/service/impl/StationRouteServiceImpl.java
... ... @@ -282,6 +282,15 @@ public class StationRouteServiceImpl extends BaseServiceImpl&lt;StationRoute, Integ
282 282 // 限速
283 283 tempM.put("sectionSpeedLimet",sectionList.get(i)[22]);
284 284  
  285 + // 是否撤销
  286 + tempM.put("destroy",sectionList.get(i)[23]);
  287 +
  288 + // 版本号
  289 + tempM.put("versions",sectionList.get(i)[24]);
  290 +
  291 + // 说明
  292 + tempM.put("descriptions",sectionList.get(i)[25]);
  293 +
285 294 tempM.put("name", sectionList.get(i)[9]);
286 295  
287 296 tempM.put("text", sectionList.get(i)[9]);
... ...
src/main/java/com/bsth/service/impl/StationServiceImpl.java
... ... @@ -822,11 +822,11 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem
822 822  
823 823 if(b==0) {
824 824  
825   - gPloygonGrid = resultPoint.getLng() + " " + resultPoint.getLat();
  825 + gPloygonGrid = String.valueOf(resultPoint.getLng()) + " " + String.valueOf(resultPoint.getLat());
826 826  
827 827 }else {
828 828  
829   - gPloygonGrid = gPloygonGrid + ',' + resultPoint.getLng() + " " + resultPoint.getLat();
  829 + gPloygonGrid = gPloygonGrid + ',' + String.valueOf(resultPoint.getLng()) + " " + String.valueOf(resultPoint.getLat());
830 830  
831 831 }
832 832  
... ... @@ -896,6 +896,8 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem
896 896 // 线路
897 897 arg0.setLine(resultLine);
898 898  
  899 + arg0.setLineCode(resultLine.getLineCode());
  900 +
899 901 // 站点
900 902 arg0.setStation(station);
901 903  
... ... @@ -984,9 +986,33 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem
984 986 String bJwpoints = map.get("bJwpoints").equals("") ? "" : map.get("bJwpoints").toString();
985 987  
986 988 // WGS经纬度坐标
987   - String gJwpoints = map.get("gJwpoints").equals("") ? "" : map.get("gJwpoints").toString();
  989 + // String gJwpoints = map.get("gJwpoints").equals("") ? "" : map.get("gJwpoints").toString();
  990 +
  991 + String bJwpointsArray[] =null;
  992 +
  993 + if(bJwpoints!=null) {
  994 +
  995 + bJwpointsArray = bJwpoints.split(" ");
  996 +
  997 + }
  998 +
  999 + // WGS经纬度
  1000 + Float gLonx = null;
  1001 +
  1002 + // WGS纬度
  1003 + Float gLaty = null;
988 1004  
989   - // 站点地理位置WGS坐标经度
  1005 + if(bJwpointsArray.length>0) {
  1006 +
  1007 + Location resultPoint = FromBDPointToWGSPoint(bJwpointsArray[0],bJwpointsArray[1]);
  1008 +
  1009 + gLonx = (float)resultPoint.getLng();
  1010 +
  1011 + gLaty = (float)resultPoint.getLat();
  1012 +
  1013 + }
  1014 +
  1015 + /*// 站点地理位置WGS坐标经度
990 1016 String gLonx = "";
991 1017  
992 1018 // 站点地理位置WGS坐标纬度
... ... @@ -1000,7 +1026,7 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem
1000 1026  
1001 1027 gLaty = gJwpointsArray[1];
1002 1028  
1003   - }
  1029 + }*/
1004 1030  
1005 1031 // 图形类型
1006 1032 String shapesType = map.get("shapesType").equals("") ? "" : map.get("shapesType").toString();
... ... @@ -1009,10 +1035,43 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem
1009 1035 Integer radius = map.get("radius").equals("") ? null : Integer.parseInt(map.get("radius").toString());
1010 1036  
1011 1037 // 多边形空间WGS坐标点集合
1012   - String gPolygonGrid = map.get("gPolygonGrid").equals("") ? "" : map.get("gPolygonGrid").toString();
  1038 + /*String gPolygonGrid = map.get("gPolygonGrid").equals("") ? "" : map.get("gPolygonGrid").toString();*/
1013 1039  
1014 1040 // 多边形空间原坐标坐标点集合
1015   - String bPolygonGrid = map.get("bPolygonGrid").equals("") ? "" : map.get("bPolygonGrid").toString();
  1041 + String bPloygonGrid = map.get("bPolygonGrid").equals("") ? "" : map.get("bPolygonGrid").toString();
  1042 +
  1043 + // 多边形WGS坐标点集合
  1044 + String gPloygonGrid ="";
  1045 +
  1046 + if(!bPloygonGrid.equals("")) {
  1047 +
  1048 + String bPloygonGridArray[] = bPloygonGrid.split(",");
  1049 +
  1050 + int bLen_ = bPloygonGridArray.length;
  1051 +
  1052 + for(int b = 0 ;b<bLen_;b++) {
  1053 +
  1054 + String tempArray[]= bPloygonGridArray[b].split(" ");
  1055 +
  1056 + Location resultPoint = FromBDPointToWGSPoint(tempArray[0],tempArray[1]);
  1057 +
  1058 + if(b==0) {
  1059 +
  1060 + gPloygonGrid = resultPoint.getLng() + " " + resultPoint.getLat();
  1061 +
  1062 + }else {
  1063 +
  1064 + gPloygonGrid = gPloygonGrid + ',' + resultPoint.getLng() + " " + resultPoint.getLat();
  1065 +
  1066 + }
  1067 +
  1068 + }
  1069 +
  1070 + }
  1071 +
  1072 + bPloygonGrid = "POLYGON((" + bPloygonGrid +"))";
  1073 +
  1074 + gPloygonGrid = "POLYGON((" + gPloygonGrid +"))";
1016 1075  
1017 1076 // 是否撤销
1018 1077 Integer destroy = map.get("destroy").equals("") ? null : Integer.parseInt(map.get("destroy").toString());
... ... @@ -1028,7 +1087,8 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem
1028 1087 Float y = map.get("y").equals("") ? null : Float.parseFloat(map.get("y").toString());
1029 1088  
1030 1089 // 更新
1031   - repository.stationUpdate(stationCod, stationName, roadCoding, dbType, bJwpoints, gLonx, gLaty, x, y, bPolygonGrid, gPolygonGrid, destroy, radius, shapesType, versions, descriptions, stationId);
  1090 + repository.stationUpdate(stationCod, stationName, roadCoding, dbType, bJwpoints, gLonx, gLaty, x, y, bPloygonGrid, gPloygonGrid, destroy, radius, shapesType, versions, descriptions, stationId);
  1091 +
1032 1092  
1033 1093 // 站点路由Id
1034 1094 Integer stationRouteId = map.get("stationRouteId").equals("") ? null : Integer.parseInt(map.get("stationRouteId").toString());
... ...
src/main/java/com/bsth/service/schedule/ScheduleRule1FlatService.java 0 → 100644
  1 +package com.bsth.service.schedule;
  2 +
  3 +import com.bsth.entity.schedule.rule.ScheduleRule1Flat;
  4 +import com.bsth.service.BaseService;
  5 +
  6 +/**
  7 + * Created by xu on 16/7/4.
  8 + */
  9 +public interface ScheduleRule1FlatService extends BaseService<ScheduleRule1Flat, Long> {
  10 +}
... ...
src/main/java/com/bsth/service/schedule/ScheduleRule1FlatServiceImpl.java 0 → 100644
  1 +package com.bsth.service.schedule;
  2 +
  3 +import com.bsth.entity.schedule.rule.ScheduleRule1Flat;
  4 +import com.bsth.service.impl.BaseServiceImpl;
  5 +import org.springframework.stereotype.Service;
  6 +
  7 +/**
  8 + * Created by xu on 16/7/4.
  9 + */
  10 +@Service
  11 +public class ScheduleRule1FlatServiceImpl extends BaseServiceImpl<ScheduleRule1Flat, Long> implements ScheduleRule1FlatService {
  12 +}
... ...
src/main/java/com/bsth/service/schedule/TTInfoDetailService.java 0 → 100644
  1 +package com.bsth.service.schedule;
  2 +
  3 +import com.bsth.entity.schedule.TTInfoDetail;
  4 +import com.bsth.service.BaseService;
  5 +
  6 +/**
  7 + * Created by xu on 16/7/2.
  8 + */
  9 +public interface TTInfoDetailService extends BaseService<TTInfoDetail, Long> {
  10 +}
... ...
src/main/java/com/bsth/service/schedule/TTInfoDetailServiceImpl.java 0 → 100644
  1 +package com.bsth.service.schedule;
  2 +
  3 +import com.bsth.entity.schedule.TTInfoDetail;
  4 +import com.bsth.service.impl.BaseServiceImpl;
  5 +import com.bsth.service.schedule.utils.DataImportExportService;
  6 +import com.bsth.service.schedule.utils.DataToolsProperties;
  7 +import jxl.Sheet;
  8 +import jxl.Workbook;
  9 +import org.apache.commons.lang3.StringUtils;
  10 +import org.pentaho.di.trans.Trans;
  11 +import org.pentaho.di.trans.TransMeta;
  12 +import org.springframework.beans.factory.annotation.Autowired;
  13 +import org.springframework.boot.context.properties.EnableConfigurationProperties;
  14 +import org.springframework.stereotype.Service;
  15 +import org.springframework.web.multipart.MultipartFile;
  16 +
  17 +import java.io.File;
  18 +import java.util.ArrayList;
  19 +import java.util.List;
  20 +
  21 +/**
  22 + * Created by xu on 16/7/2.
  23 + */
  24 +@Service
  25 +@EnableConfigurationProperties(DataToolsProperties.class)
  26 +public class TTInfoDetailServiceImpl extends BaseServiceImpl<TTInfoDetail, Long> implements TTInfoDetailService {
  27 + @Autowired
  28 + private DataImportExportService dataImportExportService;
  29 + @Autowired
  30 + private DataToolsProperties dataToolsProperties;
  31 +
  32 + /**
  33 + * 上传并导入数据,和DataImportExportService的同名方法有差别。
  34 + * @param datafile form上传文件
  35 + * @param xlmc 线路名称
  36 + * @param ttinfoname 时刻表名字
  37 + * @param tccname 停车场名字
  38 + * @throws Exception
  39 + */
  40 + public void fileDataImport(MultipartFile datafile,
  41 + String xlmc,
  42 + String ttinfoname,
  43 + String tccname) throws Exception {
  44 + // 1、上传数据文件
  45 + File uploadFile = dataImportExportService.uploadFile(datafile);
  46 +
  47 + System.out.println("线路名称:" + xlmc);
  48 + System.out.println("时刻表名称:" + ttinfoname);
  49 + System.out.println("停车场名字:" + tccname);
  50 + System.out.println("时刻表明细上传文件:" + uploadFile);
  51 +
  52 + // 2、jexcelapi读取excel文件
  53 + Workbook book = Workbook.getWorkbook(uploadFile);
  54 + Sheet sheet = book.getSheet(0);
  55 + List<String> columnames = new ArrayList<>();
  56 + for (int i = 0; i < sheet.getColumns(); i++) { // 获取第一行,数据,作为列名
  57 + columnames.add(sheet.getCell(i, 0).getContents());
  58 + }
  59 +
  60 + System.out.println("表头1:" + StringUtils.join(columnames.toArray(), ","));
  61 +
  62 + // 2、使用kettle运行封装数据导入逻辑的ktr转换文件
  63 + // 2.1、初始化kettle(组件初始化已经做了)
  64 + // 2.2、创建转换元数据,转换
  65 + File ktrFile = new File(this.getClass().getResource(
  66 + dataToolsProperties.getTtinfodetailMetadatainputktr()).toURI());
  67 + File ktrFile2 = new File(this.getClass().getResource(
  68 + dataToolsProperties.getTtinfodetailDatainputktr()).toURI());
  69 + TransMeta transMeta = new TransMeta(ktrFile.getAbsolutePath());
  70 + Trans trans = new Trans(transMeta);
  71 + // 2.3、设定命名参数,用于指定数据文件,注意每个ktr必须都有以下指定的命名参数
  72 + trans.setParameterValue("injectktrfile", ktrFile2.getAbsolutePath()); // 注入元数据的ktr文件
  73 + trans.setParameterValue("filepath", uploadFile.getAbsolutePath()); // 指定导入数据文件的位置
  74 + trans.setParameterValue("erroroutputdir", dataToolsProperties.getTransErrordir()); // ktr转换错误输出目录
  75 + trans.setParameterValue("xlname", xlmc); // 线路名称
  76 + trans.setParameterValue("ttinfoname", ttinfoname); // 时刻表名称
  77 + trans.setParameterValue("tccname", tccname); // 停车场名字
  78 + trans.setParameterValue("excelfieldnames", StringUtils.join(columnames.toArray(), ",")); // 时刻表excel输入字段名,以逗号连接
  79 + columnames.remove(0);
  80 + trans.setParameterValue("normalizefieldnames", StringUtils.join(columnames.toArray(), ",")); // 数据范式化字段名,以逗号连接
  81 +
  82 + // TODO:可以考虑设定日志输出
  83 + // 2.4、执行转换
  84 + trans.execute(null);
  85 + // 2.5、等待转换结束
  86 + trans.waitUntilFinished();
  87 +
  88 + // 3、判定ktr错误数,注意这种错误代表部分数据错误,不会终止转换执行,一般设计ktr的时候,会有错误输出文件,TODO:以后考虑使用日志实时输出
  89 + if (trans.getErrors() > 0) {
  90 + throw new Exception("转换数据部分错误,请查看相关错误输出文件!");
  91 + }
  92 + }
  93 +}
... ...
src/main/java/com/bsth/service/schedule/utils/DataImportExportServiceImpl.java
1 1 package com.bsth.service.schedule.utils;
2 2  
3 3 import com.google.common.io.Files;
4   -import org.pentaho.di.core.KettleEnvironment;
5   -import org.pentaho.di.core.util.EnvUtil;
6 4 import org.pentaho.di.trans.Trans;
7 5 import org.pentaho.di.trans.TransMeta;
  6 +import org.springframework.beans.factory.InitializingBean;
8 7 import org.springframework.beans.factory.annotation.Autowired;
9 8 import org.springframework.boot.context.properties.EnableConfigurationProperties;
10 9 import org.springframework.stereotype.Service;
... ... @@ -17,18 +16,33 @@ import java.io.File;
17 16 */
18 17 @Service
19 18 @EnableConfigurationProperties(DataToolsProperties.class)
20   -public class DataImportExportServiceImpl implements DataImportExportService {
  19 +public class DataImportExportServiceImpl implements DataImportExportService, InitializingBean {
21 20  
22 21 @Autowired
23 22 private DataToolsProperties dataToolsProperties;
24 23  
25 24 @Override
  25 + public void afterPropertiesSet() throws Exception {
  26 + // TODO:有可能会报错,待会儿再改
  27 +// // 初始化kettle环境
  28 +// EnvUtil.environmentInit();
  29 +// // 添加全局ktr变量,并覆盖原来的设置
  30 +// Map<String, String> kvars = new HashMap<>();
  31 +// kvars.put("v_db_ip", dataToolsProperties.getKvarsDbip());
  32 +// kvars.put("v_db_uname", dataToolsProperties.getKvarsDbuname());
  33 +// kvars.put("v_db_pwd", dataToolsProperties.getKvarsDbpwd());
  34 +// EnvUtil.applyKettleProperties(kvars, true);
  35 +// KettleEnvironment.init();
  36 + }
  37 +
  38 + @Override
26 39 public File uploadFile(MultipartFile file) throws Exception {
27 40 // TODO:以后的文件名要加时间戳
28 41 File newFile = new File(
29 42 dataToolsProperties.getFileuploadDir() + File.separator +
30 43 file.getOriginalFilename());
31 44 Files.write(file.getBytes(), newFile);
  45 +
32 46 return newFile;
33 47 }
34 48  
... ... @@ -38,9 +52,7 @@ public class DataImportExportServiceImpl implements DataImportExportService {
38 52 File uploadFile = uploadFile(datafile);
39 53  
40 54 // 2、使用kettle运行封装数据导入逻辑的ktr转换文件
41   - // 2.1、初始化kettle
42   - EnvUtil.environmentInit();
43   - KettleEnvironment.init();
  55 + // 2.1、初始化kettle(组件初始化已经做了)
44 56 // 2.2、创建转换元数据,转换
45 57 TransMeta transMeta = new TransMeta(ktrFile.getAbsolutePath());
46 58 Trans trans = new Trans(transMeta);
... ...
src/main/java/com/bsth/service/schedule/utils/DataToolsProperties.java
1   -package com.bsth.service.schedule.utils;
2   -
3   -import org.springframework.boot.context.properties.ConfigurationProperties;
4   -
5   -import javax.validation.constraints.NotNull;
6   -
7   -/**
8   - * 配置数据导入导出用到的配置信息
9   - */
10   -@ConfigurationProperties(
11   - locations = "classpath:datatools/config.properties",
12   - ignoreInvalidFields = true,
13   - prefix = "datatools"
14   -)
15   -public class DataToolsProperties {
16   -
17   - /** 上传文件目录配置(根据不同的环境需要修正) */
18   - @NotNull
19   - private String fileuploadDir;
20   -
21   - /** ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正) */
22   - @NotNull
23   - private String transErrordir;
24   -
25   - /** 测试temp的ktr转换文件 */
26   - @NotNull
27   - private String tempDatainputktr;
28   - /** 车辆信息导入ktr转换 */
29   - @NotNull
30   - private String carsDatainputktr;
31   - /** 人员信息导入ktr转换 */
32   - @NotNull
33   - private String employeesDatainputktr;
34   - /** 车辆配置信息导入 */
35   - @NotNull
36   - private String carsconfigDatainputktr;
37   - /** 人员配置信息导入 */
38   - @NotNull
39   - private String employeesconfigDatainputktr;
40   - /** 路牌信息导入 */
41   - @NotNull
42   - private String guideboardsDatainputktr;
43   - /** 时刻表基础信息导入 */
44   - @NotNull
45   - private String ttinfoDatainputktr;
46   -
47   - // TODO:
48   -
49   - public String getFileuploadDir() {
50   - return fileuploadDir;
51   - }
52   -
53   - public void setFileuploadDir(String fileuploadDir) {
54   - this.fileuploadDir = fileuploadDir;
55   - }
56   -
57   - public String getTransErrordir() {
58   - return transErrordir;
59   - }
60   -
61   - public void setTransErrordir(String transErrordir) {
62   - this.transErrordir = transErrordir;
63   - }
64   -
65   - public String getTempDatainputktr() {
66   - return tempDatainputktr;
67   - }
68   -
69   - public void setTempDatainputktr(String tempDatainputktr) {
70   - this.tempDatainputktr = tempDatainputktr;
71   - }
72   -
73   - public String getCarsDatainputktr() {
74   - return carsDatainputktr;
75   - }
76   -
77   - public void setCarsDatainputktr(String carsDatainputktr) {
78   - this.carsDatainputktr = carsDatainputktr;
79   - }
80   -
81   - public String getEmployeesDatainputktr() {
82   - return employeesDatainputktr;
83   - }
84   -
85   - public void setEmployeesDatainputktr(String employeesDatainputktr) {
86   - this.employeesDatainputktr = employeesDatainputktr;
87   - }
88   -
89   - public String getCarsconfigDatainputktr() {
90   - return carsconfigDatainputktr;
91   - }
92   -
93   - public void setCarsconfigDatainputktr(String carsconfigDatainputktr) {
94   - this.carsconfigDatainputktr = carsconfigDatainputktr;
95   - }
96   -
97   - public String getEmployeesconfigDatainputktr() {
98   - return employeesconfigDatainputktr;
99   - }
100   -
101   - public void setEmployeesconfigDatainputktr(String employeesconfigDatainputktr) {
102   - this.employeesconfigDatainputktr = employeesconfigDatainputktr;
103   - }
104   -
105   - public String getGuideboardsDatainputktr() {
106   - return guideboardsDatainputktr;
107   - }
108   -
109   - public void setGuideboardsDatainputktr(String guideboardsDatainputktr) {
110   - this.guideboardsDatainputktr = guideboardsDatainputktr;
111   - }
112   -
113   - public String getTtinfoDatainputktr() {
114   - return ttinfoDatainputktr;
115   - }
116   -
117   - public void setTtinfoDatainputktr(String ttinfoDatainputktr) {
118   - this.ttinfoDatainputktr = ttinfoDatainputktr;
119   - }
120   -}
  1 +package com.bsth.service.schedule.utils;
  2 +
  3 +import org.springframework.boot.context.properties.ConfigurationProperties;
  4 +
  5 +import javax.validation.constraints.NotNull;
  6 +
  7 +/**
  8 + * 配置数据导入导出用到的配置信息
  9 + */
  10 +@ConfigurationProperties(
  11 + locations = "classpath:datatools/config.properties",
  12 + ignoreInvalidFields = true,
  13 + prefix = "datatools"
  14 +)
  15 +public class DataToolsProperties {
  16 +
  17 + /** 上传文件目录配置(根据不同的环境需要修正) */
  18 + @NotNull
  19 + private String fileuploadDir;
  20 +
  21 + /** ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正) */
  22 + @NotNull
  23 + private String transErrordir;
  24 +
  25 + /** ktr通用变量-数据库ip地址 */
  26 + @NotNull
  27 + private String kvarsDbip;
  28 + /** ktr通用变量-数据库用户名 */
  29 + @NotNull
  30 + private String kvarsDbuname;
  31 + /** ktr通用变量-数据库密码 */
  32 + @NotNull
  33 + private String kvarsDbpwd;
  34 +
  35 + /** 测试temp的ktr转换文件 */
  36 + @NotNull
  37 + private String tempDatainputktr;
  38 + /** 车辆信息导入ktr转换 */
  39 + @NotNull
  40 + private String carsDatainputktr;
  41 + /** 人员信息导入ktr转换 */
  42 + @NotNull
  43 + private String employeesDatainputktr;
  44 + /** 车辆配置信息导入 */
  45 + @NotNull
  46 + private String carsconfigDatainputktr;
  47 + /** 人员配置信息导入 */
  48 + @NotNull
  49 + private String employeesconfigDatainputktr;
  50 + /** 路牌信息导入 */
  51 + @NotNull
  52 + private String guideboardsDatainputktr;
  53 + /** 时刻表基础信息导入 */
  54 + @NotNull
  55 + private String ttinfoDatainputktr;
  56 + /** 时刻表明细信息导入(元数据) */
  57 + @NotNull
  58 + private String ttinfodetailMetadatainputktr;
  59 + /** 时刻表明细信息导入 */
  60 + @NotNull
  61 + private String ttinfodetailDatainputktr;
  62 +
  63 + // TODO:
  64 +
  65 + public String getFileuploadDir() {
  66 + return fileuploadDir;
  67 + }
  68 +
  69 + public void setFileuploadDir(String fileuploadDir) {
  70 + this.fileuploadDir = fileuploadDir;
  71 + }
  72 +
  73 + public String getTransErrordir() {
  74 + return transErrordir;
  75 + }
  76 +
  77 + public void setTransErrordir(String transErrordir) {
  78 + this.transErrordir = transErrordir;
  79 + }
  80 +
  81 + public String getTempDatainputktr() {
  82 + return tempDatainputktr;
  83 + }
  84 +
  85 + public void setTempDatainputktr(String tempDatainputktr) {
  86 + this.tempDatainputktr = tempDatainputktr;
  87 + }
  88 +
  89 + public String getCarsDatainputktr() {
  90 + return carsDatainputktr;
  91 + }
  92 +
  93 + public String getTtinfodetailMetadatainputktr() {
  94 + return ttinfodetailMetadatainputktr;
  95 + }
  96 +
  97 + public void setTtinfodetailMetadatainputktr(String ttinfodetailMetadatainputktr) {
  98 + this.ttinfodetailMetadatainputktr = ttinfodetailMetadatainputktr;
  99 + }
  100 +
  101 + public void setCarsDatainputktr(String carsDatainputktr) {
  102 + this.carsDatainputktr = carsDatainputktr;
  103 + }
  104 +
  105 + public String getEmployeesDatainputktr() {
  106 + return employeesDatainputktr;
  107 + }
  108 +
  109 + public void setEmployeesDatainputktr(String employeesDatainputktr) {
  110 + this.employeesDatainputktr = employeesDatainputktr;
  111 + }
  112 +
  113 + public String getCarsconfigDatainputktr() {
  114 + return carsconfigDatainputktr;
  115 + }
  116 +
  117 + public void setCarsconfigDatainputktr(String carsconfigDatainputktr) {
  118 + this.carsconfigDatainputktr = carsconfigDatainputktr;
  119 + }
  120 +
  121 + public String getEmployeesconfigDatainputktr() {
  122 + return employeesconfigDatainputktr;
  123 + }
  124 +
  125 + public void setEmployeesconfigDatainputktr(String employeesconfigDatainputktr) {
  126 + this.employeesconfigDatainputktr = employeesconfigDatainputktr;
  127 + }
  128 +
  129 + public String getGuideboardsDatainputktr() {
  130 + return guideboardsDatainputktr;
  131 + }
  132 +
  133 + public void setGuideboardsDatainputktr(String guideboardsDatainputktr) {
  134 + this.guideboardsDatainputktr = guideboardsDatainputktr;
  135 + }
  136 +
  137 + public String getTtinfoDatainputktr() {
  138 + return ttinfoDatainputktr;
  139 + }
  140 +
  141 + public String getKvarsDbip() {
  142 + return kvarsDbip;
  143 + }
  144 +
  145 + public void setKvarsDbip(String kvarsDbip) {
  146 + this.kvarsDbip = kvarsDbip;
  147 + }
  148 +
  149 + public String getKvarsDbuname() {
  150 + return kvarsDbuname;
  151 + }
  152 +
  153 + public void setKvarsDbuname(String kvarsDbuname) {
  154 + this.kvarsDbuname = kvarsDbuname;
  155 + }
  156 +
  157 + public String getKvarsDbpwd() {
  158 + return kvarsDbpwd;
  159 + }
  160 +
  161 + public void setKvarsDbpwd(String kvarsDbpwd) {
  162 + this.kvarsDbpwd = kvarsDbpwd;
  163 + }
  164 +
  165 + public void setTtinfoDatainputktr(String ttinfoDatainputktr) {
  166 + this.ttinfoDatainputktr = ttinfoDatainputktr;
  167 + }
  168 +
  169 + public String getTtinfodetailDatainputktr() {
  170 + return ttinfodetailDatainputktr;
  171 + }
  172 +
  173 + public void setTtinfodetailDatainputktr(String ttinfodetailDatainputktr) {
  174 + this.ttinfodetailDatainputktr = ttinfodetailDatainputktr;
  175 + }
  176 +}
... ...
src/main/java/com/bsth/util/Test.java 0 → 100644
  1 +package com.bsth.util;
  2 +
  3 +import java.io.File;
  4 +import java.io.FileInputStream;
  5 +import java.io.FileNotFoundException;
  6 +import java.io.FileOutputStream;
  7 +import java.io.IOException;
  8 +import java.util.zip.GZIPOutputStream;
  9 +
  10 +import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
  11 +import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream;
  12 +import org.apache.commons.compress.utils.IOUtils;
  13 +
  14 +public class Test {
  15 +
  16 +
  17 + /**
  18 + *
  19 + * @Title: pack
  20 + * @Description: 将一组文件打成tar包
  21 + * @param sources 要打包的原文件数组
  22 + * @param target 打包后的文件
  23 + * @return File 返回打包后的文件
  24 + * @throws
  25 + */
  26 + public static File pack(File[] sources, File target){
  27 + FileOutputStream out = null;
  28 + try {
  29 + out = new FileOutputStream(target);
  30 + } catch (FileNotFoundException e1) {
  31 + e1.printStackTrace();
  32 + }
  33 + TarArchiveOutputStream os = new TarArchiveOutputStream(out);
  34 + for (File file : sources) {
  35 + try {
  36 + os.putArchiveEntry(new TarArchiveEntry(file));
  37 + IOUtils.copy(new FileInputStream(file), os);
  38 + os.closeArchiveEntry();
  39 +
  40 + } catch (FileNotFoundException e) {
  41 + e.printStackTrace();
  42 + } catch (IOException e) {
  43 + e.printStackTrace();
  44 + }
  45 + }
  46 + if(os != null) {
  47 + try {
  48 + os.flush();
  49 + os.close();
  50 + } catch (IOException e) {
  51 + e.printStackTrace();
  52 + }
  53 + }
  54 +
  55 + return target;
  56 + }
  57 +
  58 + /**
  59 + *
  60 + * @Title: compress
  61 + * @Description: 将文件用gzip压缩
  62 + * @param source 需要压缩的文件
  63 + * @return File 返回压缩后的文件
  64 + * @throws
  65 + */
  66 + public static File compress(File source) {
  67 + File target = new File(source.getName() + ".gz");
  68 + FileInputStream in = null;
  69 + GZIPOutputStream out = null;
  70 + try {
  71 + in = new FileInputStream(source);
  72 + out = new GZIPOutputStream(new FileOutputStream(target));
  73 + byte[] array = new byte[1024];
  74 + int number = -1;
  75 + while((number = in.read(array, 0, array.length)) != -1) {
  76 + out.write(array, 0, number);
  77 + }
  78 + } catch (FileNotFoundException e) {
  79 + e.printStackTrace();
  80 + return null;
  81 + } catch (IOException e) {
  82 + e.printStackTrace();
  83 + return null;
  84 + } finally {
  85 + if(in != null) {
  86 + try {
  87 + in.close();
  88 + } catch (IOException e) {
  89 + e.printStackTrace();
  90 + return null;
  91 + }
  92 + }
  93 +
  94 + if(out != null) {
  95 + try {
  96 + out.close();
  97 + } catch (IOException e) {
  98 + e.printStackTrace();
  99 + return null;
  100 + }
  101 + }
  102 + }
  103 + return target;
  104 + }
  105 +
  106 + public static void main(String[] args) {
  107 + File[] sources = new File[] {new File("D:/test.txt"), new File("D:/test1.txt")};
  108 + File target = new File("release_package.tar");
  109 + File gzFile = compress(pack(sources, target));
  110 + }
  111 +}
... ...
src/main/resources/datatools/config.properties
1   -# 配置数据导入导出用到的配置信息
2   -
3   -# 上传文件目录配置(根据不同的环境需要修正)
4   -datatools.fileupload_dir=/Users/xu/resource/project/bsth_control_u_d_files
5   -# ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正)
6   -datatools.trans_errordir=/Users/xu/resource/project/bsth_control_u_d_files/erroroutput
7   -
8   -# 以下是封装数据导入导出逻辑的ktr转换文件,类路径,以后考虑放到数据库中
9   -# 测试temp的ktr转换文件
10   -datatools.temp_datainputktr=/datatools/ktrs/test.ktr
11   -# 车辆信息导入ktr转换
12   -datatools.cars_datainputktr=/datatools/ktrs/carsDataInput.ktr
13   -# 人员信息导入
14   -datatools.employees_datainputktr=/datatools/ktrs/employeesDataInput.ktr
15   -# 路牌信息导入
16   -datatools.guideboards_datainputktr=/datatools/ktrs/guideboardDataInput.ktr
17   -# 时刻表基础信息导入
18   -datatools.ttinfo_datainputktr=/datatools/ktrs/ttinfoDataInput.ktr
19   -# 时刻表明细信息导入
20   -
21   -# 车辆配置信息导入
22   -datatools.carsconfig_datainputktr=/datatools/ktrs/carsConfigDataInput.ktr
23   -# 人员配置信息导入
24   -datatools.employeesconfig_datainputktr=/datatools/ktrs/employeesConfigDataInput.ktr
25   -
  1 +# 配置数据导入导出用到的配置信息
  2 +
  3 +# 上传文件目录配置(根据不同的环境需要修正)
  4 +datatools.fileupload_dir=/Users/xu/resource/project/bsth_control_u_d_files
  5 +# ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正)
  6 +datatools.trans_errordir=/Users/xu/resource/project/bsth_control_u_d_files/erroroutput
  7 +
  8 +##------------------ ktr通用变量 ------------------
  9 +#数据库ip地址
  10 +datatools.kvars_dbip=localhost
  11 +#数据库用户名
  12 +datatools.kvars_dbuname=root
  13 +#数据库密码
  14 +datatools.kvars_dbpwd=
  15 +
  16 +# 以下是封装数据导入导出逻辑的ktr转换文件,类路径,以后考虑放到数据库中
  17 +# 测试temp的ktr转换文件
  18 +datatools.temp_datainputktr=/datatools/ktrs/test.ktr
  19 +# 车辆信息导入ktr转换
  20 +datatools.cars_datainputktr=/datatools/ktrs/carsDataInput.ktr
  21 +# 人员信息导入
  22 +datatools.employees_datainputktr=/datatools/ktrs/employeesDataInput.ktr
  23 +# 路牌信息导入
  24 +datatools.guideboards_datainputktr=/datatools/ktrs/guideboardDataInput.ktr
  25 +# 时刻表基础信息导入
  26 +datatools.ttinfo_datainputktr=/datatools/ktrs/ttinfoDataInput.ktr
  27 +# 时刻表明细信息导入(元数据)
  28 +datatools.ttinfodetail_metadatainputktr=/datatools/ktrs/ttinfodetailMetaData.ktr
  29 +# 时刻表明细信息导入
  30 +datatools.ttinfodetail_datainputktr=/datatools/ktrs/ttinfodetailDataInput.ktr
  31 +
  32 +# 车辆配置信息导入
  33 +datatools.carsconfig_datainputktr=/datatools/ktrs/carsConfigDataInput.ktr
  34 +# 人员配置信息导入
  35 +datatools.employeesconfig_datainputktr=/datatools/ktrs/employeesConfigDataInput.ktr
  36 +
26 37 # 排班规则信息导入
27 38 \ No newline at end of file
... ...
src/main/resources/datatools/ktrs/carsConfigDataInput.ktr
1   -<?xml version="1.0" encoding="UTF-8"?>
2   -<transformation>
3   - <info>
4   - <name>carsConfigDataInput</name>
5   - <description>&#x8f66;&#x8f86;&#x914d;&#x7f6e;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description>
6   - <extended_description>&#x914d;&#x8f66;&#x4fe1;&#x606f;</extended_description>
7   - <trans_version/>
8   - <trans_type>Normal</trans_type>
9   - <trans_status>0</trans_status>
10   - <directory>&#x2f;</directory>
11   - <parameters>
12   - <parameter>
13   - <name>erroroutputdir</name>
14   - <default_value/>
15   - <description>ktr step&#x914d;&#x7f6e;&#x7684;&#x9519;&#x8bef;&#x8f93;&#x51fa;&#x76ee;&#x5f55;</description>
16   - </parameter>
17   - <parameter>
18   - <name>filepath</name>
19   - <default_value/>
20   - <description>&#x5f85;&#x5904;&#x7406;&#x5bfc;&#x5165;&#x7684;excel&#x6587;&#x4ef6;</description>
21   - </parameter>
22   - </parameters>
23   - <log>
24   -<trans-log-table><connection/>
25   -<schema/>
26   -<table/>
27   -<size_limit_lines/>
28   -<interval/>
29   -<timeout_days/>
30   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table>
31   -<perf-log-table><connection/>
32   -<schema/>
33   -<table/>
34   -<interval/>
35   -<timeout_days/>
36   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table>
37   -<channel-log-table><connection/>
38   -<schema/>
39   -<table/>
40   -<timeout_days/>
41   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table>
42   -<step-log-table><connection/>
43   -<schema/>
44   -<table/>
45   -<timeout_days/>
46   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table>
47   -<metrics-log-table><connection/>
48   -<schema/>
49   -<table/>
50   -<timeout_days/>
51   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table>
52   - </log>
53   - <maxdate>
54   - <connection/>
55   - <table/>
56   - <field/>
57   - <offset>0.0</offset>
58   - <maxdiff>0.0</maxdiff>
59   - </maxdate>
60   - <size_rowset>10000</size_rowset>
61   - <sleep_time_empty>50</sleep_time_empty>
62   - <sleep_time_full>50</sleep_time_full>
63   - <unique_connections>N</unique_connections>
64   - <feedback_shown>Y</feedback_shown>
65   - <feedback_size>50000</feedback_size>
66   - <using_thread_priorities>Y</using_thread_priorities>
67   - <shared_objects_file/>
68   - <capture_step_performance>N</capture_step_performance>
69   - <step_performance_capturing_delay>1000</step_performance_capturing_delay>
70   - <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
71   - <dependencies>
72   - </dependencies>
73   - <partitionschemas>
74   - </partitionschemas>
75   - <slaveservers>
76   - </slaveservers>
77   - <clusterschemas>
78   - </clusterschemas>
79   - <created_user>-</created_user>
80   - <created_date>2016&#x2f;06&#x2f;29 13&#x3a;15&#x3a;32.118</created_date>
81   - <modified_user>-</modified_user>
82   - <modified_date>2016&#x2f;06&#x2f;29 13&#x3a;15&#x3a;32.118</modified_date>
83   - <key_for_session_key/>
84   - <is_key_private>N</is_key_private>
85   - </info>
86   - <notepads>
87   - <notepad>
88   - <note>&#x914d;&#x8f66;&#x5206;&#x5f53;&#x524d;&#x2f;&#x5386;&#x53f2;&#x2f;&#x8ba1;&#x5212;&#xff0c;&#x5386;&#x53f2;&#x914d;&#x8f66;&#x6709;&#x7ec8;&#x6b62;&#x65f6;&#x95f4;&#xff0c;&#x7136;&#x540e;&#x662f;&#x5426;&#x5207;&#x6362;&#x57fa;&#x672c;&#x90fd;&#x662f;1&#xa;&#x662f;&#x5426;&#x5207;&#x6362; &#x6682;&#x65f6;&#x4e0d;&#x77e5;&#x9053;&#x4ec0;&#x4e48;&#x610f;&#x601d;&#xff0c;&#x5f53;&#x524d;&#x914d;&#x8f66;&#x90fd;&#x8bbe;&#x7f6e;&#x4e3a;0&#xa;&#x7ec8;&#x6b62;&#x65f6;&#x95f4; &#x5f53;&#x524d;&#x914d;&#x8f66;&#x6ca1;&#x6709;&#x7ec8;&#x6b62;&#x65f6;&#x95f4;&#xff0c;&#x8fd9;&#x4e2a;&#x4f30;&#x8ba1;&#x8981;&#x4f5c;&#x4e3a;&#x67e5;&#x8be2;&#x6761;&#x4ef6;&#x7684;&#xa;&#x65e9;&#x73ed;&#x65f6;&#x95f4; &#x6ca1;&#x6709;&#x6682;&#x65f6;&#x7a7a;&#x7740;&#xa;&#x672b;&#x73ed;&#x65f6;&#x95f4; &#x6ca1;&#x6709;&#x6682;&#x65f6;&#x7a7a;&#x7740;</note>
89   - <xloc>260</xloc>
90   - <yloc>124</yloc>
91   - <width>391</width>
92   - <heigth>90</heigth>
93   - <fontname>YaHei Consolas Hybrid</fontname>
94   - <fontsize>12</fontsize>
95   - <fontbold>N</fontbold>
96   - <fontitalic>N</fontitalic>
97   - <fontcolorred>0</fontcolorred>
98   - <fontcolorgreen>0</fontcolorgreen>
99   - <fontcolorblue>0</fontcolorblue>
100   - <backgroundcolorred>255</backgroundcolorred>
101   - <backgroundcolorgreen>205</backgroundcolorgreen>
102   - <backgroundcolorblue>112</backgroundcolorblue>
103   - <bordercolorred>100</bordercolorred>
104   - <bordercolorgreen>100</bordercolorgreen>
105   - <bordercolorblue>100</bordercolorblue>
106   - <drawshadow>Y</drawshadow>
107   - </notepad>
108   - </notepads>
109   - <connection>
110   - <name>bus_control_&#x516c;&#x53f8;_201</name>
111   - <server>192.168.168.201</server>
112   - <type>MYSQL</type>
113   - <access>Native</access>
114   - <database>control</database>
115   - <port>3306</port>
116   - <username>root</username>
117   - <password>Encrypted 2be98afc86aa7f2e4cb79ff228dc6fa8c</password>
118   - <servername/>
119   - <data_tablespace/>
120   - <index_tablespace/>
121   - <attributes>
122   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
123   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
124   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
125   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
126   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
127   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
128   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
129   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
130   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
131   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
132   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
133   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
134   - </attributes>
135   - </connection>
136   - <connection>
137   - <name>xlab_mysql_youle</name>
138   - <server>101.231.124.8</server>
139   - <type>MYSQL</type>
140   - <access>Native</access>
141   - <database>xlab_youle</database>
142   - <port>45687</port>
143   - <username>xlab-youle</username>
144   - <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
145   - <servername/>
146   - <data_tablespace/>
147   - <index_tablespace/>
148   - <attributes>
149   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
150   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
151   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
152   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
153   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
154   - <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
155   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
156   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
157   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
158   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
159   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
160   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
161   - </attributes>
162   - </connection>
163   - <connection>
164   - <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
165   - <server>localhost</server>
166   - <type>MYSQL</type>
167   - <access>Native</access>
168   - <database>xlab_youle</database>
169   - <port>3306</port>
170   - <username>root</username>
171   - <password>Encrypted </password>
172   - <servername/>
173   - <data_tablespace/>
174   - <index_tablespace/>
175   - <attributes>
176   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
177   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
178   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
179   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
180   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
181   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
182   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
183   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
184   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
185   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
186   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
187   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
188   - </attributes>
189   - </connection>
190   - <connection>
191   - <name>xlab_youle</name>
192   - <server/>
193   - <type>MYSQL</type>
194   - <access>JNDI</access>
195   - <database>xlab_youle</database>
196   - <port>1521</port>
197   - <username/>
198   - <password>Encrypted </password>
199   - <servername/>
200   - <data_tablespace/>
201   - <index_tablespace/>
202   - <attributes>
203   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
204   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
205   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
206   - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
207   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
208   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
209   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
210   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
211   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
212   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
213   - </attributes>
214   - </connection>
215   - <order>
216   - <hop> <from>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
217   - <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
218   - <hop> <from>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ccinfo</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
219   - <hop> <from>&#x662f;&#x5426;&#x5207;&#x6362;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ccinfo</to><enabled>Y</enabled> </hop>
220   - <hop> <from>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</from><to>&#x67e5;&#x627e;&#x8f66;&#x8f86;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
221   - <hop> <from>&#x67e5;&#x627e;&#x8f66;&#x8f86;&#x5173;&#x8054;</from><to>&#x662f;&#x5426;&#x5207;&#x6362;</to><enabled>Y</enabled> </hop>
222   - <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>
223   - </order>
224   - <step>
225   - <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name>
226   - <type>ExcelInput</type>
227   - <description/>
228   - <distribute>Y</distribute>
229   - <custom_distribution/>
230   - <copies>1</copies>
231   - <partitioning>
232   - <method>none</method>
233   - <schema_name/>
234   - </partitioning>
235   - <header>Y</header>
236   - <noempty>Y</noempty>
237   - <stoponempty>N</stoponempty>
238   - <filefield/>
239   - <sheetfield/>
240   - <sheetrownumfield/>
241   - <rownumfield/>
242   - <sheetfield/>
243   - <filefield/>
244   - <limit>0</limit>
245   - <encoding/>
246   - <add_to_result_filenames>Y</add_to_result_filenames>
247   - <accept_filenames>Y</accept_filenames>
248   - <accept_field>filepath_</accept_field>
249   - <accept_stepname>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</accept_stepname>
250   - <file>
251   - <name/>
252   - <filemask/>
253   - <exclude_filemask/>
254   - <file_required>N</file_required>
255   - <include_subfolders>N</include_subfolders>
256   - </file>
257   - <fields>
258   - <field>
259   - <name>&#x7ebf;&#x8def;</name>
260   - <type>String</type>
261   - <length>-1</length>
262   - <precision>-1</precision>
263   - <trim_type>none</trim_type>
264   - <repeat>N</repeat>
265   - <format/>
266   - <currency/>
267   - <decimal/>
268   - <group/>
269   - </field>
270   - <field>
271   - <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
272   - <type>String</type>
273   - <length>-1</length>
274   - <precision>-1</precision>
275   - <trim_type>none</trim_type>
276   - <repeat>N</repeat>
277   - <format/>
278   - <currency/>
279   - <decimal/>
280   - <group/>
281   - </field>
282   - <field>
283   - <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
284   - <type>String</type>
285   - <length>-1</length>
286   - <precision>-1</precision>
287   - <trim_type>none</trim_type>
288   - <repeat>N</repeat>
289   - <format/>
290   - <currency/>
291   - <decimal/>
292   - <group/>
293   - </field>
294   - <field>
295   - <name>&#x7ec8;&#x7ed3;&#x65e5;&#x671f;</name>
296   - <type>String</type>
297   - <length>-1</length>
298   - <precision>-1</precision>
299   - <trim_type>none</trim_type>
300   - <repeat>N</repeat>
301   - <format/>
302   - <currency/>
303   - <decimal/>
304   - <group/>
305   - </field>
306   - <field>
307   - <name>&#x505c;&#x8f66;&#x70b9;</name>
308   - <type>String</type>
309   - <length>-1</length>
310   - <precision>-1</precision>
311   - <trim_type>none</trim_type>
312   - <repeat>N</repeat>
313   - <format/>
314   - <currency/>
315   - <decimal/>
316   - <group/>
317   - </field>
318   - </fields>
319   - <sheets>
320   - <sheet>
321   - <name>&#x5de5;&#x4f5c;&#x8868;1</name>
322   - <startrow>0</startrow>
323   - <startcol>0</startcol>
324   - </sheet>
325   - </sheets>
326   - <strict_types>N</strict_types>
327   - <error_ignored>N</error_ignored>
328   - <error_line_skipped>N</error_line_skipped>
329   - <bad_line_files_destination_directory/>
330   - <bad_line_files_extension>warning</bad_line_files_extension>
331   - <error_line_files_destination_directory/>
332   - <error_line_files_extension>error</error_line_files_extension>
333   - <line_number_files_destination_directory/>
334   - <line_number_files_extension>line</line_number_files_extension>
335   - <shortFileFieldName/>
336   - <pathFieldName/>
337   - <hiddenFieldName/>
338   - <lastModificationTimeFieldName/>
339   - <uriNameFieldName/>
340   - <rootUriNameFieldName/>
341   - <extensionFieldName/>
342   - <sizeFieldName/>
343   - <spreadsheet_type>JXL</spreadsheet_type>
344   - <cluster_schema/>
345   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
346   - <xloc>155</xloc>
347   - <yloc>56</yloc>
348   - <draw>Y</draw>
349   - </GUI>
350   - </step>
351   -
352   - <step>
353   - <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
354   - <type>SelectValues</type>
355   - <description/>
356   - <distribute>Y</distribute>
357   - <custom_distribution/>
358   - <copies>1</copies>
359   - <partitioning>
360   - <method>none</method>
361   - <schema_name/>
362   - </partitioning>
363   - <fields> <field> <name>&#x7ebf;&#x8def;</name>
364   - <rename>xl</rename>
365   - <length>-2</length>
366   - <precision>-2</precision>
367   - </field> <field> <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
368   - <rename>cl</rename>
369   - <length>-2</length>
370   - <precision>-2</precision>
371   - </field> <field> <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
372   - <rename>qyrq</rename>
373   - <length>-2</length>
374   - <precision>-2</precision>
375   - </field> <field> <name>&#x7ec8;&#x7ed3;&#x65e5;&#x671f;</name>
376   - <rename>zzrq</rename>
377   - <length>-2</length>
378   - <precision>-2</precision>
379   - </field> <field> <name>&#x505c;&#x8f66;&#x70b9;</name>
380   - <rename>tcd</rename>
381   - <length>-2</length>
382   - <precision>-2</precision>
383   - </field> <select_unspecified>N</select_unspecified>
384   - </fields> <cluster_schema/>
385   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
386   - <xloc>306</xloc>
387   - <yloc>56</yloc>
388   - <draw>Y</draw>
389   - </GUI>
390   - </step>
391   -
392   - <step>
393   - <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ccinfo</name>
394   - <type>InsertUpdate</type>
395   - <description/>
396   - <distribute>Y</distribute>
397   - <custom_distribution/>
398   - <copies>1</copies>
399   - <partitioning>
400   - <method>none</method>
401   - <schema_name/>
402   - </partitioning>
403   - <connection>bus_control_&#x516c;&#x53f8;_201</connection>
404   - <commit>100</commit>
405   - <update_bypassed>N</update_bypassed>
406   - <lookup>
407   - <schema/>
408   - <table>bsth_c_s_ccinfo</table>
409   - <key>
410   - <name>xlId</name>
411   - <field>xl</field>
412   - <condition>&#x3d;</condition>
413   - <name2/>
414   - </key>
415   - <key>
416   - <name>clId</name>
417   - <field>cl</field>
418   - <condition>&#x3d;</condition>
419   - <name2/>
420   - </key>
421   - <value>
422   - <name>xl</name>
423   - <rename>xlId</rename>
424   - <update>Y</update>
425   - </value>
426   - <value>
427   - <name>cl</name>
428   - <rename>clId</rename>
429   - <update>Y</update>
430   - </value>
431   - <value>
432   - <name>is_switch</name>
433   - <rename>isswitch</rename>
434   - <update>Y</update>
435   - </value>
436   - <value>
437   - <name>tcd</name>
438   - <rename>tcd</rename>
439   - <update>Y</update>
440   - </value>
441   - <value>
442   - <name>zzrq</name>
443   - <rename>zzrq</rename>
444   - <update>Y</update>
445   - </value>
446   - <value>
447   - <name>qyrq</name>
448   - <rename>qyrq</rename>
449   - <update>Y</update>
450   - </value>
451   - </lookup>
452   - <cluster_schema/>
453   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
454   - <xloc>715</xloc>
455   - <yloc>197</yloc>
456   - <draw>Y</draw>
457   - </GUI>
458   - </step>
459   -
460   - <step>
461   - <name>&#x662f;&#x5426;&#x5207;&#x6362;</name>
462   - <type>Constant</type>
463   - <description/>
464   - <distribute>Y</distribute>
465   - <custom_distribution/>
466   - <copies>1</copies>
467   - <partitioning>
468   - <method>none</method>
469   - <schema_name/>
470   - </partitioning>
471   - <fields>
472   - <field>
473   - <name>isswitch</name>
474   - <type>Integer</type>
475   - <format/>
476   - <currency/>
477   - <decimal/>
478   - <group/>
479   - <nullif>0</nullif>
480   - <length>-1</length>
481   - <precision>-1</precision>
482   - <set_empty_string>N</set_empty_string>
483   - </field>
484   - </fields>
485   - <cluster_schema/>
486   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
487   - <xloc>713</xloc>
488   - <yloc>54</yloc>
489   - <draw>Y</draw>
490   - </GUI>
491   - </step>
492   -
493   - <step>
494   - <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</name>
495   - <type>DBLookup</type>
496   - <description/>
497   - <distribute>Y</distribute>
498   - <custom_distribution/>
499   - <copies>1</copies>
500   - <partitioning>
501   - <method>none</method>
502   - <schema_name/>
503   - </partitioning>
504   - <connection>bus_control_&#x516c;&#x53f8;_201</connection>
505   - <cache>N</cache>
506   - <cache_load_all>N</cache_load_all>
507   - <cache_size>0</cache_size>
508   - <lookup>
509   - <schema/>
510   - <table>bsth_c_line</table>
511   - <orderby/>
512   - <fail_on_multiple>N</fail_on_multiple>
513   - <eat_row_on_failure>N</eat_row_on_failure>
514   - <key>
515   - <name>xl</name>
516   - <field>name</field>
517   - <condition>&#x3d;</condition>
518   - <name2/>
519   - </key>
520   - <value>
521   - <name>id</name>
522   - <rename>xlId</rename>
523   - <default/>
524   - <type>Integer</type>
525   - </value>
526   - </lookup>
527   - <cluster_schema/>
528   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
529   - <xloc>439</xloc>
530   - <yloc>56</yloc>
531   - <draw>Y</draw>
532   - </GUI>
533   - </step>
534   -
535   - <step>
536   - <name>&#x67e5;&#x627e;&#x8f66;&#x8f86;&#x5173;&#x8054;</name>
537   - <type>DBLookup</type>
538   - <description/>
539   - <distribute>Y</distribute>
540   - <custom_distribution/>
541   - <copies>1</copies>
542   - <partitioning>
543   - <method>none</method>
544   - <schema_name/>
545   - </partitioning>
546   - <connection>bus_control_&#x516c;&#x53f8;_201</connection>
547   - <cache>N</cache>
548   - <cache_load_all>N</cache_load_all>
549   - <cache_size>0</cache_size>
550   - <lookup>
551   - <schema/>
552   - <table>bsth_c_cars</table>
553   - <orderby/>
554   - <fail_on_multiple>N</fail_on_multiple>
555   - <eat_row_on_failure>N</eat_row_on_failure>
556   - <key>
557   - <name>cl</name>
558   - <field>inside_code</field>
559   - <condition>&#x3d;</condition>
560   - <name2/>
561   - </key>
562   - <value>
563   - <name>id</name>
564   - <rename>clId</rename>
565   - <default/>
566   - <type>Integer</type>
567   - </value>
568   - </lookup>
569   - <cluster_schema/>
570   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
571   - <xloc>579</xloc>
572   - <yloc>55</yloc>
573   - <draw>Y</draw>
574   - </GUI>
575   - </step>
576   -
577   - <step>
578   - <name>&#x9519;&#x8bef;&#x8f93;&#x51fa;</name>
579   - <type>ExcelOutput</type>
580   - <description/>
581   - <distribute>Y</distribute>
582   - <custom_distribution/>
583   - <copies>1</copies>
584   - <partitioning>
585   - <method>none</method>
586   - <schema_name/>
587   - </partitioning>
588   - <header>Y</header>
589   - <footer>N</footer>
590   - <encoding>UTF-8</encoding>
591   - <append>N</append>
592   - <add_to_result_filenames>Y</add_to_result_filenames>
593   - <file>
594   - <name>&#x24;&#x7b;erroroutputdir&#x7d;&#x2f;&#x5f53;&#x524d;&#x914d;&#x8f66;_&#x9519;&#x8bef;</name>
595   - <extention>xls</extention>
596   - <do_not_open_newfile_init>N</do_not_open_newfile_init>
597   - <create_parent_folder>N</create_parent_folder>
598   - <split>N</split>
599   - <add_date>N</add_date>
600   - <add_time>N</add_time>
601   - <SpecifyFormat>N</SpecifyFormat>
602   - <date_time_format/>
603   - <sheetname>Sheet1</sheetname>
604   - <autosizecolums>N</autosizecolums>
605   - <nullisblank>N</nullisblank>
606   - <protect_sheet>N</protect_sheet>
607   - <password>Encrypted </password>
608   - <splitevery>0</splitevery>
609   - <usetempfiles>N</usetempfiles>
610   - <tempdirectory/>
611   - </file>
612   - <template>
613   - <enabled>N</enabled>
614   - <append>N</append>
615   - <filename>template.xls</filename>
616   - </template>
617   - <fields>
618   - <field>
619   - <name>xl</name>
620   - <type>String</type>
621   - <format/>
622   - </field>
623   - <field>
624   - <name>cl</name>
625   - <type>String</type>
626   - <format/>
627   - </field>
628   - <field>
629   - <name>qyrq</name>
630   - <type>String</type>
631   - <format/>
632   - </field>
633   - <field>
634   - <name>zzrq</name>
635   - <type>String</type>
636   - <format/>
637   - </field>
638   - <field>
639   - <name>tcd</name>
640   - <type>String</type>
641   - <format/>
642   - </field>
643   - <field>
644   - <name>xlId</name>
645   - <type>Integer</type>
646   - <format/>
647   - </field>
648   - <field>
649   - <name>clId</name>
650   - <type>Integer</type>
651   - <format/>
652   - </field>
653   - <field>
654   - <name>isswitch</name>
655   - <type>Integer</type>
656   - <format/>
657   - </field>
658   - <field>
659   - <name>error_count</name>
660   - <type>Integer</type>
661   - <format/>
662   - </field>
663   - <field>
664   - <name>error_desc</name>
665   - <type>String</type>
666   - <format/>
667   - </field>
668   - <field>
669   - <name>error_column1</name>
670   - <type>String</type>
671   - <format/>
672   - </field>
673   - <field>
674   - <name>error_column2</name>
675   - <type>String</type>
676   - <format/>
677   - </field>
678   - </fields>
679   - <custom>
680   - <header_font_name>arial</header_font_name>
681   - <header_font_size>10</header_font_size>
682   - <header_font_bold>N</header_font_bold>
683   - <header_font_italic>N</header_font_italic>
684   - <header_font_underline>no</header_font_underline>
685   - <header_font_orientation>horizontal</header_font_orientation>
686   - <header_font_color>black</header_font_color>
687   - <header_background_color>none</header_background_color>
688   - <header_row_height>255</header_row_height>
689   - <header_alignment>left</header_alignment>
690   - <header_image/>
691   - <row_font_name>arial</row_font_name>
692   - <row_font_size>10</row_font_size>
693   - <row_font_color>black</row_font_color>
694   - <row_background_color>none</row_background_color>
695   - </custom>
696   - <cluster_schema/>
697   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
698   - <xloc>718</xloc>
699   - <yloc>314</yloc>
700   - <draw>Y</draw>
701   - </GUI>
702   - </step>
703   -
704   - <step>
705   - <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>
706   - <type>GetVariable</type>
707   - <description/>
708   - <distribute>Y</distribute>
709   - <custom_distribution/>
710   - <copies>1</copies>
711   - <partitioning>
712   - <method>none</method>
713   - <schema_name/>
714   - </partitioning>
715   - <fields>
716   - <field>
717   - <name>filepath_</name>
718   - <variable>&#x24;&#x7b;filepath&#x7d;</variable>
719   - <type>String</type>
720   - <format/>
721   - <currency/>
722   - <decimal/>
723   - <group/>
724   - <length>-1</length>
725   - <precision>-1</precision>
726   - <trim_type>none</trim_type>
727   - </field>
728   - <field>
729   - <name>erroroutputdir_</name>
730   - <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
731   - <type>String</type>
732   - <format/>
733   - <currency/>
734   - <decimal/>
735   - <group/>
736   - <length>-1</length>
737   - <precision>-1</precision>
738   - <trim_type>none</trim_type>
739   - </field>
740   - </fields>
741   - <cluster_schema/>
742   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
743   - <xloc>156</xloc>
744   - <yloc>150</yloc>
745   - <draw>Y</draw>
746   - </GUI>
747   - </step>
748   -
749   - <step_error_handling>
750   - <error>
751   - <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ccinfo</source_step>
752   - <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa;</target_step>
753   - <is_enabled>Y</is_enabled>
754   - <nr_valuename>error_count</nr_valuename>
755   - <descriptions_valuename>error_desc</descriptions_valuename>
756   - <fields_valuename>error_column1</fields_valuename>
757   - <codes_valuename>error_column2</codes_valuename>
758   - <max_errors/>
759   - <max_pct_errors/>
760   - <min_pct_rows/>
761   - </error>
762   - </step_error_handling>
763   - <slave-step-copy-partition-distribution>
764   -</slave-step-copy-partition-distribution>
765   - <slave_transformation>N</slave_transformation>
766   -
767   -</transformation>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>carsConfigDataInput</name>
  5 + <description>&#x8f66;&#x8f86;&#x914d;&#x7f6e;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description>
  6 + <extended_description>&#x914d;&#x8f66;&#x4fe1;&#x606f;</extended_description>
  7 + <trans_version/>
  8 + <trans_type>Normal</trans_type>
  9 + <trans_status>0</trans_status>
  10 + <directory>&#x2f;</directory>
  11 + <parameters>
  12 + <parameter>
  13 + <name>erroroutputdir</name>
  14 + <default_value/>
  15 + <description>ktr step&#x914d;&#x7f6e;&#x7684;&#x9519;&#x8bef;&#x8f93;&#x51fa;&#x76ee;&#x5f55;</description>
  16 + </parameter>
  17 + <parameter>
  18 + <name>filepath</name>
  19 + <default_value/>
  20 + <description>&#x5f85;&#x5904;&#x7406;&#x5bfc;&#x5165;&#x7684;excel&#x6587;&#x4ef6;</description>
  21 + </parameter>
  22 + </parameters>
  23 + <log>
  24 +<trans-log-table><connection/>
  25 +<schema/>
  26 +<table/>
  27 +<size_limit_lines/>
  28 +<interval/>
  29 +<timeout_days/>
  30 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table>
  31 +<perf-log-table><connection/>
  32 +<schema/>
  33 +<table/>
  34 +<interval/>
  35 +<timeout_days/>
  36 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table>
  37 +<channel-log-table><connection/>
  38 +<schema/>
  39 +<table/>
  40 +<timeout_days/>
  41 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table>
  42 +<step-log-table><connection/>
  43 +<schema/>
  44 +<table/>
  45 +<timeout_days/>
  46 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table>
  47 +<metrics-log-table><connection/>
  48 +<schema/>
  49 +<table/>
  50 +<timeout_days/>
  51 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table>
  52 + </log>
  53 + <maxdate>
  54 + <connection/>
  55 + <table/>
  56 + <field/>
  57 + <offset>0.0</offset>
  58 + <maxdiff>0.0</maxdiff>
  59 + </maxdate>
  60 + <size_rowset>10000</size_rowset>
  61 + <sleep_time_empty>50</sleep_time_empty>
  62 + <sleep_time_full>50</sleep_time_full>
  63 + <unique_connections>N</unique_connections>
  64 + <feedback_shown>Y</feedback_shown>
  65 + <feedback_size>50000</feedback_size>
  66 + <using_thread_priorities>Y</using_thread_priorities>
  67 + <shared_objects_file/>
  68 + <capture_step_performance>N</capture_step_performance>
  69 + <step_performance_capturing_delay>1000</step_performance_capturing_delay>
  70 + <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
  71 + <dependencies>
  72 + </dependencies>
  73 + <partitionschemas>
  74 + </partitionschemas>
  75 + <slaveservers>
  76 + </slaveservers>
  77 + <clusterschemas>
  78 + </clusterschemas>
  79 + <created_user>-</created_user>
  80 + <created_date>2016&#x2f;06&#x2f;29 13&#x3a;15&#x3a;32.118</created_date>
  81 + <modified_user>-</modified_user>
  82 + <modified_date>2016&#x2f;06&#x2f;29 13&#x3a;15&#x3a;32.118</modified_date>
  83 + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
  84 + <is_key_private>N</is_key_private>
  85 + </info>
  86 + <notepads>
  87 + <notepad>
  88 + <note>&#x914d;&#x8f66;&#x5206;&#x5f53;&#x524d;&#x2f;&#x5386;&#x53f2;&#x2f;&#x8ba1;&#x5212;&#xff0c;&#x5386;&#x53f2;&#x914d;&#x8f66;&#x6709;&#x7ec8;&#x6b62;&#x65f6;&#x95f4;&#xff0c;&#x7136;&#x540e;&#x662f;&#x5426;&#x5207;&#x6362;&#x57fa;&#x672c;&#x90fd;&#x662f;1&#xa;&#x662f;&#x5426;&#x5207;&#x6362; &#x6682;&#x65f6;&#x4e0d;&#x77e5;&#x9053;&#x4ec0;&#x4e48;&#x610f;&#x601d;&#xff0c;&#x5f53;&#x524d;&#x914d;&#x8f66;&#x90fd;&#x8bbe;&#x7f6e;&#x4e3a;0&#xa;&#x7ec8;&#x6b62;&#x65f6;&#x95f4; &#x5f53;&#x524d;&#x914d;&#x8f66;&#x6ca1;&#x6709;&#x7ec8;&#x6b62;&#x65f6;&#x95f4;&#xff0c;&#x8fd9;&#x4e2a;&#x4f30;&#x8ba1;&#x8981;&#x4f5c;&#x4e3a;&#x67e5;&#x8be2;&#x6761;&#x4ef6;&#x7684;&#xa;&#x65e9;&#x73ed;&#x65f6;&#x95f4; &#x6ca1;&#x6709;&#x6682;&#x65f6;&#x7a7a;&#x7740;&#xa;&#x672b;&#x73ed;&#x65f6;&#x95f4; &#x6ca1;&#x6709;&#x6682;&#x65f6;&#x7a7a;&#x7740;</note>
  89 + <xloc>260</xloc>
  90 + <yloc>124</yloc>
  91 + <width>391</width>
  92 + <heigth>90</heigth>
  93 + <fontname>YaHei Consolas Hybrid</fontname>
  94 + <fontsize>12</fontsize>
  95 + <fontbold>N</fontbold>
  96 + <fontitalic>N</fontitalic>
  97 + <fontcolorred>0</fontcolorred>
  98 + <fontcolorgreen>0</fontcolorgreen>
  99 + <fontcolorblue>0</fontcolorblue>
  100 + <backgroundcolorred>255</backgroundcolorred>
  101 + <backgroundcolorgreen>205</backgroundcolorgreen>
  102 + <backgroundcolorblue>112</backgroundcolorblue>
  103 + <bordercolorred>100</bordercolorred>
  104 + <bordercolorgreen>100</bordercolorgreen>
  105 + <bordercolorblue>100</bordercolorblue>
  106 + <drawshadow>Y</drawshadow>
  107 + </notepad>
  108 + </notepads>
  109 + <connection>
  110 + <name>bus_control_variable</name>
  111 + <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
  112 + <type>MYSQL</type>
  113 + <access>Native</access>
  114 + <database>control</database>
  115 + <port>3306</port>
  116 + <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
  117 + <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
  118 + <servername/>
  119 + <data_tablespace/>
  120 + <index_tablespace/>
  121 + <attributes>
  122 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  123 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  124 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  125 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  126 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  127 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  128 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  129 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  130 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  131 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  132 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  133 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  134 + </attributes>
  135 + </connection>
  136 + <connection>
  137 + <name>bus_control_&#x516c;&#x53f8;_201</name>
  138 + <server>localhost</server>
  139 + <type>MYSQL</type>
  140 + <access>Native</access>
  141 + <database>control</database>
  142 + <port>3306</port>
  143 + <username>root</username>
  144 + <password>Encrypted </password>
  145 + <servername/>
  146 + <data_tablespace/>
  147 + <index_tablespace/>
  148 + <attributes>
  149 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  150 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  151 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  152 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  153 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  154 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  155 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  156 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  157 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  158 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  159 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  160 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  161 + </attributes>
  162 + </connection>
  163 + <connection>
  164 + <name>bus_control_&#x672c;&#x673a;</name>
  165 + <server>localhost</server>
  166 + <type>MYSQL</type>
  167 + <access>Native</access>
  168 + <database>control</database>
  169 + <port>3306</port>
  170 + <username>root</username>
  171 + <password>Encrypted </password>
  172 + <servername/>
  173 + <data_tablespace/>
  174 + <index_tablespace/>
  175 + <attributes>
  176 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  177 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  178 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  179 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  180 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  181 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  182 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  183 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  184 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  185 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  186 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  187 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  188 + </attributes>
  189 + </connection>
  190 + <connection>
  191 + <name>xlab_mysql_youle</name>
  192 + <server>101.231.124.8</server>
  193 + <type>MYSQL</type>
  194 + <access>Native</access>
  195 + <database>xlab_youle</database>
  196 + <port>45687</port>
  197 + <username>xlab-youle</username>
  198 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
  199 + <servername/>
  200 + <data_tablespace/>
  201 + <index_tablespace/>
  202 + <attributes>
  203 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  204 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  205 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  206 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  207 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  208 + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
  209 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  210 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  211 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  212 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  213 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  214 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  215 + </attributes>
  216 + </connection>
  217 + <connection>
  218 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  219 + <server>localhost</server>
  220 + <type>MYSQL</type>
  221 + <access>Native</access>
  222 + <database>xlab_youle</database>
  223 + <port>3306</port>
  224 + <username>root</username>
  225 + <password>Encrypted </password>
  226 + <servername/>
  227 + <data_tablespace/>
  228 + <index_tablespace/>
  229 + <attributes>
  230 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  231 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  232 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  233 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  234 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  235 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  236 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  237 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  238 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  239 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  240 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  241 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  242 + </attributes>
  243 + </connection>
  244 + <connection>
  245 + <name>xlab_youle</name>
  246 + <server/>
  247 + <type>MYSQL</type>
  248 + <access>JNDI</access>
  249 + <database>xlab_youle</database>
  250 + <port>1521</port>
  251 + <username/>
  252 + <password>Encrypted </password>
  253 + <servername/>
  254 + <data_tablespace/>
  255 + <index_tablespace/>
  256 + <attributes>
  257 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  258 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  259 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  260 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  261 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  262 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  263 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  264 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  265 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  266 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  267 + </attributes>
  268 + </connection>
  269 + <order>
  270 + <hop> <from>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
  271 + <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
  272 + <hop> <from>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ccinfo</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
  273 + <hop> <from>&#x662f;&#x5426;&#x5207;&#x6362;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ccinfo</to><enabled>Y</enabled> </hop>
  274 + <hop> <from>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</from><to>&#x67e5;&#x627e;&#x8f66;&#x8f86;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
  275 + <hop> <from>&#x67e5;&#x627e;&#x8f66;&#x8f86;&#x5173;&#x8054;</from><to>&#x662f;&#x5426;&#x5207;&#x6362;</to><enabled>Y</enabled> </hop>
  276 + <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>
  277 + </order>
  278 + <step>
  279 + <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name>
  280 + <type>ExcelInput</type>
  281 + <description/>
  282 + <distribute>Y</distribute>
  283 + <custom_distribution/>
  284 + <copies>1</copies>
  285 + <partitioning>
  286 + <method>none</method>
  287 + <schema_name/>
  288 + </partitioning>
  289 + <header>Y</header>
  290 + <noempty>Y</noempty>
  291 + <stoponempty>N</stoponempty>
  292 + <filefield/>
  293 + <sheetfield/>
  294 + <sheetrownumfield/>
  295 + <rownumfield/>
  296 + <sheetfield/>
  297 + <filefield/>
  298 + <limit>0</limit>
  299 + <encoding/>
  300 + <add_to_result_filenames>Y</add_to_result_filenames>
  301 + <accept_filenames>Y</accept_filenames>
  302 + <accept_field>filepath_</accept_field>
  303 + <accept_stepname>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</accept_stepname>
  304 + <file>
  305 + <name/>
  306 + <filemask/>
  307 + <exclude_filemask/>
  308 + <file_required>N</file_required>
  309 + <include_subfolders>N</include_subfolders>
  310 + </file>
  311 + <fields>
  312 + <field>
  313 + <name>&#x7ebf;&#x8def;</name>
  314 + <type>String</type>
  315 + <length>-1</length>
  316 + <precision>-1</precision>
  317 + <trim_type>none</trim_type>
  318 + <repeat>N</repeat>
  319 + <format/>
  320 + <currency/>
  321 + <decimal/>
  322 + <group/>
  323 + </field>
  324 + <field>
  325 + <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
  326 + <type>String</type>
  327 + <length>-1</length>
  328 + <precision>-1</precision>
  329 + <trim_type>none</trim_type>
  330 + <repeat>N</repeat>
  331 + <format/>
  332 + <currency/>
  333 + <decimal/>
  334 + <group/>
  335 + </field>
  336 + <field>
  337 + <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  338 + <type>String</type>
  339 + <length>-1</length>
  340 + <precision>-1</precision>
  341 + <trim_type>none</trim_type>
  342 + <repeat>N</repeat>
  343 + <format/>
  344 + <currency/>
  345 + <decimal/>
  346 + <group/>
  347 + </field>
  348 + <field>
  349 + <name>&#x7ec8;&#x7ed3;&#x65e5;&#x671f;</name>
  350 + <type>String</type>
  351 + <length>-1</length>
  352 + <precision>-1</precision>
  353 + <trim_type>none</trim_type>
  354 + <repeat>N</repeat>
  355 + <format/>
  356 + <currency/>
  357 + <decimal/>
  358 + <group/>
  359 + </field>
  360 + <field>
  361 + <name>&#x505c;&#x8f66;&#x70b9;</name>
  362 + <type>String</type>
  363 + <length>-1</length>
  364 + <precision>-1</precision>
  365 + <trim_type>none</trim_type>
  366 + <repeat>N</repeat>
  367 + <format/>
  368 + <currency/>
  369 + <decimal/>
  370 + <group/>
  371 + </field>
  372 + </fields>
  373 + <sheets>
  374 + <sheet>
  375 + <name>&#x5de5;&#x4f5c;&#x8868;1</name>
  376 + <startrow>0</startrow>
  377 + <startcol>0</startcol>
  378 + </sheet>
  379 + </sheets>
  380 + <strict_types>N</strict_types>
  381 + <error_ignored>N</error_ignored>
  382 + <error_line_skipped>N</error_line_skipped>
  383 + <bad_line_files_destination_directory/>
  384 + <bad_line_files_extension>warning</bad_line_files_extension>
  385 + <error_line_files_destination_directory/>
  386 + <error_line_files_extension>error</error_line_files_extension>
  387 + <line_number_files_destination_directory/>
  388 + <line_number_files_extension>line</line_number_files_extension>
  389 + <shortFileFieldName/>
  390 + <pathFieldName/>
  391 + <hiddenFieldName/>
  392 + <lastModificationTimeFieldName/>
  393 + <uriNameFieldName/>
  394 + <rootUriNameFieldName/>
  395 + <extensionFieldName/>
  396 + <sizeFieldName/>
  397 + <spreadsheet_type>JXL</spreadsheet_type>
  398 + <cluster_schema/>
  399 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  400 + <xloc>155</xloc>
  401 + <yloc>56</yloc>
  402 + <draw>Y</draw>
  403 + </GUI>
  404 + </step>
  405 +
  406 + <step>
  407 + <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
  408 + <type>SelectValues</type>
  409 + <description/>
  410 + <distribute>Y</distribute>
  411 + <custom_distribution/>
  412 + <copies>1</copies>
  413 + <partitioning>
  414 + <method>none</method>
  415 + <schema_name/>
  416 + </partitioning>
  417 + <fields> <field> <name>&#x7ebf;&#x8def;</name>
  418 + <rename>xl</rename>
  419 + <length>-2</length>
  420 + <precision>-2</precision>
  421 + </field> <field> <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
  422 + <rename>cl</rename>
  423 + <length>-2</length>
  424 + <precision>-2</precision>
  425 + </field> <field> <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  426 + <rename>qyrq</rename>
  427 + <length>-2</length>
  428 + <precision>-2</precision>
  429 + </field> <field> <name>&#x7ec8;&#x7ed3;&#x65e5;&#x671f;</name>
  430 + <rename>zzrq</rename>
  431 + <length>-2</length>
  432 + <precision>-2</precision>
  433 + </field> <field> <name>&#x505c;&#x8f66;&#x70b9;</name>
  434 + <rename>tcd</rename>
  435 + <length>-2</length>
  436 + <precision>-2</precision>
  437 + </field> <select_unspecified>N</select_unspecified>
  438 + </fields> <cluster_schema/>
  439 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  440 + <xloc>306</xloc>
  441 + <yloc>56</yloc>
  442 + <draw>Y</draw>
  443 + </GUI>
  444 + </step>
  445 +
  446 + <step>
  447 + <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ccinfo</name>
  448 + <type>InsertUpdate</type>
  449 + <description/>
  450 + <distribute>Y</distribute>
  451 + <custom_distribution/>
  452 + <copies>1</copies>
  453 + <partitioning>
  454 + <method>none</method>
  455 + <schema_name/>
  456 + </partitioning>
  457 + <connection>bus_control_variable</connection>
  458 + <commit>100</commit>
  459 + <update_bypassed>N</update_bypassed>
  460 + <lookup>
  461 + <schema/>
  462 + <table>bsth_c_s_ccinfo</table>
  463 + <key>
  464 + <name>xlId</name>
  465 + <field>xl</field>
  466 + <condition>&#x3d;</condition>
  467 + <name2/>
  468 + </key>
  469 + <key>
  470 + <name>clId</name>
  471 + <field>cl</field>
  472 + <condition>&#x3d;</condition>
  473 + <name2/>
  474 + </key>
  475 + <value>
  476 + <name>xl</name>
  477 + <rename>xlId</rename>
  478 + <update>Y</update>
  479 + </value>
  480 + <value>
  481 + <name>cl</name>
  482 + <rename>clId</rename>
  483 + <update>Y</update>
  484 + </value>
  485 + <value>
  486 + <name>is_switch</name>
  487 + <rename>isswitch</rename>
  488 + <update>Y</update>
  489 + </value>
  490 + <value>
  491 + <name>tcd</name>
  492 + <rename>tcd</rename>
  493 + <update>Y</update>
  494 + </value>
  495 + <value>
  496 + <name>zzrq</name>
  497 + <rename>zzrq</rename>
  498 + <update>Y</update>
  499 + </value>
  500 + <value>
  501 + <name>qyrq</name>
  502 + <rename>qyrq</rename>
  503 + <update>Y</update>
  504 + </value>
  505 + </lookup>
  506 + <cluster_schema/>
  507 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  508 + <xloc>715</xloc>
  509 + <yloc>197</yloc>
  510 + <draw>Y</draw>
  511 + </GUI>
  512 + </step>
  513 +
  514 + <step>
  515 + <name>&#x662f;&#x5426;&#x5207;&#x6362;</name>
  516 + <type>Constant</type>
  517 + <description/>
  518 + <distribute>Y</distribute>
  519 + <custom_distribution/>
  520 + <copies>1</copies>
  521 + <partitioning>
  522 + <method>none</method>
  523 + <schema_name/>
  524 + </partitioning>
  525 + <fields>
  526 + <field>
  527 + <name>isswitch</name>
  528 + <type>Integer</type>
  529 + <format/>
  530 + <currency/>
  531 + <decimal/>
  532 + <group/>
  533 + <nullif>0</nullif>
  534 + <length>-1</length>
  535 + <precision>-1</precision>
  536 + <set_empty_string>N</set_empty_string>
  537 + </field>
  538 + </fields>
  539 + <cluster_schema/>
  540 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  541 + <xloc>713</xloc>
  542 + <yloc>54</yloc>
  543 + <draw>Y</draw>
  544 + </GUI>
  545 + </step>
  546 +
  547 + <step>
  548 + <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</name>
  549 + <type>DBLookup</type>
  550 + <description/>
  551 + <distribute>Y</distribute>
  552 + <custom_distribution/>
  553 + <copies>1</copies>
  554 + <partitioning>
  555 + <method>none</method>
  556 + <schema_name/>
  557 + </partitioning>
  558 + <connection>bus_control_variable</connection>
  559 + <cache>N</cache>
  560 + <cache_load_all>N</cache_load_all>
  561 + <cache_size>0</cache_size>
  562 + <lookup>
  563 + <schema/>
  564 + <table>bsth_c_line</table>
  565 + <orderby/>
  566 + <fail_on_multiple>N</fail_on_multiple>
  567 + <eat_row_on_failure>N</eat_row_on_failure>
  568 + <key>
  569 + <name>xl</name>
  570 + <field>name</field>
  571 + <condition>&#x3d;</condition>
  572 + <name2/>
  573 + </key>
  574 + <value>
  575 + <name>id</name>
  576 + <rename>xlId</rename>
  577 + <default/>
  578 + <type>Integer</type>
  579 + </value>
  580 + </lookup>
  581 + <cluster_schema/>
  582 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  583 + <xloc>439</xloc>
  584 + <yloc>56</yloc>
  585 + <draw>Y</draw>
  586 + </GUI>
  587 + </step>
  588 +
  589 + <step>
  590 + <name>&#x67e5;&#x627e;&#x8f66;&#x8f86;&#x5173;&#x8054;</name>
  591 + <type>DBLookup</type>
  592 + <description/>
  593 + <distribute>Y</distribute>
  594 + <custom_distribution/>
  595 + <copies>1</copies>
  596 + <partitioning>
  597 + <method>none</method>
  598 + <schema_name/>
  599 + </partitioning>
  600 + <connection>bus_control_variable</connection>
  601 + <cache>N</cache>
  602 + <cache_load_all>N</cache_load_all>
  603 + <cache_size>0</cache_size>
  604 + <lookup>
  605 + <schema/>
  606 + <table>bsth_c_cars</table>
  607 + <orderby/>
  608 + <fail_on_multiple>N</fail_on_multiple>
  609 + <eat_row_on_failure>N</eat_row_on_failure>
  610 + <key>
  611 + <name>cl</name>
  612 + <field>inside_code</field>
  613 + <condition>&#x3d;</condition>
  614 + <name2/>
  615 + </key>
  616 + <value>
  617 + <name>id</name>
  618 + <rename>clId</rename>
  619 + <default/>
  620 + <type>Integer</type>
  621 + </value>
  622 + </lookup>
  623 + <cluster_schema/>
  624 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  625 + <xloc>579</xloc>
  626 + <yloc>55</yloc>
  627 + <draw>Y</draw>
  628 + </GUI>
  629 + </step>
  630 +
  631 + <step>
  632 + <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>
  633 + <type>GetVariable</type>
  634 + <description/>
  635 + <distribute>Y</distribute>
  636 + <custom_distribution/>
  637 + <copies>1</copies>
  638 + <partitioning>
  639 + <method>none</method>
  640 + <schema_name/>
  641 + </partitioning>
  642 + <fields>
  643 + <field>
  644 + <name>filepath_</name>
  645 + <variable>&#x24;&#x7b;filepath&#x7d;</variable>
  646 + <type>String</type>
  647 + <format/>
  648 + <currency/>
  649 + <decimal/>
  650 + <group/>
  651 + <length>-1</length>
  652 + <precision>-1</precision>
  653 + <trim_type>none</trim_type>
  654 + </field>
  655 + <field>
  656 + <name>erroroutputdir_</name>
  657 + <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
  658 + <type>String</type>
  659 + <format/>
  660 + <currency/>
  661 + <decimal/>
  662 + <group/>
  663 + <length>-1</length>
  664 + <precision>-1</precision>
  665 + <trim_type>none</trim_type>
  666 + </field>
  667 + </fields>
  668 + <cluster_schema/>
  669 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  670 + <xloc>156</xloc>
  671 + <yloc>150</yloc>
  672 + <draw>Y</draw>
  673 + </GUI>
  674 + </step>
  675 +
  676 + <step>
  677 + <name>&#x9519;&#x8bef;&#x8f93;&#x51fa;</name>
  678 + <type>ExcelOutput</type>
  679 + <description/>
  680 + <distribute>Y</distribute>
  681 + <custom_distribution/>
  682 + <copies>1</copies>
  683 + <partitioning>
  684 + <method>none</method>
  685 + <schema_name/>
  686 + </partitioning>
  687 + <header>Y</header>
  688 + <footer>N</footer>
  689 + <encoding>UTF-8</encoding>
  690 + <append>N</append>
  691 + <add_to_result_filenames>Y</add_to_result_filenames>
  692 + <file>
  693 + <name>&#x24;&#x7b;erroroutputdir&#x7d;&#x2f;&#x5f53;&#x524d;&#x914d;&#x8f66;_&#x9519;&#x8bef;</name>
  694 + <extention>xls</extention>
  695 + <do_not_open_newfile_init>N</do_not_open_newfile_init>
  696 + <create_parent_folder>N</create_parent_folder>
  697 + <split>N</split>
  698 + <add_date>N</add_date>
  699 + <add_time>N</add_time>
  700 + <SpecifyFormat>N</SpecifyFormat>
  701 + <date_time_format/>
  702 + <sheetname>Sheet1</sheetname>
  703 + <autosizecolums>N</autosizecolums>
  704 + <nullisblank>N</nullisblank>
  705 + <protect_sheet>N</protect_sheet>
  706 + <password>Encrypted </password>
  707 + <splitevery>0</splitevery>
  708 + <usetempfiles>N</usetempfiles>
  709 + <tempdirectory/>
  710 + </file>
  711 + <template>
  712 + <enabled>N</enabled>
  713 + <append>N</append>
  714 + <filename>template.xls</filename>
  715 + </template>
  716 + <fields>
  717 + <field>
  718 + <name>xl</name>
  719 + <type>String</type>
  720 + <format/>
  721 + </field>
  722 + <field>
  723 + <name>cl</name>
  724 + <type>String</type>
  725 + <format/>
  726 + </field>
  727 + <field>
  728 + <name>qyrq</name>
  729 + <type>String</type>
  730 + <format/>
  731 + </field>
  732 + <field>
  733 + <name>zzrq</name>
  734 + <type>String</type>
  735 + <format/>
  736 + </field>
  737 + <field>
  738 + <name>tcd</name>
  739 + <type>String</type>
  740 + <format/>
  741 + </field>
  742 + <field>
  743 + <name>xlId</name>
  744 + <type>Integer</type>
  745 + <format/>
  746 + </field>
  747 + <field>
  748 + <name>clId</name>
  749 + <type>Integer</type>
  750 + <format/>
  751 + </field>
  752 + <field>
  753 + <name>isswitch</name>
  754 + <type>Integer</type>
  755 + <format/>
  756 + </field>
  757 + <field>
  758 + <name>error_count</name>
  759 + <type>Integer</type>
  760 + <format/>
  761 + </field>
  762 + <field>
  763 + <name>error_desc</name>
  764 + <type>String</type>
  765 + <format/>
  766 + </field>
  767 + <field>
  768 + <name>error_column1</name>
  769 + <type>String</type>
  770 + <format/>
  771 + </field>
  772 + <field>
  773 + <name>error_column2</name>
  774 + <type>String</type>
  775 + <format/>
  776 + </field>
  777 + </fields>
  778 + <custom>
  779 + <header_font_name>arial</header_font_name>
  780 + <header_font_size>10</header_font_size>
  781 + <header_font_bold>N</header_font_bold>
  782 + <header_font_italic>N</header_font_italic>
  783 + <header_font_underline>no</header_font_underline>
  784 + <header_font_orientation>horizontal</header_font_orientation>
  785 + <header_font_color>black</header_font_color>
  786 + <header_background_color>none</header_background_color>
  787 + <header_row_height>255</header_row_height>
  788 + <header_alignment>left</header_alignment>
  789 + <header_image/>
  790 + <row_font_name>arial</row_font_name>
  791 + <row_font_size>10</row_font_size>
  792 + <row_font_color>black</row_font_color>
  793 + <row_background_color>none</row_background_color>
  794 + </custom>
  795 + <cluster_schema/>
  796 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  797 + <xloc>718</xloc>
  798 + <yloc>314</yloc>
  799 + <draw>Y</draw>
  800 + </GUI>
  801 + </step>
  802 +
  803 + <step_error_handling>
  804 + <error>
  805 + <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ccinfo</source_step>
  806 + <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa;</target_step>
  807 + <is_enabled>Y</is_enabled>
  808 + <nr_valuename>error_count</nr_valuename>
  809 + <descriptions_valuename>error_desc</descriptions_valuename>
  810 + <fields_valuename>error_column1</fields_valuename>
  811 + <codes_valuename>error_column2</codes_valuename>
  812 + <max_errors/>
  813 + <max_pct_errors/>
  814 + <min_pct_rows/>
  815 + </error>
  816 + </step_error_handling>
  817 + <slave-step-copy-partition-distribution>
  818 +</slave-step-copy-partition-distribution>
  819 + <slave_transformation>N</slave_transformation>
  820 +
  821 +</transformation>
... ...
src/main/resources/datatools/ktrs/carsDataInput.ktr
1   -<<<<<<< HEAD
2   -<?xml version="1.0" encoding="UTF-8"?>
3   -<transformation>
4   - <info>
5   - <name>carsDataInput</name>
6   - <description>&#x8f66;&#x8f86;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description>
7   - <extended_description>&#x8f66;&#x8f86;&#x57fa;&#x7840;&#x4fe1;&#x606f;</extended_description>
8   - <trans_version/>
9   - <trans_type>Normal</trans_type>
10   - <trans_status>0</trans_status>
11   - <directory>&#x2f;</directory>
12   - <parameters>
13   - <parameter>
14   - <name>erroroutputdir</name>
15   - <default_value/>
16   - <description>ktr step&#x914d;&#x7f6e;&#x7684;&#x9519;&#x8bef;&#x8f93;&#x51fa;&#x76ee;&#x5f55;</description>
17   - </parameter>
18   - <parameter>
19   - <name>filepath</name>
20   - <default_value/>
21   - <description>&#x5f85;&#x5904;&#x7406;&#x5bfc;&#x5165;&#x7684;excel&#x6587;&#x4ef6;</description>
22   - </parameter>
23   - </parameters>
24   - <log>
25   -<trans-log-table><connection/>
26   -<schema/>
27   -<table/>
28   -<size_limit_lines/>
29   -<interval/>
30   -<timeout_days/>
31   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>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>
32   -<perf-log-table><connection/>
33   -<schema/>
34   -<table/>
35   -<interval/>
36   -<timeout_days/>
37   -<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>
38   -<channel-log-table><connection/>
39   -<schema/>
40   -<table/>
41   -<timeout_days/>
42   -<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>
43   -<step-log-table><connection/>
44   -<schema/>
45   -<table/>
46   -<timeout_days/>
47   -<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>
48   -<metrics-log-table><connection/>
49   -<schema/>
50   -<table/>
51   -<timeout_days/>
52   -<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>
53   - </log>
54   - <maxdate>
55   - <connection/>
56   - <table/>
57   - <field/>
58   - <offset>0.0</offset>
59   - <maxdiff>0.0</maxdiff>
60   - </maxdate>
61   - <size_rowset>10000</size_rowset>
62   - <sleep_time_empty>50</sleep_time_empty>
63   - <sleep_time_full>50</sleep_time_full>
64   - <unique_connections>N</unique_connections>
65   - <feedback_shown>Y</feedback_shown>
66   - <feedback_size>50000</feedback_size>
67   - <using_thread_priorities>Y</using_thread_priorities>
68   - <shared_objects_file/>
69   - <capture_step_performance>N</capture_step_performance>
70   - <step_performance_capturing_delay>1000</step_performance_capturing_delay>
71   - <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
72   - <dependencies>
73   - </dependencies>
74   - <partitionschemas>
75   - </partitionschemas>
76   - <slaveservers>
77   - </slaveservers>
78   - <clusterschemas>
79   - </clusterschemas>
80   - <created_user>-</created_user>
81   - <created_date>2016&#x2f;06&#x2f;23 17&#x3a;44&#x3a;46.781</created_date>
82   - <modified_user>-</modified_user>
83   - <modified_date>2016&#x2f;06&#x2f;23 17&#x3a;44&#x3a;46.781</modified_date>
84   - <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
85   - <is_key_private>N</is_key_private>
86   - </info>
87   - <notepads>
88   - <notepad>
89   - <note>&#x539f;&#x7cfb;&#x7edf;&#x7684;&#x5bfc;&#x51fa;&#x8868;&#xff0c;&#x6709;&#x4e9b;&#x6570;&#x636e;&#x662f;&#x6ca1;&#x6709;&#x7684;&#xff0c;&#x6709;&#x4e9b;&#x6570;&#x636e;&#x4e5f;&#x6709;&#x95ee;&#x9898;&#xff0c;&#x5982;&#x4e0b;&#xa;&#x62a5;&#x5e9f;&#x65e5;&#x671f;&#x53bb;&#x6389;&#xa;&#x8f66;&#x8f86;&#x7f16;&#x7801;&#xff0c;&#x6682;&#x65f6;&#x7528;1&#x4ee3;&#x66ff;&#xa;&#x662f;&#x5426;&#x7535;&#x8f66; &#x6ca1;&#x6709;&#xa;&#x8f66;&#x8f86;&#x5e8f;&#x53f7; &#x6ca1;&#x6709;&#xa;&#x662f;&#x5426;&#x5207;&#x6362; &#x6ca1;&#x6709;&#xa;&#x7ebf;&#x8def;&#x540d;&#x79f0;&#xff08;&#x8fd9;&#x91cc;&#x4e0d;&#x505a;&#x5173;&#x8054;&#xff0c;&#x53ea;&#x662f;&#x767b;&#x8bb0;&#x7684;&#x65f6;&#x5019;&#x4f7f;&#x7528;&#xff09; &#x54a9;&#x6709;</note>
90   - <xloc>365</xloc>
91   - <yloc>136</yloc>
92   - <width>346</width>
93   - <heigth>122</heigth>
94   - <fontname>YaHei Consolas Hybrid</fontname>
95   - <fontsize>12</fontsize>
96   - <fontbold>N</fontbold>
97   - <fontitalic>N</fontitalic>
98   - <fontcolorred>0</fontcolorred>
99   - <fontcolorgreen>0</fontcolorgreen>
100   - <fontcolorblue>0</fontcolorblue>
101   - <backgroundcolorred>255</backgroundcolorred>
102   - <backgroundcolorgreen>205</backgroundcolorgreen>
103   - <backgroundcolorblue>112</backgroundcolorblue>
104   - <bordercolorred>100</bordercolorred>
105   - <bordercolorgreen>100</bordercolorgreen>
106   - <bordercolorblue>100</bordercolorblue>
107   - <drawshadow>Y</drawshadow>
108   - </notepad>
109   - </notepads>
110   - <connection>
111   - <name>bus_control_&#x516c;&#x53f8;_201</name>
112   - <server>192.168.168.201</server>
113   - <type>MYSQL</type>
114   - <access>Native</access>
115   - <database>control</database>
116   - <port>3306</port>
117   - <username>root</username>
118   - <password>Encrypted 2be98afc86aa7f2e4cb79ff228dc6fa8c</password>
119   - <servername/>
120   - <data_tablespace/>
121   - <index_tablespace/>
122   - <attributes>
123   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
124   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
125   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
126   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
127   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
128   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
129   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
130   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
131   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
132   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
133   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
134   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
135   - </attributes>
136   - </connection>
137   - <connection>
138   - <name>xlab_mysql_youle</name>
139   - <server>101.231.124.8</server>
140   - <type>MYSQL</type>
141   - <access>Native</access>
142   - <database>xlab_youle</database>
143   - <port>45687</port>
144   - <username>xlab-youle</username>
145   - <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
146   - <servername/>
147   - <data_tablespace/>
148   - <index_tablespace/>
149   - <attributes>
150   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
151   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
152   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
153   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
154   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
155   - <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
156   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
157   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
158   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
159   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
160   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
161   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
162   - </attributes>
163   - </connection>
164   - <connection>
165   - <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
166   - <server>localhost</server>
167   - <type>MYSQL</type>
168   - <access>Native</access>
169   - <database>xlab_youle</database>
170   - <port>3306</port>
171   - <username>root</username>
172   - <password>Encrypted </password>
173   - <servername/>
174   - <data_tablespace/>
175   - <index_tablespace/>
176   - <attributes>
177   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
178   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
179   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
180   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
181   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
182   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
183   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
184   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
185   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
186   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
187   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
188   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
189   - </attributes>
190   - </connection>
191   - <connection>
192   - <name>xlab_youle</name>
193   - <server/>
194   - <type>MYSQL</type>
195   - <access>JNDI</access>
196   - <database>xlab_youle</database>
197   - <port>1521</port>
198   - <username/>
199   - <password>Encrypted </password>
200   - <servername/>
201   - <data_tablespace/>
202   - <index_tablespace/>
203   - <attributes>
204   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
205   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
206   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
207   - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
208   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
209   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
210   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
211   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
212   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
213   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
214   - </attributes>
215   - </connection>
216   - <order>
217   - <hop> <from>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
218   - <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x662f;&#x5426;&#x7a7a;&#x8c03;&#x8f66;</to><enabled>Y</enabled> </hop>
219   - <hop> <from>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
220   - <hop> <from>&#x662f;&#x5426;&#x6709;LED&#x670d;&#x52a1;&#x5c4f;</from><to>&#x662f;&#x5426;&#x6709;TV&#x89c6;&#x9891;</to><enabled>Y</enabled> </hop>
221   - <hop> <from>&#x662f;&#x5426;&#x6709;TV&#x89c6;&#x9891;</from><to>&#x662f;&#x5426;&#x7684;&#x53d8;&#x6210;&#x6570;&#x5b57;&#x578b;</to><enabled>Y</enabled> </hop>
222   - <hop> <from>&#x662f;&#x5426;&#x7684;&#x53d8;&#x6210;&#x6570;&#x5b57;&#x578b;</from><to>&#x516c;&#x4ea4;&#x4f01;&#x4e1a;&#x4ee3;&#x7801;</to><enabled>Y</enabled> </hop>
223   - <hop> <from>&#x662f;&#x5426;&#x7a7a;&#x8c03;&#x8f66;</from><to>&#x6709;&#x65e0;&#x4eba;&#x552e;&#x7968;</to><enabled>Y</enabled> </hop>
224   - <hop> <from>&#x6709;&#x65e0;&#x4eba;&#x552e;&#x7968;</from><to>&#x662f;&#x5426;&#x6709;LED&#x670d;&#x52a1;&#x5c4f;</to><enabled>Y</enabled> </hop>
225   - <hop> <from>&#x516c;&#x4ea4;&#x4f01;&#x4e1a;&#x4ee3;&#x7801;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars</to><enabled>Y</enabled> </hop>
226   - <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>
227   - </order>
228   - <step>
229   - <name>&#x516c;&#x4ea4;&#x4f01;&#x4e1a;&#x4ee3;&#x7801;</name>
230   - <type>ValueMapper</type>
231   - <description/>
232   - <distribute>Y</distribute>
233   - <custom_distribution/>
234   - <copies>1</copies>
235   - <partitioning>
236   - <method>none</method>
237   - <schema_name/>
238   - </partitioning>
239   - <field_to_use>company</field_to_use>
240   - <target_field>businessCode</target_field>
241   - <non_match_default/>
242   - <fields>
243   - <field>
244   - <source_value>&#x4e0a;&#x5357;&#x516c;&#x53f8;</source_value>
245   - <target_value>55</target_value>
246   - </field>
247   - <field>
248   - <source_value>&#x91d1;&#x9ad8;&#x516c;&#x53f8;</source_value>
249   - <target_value>22</target_value>
250   - </field>
251   - <field>
252   - <source_value>&#x6768;&#x9ad8;&#x516c;&#x53f8;</source_value>
253   - <target_value>05</target_value>
254   - </field>
255   - <field>
256   - <source_value>&#x5357;&#x6c47;&#x516c;&#x53f8;</source_value>
257   - <target_value>26</target_value>
258   - </field>
259   - <field>
260   - <source_value>&#x516c;&#x4ea4;&#x516c;&#x53f8;</source_value>
261   - <target_value>88</target_value>
262   - </field>
263   - <field>
264   - <source_value>&#x95f5;&#x884c;&#x516c;&#x4ea4;</source_value>
265   - <target_value>77</target_value>
266   - </field>
267   - </fields>
268   - <cluster_schema/>
269   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
270   - <xloc>841</xloc>
271   - <yloc>166</yloc>
272   - <draw>Y</draw>
273   - </GUI>
274   - </step>
275   -
276   - <step>
277   - <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name>
278   - <type>ExcelInput</type>
279   - <description/>
280   - <distribute>Y</distribute>
281   - <custom_distribution/>
282   - <copies>1</copies>
283   - <partitioning>
284   - <method>none</method>
285   - <schema_name/>
286   - </partitioning>
287   - <header>Y</header>
288   - <noempty>Y</noempty>
289   - <stoponempty>N</stoponempty>
290   - <filefield/>
291   - <sheetfield/>
292   - <sheetrownumfield/>
293   - <rownumfield/>
294   - <sheetfield/>
295   - <filefield/>
296   - <limit>0</limit>
297   - <encoding/>
298   - <add_to_result_filenames>Y</add_to_result_filenames>
299   - <accept_filenames>Y</accept_filenames>
300   - <accept_field>filepath_</accept_field>
301   - <accept_stepname>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</accept_stepname>
302   - <file>
303   - <name/>
304   - <filemask/>
305   - <exclude_filemask/>
306   - <file_required>N</file_required>
307   - <include_subfolders>N</include_subfolders>
308   - </file>
309   - <fields>
310   - <field>
311   - <name>&#x8f66;&#x724c;&#x53f7;</name>
312   - <type>String</type>
313   - <length>-1</length>
314   - <precision>-1</precision>
315   - <trim_type>none</trim_type>
316   - <repeat>N</repeat>
317   - <format/>
318   - <currency/>
319   - <decimal/>
320   - <group/>
321   - </field>
322   - <field>
323   - <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
324   - <type>String</type>
325   - <length>-1</length>
326   - <precision>-1</precision>
327   - <trim_type>none</trim_type>
328   - <repeat>N</repeat>
329   - <format/>
330   - <currency/>
331   - <decimal/>
332   - <group/>
333   - </field>
334   - <field>
335   - <name>&#x8f66;&#x8f86;&#x7f16;&#x7801;</name>
336   - <type>String</type>
337   - <length>-1</length>
338   - <precision>-1</precision>
339   - <trim_type>none</trim_type>
340   - <repeat>N</repeat>
341   - <format/>
342   - <currency/>
343   - <decimal/>
344   - <group/>
345   - </field>
346   - <field>
347   - <name>&#x8f66;&#x578b;&#x7c7b;&#x522b;</name>
348   - <type>String</type>
349   - <length>-1</length>
350   - <precision>-1</precision>
351   - <trim_type>none</trim_type>
352   - <repeat>N</repeat>
353   - <format/>
354   - <currency/>
355   - <decimal/>
356   - <group/>
357   - </field>
358   - <field>
359   - <name>&#x5ea7;&#x4f4d;&#x6570;</name>
360   - <type>String</type>
361   - <length>-1</length>
362   - <precision>-1</precision>
363   - <trim_type>none</trim_type>
364   - <repeat>N</repeat>
365   - <format/>
366   - <currency/>
367   - <decimal/>
368   - <group/>
369   - </field>
370   - <field>
371   - <name>&#x8f7d;&#x5ba2;&#x6807;&#x51c6;</name>
372   - <type>String</type>
373   - <length>-1</length>
374   - <precision>-1</precision>
375   - <trim_type>none</trim_type>
376   - <repeat>N</repeat>
377   - <format/>
378   - <currency/>
379   - <decimal/>
380   - <group/>
381   - </field>
382   - <field>
383   - <name>&#x6280;&#x672f;&#x901f;&#x5ea6;</name>
384   - <type>String</type>
385   - <length>-1</length>
386   - <precision>-1</precision>
387   - <trim_type>none</trim_type>
388   - <repeat>N</repeat>
389   - <format/>
390   - <currency/>
391   - <decimal/>
392   - <group/>
393   - </field>
394   - <field>
395   - <name>&#x662f;&#x5426;&#x7a7a;&#x8c03;</name>
396   - <type>String</type>
397   - <length>-1</length>
398   - <precision>-1</precision>
399   - <trim_type>none</trim_type>
400   - <repeat>N</repeat>
401   - <format/>
402   - <currency/>
403   - <decimal/>
404   - <group/>
405   - </field>
406   - <field>
407   - <name>&#x6807;&#x51c6;&#x6cb9;&#x8017;&#x28;&#x5f00;&#x7a7a;&#x8c03;&#x29;</name>
408   - <type>String</type>
409   - <length>-1</length>
410   - <precision>-1</precision>
411   - <trim_type>none</trim_type>
412   - <repeat>N</repeat>
413   - <format/>
414   - <currency/>
415   - <decimal/>
416   - <group/>
417   - </field>
418   - <field>
419   - <name>&#x6807;&#x51c6;&#x6cb9;&#x8017;&#x28;&#x5173;&#x7a7a;&#x8c03;&#x29;</name>
420   - <type>String</type>
421   - <length>-1</length>
422   - <precision>-1</precision>
423   - <trim_type>none</trim_type>
424   - <repeat>N</repeat>
425   - <format/>
426   - <currency/>
427   - <decimal/>
428   - <group/>
429   - </field>
430   - <field>
431   - <name>&#x6709;&#x65e0;&#x4eba;&#x552e;&#x7968;</name>
432   - <type>String</type>
433   - <length>-1</length>
434   - <precision>-1</precision>
435   - <trim_type>none</trim_type>
436   - <repeat>N</repeat>
437   - <format/>
438   - <currency/>
439   - <decimal/>
440   - <group/>
441   - </field>
442   - <field>
443   - <name>&#x662f;&#x5426;&#x6709;TV&#x89c6;&#x9891;</name>
444   - <type>String</type>
445   - <length>-1</length>
446   - <precision>-1</precision>
447   - <trim_type>none</trim_type>
448   - <repeat>N</repeat>
449   - <format/>
450   - <currency/>
451   - <decimal/>
452   - <group/>
453   - </field>
454   - <field>
455   - <name>&#x662f;&#x5426;&#x6709;LED&#x670d;&#x52a1;&#x5c4f;</name>
456   - <type>String</type>
457   - <length>-1</length>
458   - <precision>-1</precision>
459   - <trim_type>none</trim_type>
460   - <repeat>N</repeat>
461   - <format/>
462   - <currency/>
463   - <decimal/>
464   - <group/>
465   - </field>
466   - <field>
467   - <name>&#x8fd0;&#x8425;&#x72b6;&#x6001;</name>
468   - <type>String</type>
469   - <length>-1</length>
470   - <precision>-1</precision>
471   - <trim_type>none</trim_type>
472   - <repeat>N</repeat>
473   - <format/>
474   - <currency/>
475   - <decimal/>
476   - <group/>
477   - </field>
478   - <field>
479   - <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
480   - <type>String</type>
481   - <length>-1</length>
482   - <precision>-1</precision>
483   - <trim_type>none</trim_type>
484   - <repeat>N</repeat>
485   - <format/>
486   - <currency/>
487   - <decimal/>
488   - <group/>
489   - </field>
490   - <field>
491   - <name>&#x53d6;&#x6d88;&#x65e5;&#x671f;</name>
492   - <type>String</type>
493   - <length>-1</length>
494   - <precision>-1</precision>
495   - <trim_type>none</trim_type>
496   - <repeat>N</repeat>
497   - <format/>
498   - <currency/>
499   - <decimal/>
500   - <group/>
501   - </field>
502   - <field>
503   - <name>&#x62a5;&#x5e9f;&#x53f7;</name>
504   - <type>String</type>
505   - <length>-1</length>
506   - <precision>-1</precision>
507   - <trim_type>none</trim_type>
508   - <repeat>N</repeat>
509   - <format/>
510   - <currency/>
511   - <decimal/>
512   - <group/>
513   - </field>
514   - <field>
515   - <name>&#x62a5;&#x5e9f;&#x65e5;&#x671f;</name>
516   - <type>String</type>
517   - <length>-1</length>
518   - <precision>-1</precision>
519   - <trim_type>none</trim_type>
520   - <repeat>N</repeat>
521   - <format/>
522   - <currency/>
523   - <decimal/>
524   - <group/>
525   - </field>
526   - <field>
527   - <name>&#x5907;&#x6ce8;</name>
528   - <type>String</type>
529   - <length>-1</length>
530   - <precision>-1</precision>
531   - <trim_type>none</trim_type>
532   - <repeat>N</repeat>
533   - <format/>
534   - <currency/>
535   - <decimal/>
536   - <group/>
537   - </field>
538   - <field>
539   - <name>&#x8bbe;&#x5907;&#x7f16;&#x53f7;</name>
540   - <type>String</type>
541   - <length>-1</length>
542   - <precision>-1</precision>
543   - <trim_type>none</trim_type>
544   - <repeat>N</repeat>
545   - <format/>
546   - <currency/>
547   - <decimal/>
548   - <group/>
549   - </field>
550   - <field>
551   - <name>&#x5382;&#x724c;&#x578b;&#x53f7;</name>
552   - <type>String</type>
553   - <length>-1</length>
554   - <precision>-1</precision>
555   - <trim_type>none</trim_type>
556   - <repeat>N</repeat>
557   - <format/>
558   - <currency/>
559   - <decimal/>
560   - <group/>
561   - </field>
562   - <field>
563   - <name>&#x5382;&#x724c;&#x578b;&#x53f7;2</name>
564   - <type>String</type>
565   - <length>-1</length>
566   - <precision>-1</precision>
567   - <trim_type>none</trim_type>
568   - <repeat>N</repeat>
569   - <format/>
570   - <currency/>
571   - <decimal/>
572   - <group/>
573   - </field>
574   - <field>
575   - <name>&#x8f66;&#x8f86;&#x7b49;&#x7ea7;&#x6807;&#x51c6;</name>
576   - <type>String</type>
577   - <length>-1</length>
578   - <precision>-1</precision>
579   - <trim_type>none</trim_type>
580   - <repeat>N</repeat>
581   - <format/>
582   - <currency/>
583   - <decimal/>
584   - <group/>
585   - </field>
586   - <field>
587   - <name>&#x51fa;&#x5382;&#x6392;&#x653e;&#x6807;&#x51c6;</name>
588   - <type>String</type>
589   - <length>-1</length>
590   - <precision>-1</precision>
591   - <trim_type>none</trim_type>
592   - <repeat>N</repeat>
593   - <format/>
594   - <currency/>
595   - <decimal/>
596   - <group/>
597   - </field>
598   - <field>
599   - <name>&#x53d1;&#x52a8;&#x673a;&#x53f7;&#x7801;1</name>
600   - <type>String</type>
601   - <length>-1</length>
602   - <precision>-1</precision>
603   - <trim_type>none</trim_type>
604   - <repeat>N</repeat>
605   - <format/>
606   - <currency/>
607   - <decimal/>
608   - <group/>
609   - </field>
610   - <field>
611   - <name>&#x53d1;&#x52a8;&#x673a;&#x53f7;&#x7801;2</name>
612   - <type>String</type>
613   - <length>-1</length>
614   - <precision>-1</precision>
615   - <trim_type>none</trim_type>
616   - <repeat>N</repeat>
617   - <format/>
618   - <currency/>
619   - <decimal/>
620   - <group/>
621   - </field>
622   - <field>
623   - <name>&#x8f66;&#x67b6;&#x53f7;&#x7801;1</name>
624   - <type>String</type>
625   - <length>-1</length>
626   - <precision>-1</precision>
627   - <trim_type>none</trim_type>
628   - <repeat>N</repeat>
629   - <format/>
630   - <currency/>
631   - <decimal/>
632   - <group/>
633   - </field>
634   - <field>
635   - <name>&#x8f66;&#x67b6;&#x53f7;&#x7801;2</name>
636   - <type>String</type>
637   - <length>-1</length>
638   - <precision>-1</precision>
639   - <trim_type>none</trim_type>
640   - <repeat>N</repeat>
641   - <format/>
642   - <currency/>
643   - <decimal/>
644   - <group/>
645   - </field>
646   - <field>
647   - <name>&#x8f66;&#x8f86;&#x7c7b;&#x578b;</name>
648   - <type>String</type>
649   - <length>-1</length>
650   - <precision>-1</precision>
651   - <trim_type>none</trim_type>
652   - <repeat>N</repeat>
653   - <format/>
654   - <currency/>
655   - <decimal/>
656   - <group/>
657   - </field>
658   - <field>
659   - <name>&#x6240;&#x5c5e;&#x516c;&#x53f8;</name>
660   - <type>String</type>
661   - <length>-1</length>
662   - <precision>-1</precision>
663   - <trim_type>none</trim_type>
664   - <repeat>N</repeat>
665   - <format/>
666   - <currency/>
667   - <decimal/>
668   - <group/>
669   - </field>
670   - <field>
671   - <name>&#x4fee;&#x6539;&#x65e5;&#x671f;</name>
672   - <type>String</type>
673   - <length>-1</length>
674   - <precision>-1</precision>
675   - <trim_type>none</trim_type>
676   - <repeat>N</repeat>
677   - <format/>
678   - <currency/>
679   - <decimal/>
680   - <group/>
681   - </field>
682   - <field>
683   - <name>&#x662f;&#x5426;&#x673a;&#x52a8;&#x8f66;</name>
684   - <type>String</type>
685   - <length>-1</length>
686   - <precision>-1</precision>
687   - <trim_type>none</trim_type>
688   - <repeat>N</repeat>
689   - <format/>
690   - <currency/>
691   - <decimal/>
692   - <group/>
693   - </field>
694   - <field>
695   - <name>&#x89c6;&#x9891;&#x7f16;&#x53f7;</name>
696   - <type>String</type>
697   - <length>-1</length>
698   - <precision>-1</precision>
699   - <trim_type>none</trim_type>
700   - <repeat>N</repeat>
701   - <format/>
702   - <currency/>
703   - <decimal/>
704   - <group/>
705   - </field>
706   - <field>
707   - <name>&#x8bbe;&#x5907;&#x4f9b;&#x5e94;&#x5382;&#x5546;</name>
708   - <type>String</type>
709   - <length>-1</length>
710   - <precision>-1</precision>
711   - <trim_type>none</trim_type>
712   - <repeat>N</repeat>
713   - <format/>
714   - <currency/>
715   - <decimal/>
716   - <group/>
717   - </field>
718   - <field>
719   - <name>&#x5206;&#x516c;&#x53f8;</name>
720   - <type>String</type>
721   - <length>-1</length>
722   - <precision>-1</precision>
723   - <trim_type>none</trim_type>
724   - <repeat>N</repeat>
725   - <format/>
726   - <currency/>
727   - <decimal/>
728   - <group/>
729   - </field>
730   - </fields>
731   - <sheets>
732   - <sheet>
733   - <name>&#x5de5;&#x4f5c;&#x8868;1</name>
734   - <startrow>0</startrow>
735   - <startcol>0</startcol>
736   - </sheet>
737   - </sheets>
738   - <strict_types>N</strict_types>
739   - <error_ignored>N</error_ignored>
740   - <error_line_skipped>N</error_line_skipped>
741   - <bad_line_files_destination_directory/>
742   - <bad_line_files_extension>warning</bad_line_files_extension>
743   - <error_line_files_destination_directory/>
744   - <error_line_files_extension>error</error_line_files_extension>
745   - <line_number_files_destination_directory/>
746   - <line_number_files_extension>line</line_number_files_extension>
747   - <shortFileFieldName/>
748   - <pathFieldName/>
749   - <hiddenFieldName/>
750   - <lastModificationTimeFieldName/>
751   - <uriNameFieldName/>
752   - <rootUriNameFieldName/>
753   - <extensionFieldName/>
754   - <sizeFieldName/>
755   - <spreadsheet_type>JXL</spreadsheet_type>
756   - <cluster_schema/>
757   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
758   - <xloc>131</xloc>
759   - <yloc>58</yloc>
760   - <draw>Y</draw>
761   - </GUI>
762   - </step>
763   -
764   - <step>
765   - <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
766   - <type>SelectValues</type>
767   - <description/>
768   - <distribute>Y</distribute>
769   - <custom_distribution/>
770   - <copies>1</copies>
771   - <partitioning>
772   - <method>none</method>
773   - <schema_name/>
774   - </partitioning>
775   - <fields> <field> <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
776   - <rename>insideCode</rename>
777   - <length>-2</length>
778   - <precision>-2</precision>
779   - </field> <field> <name>&#x8f66;&#x8f86;&#x7f16;&#x7801;</name>
780   - <rename>carCode</rename>
781   - <length>-2</length>
782   - <precision>-2</precision>
783   - </field> <field> <name>&#x6240;&#x5c5e;&#x516c;&#x53f8;</name>
784   - <rename>company</rename>
785   - <length>-2</length>
786   - <precision>-2</precision>
787   - </field> <field> <name>&#x5206;&#x516c;&#x53f8;</name>
788   - <rename>brancheCompany</rename>
789   - <length>-2</length>
790   - <precision>-2</precision>
791   - </field> <field> <name>&#x8f66;&#x724c;&#x53f7;</name>
792   - <rename>carPlate</rename>
793   - <length>-2</length>
794   - <precision>-2</precision>
795   - </field> <field> <name>&#x8bbe;&#x5907;&#x4f9b;&#x5e94;&#x5382;&#x5546;</name>
796   - <rename>supplierName</rename>
797   - <length>-2</length>
798   - <precision>-2</precision>
799   - </field> <field> <name>&#x8bbe;&#x5907;&#x7f16;&#x53f7;</name>
800   - <rename>equipmentCode</rename>
801   - <length>-2</length>
802   - <precision>-2</precision>
803   - </field> <field> <name>&#x8f66;&#x578b;&#x7c7b;&#x522b;</name>
804   - <rename>carClass</rename>
805   - <length>-2</length>
806   - <precision>-2</precision>
807   - </field> <field> <name>&#x6280;&#x672f;&#x901f;&#x5ea6;</name>
808   - <rename>speed</rename>
809   - <length>-2</length>
810   - <precision>-2</precision>
811   - </field> <field> <name>&#x5ea7;&#x4f4d;&#x6570;</name>
812   - <rename>carSeatnNumber</rename>
813   - <length>-2</length>
814   - <precision>-2</precision>
815   - </field> <field> <name>&#x8f7d;&#x5ba2;&#x6807;&#x51c6;</name>
816   - <rename>carStandard</rename>
817   - <length>-2</length>
818   - <precision>-2</precision>
819   - </field> <field> <name>&#x6807;&#x51c6;&#x6cb9;&#x8017;&#x28;&#x5f00;&#x7a7a;&#x8c03;&#x29;</name>
820   - <rename>kburnStandard</rename>
821   - <length>-2</length>
822   - <precision>-2</precision>
823   - </field> <field> <name>&#x6807;&#x51c6;&#x6cb9;&#x8017;&#x28;&#x5173;&#x7a7a;&#x8c03;&#x29;</name>
824   - <rename>gburnStandard</rename>
825   - <length>-2</length>
826   - <precision>-2</precision>
827   - </field> <field> <name>&#x62a5;&#x5e9f;&#x53f7;</name>
828   - <rename>scrapCode</rename>
829   - <length>-2</length>
830   - <precision>-2</precision>
831   - </field> <field> <name>&#x5382;&#x724c;&#x578b;&#x53f7;</name>
832   - <rename>makeCodeOne</rename>
833   - <length>-2</length>
834   - <precision>-2</precision>
835   - </field> <field> <name>&#x5382;&#x724c;&#x578b;&#x53f7;2</name>
836   - <rename>makeCodeTwo</rename>
837   - <length>-2</length>
838   - <precision>-2</precision>
839   - </field> <field> <name>&#x8f66;&#x8f86;&#x7b49;&#x7ea7;&#x6807;&#x51c6;</name>
840   - <rename>carGride</rename>
841   - <length>-2</length>
842   - <precision>-2</precision>
843   - </field> <field> <name>&#x51fa;&#x5382;&#x6392;&#x653e;&#x6807;&#x51c6;</name>
844   - <rename>emissionsStandard</rename>
845   - <length>-2</length>
846   - <precision>-2</precision>
847   - </field> <field> <name>&#x53d1;&#x52a8;&#x673a;&#x53f7;&#x7801;1</name>
848   - <rename>engineCodeOne</rename>
849   - <length>-2</length>
850   - <precision>-2</precision>
851   - </field> <field> <name>&#x53d1;&#x52a8;&#x673a;&#x53f7;&#x7801;2</name>
852   - <rename>engineCodeTwo</rename>
853   - <length>-2</length>
854   - <precision>-2</precision>
855   - </field> <field> <name>&#x8f66;&#x67b6;&#x53f7;&#x7801;1</name>
856   - <rename>carNumberOne</rename>
857   - <length>-2</length>
858   - <precision>-2</precision>
859   - </field> <field> <name>&#x8f66;&#x67b6;&#x53f7;&#x7801;2</name>
860   - <rename>carNumberTwo</rename>
861   - <length>-2</length>
862   - <precision>-2</precision>
863   - </field> <field> <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
864   - <rename>openDate</rename>
865   - <length>-2</length>
866   - <precision>-2</precision>
867   - </field> <field> <name>&#x53d6;&#x6d88;&#x65e5;&#x671f;</name>
868   - <rename>closeDate</rename>
869   - <length>-2</length>
870   - <precision>-2</precision>
871   - </field> <field> <name>&#x662f;&#x5426;&#x7a7a;&#x8c03;</name>
872   - <rename>hvacCar</rename>
873   - <length>-2</length>
874   - <precision>-2</precision>
875   - </field> <field> <name>&#x6709;&#x65e0;&#x4eba;&#x552e;&#x7968;</name>
876   - <rename>ticketType</rename>
877   - <length>-2</length>
878   - <precision>-2</precision>
879   - </field> <field> <name>&#x662f;&#x5426;&#x6709;LED&#x670d;&#x52a1;&#x5c4f;</name>
880   - <rename>ledScreen</rename>
881   - <length>-2</length>
882   - <precision>-2</precision>
883   - </field> <field> <name>&#x662f;&#x5426;&#x6709;TV&#x89c6;&#x9891;</name>
884   - <rename>tvVideoType</rename>
885   - <length>-2</length>
886   - <precision>-2</precision>
887   - </field> <field> <name>&#x8f66;&#x8f86;&#x7c7b;&#x578b;</name>
888   - <rename>carType</rename>
889   - <length>-2</length>
890   - <precision>-2</precision>
891   - </field> <field> <name>&#x662f;&#x5426;&#x673a;&#x52a8;&#x8f66;</name>
892   - <rename>vehicleStats</rename>
893   - <length>-2</length>
894   - <precision>-2</precision>
895   - </field> <field> <name>&#x8fd0;&#x8425;&#x72b6;&#x6001;</name>
896   - <rename>operatorsState</rename>
897   - <length>-2</length>
898   - <precision>-2</precision>
899   - </field> <field> <name>&#x5907;&#x6ce8;</name>
900   - <rename>descriptions</rename>
901   - <length>-2</length>
902   - <precision>-2</precision>
903   - </field> <field> <name>&#x89c6;&#x9891;&#x7f16;&#x53f7;</name>
904   - <rename>videoCode</rename>
905   - <length>-2</length>
906   - <precision>-2</precision>
907   - </field> <select_unspecified>Y</select_unspecified>
908   - </fields> <cluster_schema/>
909   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
910   - <xloc>279</xloc>
911   - <yloc>59</yloc>
912   - <draw>Y</draw>
913   - </GUI>
914   - </step>
915   -
916   - <step>
917   - <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars</name>
918   - <type>InsertUpdate</type>
919   - <description/>
920   - <distribute>Y</distribute>
921   - <custom_distribution/>
922   - <copies>1</copies>
923   - <partitioning>
924   - <method>none</method>
925   - <schema_name/>
926   - </partitioning>
927   - <connection>bus_control_&#x516c;&#x53f8;_201</connection>
928   - <commit>1000</commit>
929   - <update_bypassed>N</update_bypassed>
930   - <lookup>
931   - <schema/>
932   - <table>bsth_c_cars</table>
933   - <key>
934   - <name>businessCode</name>
935   - <field>business_code</field>
936   - <condition>&#x3d;</condition>
937   - <name2/>
938   - </key>
939   - <key>
940   - <name>carPlate</name>
941   - <field>car_plate</field>
942   - <condition>&#x3d;</condition>
943   - <name2/>
944   - </key>
945   - <value>
946   - <name>inside_code</name>
947   - <rename>insideCode</rename>
948   - <update>Y</update>
949   - </value>
950   - <value>
951   - <name>company</name>
952   - <rename>company</rename>
953   - <update>Y</update>
954   - </value>
955   - <value>
956   - <name>branche_company</name>
957   - <rename>brancheCompany</rename>
958   - <update>Y</update>
959   - </value>
960   - <value>
961   - <name>car_plate</name>
962   - <rename>carPlate</rename>
963   - <update>Y</update>
964   - </value>
965   - <value>
966   - <name>supplier_name</name>
967   - <rename>supplierName</rename>
968   - <update>Y</update>
969   - </value>
970   - <value>
971   - <name>equipment_code</name>
972   - <rename>equipmentCode</rename>
973   - <update>Y</update>
974   - </value>
975   - <value>
976   - <name>car_class</name>
977   - <rename>carClass</rename>
978   - <update>Y</update>
979   - </value>
980   - <value>
981   - <name>speed</name>
982   - <rename>speed</rename>
983   - <update>Y</update>
984   - </value>
985   - <value>
986   - <name>car_seatn_number</name>
987   - <rename>carSeatnNumber</rename>
988   - <update>Y</update>
989   - </value>
990   - <value>
991   - <name>car_standard</name>
992   - <rename>carStandard</rename>
993   - <update>Y</update>
994   - </value>
995   - <value>
996   - <name>car_code</name>
997   - <rename>carCode</rename>
998   - <update>Y</update>
999   - </value>
1000   - <value>
1001   - <name>kburn_standard</name>
1002   - <rename>kburnStandard</rename>
1003   - <update>Y</update>
1004   - </value>
1005   - <value>
1006   - <name>gburn_standard</name>
1007   - <rename>gburnStandard</rename>
1008   - <update>Y</update>
1009   - </value>
1010   - <value>
1011   - <name>scrap_code</name>
1012   - <rename>scrapCode</rename>
1013   - <update>Y</update>
1014   - </value>
1015   - <value>
1016   - <name>make_code_one</name>
1017   - <rename>makeCodeOne</rename>
1018   - <update>Y</update>
1019   - </value>
1020   - <value>
1021   - <name>make_code_two</name>
1022   - <rename>makeCodeTwo</rename>
1023   - <update>Y</update>
1024   - </value>
1025   - <value>
1026   - <name>car_gride</name>
1027   - <rename>carGride</rename>
1028   - <update>Y</update>
1029   - </value>
1030   - <value>
1031   - <name>emissions_standard</name>
1032   - <rename>emissionsStandard</rename>
1033   - <update>Y</update>
1034   - </value>
1035   - <value>
1036   - <name>engine_code_one</name>
1037   - <rename>engineCodeOne</rename>
1038   - <update>Y</update>
1039   - </value>
1040   - <value>
1041   - <name>engine_code_two</name>
1042   - <rename>engineCodeTwo</rename>
1043   - <update>Y</update>
1044   - </value>
1045   - <value>
1046   - <name>car_number_one</name>
1047   - <rename>carNumberOne</rename>
1048   - <update>Y</update>
1049   - </value>
1050   - <value>
1051   - <name>car_number_two</name>
1052   - <rename>carNumberTwo</rename>
1053   - <update>Y</update>
1054   - </value>
1055   - <value>
1056   - <name>open_date</name>
1057   - <rename>openDate</rename>
1058   - <update>Y</update>
1059   - </value>
1060   - <value>
1061   - <name>close_date</name>
1062   - <rename>closeDate</rename>
1063   - <update>Y</update>
1064   - </value>
1065   - <value>
1066   - <name>hvac_car</name>
1067   - <rename>hvacCar</rename>
1068   - <update>Y</update>
1069   - </value>
1070   - <value>
1071   - <name>ticket_type</name>
1072   - <rename>ticketType</rename>
1073   - <update>Y</update>
1074   - </value>
1075   - <value>
1076   - <name>led_screen</name>
1077   - <rename>ledScreen</rename>
1078   - <update>Y</update>
1079   - </value>
1080   - <value>
1081   - <name>tv_video_type</name>
1082   - <rename>tvVideoType</rename>
1083   - <update>Y</update>
1084   - </value>
1085   - <value>
1086   - <name>car_type</name>
1087   - <rename>carType</rename>
1088   - <update>Y</update>
1089   - </value>
1090   - <value>
1091   - <name>vehicle_stats</name>
1092   - <rename>vehicleStats</rename>
1093   - <update>Y</update>
1094   - </value>
1095   - <value>
1096   - <name>operators_state</name>
1097   - <rename>operatorsState</rename>
1098   - <update>Y</update>
1099   - </value>
1100   - <value>
1101   - <name>descriptions</name>
1102   - <rename>descriptions</rename>
1103   - <update>Y</update>
1104   - </value>
1105   - <value>
1106   - <name>video_code</name>
1107   - <rename>videoCode</rename>
1108   - <update>Y</update>
1109   - </value>
1110   - <value>
1111   - <name>business_code</name>
1112   - <rename>businessCode</rename>
1113   - <update>Y</update>
1114   - </value>
1115   - </lookup>
1116   - <cluster_schema/>
1117   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1118   - <xloc>842</xloc>
1119   - <yloc>319</yloc>
1120   - <draw>Y</draw>
1121   - </GUI>
1122   - </step>
1123   -
1124   - <step>
1125   - <name>&#x662f;&#x5426;&#x6709;LED&#x670d;&#x52a1;&#x5c4f;</name>
1126   - <type>ValueMapper</type>
1127   - <description/>
1128   - <distribute>Y</distribute>
1129   - <custom_distribution/>
1130   - <copies>1</copies>
1131   - <partitioning>
1132   - <method>none</method>
1133   - <schema_name/>
1134   - </partitioning>
1135   - <field_to_use>ledScreen</field_to_use>
1136   - <target_field/>
1137   - <non_match_default/>
1138   - <fields>
1139   - <field>
1140   - <source_value>&#x662f;</source_value>
1141   - <target_value>1</target_value>
1142   - </field>
1143   - <field>
1144   - <source_value>&#x5426;</source_value>
1145   - <target_value>0</target_value>
1146   - </field>
1147   - </fields>
1148   - <cluster_schema/>
1149   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1150   - <xloc>590</xloc>
1151   - <yloc>61</yloc>
1152   - <draw>Y</draw>
1153   - </GUI>
1154   - </step>
1155   -
1156   - <step>
1157   - <name>&#x662f;&#x5426;&#x6709;TV&#x89c6;&#x9891;</name>
1158   - <type>ValueMapper</type>
1159   - <description/>
1160   - <distribute>Y</distribute>
1161   - <custom_distribution/>
1162   - <copies>1</copies>
1163   - <partitioning>
1164   - <method>none</method>
1165   - <schema_name/>
1166   - </partitioning>
1167   - <field_to_use>tvVideoType</field_to_use>
1168   - <target_field/>
1169   - <non_match_default/>
1170   - <fields>
1171   - <field>
1172   - <source_value>&#x662f;</source_value>
1173   - <target_value>1</target_value>
1174   - </field>
1175   - <field>
1176   - <source_value>&#x5426;</source_value>
1177   - <target_value>0</target_value>
1178   - </field>
1179   - </fields>
1180   - <cluster_schema/>
1181   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1182   - <xloc>706</xloc>
1183   - <yloc>61</yloc>
1184   - <draw>Y</draw>
1185   - </GUI>
1186   - </step>
1187   -
1188   - <step>
1189   - <name>&#x662f;&#x5426;&#x7684;&#x53d8;&#x6210;&#x6570;&#x5b57;&#x578b;</name>
1190   - <type>SelectValues</type>
1191   - <description/>
1192   - <distribute>Y</distribute>
1193   - <custom_distribution/>
1194   - <copies>1</copies>
1195   - <partitioning>
1196   - <method>none</method>
1197   - <schema_name/>
1198   - </partitioning>
1199   - <fields> <select_unspecified>N</select_unspecified>
1200   - <meta> <name>hvacCar</name>
1201   - <rename>hvacCar</rename>
1202   - <type>Integer</type>
1203   - <length>1</length>
1204   - <precision>-2</precision>
1205   - <conversion_mask/>
1206   - <date_format_lenient>false</date_format_lenient>
1207   - <date_format_locale/>
1208   - <date_format_timezone/>
1209   - <lenient_string_to_number>false</lenient_string_to_number>
1210   - <encoding/>
1211   - <decimal_symbol/>
1212   - <grouping_symbol/>
1213   - <currency_symbol/>
1214   - <storage_type/>
1215   - </meta> <meta> <name>ticketType</name>
1216   - <rename>ticketType</rename>
1217   - <type>Integer</type>
1218   - <length>1</length>
1219   - <precision>-2</precision>
1220   - <conversion_mask/>
1221   - <date_format_lenient>false</date_format_lenient>
1222   - <date_format_locale/>
1223   - <date_format_timezone/>
1224   - <lenient_string_to_number>false</lenient_string_to_number>
1225   - <encoding/>
1226   - <decimal_symbol/>
1227   - <grouping_symbol/>
1228   - <currency_symbol/>
1229   - <storage_type/>
1230   - </meta> <meta> <name>ledScreen</name>
1231   - <rename>ledScreen</rename>
1232   - <type>Integer</type>
1233   - <length>1</length>
1234   - <precision>-2</precision>
1235   - <conversion_mask/>
1236   - <date_format_lenient>false</date_format_lenient>
1237   - <date_format_locale/>
1238   - <date_format_timezone/>
1239   - <lenient_string_to_number>false</lenient_string_to_number>
1240   - <encoding/>
1241   - <decimal_symbol/>
1242   - <grouping_symbol/>
1243   - <currency_symbol/>
1244   - <storage_type/>
1245   - </meta> <meta> <name>tvVideoType</name>
1246   - <rename>tvVideoType</rename>
1247   - <type>Integer</type>
1248   - <length>1</length>
1249   - <precision>-2</precision>
1250   - <conversion_mask/>
1251   - <date_format_lenient>false</date_format_lenient>
1252   - <date_format_locale/>
1253   - <date_format_timezone/>
1254   - <lenient_string_to_number>false</lenient_string_to_number>
1255   - <encoding/>
1256   - <decimal_symbol/>
1257   - <grouping_symbol/>
1258   - <currency_symbol/>
1259   - <storage_type/>
1260   - </meta> </fields> <cluster_schema/>
1261   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1262   - <xloc>839</xloc>
1263   - <yloc>61</yloc>
1264   - <draw>Y</draw>
1265   - </GUI>
1266   - </step>
1267   -
1268   - <step>
1269   - <name>&#x662f;&#x5426;&#x7a7a;&#x8c03;&#x8f66;</name>
1270   - <type>ValueMapper</type>
1271   - <description/>
1272   - <distribute>Y</distribute>
1273   - <custom_distribution/>
1274   - <copies>1</copies>
1275   - <partitioning>
1276   - <method>none</method>
1277   - <schema_name/>
1278   - </partitioning>
1279   - <field_to_use>hvacCar</field_to_use>
1280   - <target_field/>
1281   - <non_match_default/>
1282   - <fields>
1283   - <field>
1284   - <source_value>&#x662f;</source_value>
1285   - <target_value>1</target_value>
1286   - </field>
1287   - <field>
1288   - <source_value>&#x5426;</source_value>
1289   - <target_value>0</target_value>
1290   - </field>
1291   - </fields>
1292   - <cluster_schema/>
1293   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1294   - <xloc>388</xloc>
1295   - <yloc>61</yloc>
1296   - <draw>Y</draw>
1297   - </GUI>
1298   - </step>
1299   -
1300   - <step>
1301   - <name>&#x6709;&#x65e0;&#x4eba;&#x552e;&#x7968;</name>
1302   - <type>ValueMapper</type>
1303   - <description/>
1304   - <distribute>Y</distribute>
1305   - <custom_distribution/>
1306   - <copies>1</copies>
1307   - <partitioning>
1308   - <method>none</method>
1309   - <schema_name/>
1310   - </partitioning>
1311   - <field_to_use>ticketType</field_to_use>
1312   - <target_field/>
1313   - <non_match_default/>
1314   - <fields>
1315   - <field>
1316   - <source_value>&#x662f;</source_value>
1317   - <target_value>1</target_value>
1318   - </field>
1319   - <field>
1320   - <source_value>&#x5426;</source_value>
1321   - <target_value>0</target_value>
1322   - </field>
1323   - </fields>
1324   - <cluster_schema/>
1325   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1326   - <xloc>485</xloc>
1327   - <yloc>61</yloc>
1328   - <draw>Y</draw>
1329   - </GUI>
1330   - </step>
1331   -
1332   - <step>
1333   - <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>
1334   - <type>GetVariable</type>
1335   - <description/>
1336   - <distribute>Y</distribute>
1337   - <custom_distribution/>
1338   - <copies>1</copies>
1339   - <partitioning>
1340   - <method>none</method>
1341   - <schema_name/>
1342   - </partitioning>
1343   - <fields>
1344   - <field>
1345   - <name>filepath_</name>
1346   - <variable>&#x24;&#x7b;filepath&#x7d;</variable>
1347   - <type>String</type>
1348   - <format/>
1349   - <currency/>
1350   - <decimal/>
1351   - <group/>
1352   - <length>-1</length>
1353   - <precision>-1</precision>
1354   - <trim_type>none</trim_type>
1355   - </field>
1356   - <field>
1357   - <name>erroroutputdir_</name>
1358   - <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
1359   - <type>String</type>
1360   - <format/>
1361   - <currency/>
1362   - <decimal/>
1363   - <group/>
1364   - <length>-1</length>
1365   - <precision>-1</precision>
1366   - <trim_type>none</trim_type>
1367   - </field>
1368   - </fields>
1369   - <cluster_schema/>
1370   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1371   - <xloc>134</xloc>
1372   - <yloc>183</yloc>
1373   - <draw>Y</draw>
1374   - </GUI>
1375   - </step>
1376   -
1377   - <step>
1378   - <name>&#x9519;&#x8bef;&#x8f93;&#x51fa;</name>
1379   - <type>ExcelOutput</type>
1380   - <description/>
1381   - <distribute>Y</distribute>
1382   - <custom_distribution/>
1383   - <copies>1</copies>
1384   - <partitioning>
1385   - <method>none</method>
1386   - <schema_name/>
1387   - </partitioning>
1388   - <header>Y</header>
1389   - <footer>N</footer>
1390   - <encoding/>
1391   - <append>N</append>
1392   - <add_to_result_filenames>Y</add_to_result_filenames>
1393   - <file>
1394   - <name>&#x24;&#x7b;erroroutputdir&#x7d;&#x2f;&#x8f66;&#x8f86;&#x57fa;&#x7840;&#x4fe1;&#x606f;_&#x9519;&#x8bef;</name>
1395   - <extention>xls</extention>
1396   - <do_not_open_newfile_init>N</do_not_open_newfile_init>
1397   - <create_parent_folder>N</create_parent_folder>
1398   - <split>N</split>
1399   - <add_date>N</add_date>
1400   - <add_time>N</add_time>
1401   - <SpecifyFormat>N</SpecifyFormat>
1402   - <date_time_format/>
1403   - <sheetname>Sheet1</sheetname>
1404   - <autosizecolums>N</autosizecolums>
1405   - <nullisblank>N</nullisblank>
1406   - <protect_sheet>N</protect_sheet>
1407   - <password>Encrypted </password>
1408   - <splitevery>0</splitevery>
1409   - <usetempfiles>N</usetempfiles>
1410   - <tempdirectory/>
1411   - </file>
1412   - <template>
1413   - <enabled>N</enabled>
1414   - <append>N</append>
1415   - <filename>template.xls</filename>
1416   - </template>
1417   - <fields>
1418   - <field>
1419   - <name>insideCode</name>
1420   - <type>String</type>
1421   - <format/>
1422   - </field>
1423   - <field>
1424   - <name>company</name>
1425   - <type>String</type>
1426   - <format/>
1427   - </field>
1428   - <field>
1429   - <name>brancheCompany</name>
1430   - <type>String</type>
1431   - <format/>
1432   - </field>
1433   - <field>
1434   - <name>carPlate</name>
1435   - <type>String</type>
1436   - <format/>
1437   - </field>
1438   - <field>
1439   - <name>supplierName</name>
1440   - <type>String</type>
1441   - <format/>
1442   - </field>
1443   - <field>
1444   - <name>equipmentCode</name>
1445   - <type>String</type>
1446   - <format/>
1447   - </field>
1448   - <field>
1449   - <name>carClass</name>
1450   - <type>String</type>
1451   - <format/>
1452   - </field>
1453   - <field>
1454   - <name>speed</name>
1455   - <type>String</type>
1456   - <format/>
1457   - </field>
1458   - <field>
1459   - <name>carSeatnNumber</name>
1460   - <type>String</type>
1461   - <format/>
1462   - </field>
1463   - <field>
1464   - <name>carStandard</name>
1465   - <type>String</type>
1466   - <format/>
1467   - </field>
1468   - <field>
1469   - <name>kburnStandard</name>
1470   - <type>String</type>
1471   - <format/>
1472   - </field>
1473   - <field>
1474   - <name>gburnStandard</name>
1475   - <type>String</type>
1476   - <format/>
1477   - </field>
1478   - <field>
1479   - <name>scrapCode</name>
1480   - <type>String</type>
1481   - <format/>
1482   - </field>
1483   - <field>
1484   - <name>makeCodeOne</name>
1485   - <type>String</type>
1486   - <format/>
1487   - </field>
1488   - <field>
1489   - <name>makeCodeTwo</name>
1490   - <type>String</type>
1491   - <format/>
1492   - </field>
1493   - <field>
1494   - <name>carGride</name>
1495   - <type>String</type>
1496   - <format/>
1497   - </field>
1498   - <field>
1499   - <name>emissionsStandard</name>
1500   - <type>String</type>
1501   - <format/>
1502   - </field>
1503   - <field>
1504   - <name>engineCodeOne</name>
1505   - <type>String</type>
1506   - <format/>
1507   - </field>
1508   - <field>
1509   - <name>engineCodeTwo</name>
1510   - <type>String</type>
1511   - <format/>
1512   - </field>
1513   - <field>
1514   - <name>carNumberOne</name>
1515   - <type>String</type>
1516   - <format/>
1517   - </field>
1518   - <field>
1519   - <name>carNumberTwo</name>
1520   - <type>String</type>
1521   - <format/>
1522   - </field>
1523   - <field>
1524   - <name>openDate</name>
1525   - <type>String</type>
1526   - <format/>
1527   - </field>
1528   - <field>
1529   - <name>closeDate</name>
1530   - <type>String</type>
1531   - <format/>
1532   - </field>
1533   - <field>
1534   - <name>hvacCar</name>
1535   - <type>Integer</type>
1536   - <format/>
1537   - </field>
1538   - <field>
1539   - <name>ticketType</name>
1540   - <type>Integer</type>
1541   - <format/>
1542   - </field>
1543   - <field>
1544   - <name>ledScreen</name>
1545   - <type>Integer</type>
1546   - <format/>
1547   - </field>
1548   - <field>
1549   - <name>tvVideoType</name>
1550   - <type>Integer</type>
1551   - <format/>
1552   - </field>
1553   - <field>
1554   - <name>carType</name>
1555   - <type>String</type>
1556   - <format/>
1557   - </field>
1558   - <field>
1559   - <name>vehicleStats</name>
1560   - <type>String</type>
1561   - <format/>
1562   - </field>
1563   - <field>
1564   - <name>operatorsState</name>
1565   - <type>String</type>
1566   - <format/>
1567   - </field>
1568   - <field>
1569   - <name>descriptions</name>
1570   - <type>String</type>
1571   - <format/>
1572   - </field>
1573   - <field>
1574   - <name>videoCode</name>
1575   - <type>String</type>
1576   - <format/>
1577   - </field>
1578   - <field>
1579   - <name>businessCode</name>
1580   - <type>String</type>
1581   - <format/>
1582   - </field>
1583   - <field>
1584   - <name>carCode</name>
1585   - <type>String</type>
1586   - <format/>
1587   - </field>
1588   - <field>
1589   - <name>error_count</name>
1590   - <type>Integer</type>
1591   - <format/>
1592   - </field>
1593   - <field>
1594   - <name>error_desc</name>
1595   - <type>String</type>
1596   - <format/>
1597   - </field>
1598   - <field>
1599   - <name>error_column1</name>
1600   - <type>String</type>
1601   - <format/>
1602   - </field>
1603   - <field>
1604   - <name>error_column2</name>
1605   - <type>String</type>
1606   - <format/>
1607   - </field>
1608   - </fields>
1609   - <custom>
1610   - <header_font_name>arial</header_font_name>
1611   - <header_font_size>10</header_font_size>
1612   - <header_font_bold>N</header_font_bold>
1613   - <header_font_italic>N</header_font_italic>
1614   - <header_font_underline>no</header_font_underline>
1615   - <header_font_orientation>horizontal</header_font_orientation>
1616   - <header_font_color>black</header_font_color>
1617   - <header_background_color>none</header_background_color>
1618   - <header_row_height>255</header_row_height>
1619   - <header_alignment>left</header_alignment>
1620   - <header_image/>
1621   - <row_font_name>arial</row_font_name>
1622   - <row_font_size>10</row_font_size>
1623   - <row_font_color>black</row_font_color>
1624   - <row_background_color>none</row_background_color>
1625   - </custom>
1626   - <cluster_schema/>
1627   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1628   - <xloc>637</xloc>
1629   - <yloc>320</yloc>
1630   - <draw>Y</draw>
1631   - </GUI>
1632   - </step>
1633   -
1634   - <step_error_handling>
1635   - <error>
1636   - <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars</source_step>
1637   - <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa;</target_step>
1638   - <is_enabled>Y</is_enabled>
1639   - <nr_valuename>error_count</nr_valuename>
1640   - <descriptions_valuename>error_desc</descriptions_valuename>
1641   - <fields_valuename>error_column1</fields_valuename>
1642   - <codes_valuename>error_column2</codes_valuename>
1643   - <max_errors/>
1644   - <max_pct_errors/>
1645   - <min_pct_rows/>
1646   - </error>
1647   - </step_error_handling>
1648   - <slave-step-copy-partition-distribution>
1649   -</slave-step-copy-partition-distribution>
1650   - <slave_transformation>N</slave_transformation>
1651   -
1652   -</transformation>
1653   -=======
1654 1 <?xml version="1.0" encoding="UTF-8"?>
1655 2 <transformation>
1656 3 <info>
... ... @@ -1760,14 +107,68 @@
1760 107 </notepad>
1761 108 </notepads>
1762 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>
1763 137 <name>bus_control_&#x516c;&#x53f8;_201</name>
1764   - <server>192.168.168.201</server>
  138 + <server>localhost</server>
1765 139 <type>MYSQL</type>
1766 140 <access>Native</access>
1767 141 <database>control</database>
1768 142 <port>3306</port>
1769 143 <username>root</username>
1770   - <password>Encrypted 2be98afc86aa7f2e4cb79ff228dc6fa8c</password>
  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>
1771 172 <servername/>
1772 173 <data_tablespace/>
1773 174 <index_tablespace/>
... ... @@ -2576,7 +977,7 @@
2576 977 <method>none</method>
2577 978 <schema_name/>
2578 979 </partitioning>
2579   - <connection>bus_control_&#x516c;&#x53f8;_201</connection>
  980 + <connection>bus_control_variable</connection>
2580 981 <commit>1000</commit>
2581 982 <update_bypassed>N</update_bypassed>
2582 983 <lookup>
... ... @@ -3296,4 +1697,3 @@
3296 1697 <slave_transformation>N</slave_transformation>
3297 1698  
3298 1699 </transformation>
3299   ->>>>>>> 502f6f7ff3ff76f0f6b6dbdac8a353604a7d5626
... ...
src/main/resources/datatools/ktrs/employeesConfigDataInput.ktr
1   -<?xml version="1.0" encoding="UTF-8"?>
2   -<transformation>
3   - <info>
4   - <name>employeesConfigDataInput</name>
5   - <description>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description>
6   - <extended_description>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#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 15&#x3a;12&#x3a;27.273</created_date>
81   - <modified_user>-</modified_user>
82   - <modified_date>2016&#x2f;06&#x2f;29 15&#x3a;12&#x3a;27.273</modified_date>
83   - <key_for_session_key/>
84   - <is_key_private>N</is_key_private>
85   - </info>
86   - <notepads>
87   - <notepad>
88   - <note>&#x539f;&#x7cfb;&#x7edf;&#x7684;&#x8868;&#x4e2d;&#xff0c;&#x8f66;&#x8f86;&#x5185;&#x90e8;&#x7f16;&#x7801;&#x662f;&#x6ca1;&#x7684;&#xff0c;&#xa;&#x642d;&#x73ed;&#x7f16;&#x7801; &#x8fd9;&#x4e2a;&#x8c8c;&#x4f3c;&#x7528;&#x4e8e;&#x9a7e;&#x9a76;&#x5458;&#x548c;&#x552e;&#x7968;&#x5458;&#x7528;&#x7684;&#xff0c;&#x597d;&#x50cf;&#x4e0d;&#x80fd;&#x4e00;&#x6837;&#x7684;&#xa;&#x8f66;&#x8f86;&#x5185;&#x90e8;&#x7f16;&#x7801; &#x6ca1;&#x6709;&#x6682;&#x65f6;&#x7a7a;&#x7740;</note>
89   - <xloc>252</xloc>
90   - <yloc>178</yloc>
91   - <width>341</width>
92   - <heigth>58</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;&#x8be2;&#x7ebf;&#x8def;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
218   - <hop> <from>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
219   - <hop> <from>&#x67e5;&#x8be2;&#x552e;&#x7968;&#x5458;&#x5173;&#x8054;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</to><enabled>Y</enabled> </hop>
220   - <hop> <from>&#x67e5;&#x8be2;&#x7ebf;&#x8def;&#x5173;&#x8054;</from><to>&#x67e5;&#x8be2;&#x9a7e;&#x9a76;&#x5458;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
221   - <hop> <from>&#x67e5;&#x8be2;&#x9a7e;&#x9a76;&#x5458;&#x5173;&#x8054;</from><to>&#x67e5;&#x8be2;&#x552e;&#x7968;&#x5458;&#x5173;&#x8054;</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>&#x642d;&#x73ed;&#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>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</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>&#x9a7e;&#x9a76;&#x5458;</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>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</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   - <field>
319   - <name>&#x552e;&#x7968;&#x5458;</name>
320   - <type>String</type>
321   - <length>-1</length>
322   - <precision>-1</precision>
323   - <trim_type>none</trim_type>
324   - <repeat>N</repeat>
325   - <format/>
326   - <currency/>
327   - <decimal/>
328   - <group/>
329   - </field>
330   - <field>
331   - <name>&#x8f66;&#x8f86;</name>
332   - <type>String</type>
333   - <length>-1</length>
334   - <precision>-1</precision>
335   - <trim_type>none</trim_type>
336   - <repeat>N</repeat>
337   - <format/>
338   - <currency/>
339   - <decimal/>
340   - <group/>
341   - </field>
342   - </fields>
343   - <sheets>
344   - <sheet>
345   - <name>&#x5de5;&#x4f5c;&#x8868;1</name>
346   - <startrow>0</startrow>
347   - <startcol>0</startcol>
348   - </sheet>
349   - </sheets>
350   - <strict_types>N</strict_types>
351   - <error_ignored>N</error_ignored>
352   - <error_line_skipped>N</error_line_skipped>
353   - <bad_line_files_destination_directory/>
354   - <bad_line_files_extension>warning</bad_line_files_extension>
355   - <error_line_files_destination_directory/>
356   - <error_line_files_extension>error</error_line_files_extension>
357   - <line_number_files_destination_directory/>
358   - <line_number_files_extension>line</line_number_files_extension>
359   - <shortFileFieldName/>
360   - <pathFieldName/>
361   - <hiddenFieldName/>
362   - <lastModificationTimeFieldName/>
363   - <uriNameFieldName/>
364   - <rootUriNameFieldName/>
365   - <extensionFieldName/>
366   - <sizeFieldName/>
367   - <spreadsheet_type>JXL</spreadsheet_type>
368   - <cluster_schema/>
369   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
370   - <xloc>144</xloc>
371   - <yloc>49</yloc>
372   - <draw>Y</draw>
373   - </GUI>
374   - </step>
375   -
376   - <step>
377   - <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
378   - <type>SelectValues</type>
379   - <description/>
380   - <distribute>Y</distribute>
381   - <custom_distribution/>
382   - <copies>1</copies>
383   - <partitioning>
384   - <method>none</method>
385   - <schema_name/>
386   - </partitioning>
387   - <fields> <field> <name>&#x7ebf;&#x8def;</name>
388   - <rename>xl</rename>
389   - <length>-2</length>
390   - <precision>-2</precision>
391   - </field> <field> <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>
392   - <rename>dbbm</rename>
393   - <length>-2</length>
394   - <precision>-2</precision>
395   - </field> <field> <name>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</name>
396   - <rename>jsy_no</rename>
397   - <length>-2</length>
398   - <precision>-2</precision>
399   - </field> <field> <name>&#x9a7e;&#x9a76;&#x5458;</name>
400   - <rename>jsy_name</rename>
401   - <length>-2</length>
402   - <precision>-2</precision>
403   - </field> <field> <name>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</name>
404   - <rename>spy_no</rename>
405   - <length>-2</length>
406   - <precision>-2</precision>
407   - </field> <field> <name>&#x552e;&#x7968;&#x5458;</name>
408   - <rename>spy_name</rename>
409   - <length>-2</length>
410   - <precision>-2</precision>
411   - </field> <field> <name>&#x8f66;&#x8f86;</name>
412   - <rename>cl</rename>
413   - <length>-2</length>
414   - <precision>-2</precision>
415   - </field> <select_unspecified>N</select_unspecified>
416   - </fields> <cluster_schema/>
417   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
418   - <xloc>294</xloc>
419   - <yloc>50</yloc>
420   - <draw>Y</draw>
421   - </GUI>
422   - </step>
423   -
424   - <step>
425   - <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</name>
426   - <type>InsertUpdate</type>
427   - <description/>
428   - <distribute>Y</distribute>
429   - <custom_distribution/>
430   - <copies>1</copies>
431   - <partitioning>
432   - <method>none</method>
433   - <schema_name/>
434   - </partitioning>
435   - <connection>bus_control_&#x516c;&#x53f8;_201</connection>
436   - <commit>100</commit>
437   - <update_bypassed>N</update_bypassed>
438   - <lookup>
439   - <schema/>
440   - <table>bsth_c_s_ecinfo</table>
441   - <key>
442   - <name>xlid</name>
443   - <field>xl</field>
444   - <condition>&#x3d;</condition>
445   - <name2/>
446   - </key>
447   - <key>
448   - <name>jsyid</name>
449   - <field>jsy</field>
450   - <condition>&#x3d;</condition>
451   - <name2/>
452   - </key>
453   - <key>
454   - <name>spyid</name>
455   - <field>spy</field>
456   - <condition>&#x3d;</condition>
457   - <name2/>
458   - </key>
459   - <value>
460   - <name>xl</name>
461   - <rename>xlid</rename>
462   - <update>Y</update>
463   - </value>
464   - <value>
465   - <name>dbbm</name>
466   - <rename>dbbm</rename>
467   - <update>Y</update>
468   - </value>
469   - <value>
470   - <name>jsy</name>
471   - <rename>jsyid</rename>
472   - <update>Y</update>
473   - </value>
474   - <value>
475   - <name>spy</name>
476   - <rename>spyid</rename>
477   - <update>Y</update>
478   - </value>
479   - </lookup>
480   - <cluster_schema/>
481   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
482   - <xloc>721</xloc>
483   - <yloc>181</yloc>
484   - <draw>Y</draw>
485   - </GUI>
486   - </step>
487   -
488   - <step>
489   - <name>&#x67e5;&#x8be2;&#x552e;&#x7968;&#x5458;&#x5173;&#x8054;</name>
490   - <type>DBLookup</type>
491   - <description/>
492   - <distribute>Y</distribute>
493   - <custom_distribution/>
494   - <copies>1</copies>
495   - <partitioning>
496   - <method>none</method>
497   - <schema_name/>
498   - </partitioning>
499   - <connection>bus_control_&#x516c;&#x53f8;_201</connection>
500   - <cache>N</cache>
501   - <cache_load_all>N</cache_load_all>
502   - <cache_size>0</cache_size>
503   - <lookup>
504   - <schema/>
505   - <table>bsth_c_personnel</table>
506   - <orderby/>
507   - <fail_on_multiple>N</fail_on_multiple>
508   - <eat_row_on_failure>N</eat_row_on_failure>
509   - <key>
510   - <name>spy_no</name>
511   - <field>job_code</field>
512   - <condition>&#x3d;</condition>
513   - <name2/>
514   - </key>
515   - <value>
516   - <name>id</name>
517   - <rename>spyid</rename>
518   - <default/>
519   - <type>Integer</type>
520   - </value>
521   - </lookup>
522   - <cluster_schema/>
523   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
524   - <xloc>720</xloc>
525   - <yloc>51</yloc>
526   - <draw>Y</draw>
527   - </GUI>
528   - </step>
529   -
530   - <step>
531   - <name>&#x67e5;&#x8be2;&#x7ebf;&#x8def;&#x5173;&#x8054;</name>
532   - <type>DBLookup</type>
533   - <description/>
534   - <distribute>Y</distribute>
535   - <custom_distribution/>
536   - <copies>1</copies>
537   - <partitioning>
538   - <method>none</method>
539   - <schema_name/>
540   - </partitioning>
541   - <connection>bus_control_&#x516c;&#x53f8;_201</connection>
542   - <cache>N</cache>
543   - <cache_load_all>N</cache_load_all>
544   - <cache_size>0</cache_size>
545   - <lookup>
546   - <schema/>
547   - <table>bsth_c_line</table>
548   - <orderby/>
549   - <fail_on_multiple>N</fail_on_multiple>
550   - <eat_row_on_failure>N</eat_row_on_failure>
551   - <key>
552   - <name>xl</name>
553   - <field>name</field>
554   - <condition>&#x3d;</condition>
555   - <name2/>
556   - </key>
557   - <value>
558   - <name>id</name>
559   - <rename>xlid</rename>
560   - <default/>
561   - <type>Integer</type>
562   - </value>
563   - </lookup>
564   - <cluster_schema/>
565   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
566   - <xloc>429</xloc>
567   - <yloc>51</yloc>
568   - <draw>Y</draw>
569   - </GUI>
570   - </step>
571   -
572   - <step>
573   - <name>&#x67e5;&#x8be2;&#x9a7e;&#x9a76;&#x5458;&#x5173;&#x8054;</name>
574   - <type>DBLookup</type>
575   - <description/>
576   - <distribute>Y</distribute>
577   - <custom_distribution/>
578   - <copies>1</copies>
579   - <partitioning>
580   - <method>none</method>
581   - <schema_name/>
582   - </partitioning>
583   - <connection>bus_control_&#x516c;&#x53f8;_201</connection>
584   - <cache>N</cache>
585   - <cache_load_all>N</cache_load_all>
586   - <cache_size>0</cache_size>
587   - <lookup>
588   - <schema/>
589   - <table>bsth_c_personnel</table>
590   - <orderby/>
591   - <fail_on_multiple>N</fail_on_multiple>
592   - <eat_row_on_failure>N</eat_row_on_failure>
593   - <key>
594   - <name>jsy_no</name>
595   - <field>job_code</field>
596   - <condition>&#x3d;</condition>
597   - <name2/>
598   - </key>
599   - <value>
600   - <name>id</name>
601   - <rename>jsyid</rename>
602   - <default/>
603   - <type>Integer</type>
604   - </value>
605   - </lookup>
606   - <cluster_schema/>
607   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
608   - <xloc>573</xloc>
609   - <yloc>51</yloc>
610   - <draw>Y</draw>
611   - </GUI>
612   - </step>
613   -
614   - <step>
615   - <name>&#x9519;&#x8bef;&#x8f93;&#x51fa;</name>
616   - <type>ExcelOutput</type>
617   - <description/>
618   - <distribute>Y</distribute>
619   - <custom_distribution/>
620   - <copies>1</copies>
621   - <partitioning>
622   - <method>none</method>
623   - <schema_name/>
624   - </partitioning>
625   - <header>Y</header>
626   - <footer>N</footer>
627   - <encoding>UTF-8</encoding>
628   - <append>N</append>
629   - <add_to_result_filenames>Y</add_to_result_filenames>
630   - <file>
631   - <name>&#x24;&#x7b;erroroutputdir&#x7d;&#x2f;&#x4eba;&#x5458;&#x914d;&#x7f6e;_&#x9519;&#x8bef;</name>
632   - <extention>xls</extention>
633   - <do_not_open_newfile_init>N</do_not_open_newfile_init>
634   - <create_parent_folder>N</create_parent_folder>
635   - <split>N</split>
636   - <add_date>N</add_date>
637   - <add_time>N</add_time>
638   - <SpecifyFormat>N</SpecifyFormat>
639   - <date_time_format/>
640   - <sheetname>Sheet1</sheetname>
641   - <autosizecolums>N</autosizecolums>
642   - <nullisblank>N</nullisblank>
643   - <protect_sheet>N</protect_sheet>
644   - <password>Encrypted </password>
645   - <splitevery>0</splitevery>
646   - <usetempfiles>N</usetempfiles>
647   - <tempdirectory/>
648   - </file>
649   - <template>
650   - <enabled>N</enabled>
651   - <append>N</append>
652   - <filename>template.xls</filename>
653   - </template>
654   - <fields>
655   - <field>
656   - <name>xl</name>
657   - <type>String</type>
658   - <format/>
659   - </field>
660   - <field>
661   - <name>dbbm</name>
662   - <type>String</type>
663   - <format/>
664   - </field>
665   - <field>
666   - <name>jsy_no</name>
667   - <type>String</type>
668   - <format/>
669   - </field>
670   - <field>
671   - <name>jsy_name</name>
672   - <type>String</type>
673   - <format/>
674   - </field>
675   - <field>
676   - <name>spy_no</name>
677   - <type>String</type>
678   - <format/>
679   - </field>
680   - <field>
681   - <name>spy_name</name>
682   - <type>String</type>
683   - <format/>
684   - </field>
685   - <field>
686   - <name>cl</name>
687   - <type>String</type>
688   - <format/>
689   - </field>
690   - <field>
691   - <name>xlid</name>
692   - <type>Integer</type>
693   - <format/>
694   - </field>
695   - <field>
696   - <name>jsyid</name>
697   - <type>Integer</type>
698   - <format/>
699   - </field>
700   - <field>
701   - <name>spyid</name>
702   - <type>Integer</type>
703   - <format/>
704   - </field>
705   - <field>
706   - <name>error_count</name>
707   - <type>Integer</type>
708   - <format/>
709   - </field>
710   - <field>
711   - <name>error_desc</name>
712   - <type>String</type>
713   - <format/>
714   - </field>
715   - <field>
716   - <name>error_column1</name>
717   - <type>String</type>
718   - <format/>
719   - </field>
720   - <field>
721   - <name>error_column2</name>
722   - <type>String</type>
723   - <format/>
724   - </field>
725   - </fields>
726   - <custom>
727   - <header_font_name>arial</header_font_name>
728   - <header_font_size>10</header_font_size>
729   - <header_font_bold>N</header_font_bold>
730   - <header_font_italic>N</header_font_italic>
731   - <header_font_underline>no</header_font_underline>
732   - <header_font_orientation>horizontal</header_font_orientation>
733   - <header_font_color>black</header_font_color>
734   - <header_background_color>none</header_background_color>
735   - <header_row_height>255</header_row_height>
736   - <header_alignment>left</header_alignment>
737   - <header_image/>
738   - <row_font_name>arial</row_font_name>
739   - <row_font_size>10</row_font_size>
740   - <row_font_color>black</row_font_color>
741   - <row_background_color>none</row_background_color>
742   - </custom>
743   - <cluster_schema/>
744   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
745   - <xloc>721</xloc>
746   - <yloc>304</yloc>
747   - <draw>Y</draw>
748   - </GUI>
749   - </step>
750   -
751   - <step>
752   - <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>
753   - <type>GetVariable</type>
754   - <description/>
755   - <distribute>Y</distribute>
756   - <custom_distribution/>
757   - <copies>1</copies>
758   - <partitioning>
759   - <method>none</method>
760   - <schema_name/>
761   - </partitioning>
762   - <fields>
763   - <field>
764   - <name>filepath_</name>
765   - <variable>&#x24;&#x7b;filepath&#x7d;</variable>
766   - <type>String</type>
767   - <format/>
768   - <currency/>
769   - <decimal/>
770   - <group/>
771   - <length>-1</length>
772   - <precision>-1</precision>
773   - <trim_type>none</trim_type>
774   - </field>
775   - <field>
776   - <name>erroroutputdir_</name>
777   - <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
778   - <type>String</type>
779   - <format/>
780   - <currency/>
781   - <decimal/>
782   - <group/>
783   - <length>-1</length>
784   - <precision>-1</precision>
785   - <trim_type>none</trim_type>
786   - </field>
787   - </fields>
788   - <cluster_schema/>
789   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
790   - <xloc>94</xloc>
791   - <yloc>178</yloc>
792   - <draw>Y</draw>
793   - </GUI>
794   - </step>
795   -
796   - <step_error_handling>
797   - <error>
798   - <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</source_step>
799   - <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa;</target_step>
800   - <is_enabled>Y</is_enabled>
801   - <nr_valuename>error_count</nr_valuename>
802   - <descriptions_valuename>error_desc</descriptions_valuename>
803   - <fields_valuename>error_column1</fields_valuename>
804   - <codes_valuename>error_column2</codes_valuename>
805   - <max_errors/>
806   - <max_pct_errors/>
807   - <min_pct_rows/>
808   - </error>
809   - </step_error_handling>
810   - <slave-step-copy-partition-distribution>
811   -</slave-step-copy-partition-distribution>
812   - <slave_transformation>N</slave_transformation>
813   -
814   -</transformation>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>employeesConfigDataInput</name>
  5 + <description>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description>
  6 + <extended_description>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#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 15&#x3a;12&#x3a;27.273</created_date>
  81 + <modified_user>-</modified_user>
  82 + <modified_date>2016&#x2f;06&#x2f;29 15&#x3a;12&#x3a;27.273</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>&#x539f;&#x7cfb;&#x7edf;&#x7684;&#x8868;&#x4e2d;&#xff0c;&#x8f66;&#x8f86;&#x5185;&#x90e8;&#x7f16;&#x7801;&#x662f;&#x6ca1;&#x7684;&#xff0c;&#xa;&#x642d;&#x73ed;&#x7f16;&#x7801; &#x8fd9;&#x4e2a;&#x8c8c;&#x4f3c;&#x7528;&#x4e8e;&#x9a7e;&#x9a76;&#x5458;&#x548c;&#x552e;&#x7968;&#x5458;&#x7528;&#x7684;&#xff0c;&#x597d;&#x50cf;&#x4e0d;&#x80fd;&#x4e00;&#x6837;&#x7684;&#xa;&#x8f66;&#x8f86;&#x5185;&#x90e8;&#x7f16;&#x7801; &#x6ca1;&#x6709;&#x6682;&#x65f6;&#x7a7a;&#x7740;</note>
  89 + <xloc>252</xloc>
  90 + <yloc>178</yloc>
  91 + <width>341</width>
  92 + <heigth>58</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;&#x8be2;&#x7ebf;&#x8def;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
  272 + <hop> <from>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
  273 + <hop> <from>&#x67e5;&#x8be2;&#x552e;&#x7968;&#x5458;&#x5173;&#x8054;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</to><enabled>Y</enabled> </hop>
  274 + <hop> <from>&#x67e5;&#x8be2;&#x7ebf;&#x8def;&#x5173;&#x8054;</from><to>&#x67e5;&#x8be2;&#x9a7e;&#x9a76;&#x5458;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
  275 + <hop> <from>&#x67e5;&#x8be2;&#x9a7e;&#x9a76;&#x5458;&#x5173;&#x8054;</from><to>&#x67e5;&#x8be2;&#x552e;&#x7968;&#x5458;&#x5173;&#x8054;</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>&#x642d;&#x73ed;&#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>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</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>&#x9a7e;&#x9a76;&#x5458;</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>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</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 + <field>
  373 + <name>&#x552e;&#x7968;&#x5458;</name>
  374 + <type>String</type>
  375 + <length>-1</length>
  376 + <precision>-1</precision>
  377 + <trim_type>none</trim_type>
  378 + <repeat>N</repeat>
  379 + <format/>
  380 + <currency/>
  381 + <decimal/>
  382 + <group/>
  383 + </field>
  384 + <field>
  385 + <name>&#x8f66;&#x8f86;</name>
  386 + <type>String</type>
  387 + <length>-1</length>
  388 + <precision>-1</precision>
  389 + <trim_type>none</trim_type>
  390 + <repeat>N</repeat>
  391 + <format/>
  392 + <currency/>
  393 + <decimal/>
  394 + <group/>
  395 + </field>
  396 + </fields>
  397 + <sheets>
  398 + <sheet>
  399 + <name>&#x5de5;&#x4f5c;&#x8868;1</name>
  400 + <startrow>0</startrow>
  401 + <startcol>0</startcol>
  402 + </sheet>
  403 + </sheets>
  404 + <strict_types>N</strict_types>
  405 + <error_ignored>N</error_ignored>
  406 + <error_line_skipped>N</error_line_skipped>
  407 + <bad_line_files_destination_directory/>
  408 + <bad_line_files_extension>warning</bad_line_files_extension>
  409 + <error_line_files_destination_directory/>
  410 + <error_line_files_extension>error</error_line_files_extension>
  411 + <line_number_files_destination_directory/>
  412 + <line_number_files_extension>line</line_number_files_extension>
  413 + <shortFileFieldName/>
  414 + <pathFieldName/>
  415 + <hiddenFieldName/>
  416 + <lastModificationTimeFieldName/>
  417 + <uriNameFieldName/>
  418 + <rootUriNameFieldName/>
  419 + <extensionFieldName/>
  420 + <sizeFieldName/>
  421 + <spreadsheet_type>JXL</spreadsheet_type>
  422 + <cluster_schema/>
  423 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  424 + <xloc>144</xloc>
  425 + <yloc>49</yloc>
  426 + <draw>Y</draw>
  427 + </GUI>
  428 + </step>
  429 +
  430 + <step>
  431 + <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
  432 + <type>SelectValues</type>
  433 + <description/>
  434 + <distribute>Y</distribute>
  435 + <custom_distribution/>
  436 + <copies>1</copies>
  437 + <partitioning>
  438 + <method>none</method>
  439 + <schema_name/>
  440 + </partitioning>
  441 + <fields> <field> <name>&#x7ebf;&#x8def;</name>
  442 + <rename>xl</rename>
  443 + <length>-2</length>
  444 + <precision>-2</precision>
  445 + </field> <field> <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>
  446 + <rename>dbbm</rename>
  447 + <length>-2</length>
  448 + <precision>-2</precision>
  449 + </field> <field> <name>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</name>
  450 + <rename>jsy_no</rename>
  451 + <length>-2</length>
  452 + <precision>-2</precision>
  453 + </field> <field> <name>&#x9a7e;&#x9a76;&#x5458;</name>
  454 + <rename>jsy_name</rename>
  455 + <length>-2</length>
  456 + <precision>-2</precision>
  457 + </field> <field> <name>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</name>
  458 + <rename>spy_no</rename>
  459 + <length>-2</length>
  460 + <precision>-2</precision>
  461 + </field> <field> <name>&#x552e;&#x7968;&#x5458;</name>
  462 + <rename>spy_name</rename>
  463 + <length>-2</length>
  464 + <precision>-2</precision>
  465 + </field> <field> <name>&#x8f66;&#x8f86;</name>
  466 + <rename>cl</rename>
  467 + <length>-2</length>
  468 + <precision>-2</precision>
  469 + </field> <select_unspecified>N</select_unspecified>
  470 + </fields> <cluster_schema/>
  471 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  472 + <xloc>294</xloc>
  473 + <yloc>50</yloc>
  474 + <draw>Y</draw>
  475 + </GUI>
  476 + </step>
  477 +
  478 + <step>
  479 + <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</name>
  480 + <type>InsertUpdate</type>
  481 + <description/>
  482 + <distribute>Y</distribute>
  483 + <custom_distribution/>
  484 + <copies>1</copies>
  485 + <partitioning>
  486 + <method>none</method>
  487 + <schema_name/>
  488 + </partitioning>
  489 + <connection>bus_control_variable</connection>
  490 + <commit>100</commit>
  491 + <update_bypassed>N</update_bypassed>
  492 + <lookup>
  493 + <schema/>
  494 + <table>bsth_c_s_ecinfo</table>
  495 + <key>
  496 + <name>xlid</name>
  497 + <field>xl</field>
  498 + <condition>&#x3d;</condition>
  499 + <name2/>
  500 + </key>
  501 + <key>
  502 + <name>jsyid</name>
  503 + <field>jsy</field>
  504 + <condition>&#x3d;</condition>
  505 + <name2/>
  506 + </key>
  507 + <key>
  508 + <name>spyid</name>
  509 + <field>spy</field>
  510 + <condition>&#x3d;</condition>
  511 + <name2/>
  512 + </key>
  513 + <value>
  514 + <name>xl</name>
  515 + <rename>xlid</rename>
  516 + <update>Y</update>
  517 + </value>
  518 + <value>
  519 + <name>dbbm</name>
  520 + <rename>dbbm</rename>
  521 + <update>Y</update>
  522 + </value>
  523 + <value>
  524 + <name>jsy</name>
  525 + <rename>jsyid</rename>
  526 + <update>Y</update>
  527 + </value>
  528 + <value>
  529 + <name>spy</name>
  530 + <rename>spyid</rename>
  531 + <update>Y</update>
  532 + </value>
  533 + </lookup>
  534 + <cluster_schema/>
  535 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  536 + <xloc>721</xloc>
  537 + <yloc>181</yloc>
  538 + <draw>Y</draw>
  539 + </GUI>
  540 + </step>
  541 +
  542 + <step>
  543 + <name>&#x67e5;&#x8be2;&#x552e;&#x7968;&#x5458;&#x5173;&#x8054;</name>
  544 + <type>DBLookup</type>
  545 + <description/>
  546 + <distribute>Y</distribute>
  547 + <custom_distribution/>
  548 + <copies>1</copies>
  549 + <partitioning>
  550 + <method>none</method>
  551 + <schema_name/>
  552 + </partitioning>
  553 + <connection>bus_control_variable</connection>
  554 + <cache>N</cache>
  555 + <cache_load_all>N</cache_load_all>
  556 + <cache_size>0</cache_size>
  557 + <lookup>
  558 + <schema/>
  559 + <table>bsth_c_personnel</table>
  560 + <orderby/>
  561 + <fail_on_multiple>N</fail_on_multiple>
  562 + <eat_row_on_failure>N</eat_row_on_failure>
  563 + <key>
  564 + <name>spy_no</name>
  565 + <field>job_code</field>
  566 + <condition>&#x3d;</condition>
  567 + <name2/>
  568 + </key>
  569 + <value>
  570 + <name>id</name>
  571 + <rename>spyid</rename>
  572 + <default/>
  573 + <type>Integer</type>
  574 + </value>
  575 + </lookup>
  576 + <cluster_schema/>
  577 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  578 + <xloc>720</xloc>
  579 + <yloc>51</yloc>
  580 + <draw>Y</draw>
  581 + </GUI>
  582 + </step>
  583 +
  584 + <step>
  585 + <name>&#x67e5;&#x8be2;&#x7ebf;&#x8def;&#x5173;&#x8054;</name>
  586 + <type>DBLookup</type>
  587 + <description/>
  588 + <distribute>Y</distribute>
  589 + <custom_distribution/>
  590 + <copies>1</copies>
  591 + <partitioning>
  592 + <method>none</method>
  593 + <schema_name/>
  594 + </partitioning>
  595 + <connection>bus_control_variable</connection>
  596 + <cache>N</cache>
  597 + <cache_load_all>N</cache_load_all>
  598 + <cache_size>0</cache_size>
  599 + <lookup>
  600 + <schema/>
  601 + <table>bsth_c_line</table>
  602 + <orderby/>
  603 + <fail_on_multiple>N</fail_on_multiple>
  604 + <eat_row_on_failure>N</eat_row_on_failure>
  605 + <key>
  606 + <name>xl</name>
  607 + <field>name</field>
  608 + <condition>&#x3d;</condition>
  609 + <name2/>
  610 + </key>
  611 + <value>
  612 + <name>id</name>
  613 + <rename>xlid</rename>
  614 + <default/>
  615 + <type>Integer</type>
  616 + </value>
  617 + </lookup>
  618 + <cluster_schema/>
  619 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  620 + <xloc>429</xloc>
  621 + <yloc>51</yloc>
  622 + <draw>Y</draw>
  623 + </GUI>
  624 + </step>
  625 +
  626 + <step>
  627 + <name>&#x67e5;&#x8be2;&#x9a7e;&#x9a76;&#x5458;&#x5173;&#x8054;</name>
  628 + <type>DBLookup</type>
  629 + <description/>
  630 + <distribute>Y</distribute>
  631 + <custom_distribution/>
  632 + <copies>1</copies>
  633 + <partitioning>
  634 + <method>none</method>
  635 + <schema_name/>
  636 + </partitioning>
  637 + <connection>bus_control_variable</connection>
  638 + <cache>N</cache>
  639 + <cache_load_all>N</cache_load_all>
  640 + <cache_size>0</cache_size>
  641 + <lookup>
  642 + <schema/>
  643 + <table>bsth_c_personnel</table>
  644 + <orderby/>
  645 + <fail_on_multiple>N</fail_on_multiple>
  646 + <eat_row_on_failure>N</eat_row_on_failure>
  647 + <key>
  648 + <name>jsy_no</name>
  649 + <field>job_code</field>
  650 + <condition>&#x3d;</condition>
  651 + <name2/>
  652 + </key>
  653 + <value>
  654 + <name>id</name>
  655 + <rename>jsyid</rename>
  656 + <default/>
  657 + <type>Integer</type>
  658 + </value>
  659 + </lookup>
  660 + <cluster_schema/>
  661 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  662 + <xloc>573</xloc>
  663 + <yloc>51</yloc>
  664 + <draw>Y</draw>
  665 + </GUI>
  666 + </step>
  667 +
  668 + <step>
  669 + <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>
  670 + <type>GetVariable</type>
  671 + <description/>
  672 + <distribute>Y</distribute>
  673 + <custom_distribution/>
  674 + <copies>1</copies>
  675 + <partitioning>
  676 + <method>none</method>
  677 + <schema_name/>
  678 + </partitioning>
  679 + <fields>
  680 + <field>
  681 + <name>filepath_</name>
  682 + <variable>&#x24;&#x7b;filepath&#x7d;</variable>
  683 + <type>String</type>
  684 + <format/>
  685 + <currency/>
  686 + <decimal/>
  687 + <group/>
  688 + <length>-1</length>
  689 + <precision>-1</precision>
  690 + <trim_type>none</trim_type>
  691 + </field>
  692 + <field>
  693 + <name>erroroutputdir_</name>
  694 + <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
  695 + <type>String</type>
  696 + <format/>
  697 + <currency/>
  698 + <decimal/>
  699 + <group/>
  700 + <length>-1</length>
  701 + <precision>-1</precision>
  702 + <trim_type>none</trim_type>
  703 + </field>
  704 + </fields>
  705 + <cluster_schema/>
  706 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  707 + <xloc>94</xloc>
  708 + <yloc>178</yloc>
  709 + <draw>Y</draw>
  710 + </GUI>
  711 + </step>
  712 +
  713 + <step>
  714 + <name>&#x9519;&#x8bef;&#x8f93;&#x51fa;</name>
  715 + <type>ExcelOutput</type>
  716 + <description/>
  717 + <distribute>Y</distribute>
  718 + <custom_distribution/>
  719 + <copies>1</copies>
  720 + <partitioning>
  721 + <method>none</method>
  722 + <schema_name/>
  723 + </partitioning>
  724 + <header>Y</header>
  725 + <footer>N</footer>
  726 + <encoding>UTF-8</encoding>
  727 + <append>N</append>
  728 + <add_to_result_filenames>Y</add_to_result_filenames>
  729 + <file>
  730 + <name>&#x24;&#x7b;erroroutputdir&#x7d;&#x2f;&#x4eba;&#x5458;&#x914d;&#x7f6e;_&#x9519;&#x8bef;</name>
  731 + <extention>xls</extention>
  732 + <do_not_open_newfile_init>N</do_not_open_newfile_init>
  733 + <create_parent_folder>N</create_parent_folder>
  734 + <split>N</split>
  735 + <add_date>N</add_date>
  736 + <add_time>N</add_time>
  737 + <SpecifyFormat>N</SpecifyFormat>
  738 + <date_time_format/>
  739 + <sheetname>Sheet1</sheetname>
  740 + <autosizecolums>N</autosizecolums>
  741 + <nullisblank>N</nullisblank>
  742 + <protect_sheet>N</protect_sheet>
  743 + <password>Encrypted </password>
  744 + <splitevery>0</splitevery>
  745 + <usetempfiles>N</usetempfiles>
  746 + <tempdirectory/>
  747 + </file>
  748 + <template>
  749 + <enabled>N</enabled>
  750 + <append>N</append>
  751 + <filename>template.xls</filename>
  752 + </template>
  753 + <fields>
  754 + <field>
  755 + <name>xl</name>
  756 + <type>String</type>
  757 + <format/>
  758 + </field>
  759 + <field>
  760 + <name>dbbm</name>
  761 + <type>String</type>
  762 + <format/>
  763 + </field>
  764 + <field>
  765 + <name>jsy_no</name>
  766 + <type>String</type>
  767 + <format/>
  768 + </field>
  769 + <field>
  770 + <name>jsy_name</name>
  771 + <type>String</type>
  772 + <format/>
  773 + </field>
  774 + <field>
  775 + <name>spy_no</name>
  776 + <type>String</type>
  777 + <format/>
  778 + </field>
  779 + <field>
  780 + <name>spy_name</name>
  781 + <type>String</type>
  782 + <format/>
  783 + </field>
  784 + <field>
  785 + <name>cl</name>
  786 + <type>String</type>
  787 + <format/>
  788 + </field>
  789 + <field>
  790 + <name>xlid</name>
  791 + <type>Integer</type>
  792 + <format/>
  793 + </field>
  794 + <field>
  795 + <name>jsyid</name>
  796 + <type>Integer</type>
  797 + <format/>
  798 + </field>
  799 + <field>
  800 + <name>spyid</name>
  801 + <type>Integer</type>
  802 + <format/>
  803 + </field>
  804 + <field>
  805 + <name>error_count</name>
  806 + <type>Integer</type>
  807 + <format/>
  808 + </field>
  809 + <field>
  810 + <name>error_desc</name>
  811 + <type>String</type>
  812 + <format/>
  813 + </field>
  814 + <field>
  815 + <name>error_column1</name>
  816 + <type>String</type>
  817 + <format/>
  818 + </field>
  819 + <field>
  820 + <name>error_column2</name>
  821 + <type>String</type>
  822 + <format/>
  823 + </field>
  824 + </fields>
  825 + <custom>
  826 + <header_font_name>arial</header_font_name>
  827 + <header_font_size>10</header_font_size>
  828 + <header_font_bold>N</header_font_bold>
  829 + <header_font_italic>N</header_font_italic>
  830 + <header_font_underline>no</header_font_underline>
  831 + <header_font_orientation>horizontal</header_font_orientation>
  832 + <header_font_color>black</header_font_color>
  833 + <header_background_color>none</header_background_color>
  834 + <header_row_height>255</header_row_height>
  835 + <header_alignment>left</header_alignment>
  836 + <header_image/>
  837 + <row_font_name>arial</row_font_name>
  838 + <row_font_size>10</row_font_size>
  839 + <row_font_color>black</row_font_color>
  840 + <row_background_color>none</row_background_color>
  841 + </custom>
  842 + <cluster_schema/>
  843 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  844 + <xloc>721</xloc>
  845 + <yloc>304</yloc>
  846 + <draw>Y</draw>
  847 + </GUI>
  848 + </step>
  849 +
  850 + <step_error_handling>
  851 + <error>
  852 + <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</source_step>
  853 + <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa;</target_step>
  854 + <is_enabled>Y</is_enabled>
  855 + <nr_valuename>error_count</nr_valuename>
  856 + <descriptions_valuename>error_desc</descriptions_valuename>
  857 + <fields_valuename>error_column1</fields_valuename>
  858 + <codes_valuename>error_column2</codes_valuename>
  859 + <max_errors/>
  860 + <max_pct_errors/>
  861 + <min_pct_rows/>
  862 + </error>
  863 + </step_error_handling>
  864 + <slave-step-copy-partition-distribution>
  865 +</slave-step-copy-partition-distribution>
  866 + <slave_transformation>N</slave_transformation>
  867 +
  868 +</transformation>
... ...
src/main/resources/datatools/ktrs/employeesDataInput.ktr
... ... @@ -80,7 +80,7 @@
80 80 <created_date>2016&#x2f;06&#x2f;29 10&#x3a;18&#x3a;56.974</created_date>
81 81 <modified_user>-</modified_user>
82 82 <modified_date>2016&#x2f;06&#x2f;29 10&#x3a;18&#x3a;56.974</modified_date>
83   - <key_for_session_key/>
  83 + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
84 84 <is_key_private>N</is_key_private>
85 85 </info>
86 86 <notepads>
... ... @@ -107,14 +107,68 @@
107 107 </notepad>
108 108 </notepads>
109 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>
110 137 <name>bus_control_&#x516c;&#x53f8;_201</name>
111   - <server>192.168.168.201</server>
  138 + <server>localhost</server>
112 139 <type>MYSQL</type>
113 140 <access>Native</access>
114 141 <database>control</database>
115 142 <port>3306</port>
116 143 <username>root</username>
117   - <password>Encrypted 2be98afc86aa7f2e4cb79ff228dc6fa8c</password>
  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>
118 172 <servername/>
119 173 <data_tablespace/>
120 174 <index_tablespace/>
... ... @@ -222,6 +276,86 @@
222 276 <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>
223 277 </order>
224 278 <step>
  279 + <name>&#x503c;&#x6620;&#x5c04;</name>
  280 + <type>ValueMapper</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 + <field_to_use>posts</field_to_use>
  290 + <target_field/>
  291 + <non_match_default/>
  292 + <fields>
  293 + <field>
  294 + <source_value>&#x516c;&#x5171;&#x6c7d;&#x7535;&#x8f66;&#x9a7e;&#x9a76;&#x5458;</source_value>
  295 + <target_value>1</target_value>
  296 + </field>
  297 + <field>
  298 + <source_value>&#x516c;&#x5171;&#x6c7d;&#x7535;&#x8f66;&#x8c03;&#x5ea6;&#x5458;</source_value>
  299 + <target_value>2</target_value>
  300 + </field>
  301 + <field>
  302 + <source_value>&#x516c;&#x5171;&#x6c7d;&#x7535;&#x8f66;&#x552e;&#x7968;&#x5458;</source_value>
  303 + <target_value>3</target_value>
  304 + </field>
  305 + <field>
  306 + <source_value>&#x7ad9;&#x5458;</source_value>
  307 + <target_value>4</target_value>
  308 + </field>
  309 + <field>
  310 + <source_value>&#x7ba1;&#x7406;&#x5458;</source_value>
  311 + <target_value>5</target_value>
  312 + </field>
  313 + <field>
  314 + <source_value>&#x5b89;&#x68c0;&#x5458;</source_value>
  315 + <target_value>6</target_value>
  316 + </field>
  317 + <field>
  318 + <source_value>&#x673a;&#x52a1;</source_value>
  319 + <target_value>7</target_value>
  320 + </field>
  321 + <field>
  322 + <source_value>&#x5f15;&#x5bfc;&#x5458;</source_value>
  323 + <target_value>8</target_value>
  324 + </field>
  325 + <field>
  326 + <source_value>&#x4e58;&#x52a1;&#x5458;</source_value>
  327 + <target_value>9</target_value>
  328 + </field>
  329 + <field>
  330 + <source_value>&#x8f66;&#x961f;&#x957f;&#xff08;&#x7ebf;&#x957f;&#x3001;&#x4e3b;</source_value>
  331 + <target_value>10</target_value>
  332 + </field>
  333 + <field>
  334 + <source_value>&#x516c;&#x53f8;&#x7ba1;&#x7406;&#x4eba;&#x5458;</source_value>
  335 + <target_value>11</target_value>
  336 + </field>
  337 + <field>
  338 + <source_value>&#x8b66;&#x6d88;&#x4eba;&#x5458;</source_value>
  339 + <target_value>12</target_value>
  340 + </field>
  341 + <field>
  342 + <source_value>&#x7968;&#x52a1;&#x4eba;&#x5458;</source_value>
  343 + <target_value>13</target_value>
  344 + </field>
  345 + <field>
  346 + <source_value>&#x5176;&#x4ed6;&#x670d;&#x52a1;&#x4eba;&#x5458;</source_value>
  347 + <target_value>14</target_value>
  348 + </field>
  349 + </fields>
  350 + <cluster_schema/>
  351 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  352 + <xloc>543</xloc>
  353 + <yloc>152</yloc>
  354 + <draw>Y</draw>
  355 + </GUI>
  356 + </step>
  357 +
  358 + <step>
225 359 <name>&#x516c;&#x4ea4;&#x4f01;&#x4e1a;&#x4ee3;&#x7801;</name>
226 360 <type>ValueMapper</type>
227 361 <description/>
... ... @@ -544,7 +678,7 @@
544 678 <method>none</method>
545 679 <schema_name/>
546 680 </partitioning>
547   - <connection>bus_control_&#x516c;&#x53f8;_201</connection>
  681 + <connection>bus_control_variable</connection>
548 682 <commit>5000</commit>
549 683 <update_bypassed>N</update_bypassed>
550 684 <lookup>
... ... @@ -622,6 +756,51 @@
622 756 </step>
623 757  
624 758 <step>
  759 + <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>
  760 + <type>GetVariable</type>
  761 + <description/>
  762 + <distribute>Y</distribute>
  763 + <custom_distribution/>
  764 + <copies>1</copies>
  765 + <partitioning>
  766 + <method>none</method>
  767 + <schema_name/>
  768 + </partitioning>
  769 + <fields>
  770 + <field>
  771 + <name>filepath_</name>
  772 + <variable>&#x24;&#x7b;filepath&#x7d;</variable>
  773 + <type>String</type>
  774 + <format/>
  775 + <currency/>
  776 + <decimal/>
  777 + <group/>
  778 + <length>-1</length>
  779 + <precision>-1</precision>
  780 + <trim_type>none</trim_type>
  781 + </field>
  782 + <field>
  783 + <name>erroroutputdir_</name>
  784 + <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
  785 + <type>String</type>
  786 + <format/>
  787 + <currency/>
  788 + <decimal/>
  789 + <group/>
  790 + <length>-1</length>
  791 + <precision>-1</precision>
  792 + <trim_type>none</trim_type>
  793 + </field>
  794 + </fields>
  795 + <cluster_schema/>
  796 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  797 + <xloc>90</xloc>
  798 + <yloc>148</yloc>
  799 + <draw>Y</draw>
  800 + </GUI>
  801 + </step>
  802 +
  803 + <step>
625 804 <name>&#x9519;&#x8bef;&#x8f93;&#x51fa;</name>
626 805 <type>ExcelOutput</type>
627 806 <description/>
... ... @@ -758,131 +937,6 @@
758 937 </GUI>
759 938 </step>
760 939  
761   - <step>
762   - <name>&#x503c;&#x6620;&#x5c04;</name>
763   - <type>ValueMapper</type>
764   - <description/>
765   - <distribute>Y</distribute>
766   - <custom_distribution/>
767   - <copies>1</copies>
768   - <partitioning>
769   - <method>none</method>
770   - <schema_name/>
771   - </partitioning>
772   - <field_to_use>posts</field_to_use>
773   - <target_field/>
774   - <non_match_default/>
775   - <fields>
776   - <field>
777   - <source_value>&#x516c;&#x5171;&#x6c7d;&#x7535;&#x8f66;&#x9a7e;&#x9a76;&#x5458;</source_value>
778   - <target_value>1</target_value>
779   - </field>
780   - <field>
781   - <source_value>&#x516c;&#x5171;&#x6c7d;&#x7535;&#x8f66;&#x8c03;&#x5ea6;&#x5458;</source_value>
782   - <target_value>2</target_value>
783   - </field>
784   - <field>
785   - <source_value>&#x516c;&#x5171;&#x6c7d;&#x7535;&#x8f66;&#x552e;&#x7968;&#x5458;</source_value>
786   - <target_value>3</target_value>
787   - </field>
788   - <field>
789   - <source_value>&#x7ad9;&#x5458;</source_value>
790   - <target_value>4</target_value>
791   - </field>
792   - <field>
793   - <source_value>&#x7ba1;&#x7406;&#x5458;</source_value>
794   - <target_value>5</target_value>
795   - </field>
796   - <field>
797   - <source_value>&#x5b89;&#x68c0;&#x5458;</source_value>
798   - <target_value>6</target_value>
799   - </field>
800   - <field>
801   - <source_value>&#x673a;&#x52a1;</source_value>
802   - <target_value>7</target_value>
803   - </field>
804   - <field>
805   - <source_value>&#x5f15;&#x5bfc;&#x5458;</source_value>
806   - <target_value>8</target_value>
807   - </field>
808   - <field>
809   - <source_value>&#x4e58;&#x52a1;&#x5458;</source_value>
810   - <target_value>9</target_value>
811   - </field>
812   - <field>
813   - <source_value>&#x8f66;&#x961f;&#x957f;&#xff08;&#x7ebf;&#x957f;&#x3001;&#x4e3b;</source_value>
814   - <target_value>10</target_value>
815   - </field>
816   - <field>
817   - <source_value>&#x516c;&#x53f8;&#x7ba1;&#x7406;&#x4eba;&#x5458;</source_value>
818   - <target_value>11</target_value>
819   - </field>
820   - <field>
821   - <source_value>&#x8b66;&#x6d88;&#x4eba;&#x5458;</source_value>
822   - <target_value>12</target_value>
823   - </field>
824   - <field>
825   - <source_value>&#x7968;&#x52a1;&#x4eba;&#x5458;</source_value>
826   - <target_value>13</target_value>
827   - </field>
828   - <field>
829   - <source_value>&#x5176;&#x4ed6;&#x670d;&#x52a1;&#x4eba;&#x5458;</source_value>
830   - <target_value>14</target_value>
831   - </field>
832   - </fields>
833   - <cluster_schema/>
834   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
835   - <xloc>543</xloc>
836   - <yloc>152</yloc>
837   - <draw>Y</draw>
838   - </GUI>
839   - </step>
840   -
841   - <step>
842   - <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>
843   - <type>GetVariable</type>
844   - <description/>
845   - <distribute>Y</distribute>
846   - <custom_distribution/>
847   - <copies>1</copies>
848   - <partitioning>
849   - <method>none</method>
850   - <schema_name/>
851   - </partitioning>
852   - <fields>
853   - <field>
854   - <name>filepath_</name>
855   - <variable>&#x24;&#x7b;filepath&#x7d;</variable>
856   - <type>String</type>
857   - <format/>
858   - <currency/>
859   - <decimal/>
860   - <group/>
861   - <length>-1</length>
862   - <precision>-1</precision>
863   - <trim_type>none</trim_type>
864   - </field>
865   - <field>
866   - <name>erroroutputdir_</name>
867   - <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
868   - <type>String</type>
869   - <format/>
870   - <currency/>
871   - <decimal/>
872   - <group/>
873   - <length>-1</length>
874   - <precision>-1</precision>
875   - <trim_type>none</trim_type>
876   - </field>
877   - </fields>
878   - <cluster_schema/>
879   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
880   - <xloc>90</xloc>
881   - <yloc>148</yloc>
882   - <draw>Y</draw>
883   - </GUI>
884   - </step>
885   -
886 940 <step_error_handling>
887 941 <error>
888 942 <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_personnel</source_step>
... ...
src/main/resources/datatools/ktrs/guideboardDataInput.ktr
1   -<?xml version="1.0" encoding="UTF-8"?>
2   -<transformation>
3   - <info>
4   - <name>guideboardDataInput</name>
5   - <description>&#x8def;&#x724c;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description>
6   - <extended_description>&#x7ebf;&#x8def;&#x8fd0;&#x8425;&#x7684;&#x8def;&#x724c;&#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 17&#x3a;00&#x3a;01.094</created_date>
81   - <modified_user>-</modified_user>
82   - <modified_date>2016&#x2f;06&#x2f;29 17&#x3a;00&#x3a;01.094</modified_date>
83   - <key_for_session_key/>
84   - <is_key_private>N</is_key_private>
85   - </info>
86   - <notepads>
87   - <notepad>
88   - <note>&#x8def;&#x724c;&#x4fe1;&#x606f;&#x8f93;&#x5165;&#xff0c;&#x8def;&#x724c;&#x540d;&#x5b57;&#x662f;&#x4e0d;&#x80fd;&#x91cd;&#x590d;&#x7684;&#xa;&#x4e00;&#x822c;&#x6765;&#x8bf4;&#xff0c;&#x5e94;&#x8be5;&#x662f;&#x5bfc;&#x5165;&#x65f6;&#x523b;&#x6570;&#x636e;&#x81ea;&#x52a8;&#x751f;&#x6210;&#x7684;&#xff0c;&#x8fd9;&#x4e2a;&#x518d;&#x8bae;</note>
89   - <xloc>218</xloc>
90   - <yloc>141</yloc>
91   - <width>298</width>
92   - <heigth>42</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>&#x5b57;&#x6bb5;&#x6539;&#x540d;</from><to>&#x67e5;&#x8be2;&#x7ebf;&#x8def;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
217   - <hop> <from>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_gbi</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
218   - <hop> <from>&#x67e5;&#x8be2;&#x7ebf;&#x8def;&#x5173;&#x8054;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_gbi</to><enabled>Y</enabled> </hop>
219   - <hop> <from>&#x8def;&#x724c;_85&#x8def;Excel&#x8f93;&#x5165;</from><to>&#x5b57;&#x6bb5;&#x6539;&#x540d;</to><enabled>Y</enabled> </hop>
220   - <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x8def;&#x724c;_85&#x8def;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>
221   - </order>
222   - <step>
223   - <name>&#x5b57;&#x6bb5;&#x6539;&#x540d;</name>
224   - <type>SelectValues</type>
225   - <description/>
226   - <distribute>Y</distribute>
227   - <custom_distribution/>
228   - <copies>1</copies>
229   - <partitioning>
230   - <method>none</method>
231   - <schema_name/>
232   - </partitioning>
233   - <fields> <select_unspecified>N</select_unspecified>
234   - <meta> <name>&#x7ebf;&#x8def;</name>
235   - <rename>xl</rename>
236   - <type>String</type>
237   - <length>-2</length>
238   - <precision>-2</precision>
239   - <conversion_mask/>
240   - <date_format_lenient>false</date_format_lenient>
241   - <date_format_locale/>
242   - <date_format_timezone/>
243   - <lenient_string_to_number>false</lenient_string_to_number>
244   - <encoding/>
245   - <decimal_symbol/>
246   - <grouping_symbol/>
247   - <currency_symbol/>
248   - <storage_type/>
249   - </meta> <meta> <name>&#x8def;&#x724c;&#x7f16;&#x53f7;</name>
250   - <rename>lpno</rename>
251   - <type>Integer</type>
252   - <length>-2</length>
253   - <precision>-2</precision>
254   - <conversion_mask/>
255   - <date_format_lenient>false</date_format_lenient>
256   - <date_format_locale/>
257   - <date_format_timezone/>
258   - <lenient_string_to_number>false</lenient_string_to_number>
259   - <encoding/>
260   - <decimal_symbol/>
261   - <grouping_symbol/>
262   - <currency_symbol/>
263   - <storage_type/>
264   - </meta> <meta> <name>&#x8def;&#x724c;&#x540d;&#x79f0;</name>
265   - <rename>lpname</rename>
266   - <type>String</type>
267   - <length>-2</length>
268   - <precision>-2</precision>
269   - <conversion_mask/>
270   - <date_format_lenient>false</date_format_lenient>
271   - <date_format_locale/>
272   - <date_format_timezone/>
273   - <lenient_string_to_number>false</lenient_string_to_number>
274   - <encoding/>
275   - <decimal_symbol/>
276   - <grouping_symbol/>
277   - <currency_symbol/>
278   - <storage_type/>
279   - </meta> <meta> <name>&#x8def;&#x724c;&#x7c7b;&#x578b;</name>
280   - <rename>lptype</rename>
281   - <type>String</type>
282   - <length>-2</length>
283   - <precision>-2</precision>
284   - <conversion_mask/>
285   - <date_format_lenient>false</date_format_lenient>
286   - <date_format_locale/>
287   - <date_format_timezone/>
288   - <lenient_string_to_number>false</lenient_string_to_number>
289   - <encoding/>
290   - <decimal_symbol/>
291   - <grouping_symbol/>
292   - <currency_symbol/>
293   - <storage_type/>
294   - </meta> </fields> <cluster_schema/>
295   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
296   - <xloc>295</xloc>
297   - <yloc>68</yloc>
298   - <draw>Y</draw>
299   - </GUI>
300   - </step>
301   -
302   - <step>
303   - <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_gbi</name>
304   - <type>InsertUpdate</type>
305   - <description/>
306   - <distribute>Y</distribute>
307   - <custom_distribution/>
308   - <copies>1</copies>
309   - <partitioning>
310   - <method>none</method>
311   - <schema_name/>
312   - </partitioning>
313   - <connection>bus_control_&#x516c;&#x53f8;_201</connection>
314   - <commit>100</commit>
315   - <update_bypassed>N</update_bypassed>
316   - <lookup>
317   - <schema/>
318   - <table>bsth_c_s_gbi</table>
319   - <key>
320   - <name>xlid</name>
321   - <field>xl</field>
322   - <condition>&#x3d;</condition>
323   - <name2/>
324   - </key>
325   - <key>
326   - <name>lpname</name>
327   - <field>lp_name</field>
328   - <condition>&#x3d;</condition>
329   - <name2/>
330   - </key>
331   - <value>
332   - <name>xl</name>
333   - <rename>xlid</rename>
334   - <update>Y</update>
335   - </value>
336   - <value>
337   - <name>lp_no</name>
338   - <rename>lpno</rename>
339   - <update>Y</update>
340   - </value>
341   - <value>
342   - <name>lp_name</name>
343   - <rename>lpname</rename>
344   - <update>Y</update>
345   - </value>
346   - <value>
347   - <name>lp_type</name>
348   - <rename>lptype</rename>
349   - <update>Y</update>
350   - </value>
351   - </lookup>
352   - <cluster_schema/>
353   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
354   - <xloc>576</xloc>
355   - <yloc>69</yloc>
356   - <draw>Y</draw>
357   - </GUI>
358   - </step>
359   -
360   - <step>
361   - <name>&#x67e5;&#x8be2;&#x7ebf;&#x8def;&#x5173;&#x8054;</name>
362   - <type>DBLookup</type>
363   - <description/>
364   - <distribute>Y</distribute>
365   - <custom_distribution/>
366   - <copies>1</copies>
367   - <partitioning>
368   - <method>none</method>
369   - <schema_name/>
370   - </partitioning>
371   - <connection>bus_control_&#x516c;&#x53f8;_201</connection>
372   - <cache>N</cache>
373   - <cache_load_all>N</cache_load_all>
374   - <cache_size>0</cache_size>
375   - <lookup>
376   - <schema/>
377   - <table>bsth_c_line</table>
378   - <orderby/>
379   - <fail_on_multiple>N</fail_on_multiple>
380   - <eat_row_on_failure>N</eat_row_on_failure>
381   - <key>
382   - <name>xl</name>
383   - <field>name</field>
384   - <condition>&#x3d;</condition>
385   - <name2/>
386   - </key>
387   - <value>
388   - <name>id</name>
389   - <rename>xlid</rename>
390   - <default/>
391   - <type>Integer</type>
392   - </value>
393   - </lookup>
394   - <cluster_schema/>
395   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
396   - <xloc>428</xloc>
397   - <yloc>69</yloc>
398   - <draw>Y</draw>
399   - </GUI>
400   - </step>
401   -
402   - <step>
403   - <name>&#x8def;&#x724c;_85&#x8def;Excel&#x8f93;&#x5165;</name>
404   - <type>ExcelInput</type>
405   - <description/>
406   - <distribute>Y</distribute>
407   - <custom_distribution/>
408   - <copies>1</copies>
409   - <partitioning>
410   - <method>none</method>
411   - <schema_name/>
412   - </partitioning>
413   - <header>Y</header>
414   - <noempty>Y</noempty>
415   - <stoponempty>N</stoponempty>
416   - <filefield/>
417   - <sheetfield/>
418   - <sheetrownumfield/>
419   - <rownumfield/>
420   - <sheetfield/>
421   - <filefield/>
422   - <limit>0</limit>
423   - <encoding/>
424   - <add_to_result_filenames>Y</add_to_result_filenames>
425   - <accept_filenames>Y</accept_filenames>
426   - <accept_field>filepath_</accept_field>
427   - <accept_stepname>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</accept_stepname>
428   - <file>
429   - <name/>
430   - <filemask/>
431   - <exclude_filemask/>
432   - <file_required>N</file_required>
433   - <include_subfolders>N</include_subfolders>
434   - </file>
435   - <fields>
436   - <field>
437   - <name>&#x7ebf;&#x8def;</name>
438   - <type>String</type>
439   - <length>-1</length>
440   - <precision>-1</precision>
441   - <trim_type>none</trim_type>
442   - <repeat>N</repeat>
443   - <format/>
444   - <currency/>
445   - <decimal/>
446   - <group/>
447   - </field>
448   - <field>
449   - <name>&#x8def;&#x724c;&#x7f16;&#x53f7;</name>
450   - <type>String</type>
451   - <length>-1</length>
452   - <precision>-1</precision>
453   - <trim_type>none</trim_type>
454   - <repeat>N</repeat>
455   - <format>&#x23;</format>
456   - <currency/>
457   - <decimal/>
458   - <group/>
459   - </field>
460   - <field>
461   - <name>&#x8def;&#x724c;&#x540d;&#x79f0;</name>
462   - <type>String</type>
463   - <length>-1</length>
464   - <precision>-1</precision>
465   - <trim_type>none</trim_type>
466   - <repeat>N</repeat>
467   - <format>&#x23;</format>
468   - <currency/>
469   - <decimal/>
470   - <group/>
471   - </field>
472   - <field>
473   - <name>&#x8def;&#x724c;&#x7c7b;&#x578b;</name>
474   - <type>String</type>
475   - <length>-1</length>
476   - <precision>-1</precision>
477   - <trim_type>none</trim_type>
478   - <repeat>N</repeat>
479   - <format/>
480   - <currency/>
481   - <decimal/>
482   - <group/>
483   - </field>
484   - </fields>
485   - <sheets>
486   - <sheet>
487   - <name>&#x5de5;&#x4f5c;&#x8868;1</name>
488   - <startrow>0</startrow>
489   - <startcol>0</startcol>
490   - </sheet>
491   - </sheets>
492   - <strict_types>N</strict_types>
493   - <error_ignored>N</error_ignored>
494   - <error_line_skipped>N</error_line_skipped>
495   - <bad_line_files_destination_directory/>
496   - <bad_line_files_extension>warning</bad_line_files_extension>
497   - <error_line_files_destination_directory/>
498   - <error_line_files_extension>error</error_line_files_extension>
499   - <line_number_files_destination_directory/>
500   - <line_number_files_extension>line</line_number_files_extension>
501   - <shortFileFieldName/>
502   - <pathFieldName/>
503   - <hiddenFieldName/>
504   - <lastModificationTimeFieldName/>
505   - <uriNameFieldName/>
506   - <rootUriNameFieldName/>
507   - <extensionFieldName/>
508   - <sizeFieldName/>
509   - <spreadsheet_type>JXL</spreadsheet_type>
510   - <cluster_schema/>
511   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
512   - <xloc>150</xloc>
513   - <yloc>68</yloc>
514   - <draw>Y</draw>
515   - </GUI>
516   - </step>
517   -
518   - <step>
519   - <name>&#x9519;&#x8bef;&#x8f93;&#x51fa;</name>
520   - <type>ExcelOutput</type>
521   - <description/>
522   - <distribute>Y</distribute>
523   - <custom_distribution/>
524   - <copies>1</copies>
525   - <partitioning>
526   - <method>none</method>
527   - <schema_name/>
528   - </partitioning>
529   - <header>Y</header>
530   - <footer>N</footer>
531   - <encoding>UTF-8</encoding>
532   - <append>N</append>
533   - <add_to_result_filenames>Y</add_to_result_filenames>
534   - <file>
535   - <name>&#x24;&#x7b;erroroutputdir&#x7d;&#x2f;&#x8def;&#x724c;_&#x9519;&#x8bef;</name>
536   - <extention>xls</extention>
537   - <do_not_open_newfile_init>N</do_not_open_newfile_init>
538   - <create_parent_folder>N</create_parent_folder>
539   - <split>N</split>
540   - <add_date>N</add_date>
541   - <add_time>N</add_time>
542   - <SpecifyFormat>N</SpecifyFormat>
543   - <date_time_format/>
544   - <sheetname>Sheet1</sheetname>
545   - <autosizecolums>N</autosizecolums>
546   - <nullisblank>N</nullisblank>
547   - <protect_sheet>N</protect_sheet>
548   - <password>Encrypted </password>
549   - <splitevery>0</splitevery>
550   - <usetempfiles>N</usetempfiles>
551   - <tempdirectory/>
552   - </file>
553   - <template>
554   - <enabled>N</enabled>
555   - <append>N</append>
556   - <filename>template.xls</filename>
557   - </template>
558   - <fields>
559   - <field>
560   - <name>xl</name>
561   - <type>String</type>
562   - <format/>
563   - </field>
564   - <field>
565   - <name>lpno</name>
566   - <type>Integer</type>
567   - <format/>
568   - </field>
569   - <field>
570   - <name>lpname</name>
571   - <type>String</type>
572   - <format/>
573   - </field>
574   - <field>
575   - <name>lptype</name>
576   - <type>String</type>
577   - <format/>
578   - </field>
579   - <field>
580   - <name>xlid</name>
581   - <type>Integer</type>
582   - <format/>
583   - </field>
584   - <field>
585   - <name>error_count</name>
586   - <type>Integer</type>
587   - <format/>
588   - </field>
589   - <field>
590   - <name>error_desc</name>
591   - <type>String</type>
592   - <format/>
593   - </field>
594   - <field>
595   - <name>error_column1</name>
596   - <type>String</type>
597   - <format/>
598   - </field>
599   - <field>
600   - <name>error_column2</name>
601   - <type>String</type>
602   - <format/>
603   - </field>
604   - </fields>
605   - <custom>
606   - <header_font_name>arial</header_font_name>
607   - <header_font_size>10</header_font_size>
608   - <header_font_bold>N</header_font_bold>
609   - <header_font_italic>N</header_font_italic>
610   - <header_font_underline>no</header_font_underline>
611   - <header_font_orientation>horizontal</header_font_orientation>
612   - <header_font_color>black</header_font_color>
613   - <header_background_color>none</header_background_color>
614   - <header_row_height>255</header_row_height>
615   - <header_alignment>left</header_alignment>
616   - <header_image/>
617   - <row_font_name>arial</row_font_name>
618   - <row_font_size>10</row_font_size>
619   - <row_font_color>black</row_font_color>
620   - <row_background_color>none</row_background_color>
621   - </custom>
622   - <cluster_schema/>
623   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
624   - <xloc>576</xloc>
625   - <yloc>192</yloc>
626   - <draw>Y</draw>
627   - </GUI>
628   - </step>
629   -
630   - <step>
631   - <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>
632   - <type>GetVariable</type>
633   - <description/>
634   - <distribute>Y</distribute>
635   - <custom_distribution/>
636   - <copies>1</copies>
637   - <partitioning>
638   - <method>none</method>
639   - <schema_name/>
640   - </partitioning>
641   - <fields>
642   - <field>
643   - <name>filepath_</name>
644   - <variable>&#x24;&#x7b;filepath&#x7d;</variable>
645   - <type>String</type>
646   - <format/>
647   - <currency/>
648   - <decimal/>
649   - <group/>
650   - <length>-1</length>
651   - <precision>-1</precision>
652   - <trim_type>none</trim_type>
653   - </field>
654   - <field>
655   - <name>erroroutputdir_</name>
656   - <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
657   - <type>String</type>
658   - <format/>
659   - <currency/>
660   - <decimal/>
661   - <group/>
662   - <length>-1</length>
663   - <precision>-1</precision>
664   - <trim_type>none</trim_type>
665   - </field>
666   - </fields>
667   - <cluster_schema/>
668   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
669   - <xloc>152</xloc>
670   - <yloc>193</yloc>
671   - <draw>Y</draw>
672   - </GUI>
673   - </step>
674   -
675   - <step_error_handling>
676   - <error>
677   - <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_gbi</source_step>
678   - <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa;</target_step>
679   - <is_enabled>Y</is_enabled>
680   - <nr_valuename>error_count</nr_valuename>
681   - <descriptions_valuename>error_desc</descriptions_valuename>
682   - <fields_valuename>error_column1</fields_valuename>
683   - <codes_valuename>error_column2</codes_valuename>
684   - <max_errors/>
685   - <max_pct_errors/>
686   - <min_pct_rows/>
687   - </error>
688   - </step_error_handling>
689   - <slave-step-copy-partition-distribution>
690   -</slave-step-copy-partition-distribution>
691   - <slave_transformation>N</slave_transformation>
692   -
693   -</transformation>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>guideboardDataInput</name>
  5 + <description>&#x8def;&#x724c;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description>
  6 + <extended_description>&#x7ebf;&#x8def;&#x8fd0;&#x8425;&#x7684;&#x8def;&#x724c;&#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 17&#x3a;00&#x3a;01.094</created_date>
  81 + <modified_user>-</modified_user>
  82 + <modified_date>2016&#x2f;06&#x2f;29 17&#x3a;00&#x3a;01.094</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>&#x8def;&#x724c;&#x4fe1;&#x606f;&#x8f93;&#x5165;&#xff0c;&#x8def;&#x724c;&#x540d;&#x5b57;&#x662f;&#x4e0d;&#x80fd;&#x91cd;&#x590d;&#x7684;&#xa;&#x4e00;&#x822c;&#x6765;&#x8bf4;&#xff0c;&#x5e94;&#x8be5;&#x662f;&#x5bfc;&#x5165;&#x65f6;&#x523b;&#x6570;&#x636e;&#x81ea;&#x52a8;&#x751f;&#x6210;&#x7684;&#xff0c;&#x8fd9;&#x4e2a;&#x518d;&#x8bae;</note>
  89 + <xloc>218</xloc>
  90 + <yloc>141</yloc>
  91 + <width>298</width>
  92 + <heigth>42</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>&#x5b57;&#x6bb5;&#x6539;&#x540d;</from><to>&#x67e5;&#x8be2;&#x7ebf;&#x8def;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
  271 + <hop> <from>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_gbi</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
  272 + <hop> <from>&#x67e5;&#x8be2;&#x7ebf;&#x8def;&#x5173;&#x8054;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_gbi</to><enabled>Y</enabled> </hop>
  273 + <hop> <from>&#x8def;&#x724c;_85&#x8def;Excel&#x8f93;&#x5165;</from><to>&#x5b57;&#x6bb5;&#x6539;&#x540d;</to><enabled>Y</enabled> </hop>
  274 + <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x8def;&#x724c;_85&#x8def;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>
  275 + </order>
  276 + <step>
  277 + <name>&#x5b57;&#x6bb5;&#x6539;&#x540d;</name>
  278 + <type>SelectValues</type>
  279 + <description/>
  280 + <distribute>Y</distribute>
  281 + <custom_distribution/>
  282 + <copies>1</copies>
  283 + <partitioning>
  284 + <method>none</method>
  285 + <schema_name/>
  286 + </partitioning>
  287 + <fields> <select_unspecified>N</select_unspecified>
  288 + <meta> <name>&#x7ebf;&#x8def;</name>
  289 + <rename>xl</rename>
  290 + <type>String</type>
  291 + <length>-2</length>
  292 + <precision>-2</precision>
  293 + <conversion_mask/>
  294 + <date_format_lenient>false</date_format_lenient>
  295 + <date_format_locale/>
  296 + <date_format_timezone/>
  297 + <lenient_string_to_number>false</lenient_string_to_number>
  298 + <encoding/>
  299 + <decimal_symbol/>
  300 + <grouping_symbol/>
  301 + <currency_symbol/>
  302 + <storage_type/>
  303 + </meta> <meta> <name>&#x8def;&#x724c;&#x7f16;&#x53f7;</name>
  304 + <rename>lpno</rename>
  305 + <type>Integer</type>
  306 + <length>-2</length>
  307 + <precision>-2</precision>
  308 + <conversion_mask/>
  309 + <date_format_lenient>false</date_format_lenient>
  310 + <date_format_locale/>
  311 + <date_format_timezone/>
  312 + <lenient_string_to_number>false</lenient_string_to_number>
  313 + <encoding/>
  314 + <decimal_symbol/>
  315 + <grouping_symbol/>
  316 + <currency_symbol/>
  317 + <storage_type/>
  318 + </meta> <meta> <name>&#x8def;&#x724c;&#x540d;&#x79f0;</name>
  319 + <rename>lpname</rename>
  320 + <type>String</type>
  321 + <length>-2</length>
  322 + <precision>-2</precision>
  323 + <conversion_mask/>
  324 + <date_format_lenient>false</date_format_lenient>
  325 + <date_format_locale/>
  326 + <date_format_timezone/>
  327 + <lenient_string_to_number>false</lenient_string_to_number>
  328 + <encoding/>
  329 + <decimal_symbol/>
  330 + <grouping_symbol/>
  331 + <currency_symbol/>
  332 + <storage_type/>
  333 + </meta> <meta> <name>&#x8def;&#x724c;&#x7c7b;&#x578b;</name>
  334 + <rename>lptype</rename>
  335 + <type>String</type>
  336 + <length>-2</length>
  337 + <precision>-2</precision>
  338 + <conversion_mask/>
  339 + <date_format_lenient>false</date_format_lenient>
  340 + <date_format_locale/>
  341 + <date_format_timezone/>
  342 + <lenient_string_to_number>false</lenient_string_to_number>
  343 + <encoding/>
  344 + <decimal_symbol/>
  345 + <grouping_symbol/>
  346 + <currency_symbol/>
  347 + <storage_type/>
  348 + </meta> </fields> <cluster_schema/>
  349 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  350 + <xloc>295</xloc>
  351 + <yloc>68</yloc>
  352 + <draw>Y</draw>
  353 + </GUI>
  354 + </step>
  355 +
  356 + <step>
  357 + <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_gbi</name>
  358 + <type>InsertUpdate</type>
  359 + <description/>
  360 + <distribute>Y</distribute>
  361 + <custom_distribution/>
  362 + <copies>1</copies>
  363 + <partitioning>
  364 + <method>none</method>
  365 + <schema_name/>
  366 + </partitioning>
  367 + <connection>bus_control_variable</connection>
  368 + <commit>100</commit>
  369 + <update_bypassed>N</update_bypassed>
  370 + <lookup>
  371 + <schema/>
  372 + <table>bsth_c_s_gbi</table>
  373 + <key>
  374 + <name>xlid</name>
  375 + <field>xl</field>
  376 + <condition>&#x3d;</condition>
  377 + <name2/>
  378 + </key>
  379 + <key>
  380 + <name>lpname</name>
  381 + <field>lp_name</field>
  382 + <condition>&#x3d;</condition>
  383 + <name2/>
  384 + </key>
  385 + <value>
  386 + <name>xl</name>
  387 + <rename>xlid</rename>
  388 + <update>Y</update>
  389 + </value>
  390 + <value>
  391 + <name>lp_no</name>
  392 + <rename>lpno</rename>
  393 + <update>Y</update>
  394 + </value>
  395 + <value>
  396 + <name>lp_name</name>
  397 + <rename>lpname</rename>
  398 + <update>Y</update>
  399 + </value>
  400 + <value>
  401 + <name>lp_type</name>
  402 + <rename>lptype</rename>
  403 + <update>Y</update>
  404 + </value>
  405 + </lookup>
  406 + <cluster_schema/>
  407 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  408 + <xloc>576</xloc>
  409 + <yloc>69</yloc>
  410 + <draw>Y</draw>
  411 + </GUI>
  412 + </step>
  413 +
  414 + <step>
  415 + <name>&#x67e5;&#x8be2;&#x7ebf;&#x8def;&#x5173;&#x8054;</name>
  416 + <type>DBLookup</type>
  417 + <description/>
  418 + <distribute>Y</distribute>
  419 + <custom_distribution/>
  420 + <copies>1</copies>
  421 + <partitioning>
  422 + <method>none</method>
  423 + <schema_name/>
  424 + </partitioning>
  425 + <connection>bus_control_variable</connection>
  426 + <cache>N</cache>
  427 + <cache_load_all>N</cache_load_all>
  428 + <cache_size>0</cache_size>
  429 + <lookup>
  430 + <schema/>
  431 + <table>bsth_c_line</table>
  432 + <orderby/>
  433 + <fail_on_multiple>N</fail_on_multiple>
  434 + <eat_row_on_failure>N</eat_row_on_failure>
  435 + <key>
  436 + <name>xl</name>
  437 + <field>name</field>
  438 + <condition>&#x3d;</condition>
  439 + <name2/>
  440 + </key>
  441 + <value>
  442 + <name>id</name>
  443 + <rename>xlid</rename>
  444 + <default/>
  445 + <type>Integer</type>
  446 + </value>
  447 + </lookup>
  448 + <cluster_schema/>
  449 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  450 + <xloc>428</xloc>
  451 + <yloc>69</yloc>
  452 + <draw>Y</draw>
  453 + </GUI>
  454 + </step>
  455 +
  456 + <step>
  457 + <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>
  458 + <type>GetVariable</type>
  459 + <description/>
  460 + <distribute>Y</distribute>
  461 + <custom_distribution/>
  462 + <copies>1</copies>
  463 + <partitioning>
  464 + <method>none</method>
  465 + <schema_name/>
  466 + </partitioning>
  467 + <fields>
  468 + <field>
  469 + <name>filepath_</name>
  470 + <variable>&#x24;&#x7b;filepath&#x7d;</variable>
  471 + <type>String</type>
  472 + <format/>
  473 + <currency/>
  474 + <decimal/>
  475 + <group/>
  476 + <length>-1</length>
  477 + <precision>-1</precision>
  478 + <trim_type>none</trim_type>
  479 + </field>
  480 + <field>
  481 + <name>erroroutputdir_</name>
  482 + <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
  483 + <type>String</type>
  484 + <format/>
  485 + <currency/>
  486 + <decimal/>
  487 + <group/>
  488 + <length>-1</length>
  489 + <precision>-1</precision>
  490 + <trim_type>none</trim_type>
  491 + </field>
  492 + </fields>
  493 + <cluster_schema/>
  494 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  495 + <xloc>152</xloc>
  496 + <yloc>193</yloc>
  497 + <draw>Y</draw>
  498 + </GUI>
  499 + </step>
  500 +
  501 + <step>
  502 + <name>&#x8def;&#x724c;_85&#x8def;Excel&#x8f93;&#x5165;</name>
  503 + <type>ExcelInput</type>
  504 + <description/>
  505 + <distribute>Y</distribute>
  506 + <custom_distribution/>
  507 + <copies>1</copies>
  508 + <partitioning>
  509 + <method>none</method>
  510 + <schema_name/>
  511 + </partitioning>
  512 + <header>Y</header>
  513 + <noempty>Y</noempty>
  514 + <stoponempty>N</stoponempty>
  515 + <filefield/>
  516 + <sheetfield/>
  517 + <sheetrownumfield/>
  518 + <rownumfield/>
  519 + <sheetfield/>
  520 + <filefield/>
  521 + <limit>0</limit>
  522 + <encoding/>
  523 + <add_to_result_filenames>Y</add_to_result_filenames>
  524 + <accept_filenames>Y</accept_filenames>
  525 + <accept_field>filepath_</accept_field>
  526 + <accept_stepname>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</accept_stepname>
  527 + <file>
  528 + <name/>
  529 + <filemask/>
  530 + <exclude_filemask/>
  531 + <file_required>N</file_required>
  532 + <include_subfolders>N</include_subfolders>
  533 + </file>
  534 + <fields>
  535 + <field>
  536 + <name>&#x7ebf;&#x8def;</name>
  537 + <type>String</type>
  538 + <length>-1</length>
  539 + <precision>-1</precision>
  540 + <trim_type>none</trim_type>
  541 + <repeat>N</repeat>
  542 + <format/>
  543 + <currency/>
  544 + <decimal/>
  545 + <group/>
  546 + </field>
  547 + <field>
  548 + <name>&#x8def;&#x724c;&#x7f16;&#x53f7;</name>
  549 + <type>String</type>
  550 + <length>-1</length>
  551 + <precision>-1</precision>
  552 + <trim_type>none</trim_type>
  553 + <repeat>N</repeat>
  554 + <format>&#x23;</format>
  555 + <currency/>
  556 + <decimal/>
  557 + <group/>
  558 + </field>
  559 + <field>
  560 + <name>&#x8def;&#x724c;&#x540d;&#x79f0;</name>
  561 + <type>String</type>
  562 + <length>-1</length>
  563 + <precision>-1</precision>
  564 + <trim_type>none</trim_type>
  565 + <repeat>N</repeat>
  566 + <format>&#x23;</format>
  567 + <currency/>
  568 + <decimal/>
  569 + <group/>
  570 + </field>
  571 + <field>
  572 + <name>&#x8def;&#x724c;&#x7c7b;&#x578b;</name>
  573 + <type>String</type>
  574 + <length>-1</length>
  575 + <precision>-1</precision>
  576 + <trim_type>none</trim_type>
  577 + <repeat>N</repeat>
  578 + <format/>
  579 + <currency/>
  580 + <decimal/>
  581 + <group/>
  582 + </field>
  583 + </fields>
  584 + <sheets>
  585 + <sheet>
  586 + <name>&#x5de5;&#x4f5c;&#x8868;1</name>
  587 + <startrow>0</startrow>
  588 + <startcol>0</startcol>
  589 + </sheet>
  590 + </sheets>
  591 + <strict_types>N</strict_types>
  592 + <error_ignored>N</error_ignored>
  593 + <error_line_skipped>N</error_line_skipped>
  594 + <bad_line_files_destination_directory/>
  595 + <bad_line_files_extension>warning</bad_line_files_extension>
  596 + <error_line_files_destination_directory/>
  597 + <error_line_files_extension>error</error_line_files_extension>
  598 + <line_number_files_destination_directory/>
  599 + <line_number_files_extension>line</line_number_files_extension>
  600 + <shortFileFieldName/>
  601 + <pathFieldName/>
  602 + <hiddenFieldName/>
  603 + <lastModificationTimeFieldName/>
  604 + <uriNameFieldName/>
  605 + <rootUriNameFieldName/>
  606 + <extensionFieldName/>
  607 + <sizeFieldName/>
  608 + <spreadsheet_type>JXL</spreadsheet_type>
  609 + <cluster_schema/>
  610 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  611 + <xloc>150</xloc>
  612 + <yloc>68</yloc>
  613 + <draw>Y</draw>
  614 + </GUI>
  615 + </step>
  616 +
  617 + <step>
  618 + <name>&#x9519;&#x8bef;&#x8f93;&#x51fa;</name>
  619 + <type>ExcelOutput</type>
  620 + <description/>
  621 + <distribute>Y</distribute>
  622 + <custom_distribution/>
  623 + <copies>1</copies>
  624 + <partitioning>
  625 + <method>none</method>
  626 + <schema_name/>
  627 + </partitioning>
  628 + <header>Y</header>
  629 + <footer>N</footer>
  630 + <encoding>UTF-8</encoding>
  631 + <append>N</append>
  632 + <add_to_result_filenames>Y</add_to_result_filenames>
  633 + <file>
  634 + <name>&#x24;&#x7b;erroroutputdir&#x7d;&#x2f;&#x8def;&#x724c;_&#x9519;&#x8bef;</name>
  635 + <extention>xls</extention>
  636 + <do_not_open_newfile_init>N</do_not_open_newfile_init>
  637 + <create_parent_folder>N</create_parent_folder>
  638 + <split>N</split>
  639 + <add_date>N</add_date>
  640 + <add_time>N</add_time>
  641 + <SpecifyFormat>N</SpecifyFormat>
  642 + <date_time_format/>
  643 + <sheetname>Sheet1</sheetname>
  644 + <autosizecolums>N</autosizecolums>
  645 + <nullisblank>N</nullisblank>
  646 + <protect_sheet>N</protect_sheet>
  647 + <password>Encrypted </password>
  648 + <splitevery>0</splitevery>
  649 + <usetempfiles>N</usetempfiles>
  650 + <tempdirectory/>
  651 + </file>
  652 + <template>
  653 + <enabled>N</enabled>
  654 + <append>N</append>
  655 + <filename>template.xls</filename>
  656 + </template>
  657 + <fields>
  658 + <field>
  659 + <name>xl</name>
  660 + <type>String</type>
  661 + <format/>
  662 + </field>
  663 + <field>
  664 + <name>lpno</name>
  665 + <type>Integer</type>
  666 + <format/>
  667 + </field>
  668 + <field>
  669 + <name>lpname</name>
  670 + <type>String</type>
  671 + <format/>
  672 + </field>
  673 + <field>
  674 + <name>lptype</name>
  675 + <type>String</type>
  676 + <format/>
  677 + </field>
  678 + <field>
  679 + <name>xlid</name>
  680 + <type>Integer</type>
  681 + <format/>
  682 + </field>
  683 + <field>
  684 + <name>error_count</name>
  685 + <type>Integer</type>
  686 + <format/>
  687 + </field>
  688 + <field>
  689 + <name>error_desc</name>
  690 + <type>String</type>
  691 + <format/>
  692 + </field>
  693 + <field>
  694 + <name>error_column1</name>
  695 + <type>String</type>
  696 + <format/>
  697 + </field>
  698 + <field>
  699 + <name>error_column2</name>
  700 + <type>String</type>
  701 + <format/>
  702 + </field>
  703 + </fields>
  704 + <custom>
  705 + <header_font_name>arial</header_font_name>
  706 + <header_font_size>10</header_font_size>
  707 + <header_font_bold>N</header_font_bold>
  708 + <header_font_italic>N</header_font_italic>
  709 + <header_font_underline>no</header_font_underline>
  710 + <header_font_orientation>horizontal</header_font_orientation>
  711 + <header_font_color>black</header_font_color>
  712 + <header_background_color>none</header_background_color>
  713 + <header_row_height>255</header_row_height>
  714 + <header_alignment>left</header_alignment>
  715 + <header_image/>
  716 + <row_font_name>arial</row_font_name>
  717 + <row_font_size>10</row_font_size>
  718 + <row_font_color>black</row_font_color>
  719 + <row_background_color>none</row_background_color>
  720 + </custom>
  721 + <cluster_schema/>
  722 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  723 + <xloc>576</xloc>
  724 + <yloc>192</yloc>
  725 + <draw>Y</draw>
  726 + </GUI>
  727 + </step>
  728 +
  729 + <step_error_handling>
  730 + <error>
  731 + <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_gbi</source_step>
  732 + <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa;</target_step>
  733 + <is_enabled>Y</is_enabled>
  734 + <nr_valuename>error_count</nr_valuename>
  735 + <descriptions_valuename>error_desc</descriptions_valuename>
  736 + <fields_valuename>error_column1</fields_valuename>
  737 + <codes_valuename>error_column2</codes_valuename>
  738 + <max_errors/>
  739 + <max_pct_errors/>
  740 + <min_pct_rows/>
  741 + </error>
  742 + </step_error_handling>
  743 + <slave-step-copy-partition-distribution>
  744 +</slave-step-copy-partition-distribution>
  745 + <slave_transformation>N</slave_transformation>
  746 +
  747 +</transformation>
... ...
src/main/resources/datatools/ktrs/ttinfoDataInput.ktr
1   -<?xml version="1.0" encoding="UTF-8"?>
2   -<transformation>
3   - <info>
4   - <name>ttinfoDataInput</name>
5   - <description>&#x65f6;&#x523b;&#x8868;&#x57fa;&#x7840;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description>
6   - <extended_description>&#x65f6;&#x523b;&#x8868;&#x57fa;&#x7840;&#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;30 09&#x3a;35&#x3a;41.558</created_date>
81   - <modified_user>-</modified_user>
82   - <modified_date>2016&#x2f;06&#x2f;30 09&#x3a;35&#x3a;41.558</modified_date>
83   - <key_for_session_key/>
84   - <is_key_private>N</is_key_private>
85   - </info>
86   - <notepads>
87   - <notepad>
88   - <note>&#x6709;&#x4e9b;&#x5b57;&#x6bb5;&#x6ca1;&#x6709;&#x8f93;&#x5165;&#xff0c;&#x4e0d;&#x592a;&#x660e;&#x767d;&#xff0c;&#x4ee5;&#x540e;&#x518d;&#x8865;&#xa;&#x6a21;&#x7248;&#x7c7b;&#x578b; &#x5206;&#x65f6;&#x523b;&#x8868;&#x2f;&#x95f4;&#x9694;&#x5f0f;&#x4e24;&#x79cd;&#xff0c;&#x6682;&#x65f6;&#x7a7a;&#x7740;&#xa;&#x662f;&#x5426;&#x542f;&#x7528;&#x8c03;&#x5ea6;&#x6a21;&#x7248; &#x6682;&#x65f6;&#x7a7a;&#x7740;&#xa;&#x8fd8;&#x6709;&#x5c31;&#x662f; &#x5206;&#x522b;&#x5728;&#xff0c;&#x5708;&#x540e;&#x5708; &#x6682;&#x65f6;&#x6ca1;&#x6709;</note>
89   - <xloc>429</xloc>
90   - <yloc>144</yloc>
91   - <width>240</width>
92   - <heigth>74</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>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
217   - <hop> <from>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo</to><enabled>Y</enabled> </hop>
218   - <hop> <from>&#x65f6;&#x523b;&#x8868;&#x57fa;&#x7840;&#x6570;&#x636e;Excel&#x8f93;&#x5165;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
219   - <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;&#x503c;&#x6620;&#x5c04;</to><enabled>Y</enabled> </hop>
220   - <hop> <from>&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;&#x503c;&#x6620;&#x5c04;</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
221   - <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x65f6;&#x523b;&#x8868;&#x57fa;&#x7840;&#x6570;&#x636e;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>
222   - </order>
223   - <step>
224   - <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo</name>
225   - <type>InsertUpdate</type>
226   - <description/>
227   - <distribute>Y</distribute>
228   - <custom_distribution/>
229   - <copies>1</copies>
230   - <partitioning>
231   - <method>none</method>
232   - <schema_name/>
233   - </partitioning>
234   - <connection>bus_control_&#x516c;&#x53f8;_201</connection>
235   - <commit>100</commit>
236   - <update_bypassed>N</update_bypassed>
237   - <lookup>
238   - <schema/>
239   - <table>bsth_c_s_ttinfo</table>
240   - <key>
241   - <name>xlid</name>
242   - <field>xl</field>
243   - <condition>&#x3d;</condition>
244   - <name2/>
245   - </key>
246   - <key>
247   - <name>name</name>
248   - <field>name</field>
249   - <condition>&#x3d;</condition>
250   - <name2/>
251   - </key>
252   - <value>
253   - <name>name</name>
254   - <rename>name</rename>
255   - <update>Y</update>
256   - </value>
257   - <value>
258   - <name>xl_dir</name>
259   - <rename>xlDir</rename>
260   - <update>Y</update>
261   - </value>
262   - <value>
263   - <name>qyrq</name>
264   - <rename>qyrq</rename>
265   - <update>Y</update>
266   - </value>
267   - <value>
268   - <name>lp_count</name>
269   - <rename>lpCount</rename>
270   - <update>Y</update>
271   - </value>
272   - <value>
273   - <name>loop_count</name>
274   - <rename>loopCount</rename>
275   - <update>Y</update>
276   - </value>
277   - <value>
278   - <name>rule_days</name>
279   - <rename>rule_days</rename>
280   - <update>Y</update>
281   - </value>
282   - <value>
283   - <name>special_days</name>
284   - <rename>special_days</rename>
285   - <update>Y</update>
286   - </value>
287   - <value>
288   - <name>xl</name>
289   - <rename>xlid</rename>
290   - <update>Y</update>
291   - </value>
292   - </lookup>
293   - <cluster_schema/>
294   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
295   - <xloc>799</xloc>
296   - <yloc>71</yloc>
297   - <draw>Y</draw>
298   - </GUI>
299   - </step>
300   -
301   - <step>
302   - <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</name>
303   - <type>DBLookup</type>
304   - <description/>
305   - <distribute>Y</distribute>
306   - <custom_distribution/>
307   - <copies>1</copies>
308   - <partitioning>
309   - <method>none</method>
310   - <schema_name/>
311   - </partitioning>
312   - <connection>bus_control_&#x516c;&#x53f8;_201</connection>
313   - <cache>N</cache>
314   - <cache_load_all>N</cache_load_all>
315   - <cache_size>0</cache_size>
316   - <lookup>
317   - <schema/>
318   - <table>bsth_c_line</table>
319   - <orderby/>
320   - <fail_on_multiple>N</fail_on_multiple>
321   - <eat_row_on_failure>N</eat_row_on_failure>
322   - <key>
323   - <name>xlName</name>
324   - <field>name</field>
325   - <condition>&#x3d;</condition>
326   - <name2/>
327   - </key>
328   - <value>
329   - <name>id</name>
330   - <rename>xlid</rename>
331   - <default/>
332   - <type>Integer</type>
333   - </value>
334   - </lookup>
335   - <cluster_schema/>
336   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
337   - <xloc>599</xloc>
338   - <yloc>71</yloc>
339   - <draw>Y</draw>
340   - </GUI>
341   - </step>
342   -
343   - <step>
344   - <name>&#x9519;&#x8bef;&#x8f93;&#x51fa;</name>
345   - <type>ExcelOutput</type>
346   - <description/>
347   - <distribute>Y</distribute>
348   - <custom_distribution/>
349   - <copies>1</copies>
350   - <partitioning>
351   - <method>none</method>
352   - <schema_name/>
353   - </partitioning>
354   - <header>Y</header>
355   - <footer>N</footer>
356   - <encoding>UTF-8</encoding>
357   - <append>N</append>
358   - <add_to_result_filenames>Y</add_to_result_filenames>
359   - <file>
360   - <name>&#x24;&#x7b;erroroutputdir&#x7d;&#x2f;&#x65f6;&#x523b;&#x8868;&#x57fa;&#x7840;&#x4fe1;&#x606f;_&#x9519;&#x8bef;</name>
361   - <extention>xls</extention>
362   - <do_not_open_newfile_init>N</do_not_open_newfile_init>
363   - <create_parent_folder>N</create_parent_folder>
364   - <split>N</split>
365   - <add_date>N</add_date>
366   - <add_time>N</add_time>
367   - <SpecifyFormat>N</SpecifyFormat>
368   - <date_time_format/>
369   - <sheetname>Sheet1</sheetname>
370   - <autosizecolums>N</autosizecolums>
371   - <nullisblank>N</nullisblank>
372   - <protect_sheet>N</protect_sheet>
373   - <password>Encrypted </password>
374   - <splitevery>0</splitevery>
375   - <usetempfiles>N</usetempfiles>
376   - <tempdirectory/>
377   - </file>
378   - <template>
379   - <enabled>N</enabled>
380   - <append>N</append>
381   - <filename>template.xls</filename>
382   - </template>
383   - <fields>
384   - <field>
385   - <name>xlName</name>
386   - <type>String</type>
387   - <format/>
388   - </field>
389   - <field>
390   - <name>name</name>
391   - <type>String</type>
392   - <format/>
393   - </field>
394   - <field>
395   - <name>xlDir</name>
396   - <type>String</type>
397   - <format/>
398   - </field>
399   - <field>
400   - <name>qyrq</name>
401   - <type>Date</type>
402   - <format/>
403   - </field>
404   - <field>
405   - <name>lpCount</name>
406   - <type>Integer</type>
407   - <format/>
408   - </field>
409   - <field>
410   - <name>loopCount</name>
411   - <type>Integer</type>
412   - <format/>
413   - </field>
414   - <field>
415   - <name>rule_days</name>
416   - <type>String</type>
417   - <format/>
418   - </field>
419   - <field>
420   - <name>special_days</name>
421   - <type>String</type>
422   - <format/>
423   - </field>
424   - <field>
425   - <name>xlid</name>
426   - <type>Integer</type>
427   - <format/>
428   - </field>
429   - <field>
430   - <name>error_count</name>
431   - <type>Integer</type>
432   - <format/>
433   - </field>
434   - <field>
435   - <name>error_desc</name>
436   - <type>String</type>
437   - <format/>
438   - </field>
439   - <field>
440   - <name>error_column1</name>
441   - <type>String</type>
442   - <format/>
443   - </field>
444   - <field>
445   - <name>error_column2</name>
446   - <type>String</type>
447   - <format/>
448   - </field>
449   - </fields>
450   - <custom>
451   - <header_font_name>arial</header_font_name>
452   - <header_font_size>10</header_font_size>
453   - <header_font_bold>N</header_font_bold>
454   - <header_font_italic>N</header_font_italic>
455   - <header_font_underline>no</header_font_underline>
456   - <header_font_orientation>horizontal</header_font_orientation>
457   - <header_font_color>black</header_font_color>
458   - <header_background_color>none</header_background_color>
459   - <header_row_height>255</header_row_height>
460   - <header_alignment>left</header_alignment>
461   - <header_image/>
462   - <row_font_name>arial</row_font_name>
463   - <row_font_size>10</row_font_size>
464   - <row_font_color>black</row_font_color>
465   - <row_background_color>none</row_background_color>
466   - </custom>
467   - <cluster_schema/>
468   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
469   - <xloc>799</xloc>
470   - <yloc>184</yloc>
471   - <draw>Y</draw>
472   - </GUI>
473   - </step>
474   -
475   - <step>
476   - <name>&#x65f6;&#x523b;&#x8868;&#x57fa;&#x7840;&#x6570;&#x636e;Excel&#x8f93;&#x5165;</name>
477   - <type>ExcelInput</type>
478   - <description/>
479   - <distribute>Y</distribute>
480   - <custom_distribution/>
481   - <copies>1</copies>
482   - <partitioning>
483   - <method>none</method>
484   - <schema_name/>
485   - </partitioning>
486   - <header>Y</header>
487   - <noempty>Y</noempty>
488   - <stoponempty>N</stoponempty>
489   - <filefield/>
490   - <sheetfield/>
491   - <sheetrownumfield/>
492   - <rownumfield/>
493   - <sheetfield/>
494   - <filefield/>
495   - <limit>0</limit>
496   - <encoding/>
497   - <add_to_result_filenames>Y</add_to_result_filenames>
498   - <accept_filenames>Y</accept_filenames>
499   - <accept_field>filepath_</accept_field>
500   - <accept_stepname>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</accept_stepname>
501   - <file>
502   - <name/>
503   - <filemask/>
504   - <exclude_filemask/>
505   - <file_required>N</file_required>
506   - <include_subfolders>N</include_subfolders>
507   - </file>
508   - <fields>
509   - <field>
510   - <name>&#x7ebf;&#x8def;&#x540d;&#x79f0;</name>
511   - <type>String</type>
512   - <length>-1</length>
513   - <precision>-1</precision>
514   - <trim_type>none</trim_type>
515   - <repeat>N</repeat>
516   - <format/>
517   - <currency/>
518   - <decimal/>
519   - <group/>
520   - </field>
521   - <field>
522   - <name>&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;</name>
523   - <type>String</type>
524   - <length>-1</length>
525   - <precision>-1</precision>
526   - <trim_type>none</trim_type>
527   - <repeat>N</repeat>
528   - <format/>
529   - <currency/>
530   - <decimal/>
531   - <group/>
532   - </field>
533   - <field>
534   - <name>&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;</name>
535   - <type>String</type>
536   - <length>-1</length>
537   - <precision>-1</precision>
538   - <trim_type>none</trim_type>
539   - <repeat>N</repeat>
540   - <format/>
541   - <currency/>
542   - <decimal/>
543   - <group/>
544   - </field>
545   - <field>
546   - <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
547   - <type>String</type>
548   - <length>-1</length>
549   - <precision>-1</precision>
550   - <trim_type>none</trim_type>
551   - <repeat>N</repeat>
552   - <format/>
553   - <currency/>
554   - <decimal/>
555   - <group/>
556   - </field>
557   - <field>
558   - <name>&#x8def;&#x724c;&#x6570;</name>
559   - <type>String</type>
560   - <length>-1</length>
561   - <precision>-1</precision>
562   - <trim_type>none</trim_type>
563   - <repeat>N</repeat>
564   - <format>&#x23;</format>
565   - <currency/>
566   - <decimal/>
567   - <group/>
568   - </field>
569   - <field>
570   - <name>&#x5708;&#x6570;</name>
571   - <type>String</type>
572   - <length>-1</length>
573   - <precision>-1</precision>
574   - <trim_type>none</trim_type>
575   - <repeat>N</repeat>
576   - <format>&#x23;</format>
577   - <currency/>
578   - <decimal/>
579   - <group/>
580   - </field>
581   - <field>
582   - <name>&#x5e38;&#x89c4;&#x6709;&#x6548;&#x65e5;</name>
583   - <type>String</type>
584   - <length>-1</length>
585   - <precision>-1</precision>
586   - <trim_type>none</trim_type>
587   - <repeat>N</repeat>
588   - <format/>
589   - <currency/>
590   - <decimal/>
591   - <group/>
592   - </field>
593   - <field>
594   - <name>&#x7279;&#x6b8a;&#x6709;&#x6548;&#x65e5;</name>
595   - <type>String</type>
596   - <length>-1</length>
597   - <precision>-1</precision>
598   - <trim_type>none</trim_type>
599   - <repeat>N</repeat>
600   - <format/>
601   - <currency/>
602   - <decimal/>
603   - <group/>
604   - </field>
605   - </fields>
606   - <sheets>
607   - <sheet>
608   - <name>&#x5de5;&#x4f5c;&#x8868;1</name>
609   - <startrow>0</startrow>
610   - <startcol>0</startcol>
611   - </sheet>
612   - </sheets>
613   - <strict_types>N</strict_types>
614   - <error_ignored>N</error_ignored>
615   - <error_line_skipped>N</error_line_skipped>
616   - <bad_line_files_destination_directory/>
617   - <bad_line_files_extension>warning</bad_line_files_extension>
618   - <error_line_files_destination_directory/>
619   - <error_line_files_extension>error</error_line_files_extension>
620   - <line_number_files_destination_directory/>
621   - <line_number_files_extension>line</line_number_files_extension>
622   - <shortFileFieldName/>
623   - <pathFieldName/>
624   - <hiddenFieldName/>
625   - <lastModificationTimeFieldName/>
626   - <uriNameFieldName/>
627   - <rootUriNameFieldName/>
628   - <extensionFieldName/>
629   - <sizeFieldName/>
630   - <spreadsheet_type>JXL</spreadsheet_type>
631   - <cluster_schema/>
632   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
633   - <xloc>158</xloc>
634   - <yloc>77</yloc>
635   - <draw>Y</draw>
636   - </GUI>
637   - </step>
638   -
639   - <step>
640   - <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
641   - <type>SelectValues</type>
642   - <description/>
643   - <distribute>Y</distribute>
644   - <custom_distribution/>
645   - <copies>1</copies>
646   - <partitioning>
647   - <method>none</method>
648   - <schema_name/>
649   - </partitioning>
650   - <fields> <field> <name>&#x7ebf;&#x8def;&#x540d;&#x79f0;</name>
651   - <rename>xlName</rename>
652   - <length>-2</length>
653   - <precision>-2</precision>
654   - </field> <field> <name>&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;</name>
655   - <rename>name</rename>
656   - <length>-2</length>
657   - <precision>-2</precision>
658   - </field> <field> <name>&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;</name>
659   - <rename>xlDir</rename>
660   - <length>-2</length>
661   - <precision>-2</precision>
662   - </field> <field> <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
663   - <rename>qyrq</rename>
664   - <length>-2</length>
665   - <precision>-2</precision>
666   - </field> <field> <name>&#x8def;&#x724c;&#x6570;</name>
667   - <rename>lpCount</rename>
668   - <length>-2</length>
669   - <precision>-2</precision>
670   - </field> <field> <name>&#x5708;&#x6570;</name>
671   - <rename>loopCount</rename>
672   - <length>-2</length>
673   - <precision>-2</precision>
674   - </field> <field> <name>&#x5e38;&#x89c4;&#x6709;&#x6548;&#x65e5;</name>
675   - <rename>rule_days</rename>
676   - <length>-2</length>
677   - <precision>-2</precision>
678   - </field> <field> <name>&#x7279;&#x6b8a;&#x6709;&#x6548;&#x65e5;</name>
679   - <rename>special_days</rename>
680   - <length>-2</length>
681   - <precision>-2</precision>
682   - </field> <select_unspecified>N</select_unspecified>
683   - </fields> <cluster_schema/>
684   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
685   - <xloc>323</xloc>
686   - <yloc>75</yloc>
687   - <draw>Y</draw>
688   - </GUI>
689   - </step>
690   -
691   - <step>
692   - <name>&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;&#x503c;&#x6620;&#x5c04;</name>
693   - <type>ValueMapper</type>
694   - <description/>
695   - <distribute>Y</distribute>
696   - <custom_distribution/>
697   - <copies>1</copies>
698   - <partitioning>
699   - <method>none</method>
700   - <schema_name/>
701   - </partitioning>
702   - <field_to_use>xlDir</field_to_use>
703   - <target_field/>
704   - <non_match_default/>
705   - <fields>
706   - <field>
707   - <source_value>&#x4e0a;&#x884c;</source_value>
708   - <target_value>0</target_value>
709   - </field>
710   - <field>
711   - <source_value>&#x4e0b;&#x884c;</source_value>
712   - <target_value>1</target_value>
713   - </field>
714   - <field>
715   - <source_value>&#x4e0a;&#x4e0b;&#x884c;</source_value>
716   - <target_value>2</target_value>
717   - </field>
718   - </fields>
719   - <cluster_schema/>
720   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
721   - <xloc>460</xloc>
722   - <yloc>74</yloc>
723   - <draw>Y</draw>
724   - </GUI>
725   - </step>
726   -
727   - <step>
728   - <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>
729   - <type>GetVariable</type>
730   - <description/>
731   - <distribute>Y</distribute>
732   - <custom_distribution/>
733   - <copies>1</copies>
734   - <partitioning>
735   - <method>none</method>
736   - <schema_name/>
737   - </partitioning>
738   - <fields>
739   - <field>
740   - <name>filepath_</name>
741   - <variable>&#x24;&#x7b;filepath&#x7d;</variable>
742   - <type>String</type>
743   - <format/>
744   - <currency/>
745   - <decimal/>
746   - <group/>
747   - <length>-1</length>
748   - <precision>-1</precision>
749   - <trim_type>none</trim_type>
750   - </field>
751   - <field>
752   - <name>erroroutputdir_</name>
753   - <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
754   - <type>String</type>
755   - <format/>
756   - <currency/>
757   - <decimal/>
758   - <group/>
759   - <length>-1</length>
760   - <precision>-1</precision>
761   - <trim_type>none</trim_type>
762   - </field>
763   - </fields>
764   - <cluster_schema/>
765   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
766   - <xloc>162</xloc>
767   - <yloc>191</yloc>
768   - <draw>Y</draw>
769   - </GUI>
770   - </step>
771   -
772   - <step_error_handling>
773   - <error>
774   - <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo</source_step>
775   - <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa;</target_step>
776   - <is_enabled>Y</is_enabled>
777   - <nr_valuename>error_count</nr_valuename>
778   - <descriptions_valuename>error_desc</descriptions_valuename>
779   - <fields_valuename>error_column1</fields_valuename>
780   - <codes_valuename>error_column2</codes_valuename>
781   - <max_errors/>
782   - <max_pct_errors/>
783   - <min_pct_rows/>
784   - </error>
785   - </step_error_handling>
786   - <slave-step-copy-partition-distribution>
787   -</slave-step-copy-partition-distribution>
788   - <slave_transformation>N</slave_transformation>
789   -
790   -</transformation>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>ttinfoDataInput</name>
  5 + <description>&#x65f6;&#x523b;&#x8868;&#x57fa;&#x7840;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description>
  6 + <extended_description>&#x65f6;&#x523b;&#x8868;&#x57fa;&#x7840;&#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;30 09&#x3a;35&#x3a;41.558</created_date>
  81 + <modified_user>-</modified_user>
  82 + <modified_date>2016&#x2f;06&#x2f;30 09&#x3a;35&#x3a;41.558</modified_date>
  83 + <key_for_session_key/>
  84 + <is_key_private>N</is_key_private>
  85 + </info>
  86 + <notepads>
  87 + <notepad>
  88 + <note>&#x6709;&#x4e9b;&#x5b57;&#x6bb5;&#x6ca1;&#x6709;&#x8f93;&#x5165;&#xff0c;&#x4e0d;&#x592a;&#x660e;&#x767d;&#xff0c;&#x4ee5;&#x540e;&#x518d;&#x8865;&#xa;&#x6a21;&#x7248;&#x7c7b;&#x578b; &#x5206;&#x65f6;&#x523b;&#x8868;&#x2f;&#x95f4;&#x9694;&#x5f0f;&#x4e24;&#x79cd;&#xff0c;&#x6682;&#x65f6;&#x7a7a;&#x7740;&#xa;&#x662f;&#x5426;&#x542f;&#x7528;&#x8c03;&#x5ea6;&#x6a21;&#x7248; &#x6682;&#x65f6;&#x7a7a;&#x7740;&#xa;&#x8fd8;&#x6709;&#x5c31;&#x662f; &#x5206;&#x522b;&#x5728;&#xff0c;&#x5708;&#x540e;&#x5708; &#x6682;&#x65f6;&#x6ca1;&#x6709;</note>
  89 + <xloc>429</xloc>
  90 + <yloc>144</yloc>
  91 + <width>240</width>
  92 + <heigth>74</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>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
  217 + <hop> <from>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo</to><enabled>Y</enabled> </hop>
  218 + <hop> <from>&#x65f6;&#x523b;&#x8868;&#x57fa;&#x7840;&#x6570;&#x636e;Excel&#x8f93;&#x5165;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
  219 + <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;&#x503c;&#x6620;&#x5c04;</to><enabled>Y</enabled> </hop>
  220 + <hop> <from>&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;&#x503c;&#x6620;&#x5c04;</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
  221 + <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x65f6;&#x523b;&#x8868;&#x57fa;&#x7840;&#x6570;&#x636e;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>
  222 + </order>
  223 + <step>
  224 + <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo</name>
  225 + <type>InsertUpdate</type>
  226 + <description/>
  227 + <distribute>Y</distribute>
  228 + <custom_distribution/>
  229 + <copies>1</copies>
  230 + <partitioning>
  231 + <method>none</method>
  232 + <schema_name/>
  233 + </partitioning>
  234 + <connection>bus_control_&#x516c;&#x53f8;_201</connection>
  235 + <commit>100</commit>
  236 + <update_bypassed>N</update_bypassed>
  237 + <lookup>
  238 + <schema/>
  239 + <table>bsth_c_s_ttinfo</table>
  240 + <key>
  241 + <name>xlid</name>
  242 + <field>xl</field>
  243 + <condition>&#x3d;</condition>
  244 + <name2/>
  245 + </key>
  246 + <key>
  247 + <name>name</name>
  248 + <field>name</field>
  249 + <condition>&#x3d;</condition>
  250 + <name2/>
  251 + </key>
  252 + <value>
  253 + <name>name</name>
  254 + <rename>name</rename>
  255 + <update>Y</update>
  256 + </value>
  257 + <value>
  258 + <name>xl_dir</name>
  259 + <rename>xlDir</rename>
  260 + <update>Y</update>
  261 + </value>
  262 + <value>
  263 + <name>qyrq</name>
  264 + <rename>qyrq</rename>
  265 + <update>Y</update>
  266 + </value>
  267 + <value>
  268 + <name>lp_count</name>
  269 + <rename>lpCount</rename>
  270 + <update>Y</update>
  271 + </value>
  272 + <value>
  273 + <name>loop_count</name>
  274 + <rename>loopCount</rename>
  275 + <update>Y</update>
  276 + </value>
  277 + <value>
  278 + <name>rule_days</name>
  279 + <rename>rule_days</rename>
  280 + <update>Y</update>
  281 + </value>
  282 + <value>
  283 + <name>special_days</name>
  284 + <rename>special_days</rename>
  285 + <update>Y</update>
  286 + </value>
  287 + <value>
  288 + <name>xl</name>
  289 + <rename>xlid</rename>
  290 + <update>Y</update>
  291 + </value>
  292 + </lookup>
  293 + <cluster_schema/>
  294 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  295 + <xloc>799</xloc>
  296 + <yloc>71</yloc>
  297 + <draw>Y</draw>
  298 + </GUI>
  299 + </step>
  300 +
  301 + <step>
  302 + <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</name>
  303 + <type>DBLookup</type>
  304 + <description/>
  305 + <distribute>Y</distribute>
  306 + <custom_distribution/>
  307 + <copies>1</copies>
  308 + <partitioning>
  309 + <method>none</method>
  310 + <schema_name/>
  311 + </partitioning>
  312 + <connection>bus_control_&#x516c;&#x53f8;_201</connection>
  313 + <cache>N</cache>
  314 + <cache_load_all>N</cache_load_all>
  315 + <cache_size>0</cache_size>
  316 + <lookup>
  317 + <schema/>
  318 + <table>bsth_c_line</table>
  319 + <orderby/>
  320 + <fail_on_multiple>N</fail_on_multiple>
  321 + <eat_row_on_failure>N</eat_row_on_failure>
  322 + <key>
  323 + <name>xlName</name>
  324 + <field>name</field>
  325 + <condition>&#x3d;</condition>
  326 + <name2/>
  327 + </key>
  328 + <value>
  329 + <name>id</name>
  330 + <rename>xlid</rename>
  331 + <default/>
  332 + <type>Integer</type>
  333 + </value>
  334 + </lookup>
  335 + <cluster_schema/>
  336 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  337 + <xloc>599</xloc>
  338 + <yloc>71</yloc>
  339 + <draw>Y</draw>
  340 + </GUI>
  341 + </step>
  342 +
  343 + <step>
  344 + <name>&#x9519;&#x8bef;&#x8f93;&#x51fa;</name>
  345 + <type>ExcelOutput</type>
  346 + <description/>
  347 + <distribute>Y</distribute>
  348 + <custom_distribution/>
  349 + <copies>1</copies>
  350 + <partitioning>
  351 + <method>none</method>
  352 + <schema_name/>
  353 + </partitioning>
  354 + <header>Y</header>
  355 + <footer>N</footer>
  356 + <encoding>UTF-8</encoding>
  357 + <append>N</append>
  358 + <add_to_result_filenames>Y</add_to_result_filenames>
  359 + <file>
  360 + <name>&#x24;&#x7b;erroroutputdir&#x7d;&#x2f;&#x65f6;&#x523b;&#x8868;&#x57fa;&#x7840;&#x4fe1;&#x606f;_&#x9519;&#x8bef;</name>
  361 + <extention>xls</extention>
  362 + <do_not_open_newfile_init>N</do_not_open_newfile_init>
  363 + <create_parent_folder>N</create_parent_folder>
  364 + <split>N</split>
  365 + <add_date>N</add_date>
  366 + <add_time>N</add_time>
  367 + <SpecifyFormat>N</SpecifyFormat>
  368 + <date_time_format/>
  369 + <sheetname>Sheet1</sheetname>
  370 + <autosizecolums>N</autosizecolums>
  371 + <nullisblank>N</nullisblank>
  372 + <protect_sheet>N</protect_sheet>
  373 + <password>Encrypted </password>
  374 + <splitevery>0</splitevery>
  375 + <usetempfiles>N</usetempfiles>
  376 + <tempdirectory/>
  377 + </file>
  378 + <template>
  379 + <enabled>N</enabled>
  380 + <append>N</append>
  381 + <filename>template.xls</filename>
  382 + </template>
  383 + <fields>
  384 + <field>
  385 + <name>xlName</name>
  386 + <type>String</type>
  387 + <format/>
  388 + </field>
  389 + <field>
  390 + <name>name</name>
  391 + <type>String</type>
  392 + <format/>
  393 + </field>
  394 + <field>
  395 + <name>xlDir</name>
  396 + <type>String</type>
  397 + <format/>
  398 + </field>
  399 + <field>
  400 + <name>qyrq</name>
  401 + <type>Date</type>
  402 + <format/>
  403 + </field>
  404 + <field>
  405 + <name>lpCount</name>
  406 + <type>Integer</type>
  407 + <format/>
  408 + </field>
  409 + <field>
  410 + <name>loopCount</name>
  411 + <type>Integer</type>
  412 + <format/>
  413 + </field>
  414 + <field>
  415 + <name>rule_days</name>
  416 + <type>String</type>
  417 + <format/>
  418 + </field>
  419 + <field>
  420 + <name>special_days</name>
  421 + <type>String</type>
  422 + <format/>
  423 + </field>
  424 + <field>
  425 + <name>xlid</name>
  426 + <type>Integer</type>
  427 + <format/>
  428 + </field>
  429 + <field>
  430 + <name>error_count</name>
  431 + <type>Integer</type>
  432 + <format/>
  433 + </field>
  434 + <field>
  435 + <name>error_desc</name>
  436 + <type>String</type>
  437 + <format/>
  438 + </field>
  439 + <field>
  440 + <name>error_column1</name>
  441 + <type>String</type>
  442 + <format/>
  443 + </field>
  444 + <field>
  445 + <name>error_column2</name>
  446 + <type>String</type>
  447 + <format/>
  448 + </field>
  449 + </fields>
  450 + <custom>
  451 + <header_font_name>arial</header_font_name>
  452 + <header_font_size>10</header_font_size>
  453 + <header_font_bold>N</header_font_bold>
  454 + <header_font_italic>N</header_font_italic>
  455 + <header_font_underline>no</header_font_underline>
  456 + <header_font_orientation>horizontal</header_font_orientation>
  457 + <header_font_color>black</header_font_color>
  458 + <header_background_color>none</header_background_color>
  459 + <header_row_height>255</header_row_height>
  460 + <header_alignment>left</header_alignment>
  461 + <header_image/>
  462 + <row_font_name>arial</row_font_name>
  463 + <row_font_size>10</row_font_size>
  464 + <row_font_color>black</row_font_color>
  465 + <row_background_color>none</row_background_color>
  466 + </custom>
  467 + <cluster_schema/>
  468 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  469 + <xloc>799</xloc>
  470 + <yloc>184</yloc>
  471 + <draw>Y</draw>
  472 + </GUI>
  473 + </step>
  474 +
  475 + <step>
  476 + <name>&#x65f6;&#x523b;&#x8868;&#x57fa;&#x7840;&#x6570;&#x636e;Excel&#x8f93;&#x5165;</name>
  477 + <type>ExcelInput</type>
  478 + <description/>
  479 + <distribute>Y</distribute>
  480 + <custom_distribution/>
  481 + <copies>1</copies>
  482 + <partitioning>
  483 + <method>none</method>
  484 + <schema_name/>
  485 + </partitioning>
  486 + <header>Y</header>
  487 + <noempty>Y</noempty>
  488 + <stoponempty>N</stoponempty>
  489 + <filefield/>
  490 + <sheetfield/>
  491 + <sheetrownumfield/>
  492 + <rownumfield/>
  493 + <sheetfield/>
  494 + <filefield/>
  495 + <limit>0</limit>
  496 + <encoding/>
  497 + <add_to_result_filenames>Y</add_to_result_filenames>
  498 + <accept_filenames>Y</accept_filenames>
  499 + <accept_field>filepath_</accept_field>
  500 + <accept_stepname>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</accept_stepname>
  501 + <file>
  502 + <name/>
  503 + <filemask/>
  504 + <exclude_filemask/>
  505 + <file_required>N</file_required>
  506 + <include_subfolders>N</include_subfolders>
  507 + </file>
  508 + <fields>
  509 + <field>
  510 + <name>&#x7ebf;&#x8def;&#x540d;&#x79f0;</name>
  511 + <type>String</type>
  512 + <length>-1</length>
  513 + <precision>-1</precision>
  514 + <trim_type>none</trim_type>
  515 + <repeat>N</repeat>
  516 + <format/>
  517 + <currency/>
  518 + <decimal/>
  519 + <group/>
  520 + </field>
  521 + <field>
  522 + <name>&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;</name>
  523 + <type>String</type>
  524 + <length>-1</length>
  525 + <precision>-1</precision>
  526 + <trim_type>none</trim_type>
  527 + <repeat>N</repeat>
  528 + <format/>
  529 + <currency/>
  530 + <decimal/>
  531 + <group/>
  532 + </field>
  533 + <field>
  534 + <name>&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;</name>
  535 + <type>String</type>
  536 + <length>-1</length>
  537 + <precision>-1</precision>
  538 + <trim_type>none</trim_type>
  539 + <repeat>N</repeat>
  540 + <format/>
  541 + <currency/>
  542 + <decimal/>
  543 + <group/>
  544 + </field>
  545 + <field>
  546 + <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  547 + <type>String</type>
  548 + <length>-1</length>
  549 + <precision>-1</precision>
  550 + <trim_type>none</trim_type>
  551 + <repeat>N</repeat>
  552 + <format/>
  553 + <currency/>
  554 + <decimal/>
  555 + <group/>
  556 + </field>
  557 + <field>
  558 + <name>&#x8def;&#x724c;&#x6570;</name>
  559 + <type>String</type>
  560 + <length>-1</length>
  561 + <precision>-1</precision>
  562 + <trim_type>none</trim_type>
  563 + <repeat>N</repeat>
  564 + <format>&#x23;</format>
  565 + <currency/>
  566 + <decimal/>
  567 + <group/>
  568 + </field>
  569 + <field>
  570 + <name>&#x5708;&#x6570;</name>
  571 + <type>String</type>
  572 + <length>-1</length>
  573 + <precision>-1</precision>
  574 + <trim_type>none</trim_type>
  575 + <repeat>N</repeat>
  576 + <format>&#x23;</format>
  577 + <currency/>
  578 + <decimal/>
  579 + <group/>
  580 + </field>
  581 + <field>
  582 + <name>&#x5e38;&#x89c4;&#x6709;&#x6548;&#x65e5;</name>
  583 + <type>String</type>
  584 + <length>-1</length>
  585 + <precision>-1</precision>
  586 + <trim_type>none</trim_type>
  587 + <repeat>N</repeat>
  588 + <format/>
  589 + <currency/>
  590 + <decimal/>
  591 + <group/>
  592 + </field>
  593 + <field>
  594 + <name>&#x7279;&#x6b8a;&#x6709;&#x6548;&#x65e5;</name>
  595 + <type>String</type>
  596 + <length>-1</length>
  597 + <precision>-1</precision>
  598 + <trim_type>none</trim_type>
  599 + <repeat>N</repeat>
  600 + <format/>
  601 + <currency/>
  602 + <decimal/>
  603 + <group/>
  604 + </field>
  605 + </fields>
  606 + <sheets>
  607 + <sheet>
  608 + <name>&#x5de5;&#x4f5c;&#x8868;1</name>
  609 + <startrow>0</startrow>
  610 + <startcol>0</startcol>
  611 + </sheet>
  612 + </sheets>
  613 + <strict_types>N</strict_types>
  614 + <error_ignored>N</error_ignored>
  615 + <error_line_skipped>N</error_line_skipped>
  616 + <bad_line_files_destination_directory/>
  617 + <bad_line_files_extension>warning</bad_line_files_extension>
  618 + <error_line_files_destination_directory/>
  619 + <error_line_files_extension>error</error_line_files_extension>
  620 + <line_number_files_destination_directory/>
  621 + <line_number_files_extension>line</line_number_files_extension>
  622 + <shortFileFieldName/>
  623 + <pathFieldName/>
  624 + <hiddenFieldName/>
  625 + <lastModificationTimeFieldName/>
  626 + <uriNameFieldName/>
  627 + <rootUriNameFieldName/>
  628 + <extensionFieldName/>
  629 + <sizeFieldName/>
  630 + <spreadsheet_type>JXL</spreadsheet_type>
  631 + <cluster_schema/>
  632 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  633 + <xloc>158</xloc>
  634 + <yloc>77</yloc>
  635 + <draw>Y</draw>
  636 + </GUI>
  637 + </step>
  638 +
  639 + <step>
  640 + <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
  641 + <type>SelectValues</type>
  642 + <description/>
  643 + <distribute>Y</distribute>
  644 + <custom_distribution/>
  645 + <copies>1</copies>
  646 + <partitioning>
  647 + <method>none</method>
  648 + <schema_name/>
  649 + </partitioning>
  650 + <fields> <field> <name>&#x7ebf;&#x8def;&#x540d;&#x79f0;</name>
  651 + <rename>xlName</rename>
  652 + <length>-2</length>
  653 + <precision>-2</precision>
  654 + </field> <field> <name>&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;</name>
  655 + <rename>name</rename>
  656 + <length>-2</length>
  657 + <precision>-2</precision>
  658 + </field> <field> <name>&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;</name>
  659 + <rename>xlDir</rename>
  660 + <length>-2</length>
  661 + <precision>-2</precision>
  662 + </field> <field> <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  663 + <rename>qyrq</rename>
  664 + <length>-2</length>
  665 + <precision>-2</precision>
  666 + </field> <field> <name>&#x8def;&#x724c;&#x6570;</name>
  667 + <rename>lpCount</rename>
  668 + <length>-2</length>
  669 + <precision>-2</precision>
  670 + </field> <field> <name>&#x5708;&#x6570;</name>
  671 + <rename>loopCount</rename>
  672 + <length>-2</length>
  673 + <precision>-2</precision>
  674 + </field> <field> <name>&#x5e38;&#x89c4;&#x6709;&#x6548;&#x65e5;</name>
  675 + <rename>rule_days</rename>
  676 + <length>-2</length>
  677 + <precision>-2</precision>
  678 + </field> <field> <name>&#x7279;&#x6b8a;&#x6709;&#x6548;&#x65e5;</name>
  679 + <rename>special_days</rename>
  680 + <length>-2</length>
  681 + <precision>-2</precision>
  682 + </field> <select_unspecified>N</select_unspecified>
  683 + </fields> <cluster_schema/>
  684 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  685 + <xloc>323</xloc>
  686 + <yloc>75</yloc>
  687 + <draw>Y</draw>
  688 + </GUI>
  689 + </step>
  690 +
  691 + <step>
  692 + <name>&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;&#x503c;&#x6620;&#x5c04;</name>
  693 + <type>ValueMapper</type>
  694 + <description/>
  695 + <distribute>Y</distribute>
  696 + <custom_distribution/>
  697 + <copies>1</copies>
  698 + <partitioning>
  699 + <method>none</method>
  700 + <schema_name/>
  701 + </partitioning>
  702 + <field_to_use>xlDir</field_to_use>
  703 + <target_field/>
  704 + <non_match_default/>
  705 + <fields>
  706 + <field>
  707 + <source_value>&#x4e0a;&#x884c;</source_value>
  708 + <target_value>0</target_value>
  709 + </field>
  710 + <field>
  711 + <source_value>&#x4e0b;&#x884c;</source_value>
  712 + <target_value>1</target_value>
  713 + </field>
  714 + <field>
  715 + <source_value>&#x4e0a;&#x4e0b;&#x884c;</source_value>
  716 + <target_value>2</target_value>
  717 + </field>
  718 + </fields>
  719 + <cluster_schema/>
  720 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  721 + <xloc>460</xloc>
  722 + <yloc>74</yloc>
  723 + <draw>Y</draw>
  724 + </GUI>
  725 + </step>
  726 +
  727 + <step>
  728 + <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>
  729 + <type>GetVariable</type>
  730 + <description/>
  731 + <distribute>Y</distribute>
  732 + <custom_distribution/>
  733 + <copies>1</copies>
  734 + <partitioning>
  735 + <method>none</method>
  736 + <schema_name/>
  737 + </partitioning>
  738 + <fields>
  739 + <field>
  740 + <name>filepath_</name>
  741 + <variable>&#x24;&#x7b;filepath&#x7d;</variable>
  742 + <type>String</type>
  743 + <format/>
  744 + <currency/>
  745 + <decimal/>
  746 + <group/>
  747 + <length>-1</length>
  748 + <precision>-1</precision>
  749 + <trim_type>none</trim_type>
  750 + </field>
  751 + <field>
  752 + <name>erroroutputdir_</name>
  753 + <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
  754 + <type>String</type>
  755 + <format/>
  756 + <currency/>
  757 + <decimal/>
  758 + <group/>
  759 + <length>-1</length>
  760 + <precision>-1</precision>
  761 + <trim_type>none</trim_type>
  762 + </field>
  763 + </fields>
  764 + <cluster_schema/>
  765 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  766 + <xloc>162</xloc>
  767 + <yloc>191</yloc>
  768 + <draw>Y</draw>
  769 + </GUI>
  770 + </step>
  771 +
  772 + <step_error_handling>
  773 + <error>
  774 + <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo</source_step>
  775 + <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa;</target_step>
  776 + <is_enabled>Y</is_enabled>
  777 + <nr_valuename>error_count</nr_valuename>
  778 + <descriptions_valuename>error_desc</descriptions_valuename>
  779 + <fields_valuename>error_column1</fields_valuename>
  780 + <codes_valuename>error_column2</codes_valuename>
  781 + <max_errors/>
  782 + <max_pct_errors/>
  783 + <min_pct_rows/>
  784 + </error>
  785 + </step_error_handling>
  786 + <slave-step-copy-partition-distribution>
  787 +</slave-step-copy-partition-distribution>
  788 + <slave_transformation>N</slave_transformation>
  789 +
  790 +</transformation>
... ...
src/main/resources/datatools/ktrs/ttinfodetailDataInput.ktr
1   -<?xml version="1.0" encoding="UTF-8"?>
2   -<transformation>
3   - <info>
4   - <name>ttinfodetailDataInput</name>
5   - <description>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description>
6   - <extended_description>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#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   - <parameter>
23   - <name>tccname</name>
24   - <default_value/>
25   - <description>&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</description>
26   - </parameter>
27   - <parameter>
28   - <name>ttinfoname</name>
29   - <default_value/>
30   - <description>&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;</description>
31   - </parameter>
32   - <parameter>
33   - <name>xlname</name>
34   - <default_value/>
35   - <description>&#x7ebf;&#x8def;&#x540d;&#x79f0;</description>
36   - </parameter>
37   - </parameters>
38   - <log>
39   -<trans-log-table><connection/>
40   -<schema/>
41   -<table/>
42   -<size_limit_lines/>
43   -<interval/>
44   -<timeout_days/>
45   -<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>
46   -<perf-log-table><connection/>
47   -<schema/>
48   -<table/>
49   -<interval/>
50   -<timeout_days/>
51   -<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>
52   -<channel-log-table><connection/>
53   -<schema/>
54   -<table/>
55   -<timeout_days/>
56   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>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>
57   -<step-log-table><connection/>
58   -<schema/>
59   -<table/>
60   -<timeout_days/>
61   -<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>
62   -<metrics-log-table><connection/>
63   -<schema/>
64   -<table/>
65   -<timeout_days/>
66   -<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>
67   - </log>
68   - <maxdate>
69   - <connection/>
70   - <table/>
71   - <field/>
72   - <offset>0.0</offset>
73   - <maxdiff>0.0</maxdiff>
74   - </maxdate>
75   - <size_rowset>10000</size_rowset>
76   - <sleep_time_empty>50</sleep_time_empty>
77   - <sleep_time_full>50</sleep_time_full>
78   - <unique_connections>N</unique_connections>
79   - <feedback_shown>Y</feedback_shown>
80   - <feedback_size>50000</feedback_size>
81   - <using_thread_priorities>Y</using_thread_priorities>
82   - <shared_objects_file/>
83   - <capture_step_performance>N</capture_step_performance>
84   - <step_performance_capturing_delay>1000</step_performance_capturing_delay>
85   - <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
86   - <dependencies>
87   - </dependencies>
88   - <partitionschemas>
89   - </partitionschemas>
90   - <slaveservers>
91   - </slaveservers>
92   - <clusterschemas>
93   - </clusterschemas>
94   - <created_user>-</created_user>
95   - <created_date>2016&#x2f;06&#x2f;30 12&#x3a;21&#x3a;57.536</created_date>
96   - <modified_user>-</modified_user>
97   - <modified_date>2016&#x2f;06&#x2f;30 12&#x3a;21&#x3a;57.536</modified_date>
98   - <key_for_session_key/>
99   - <is_key_private>N</is_key_private>
100   - </info>
101   - <notepads>
102   - </notepads>
103   - <connection>
104   - <name>bus_control_&#x516c;&#x53f8;_201</name>
105   - <server>192.168.168.201</server>
106   - <type>MYSQL</type>
107   - <access>Native</access>
108   - <database>control</database>
109   - <port>3306</port>
110   - <username>root</username>
111   - <password>Encrypted 2be98afc86aa7f2e4cb79ff228dc6fa8c</password>
112   - <servername/>
113   - <data_tablespace/>
114   - <index_tablespace/>
115   - <attributes>
116   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
117   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
118   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
119   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
120   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
121   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
122   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
123   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
124   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
125   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
126   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
127   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
128   - </attributes>
129   - </connection>
130   - <connection>
131   - <name>xlab_mysql_youle</name>
132   - <server>101.231.124.8</server>
133   - <type>MYSQL</type>
134   - <access>Native</access>
135   - <database>xlab_youle</database>
136   - <port>45687</port>
137   - <username>xlab-youle</username>
138   - <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
139   - <servername/>
140   - <data_tablespace/>
141   - <index_tablespace/>
142   - <attributes>
143   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
144   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
145   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
146   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
147   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
148   - <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
149   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
150   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
151   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
152   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
153   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
154   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
155   - </attributes>
156   - </connection>
157   - <connection>
158   - <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
159   - <server>localhost</server>
160   - <type>MYSQL</type>
161   - <access>Native</access>
162   - <database>xlab_youle</database>
163   - <port>3306</port>
164   - <username>root</username>
165   - <password>Encrypted </password>
166   - <servername/>
167   - <data_tablespace/>
168   - <index_tablespace/>
169   - <attributes>
170   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
171   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
172   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
173   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
174   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
175   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
176   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
177   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
178   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
179   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
180   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
181   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
182   - </attributes>
183   - </connection>
184   - <connection>
185   - <name>xlab_youle</name>
186   - <server/>
187   - <type>MYSQL</type>
188   - <access>JNDI</access>
189   - <database>xlab_youle</database>
190   - <port>1521</port>
191   - <username/>
192   - <password>Encrypted </password>
193   - <servername/>
194   - <data_tablespace/>
195   - <index_tablespace/>
196   - <attributes>
197   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
198   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
199   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
200   - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
201   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
202   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
203   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
204   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
205   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
206   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
207   - </attributes>
208   - </connection>
209   - <order>
210   - <hop> <from>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</from><to>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</to><enabled>Y</enabled> </hop>
211   - <hop> <from>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
212   - <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x6dfb;&#x52a0;&#x53d1;&#x8f66;&#x987a;&#x5e8f;&#x53f7;</to><enabled>Y</enabled> </hop>
213   - <hop> <from>&#x6dfb;&#x52a0;&#x53d1;&#x8f66;&#x987a;&#x5e8f;&#x53f7;</from><to>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;&#xff08;&#x53d1;&#x8f66;&#x65f6;&#x95f4;&#x4e3a;&#x7a7a;&#xff09;</to><enabled>Y</enabled> </hop>
214   - <hop> <from>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;&#xff08;&#x53d1;&#x8f66;&#x65f6;&#x95f4;&#x4e3a;&#x7a7a;&#xff09;</from><to>&#x6dfb;&#x52a0;&#x5bf9;&#x5e94;&#x73ed;&#x6b21;&#x6570;</to><enabled>Y</enabled> </hop>
215   - <hop> <from>&#x6dfb;&#x52a0;&#x5bf9;&#x5e94;&#x73ed;&#x6b21;&#x6570;</from><to>&#x5904;&#x7406;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
216   - <hop> <from>&#x5904;&#x7406;&#x6570;&#x636e;</from><to>&#x5206;&#x7ec4;&#x5404;&#x4e2a;&#x8def;&#x724c;&#x7684;&#x7ad9;</to><enabled>Y</enabled> </hop>
217   - <hop> <from>&#x67e5;&#x627e;&#x65f6;&#x523b;&#x8868;&#x57fa;&#x7840;&#x4fe1;&#x606f;&#x5173;&#x8054;</from><to>&#x67e5;&#x627e;&#x8def;&#x724c;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
218   - <hop> <from>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</from><to>&#x67e5;&#x627e;&#x65f6;&#x523b;&#x8868;&#x57fa;&#x7840;&#x4fe1;&#x606f;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
219   - <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>
220   - <hop> <from>&#x5206;&#x7ec4;&#x5404;&#x4e2a;&#x8def;&#x724c;&#x7684;&#x7ad9;</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
221   - <hop> <from>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178;</from><to>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178;</to><enabled>Y</enabled> </hop>
222   - <hop> <from>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178; 2</from><to>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 2</to><enabled>Y</enabled> </hop>
223   - <hop> <from>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178; 3</from><to>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 3</to><enabled>Y</enabled> </hop>
224   - <hop> <from>&#x51fa;&#x573a;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</from><to>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;1</to><enabled>Y</enabled> </hop>
225   - <hop> <from>&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</from><to>&#x51fa;&#x573a;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
226   - <hop> <from>&#x5339;&#x914d;&#x4e0a;&#x4e0b;&#x884c;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</from><to>&#x7c7b;&#x578b;&#x4fee;&#x6b63;</to><enabled>Y</enabled> </hop>
227   - <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;1</from><to>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</to><enabled>Y</enabled> </hop>
228   - <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;1</from><to>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
229   - <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</from><to>&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
230   - <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</from><to>&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
231   - <hop> <from>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;1</from><to>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;1</to><enabled>Y</enabled> </hop>
232   - <hop> <from>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;2</from><to>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;2</to><enabled>Y</enabled> </hop>
233   - <hop> <from>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</from><to>&#x5339;&#x914d;&#x4e0a;&#x4e0b;&#x884c;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
234   - <hop> <from>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;</from><to>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178;</to><enabled>Y</enabled> </hop>
235   - <hop> <from>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;1</from><to>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178; 2</to><enabled>Y</enabled> </hop>
236   - <hop> <from>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;2</from><to>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178; 3</to><enabled>Y</enabled> </hop>
237   - <hop> <from>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</from><to>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
238   - <hop> <from>&#x6b63;&#x5e38;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</from><to>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</to><enabled>Y</enabled> </hop>
239   - <hop> <from>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6570;&#x636e;</from><to>&#x6b63;&#x5e38;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
240   - <hop> <from>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178;</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
241   - <hop> <from>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 2</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x51fa;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
242   - <hop> <from>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 3</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x8fdb;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
243   - <hop> <from>&#x8fdb;&#x573a;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</from><to>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;2</to><enabled>Y</enabled> </hop>
244   - <hop> <from>&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</from><to>&#x8fdb;&#x573a;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
245   - <hop> <from>&#x67e5;&#x627e;&#x8def;&#x724c;&#x5173;&#x8054;</from><to>&#x8ba1;&#x7b97;&#x73ed;&#x6b21;&#x7c7b;&#x578b;</to><enabled>Y</enabled> </hop>
246   - <hop> <from>&#x8ba1;&#x7b97;&#x73ed;&#x6b21;&#x7c7b;&#x578b;</from><to>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;1</to><enabled>Y</enabled> </hop>
247   - </order>
248   - <step>
249   - <name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</name>
250   - <type>ExcelInput</type>
251   - <description/>
252   - <distribute>Y</distribute>
253   - <custom_distribution/>
254   - <copies>1</copies>
255   - <partitioning>
256   - <method>none</method>
257   - <schema_name/>
258   - </partitioning>
259   - <header>Y</header>
260   - <noempty>Y</noempty>
261   - <stoponempty>N</stoponempty>
262   - <filefield/>
263   - <sheetfield/>
264   - <sheetrownumfield/>
265   - <rownumfield/>
266   - <sheetfield/>
267   - <filefield/>
268   - <limit>0</limit>
269   - <encoding/>
270   - <add_to_result_filenames>Y</add_to_result_filenames>
271   - <accept_filenames>N</accept_filenames>
272   - <accept_field/>
273   - <accept_stepname/>
274   - <file>
275   - <name>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project&#x2f;bsth_control_etl&#x2f;&#x95f5;&#x884c;&#x516c;&#x4ea4;&#x2f;85&#x8def;0328&#x5e73;&#x8868;-&#x6d4b;&#x8bd5;1-&#x65f6;&#x523b;&#x660e;&#x7ec6;.xls</name>
276   - <filemask/>
277   - <exclude_filemask/>
278   - <file_required>N</file_required>
279   - <include_subfolders>N</include_subfolders>
280   - </file>
281   - <fields>
282   - <field>
283   - <name>&#x8def;&#x724c;</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>&#x51fa;&#x573a;</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>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;1</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   - <field>
319   - <name>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;1</name>
320   - <type>String</type>
321   - <length>-1</length>
322   - <precision>-1</precision>
323   - <trim_type>none</trim_type>
324   - <repeat>N</repeat>
325   - <format/>
326   - <currency/>
327   - <decimal/>
328   - <group/>
329   - </field>
330   - <field>
331   - <name>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;2</name>
332   - <type>String</type>
333   - <length>-1</length>
334   - <precision>-1</precision>
335   - <trim_type>none</trim_type>
336   - <repeat>N</repeat>
337   - <format/>
338   - <currency/>
339   - <decimal/>
340   - <group/>
341   - </field>
342   - <field>
343   - <name>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;2</name>
344   - <type>String</type>
345   - <length>-1</length>
346   - <precision>-1</precision>
347   - <trim_type>none</trim_type>
348   - <repeat>N</repeat>
349   - <format/>
350   - <currency/>
351   - <decimal/>
352   - <group/>
353   - </field>
354   - <field>
355   - <name>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;3</name>
356   - <type>String</type>
357   - <length>-1</length>
358   - <precision>-1</precision>
359   - <trim_type>none</trim_type>
360   - <repeat>N</repeat>
361   - <format/>
362   - <currency/>
363   - <decimal/>
364   - <group/>
365   - </field>
366   - <field>
367   - <name>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;3</name>
368   - <type>String</type>
369   - <length>-1</length>
370   - <precision>-1</precision>
371   - <trim_type>none</trim_type>
372   - <repeat>N</repeat>
373   - <format/>
374   - <currency/>
375   - <decimal/>
376   - <group/>
377   - </field>
378   - <field>
379   - <name>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;4</name>
380   - <type>String</type>
381   - <length>-1</length>
382   - <precision>-1</precision>
383   - <trim_type>none</trim_type>
384   - <repeat>N</repeat>
385   - <format/>
386   - <currency/>
387   - <decimal/>
388   - <group/>
389   - </field>
390   - <field>
391   - <name>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;4</name>
392   - <type>String</type>
393   - <length>-1</length>
394   - <precision>-1</precision>
395   - <trim_type>none</trim_type>
396   - <repeat>N</repeat>
397   - <format/>
398   - <currency/>
399   - <decimal/>
400   - <group/>
401   - </field>
402   - <field>
403   - <name>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;5</name>
404   - <type>String</type>
405   - <length>-1</length>
406   - <precision>-1</precision>
407   - <trim_type>none</trim_type>
408   - <repeat>N</repeat>
409   - <format/>
410   - <currency/>
411   - <decimal/>
412   - <group/>
413   - </field>
414   - <field>
415   - <name>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;5</name>
416   - <type>String</type>
417   - <length>-1</length>
418   - <precision>-1</precision>
419   - <trim_type>none</trim_type>
420   - <repeat>N</repeat>
421   - <format/>
422   - <currency/>
423   - <decimal/>
424   - <group/>
425   - </field>
426   - <field>
427   - <name>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;6</name>
428   - <type>String</type>
429   - <length>-1</length>
430   - <precision>-1</precision>
431   - <trim_type>none</trim_type>
432   - <repeat>N</repeat>
433   - <format/>
434   - <currency/>
435   - <decimal/>
436   - <group/>
437   - </field>
438   - <field>
439   - <name>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;6</name>
440   - <type>String</type>
441   - <length>-1</length>
442   - <precision>-1</precision>
443   - <trim_type>none</trim_type>
444   - <repeat>N</repeat>
445   - <format/>
446   - <currency/>
447   - <decimal/>
448   - <group/>
449   - </field>
450   - <field>
451   - <name>&#x8fdb;&#x573a;1</name>
452   - <type>String</type>
453   - <length>-1</length>
454   - <precision>-1</precision>
455   - <trim_type>none</trim_type>
456   - <repeat>N</repeat>
457   - <format/>
458   - <currency/>
459   - <decimal/>
460   - <group/>
461   - </field>
462   - <field>
463   - <name>&#x51fa;&#x573a;1</name>
464   - <type>String</type>
465   - <length>-1</length>
466   - <precision>-1</precision>
467   - <trim_type>none</trim_type>
468   - <repeat>N</repeat>
469   - <format/>
470   - <currency/>
471   - <decimal/>
472   - <group/>
473   - </field>
474   - <field>
475   - <name>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;7</name>
476   - <type>String</type>
477   - <length>-1</length>
478   - <precision>-1</precision>
479   - <trim_type>none</trim_type>
480   - <repeat>N</repeat>
481   - <format/>
482   - <currency/>
483   - <decimal/>
484   - <group/>
485   - </field>
486   - <field>
487   - <name>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;7</name>
488   - <type>String</type>
489   - <length>-1</length>
490   - <precision>-1</precision>
491   - <trim_type>none</trim_type>
492   - <repeat>N</repeat>
493   - <format/>
494   - <currency/>
495   - <decimal/>
496   - <group/>
497   - </field>
498   - <field>
499   - <name>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;8</name>
500   - <type>String</type>
501   - <length>-1</length>
502   - <precision>-1</precision>
503   - <trim_type>none</trim_type>
504   - <repeat>N</repeat>
505   - <format/>
506   - <currency/>
507   - <decimal/>
508   - <group/>
509   - </field>
510   - <field>
511   - <name>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;8</name>
512   - <type>String</type>
513   - <length>-1</length>
514   - <precision>-1</precision>
515   - <trim_type>none</trim_type>
516   - <repeat>N</repeat>
517   - <format/>
518   - <currency/>
519   - <decimal/>
520   - <group/>
521   - </field>
522   - <field>
523   - <name>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;9</name>
524   - <type>String</type>
525   - <length>-1</length>
526   - <precision>-1</precision>
527   - <trim_type>none</trim_type>
528   - <repeat>N</repeat>
529   - <format/>
530   - <currency/>
531   - <decimal/>
532   - <group/>
533   - </field>
534   - <field>
535   - <name>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;9</name>
536   - <type>String</type>
537   - <length>-1</length>
538   - <precision>-1</precision>
539   - <trim_type>none</trim_type>
540   - <repeat>N</repeat>
541   - <format/>
542   - <currency/>
543   - <decimal/>
544   - <group/>
545   - </field>
546   - <field>
547   - <name>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;10</name>
548   - <type>String</type>
549   - <length>-1</length>
550   - <precision>-1</precision>
551   - <trim_type>none</trim_type>
552   - <repeat>N</repeat>
553   - <format/>
554   - <currency/>
555   - <decimal/>
556   - <group/>
557   - </field>
558   - <field>
559   - <name>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;10</name>
560   - <type>String</type>
561   - <length>-1</length>
562   - <precision>-1</precision>
563   - <trim_type>none</trim_type>
564   - <repeat>N</repeat>
565   - <format/>
566   - <currency/>
567   - <decimal/>
568   - <group/>
569   - </field>
570   - <field>
571   - <name>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;11</name>
572   - <type>String</type>
573   - <length>-1</length>
574   - <precision>-1</precision>
575   - <trim_type>none</trim_type>
576   - <repeat>N</repeat>
577   - <format/>
578   - <currency/>
579   - <decimal/>
580   - <group/>
581   - </field>
582   - <field>
583   - <name>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;11</name>
584   - <type>String</type>
585   - <length>-1</length>
586   - <precision>-1</precision>
587   - <trim_type>none</trim_type>
588   - <repeat>N</repeat>
589   - <format/>
590   - <currency/>
591   - <decimal/>
592   - <group/>
593   - </field>
594   - <field>
595   - <name>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;12</name>
596   - <type>String</type>
597   - <length>-1</length>
598   - <precision>-1</precision>
599   - <trim_type>none</trim_type>
600   - <repeat>N</repeat>
601   - <format/>
602   - <currency/>
603   - <decimal/>
604   - <group/>
605   - </field>
606   - <field>
607   - <name>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;12</name>
608   - <type>String</type>
609   - <length>-1</length>
610   - <precision>-1</precision>
611   - <trim_type>none</trim_type>
612   - <repeat>N</repeat>
613   - <format/>
614   - <currency/>
615   - <decimal/>
616   - <group/>
617   - </field>
618   - <field>
619   - <name>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;13</name>
620   - <type>String</type>
621   - <length>-1</length>
622   - <precision>-1</precision>
623   - <trim_type>none</trim_type>
624   - <repeat>N</repeat>
625   - <format/>
626   - <currency/>
627   - <decimal/>
628   - <group/>
629   - </field>
630   - <field>
631   - <name>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;13</name>
632   - <type>String</type>
633   - <length>-1</length>
634   - <precision>-1</precision>
635   - <trim_type>none</trim_type>
636   - <repeat>N</repeat>
637   - <format/>
638   - <currency/>
639   - <decimal/>
640   - <group/>
641   - </field>
642   - <field>
643   - <name>&#x8fdb;&#x573a;</name>
644   - <type>String</type>
645   - <length>-1</length>
646   - <precision>-1</precision>
647   - <trim_type>none</trim_type>
648   - <repeat>N</repeat>
649   - <format/>
650   - <currency/>
651   - <decimal/>
652   - <group/>
653   - </field>
654   - </fields>
655   - <sheets>
656   - <sheet>
657   - <name>&#x5de5;&#x4f5c;&#x8868;1</name>
658   - <startrow>0</startrow>
659   - <startcol>0</startcol>
660   - </sheet>
661   - </sheets>
662   - <strict_types>N</strict_types>
663   - <error_ignored>N</error_ignored>
664   - <error_line_skipped>N</error_line_skipped>
665   - <bad_line_files_destination_directory/>
666   - <bad_line_files_extension>warning</bad_line_files_extension>
667   - <error_line_files_destination_directory/>
668   - <error_line_files_extension>error</error_line_files_extension>
669   - <line_number_files_destination_directory/>
670   - <line_number_files_extension>line</line_number_files_extension>
671   - <shortFileFieldName/>
672   - <pathFieldName/>
673   - <hiddenFieldName/>
674   - <lastModificationTimeFieldName/>
675   - <uriNameFieldName/>
676   - <rootUriNameFieldName/>
677   - <extensionFieldName/>
678   - <sizeFieldName/>
679   - <spreadsheet_type>JXL</spreadsheet_type>
680   - <cluster_schema/>
681   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
682   - <xloc>112</xloc>
683   - <yloc>44</yloc>
684   - <draw>Y</draw>
685   - </GUI>
686   - </step>
687   -
688   - <step>
689   - <name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</name>
690   - <type>Normaliser</type>
691   - <description/>
692   - <distribute>Y</distribute>
693   - <custom_distribution/>
694   - <copies>1</copies>
695   - <partitioning>
696   - <method>none</method>
697   - <schema_name/>
698   - </partitioning>
699   - <typefield>&#x7ad9;&#x70b9;&#x540d;&#x79f0;</typefield>
700   - <fields> <field> <name>&#x51fa;&#x573a;</name>
701   - <value>&#x51fa;&#x573a;</value>
702   - <norm>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</norm>
703   - </field> <field> <name>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;1</name>
704   - <value>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;1</value>
705   - <norm>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</norm>
706   - </field> <field> <name>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;1</name>
707   - <value>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;1</value>
708   - <norm>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</norm>
709   - </field> <field> <name>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;2</name>
710   - <value>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;2</value>
711   - <norm>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</norm>
712   - </field> <field> <name>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;2</name>
713   - <value>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;2</value>
714   - <norm>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</norm>
715   - </field> <field> <name>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;3</name>
716   - <value>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;3</value>
717   - <norm>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</norm>
718   - </field> <field> <name>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;3</name>
719   - <value>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;3</value>
720   - <norm>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</norm>
721   - </field> <field> <name>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;4</name>
722   - <value>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;4</value>
723   - <norm>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</norm>
724   - </field> <field> <name>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;4</name>
725   - <value>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;4</value>
726   - <norm>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</norm>
727   - </field> <field> <name>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;5</name>
728   - <value>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;5</value>
729   - <norm>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</norm>
730   - </field> <field> <name>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;5</name>
731   - <value>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;5</value>
732   - <norm>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</norm>
733   - </field> <field> <name>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;6</name>
734   - <value>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;6</value>
735   - <norm>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</norm>
736   - </field> <field> <name>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;6</name>
737   - <value>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;6</value>
738   - <norm>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</norm>
739   - </field> <field> <name>&#x8fdb;&#x573a;1</name>
740   - <value>&#x8fdb;&#x573a;1</value>
741   - <norm>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</norm>
742   - </field> <field> <name>&#x51fa;&#x573a;1</name>
743   - <value>&#x51fa;&#x573a;1</value>
744   - <norm>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</norm>
745   - </field> <field> <name>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;7</name>
746   - <value>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;7</value>
747   - <norm>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</norm>
748   - </field> <field> <name>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;7</name>
749   - <value>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;7</value>
750   - <norm>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</norm>
751   - </field> <field> <name>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;8</name>
752   - <value>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;8</value>
753   - <norm>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</norm>
754   - </field> <field> <name>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;8</name>
755   - <value>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;8</value>
756   - <norm>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</norm>
757   - </field> <field> <name>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;9</name>
758   - <value>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;9</value>
759   - <norm>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</norm>
760   - </field> <field> <name>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;9</name>
761   - <value>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;9</value>
762   - <norm>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</norm>
763   - </field> <field> <name>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;10</name>
764   - <value>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;10</value>
765   - <norm>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</norm>
766   - </field> <field> <name>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;10</name>
767   - <value>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;10</value>
768   - <norm>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</norm>
769   - </field> <field> <name>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;11</name>
770   - <value>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;11</value>
771   - <norm>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</norm>
772   - </field> <field> <name>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;11</name>
773   - <value>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;11</value>
774   - <norm>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</norm>
775   - </field> <field> <name>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;12</name>
776   - <value>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;12</value>
777   - <norm>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</norm>
778   - </field> <field> <name>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;12</name>
779   - <value>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;12</value>
780   - <norm>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</norm>
781   - </field> <field> <name>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;13</name>
782   - <value>&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;13</value>
783   - <norm>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</norm>
784   - </field> <field> <name>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;13</name>
785   - <value>&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;13</value>
786   - <norm>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</norm>
787   - </field> <field> <name>&#x8fdb;&#x573a;</name>
788   - <value>&#x8fdb;&#x573a;</value>
789   - <norm>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</norm>
790   - </field> </fields> <cluster_schema/>
791   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
792   - <xloc>248</xloc>
793   - <yloc>44</yloc>
794   - <draw>Y</draw>
795   - </GUI>
796   - </step>
797   -
798   - <step>
799   - <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
800   - <type>SelectValues</type>
801   - <description/>
802   - <distribute>Y</distribute>
803   - <custom_distribution/>
804   - <copies>1</copies>
805   - <partitioning>
806   - <method>none</method>
807   - <schema_name/>
808   - </partitioning>
809   - <fields> <field> <name>&#x8def;&#x724c;</name>
810   - <rename>lp</rename>
811   - <length>-2</length>
812   - <precision>-2</precision>
813   - </field> <field> <name>&#x7ad9;&#x70b9;&#x540d;&#x79f0;</name>
814   - <rename>qdzname</rename>
815   - <length>-2</length>
816   - <precision>-2</precision>
817   - </field> <field> <name>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</name>
818   - <rename>sendtime</rename>
819   - <length>-2</length>
820   - <precision>-2</precision>
821   - </field> <select_unspecified>Y</select_unspecified>
822   - </fields> <cluster_schema/>
823   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
824   - <xloc>351</xloc>
825   - <yloc>45</yloc>
826   - <draw>Y</draw>
827   - </GUI>
828   - </step>
829   -
830   - <step>
831   - <name>&#x6dfb;&#x52a0;&#x53d1;&#x8f66;&#x987a;&#x5e8f;&#x53f7;</name>
832   - <type>GroupBy</type>
833   - <description/>
834   - <distribute>Y</distribute>
835   - <custom_distribution/>
836   - <copies>1</copies>
837   - <partitioning>
838   - <method>none</method>
839   - <schema_name/>
840   - </partitioning>
841   - <all_rows>Y</all_rows>
842   - <ignore_aggregate>N</ignore_aggregate>
843   - <field_ignore/>
844   - <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
845   - <prefix>grp</prefix>
846   - <add_linenr>Y</add_linenr>
847   - <linenr_fieldname>fcno</linenr_fieldname>
848   - <give_back_row>N</give_back_row>
849   - <group>
850   - <field>
851   - <name>lp</name>
852   - </field>
853   - </group>
854   - <fields>
855   - </fields>
856   - <cluster_schema/>
857   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
858   - <xloc>442</xloc>
859   - <yloc>44</yloc>
860   - <draw>Y</draw>
861   - </GUI>
862   - </step>
863   -
864   - <step>
865   - <name>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;&#xff08;&#x53d1;&#x8f66;&#x65f6;&#x95f4;&#x4e3a;&#x7a7a;&#xff09;</name>
866   - <type>FilterRows</type>
867   - <description/>
868   - <distribute>Y</distribute>
869   - <custom_distribution/>
870   - <copies>1</copies>
871   - <partitioning>
872   - <method>none</method>
873   - <schema_name/>
874   - </partitioning>
875   -<send_true_to/>
876   -<send_false_to/>
877   - <compare>
878   -<condition>
879   - <negated>N</negated>
880   - <leftvalue>sendtime</leftvalue>
881   - <function>IS NOT NULL</function>
882   - <rightvalue/>
883   - </condition>
884   - </compare>
885   - <cluster_schema/>
886   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
887   - <xloc>571</xloc>
888   - <yloc>44</yloc>
889   - <draw>Y</draw>
890   - </GUI>
891   - </step>
892   -
893   - <step>
894   - <name>&#x6dfb;&#x52a0;&#x5bf9;&#x5e94;&#x73ed;&#x6b21;&#x6570;</name>
895   - <type>GroupBy</type>
896   - <description/>
897   - <distribute>Y</distribute>
898   - <custom_distribution/>
899   - <copies>1</copies>
900   - <partitioning>
901   - <method>none</method>
902   - <schema_name/>
903   - </partitioning>
904   - <all_rows>Y</all_rows>
905   - <ignore_aggregate>N</ignore_aggregate>
906   - <field_ignore/>
907   - <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
908   - <prefix>grp</prefix>
909   - <add_linenr>Y</add_linenr>
910   - <linenr_fieldname>bcs</linenr_fieldname>
911   - <give_back_row>N</give_back_row>
912   - <group>
913   - </group>
914   - <fields>
915   - </fields>
916   - <cluster_schema/>
917   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
918   - <xloc>692</xloc>
919   - <yloc>44</yloc>
920   - <draw>Y</draw>
921   - </GUI>
922   - </step>
923   -
924   - <step>
925   - <name>&#x5904;&#x7406;&#x6570;&#x636e;</name>
926   - <type>ScriptValueMod</type>
927   - <description/>
928   - <distribute>Y</distribute>
929   - <custom_distribution/>
930   - <copies>1</copies>
931   - <partitioning>
932   - <method>none</method>
933   - <schema_name/>
934   - </partitioning>
935   - <compatible>N</compatible>
936   - <optimizationLevel>9</optimizationLevel>
937   - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
938   - <jsScript_name>Script 1</jsScript_name>
939   - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x4f7f;&#x7528;&#x6b63;&#x5219;&#x8868;&#x8fbe;&#x5f0f;&#x53bb;&#x9664;&#x7ad9;&#x70b9;&#x540d;&#x79f0;&#x4e2d;&#x7684;&#x6570;&#x5b57;&#xa;qdzname &#x3d; qdzname.replace&#x28;&#x2f;&#x5c;d&#x2b;&#x2f;g,&#x27;&#x27;&#x29;&#x3b;&#xa;&#xa;</jsScript_script>
940   - </jsScript> </jsScripts> <fields> <field> <name>qdzname</name>
941   - <rename>qdzname</rename>
942   - <type>String</type>
943   - <length>-1</length>
944   - <precision>-1</precision>
945   - <replace>Y</replace>
946   - </field> </fields> <cluster_schema/>
947   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
948   - <xloc>788</xloc>
949   - <yloc>44</yloc>
950   - <draw>Y</draw>
951   - </GUI>
952   - </step>
953   -
954   - <step>
955   - <name>&#x5206;&#x7ec4;&#x5404;&#x4e2a;&#x8def;&#x724c;&#x7684;&#x7ad9;</name>
956   - <type>GroupBy</type>
957   - <description/>
958   - <distribute>Y</distribute>
959   - <custom_distribution/>
960   - <copies>1</copies>
961   - <partitioning>
962   - <method>none</method>
963   - <schema_name/>
964   - </partitioning>
965   - <all_rows>Y</all_rows>
966   - <ignore_aggregate>N</ignore_aggregate>
967   - <field_ignore/>
968   - <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
969   - <prefix>grp</prefix>
970   - <add_linenr>N</add_linenr>
971   - <linenr_fieldname>fcno</linenr_fieldname>
972   - <give_back_row>N</give_back_row>
973   - <group>
974   - <field>
975   - <name>lp</name>
976   - </field>
977   - </group>
978   - <fields>
979   - <field>
980   - <aggregate>qdzgroups</aggregate>
981   - <subject>qdzname</subject>
982   - <type>CONCAT_STRING</type>
983   - <valuefield>,</valuefield>
984   - </field>
985   - </fields>
986   - <cluster_schema/>
987   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
988   - <xloc>892</xloc>
989   - <yloc>44</yloc>
990   - <draw>Y</draw>
991   - </GUI>
992   - </step>
993   -
994   - <step>
995   - <name>&#x67e5;&#x627e;&#x65f6;&#x523b;&#x8868;&#x57fa;&#x7840;&#x4fe1;&#x606f;&#x5173;&#x8054;</name>
996   - <type>DBLookup</type>
997   - <description/>
998   - <distribute>Y</distribute>
999   - <custom_distribution/>
1000   - <copies>1</copies>
1001   - <partitioning>
1002   - <method>none</method>
1003   - <schema_name/>
1004   - </partitioning>
1005   - <connection>bus_control_&#x516c;&#x53f8;_201</connection>
1006   - <cache>N</cache>
1007   - <cache_load_all>N</cache_load_all>
1008   - <cache_size>0</cache_size>
1009   - <lookup>
1010   - <schema/>
1011   - <table>bsth_c_s_ttinfo</table>
1012   - <orderby/>
1013   - <fail_on_multiple>N</fail_on_multiple>
1014   - <eat_row_on_failure>N</eat_row_on_failure>
1015   - <key>
1016   - <name>xlid</name>
1017   - <field>xl</field>
1018   - <condition>&#x3d;</condition>
1019   - <name2/>
1020   - </key>
1021   - <key>
1022   - <name>ttname</name>
1023   - <field>name</field>
1024   - <condition>&#x3d;</condition>
1025   - <name2/>
1026   - </key>
1027   - <value>
1028   - <name>id</name>
1029   - <rename>ttid</rename>
1030   - <default/>
1031   - <type>Integer</type>
1032   - </value>
1033   - </lookup>
1034   - <cluster_schema/>
1035   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1036   - <xloc>1011</xloc>
1037   - <yloc>134</yloc>
1038   - <draw>Y</draw>
1039   - </GUI>
1040   - </step>
1041   -
1042   - <step>
1043   - <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</name>
1044   - <type>DBLookup</type>
1045   - <description/>
1046   - <distribute>Y</distribute>
1047   - <custom_distribution/>
1048   - <copies>1</copies>
1049   - <partitioning>
1050   - <method>none</method>
1051   - <schema_name/>
1052   - </partitioning>
1053   - <connection>bus_control_&#x516c;&#x53f8;_201</connection>
1054   - <cache>N</cache>
1055   - <cache_load_all>N</cache_load_all>
1056   - <cache_size>0</cache_size>
1057   - <lookup>
1058   - <schema/>
1059   - <table>bsth_c_line</table>
1060   - <orderby/>
1061   - <fail_on_multiple>N</fail_on_multiple>
1062   - <eat_row_on_failure>N</eat_row_on_failure>
1063   - <key>
1064   - <name>xlname</name>
1065   - <field>name</field>
1066   - <condition>&#x3d;</condition>
1067   - <name2/>
1068   - </key>
1069   - <value>
1070   - <name>id</name>
1071   - <rename>xlid</rename>
1072   - <default/>
1073   - <type>Integer</type>
1074   - </value>
1075   - </lookup>
1076   - <cluster_schema/>
1077   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1078   - <xloc>1007</xloc>
1079   - <yloc>43</yloc>
1080   - <draw>Y</draw>
1081   - </GUI>
1082   - </step>
1083   -
1084   - <step>
1085   - <name>&#x67e5;&#x627e;&#x8def;&#x724c;&#x5173;&#x8054;</name>
1086   - <type>DBLookup</type>
1087   - <description/>
1088   - <distribute>Y</distribute>
1089   - <custom_distribution/>
1090   - <copies>1</copies>
1091   - <partitioning>
1092   - <method>none</method>
1093   - <schema_name/>
1094   - </partitioning>
1095   - <connection>bus_control_&#x516c;&#x53f8;_201</connection>
1096   - <cache>N</cache>
1097   - <cache_load_all>N</cache_load_all>
1098   - <cache_size>0</cache_size>
1099   - <lookup>
1100   - <schema/>
1101   - <table>bsth_c_s_gbi</table>
1102   - <orderby/>
1103   - <fail_on_multiple>N</fail_on_multiple>
1104   - <eat_row_on_failure>N</eat_row_on_failure>
1105   - <key>
1106   - <name>xlid</name>
1107   - <field>xl</field>
1108   - <condition>&#x3d;</condition>
1109   - <name2/>
1110   - </key>
1111   - <key>
1112   - <name>lp</name>
1113   - <field>lp_name</field>
1114   - <condition>&#x3d;</condition>
1115   - <name2/>
1116   - </key>
1117   - <value>
1118   - <name>id</name>
1119   - <rename>lpid</rename>
1120   - <default/>
1121   - <type>Integer</type>
1122   - </value>
1123   - </lookup>
1124   - <cluster_schema/>
1125   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1126   - <xloc>1013</xloc>
1127   - <yloc>265</yloc>
1128   - <draw>Y</draw>
1129   - </GUI>
1130   - </step>
1131   -
1132   - <step>
1133   - <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>
1134   - <type>GetVariable</type>
1135   - <description/>
1136   - <distribute>Y</distribute>
1137   - <custom_distribution/>
1138   - <copies>1</copies>
1139   - <partitioning>
1140   - <method>none</method>
1141   - <schema_name/>
1142   - </partitioning>
1143   - <fields>
1144   - <field>
1145   - <name>filepath_</name>
1146   - <variable>&#x24;&#x7b;filepath&#x7d;</variable>
1147   - <type>String</type>
1148   - <format/>
1149   - <currency/>
1150   - <decimal/>
1151   - <group/>
1152   - <length>-1</length>
1153   - <precision>-1</precision>
1154   - <trim_type>none</trim_type>
1155   - </field>
1156   - <field>
1157   - <name>erroroutputdir_</name>
1158   - <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
1159   - <type>String</type>
1160   - <format/>
1161   - <currency/>
1162   - <decimal/>
1163   - <group/>
1164   - <length>-1</length>
1165   - <precision>-1</precision>
1166   - <trim_type>none</trim_type>
1167   - </field>
1168   - <field>
1169   - <name>ttinfoname_</name>
1170   - <variable>&#x24;&#x7b;ttinfoname&#x7d;</variable>
1171   - <type>String</type>
1172   - <format/>
1173   - <currency/>
1174   - <decimal/>
1175   - <group/>
1176   - <length>-1</length>
1177   - <precision>-1</precision>
1178   - <trim_type>none</trim_type>
1179   - </field>
1180   - <field>
1181   - <name>xlname_</name>
1182   - <variable>&#x24;&#x7b;xlname&#x7d;</variable>
1183   - <type>String</type>
1184   - <format/>
1185   - <currency/>
1186   - <decimal/>
1187   - <group/>
1188   - <length>-1</length>
1189   - <precision>-1</precision>
1190   - <trim_type>none</trim_type>
1191   - </field>
1192   - <field>
1193   - <name>tccname_</name>
1194   - <variable>&#x24;&#x7b;tccname&#x7d;</variable>
1195   - <type>String</type>
1196   - <format/>
1197   - <currency/>
1198   - <decimal/>
1199   - <group/>
1200   - <length>-1</length>
1201   - <precision>-1</precision>
1202   - <trim_type>none</trim_type>
1203   - </field>
1204   - </fields>
1205   - <cluster_schema/>
1206   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1207   - <xloc>113</xloc>
1208   - <yloc>141</yloc>
1209   - <draw>Y</draw>
1210   - </GUI>
1211   - </step>
1212   -
1213   - <step>
1214   - <name>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178;</name>
1215   - <type>ValueMapper</type>
1216   - <description/>
1217   - <distribute>Y</distribute>
1218   - <custom_distribution/>
1219   - <copies>1</copies>
1220   - <partitioning>
1221   - <method>none</method>
1222   - <schema_name/>
1223   - </partitioning>
1224   - <field_to_use>sxx</field_to_use>
1225   - <target_field>sxx_desc</target_field>
1226   - <non_match_default/>
1227   - <fields>
1228   - <field>
1229   - <source_value>0</source_value>
1230   - <target_value>&#x4e0a;&#x884c;</target_value>
1231   - </field>
1232   - <field>
1233   - <source_value>1</source_value>
1234   - <target_value>&#x4e0b;&#x884c;</target_value>
1235   - </field>
1236   - </fields>
1237   - <cluster_schema/>
1238   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1239   - <xloc>147</xloc>
1240   - <yloc>403</yloc>
1241   - <draw>Y</draw>
1242   - </GUI>
1243   - </step>
1244   -
1245   - <step>
1246   - <name>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178; 2</name>
1247   - <type>ValueMapper</type>
1248   - <description/>
1249   - <distribute>Y</distribute>
1250   - <custom_distribution/>
1251   - <copies>1</copies>
1252   - <partitioning>
1253   - <method>none</method>
1254   - <schema_name/>
1255   - </partitioning>
1256   - <field_to_use>sxx</field_to_use>
1257   - <target_field>sxx_desc</target_field>
1258   - <non_match_default/>
1259   - <fields>
1260   - <field>
1261   - <source_value>0</source_value>
1262   - <target_value>&#x4e0a;&#x884c;</target_value>
1263   - </field>
1264   - <field>
1265   - <source_value>1</source_value>
1266   - <target_value>&#x4e0b;&#x884c;</target_value>
1267   - </field>
1268   - </fields>
1269   - <cluster_schema/>
1270   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1271   - <xloc>435</xloc>
1272   - <yloc>579</yloc>
1273   - <draw>Y</draw>
1274   - </GUI>
1275   - </step>
1276   -
1277   - <step>
1278   - <name>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178; 3</name>
1279   - <type>ValueMapper</type>
1280   - <description/>
1281   - <distribute>Y</distribute>
1282   - <custom_distribution/>
1283   - <copies>1</copies>
1284   - <partitioning>
1285   - <method>none</method>
1286   - <schema_name/>
1287   - </partitioning>
1288   - <field_to_use>sxx</field_to_use>
1289   - <target_field>sxx_desc</target_field>
1290   - <non_match_default/>
1291   - <fields>
1292   - <field>
1293   - <source_value>0</source_value>
1294   - <target_value>&#x4e0a;&#x884c;</target_value>
1295   - </field>
1296   - <field>
1297   - <source_value>1</source_value>
1298   - <target_value>&#x4e0b;&#x884c;</target_value>
1299   - </field>
1300   - </fields>
1301   - <cluster_schema/>
1302   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1303   - <xloc>592</xloc>
1304   - <yloc>674</yloc>
1305   - <draw>Y</draw>
1306   - </GUI>
1307   - </step>
1308   -
1309   - <step>
1310   - <name>&#x51fa;&#x573a;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</name>
1311   - <type>ScriptValueMod</type>
1312   - <description/>
1313   - <distribute>Y</distribute>
1314   - <custom_distribution/>
1315   - <copies>1</copies>
1316   - <partitioning>
1317   - <method>none</method>
1318   - <schema_name/>
1319   - </partitioning>
1320   - <compatible>N</compatible>
1321   - <optimizationLevel>9</optimizationLevel>
1322   - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
1323   - <jsScript_name>Script 1</jsScript_name>
1324   - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x6dfb;&#x52a0;&#x7ad9;&#x70b9;&#x6807;&#x8bc6;&#xa;var tccname &#x3d; &#x27;&#x4e1c;&#x9756;&#x8def;&#x9ad8;&#x884c;&#x505c;&#x8f66;&#x573a;&#x27;&#x3b;&#xa;var zdzname &#x3d; &#x27;&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;&#x27;&#x3b;&#xa;var sxx &#x3d; &#x27;1&#x27;&#x3b; &#x2f;&#x2f; &#x4e0b;&#x884c;&#xa;var endZdtype &#x3d; &#x27;B&#x27;&#x3b;</jsScript_script>
1325   - </jsScript> </jsScripts> <fields> <field> <name>tccname</name>
1326   - <rename>tccname</rename>
1327   - <type>String</type>
1328   - <length>-1</length>
1329   - <precision>-1</precision>
1330   - <replace>N</replace>
1331   - </field> <field> <name>zdzname</name>
1332   - <rename>zdzname</rename>
1333   - <type>String</type>
1334   - <length>-1</length>
1335   - <precision>-1</precision>
1336   - <replace>N</replace>
1337   - </field> <field> <name>sxx</name>
1338   - <rename>sxx</rename>
1339   - <type>String</type>
1340   - <length>-1</length>
1341   - <precision>-1</precision>
1342   - <replace>N</replace>
1343   - </field> <field> <name>endZdtype</name>
1344   - <rename>endZdtype</rename>
1345   - <type>String</type>
1346   - <length>-1</length>
1347   - <precision>-1</precision>
1348   - <replace>N</replace>
1349   - </field> </fields> <cluster_schema/>
1350   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1351   - <xloc>730</xloc>
1352   - <yloc>502</yloc>
1353   - <draw>Y</draw>
1354   - </GUI>
1355   - </step>
1356   -
1357   - <step>
1358   - <name>&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</name>
1359   - <type>Dummy</type>
1360   - <description/>
1361   - <distribute>Y</distribute>
1362   - <custom_distribution/>
1363   - <copies>1</copies>
1364   - <partitioning>
1365   - <method>none</method>
1366   - <schema_name/>
1367   - </partitioning>
1368   - <cluster_schema/>
1369   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1370   - <xloc>869</xloc>
1371   - <yloc>504</yloc>
1372   - <draw>Y</draw>
1373   - </GUI>
1374   - </step>
1375   -
1376   - <step>
1377   - <name>&#x5339;&#x914d;&#x4e0a;&#x4e0b;&#x884c;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
1378   - <type>ScriptValueMod</type>
1379   - <description/>
1380   - <distribute>Y</distribute>
1381   - <custom_distribution/>
1382   - <copies>1</copies>
1383   - <partitioning>
1384   - <method>none</method>
1385   - <schema_name/>
1386   - </partitioning>
1387   - <compatible>N</compatible>
1388   - <optimizationLevel>9</optimizationLevel>
1389   - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
1390   - <jsScript_name>Script 1</jsScript_name>
1391   - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var jhlc&#x3b; &#x2f;&#x2f; &#x8ba1;&#x5212;&#x91cc;&#x7a0b;&#xa;var bcsj&#x3b; &#x2f;&#x2f; &#x73ed;&#x6b21;&#x65f6;&#x95f4;&#xa;&#xa;if &#x28;sxx &#x3d;&#x3d; 0&#x29; &#x7b; &#x2f;&#x2f; &#x4e0a;&#x884c;&#xa; jhlc &#x3d; up_mileage&#x3b;&#xa; bcsj &#x3d; up_travel_time&#x3b;&#xa;&#x7d; else &#x7b; &#x2f;&#x2f; sxx &#x3d;&#x3d; 1 &#x4e0b;&#x884c;&#xa; jhlc &#x3d; down_mileage&#x3b;&#xa; bcsj &#x3d; down_travel_time&#x3b;&#xa;&#x7d;</jsScript_script>
1392   - </jsScript> </jsScripts> <fields> <field> <name>jhlc</name>
1393   - <rename>jhlc</rename>
1394   - <type>String</type>
1395   - <length>-1</length>
1396   - <precision>-1</precision>
1397   - <replace>N</replace>
1398   - </field> <field> <name>bcsj</name>
1399   - <rename>bcsj</rename>
1400   - <type>String</type>
1401   - <length>-1</length>
1402   - <precision>-1</precision>
1403   - <replace>N</replace>
1404   - </field> </fields> <cluster_schema/>
1405   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1406   - <xloc>148</xloc>
1407   - <yloc>674</yloc>
1408   - <draw>Y</draw>
1409   - </GUI>
1410   - </step>
1411   -
1412   - <step>
1413   - <name>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;1</name>
1414   - <type>FilterRows</type>
1415   - <description/>
1416   - <distribute>Y</distribute>
1417   - <custom_distribution/>
1418   - <copies>1</copies>
1419   - <partitioning>
1420   - <method>none</method>
1421   - <schema_name/>
1422   - </partitioning>
1423   -<send_true_to>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6570;&#x636e;</send_true_to>
1424   -<send_false_to>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</send_false_to>
1425   - <compare>
1426   -<condition>
1427   - <negated>N</negated>
1428   - <leftvalue>bctype</leftvalue>
1429   - <function>&#x3d;</function>
1430   - <rightvalue/>
1431   - <value><name>constant</name><type>String</type><text>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</text><length>-1</length><precision>-1</precision><isnull>N</isnull><mask/></value> </condition>
1432   - </compare>
1433   - <cluster_schema/>
1434   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1435   - <xloc>868</xloc>
1436   - <yloc>404</yloc>
1437   - <draw>Y</draw>
1438   - </GUI>
1439   - </step>
1440   -
1441   - <step>
1442   - <name>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</name>
1443   - <type>FilterRows</type>
1444   - <description/>
1445   - <distribute>Y</distribute>
1446   - <custom_distribution/>
1447   - <copies>1</copies>
1448   - <partitioning>
1449   - <method>none</method>
1450   - <schema_name/>
1451   - </partitioning>
1452   -<send_true_to>&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</send_true_to>
1453   -<send_false_to>&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</send_false_to>
1454   - <compare>
1455   -<condition>
1456   - <negated>N</negated>
1457   - <leftvalue>bctype</leftvalue>
1458   - <function>&#x3d;</function>
1459   - <rightvalue/>
1460   - <value><name>constant</name><type>String</type><text>&#x51fa;&#x573a;</text><length>-1</length><precision>-1</precision><isnull>N</isnull><mask/></value> </condition>
1461   - </compare>
1462   - <cluster_schema/>
1463   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1464   - <xloc>995</xloc>
1465   - <yloc>503</yloc>
1466   - <draw>Y</draw>
1467   - </GUI>
1468   - </step>
1469   -
1470   - <step>
1471   - <name>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;1</name>
1472   - <type>DBLookup</type>
1473   - <description/>
1474   - <distribute>Y</distribute>
1475   - <custom_distribution/>
1476   - <copies>1</copies>
1477   - <partitioning>
1478   - <method>none</method>
1479   - <schema_name/>
1480   - </partitioning>
1481   - <connection>bus_control_&#x516c;&#x53f8;_201</connection>
1482   - <cache>N</cache>
1483   - <cache_load_all>N</cache_load_all>
1484   - <cache_size>0</cache_size>
1485   - <lookup>
1486   - <schema/>
1487   - <table>bsth_c_car_park</table>
1488   - <orderby/>
1489   - <fail_on_multiple>N</fail_on_multiple>
1490   - <eat_row_on_failure>N</eat_row_on_failure>
1491   - <key>
1492   - <name>tccname</name>
1493   - <field>park_name</field>
1494   - <condition>&#x3d;</condition>
1495   - <name2/>
1496   - </key>
1497   - <value>
1498   - <name>id</name>
1499   - <rename>qdzid</rename>
1500   - <default/>
1501   - <type>Integer</type>
1502   - </value>
1503   - </lookup>
1504   - <cluster_schema/>
1505   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1506   - <xloc>591</xloc>
1507   - <yloc>503</yloc>
1508   - <draw>Y</draw>
1509   - </GUI>
1510   - </step>
1511   -
1512   - <step>
1513   - <name>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;2</name>
1514   - <type>DBLookup</type>
1515   - <description/>
1516   - <distribute>Y</distribute>
1517   - <custom_distribution/>
1518   - <copies>1</copies>
1519   - <partitioning>
1520   - <method>none</method>
1521   - <schema_name/>
1522   - </partitioning>
1523   - <connection>bus_control_&#x516c;&#x53f8;_201</connection>
1524   - <cache>N</cache>
1525   - <cache_load_all>N</cache_load_all>
1526   - <cache_size>0</cache_size>
1527   - <lookup>
1528   - <schema/>
1529   - <table>bsth_c_car_park</table>
1530   - <orderby/>
1531   - <fail_on_multiple>N</fail_on_multiple>
1532   - <eat_row_on_failure>N</eat_row_on_failure>
1533   - <key>
1534   - <name>tccname</name>
1535   - <field>park_name</field>
1536   - <condition>&#x3d;</condition>
1537   - <name2/>
1538   - </key>
1539   - <value>
1540   - <name>id</name>
1541   - <rename>zdzid</rename>
1542   - <default/>
1543   - <type>Integer</type>
1544   - </value>
1545   - </lookup>
1546   - <cluster_schema/>
1547   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1548   - <xloc>734</xloc>
1549   - <yloc>610</yloc>
1550   - <draw>Y</draw>
1551   - </GUI>
1552   - </step>
1553   -
1554   - <step>
1555   - <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
1556   - <type>DBLookup</type>
1557   - <description/>
1558   - <distribute>Y</distribute>
1559   - <custom_distribution/>
1560   - <copies>1</copies>
1561   - <partitioning>
1562   - <method>none</method>
1563   - <schema_name/>
1564   - </partitioning>
1565   - <connection>bus_control_&#x516c;&#x53f8;_201</connection>
1566   - <cache>N</cache>
1567   - <cache_load_all>N</cache_load_all>
1568   - <cache_size>0</cache_size>
1569   - <lookup>
1570   - <schema/>
1571   - <table>bsth_c_line_information</table>
1572   - <orderby/>
1573   - <fail_on_multiple>N</fail_on_multiple>
1574   - <eat_row_on_failure>N</eat_row_on_failure>
1575   - <key>
1576   - <name>xlid</name>
1577   - <field>line</field>
1578   - <condition>&#x3d;</condition>
1579   - <name2/>
1580   - </key>
1581   - <value>
1582   - <name>up_mileage</name>
1583   - <rename>up_mileage</rename>
1584   - <default/>
1585   - <type>Number</type>
1586   - </value>
1587   - <value>
1588   - <name>down_mileage</name>
1589   - <rename>down_mileage</rename>
1590   - <default/>
1591   - <type>Number</type>
1592   - </value>
1593   - <value>
1594   - <name>up_travel_time</name>
1595   - <rename>up_travel_time</rename>
1596   - <default/>
1597   - <type>Number</type>
1598   - </value>
1599   - <value>
1600   - <name>down_travel_time</name>
1601   - <rename>down_travel_time</rename>
1602   - <default/>
1603   - <type>Number</type>
1604   - </value>
1605   - </lookup>
1606   - <cluster_schema/>
1607   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1608   - <xloc>149</xloc>
1609   - <yloc>581</yloc>
1610   - <draw>Y</draw>
1611   - </GUI>
1612   - </step>
1613   -
1614   - <step>
1615   - <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x51fa;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
1616   - <type>DBLookup</type>
1617   - <description/>
1618   - <distribute>Y</distribute>
1619   - <custom_distribution/>
1620   - <copies>1</copies>
1621   - <partitioning>
1622   - <method>none</method>
1623   - <schema_name/>
1624   - </partitioning>
1625   - <connection>bus_control_&#x516c;&#x53f8;_201</connection>
1626   - <cache>N</cache>
1627   - <cache_load_all>N</cache_load_all>
1628   - <cache_size>0</cache_size>
1629   - <lookup>
1630   - <schema/>
1631   - <table>bsth_c_line_information</table>
1632   - <orderby/>
1633   - <fail_on_multiple>N</fail_on_multiple>
1634   - <eat_row_on_failure>N</eat_row_on_failure>
1635   - <key>
1636   - <name>xlid</name>
1637   - <field>line</field>
1638   - <condition>&#x3d;</condition>
1639   - <name2/>
1640   - </key>
1641   - <value>
1642   - <name>out_mileage</name>
1643   - <rename>out_mileage</rename>
1644   - <default/>
1645   - <type>Number</type>
1646   - </value>
1647   - <value>
1648   - <name>out_time</name>
1649   - <rename>out_time</rename>
1650   - <default/>
1651   - <type>Number</type>
1652   - </value>
1653   - </lookup>
1654   - <cluster_schema/>
1655   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1656   - <xloc>439</xloc>
1657   - <yloc>744</yloc>
1658   - <draw>Y</draw>
1659   - </GUI>
1660   - </step>
1661   -
1662   - <step>
1663   - <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x8fdb;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
1664   - <type>DBLookup</type>
1665   - <description/>
1666   - <distribute>Y</distribute>
1667   - <custom_distribution/>
1668   - <copies>1</copies>
1669   - <partitioning>
1670   - <method>none</method>
1671   - <schema_name/>
1672   - </partitioning>
1673   - <connection>bus_control_&#x516c;&#x53f8;_201</connection>
1674   - <cache>N</cache>
1675   - <cache_load_all>N</cache_load_all>
1676   - <cache_size>0</cache_size>
1677   - <lookup>
1678   - <schema/>
1679   - <table>bsth_c_line_information</table>
1680   - <orderby/>
1681   - <fail_on_multiple>N</fail_on_multiple>
1682   - <eat_row_on_failure>N</eat_row_on_failure>
1683   - <key>
1684   - <name>xlid</name>
1685   - <field>line</field>
1686   - <condition>&#x3d;</condition>
1687   - <name2/>
1688   - </key>
1689   - <value>
1690   - <name>parade_mileage</name>
1691   - <rename>parade_mileage</rename>
1692   - <default/>
1693   - <type>Number</type>
1694   - </value>
1695   - <value>
1696   - <name>parade_time</name>
1697   - <rename>parade_time</rename>
1698   - <default/>
1699   - <type>Number</type>
1700   - </value>
1701   - </lookup>
1702   - <cluster_schema/>
1703   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1704   - <xloc>592</xloc>
1705   - <yloc>819</yloc>
1706   - <draw>Y</draw>
1707   - </GUI>
1708   - </step>
1709   -
1710   - <step>
1711   - <name>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;</name>
1712   - <type>DBLookup</type>
1713   - <description/>
1714   - <distribute>Y</distribute>
1715   - <custom_distribution/>
1716   - <copies>1</copies>
1717   - <partitioning>
1718   - <method>none</method>
1719   - <schema_name/>
1720   - </partitioning>
1721   - <connection>bus_control_&#x516c;&#x53f8;_201</connection>
1722   - <cache>N</cache>
1723   - <cache_load_all>N</cache_load_all>
1724   - <cache_size>0</cache_size>
1725   - <lookup>
1726   - <schema/>
1727   - <table>bsth_c_stationroute</table>
1728   - <orderby/>
1729   - <fail_on_multiple>N</fail_on_multiple>
1730   - <eat_row_on_failure>N</eat_row_on_failure>
1731   - <key>
1732   - <name>xlid</name>
1733   - <field>line</field>
1734   - <condition>&#x3d;</condition>
1735   - <name2/>
1736   - </key>
1737   - <key>
1738   - <name>sxx</name>
1739   - <field>directions</field>
1740   - <condition>&#x3d;</condition>
1741   - <name2/>
1742   - </key>
1743   - <key>
1744   - <name>endZdtype</name>
1745   - <field>station_mark</field>
1746   - <condition>&#x3d;</condition>
1747   - <name2/>
1748   - </key>
1749   - <value>
1750   - <name>station_name</name>
1751   - <rename>zdzname</rename>
1752   - <default/>
1753   - <type>String</type>
1754   - </value>
1755   - <value>
1756   - <name>station</name>
1757   - <rename>zdzid</rename>
1758   - <default/>
1759   - <type>Integer</type>
1760   - </value>
1761   - </lookup>
1762   - <cluster_schema/>
1763   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1764   - <xloc>280</xloc>
1765   - <yloc>404</yloc>
1766   - <draw>Y</draw>
1767   - </GUI>
1768   - </step>
1769   -
1770   - <step>
1771   - <name>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;1</name>
1772   - <type>DBLookup</type>
1773   - <description/>
1774   - <distribute>Y</distribute>
1775   - <custom_distribution/>
1776   - <copies>1</copies>
1777   - <partitioning>
1778   - <method>none</method>
1779   - <schema_name/>
1780   - </partitioning>
1781   - <connection>bus_control_&#x516c;&#x53f8;_201</connection>
1782   - <cache>N</cache>
1783   - <cache_load_all>N</cache_load_all>
1784   - <cache_size>0</cache_size>
1785   - <lookup>
1786   - <schema/>
1787   - <table>bsth_c_stationroute</table>
1788   - <orderby/>
1789   - <fail_on_multiple>N</fail_on_multiple>
1790   - <eat_row_on_failure>N</eat_row_on_failure>
1791   - <key>
1792   - <name>xlid</name>
1793   - <field>line</field>
1794   - <condition>&#x3d;</condition>
1795   - <name2/>
1796   - </key>
1797   - <key>
1798   - <name>sxx</name>
1799   - <field>directions</field>
1800   - <condition>&#x3d;</condition>
1801   - <name2/>
1802   - </key>
1803   - <key>
1804   - <name>endZdtype</name>
1805   - <field>station_mark</field>
1806   - <condition>&#x3d;</condition>
1807   - <name2/>
1808   - </key>
1809   - <key>
1810   - <name>zdzname</name>
1811   - <field>station_name</field>
1812   - <condition>&#x3d;</condition>
1813   - <name2/>
1814   - </key>
1815   - <value>
1816   - <name>station</name>
1817   - <rename>zdzid</rename>
1818   - <default/>
1819   - <type>Integer</type>
1820   - </value>
1821   - </lookup>
1822   - <cluster_schema/>
1823   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1824   - <xloc>436</xloc>
1825   - <yloc>502</yloc>
1826   - <draw>Y</draw>
1827   - </GUI>
1828   - </step>
1829   -
1830   - <step>
1831   - <name>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;2</name>
1832   - <type>DBLookup</type>
1833   - <description/>
1834   - <distribute>Y</distribute>
1835   - <custom_distribution/>
1836   - <copies>1</copies>
1837   - <partitioning>
1838   - <method>none</method>
1839   - <schema_name/>
1840   - </partitioning>
1841   - <connection>bus_control_&#x516c;&#x53f8;_201</connection>
1842   - <cache>N</cache>
1843   - <cache_load_all>N</cache_load_all>
1844   - <cache_size>0</cache_size>
1845   - <lookup>
1846   - <schema/>
1847   - <table>bsth_c_stationroute</table>
1848   - <orderby/>
1849   - <fail_on_multiple>N</fail_on_multiple>
1850   - <eat_row_on_failure>N</eat_row_on_failure>
1851   - <key>
1852   - <name>xlid</name>
1853   - <field>line</field>
1854   - <condition>&#x3d;</condition>
1855   - <name2/>
1856   - </key>
1857   - <key>
1858   - <name>sxx</name>
1859   - <field>directions</field>
1860   - <condition>&#x3d;</condition>
1861   - <name2/>
1862   - </key>
1863   - <key>
1864   - <name>sendZdtype</name>
1865   - <field>station_mark</field>
1866   - <condition>&#x3d;</condition>
1867   - <name2/>
1868   - </key>
1869   - <key>
1870   - <name>qdzname_2</name>
1871   - <field>station_name</field>
1872   - <condition>&#x3d;</condition>
1873   - <name2/>
1874   - </key>
1875   - <value>
1876   - <name>station</name>
1877   - <rename>qdzid</rename>
1878   - <default/>
1879   - <type>Integer</type>
1880   - </value>
1881   - </lookup>
1882   - <cluster_schema/>
1883   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1884   - <xloc>592</xloc>
1885   - <yloc>609</yloc>
1886   - <draw>Y</draw>
1887   - </GUI>
1888   - </step>
1889   -
1890   - <step>
1891   - <name>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</name>
1892   - <type>DBLookup</type>
1893   - <description/>
1894   - <distribute>Y</distribute>
1895   - <custom_distribution/>
1896   - <copies>1</copies>
1897   - <partitioning>
1898   - <method>none</method>
1899   - <schema_name/>
1900   - </partitioning>
1901   - <connection>bus_control_&#x516c;&#x53f8;_201</connection>
1902   - <cache>N</cache>
1903   - <cache_load_all>N</cache_load_all>
1904   - <cache_size>0</cache_size>
1905   - <lookup>
1906   - <schema/>
1907   - <table>bsth_c_stationroute</table>
1908   - <orderby/>
1909   - <fail_on_multiple>N</fail_on_multiple>
1910   - <eat_row_on_failure>N</eat_row_on_failure>
1911   - <key>
1912   - <name>xlid</name>
1913   - <field>line</field>
1914   - <condition>&#x3d;</condition>
1915   - <name2/>
1916   - </key>
1917   - <key>
1918   - <name>qdzname</name>
1919   - <field>station_name</field>
1920   - <condition>&#x3d;</condition>
1921   - <name2/>
1922   - </key>
1923   - <key>
1924   - <name>sendZdtype</name>
1925   - <field>station_mark</field>
1926   - <condition>&#x3d;</condition>
1927   - <name2/>
1928   - </key>
1929   - <value>
1930   - <name>station</name>
1931   - <rename>qdzid</rename>
1932   - <default/>
1933   - <type>Integer</type>
1934   - </value>
1935   - <value>
1936   - <name>directions</name>
1937   - <rename>sxx</rename>
1938   - <default/>
1939   - <type>Integer</type>
1940   - </value>
1941   - </lookup>
1942   - <cluster_schema/>
1943   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1944   - <xloc>430</xloc>
1945   - <yloc>403</yloc>
1946   - <draw>Y</draw>
1947   - </GUI>
1948   - </step>
1949   -
1950   - <step>
1951   - <name>&#x6b63;&#x5e38;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</name>
1952   - <type>ScriptValueMod</type>
1953   - <description/>
1954   - <distribute>Y</distribute>
1955   - <custom_distribution/>
1956   - <copies>1</copies>
1957   - <partitioning>
1958   - <method>none</method>
1959   - <schema_name/>
1960   - </partitioning>
1961   - <compatible>N</compatible>
1962   - <optimizationLevel>9</optimizationLevel>
1963   - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
1964   - <jsScript_name>Script 1</jsScript_name>
1965   - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x6dfb;&#x52a0;&#x7ad9;&#x70b9;&#x6807;&#x8bc6;&#xa;var sendZdtype &#x3d; &#x27;B&#x27;&#x3b;&#xa;var endZdtype &#x3d; &#x27;E&#x27;&#x3b;&#xa;</jsScript_script>
1966   - </jsScript> </jsScripts> <fields> <field> <name>sendZdtype</name>
1967   - <rename>sendZdtype</rename>
1968   - <type>String</type>
1969   - <length>-1</length>
1970   - <precision>-1</precision>
1971   - <replace>N</replace>
1972   - </field> <field> <name>endZdtype</name>
1973   - <rename>endZdtype</rename>
1974   - <type>String</type>
1975   - <length>-1</length>
1976   - <precision>-1</precision>
1977   - <replace>N</replace>
1978   - </field> </fields> <cluster_schema/>
1979   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1980   - <xloc>588</xloc>
1981   - <yloc>403</yloc>
1982   - <draw>Y</draw>
1983   - </GUI>
1984   - </step>
1985   -
1986   - <step>
1987   - <name>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6570;&#x636e;</name>
1988   - <type>Dummy</type>
1989   - <description/>
1990   - <distribute>Y</distribute>
1991   - <custom_distribution/>
1992   - <copies>1</copies>
1993   - <partitioning>
1994   - <method>none</method>
1995   - <schema_name/>
1996   - </partitioning>
1997   - <cluster_schema/>
1998   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1999   - <xloc>725</xloc>
2000   - <yloc>404</yloc>
2001   - <draw>Y</draw>
2002   - </GUI>
2003   - </step>
2004   -
2005   - <step>
2006   - <name>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178;</name>
2007   - <type>ValueMapper</type>
2008   - <description/>
2009   - <distribute>Y</distribute>
2010   - <custom_distribution/>
2011   - <copies>1</copies>
2012   - <partitioning>
2013   - <method>none</method>
2014   - <schema_name/>
2015   - </partitioning>
2016   - <field_to_use>bctype</field_to_use>
2017   - <target_field>bctype_code</target_field>
2018   - <non_match_default>&#x672a;&#x77e5;&#x7c7b;&#x578b;</non_match_default>
2019   - <fields>
2020   - <field>
2021   - <source_value>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</source_value>
2022   - <target_value>normal</target_value>
2023   - </field>
2024   - <field>
2025   - <source_value>&#x51fa;&#x573a;</source_value>
2026   - <target_value>out</target_value>
2027   - </field>
2028   - <field>
2029   - <source_value>&#x8fdb;&#x573a;</source_value>
2030   - <target_value>in</target_value>
2031   - </field>
2032   - <field>
2033   - <source_value>&#x52a0;&#x6cb9;</source_value>
2034   - <target_value>oil</target_value>
2035   - </field>
2036   - <field>
2037   - <source_value>&#x4e34;&#x52a0;</source_value>
2038   - <target_value>temp</target_value>
2039   - </field>
2040   - <field>
2041   - <source_value>&#x533a;&#x95f4;</source_value>
2042   - <target_value>region</target_value>
2043   - </field>
2044   - <field>
2045   - <source_value>&#x653e;&#x7a7a;</source_value>
2046   - <target_value>venting</target_value>
2047   - </field>
2048   - <field>
2049   - <source_value>&#x653e;&#x5927;&#x7ad9;</source_value>
2050   - <target_value>major</target_value>
2051   - </field>
2052   - </fields>
2053   - <cluster_schema/>
2054   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
2055   - <xloc>149</xloc>
2056   - <yloc>491</yloc>
2057   - <draw>Y</draw>
2058   - </GUI>
2059   - </step>
2060   -
2061   - <step>
2062   - <name>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 2</name>
2063   - <type>ValueMapper</type>
2064   - <description/>
2065   - <distribute>Y</distribute>
2066   - <custom_distribution/>
2067   - <copies>1</copies>
2068   - <partitioning>
2069   - <method>none</method>
2070   - <schema_name/>
2071   - </partitioning>
2072   - <field_to_use>bctype</field_to_use>
2073   - <target_field>bctype_code</target_field>
2074   - <non_match_default>&#x672a;&#x77e5;&#x7c7b;&#x578b;</non_match_default>
2075   - <fields>
2076   - <field>
2077   - <source_value>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</source_value>
2078   - <target_value>normal</target_value>
2079   - </field>
2080   - <field>
2081   - <source_value>&#x51fa;&#x573a;</source_value>
2082   - <target_value>out</target_value>
2083   - </field>
2084   - <field>
2085   - <source_value>&#x8fdb;&#x573a;</source_value>
2086   - <target_value>in</target_value>
2087   - </field>
2088   - <field>
2089   - <source_value>&#x52a0;&#x6cb9;</source_value>
2090   - <target_value>oil</target_value>
2091   - </field>
2092   - <field>
2093   - <source_value>&#x4e34;&#x52a0;</source_value>
2094   - <target_value>temp</target_value>
2095   - </field>
2096   - <field>
2097   - <source_value>&#x533a;&#x95f4;</source_value>
2098   - <target_value>region</target_value>
2099   - </field>
2100   - <field>
2101   - <source_value>&#x653e;&#x7a7a;</source_value>
2102   - <target_value>venting</target_value>
2103   - </field>
2104   - <field>
2105   - <source_value>&#x653e;&#x5927;&#x7ad9;</source_value>
2106   - <target_value>major</target_value>
2107   - </field>
2108   - </fields>
2109   - <cluster_schema/>
2110   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
2111   - <xloc>437</xloc>
2112   - <yloc>662</yloc>
2113   - <draw>Y</draw>
2114   - </GUI>
2115   - </step>
2116   -
2117   - <step>
2118   - <name>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 3</name>
2119   - <type>ValueMapper</type>
2120   - <description/>
2121   - <distribute>Y</distribute>
2122   - <custom_distribution/>
2123   - <copies>1</copies>
2124   - <partitioning>
2125   - <method>none</method>
2126   - <schema_name/>
2127   - </partitioning>
2128   - <field_to_use>bctype</field_to_use>
2129   - <target_field>bctype_code</target_field>
2130   - <non_match_default>&#x672a;&#x77e5;&#x7c7b;&#x578b;</non_match_default>
2131   - <fields>
2132   - <field>
2133   - <source_value>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</source_value>
2134   - <target_value>normal</target_value>
2135   - </field>
2136   - <field>
2137   - <source_value>&#x51fa;&#x573a;</source_value>
2138   - <target_value>out</target_value>
2139   - </field>
2140   - <field>
2141   - <source_value>&#x8fdb;&#x573a;</source_value>
2142   - <target_value>in</target_value>
2143   - </field>
2144   - <field>
2145   - <source_value>&#x52a0;&#x6cb9;</source_value>
2146   - <target_value>oil</target_value>
2147   - </field>
2148   - <field>
2149   - <source_value>&#x4e34;&#x52a0;</source_value>
2150   - <target_value>temp</target_value>
2151   - </field>
2152   - <field>
2153   - <source_value>&#x533a;&#x95f4;</source_value>
2154   - <target_value>region</target_value>
2155   - </field>
2156   - <field>
2157   - <source_value>&#x653e;&#x7a7a;</source_value>
2158   - <target_value>venting</target_value>
2159   - </field>
2160   - <field>
2161   - <source_value>&#x653e;&#x5927;&#x7ad9;</source_value>
2162   - <target_value>major</target_value>
2163   - </field>
2164   - </fields>
2165   - <cluster_schema/>
2166   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
2167   - <xloc>590</xloc>
2168   - <yloc>743</yloc>
2169   - <draw>Y</draw>
2170   - </GUI>
2171   - </step>
2172   -
2173   - <step>
2174   - <name>&#x7c7b;&#x578b;&#x4fee;&#x6b63;</name>
2175   - <type>SelectValues</type>
2176   - <description/>
2177   - <distribute>Y</distribute>
2178   - <custom_distribution/>
2179   - <copies>1</copies>
2180   - <partitioning>
2181   - <method>none</method>
2182   - <schema_name/>
2183   - </partitioning>
2184   - <fields> <select_unspecified>N</select_unspecified>
2185   - <meta> <name>jhlc</name>
2186   - <rename>jhlc</rename>
2187   - <type>Number</type>
2188   - <length>-2</length>
2189   - <precision>-2</precision>
2190   - <conversion_mask/>
2191   - <date_format_lenient>false</date_format_lenient>
2192   - <date_format_locale/>
2193   - <date_format_timezone/>
2194   - <lenient_string_to_number>false</lenient_string_to_number>
2195   - <encoding/>
2196   - <decimal_symbol/>
2197   - <grouping_symbol/>
2198   - <currency_symbol/>
2199   - <storage_type/>
2200   - </meta> <meta> <name>bcsj</name>
2201   - <rename>bcsj</rename>
2202   - <type>Integer</type>
2203   - <length>-2</length>
2204   - <precision>-2</precision>
2205   - <conversion_mask/>
2206   - <date_format_lenient>false</date_format_lenient>
2207   - <date_format_locale/>
2208   - <date_format_timezone/>
2209   - <lenient_string_to_number>false</lenient_string_to_number>
2210   - <encoding/>
2211   - <decimal_symbol/>
2212   - <grouping_symbol/>
2213   - <currency_symbol/>
2214   - <storage_type/>
2215   - </meta> </fields> <cluster_schema/>
2216   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
2217   - <xloc>146</xloc>
2218   - <yloc>768</yloc>
2219   - <draw>Y</draw>
2220   - </GUI>
2221   - </step>
2222   -
2223   - <step>
2224   - <name>&#x8fdb;&#x573a;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</name>
2225   - <type>ScriptValueMod</type>
2226   - <description/>
2227   - <distribute>Y</distribute>
2228   - <custom_distribution/>
2229   - <copies>1</copies>
2230   - <partitioning>
2231   - <method>none</method>
2232   - <schema_name/>
2233   - </partitioning>
2234   - <compatible>N</compatible>
2235   - <optimizationLevel>9</optimizationLevel>
2236   - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
2237   - <jsScript_name>Script 1</jsScript_name>
2238   - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x6dfb;&#x52a0;&#x7ad9;&#x70b9;&#x6807;&#x8bc6;&#xa;var qdzname_2 &#x3d; &#x27;&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;&#x27;&#x3b;&#xa;var tccname &#x3d; &#x27;&#x4e1c;&#x9756;&#x8def;&#x9ad8;&#x884c;&#x505c;&#x8f66;&#x573a;&#x27;&#x3b;&#xa;var sxx &#x3d; &#x27;1&#x27; &#x2f;&#x2f; &#x4e0b;&#x884c;&#x3b;&#xa;var sendZdtype &#x3d; &#x27;B&#x27;&#x3b;</jsScript_script>
2239   - </jsScript> </jsScripts> <fields> <field> <name>qdzname_2</name>
2240   - <rename>qdzname_2</rename>
2241   - <type>String</type>
2242   - <length>-1</length>
2243   - <precision>-1</precision>
2244   - <replace>N</replace>
2245   - </field> <field> <name>tccname</name>
2246   - <rename>tccname</rename>
2247   - <type>String</type>
2248   - <length>-1</length>
2249   - <precision>-1</precision>
2250   - <replace>N</replace>
2251   - </field> <field> <name>sxx</name>
2252   - <rename>sxx</rename>
2253   - <type>String</type>
2254   - <length>-1</length>
2255   - <precision>-1</precision>
2256   - <replace>N</replace>
2257   - </field> <field> <name>sendZdtype</name>
2258   - <rename>sendZdtype</rename>
2259   - <type>String</type>
2260   - <length>-1</length>
2261   - <precision>-1</precision>
2262   - <replace>N</replace>
2263   - </field> </fields> <cluster_schema/>
2264   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
2265   - <xloc>871</xloc>
2266   - <yloc>608</yloc>
2267   - <draw>Y</draw>
2268   - </GUI>
2269   - </step>
2270   -
2271   - <step>
2272   - <name>&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</name>
2273   - <type>Dummy</type>
2274   - <description/>
2275   - <distribute>Y</distribute>
2276   - <custom_distribution/>
2277   - <copies>1</copies>
2278   - <partitioning>
2279   - <method>none</method>
2280   - <schema_name/>
2281   - </partitioning>
2282   - <cluster_schema/>
2283   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
2284   - <xloc>997</xloc>
2285   - <yloc>606</yloc>
2286   - <draw>Y</draw>
2287   - </GUI>
2288   - </step>
2289   -
2290   - <step>
2291   - <name>&#x8ba1;&#x7b97;&#x73ed;&#x6b21;&#x7c7b;&#x578b;</name>
2292   - <type>ValueMapper</type>
2293   - <description/>
2294   - <distribute>Y</distribute>
2295   - <custom_distribution/>
2296   - <copies>1</copies>
2297   - <partitioning>
2298   - <method>none</method>
2299   - <schema_name/>
2300   - </partitioning>
2301   - <field_to_use>qdzname_replace</field_to_use>
2302   - <target_field>bctype</target_field>
2303   - <non_match_default>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</non_match_default>
2304   - <fields>
2305   - <field>
2306   - <source_value>&#x51fa;&#x573a;</source_value>
2307   - <target_value>&#x51fa;&#x573a;</target_value>
2308   - </field>
2309   - <field>
2310   - <source_value>&#x8fdb;&#x573a;</source_value>
2311   - <target_value>&#x8fdb;&#x573a;</target_value>
2312   - </field>
2313   - </fields>
2314   - <cluster_schema/>
2315   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
2316   - <xloc>1014</xloc>
2317   - <yloc>401</yloc>
2318   - <draw>Y</draw>
2319   - </GUI>
2320   - </step>
2321   -
2322   - <step_error_handling>
2323   - </step_error_handling>
2324   - <slave-step-copy-partition-distribution>
2325   -</slave-step-copy-partition-distribution>
2326   - <slave_transformation>N</slave_transformation>
2327   -
2328   -</transformation>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>ttinfodetailDataInput</name>
  5 + <description>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description>
  6 + <extended_description>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#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 + </parameters>
  13 + <log>
  14 +<trans-log-table><connection/>
  15 +<schema/>
  16 +<table/>
  17 +<size_limit_lines/>
  18 +<interval/>
  19 +<timeout_days/>
  20 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table>
  21 +<perf-log-table><connection/>
  22 +<schema/>
  23 +<table/>
  24 +<interval/>
  25 +<timeout_days/>
  26 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table>
  27 +<channel-log-table><connection/>
  28 +<schema/>
  29 +<table/>
  30 +<timeout_days/>
  31 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table>
  32 +<step-log-table><connection/>
  33 +<schema/>
  34 +<table/>
  35 +<timeout_days/>
  36 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table>
  37 +<metrics-log-table><connection/>
  38 +<schema/>
  39 +<table/>
  40 +<timeout_days/>
  41 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table>
  42 + </log>
  43 + <maxdate>
  44 + <connection/>
  45 + <table/>
  46 + <field/>
  47 + <offset>0.0</offset>
  48 + <maxdiff>0.0</maxdiff>
  49 + </maxdate>
  50 + <size_rowset>10000</size_rowset>
  51 + <sleep_time_empty>50</sleep_time_empty>
  52 + <sleep_time_full>50</sleep_time_full>
  53 + <unique_connections>N</unique_connections>
  54 + <feedback_shown>Y</feedback_shown>
  55 + <feedback_size>50000</feedback_size>
  56 + <using_thread_priorities>Y</using_thread_priorities>
  57 + <shared_objects_file/>
  58 + <capture_step_performance>N</capture_step_performance>
  59 + <step_performance_capturing_delay>1000</step_performance_capturing_delay>
  60 + <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
  61 + <dependencies>
  62 + </dependencies>
  63 + <partitionschemas>
  64 + </partitionschemas>
  65 + <slaveservers>
  66 + </slaveservers>
  67 + <clusterschemas>
  68 + </clusterschemas>
  69 + <created_user>-</created_user>
  70 + <created_date>2016&#x2f;06&#x2f;30 12&#x3a;21&#x3a;57.536</created_date>
  71 + <modified_user>-</modified_user>
  72 + <modified_date>2016&#x2f;06&#x2f;30 12&#x3a;21&#x3a;57.536</modified_date>
  73 + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
  74 + <is_key_private>N</is_key_private>
  75 + </info>
  76 + <notepads>
  77 + <notepad>
  78 + <note>&#x5b57;&#x5178;&#x8868;&#x5bf9;&#x5e94;&#xff08;&#x4ee5;&#x540e;&#x76f4;&#x63a5;&#x67e5;&#x627e;&#x8868; bsth_c_sys_dictionary&#xff09;&#xa;&#x7c7b;&#x578b; &#x4ee3;&#x7801; &#x540d;&#x79f0;&#xa;LineTrend 0 &#x4e0a;&#x884c;&#xa;LineTrend 1 &#x4e0b;&#x884c;&#xa;ScheduleType normal &#x6b63;&#x5e38;&#x73ed;&#x6b21;&#xa;ScheduleType out &#x51fa;&#x573a;&#xa;ScheduleType in &#x8fdb;&#x573a;&#xa;ScheduleType temp &#x4e34;&#x52a0;&#xa;ScheduleType region &#x533a;&#x95f4;&#xa;ScheduleType venting &#x653e;&#x7a7a;&#xa;ScheduleType major &#x653e;&#x5927;&#x7ad9;</note>
  79 + <xloc>606</xloc>
  80 + <yloc>129</yloc>
  81 + <width>332</width>
  82 + <heigth>186</heigth>
  83 + <fontname>YaHei Consolas Hybrid</fontname>
  84 + <fontsize>12</fontsize>
  85 + <fontbold>N</fontbold>
  86 + <fontitalic>N</fontitalic>
  87 + <fontcolorred>0</fontcolorred>
  88 + <fontcolorgreen>0</fontcolorgreen>
  89 + <fontcolorblue>0</fontcolorblue>
  90 + <backgroundcolorred>255</backgroundcolorred>
  91 + <backgroundcolorgreen>205</backgroundcolorgreen>
  92 + <backgroundcolorblue>112</backgroundcolorblue>
  93 + <bordercolorred>100</bordercolorred>
  94 + <bordercolorgreen>100</bordercolorgreen>
  95 + <bordercolorblue>100</bordercolorblue>
  96 + <drawshadow>Y</drawshadow>
  97 + </notepad>
  98 + <notepad>
  99 + <note>&#x56e0;&#x4e3a;&#x65f6;&#x523b;&#x8868;&#x8f93;&#x5165;&#x683c;&#x5f0f;&#x4e0d;&#x786e;&#x5b9a;&#x6027;&#xff0c;&#x4e3b;&#x8981;&#x56e0;&#x4e3a;&#x8868;&#x7ed3;&#x6784;&#x662f;&#x53cd;&#x8303;&#x5f0f;&#x5316;&#x7684;&#xff0c;&#xa;&#x6240;&#x4ee5;&#x9700;&#x8981;&#x5916;&#x90e8;&#x52a8;&#x6001;&#x6307;&#x5b9a;&#x613f;&#x6570;&#x636e;&#xff0c;&#x5934;&#x4e09;&#x4e2a;step&#x52a8;&#x6001;&#x6307;&#x5b9a;&#x613f;&#x6570;&#x636e;&#xa;</note>
  100 + <xloc>64</xloc>
  101 + <yloc>224</yloc>
  102 + <width>346</width>
  103 + <heigth>58</heigth>
  104 + <fontname>YaHei Consolas Hybrid</fontname>
  105 + <fontsize>12</fontsize>
  106 + <fontbold>N</fontbold>
  107 + <fontitalic>N</fontitalic>
  108 + <fontcolorred>0</fontcolorred>
  109 + <fontcolorgreen>0</fontcolorgreen>
  110 + <fontcolorblue>0</fontcolorblue>
  111 + <backgroundcolorred>255</backgroundcolorred>
  112 + <backgroundcolorgreen>205</backgroundcolorgreen>
  113 + <backgroundcolorblue>112</backgroundcolorblue>
  114 + <bordercolorred>100</bordercolorred>
  115 + <bordercolorgreen>100</bordercolorgreen>
  116 + <bordercolorblue>100</bordercolorblue>
  117 + <drawshadow>Y</drawshadow>
  118 + </notepad>
  119 + </notepads>
  120 + <connection>
  121 + <name>bus_control_&#x516c;&#x53f8;_201</name>
  122 + <server>localhost</server>
  123 + <type>MYSQL</type>
  124 + <access>Native</access>
  125 + <database>control</database>
  126 + <port>3306</port>
  127 + <username>root</username>
  128 + <password>Encrypted </password>
  129 + <servername/>
  130 + <data_tablespace/>
  131 + <index_tablespace/>
  132 + <attributes>
  133 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  134 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  135 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  136 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  137 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  138 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  139 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  140 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  141 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  142 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  143 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  144 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  145 + </attributes>
  146 + </connection>
  147 + <connection>
  148 + <name>bus_control_variable</name>
  149 + <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
  150 + <type>MYSQL</type>
  151 + <access>Native</access>
  152 + <database>control</database>
  153 + <port>3306</port>
  154 + <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
  155 + <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
  156 + <servername/>
  157 + <data_tablespace/>
  158 + <index_tablespace/>
  159 + <attributes>
  160 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  161 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  162 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  163 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  164 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  165 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  166 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  167 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  168 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  169 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  170 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  171 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  172 + </attributes>
  173 + </connection>
  174 + <connection>
  175 + <name>bus_control_&#x672c;&#x673a;</name>
  176 + <server>localhost</server>
  177 + <type>MYSQL</type>
  178 + <access>Native</access>
  179 + <database>control</database>
  180 + <port>3306</port>
  181 + <username>root</username>
  182 + <password>Encrypted </password>
  183 + <servername/>
  184 + <data_tablespace/>
  185 + <index_tablespace/>
  186 + <attributes>
  187 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  188 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  189 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  190 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  191 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  192 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  193 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  194 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  195 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  196 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  197 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  198 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  199 + </attributes>
  200 + </connection>
  201 + <connection>
  202 + <name>xlab_mysql_youle</name>
  203 + <server>101.231.124.8</server>
  204 + <type>MYSQL</type>
  205 + <access>Native</access>
  206 + <database>xlab_youle</database>
  207 + <port>45687</port>
  208 + <username>xlab-youle</username>
  209 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
  210 + <servername/>
  211 + <data_tablespace/>
  212 + <index_tablespace/>
  213 + <attributes>
  214 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  215 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  216 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  217 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  218 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  219 + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
  220 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  221 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  222 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  223 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  224 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  225 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  226 + </attributes>
  227 + </connection>
  228 + <connection>
  229 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  230 + <server>localhost</server>
  231 + <type>MYSQL</type>
  232 + <access>Native</access>
  233 + <database>xlab_youle</database>
  234 + <port>3306</port>
  235 + <username>root</username>
  236 + <password>Encrypted </password>
  237 + <servername/>
  238 + <data_tablespace/>
  239 + <index_tablespace/>
  240 + <attributes>
  241 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  242 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  243 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  244 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  245 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  246 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  247 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  248 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  249 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  250 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  251 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  252 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  253 + </attributes>
  254 + </connection>
  255 + <connection>
  256 + <name>xlab_youle</name>
  257 + <server/>
  258 + <type>MYSQL</type>
  259 + <access>JNDI</access>
  260 + <database>xlab_youle</database>
  261 + <port>1521</port>
  262 + <username/>
  263 + <password>Encrypted </password>
  264 + <servername/>
  265 + <data_tablespace/>
  266 + <index_tablespace/>
  267 + <attributes>
  268 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  269 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  270 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  271 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  272 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  273 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  274 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  275 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  276 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  277 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  278 + </attributes>
  279 + </connection>
  280 + <order>
  281 + <hop> <from>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</from><to>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</to><enabled>Y</enabled> </hop>
  282 + <hop> <from>&#x6dfb;&#x52a0;&#x53d1;&#x8f66;&#x987a;&#x5e8f;&#x53f7;</from><to>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;&#xff08;&#x53d1;&#x8f66;&#x65f6;&#x95f4;&#x4e3a;&#x7a7a;&#xff09;</to><enabled>Y</enabled> </hop>
  283 + <hop> <from>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;&#xff08;&#x53d1;&#x8f66;&#x65f6;&#x95f4;&#x4e3a;&#x7a7a;&#xff09;</from><to>&#x6dfb;&#x52a0;&#x5bf9;&#x5e94;&#x73ed;&#x6b21;&#x6570;</to><enabled>Y</enabled> </hop>
  284 + <hop> <from>&#x6dfb;&#x52a0;&#x5bf9;&#x5e94;&#x73ed;&#x6b21;&#x6570;</from><to>&#x5904;&#x7406;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
  285 + <hop> <from>&#x5904;&#x7406;&#x6570;&#x636e;</from><to>&#x5206;&#x7ec4;&#x5404;&#x4e2a;&#x8def;&#x724c;&#x7684;&#x7ad9;</to><enabled>Y</enabled> </hop>
  286 + <hop> <from>&#x67e5;&#x627e;&#x65f6;&#x523b;&#x8868;&#x57fa;&#x7840;&#x4fe1;&#x606f;&#x5173;&#x8054;</from><to>&#x67e5;&#x627e;&#x8def;&#x724c;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
  287 + <hop> <from>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</from><to>&#x67e5;&#x627e;&#x65f6;&#x523b;&#x8868;&#x57fa;&#x7840;&#x4fe1;&#x606f;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
  288 + <hop> <from>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178;</from><to>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178;</to><enabled>Y</enabled> </hop>
  289 + <hop> <from>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178; 2</from><to>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 2</to><enabled>Y</enabled> </hop>
  290 + <hop> <from>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178; 3</from><to>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 3</to><enabled>Y</enabled> </hop>
  291 + <hop> <from>&#x5339;&#x914d;&#x4e0a;&#x4e0b;&#x884c;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</from><to>&#x7c7b;&#x578b;&#x4fee;&#x6b63;</to><enabled>Y</enabled> </hop>
  292 + <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;1</from><to>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</to><enabled>Y</enabled> </hop>
  293 + <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;1</from><to>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
  294 + <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</from><to>&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
  295 + <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</from><to>&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
  296 + <hop> <from>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</from><to>&#x5339;&#x914d;&#x4e0a;&#x4e0b;&#x884c;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
  297 + <hop> <from>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;</from><to>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178;</to><enabled>Y</enabled> </hop>
  298 + <hop> <from>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</from><to>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
  299 + <hop> <from>&#x6b63;&#x5e38;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</from><to>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</to><enabled>Y</enabled> </hop>
  300 + <hop> <from>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6570;&#x636e;</from><to>&#x6b63;&#x5e38;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
  301 + <hop> <from>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178;</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
  302 + <hop> <from>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 2</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x51fa;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
  303 + <hop> <from>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 3</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x8fdb;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
  304 + <hop> <from>&#x67e5;&#x627e;&#x8def;&#x724c;&#x5173;&#x8054;</from><to>&#x8ba1;&#x7b97;&#x73ed;&#x6b21;&#x7c7b;&#x578b;</to><enabled>Y</enabled> </hop>
  305 + <hop> <from>&#x8ba1;&#x7b97;&#x73ed;&#x6b21;&#x7c7b;&#x578b;</from><to>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;1</to><enabled>Y</enabled> </hop>
  306 + <hop> <from>&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</from><to>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;1</to><enabled>Y</enabled> </hop>
  307 + <hop> <from>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;1</from><to>&#x51fa;&#x573a;&#x73ed;&#x6b21;_&#x786e;&#x5b9a;&#x7ec8;&#x70b9;&#x7ad9;&#x540d;&#x5b57;</to><enabled>Y</enabled> </hop>
  308 + <hop> <from>&#x51fa;&#x573a;&#x73ed;&#x6b21;_&#x786e;&#x5b9a;&#x7ec8;&#x70b9;&#x7ad9;&#x540d;&#x5b57;</from><to>&#x67e5;&#x627e;&#x51fa;&#x573a;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</to><enabled>Y</enabled> </hop>
  309 + <hop> <from>&#x67e5;&#x627e;&#x51fa;&#x573a;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</from><to>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178; 2</to><enabled>Y</enabled> </hop>
  310 + <hop> <from>&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</from><to>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;2</to><enabled>Y</enabled> </hop>
  311 + <hop> <from>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;2</from><to>&#x8fdb;&#x573a;&#x73ed;&#x6b21;_&#x786e;&#x5b9a;&#x8d77;&#x70b9;&#x7ad9;&#x540d;&#x5b57;</to><enabled>Y</enabled> </hop>
  312 + <hop> <from>&#x8fdb;&#x573a;&#x73ed;&#x6b21;_&#x786e;&#x5b9a;&#x8d77;&#x70b9;&#x7ad9;&#x540d;&#x5b57;</from><to>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ebf;&#x8def;&#x65b9;&#x5411;</to><enabled>Y</enabled> </hop>
  313 + <hop> <from>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ebf;&#x8def;&#x65b9;&#x5411;</from><to>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ec8;&#x70b9;&#x7ad9;&#xff0c;&#x5e76;&#x4f5c;&#x4e3a;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x7684;&#x8d77;&#x70b9;&#x7ad9;</to><enabled>Y</enabled> </hop>
  314 + <hop> <from>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ec8;&#x70b9;&#x7ad9;&#xff0c;&#x5e76;&#x4f5c;&#x4e3a;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x7684;&#x8d77;&#x70b9;&#x7ad9;</from><to>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178; 3</to><enabled>Y</enabled> </hop>
  315 + <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x6dfb;&#x52a0;&#x53d1;&#x8f66;&#x987a;&#x5e8f;&#x53f7;</to><enabled>Y</enabled> </hop>
  316 + <hop> <from>&#x5206;&#x7ec4;&#x5404;&#x4e2a;&#x8def;&#x724c;&#x7684;&#x7ad9;</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
  317 + <hop> <from>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;&#xff0c;&#x7ebf;&#x8def;&#x540d;&#x5b57;&#xff0c;&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</from><to>&#x8bb0;&#x5f55;&#x5173;&#x8054; &#x28;&#x7b1b;&#x5361;&#x5c14;&#x8f93;&#x51fa;&#x29;</to><enabled>Y</enabled> </hop>
  318 + <hop> <from>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</from><to>&#x8bb0;&#x5f55;&#x5173;&#x8054; &#x28;&#x7b1b;&#x5361;&#x5c14;&#x8f93;&#x51fa;&#x29;</to><enabled>Y</enabled> </hop>
  319 + <hop> <from>&#x8bb0;&#x5f55;&#x5173;&#x8054; &#x28;&#x7b1b;&#x5361;&#x5c14;&#x8f93;&#x51fa;&#x29;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
  320 + </order>
  321 + <step>
  322 + <name>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178;</name>
  323 + <type>ValueMapper</type>
  324 + <description/>
  325 + <distribute>Y</distribute>
  326 + <custom_distribution/>
  327 + <copies>1</copies>
  328 + <partitioning>
  329 + <method>none</method>
  330 + <schema_name/>
  331 + </partitioning>
  332 + <field_to_use>sxx</field_to_use>
  333 + <target_field>sxx_desc</target_field>
  334 + <non_match_default/>
  335 + <fields>
  336 + <field>
  337 + <source_value>0</source_value>
  338 + <target_value>&#x4e0a;&#x884c;</target_value>
  339 + </field>
  340 + <field>
  341 + <source_value>1</source_value>
  342 + <target_value>&#x4e0b;&#x884c;</target_value>
  343 + </field>
  344 + </fields>
  345 + <cluster_schema/>
  346 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  347 + <xloc>147</xloc>
  348 + <yloc>403</yloc>
  349 + <draw>Y</draw>
  350 + </GUI>
  351 + </step>
  352 +
  353 + <step>
  354 + <name>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178; 2</name>
  355 + <type>ValueMapper</type>
  356 + <description/>
  357 + <distribute>Y</distribute>
  358 + <custom_distribution/>
  359 + <copies>1</copies>
  360 + <partitioning>
  361 + <method>none</method>
  362 + <schema_name/>
  363 + </partitioning>
  364 + <field_to_use>sxx</field_to_use>
  365 + <target_field>sxx_desc</target_field>
  366 + <non_match_default/>
  367 + <fields>
  368 + <field>
  369 + <source_value>0</source_value>
  370 + <target_value>&#x4e0a;&#x884c;</target_value>
  371 + </field>
  372 + <field>
  373 + <source_value>1</source_value>
  374 + <target_value>&#x4e0b;&#x884c;</target_value>
  375 + </field>
  376 + </fields>
  377 + <cluster_schema/>
  378 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  379 + <xloc>331</xloc>
  380 + <yloc>598</yloc>
  381 + <draw>Y</draw>
  382 + </GUI>
  383 + </step>
  384 +
  385 + <step>
  386 + <name>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178; 3</name>
  387 + <type>ValueMapper</type>
  388 + <description/>
  389 + <distribute>Y</distribute>
  390 + <custom_distribution/>
  391 + <copies>1</copies>
  392 + <partitioning>
  393 + <method>none</method>
  394 + <schema_name/>
  395 + </partitioning>
  396 + <field_to_use>sxx</field_to_use>
  397 + <target_field>sxx_desc</target_field>
  398 + <non_match_default/>
  399 + <fields>
  400 + <field>
  401 + <source_value>0</source_value>
  402 + <target_value>&#x4e0a;&#x884c;</target_value>
  403 + </field>
  404 + <field>
  405 + <source_value>1</source_value>
  406 + <target_value>&#x4e0b;&#x884c;</target_value>
  407 + </field>
  408 + </fields>
  409 + <cluster_schema/>
  410 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  411 + <xloc>550</xloc>
  412 + <yloc>775</yloc>
  413 + <draw>Y</draw>
  414 + </GUI>
  415 + </step>
  416 +
  417 + <step>
  418 + <name>&#x51fa;&#x573a;&#x73ed;&#x6b21;_&#x786e;&#x5b9a;&#x7ec8;&#x70b9;&#x7ad9;&#x540d;&#x5b57;</name>
  419 + <type>ScriptValueMod</type>
  420 + <description/>
  421 + <distribute>Y</distribute>
  422 + <custom_distribution/>
  423 + <copies>1</copies>
  424 + <partitioning>
  425 + <method>none</method>
  426 + <schema_name/>
  427 + </partitioning>
  428 + <compatible>N</compatible>
  429 + <optimizationLevel>9</optimizationLevel>
  430 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  431 + <jsScript_name>Script 1</jsScript_name>
  432 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x6dfb;&#x52a0;&#x7ad9;&#x70b9;&#x6807;&#x8bc6;&#xa;var cc_groups &#x3d; qdzgroups.split&#x28;&#x22;,&#x22;&#x29;&#x3b; &#x2f;&#x2f; &#x6240;&#x6709;&#x73ed;&#x6b21;&#x8d77;&#x70b9;&#x7ad9;&#x6570;&#x7ec4;&#xa;var zdzname &#x3d; cc_groups&#x5b;gno&#x5d;&#x3b; &#x2f;&#x2f; &#x51fa;&#x573a;&#x73ed;&#x6b21;&#x7684;&#x7ec8;&#x70b9;&#x7ad9;&#x662f;&#x4e0b;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x8d77;&#x59cb;&#x7ad9;&#xa;var endZdtype &#x3d; &#x27;B&#x27;&#x3b;</jsScript_script>
  433 + </jsScript> </jsScripts> <fields> <field> <name>zdzname</name>
  434 + <rename>zdzname</rename>
  435 + <type>String</type>
  436 + <length>-1</length>
  437 + <precision>-1</precision>
  438 + <replace>N</replace>
  439 + </field> <field> <name>endZdtype</name>
  440 + <rename>endZdtype</rename>
  441 + <type>String</type>
  442 + <length>-1</length>
  443 + <precision>-1</precision>
  444 + <replace>N</replace>
  445 + </field> </fields> <cluster_schema/>
  446 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  447 + <xloc>575</xloc>
  448 + <yloc>502</yloc>
  449 + <draw>Y</draw>
  450 + </GUI>
  451 + </step>
  452 +
  453 + <step>
  454 + <name>&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</name>
  455 + <type>Dummy</type>
  456 + <description/>
  457 + <distribute>Y</distribute>
  458 + <custom_distribution/>
  459 + <copies>1</copies>
  460 + <partitioning>
  461 + <method>none</method>
  462 + <schema_name/>
  463 + </partitioning>
  464 + <cluster_schema/>
  465 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  466 + <xloc>869</xloc>
  467 + <yloc>504</yloc>
  468 + <draw>Y</draw>
  469 + </GUI>
  470 + </step>
  471 +
  472 + <step>
  473 + <name>&#x5206;&#x7ec4;&#x5404;&#x4e2a;&#x8def;&#x724c;&#x7684;&#x7ad9;</name>
  474 + <type>GroupBy</type>
  475 + <description/>
  476 + <distribute>Y</distribute>
  477 + <custom_distribution/>
  478 + <copies>1</copies>
  479 + <partitioning>
  480 + <method>none</method>
  481 + <schema_name/>
  482 + </partitioning>
  483 + <all_rows>Y</all_rows>
  484 + <ignore_aggregate>N</ignore_aggregate>
  485 + <field_ignore/>
  486 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  487 + <prefix>grp</prefix>
  488 + <add_linenr>Y</add_linenr>
  489 + <linenr_fieldname>gno</linenr_fieldname>
  490 + <give_back_row>N</give_back_row>
  491 + <group>
  492 + <field>
  493 + <name>lp</name>
  494 + </field>
  495 + </group>
  496 + <fields>
  497 + <field>
  498 + <aggregate>qdzgroups</aggregate>
  499 + <subject>qdzname</subject>
  500 + <type>CONCAT_STRING</type>
  501 + <valuefield>,</valuefield>
  502 + </field>
  503 + </fields>
  504 + <cluster_schema/>
  505 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  506 + <xloc>892</xloc>
  507 + <yloc>44</yloc>
  508 + <draw>Y</draw>
  509 + </GUI>
  510 + </step>
  511 +
  512 + <step>
  513 + <name>&#x5339;&#x914d;&#x4e0a;&#x4e0b;&#x884c;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
  514 + <type>ScriptValueMod</type>
  515 + <description/>
  516 + <distribute>Y</distribute>
  517 + <custom_distribution/>
  518 + <copies>1</copies>
  519 + <partitioning>
  520 + <method>none</method>
  521 + <schema_name/>
  522 + </partitioning>
  523 + <compatible>N</compatible>
  524 + <optimizationLevel>9</optimizationLevel>
  525 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  526 + <jsScript_name>Script 1</jsScript_name>
  527 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var jhlc&#x3b; &#x2f;&#x2f; &#x8ba1;&#x5212;&#x91cc;&#x7a0b;&#xa;var bcsj&#x3b; &#x2f;&#x2f; &#x73ed;&#x6b21;&#x65f6;&#x95f4;&#xa;&#xa;if &#x28;sxx &#x3d;&#x3d; 0&#x29; &#x7b; &#x2f;&#x2f; &#x4e0a;&#x884c;&#xa; jhlc &#x3d; up_mileage&#x3b;&#xa; bcsj &#x3d; up_travel_time&#x3b;&#xa;&#x7d; else &#x7b; &#x2f;&#x2f; sxx &#x3d;&#x3d; 1 &#x4e0b;&#x884c;&#xa; jhlc &#x3d; down_mileage&#x3b;&#xa; bcsj &#x3d; down_travel_time&#x3b;&#xa;&#x7d;</jsScript_script>
  528 + </jsScript> </jsScripts> <fields> <field> <name>jhlc</name>
  529 + <rename>jhlc</rename>
  530 + <type>String</type>
  531 + <length>-1</length>
  532 + <precision>-1</precision>
  533 + <replace>N</replace>
  534 + </field> <field> <name>bcsj</name>
  535 + <rename>bcsj</rename>
  536 + <type>String</type>
  537 + <length>-1</length>
  538 + <precision>-1</precision>
  539 + <replace>N</replace>
  540 + </field> </fields> <cluster_schema/>
  541 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  542 + <xloc>148</xloc>
  543 + <yloc>674</yloc>
  544 + <draw>Y</draw>
  545 + </GUI>
  546 + </step>
  547 +
  548 + <step>
  549 + <name>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;&#xff0c;&#x7ebf;&#x8def;&#x540d;&#x5b57;&#xff0c;&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</name>
  550 + <type>DataGrid</type>
  551 + <description/>
  552 + <distribute>Y</distribute>
  553 + <custom_distribution/>
  554 + <copies>1</copies>
  555 + <partitioning>
  556 + <method>none</method>
  557 + <schema_name/>
  558 + </partitioning>
  559 + <fields>
  560 + </fields>
  561 + <data>
  562 + <line> </line>
  563 + </data>
  564 + <cluster_schema/>
  565 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  566 + <xloc>110</xloc>
  567 + <yloc>133</yloc>
  568 + <draw>Y</draw>
  569 + </GUI>
  570 + </step>
  571 +
  572 + <step>
  573 + <name>&#x5904;&#x7406;&#x6570;&#x636e;</name>
  574 + <type>ScriptValueMod</type>
  575 + <description/>
  576 + <distribute>Y</distribute>
  577 + <custom_distribution/>
  578 + <copies>1</copies>
  579 + <partitioning>
  580 + <method>none</method>
  581 + <schema_name/>
  582 + </partitioning>
  583 + <compatible>N</compatible>
  584 + <optimizationLevel>9</optimizationLevel>
  585 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  586 + <jsScript_name>Script 1</jsScript_name>
  587 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x4f7f;&#x7528;&#x6b63;&#x5219;&#x8868;&#x8fbe;&#x5f0f;&#x53bb;&#x9664;&#x7ad9;&#x70b9;&#x540d;&#x79f0;&#x4e2d;&#x7684;&#x6570;&#x5b57;&#xa;qdzname &#x3d; qdzname.replace&#x28;&#x2f;&#x5c;d&#x2b;&#x2f;g,&#x27;&#x27;&#x29;&#x3b;&#xa;&#xa;</jsScript_script>
  588 + </jsScript> </jsScripts> <fields> <field> <name>qdzname</name>
  589 + <rename>qdzname</rename>
  590 + <type>String</type>
  591 + <length>-1</length>
  592 + <precision>-1</precision>
  593 + <replace>Y</replace>
  594 + </field> </fields> <cluster_schema/>
  595 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  596 + <xloc>788</xloc>
  597 + <yloc>44</yloc>
  598 + <draw>Y</draw>
  599 + </GUI>
  600 + </step>
  601 +
  602 + <step>
  603 + <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
  604 + <type>SelectValues</type>
  605 + <description/>
  606 + <distribute>Y</distribute>
  607 + <custom_distribution/>
  608 + <copies>1</copies>
  609 + <partitioning>
  610 + <method>none</method>
  611 + <schema_name/>
  612 + </partitioning>
  613 + <fields> <field> <name>&#x8def;&#x724c;</name>
  614 + <rename>lp</rename>
  615 + <length>-2</length>
  616 + <precision>-2</precision>
  617 + </field> <field> <name>&#x7ad9;&#x70b9;&#x540d;&#x79f0;</name>
  618 + <rename>qdzname</rename>
  619 + <length>-2</length>
  620 + <precision>-2</precision>
  621 + </field> <field> <name>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</name>
  622 + <rename>sendtime</rename>
  623 + <length>-2</length>
  624 + <precision>-2</precision>
  625 + </field> <select_unspecified>Y</select_unspecified>
  626 + </fields> <cluster_schema/>
  627 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  628 + <xloc>444</xloc>
  629 + <yloc>131</yloc>
  630 + <draw>Y</draw>
  631 + </GUI>
  632 + </step>
  633 +
  634 + <step>
  635 + <name>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;1</name>
  636 + <type>FilterRows</type>
  637 + <description/>
  638 + <distribute>Y</distribute>
  639 + <custom_distribution/>
  640 + <copies>1</copies>
  641 + <partitioning>
  642 + <method>none</method>
  643 + <schema_name/>
  644 + </partitioning>
  645 +<send_true_to>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6570;&#x636e;</send_true_to>
  646 +<send_false_to>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</send_false_to>
  647 + <compare>
  648 +<condition>
  649 + <negated>N</negated>
  650 + <leftvalue>bctype</leftvalue>
  651 + <function>&#x3d;</function>
  652 + <rightvalue/>
  653 + <value><name>constant</name><type>String</type><text>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</text><length>-1</length><precision>-1</precision><isnull>N</isnull><mask/></value> </condition>
  654 + </compare>
  655 + <cluster_schema/>
  656 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  657 + <xloc>868</xloc>
  658 + <yloc>404</yloc>
  659 + <draw>Y</draw>
  660 + </GUI>
  661 + </step>
  662 +
  663 + <step>
  664 + <name>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</name>
  665 + <type>FilterRows</type>
  666 + <description/>
  667 + <distribute>Y</distribute>
  668 + <custom_distribution/>
  669 + <copies>1</copies>
  670 + <partitioning>
  671 + <method>none</method>
  672 + <schema_name/>
  673 + </partitioning>
  674 +<send_true_to>&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</send_true_to>
  675 +<send_false_to>&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</send_false_to>
  676 + <compare>
  677 +<condition>
  678 + <negated>N</negated>
  679 + <leftvalue>bctype</leftvalue>
  680 + <function>&#x3d;</function>
  681 + <rightvalue/>
  682 + <value><name>constant</name><type>String</type><text>&#x51fa;&#x573a;</text><length>-1</length><precision>-1</precision><isnull>N</isnull><mask/></value> </condition>
  683 + </compare>
  684 + <cluster_schema/>
  685 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  686 + <xloc>995</xloc>
  687 + <yloc>503</yloc>
  688 + <draw>Y</draw>
  689 + </GUI>
  690 + </step>
  691 +
  692 + <step>
  693 + <name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</name>
  694 + <type>ExcelInput</type>
  695 + <description/>
  696 + <distribute>Y</distribute>
  697 + <custom_distribution/>
  698 + <copies>1</copies>
  699 + <partitioning>
  700 + <method>none</method>
  701 + <schema_name/>
  702 + </partitioning>
  703 + <header>Y</header>
  704 + <noempty>Y</noempty>
  705 + <stoponempty>N</stoponempty>
  706 + <filefield/>
  707 + <sheetfield/>
  708 + <sheetrownumfield/>
  709 + <rownumfield/>
  710 + <sheetfield/>
  711 + <filefield/>
  712 + <limit>0</limit>
  713 + <encoding/>
  714 + <add_to_result_filenames>Y</add_to_result_filenames>
  715 + <accept_filenames>N</accept_filenames>
  716 + <accept_field/>
  717 + <accept_stepname/>
  718 + <file>
  719 + <name/>
  720 + <filemask/>
  721 + <exclude_filemask/>
  722 + <file_required>N</file_required>
  723 + <include_subfolders>N</include_subfolders>
  724 + </file>
  725 + <fields>
  726 + </fields>
  727 + <sheets>
  728 + <sheet>
  729 + <name>&#x5de5;&#x4f5c;&#x8868;1</name>
  730 + <startrow>0</startrow>
  731 + <startcol>0</startcol>
  732 + </sheet>
  733 + </sheets>
  734 + <strict_types>N</strict_types>
  735 + <error_ignored>N</error_ignored>
  736 + <error_line_skipped>N</error_line_skipped>
  737 + <bad_line_files_destination_directory/>
  738 + <bad_line_files_extension>warning</bad_line_files_extension>
  739 + <error_line_files_destination_directory/>
  740 + <error_line_files_extension>error</error_line_files_extension>
  741 + <line_number_files_destination_directory/>
  742 + <line_number_files_extension>line</line_number_files_extension>
  743 + <shortFileFieldName/>
  744 + <pathFieldName/>
  745 + <hiddenFieldName/>
  746 + <lastModificationTimeFieldName/>
  747 + <uriNameFieldName/>
  748 + <rootUriNameFieldName/>
  749 + <extensionFieldName/>
  750 + <sizeFieldName/>
  751 + <spreadsheet_type>JXL</spreadsheet_type>
  752 + <cluster_schema/>
  753 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  754 + <xloc>112</xloc>
  755 + <yloc>44</yloc>
  756 + <draw>Y</draw>
  757 + </GUI>
  758 + </step>
  759 +
  760 + <step>
  761 + <name>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;1</name>
  762 + <type>DBLookup</type>
  763 + <description/>
  764 + <distribute>Y</distribute>
  765 + <custom_distribution/>
  766 + <copies>1</copies>
  767 + <partitioning>
  768 + <method>none</method>
  769 + <schema_name/>
  770 + </partitioning>
  771 + <connection>bus_control_variable</connection>
  772 + <cache>N</cache>
  773 + <cache_load_all>N</cache_load_all>
  774 + <cache_size>0</cache_size>
  775 + <lookup>
  776 + <schema/>
  777 + <table>bsth_c_car_park</table>
  778 + <orderby/>
  779 + <fail_on_multiple>N</fail_on_multiple>
  780 + <eat_row_on_failure>N</eat_row_on_failure>
  781 + <key>
  782 + <name>tccname_</name>
  783 + <field>park_name</field>
  784 + <condition>&#x3d;</condition>
  785 + <name2/>
  786 + </key>
  787 + <value>
  788 + <name>id</name>
  789 + <rename>qdzid</rename>
  790 + <default/>
  791 + <type>Integer</type>
  792 + </value>
  793 + </lookup>
  794 + <cluster_schema/>
  795 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  796 + <xloc>755</xloc>
  797 + <yloc>504</yloc>
  798 + <draw>Y</draw>
  799 + </GUI>
  800 + </step>
  801 +
  802 + <step>
  803 + <name>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;2</name>
  804 + <type>DBLookup</type>
  805 + <description/>
  806 + <distribute>Y</distribute>
  807 + <custom_distribution/>
  808 + <copies>1</copies>
  809 + <partitioning>
  810 + <method>none</method>
  811 + <schema_name/>
  812 + </partitioning>
  813 + <connection>bus_control_variable</connection>
  814 + <cache>N</cache>
  815 + <cache_load_all>N</cache_load_all>
  816 + <cache_size>0</cache_size>
  817 + <lookup>
  818 + <schema/>
  819 + <table>bsth_c_car_park</table>
  820 + <orderby/>
  821 + <fail_on_multiple>N</fail_on_multiple>
  822 + <eat_row_on_failure>N</eat_row_on_failure>
  823 + <key>
  824 + <name>tccname_</name>
  825 + <field>park_name</field>
  826 + <condition>&#x3d;</condition>
  827 + <name2/>
  828 + </key>
  829 + <value>
  830 + <name>id</name>
  831 + <rename>zdzid</rename>
  832 + <default/>
  833 + <type>Integer</type>
  834 + </value>
  835 + </lookup>
  836 + <cluster_schema/>
  837 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  838 + <xloc>887</xloc>
  839 + <yloc>608</yloc>
  840 + <draw>Y</draw>
  841 + </GUI>
  842 + </step>
  843 +
  844 + <step>
  845 + <name>&#x67e5;&#x627e;&#x51fa;&#x573a;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</name>
  846 + <type>DBLookup</type>
  847 + <description/>
  848 + <distribute>Y</distribute>
  849 + <custom_distribution/>
  850 + <copies>1</copies>
  851 + <partitioning>
  852 + <method>none</method>
  853 + <schema_name/>
  854 + </partitioning>
  855 + <connection>bus_control_variable</connection>
  856 + <cache>N</cache>
  857 + <cache_load_all>N</cache_load_all>
  858 + <cache_size>0</cache_size>
  859 + <lookup>
  860 + <schema/>
  861 + <table>bsth_c_stationroute</table>
  862 + <orderby/>
  863 + <fail_on_multiple>N</fail_on_multiple>
  864 + <eat_row_on_failure>N</eat_row_on_failure>
  865 + <key>
  866 + <name>xlid</name>
  867 + <field>line</field>
  868 + <condition>&#x3d;</condition>
  869 + <name2/>
  870 + </key>
  871 + <key>
  872 + <name>zdzname</name>
  873 + <field>station_name</field>
  874 + <condition>&#x3d;</condition>
  875 + <name2/>
  876 + </key>
  877 + <key>
  878 + <name>endZdtype</name>
  879 + <field>station_mark</field>
  880 + <condition>&#x3d;</condition>
  881 + <name2/>
  882 + </key>
  883 + <value>
  884 + <name>station</name>
  885 + <rename>zdzid</rename>
  886 + <default/>
  887 + <type>Integer</type>
  888 + </value>
  889 + <value>
  890 + <name>directions</name>
  891 + <rename>sxx</rename>
  892 + <default/>
  893 + <type>Integer</type>
  894 + </value>
  895 + </lookup>
  896 + <cluster_schema/>
  897 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  898 + <xloc>329</xloc>
  899 + <yloc>505</yloc>
  900 + <draw>Y</draw>
  901 + </GUI>
  902 + </step>
  903 +
  904 + <step>
  905 + <name>&#x67e5;&#x627e;&#x65f6;&#x523b;&#x8868;&#x57fa;&#x7840;&#x4fe1;&#x606f;&#x5173;&#x8054;</name>
  906 + <type>DBLookup</type>
  907 + <description/>
  908 + <distribute>Y</distribute>
  909 + <custom_distribution/>
  910 + <copies>1</copies>
  911 + <partitioning>
  912 + <method>none</method>
  913 + <schema_name/>
  914 + </partitioning>
  915 + <connection>bus_control_variable</connection>
  916 + <cache>N</cache>
  917 + <cache_load_all>N</cache_load_all>
  918 + <cache_size>0</cache_size>
  919 + <lookup>
  920 + <schema/>
  921 + <table>bsth_c_s_ttinfo</table>
  922 + <orderby/>
  923 + <fail_on_multiple>N</fail_on_multiple>
  924 + <eat_row_on_failure>N</eat_row_on_failure>
  925 + <key>
  926 + <name>xlid</name>
  927 + <field>xl</field>
  928 + <condition>&#x3d;</condition>
  929 + <name2/>
  930 + </key>
  931 + <key>
  932 + <name>ttinfoname_</name>
  933 + <field>name</field>
  934 + <condition>&#x3d;</condition>
  935 + <name2/>
  936 + </key>
  937 + <value>
  938 + <name>id</name>
  939 + <rename>ttid</rename>
  940 + <default/>
  941 + <type>Integer</type>
  942 + </value>
  943 + </lookup>
  944 + <cluster_schema/>
  945 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  946 + <xloc>1011</xloc>
  947 + <yloc>134</yloc>
  948 + <draw>Y</draw>
  949 + </GUI>
  950 + </step>
  951 +
  952 + <step>
  953 + <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x4e0a;&#x4e0b;&#x884c;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
  954 + <type>DBLookup</type>
  955 + <description/>
  956 + <distribute>Y</distribute>
  957 + <custom_distribution/>
  958 + <copies>1</copies>
  959 + <partitioning>
  960 + <method>none</method>
  961 + <schema_name/>
  962 + </partitioning>
  963 + <connection>bus_control_variable</connection>
  964 + <cache>N</cache>
  965 + <cache_load_all>N</cache_load_all>
  966 + <cache_size>0</cache_size>
  967 + <lookup>
  968 + <schema/>
  969 + <table>bsth_c_line_information</table>
  970 + <orderby/>
  971 + <fail_on_multiple>N</fail_on_multiple>
  972 + <eat_row_on_failure>N</eat_row_on_failure>
  973 + <key>
  974 + <name>xlid</name>
  975 + <field>line</field>
  976 + <condition>&#x3d;</condition>
  977 + <name2/>
  978 + </key>
  979 + <value>
  980 + <name>up_mileage</name>
  981 + <rename>up_mileage</rename>
  982 + <default/>
  983 + <type>Number</type>
  984 + </value>
  985 + <value>
  986 + <name>down_mileage</name>
  987 + <rename>down_mileage</rename>
  988 + <default/>
  989 + <type>Number</type>
  990 + </value>
  991 + <value>
  992 + <name>up_travel_time</name>
  993 + <rename>up_travel_time</rename>
  994 + <default/>
  995 + <type>Number</type>
  996 + </value>
  997 + <value>
  998 + <name>down_travel_time</name>
  999 + <rename>down_travel_time</rename>
  1000 + <default/>
  1001 + <type>Number</type>
  1002 + </value>
  1003 + </lookup>
  1004 + <cluster_schema/>
  1005 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1006 + <xloc>149</xloc>
  1007 + <yloc>581</yloc>
  1008 + <draw>Y</draw>
  1009 + </GUI>
  1010 + </step>
  1011 +
  1012 + <step>
  1013 + <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</name>
  1014 + <type>DBLookup</type>
  1015 + <description/>
  1016 + <distribute>Y</distribute>
  1017 + <custom_distribution/>
  1018 + <copies>1</copies>
  1019 + <partitioning>
  1020 + <method>none</method>
  1021 + <schema_name/>
  1022 + </partitioning>
  1023 + <connection>bus_control_variable</connection>
  1024 + <cache>N</cache>
  1025 + <cache_load_all>N</cache_load_all>
  1026 + <cache_size>0</cache_size>
  1027 + <lookup>
  1028 + <schema/>
  1029 + <table>bsth_c_line</table>
  1030 + <orderby/>
  1031 + <fail_on_multiple>N</fail_on_multiple>
  1032 + <eat_row_on_failure>N</eat_row_on_failure>
  1033 + <key>
  1034 + <name>xlname_</name>
  1035 + <field>name</field>
  1036 + <condition>&#x3d;</condition>
  1037 + <name2/>
  1038 + </key>
  1039 + <value>
  1040 + <name>id</name>
  1041 + <rename>xlid</rename>
  1042 + <default/>
  1043 + <type>Integer</type>
  1044 + </value>
  1045 + </lookup>
  1046 + <cluster_schema/>
  1047 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1048 + <xloc>1007</xloc>
  1049 + <yloc>43</yloc>
  1050 + <draw>Y</draw>
  1051 + </GUI>
  1052 + </step>
  1053 +
  1054 + <step>
  1055 + <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x51fa;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
  1056 + <type>DBLookup</type>
  1057 + <description/>
  1058 + <distribute>Y</distribute>
  1059 + <custom_distribution/>
  1060 + <copies>1</copies>
  1061 + <partitioning>
  1062 + <method>none</method>
  1063 + <schema_name/>
  1064 + </partitioning>
  1065 + <connection>bus_control_variable</connection>
  1066 + <cache>N</cache>
  1067 + <cache_load_all>N</cache_load_all>
  1068 + <cache_size>0</cache_size>
  1069 + <lookup>
  1070 + <schema/>
  1071 + <table>bsth_c_line_information</table>
  1072 + <orderby/>
  1073 + <fail_on_multiple>N</fail_on_multiple>
  1074 + <eat_row_on_failure>N</eat_row_on_failure>
  1075 + <key>
  1076 + <name>xlid</name>
  1077 + <field>line</field>
  1078 + <condition>&#x3d;</condition>
  1079 + <name2/>
  1080 + </key>
  1081 + <value>
  1082 + <name>out_mileage</name>
  1083 + <rename>out_mileage</rename>
  1084 + <default/>
  1085 + <type>Number</type>
  1086 + </value>
  1087 + <value>
  1088 + <name>out_time</name>
  1089 + <rename>out_time</rename>
  1090 + <default/>
  1091 + <type>Number</type>
  1092 + </value>
  1093 + </lookup>
  1094 + <cluster_schema/>
  1095 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1096 + <xloc>335</xloc>
  1097 + <yloc>763</yloc>
  1098 + <draw>Y</draw>
  1099 + </GUI>
  1100 + </step>
  1101 +
  1102 + <step>
  1103 + <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x8fdb;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
  1104 + <type>DBLookup</type>
  1105 + <description/>
  1106 + <distribute>Y</distribute>
  1107 + <custom_distribution/>
  1108 + <copies>1</copies>
  1109 + <partitioning>
  1110 + <method>none</method>
  1111 + <schema_name/>
  1112 + </partitioning>
  1113 + <connection>bus_control_variable</connection>
  1114 + <cache>N</cache>
  1115 + <cache_load_all>N</cache_load_all>
  1116 + <cache_size>0</cache_size>
  1117 + <lookup>
  1118 + <schema/>
  1119 + <table>bsth_c_line_information</table>
  1120 + <orderby/>
  1121 + <fail_on_multiple>N</fail_on_multiple>
  1122 + <eat_row_on_failure>N</eat_row_on_failure>
  1123 + <key>
  1124 + <name>xlid</name>
  1125 + <field>line</field>
  1126 + <condition>&#x3d;</condition>
  1127 + <name2/>
  1128 + </key>
  1129 + <value>
  1130 + <name>parade_mileage</name>
  1131 + <rename>parade_mileage</rename>
  1132 + <default/>
  1133 + <type>Number</type>
  1134 + </value>
  1135 + <value>
  1136 + <name>parade_time</name>
  1137 + <rename>parade_time</rename>
  1138 + <default/>
  1139 + <type>Number</type>
  1140 + </value>
  1141 + </lookup>
  1142 + <cluster_schema/>
  1143 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1144 + <xloc>550</xloc>
  1145 + <yloc>920</yloc>
  1146 + <draw>Y</draw>
  1147 + </GUI>
  1148 + </step>
  1149 +
  1150 + <step>
  1151 + <name>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;</name>
  1152 + <type>DBLookup</type>
  1153 + <description/>
  1154 + <distribute>Y</distribute>
  1155 + <custom_distribution/>
  1156 + <copies>1</copies>
  1157 + <partitioning>
  1158 + <method>none</method>
  1159 + <schema_name/>
  1160 + </partitioning>
  1161 + <connection>bus_control_variable</connection>
  1162 + <cache>N</cache>
  1163 + <cache_load_all>N</cache_load_all>
  1164 + <cache_size>0</cache_size>
  1165 + <lookup>
  1166 + <schema/>
  1167 + <table>bsth_c_stationroute</table>
  1168 + <orderby/>
  1169 + <fail_on_multiple>N</fail_on_multiple>
  1170 + <eat_row_on_failure>N</eat_row_on_failure>
  1171 + <key>
  1172 + <name>xlid</name>
  1173 + <field>line</field>
  1174 + <condition>&#x3d;</condition>
  1175 + <name2/>
  1176 + </key>
  1177 + <key>
  1178 + <name>sxx</name>
  1179 + <field>directions</field>
  1180 + <condition>&#x3d;</condition>
  1181 + <name2/>
  1182 + </key>
  1183 + <key>
  1184 + <name>endZdtype</name>
  1185 + <field>station_mark</field>
  1186 + <condition>&#x3d;</condition>
  1187 + <name2/>
  1188 + </key>
  1189 + <value>
  1190 + <name>station_name</name>
  1191 + <rename>zdzname</rename>
  1192 + <default/>
  1193 + <type>String</type>
  1194 + </value>
  1195 + <value>
  1196 + <name>station</name>
  1197 + <rename>zdzid</rename>
  1198 + <default/>
  1199 + <type>Integer</type>
  1200 + </value>
  1201 + </lookup>
  1202 + <cluster_schema/>
  1203 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1204 + <xloc>280</xloc>
  1205 + <yloc>404</yloc>
  1206 + <draw>Y</draw>
  1207 + </GUI>
  1208 + </step>
  1209 +
  1210 + <step>
  1211 + <name>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</name>
  1212 + <type>DBLookup</type>
  1213 + <description/>
  1214 + <distribute>Y</distribute>
  1215 + <custom_distribution/>
  1216 + <copies>1</copies>
  1217 + <partitioning>
  1218 + <method>none</method>
  1219 + <schema_name/>
  1220 + </partitioning>
  1221 + <connection>bus_control_variable</connection>
  1222 + <cache>N</cache>
  1223 + <cache_load_all>N</cache_load_all>
  1224 + <cache_size>0</cache_size>
  1225 + <lookup>
  1226 + <schema/>
  1227 + <table>bsth_c_stationroute</table>
  1228 + <orderby/>
  1229 + <fail_on_multiple>N</fail_on_multiple>
  1230 + <eat_row_on_failure>N</eat_row_on_failure>
  1231 + <key>
  1232 + <name>xlid</name>
  1233 + <field>line</field>
  1234 + <condition>&#x3d;</condition>
  1235 + <name2/>
  1236 + </key>
  1237 + <key>
  1238 + <name>qdzname</name>
  1239 + <field>station_name</field>
  1240 + <condition>&#x3d;</condition>
  1241 + <name2/>
  1242 + </key>
  1243 + <key>
  1244 + <name>sendZdtype</name>
  1245 + <field>station_mark</field>
  1246 + <condition>&#x3d;</condition>
  1247 + <name2/>
  1248 + </key>
  1249 + <value>
  1250 + <name>station</name>
  1251 + <rename>qdzid</rename>
  1252 + <default/>
  1253 + <type>Integer</type>
  1254 + </value>
  1255 + <value>
  1256 + <name>directions</name>
  1257 + <rename>sxx</rename>
  1258 + <default/>
  1259 + <type>Integer</type>
  1260 + </value>
  1261 + </lookup>
  1262 + <cluster_schema/>
  1263 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1264 + <xloc>430</xloc>
  1265 + <yloc>403</yloc>
  1266 + <draw>Y</draw>
  1267 + </GUI>
  1268 + </step>
  1269 +
  1270 + <step>
  1271 + <name>&#x67e5;&#x627e;&#x8def;&#x724c;&#x5173;&#x8054;</name>
  1272 + <type>DBLookup</type>
  1273 + <description/>
  1274 + <distribute>Y</distribute>
  1275 + <custom_distribution/>
  1276 + <copies>1</copies>
  1277 + <partitioning>
  1278 + <method>none</method>
  1279 + <schema_name/>
  1280 + </partitioning>
  1281 + <connection>bus_control_variable</connection>
  1282 + <cache>N</cache>
  1283 + <cache_load_all>N</cache_load_all>
  1284 + <cache_size>0</cache_size>
  1285 + <lookup>
  1286 + <schema/>
  1287 + <table>bsth_c_s_gbi</table>
  1288 + <orderby/>
  1289 + <fail_on_multiple>N</fail_on_multiple>
  1290 + <eat_row_on_failure>N</eat_row_on_failure>
  1291 + <key>
  1292 + <name>xlid</name>
  1293 + <field>xl</field>
  1294 + <condition>&#x3d;</condition>
  1295 + <name2/>
  1296 + </key>
  1297 + <key>
  1298 + <name>lp</name>
  1299 + <field>lp_name</field>
  1300 + <condition>&#x3d;</condition>
  1301 + <name2/>
  1302 + </key>
  1303 + <value>
  1304 + <name>id</name>
  1305 + <rename>lpid</rename>
  1306 + <default/>
  1307 + <type>Integer</type>
  1308 + </value>
  1309 + </lookup>
  1310 + <cluster_schema/>
  1311 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1312 + <xloc>1013</xloc>
  1313 + <yloc>265</yloc>
  1314 + <draw>Y</draw>
  1315 + </GUI>
  1316 + </step>
  1317 +
  1318 + <step>
  1319 + <name>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ebf;&#x8def;&#x65b9;&#x5411;</name>
  1320 + <type>DBLookup</type>
  1321 + <description/>
  1322 + <distribute>Y</distribute>
  1323 + <custom_distribution/>
  1324 + <copies>1</copies>
  1325 + <partitioning>
  1326 + <method>none</method>
  1327 + <schema_name/>
  1328 + </partitioning>
  1329 + <connection>bus_control_variable</connection>
  1330 + <cache>N</cache>
  1331 + <cache_load_all>N</cache_load_all>
  1332 + <cache_size>0</cache_size>
  1333 + <lookup>
  1334 + <schema/>
  1335 + <table>bsth_c_stationroute</table>
  1336 + <orderby/>
  1337 + <fail_on_multiple>N</fail_on_multiple>
  1338 + <eat_row_on_failure>N</eat_row_on_failure>
  1339 + <key>
  1340 + <name>xlid</name>
  1341 + <field>line</field>
  1342 + <condition>&#x3d;</condition>
  1343 + <name2/>
  1344 + </key>
  1345 + <key>
  1346 + <name>startZdtype_calcu</name>
  1347 + <field>station_mark</field>
  1348 + <condition>&#x3d;</condition>
  1349 + <name2/>
  1350 + </key>
  1351 + <key>
  1352 + <name>qdzname_calcu</name>
  1353 + <field>station_name</field>
  1354 + <condition>&#x3d;</condition>
  1355 + <name2/>
  1356 + </key>
  1357 + <value>
  1358 + <name>directions</name>
  1359 + <rename>sxx</rename>
  1360 + <default/>
  1361 + <type>String</type>
  1362 + </value>
  1363 + </lookup>
  1364 + <cluster_schema/>
  1365 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1366 + <xloc>548</xloc>
  1367 + <yloc>610</yloc>
  1368 + <draw>Y</draw>
  1369 + </GUI>
  1370 + </step>
  1371 +
  1372 + <step>
  1373 + <name>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ec8;&#x70b9;&#x7ad9;&#xff0c;&#x5e76;&#x4f5c;&#x4e3a;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x7684;&#x8d77;&#x70b9;&#x7ad9;</name>
  1374 + <type>DBLookup</type>
  1375 + <description/>
  1376 + <distribute>Y</distribute>
  1377 + <custom_distribution/>
  1378 + <copies>1</copies>
  1379 + <partitioning>
  1380 + <method>none</method>
  1381 + <schema_name/>
  1382 + </partitioning>
  1383 + <connection>bus_control_variable</connection>
  1384 + <cache>N</cache>
  1385 + <cache_load_all>N</cache_load_all>
  1386 + <cache_size>0</cache_size>
  1387 + <lookup>
  1388 + <schema/>
  1389 + <table>bsth_c_stationroute</table>
  1390 + <orderby/>
  1391 + <fail_on_multiple>N</fail_on_multiple>
  1392 + <eat_row_on_failure>N</eat_row_on_failure>
  1393 + <key>
  1394 + <name>xlid</name>
  1395 + <field>line</field>
  1396 + <condition>&#x3d;</condition>
  1397 + <name2/>
  1398 + </key>
  1399 + <key>
  1400 + <name>endZdtype_calcu</name>
  1401 + <field>station_mark</field>
  1402 + <condition>&#x3d;</condition>
  1403 + <name2/>
  1404 + </key>
  1405 + <key>
  1406 + <name>sxx</name>
  1407 + <field>directions</field>
  1408 + <condition>&#x3d;</condition>
  1409 + <name2/>
  1410 + </key>
  1411 + <value>
  1412 + <name>station</name>
  1413 + <rename>qdzid</rename>
  1414 + <default/>
  1415 + <type>Integer</type>
  1416 + </value>
  1417 + </lookup>
  1418 + <cluster_schema/>
  1419 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1420 + <xloc>550</xloc>
  1421 + <yloc>701</yloc>
  1422 + <draw>Y</draw>
  1423 + </GUI>
  1424 + </step>
  1425 +
  1426 + <step>
  1427 + <name>&#x6b63;&#x5e38;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</name>
  1428 + <type>ScriptValueMod</type>
  1429 + <description/>
  1430 + <distribute>Y</distribute>
  1431 + <custom_distribution/>
  1432 + <copies>1</copies>
  1433 + <partitioning>
  1434 + <method>none</method>
  1435 + <schema_name/>
  1436 + </partitioning>
  1437 + <compatible>N</compatible>
  1438 + <optimizationLevel>9</optimizationLevel>
  1439 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  1440 + <jsScript_name>Script 1</jsScript_name>
  1441 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x6dfb;&#x52a0;&#x7ad9;&#x70b9;&#x6807;&#x8bc6;&#xa;var sendZdtype &#x3d; &#x27;B&#x27;&#x3b;&#xa;var endZdtype &#x3d; &#x27;E&#x27;&#x3b;&#xa;</jsScript_script>
  1442 + </jsScript> </jsScripts> <fields> <field> <name>sendZdtype</name>
  1443 + <rename>sendZdtype</rename>
  1444 + <type>String</type>
  1445 + <length>-1</length>
  1446 + <precision>-1</precision>
  1447 + <replace>N</replace>
  1448 + </field> <field> <name>endZdtype</name>
  1449 + <rename>endZdtype</rename>
  1450 + <type>String</type>
  1451 + <length>-1</length>
  1452 + <precision>-1</precision>
  1453 + <replace>N</replace>
  1454 + </field> </fields> <cluster_schema/>
  1455 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1456 + <xloc>588</xloc>
  1457 + <yloc>403</yloc>
  1458 + <draw>Y</draw>
  1459 + </GUI>
  1460 + </step>
  1461 +
  1462 + <step>
  1463 + <name>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6570;&#x636e;</name>
  1464 + <type>Dummy</type>
  1465 + <description/>
  1466 + <distribute>Y</distribute>
  1467 + <custom_distribution/>
  1468 + <copies>1</copies>
  1469 + <partitioning>
  1470 + <method>none</method>
  1471 + <schema_name/>
  1472 + </partitioning>
  1473 + <cluster_schema/>
  1474 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1475 + <xloc>725</xloc>
  1476 + <yloc>404</yloc>
  1477 + <draw>Y</draw>
  1478 + </GUI>
  1479 + </step>
  1480 +
  1481 + <step>
  1482 + <name>&#x6dfb;&#x52a0;&#x53d1;&#x8f66;&#x987a;&#x5e8f;&#x53f7;</name>
  1483 + <type>GroupBy</type>
  1484 + <description/>
  1485 + <distribute>Y</distribute>
  1486 + <custom_distribution/>
  1487 + <copies>1</copies>
  1488 + <partitioning>
  1489 + <method>none</method>
  1490 + <schema_name/>
  1491 + </partitioning>
  1492 + <all_rows>Y</all_rows>
  1493 + <ignore_aggregate>N</ignore_aggregate>
  1494 + <field_ignore/>
  1495 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  1496 + <prefix>grp</prefix>
  1497 + <add_linenr>Y</add_linenr>
  1498 + <linenr_fieldname>fcno</linenr_fieldname>
  1499 + <give_back_row>N</give_back_row>
  1500 + <group>
  1501 + <field>
  1502 + <name>lp</name>
  1503 + </field>
  1504 + </group>
  1505 + <fields>
  1506 + </fields>
  1507 + <cluster_schema/>
  1508 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1509 + <xloc>442</xloc>
  1510 + <yloc>44</yloc>
  1511 + <draw>Y</draw>
  1512 + </GUI>
  1513 + </step>
  1514 +
  1515 + <step>
  1516 + <name>&#x6dfb;&#x52a0;&#x5bf9;&#x5e94;&#x73ed;&#x6b21;&#x6570;</name>
  1517 + <type>GroupBy</type>
  1518 + <description/>
  1519 + <distribute>Y</distribute>
  1520 + <custom_distribution/>
  1521 + <copies>1</copies>
  1522 + <partitioning>
  1523 + <method>none</method>
  1524 + <schema_name/>
  1525 + </partitioning>
  1526 + <all_rows>Y</all_rows>
  1527 + <ignore_aggregate>N</ignore_aggregate>
  1528 + <field_ignore/>
  1529 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  1530 + <prefix>grp</prefix>
  1531 + <add_linenr>Y</add_linenr>
  1532 + <linenr_fieldname>bcs</linenr_fieldname>
  1533 + <give_back_row>N</give_back_row>
  1534 + <group>
  1535 + </group>
  1536 + <fields>
  1537 + </fields>
  1538 + <cluster_schema/>
  1539 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1540 + <xloc>692</xloc>
  1541 + <yloc>44</yloc>
  1542 + <draw>Y</draw>
  1543 + </GUI>
  1544 + </step>
  1545 +
  1546 + <step>
  1547 + <name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</name>
  1548 + <type>Normaliser</type>
  1549 + <description/>
  1550 + <distribute>Y</distribute>
  1551 + <custom_distribution/>
  1552 + <copies>1</copies>
  1553 + <partitioning>
  1554 + <method>none</method>
  1555 + <schema_name/>
  1556 + </partitioning>
  1557 + <typefield>&#x7ad9;&#x70b9;&#x540d;&#x79f0;</typefield>
  1558 + <fields> </fields> <cluster_schema/>
  1559 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1560 + <xloc>248</xloc>
  1561 + <yloc>44</yloc>
  1562 + <draw>Y</draw>
  1563 + </GUI>
  1564 + </step>
  1565 +
  1566 + <step>
  1567 + <name>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178;</name>
  1568 + <type>ValueMapper</type>
  1569 + <description/>
  1570 + <distribute>Y</distribute>
  1571 + <custom_distribution/>
  1572 + <copies>1</copies>
  1573 + <partitioning>
  1574 + <method>none</method>
  1575 + <schema_name/>
  1576 + </partitioning>
  1577 + <field_to_use>bctype</field_to_use>
  1578 + <target_field>bctype_code</target_field>
  1579 + <non_match_default>&#x672a;&#x77e5;&#x7c7b;&#x578b;</non_match_default>
  1580 + <fields>
  1581 + <field>
  1582 + <source_value>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</source_value>
  1583 + <target_value>normal</target_value>
  1584 + </field>
  1585 + <field>
  1586 + <source_value>&#x51fa;&#x573a;</source_value>
  1587 + <target_value>out</target_value>
  1588 + </field>
  1589 + <field>
  1590 + <source_value>&#x8fdb;&#x573a;</source_value>
  1591 + <target_value>in</target_value>
  1592 + </field>
  1593 + <field>
  1594 + <source_value>&#x52a0;&#x6cb9;</source_value>
  1595 + <target_value>oil</target_value>
  1596 + </field>
  1597 + <field>
  1598 + <source_value>&#x4e34;&#x52a0;</source_value>
  1599 + <target_value>temp</target_value>
  1600 + </field>
  1601 + <field>
  1602 + <source_value>&#x533a;&#x95f4;</source_value>
  1603 + <target_value>region</target_value>
  1604 + </field>
  1605 + <field>
  1606 + <source_value>&#x653e;&#x7a7a;</source_value>
  1607 + <target_value>venting</target_value>
  1608 + </field>
  1609 + <field>
  1610 + <source_value>&#x653e;&#x5927;&#x7ad9;</source_value>
  1611 + <target_value>major</target_value>
  1612 + </field>
  1613 + </fields>
  1614 + <cluster_schema/>
  1615 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1616 + <xloc>149</xloc>
  1617 + <yloc>491</yloc>
  1618 + <draw>Y</draw>
  1619 + </GUI>
  1620 + </step>
  1621 +
  1622 + <step>
  1623 + <name>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 2</name>
  1624 + <type>ValueMapper</type>
  1625 + <description/>
  1626 + <distribute>Y</distribute>
  1627 + <custom_distribution/>
  1628 + <copies>1</copies>
  1629 + <partitioning>
  1630 + <method>none</method>
  1631 + <schema_name/>
  1632 + </partitioning>
  1633 + <field_to_use>bctype</field_to_use>
  1634 + <target_field>bctype_code</target_field>
  1635 + <non_match_default>&#x672a;&#x77e5;&#x7c7b;&#x578b;</non_match_default>
  1636 + <fields>
  1637 + <field>
  1638 + <source_value>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</source_value>
  1639 + <target_value>normal</target_value>
  1640 + </field>
  1641 + <field>
  1642 + <source_value>&#x51fa;&#x573a;</source_value>
  1643 + <target_value>out</target_value>
  1644 + </field>
  1645 + <field>
  1646 + <source_value>&#x8fdb;&#x573a;</source_value>
  1647 + <target_value>in</target_value>
  1648 + </field>
  1649 + <field>
  1650 + <source_value>&#x52a0;&#x6cb9;</source_value>
  1651 + <target_value>oil</target_value>
  1652 + </field>
  1653 + <field>
  1654 + <source_value>&#x4e34;&#x52a0;</source_value>
  1655 + <target_value>temp</target_value>
  1656 + </field>
  1657 + <field>
  1658 + <source_value>&#x533a;&#x95f4;</source_value>
  1659 + <target_value>region</target_value>
  1660 + </field>
  1661 + <field>
  1662 + <source_value>&#x653e;&#x7a7a;</source_value>
  1663 + <target_value>venting</target_value>
  1664 + </field>
  1665 + <field>
  1666 + <source_value>&#x653e;&#x5927;&#x7ad9;</source_value>
  1667 + <target_value>major</target_value>
  1668 + </field>
  1669 + </fields>
  1670 + <cluster_schema/>
  1671 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1672 + <xloc>333</xloc>
  1673 + <yloc>681</yloc>
  1674 + <draw>Y</draw>
  1675 + </GUI>
  1676 + </step>
  1677 +
  1678 + <step>
  1679 + <name>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 3</name>
  1680 + <type>ValueMapper</type>
  1681 + <description/>
  1682 + <distribute>Y</distribute>
  1683 + <custom_distribution/>
  1684 + <copies>1</copies>
  1685 + <partitioning>
  1686 + <method>none</method>
  1687 + <schema_name/>
  1688 + </partitioning>
  1689 + <field_to_use>bctype</field_to_use>
  1690 + <target_field>bctype_code</target_field>
  1691 + <non_match_default>&#x672a;&#x77e5;&#x7c7b;&#x578b;</non_match_default>
  1692 + <fields>
  1693 + <field>
  1694 + <source_value>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</source_value>
  1695 + <target_value>normal</target_value>
  1696 + </field>
  1697 + <field>
  1698 + <source_value>&#x51fa;&#x573a;</source_value>
  1699 + <target_value>out</target_value>
  1700 + </field>
  1701 + <field>
  1702 + <source_value>&#x8fdb;&#x573a;</source_value>
  1703 + <target_value>in</target_value>
  1704 + </field>
  1705 + <field>
  1706 + <source_value>&#x52a0;&#x6cb9;</source_value>
  1707 + <target_value>oil</target_value>
  1708 + </field>
  1709 + <field>
  1710 + <source_value>&#x4e34;&#x52a0;</source_value>
  1711 + <target_value>temp</target_value>
  1712 + </field>
  1713 + <field>
  1714 + <source_value>&#x533a;&#x95f4;</source_value>
  1715 + <target_value>region</target_value>
  1716 + </field>
  1717 + <field>
  1718 + <source_value>&#x653e;&#x7a7a;</source_value>
  1719 + <target_value>venting</target_value>
  1720 + </field>
  1721 + <field>
  1722 + <source_value>&#x653e;&#x5927;&#x7ad9;</source_value>
  1723 + <target_value>major</target_value>
  1724 + </field>
  1725 + </fields>
  1726 + <cluster_schema/>
  1727 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1728 + <xloc>548</xloc>
  1729 + <yloc>844</yloc>
  1730 + <draw>Y</draw>
  1731 + </GUI>
  1732 + </step>
  1733 +
  1734 + <step>
  1735 + <name>&#x7c7b;&#x578b;&#x4fee;&#x6b63;</name>
  1736 + <type>SelectValues</type>
  1737 + <description/>
  1738 + <distribute>Y</distribute>
  1739 + <custom_distribution/>
  1740 + <copies>1</copies>
  1741 + <partitioning>
  1742 + <method>none</method>
  1743 + <schema_name/>
  1744 + </partitioning>
  1745 + <fields> <select_unspecified>N</select_unspecified>
  1746 + <meta> <name>jhlc</name>
  1747 + <rename>jhlc</rename>
  1748 + <type>Number</type>
  1749 + <length>-2</length>
  1750 + <precision>-2</precision>
  1751 + <conversion_mask/>
  1752 + <date_format_lenient>false</date_format_lenient>
  1753 + <date_format_locale/>
  1754 + <date_format_timezone/>
  1755 + <lenient_string_to_number>false</lenient_string_to_number>
  1756 + <encoding/>
  1757 + <decimal_symbol/>
  1758 + <grouping_symbol/>
  1759 + <currency_symbol/>
  1760 + <storage_type/>
  1761 + </meta> <meta> <name>bcsj</name>
  1762 + <rename>bcsj</rename>
  1763 + <type>Integer</type>
  1764 + <length>-2</length>
  1765 + <precision>-2</precision>
  1766 + <conversion_mask/>
  1767 + <date_format_lenient>false</date_format_lenient>
  1768 + <date_format_locale/>
  1769 + <date_format_timezone/>
  1770 + <lenient_string_to_number>false</lenient_string_to_number>
  1771 + <encoding/>
  1772 + <decimal_symbol/>
  1773 + <grouping_symbol/>
  1774 + <currency_symbol/>
  1775 + <storage_type/>
  1776 + </meta> </fields> <cluster_schema/>
  1777 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1778 + <xloc>146</xloc>
  1779 + <yloc>768</yloc>
  1780 + <draw>Y</draw>
  1781 + </GUI>
  1782 + </step>
  1783 +
  1784 + <step>
  1785 + <name>&#x8ba1;&#x7b97;&#x73ed;&#x6b21;&#x7c7b;&#x578b;</name>
  1786 + <type>ValueMapper</type>
  1787 + <description/>
  1788 + <distribute>Y</distribute>
  1789 + <custom_distribution/>
  1790 + <copies>1</copies>
  1791 + <partitioning>
  1792 + <method>none</method>
  1793 + <schema_name/>
  1794 + </partitioning>
  1795 + <field_to_use>qdzname</field_to_use>
  1796 + <target_field>bctype</target_field>
  1797 + <non_match_default>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</non_match_default>
  1798 + <fields>
  1799 + <field>
  1800 + <source_value>&#x51fa;&#x573a;</source_value>
  1801 + <target_value>&#x51fa;&#x573a;</target_value>
  1802 + </field>
  1803 + <field>
  1804 + <source_value>&#x8fdb;&#x573a;</source_value>
  1805 + <target_value>&#x8fdb;&#x573a;</target_value>
  1806 + </field>
  1807 + </fields>
  1808 + <cluster_schema/>
  1809 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1810 + <xloc>1014</xloc>
  1811 + <yloc>401</yloc>
  1812 + <draw>Y</draw>
  1813 + </GUI>
  1814 + </step>
  1815 +
  1816 + <step>
  1817 + <name>&#x8bb0;&#x5f55;&#x5173;&#x8054; &#x28;&#x7b1b;&#x5361;&#x5c14;&#x8f93;&#x51fa;&#x29;</name>
  1818 + <type>JoinRows</type>
  1819 + <description/>
  1820 + <distribute>Y</distribute>
  1821 + <custom_distribution/>
  1822 + <copies>1</copies>
  1823 + <partitioning>
  1824 + <method>none</method>
  1825 + <schema_name/>
  1826 + </partitioning>
  1827 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  1828 + <prefix>out</prefix>
  1829 + <cache_size>500</cache_size>
  1830 + <main/>
  1831 + <compare>
  1832 +<condition>
  1833 + <negated>N</negated>
  1834 + <leftvalue/>
  1835 + <function>&#x3d;</function>
  1836 + <rightvalue/>
  1837 + </condition>
  1838 + </compare>
  1839 + <cluster_schema/>
  1840 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1841 + <xloc>310</xloc>
  1842 + <yloc>133</yloc>
  1843 + <draw>Y</draw>
  1844 + </GUI>
  1845 + </step>
  1846 +
  1847 + <step>
  1848 + <name>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;&#xff08;&#x53d1;&#x8f66;&#x65f6;&#x95f4;&#x4e3a;&#x7a7a;&#xff09;</name>
  1849 + <type>FilterRows</type>
  1850 + <description/>
  1851 + <distribute>Y</distribute>
  1852 + <custom_distribution/>
  1853 + <copies>1</copies>
  1854 + <partitioning>
  1855 + <method>none</method>
  1856 + <schema_name/>
  1857 + </partitioning>
  1858 +<send_true_to/>
  1859 +<send_false_to/>
  1860 + <compare>
  1861 +<condition>
  1862 + <negated>N</negated>
  1863 + <leftvalue>sendtime</leftvalue>
  1864 + <function>IS NOT NULL</function>
  1865 + <rightvalue/>
  1866 + </condition>
  1867 + </compare>
  1868 + <cluster_schema/>
  1869 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1870 + <xloc>571</xloc>
  1871 + <yloc>44</yloc>
  1872 + <draw>Y</draw>
  1873 + </GUI>
  1874 + </step>
  1875 +
  1876 + <step>
  1877 + <name>&#x8fdb;&#x573a;&#x73ed;&#x6b21;_&#x786e;&#x5b9a;&#x8d77;&#x70b9;&#x7ad9;&#x540d;&#x5b57;</name>
  1878 + <type>ScriptValueMod</type>
  1879 + <description/>
  1880 + <distribute>Y</distribute>
  1881 + <custom_distribution/>
  1882 + <copies>1</copies>
  1883 + <partitioning>
  1884 + <method>none</method>
  1885 + <schema_name/>
  1886 + </partitioning>
  1887 + <compatible>N</compatible>
  1888 + <optimizationLevel>9</optimizationLevel>
  1889 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  1890 + <jsScript_name>Script 1</jsScript_name>
  1891 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x6dfb;&#x52a0;&#x7ad9;&#x70b9;&#x6807;&#x8bc6;&#xa;var cc_groups &#x3d; qdzgroups.split&#x28;&#x22;,&#x22;&#x29;&#x3b; &#x2f;&#x2f; &#x6240;&#x6709;&#x73ed;&#x6b21;&#x8d77;&#x70b9;&#x7ad9;&#x6570;&#x7ec4;&#xa;var qdzname_calcu &#x3d; cc_groups&#x5b;gno - 2&#x5d;&#x3b; &#x2f;&#x2f; &#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x7684;&#x8d77;&#x70b9;&#x7ad9;&#x662f;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ec8;&#x70b9;&#x7ad9;&#xff0c;&#x8fd9;&#x91cc;&#x53ea;&#x6709;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x8d77;&#x70b9;&#x7ad9;&#xff0c;&#x8fd8;&#x9700;&#x8981;&#x8ba1;&#x7b97;&#xa;var startZdtype_calcu &#x3d; &#x27;B&#x27;&#x3b;&#xa;var endZdtype_calcu &#x3d; &#x27;E&#x27;&#x3b;</jsScript_script>
  1892 + </jsScript> </jsScripts> <fields> <field> <name>qdzname_calcu</name>
  1893 + <rename>qdzname_calcu</rename>
  1894 + <type>String</type>
  1895 + <length>-1</length>
  1896 + <precision>-1</precision>
  1897 + <replace>N</replace>
  1898 + </field> <field> <name>startZdtype_calcu</name>
  1899 + <rename>startZdtype_calcu</rename>
  1900 + <type>String</type>
  1901 + <length>-1</length>
  1902 + <precision>-1</precision>
  1903 + <replace>N</replace>
  1904 + </field> <field> <name>endZdtype_calcu</name>
  1905 + <rename>endZdtype_calcu</rename>
  1906 + <type>String</type>
  1907 + <length>-1</length>
  1908 + <precision>-1</precision>
  1909 + <replace>N</replace>
  1910 + </field> </fields> <cluster_schema/>
  1911 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1912 + <xloc>754</xloc>
  1913 + <yloc>610</yloc>
  1914 + <draw>Y</draw>
  1915 + </GUI>
  1916 + </step>
  1917 +
  1918 + <step>
  1919 + <name>&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</name>
  1920 + <type>Dummy</type>
  1921 + <description/>
  1922 + <distribute>Y</distribute>
  1923 + <custom_distribution/>
  1924 + <copies>1</copies>
  1925 + <partitioning>
  1926 + <method>none</method>
  1927 + <schema_name/>
  1928 + </partitioning>
  1929 + <cluster_schema/>
  1930 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1931 + <xloc>997</xloc>
  1932 + <yloc>606</yloc>
  1933 + <draw>Y</draw>
  1934 + </GUI>
  1935 + </step>
  1936 +
  1937 + <step_error_handling>
  1938 + </step_error_handling>
  1939 + <slave-step-copy-partition-distribution>
  1940 +</slave-step-copy-partition-distribution>
  1941 + <slave_transformation>N</slave_transformation>
  1942 +
  1943 +</transformation>
... ...
src/main/resources/datatools/ktrs/ttinfodetailMetaData.ktr 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>ttinfodetailMetaData</name>
  5 + <description/>
  6 + <extended_description/>
  7 + <trans_version/>
  8 + <trans_type>Normal</trans_type>
  9 + <trans_status>0</trans_status>
  10 + <directory>&#x2f;</directory>
  11 + <parameters>
  12 + <parameter>
  13 + <name>erroroutputdir</name>
  14 + <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project&#x2f;bsth_control_u_d_files&#x2f;erroroutput</default_value>
  15 + <description>ktr step&#x914d;&#x7f6e;&#x7684;&#x9519;&#x8bef;&#x8f93;&#x51fa;&#x76ee;&#x5f55;</description>
  16 + </parameter>
  17 + <parameter>
  18 + <name>excelfieldnames</name>
  19 + <default_value>&#x8def;&#x724c;,&#x51fa;&#x573a;,&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;1,&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;1,&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;2,&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;2,&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;3,&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;3,&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;4,&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;4,&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;5,&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;5,&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;6,&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;6,&#x8fdb;&#x573a;1,&#x51fa;&#x573a;1,&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;7,&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;7,&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;8,&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;8,&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;9,&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;9,&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;10,&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;10,&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;11,&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;11,&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;12,&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;12,&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;13,&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;13 ,&#x8fdb;&#x573a;</default_value>
  20 + <description>&#x65f6;&#x523b;&#x8868;excel&#x8f93;&#x5165;&#x5b57;&#x6bb5;&#x540d;&#xff0c;&#x4ee5;&#x9017;&#x53f7;&#x8fde;&#x63a5;</description>
  21 + </parameter>
  22 + <parameter>
  23 + <name>filepath</name>
  24 + <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project&#x2f;bsth_control_etl&#x2f;&#x95f5;&#x884c;&#x516c;&#x4ea4;&#x2f;85&#x8def;0328&#x5e73;&#x8868;-&#x6d4b;&#x8bd5;1-&#x65f6;&#x523b;&#x660e;&#x7ec6;.xls</default_value>
  25 + <description>&#x5f85;&#x5904;&#x7406;&#x5bfc;&#x5165;&#x7684;excel&#x6587;&#x4ef6;</description>
  26 + </parameter>
  27 + <parameter>
  28 + <name>injectktrfile</name>
  29 + <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project&#x2f;bsth_control&#x2f;src&#x2f;main&#x2f;resources&#x2f;datatools&#x2f;ktrs&#x2f;ttinfodetailDataInput.ktr</default_value>
  30 + <description>&#x6ce8;&#x5165;&#x5143;&#x6570;&#x636e;&#x7684;ktr&#x6587;&#x4ef6;</description>
  31 + </parameter>
  32 + <parameter>
  33 + <name>normalizefieldnames</name>
  34 + <default_value>&#x51fa;&#x573a;,&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;1,&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;1,&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;2,&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;2,&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;3,&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;3,&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;4,&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;4,&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;5,&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;5,&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;6,&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;6,&#x8fdb;&#x573a;1,&#x51fa;&#x573a;1,&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;7,&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;7,&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;8,&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;8,&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;9,&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;9,&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;10,&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;10,&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;11,&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;11,&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;12,&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;12,&#x9646;&#x5bb6;&#x5634;&#x5730;&#x94c1;&#x7ad9;13,&#x957f;&#x5c9b;&#x8def;&#x4e1c;&#x9646;&#x8def;13 ,&#x8fdb;&#x573a;</default_value>
  35 + <description>&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;&#x5b57;&#x6bb5;&#x540d;&#xff0c;&#x4ee5;&#x9017;&#x53f7;&#x8fde;&#x63a5;</description>
  36 + </parameter>
  37 + <parameter>
  38 + <name>tccname</name>
  39 + <default_value>&#x4e1c;&#x9756;&#x8def;&#x9ad8;&#x884c;&#x505c;&#x8f66;&#x573a;</default_value>
  40 + <description>&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</description>
  41 + </parameter>
  42 + <parameter>
  43 + <name>ttinfoname</name>
  44 + <default_value>85&#x8def;0328&#x5e73;&#x8868;</default_value>
  45 + <description>&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;</description>
  46 + </parameter>
  47 + <parameter>
  48 + <name>xlname</name>
  49 + <default_value>85&#x8def;</default_value>
  50 + <description>&#x7ebf;&#x8def;&#x540d;&#x79f0;</description>
  51 + </parameter>
  52 + </parameters>
  53 + <log>
  54 +<trans-log-table><connection/>
  55 +<schema/>
  56 +<table/>
  57 +<size_limit_lines/>
  58 +<interval/>
  59 +<timeout_days/>
  60 +<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>
  61 +<perf-log-table><connection/>
  62 +<schema/>
  63 +<table/>
  64 +<interval/>
  65 +<timeout_days/>
  66 +<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>
  67 +<channel-log-table><connection/>
  68 +<schema/>
  69 +<table/>
  70 +<timeout_days/>
  71 +<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>
  72 +<step-log-table><connection/>
  73 +<schema/>
  74 +<table/>
  75 +<timeout_days/>
  76 +<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>
  77 +<metrics-log-table><connection/>
  78 +<schema/>
  79 +<table/>
  80 +<timeout_days/>
  81 +<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>
  82 + </log>
  83 + <maxdate>
  84 + <connection/>
  85 + <table/>
  86 + <field/>
  87 + <offset>0.0</offset>
  88 + <maxdiff>0.0</maxdiff>
  89 + </maxdate>
  90 + <size_rowset>10000</size_rowset>
  91 + <sleep_time_empty>50</sleep_time_empty>
  92 + <sleep_time_full>50</sleep_time_full>
  93 + <unique_connections>N</unique_connections>
  94 + <feedback_shown>Y</feedback_shown>
  95 + <feedback_size>50000</feedback_size>
  96 + <using_thread_priorities>Y</using_thread_priorities>
  97 + <shared_objects_file/>
  98 + <capture_step_performance>N</capture_step_performance>
  99 + <step_performance_capturing_delay>1000</step_performance_capturing_delay>
  100 + <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
  101 + <dependencies>
  102 + </dependencies>
  103 + <partitionschemas>
  104 + </partitionschemas>
  105 + <slaveservers>
  106 + </slaveservers>
  107 + <clusterschemas>
  108 + </clusterschemas>
  109 + <created_user>-</created_user>
  110 + <created_date>2016&#x2f;07&#x2f;01 09&#x3a;55&#x3a;32.649</created_date>
  111 + <modified_user>-</modified_user>
  112 + <modified_date>2016&#x2f;07&#x2f;01 09&#x3a;55&#x3a;32.649</modified_date>
  113 + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
  114 + <is_key_private>N</is_key_private>
  115 + </info>
  116 + <notepads>
  117 + </notepads>
  118 + <connection>
  119 + <name>bus_control_variable</name>
  120 + <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
  121 + <type>MYSQL</type>
  122 + <access>Native</access>
  123 + <database>control</database>
  124 + <port>3306</port>
  125 + <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
  126 + <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
  127 + <servername/>
  128 + <data_tablespace/>
  129 + <index_tablespace/>
  130 + <attributes>
  131 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  132 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  133 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  134 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  135 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  136 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  137 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  138 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  139 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  140 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  141 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  142 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  143 + </attributes>
  144 + </connection>
  145 + <connection>
  146 + <name>bus_control_&#x516c;&#x53f8;_201</name>
  147 + <server>localhost</server>
  148 + <type>MYSQL</type>
  149 + <access>Native</access>
  150 + <database>control</database>
  151 + <port>3306</port>
  152 + <username>root</username>
  153 + <password>Encrypted </password>
  154 + <servername/>
  155 + <data_tablespace/>
  156 + <index_tablespace/>
  157 + <attributes>
  158 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  159 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  160 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  161 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  162 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  163 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  164 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  165 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  166 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  167 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  168 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  169 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  170 + </attributes>
  171 + </connection>
  172 + <connection>
  173 + <name>bus_control_&#x672c;&#x673a;</name>
  174 + <server>localhost</server>
  175 + <type>MYSQL</type>
  176 + <access>Native</access>
  177 + <database>control</database>
  178 + <port>3306</port>
  179 + <username>root</username>
  180 + <password>Encrypted </password>
  181 + <servername/>
  182 + <data_tablespace/>
  183 + <index_tablespace/>
  184 + <attributes>
  185 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  186 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  187 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  188 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  189 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  190 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  191 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  192 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  193 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  194 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  195 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  196 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  197 + </attributes>
  198 + </connection>
  199 + <connection>
  200 + <name>xlab_mysql_youle</name>
  201 + <server>101.231.124.8</server>
  202 + <type>MYSQL</type>
  203 + <access>Native</access>
  204 + <database>xlab_youle</database>
  205 + <port>45687</port>
  206 + <username>xlab-youle</username>
  207 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
  208 + <servername/>
  209 + <data_tablespace/>
  210 + <index_tablespace/>
  211 + <attributes>
  212 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  213 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  214 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  215 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  216 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  217 + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
  218 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  219 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  220 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  221 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  222 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  223 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  224 + </attributes>
  225 + </connection>
  226 + <connection>
  227 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  228 + <server>localhost</server>
  229 + <type>MYSQL</type>
  230 + <access>Native</access>
  231 + <database>xlab_youle</database>
  232 + <port>3306</port>
  233 + <username>root</username>
  234 + <password>Encrypted </password>
  235 + <servername/>
  236 + <data_tablespace/>
  237 + <index_tablespace/>
  238 + <attributes>
  239 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  240 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  241 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  242 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  243 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  244 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  245 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  246 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  247 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  248 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  249 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  250 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  251 + </attributes>
  252 + </connection>
  253 + <connection>
  254 + <name>xlab_youle</name>
  255 + <server/>
  256 + <type>MYSQL</type>
  257 + <access>JNDI</access>
  258 + <database>xlab_youle</database>
  259 + <port>1521</port>
  260 + <username/>
  261 + <password>Encrypted </password>
  262 + <servername/>
  263 + <data_tablespace/>
  264 + <index_tablespace/>
  265 + <attributes>
  266 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  267 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  268 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  269 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  270 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  271 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  272 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  273 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  274 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  275 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  276 + </attributes>
  277 + </connection>
  278 + <order>
  279 + <hop> <from>&#x83b7;&#x53d6;excel&#x6587;&#x4ef6;&#x540d;</from><to>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</to><enabled>Y</enabled> </hop>
  280 + <hop> <from>&#x83b7;&#x53d6;excel&#x5b57;&#x6bb5;&#x540d;&#x5b57;&#x7b26;&#x4e32;</from><to>&#x9017;&#x53f7;&#x5207;&#x5206;&#x6210;&#x5b57;&#x6bb5;&#x540d;</to><enabled>Y</enabled> </hop>
  281 + <hop> <from>&#x9017;&#x53f7;&#x5207;&#x5206;&#x6210;&#x5b57;&#x6bb5;&#x540d;</from><to>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
  282 + <hop> <from>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</from><to>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</to><enabled>Y</enabled> </hop>
  283 + <hop> <from>&#x83b7;&#x53d6;normalize&#x5b57;&#x6bb5;&#x540d;&#x5b57;&#x7b26;&#x4e32;</from><to>&#x9017;&#x53f7;&#x5207;&#x5206;&#x6210;&#x5b57;&#x6bb5;&#x540d; 2</to><enabled>Y</enabled> </hop>
  284 + <hop> <from>&#x9017;&#x53f7;&#x5207;&#x5206;&#x6210;&#x5b57;&#x6bb5;&#x540d; 2</from><to>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
  285 + <hop> <from>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</from><to>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</to><enabled>Y</enabled> </hop>
  286 + <hop> <from>&#x83b7;&#x53d6;&#x7ebf;&#x8def;&#x540d;&#x79f0;</from><to>&#x589e;&#x52a0;&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata</to><enabled>Y</enabled> </hop>
  287 + <hop> <from>&#x589e;&#x52a0;&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata</from><to>&#x66ff;&#x6362;&#x7ebf;&#x8def;&#x540d;&#x79f0;</to><enabled>Y</enabled> </hop>
  288 + <hop> <from>&#x66ff;&#x6362;&#x7ebf;&#x8def;&#x540d;&#x79f0;</from><to>&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</to><enabled>Y</enabled> </hop>
  289 + <hop> <from>&#x83b7;&#x53d6;&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;</from><to>&#x589e;&#x52a0;&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata</to><enabled>Y</enabled> </hop>
  290 + <hop> <from>&#x589e;&#x52a0;&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata</from><to>&#x66ff;&#x6362;&#x505c;&#x8f66;&#x5382;&#x540d;&#x5b57; </to><enabled>Y</enabled> </hop>
  291 + <hop> <from>&#x66ff;&#x6362;&#x505c;&#x8f66;&#x5382;&#x540d;&#x5b57; </from><to>&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</to><enabled>Y</enabled> </hop>
  292 + <hop> <from>&#x83b7;&#x53d6;&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;&#x540d;&#x79f0;</from><to>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;metadata</to><enabled>Y</enabled> </hop>
  293 + <hop> <from>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;metadata</from><to>&#x66ff;&#x6362;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;</to><enabled>Y</enabled> </hop>
  294 + <hop> <from>&#x66ff;&#x6362;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;</from><to>&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</to><enabled>Y</enabled> </hop>
  295 + <hop> <from>&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</from><to>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</to><enabled>Y</enabled> </hop>
  296 + <hop> <from>&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</from><to>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</to><enabled>Y</enabled> </hop>
  297 + <hop> <from>&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</from><to>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</to><enabled>Y</enabled> </hop>
  298 + <hop> <from>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</from><to>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</to><enabled>Y</enabled> </hop>
  299 + </order>
  300 + <step>
  301 + <name>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</name>
  302 + <type>MetaInject</type>
  303 + <description/>
  304 + <distribute>Y</distribute>
  305 + <custom_distribution/>
  306 + <copies>1</copies>
  307 + <partitioning>
  308 + <method>none</method>
  309 + <schema_name/>
  310 + </partitioning>
  311 + <specification_method>filename</specification_method>
  312 + <trans_object_id/>
  313 + <trans_name/>
  314 + <filename>&#x24;&#x7b;injectktrfile&#x7d;</filename>
  315 + <directory_path/>
  316 + <source_step/>
  317 + <source_output_fields> </source_output_fields> <target_file/>
  318 + <no_execution>N</no_execution>
  319 + <stream_source_step/>
  320 + <stream_target_step/>
  321 + <mappings> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
  322 + <target_attribute_key>FORMAT</target_attribute_key>
  323 + <target_detail>Y</target_detail>
  324 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
  325 + <source_field>format</source_field>
  326 + </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
  327 + <target_attribute_key>REPEAT</target_attribute_key>
  328 + <target_detail>Y</target_detail>
  329 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
  330 + <source_field>repeat</source_field>
  331 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  332 + <target_attribute_key>TRIM_TYPE</target_attribute_key>
  333 + <target_detail>Y</target_detail>
  334 + <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
  335 + <source_field>trim_type</source_field>
  336 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  337 + <target_attribute_key>FILENAME</target_attribute_key>
  338 + <target_detail>Y</target_detail>
  339 + <source_step>&#x83b7;&#x53d6;excel&#x6587;&#x4ef6;&#x540d;</source_step>
  340 + <source_field>filepath_</source_field>
  341 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  342 + <target_attribute_key>PRECISION</target_attribute_key>
  343 + <target_detail>Y</target_detail>
  344 + <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
  345 + <source_field>precision</source_field>
  346 + </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
  347 + <target_attribute_key>TYPE</target_attribute_key>
  348 + <target_detail>Y</target_detail>
  349 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
  350 + <source_field>type</source_field>
  351 + </mapping> <mapping> <target_step_name>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;&#xff0c;&#x7ebf;&#x8def;&#x540d;&#x5b57;&#xff0c;&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</target_step_name>
  352 + <target_attribute_key>DATA_VALUE</target_attribute_key>
  353 + <target_detail>Y</target_detail>
  354 + <source_step>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</source_step>
  355 + <source_field>col_value</source_field>
  356 + </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
  357 + <target_attribute_key>LENGTH</target_attribute_key>
  358 + <target_detail>Y</target_detail>
  359 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
  360 + <source_field>length</source_field>
  361 + </mapping> <mapping> <target_step_name>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;&#xff0c;&#x7ebf;&#x8def;&#x540d;&#x5b57;&#xff0c;&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</target_step_name>
  362 + <target_attribute_key>TYPE</target_attribute_key>
  363 + <target_detail>Y</target_detail>
  364 + <source_step>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</source_step>
  365 + <source_field>col_type</source_field>
  366 + </mapping> <mapping> <target_step_name>&#x884c;&#x8f6c;&#x5217;</target_step_name>
  367 + <target_attribute_key>NAME</target_attribute_key>
  368 + <target_detail>Y</target_detail>
  369 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</source_step>
  370 + <source_field>fieldName</source_field>
  371 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  372 + <target_attribute_key>NAME</target_attribute_key>
  373 + <target_detail>Y</target_detail>
  374 + <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
  375 + <source_field>fieldname</source_field>
  376 + </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name>
  377 + <target_attribute_key>NAME</target_attribute_key>
  378 + <target_detail>Y</target_detail>
  379 + <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step>
  380 + <source_field>nfieldname</source_field>
  381 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  382 + <target_attribute_key>LENGTH</target_attribute_key>
  383 + <target_detail>Y</target_detail>
  384 + <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
  385 + <source_field>length</source_field>
  386 + </mapping> <mapping> <target_step_name>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;&#xff0c;&#x7ebf;&#x8def;&#x540d;&#x5b57;&#xff0c;&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</target_step_name>
  387 + <target_attribute_key>NAME</target_attribute_key>
  388 + <target_detail>Y</target_detail>
  389 + <source_step>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</source_step>
  390 + <source_field>col_name</source_field>
  391 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  392 + <target_attribute_key>TYPE</target_attribute_key>
  393 + <target_detail>Y</target_detail>
  394 + <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
  395 + <source_field>fieldtype</source_field>
  396 + </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
  397 + <target_attribute_key>NAME</target_attribute_key>
  398 + <target_detail>Y</target_detail>
  399 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
  400 + <source_field>fieldName</source_field>
  401 + </mapping> <mapping> <target_step_name>&#x884c;&#x8f6c;&#x5217;</target_step_name>
  402 + <target_attribute_key>VALUE</target_attribute_key>
  403 + <target_detail>Y</target_detail>
  404 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</source_step>
  405 + <source_field>fieldName</source_field>
  406 + </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
  407 + <target_attribute_key>TRIM_TYPE</target_attribute_key>
  408 + <target_detail>Y</target_detail>
  409 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
  410 + <source_field>trim_type</source_field>
  411 + </mapping> <mapping> <target_step_name>&#x884c;&#x8f6c;&#x5217;</target_step_name>
  412 + <target_attribute_key>NORMALISED</target_attribute_key>
  413 + <target_detail>Y</target_detail>
  414 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</source_step>
  415 + <source_field>value</source_field>
  416 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  417 + <target_attribute_key>REPEAT</target_attribute_key>
  418 + <target_detail>Y</target_detail>
  419 + <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
  420 + <source_field>repeat</source_field>
  421 + </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name>
  422 + <target_attribute_key>NORMALISED</target_attribute_key>
  423 + <target_detail>Y</target_detail>
  424 + <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step>
  425 + <source_field>valuefield</source_field>
  426 + </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name>
  427 + <target_attribute_key>VALUE</target_attribute_key>
  428 + <target_detail>Y</target_detail>
  429 + <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step>
  430 + <source_field>nfieldname</source_field>
  431 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  432 + <target_attribute_key>FORMAT</target_attribute_key>
  433 + <target_detail>Y</target_detail>
  434 + <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
  435 + <source_field>format</source_field>
  436 + </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
  437 + <target_attribute_key>PRECISION</target_attribute_key>
  438 + <target_detail>Y</target_detail>
  439 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
  440 + <source_field>precision</source_field>
  441 + </mapping> </mappings> <cluster_schema/>
  442 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  443 + <xloc>695</xloc>
  444 + <yloc>177</yloc>
  445 + <draw>Y</draw>
  446 + </GUI>
  447 + </step>
  448 +
  449 + <step>
  450 + <name>&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</name>
  451 + <type>SelectValues</type>
  452 + <description/>
  453 + <distribute>Y</distribute>
  454 + <custom_distribution/>
  455 + <copies>1</copies>
  456 + <partitioning>
  457 + <method>none</method>
  458 + <schema_name/>
  459 + </partitioning>
  460 + <fields> <field> <name>col_name</name>
  461 + <rename/>
  462 + <length>-2</length>
  463 + <precision>-2</precision>
  464 + </field> <field> <name>col_type</name>
  465 + <rename/>
  466 + <length>-2</length>
  467 + <precision>-2</precision>
  468 + </field> <field> <name>col_value</name>
  469 + <rename/>
  470 + <length>-2</length>
  471 + <precision>-2</precision>
  472 + </field> <select_unspecified>N</select_unspecified>
  473 + </fields> <cluster_schema/>
  474 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  475 + <xloc>490</xloc>
  476 + <yloc>429</yloc>
  477 + <draw>Y</draw>
  478 + </GUI>
  479 + </step>
  480 +
  481 + <step>
  482 + <name>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</name>
  483 + <type>Dummy</type>
  484 + <description/>
  485 + <distribute>Y</distribute>
  486 + <custom_distribution/>
  487 + <copies>1</copies>
  488 + <partitioning>
  489 + <method>none</method>
  490 + <schema_name/>
  491 + </partitioning>
  492 + <cluster_schema/>
  493 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  494 + <xloc>702</xloc>
  495 + <yloc>383</yloc>
  496 + <draw>Y</draw>
  497 + </GUI>
  498 + </step>
  499 +
  500 + <step>
  501 + <name>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</name>
  502 + <type>Constant</type>
  503 + <description/>
  504 + <distribute>Y</distribute>
  505 + <custom_distribution/>
  506 + <copies>1</copies>
  507 + <partitioning>
  508 + <method>none</method>
  509 + <schema_name/>
  510 + </partitioning>
  511 + <fields>
  512 + <field>
  513 + <name>fieldtype</name>
  514 + <type>String</type>
  515 + <format/>
  516 + <currency/>
  517 + <decimal/>
  518 + <group/>
  519 + <nullif>String</nullif>
  520 + <length>-1</length>
  521 + <precision>-1</precision>
  522 + <set_empty_string>N</set_empty_string>
  523 + </field>
  524 + <field>
  525 + <name>length</name>
  526 + <type>String</type>
  527 + <format/>
  528 + <currency/>
  529 + <decimal/>
  530 + <group/>
  531 + <nullif>-1</nullif>
  532 + <length>-1</length>
  533 + <precision>-1</precision>
  534 + <set_empty_string>N</set_empty_string>
  535 + </field>
  536 + <field>
  537 + <name>precision</name>
  538 + <type>String</type>
  539 + <format/>
  540 + <currency/>
  541 + <decimal/>
  542 + <group/>
  543 + <nullif>-1</nullif>
  544 + <length>-1</length>
  545 + <precision>-1</precision>
  546 + <set_empty_string>N</set_empty_string>
  547 + </field>
  548 + <field>
  549 + <name>trim_type</name>
  550 + <type>String</type>
  551 + <format/>
  552 + <currency/>
  553 + <decimal/>
  554 + <group/>
  555 + <nullif>none</nullif>
  556 + <length>-1</length>
  557 + <precision>-1</precision>
  558 + <set_empty_string>N</set_empty_string>
  559 + </field>
  560 + <field>
  561 + <name>repeat</name>
  562 + <type>String</type>
  563 + <format/>
  564 + <currency/>
  565 + <decimal/>
  566 + <group/>
  567 + <nullif>N</nullif>
  568 + <length>-1</length>
  569 + <precision>-1</precision>
  570 + <set_empty_string>N</set_empty_string>
  571 + </field>
  572 + <field>
  573 + <name>format</name>
  574 + <type>String</type>
  575 + <format/>
  576 + <currency/>
  577 + <decimal/>
  578 + <group/>
  579 + <nullif>&#x23;</nullif>
  580 + <length>-1</length>
  581 + <precision>-1</precision>
  582 + <set_empty_string>N</set_empty_string>
  583 + </field>
  584 + </fields>
  585 + <cluster_schema/>
  586 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  587 + <xloc>441</xloc>
  588 + <yloc>172</yloc>
  589 + <draw>Y</draw>
  590 + </GUI>
  591 + </step>
  592 +
  593 + <step>
  594 + <name>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</name>
  595 + <type>Constant</type>
  596 + <description/>
  597 + <distribute>Y</distribute>
  598 + <custom_distribution/>
  599 + <copies>1</copies>
  600 + <partitioning>
  601 + <method>none</method>
  602 + <schema_name/>
  603 + </partitioning>
  604 + <fields>
  605 + <field>
  606 + <name>valuefield</name>
  607 + <type>String</type>
  608 + <format/>
  609 + <currency/>
  610 + <decimal/>
  611 + <group/>
  612 + <nullif>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</nullif>
  613 + <length>-1</length>
  614 + <precision>-1</precision>
  615 + <set_empty_string>N</set_empty_string>
  616 + </field>
  617 + </fields>
  618 + <cluster_schema/>
  619 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  620 + <xloc>447</xloc>
  621 + <yloc>257</yloc>
  622 + <draw>Y</draw>
  623 + </GUI>
  624 + </step>
  625 +
  626 + <step>
  627 + <name>&#x589e;&#x52a0;&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata</name>
  628 + <type>Constant</type>
  629 + <description/>
  630 + <distribute>Y</distribute>
  631 + <custom_distribution/>
  632 + <copies>1</copies>
  633 + <partitioning>
  634 + <method>none</method>
  635 + <schema_name/>
  636 + </partitioning>
  637 + <fields>
  638 + <field>
  639 + <name>col_name</name>
  640 + <type>String</type>
  641 + <format/>
  642 + <currency/>
  643 + <decimal/>
  644 + <group/>
  645 + <nullif>tccname_</nullif>
  646 + <length>-1</length>
  647 + <precision>-1</precision>
  648 + <set_empty_string>N</set_empty_string>
  649 + </field>
  650 + <field>
  651 + <name>col_type</name>
  652 + <type>String</type>
  653 + <format/>
  654 + <currency/>
  655 + <decimal/>
  656 + <group/>
  657 + <nullif>String</nullif>
  658 + <length>-1</length>
  659 + <precision>-1</precision>
  660 + <set_empty_string>N</set_empty_string>
  661 + </field>
  662 + <field>
  663 + <name>col_value</name>
  664 + <type>String</type>
  665 + <format/>
  666 + <currency/>
  667 + <decimal/>
  668 + <group/>
  669 + <nullif>replace</nullif>
  670 + <length>-1</length>
  671 + <precision>-1</precision>
  672 + <set_empty_string>N</set_empty_string>
  673 + </field>
  674 + </fields>
  675 + <cluster_schema/>
  676 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  677 + <xloc>208</xloc>
  678 + <yloc>428</yloc>
  679 + <draw>Y</draw>
  680 + </GUI>
  681 + </step>
  682 +
  683 + <step>
  684 + <name>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;metadata</name>
  685 + <type>Constant</type>
  686 + <description/>
  687 + <distribute>Y</distribute>
  688 + <custom_distribution/>
  689 + <copies>1</copies>
  690 + <partitioning>
  691 + <method>none</method>
  692 + <schema_name/>
  693 + </partitioning>
  694 + <fields>
  695 + <field>
  696 + <name>col_name</name>
  697 + <type>String</type>
  698 + <format/>
  699 + <currency/>
  700 + <decimal/>
  701 + <group/>
  702 + <nullif>ttinfoname_</nullif>
  703 + <length>-1</length>
  704 + <precision>-1</precision>
  705 + <set_empty_string>N</set_empty_string>
  706 + </field>
  707 + <field>
  708 + <name>col_type</name>
  709 + <type>String</type>
  710 + <format/>
  711 + <currency/>
  712 + <decimal/>
  713 + <group/>
  714 + <nullif>String</nullif>
  715 + <length>-1</length>
  716 + <precision>-1</precision>
  717 + <set_empty_string>N</set_empty_string>
  718 + </field>
  719 + <field>
  720 + <name>col_value</name>
  721 + <type>String</type>
  722 + <format/>
  723 + <currency/>
  724 + <decimal/>
  725 + <group/>
  726 + <nullif>replace</nullif>
  727 + <length>-1</length>
  728 + <precision>-1</precision>
  729 + <set_empty_string>N</set_empty_string>
  730 + </field>
  731 + </fields>
  732 + <cluster_schema/>
  733 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  734 + <xloc>216</xloc>
  735 + <yloc>508</yloc>
  736 + <draw>Y</draw>
  737 + </GUI>
  738 + </step>
  739 +
  740 + <step>
  741 + <name>&#x589e;&#x52a0;&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata</name>
  742 + <type>Constant</type>
  743 + <description/>
  744 + <distribute>Y</distribute>
  745 + <custom_distribution/>
  746 + <copies>1</copies>
  747 + <partitioning>
  748 + <method>none</method>
  749 + <schema_name/>
  750 + </partitioning>
  751 + <fields>
  752 + <field>
  753 + <name>col_name</name>
  754 + <type>String</type>
  755 + <format/>
  756 + <currency/>
  757 + <decimal/>
  758 + <group/>
  759 + <nullif>xlname_</nullif>
  760 + <length>-1</length>
  761 + <precision>-1</precision>
  762 + <set_empty_string>N</set_empty_string>
  763 + </field>
  764 + <field>
  765 + <name>col_type</name>
  766 + <type>String</type>
  767 + <format/>
  768 + <currency/>
  769 + <decimal/>
  770 + <group/>
  771 + <nullif>String</nullif>
  772 + <length>-1</length>
  773 + <precision>-1</precision>
  774 + <set_empty_string>N</set_empty_string>
  775 + </field>
  776 + <field>
  777 + <name>col_value</name>
  778 + <type>String</type>
  779 + <format/>
  780 + <currency/>
  781 + <decimal/>
  782 + <group/>
  783 + <nullif>replace</nullif>
  784 + <length>-1</length>
  785 + <precision>-1</precision>
  786 + <set_empty_string>N</set_empty_string>
  787 + </field>
  788 + </fields>
  789 + <cluster_schema/>
  790 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  791 + <xloc>202</xloc>
  792 + <yloc>351</yloc>
  793 + <draw>Y</draw>
  794 + </GUI>
  795 + </step>
  796 +
  797 + <step>
  798 + <name>&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</name>
  799 + <type>SelectValues</type>
  800 + <description/>
  801 + <distribute>Y</distribute>
  802 + <custom_distribution/>
  803 + <copies>1</copies>
  804 + <partitioning>
  805 + <method>none</method>
  806 + <schema_name/>
  807 + </partitioning>
  808 + <fields> <field> <name>col_name</name>
  809 + <rename/>
  810 + <length>-2</length>
  811 + <precision>-2</precision>
  812 + </field> <field> <name>col_type</name>
  813 + <rename/>
  814 + <length>-2</length>
  815 + <precision>-2</precision>
  816 + </field> <field> <name>col_value</name>
  817 + <rename/>
  818 + <length>-2</length>
  819 + <precision>-2</precision>
  820 + </field> <select_unspecified>N</select_unspecified>
  821 + </fields> <cluster_schema/>
  822 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  823 + <xloc>496</xloc>
  824 + <yloc>508</yloc>
  825 + <draw>Y</draw>
  826 + </GUI>
  827 + </step>
  828 +
  829 + <step>
  830 + <name>&#x66ff;&#x6362;&#x505c;&#x8f66;&#x5382;&#x540d;&#x5b57; </name>
  831 + <type>SetValueField</type>
  832 + <description/>
  833 + <distribute>Y</distribute>
  834 + <custom_distribution/>
  835 + <copies>1</copies>
  836 + <partitioning>
  837 + <method>none</method>
  838 + <schema_name/>
  839 + </partitioning>
  840 + <fields>
  841 + <field>
  842 + <name>col_value</name>
  843 + <replaceby>tccname_</replaceby>
  844 + </field>
  845 + </fields>
  846 + <cluster_schema/>
  847 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  848 + <xloc>345</xloc>
  849 + <yloc>430</yloc>
  850 + <draw>Y</draw>
  851 + </GUI>
  852 + </step>
  853 +
  854 + <step>
  855 + <name>&#x66ff;&#x6362;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;</name>
  856 + <type>SetValueField</type>
  857 + <description/>
  858 + <distribute>Y</distribute>
  859 + <custom_distribution/>
  860 + <copies>1</copies>
  861 + <partitioning>
  862 + <method>none</method>
  863 + <schema_name/>
  864 + </partitioning>
  865 + <fields>
  866 + <field>
  867 + <name>col_value</name>
  868 + <replaceby>ttinfoname_</replaceby>
  869 + </field>
  870 + </fields>
  871 + <cluster_schema/>
  872 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  873 + <xloc>354</xloc>
  874 + <yloc>509</yloc>
  875 + <draw>Y</draw>
  876 + </GUI>
  877 + </step>
  878 +
  879 + <step>
  880 + <name>&#x66ff;&#x6362;&#x7ebf;&#x8def;&#x540d;&#x79f0;</name>
  881 + <type>SetValueField</type>
  882 + <description/>
  883 + <distribute>Y</distribute>
  884 + <custom_distribution/>
  885 + <copies>1</copies>
  886 + <partitioning>
  887 + <method>none</method>
  888 + <schema_name/>
  889 + </partitioning>
  890 + <fields>
  891 + <field>
  892 + <name>col_value</name>
  893 + <replaceby>xlname_</replaceby>
  894 + </field>
  895 + </fields>
  896 + <cluster_schema/>
  897 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  898 + <xloc>340</xloc>
  899 + <yloc>352</yloc>
  900 + <draw>Y</draw>
  901 + </GUI>
  902 + </step>
  903 +
  904 + <step>
  905 + <name>&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</name>
  906 + <type>SelectValues</type>
  907 + <description/>
  908 + <distribute>Y</distribute>
  909 + <custom_distribution/>
  910 + <copies>1</copies>
  911 + <partitioning>
  912 + <method>none</method>
  913 + <schema_name/>
  914 + </partitioning>
  915 + <fields> <field> <name>col_name</name>
  916 + <rename/>
  917 + <length>-2</length>
  918 + <precision>-2</precision>
  919 + </field> <field> <name>col_type</name>
  920 + <rename/>
  921 + <length>-2</length>
  922 + <precision>-2</precision>
  923 + </field> <field> <name>col_value</name>
  924 + <rename/>
  925 + <length>-2</length>
  926 + <precision>-2</precision>
  927 + </field> <select_unspecified>N</select_unspecified>
  928 + </fields> <cluster_schema/>
  929 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  930 + <xloc>487</xloc>
  931 + <yloc>353</yloc>
  932 + <draw>Y</draw>
  933 + </GUI>
  934 + </step>
  935 +
  936 + <step>
  937 + <name>&#x83b7;&#x53d6;excel&#x5b57;&#x6bb5;&#x540d;&#x5b57;&#x7b26;&#x4e32;</name>
  938 + <type>GetVariable</type>
  939 + <description/>
  940 + <distribute>Y</distribute>
  941 + <custom_distribution/>
  942 + <copies>1</copies>
  943 + <partitioning>
  944 + <method>none</method>
  945 + <schema_name/>
  946 + </partitioning>
  947 + <fields>
  948 + <field>
  949 + <name>fieldnames</name>
  950 + <variable>&#x24;&#x7b;excelfieldnames&#x7d;</variable>
  951 + <type>String</type>
  952 + <format/>
  953 + <currency/>
  954 + <decimal/>
  955 + <group/>
  956 + <length>-1</length>
  957 + <precision>-1</precision>
  958 + <trim_type>none</trim_type>
  959 + </field>
  960 + </fields>
  961 + <cluster_schema/>
  962 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  963 + <xloc>71</xloc>
  964 + <yloc>163</yloc>
  965 + <draw>Y</draw>
  966 + </GUI>
  967 + </step>
  968 +
  969 + <step>
  970 + <name>&#x83b7;&#x53d6;excel&#x6587;&#x4ef6;&#x540d;</name>
  971 + <type>GetVariable</type>
  972 + <description/>
  973 + <distribute>Y</distribute>
  974 + <custom_distribution/>
  975 + <copies>1</copies>
  976 + <partitioning>
  977 + <method>none</method>
  978 + <schema_name/>
  979 + </partitioning>
  980 + <fields>
  981 + <field>
  982 + <name>filepath_</name>
  983 + <variable>&#x24;&#x7b;filepath&#x7d;</variable>
  984 + <type>String</type>
  985 + <format/>
  986 + <currency/>
  987 + <decimal/>
  988 + <group/>
  989 + <length>-1</length>
  990 + <precision>-1</precision>
  991 + <trim_type>none</trim_type>
  992 + </field>
  993 + <field>
  994 + <name>erroroutputdir_</name>
  995 + <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
  996 + <type>String</type>
  997 + <format/>
  998 + <currency/>
  999 + <decimal/>
  1000 + <group/>
  1001 + <length>-1</length>
  1002 + <precision>-1</precision>
  1003 + <trim_type>none</trim_type>
  1004 + </field>
  1005 + </fields>
  1006 + <cluster_schema/>
  1007 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1008 + <xloc>73</xloc>
  1009 + <yloc>50</yloc>
  1010 + <draw>Y</draw>
  1011 + </GUI>
  1012 + </step>
  1013 +
  1014 + <step>
  1015 + <name>&#x83b7;&#x53d6;normalize&#x5b57;&#x6bb5;&#x540d;&#x5b57;&#x7b26;&#x4e32;</name>
  1016 + <type>GetVariable</type>
  1017 + <description/>
  1018 + <distribute>Y</distribute>
  1019 + <custom_distribution/>
  1020 + <copies>1</copies>
  1021 + <partitioning>
  1022 + <method>none</method>
  1023 + <schema_name/>
  1024 + </partitioning>
  1025 + <fields>
  1026 + <field>
  1027 + <name>normalizefieldnames_</name>
  1028 + <variable>&#x24;&#x7b;normalizefieldnames&#x7d;</variable>
  1029 + <type>String</type>
  1030 + <format/>
  1031 + <currency/>
  1032 + <decimal/>
  1033 + <group/>
  1034 + <length>-1</length>
  1035 + <precision>-1</precision>
  1036 + <trim_type>none</trim_type>
  1037 + </field>
  1038 + </fields>
  1039 + <cluster_schema/>
  1040 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1041 + <xloc>80</xloc>
  1042 + <yloc>261</yloc>
  1043 + <draw>Y</draw>
  1044 + </GUI>
  1045 + </step>
  1046 +
  1047 + <step>
  1048 + <name>&#x83b7;&#x53d6;&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;</name>
  1049 + <type>GetVariable</type>
  1050 + <description/>
  1051 + <distribute>Y</distribute>
  1052 + <custom_distribution/>
  1053 + <copies>1</copies>
  1054 + <partitioning>
  1055 + <method>none</method>
  1056 + <schema_name/>
  1057 + </partitioning>
  1058 + <fields>
  1059 + <field>
  1060 + <name>tccname_</name>
  1061 + <variable>&#x24;&#x7b;tccname&#x7d;</variable>
  1062 + <type>String</type>
  1063 + <format/>
  1064 + <currency/>
  1065 + <decimal/>
  1066 + <group/>
  1067 + <length>-1</length>
  1068 + <precision>-1</precision>
  1069 + <trim_type>none</trim_type>
  1070 + </field>
  1071 + </fields>
  1072 + <cluster_schema/>
  1073 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1074 + <xloc>80</xloc>
  1075 + <yloc>430</yloc>
  1076 + <draw>Y</draw>
  1077 + </GUI>
  1078 + </step>
  1079 +
  1080 + <step>
  1081 + <name>&#x83b7;&#x53d6;&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;&#x540d;&#x79f0;</name>
  1082 + <type>GetVariable</type>
  1083 + <description/>
  1084 + <distribute>Y</distribute>
  1085 + <custom_distribution/>
  1086 + <copies>1</copies>
  1087 + <partitioning>
  1088 + <method>none</method>
  1089 + <schema_name/>
  1090 + </partitioning>
  1091 + <fields>
  1092 + <field>
  1093 + <name>ttinfoname_</name>
  1094 + <variable>&#x24;&#x7b;ttinfoname&#x7d;</variable>
  1095 + <type>String</type>
  1096 + <format/>
  1097 + <currency/>
  1098 + <decimal/>
  1099 + <group/>
  1100 + <length>-1</length>
  1101 + <precision>-1</precision>
  1102 + <trim_type>none</trim_type>
  1103 + </field>
  1104 + </fields>
  1105 + <cluster_schema/>
  1106 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1107 + <xloc>82</xloc>
  1108 + <yloc>508</yloc>
  1109 + <draw>Y</draw>
  1110 + </GUI>
  1111 + </step>
  1112 +
  1113 + <step>
  1114 + <name>&#x83b7;&#x53d6;&#x7ebf;&#x8def;&#x540d;&#x79f0;</name>
  1115 + <type>GetVariable</type>
  1116 + <description/>
  1117 + <distribute>Y</distribute>
  1118 + <custom_distribution/>
  1119 + <copies>1</copies>
  1120 + <partitioning>
  1121 + <method>none</method>
  1122 + <schema_name/>
  1123 + </partitioning>
  1124 + <fields>
  1125 + <field>
  1126 + <name>xlname_</name>
  1127 + <variable>&#x24;&#x7b;xlname&#x7d;</variable>
  1128 + <type>String</type>
  1129 + <format/>
  1130 + <currency/>
  1131 + <decimal/>
  1132 + <group/>
  1133 + <length>-1</length>
  1134 + <precision>-1</precision>
  1135 + <trim_type>none</trim_type>
  1136 + </field>
  1137 + </fields>
  1138 + <cluster_schema/>
  1139 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1140 + <xloc>78</xloc>
  1141 + <yloc>351</yloc>
  1142 + <draw>Y</draw>
  1143 + </GUI>
  1144 + </step>
  1145 +
  1146 + <step>
  1147 + <name>&#x9017;&#x53f7;&#x5207;&#x5206;&#x6210;&#x5b57;&#x6bb5;&#x540d;</name>
  1148 + <type>SplitFieldToRows3</type>
  1149 + <description/>
  1150 + <distribute>Y</distribute>
  1151 + <custom_distribution/>
  1152 + <copies>1</copies>
  1153 + <partitioning>
  1154 + <method>none</method>
  1155 + <schema_name/>
  1156 + </partitioning>
  1157 + <splitfield>fieldnames</splitfield>
  1158 + <delimiter>,</delimiter>
  1159 + <newfield>fieldname</newfield>
  1160 + <rownum>N</rownum>
  1161 + <rownum_field/>
  1162 + <resetrownumber>Y</resetrownumber>
  1163 + <delimiter_is_regex>N</delimiter_is_regex>
  1164 + <cluster_schema/>
  1165 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1166 + <xloc>261</xloc>
  1167 + <yloc>163</yloc>
  1168 + <draw>Y</draw>
  1169 + </GUI>
  1170 + </step>
  1171 +
  1172 + <step>
  1173 + <name>&#x9017;&#x53f7;&#x5207;&#x5206;&#x6210;&#x5b57;&#x6bb5;&#x540d; 2</name>
  1174 + <type>SplitFieldToRows3</type>
  1175 + <description/>
  1176 + <distribute>Y</distribute>
  1177 + <custom_distribution/>
  1178 + <copies>1</copies>
  1179 + <partitioning>
  1180 + <method>none</method>
  1181 + <schema_name/>
  1182 + </partitioning>
  1183 + <splitfield>normalizefieldnames_</splitfield>
  1184 + <delimiter>,</delimiter>
  1185 + <newfield>nfieldname</newfield>
  1186 + <rownum>N</rownum>
  1187 + <rownum_field/>
  1188 + <resetrownumber>Y</resetrownumber>
  1189 + <delimiter_is_regex>N</delimiter_is_regex>
  1190 + <cluster_schema/>
  1191 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1192 + <xloc>263</xloc>
  1193 + <yloc>257</yloc>
  1194 + <draw>Y</draw>
  1195 + </GUI>
  1196 + </step>
  1197 +
  1198 + <step_error_handling>
  1199 + </step_error_handling>
  1200 + <slave-step-copy-partition-distribution>
  1201 +</slave-step-copy-partition-distribution>
  1202 + <slave_transformation>N</slave_transformation>
  1203 +
  1204 +</transformation>
... ...
src/main/resources/static/assets/plugins/jquery.autocompleter.js 0 → 100644
  1 +/*
  2 + * Autocompleter v0.1.2 - 2014-05-20
  3 + * Simple, easy, customisable and with cache support.
  4 + * http://github.com/ArtemFitiskin/jquery-autocompleter
  5 + *
  6 + * Copyright 2014 Artem Fitiskin; MIT Licensed
  7 + */
  8 +
  9 +;(function ($, window) {
  10 + "use strict";
  11 +
  12 + var guid = 0,
  13 + ignoredKeyCode = [9, 13, 17, 19, 20, 27, 33, 34, 35, 36, 37, 39, 44, 92, 113, 114, 115, 118, 119, 120, 122, 123, 144, 145],
  14 + allowOptions = ['source', 'empty', 'limit', 'cache', 'focusOpen', 'selectFirst', 'changeWhenSelect', 'highlightMatches', 'ignoredKeyCode', 'customLabel', 'customValue', 'template', 'combine', 'callback'],
  15 + userAgent = (window.navigator.userAgent||window.navigator.vendor||window.opera),
  16 + isFirefox = /Firefox/i.test(userAgent),
  17 + isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(userAgent),
  18 + isFirefoxMobile = (isFirefox && isMobile),
  19 + $body = null,
  20 + localStorageKey = 'autocompleterCache',
  21 + supportLocalStorage = (function () {
  22 + var supported = typeof window.localStorage !== 'undefined';
  23 + if (supported) {
  24 + try {
  25 + localStorage.setItem("autocompleter", "autocompleter");
  26 + localStorage.removeItem("autocompleter");
  27 + } catch (e) {
  28 + supported = false;
  29 + }
  30 + }
  31 + return supported;
  32 + })();
  33 +
  34 + /**
  35 + * @options
  36 + * @param source [(string|object)] <null> "URL to the server or a local object"
  37 + * @param empty [boolean] <true> "Launch if value is empty"
  38 + * @param limit [int] <10> "Number of results to be displayed"
  39 + * @param customClass [array] <[]> "Array with custom classes for autocompleter element"
  40 + * @param cache [boolean] <true> "Save xhr data to localStorage to avoid the repetition of requests"
  41 + * @param focusOpen [boolean] <true> "Launch autocompleter when input gets focus"
  42 + * @param hint [boolean] <false> "Add hint to input with first matched label, correct styles should be installed"
  43 + * @param selectFirst [boolean] <false> "If set to true, first element in autocomplete list will be selected automatically, ignore if changeWhenSelect is on"
  44 + * @param changeWhenSelect [boolean] <true> "Allows to change input value using arrow keys navigation in autocomplete list"
  45 + * @param highlightMatches [boolean] <false> "This option defines <strong> tag wrap for matches in autocomplete results"
  46 + * @param ignoredKeyCode [array] <[]> "Array with ignorable keycodes"
  47 + * @param customLabel [boolean] <false> "The name of object's property which will be used as a label"
  48 + * @param customValue [boolean] <false> "The name of object's property which will be used as a value"
  49 + * @param template [(string|boolean)] <false> "Custom template for list items"
  50 + * @param combine [function] <$.noop> "Returns an object which extends ajax data. Useful if you want to pass some additional server options"
  51 + * @param callback [function] <$.noop> "Select value callback function. Arguments: value, index"
  52 + */
  53 + var options = {
  54 + source: null,
  55 + empty: true,
  56 + limit: 10,
  57 + customClass: [],
  58 + cache: true,
  59 + focusOpen: true,
  60 + hint: false,
  61 + selectFirst: false,
  62 + changeWhenSelect: true,
  63 + highlightMatches: false,
  64 + ignoredKeyCode: [],
  65 + customLabel: false,
  66 + customValue: false,
  67 + template: false,
  68 + combine: $.noop,
  69 + callback: $.noop
  70 + };
  71 +
  72 + var publics = {
  73 +
  74 + /**
  75 + * @method
  76 + * @name defaults
  77 + * @description Sets default plugin options
  78 + * @param opts [object] <{}> "Options object"
  79 + * @example $.autocompleter("defaults", opts);
  80 + */
  81 + defaults: function (opts) {
  82 + options = $.extend(options, opts || {});
  83 + return $(this);
  84 + },
  85 +
  86 + /**
  87 + * @method
  88 + * @name option
  89 + * @description Open autocompleter list
  90 + */
  91 + option: function (properties) {
  92 + return $(this).each(function(i, input) {
  93 + var data = $(input).next(".autocompleter").data("autocompleter");
  94 +
  95 + for (var property in properties) {
  96 + if ($.inArray(property, allowOptions) !== -1) {
  97 + data[property] = properties[property];
  98 + }
  99 + }
  100 + });
  101 + },
  102 +
  103 + /**
  104 + * @method
  105 + * @name open
  106 + * @description Open autocompleter list
  107 + */
  108 + open: function () {
  109 + return $(this).each(function(i, input) {
  110 + var data = $(input).next(".autocompleter").data("autocompleter");
  111 +
  112 + if (data) {
  113 + _open(null, data);
  114 + }
  115 + });
  116 + },
  117 +
  118 + /**
  119 + * @method
  120 + * @name close
  121 + * @description Close autocompleter list
  122 + */
  123 + close: function () {
  124 + return $(this).each(function(i, input) {
  125 + var data = $(input).next(".autocompleter").data("autocompleter");
  126 +
  127 + if (data) {
  128 + _close(null, data);
  129 + }
  130 + });
  131 + },
  132 +
  133 + /**
  134 + * @method
  135 + * @name clearCache
  136 + * @description Remove localStorage cache
  137 + */
  138 + clearCache: function () {
  139 + _deleteCache();
  140 + },
  141 +
  142 + /**
  143 + * @method
  144 + * @name destroy
  145 + * @description Removes instance of plugin
  146 + * @example $(".target").autocompleter("destroy");
  147 + */
  148 + destroy: function () {
  149 + return $(this).each(function (i, input) {
  150 + var data = $(input).next(".autocompleter").data("autocompleter");
  151 +
  152 + if (data) {
  153 + // Abort xhr
  154 + if (data.jqxhr) {
  155 + data.jqxhr.abort();
  156 + }
  157 +
  158 + // If has selected item & open - confirm it
  159 + if (data.$autocompleter.hasClass("open")) {
  160 + data.$autocompleter.find(".autocompleter-selected")
  161 + .trigger("click.autocompleter");
  162 + }
  163 +
  164 + // Restore original autocomplete attr
  165 + if(!data.originalAutocomplete) {
  166 + data.$node.removeAttr("autocomplete");
  167 + } else {
  168 + data.$node.attr("autocomplete", data.originalAutocomplete);
  169 + }
  170 +
  171 + // Remove autocompleter & unbind events
  172 + data.$node.off(".autocompleter")
  173 + .removeClass("autocompleter-node");
  174 + data.$autocompleter.off(".autocompleter")
  175 + .remove();
  176 + }
  177 + });
  178 + }
  179 + };
  180 +
  181 + /**
  182 + * @method private
  183 + * @name _init
  184 + * @description Initializes plugin
  185 + * @param opts [object] "Initialization options"
  186 + */
  187 + function _init(opts) {
  188 + // Local options
  189 + opts = $.extend({}, options, opts || {});
  190 +
  191 + // Check for Body
  192 + if ($body === null) {
  193 + $body = $("body");
  194 + }
  195 +
  196 + // Apply to each element
  197 + var $items = $(this);
  198 + for (var i = 0, count = $items.length; i < count; i++) {
  199 + _build($items.eq(i), opts);
  200 + }
  201 +
  202 + return $items;
  203 + }
  204 +
  205 + /**
  206 + * @method private
  207 + * @name _build
  208 + * @description Builds each instance
  209 + * @param $node [jQuery object] "Target jQuery object"
  210 + * @param opts [object] <{}> "Options object"
  211 + */
  212 + function _build($node, opts) {
  213 + if (!$node.hasClass("autocompleter-node")) {
  214 + // Extend options
  215 + opts = $.extend({}, opts, $node.data("autocompleter-options"));
  216 +
  217 + var html = '<div class="autocompleter '+opts.customClass.join(' ')+'" id="autocompleter-'+(guid+1)+'">';
  218 + if (opts.hint) {
  219 + html += '<div class="autocompleter-hint"></div>';
  220 + }
  221 + html += '<ul class="autocompleter-list"></ul>';
  222 + html += '</div>';
  223 +
  224 + $node.addClass("autocompleter-node")
  225 + .after(html);
  226 +
  227 + var $autocompleter = $node.next(".autocompleter").eq(0);
  228 +
  229 + // Set autocomplete to off for warn overlay
  230 + var originalAutocomplete = $node.attr("autocomplete");
  231 + $node.attr("autocomplete", "off");
  232 +
  233 + // Store plugin data
  234 + var data = $.extend({
  235 + $node: $node,
  236 + $autocompleter: $autocompleter,
  237 + $selected: null,
  238 + $list: null,
  239 + index: -1,
  240 + hintText: false,
  241 + source: false,
  242 + jqxhr: false,
  243 + response: null,
  244 + focused: false,
  245 + query: '',
  246 + originalAutocomplete: originalAutocomplete,
  247 + guid: guid++
  248 + }, opts);
  249 +
  250 + // Bind autocompleter events
  251 + data.$autocompleter.on("mousedown.autocompleter", ".autocompleter-item", data, _select)
  252 + .data("autocompleter", data);
  253 +
  254 + // Bind node events
  255 + data.$node.on("keyup.autocompleter", data, _onKeyup)
  256 + .on("keydown.autocompleter", data, _onKeydownHelper)
  257 + .on("focus.autocompleter", data, _onFocus)
  258 + .on("blur.autocompleter", data, _onBlur)
  259 + .on("mousedown.autocompleter", data, _onMousedown);
  260 + }
  261 + }
  262 +
  263 + /**
  264 + * @method private
  265 + * @name _search
  266 + * @description Local search function, return best collation
  267 + * @param query [string] "Query string"
  268 + * @param source [object] "Source data"
  269 + * @param limit [integer] "Results length"
  270 + */
  271 + function _search(query, source, limit) {
  272 + var response = [];
  273 + query = query.toUpperCase();
  274 +
  275 + if (source.length) {
  276 + for (var i = 0; i < 2; i++) {
  277 + for (var item in source) {
  278 + if (response.length < limit) {
  279 + switch (i) {
  280 + case 0:
  281 + if (source[item].label.toUpperCase().search(query) === 0) {
  282 + response.push(source[item]);
  283 + delete source[item];
  284 + }
  285 + break;
  286 +
  287 + case 1:
  288 + if (source[item].label.toUpperCase().search(query) !== -1) {
  289 + response.push(source[item]);
  290 + delete source[item];
  291 + }
  292 + break;
  293 + }
  294 + }
  295 + }
  296 + }
  297 + }
  298 +
  299 + return response;
  300 + }
  301 +
  302 + /**
  303 + * @method private
  304 + * @name _launch
  305 + * @description Use source locally or create xhr
  306 + * @param data [object] "Instance data"
  307 + */
  308 + function _launch(data) {
  309 + data.query = $.trim(data.$node.val());
  310 +
  311 + if (!data.empty && data.query.length === 0) {
  312 + _clear(data);
  313 + return;
  314 + } else {
  315 + if (typeof data.source === 'object') {
  316 + _clear(data);
  317 +
  318 + // Local search
  319 + var search = _search(data.query, _clone(data.source), data.limit);
  320 + if (search.length) {
  321 + _response(search, data);
  322 + }
  323 + } else {
  324 + if (data.jqxhr) {
  325 + data.jqxhr.abort();
  326 + }
  327 +
  328 + var ajaxData = $.extend({
  329 + limit: data.limit,
  330 + query: data.query
  331 + }, data.combine());
  332 +
  333 + data.jqxhr = $.ajax({
  334 + url: data.source,
  335 + dataType: "json",
  336 + data: ajaxData,
  337 + beforeSend: function (xhr) {
  338 + data.$autocompleter.addClass('autocompleter-ajax');
  339 + _clear(data);
  340 + if (data.cache) {
  341 + var stored = _getCache(this.url);
  342 + if (stored) {
  343 + xhr.abort();
  344 + _response(stored, data);
  345 + }
  346 + }
  347 + }
  348 + })
  349 + .done(function (response) {
  350 + if (data.cache) {
  351 + _setCache(this.url, response);
  352 + }
  353 + _response(response, data);
  354 + })
  355 + .always(function () {
  356 + data.$autocompleter.removeClass('autocompleter-ajax');
  357 + });
  358 + }
  359 + }
  360 + }
  361 +
  362 + /**
  363 + * @method private
  364 + * @name _clear
  365 + * @param data [object] "Instance data"
  366 + */
  367 + function _clear(data) {
  368 + // Clear data
  369 + data.response = null;
  370 + data.$list = null;
  371 + data.$selected = null;
  372 + data.index = 0;
  373 + data.$autocompleter.find(".autocompleter-list").empty();
  374 + data.$autocompleter.find('.autocompleter-hint').removeClass('autocompleter-hint-show').empty();
  375 + data.hintText = false;
  376 +
  377 + _close(null, data);
  378 + }
  379 +
  380 + /**
  381 + * @method private
  382 + * @name _response
  383 + * @description Main source response function
  384 + * @param response [object] "Source data"
  385 + * @param data [object] "Instance data"
  386 + */
  387 + function _response(response, data) {
  388 + _buildList(response, data);
  389 +
  390 + if (data.$autocompleter.hasClass('autocompleter-focus')) {
  391 + _open(null, data);
  392 + }
  393 + }
  394 +
  395 + /**
  396 + * @method private
  397 + * @name _buildList
  398 + * @description Generate autocompleter-list and update instance data by source
  399 + * @param list [object] "Source data"
  400 + * @param data [object] "Instance data"
  401 + */
  402 + function _buildList(list, data) {
  403 + var menu = '';
  404 +
  405 + for (var item = 0, count = list.length; item < count; item++) {
  406 + var classes = ["autocompleter-item"];
  407 +
  408 + if (data.selectFirst && item === 0 && !data.changeWhenSelect) {
  409 + classes.push("autocompleter-item-selected");
  410 + }
  411 +
  412 + var highlightReg = new RegExp(data.query, "gi");
  413 + var label = (data.customLabel && list[item][data.customLabel]) ? list[item][data.customLabel] : list[item].label;
  414 +
  415 + var clear = label;
  416 +
  417 + label = data.highlightMatches ? label.replace(highlightReg, "<strong>$&</strong>") : label;
  418 +
  419 + var value = (data.customValue && list[item][data.customValue]) ? list[item][data.customValue] : list[item].value;
  420 +
  421 + // Apply custom template
  422 + if (data.template) {
  423 + var template = data.template.replace(/({{ label }})/gi, label);
  424 +
  425 + for (var property in list[item]) {
  426 + if (list[item].hasOwnProperty(property)) {
  427 + var regex = new RegExp('{{ '+ property +' }}', 'gi');
  428 + template = template.replace(regex, list[item][property]);
  429 + }
  430 + }
  431 +
  432 + label = template;
  433 + }
  434 +
  435 + if (value) {
  436 + menu += '<li data-value="'+value+'" data-label="'+clear+'" class="'+classes.join(' ')+'">'+label+'</li>';
  437 + } else {
  438 + menu += '<li data-label="'+clear+'" class="'+classes.join(' ')+'">'+label+'</li>';
  439 + }
  440 + }
  441 +
  442 + // Set hint
  443 + if (list.length && data.hint) {
  444 + var hint = ( list[0].label.substr(0, data.query.length).toUpperCase() === data.query.toUpperCase() ) ? list[0].label : false;
  445 + if (hint && (data.query !== list[0].label)) {
  446 + var hintReg = new RegExp(data.query, "i");
  447 + var hintText = hint.replace(hintReg, "<span>"+data.query+"</span>");
  448 + data.$autocompleter.find('.autocompleter-hint').addClass('autocompleter-hint-show').html(hintText);
  449 + data.hintText = hintText;
  450 + }
  451 + }
  452 +
  453 + // Update data
  454 + data.response = list;
  455 + data.$autocompleter.find(".autocompleter-list").html(menu);
  456 + data.$selected = (data.$autocompleter.find(".autocompleter-item-selected").length) ? data.$autocompleter.find(".autocompleter-item-selected") : null;
  457 + data.$list = (list.length) ? data.$autocompleter.find(".autocompleter-item") : null;
  458 + data.index = data.$selected ? data.$list.index(data.$selected) : -1;
  459 + data.$autocompleter.find(".autocompleter-item").each(function (i, j) {
  460 + $(j).data(data.response[i]);
  461 + });
  462 + }
  463 +
  464 + /**
  465 + * @method private
  466 + * @name _onKeyup
  467 + * @description Keyup events in node, up/down autocompleter-list navigation, typing and enter button callbacks
  468 + * @param e [object] "Event data"
  469 + */
  470 + function _onKeyup(e) {
  471 + var data = e.data;
  472 + var code = e.keyCode ? e.keyCode : e.which;
  473 +
  474 + if ( (code === 40 || code === 38) && data.$autocompleter.hasClass('autocompleter-show') ) {
  475 + // Arrows up & down
  476 + var len = data.$list.length,
  477 + next,
  478 + prev;
  479 +
  480 + if (len) {
  481 + // Determine new index
  482 + if (len > 1) {
  483 + if (data.index === len - 1) {
  484 + next = data.changeWhenSelect ? -1 : 0;
  485 + prev = data.index - 1;
  486 + } else if (data.index === 0) {
  487 + next = data.index + 1;
  488 + prev = data.changeWhenSelect ? -1 : len - 1;
  489 + } else if (data.index === -1) {
  490 + next = 0;
  491 + prev = len - 1;
  492 + } else {
  493 + next = data.index + 1;
  494 + prev = data.index - 1;
  495 + }
  496 + } else if (data.index === -1) {
  497 + next = 0;
  498 + prev = 0;
  499 + } else {
  500 + prev = -1;
  501 + next = -1;
  502 + }
  503 + data.index = (code === 40) ? next : prev;
  504 +
  505 + // Update HTML
  506 + data.$list.removeClass("autocompleter-item-selected");
  507 + if (data.index !== -1) {
  508 + data.$list.eq(data.index).addClass("autocompleter-item-selected");
  509 + }
  510 + data.$selected = data.$autocompleter.find(".autocompleter-item-selected").length ? data.$autocompleter.find(".autocompleter-item-selected") : null;
  511 + if (data.changeWhenSelect) {
  512 + _setValue(data);
  513 + }
  514 + }
  515 + } else if ($.inArray(code, ignoredKeyCode) === -1 && $.inArray(code, data.ignoredKeyCode) === -1) {
  516 + // Typing
  517 + _launch(data);
  518 + }
  519 + }
  520 +
  521 + /**
  522 + * @method private
  523 + * @name _onKeydownHelper
  524 + * @description Keydown events in node, up/down for prevent cursor moving and right arrow for hint
  525 + * @param e [object] "Event data"
  526 + */
  527 + function _onKeydownHelper(e) {
  528 + var code = e.keyCode ? e.keyCode : e.which;
  529 + var data = e.data;
  530 +
  531 + if (code === 40 || code === 38 ) {
  532 + e.preventDefault();
  533 + e.stopPropagation();
  534 + } else if (code === 39) {
  535 + // Right arrow
  536 + if (data.hint && data.hintText && data.$autocompleter.find('.autocompleter-hint').hasClass('autocompleter-hint-show')) {
  537 + e.preventDefault();
  538 + e.stopPropagation();
  539 +
  540 + var hintOrigin = data.$autocompleter.find(".autocompleter-item").length ? data.$autocompleter.find(".autocompleter-item").eq(0).attr('data-label') : false;
  541 + if (hintOrigin) {
  542 + data.query = hintOrigin;
  543 + _setHint(data);
  544 + }
  545 + }
  546 + } else if (code === 13) {
  547 + // Enter
  548 + if (data.$autocompleter.hasClass('autocompleter-show') && data.$selected) {
  549 + _select(e);
  550 + }
  551 + }
  552 + }
  553 +
  554 + /**
  555 + * @method private
  556 + * @name _onFocus
  557 + * @description Handles instance focus
  558 + * @param e [object] "Event data"
  559 + * @param internal [boolean] "Called by plugin"
  560 + */
  561 + function _onFocus(e, internal) {
  562 + if (!internal) {
  563 + var data = e.data;
  564 +
  565 + data.$autocompleter.addClass("autocompleter-focus");
  566 +
  567 + if (!data.$node.prop("disabled") && !data.$autocompleter.hasClass('autocompleter-show')) {
  568 + if (data.focusOpen) {
  569 + _launch(data);
  570 + data.focused = true;
  571 + setTimeout(function () {
  572 + data.focused = false;
  573 + }, 500);
  574 + }
  575 + }
  576 + }
  577 + }
  578 +
  579 + /**
  580 + * @method private
  581 + * @name _onBlur
  582 + * @description Handles instance blur
  583 + * @param e [object] "Event data"
  584 + * @param internal [boolean] "Called by plugin"
  585 + */
  586 + function _onBlur(e, internal) {
  587 + e.preventDefault();
  588 + e.stopPropagation();
  589 +
  590 + var data = e.data;
  591 +
  592 + if (!internal) {
  593 + data.$autocompleter.removeClass("autocompleter-focus");
  594 + _close(e);
  595 + }
  596 + }
  597 +
  598 + /**
  599 + * @method private
  600 + * @name _onMousedown
  601 + * @description Handles mousedown to node
  602 + * @param e [object] "Event data"
  603 + */
  604 + function _onMousedown(e) {
  605 + // Disable middle & right mouse click
  606 + if (e.type === "mousedown" && $.inArray(e.which, [2, 3]) !== -1) { return; }
  607 +
  608 + var data = e.data;
  609 + if (data.$list && !data.focused) {
  610 + if (!data.$node.is(":disabled")) {
  611 + if (isMobile && !isFirefoxMobile) {
  612 + var el = data.$select[0];
  613 + if (window.document.createEvent) { // All
  614 + var evt = window.document.createEvent("MouseEvents");
  615 + evt.initMouseEvent("mousedown", false, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
  616 + el.dispatchEvent(evt);
  617 + } else if (el.fireEvent) { // IE
  618 + el.fireEvent("onmousedown");
  619 + }
  620 + } else {
  621 + // Delegate intent
  622 + if (data.$autocompleter.hasClass("autocompleter-closed")) {
  623 + _open(e);
  624 + } else if (data.$autocompleter.hasClass("autocompleter-show")) {
  625 + _close(e);
  626 + }
  627 + }
  628 + }
  629 + }
  630 + }
  631 +
  632 + /**
  633 + * @method private
  634 + * @name _open
  635 + * @description Opens option set
  636 + * @param e [object] "Event data"
  637 + * @param instanceData [object] "Instance data"
  638 + */
  639 + function _open(e, instanceData) {
  640 + var data = e ? e.data : instanceData;
  641 +
  642 + if (!data.$node.prop("disabled") && !data.$autocompleter.hasClass("autocompleter-show") && data.$list && data.$list.length ) {
  643 + data.$autocompleter.removeClass("autocompleter-closed").addClass("autocompleter-show");
  644 + $body.on("click.autocompleter-" + data.guid, ":not(.autocompleter-item)", data, _closeHelper);
  645 + }
  646 + }
  647 +
  648 + /**
  649 + * @method private
  650 + * @name _closeHelper
  651 + * @description Determines if event target is outside instance before closing
  652 + * @param e [object] "Event data"
  653 + */
  654 + function _closeHelper(e) {
  655 + if ( $(e.target).hasClass('autocompleter-node') ) {
  656 + return;
  657 + }
  658 +
  659 + if ($(e.currentTarget).parents(".autocompleter").length === 0) {
  660 + _close(e);
  661 + }
  662 + }
  663 +
  664 + /**
  665 + * @method private
  666 + * @name _close
  667 + * @description Closes option set
  668 + * @param e [object] "Event data"
  669 + * @param instanceData [object] "Instance data"
  670 + */
  671 + function _close(e, instanceData) {
  672 + var data = e ? e.data : instanceData;
  673 +
  674 + if (data.$autocompleter.hasClass("autocompleter-show")) {
  675 + data.$autocompleter.removeClass("autocompleter-show").addClass("autocompleter-closed");
  676 + $body.off(".autocompleter-" + data.guid);
  677 + }
  678 + }
  679 +
  680 + /**
  681 + * @method private
  682 + * @name _select
  683 + * @description Select item from .autocompleter-list
  684 + * @param e [object] "Event data"
  685 + */
  686 + function _select(e) {
  687 + // Disable middle & right mouse click
  688 + if (e.type === "mousedown" && $.inArray(e.which, [2, 3]) !== -1) { return; }
  689 +
  690 + var data = e.data;
  691 +
  692 + e.preventDefault();
  693 + e.stopPropagation();
  694 +
  695 + if (e.type === "mousedown" && $(this).length) {
  696 + data.$selected = $(this);
  697 + data.index = data.$list.index(data.$selected);
  698 + }
  699 +
  700 + if (!data.$node.prop("disabled")) {
  701 + _close(e);
  702 + _update(data);
  703 +
  704 + if (e.type === "click") {
  705 + data.$node.trigger("focus", [true]);
  706 + }
  707 + }
  708 + }
  709 +
  710 + /**
  711 + * @method private
  712 + * @name _setHint
  713 + * @description Set autocompleter by hint
  714 + * @param data [object] "Instance data"
  715 + */
  716 + function _setHint(data) {
  717 + _setValue(data);
  718 + _handleChange(data);
  719 + _launch(data);
  720 + }
  721 +
  722 + /**
  723 + * @method private
  724 + * @name _setValue
  725 + * @description Set value for native field
  726 + * @param data [object] "Instance data"
  727 + */
  728 + function _setValue(data) {
  729 + if (data.$selected) {
  730 + if (data.hintText && data.$autocompleter.find('.autocompleter-hint').hasClass('autocompleter-hint-show')) {
  731 + data.$autocompleter.find('.autocompleter-hint').removeClass('autocompleter-hint-show');
  732 + }
  733 + var value = data.$selected.attr('data-value') ? data.$selected.attr('data-value') : data.$selected.attr('data-label');
  734 + data.$node.val(value);
  735 + } else {
  736 + if (data.hintText && !data.$autocompleter.find('.autocompleter-hint').hasClass('autocompleter-hint-show')) {
  737 + data.$autocompleter.find('.autocompleter-hint').addClass('autocompleter-hint-show');
  738 + }
  739 + data.$node.val(data.query);
  740 + }
  741 + }
  742 +
  743 + /**
  744 + * @method private
  745 + * @name _update
  746 + * @param data [object] "Instance data"
  747 + */
  748 + function _update(data) {
  749 + _setValue(data);
  750 + _handleChange(data);
  751 + _clear(data);
  752 + }
  753 +
  754 + /**
  755 + * @method private
  756 + * @name _handleChange
  757 + * @description Trigger node change event and call the callback function
  758 + * @param data [object] "Instance data"
  759 + */
  760 + function _handleChange(data) {
  761 + data.callback.call(data.$autocompleter, data.$node.val(), data.index, data.response[data.index]);
  762 + data.$node.trigger("change");
  763 + }
  764 +
  765 + /**
  766 + * @method private
  767 + * @name _getCache
  768 + * @description Store AJAX response in plugin cache
  769 + * @param url [string] "AJAX get query string"
  770 + * @param data [object] "AJAX response data"
  771 + */
  772 + function _setCache(url, data) {
  773 + if (!supportLocalStorage) { return; }
  774 + if (url && data) {
  775 + cache[url] = {
  776 + value: data
  777 + };
  778 +
  779 + // Proccess to localStorage
  780 + try {
  781 + localStorage.setItem(localStorageKey, JSON.stringify(cache));
  782 + } catch (e) {
  783 + var code = e.code || e.number || e.message;
  784 + if (code === 22) {
  785 + _deleteCache();
  786 + } else {
  787 + throw(e);
  788 + }
  789 + }
  790 + }
  791 + }
  792 +
  793 + /**
  794 + * @method private
  795 + * @name _getCache
  796 + * @description Get cached data by url if exist
  797 + * @param url [string] "AJAX get query string"
  798 + */
  799 + function _getCache(url) {
  800 + if (!url) { return; }
  801 + var response = (cache[url] && cache[url].value) ? cache[url].value : false;
  802 + return response;
  803 + }
  804 +
  805 + /**
  806 + * @method private
  807 + * @name _loadCache
  808 + * @description Load all plugin cache from localStorage
  809 + */
  810 + function _loadCache() {
  811 + if (!supportLocalStorage) { return; }
  812 + var json = localStorage.getItem(localStorageKey) || '{}';
  813 + return JSON.parse(json);
  814 + }
  815 +
  816 + /**
  817 + * @method private
  818 + * @name _deleteCache
  819 + * @description Delete all plugin cache from localStorage
  820 + */
  821 + function _deleteCache() {
  822 + try {
  823 + localStorage.removeItem(localStorageKey);
  824 + cache = _loadCache();
  825 + } catch (e) {
  826 + throw(e);
  827 + }
  828 + }
  829 +
  830 + /**
  831 + * @method private
  832 + * @name _clone
  833 + * @description Clone JavaScript object
  834 + */
  835 + function _clone(obj) {
  836 + if (null === obj || "object" !== typeof obj) {
  837 + return obj;
  838 + }
  839 + var copy = obj.constructor();
  840 + for (var attr in obj) {
  841 + if (obj.hasOwnProperty(attr)) {
  842 + copy[attr] = obj[attr];
  843 + }
  844 + }
  845 + return copy;
  846 + }
  847 +
  848 + // Load cache
  849 + var cache = _loadCache();
  850 +
  851 + $.fn.autocompleter = function (method) {
  852 + if (publics[method]) {
  853 + return publics[method].apply(this, Array.prototype.slice.call(arguments, 1));
  854 + } else if (typeof method === 'object' || !method) {
  855 + return _init.apply(this, arguments);
  856 + }
  857 + return this;
  858 + };
  859 +
  860 + $.autocompleter = function (method) {
  861 + if (method === "defaults") {
  862 + publics.defaults.apply(this, Array.prototype.slice.call(arguments, 1));
  863 + } else if (method === "clearCache") {
  864 + publics.clearCache.apply(this, null);
  865 + }
  866 + };
  867 +})(jQuery, window);
... ...
src/main/resources/static/pages/base/carpark/add.html
... ... @@ -20,6 +20,12 @@
20 20 <span class="step-title"> 1 - 4 </span>
21 21 </span>
22 22 </div>
  23 +
  24 + <div class="actions">
  25 + <div class="btn-group btn-group-devided" data-toggle="buttons">
  26 + <a class="btn btn-circle default" href="/pages/base/carpark/list.html" style="float: right;padding: 4px 23px;" data-pjax=""><i class="fa fa-reply"></i> 退出</a>
  27 + </div>
  28 + </div>
23 29 </div>
24 30 <div class="portlet-body form">
25 31  
... ... @@ -104,7 +110,7 @@
104 110 <div class="form-group">
105 111 <div class="alert alert-info font-blue-chambray" style="background-color: #2C3E50">
106 112 <h5 class="block"><span class="help-block" style="color:#1bbc9b;"> * 新增方式说明: </span></h5>
107   - <p><span class="help-block" style="color:#1bbc9b;"> a)系统生成:根据站点名称自动生成以150米为半径范围的圆.</span> </p>
  113 + <p><span class="help-block" style="color:#1bbc9b;"> a)系统生成:根据站点名称自动生成以100米为半径范围的圆.</span> </p>
108 114 <p><span class="help-block" style="color:#1bbc9b;"> b)手动添加:手动在地图上画出站点范围,然后双击鼠标右键保存.</span> </p>
109 115 </div>
110 116 </div>
... ... @@ -180,16 +186,6 @@
180 186 </div>
181 187 </div>
182 188  
183   - <!-- 站点WGS经纬度 -->
184   - <div class="form-body">
185   - <div class="form-group">
186   - <label class="col-md-3 control-label">站点WGS经纬度:</label>
187   - <div class="col-md-6">
188   - <input type="text" class="form-control" name="gCenterPoint" id="gCenterPointInput">
189   - </div>
190   - </div>
191   - </div>
192   -
193 189 <!-- 范围图形类型 -->
194 190 <div class="form-body">
195 191 <div class="form-group">
... ... @@ -402,137 +398,18 @@
402 398  
403 399 </div>
404 400 </div>
  401 +
  402 +<!-- 函数方法JS类库 -->
405 403 <script src="/pages/base/carpark/js/add-input-function.js"></script>
  404 +
  405 +<!-- 表单向导JS类库 -->
406 406 <script src="/pages/base/carpark/js/add-form-wizard.js"></script>
  407 +
  408 +<!-- 地图JS类库 -->
407 409 <script src="/pages/base/carpark/js/add-vmap-world.js"></script>
408   -<script type="text/javascript">
409   -
410   - var mapB = '';
411   -
412   - var circle = '';
413   -
414   - var drawingManager = '';
415   -
416   - // 定义表单
417   - var form = $('#submit_carpark_form');
418   -
419   - // 定义表单异常
420   - var error = $('.alert-danger',form);
421   -
422   - // 定义表单成功
423   - var success = $('.alert-success',form);
424   -
425   - $(document).ready(function() {
426   -
427   - // 关闭左侧栏
428   - if (!$('body').hasClass('page-sidebar-closed')) {
429   -
430   - $('.menu-toggler.sidebar-toggler').click();
431   -
432   - }
433   -
434   - setTimeout(function(){
435   -
436   - FormWizard.init();
437   -
438   - mapB = VmapWorlds.init();
439   -
440   - PublicFunctions.getCarParkCode(function(carParkCode) {
441   -
442   - $('#parkCodeInput').val(carParkCode);
443   -
444   - });
445   -
446   - $('#destroySelect').val('0');
447   -
448   - PublicFunctions.getBusinessAllInfo(function(array) {
449   -
450   - var opGroup = '<option value="">请选择...</option><optgroup label="公司">';
451   -
452   - var len_ = array.length;
453   -
454   - if(len_>0) {
455   -
456   - $.each(array, function(i, g){
457   -
458   - opGroup += '<option value="'+g.businessCode+'">'+g.businessName+'</option>';
459   -
460   - });
461   -
462   - }
463   -
464   - opGroup += '</optgroup>';
465   -
466   - $('#companySelect').html(opGroup).select2();
467   -
468   - });
469   -
470   - var htm = '<option value="">请选择...</option><optgroup label="公司">';
471   -
472   - $('#brancheCompanySelect').html(htm).select2();
473   -
474   - $('#companySelect').on("change", function (e) {
475   -
476   - // 获取公司下拉框选择值
477   - var businessCode = $('#companySelect').val();
478   -
479   - // 分公司下拉框options属性值
480   - var options = '<option value="">请选择...</option><optgroup label="分公司">';
481   -
482   - // 如果公司选择为空则分公司为空 ; 否则查询出所属公司下的分公司名称和相应分公司代码
483   - if(businessCode == null || businessCode ==''){
484   -
485   - options += '</optgroup>';
486   -
487   - // 填充分公司下拉框options
488   - $('#brancheCompanySelect').html(options).select2();
489   -
490   - } else {
491   -
492   - // 查询出所属公司下的分公司名称和相应分公司代码
493   - $get('/business/all', {upCode_eq: businessCode}, function(array){
494   -
495   - // 遍历array
496   - $.each(array, function(i,d){
497   -
498   - options += '<option value="'+d.businessCode+'">'+d.businessName+'</option>';
499   -
500   - options += '</optgroup>';
501   -
502   - });
503   -
504   - // 填充分公司下拉框options
505   - $('#brancheCompanySelect').html(options).select2();
506   -
507   - });
508   - }
509   -
510   - });
511   -
512   -
513   - }, 500);
514   -
515   - });
516   -
517   - // 提交
518   - $('.button-submit').on('click',function() {
519   -
520   - form.submit();
521   -
522   - });
523   -
524   - $('#oppenDrawingManager').on('click',function() {
525   -
526   - drawingManager.open();
527   -
528   - // 设置属性
529   - drawingManager.setDrawingMode(BMAP_DRAWING_POLYGON);
530   -
531   - });
532   -
533   - $('#closeDrawingManager').on('click',function() {
534   -
535   - drawingManager.close();
536   - });
537   -
538   -</script>
539 410 \ No newline at end of file
  411 +
  412 +<!-- 表单元素事件JS类库 -->
  413 +<script src="/pages/base/carpark/js/add-form-events.js"></script>
  414 +
  415 +<!-- reload事件 -->
  416 +<script src="/pages/base/carpark/js/add-form-reload.js"></script>
540 417 \ No newline at end of file
... ...
src/main/resources/static/pages/base/carpark/edit.html
1 1 <!-- 编辑停车场 -->
2   -<div class="modal fade" id="edit_carPark_mobal" tabindex="-1" role="basic" aria-hidden="true">
  2 +<div class="modal fade" id="editPoitsions_carpark_mobal" tabindex="-1" role="basic" aria-hidden="true">
3 3  
4 4 <div class="modal-dialog">
5 5  
... ... @@ -60,16 +60,6 @@
60 60 </div>
61 61 </div>
62 62  
63   - <!-- 站点WGS经纬度 -->
64   - <div class="form-body">
65   - <div class="form-group">
66   - <label class="col-md-3 control-label">站点WGS经纬度:</label>
67   - <div class="col-md-6">
68   - <input type="text" class="form-control" name="gCenterPoint" id="gCenterPointInput">
69   - </div>
70   - </div>
71   - </div>
72   -
73 63 <!-- 范围图形类型 -->
74 64 <div class="form-body">
75 65 <div class="form-group">
... ... @@ -169,20 +159,32 @@
169 159 </div>
170 160 </div>
171 161 <script type="text/javascript">
172   -
173   -$(function(){
  162 +
  163 +$('#editPoitsions_carpark_mobal').on('editCarParkMobal_show', function(e, map,fun,carP,ajaxd){
  164 +
  165 + /** 获取停车场信息对象 */
  166 + var CarParkObj = carP.getEitdCarPark();
174 167  
175   - PublicFunctions.setFormValue();
  168 + // 获取修改停车场对象ID
  169 + var carParkId = CarParkObj.carParkId;
176 170  
177   - PublicFunctions.selectTemp(function() {
  171 + /** 根据修改停车场对象属性值 设值表单元素 @paran:<CarParkObj:停车场对象>*/
  172 + fun.setFormValue(CarParkObj);
  173 +
  174 + /** 填充公司下拉框 */
  175 + fun.selectTemp(function() {
178 176  
179   - var businessCode = carParkObj[0].carParkCompany;
  177 + // 获取公司代码
  178 + var businessCode = CarParkObj.carParkCompany;
180 179  
  180 + // 获取公司元素并设值
181 181 $('#companySelect').val(businessCode);
182 182  
183   - PublicFunctions.getbrancheCompanyValues(businessCode,function() {
  183 + /** 填充分公司下拉框 @param:<businessCode:公司代码> */
  184 + fun.getbrancheCompanyValues(businessCode,function() {
184 185  
185   - $('#brancheCompanySelect').val(carParkObj[0].carParkBrancheCompany);
  186 + // 获取分公司元素并设值
  187 + $('#brancheCompanySelect').val(CarParkObj.carParkBrancheCompany);
186 188  
187 189 });
188 190  
... ... @@ -225,19 +227,24 @@ $(function(){
225 227 }
226 228  
227 229 // 显示mobal
228   - $('#edit_carPark_mobal').modal({show : true,backdrop: 'static',keyboard: false});
  230 + $('#editPoitsions_carpark_mobal').modal({show : true,backdrop: 'static',keyboard: false});
229 231  
230 232 // 当调用 hide 实例方法时触发
231   - $('#edit_carPark_mobal').on('hide.bs.modal', function () {
  233 + $('#editPoitsions_carpark_mobal').on('hide.bs.modal', function () {
  234 +
  235 + clearSechear();
232 236  
233   - // 清楚地图覆盖物
234   - mapB.clearOverlays();
235   -
236   - carParkObj='';
237   -
238   - PublicFunctions.initCarPark();
239 237 });
240 238  
  239 + function clearSechear(){
  240 +
  241 + map.clearMarkAndOverlays();
  242 +
  243 + carP.setEitdCarPark({});
  244 +
  245 + fun.initCarPark(carParkId);
  246 +
  247 + }
241 248  
242 249 // 编辑表单元素
243 250 var form = $('#edit_carPark_form');
... ... @@ -304,17 +311,17 @@ $(function(){
304 311  
305 312 var params = form.serializeJSON();
306 313  
307   - params.createBy = carParkObj[0].carParkCreateBy;
  314 + params.createBy = CarParkObj.carParkCreateBy;
308 315  
309 316 // 定义日期格式
310 317 var fs = 'YYYY-MM-DD HH:mm:ss'
311 318  
312 319 // 设置日期
313   - params.createDate = moment(carParkObj[0].carParkCreateDate).format(fs);
  320 + params.createDate = moment(CarParkObj.carParkCreateDate).format(fs);
314 321  
315 322 error.hide();
316 323  
317   - PublicFunctions.carParkUpdate(params,function(resuntDate) {
  324 + ajaxd.carParkUpdate(params,function(resuntDate) {
318 325  
319 326 if(resuntDate.status=='SUCCESS') {
320 327  
... ... @@ -329,7 +336,9 @@ $(function(){
329 336  
330 337 }
331 338  
332   - $('#edit_carPark_mobal').modal('hide');
  339 + clearSechear();
  340 +
  341 + $('#editPoitsions_carpark_mobal').modal('hide');
333 342  
334 343 })
335 344  
... ...
src/main/resources/static/pages/base/carpark/edit_select.html
1 1 <!-- 选择编辑停车场方式 -->
2   -<div class="modal fade" id="edit_select_mobal" tabindex="-1" role="basic" aria-hidden="true">
  2 +<div class="modal fade" id="editPositions_select_mobal" tabindex="-1" role="basic" aria-hidden="true">
3 3  
4 4 <div class="modal-dialog">
5 5  
... ... @@ -62,16 +62,18 @@
62 62 </div>
63 63 <script type="text/javascript">
64 64  
65   -$(function(){
66   -
  65 +$('#editPositions_select_mobal').on('editSelectMobal_show', function(e, map,fun,carParkE,ajaxd){
  66 +
67 67 // 显示选择修改方式弹出层
68   - $('#edit_select_mobal').modal({show : true,backdrop: 'static',keyboard: false});
  68 + $('#editPositions_select_mobal').modal({show : true,backdrop: 'static',keyboard: false});
  69 +
  70 + var carParkObj = carParkE.getEitdCarPark();
69 71  
70 72 // 获取停车场名称元素并赋值
71   - $('#carParkNameboxInput').val(carParkObj[0].carParkName);
  73 + $('#carParkNameboxInput').val(carParkObj.carParkName);
72 74  
73 75 // 定义停车场图形类型
74   - var stationShapesTypeV = carParkObj[0].carParkShapesType;
  76 + var stationShapesTypeV = carParkObj.carParkShapesType;
75 77  
76 78 // 获取表单元素
77 79 var form = $('#edit_select');
... ... @@ -139,7 +141,7 @@ $(function(){
139 141 submitHandler : function(f) {
140 142  
141 143 // 隐藏弹出层
142   - $('#edit_select_mobal').modal('hide');
  144 + $('#editPositions_select_mobal').modal('hide');
143 145  
144 146 // 表单序列
145 147 var params = form.serializeJSON();
... ... @@ -149,20 +151,14 @@ $(function(){
149 151  
150 152 var eidtselect_ = params.editselect;
151 153  
152   - // 站点名称
153   - carParkObj[0].carParkName = editStationName;
  154 + // 设置停车场名称
  155 + carParkE.setEitdCarParkName(editStationName);
154 156  
155 157 if(eidtselect_==0){
156 158  
157   - // 清楚地图覆盖物
158   - mapB.clearOverlays();
159   -
160   - // 打开鼠标绘画工具
161   - drawingManager.open();
162   -
163   - // 设置属性
164   - drawingManager.setDrawingMode(BMAP_DRAWING_POLYGON);
  159 + WorldsBMap.localSearchFromAdreesToPoint(editStationName);
165 160  
  161 + map.openDrawingManager();
166 162  
167 163 }else if(eidtselect_==1){
168 164  
... ... @@ -171,7 +167,7 @@ $(function(){
171 167 shift: 0,time: 10000});
172 168  
173 169 // 编辑图形
174   - PublicFunctions.editShapes(stationShapesTypeV,mindex);
  170 + map.editShapes(stationShapesTypeV,mindex);
175 171  
176 172 }
177 173  
... ...
src/main/resources/static/pages/base/carpark/js/add-form-events.js 0 → 100644
  1 +$(function(){
  2 +
  3 + // 提交
  4 + $('.button-submit').on('click',function() {
  5 +
  6 + // 获取表单
  7 + var formSubm = $('#submit_carpark_form');
  8 +
  9 + formSubm.submit();
  10 +
  11 + });
  12 +
  13 + $('#oppenDrawingManager').on('click',function() {
  14 +
  15 + VmapWorlds.drawingManagerOpen();
  16 +
  17 + });
  18 +
  19 + $('#closeDrawingManager').on('click',function() {
  20 +
  21 + VmapWorlds.drawingManagerClose();
  22 +
  23 + });
  24 +
  25 +});
0 26 \ No newline at end of file
... ...
src/main/resources/static/pages/base/carpark/js/add-form-reload.js 0 → 100644
  1 +/**
  2 + *
  3 + * @JSName : list.js(停车场定位positions.html页面js)
  4 + *
  5 + * @Author : bsth@lq
  6 + *
  7 + * @Description : TODO(停车场定位positions.html页面js)
  8 + *
  9 + * @Data : 2016年4月28日 上午9:21:17
  10 + *
  11 + * @Version 公交调度系统BS版 0.1
  12 + *
  13 + */
  14 +
  15 +(function(){
  16 +
  17 + // 关闭左侧栏
  18 + if (!$('body').hasClass('page-sidebar-closed')) {
  19 +
  20 + $('.menu-toggler.sidebar-toggler').click();
  21 +
  22 + }
  23 +
  24 + setTimeout(function(){
  25 +
  26 + FormWizard.init();
  27 +
  28 + mapB = VmapWorlds.init();
  29 +
  30 + PublicFunctions.getCarParkCode(function(carParkCode) {
  31 +
  32 + $('#parkCodeInput').val(carParkCode);
  33 +
  34 + });
  35 +
  36 + $('#destroySelect').val('0');
  37 +
  38 + PublicFunctions.getBusinessAllInfo(function(array) {
  39 +
  40 + var opGroup = '<option value="">请选择...</option><optgroup label="公司">';
  41 +
  42 + var len_ = array.length;
  43 +
  44 + if(len_>0) {
  45 +
  46 + $.each(array, function(i, g){
  47 +
  48 + opGroup += '<option value="'+g.businessCode+'">'+g.businessName+'</option>';
  49 +
  50 + });
  51 +
  52 + }
  53 +
  54 + opGroup += '</optgroup>';
  55 +
  56 + $('#companySelect').html(opGroup).select2();
  57 +
  58 + });
  59 +
  60 + var htm = '<option value="">请选择...</option><optgroup label="公司">';
  61 +
  62 + $('#brancheCompanySelect').html(htm).select2();
  63 +
  64 + $('#companySelect').on("change", function (e) {
  65 +
  66 + // 获取公司下拉框选择值
  67 + var businessCode = $('#companySelect').val();
  68 +
  69 + // 分公司下拉框options属性值
  70 + var options = '<option value="">请选择...</option><optgroup label="分公司">';
  71 +
  72 + // 如果公司选择为空则分公司为空 ; 否则查询出所属公司下的分公司名称和相应分公司代码
  73 + if(businessCode == null || businessCode ==''){
  74 +
  75 + options += '</optgroup>';
  76 +
  77 + // 填充分公司下拉框options
  78 + $('#brancheCompanySelect').html(options).select2();
  79 +
  80 + } else {
  81 +
  82 + // 查询出所属公司下的分公司名称和相应分公司代码
  83 + $get('/business/all', {upCode_eq: businessCode}, function(array){
  84 +
  85 + // 遍历array
  86 + $.each(array, function(i,d){
  87 +
  88 + options += '<option value="'+d.businessCode+'">'+d.businessName+'</option>';
  89 +
  90 + options += '</optgroup>';
  91 +
  92 + });
  93 +
  94 + // 填充分公司下拉框options
  95 + $('#brancheCompanySelect').html(options).select2();
  96 +
  97 + });
  98 + }
  99 +
  100 + });
  101 +
  102 +
  103 + }, 500);
  104 +
  105 +})();
0 106 \ No newline at end of file
... ...
src/main/resources/static/pages/base/carpark/js/add-form-wizard.js
... ... @@ -17,6 +17,15 @@ var FormWizard = function() {
17 17  
18 18 }
19 19  
  20 + // 定义表单
  21 + var form = $('#submit_carpark_form');
  22 +
  23 + // 定义表单异常
  24 + var error = $('.alert-danger',form);
  25 +
  26 + // 定义表单成功
  27 + var success = $('.alert-success',form);
  28 +
20 29 // 表单验证
21 30 form.validate({
22 31  
... ... @@ -38,8 +47,43 @@ var FormWizard = function() {
38 47 // 必填项
39 48 required : true,
40 49  
41   - // 最大长度
42   - maxlength: 20
  50 + },
  51 +
  52 + // 停车场名称
  53 + 'parkName' : {
  54 +
  55 + // 必填项
  56 + required : true,
  57 +
  58 + },
  59 +
  60 + // 停车场编码
  61 + 'parkCode' : {
  62 +
  63 + // 必填项
  64 + required : true,
  65 + },
  66 +
  67 + // 中心点坐标
  68 + 'bCenterPoint' : {
  69 +
  70 + // 必填项
  71 + required : true,
  72 +
  73 + },
  74 +
  75 + // 图形类型
  76 + 'shapesType' : {
  77 +
  78 + // 必填项
  79 + required : true,
  80 + },
  81 +
  82 + // 所属分公司
  83 + 'brancheCompany' : {
  84 +
  85 + // 必填项
  86 + required : true,
43 87 }
44 88  
45 89  
... ... @@ -106,7 +150,7 @@ var FormWizard = function() {
106 150 // 表单序列化
107 151 var params = form.serializeJSON();
108 152  
109   - return params;
  153 + console.log(params);
110 154  
111 155 //保存站点
112 156 PublicFunctions.carParkSave(params,function(data) {
... ... @@ -215,98 +259,39 @@ var FormWizard = function() {
215 259  
216 260 if (current == 2) {
217 261  
  262 + // 获取新增方式值
218 263 var baseResValue = $('#submit_carpark_form input[name="baseRes"]:checked').val();
219 264  
  265 + // 获取停车场名称值
220 266 var stationNameV = $('#parkNamebooxtInput').val();
221 267  
  268 + // 设置停车场名称
222 269 $('#parkNameInput').val(stationNameV);
223 270  
224   - VmapWorlds.localSearchFromAdreesToPoint(stationNameV,mapB,function(Points) {
225   -
226   - if(Points) {
227   -
228   - var BJwpointsArray = Points.split(' ');
229   -
230   - var stationNameChangePoint = new BMap.Point(BJwpointsArray[0], BJwpointsArray[1]);
231   -
232   - marker_stargt2 = new BMap.Marker(stationNameChangePoint);
233   -
234   - var PanOptions ={noAnimation :true};
235   -
236   - mapB.panTo(stationNameChangePoint,PanOptions);
237   -
238   - mapB.panBy(0,100);
239   -
240   - // 将标注添加到地图中
241   - mapB.addOverlay(marker_stargt2);
242   -
243   - //跳动的动画
244   - marker_stargt2.setAnimation(BMAP_ANIMATION_BOUNCE);
245   -
246   - if(baseResValue == 0) {
247   -
248   - $('.leftUtils').hide();
249   -
250   - //创建圆
251   - circle = new BMap.Circle(stationNameChangePoint,150,{strokeColor:"blue", strokeWeight:2, strokeOpacity:0.5});
252   -
253   - // 百度地图添加覆盖物圆
254   - mapB.addOverlay(circle);
255   -
256   - // 开启编辑功能
257   - circle.enableEditing();
258   -
259   - // 编辑圆监听事件
260   - circle.addEventListener('remove',function() {
261   -
262   - // 清除marker
263   - mapB.removeOverlay(marker_stargt2);
264   -
265   - // 返回圆形的半径,单位为米。
266   - var newRadius = circle.getRadius();
267   -
268   - // 返回圆形的中心点坐标。
269   - var newCenter = circle.getCenter().lng + ' ' + circle.getCenter().lat;
270   -
271   - var centre_New = [{potion:{lng:circle.getCenter().lng,lat:circle.getCenter().lat}}];
272   -
273   - // 中心百度坐标转WGS坐标
274   - PublicFunctions.getFormPointEToWGS(centre_New,function(p) {
275   -
276   - // 设置修改站点参数集合
277   - PublicFunctions.setFormInputValue(newCenter, p[0].WGSpotion.Lng , p[0].WGSpotion.Lat,'','','r',Math.round(newRadius));
278   -
279   - });
280   -
281   - });
282   -
283   - }else if(baseResValue ==1) {
284   -
285   - VmapWorlds.drawingManagerOpen();
286   -
287   - }
288   -
289   - }else {
290   -
291   - // 弹出添加成功提示消息
292   - layer.msg('无法获取停车场【'+stationNameV+'】地理位置!');
293   -
294   - }
295   -
296   - });
297   -
  271 + VmapWorlds.localSearchFromAdreesToPoint(stationNameV,function(p) {
  272 +
  273 + if(p) {
  274 +
  275 + if(baseResValue == 0) {
  276 +
  277 + debugger;
  278 +
  279 + $('.leftUtils').hide();
  280 +
  281 + VmapWorlds.pointsCircle(p);
  282 +
  283 + }else if(baseResValue ==1) {
  284 +
  285 + $('.leftUtils').show();
  286 +
  287 + VmapWorlds.drawingManagerOpen();
  288 +
  289 + }
  290 + }
  291 +
  292 + });
298 293 }
299 294  
300   - if(current == 3){
301   -
302   - mapB.clearOverlays();
303   -
304   - circle = '';
305   -
306   - drawingManager.close();
307   -
308   - }
309   -
310 295 /** 如果为最后一步显示提交按钮,隐藏下一步按钮,否则隐藏提交按钮,显示下一步按钮 */
311 296 if (current >= total) {
312 297  
... ... @@ -373,9 +358,11 @@ var FormWizard = function() {
373 358  
374 359 }
375 360  
376   - mapB.clearOverlays();
377   -
378   - circle = '';
  361 + if(index==2) {
  362 +
  363 + VmapWorlds.clearMarkAndOverlays();
  364 +
  365 + }
379 366  
380 367 handleTitle(tab, navigation, index);
381 368  
... ... @@ -388,11 +375,7 @@ var FormWizard = function() {
388 375  
389 376 error.hide();
390 377  
391   - mapB.clearOverlays();
392   -
393   - circle = '';
394   -
395   - drawingManager.close();
  378 + VmapWorlds.clearMarkAndOverlays();
396 379  
397 380 handleTitle(tab, navigation, index);
398 381  
... ...
src/main/resources/static/pages/base/carpark/js/add-input-function.js
1 1 /**
2 2 * 函数
3 3 *
4   - * - - - - - - - 》 getCurrSelNode : 获取选中树节点数据函数
5   - *
6   - * - - - - - - - 》 resjtreeDate : 刷新树函数函数
7   - *
8   - * - - - - - - - 》 setFormInputValue : 新增站点参数集合赋值函数
9   - *
10   - * - - - - - - - 》 editSetStationParmas : 编辑站点参数集合赋值函数
11   - *
12   - * - - - - - - - 》 editSeteditStationParmasValue:编辑站点范围图形参数集合赋值函数
13   - *
14   - * - - - - - - - 》 lineNameIsHaveInterval : 系统规划时线路名称是否为区间
15   - *
16   - * - - - - - - - 》 systemLineStation:系统规划保存函数
17   - *
18   - * - - - - - - - 》 stationRevoke :撤销站点
19   - *
20   - * - - - - - - - 》 editLinePlan :编辑线路走向
21   - *
22   - * - - - - - - - 》 setFormValue :编辑站点设置表单元素值
23   - *
24   - * - - - - - - - 》 eachSectionList:路段折线百度坐标转WGS坐标
25 4 */
26 5  
27 6 var PublicFunctions = function () {
28 7  
29 8 var PubFun = {
30 9  
31   - // 原百度坐标转WGS坐标
32   - getFormPointEToWGS: function(points,callback) {
33   -
34   - // 获取长度
35   - var len = points.length;
36   -
37   - (function(){
38   -
39   - if (!arguments.callee.count) {
40   -
41   - arguments.callee.count = 0;
42   -
43   - }
44   -
45   - arguments.callee.count++;
46   -
47   - var index = parseInt(arguments.callee.count) - 1;
48   -
49   - if (index >= len) {
50   -
51   - callback && callback(points);
52   -
53   - return;
54   - }
55   -
56   - var f = arguments.callee;
57   -
58   - $.ajax({
59   -
60   - url: 'http://api.zdoz.net/bd2wgs.aspx',
61   -
62   - data: {lat: points[index].potion.lat , lng: points[index].potion.lng},
63   -
64   - dataType: 'jsonp',
65   -
66   - success: function(r){
67   -
68   - if(r) {
69   -
70   - points[index].WGSpotion = r;
71   -
72   - }
73   -
74   - f();
75   - }
76   - });
77   -
78   - })();
79   -
80   - },
81   -
82   - /** @param points:中心点 ;gLonx:中心点WGS经度;gLaty:中心点WGS纬度;bPolygonGridValue:百度坐标点图形集合;gPolygonGridVlaue:WGS坐标点图形集合;shapesTypeValue:范围图形类型;radiusValue:圆半径 */
83   - setFormInputValue: function(points,gLonx,gLaty,bPolygonGridValue,gPolygonGridVlaue,shapesTypeValue,radiusValue) {
  10 + /** @param points:中心点;bPolygonGridValue:百度坐标点图形集合;shapesTypeValue:范围图形类型;radiusValue:圆半径 */
  11 + setFormInputValue: function(points,bPolygonGridValue,shapesTypeValue,radiusValue) {
84 12  
85 13 // 百度地图经纬度坐标中心点
86 14 $('#bCenterPointInput').val(points);
87 15  
88   - // WGS经纬度
89   - $('#gCenterPointInput').val(gLonx + ' ' + gLaty);
90   -
91 16 // 百度坐标点图形集合
92 17 $('#bParkPointInput').val(bPolygonGridValue);
93 18  
94   - // WGS坐标点图形集合
95   - $('#gParkPointInput').val(gPolygonGridVlaue);
96   -
97 19 // 图形类型
98 20 $('#shapesTypeSelect').val(shapesTypeValue);
99 21  
... ... @@ -113,8 +35,6 @@ var PublicFunctions = function () {
113 35  
114 36 },
115 37  
116   -
117   -
118 38 getCarParkCode : function(callback) {
119 39  
120 40 $get('/carpark/getCarParkCode',null,function(carParkCode) {
... ... @@ -128,6 +48,10 @@ var PublicFunctions = function () {
128 48 // 新增站点保存
129 49 carParkSave : function(carPark,callback) {
130 50  
  51 + console.log(carPark);
  52 +
  53 + return;
  54 +
131 55 $post('/carpark/carParkSave',carPark,function(data) {
132 56  
133 57 callback && callback(data);
... ...
src/main/resources/static/pages/base/carpark/js/add-vmap-world.js
1 1 var VmapWorlds = function() {
2 2  
  3 + var mapB = '', circle = '', drawingManager = '',circle='',marker='';
  4 +
3 5 var Bmap = {
4 6  
5 7 init : function() {
... ... @@ -11,22 +13,22 @@ var VmapWorlds = function() {
11 13 var bdKey = 'IGGrr4UjwIYzatoCRFKEL8sT';
12 14  
13 15 // 初始化百度地图
14   - var map = new BMap.Map("bmap_basic");
  16 + mapB = new BMap.Map("bmap_basic");
15 17  
16 18 //中心点和缩放级别
17   - map.centerAndZoom(new BMap.Point(CENTER_POINT.lng,CENTER_POINT.lat), 15);
  19 + mapB.centerAndZoom(new BMap.Point(CENTER_POINT.lng,CENTER_POINT.lat), 15);
18 20  
19 21 //启用地图拖拽事件,默认启用(可不写)
20   - map.enableDragging();
  22 + mapB.enableDragging();
21 23  
22 24 //启用地图滚轮放大缩小
23   - map.enableScrollWheelZoom();
  25 + mapB.enableScrollWheelZoom();
24 26  
25 27 //禁用鼠标双击放大
26   - map.disableDoubleClickZoom();
  28 + mapB.disableDoubleClickZoom();
27 29  
28 30 //启用键盘上下左右键移动地图
29   - map.enableKeyboard();
  31 + mapB.enableKeyboard();
30 32  
31 33 var styleOptions = {
32 34  
... ... @@ -51,7 +53,7 @@ var VmapWorlds = function() {
51 53 };
52 54  
53 55 // 创建鼠标绘制管理类
54   - drawingManager = new BMapLib.DrawingManager(map, {
  56 + drawingManager = new BMapLib.DrawingManager(mapB, {
55 57  
56 58 //是否开启绘制模式
57 59 isOpen : false,
... ... @@ -82,15 +84,16 @@ var VmapWorlds = function() {
82 84  
83 85 drawingManager.close();
84 86  
85   - if (e.getPath().length <= 2) {
  87 + if (e.getPath().length <= 2) {
86 88  
87 89 // 弹出提示消息
88 90 layer.msg('坐标点不能小于等于两个...');
89 91  
90 92 // 清除地图覆盖物
91   - map.clearOverlays();
  93 + mapB.clearOverlays();
92 94  
93   - // 加载该线路下所有站点位置添加到地图上
  95 + drawingManager.open();
  96 +
94 97 return false;
95 98  
96 99 }else {
... ... @@ -100,70 +103,37 @@ var VmapWorlds = function() {
100 103 // 多变行质心点
101 104 var addSttationPoints_ = pointE.getBounds().getCenter().lng+ ' ' + pointE.getBounds().getCenter().lat;
102 105  
103   - var PointsList = [];
104   -
105   - for ( var i = 0; i < pointE.getPath().length; i++) {
106   -
107   - PointsList.push({potion: {lng: pointE.getPath()[i].lng, lat: pointE.getPath()[i].lat}});
108   -
109   - }
110   -
111   - PointsList.push({potion: {lng: pointE.getPath()[0].lng, lat: pointE.getPath()[0].lat}});
  106 + var addPolyGonLen_ = pointE.getPath().length;
112 107  
113   - var centre = [{potion:{lng:pointE.getBounds().getCenter().lng,lat:pointE.getBounds().getCenter().lat}}];
114   -
115   - PublicFunctions.getFormPointEToWGS(PointsList,function(resultdata) {
116   -
117   - var gPloygonGrid = '';
118   -
119   - var bPloygonGrid = '';
  108 + for(var k =0;k<addPolyGonLen_;k++) {
120 109  
121   - for(var k =0;k<resultdata.length;k++) {
  110 + if(k==0) {
122 111  
123   - if(k==0) {
124   -
125   - gPloygonGrid = resultdata[k].WGSpotion.Lng + ' ' +resultdata[k].WGSpotion.Lat;
126   -
127   - bPloygonGrid = resultdata[k].potion.lng + ' ' +resultdata[k].potion.lat;
128   -
129   - }else {
130   -
131   - gPloygonGrid = gPloygonGrid + ',' + resultdata[k].WGSpotion.Lng + ' ' +resultdata[k].WGSpotion.Lat;
132   -
133   - bPloygonGrid = bPloygonGrid + ',' + resultdata[k].potion.lng + ' ' +resultdata[k].potion.lat;
134   -
135   - }
  112 + bPloygonGrid = pointE.getPath()[k].lng + ' ' + pointE.getPath()[k].lat;
136 113  
137   - }
138   -
139   - gPloygonGrid = 'POLYGON((' + gPloygonGrid + '))';
140   -
141   - bPloygonGrid = 'POLYGON((' + bPloygonGrid + '))';
142   -
143   - PublicFunctions.getFormPointEToWGS(centre,function(p) {
144   -
145   - var gLonx = p[0].WGSpotion.Lng;
  114 + }else {
146 115  
147   - var gLaty = p[0].WGSpotion.Lat;
148   -
149   - PublicFunctions.setFormInputValue(addSttationPoints_,gLonx,gLaty,bPloygonGrid,gPloygonGrid,'d','');
150   -
151   - });
152   -
153   - });
  116 + bPloygonGrid = bPloygonGrid + ',' + pointE.getPath()[k].lng + ' ' + pointE.getPath()[k].lat;
  117 +
  118 + }
  119 +
  120 + }
  121 +
  122 + bPloygonGrid = bPloygonGrid + ',' + pointE.getPath()[0].lng + ' ' + pointE.getPath()[0].lat;
154 123  
  124 + PublicFunctions.setFormInputValue(addSttationPoints_,bPloygonGrid,'d','');
155 125 }
156 126  
157 127 });
158 128  
159   - return map;
  129 + return mapB;
160 130 },
161 131  
162 132 // 根据地理名称获取百度经纬度坐标
163   - localSearchFromAdreesToPoint: function(Address,map,callback) {
  133 + localSearchFromAdreesToPoint: function(Address,cb) {
164 134  
165 135 // 创建一个搜索类实例
166   - var localSearch = new BMap.LocalSearch(map);
  136 + var localSearch = new BMap.LocalSearch(mapB);
167 137  
168 138 // 检索完成后的回调函数。
169 139 localSearch.setSearchCompleteCallback(function (searchResult) {
... ... @@ -178,19 +148,42 @@ var VmapWorlds = function() {
178 148 if(poi) {
179 149  
180 150 //获取经度和纬度
181   - resultPoints = poi.point.lng + ' ' + poi.point.lat;
182   -
183   - return callback && callback(resultPoints);
  151 + var stationNameChangePoint = new BMap.Point( poi.point.lng, poi.point.lat);
  152 +
  153 + marker = new BMap.Marker(stationNameChangePoint);
  154 +
  155 + var PanOptions ={noAnimation :true};
  156 +
  157 + mapB.panTo(stationNameChangePoint,PanOptions);
  158 +
  159 + // 将视图切换到指定的缩放等级,中心点坐标不变。注意:当有信息窗口在地图上打开时,地图缩放将保证信息窗口所在的坐标位置不动。(自1.2新增)
  160 + mapB.setZoom(18);
  161 +
  162 + mapB.panBy(0,-80);
  163 +
  164 + // 将标注添加到地图中
  165 + mapB.addOverlay(marker);
  166 +
  167 + //跳动的动画
  168 + marker.setAnimation(BMAP_ANIMATION_BOUNCE);
  169 +
  170 + cb && cb(stationNameChangePoint);
184 171  
185 172 }else {
186 173  
187   - return callback && callback(false);
  174 + // 弹出添加成功提示消息
  175 + layer.msg('无法获取停车场【'+Address+'】地理位置!');
  176 +
  177 + cb && cb(false);
188 178  
189 179 }
190 180  
191 181 }else {
192 182  
193   - return callback && callback(false);
  183 + // 弹出添加成功提示消息
  184 + layer.msg('无法获取停车场【'+Address+'】地理位置!');
  185 +
  186 + cb && cb(false);
194 187 }
195 188  
196 189 });
... ... @@ -200,6 +193,42 @@ var VmapWorlds = function() {
200 193  
201 194 },
202 195  
  196 + // 画圆
  197 + pointsCircle : function(stationNameChangePoint) {
  198 +
  199 + //创建圆
  200 + circle = new BMap.Circle(stationNameChangePoint,100,{strokeColor:"blue", strokeWeight:2, strokeOpacity:0.5});
  201 +
  202 + // 百度地图添加覆盖物圆
  203 + mapB.addOverlay(circle);
  204 +
  205 + // 开启编辑功能
  206 + circle.enableEditing();
  207 +
  208 + // 编辑圆监听事件
  209 + circle.addEventListener('remove',function() {
  210 +
  211 + // 清除marker
  212 + mapB.removeOverlay(marker);
  213 +
  214 + /*VmapWorlds.clearMarkAndOverlays();*/
  215 +
  216 + // 返回圆形的半径,单位为米。
  217 + var newRadius = circle.getRadius();
  218 +
  219 + // 返回圆形的中心点坐标。
  220 + var newCenter = circle.getCenter().lng + ' ' + circle.getCenter().lat;
  221 +
  222 + var centre_New = [{potion:{lng:circle.getCenter().lng,lat:circle.getCenter().lat}}];
  223 +
  224 + circle = '';
  225 +
  226 + PublicFunctions.setFormInputValue(newCenter,'','r',Math.round(newRadius));
  227 +
  228 + });
  229 +
  230 + },
  231 +
203 232 // 打开绘画工具
204 233 drawingManagerOpen : function() {
205 234  
... ... @@ -209,10 +238,21 @@ var VmapWorlds = function() {
209 238 // 设置属性
210 239 drawingManager.setDrawingMode(BMAP_DRAWING_POLYGON);
211 240  
  241 + },
  242 +
  243 + drawingManagerClose : function() {
  244 +
  245 + drawingManager.close();
  246 +
  247 + },
  248 +
  249 + clearMarkAndOverlays : function() {
  250 +
  251 + // 清楚地图覆盖物
  252 + mapB.clearOverlays();
  253 +
212 254 }
213 255  
214   -
215   -
216 256 }
217 257  
218 258 return Bmap;
... ...
src/main/resources/static/pages/base/carpark/js/carpark-list-table.js
... ... @@ -101,8 +101,6 @@
101 101 // 异步请求获取表格数据
102 102 $.get('/carpark',params,function(result){
103 103  
104   - console.log(result);
105   -
106 104 // 添加序号
107 105 result.content.page = page;
108 106  
... ...
src/main/resources/static/pages/base/carpark/js/carpark-positions-ajax.js 0 → 100644
  1 +/**
  2 + * GetAjaxData :ajax异步请求
  3 + *
  4 + */
  5 +
  6 +var GetAjaxData = function(){
  7 +
  8 + var ajaxData = {
  9 +
  10 + // 查询停车场信息
  11 + getCarParkInfo : function(carParkId,callback){
  12 +
  13 + $get('/carpark/findCarParkInfoFormId',{id:carParkId},function(r) {
  14 +
  15 + return callback && callback(r);
  16 +
  17 + });
  18 +
  19 + },
  20 +
  21 + carParkUpdate : function(params,callback){
  22 +
  23 + $post('/carpark/carParkUpdate',params,function(data) {
  24 +
  25 + callback && callback(data);
  26 +
  27 + });
  28 +
  29 + }
  30 + }
  31 +
  32 + return ajaxData;
  33 +
  34 +}();
0 35 \ No newline at end of file
... ...
src/main/resources/static/pages/base/carpark/js/carpark-positions-events.js
... ... @@ -9,7 +9,13 @@ $(function(){
9 9  
10 10 $('#edit').on('click',function() {
11 11  
12   - $.get('edit_select.html', function(m){$(pjaxContainer).append(m);});
  12 + $.get('edit_select.html', function(m){
  13 +
  14 + $(pjaxContainer).append(m);
  15 +
  16 + $('#editPositions_select_mobal').trigger('editSelectMobal_show', [WorldsBMap,PublicFunctions,EditCarParkObj,GetAjaxData]);
  17 +
  18 + });
13 19  
14 20 });
15 21  
... ...
src/main/resources/static/pages/base/carpark/js/carpark-positions-function.js
1 1 /**
2 2 * 函数
  3 + *
  4 + * initCarPark :停车场信息初始化 @param:<id:停车场ID>
3 5 */
4 6  
5 7 var PublicFunctions = function () {
6 8  
7 9 var PubFun = {
8 10  
9   - initCarPark : function() {
  11 + /** 停车场信息初始化 @param:<id:停车场ID> */
  12 + initCarPark : function(id) {
10 13  
11   - // 获取停车场信息
12   - PublicFunctions.getCarParkInfo(function(r) {
13   -
14   - console.log(r);
  14 + /** 获取停车场信息 @param:<id:停车场Id> */
  15 + GetAjaxData.getCarParkInfo(id,function(r) {
15 16  
  17 + // 获取返回数据长度
16 18 var len = r.length;
17 19  
  20 + // 如果大于零
18 21 if(len>0) {
19 22  
20   - carParkObj = r;
  23 + // 获取停车场信息数据
  24 + var carParkObj = r[0];
  25 +
  26 + /** 设置停车场对象值 @param:<carParkObj:停车场对象值> */
  27 + EditCarParkObj.setEitdCarPark(carParkObj);
21 28  
  29 + // 定义图形类型
22 30 var stationShapesType = r[0].carParkShapesType;
23 31  
  32 + // 如果为空,则添加
24 33 if(stationShapesType==null){
25 34  
26 35 // 弹出选择框;确认则提交;取消则返回
27   - layer.confirm('停车场位置缺失,自动延续为添加停车场位置', {
28   - btn : [ '确认提示并提交', '取消' ]
29   - }, function(index) {
  36 + layer.confirm('停车场位置缺失,自动延续为添加停车场位置', {btn : [ '确认提示并添加', '取消' ]}, function(index) {
30 37  
31   - var stationNameV = r[0].carParkName;
32   -
33   - WorldsBMap.localSearchFromAdreesToPoint(stationNameV,mapB,function(Points) {
34   -
35   - if(Points) {
36   -
37   - var BJwpointsArray = Points.split(' ');
38   -
39   - var stationNameChangePoint = new BMap.Point(BJwpointsArray[0], BJwpointsArray[1]);
40   -
41   - marker_stargt2 = new BMap.Marker(stationNameChangePoint);
42   -
43   - var PanOptions ={noAnimation :true};
44   -
45   - mapB.panTo(stationNameChangePoint,PanOptions);
46   -
47   - mapB.panBy(0,-200);
48   -
49   - // 将标注添加到地图中
50   - mapB.addOverlay(marker_stargt2);
51   -
52   - //跳动的动画
53   - marker_stargt2.setAnimation(BMAP_ANIMATION_BOUNCE);
54   -
55   - }
56   -
57   - });
58   -
59   - // 关闭弹出层
  38 + /** 关闭弹出层 @param:<index:当前弹出框> */
60 39 layer.close(index);
61 40  
62   - // 清楚地图覆盖物
63   - mapB.clearOverlays();
  41 + // 停车场名称
  42 + var nameV = r[0].carParkName;
64 43  
65   - // 打开鼠标绘画工具
66   - drawingManager.open();
  44 + /** 根据名称定位 */
  45 + WorldsBMap.localSearchFromAdreesToPoint(nameV);
67 46  
68   - // 设置属性
69   - drawingManager.setDrawingMode(BMAP_DRAWING_POLYGON);
  47 + // 打开绘制工具
  48 + WorldsBMap.openDrawingManager();
70 49  
71 50 });
72 51  
... ... @@ -80,13 +59,16 @@ var PublicFunctions = function () {
80 59 var point = new BMap.Point(BJwpoints[0], BJwpoints[1]);
81 60  
82 61 var htm = '<HR style="border:1 dashed #987cb9" width="100%" color=#987cb9 SIZE=1>'+
83   - '<span style="color:#DDD;font-size: 15px;">停车场名称:' + r[0].carParkName + '</span>' +
84   - '<span class="help-block" style="color:#DDD;font-size: 15px;">停车场编码:' + r[0].carParkCode + '</span>' +
85   - '<span class="help-block" style="color:#DDD;font-size: 15px;">停车场面积:' + r[0].carParkArea + '</span>' +
86   - '<span class="help-block" style="color:#DDD;font-size: 15px;">纬度坐标:' + r[0].stationJwpoints + '</span>' +
87   - '<span class="help-block" style="color:#DDD;font-size: 15px;">范围半径:' + r[0].carParkRadius + '</span>' +
88   - '<span class="help-block" style="color:#DDD;font-size: 15px;">版本 号:' + r[0].carParkVersions + '</span>' +
89   - '<span class="help-block" style="width: 100%;font-size: 15px;;color:#DDD; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; " title="'+ 'ddd' +'" >说明/描述:' + 'ddd' + '</span>' ;
  62 + '<span style="color:#DDD;font-size: 15px;">停车场名称:' + r[0].carParkName + '</span>' +
  63 + '<span class="help-block" style="color:#DDD;font-size: 15px;">停车场编码:' + r[0].carParkCode + '</span>' +
  64 + '<span class="help-block" style="color:#DDD;font-size: 15px;">停车场面积:' + r[0].carParkArea + '</span>' +
  65 + '<span class="help-block" style="color:#DDD;font-size: 15px;">纬度坐标:' + r[0].carParkBcenterPoint + '</span>' +
  66 + '<span class="help-block" style="color:#DDD;font-size: 15px;">范围类型:' + r[0].carParkShapesType + '</span>' +
  67 + '<span class="help-block" style="color:#DDD;font-size: 15px;">范围半径:' + r[0].carParkRadius + '</span>' +
  68 + '<span class="help-block" style="color:#DDD;font-size: 15px;">所属公司:' + r[0].carParkCompany + '</span>' +
  69 + '<span class="help-block" style="color:#DDD;font-size: 15px;">分 公司:' + r[0].carParkBrancheCompany + '</span>' +
  70 + '<span class="help-block" style="color:#DDD;font-size: 15px;">版本 号:' + r[0].carParkVersions + '</span>' +
  71 + '<span class="help-block" style="width: 100%;font-size: 15px;;color:#DDD; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; " title="'+ r[0].carParkDescriptions +'" >说明/描述:' + r[0].carParkDescriptions + '</span>' ;
90 72  
91 73 // 信息窗口参数属性
92 74 var opts = {
... ... @@ -98,7 +80,7 @@ var PublicFunctions = function () {
98 80 height : 450,
99 81  
100 82 // 信息窗位置偏移值。
101   - offset: new BMap.Size(500,-80),
  83 + offset: new BMap.Size(500,80),
102 84  
103 85 //标题
104 86 title : '<h4 style="color:#FFFFFF">'+r[0].carParkName+'停车场详情</h4>',
... ... @@ -115,13 +97,13 @@ var PublicFunctions = function () {
115 97  
116 98 if(stationShapesType == 'r') {
117 99  
118   - // 画圆
119   - PublicFunctions.pointsCircle(r,point,htm,opts,mapB);
  100 + /** 画圆 @param:<r:停车场信息;point:中心点;htm:信息窗口html文本;pots:信息窗口参数属性> */
  101 + WorldsBMap.pointsCircle(r,point,htm,opts);
120 102  
121 103 }else if(stationShapesType == 'd'){
122 104  
123   - // 画多边形
124   - PublicFunctions.pointsPolygon(r,point,htm,opts,mapB);
  105 + /** 画多边形 @param:<r:停车场信息;point:中心点;htm:信息窗口html文本;pots:信息窗口参数属性> */
  106 + WorldsBMap.pointsPolygon(r,point,htm,opts);
125 107  
126 108 }
127 109 }
... ... @@ -130,351 +112,27 @@ var PublicFunctions = function () {
130 112  
131 113 },
132 114  
133   - // 查询停车场信息
134   - getCarParkInfo : function(callback){
135   -
136   - $get('/carpark/findCarParkInfoFormId',{id:id},function(r) {
137   -
138   - return callback && callback(r);
139   -
140   - });
141   -
142   - },
143   -
144   - // 在地图上画圆
145   - pointsCircle : function(r,point,htm,opts,map) {
146   -
147   - //创建圆
148   - circle = new BMap.Circle(point,r[0].carParkRadius,{strokeColor:"blue", strokeWeight:2, strokeOpacity:0.5});
149   -
150   - // 允许覆盖物在map.clearOverlays方法中被清除
151   - circle.enableMassClear();
152   -
153   - // 百度地图添加覆盖物圆
154   - map.addOverlay(circle);
155   -
156   - // 创建信息窗口
157   - infoWindow = new BMap.InfoWindow(htm, opts);
158   -
159   - // 自定义标注物图片
160   - var icon_target = new BMap.Icon('/pages/base/stationroute/css/img/cz.png',new BMap.Size(20, 20));
161   -
162   - // 创建点
163   - marker = new BMap.Marker(point,{icon : icon_target});
164   -
165   - // 把标注添物加到地图上
166   - map.addOverlay(marker);
167   -
168   - setTimeout(function(){
169   - //开启信息窗口
170   - marker.openInfoWindow(infoWindow,point);
171   -
172   - },100);
173   -
174   - // 是否在平移过程中禁止动画。(自1.2新增)
175   - var PanOptions_ ={noAnimation :true};
176   -
177   - // 将地图的中心点更改为给定的点。
178   - map.panTo(point,PanOptions_);
179   -
180   - //map.panBy(10,-50,PanOptions_);
181   -
182   - // 添加标志物监听事件
183   - marker.addEventListener("click",function() {
184   -
185   - //开启信息窗口
186   - marker.openInfoWindow(infoWindow,point);
187   -
188   - });
189   - },
190   -
191   - pointsPolygon : function(r,pointPolygon,htm,opts_polygon,map) {
192   -
193   - // 获取多边形坐标字符串
194   - var stationBPolygonGrid = r[0].carParkBparkPoint;
195   -
196   - // 截取多边形坐标字符串
197   - var stationBPolygonGridStr = stationBPolygonGrid.substring(9,stationBPolygonGrid.length-2);
198   -
199   - // 按逗号切割
200   - var pointPolygonArray = stationBPolygonGridStr.split(',');
201   -
202   - // 多边形坐标集合
203   - var polygonP = [];
204   -
205   - for(var v = 0;v<pointPolygonArray.length;v++) {
206   -
207   - polygonP.push(new BMap.Point(pointPolygonArray[v].split(" ")[0],pointPolygonArray[v].split(" ")[1]));
208   -
209   - }
210   -
211   - // 画多边形
212   - polygon = new BMap.Polygon(polygonP, {
213   -
214   - // 线条显色
215   - strokeColor : "blue",
216   -
217   - // 边线的宽度,以像素为单位。
218   - strokeWeight : 2,
219   -
220   - // 边线透明度,取值范围0 - 1。
221   - strokeOpacity : 0.5
222   - });
223   -
224   - // 增加地图覆盖物多边形
225   - map.addOverlay(polygon);
226   -
227   - // 创建信息窗口
228   - infoWindow = new BMap.InfoWindow(htm, opts_polygon);
229   -
230   - // 自定义标注物图片
231   - var icon_target = new BMap.Icon('/pages/base/stationroute/css/img/cz.png',new BMap.Size(20, 20));
232   -
233   - // 创建点
234   - marker = new BMap.Marker(pointPolygon,{icon : icon_target});
235   -
236   - // 把标注添物加到地图上
237   - map.addOverlay(marker);
238   -
239   - // 是否在平移过程中禁止动画。(自1.2新增)
240   - var PanOptions_ ={noAnimation :true};
241   -
242   - // 将地图的中心点更改为给定的点。
243   - map.panTo(pointPolygon,PanOptions_);
244   -
245   - // 将地图在水平位置上移动x像素,垂直位置上移动y像素。
246   - map.panBy(10,110,PanOptions_);
247   -
248   - //开启信息窗口
249   - marker.openInfoWindow(infoWindow,pointPolygon);
250   -
251   - },
252   -
253   - // 编辑图形
254   - editShapes : function(stationShapesTypeV,mindex) {
255   -
256   - // 关闭信息窗口
257   - marker.closeInfoWindow();
258   -
259   - // 清除marker
260   - mapB.removeOverlay(marker);
261   -
262   - // 编辑圆
263   - if(stationShapesTypeV =='r') {
264   -
265   - // 开启编辑功能
266   - circle.enableEditing();
267   -
268   - // 编辑圆监听事件
269   - circle.addEventListener('dblclick',function() {
270   -
271   - // 关闭提示弹出层
272   - layer.close(mindex);
273   -
274   - // 返回圆形的半径,单位为米。
275   - var newRadius = circle.getRadius();
276   -
277   - // 返回圆形的中心点坐标。
278   - var newCenter = circle.getCenter().lng + ' ' + circle.getCenter().lat;
279   -
280   - var centre_New = [{potion:{lng:circle.getCenter().lng,lat:circle.getCenter().lat}}];
281   -
282   - // 中心百度坐标转WGS坐标
283   - PublicFunctions.getFormPointEToWGS(centre_New,function(p) {
284   -
285   - // 设置修改站点参数集合
286   - PublicFunctions.editSeteditStationParmasValue(newCenter, p[0].WGSpotion.Lng , p[0].WGSpotion.Lat,'','','r',Math.round(newRadius));
287   -
288   - // 加载编辑页面
289   - $.get('edit.html', function(m){$(pjaxContainer).append(m);});
290   -
291   - });
292   -
293   - });
294   -
295   - // 编辑多变行
296   - }else if(stationShapesTypeV =='d') {
297   -
298   - // 开启编辑功能(自 1.1 新增)
299   - polygon.enableEditing();
300   -
301   - // 添加多变行编辑事件
302   - polygon.addEventListener('dblclick',function(e) {
303   -
304   - // 获取编辑的多边形对象
305   - var edit_pointE = polygon;
306   -
307   - // 多边形坐标点集合
308   - var eidt_PointsList = [];
309   -
310   - for ( var i = 0; i < edit_pointE.getPath().length; i++) {
311   -
312   - eidt_PointsList.push({potion: {lng: edit_pointE.getPath()[i].lng, lat: edit_pointE.getPath()[i].lat}});
313   -
314   - }
315   -
316   - eidt_PointsList.push({potion: {lng: edit_pointE.getPath()[0].lng, lat: edit_pointE.getPath()[0].lat}});
317   -
318   - var edit_centre = [{potion:{lng:edit_pointE.getBounds().getCenter().lng,lat:edit_pointE.getBounds().getCenter().lat}}];
319   -
320   - // 多边形中心点
321   - var centre_points = edit_pointE.getBounds().getCenter().lng + ' ' + edit_pointE.getBounds().getCenter().lat;
322   -
323   - // 多边形坐标点集合转WGS坐标
324   - PublicFunctions.getFormPointEToWGS(eidt_PointsList,function(resultdata) {
325   -
326   - // 多边形WGS坐标字符串
327   - var eidt_gPloygonGrid = '';
328   -
329   - // 百度坐标字符串
330   - var edit_bPloygonGrid = '';
331   -
332   - for(var k =0;k<resultdata.length;k++) {
333   -
334   - if(k==0) {
335   -
336   - eidt_gPloygonGrid = resultdata[k].WGSpotion.Lng + ' ' +resultdata[k].WGSpotion.Lat;
337   -
338   - edit_bPloygonGrid = resultdata[k].potion.lng + ' ' +resultdata[k].potion.lat;
339   -
340   - }else {
341   -
342   - eidt_gPloygonGrid = eidt_gPloygonGrid + ',' + resultdata[k].WGSpotion.Lng + ' ' +resultdata[k].WGSpotion.Lat;
343   -
344   - edit_bPloygonGrid = edit_bPloygonGrid + ',' + resultdata[k].potion.lng + ' ' +resultdata[k].potion.lat;
345   -
346   - }
347   -
348   - }
349   -
350   - eidt_gPloygonGrid = 'POLYGON((' + eidt_gPloygonGrid + '))';
351   -
352   - edit_bPloygonGrid = 'POLYGON((' + edit_bPloygonGrid + '))';
353   -
354   - // 中心点坐标转WGS坐标
355   - PublicFunctions.getFormPointEToWGS(edit_centre,function(p) {
356   -
357   - var edit_gLonx = p[0].WGSpotion.Lng;
358   -
359   - var edit_gLaty = p[0].WGSpotion.Lat;
360   -
361   - // 设置编辑站点参宿集合
362   - PublicFunctions.editSeteditStationParmasValue(centre_points,edit_gLonx,edit_gLaty,edit_bPloygonGrid,eidt_gPloygonGrid,'d','');
363   -
364   - // 加载编辑页面
365   - $.get('edit.html', function(m){$(pjaxContainer).append(m);});
366   -
367   - });
368   -
369   - });
370   - });
371   -
372   - }
373   -
374   - },
375   -
376   - // 原百度坐标转WGS坐标
377   - getFormPointEToWGS: function(points,callback) {
378   -
379   - // 获取长度
380   - var len = points.length;
381   -
382   - (function(){
383   -
384   - if (!arguments.callee.count) {
385   -
386   - arguments.callee.count = 0;
387   -
388   - }
389   -
390   - arguments.callee.count++;
391   -
392   - var index = parseInt(arguments.callee.count) - 1;
393   -
394   - if (index >= len) {
395   -
396   - callback && callback(points);
397   -
398   - return;
399   - }
400   -
401   - var f = arguments.callee;
402   -
403   - $.ajax({
404   -
405   - url: 'http://api.zdoz.net/bd2wgs.aspx',
406   -
407   - data: {lat: points[index].potion.lat , lng: points[index].potion.lng},
408   -
409   - dataType: 'jsonp',
410   -
411   - success: function(r){
412   -
413   - if(r) {
414   -
415   - points[index].WGSpotion = r;
416   -
417   - }
418   -
419   - f();
420   - }
421   - });
422   -
423   - })();
424   -
425   - },
426   -
427   - editSeteditStationParmasValue : function(points,gLonx,gLaty,bPolygonGridValue,gPolygonGridVlaue,shapesTypeValue,radiusValue) {
428   -
429   - // 百度地图经纬度坐标中心点
430   - carParkObj[0].carParkBcenterPoint = points;
431   -
432   - // WGS经度
433   - carParkObj[0].carParkGcenterPoint = gLonx + ' ' + gLaty;
434   -
435   - // 百度坐标点图形集合
436   - carParkObj[0].carParkGparkPoint = gPolygonGridVlaue;
437   -
438   - // WGS坐标点图形集合
439   - carParkObj[0].carParkBparkPoint = bPolygonGridValue;
440   -
441   - // 图形类型
442   - carParkObj[0].carParkShapesType = shapesTypeValue;
443   -
444   - // 圆形半径
445   - carParkObj[0].carParkRadius = radiusValue;
  115 + setFormValue : function(carParkObj) {
446 116  
447   - },
448   -
449   - setFormValue : function() {
450   -
451   - $('#idInput').val(carParkObj[0].carParkId);
  117 + $('#idInput').val(carParkObj.carParkId);
452 118  
453   - $('#bParkPointInput').val(carParkObj[0].carParkBparkPoint);
454   -
455   - $('#gParkPointInput').val(carParkObj[0].carParkGparkPoint);
456   -
457   - $('#parkNameInput').val(carParkObj[0].carParkName);
458   -
459   - $('#parkCodeInput').val(carParkObj[0].carParkCode);
  119 + $('#bParkPointInput').val(carParkObj.carParkBparkPoint);
460 120  
461   - $('#bCenterPointInput').val(carParkObj[0].carParkBcenterPoint);
  121 + $('#parkNameInput').val(carParkObj.carParkName);
462 122  
463   - $('#gCenterPointInput').val(carParkObj[0].carParkGcenterPoint);
  123 + $('#parkCodeInput').val(carParkObj.carParkCode);
464 124  
465   - $('#shapesTypeSelect').val(carParkObj[0].carParkShapesType);
  125 + $('#bCenterPointInput').val(carParkObj.carParkBcenterPoint);
466 126  
467   - $('#radiusInput').val(carParkObj[0].carParkRadius);
  127 + $('#shapesTypeSelect').val(carParkObj.carParkShapesType);
468 128  
469   - $('#areaInput').val(carParkObj[0].carParkArea);
  129 + $('#radiusInput').val(carParkObj.carParkRadius);
470 130  
471   - /*$('#companySelect').val(carParkObj[0].carParkCompany);*/
  131 + $('#areaInput').val(carParkObj.carParkArea);
472 132  
473   - /*$('#brancheCompanySelect').val(carParkObj[0].carParkBrancheCompany);*/
  133 + $('#destroySelect').val(carParkObj.carParkDestroy);
474 134  
475   - $('#destroySelect').val(carParkObj[0].carParkDestroy);
476   -
477   - $('#descriptionsTextarea').val(carParkObj[0].carParkDescriptions);
  135 + $('#descriptionsTextarea').val(carParkObj.carParkDescriptions);
478 136  
479 137 },
480 138  
... ... @@ -536,16 +194,6 @@ var PublicFunctions = function () {
536 194  
537 195 },
538 196  
539   - carParkUpdate : function(params,callback){
540   -
541   - $post('/carpark/carParkUpdate',params,function(data) {
542   -
543   - callback && callback(data);
544   -
545   - });
546   -
547   - }
548   -
549 197 }
550 198  
551 199 return PubFun ;
... ...
src/main/resources/static/pages/base/carpark/js/carpark-positions-map.js
... ... @@ -5,17 +5,12 @@
5 5  
6 6 var WorldsBMap = function () {
7 7  
  8 + var mapValue='',drawingManager='',marker='',circle='',polygon='';
  9 +
8 10 var Bmap = {
9 11  
10 12 init : function() {
11 13  
12   - // 关闭左侧栏
13   - if (!$('body').hasClass('page-sidebar-closed')) {
14   -
15   - $('.menu-toggler.sidebar-toggler').click();
16   -
17   - }
18   -
19 14 // 设置中心点,
20 15 var CENTER_POINT = {lng : 121.528733,lat : 31.237425};
21 16  
... ... @@ -23,22 +18,22 @@ var WorldsBMap = function () {
23 18 var bdKey = 'IGGrr4UjwIYzatoCRFKEL8sT';
24 19  
25 20 // 初始化百度地图
26   - var map = new BMap.Map("bmap_basic");
  21 + mapValue = new BMap.Map("bmap_basic");
27 22  
28 23 //中心点和缩放级别
29   - map.centerAndZoom(new BMap.Point(CENTER_POINT.lng,CENTER_POINT.lat), 15);
  24 + mapValue.centerAndZoom(new BMap.Point(CENTER_POINT.lng,CENTER_POINT.lat), 15);
30 25  
31 26 //启用地图拖拽事件,默认启用(可不写)
32   - map.enableDragging();
  27 + mapValue.enableDragging();
33 28  
34 29 //启用地图滚轮放大缩小
35   - map.enableScrollWheelZoom();
  30 + mapValue.enableScrollWheelZoom();
36 31  
37 32 //禁用鼠标双击放大
38   - map.disableDoubleClickZoom();
  33 + mapValue.disableDoubleClickZoom();
39 34  
40 35 //启用键盘上下左右键移动地图
41   - map.enableKeyboard();
  36 + mapValue.enableKeyboard();
42 37  
43 38 var styleOptions = {
44 39  
... ... @@ -63,7 +58,7 @@ var WorldsBMap = function () {
63 58 };
64 59  
65 60 // 创建鼠标绘制管理类
66   - drawingManager = new BMapLib.DrawingManager(map, {
  61 + drawingManager = new BMapLib.DrawingManager(mapValue, {
67 62  
68 63 //是否开启绘制模式
69 64 isOpen : false,
... ... @@ -112,70 +107,67 @@ var WorldsBMap = function () {
112 107 // 多变行质心点
113 108 var addSttationPoints_ = pointE.getBounds().getCenter().lng+ ' ' + pointE.getBounds().getCenter().lat;
114 109  
115   - var PointsList = [];
116   -
117   - for ( var i = 0; i < pointE.getPath().length; i++) {
118   -
119   - PointsList.push({potion: {lng: pointE.getPath()[i].lng, lat: pointE.getPath()[i].lat}});
120   -
121   - }
122   -
123   - PointsList.push({potion: {lng: pointE.getPath()[0].lng, lat: pointE.getPath()[0].lat}});
124   -
125   - var centre = [{potion:{lng:pointE.getBounds().getCenter().lng,lat:pointE.getBounds().getCenter().lat}}];
  110 + var addPolyGonLen_ = pointE.getPath().length;
126 111  
127   - PublicFunctions.getFormPointEToWGS(PointsList,function(resultdata) {
128   -
129   - var gPloygonGrid = '';
130   -
131   - var bPloygonGrid = '';
  112 + for(var k =0;k<addPolyGonLen_;k++) {
132 113  
133   - for(var k =0;k<resultdata.length;k++) {
  114 + if(k==0) {
134 115  
135   - if(k==0) {
136   -
137   - gPloygonGrid = resultdata[k].WGSpotion.Lng + ' ' +resultdata[k].WGSpotion.Lat;
138   -
139   - bPloygonGrid = resultdata[k].potion.lng + ' ' +resultdata[k].potion.lat;
140   -
141   - }else {
142   -
143   - gPloygonGrid = gPloygonGrid + ',' + resultdata[k].WGSpotion.Lng + ' ' +resultdata[k].WGSpotion.Lat;
144   -
145   - bPloygonGrid = bPloygonGrid + ',' + resultdata[k].potion.lng + ' ' +resultdata[k].potion.lat;
146   -
147   - }
  116 + bPloygonGrid = pointE.getPath()[k].lng + ' ' + pointE.getPath()[k].lat;
  117 +
  118 + }else {
  119 +
  120 + bPloygonGrid = bPloygonGrid + ',' + pointE.getPath()[k].lng + ' ' + pointE.getPath()[k].lat;
148 121  
149 122 }
  123 +
  124 + }
  125 +
  126 + bPloygonGrid = bPloygonGrid + ',' + pointE.getPath()[0].lng + ' ' + pointE.getPath()[0].lat;
  127 +
  128 + /** 设置修改停车场集合对象图形质心点属性 @param:<addSttationPoints_:多边形质心点> */
  129 + EditCarParkObj.setCarParkBcenterPoint(addSttationPoints_);
  130 +
  131 + /** 设置修改停车场集合对象图形类型属性 @param:<shapeType:图形类型> */
  132 + EditCarParkObj.setCarParkShapesType('d');
  133 +
  134 + /** 设置修改停车场集合对象圆形半径属性 @param:<radius:圆形半径> */
  135 + EditCarParkObj.setCarParkRadius('');
  136 +
  137 + /** 设置修改停车场集合对象名称 @param:<bParkPoint:多边形图形坐标集合> */
  138 + EditCarParkObj.setCarParkBparkPoint(bPloygonGrid);
  139 +
  140 + $.get('edit.html', function(m){
150 141  
151   - gPloygonGrid = 'POLYGON((' + gPloygonGrid + '))';
152   -
153   - bPloygonGrid = 'POLYGON((' + bPloygonGrid + '))';
  142 + $(pjaxContainer).append(m);
154 143  
155   - PublicFunctions.getFormPointEToWGS(centre,function(p) {
156   -
157   - var gLonx = p[0].WGSpotion.Lng;
158   -
159   - var gLaty = p[0].WGSpotion.Lat;
160   -
161   - PublicFunctions.editSeteditStationParmasValue(addSttationPoints_,gLonx,gLaty,bPloygonGrid,gPloygonGrid,'d','');
162   -
163   - $.get('edit.html', function(m){$(pjaxContainer).append(m);});
164   -
165   - });
  144 + $('#editPoitsions_carpark_mobal').trigger('editCarParkMobal_show', [WorldsBMap,PublicFunctions,EditCarParkObj,GetAjaxData]);
166 145  
167   - });
  146 + });
168 147  
169 148 }
170 149  
171 150 });
172   - return map;
  151 + return mapValue;
173 152 },
174 153  
175   -localSearchFromAdreesToPoint: function(Address,map,callback) {
  154 + openDrawingManager : function() {
  155 +
  156 + // 清楚地图覆盖物
  157 + mapValue.clearOverlays();
  158 +
  159 + // 打开鼠标绘画工具
  160 + drawingManager.open();
  161 +
  162 + // 设置属性
  163 + drawingManager.setDrawingMode(BMAP_DRAWING_POLYGON);
  164 +
  165 + },
  166 +
  167 + localSearchFromAdreesToPoint: function(Address) {
176 168  
177 169 // 创建一个搜索类实例
178   - var localSearch = new BMap.LocalSearch(map);
  170 + var localSearch = new BMap.LocalSearch(mapValue);
179 171  
180 172 // 检索完成后的回调函数。
181 173 localSearch.setSearchCompleteCallback(function (searchResult) {
... ... @@ -190,26 +182,267 @@ localSearchFromAdreesToPoint: function(Address,map,callback) {
190 182 if(poi) {
191 183  
192 184 //获取经度和纬度
193   - resultPoints = poi.point.lng + ' ' + poi.point.lat;
194   -
195   - callback && callback(resultPoints);
  185 + var Points = poi.point.lng + ' ' + poi.point.lat;
196 186  
197   - }else {
  187 + var BJwpointsArray = Points.split(' ');
  188 +
  189 + var stationNameChangePoint = new BMap.Point(BJwpointsArray[0], BJwpointsArray[1]);
  190 +
  191 + var marker_stargt2 = new BMap.Marker(stationNameChangePoint);
  192 +
  193 + var PanOptions ={noAnimation :true};
  194 +
  195 + mapValue.panTo(stationNameChangePoint,PanOptions);
  196 +
  197 + mapValue.panBy(0,-200);
  198 +
  199 + // 将标注添加到地图中
  200 + mapValue.addOverlay(marker_stargt2);
  201 +
  202 + //跳动的动画
  203 + marker_stargt2.setAnimation(BMAP_ANIMATION_BOUNCE);
198 204  
199   - callback && callback(false);
200   -
201   - }
202   -
203   - }else {
  205 + }
204 206  
205   - callback && callback(false);
206   - }
  207 + }
207 208  
208 209 });
209 210  
210 211 // 根据检索词发起检索。
211 212 localSearch.search(Address);
212 213  
  214 + },
  215 +
  216 + /** 画圆 @param:<r:停车场信息;point:中心点;htm:信息窗口html文本;pots:信息窗口参数属性> */
  217 + pointsCircle : function(r,point,htm,opts) {
  218 +
  219 + //创建圆
  220 + circle = new BMap.Circle(point,r[0].carParkRadius,{strokeColor:"blue", strokeWeight:2, strokeOpacity:0.5});
  221 +
  222 + // 允许覆盖物在map.clearOverlays方法中被清除
  223 + circle.enableMassClear();
  224 +
  225 + // 百度地图添加覆盖物圆
  226 + mapValue.addOverlay(circle);
  227 +
  228 + // 创建信息窗口
  229 + infoWindow = new BMap.InfoWindow(htm, opts);
  230 +
  231 + // 自定义标注物图片
  232 + var icon_target = new BMap.Icon('/pages/base/stationroute/css/img/cz.png',new BMap.Size(20, 20));
  233 +
  234 + // 创建点
  235 + marker = new BMap.Marker(point,{icon : icon_target});
  236 +
  237 + // 把标注添物加到地图上
  238 + mapValue.addOverlay(marker);
  239 +
  240 + setTimeout(function(){
  241 + //开启信息窗口
  242 + marker.openInfoWindow(infoWindow,point);
  243 +
  244 + },100);
  245 +
  246 + // 是否在平移过程中禁止动画。(自1.2新增)
  247 + var PanOptions_ ={noAnimation :true};
  248 +
  249 + // 将地图的中心点更改为给定的点。
  250 + mapValue.panTo(point,PanOptions_);
  251 +
  252 + // 添加标志物监听事件
  253 + marker.addEventListener("click",function() {
  254 +
  255 + //开启信息窗口
  256 + marker.openInfoWindow(infoWindow,point);
  257 +
  258 + });
  259 + },
  260 +
  261 + /** 画多边形 @param:<r:停车场信息;point:中心点;htm:信息窗口html文本;pots:信息窗口参数属性> */
  262 + pointsPolygon : function(r,pointPolygon,htm,opts_polygon) {
  263 +
  264 + // 将视图切换到指定的缩放等级,中心点坐标不变。注意:当有信息窗口在地图上打开时,地图缩放将保证信息窗口所在的坐标位置不动。(自1.2新增)
  265 + mapValue.setZoom(17);
  266 +
  267 + // 获取多边形坐标字符串
  268 + var stationBPolygonGrid = r[0].carParkBparkPoint;
  269 +
  270 + // 截取多边形坐标字符串
  271 + var stationBPolygonGridStr = stationBPolygonGrid.substring(9,stationBPolygonGrid.length-2);
  272 +
  273 + // 按逗号切割
  274 + var pointPolygonArray = stationBPolygonGridStr.split(',');
  275 +
  276 + // 多边形坐标集合
  277 + var polygonP = [];
  278 +
  279 + for(var v = 0;v<pointPolygonArray.length;v++) {
  280 +
  281 + polygonP.push(new BMap.Point(pointPolygonArray[v].split(" ")[0],pointPolygonArray[v].split(" ")[1]));
  282 +
  283 + }
  284 +
  285 + // 画多边形
  286 + polygon = new BMap.Polygon(polygonP, {
  287 +
  288 + // 线条显色
  289 + strokeColor : "blue",
  290 +
  291 + // 边线的宽度,以像素为单位。
  292 + strokeWeight : 2,
  293 +
  294 + // 边线透明度,取值范围0 - 1。
  295 + strokeOpacity : 0.5
  296 + });
  297 +
  298 + // 增加地图覆盖物多边形
  299 + mapValue.addOverlay(polygon);
  300 +
  301 + // 创建信息窗口
  302 + infoWindow = new BMap.InfoWindow(htm, opts_polygon);
  303 +
  304 + // 自定义标注物图片
  305 + var icon_target = new BMap.Icon('/pages/base/stationroute/css/img/cz.png',new BMap.Size(20, 20));
  306 +
  307 + // 创建点
  308 + marker = new BMap.Marker(pointPolygon,{icon : icon_target});
  309 +
  310 + // 把标注添物加到地图上
  311 + mapValue.addOverlay(marker);
  312 +
  313 + // 是否在平移过程中禁止动画。(自1.2新增)
  314 + var PanOptions_ ={noAnimation :true};
  315 +
  316 + // 将地图的中心点更改为给定的点。
  317 + mapValue.panTo(pointPolygon,PanOptions_);
  318 +
  319 + // 将地图在水平位置上移动x像素,垂直位置上移动y像素。
  320 + mapValue.panBy(10,-250,PanOptions_);
  321 +
  322 + //开启信息窗口
  323 + marker.openInfoWindow(infoWindow,pointPolygon);
  324 +
  325 + },
  326 +
  327 + // 编辑图形
  328 + editShapes : function(stationShapesTypeV,mindex) {
  329 +
  330 + // 关闭信息窗口
  331 + marker.closeInfoWindow();
  332 +
  333 + // 清除marker
  334 + mapValue.removeOverlay(marker);
  335 +
  336 + // 编辑圆
  337 + if(stationShapesTypeV =='r') {
  338 +
  339 + // 开启编辑功能
  340 + circle.enableEditing();
  341 +
  342 + // 编辑圆监听事件
  343 + circle.addEventListener('dblclick',function() {
  344 +
  345 + // 关闭提示弹出层
  346 + layer.close(mindex);
  347 +
  348 + // 返回圆形的半径,单位为米。
  349 + var newRadius = circle.getRadius();
  350 +
  351 + // 返回圆形的中心点坐标。
  352 + var newCenter = circle.getCenter().lng + ' ' + circle.getCenter().lat;
  353 +
  354 + var centre_New = [{potion:{lng:circle.getCenter().lng,lat:circle.getCenter().lat}}];
  355 +
  356 + /** 设置修改停车场集合对象图形质心点属性 @param:<addSttationPoints_:多边形质心点> */
  357 + EditCarParkObj.setCarParkBcenterPoint(newCenter);
  358 +
  359 + /** 设置修改停车场集合对象图形类型属性 @param:<shapeType:图形类型> */
  360 + EditCarParkObj.setCarParkShapesType('r');
  361 +
  362 + /** 设置修改停车场集合对象圆形半径属性 @param:<radius:圆形半径> */
  363 + EditCarParkObj.setCarParkRadius(Math.round(newRadius));
  364 +
  365 + /** 设置修改停车场集合对象名称 @param:<bParkPoint:多边形图形坐标集合> */
  366 + EditCarParkObj.setCarParkBparkPoint('');
  367 +
  368 + // 加载编辑页面
  369 + $.get('edit.html', function(m){
  370 +
  371 + $(pjaxContainer).append(m);
  372 +
  373 + $('#editPoitsions_carpark_mobal').trigger('editCarParkMobal_show', [WorldsBMap,PublicFunctions,EditCarParkObj,GetAjaxData]);
  374 +
  375 + });
  376 +
  377 + });
  378 +
  379 + // 编辑多变行
  380 + }else if(stationShapesTypeV =='d') {
  381 +
  382 + // 开启编辑功能(自 1.1 新增)
  383 + polygon.enableEditing();
  384 +
  385 + // 添加多变行编辑事件
  386 + polygon.addEventListener('dblclick',function(e) {
  387 +
  388 + // 获取编辑的多边形对象
  389 + var edit_pointE = polygon;
  390 +
  391 + var edit_bPloygonGrid = "";
  392 +
  393 + var editPolyGonLen_ = edit_pointE.getPath().length;
  394 +
  395 + for(var k =0;k<editPolyGonLen_;k++) {
  396 +
  397 + if(k==0) {
  398 +
  399 + edit_bPloygonGrid = edit_pointE.getPath()[k].lng + ' ' + edit_pointE.getPath()[k].lat;
  400 +
  401 + }else {
  402 +
  403 + edit_bPloygonGrid = edit_bPloygonGrid + ',' + edit_pointE.getPath()[k].lng + ' ' + edit_pointE.getPath()[k].lat;
  404 +
  405 + }
  406 +
  407 + }
  408 +
  409 + edit_bPloygonGrid = edit_bPloygonGrid + ',' + edit_pointE.getPath()[0].lng + ' ' + edit_pointE.getPath()[0].lat;
  410 +
  411 + // 多边形中心点
  412 + var centre_points = edit_pointE.getBounds().getCenter().lng + ' ' + edit_pointE.getBounds().getCenter().lat;
  413 +
  414 +
  415 + /** 设置修改停车场集合对象图形质心点属性 @param:<addSttationPoints_:多边形质心点> */
  416 + EditCarParkObj.setCarParkBcenterPoint(centre_points);
  417 +
  418 + /** 设置修改停车场集合对象图形类型属性 @param:<shapeType:图形类型> */
  419 + EditCarParkObj.setCarParkShapesType('d');
  420 +
  421 + /** 设置修改停车场集合对象圆形半径属性 @param:<radius:圆形半径> */
  422 + EditCarParkObj.setCarParkRadius('');
  423 +
  424 + /** 设置修改停车场集合对象名称 @param:<bParkPoint:多边形图形坐标集合> */
  425 + EditCarParkObj.setCarParkBparkPoint(edit_bPloygonGrid);
  426 +
  427 + $.get('edit.html', function(m){
  428 +
  429 + $(pjaxContainer).append(m);
  430 +
  431 + $('#editPoitsions_carpark_mobal').trigger('editCarParkMobal_show', [WorldsBMap,PublicFunctions,EditCarParkObj,GetAjaxData]);
  432 +
  433 + });
  434 +
  435 + });
  436 +
  437 + }
  438 +
  439 + },
  440 +
  441 + clearMarkAndOverlays : function() {
  442 +
  443 + // 清楚地图覆盖物
  444 + mapValue.clearOverlays();
  445 +
213 446 }
214 447 }
215 448  
... ...
src/main/resources/static/pages/base/carpark/js/carpark-positions-reload.js
... ... @@ -14,17 +14,24 @@
14 14  
15 15 (function(){
16 16  
17   - // 获取参数线路ID
  17 + // 获取参数停车场ID
18 18 id = $.url().param('no');
19 19  
  20 + // 关闭左侧栏
  21 + if (!$('body').hasClass('page-sidebar-closed')) {
  22 +
  23 + $('.menu-toggler.sidebar-toggler').click();
  24 +
  25 + }
  26 +
20 27 // 等候500毫秒执行
21 28 setTimeout(function(){
22 29  
23 30 // 地图初始化
24 31 mapB = WorldsBMap.init();
25 32  
26   - // 初始化停车场信息
27   - PublicFunctions.initCarPark();
  33 + /** 停车场信息初始化 @param:<id:停车场ID> */
  34 + PublicFunctions.initCarPark(id);
28 35  
29 36 },200);
30 37  
... ...
src/main/resources/static/pages/base/carpark/js/positioncarpark.js 0 → 100644
  1 +var EditCarParkObj = function () {
  2 +
  3 + /** 定义修改停车场对象 */
  4 + var CarPark={};
  5 +
  6 + var CarParkObj = {
  7 +
  8 + /** 获取修改停车场集合对象 @return:<CarPark:修改停车场对象> */
  9 + getEitdCarPark : function() {
  10 +
  11 + return CarPark;
  12 + },
  13 +
  14 + /** 设置修改停车场集合对象 */
  15 + setEitdCarPark : function(sc) {
  16 +
  17 + CarPark = sc;
  18 + },
  19 +
  20 + /** 设置修改停车场集合对象名称属性 @param:<name:停车场名称> */
  21 + setEitdCarParkName : function(name) {
  22 +
  23 + CarPark.carParkName = name;
  24 + },
  25 +
  26 + /** 设置修改停车场集合对象图形质心点属性 @param:<center:多边形质心点> */
  27 + setCarParkBcenterPoint : function(center) {
  28 +
  29 + CarPark.carParkBcenterPoint = center;
  30 +
  31 + },
  32 +
  33 + /** 设置修改停车场集合对象多边形图形坐标集合属性 @param:<bParkPoint:多边形图形坐标集合> */
  34 + setCarParkBparkPoint : function(bParkPoint) {
  35 +
  36 + CarPark.carParkBparkPoint = bParkPoint;
  37 + },
  38 +
  39 + /** 设置修改停车场集合对象图形类型属性 @param:<shapeType:图形类型> */
  40 + setCarParkShapesType : function(shapeType) {
  41 +
  42 + CarPark.carParkShapesType = shapeType;
  43 + },
  44 +
  45 + /** 设置修改停车场集合对象圆形半径属性 @param:<radius:圆形半径> */
  46 + setCarParkRadius : function(radius) {
  47 +
  48 + CarPark.carParkRadius = radius;
  49 +
  50 + }
  51 +
  52 + }
  53 +
  54 + return CarParkObj;
  55 +
  56 +}();
... ...
src/main/resources/static/pages/base/carpark/positions.html
... ... @@ -20,21 +20,21 @@
20 20 </ul>
21 21 </div>
22 22 </div>
23   -<script type="text/javascript">
24   -
25   - /** carParkObj:停车场对象;drawingManager:绘制工具对象;mapB地图对象;circle:圆对象; polygon:多边形对象;marker:覆盖物对象;信息窗口对象:infoWindow;id:停车场ID*/
26   - var carParkObj = '',drawingManager= '',mapB = '',circle = '',polygon='', polygon = '',marker = '',infoWindow = '',id='';
27   -
28   -</script>
  23 +
  24 +<!-- 编辑停车场对象类 -->
  25 +<script src="/pages/base/carpark/js/positioncarpark.js"></script>
  26 +
  27 +<!-- ajax异步请求类 -->
  28 +<script src="/pages/base/carpark/js/carpark-positions-ajax.js"></script>
  29 +
  30 +<!-- 函数方法JS类库 -->
  31 +<script src="/pages/base/carpark/js/carpark-positions-function.js"></script>
29 32  
30 33 <!-- 地图JS类库 -->
31 34 <script src="/pages/base/carpark/js/carpark-positions-map.js"></script>
32 35  
33   -<!-- 方法JS类库 -->
34   -<script src="/pages/base/carpark/js/carpark-positions-function.js"></script>
  36 +<!-- 事件(PublicFunctions)JS类库 -->
  37 +<script src="/pages/base/carpark/js/carpark-positions-events.js"></script>
35 38  
36 39 <!-- reloadJS类库 -->
37   -<script src="/pages/base/carpark/js/carpark-positions-reload.js"></script>
38   -
39   -<!-- 事件JS类库 -->
40   -<script src="/pages/base/carpark/js/carpark-positions-events.js"></script>
41 40 \ No newline at end of file
  41 +<script src="/pages/base/carpark/js/carpark-positions-reload.js"></script>
42 42 \ No newline at end of file
... ...
src/main/resources/static/pages/base/section/editsection.html 0 → 100644
  1 +<!-- 编辑路段 -->
  2 +<div class="modal fade" id="edit_section_mobal" tabindex="-1" role="basic" aria-hidden="true">
  3 +
  4 + <div class="modal-dialog">
  5 +
  6 + <div class="modal-content">
  7 +
  8 + <div class="modal-header">
  9 + <button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
  10 + <h4 class="modal-title">路段路段</h4>
  11 + </div>
  12 +
  13 + <div class="modal-body">
  14 +
  15 + <form class="form-horizontal" role="form" id="edit_section__form" action="/module" method="post">
  16 +
  17 + <div class="alert alert-danger display-hide"> <button class="close" data-close="alert"></button>
  18 + 您的输入有误,请检查下面的输入项
  19 + </div>
  20 +
  21 + <!-- 线路ID -->
  22 +
  23 + <input type="hidden" name="sectionId" id="sectionIdInput">
  24 +
  25 + <input type="hidden" name="sectionRouteId" id="sectionRouteIdInput">
  26 +
  27 + <input type="hidden" name="sectionRouteLine" id="sectionRouteLineInput">
  28 +
  29 + <input type="hidden" name="lineCode" id="lineCodeInput">
  30 +
  31 + <input type="hidden" name="bsectionVector" id="bsectionVectorInput" />
  32 +
  33 + <input type="hidden" name="csectionVector" id="csectionVectorInput" value=""/>
  34 +
  35 + <input type="hidden" name="dbType" id="dbTypeInput" value="b"/>
  36 +
  37 + <!-- 路段名称 -->
  38 + <div class="form-body">
  39 + <div class="form-group">
  40 + <label class="control-label col-md-3">
  41 + <span class="required"> * </span> 路段名称:
  42 + </label>
  43 + <div class="col-md-6">
  44 + <input type="text" class="form-control" name="sectionName" id="sectionNameInput" placeholder="路段名称">
  45 + </div>
  46 + </div>
  47 + </div>
  48 +
  49 + <!-- 路段编码 -->
  50 + <div class="form-body">
  51 + <div class="form-group">
  52 + <label class="control-label col-md-3">
  53 + <span class="required"> * </span> 路段编码:
  54 + </label>
  55 + <div class="col-md-6">
  56 + <input type="text" class="form-control" name="sectionCode" id="sectionCodeInput" placeholder="路段编码">
  57 + </div>
  58 + </div>
  59 + </div>
  60 +
  61 + <!-- 路段序号 -->
  62 + <div class="form-body">
  63 + <div class="form-group">
  64 + <label class="control-label col-md-3">
  65 + <span class="required"> * </span>上一路段:
  66 + </label>
  67 + <div class="col-md-6">
  68 + <select name="sectionrouteCode" class="form-control" id="sectionrouteCodeSelect"></select>
  69 + <span class="help-block"> *说明:选择的路段将作为本站序号的参考,成为选择路段的下一个路段。 </span>
  70 + </div>
  71 + </div>
  72 + </div>
  73 +
  74 + <!-- 路段方向 -->
  75 + <div class="form-body">
  76 + <div class="form-group">
  77 + <label class="control-label col-md-3">
  78 + <span class="required"> * </span>路段方向:
  79 + </label>
  80 + <div class="col-md-6">
  81 + <select name="directions" class="form-control" id="directionsSection">
  82 + <option value="">-- 请选择路段类型 --</option>
  83 + <option value="0">上行</option>
  84 + <option value="1">下行</option>
  85 + </select>
  86 + </div>
  87 + </div>
  88 + </div>
  89 +
  90 + <!-- 道路编码-->
  91 + <div class="form-body">
  92 + <div class="form-group">
  93 + <label class="control-label col-md-3">道路编码:</label>
  94 + <div class="col-md-6">
  95 + <input type="text" class="form-control" name="roadCoding" id="roadCodingCodInput" placeholder="道路编码">
  96 + </div>
  97 + </div>
  98 + </div>
  99 +
  100 + <!-- 路段限速 -->
  101 + <div class="form-body">
  102 + <div class="form-group">
  103 + <label class="control-label col-md-3">
  104 + <span class="required"> * </span> 路段限速:
  105 + </label>
  106 + <div class="col-md-6">
  107 + <input type="text" class="form-control" name="speedLimit" id="speedLimitInput" placeholder="路段限速">
  108 + </div>
  109 + </div>
  110 + </div>
  111 +
  112 + <!-- 路段时长 -->
  113 + <div class="form-body">
  114 + <div class="form-group">
  115 + <label class="col-md-3 control-label">路段时长:</label>
  116 + <div class="col-md-6">
  117 + <input type="text" class="form-control" name="sectionTime" id="sectionTimeInput" placeholder="路段时长">
  118 + <span class="help-block">单位:分钟</span>
  119 + </div>
  120 + </div>
  121 + </div>
  122 +
  123 + <!-- 路段长度 -->
  124 + <div class="form-body">
  125 + <div class="form-group">
  126 + <label class="col-md-3 control-label">路段长度:</label>
  127 + <div class="col-md-6">
  128 + <input type="text" class="form-control" name="sectionDistance" id="sectionDistanceInput" placeholder="路段长度">
  129 + <span class="help-block">单位:公里</span>
  130 + </div>
  131 + </div>
  132 + </div>
  133 +
  134 + <!-- 版本号 -->
  135 + <div class="form-body">
  136 + <div class="form-group">
  137 + <label class="col-md-3 control-label">版本号:</label>
  138 + <div class="col-md-6">
  139 + <input type="text" class="form-control" name="versions" id="versionsInput" Readonly>
  140 + </div>
  141 + </div>
  142 + </div>
  143 +
  144 + <!-- 范围图形类型 -->
  145 + <div class="form-body">
  146 + <div class="form-group">
  147 + <label class="col-md-3 control-label">是否撤销:</label>
  148 + <div class="col-md-6">
  149 + <select name="destroy" class="form-control" id="destroySelect">
  150 + <option value="">-- 请选择撤销类型 --</option>
  151 + <option value="0">否</option>
  152 + <option value="1">是</option>
  153 + </select>
  154 + </div>
  155 + </div>
  156 + </div>
  157 +
  158 + <!-- 描述/说明 -->
  159 + <div class="form-group">
  160 + <label class="control-label col-md-3"> 描述/说明: </label>
  161 + <div class="col-md-6">
  162 + <textarea class="form-control" rows="3" name="descriptions" id="descriptionsTextarea" placeholder="描述/说明"></textarea>
  163 + </div>
  164 + </div>
  165 + </form>
  166 + </div>
  167 + <div class="modal-footer">
  168 + <button type="button" class="btn default" data-dismiss="modal">取消</button>
  169 + <button type="button" class="btn btn-primary" id="editSectionButton">提交数据</button>
  170 + </div>
  171 + </div>
  172 + </div>
  173 +</div>
  174 +<script type="text/javascript">
  175 +
  176 +$('#edit_section_mobal').on('editSectionMobal_show', function(e, map_,ajaxd,section,fun){
  177 +
  178 + var Section = section.getEitdSection();
  179 +
  180 +
  181 + fun.setSectionFormValue(Section);
  182 +
  183 + // 方向
  184 + var dir = Section.sectionRouteDirections;
  185 +
  186 + var lineId = Section.sectionRouteLine;
  187 +
  188 + var sectionRouteId = Section.sectionRouteId;
  189 +
  190 + // 获取路段号元素,并添加下拉属性值
  191 + ajaxd.getStation(lineId,dir,function(treeData) {
  192 +
  193 + var options = '<option value="">请选择...</option>';
  194 +
  195 + var dArray = treeData[0].children[1].children;
  196 +
  197 + var eq_stationRouteCode = Section.sectionRouteCode;
  198 +
  199 + for(var i = 0 ; i<dArray.length; i++){
  200 +
  201 + var ptions_v = dArray[i].sectionrouteCode;
  202 +
  203 + // 排除本站
  204 + if(eq_stationRouteCode == ptions_v){
  205 +
  206 + continue;
  207 +
  208 + }
  209 +
  210 + options += '<option value="'+ ptions_v +'">'+dArray[i].sectionName+'</option>'
  211 +
  212 + }
  213 +
  214 + $('#sectionrouteCodeSelect').html(options);
  215 +
  216 + ajaxd.findUpStationRouteCode(lineId,dir,eq_stationRouteCode,function(str) {
  217 +
  218 + if(str.length>0){
  219 +
  220 + var upStationRouteCode = str[0].sectionrouteCode
  221 +
  222 + $('#sectionrouteCodeSelect').val(upStationRouteCode);
  223 +
  224 + }
  225 +
  226 + });
  227 +
  228 + });
  229 +
  230 + // 显示mobal
  231 + $('#edit_section_mobal').modal({show : true,backdrop: 'static',keyboard: false});
  232 +
  233 + // 当调用 hide 实例方法时触发
  234 + $('#edit_section_mobal').on('hide.bs.modal', function () {
  235 +
  236 + closeMobleSetClean();
  237 +
  238 + });
  239 +
  240 + function closeMobleSetClean() {
  241 +
  242 + // 清除地图覆盖物
  243 + map_.clearMarkAndOverlays();
  244 +
  245 + /** 设置修改路段集合对象为空 */
  246 + section.setEitdSection({});
  247 +
  248 + $('.dropdown-toggle').removeClass('disabled');
  249 +
  250 + /** 初始化路段信息 @return <id:路段路由ID> */
  251 + fun.initSectionInfo(sectionRouteId);
  252 +
  253 + }
  254 +
  255 + // 编辑表单元素
  256 + var form = $('#edit_section__form');
  257 +
  258 + // 获取错误提示元素
  259 + var error = $('.alert-danger', form);
  260 +
  261 + // 提交数据按钮事件
  262 + $('#editSectionButton').on('click', function() {
  263 +
  264 +
  265 + // 表单提交
  266 + form.submit();
  267 +
  268 + });
  269 +
  270 + // 表单验证
  271 + form.validate({
  272 +
  273 + errorElement : 'span',
  274 +
  275 + errorClass : 'help-block help-block-error',
  276 +
  277 + focusInvalid : false,
  278 +
  279 + rules : {
  280 +
  281 + // 路段名称
  282 + 'sectionName' : {
  283 +
  284 + // 必填项
  285 + required : true
  286 +
  287 + },
  288 +
  289 + // 路段编码
  290 + 'sectionCode': {
  291 +
  292 + // 必填项
  293 + required : true,
  294 +
  295 + },
  296 +
  297 + // 路段方向
  298 + 'directions' : {
  299 +
  300 + // 必填项
  301 + required : true,
  302 +
  303 + // 方向选择限制
  304 + /* dirIs : true */
  305 +
  306 + },
  307 +
  308 +
  309 + // 路段限速
  310 + 'speedLimit' : {
  311 +
  312 + // 必须输入合法的数字(负数,小数)。
  313 + number : true
  314 +
  315 + },
  316 +
  317 + // 路段长度
  318 + 'sectionTime' : {
  319 +
  320 + // 必须输入合法的数字(负数,小数)。
  321 + number : true
  322 +
  323 + },
  324 +
  325 + // 路段时长
  326 + 'sectionDistance' : {
  327 +
  328 + // 必须输入合法的数字(负数,小数)。
  329 + number : true
  330 +
  331 + },
  332 +
  333 + // 描述与说明
  334 + 'descriptions' : {
  335 +
  336 + // 最大长度
  337 + maxlength: 150
  338 +
  339 + }
  340 + },
  341 +
  342 + invalidHandler : function(event, validator) {
  343 +
  344 + error.show();
  345 +
  346 + App.scrollTo(error, -200);
  347 +
  348 + },
  349 +
  350 + highlight : function(element) {
  351 +
  352 + $(element).closest('.form-group').addClass('has-error');
  353 +
  354 + },
  355 +
  356 + unhighlight : function(element) {
  357 +
  358 + $(element).closest('.form-group').removeClass('has-error');
  359 +
  360 + },
  361 +
  362 + success : function(label) {
  363 +
  364 + label.closest('.form-group').removeClass('has-error');
  365 +
  366 + },
  367 +
  368 + submitHandler : function(f) {
  369 +
  370 + var params = form.serializeJSON();
  371 +
  372 + error.hide();
  373 +
  374 + ajaxd.sectionUpdate(params,function(resuntDate) {
  375 +
  376 + if(resuntDate.status=='SUCCESS') {
  377 +
  378 + // 弹出添加成功提示消息
  379 + layer.msg('修改成功...');
  380 +
  381 +
  382 + }else {
  383 +
  384 + // 弹出添加失败提示消息
  385 + layer.msg('修改失败...');
  386 +
  387 + }
  388 +
  389 + $('#edit_section_mobal').modal('hide');
  390 +
  391 + closeMobleSetClean();
  392 +
  393 + });
  394 +
  395 + }
  396 + });
  397 +
  398 +
  399 +});
  400 +</script>
0 401 \ No newline at end of file
... ...
src/main/resources/static/pages/base/section/js/positionsection.js 0 → 100644
  1 +var EditSectionObj = function () {
  2 +
  3 + /** 定义修改路段对象 */
  4 + var Section={};
  5 +
  6 + var SectionObj = {
  7 +
  8 + /** 获取修改路段集合对象 @return:<Section:修改路段对象> */
  9 + getEitdSection : function() {
  10 +
  11 + return Section;
  12 + },
  13 +
  14 + /** 设置修改路段集合对象为空 */
  15 + setEitdSection : function(sc) {
  16 +
  17 + Section = sc;
  18 + },
  19 +
  20 +
  21 + /** 设置修改路段集合对象折线百度坐标集合属性值 @param:<bsectionVector:折线百度坐标集合) */
  22 + setEitdBsectionVector : function(bsectionVector) {
  23 +
  24 + Section.sectionBsectionVector = bsectionVector;
  25 + }
  26 + }
  27 +
  28 + return SectionObj;
  29 +
  30 +}();
... ...
src/main/resources/static/pages/base/section/js/section-ajax-getdata.js 0 → 100644
  1 +/**
  2 + * GetAjaxData :ajax异步请求
  3 + *
  4 + */
  5 +
  6 +var GetAjaxData = function(){
  7 +
  8 + var ajaxData = {
  9 +
  10 + getStationRouteInfo : function(sectionId,callback){
  11 +
  12 + $get('/sectionroute/findSectionRouteInfoFormId',{id:sectionId},function(r) {
  13 +
  14 + return callback && callback(r);
  15 +
  16 + });
  17 +
  18 + },
  19 +
  20 + getStation : function(id_,dir_,callback) {
  21 +
  22 + var treeDateJson = [];
  23 +
  24 + $get('/stationroute/findStations',{'line.id_eq' : id_ , 'directions_eq' : dir_},function(resultdata) {
  25 +
  26 + treeDateJson = createTreeData(resultdata);
  27 +
  28 + callback && callback(treeDateJson);
  29 +
  30 + });
  31 +
  32 + },
  33 +
  34 + findUpStationRouteCode : function(lineId,diraction,sectionRouteCode,callback) {
  35 +
  36 + $get('/sectionroute/findUpStationRouteCode',{lineId:lineId,direction:diraction,sectionRouteCode:sectionRouteCode},function(result) {
  37 +
  38 + callback && callback(result);
  39 +
  40 + });
  41 +
  42 + },
  43 +
  44 + // 编辑线路走向保存
  45 + sectionUpdate:function(section,callback) {
  46 +
  47 + $post('/section/sectionUpdate',section,function(data) {
  48 +
  49 + callback && callback(data);
  50 +
  51 + })
  52 +
  53 + }
  54 + }
  55 +
  56 + return ajaxData;
  57 +
  58 +}();
0 59 \ No newline at end of file
... ...
src/main/resources/static/pages/base/section/js/section-positions-events.js 0 → 100644
  1 +$(function(){
  2 +
  3 + $('#backUp').on('click',function() {
  4 +
  5 + // 获取返回元素并修改url地址
  6 + $('#backUp').attr('href','list.html?');
  7 +
  8 + });
  9 +
  10 + // 编辑线路走向
  11 + $('.dropdown-menu #eidt').on('click', function(){
  12 +
  13 + $('.dropdown-toggle').addClass('disabled');
  14 +
  15 + // 弹出添加失败提示消息,2秒关闭(如果不配置,默认是3秒)
  16 + var yindex = layer.msg('编辑完线路走向后,请双击线路走向区域保存',{ offset: '126px',shift: 0,time: 10000});
  17 +
  18 + WorldsBMap.editPolyUpline();
  19 +
  20 + });
  21 +
  22 +});
0 23 \ No newline at end of file
... ...
src/main/resources/static/pages/base/section/js/section-positions-function.js 0 → 100644
  1 +/**
  2 + * 函数
  3 + */
  4 +
  5 +var PositionsPublicFunctions = function () {
  6 +
  7 + var PubFun = {
  8 +
  9 + initSectionInfo : function(sectionId) {
  10 +
  11 + GetAjaxData.getStationRouteInfo(sectionId,function(r) {
  12 +
  13 + var len = r.length;
  14 +
  15 + if(len>0) {
  16 +
  17 + var sectionInfo = r[0];
  18 +
  19 + EditSectionObj.setEitdSection(sectionInfo);
  20 +
  21 + WorldsBMap.drawingUpline(r);
  22 + }
  23 +
  24 + });
  25 +
  26 + },
  27 +
  28 + setSectionFormValue : function(Section) {
  29 +
  30 + // 路段ID
  31 + $('#sectionIdInput').val(Section.sectionId);
  32 +
  33 + // 路段路由ID
  34 + $('#sectionRouteIdInput').val(Section.sectionRouteId);
  35 +
  36 + // 线路ID
  37 + $('#sectionRouteLineInput').val(Section.sectionRouteLine);
  38 +
  39 + // 线路编码
  40 + $('#lineCodeInput').val(Section.sectionRouteLineCode);
  41 +
  42 + // 折线坐标集合
  43 + $('#bsectionVectorInput').val(Section.sectionBsectionVector);
  44 +
  45 + // 路段名称
  46 + $('#sectionNameInput').val(Section.sectionName);
  47 +
  48 + // 路段编码
  49 + $('#sectionCodeInput').val(Section.sectionCode);
  50 +
  51 + // 路段序号
  52 + $('#sectionrouteCodeSelect').val(Section.sectionRouteCode);
  53 +
  54 + // 路段方向
  55 + $('#directionsSection').val(Section.sectionRouteDirections);
  56 +
  57 + // 道路编码
  58 + $('#roadCodingCodInput').val(Section.sectionRoadCoding);
  59 +
  60 + // 道路限速
  61 + $('#speedLimitInput').val(Section.sectionSpeedLimit);
  62 +
  63 + // 路段长度
  64 + $('#sectionDistanceInput').val(Section.sectionDistance);
  65 +
  66 + // 时长
  67 + $('#sectionTimeInput').val(Section.sectionTime);
  68 +
  69 + // 版本号
  70 + $('#versionsInput').val(Section.sectionVersion);
  71 +
  72 + // 是否撤销
  73 + $('#destroySelect').val(Section.sectionRouteDestroy);
  74 +
  75 + // 描述/说明
  76 + $('#descriptionsTextarea').val(Section.sectionRouteDescriptions);
  77 +
  78 + }
  79 + }
  80 +
  81 + return PubFun ;
  82 +
  83 +}();
0 84 \ No newline at end of file
... ...
src/main/resources/static/pages/base/section/js/section-positions-map.js
... ... @@ -5,17 +5,12 @@
5 5  
6 6 var WorldsBMap = function () {
7 7  
  8 + var mapValue = '',marker='', polyUpline='';
  9 +
8 10 var Bmap = {
9 11  
10 12 init : function() {
11 13  
12   - // 关闭左侧栏
13   - if (!$('body').hasClass('page-sidebar-closed')) {
14   -
15   - $('.menu-toggler.sidebar-toggler').click();
16   -
17   - }
18   -
19 14 // 设置中心点,
20 15 var CENTER_POINT = {lng : 121.528733,lat : 31.237425};
21 16  
... ... @@ -23,13 +18,168 @@ var WorldsBMap = function () {
23 18 var bdKey = 'IGGrr4UjwIYzatoCRFKEL8sT';
24 19  
25 20 // 初始化百度地图
26   - var map = new BMap.Map("bmap_basic");
  21 + mapValue = new BMap.Map('bmap_basic');
27 22  
28 23 //中心点和缩放级别
29   - map.centerAndZoom(new BMap.Point(CENTER_POINT.lng,CENTER_POINT.lat), 15);
  24 + mapValue.centerAndZoom(new BMap.Point(CENTER_POINT.lng,CENTER_POINT.lat), 15);
  25 +
  26 + //启用地图拖拽事件,默认启用(可不写)
  27 + mapValue.enableDragging();
  28 +
  29 + //启用地图滚轮放大缩小
  30 + mapValue.enableScrollWheelZoom();
  31 +
  32 + //禁用鼠标双击放大
  33 + mapValue.disableDoubleClickZoom();
  34 +
  35 + //启用键盘上下左右键移动地图
  36 + mapValue.enableKeyboard();
  37 +
  38 + return mapValue;
  39 + },
  40 +
  41 + drawingUpline : function(r) {
  42 +
  43 + var sectionBsectionVectorStr = r[0].sectionBsectionVector;
  44 +
  45 + var tempStr = sectionBsectionVectorStr.substring(11,sectionBsectionVectorStr.length-1);
  46 +
  47 + var lineArray = tempStr.split(',');
  48 +
  49 + var polylineArray = [];
  50 +
  51 + var lineaLen = lineArray.length
  52 +
  53 + for(var i = 0;i<lineaLen;i++) {
  54 +
  55 + polylineArray.push(new BMap.Point(lineArray[i].split(' ')[0],lineArray[i].split(' ')[1]));
  56 +
  57 + }
  58 +
  59 + var centerI = Math.ceil(lineaLen/2);
  60 +
  61 + // 中心坐标点
  62 + var point = new BMap.Point(lineArray[centerI].split(' ')[0],lineArray[centerI].split(' ')[1]);
  63 +
  64 + // 创建线路走向
  65 + polyUpline = new BMap.Polyline(polylineArray, {strokeColor : "blue",strokeWeight : 6,strokeOpacity : 0.5});
  66 +
  67 + // 把折线添加到地图上
  68 + mapValue.addOverlay(polyUpline);
  69 +
  70 + // 信息窗口参数属性
  71 + var opts = {
  72 +
  73 + // 信息窗口宽度
  74 + width : 200,
  75 +
  76 + // 信息窗口高度
  77 + height : 450,
  78 +
  79 + // 信息窗位置偏移值。
  80 + offset: new BMap.Size(500,-80),
  81 +
  82 + //标题
  83 + title : '<h4 style="color:#FFFFFF">'+r[0].sectionName+'站详情</h4>',
  84 +
  85 + //设置不允许信窗发送短息
  86 + enableMessage : false,
  87 +
  88 + //是否开启点击地图关闭信息窗口
  89 + enableCloseOnClick : false,
  90 +
  91 + // 是否开启信息窗口打开时地图自动移动(默认开启)。(自 1.1 新增)
  92 + enableAutoPan:true
  93 + };
  94 +
  95 + var htm = '<HR style="border:1 dashed #987cb9" width="100%" color=#987cb9 SIZE=1>'+
  96 + '<span style="color:#DDD;font-size: 15px;">路段名称:' + r[0].sectionName + '</span>' +
  97 + '<span class="help-block" style="color:#DDD;font-size: 15px;">路段编码:' + r[0].sectionCode + '</span>' +
  98 + '<span class="help-block" style="color:#DDD;font-size: 15px;">路段序号:' + r[0].sectionRouteCode + '</span>' +
  99 + '<span class="help-block" style="color:#DDD;font-size: 15px;">限  速:' + r[0].sectionSpeedLimit + '</span>' +
  100 + '<span class="help-block" style="color:#DDD;font-size: 15px;">路段长度:' + r[0].sectionDistance + '</span>' +
  101 + '<span class="help-block" style="color:#DDD;font-size: 15px;">路段时间:' + r[0].sectionTime + '</span>' +
  102 + '<span class="help-block" style="width: 100%;font-size: 15px;;color:#DDD; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; " title="'+ 'ddd' +'" >说明/描述:' + 'ddd' + '</span>' ;
  103 +
  104 + // 创建信息窗口
  105 + var infoWindow_target = new BMap.InfoWindow(htm, opts);
  106 +
  107 + // 自定义标注物图片
  108 + var icon_target = new BMap.Icon('/pages/base/stationroute/css/img/cz.png',new BMap.Size(20, 20));
  109 +
  110 + // 创建点
  111 + marker = new BMap.Marker(point,{icon : icon_target});
  112 +
  113 + // 把标注添物加到地图上
  114 + mapValue.addOverlay(marker);
  115 +
  116 + //开启信息窗口
  117 + marker.openInfoWindow(infoWindow_target,point);
  118 + /* setTimeout(function(){
  119 + //开启信息窗口
  120 + marker.openInfoWindow(infoWindow_target,point);
  121 +
  122 + },100);*/
  123 +
  124 + var PanOptions_ ={noAnimation :true};
  125 +
  126 + mapValue.reset();
  127 +
  128 + mapValue.panTo(point,PanOptions_);
  129 +
  130 + mapValue.panBy(500,-510,PanOptions_);
  131 +
  132 + mapValue.setZoom(14);
  133 +
  134 + },
  135 +
  136 + editPolyUpline : function() {
  137 +
  138 + // 禁止覆盖物在map.clearOverlays方法中被清除。(自 1.1 新增)
  139 + polyUpline.disableMassClear();
  140 +
  141 + WorldsBMap.clearMarkAndOverlays();
  142 +
  143 + // 允许覆盖物在map.clearOverlays方法中被清除。(自 1.1 新增)
  144 + polyUpline.enableMassClear();
  145 +
  146 + // 开启线路编辑
  147 + polyUpline.enableEditing();
  148 +
  149 + // 添加双击折线保存事件
  150 + polyUpline.addEventListener('dblclick',function(e) {
  151 +
  152 + // 关闭
  153 + layer.closeAll();
  154 +
  155 + polyUpline.disableEditing();
  156 +
  157 + // 获取折线坐标集合
  158 + var editPloyLineArray = polyUpline.getPath();
  159 +
  160 + EditSectionObj.setEitdBsectionVector(JSON.stringify(editPloyLineArray));
  161 +
  162 + polyUpline= '';
  163 +
  164 + // 加载修改路段弹出层mobal页面
  165 + $.get('editsection.html', function(m){
  166 +
  167 + $(pjaxContainer).append(m);
  168 +
  169 + $('#edit_section_mobal').trigger('editSectionMobal_show', [WorldsBMap,GetAjaxData,EditSectionObj,PositionsPublicFunctions]);
  170 +
  171 + });
  172 + });
  173 + },
30 174  
31   - return map;
32   - }
  175 + clearMarkAndOverlays : function() {
  176 +
  177 + // 清楚地图覆盖物
  178 + mapValue.clearOverlays();
  179 +
  180 + mapValue.removeOverlay();
  181 +
  182 + }
33 183  
34 184 }
35 185  
... ...
src/main/resources/static/pages/base/section/js/section-positions-reload.js
... ... @@ -17,135 +17,22 @@
17 17 // 获取参数线路ID
18 18 var id = $.url().param('no');
19 19  
20   - // 等候500毫秒执行
21   - setTimeout(function(){
22   -
23   - // 地图初始化
24   - var mapB = WorldsBMap.init();
25   -
26   - getStationRouteInfo(function(r) {
27   -
28   - console.log(r);
29   -
30   - var len = r.length;
31   -
32   - if(len>0) {
33   -
34   - var sectionBsectionVectorStr = r[0].sectionBsectionVector;
35   -
36   - var tempStr = sectionBsectionVectorStr.substring(11,sectionBsectionVectorStr.length-1);
37   -
38   - var lineArray = tempStr.split(',');
39   -
40   - var polylineArray = [];
41   -
42   - var lineaLen = lineArray.length
43   -
44   - for(var i = 0;i<lineaLen;i++) {
45   -
46   - polylineArray.push(new BMap.Point(lineArray[i].split(' ')[0],lineArray[i].split(' ')[1]));
47   -
48   - }
49   -
50   - var centerI = Math.ceil(lineaLen/2);
51   -
52   - // 中心坐标点
53   - var point = new BMap.Point(lineArray[centerI].split(' ')[0],lineArray[centerI].split(' ')[1]);
54   -
55   - var htm = '<HR style="border:1 dashed #987cb9" width="100%" color=#987cb9 SIZE=1>'+
56   - '<span style="color:#DDD;font-size: 15px;">路段名称:' + r[0].sectionName + '</span>' +
57   - '<span class="help-block" style="color:#DDD;font-size: 15px;">路段编码:' + r[0].sectionCode + '</span>' +
58   - '<span class="help-block" style="color:#DDD;font-size: 15px;">路段序号:' + r[0].sectionRouteCode + '</span>' +
59   - '<span class="help-block" style="color:#DDD;font-size: 15px;">限  速:' + r[0].sectionSpeedLimit + '</span>' +
60   - '<span class="help-block" style="color:#DDD;font-size: 15px;">路段长度:' + r[0].sectionDistance + '</span>' +
61   - '<span class="help-block" style="color:#DDD;font-size: 15px;">路段时间:' + r[0].sectionTime + '</span>' +
62   - '<span class="help-block" style="width: 100%;font-size: 15px;;color:#DDD; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; " title="'+ 'ddd' +'" >说明/描述:' + 'ddd' + '</span>' ;
63   -
64   - // 信息窗口参数属性
65   - var opts = {
66   -
67   - // 信息窗口宽度
68   - width : 200,
69   -
70   - // 信息窗口高度
71   - height : 450,
72   -
73   - // 信息窗位置偏移值。
74   - offset: new BMap.Size(500,-80),
75   -
76   - //标题
77   - title : '<h4 style="color:#FFFFFF">'+r[0].sectionName+'站详情</h4>',
78   -
79   - //设置不允许信窗发送短息
80   - enableMessage : false,
81   -
82   - //是否开启点击地图关闭信息窗口
83   - enableCloseOnClick : false,
84   -
85   - // 是否开启信息窗口打开时地图自动移动(默认开启)。(自 1.1 新增)
86   - enableAutoPan:true
87   - };
88   -
89   - drawingUpline(point,polylineArray,htm,opts,mapB);
90   - }
91   -
92   - });
93   -
94   - },200);
95   -
96   - function getStationRouteInfo (callback){
  20 + // 关闭左侧栏
  21 + if (!$('body').hasClass('page-sidebar-closed')) {
97 22  
98   - $get('/sectionroute/findSectionRouteInfoFormId',{id:id},function(r) {
99   -
100   - return callback && callback(r);
101   -
102   - });
  23 + $('.menu-toggler.sidebar-toggler').click();
103 24  
104 25 }
105 26  
106   - $('#backUp').on('click',function() {
107   -
108   - // 获取返回元素并修改url地址
109   - $('#backUp').attr('href','list.html?');
  27 + // 等候500毫秒执行
  28 + setTimeout(function(){
110 29  
111   - });
112   -
113   - function drawingUpline(point,polylineArray,htm,opts,mapB) {
  30 + /** 初始化地图 @return <mapB:地图对象> */
  31 + var mapB = WorldsBMap.init();
114 32  
115   - // 创建线路走向
116   - var polyUpline = new BMap.Polyline(polylineArray, {strokeColor : "blue",strokeWeight : 6,strokeOpacity : 0.5});
117   -
118   - // 把折线添加到地图上
119   - mapB.addOverlay(polyUpline);
120   -
121   - // 创建信息窗口
122   - var infoWindow_target = new BMap.InfoWindow(htm, opts);
123   -
124   - // 自定义标注物图片
125   - var icon_target = new BMap.Icon('/pages/base/stationroute/css/img/cz.png',new BMap.Size(20, 20));
126   -
127   - // 创建点
128   - var marker = new BMap.Marker(point,{icon : icon_target});
129   -
130   - // 把标注添物加到地图上
131   - mapB.addOverlay(marker);
132   -
133   - setTimeout(function(){
134   - //开启信息窗口
135   - marker.openInfoWindow(infoWindow_target,point);
136   -
137   - },100);
138   -
139   - var PanOptions_ ={noAnimation :true};
140   -
141   - mapB.reset();
142   -
143   - mapB.panTo(point,PanOptions_);
144   -
145   - mapB.panBy(500,-510,PanOptions_);
146   -
147   - mapB.setZoom(14);
  33 + /** 初始化路段信息 @return <id:路段路由ID> */
  34 + PositionsPublicFunctions.initSectionInfo(id);
148 35  
149   - }
  36 + },200);
150 37  
151 38 })();
152 39 \ No newline at end of file
... ...
src/main/resources/static/pages/base/section/positions.html
... ... @@ -9,7 +9,7 @@
9 9 </a>
10 10 <ul class="dropdown-menu pull-right" style="min-width:100px">
11 11 <li>
12   - <a href="javascript:;"><i class="fa fa-pencil"></i> 修改 </a>
  12 + <a href="javascript:;" id = "eidt"><i class="fa fa-pencil"></i> 修改 </a>
13 13 </li>
14 14 <li>
15 15 <a href="javascript:;" id = "backUp"> <i class="fa fa-reply"></i> 返回 </a>
... ... @@ -18,5 +18,20 @@
18 18 </ul>
19 19 </div>
20 20 </div>
  21 +<!-- 编辑路段对象类 -->
  22 +<script src="/pages/base/section/js/positionsection.js"></script>
  23 +
  24 +<!-- ajax异步请求类 -->
  25 +<script src="/pages/base/section/js/section-ajax-getdata.js"></script>
  26 +
  27 +<!-- 函数方法类 -->
  28 +<script src="/pages/base/section/js/section-positions-function.js"></script>
  29 +
  30 +<!-- 地图类 -->
21 31 <script src="/pages/base/section/js/section-positions-map.js"></script>
  32 +
  33 +<!-- 事件类 -->
  34 +<script src="/pages/base/section/js/section-positions-events.js"></script>
  35 +
  36 +<!-- reload类 -->
22 37 <script src="/pages/base/section/js/section-positions-reload.js"></script>
23 38 \ No newline at end of file
... ...
src/main/resources/static/pages/base/station/edit.html
1 1 <!-- 编辑站点弹出层mobal -->
2   -<div class="modal fade" id="edit_station_mobal" tabindex="-1" role="basic" aria-hidden="true">
  2 +<div class="modal fade" id="editPoitsions_station_mobal" tabindex="-1" role="basic" aria-hidden="true">
3 3  
4 4 <div class="modal-dialog">
5 5 <div class="modal-content">
... ... @@ -36,6 +36,9 @@
36 36 <!-- 图形坐标点集合(百度坐标) -->
37 37 <input type="hidden" name="bPolygonGrid" id="bPolygonGridInput" />
38 38  
  39 +
  40 + <input type="hidden" name="gJwpoints" id="gJwpointsInput">
  41 +
39 42 <!-- 图形坐标点集合(WGS坐标) -->
40 43 <input type="hidden" name="gPolygonGrid" id="gPolygonGridInput" />
41 44  
... ... @@ -139,14 +142,14 @@
139 142 </div>
140 143  
141 144 <!-- 站点WGS经纬度 -->
142   - <div class="form-body">
  145 + <!-- <div class="form-body">
143 146 <div class="form-group">
144 147 <label class="col-md-3 control-label">站点WGS经纬度:</label>
145 148 <div class="col-md-6">
146 149 <input type="text" class="form-control" name="gJwpoints" id="gJwpointsInput" placeholder="站点WGS经纬度">
147 150 </div>
148 151 </div>
149   - </div>
  152 + </div> -->
150 153  
151 154 <!-- 范围图形类型 -->
152 155 <div class="form-body">
... ... @@ -240,29 +243,30 @@
240 243 </div>
241 244 </div>
242 245 </div>
243   -<script type="text/javascript">
244   -$(function(){
245   -
246   - // 初始化表单值
247   - PublicFunctions.setFormValue();
  246 +<script type="text/javascript">
  247 +
  248 +$('#editPoitsions_station_mobal').on('editStationMobal_show', function(e, map,fun,stat){
248 249  
249 250 // 获取站点对象信息
250   - var stationObjEidtArray = PublicFunctions.getstationObjData();
  251 + var editStation = stat.getAddStation();
  252 +
  253 + // 初始化表单值
  254 + fun.setFormValue(editStation);
251 255  
252 256 // 方向
253   - var edit_direction_v = stationObjEidtArray[0].stationRoutedirections;
  257 + var edit_direction_v = editStation.stationRoutedirections;
254 258  
255 259 // 线路ID
256   - var lineId = stationObjEidtArray[0].stationRouteLine;
  260 + var lineId = editStation.stationRouteLine;
257 261  
258 262 // 获取站点序号元素,并添加下拉属性值
259   - PublicFunctions.getStation(lineId,edit_direction_v,function(treeData) {
  263 + fun.getStation(lineId,edit_direction_v,function(treeData) {
260 264  
261 265 var options = '<option value="">请选择...</option>';
262 266  
263 267 var dArray = treeData[0].children[0].children;
264 268  
265   - var eq_stationRouteCode = stationObjEidtArray[0].stationRouteCode + '_' + stationObjEidtArray[0].stationRouteStationMark;
  269 + var eq_stationRouteCode = editStation.stationRouteCode + '_' + editStation.stationRouteStationMark;
266 270  
267 271 for(var i = 0 ; i<dArray.length; i++){
268 272  
... ... @@ -281,7 +285,7 @@ $(function(){
281 285  
282 286 $('#stationrouteSelect').html(options);
283 287  
284   - PublicFunctions.findUpStationRouteCode(lineId,edit_direction_v,stationObjEidtArray[0].stationRouteCode,function(str) {
  288 + fun.findUpStationRouteCode(lineId,edit_direction_v,editStation.stationRouteCode,function(str) {
285 289  
286 290 if(str.length>0){
287 291  
... ... @@ -296,15 +300,31 @@ $(function(){
296 300 });
297 301  
298 302 // 显示mobal
299   - $('#edit_station_mobal').modal({show : true,backdrop: 'static',keyboard: false});
  303 + $('#editPoitsions_station_mobal').modal({show : true,backdrop: 'static',keyboard: false});
300 304  
301 305 // 当调用 hide 实例方法时触发
302   - $('#edit_station_mobal').on('hide.bs.modal', function () {
  306 + $('#editPoitsions_station_mobal').on('hide.bs.modal', function () {
303 307  
304   - PublicFunctions.clearRefresh();
  308 + closeMobleSetClean();
305 309  
306 310 });
307 311  
  312 + function closeMobleSetClean() {
  313 +
  314 + $('#eidt').attr("disabled",false);
  315 +  
  316 + $('#eidt').removeClass('btn disabled');
  317 +
  318 + $('#eidt').addClass('btn');
  319 +
  320 + // 清除地图覆盖物
  321 + map.clearMarkAndOverlays();
  322 +
  323 + var stationId = editStation.stationRouteId;
  324 +
  325 + fun.initStationInfo(stationId);
  326 +
  327 + }
308 328  
309 329 // 编辑表单元素
310 330 var form = $('#edit_station_form');
... ... @@ -434,7 +454,7 @@ $(function(){
434 454 error.hide();
435 455 console.log(params);
436 456 return ;
437   - PublicFunctions.stationUpdate(params,function(resuntDate) {
  457 + fun.stationUpdate(params,function(resuntDate) {
438 458  
439 459 if(resuntDate.status=='SUCCESS') {
440 460  
... ... @@ -449,10 +469,12 @@ $(function(){
449 469 }
450 470  
451 471 // 隐藏弹出层mobal
452   - $('#edit_station_mobal').modal('hide');
  472 + $('#editPoitsions_station_mobal').modal('hide');
  473 +
  474 + closeMobleSetClean();
453 475  
454 476 // 刷新站点数据
455   - PublicFunctions.clearRefresh();
  477 + /* PublicFunctions.clearRefresh(); */
456 478 });
457 479 }
458 480 });
... ... @@ -466,8 +488,6 @@ $(function(){
466 488  
467 489 var tempStr = stationRValue.split('_');
468 490  
469   - console.log(tempStr);
470   -
471 491 if(tempStr[1] == 'E') {
472 492  
473 493 $('#stationMarkSelect').val('E');
... ... @@ -521,7 +541,7 @@ $(function(){
521 541  
522 542 var stationMarkV = $('#stationdirSelect').val();
523 543  
524   - if(stationMarkV!=stationObjEidtArray[0].stationRoutedirections){
  544 + if(stationMarkV!=editStation.stationRoutedirections){
525 545  
526 546 tel = false;
527 547  
... ... @@ -530,5 +550,5 @@ $(function(){
530 550 return tel;
531 551 }, '方向必须一致!');
532 552  
533   -});
  553 +});
534 554 </script>
535 555 \ No newline at end of file
... ...
src/main/resources/static/pages/base/station/edit_select.html
1 1 <!-- 选择编辑站点方式弹出层mobal -->
2   -<div class="modal fade" id="edit_select_mobal" tabindex="-1" role="basic" aria-hidden="true">
  2 +<div class="modal fade" id="editPositions_select_mobal" tabindex="-1" role="basic" aria-hidden="true">
3 3  
4 4 <div class="modal-dialog">
5 5  
... ... @@ -75,22 +75,18 @@
75 75 </div>
76 76 <script type="text/javascript">
77 77  
78   -$(function(){
  78 +$('#editPositions_select_mobal').on('editSelectMobal_show', function(e, map,drm,fun,statn){
79 79  
80   - var stationObjEditSelect = PublicFunctions.getstationObjData();
81   -
82   - var editSelectMapB = WorldsBMap.getMapBValue();
83   -
84   - var editSelectDrawingManager = WorldsBMap.getDrawingManagerValue();
  80 + var EditStation = statn.getAddStation();
85 81  
86 82 // 显示选择修改方式弹出层
87   - $('#edit_select_mobal').modal({show : true,backdrop: 'static',keyboard: false});
  83 + $('#editPositions_select_mobal').modal({show : true,backdrop: 'static',keyboard: false});
88 84  
89 85 // 获取站点名称元素并赋值
90   - $('#stationNamebootboxInput').val(stationObjEditSelect[0].stationName);
  86 + $('#stationNamebootboxInput').val(EditStation.stationName);
91 87  
92 88 // 定义站点图形类型
93   - var stationShapesTypeV = stationObjEditSelect[0].stationShapesType;
  89 + var stationShapesTypeV = EditStation.stationShapesType;
94 90  
95 91 // 获取表单元素
96 92 var form = $('#edit_select');
... ... @@ -158,7 +154,7 @@ $(function(){
158 154 submitHandler : function(f) {
159 155  
160 156 // 隐藏弹出层
161   - $('#edit_select_mobal').modal('hide');
  157 + $('#editPositions_select_mobal').modal('hide');
162 158  
163 159   $('#eidt').attr("disabled",true);
164 160  
... ... @@ -170,47 +166,21 @@ $(function(){
170 166 // 站点名称
171 167 var editStationName = params.stationNamebootbox;
172 168  
173   - WorldsBMap.localSearchFromAdreesToPoint(editStationName,editSelectMapB,function(Points) {
174   -
175   - if(Points) {
176   -
177   - var BJwpointsArray = Points.split(' ');
178   -
179   - var stationNameChangePoint = new BMap.Point(BJwpointsArray[0], BJwpointsArray[1]);
180   -
181   - var marker_stargt2 = new BMap.Marker(stationNameChangePoint);
182   -
183   - var PanOptions ={noAnimation :true};
184   -
185   - editSelectMapB.panTo(stationNameChangePoint,PanOptions);
186   -
187   - editSelectMapB.panBy(0,-200);
188   -
189   - // 将标注添加到地图中
190   - editSelectMapB.addOverlay(marker_stargt2);
191   -
192   - //跳动的动画
193   - marker_stargt2.setAnimation(BMAP_ANIMATION_BOUNCE);
194   -
195   - }
196   -
197   - });
198   -
199 169 // 设置站点名称
200   - PublicFunctions.setStationNameValue(editStationName);
  170 + statn.setEitdStationName(editStationName);
201 171  
202 172 var eidtselect_ = params.editselect;
203 173  
204 174 if(eidtselect_==0){
205 175  
206   - // 清楚地图覆盖物
207   - editSelectMapB.clearOverlays();
  176 + // 清除地图覆盖物
  177 + StationPositionsWorldsBMap.clearMarkAndOverlays();
208 178  
209   - // 打开鼠标绘画工具
210   - editSelectDrawingManager.open();
  179 + // 打开绘制工具
  180 + PositionsDrawingManagerObj.openDrawingManager();
211 181  
212   - // 设置属性
213   - editSelectDrawingManager.setDrawingMode(BMAP_DRAWING_POLYGON);
  182 + // 根据站点位置在地图定位
  183 + StationPositionsWorldsBMap.localtionPoint(editStationName);
214 184  
215 185  
216 186 }else if(eidtselect_==1){
... ... @@ -219,21 +189,13 @@ $(function(){
219 189 var mindex = layer.msg('编辑完图形后,请双击图形区域保存',{ offset: '126px',
220 190 shift: 0,time: 10000});
221 191  
222   - var markerEidtSelect = PublicFunctions.getMarkerObj();
223   -
224   - // 关闭信息窗口
225   - markerEidtSelect.closeInfoWindow();
226   -
227   - // 清除marker
228   - editSelectMapB.removeOverlay(markerEidtSelect);
229   -
230 192 // 编辑图形
231   - WorldsBMap.editShapes(stationShapesTypeV,mindex);
  193 + StationPositionsWorldsBMap.editShapes(stationShapesTypeV,mindex);
232 194  
233 195 }else if(eidtselect_==2){
234 196  
235 197 // 系统引用
236   - $('#edit_select_mobal').modal('hide');
  198 + $('#editPositions_select_mobal').modal('hide');
237 199  
238 200 $.get('station_tabledate.html', function(m){$(pjaxContainer).append(m);});
239 201  
... ...
src/main/resources/static/pages/base/station/js/add-vmap-world.js
... ... @@ -207,7 +207,7 @@ var VmapWorlds = function() {
207 207 // 设置属性
208 208 drawingManager.setDrawingMode(BMAP_DRAWING_POLYGON);
209 209  
210   - },
  210 + }
211 211  
212 212 }
213 213  
... ...
src/main/resources/static/pages/base/station/js/positionsdrwmager.js 0 → 100644
  1 +var PositionsDrawingManagerObj = function () {
  2 +
  3 + // 创建鼠标绘制管理类
  4 + var drawingManager = '';
  5 +
  6 + var draMangerObj = {
  7 +
  8 + /** 初始化绘制工具类 */
  9 + init : function(map,styleOptions) {
  10 +
  11 + drawingManager = new BMapLib.DrawingManager(map, {
  12 +
  13 + //是否开启绘制模式
  14 + isOpen : false,
  15 +
  16 + //是否显示工具栏
  17 + enableDrawingTool : false,
  18 +
  19 + drawingToolOptions : {
  20 +
  21 + //位置
  22 + anchor : BMAP_ANCHOR_TOP_RIGHT,
  23 +
  24 + //偏离值
  25 + offset : new BMap.Size(5, 5),
  26 +
  27 + //工具栏缩放比例
  28 + scale : 0.8
  29 +
  30 + },
  31 +
  32 + //线的样式
  33 + polygonOptions : styleOptions
  34 +
  35 + });
  36 +
  37 + // 添加绘画完成事件
  38 + drawingManager.addEventListener('polygoncomplete', function(e) {
  39 +
  40 + drawingManager.close;
  41 +
  42 + if (e.getPath().length <= 2) {
  43 +
  44 + // 弹出提示消息
  45 + layer.msg('坐标点不能小于等于两个...');
  46 +
  47 + // 清除地图覆盖物
  48 + StationPositionsWorldsBMap.clearMarkAndOverlays();
  49 +
  50 + var addStation = PositionsStationObj.getAddStation();
  51 +
  52 + var stationId = addStation.stationId;
  53 +
  54 + PositionsPublicFunctions.initStationInfo(stationId);
  55 +
  56 + PositionsStationObj.setAddStation({});
  57 +
  58 + return false;
  59 +
  60 + }else {
  61 +
  62 + var pointE = e;
  63 +
  64 + // 多变行质心点
  65 + var addSttationPoints_ = pointE.getBounds().getCenter().lng+ ' ' + pointE.getBounds().getCenter().lat;
  66 +
  67 + var addPolyGonLen_ = pointE.getPath().length;
  68 +
  69 + for(var k =0;k<addPolyGonLen_;k++) {
  70 +
  71 + if(k==0) {
  72 +
  73 + bPloygonGrid = pointE.getPath()[k].lng + ' ' + pointE.getPath()[k].lat;
  74 +
  75 + }else {
  76 +
  77 + bPloygonGrid = bPloygonGrid + ',' + pointE.getPath()[k].lng + ' ' + pointE.getPath()[k].lat;
  78 +
  79 + }
  80 +
  81 + }
  82 +
  83 + bPloygonGrid = bPloygonGrid + ',' + pointE.getPath()[0].lng + ' ' + pointE.getPath()[0].lat;
  84 +
  85 + /** 设置修改站点集合对象站点中心点百度坐标属性值 @param:<bJwpoints:中心点百度坐标) */
  86 + PositionsStationObj.setEitdStationBJwpoints(addSttationPoints_);
  87 +
  88 + /** 设置修改站点集合对象范围图形类型属性值 @param:<shapesType:范围图形类型) */
  89 + PositionsStationObj.setEitdStationShapesType('d');
  90 +
  91 + /** 设置修改站点集合对象圆形半径属性值 @param:<radius:圆形半径) */
  92 + PositionsStationObj.setEitdStationRadius('');
  93 +
  94 + /** 设置修改站点集合对象图形百度坐标集合属性值 @param:<bPolygonGrid:图形百度坐标集合) */
  95 + PositionsStationObj.setEitdBPolygonGrid(bPloygonGrid);
  96 +
  97 + $.get('edit.html', function(m){
  98 +
  99 + $(pjaxContainer).append(m);
  100 +
  101 + $('#editPoitsions_station_mobal').trigger('editStationMobal_show', [StationPositionsWorldsBMap,PositionsPublicFunctions,PositionsStationObj]);
  102 +
  103 + });
  104 + }
  105 +
  106 + });
  107 +
  108 + return drawingManager;
  109 +
  110 + },
  111 +
  112 + openDrawingManager : function() {
  113 +
  114 + // 打开鼠标绘画工具
  115 + drawingManager.open();
  116 +
  117 + // 设置属性
  118 + drawingManager.setDrawingMode(BMAP_DRAWING_POLYGON);
  119 +
  120 + }
  121 + }
  122 +
  123 + return draMangerObj;
  124 +
  125 +}();
0 126 \ No newline at end of file
... ...
src/main/resources/static/pages/base/station/js/positionstation.js 0 → 100644
  1 +var PositionsStationObj = function () {
  2 +
  3 + /** 定义新增站点对象 */
  4 + var station={};
  5 +
  6 + var stationObj = {
  7 +
  8 + /** 获取新增站点集合对象 @return:<station:新增站点对象> */
  9 + getAddStation : function() {
  10 +
  11 + return station;
  12 + },
  13 +
  14 + /** 设置新增站点集合对象为空 */
  15 + setAddStation : function(r) {
  16 +
  17 + station = r;
  18 +
  19 + },
  20 +
  21 + /** 设置新增站点集合对象方向属性值 @param:<dir:方向(0:上行;1:下行)> */
  22 + setAddStationDiraction : function(dir) {
  23 +
  24 + station.dir = dir;
  25 + },
  26 +
  27 + /** 设置新增站点集合对象站点名称属性值 @param:<name:站点名称) */
  28 + setEitdStationName : function(name) {
  29 +
  30 + station.stationName = name;
  31 +
  32 + },
  33 +
  34 + /** 设置新增站点集合对象站点中心点百度坐标属性值 @param:<bJwpoints:中心点百度坐标) */
  35 + setEitdStationBJwpoints : function(bJwpoints) {
  36 +
  37 + station.stationJwpoints = bJwpoints;
  38 + },
  39 +
  40 + /** 设置新增站点集合对象范围图形类型属性值 @param:<shapesType:范围图形类型) */
  41 + setEitdStationShapesType : function(shapesType) {
  42 +
  43 + station.stationShapesType = shapesType;
  44 + },
  45 +
  46 + /** 设置新增站点集合对象圆形半径属性值 @param:<radius:圆形半径) */
  47 + setEitdStationRadius : function(radius) {
  48 +
  49 + station.stationRadius = radius;
  50 + },
  51 +
  52 + /** 设置新增站点集合对象图形百度坐标集合属性值 @param:<bPolygonGrid:图形百度坐标集合) */
  53 + setEitdBPolygonGrid : function(bPolygonGrid) {
  54 +
  55 + station.stationBPolyonGrid = bPolygonGrid;
  56 + }
  57 + }
  58 +
  59 + return stationObj;
  60 +
  61 +}();
0 62 \ No newline at end of file
... ...
src/main/resources/static/pages/base/station/js/station-positions-events.js
... ... @@ -11,7 +11,13 @@ $(function(){
11 11 // 修改上行站点mobal页面
12 12 $('.dropdown-menu #eidt').on('click', function(){
13 13  
14   - $.get('edit_select.html', function(m){$(pjaxContainer).append(m);});
  14 + $.get('edit_select.html', function(m){
  15 +
  16 + $(pjaxContainer).append(m);
  17 +
  18 + $('#editPositions_select_mobal').trigger('editSelectMobal_show', [StationPositionsWorldsBMap,PositionsDrawingManagerObj,PositionsPublicFunctions,PositionsStationObj]);
  19 +
  20 + });
15 21  
16 22 });
17 23  
... ...
src/main/resources/static/pages/base/station/js/station-positions-function.js
... ... @@ -2,31 +2,17 @@
2 2 * 函数
3 3 */
4 4  
5   -var PublicFunctions = function () {
6   -
7   - var stationObj = '';
8   -
9   - var stationId = '';
10   -
11   - var mapB = '';
12   -
13   - var circle = '';
14   -
15   - var polygon = '';
16   -
17   - var marker ='';
18   -
  5 +var PositionsPublicFunctions = function () {
  6 +
19 7 var PubFun = {
20 8  
21   - initStationInfo : function(id,map_) {
22   -
23   - stationId = id;
  9 + initStationInfo : function(id) {
24 10  
25   - mapB = map_;
26   -
27   - PublicFunctions.getStationRouteInfo(stationId,function(r) {
  11 + PositionsPublicFunctions.getStationRouteInfo(id,function(r) {
  12 +
  13 + var Station = r[0];
28 14  
29   - stationObj = r;
  15 + PositionsStationObj.setAddStation(Station);
30 16  
31 17 var len = r.length;
32 18  
... ... @@ -41,13 +27,13 @@ var PublicFunctions = function () {
41 27 var point = new BMap.Point(BJwpoints[0], BJwpoints[1]);
42 28  
43 29 var htm = '<HR style="border:1 dashed #987cb9" width="100%" color=#987cb9 SIZE=1>'+
44   - '<span style="color:#DDD;font-size: 15px;">站点名称:' + r[0].stationName + '</span>' +
45   - '<span class="help-block" style="color:#DDD;font-size: 15px;">站点编码:' + r[0].stationCode + '</span>' +
46   - '<span class="help-block" style="color:#DDD;font-size: 15px;">站点序号:' + r[0].stationRouteCode + '</span>' +
47   - '<span class="help-block" style="color:#DDD;font-size: 15px;">纬度坐标:' + r[0].stationJwpoints + '</span>' +
48   - '<span class="help-block" style="color:#DDD;font-size: 15px;">范围半径:' + r[0].stationRadius + '</span>' +
49   - '<span class="help-block" style="color:#DDD;font-size: 15px;">版本 号:' + r[0].stationRouteVersions + '</span>' +
50   - '<span class="help-block" style="width: 100%;font-size: 15px;;color:#DDD; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; " title="'+ 'ddd' +'" >说明/描述:' + 'ddd' + '</span>' ;
  30 + '<span style="color:#DDD;font-size: 15px;">站点名称:' + r[0].stationName + '</span>' +
  31 + '<span class="help-block" style="color:#DDD;font-size: 15px;">站点编码:' + r[0].stationCode + '</span>' +
  32 + '<span class="help-block" style="color:#DDD;font-size: 15px;">站点序号:' + r[0].stationRouteCode + '</span>' +
  33 + '<span class="help-block" style="color:#DDD;font-size: 15px;">纬度坐标:' + r[0].stationJwpoints + '</span>' +
  34 + '<span class="help-block" style="color:#DDD;font-size: 15px;">范围半径:' + r[0].stationRadius + '</span>' +
  35 + '<span class="help-block" style="color:#DDD;font-size: 15px;">版本 号:' + r[0].stationRouteVersions + '</span>' +
  36 + '<span class="help-block" style="width: 100%;font-size: 15px;;color:#DDD; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; " title="'+ 'ddd' +'" >说明/描述:' + 'ddd' + '</span>' ;
51 37  
52 38 // 信息窗口参数属性
53 39 var opts = {
... ... @@ -59,7 +45,7 @@ var PublicFunctions = function () {
59 45 height : 450,
60 46  
61 47 // 信息窗位置偏移值。
62   - offset: new BMap.Size(500,-80),
  48 + offset: new BMap.Size(500,80),
63 49  
64 50 //标题
65 51 title : '<h4 style="color:#FFFFFF">'+r[0].stationName+'站详情</h4>',
... ... @@ -77,12 +63,12 @@ var PublicFunctions = function () {
77 63 if(stationShapesType == 'r') {
78 64  
79 65 // 画圆
80   - PublicFunctions.pointsCircle(r,point,htm,opts,mapB);
  66 + StationPositionsWorldsBMap.pointsCircle(r,point,htm,opts);
81 67  
82 68 }else if(stationShapesType == 'd'){
83 69  
84 70 // 画多边形
85   - PublicFunctions.pointsPolygon(r,point,htm,opts,mapB);
  71 + StationPositionsWorldsBMap.pointsPolygon(r,point,htm,opts);
86 72  
87 73 }
88 74  
... ... @@ -167,64 +153,58 @@ var PublicFunctions = function () {
167 153  
168 154 },
169 155  
170   - setFormValue : function() {
  156 + setFormValue : function(stationObj) {
171 157  
172 158 // 站点ID
173   - $('#stationIdInput').val(stationObj[0].stationId);
  159 + $('#stationIdInput').val(stationObj.stationId);
174 160  
175 161 // 站点路由ID
176   - $('#stationRouteIdInput').val(stationObj[0].stationRouteId);
  162 + $('#stationRouteIdInput').val(stationObj.stationRouteId);
177 163  
178 164 // 站点路由线路Id
179   - $('#stationRouteLineInput').val(stationObj[0].stationRouteLine);
  165 + $('#stationRouteLineInput').val(stationObj.stationRouteLine);
180 166  
181 167 // 线路编码
182   - $('#lineCodeInput').val(stationObj[0].stationRouteLIneCode);
  168 + $('#lineCodeInput').val(stationObj.stationRouteLIneCode);
183 169  
184 170 // WGS坐标点图形集合
185   - $('#bPolygonGridInput').val(stationObj[0].stationBPolyonGrid);
186   -
187   - // 百度坐标点图形集合
188   - /*$('#gPolygonGridInput').val(stationObj[0].stationGPloyonGrid);*/
  171 + $('#bPolygonGridInput').val(stationObj.stationBPolyonGrid);
189 172  
190 173 // 获取站点名称元素设值
191   - $('#stationNameInput').val(stationObj[0].stationName);
  174 + $('#stationNameInput').val(stationObj.stationName);
192 175  
193 176 // 获取站点编码元素设值
194   - $('#stationCodInput').val(stationObj[0].stationCode);
  177 + $('#stationCodInput').val(stationObj.stationCode);
195 178  
196 179 // 获取站点类型元素设值
197   - $('#stationMarkSelect').val(stationObj[0].stationRouteStationMark);
  180 + $('#stationMarkSelect').val(stationObj.stationRouteStationMark);
198 181  
199 182 // 获取站点方向元素设值
200   - $('#stationdirSelect').val(stationObj[0].stationRoutedirections);
  183 + $('#stationdirSelect').val(stationObj.stationRoutedirections);
201 184  
202 185 // 获取站点道路编码元素设值
203   - $('#roadCodingCodInput').val(stationObj[0].stationRoadCoding);
  186 + $('#roadCodingCodInput').val(stationObj.stationRoadCoding);
204 187  
205 188 // 百度地图经纬度坐标中心点
206   - $('#bJwpointsInput').val(stationObj[0].stationJwpoints);
207   -
208   - // WGS经纬度
209   - /*$('#gJwpointsInput').val(stationObj[0].stationGlonx + ' ' + stationObj[0].stationGlaty);*/
  189 + $('#bJwpointsInput').val(stationObj.stationJwpoints);
210 190  
211 191 // 获取图形类型元素,并添加值
212   - $('#shapesTypeSelect').val(stationObj[0].stationShapesType);
  192 + $('#shapesTypeSelect').val(stationObj.stationShapesType);
213 193  
214 194 // 获取半径元素,并添加值
215   - $('#radiusInput').val(stationObj[0].stationRadius);
  195 + $('#radiusInput').val(stationObj.stationRadius);
216 196  
217 197 // 是否撤销
218   - $('#destroySelect').val(stationObj[0].stationRouteDestroy);
  198 + $('#destroySelect').val(stationObj.stationRouteDestroy);
219 199  
220 200 // 到站时间
221   - $('#toTimeInput').val(stationObj[0].stationRouteToTime);
  201 + $('#toTimeInput').val(stationObj.stationRouteToTime);
222 202  
223 203 // 到站距离
224   - $('#distancesInput').val(stationObj[0].stationRouteDistances);
  204 + $('#distancesInput').val(stationObj.stationRouteDistances);
225 205  
226 206 // 描述/说明
227   - $('#descriptionsTextarea').val(stationObj[0].stationRouteDescriptions);
  207 + $('#descriptionsTextarea').val(stationObj.stationRouteDescriptions);
228 208  
229 209 },
230 210  
... ... @@ -263,114 +243,6 @@ var PublicFunctions = function () {
263 243  
264 244 },
265 245  
266   - pointsPolygon : function(r,pointPolygon,htm,opts_polygon,map) {
267   -
268   - // 获取多边形坐标字符串
269   - var stationBPolygonGrid = r[0].stationBPolyonGrid;
270   -
271   - // 截取多边形坐标字符串
272   - var stationBPolygonGridStr = stationBPolygonGrid.substring(9,stationBPolygonGrid.length-2);
273   -
274   - // 按逗号切割
275   - var pointPolygonArray = stationBPolygonGridStr.split(',');
276   -
277   - // 多边形坐标集合
278   - var polygonP = [];
279   -
280   - for(var v = 0;v<pointPolygonArray.length;v++) {
281   -
282   - polygonP.push(new BMap.Point(pointPolygonArray[v].split(" ")[0],pointPolygonArray[v].split(" ")[1]));
283   -
284   - }
285   -
286   - // 画多边形
287   - polygon = new BMap.Polygon(polygonP, {
288   -
289   - // 线条显色
290   - strokeColor : "blue",
291   -
292   - // 边线的宽度,以像素为单位。
293   - strokeWeight : 2,
294   -
295   - // 边线透明度,取值范围0 - 1。
296   - strokeOpacity : 0.5
297   - });
298   -
299   - // 增加地图覆盖物多边形
300   - map.addOverlay(polygon);
301   -
302   - // 创建信息窗口
303   - infoWindow = new BMap.InfoWindow(htm, opts_polygon);
304   -
305   - // 自定义标注物图片
306   - var icon_target = new BMap.Icon('/pages/base/stationroute/css/img/cz.png',new BMap.Size(20, 20));
307   -
308   - // 创建点
309   - marker = new BMap.Marker(pointPolygon,{icon : icon_target});
310   -
311   - // 把标注添物加到地图上
312   - map.addOverlay(marker);
313   -
314   - // 是否在平移过程中禁止动画。(自1.2新增)
315   - var PanOptions_ ={noAnimation :true};
316   -
317   - // 将地图的中心点更改为给定的点。
318   - map.panTo(pointPolygon,PanOptions_);
319   -
320   - // 将地图在水平位置上移动x像素,垂直位置上移动y像素。
321   - map.panBy(10,110,PanOptions_);
322   -
323   - //开启信息窗口
324   - marker.openInfoWindow(infoWindow,pointPolygon);
325   -
326   - },
327   -
328   - pointsCircle : function(r,point,htm,opts,map) {
329   -
330   - //创建圆
331   - circle = new BMap.Circle(point,r[0].stationRadius,{strokeColor:"blue", strokeWeight:2, strokeOpacity:0.5});
332   -
333   - // 允许覆盖物在map.clearOverlays方法中被清除
334   - circle.enableMassClear();
335   -
336   - // 百度地图添加覆盖物圆
337   - map.addOverlay(circle);
338   -
339   - // 创建信息窗口
340   - infoWindow = new BMap.InfoWindow(htm, opts);
341   -
342   - // 自定义标注物图片
343   - var icon_target = new BMap.Icon('/pages/base/stationroute/css/img/cz.png',new BMap.Size(20, 20));
344   -
345   - // 创建点
346   - marker = new BMap.Marker(point,{icon : icon_target});
347   -
348   - // 把标注添物加到地图上
349   - map.addOverlay(marker);
350   -
351   - setTimeout(function(){
352   - //开启信息窗口
353   - marker.openInfoWindow(infoWindow,point);
354   -
355   - },100);
356   -
357   - // 是否在平移过程中禁止动画。(自1.2新增)
358   - var PanOptions_ ={noAnimation :true};
359   -
360   - // 将地图的中心点更改为给定的点。
361   - map.panTo(point,PanOptions_);
362   -
363   - //map.panBy(10,-50,PanOptions_);
364   -
365   - // 添加标志物监听事件
366   - marker.addEventListener("click",function() {
367   -
368   - //开启信息窗口
369   - marker.openInfoWindow(infoWindow,point);
370   -
371   - });
372   - },
373   -
374 246 // 站点更新
375 247 stationUpdate : function(station,callback) {
376 248  
... ...
src/main/resources/static/pages/base/station/js/station-positions-map.js
... ... @@ -3,9 +3,9 @@
3 3 *
4 4 */
5 5  
6   -var WorldsBMap = function () {
  6 +var StationPositionsWorldsBMap = function () {
7 7  
8   - var mapBValue = '',drawingManagerInit='';
  8 + var mapBValue = '',marker='',polygon='';
9 9  
10 10 var Bmap = {
11 11  
... ... @@ -51,322 +51,234 @@ var WorldsBMap = function () {
51 51 return mapBValue;
52 52 },
53 53  
54   - initDrawingManager : function(map,styleOptions) {
  54 + pointsCircle : function(r,point,htm,opts) {
55 55  
56   - // 创建鼠标绘制管理类
57   - drawingManagerInit = new BMapLib.DrawingManager(map, {
58   -
59   - //是否开启绘制模式
60   - isOpen : false,
61   -
62   - //是否显示工具栏
63   - enableDrawingTool : false,
64   -
65   - drawingToolOptions : {
66   -
67   - //位置
68   - anchor : BMAP_ANCHOR_TOP_RIGHT,
69   -
70   - //偏离值
71   - offset : new BMap.Size(5, 5),
72   -
73   - //工具栏缩放比例
74   - scale : 0.8
75   -
76   - },
77   -
78   - //线的样式
79   - polygonOptions : styleOptions
80   -
81   - });
  56 + // 将视图切换到指定的缩放等级,中心点坐标不变。注意:当有信息窗口在地图上打开时,地图缩放将保证信息窗口所在的坐标位置不动。(自1.2新增)
  57 + mapBValue.setZoom(17);
82 58  
83   - // 添加绘画完成事件
84   - drawingManagerInit.addEventListener('polygoncomplete', function(e) {
  59 + //创建圆
  60 + circle = new BMap.Circle(point,r[0].stationRadius,{strokeColor:"blue", strokeWeight:2, strokeOpacity:0.5});
  61 +
  62 + // 允许覆盖物在map.clearOverlays方法中被清除
  63 + circle.enableMassClear();
  64 +
  65 + // 百度地图添加覆盖物圆
  66 + mapBValue.addOverlay(circle);
  67 +
  68 + // 创建信息窗口
  69 + infoWindow = new BMap.InfoWindow(htm, opts);
  70 +
  71 + // 自定义标注物图片
  72 + var icon_target = new BMap.Icon('/pages/base/stationroute/css/img/cz.png',new BMap.Size(20, 20));
  73 +
  74 + // 创建点
  75 + marker = new BMap.Marker(point,{icon : icon_target});
85 76  
86   - drawingManagerInit.close();
87   -
88   - if (e.getPath().length <= 2) {
89   -
90   - // 弹出提示消息
91   - layer.msg('坐标点不能小于等于两个...');
92   -
93   - // 清除地图覆盖物
94   - map.clearOverlays();
95   -
96   - // 加载该线路下所有站点位置添加到地图上
97   - return false;
98   -
99   - }else {
100   -
101   - var pointE = e;
102   -
103   - // 多变行质心点
104   - var addSttationPoints_ = pointE.getBounds().getCenter().lng+ ' ' + pointE.getBounds().getCenter().lat;
105   -
106   - var PointsList = [];
107   -
108   - for ( var i = 0; i < pointE.getPath().length; i++) {
109   -
110   - PointsList.push({potion: {lng: pointE.getPath()[i].lng, lat: pointE.getPath()[i].lat}});
111   -
112   - }
113   -
114   - PointsList.push({potion: {lng: pointE.getPath()[0].lng, lat: pointE.getPath()[0].lat}});
115   -
116   - var centre = [{potion:{lng:pointE.getBounds().getCenter().lng,lat:pointE.getBounds().getCenter().lat}}];
117   -
118   - var gPloygonGrid = '';
119   -
120   - var bPloygonGrid = '';
121   -
122   - var pointsListLen_ = PointsList.length;
123   -
124   - for(var k =0;k<pointsListLen_;k++) {
125   -
126   - if(k==0) {
127   -
128   - bPloygonGrid = PointsList[k].potion.lng + ' ' +PointsList[k].potion.lat;
129   -
130   - }else {
131   -
132   - bPloygonGrid = bPloygonGrid + ',' + PointsList[k].potion.lng + ' ' +PointsList[k].potion.lat;
133   -
134   - }
135   -
136   - }
137   -
138   - PublicFunctions.editSeteditStationParmasValue(addSttationPoints_,'','',bPloygonGrid,'','d','');
139   -
140   - $.get('edit.html', function(m){$(pjaxContainer).append(m);});
141   -
142   - /*PublicFunctions.getFormPointEToWGS(PointsList,function(resultdata) {
143   -
144   - var gPloygonGrid = '';
145   -
146   - var bPloygonGrid = '';
147   -
148   - for(var k =0;k<resultdata.length;k++) {
149   -
150   - if(k==0) {
151   -
152   - gPloygonGrid = resultdata[k].WGSpotion.Lng + ' ' +resultdata[k].WGSpotion.Lat;
153   -
154   - bPloygonGrid = resultdata[k].potion.lng + ' ' +resultdata[k].potion.lat;
155   -
156   - }else {
157   -
158   - gPloygonGrid = gPloygonGrid + ',' + resultdata[k].WGSpotion.Lng + ' ' +resultdata[k].WGSpotion.Lat;
159   -
160   - bPloygonGrid = bPloygonGrid + ',' + resultdata[k].potion.lng + ' ' +resultdata[k].potion.lat;
161   -
162   - }
163   -
164   - }
165   -
166   - gPloygonGrid = 'POLYGON((' + gPloygonGrid + '))';
167   -
168   - bPloygonGrid = 'POLYGON((' + bPloygonGrid + '))';
169   -
170   - PublicFunctions.getFormPointEToWGS(centre,function(p) {
171   -
172   - var gLonx = p[0].WGSpotion.Lng;
173   -
174   - var gLaty = p[0].WGSpotion.Lat;
175   -
176   - PublicFunctions.editSeteditStationParmasValue(addSttationPoints_,gLonx,gLaty,bPloygonGrid,gPloygonGrid,'d','');
177   -
178   - $.get('edit.html', function(m){$(pjaxContainer).append(m);});
179   -
180   - });
181   -
182   - });*/
183   - }
184   -
185   - });
186   -
187   - return drawingManagerInit;
  77 + // 把标注添物加到地图上
  78 + mapBValue.addOverlay(marker);
  79 +
  80 + setTimeout(function(){
  81 + //开启信息窗口
  82 + marker.openInfoWindow(infoWindow,point);
  83 +
  84 + },100);
  85 +
  86 + // 是否在平移过程中禁止动画。(自1.2新增)
  87 + var PanOptions_ ={noAnimation :true};
  88 +
  89 + // 将地图的中心点更改为给定的点。
  90 + mapBValue.panTo(point,PanOptions_);
  91 +
  92 + mapBValue.panBy(10,-250,PanOptions_);
  93 +
  94 + // 添加标志物监听事件
  95 + marker.addEventListener("click",function() {
  96 +
  97 + //开启信息窗口
  98 + marker.openInfoWindow(infoWindow,point);
  99 +
  100 + });
188 101 },
189 102  
190   - // 获取绘制工具类
191   - getDrawingManagerValue : function() {
  103 + pointsPolygon : function(r,pointPolygon,htm,opts_polygon) {
192 104  
193   - return drawingManagerInit;
194   - },
195   -
196   - // 打开绘画工具
197   - /*drawingManagerOpen : function() {
  105 + // 获取多边形坐标字符串
  106 + var stationBPolygonGrid = r[0].stationBPolyonGrid;
198 107  
199   - // 清楚地图覆盖物
200   - mapB.clearOverlays();
  108 + // 截取多边形坐标字符串
  109 + var stationBPolygonGridStr = stationBPolygonGrid.substring(9,stationBPolygonGrid.length-2);
  110 +
  111 + // 按逗号切割
  112 + var pointPolygonArray = stationBPolygonGridStr.split(',');
  113 +
  114 + // 多边形坐标集合
  115 + var polygonP = [];
201 116  
202   - // 打开鼠标绘画工具
203   - drawingManager.open();
  117 + for(var v = 0;v<pointPolygonArray.length;v++) {
  118 +
  119 + polygonP.push(new BMap.Point(pointPolygonArray[v].split(" ")[0],pointPolygonArray[v].split(" ")[1]));
  120 +
  121 + }
  122 +
  123 + // 画多边形
  124 + polygon = new BMap.Polygon(polygonP, {
  125 +
  126 + // 线条显色
  127 + strokeColor : "blue",
  128 +
  129 + // 边线的宽度,以像素为单位。
  130 + strokeWeight : 2,
  131 +
  132 + // 边线透明度,取值范围0 - 1。
  133 + strokeOpacity : 0.5
  134 + });
  135 +
  136 + // 增加地图覆盖物多边形
  137 + mapBValue.addOverlay(polygon);
  138 +
  139 + // 创建信息窗口
  140 + infoWindow = new BMap.InfoWindow(htm, opts_polygon);
204 141  
205   - // 设置属性
206   - drawingManager.setDrawingMode(BMAP_DRAWING_POLYGON);
  142 + // 自定义标注物图片
  143 + var icon_target = new BMap.Icon('/pages/base/stationroute/css/img/cz.png',new BMap.Size(20, 20));
  144 +
  145 + // 创建点
  146 + marker = new BMap.Marker(pointPolygon,{icon : icon_target});
  147 +
  148 + // 把标注添物加到地图上
  149 + mapBValue.addOverlay(marker);
  150 +
  151 + // 是否在平移过程中禁止动画。(自1.2新增)
  152 + var PanOptions_ ={noAnimation :true};
  153 +
  154 + // 将地图的中心点更改为给定的点。
  155 + mapBValue.panTo(pointPolygon,PanOptions_);
  156 +
  157 + // 将地图在水平位置上移动x像素,垂直位置上移动y像素。
  158 + mapBValue.panBy(10,110,PanOptions_);
  159 +
  160 + //开启信息窗口
  161 + marker.openInfoWindow(infoWindow,pointPolygon);
207 162  
208   - },*/
  163 + },
209 164  
210 165 // 编辑图形
211 166 editShapes : function(stationShapesTypeV,mindex) {
212 167  
  168 + // 关闭信息窗口
  169 + marker.closeInfoWindow();
  170 +
  171 + // 清除marker
  172 + mapBValue.removeOverlay(marker);
  173 +
213 174 // 编辑圆
214 175 if(stationShapesTypeV =='r') {
215 176  
216   - var enCircle = PublicFunctions.getCircleObj();
217   -
218 177 // 开启编辑功能
219   - enCircle.enableEditing();
  178 + circle.enableEditing();
220 179  
221 180 // 编辑圆监听事件
222   - enCircle.addEventListener('dblclick',function() {
  181 + circle.addEventListener('dblclick',function() {
223 182  
224 183 // 关闭提示弹出层
225 184 layer.close(mindex);
226 185  
227 186 // 返回圆形的半径,单位为米。
228   - var newRadius = enCircle.getRadius();
  187 + var newRadius = circle.getRadius();
229 188  
230 189 // 返回圆形的中心点坐标。
231   - var newCenter = enCircle.getCenter().lng + ' ' + enCircle.getCenter().lat;
  190 + var newCenter = circle.getCenter().lng + ' ' + circle.getCenter().lat;
232 191  
233   - var centre_New = [{potion:{lng:enCircle.getCenter().lng,lat:enCircle.getCenter().lat}}];
  192 + var centre_New = [{potion:{lng:circle.getCenter().lng,lat:circle.getCenter().lat}}];
234 193  
235   - // 设置修改站点参数集合
236   - PublicFunctions.editSeteditStationParmasValue(newCenter, '', '','','','r',Math.round(newRadius));
  194 + /** 设置修改站点集合对象站点中心点百度坐标属性值 @param:<bJwpoints:中心点百度坐标) */
  195 + PositionsStationObj.setEitdStationBJwpoints(newCenter);
  196 +
  197 + /** 设置修改站点集合对象范围图形类型属性值 @param:<shapesType:范围图形类型) */
  198 + PositionsStationObj.setEitdStationShapesType('r');
  199 +
  200 + /** 设置修改站点集合对象圆形半径属性值 @param:<radius:圆形半径) */
  201 + PositionsStationObj.setEitdStationRadius(Math.round(newRadius));
  202 +
  203 + /** 设置修改站点集合对象图形百度坐标集合属性值 @param:<bPolygonGrid:图形百度坐标集合) */
  204 + PositionsStationObj.setEitdBPolygonGrid('');
237 205  
238 206 // 加载编辑页面
239   - $.get('edit.html', function(m){$(pjaxContainer).append(m);});
240   -
241   - // 中心百度坐标转WGS坐标
242   - /*PublicFunctions.getFormPointEToWGS(centre_New,function(p) {
243   -
244   - // 设置修改站点参数集合
245   - PublicFunctions.editSeteditStationParmasValue(newCenter, p[0].WGSpotion.Lng , p[0].WGSpotion.Lat,'','','r',Math.round(newRadius));
  207 + $.get('edit.html', function(m){
246 208  
247   - // 加载编辑页面
248   - $.get('edit.html', function(m){$(pjaxContainer).append(m);});
  209 + $(pjaxContainer).append(m);
249 210  
250   - });*/
  211 + $('#editPoitsions_station_mobal').trigger('editStationMobal_show', [StationPositionsWorldsBMap,PositionsPublicFunctions,PositionsStationObj]);
  212 +
  213 + });
251 214  
252 215 });
253 216  
254 217 // 编辑多变行
255 218 }else if(stationShapesTypeV =='d') {
256 219  
257   - var enPolygon = PublicFunctions.getCircleObj();
258   -
259 220 // 开启编辑功能(自 1.1 新增)
260   - enPolygon.enableEditing();
  221 + polygon.enableEditing();
261 222  
262 223 // 添加多变行编辑事件
263   - enPolygon.addEventListener('dblclick',function(e) {
  224 + polygon.addEventListener('dblclick',function(e) {
264 225  
265 226 // 获取编辑的多边形对象
266   - var edit_pointE = enPolygon;
267   -
268   - // 多边形坐标点集合
269   - var eidt_PointsList = [];
270   -
271   - for ( var i = 0; i < edit_pointE.getPath().length; i++) {
272   -
273   - eidt_PointsList.push({potion: {lng: edit_pointE.getPath()[i].lng, lat: edit_pointE.getPath()[i].lat}});
274   -
275   - }
  227 + var edit_pointE = polygon;
276 228  
277   - eidt_PointsList.push({potion: {lng: edit_pointE.getPath()[0].lng, lat: edit_pointE.getPath()[0].lat}});
  229 + var edit_bPloygonGrid = "";
278 230  
279   - var edit_centre = [{potion:{lng:edit_pointE.getBounds().getCenter().lng,lat:edit_pointE.getBounds().getCenter().lat}}];
  231 + var editPolyGonLen_ = edit_pointE.getPath().length;
280 232  
281   - // 多边形中心点
282   - var centre_points = edit_pointE.getBounds().getCenter().lng + ' ' + edit_pointE.getBounds().getCenter().lat;
283   -
284   - // 多边形WGS坐标字符串
285   - var eidt_gPloygonGrid = '';
286   -
287   - // 百度坐标字符串
288   - var edit_bPloygonGrid = '';
289   -
290   - var eidt_PointsListLen_ = eidt_PointsList.length;
291   -
292   - for(var k =0;k<eidt_PointsListLen_;k++) {
  233 + for(var k =0;k<editPolyGonLen_;k++) {
293 234  
294 235 if(k==0) {
295 236  
296   - edit_bPloygonGrid = eidt_PointsList[k].potion.lng + ' ' +eidt_PointsList[k].potion.lat;
  237 + edit_bPloygonGrid = edit_pointE.getPath()[k].lng + ' ' + edit_pointE.getPath()[k].lat;
297 238  
298 239 }else {
299 240  
300   - edit_bPloygonGrid = edit_bPloygonGrid + ',' + eidt_PointsList[k].potion.lng + ' ' +eidt_PointsList[k].potion.lat;
  241 + edit_bPloygonGrid = edit_bPloygonGrid + ',' + edit_pointE.getPath()[k].lng + ' ' + edit_pointE.getPath()[k].lat;
301 242  
302 243 }
303 244  
304 245 }
305 246  
306   - // 设置编辑站点参宿集合
307   - PublicFunctions.editSeteditStationParmasValue(centre_points,'','',edit_bPloygonGrid,'','d','');
  247 + edit_bPloygonGrid = edit_bPloygonGrid + ',' + edit_pointE.getPath()[0].lng + ' ' + edit_pointE.getPath()[0].lat;
308 248  
309   - // 加载编辑页面
310   - $.get('edit.html', function(m){$(pjaxContainer).append(m);});
  249 + // 多边形中心点
  250 + var centre_points = edit_pointE.getBounds().getCenter().lng + ' ' + edit_pointE.getBounds().getCenter().lat;
311 251  
312   - // 多边形坐标点集合转WGS坐标
313   - /*PublicFunctions.getFormPointEToWGS(eidt_PointsList,function(resultdata) {
314   -
315   - // 多边形WGS坐标字符串
316   - var eidt_gPloygonGrid = '';
317   -
318   - // 百度坐标字符串
319   - var edit_bPloygonGrid = '';
320   -
321   - for(var k =0;k<resultdata.length;k++) {
322   -
323   - if(k==0) {
324   -
325   - eidt_gPloygonGrid = resultdata[k].WGSpotion.Lng + ' ' +resultdata[k].WGSpotion.Lat;
326   -
327   - edit_bPloygonGrid = resultdata[k].potion.lng + ' ' +resultdata[k].potion.lat;
328   -
329   - }else {
330   -
331   - eidt_gPloygonGrid = eidt_gPloygonGrid + ',' + resultdata[k].WGSpotion.Lng + ' ' +resultdata[k].WGSpotion.Lat;
332   -
333   - edit_bPloygonGrid = edit_bPloygonGrid + ',' + resultdata[k].potion.lng + ' ' +resultdata[k].potion.lat;
334   -
335   - }
336   -
337   - }
338   -
339   - eidt_gPloygonGrid = 'POLYGON((' + eidt_gPloygonGrid + '))';
  252 + /** 设置修改站点集合对象站点中心点百度坐标属性值 @param:<bJwpoints:中心点百度坐标) */
  253 + PositionsStationObj.setEitdStationBJwpoints(centre_points);
  254 +
  255 + /** 设置修改站点集合对象范围图形类型属性值 @param:<shapesType:范围图形类型) */
  256 + PositionsStationObj.setEitdStationShapesType('d');
  257 +
  258 + /** 设置修改站点集合对象圆形半径属性值 @param:<radius:圆形半径) */
  259 + PositionsStationObj.setEitdStationRadius('');
  260 +
  261 + /** 设置修改站点集合对象图形百度坐标集合属性值 @param:<bPolygonGrid:图形百度坐标集合) */
  262 + PositionsStationObj.setEitdBPolygonGrid(edit_bPloygonGrid);
  263 +
  264 + $.get('edit.html', function(m){
340 265  
341   - edit_bPloygonGrid = 'POLYGON((' + edit_bPloygonGrid + '))';
  266 + $(pjaxContainer).append(m);
342 267  
343   - // 中心点坐标转WGS坐标
344   - PublicFunctions.getFormPointEToWGS(edit_centre,function(p) {
345   -
346   - var edit_gLonx = p[0].WGSpotion.Lng;
347   -
348   - var edit_gLaty = p[0].WGSpotion.Lat;
349   -
350   - // 设置编辑站点参宿集合
351   - PublicFunctions.editSeteditStationParmasValue(centre_points,edit_gLonx,edit_gLaty,edit_bPloygonGrid,eidt_gPloygonGrid,'d','');
352   -
353   - // 加载编辑页面
354   - $.get('edit.html', function(m){$(pjaxContainer).append(m);});
355   -
356   - });
  268 + $('#editPoitsions_station_mobal').trigger('editStationMobal_show', [StationPositionsWorldsBMap,PositionsPublicFunctions,PositionsStationObj]);
357 269  
358   - });*/
  270 + });
359 271  
360 272 });
361 273  
362 274 }
363 275  
364   - },
  276 + },
365 277  
366   - localSearchFromAdreesToPoint: function(Address,map,callback) {
  278 + localSearchFromAdreesToPoint: function(Address,callback) {
367 279  
368 280 // 创建一个搜索类实例
369   - var localSearch = new BMap.LocalSearch(map);
  281 + var localSearch = new BMap.LocalSearch(mapBValue);
370 282  
371 283 // 检索完成后的回调函数。
372 284 localSearch.setSearchCompleteCallback(function (searchResult) {
... ... @@ -401,6 +313,43 @@ var WorldsBMap = function () {
401 313 // 根据检索词发起检索。
402 314 localSearch.search(Address);
403 315  
  316 + },
  317 +
  318 + localtionPoint : function(stationNameV) {
  319 +
  320 + StationPositionsWorldsBMap.localSearchFromAdreesToPoint(stationNameV,function(Points) {
  321 +
  322 + if(Points) {
  323 +
  324 + var BJwpointsArray = Points.split(' ');
  325 +
  326 + var stationNameChangePoint = new BMap.Point(BJwpointsArray[0], BJwpointsArray[1]);
  327 +
  328 + var marker_stargt2 = new BMap.Marker(stationNameChangePoint);
  329 +
  330 + var PanOptions ={noAnimation :true};
  331 +
  332 + mapBValue.panTo(stationNameChangePoint,PanOptions);
  333 +
  334 + mapBValue.panBy(0,-100);
  335 +
  336 + // 将标注添加到地图中
  337 + mapBValue.addOverlay(marker_stargt2);
  338 +
  339 + //跳动的动画
  340 + marker_stargt2.setAnimation(BMAP_ANIMATION_BOUNCE);
  341 +
  342 + }
  343 +
  344 + });
  345 +
  346 + },
  347 +
  348 + clearMarkAndOverlays : function() {
  349 +
  350 + // 清楚地图覆盖物
  351 + mapBValue.clearOverlays();
  352 +
404 353 }
405 354  
406 355 }
... ...
src/main/resources/static/pages/base/station/js/station-positions-reload.js
... ... @@ -42,13 +42,14 @@
42 42 // 等候500毫秒执行
43 43 setTimeout(function(){
44 44  
45   - // 地图初始化
46   - var map_ = WorldsBMap.init();
  45 + // 初始化地图
  46 + var map_ = StationPositionsWorldsBMap.init();
47 47  
48 48 // 初始化绘制工具类
49   - var drawingManager_ = WorldsBMap.initDrawingManager(map_,styleOptions);
  49 + var drawingManager_ = PositionsDrawingManagerObj.init(map_,styleOptions);
50 50  
51   - PublicFunctions.initStationInfo(id,map_);
  51 + // 初始化站点信息
  52 + PositionsPublicFunctions.initStationInfo(id);
52 53  
53 54 },200);
54 55  
... ...
src/main/resources/static/pages/base/station/positions.html
... ... @@ -20,22 +20,17 @@
20 20 </ul>
21 21 </div>
22 22 </div>
23   -<script type="text/javascript">
24   -
25   - /** 定义全局变量 */
26   -
27   - /** stationObj:站点信息对象;drawingManager:绘制工具对象;mapB:地图对象:circle:圆对象;polygon:多边形对象 */
28   - /* var stationObj = '', drawingManager= '', mapB = '',circle = '',polygon = ''; */
29   -
30   - /** marker:覆盖物对象;infoWindow:信息窗口对象;Id:站点ID */
31   - /* var marker = '',infoWindow = '',id = ''; */
32   -
33   -</script>
  23 +
  24 +<!-- 站点对象类 -->
  25 +<script src="/pages/base/station/js/positionstation.js"></script>
  26 +
  27 +<!-- 绘制工具类 -->
  28 +<script src="/pages/base/station/js/positionsdrwmager.js"></script>
34 29  
35 30 <!-- 地图JS类库 -->
36 31 <script src="/pages/base/station/js/station-positions-map.js"></script>
37 32  
38   -<!-- 方法JS类库 -->
  33 +<!-- 方法函数JS类库 -->
39 34 <script src="/pages/base/station/js/station-positions-function.js"></script>
40 35  
41 36 <!-- reloadJS类库 -->
... ...
src/main/resources/static/pages/base/stationroute/add.html
... ... @@ -25,6 +25,8 @@
25 25  
26 26 <input type="hidden" name="gPolygonGrid" id="gPolygonGridInput" value="" />
27 27  
  28 + <input type="hidden" name="gJwpoints" id="gJwpointsInput">
  29 +
28 30 <input type="hidden" name="dbType" id="dbTypeInput" value="b"/>
29 31  
30 32 <input type="hidden" name="x" id="xInput" value=""/>
... ... @@ -123,14 +125,14 @@
123 125 </div>
124 126  
125 127 <!-- 站点WGS经纬度 -->
126   - <div class="form-body">
  128 + <!-- <div class="form-body">
127 129 <div class="form-group">
128 130 <label class="col-md-3 control-label">站点WGS经纬度:</label>
129 131 <div class="col-md-6">
130 132 <input type="text" class="form-control" name="gJwpoints" id="gJwpointsInput">
131 133 </div>
132 134 </div>
133   - </div>
  135 + </div> -->
134 136  
135 137 <!-- 范围图形类型 -->
136 138 <div class="form-body">
... ... @@ -151,7 +153,8 @@
151 153 <div class="form-group">
152 154 <label class="col-md-3 control-label">圆形半径:</label>
153 155 <div class="col-md-6">
154   - <select name="radius" class="form-control" id="radiusSelect">
  156 + <input type="text" class="form-control" name=radius id="radiusInput">
  157 + <!-- <select name="radius" class="form-control" id="radiusSelect">
155 158 <option value="">-- 请选择圆形半径 --</option>
156 159 <option value="50">50</option>
157 160 <option value="100">100</option>
... ... @@ -162,7 +165,7 @@
162 165 <option value="350">350</option>
163 166 <option value="400">400</option>
164 167 <option value="450">450</option>
165   - </select>
  168 + </select> -->
166 169 </div>
167 170 </div>
168 171 </div>
... ... @@ -230,11 +233,12 @@
230 233 </div>
231 234 </div>
232 235 <script type="text/javascript">
233   -$(function(){
  236 +
  237 +$('#add_station_mobal').on('AddStationMobal.show', function(e, addMap,ajaxd,addStationObj,lineObj,fun){
234 238  
235   - var addLine = LineObj.getLineObj();
  239 + var Station = addStationObj.getAddStation();
236 240  
237   - var addStation = AddStationObj.getAddStation();
  241 + var Line = lineObj.getLineObj();
238 242  
239 243 // 延迟加载
240 244 setTimeout(function(){
... ... @@ -255,61 +259,31 @@ $(function(){
255 259 $('#add_station_mobal').on('show.bs.modal', function () {
256 260  
257 261 // 线路ID
258   - $('#lineIdInput').val(addLine.id);
  262 + $('#lineIdInput').val(Line.id);
259 263  
260 264 // 获取站点名称元素设值
261   - $('#stationNameInput').val(addStation.stationNamebootbox).attr('Readonly','Readonly');
  265 + $('#stationNameInput').val(Station.stationNamebootbox).attr('Readonly','Readonly');
262 266  
263 267 // 获取方向元素,并添加值
264   - $('#stationdirSelect').val(addStation.dir).attr('Readonly','Readonly');
  268 + $('#stationdirSelect').val(Station.dir).attr('Readonly','Readonly');
265 269  
266 270 // 百度地图经纬度坐标中心点
267   - $('#bJwpointsInput').val(addStation.bJwpoints).attr('Readonly','Readonly');
  271 + $('#bJwpointsInput').val(Station.bJwpoints).attr('Readonly','Readonly');
268 272  
269 273 // 百度坐标点图形集合
270   - $('#bPolygonGridInput').val(addStation.bPolygonGrid);
  274 + $('#bPolygonGridInput').val(Station.bPolygonGrid);
271 275  
272 276 // 获取图形类型元素,并添加值
273   - $('#shapesTypeSelect').val(addStation.shapesType).attr('Readonly','Readonly');
  277 + $('#shapesTypeSelect').val(Station.shapesType).attr('Readonly','Readonly');
274 278  
275 279 // 获取圆形半径元素,并添加值
276   - $('#radiusSelect').val(addStation.radius).attr('Readonly','Readonly');
  280 + $('#radiusInput').val(Station.radius).attr('Readonly','Readonly');
277 281  
278 282 // 是否撤销
279 283 $('#destroySelect').val(0).attr('Readonly','Readonly');
280 284  
281   - /* // WGS坐标点图形集合
282   - $('#bPolygonGridInput').val(addStaitonParmas.bPolygonGridInput);
283   -
284   - // 百度坐标点图形集合
285   - $('#gPolygonGridInput').val(addStaitonParmas.gPolygonGridInput);
286   -
287   - // 获取站点名称元素设值
288   - $('#stationNameInput').val(addStaitonParmas.stationNamebootbox).attr('Readonly','Readonly');
289   -
290   - // 选择系统生成方式新增站点时的站点坐标
291   - //$('#pointsInput').val(addStaitonParmas.stationPointInput).attr('Readonly','Readonly');
292   -
293   - // 百度地图经纬度坐标中心点
294   - $('#bJwpointsInput').val(addStaitonParmas.stationPointInput).attr('Readonly','Readonly');
295   -
296   - // WGS经纬度
297   - $('#gJwpointsInput').val(addStaitonParmas.gLonx + ' '+ addStaitonParmas.gLaty).attr('Readonly','Readonly');
298   -
299   - // 获取图形类型元素,并添加值
300   - $('#shapesTypeSelect').val(addStaitonParmas.shapesTypeInput).attr('Readonly','Readonly');
301   -
302   - // 获取方向元素,并添加值
303   - $('#stationdirSelect').val(addStaitonParmas.dir).attr('Readonly','Readonly');
304   -
305   - // 获取方向元素,并添加值
306   - $('#radiusSelect').val(addStaitonParmas.radiusInput).attr('Readonly','Readonly');
307   -
308   - // 是否撤销
309   - $('#destroySelect').val(addStaitonParmas.destroyInput).attr('Readonly','Readonly'); */
310   -
311 285 // 获取站点序号元素,并添加下拉属性值
312   - GetAjaxData.getStation(addLine.id,addStation.dir,function(treeData) {
  286 + ajaxd.getStation(Line.id,Station.dir,function(treeData) {
313 287  
314 288 var options = '<option value="">请选择...</option>';
315 289  
... ... @@ -326,7 +300,7 @@ $(function(){
326 300 });
327 301  
328 302 // 获取站点编码元素,添加站点编码值
329   - GetAjaxData.getStationCode(function(stationCode) {
  303 + ajaxd.getStationCode(function(stationCode) {
330 304  
331 305 $('#stationCodInput').val(stationCode).attr('Readonly','Readonly');
332 306  
... ... @@ -483,7 +457,7 @@ $(function(){
483 457 error.hide();
484 458  
485 459 // 保存
486   - GetAjaxData.stationSave(params,function(data) {
  460 + ajaxd.stationSave(params,function(data) {
487 461  
488 462 if(data.status=='SUCCESS') {
489 463  
... ... @@ -497,12 +471,12 @@ $(function(){
497 471  
498 472 }
499 473  
500   - var id =addLine.id;
  474 + var id =Line.id;
501 475  
502 476 var dir = params.directions
503 477  
504 478 // 刷行左边树
505   - PublicFunctions.resjtreeDate(id,dir);
  479 + fun.resjtreeDate(id,dir);
506 480  
507 481 closeMobleSetClean();
508 482  
... ... @@ -517,16 +491,16 @@ $(function(){
517 491 function closeMobleSetClean() {
518 492  
519 493 // 清除地图覆盖物
520   - WorldsBMap.clearMarkAndOverlays();
  494 + addMap.clearMarkAndOverlays();
521 495  
522 496 /** 设置新增站点集合对象为空 */
523   - AddStationObj.setAddStation();
  497 + addStationObj.setAddStation({});
524 498  
525 499 var add_direction_v = $('#stationdirSelect').val();
526 500  
527   - GetAjaxData.getSectionRouteInfo(addLine.id,add_direction_v,function(data) {
  501 + ajaxd.getSectionRouteInfo(Line.id,add_direction_v,function(data) {
528 502  
529   - PublicFunctions.linePanlThree(addLine.id,data,add_direction_v);
  503 + fun.linePanlThree(Line.id,data,add_direction_v);
530 504  
531 505 });
532 506  
... ...
src/main/resources/static/pages/base/stationroute/add_manual_select.html
... ... @@ -38,7 +38,8 @@
38 38 </div>
39 39 </div>
40 40 <script type="text/javascript">
41   -$(function(){
  41 +
  42 +$('#add_manual_mobal').on('AddManualMobal.show', function(e,map,ajaxd,dir,line,fun){
42 43  
43 44 // 显示其他规划方式弹出层
44 45 $('#add_manual_mobal').modal({show : true,backdrop: 'static', keyboard: false});
... ... @@ -61,7 +62,13 @@ $(function(){
61 62 if(addManualRadioV==0){
62 63  
63 64 // 加载模板手动添加站点页面
64   - $.get('addstationstemplate.html', function(m){$(pjaxContainer).append(m);});
  65 + $.get('addstationstemplate.html', function(m){
  66 +
  67 + $(pjaxContainer).append(m);
  68 +
  69 + $('#add_station_template_mobal').trigger('AddStationTempMobal.show', [map,ajaxd,dir,line,fun]);
  70 +
  71 + });
65 72  
66 73 }else if(addManualRadioV==1) {
67 74  
... ...
src/main/resources/static/pages/base/stationroute/add_select.html
... ... @@ -63,7 +63,8 @@
63 63 </div>
64 64 </div>
65 65 <script type="text/javascript">
66   -$(function(){
  66 +
  67 +$('#add_select_mobal').on('AddSelectMobal.show', function(e,map_,drw,ajaxd_,stationObj,lineObj,fun){
67 68  
68 69 // 加载显示mobal
69 70 $('#add_select_mobal').modal({show : true,backdrop: 'static', keyboard: false});
... ... @@ -75,7 +76,7 @@ $(function(){
75 76 var stationNamebootbox = $('#stationNamebootboxInput').val();
76 77  
77 78 /** 根据站点名称获取坐标在地图上标注 @param :<stationNamebootbox:站点名称> */
78   - WorldsBMap.localtionPoint(stationNamebootbox);
  79 + map_.localtionPoint(stationNamebootbox);
79 80  
80 81 });
81 82  
... ... @@ -156,41 +157,49 @@ $(function(){
156 157 var baseRes = params.baseRes;
157 158  
158 159 // 查询是否存在输入的站点名称
159   - GetAjaxData.getLikeStationName(stationName,function(data) {
  160 + ajaxd_.getLikeStationName(stationName,function(data) {
160 161  
161 162 // 验证系统是存在该站点名称
162   - var tempblm = PublicFunctions.isHaveStationName(data);
  163 + var tempblm = fun.isHaveStationName(data);
163 164  
164 165 if(tempblm) {
165 166  
166 167 /** 设置新增站点对象站点名称属性值 @param:<stationName:站点名称)> */
167   - AddStationObj.setAddStationName(stationName);
  168 + stationObj.setAddStationName(stationName);
168 169  
169 170 // 系统生成
170 171 if(baseRes == 0) {
171 172  
172 173 /** 根据站点位置获取坐标 @parma:<stationName:站点名称;callback:返回函数> */
173   - WorldsBMap.localSearchFromAdreesToPoint(stationName,function(Points) {
  174 + map_.localSearchFromAdreesToPoint(stationName,function(Points) {
174 175  
175 176 if(Points) {
176 177  
177 178 /** 设置新增站点集合对象站点中心点百度坐标属性值 @param:<bJwpoints:中心点百度坐标) */
178   - AddStationObj.setAddStationBJwpoints(Points);
  179 + stationObj.setAddStationBJwpoints(Points);
179 180  
180 181 /** 设置新增站点集合对象范围图形类型属性值 @param:<shapesType:范围图形类型) */
181   - AddStationObj.setAddStationShapesType('r');
  182 + stationObj.setAddStationShapesType('r');
182 183  
183 184 /** 设置新增站点集合对象圆形半径属性值 @param:<radius:圆形半径) */
184   - AddStationObj.setAddStationRadius(100);
  185 + stationObj.setAddStationRadius(100);
185 186  
186 187 /** 设置新增站点集合对象图形百度坐标集合属性值 @param:<bPolygonGrid:图形百度坐标集合) */
187   - AddStationObj.setBPolygonGrid('');
  188 + stationObj.setBPolygonGrid('');
188 189  
189 190 // 以藏站点新增方式mobal
190 191 $('#add_select_mobal').modal('hide');
191 192  
192 193 // 加载add页面
193   - $.get('add.html', function(m){$(pjaxContainer).append(m);});
  194 + $.get('add.html', function(m){
  195 +
  196 + $(pjaxContainer).append(m);
  197 +
  198 + var Station = stationObj.getAddStation();
  199 +
  200 + $('#add_station_mobal').trigger('AddStationMobal.show', [map_,ajaxd_,stationObj,lineObj,fun]);
  201 +
  202 + });
194 203  
195 204 }else {
196 205  
... ... @@ -207,15 +216,23 @@ $(function(){
207 216  
208 217 }else if(baseRes==1) {
209 218  
210   - WorldsBMap.clearMarkAndOverlays();
  219 + map_.clearMarkAndOverlays();
211 220  
212 221 // 以藏站点新增方式mobal
213 222 $('#add_select_mobal').modal('hide');
214 223  
215 224 // 打开绘制工具
216   - DrawingManagerObj.openDrawingManager();
  225 + drw.openDrawingManager();
217 226  
218   - WorldsBMap.localtionPoint(stationName);
  227 + map_.localtionPoint(stationName);
  228 +
  229 + }else if(baseRes==2) {
  230 +
  231 + // 系统引用
  232 +
  233 + $('#add_select_mobal').modal('hide');
  234 +
  235 + $.get('station_tabledate.html', function(m){$(pjaxContainer).append(m);});
219 236  
220 237 }
221 238  
... ... @@ -229,88 +246,9 @@ $(function(){
229 246 });
230 247  
231 248 }
232   -
233   - /*
234   - // 系统生成
235   - if(baseRes == 0) {
236   -
237   - if(tempblm) {
238   -
239   - WorldsBMap.localSearchFromAdreesToPoint(stationNamebootbox,mapB,function(Points) {
240   -
241   - if(Points) {
242   -
243   - var pointsArray = Points.split(' ');
244   -
245   - var paramCentre = [{potion:{lng:pointsArray[0],lat:pointsArray[1]}}];
246   -
247   - // 设置值
248   - PublicFunctions.setFormInputValue(Points, '','','','','r',100);
249   -
250   - // 以藏站点新增方式mobal
251   - $('#add_select_mobal').modal('hide');
252   -
253   - // 加载add页面
254   - $.get('add.html', function(m){$(pjaxContainer).append(m);});
255   -
256   - // GetAjaxData.getFormPointEToWGS(paramCentre,function(p) {
257   -
258   - // 设置值
259   - // PublicFunctions.setFormInputValue(Points, p[0].WGSpotion.Lng,p[0].WGSpotion.Lat,'','','r',150);
260   -
261   - // 以藏站点新增方式mobal
262   - // $('#add_select_mobal').modal('hide');
263   -
264   - // 加载add页面
265   - $.get('add.html', function(m){$(pjaxContainer).append(m);});
266   -
267   - });
268   -
269   - } else {
270   -
271   - // 返回坐标为空
272   - layer.confirm('【系统无法生成,请选择其他方式新增】', {btn : [ '返回' ],icon: 3, title:'提示' }, function(index){
273   -
274   - layer.close(index);
275   -
276   - });
277   -
278   - }
279   -
280   - });
281   -
282   - }
283   -
284   - // 手动添加
285   - }else if(baseRes==1) {
286   -
287   - // 验证系统是存在该站点名称
288   - var tempblm = PublicFunctions.isHaveStationName(data);
289   -
290   - if(tempblm) {
291   -
292   - // 以藏站点新增方式mobal
293   - $('#add_select_mobal').modal('hide');
294   -
295   - status = 'add';
296   -
297   - WorldsBMap.drawingManagerOpen();
298   - WorldsBMap.localtionPoint(stationNamebootbox);
299   -
300   - }
301   -
302   -
303   - }else if(baseRes==2) {
304   -
305   - // 系统引用
306   -
307   - $('#add_select_mobal').modal('hide');
308   -
309   - $.get('station_tabledate.html', function(m){$(pjaxContainer).append(m);});
310   - }*/
  249 +
311 250 });
312 251 }
313 252 });
314   -
315 253 });
316 254 </script>
317 255 \ No newline at end of file
... ...
src/main/resources/static/pages/base/stationroute/addstationstemplate.html
... ... @@ -34,8 +34,8 @@
34 34  
35 35 <div class="form-group">
36 36 <div class="alert alert-info font-blue-chambray" style="background-color: #2C3E50">
37   - <h5 class="block"><span class="help-block" style="color:#eee;"> * 手动添加站点规划说明: </span></h5>
38   - <p><span class="help-block" style="color:#eee;">&nbsp;请在文本域中按站点顺序依次输入站点名称,每输入完一个站名时请按回车键(Enter)换行.</span> </p>
  37 + <h5 class="block"><span class="help-block" style="color:#1bbc9b;"> * 手动添加站点规划说明: </span></h5>
  38 + <p><span class="help-block" style="color:#1bbc9b;">&nbsp;请在文本域中按站点顺序依次输入站点名称,每输入完一个站名时请按回车键(Enter)换行.</span> </p>
39 39 </div>
40 40 </div>
41 41 </form>
... ... @@ -48,7 +48,8 @@
48 48 </div>
49 49 </div>
50 50 <script type="text/javascript">
51   -$(function(){
  51 +
  52 +$('#add_station_template_mobal').on('AddStationTempMobal.show', function(e,map,ajaxd,dir,line,fun){
52 53  
53 54 // 延迟加载显示mobal
54 55 setTimeout(function(){$('#add_station_template_mobal').modal({show : true,backdrop: 'static', keyboard: false});},200);
... ... @@ -117,7 +118,7 @@ $(function(){
117 118 // 隐藏手动规划弹出层
118 119 $('#add_station_template_mobal').modal('hide');
119 120  
120   - var directionData = manualPararms.dir;
  121 + var directionData = dir;
121 122  
122 123 // 上行
123 124 if(directionData==0){
... ... @@ -143,13 +144,15 @@ $(function(){
143 144 var paramsStationsArray = params.stations.split('\r\n');
144 145  
145 146 // 根据站点名称获取百度坐标
146   - WorldsBMap.stationsNameToPoints(paramsStationsArray,function(resultJson) {
  147 + map.stationsNameToPoints(paramsStationsArray,function(resultJson) {
147 148  
148 149 // 根据坐标点获取两点之间的时间与距离
149   - WorldsBMap.getDistanceAndDuration(resultJson,function(stationdataList) {
  150 + map.getDistanceAndDuration(resultJson,function(stationdataList) {
150 151  
151 152 // 根据坐标点获取两点之间的折线路段
152   - WorldsBMap.getSectionListPlonly(stationdataList,function(sectiondata) {
  153 + map.getSectionListPlonly(stationdataList,function(sectiondata) {
  154 +
  155 + var addLine = LineObj.getLineObj();
153 156  
154 157 // 设置第一个站的距离
155 158 stationdataList[0].distance = '';
... ... @@ -170,7 +173,7 @@ $(function(){
170 173 params.stationJSON = stationJSON;
171 174  
172 175 // 线路ID
173   - params.lineId = id;
  176 + params.lineId = addLine.id;
174 177  
175 178 // 方向
176 179 params.directions = directionData;
... ... @@ -197,120 +200,37 @@ $(function(){
197 200 params.sectionJSON = sectionJSON;
198 201  
199 202 // 保存
200   - GetAjaxData.manualSave(params,function(rd) {
  203 + ajaxd.manualSave(params,function(rd) {
201 204  
202   - // 关闭弹出层
203   - layer.closeAll();
204   -
205 205 if(rd.status='SUCCESS') {
206 206  
207   - // 清除地图覆盖物
208   - mapB.clearOverlays();
209   -
210 207 layer.msg('保存成功!');
211 208  
212   - // 刷新树
213   - PublicFunctions.resjtreeDate(id,directionData);
214   -
215   - // 查询上行路段信息
216   - GetAjaxData.getSectionRouteInfo(id,directionData,function(data) {
217   -
218   - // 在地图上画出线路走向
219   - PublicFunctions.linePanlThree(data,directionData);
220   -
221   - });
222   -
223 209 }else {
224 210  
225 211 layer.msg('保存失败!');
226 212  
227 213 }
228 214  
229   - });
230   - /*
231   - // 路段折线百度坐标转WGS坐标
232   - PublicFunctions.eachSectionList(sectiondata,function(successdata) {
  215 + // 关闭弹出层
  216 + layer.closeAll();
233 217  
234   - // 站点坐标转WGS坐标
235   - GetAjaxData.getFormPointEToWGS(stationdataList,function(stationdata) {
236   -
237   - // 定义站点信息JSON字符串
238   - var stationJSON = JSON.stringify(stationdata);
239   -
240   - // 定义路段信息字符串
241   - var sectionJSON = JSON.stringify(successdata);
242   -
243   - // 参数集合
244   - var params = {};
245   -
246   - // 站点信息JSON字符串
247   - params.stationJSON = stationJSON;
248   -
249   - // 线路ID
250   - params.lineId = id;
251   -
252   - // 方向
253   - params.directions = directionData;
254   -
255   - // 原始坐标类型
256   - params.dbType = 'b';
257   -
258   - // 圆形半径
259   - params.radius = '300';
260   -
261   - // 限速
262   - params.speedLimit = '60';
263   -
264   - // 图形类型(r:圆形;p:多边形)
265   - params.shapesType = 'r';
266   -
267   - // destroy:是否撤销
268   - params.destroy = '0';
269   -
270   - // versions:版本号
271   - params.versions = '1';
272   -
273   - // 路段信息JSON字符串
274   - params.sectionJSON = sectionJSON;
  218 + // 清除地图覆盖物
  219 + map.clearOverlays();
  220 +
  221 + // 刷新树
  222 + fun.resjtreeDate(addLine.id,directionData);
  223 +
  224 + // 查询上行路段信息
  225 + ajaxd.getSectionRouteInfo(addLine.id,directionData,function(data) {
275 226  
276   - console.log(params);
  227 + // 在地图上画出线路走向
  228 + fun.linePanlThree(data,directionData);
277 229  
278   - // 保存
279   - GetAjaxData.manualSave(params,function(rd) {
280   -
281   - // 关闭弹出层
282   - layer.closeAll();
283   -
284   - if(rd.status='SUCCESS') {
285   -
286   - // 清除地图覆盖物
287   - map.clearOverlays();
288   -
289   - layer.msg('保存成功!');
290   -
291   - // 刷新树
292   - PublicFunctions.resjtreeDate(id,directionData);
293   -
294   - // 查询上行路段信息
295   - GetAjaxData.getSectionRouteInfo(id,directionData,function(data) {
296   -
297   - // 在地图上画出线路走向
298   - PublicFunctions.linePanlThree(data,directionData);
299   -
300   - });
301   -
302   - }else {
303   -
304   - layer.msg('保存失败!');
305   -
306   - }
307   -
308   - });
309   -
310   - });
  230 + });
311 231  
312   - });*/
313   -
  232 + });
  233 +
314 234 });
315 235  
316 236 });
... ...
src/main/resources/static/pages/base/stationroute/edit.html
... ... @@ -225,19 +225,20 @@
225 225 </div>
226 226 </div>
227 227 </div>
228   -<script type="text/javascript">
229   -$(function(){
  228 +<script type="text/javascript">
  229 +
  230 +$('#edit_station_mobal').on('editSelectMobal_show', function(e, map_,ajaxd,station_,Line_,fun){
230 231  
231   - var editStationParmasObj = EditStationObj.getEitdStation();
  232 + var editStationParmasObj = station_.getEitdStation();
232 233  
233   - var addLine = LineObj.getLineObj();
  234 + var addLine = Line_.getLineObj();
234 235  
235   - PublicFunctions.setFormValue(editStationParmasObj);
  236 + fun.setFormValue(editStationParmasObj);
236 237  
237 238 var edit_direction_v = editStationParmasObj.stationRouteDirections;
238 239  
239 240 // 获取站点序号元素,并添加下拉属性值
240   - GetAjaxData.getStation(addLine.id,edit_direction_v,function(treeData) {
  241 + ajaxd.getStation(addLine.id,edit_direction_v,function(treeData) {
241 242  
242 243 var options = '<option value="">请选择...</option>';
243 244  
... ... @@ -262,7 +263,7 @@ $(function(){
262 263  
263 264 $('#stationrouteSelect').html(options);
264 265  
265   - GetAjaxData.findUpStationRouteCode(addLine.id,edit_direction_v,editStationParmasObj.stationRouteStationRouteCode,function(str) {
  266 + ajaxd.findUpStationRouteCode(addLine.id,edit_direction_v,editStationParmasObj.stationRouteStationRouteCode,function(str) {
266 267  
267 268 if(str.length>0){
268 269  
... ... @@ -289,16 +290,20 @@ $(function(){
289 290 function closeMobleSetClean() {
290 291  
291 292 // 清除地图覆盖物
292   - WorldsBMap.clearMarkAndOverlays();
  293 + map_.clearMarkAndOverlays();
293 294  
294 295 /** 设置新增站点集合对象为空 */
295   - EditStationObj.setEitdStation({});
  296 + station_.setEitdStation({});
296 297  
297 298 var add_direction_v = $('#stationdirSelect').val();
298 299  
299   - GetAjaxData.getSectionRouteInfo(addLine.id,add_direction_v,function(data) {
  300 + fun.resjtreeDate(addLine.id,add_direction_v);
  301 +
  302 + fun.editAChangeCssRemoveDisabled();
  303 +
  304 + ajaxd.getSectionRouteInfo(addLine.id,add_direction_v,function(data) {
300 305  
301   - PublicFunctions.linePanlThree(addLine.id,data,add_direction_v);
  306 + fun.linePanlThree(addLine.id,data,add_direction_v);
302 307  
303 308 });
304 309  
... ... @@ -431,7 +436,7 @@ $(function(){
431 436  
432 437 error.hide();
433 438  
434   - GetAjaxData.stationUpdate(params,function(resuntDate) {
  439 + ajaxd.stationUpdate(params,function(resuntDate) {
435 440  
436 441 if(resuntDate.status=='SUCCESS') {
437 442  
... ... @@ -446,17 +451,17 @@ $(function(){
446 451  
447 452 }
448 453  
  454 + $('#edit_station_mobal').modal('hide');
  455 +
449 456 var id = addLine.id;
450 457  
451 458 var dir = params.directions
452 459  
453 460 // 刷行左边树
454   - PublicFunctions.resjtreeDate(id,dir);
  461 + fun.resjtreeDate(id,dir);
455 462  
456 463 closeMobleSetClean();
457 464  
458   - $('#edit_station_mobal').modal('hide');
459   -
460 465 });
461 466  
462 467 }
... ... @@ -471,8 +476,6 @@ $(function(){
471 476  
472 477 var tempStr = stationRValue.split('_');
473 478  
474   - console.log(tempStr);
475   -
476 479 if(tempStr[1] == 'E') {
477 480  
478 481 $('#stationMarkSelect').val('E');
... ... @@ -487,7 +490,6 @@ $(function(){
487 490  
488 491 });
489 492  
490   -
491 493 // 当站点类型为中途站或者终点站时,上一站点为必填项!
492 494 $.validator.addMethod("isStart", function(value,element) {
493 495  
... ...
src/main/resources/static/pages/base/stationroute/edit_select.html
... ... @@ -36,14 +36,14 @@
36 36 <div class="col-md-9">
37 37 <div class="icheck-list">
38 38 <label>
39   - <input type="radio" class="icheck" name="editselect" value=0> 手动规划
  39 + <input type="radio" class="icheck" name="editselect" value=0> 重新绘制位置
40 40 </label>
41 41 <label>
42   - <input type="radio" class="icheck" name="editselect" value=1 checked> 重新编辑
  42 + <input type="radio" class="icheck" name="editselect" value=1 checked> 编辑原始位置
43 43 </label>
44   - <label >
  44 + <!-- <label >
45 45 <input type="radio" class="icheck" name="editselect" value=2 > 选择引用
46   - </label>
  46 + </label> -->
47 47 </div>
48 48 </div>
49 49 </div>
... ... @@ -68,19 +68,23 @@
68 68 </div>
69 69 <script type="text/javascript">
70 70  
71   -$(function(){
  71 +$('#edit_select_mobal').on('editSelectMobal_show', function(e, map_,drw,ajaxd,editStationObj,lineObj,fun,dir_){
  72 +
  73 + var sel = fun.getCurrSelNode(dir_);
  74 +
  75 + var Station = sel[0].original;
72 76  
73 77 // 获取修改站点对象
74   - var editStationParmas = EditStationObj.getEitdStation();
  78 + /* var Station = editStationObj.getEitdStation(); */
75 79  
76 80 // 显示选择修改方式弹出层
77 81 $('#edit_select_mobal').modal({show : true,backdrop: 'static',keyboard: false});
78 82  
79 83 // 获取站点名称元素并赋值
80   - $('#stationNamebootbox').val(editStationParmas.stationStationName);
  84 + $('#stationNamebootbox').val(Station.stationStationName);
81 85  
82 86 // 定义站点图形
83   - var stationShapesTypeV = editStationParmas.stationShapesType;
  87 + var stationShapesTypeV = Station.stationShapesType;
84 88  
85 89 // 获取表单元素
86 90 var form = $('#edit_select');
... ... @@ -147,33 +151,33 @@ $(function(){
147 151  
148 152 submitHandler : function(f) {
149 153  
  154 + editStationObj.setEitdStation(Station);
  155 +
150 156 // 隐藏弹出层
151 157 $('#edit_select_mobal').modal('hide');
152 158  
  159 + $('#downLine').addClass('btn disabled');
  160 +
  161 + $('.btn-circle').addClass('disabled');
  162 +
  163 + $('#upLine').addClass('btn disabled');
  164 +
153 165 // 表单序列
154 166 var params = form.serializeJSON();
155 167  
156 168 // 站点名称
157 169 var editStationName = params.stationNamebootbox;
158 170  
159   - EditStationObj.setEitdStationName(editStationName);
  171 + editStationObj.setEitdStationName(editStationName);
160 172  
161 173 if(params.editselect==0){
162 174  
163   - WorldsBMap.clearMarkAndOverlays();
  175 + map_.clearMarkAndOverlays();
164 176  
165 177 // 打开绘制工具
166   - DrawingManagerObj.openDrawingManager();
167   -
168   - WorldsBMap.localtionPoint(editStationName);
169   -
170   - /* status = 'edit';
171   -
172   - // 站点名称
173   - editStationParmas.stationNamebootbox = editStationName;
174   -
175   - WorldsBMap.drawingManagerOpen(); */
  178 + drw.openDrawingManager();
176 179  
  180 + map_.localtionPoint(editStationName);
177 181  
178 182 }else if(params.editselect==1){
179 183  
... ... @@ -182,7 +186,7 @@ $(function(){
182 186 shift: 0,time: 10000});
183 187  
184 188 // 编辑图形
185   - WorldsBMap.editShapes(editStationName,stationShapesTypeV,mindex);
  189 + map_.editShapes(editStationName,stationShapesTypeV,mindex);
186 190  
187 191 }else if(params.editselect==2){
188 192  
... ... @@ -191,11 +195,9 @@ $(function(){
191 195  
192 196 $.get('station_tabledate.html', function(m){$(pjaxContainer).append(m);});
193 197  
194   -
195 198 }
196 199  
197 200 }
198 201 });
199   -
200   -});
  202 +})
201 203 </script>
202 204 \ No newline at end of file
... ...
src/main/resources/static/pages/base/stationroute/editsection.html 0 → 100644
  1 +<!-- 编辑路段 -->
  2 +<div class="modal fade" id="edit_section_mobal" tabindex="-1" role="basic" aria-hidden="true">
  3 +
  4 + <div class="modal-dialog">
  5 +
  6 + <div class="modal-content">
  7 +
  8 + <div class="modal-header">
  9 + <button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
  10 + <h4 class="modal-title">路段路段</h4>
  11 + </div>
  12 +
  13 + <div class="modal-body">
  14 +
  15 + <form class="form-horizontal" role="form" id="edit_section__form" action="/module" method="post">
  16 +
  17 + <div class="alert alert-danger display-hide"> <button class="close" data-close="alert"></button>
  18 + 您的输入有误,请检查下面的输入项
  19 + </div>
  20 +
  21 + <!-- 线路ID -->
  22 +
  23 + <input type="hidden" name="sectionId" id="sectionIdInput">
  24 +
  25 + <input type="hidden" name="sectionRouteId" id="sectionRouteIdInput">
  26 +
  27 + <input type="hidden" name="sectionRouteLine" id="sectionRouteLineInput">
  28 +
  29 + <input type="hidden" name="lineCode" id="lineCodeInput">
  30 +
  31 + <input type="hidden" name="bsectionVector" id="bsectionVectorInput" />
  32 +
  33 + <input type="hidden" name="csectionVector" id="csectionVectorInput" value=""/>
  34 +
  35 + <input type="hidden" name="dbType" id="dbTypeInput" value="b"/>
  36 +
  37 + <!-- 路段名称 -->
  38 + <div class="form-body">
  39 + <div class="form-group">
  40 + <label class="control-label col-md-3">
  41 + <span class="required"> * </span> 路段名称:
  42 + </label>
  43 + <div class="col-md-6">
  44 + <input type="text" class="form-control" name="sectionName" id="sectionNameInput" placeholder="路段名称">
  45 + </div>
  46 + </div>
  47 + </div>
  48 +
  49 + <!-- 路段编码 -->
  50 + <div class="form-body">
  51 + <div class="form-group">
  52 + <label class="control-label col-md-3">
  53 + <span class="required"> * </span> 路段编码:
  54 + </label>
  55 + <div class="col-md-6">
  56 + <input type="text" class="form-control" name="sectionCode" id="sectionCodeInput" placeholder="路段编码">
  57 + </div>
  58 + </div>
  59 + </div>
  60 +
  61 + <!-- 路段序号 -->
  62 + <div class="form-body">
  63 + <div class="form-group">
  64 + <label class="control-label col-md-3">
  65 + <span class="required"> * </span>上一路段:
  66 + </label>
  67 + <div class="col-md-6">
  68 + <select name="sectionrouteCode" class="form-control" id="sectionrouteCodeSelect"></select>
  69 + <span class="help-block"> *说明:选择的路段将作为本站序号的参考,成为选择路段的下一个路段。 </span>
  70 + </div>
  71 + </div>
  72 + </div>
  73 +
  74 + <!-- 路段类型 -->
  75 + <!-- <div class="form-body">
  76 + <div class="form-group">
  77 + <label class="control-label col-md-3">
  78 + <span class="required"> * </span>路段类型:
  79 + </label>
  80 + <div class="col-md-6">
  81 + <select name="sectionType" class="form-control" id="sectionTypeSelect">
  82 + <option value="">-- 请选择路段类型 --</option>
  83 + <option value="B">起点站</option>
  84 + <option value="Z">中途站</option>
  85 + <option value="E">终点站</option>
  86 + </select>
  87 + </div>
  88 + </div>
  89 + </div> -->
  90 +
  91 + <!-- 路段方向 -->
  92 + <div class="form-body">
  93 + <div class="form-group">
  94 + <label class="control-label col-md-3">
  95 + <span class="required"> * </span>路段方向:
  96 + </label>
  97 + <div class="col-md-6">
  98 + <select name="directions" class="form-control" id="directionsSection">
  99 + <option value="">-- 请选择路段类型 --</option>
  100 + <option value="0">上行</option>
  101 + <option value="1">下行</option>
  102 + </select>
  103 + </div>
  104 + </div>
  105 + </div>
  106 +
  107 + <!-- 道路编码-->
  108 + <div class="form-body">
  109 + <div class="form-group">
  110 + <label class="control-label col-md-3">道路编码:</label>
  111 + <div class="col-md-6">
  112 + <input type="text" class="form-control" name="roadCoding" id="roadCodingCodInput" placeholder="道路编码">
  113 + </div>
  114 + </div>
  115 + </div>
  116 +
  117 + <!-- 路段限速 -->
  118 + <div class="form-body">
  119 + <div class="form-group">
  120 + <label class="control-label col-md-3">
  121 + <span class="required"> * </span> 路段限速:
  122 + </label>
  123 + <div class="col-md-6">
  124 + <input type="text" class="form-control" name="speedLimit" id="speedLimitInput" placeholder="路段限速">
  125 + </div>
  126 + </div>
  127 + </div>
  128 +
  129 + <!-- 路段时长 -->
  130 + <div class="form-body">
  131 + <div class="form-group">
  132 + <label class="col-md-3 control-label">路段时长:</label>
  133 + <div class="col-md-6">
  134 + <input type="text" class="form-control" name="sectionTime" id="sectionTimeInput" placeholder="路段时长">
  135 + <span class="help-block">单位:分钟</span>
  136 + </div>
  137 + </div>
  138 + </div>
  139 +
  140 + <!-- 路段长度 -->
  141 + <div class="form-body">
  142 + <div class="form-group">
  143 + <label class="col-md-3 control-label">路段长度:</label>
  144 + <div class="col-md-6">
  145 + <input type="text" class="form-control" name="sectionDistance" id="sectionDistanceInput" placeholder="路段长度">
  146 + <span class="help-block">单位:公里</span>
  147 + </div>
  148 + </div>
  149 + </div>
  150 +
  151 + <!-- 版本号 -->
  152 + <div class="form-body">
  153 + <div class="form-group">
  154 + <label class="col-md-3 control-label">版本号:</label>
  155 + <div class="col-md-6">
  156 + <input type="text" class="form-control" name="versions" id="versionsInput" Readonly>
  157 + </div>
  158 + </div>
  159 + </div>
  160 +
  161 + <!-- 范围图形类型 -->
  162 + <div class="form-body">
  163 + <div class="form-group">
  164 + <label class="col-md-3 control-label">是否撤销:</label>
  165 + <div class="col-md-6">
  166 + <select name="destroy" class="form-control" id="destroySelect">
  167 + <option value="">-- 请选择撤销类型 --</option>
  168 + <option value="0">否</option>
  169 + <option value="1">是</option>
  170 + </select>
  171 + </div>
  172 + </div>
  173 + </div>
  174 +
  175 + <!-- 描述/说明 -->
  176 + <div class="form-group">
  177 + <label class="control-label col-md-3"> 描述/说明: </label>
  178 + <div class="col-md-6">
  179 + <textarea class="form-control" rows="3" name="descriptions" id="descriptionsTextarea" placeholder="描述/说明"></textarea>
  180 + </div>
  181 + </div>
  182 + </form>
  183 + </div>
  184 + <div class="modal-footer">
  185 + <button type="button" class="btn default" data-dismiss="modal">取消</button>
  186 + <button type="button" class="btn btn-primary" id="editSectionButton">提交数据</button>
  187 + </div>
  188 + </div>
  189 + </div>
  190 +</div>
  191 +<script type="text/javascript">
  192 +
  193 +$('#edit_section_mobal').on('editSectionMobal_show', function(e, map_,ajaxd,section,fun){
  194 +
  195 + var Section = section.getEitdSection();
  196 +
  197 + fun.setSectionFormValue(Section);
  198 +
  199 + // 方向
  200 + var dir = Section.sectionrouteDirections;
  201 +
  202 + var lineId = Section.sectionrouteLine;
  203 +
  204 + // 获取路段号元素,并添加下拉属性值
  205 + ajaxd.getStation(lineId,dir,function(treeData) {
  206 +
  207 + var options = '<option value="">请选择...</option>';
  208 +
  209 + var dArray = treeData[0].children[1].children;
  210 +
  211 + var eq_stationRouteCode = Section.sectionrouteCode;
  212 +
  213 + for(var i = 0 ; i<dArray.length; i++){
  214 +
  215 + var ptions_v = dArray[i].sectionrouteCode;
  216 +
  217 + // 排除本站
  218 + if(eq_stationRouteCode == ptions_v){
  219 +
  220 + continue;
  221 +
  222 + }
  223 +
  224 + options += '<option value="'+ ptions_v +'">'+dArray[i].sectionName+'</option>'
  225 +
  226 + }
  227 +
  228 + $('#sectionrouteCodeSelect').html(options);
  229 +
  230 + ajaxd.findUpStationRouteCode(lineId,dir,eq_stationRouteCode,function(str) {
  231 +
  232 + if(str.length>0){
  233 +
  234 + var upStationRouteCode = str[0].sectionrouteCode
  235 +
  236 + $('#sectionrouteCodeSelect').val(upStationRouteCode);
  237 +
  238 + }
  239 +
  240 + });
  241 +
  242 + });
  243 +
  244 + // 显示mobal
  245 + $('#edit_section_mobal').modal({show : true,backdrop: 'static',keyboard: false});
  246 +
  247 + // 当调用 hide 实例方法时触发
  248 + $('#edit_section_mobal').on('hide.bs.modal', function () {
  249 +
  250 + closeMobleSetClean();
  251 +
  252 + });
  253 +
  254 + function closeMobleSetClean() {
  255 +
  256 + // 清除地图覆盖物
  257 + map_.clearMarkAndOverlays();
  258 +
  259 + /** 设置修改路段集合对象为空 */
  260 + section.setEitdSection({});
  261 +
  262 + fun.resjtreeDate(lineId,dir);
  263 +
  264 + fun.editAChangeCssRemoveDisabled();
  265 +
  266 + ajaxd.getSectionRouteInfo(lineId,dir,function(data) {
  267 +
  268 + fun.linePanlThree(lineId,data,dir);
  269 +
  270 + });
  271 +
  272 + }
  273 +
  274 + // 编辑表单元素
  275 + var form = $('#edit_section__form');
  276 +
  277 + // 获取错误提示元素
  278 + var error = $('.alert-danger', form);
  279 +
  280 + // 提交数据按钮事件
  281 + $('#editSectionButton').on('click', function() {
  282 +
  283 +
  284 + // 表单提交
  285 + form.submit();
  286 +
  287 + });
  288 +
  289 + // 表单验证
  290 + form.validate({
  291 +
  292 + errorElement : 'span',
  293 +
  294 + errorClass : 'help-block help-block-error',
  295 +
  296 + focusInvalid : false,
  297 +
  298 + rules : {
  299 +
  300 + // 路段名称
  301 + 'sectionName' : {
  302 +
  303 + // 必填项
  304 + required : true
  305 +
  306 + },
  307 +
  308 + /* // 路段序号
  309 + 'sectionrouteCode' : {
  310 +
  311 + isStart : true
  312 +
  313 + }, */
  314 +
  315 + // 路段编码
  316 + 'sectionCode': {
  317 +
  318 + // 必填项
  319 + required : true,
  320 +
  321 + },
  322 +
  323 + // 路段方向
  324 + 'directions' : {
  325 +
  326 + // 必填项
  327 + required : true,
  328 +
  329 + // 方向选择限制
  330 + /* dirIs : true */
  331 +
  332 + },
  333 +
  334 +
  335 + // 路段限速
  336 + 'speedLimit' : {
  337 +
  338 + // 必须输入合法的数字(负数,小数)。
  339 + number : true
  340 +
  341 + },
  342 +
  343 + // 路段长度
  344 + 'sectionTime' : {
  345 +
  346 + // 必须输入合法的数字(负数,小数)。
  347 + number : true
  348 +
  349 + },
  350 +
  351 + // 路段时长
  352 + 'sectionDistance' : {
  353 +
  354 + // 必须输入合法的数字(负数,小数)。
  355 + number : true
  356 +
  357 + },
  358 +
  359 + // 描述与说明
  360 + 'descriptions' : {
  361 +
  362 + // 最大长度
  363 + maxlength: 150
  364 +
  365 + }
  366 + },
  367 +
  368 + invalidHandler : function(event, validator) {
  369 +
  370 + error.show();
  371 +
  372 + App.scrollTo(error, -200);
  373 +
  374 + },
  375 +
  376 + highlight : function(element) {
  377 +
  378 + $(element).closest('.form-group').addClass('has-error');
  379 +
  380 + },
  381 +
  382 + unhighlight : function(element) {
  383 +
  384 + $(element).closest('.form-group').removeClass('has-error');
  385 +
  386 + },
  387 +
  388 + success : function(label) {
  389 +
  390 + label.closest('.form-group').removeClass('has-error');
  391 +
  392 + },
  393 +
  394 + submitHandler : function(f) {
  395 +
  396 + var params = form.serializeJSON();
  397 +
  398 + error.hide();
  399 +
  400 + console.log(params);
  401 +
  402 + return;
  403 +
  404 + ajaxd.sectionUpdata(params,function(resuntDate) {
  405 +
  406 + if(resuntDate.status=='SUCCESS') {
  407 +
  408 + // 弹出添加成功提示消息
  409 + layer.msg('修改成功...');
  410 +
  411 +
  412 + }else {
  413 +
  414 + // 弹出添加失败提示消息
  415 + layer.msg('修改失败...');
  416 +
  417 + }
  418 +
  419 + $('#edit_section_mobal').modal('hide');
  420 +
  421 + var dir = params.directions
  422 +
  423 + // 刷行左边树
  424 + fun.resjtreeDate(lineId,dir);
  425 +
  426 + closeMobleSetClean();
  427 +
  428 + });
  429 +
  430 + }
  431 + });
  432 +
  433 +
  434 +});
  435 +</script>
0 436 \ No newline at end of file
... ...
src/main/resources/static/pages/base/stationroute/js/drawingManager.js
... ... @@ -71,36 +71,24 @@ var DrawingManagerObj = function () {
71 71 // 多变行质心点
72 72 var addSttationPoints_ = pointE.getBounds().getCenter().lng+ ' ' + pointE.getBounds().getCenter().lat;
73 73  
74   - var PointsList = [];
  74 + var addPolyGonLen_ = pointE.getPath().length;
75 75  
76   - for ( var i = 0; i < pointE.getPath().length; i++) {
77   -
78   - PointsList.push({potion: {lng: pointE.getPath()[i].lng, lat: pointE.getPath()[i].lat}});
79   -
80   - }
81   -
82   - PointsList.push({potion: {lng: pointE.getPath()[0].lng, lat: pointE.getPath()[0].lat}});
83   -
84   - var centre = [{potion:{lng:pointE.getBounds().getCenter().lng,lat:pointE.getBounds().getCenter().lat}}];
85   -
86   - var pointsListLen_ = PointsList.length;
87   -
88   - var bPloygonGrid = '';
89   -
90   - for(var k =0;k<pointsListLen_;k++) {
  76 + for(var k =0;k<addPolyGonLen_;k++) {
91 77  
92 78 if(k==0) {
93 79  
94   - bPloygonGrid = PointsList[k].potion.lng + ' ' +PointsList[k].potion.lat;
  80 + bPloygonGrid = pointE.getPath()[k].lng + ' ' + pointE.getPath()[k].lat;
95 81  
96 82 }else {
97 83  
98   - bPloygonGrid = bPloygonGrid + ',' + PointsList[k].potion.lng + ' ' +PointsList[k].potion.lat;
  84 + bPloygonGrid = bPloygonGrid + ',' + pointE.getPath()[k].lng + ' ' + pointE.getPath()[k].lat;
99 85  
100 86 }
101 87  
102 88 }
103 89  
  90 + bPloygonGrid = bPloygonGrid + ',' + pointE.getPath()[0].lng + ' ' + pointE.getPath()[0].lat;
  91 +
104 92 var add = AddStationObj.getAddStation();
105 93  
106 94 var edit = EditStationObj.getEitdStation();
... ... @@ -119,7 +107,13 @@ var DrawingManagerObj = function () {
119 107 /** 设置新增站点集合对象图形百度坐标集合属性值 @param:<bPolygonGrid:图形百度坐标集合) */
120 108 AddStationObj.setBPolygonGrid(bPloygonGrid);
121 109  
122   - $.get('add.html', function(m){$(pjaxContainer).append(m);});
  110 + $.get('add.html', function(m){
  111 +
  112 + $(pjaxContainer).append(m);
  113 +
  114 + $('#add_station_mobal').trigger('AddStationMobal.show', [WorldsBMap,GetAjaxData,AddStationObj,LineObj,PublicFunctions]);
  115 +
  116 + });
123 117 }
124 118  
125 119 if(!$.isEmptyObject(edit)){
... ...
src/main/resources/static/pages/base/stationroute/js/editsection.js 0 → 100644
  1 +var EditSectionObj = function () {
  2 +
  3 + /** 定义修改路段对象 */
  4 + var Section={};
  5 +
  6 + var SectionObj = {
  7 +
  8 + /** 获取修改路段集合对象 @return:<Section:修改路段对象> */
  9 + getEitdSection : function() {
  10 +
  11 + return Section;
  12 + },
  13 +
  14 + /** 设置修改路段集合对象为空 */
  15 + setEitdSection : function(sc) {
  16 +
  17 + Section = sc;
  18 + },
  19 +
  20 +
  21 + /** 设置修改路段集合对象折线百度坐标集合属性值 @param:<bsectionVector:折线百度坐标集合) */
  22 + setEitdBsectionVector : function(bsectionVector) {
  23 +
  24 + Section.sectionBsectionVector = bsectionVector;
  25 + }
  26 + }
  27 +
  28 + return SectionObj;
  29 +
  30 +}();
... ...
src/main/resources/static/pages/base/stationroute/js/editstationobj.js
... ... @@ -57,4 +57,4 @@ var EditStationObj = function () {
57 57  
58 58 return stationObj;
59 59  
60   -}();
61 60 \ No newline at end of file
  61 +}();
... ...
src/main/resources/static/pages/base/stationroute/js/stationroute-ajax-getdata.js
... ... @@ -11,8 +11,6 @@
11 11 *
12 12 * - - - - - -》 getStationCode:查询站点编码
13 13 *
14   - * - - - - - -》 getFormPointEToWGS :原百度坐标转WGS坐标
15   - *
16 14 * - - - - - -》 stationSave:新增站点保存
17 15 *
18 16 * - - - - - -》 stationUpdate:站点更新
... ... @@ -23,10 +21,6 @@
23 21 *
24 22 * - - - - - -》 getIdLineName:获取线路名称
25 23 *
26   - * - - - - - -》 BpolyGonArrayToWGS:折线百度坐标转WGS坐标
27   - *
28   - * - - - - - -》 MuneBpointsArrayToWGS:手动规划百度坐标转WGS坐标
29   - *
30 24 * - - - - - -》 getSectionRouteInfo:查询路段信息
31 25 */
32 26  
... ... @@ -107,56 +101,16 @@ var GetAjaxData = function(){
107 101  
108 102 },
109 103  
110   - // 原百度坐标转WGS坐标
111   - getFormPointEToWGS: function(points,callback) {
112   -
113   - // 获取长度
114   - var len = points.length;
  104 +
  105 + findUpStationRouteCode : function(lineId,diraction,sectionRouteCode,callback) {
115 106  
116   - (function(){
  107 + $get('/sectionroute/findUpStationRouteCode',{lineId:lineId,direction:diraction,sectionRouteCode:sectionRouteCode},function(result) {
117 108  
118   - if (!arguments.callee.count) {
119   -
120   - arguments.callee.count = 0;
121   -
122   - }
123   -
124   - arguments.callee.count++;
125   -
126   - var index = parseInt(arguments.callee.count) - 1;
127   -
128   - if (index >= len) {
129   -
130   - callback && callback(points);
131   -
132   - return;
133   - }
134   -
135   - var f = arguments.callee;
136   -
137   - $.ajax({
138   -
139   - url: 'http://api.zdoz.net/bd2wgs.aspx',
140   -
141   - data: {lat: points[index].potion.lat , lng: points[index].potion.lng},
142   -
143   - dataType: 'jsonp',
144   -
145   - success: function(r){
146   -
147   - if(r) {
148   -
149   - points[index].WGSpotion = r;
150   -
151   - }
152   -
153   - f();
154   - }
155   - });
  109 + callback && callback(result);
156 110  
157   - })();
  111 + });
158 112  
159   - },
  113 + },
160 114  
161 115 // 新增站点保存
162 116 stationSave : function(station,callback) {
... ... @@ -213,127 +167,6 @@ var GetAjaxData = function(){
213 167  
214 168 },
215 169  
216   - // 折线百度坐标转WGS坐标
217   - BpolyGonArrayToWGS : function(polyGonArray,callback) {
218   -
219   - if(polyGonArray) {
220   -
221   - // 获取长度
222   - var len = polyGonArray.length;
223   -
224   - (function(){
225   -
226   - if (!arguments.callee.count) {
227   -
228   - arguments.callee.count = 0;
229   -
230   - }
231   -
232   - arguments.callee.count++;
233   -
234   - var index = parseInt(arguments.callee.count) - 1;
235   -
236   - if (index >= len) {
237   -
238   - callback && callback(polyGonArray);
239   -
240   - return;
241   - }
242   -
243   - var f = arguments.callee;
244   -
245   - $.ajax({
246   -
247   - url: 'http://api.zdoz.net/bd2wgs.aspx',
248   -
249   - data: {lat: polyGonArray[index].lat , lng: polyGonArray[index].lng},
250   -
251   - dataType: 'jsonp',
252   -
253   - success: function(r){
254   -
255   - if(r) {
256   -
257   - polyGonArray[index].WGSpotion = r;
258   -
259   - }
260   -
261   - f();
262   - }
263   - });
264   -
265   - })();
266   -
267   - }else {
268   -
269   - callback && callback(false);
270   -
271   - }
272   -
273   -
274   - },
275   -
276   - // 手动规划百度坐标转WGS坐标
277   - MuneBpointsArrayToWGS : function(polyGonArray,callback) {
278   -
279   - if(polyGonArray) {
280   -
281   - // 获取长度
282   - var len = polyGonArray.length;
283   -
284   - (function(){
285   -
286   - if (!arguments.callee.count) {
287   -
288   - arguments.callee.count = 0;
289   -
290   - }
291   -
292   - arguments.callee.count++;
293   -
294   - var index = parseInt(arguments.callee.count) - 1;
295   -
296   - if (index >= len) {
297   -
298   - callback && callback(polyGonArray);
299   -
300   - return;
301   - }
302   -
303   - var f = arguments.callee;
304   -
305   - $.ajax({
306   -
307   - // 百度坐标获取WGS坐标
308   - url: 'http://api.zdoz.net/bd2wgs.aspx',
309   -
310   - data: {lat: polyGonArray[index].lat , lng: polyGonArray[index].lng},
311   -
312   - dataType: 'jsonp',
313   -
314   - success: function(r){
315   -
316   - if(r) {
317   -
318   - polyGonArray[index].WGSpotion = r;
319   -
320   - }
321   -
322   - f();
323   - }
324   - });
325   -
326   - })();
327   -
328   - }else {
329   -
330   - callback && callback('');
331   -
332   - }
333   -
334   -
335   - },
336   -
337 170 // 查询路段信息
338 171 getSectionRouteInfo : function(lineId,direction,callback) {
339 172  
... ... @@ -348,8 +181,6 @@ var GetAjaxData = function(){
348 181 // 手动规划线路保存
349 182 manualSave : function(params,callback) {
350 183  
351   - console.log(params);
352   -
353 184 // 保存
354 185 $post('/station/manualSave',params,function(rd) {
355 186  
... ...
src/main/resources/static/pages/base/stationroute/js/stationroute-list-events.js
... ... @@ -23,10 +23,14 @@ $(function(){
23 23 // 上行站点其它规划点击事件
24 24 $('.upManual').on('click',function() {
25 25  
26   - manualPararms.dir = directionUpValue;
27   -
28 26 // 加载其它规划选择弹出层mobal页面
29   - $.get('add_manual_select.html', function(m){$(pjaxContainer).append(m);});
  27 + $.get('add_manual_select.html', function(m){
  28 +
  29 + $(pjaxContainer).append(m);
  30 +
  31 + $('#add_manual_mobal').trigger('AddManualMobal.show', [WorldsBMap,GetAjaxData,directionUpValue,LineObj,PublicFunctions]);
  32 +
  33 + });
30 34  
31 35 });
32 36  
... ... @@ -37,7 +41,13 @@ $(function(){
37 41 AddStationObj.setAddStationDiraction(directionUpValue);
38 42  
39 43 // 加载选择新增方式mobal
40   - $.get('add_select.html', function(m){$(pjaxContainer).append(m);});
  44 + $.get('add_select.html', function(m){
  45 +
  46 + $(pjaxContainer).append(m);
  47 +
  48 + $('#add_select_mobal').trigger('AddSelectMobal.show', [WorldsBMap,DrawingManagerObj,GetAjaxData,AddStationObj,LineObj,PublicFunctions]);
  49 +
  50 + });
41 51  
42 52 });
43 53  
... ... @@ -53,9 +63,12 @@ $(function(){
53 63 return;
54 64 }
55 65  
56   - EditStationObj.setEitdStation(sel[0].original);
57   -
58   - $.get('edit_select.html', function(m){$(pjaxContainer).append(m);});
  66 + $.get('edit_select.html', function(m){
  67 +
  68 + $(pjaxContainer).append(m);
  69 +
  70 + $('#edit_select_mobal').trigger('editSelectMobal_show', [WorldsBMap,DrawingManagerObj,GetAjaxData,EditStationObj,LineObj,PublicFunctions,directionUpValue]);
  71 + });
59 72  
60 73 });
61 74  
... ... @@ -95,7 +108,7 @@ $(function(){
95 108 // 弹出正在加载层
96 109 var i = layer.load(0,{offset:['200px', '280px']});
97 110  
98   - // 线路名称是否为区间
  111 + /** 修正线路名称 @param:<directionUpValue:方向(上行)> */
99 112 PublicFunctions.lineNameIsHaveInterval(directionDownValue);
100 113  
101 114 });
... ... @@ -103,38 +116,52 @@ $(function(){
103 116 // 下行站点其它规划点击事件
104 117 $('.downManual').on('click',function() {
105 118  
106   - manualPararms.dir = directionDownValue;
107   -
108 119 // 加载其它规划选择弹出层mobal页面
109   - $.get('add_manual_select.html', function(m){$(pjaxContainer).append(m);});
  120 + $.get('add_manual_select.html', function(m){
  121 +
  122 + $(pjaxContainer).append(m);
  123 +
  124 + $('#add_manual_mobal').trigger('AddManualMobal.show', [WorldsBMap,GetAjaxData,directionDownValue,LineObj,PublicFunctions]);
  125 +
  126 + });
110 127  
111 128 });
112 129  
113 130 // 下行站点新增事件
114 131 $('.module_tools #addDownStation').on('click', function() {
115 132  
116   - // 设置方向
117   - addStaitonParmas.dir = directionDownValue;
  133 + /** 设置新增站点对象方向属性值 @param:<directionUpValue:方向(0:上行;1:下行)> */
  134 + AddStationObj.setAddStationDiraction(directionDownValue);
118 135  
119 136 // 加载选择新增方式mobal
120   - $.get('add_select.html', function(m){$(pjaxContainer).append(m);});
  137 + $.get('add_select.html', function(m){
  138 +
  139 + $(pjaxContainer).append(m);
  140 +
  141 + $('#add_select_mobal').trigger('AddSelectMobal.show', [WorldsBMap,DrawingManagerObj,GetAjaxData,AddStationObj,LineObj,PublicFunctions]);
  142 +
  143 + });
121 144  
122 145 });
123 146  
124 147 // 修改下行站点mobal页面
125 148 $('.module_tools #editDownStation').on('click', function(){
126 149  
127   - var sel = PublicFunctions.getCurrSelNode(directionDownValue);
  150 + var sel = PublicFunctions.getCurrSelNode(directionUpValue);
128 151  
129 152 if(sel.length==0 || sel[0].original.chaildredType !='station'){
130 153  
131   - layer.msg('请先选择要编辑的行站点!');
  154 + layer.msg('请先选择要编辑的行站点!');
132 155  
133 156 return;
134 157 }
135   - PublicFunctions.editSetStationParmas(sel);
136 158  
137   - $.get('edit_select.html', function(m){$(pjaxContainer).append(m);});
  159 + $.get('edit_select.html', function(m){
  160 +
  161 + $(pjaxContainer).append(m);
  162 +
  163 + $('#edit_select_mobal').trigger('editSelectMobal_show', [WorldsBMap,DrawingManagerObj,GetAjaxData,EditStationObj,LineObj,PublicFunctions,directionUpValue]);
  164 + });
138 165  
139 166 });
140 167  
... ... @@ -168,13 +195,25 @@ $(function(){
168 195 // 生成行单
169 196 $('.module_tools #createUsingSingle').on('click', function() {
170 197  
171   - var params = {lineId:id};
  198 + var lineIdEvents = LineObj.getLineObj();
  199 +
  200 + var params = {lineId:lineIdEvents.id};
172 201  
173   - GetAjaxData.createUsingSingle(params,function(p) {
  202 + GetAjaxData.createUsingSingle(params,function(data) {
174 203  
175   - console.log(p);
  204 + if(data.status=='SUCCESS') {
  205 +
  206 + // 弹出添加成功提示消息
  207 + layer.msg('添加成功...');
  208 +
  209 + }else {
  210 +
  211 + // 弹出添加失败提示消息
  212 + layer.msg('添加失败...');
  213 +
  214 + }
176 215  
177   - })
  216 + });
178 217  
179 218 });
180 219  
... ...
src/main/resources/static/pages/base/stationroute/js/stationroute-list-function.js
... ... @@ -11,7 +11,7 @@
11 11 *
12 12 * - - - - - - - 》 editSeteditStationParmasValue:编辑站点范围图形参数集合赋值函数
13 13 *
14   - * - - - - - - - 》 lineNameIsHaveInterval : 系统规划时线路名称是否为区间
  14 + * - - - - - - - 》 lineNameIsHaveInterval : 系统规划时修正线路名称
15 15 *
16 16 * - - - - - - - 》 systemLineStation:系统规划保存函数
17 17 *
... ... @@ -26,9 +26,6 @@
26 26  
27 27 var PublicFunctions = function () {
28 28  
29   - /*var lineIdInitValue = '',addStaitonParmas = '';*/
30   -
31   -
32 29 var PubFun = {
33 30  
34 31 /** 初始化线路标题与ID */
... ... @@ -47,28 +44,6 @@ var PublicFunctions = function () {
47 44  
48 45 },
49 46  
50   - /** 获取线路ID */
51   - getLineIdValue : function() {
52   -
53   - return lineIdInitValue;
54   - },
55   -
56   - /** 获取新增站点参数集合 */
57   - getAddStaitonParmasObj : function() {
58   -
59   - return addStaitonParmas;
60   -
61   - },
62   -
63   - /** 设置新增站点参数集合站点名称 */
64   - setAddStationPararmsObjName : function(stationNamebootbox) {
65   -
66   - // 站点名称
67   - addStaitonParmas.stationNamebootbox = stationNamebootbox;
68   - },
69   -
70   -
71   -
72 47 /** @param diraction 方向 @return array */
73 48 getCurrSelNode : function(diraction){
74 49  
... ... @@ -166,156 +141,6 @@ var PublicFunctions = function () {
166 141 });
167 142  
168 143 },
169   -
170   - /** @param sel 编辑树节点站点Obj */
171   - editSetStationParmas : function(sel) {
172   -
173   - // 站点名称
174   - editStationParmas.stationNamebootbox = sel[0].original.stationStationName;
175   -
176   - // 百度地图经纬度坐标中心点
177   - editStationParmas.stationPointInput = sel[0].original.stationBJwpoints;
178   -
179   - // 站点WGS经度
180   - editStationParmas.gLonx = sel[0].original.stationGLonx;
181   -
182   - // WGS纬度
183   - editStationParmas.gLaty = sel[0].original.stationGLaty;
184   -
185   - // WGS图形坐标
186   - editStationParmas.gPolygonGridInput = sel[0].original.stationGPolygonGrid;
187   -
188   - // 百度图形坐标
189   - editStationParmas.bPolygonGridInput = sel[0].original.stationBPolygonGrid;
190   -
191   - // 站点图形类型
192   - editStationParmas.shapesTypeInput = sel[0].original.stationShapesType;
193   -
194   - // 半径
195   - editStationParmas.radiusInput = sel[0].original.stationRadius;
196   -
197   - // 是否撤销
198   - editStationParmas.destroyInput = sel[0].original.stationDestroy;
199   -
200   - // 站点ID
201   - editStationParmas.editUp_stationId = sel[0].original.stationId;
202   -
203   - // 站点编码
204   - editStationParmas.editUp_stationStationCod = sel[0].original.stationStationCod;
205   -
206   - // 坐标类型
207   - editStationParmas.editUp_stationDbType = sel[0].original.stationDbType;
208   -
209   - // 站点描述说明
210   - editStationParmas.editUp_stationDescriptions = sel[0].original.stationDescriptions;
211   -
212   - // 站点是否撤销
213   - editStationParmas.editUp_stationDestroy = sel[0].original.stationDestroy;
214   -
215   - // 站点道路编码
216   - editStationParmas.stationRoadCoding = sel[0].original.stationRoadCoding;
217   -
218   - // 站点路由方向
219   - editStationParmas.stationRouteDirections = sel[0].original.stationRouteDirections;
220   -
221   - // 站点路由距离
222   - editStationParmas.stationRouteDistances = sel[0].original.stationRouteDistances;
223   -
224   - // 站点路由时间
225   - editStationParmas.stationRouteToTime = sel[0].original.stationRouteToTime;
226   -
227   - // 站点路由ID
228   - editStationParmas.stationRouteId = sel[0].original.stationRouteId;
229   -
230   - // 站点路由线路ID
231   - editStationParmas.stationRouteLine = sel[0].original.stationRouteLine;
232   -
233   - // 站点路由线路编码
234   - editStationParmas.stationRouteLineCode = sel[0].original.stationRouteLineCode;
235   -
236   - // 站点路由站点Id
237   - editStationParmas.stationRouteStation = sel[0].original.stationRouteStation;
238   -
239   - // 站点路由类型
240   - editStationParmas.stationRouteStationMark = sel[0].original.stationRouteStationMark;
241   -
242   - // 站点路由站点名称
243   - editStationParmas.stationRouteStationName = sel[0].original.stationRouteStationName;
244   -
245   - // 站点路由序号
246   - editStationParmas.stationRouteStationRouteCode = sel[0].original.stationRouteStationRouteCode;
247   -
248   - // 站点路由版本
249   - editStationParmas.stationRouteVersions = sel[0].original.stationRouteVersions;
250   -
251   - // 站点编码
252   - editStationParmas.stationStationCod = sel[0].original.stationStationCod;
253   -
254   - // 站点版本
255   - editStationParmas.stationVersions = sel[0].original.stationVersions;
256   -
257   - // 站点路由说明
258   - editStationParmas.stationRouteDescriptions = sel[0].original.stationRouteDescriptions;
259   -
260   - },
261   -
262   - /** @param points:中心点 ;gLonx:中心点WGS经度;gLaty:中心点WGS纬度;bPolygonGridValue:百度坐标点图形集合;gPolygonGridVlaue:WGS坐标点图形集合;shapesTypeValue:范围图形类型;radiusValue:圆半径 */
263   - setFormInputValue: function(points,gLonx,gLaty,bPolygonGridValue,gPolygonGridVlaue,shapesTypeValue,radiusValue) {
264   -
265   - // 百度地图经纬度坐标中心点
266   - addStaitonParmas.stationPointInput = points;
267   -
268   - // WGS经度
269   - addStaitonParmas.gLonx = gLonx;
270   -
271   - // WGS经度
272   - addStaitonParmas.gLaty = gLaty;
273   -
274   - // 百度坐标点图形集合
275   - addStaitonParmas.bPolygonGridInput = bPolygonGridValue;
276   -
277   - // WGS坐标点图形集合
278   - addStaitonParmas.gPolygonGridInput = gPolygonGridVlaue;
279   -
280   - // 图形类型
281   - addStaitonParmas.shapesTypeInput = shapesTypeValue;
282   -
283   - // 圆形半径
284   - addStaitonParmas.radiusInput = radiusValue;
285   -
286   - // 是否撤销
287   - addStaitonParmas.destroyInput = 0;
288   -
289   - },
290   -
291   -
292   - /** @param points:中心点 ;gLonx:中心点WGS经度;gLaty:中心点WGS纬度;bPolygonGridValue:百度坐标点图形集合;gPolygonGridVlaue:WGS坐标点图形集合;shapesTypeValue:范围图形类型;radiusValue:圆半径 */
293   - editSeteditStationParmasValue : function(points,gLonx,gLaty,bPolygonGridValue,gPolygonGridVlaue,shapesTypeValue,radiusValue) {
294   -
295   - // 百度地图经纬度坐标中心点
296   - editStationParmas.stationPointInput = points;
297   -
298   - // WGS经度
299   - editStationParmas.gLonx = gLonx;
300   -
301   - // WGS经度
302   - editStationParmas.gLaty = gLaty;
303   -
304   - // 百度坐标点图形集合
305   - editStationParmas.bPolygonGridInput = bPolygonGridValue;
306   -
307   - // WGS坐标点图形集合
308   - editStationParmas.gPolygonGridInput = gPolygonGridVlaue;
309   -
310   - // 图形类型
311   - editStationParmas.shapesTypeInput = shapesTypeValue;
312   -
313   - // 圆形半径
314   - editStationParmas.radiusInput = radiusValue;
315   -
316   - // 是否撤销
317   - editStationParmas.destroyInput = 0;
318   - },
319 144  
320 145 /** 修正线路名称 @param:<directionUpValue:方向(0:上行;1:下行)> */
321 146 lineNameIsHaveInterval : function(directionData) {
... ... @@ -424,7 +249,6 @@ var PublicFunctions = function () {
424 249 // 如果线路信息不为空
425 250 if(BusLine) {
426 251  
427   - //
428 252 if(BusLine.yB.length == 0){
429 253  
430 254 layer.confirm('系统生成该线路【'+lineNameV+'】时获取站点与路段异常!请联系管理员或者检查网络连接是否异常!', {
... ... @@ -554,23 +378,6 @@ var PublicFunctions = function () {
554 378 });
555 379  
556 380 });
557   -
558   - /*// 百度站点坐标获取WGS坐标
559   - GetAjaxData.getFormPointEToWGS(stationInfo,function(result) {
560   -
561   - // 如果不为空
562   - if(result) {
563   -
564   - // 折线覆盖物对象坐标点集合转WGS坐标
565   - GetAjaxData.BpolyGonArrayToWGS(polyGonArray,function(arraydata) {
566   -
567   -
568   - });
569   -
570   - }
571   -
572   - });*/
573   -
574 381 }
575 382  
576 383 });
... ... @@ -612,25 +419,26 @@ var PublicFunctions = function () {
612 419  
613 420 if(result.status=='SUCCESS'){
614 421  
615   - layer.msg('撤销上行站点【'+obj[0].text+'】成功!');
616   -
617   - functionMapB.clearOverlays();
618   - GetAjaxData.getSectionRouteInfo(id,stationRouteDirections,function(data) {
619   -
620   - // 刷新树
621   - PublicFunctions.resjtreeDate(id,stationRouteDirections);
622   -
623   - PublicFunctions.linePanlThree(data,stationRouteDirections);
624   -
625   - });
626   -
627   -
  422 + layer.msg('撤销上行站点【'+obj[0].text+'】成功!');
  423 +
628 424 }else{
629 425  
630 426 layer.msg('撤销上行站点【'+obj[0].text+'】失败!');
631 427  
632 428 }
633 429  
  430 + WorldsBMap.clearMarkAndOverlays();
  431 +
  432 + var Line = LineObj.getLineObj();
  433 +
  434 + /** 查询上行路段信息 @param:<Line.id:线路Id;0:上行> @return:data:上行路段数据 */
  435 + GetAjaxData.getSectionRouteInfo(Line.id,stationRouteDirections,function(data) {
  436 +
  437 + /** 在地图上画出线路走向 @param:<Line.id:线路Id;0:上行;data:上行路段数据> */
  438 + PublicFunctions.linePanlThree(Line.id,data,stationRouteDirections);
  439 +
  440 + });
  441 +
634 442 });
635 443  
636 444 });
... ... @@ -649,65 +457,20 @@ var PublicFunctions = function () {
649 457 return;
650 458 }
651 459  
652   - var sectionId = sel[0].original.sectionId;
  460 + $('#downLine').addClass('btn disabled');
653 461  
654   - var sectionrouteDirections = sel[0].original.sectionrouteDirections;
  462 + $('.btn-circle').addClass('disabled');
655 463  
656   - // 开启线路编辑
657   - polyUpline.enableEditing();
  464 + $('#upLine').addClass('btn disabled');
  465 +
  466 + var editSectionV = sel[0].original;
  467 +
  468 + EditSectionObj.setEitdSection(editSectionV);
658 469  
659 470 // 弹出添加失败提示消息,2秒关闭(如果不配置,默认是3秒)
660 471 var yindex = layer.msg('编辑完线路走向后,请双击线路走向区域保存',{ offset: '126px',shift: 0,time: 10000});
661 472  
662   - // 添加双击折线保存事件
663   - polyUpline.addEventListener('dblclick',function(e) {
664   -
665   - // 关闭
666   - layer.close(yindex);
667   -
668   - polyUpline.disableEditing();
669   -
670   - // 弹出正在加载层
671   - var i = layer.load(0,{title :'我是标题'});
672   -
673   - // 获取折线坐标集合
674   - var editPloyLineArray = polyUpline.getPath();
675   -
676   - // 坐标转换WGS坐标
677   - GetAjaxData.BpolyGonArrayToWGS(editPloyLineArray,function(arraydata) {
678   -
679   - // 定义路段信息字符串
680   - var sectionJSON = JSON.stringify(arraydata);
681   -
682   - var params = {sectionId:sectionId,sectionJSON:sectionJSON}
683   -
684   - GetAjaxData.sectionUpdate(params,function(result) {
685   -
686   - layer.close(i);
687   -
688   - if(result.status=='SUCCESS'){
689   -
690   - layer.msg('修改上行路段成功!');
691   -
692   - }else{
693   -
694   - layer.msg('修改上行路段失败!');
695   -
696   - }
697   - functionMapB.clearOverlays();
698   - GetAjaxData.getSectionRouteInfo(id,sectionrouteDirections,function(data) {
699   -
700   - // 刷新树
701   - PublicFunctions.resjtreeDate(id,sectionrouteDirections);
702   -
703   - PublicFunctions.linePanlThree(data,sectionrouteDirections);
704   -
705   - });
706   - });
707   -
708   - });
709   -
710   - });
  473 + WorldsBMap.editPolyUpline();
711 474 },
712 475  
713 476 setFormValue : function(editStationParmas) {
... ... @@ -727,9 +490,6 @@ var PublicFunctions = function () {
727 490 // 百度坐标点图形集合
728 491 $('#bPolygonGridInput').val(editStationParmas.stationBPolygonGrid);
729 492  
730   - // WGS坐标点图形集合
731   - /*$('#gPolygonGridInput').val(editStationParmas.gPolygonGridInput);*/
732   -
733 493 // 获取站点名称元素设值
734 494 $('#stationNameInput').val(editStationParmas.stationStationName);
735 495  
... ... @@ -748,15 +508,9 @@ var PublicFunctions = function () {
748 508 // 百度地图经纬度坐标中心点
749 509 $('#bJwpointsInput').val(editStationParmas.stationBJwpoints);
750 510  
751   - // WGS经纬度
752   - /*$('#gJwpointsInput').val(editStationParmas.gLonx + ' ' + editStationParmas.gLaty);*/
753   -
754 511 // 获取图形类型元素,并添加值
755 512 $('#shapesTypeSelect').val(editStationParmas.stationShapesType);
756 513  
757   - // 获取方向元素,并添加值
758   - /*$('#stationdirSelect').val(editStationParmas.stationRouteDirections);*/
759   -
760 514 // 获取半径元素,并添加值
761 515 $('#radiusInput').val(editStationParmas.stationRadius);
762 516  
... ... @@ -775,18 +529,75 @@ var PublicFunctions = function () {
775 529 },
776 530  
777 531  
  532 + setSectionFormValue : function(Section) {
  533 +
  534 + // 路段ID
  535 + $('#sectionIdInput').val(Section.sectionId);
  536 +
  537 + // 路段路由ID
  538 + $('#sectionRouteIdInput').val(Section.sectionrouteId);
  539 +
  540 + // 线路ID
  541 + $('#sectionRouteLineInput').val(Section.sectionrouteLine);
  542 +
  543 + // 线路编码
  544 + $('#lineCodeInput').val(Section.sectionrouteLineCode);
  545 +
  546 + // 折线坐标集合
  547 + $('#bsectionVectorInput').val(Section.sectionBsectionVector);
  548 +
  549 + // 路段名称
  550 + $('#sectionNameInput').val(Section.sectionName);
  551 +
  552 + // 路段编码
  553 + $('#sectionCodeInput').val(Section.sectionCode);
  554 +
  555 + // 路段序号
  556 + $('#sectionrouteCodeSelect').val(Section.sectionrouteCode);
  557 +
  558 + // 路段方向
  559 + $('#directionsSection').val(Section.sectionrouteDirections);
  560 +
  561 + // 道路编码
  562 + $('#roadCodingCodInput').val(Section.sectionRoadCoding);
  563 +
  564 + // 道路限速
  565 + $('#speedLimitInput').val(Section.sectionSpeedLimet);
  566 +
  567 + // 路段长度
  568 + $('#sectionDistanceInput').val(Section.sectionDistance);
  569 +
  570 + // 时长
  571 + $('#sectionTimeInput').val(Section.sectionTime);
  572 +
  573 + // 版本号
  574 + $('#versionsInput').val(Section.versions);
  575 +
  576 + // 是否撤销
  577 + $('#destroySelect').val(Section.destroy);
  578 +
  579 + // 描述/说明
  580 + $('#descriptionsTextarea').val(Section.descriptions);
  581 +
  582 + },
  583 +
778 584 /** 在地图上画出线路走向 @param:<Line.id:线路Id;0:上行;data:上行路段数据> */
779 585 linePanlThree : function(lineId,data,direction) {
780 586  
781 587 /** 获取站点路由信息 @param:<Line.id:线路Id;0:上行> @return:<resultdata:站点路由数据> */
782 588 GetAjaxData.getStationRoutePoint(lineId,direction,function(resultdata) {
783 589  
  590 + WorldsBMap.clearMarkAndOverlays();
  591 +
784 592 // 路段数据长度
785 593 var dataLen = data.length;
786 594  
787 595 // 如果大于零
788 596 if(dataLen>0) {
789 597  
  598 + // 地图折线坐标点集合
  599 + var polylineArray = [];
  600 +
790 601 // 编辑路段数据
791 602 for(var d= 0; d<dataLen;d++){
792 603  
... ... @@ -805,20 +616,17 @@ var PublicFunctions = function () {
805 616 // 分割折线坐标字符串
806 617 var lineArray = tempStr.split(',');
807 618  
808   - // 地图折线坐标点集合
809   - var polylineArray = [];
810   -
811 619 for(var i = 0;i<lineArray.length;i++) {
812 620  
813 621 polylineArray.push(new BMap.Point(lineArray[i].split(' ')[0],lineArray[i].split(' ')[1]));
814 622  
815 623 }
816 624  
817   - /** 在地图上画出线路走向 @param:<polylineArray:地图折线坐标点集合;resultdata:站点路由数据> */
818   - WorldsBMap.drawingUpline(polylineArray,resultdata);
819   -
820 625 }
821 626  
  627 + /** 在地图上画出线路走向 @param:<polylineArray:地图折线坐标点集合;resultdata:站点路由数据> */
  628 + WorldsBMap.drawingUpline(polylineArray,resultdata);
  629 +
822 630 // 如果站点路由数据不为空
823 631 if(resultdata.length>0) {
824 632  
... ... @@ -923,41 +731,13 @@ var PublicFunctions = function () {
923 731  
924 732 },
925 733  
926   - // 路段折线百度坐标转WGS坐标
927   - eachSectionList : function(sectiondata,cb) {
  734 + editAChangeCssRemoveDisabled : function() {
928 735  
929   - var dataLen_ = sectiondata.length;
  736 + $('#downLine').removeClass('btn disabled');
930 737  
931   - (function(){
932   -
933   - if (!arguments.callee.count) {
934   -
935   - arguments.callee.count = 0;
936   -
937   - }
938   -
939   - arguments.callee.count++;
940   -
941   - var index_ = parseInt(arguments.callee.count) - 1;
942   -
943   - if (index_ > dataLen_ -1) {
944   -
945   - cb && cb(sectiondata);
946   - return;
947   -
948   - }
949   -
950   - var p = arguments.callee;
951   -
952   - GetAjaxData.MuneBpointsArrayToWGS(sectiondata[index_].points,function(polyGonArray_) {
953   -
954   - sectiondata[index_].points = polyGonArray_;
955   -
956   - p();
957   - });
958   -
959   - })();
  738 + $('.btn-circle').removeClass('disabled');
960 739  
  740 + $('#upLine').removeClass('btn disabled');
961 741 }
962 742  
963 743 }
... ...
src/main/resources/static/pages/base/stationroute/js/stationroute-list-map.js
... ... @@ -24,8 +24,8 @@
24 24  
25 25 var WorldsBMap = function () {
26 26  
27   - /** WorldsBMap 全局变量定义 mapBVvalue:地图对象 */
28   - var mapBVvalue = '';
  27 + /** WorldsBMap 全局变量定义 mapBValue:地图对象;polygon:多边形;polyUpline:走向折线;circle:圆 */
  28 + var mapBValue = '';polygon='',polyUpline='',circle='';
29 29  
30 30 var Bmap = {
31 31  
... ... @@ -38,34 +38,48 @@ var WorldsBMap = function () {
38 38 var bdKey = 'IGGrr4UjwIYzatoCRFKEL8sT';
39 39  
40 40 // 初始化百度地图
41   - mapBVvalue = new BMap.Map("bmap_basic");
  41 + mapBValue = new BMap.Map("bmap_basic");
42 42  
43 43 //中心点和缩放级别
44   - mapBVvalue.centerAndZoom(new BMap.Point(CENTER_POINT.lng,CENTER_POINT.lat), 15);
  44 + mapBValue.centerAndZoom(new BMap.Point(CENTER_POINT.lng,CENTER_POINT.lat), 15);
45 45  
46 46 //启用地图拖拽事件,默认启用(可不写)
47   - mapBVvalue.enableDragging();
  47 + mapBValue.enableDragging();
48 48  
49 49 //启用地图滚轮放大缩小
50   - mapBVvalue.enableScrollWheelZoom();
  50 + mapBValue.enableScrollWheelZoom();
51 51  
52 52 //禁用鼠标双击放大
53   - mapBVvalue.disableDoubleClickZoom();
  53 + mapBValue.disableDoubleClickZoom();
54 54  
55 55 //启用键盘上下左右键移动地图
56   - mapBVvalue.enableKeyboard();
57   - /*PublicFunctions.setMapEvent(map);*/
  56 + mapBValue.enableKeyboard();
58 57  
59   - return mapBVvalue;
  58 + return mapBValue;
60 59 },
61 60  
62 61 /** 获取地图对象 @return 地图对象map */
63 62 getmapBValue : function() {
64 63  
65   - return mapBVvalue;
  64 + return mapBValue;
66 65  
67 66 },
68 67  
  68 + getPolygon : function(){
  69 +
  70 + return polygon;
  71 + },
  72 +
  73 + getPolyUpline : function() {
  74 +
  75 + return polyUpline;
  76 + },
  77 +
  78 + getCircle : function() {
  79 +
  80 + return circle;
  81 + },
  82 +
69 83 initDrawingManager: function(map,styleOptions) {
70 84  
71 85 },
... ... @@ -183,14 +197,11 @@ var WorldsBMap = function () {
183 197 pointsPolygon : function(objStation) {
184 198  
185 199 // 将视图切换到指定的缩放等级,中心点坐标不变。注意:当有信息窗口在地图上打开时,地图缩放将保证信息窗口所在的坐标位置不动。(自1.2新增)
186   - mapBVvalue.setZoom(16);
  200 + mapBValue.setZoom(15);
187 201  
188 202 // 如果不为空
189 203 if(objStation) {
190 204  
191   - // 清除地图覆盖物
192   - mapBVvalue.clearOverlays();
193   -
194 205 // 获取中心点坐标字符串
195 206 var testpointStr = objStation.stationBJwpoints;
196 207  
... ... @@ -232,7 +243,7 @@ var WorldsBMap = function () {
232 243 });
233 244  
234 245 // 增加地图覆盖物多边形
235   - mapBVvalue.addOverlay(polygon);
  246 + mapBValue.addOverlay(polygon);
236 247  
237 248 // 信息窗口属性
238 249 var opts_polygon = {
... ... @@ -243,6 +254,9 @@ var WorldsBMap = function () {
243 254 // 信息窗口高度
244 255 height : 400,
245 256  
  257 + // 信息窗位置偏移值。
  258 + offset: new BMap.Size(500,20),
  259 +
246 260 //标题
247 261 title : '<h4 style="color:#FFFFFF">'+objStation.stationStationName+'站详情</h4>',
248 262  
... ... @@ -269,74 +283,73 @@ var WorldsBMap = function () {
269 283 marker = new BMap.Marker(pointPolygon,{icon : icon_target});
270 284  
271 285 // 把标注添物加到地图上
272   - mapBVvalue.addOverlay(marker);
  286 + mapBValue.addOverlay(marker);
273 287  
274 288 // 是否在平移过程中禁止动画。(自1.2新增)
275 289 var PanOptions_ ={noAnimation :true};
276 290  
277 291 // 将地图的中心点更改为给定的点。
278   - mapBVvalue.panTo(pointPolygon,PanOptions_);
  292 + mapBValue.panTo(pointPolygon,PanOptions_);
279 293  
280 294 // 将地图在水平位置上移动x像素,垂直位置上移动y像素。
281   - mapBVvalue.panBy(10,110,PanOptions_);
  295 + mapBValue.panBy(10,-150,PanOptions_);
282 296  
283 297 //开启信息窗口
284   - mapBVvalue.openInfoWindow(infoWindow_target,pointPolygon);
  298 + mapBValue.openInfoWindow(infoWindow_target,pointPolygon);
285 299  
286 300 }
287 301  
288 302 },
289 303  
290   - pointsThread : function(obj) {
  304 + editPolyUpline : function() {
  305 +
  306 + // 禁止覆盖物在map.clearOverlays方法中被清除。(自 1.1 新增)
  307 + polyUpline.disableMassClear();
  308 +
  309 + WorldsBMap.clearMarkAndOverlays();
  310 +
  311 + // 允许覆盖物在map.clearOverlays方法中被清除。(自 1.1 新增)
  312 + polyUpline.enableMassClear();
291 313  
292   - mapBVvalue.clearOverlays();
  314 + // 开启线路编辑
  315 + polyUpline.enableEditing();
293 316  
294   - if(obj) {
  317 + // 添加双击折线保存事件
  318 + polyUpline.addEventListener('dblclick',function(e) {
295 319  
296   - var tempStr = obj.substring(11,obj.length-1);
  320 + // 关闭
  321 + layer.closeAll();
297 322  
298   - var lineArray = tempStr.split(',');
  323 + polyUpline.disableEditing();
299 324  
300   - var polylineArray = [];
  325 + // 获取折线坐标集合
  326 + var editPloyLineArray = polyUpline.getPath();
301 327  
302   - for(var i = 0;i<lineArray.length;i++) {
303   -
304   - polylineArray.push(new BMap.Point(lineArray[i].split(' ')[0],lineArray[i].split(' ')[1]));
305   -
306   - }
  328 + EditSectionObj.setEitdBsectionVector(JSON.stringify(editPloyLineArray));
307 329  
308   - // 创建线路走向
309   - polyUpline = new BMap.Polyline(polylineArray, {strokeColor : "blue",strokeWeight : 4,strokeOpacity : 0.5});
310   -
311   - // 把折线添加到地图上
312   - mapBVvalue.addOverlay(polyUpline);
313   -
314   - // 自定义标注物图片
315   - var icon_target = new BMap.Icon('/pages/base/stationroute/css/img/cz.png',new BMap.Size(20, 20));
316   -
317   - // 创建标注物
318   - var markers_target = new BMap.Marker(polylineArray[0],{icon : icon_target});
319   -
320   - // 把标注添物加到地图上
321   - mapBVvalue.addOverlay(markers_target);
322   -
323   - //设置中心点
324   - mapBVvalue.centerAndZoom(polylineArray[0],16);
  330 + polyUpline= '';
325 331  
326   - }
327   -
  332 + // 加载修改路段弹出层mobal页面
  333 + $.get('editsection.html', function(m){
  334 +
  335 + $(pjaxContainer).append(m);
  336 +
  337 + $('#edit_section_mobal').trigger('editSectionMobal_show', [WorldsBMap,GetAjaxData,EditSectionObj,PublicFunctions]);
  338 +
  339 + });
  340 + });
328 341 },
329 342  
330 343 // 画圆
331 344 pointsCircle : function(objStation) {
332 345  
333 346 // 将视图切换到指定的缩放等级,中心点坐标不变。注意:当有信息窗口在地图上打开时,地图缩放将保证信息窗口所在的坐标位置不动。(自1.2新增)
334   - mapBVvalue.setZoom(16);
  347 + mapBValue.setZoom(16);
335 348  
336 349 if(objStation) {
337 350  
338 351 // 清除地图覆盖物
339   - mapBVvalue.clearOverlays();
  352 + mapBValue.clearOverlays();
340 353  
341 354 // 获取中心坐标点字符串分割
342 355 var BJwpoints = objStation.stationBJwpoints.split(' ');
... ... @@ -351,7 +364,7 @@ var WorldsBMap = function () {
351 364 circle.enableMassClear();
352 365  
353 366 // 百度地图添加覆盖物圆
354   - mapBVvalue.addOverlay(circle);
  367 + mapBValue.addOverlay(circle);
355 368  
356 369 // 信息窗口参数属性
357 370 var opts = {
... ... @@ -394,7 +407,7 @@ var WorldsBMap = function () {
394 407 marker = new BMap.Marker(point,{icon : icon_target});
395 408  
396 409 // 把标注添物加到地图上
397   - mapBVvalue.addOverlay(marker);
  410 + mapBValue.addOverlay(marker);
398 411  
399 412 setTimeout(function(){
400 413 //开启信息窗口
... ... @@ -406,9 +419,9 @@ var WorldsBMap = function () {
406 419 var PanOptions_ ={noAnimation :true};
407 420  
408 421 // 将地图的中心点更改为给定的点。
409   - mapBVvalue.panTo(point,PanOptions_);
  422 + mapBValue.panTo(point,PanOptions_);
410 423  
411   - //map.panBy(10,-50,PanOptions_);
  424 + mapBValue.panBy(10,-200,PanOptions_);
412 425  
413 426 // 添加标志物监听事件
414 427 marker.addEventListener("click",function() {
... ... @@ -426,7 +439,7 @@ var WorldsBMap = function () {
426 439 localSearchFromAdreesToPoint: function(Address,callback) {
427 440  
428 441 // 创建一个搜索类实例
429   - var localSearch = new BMap.LocalSearch(mapBVvalue);
  442 + var localSearch = new BMap.LocalSearch(mapBValue);
430 443  
431 444 // 检索完成后的回调函数。
432 445 localSearch.setSearchCompleteCallback(function (searchResult) {
... ... @@ -470,7 +483,7 @@ var WorldsBMap = function () {
470 483 marker.closeInfoWindow();
471 484  
472 485 // 清除marker
473   - mapBVvalue.removeOverlay(marker);
  486 + mapBValue.removeOverlay(marker);
474 487  
475 488 // 编辑圆
476 489 if(stationShapesTypeV =='r') {
... ... @@ -492,16 +505,26 @@ var WorldsBMap = function () {
492 505  
493 506 var centre_New = [{potion:{lng:circle.getCenter().lng,lat:circle.getCenter().lat}}];
494 507  
495   - // 中心百度坐标转WGS坐标
496   - GetAjaxData.getFormPointEToWGS(centre_New,function(p) {
497   -
498   - // 设置修改站点参数集合
499   - PublicFunctions.editSeteditStationParmasValue(newCenter, p[0].WGSpotion.Lng , p[0].WGSpotion.Lat,'','','r',Math.round(newRadius));
  508 + /** 设置修改站点集合对象站点中心点百度坐标属性值 @param:<bJwpoints:中心点百度坐标) */
  509 + EditStationObj.setEitdStationBJwpoints(newCenter);
  510 +
  511 + /** 设置修改站点集合对象范围图形类型属性值 @param:<shapesType:范围图形类型) */
  512 + EditStationObj.setEitdStationShapesType('r');
  513 +
  514 + /** 设置修改站点集合对象圆形半径属性值 @param:<radius:圆形半径) */
  515 + EditStationObj.setEitdStationRadius(Math.round(newRadius));
  516 +
  517 + /** 设置修改站点集合对象图形百度坐标集合属性值 @param:<bPolygonGrid:图形百度坐标集合) */
  518 + EditStationObj.setEitdBPolygonGrid('');
  519 +
  520 + // 加载编辑页面
  521 + $.get('edit.html', function(m){
500 522  
501   - // 加载编辑页面
502   - $.get('edit.html', function(m){$(pjaxContainer).append(m);});
  523 + $(pjaxContainer).append(m);
503 524  
504   - });
  525 + $('#edit_station_mobal').trigger('editSelectMobal_show', [WorldsBMap,GetAjaxData,EditStationObj,LineObj,PublicFunctions]);
  526 +
  527 + });
505 528  
506 529 });
507 530  
... ... @@ -517,70 +540,48 @@ var WorldsBMap = function () {
517 540 // 获取编辑的多边形对象
518 541 var edit_pointE = polygon;
519 542  
520   - // 多边形坐标点集合
521   - var eidt_PointsList = [];
522   -
523   - for ( var i = 0; i < edit_pointE.getPath().length; i++) {
524   -
525   - eidt_PointsList.push({potion: {lng: edit_pointE.getPath()[i].lng, lat: edit_pointE.getPath()[i].lat}});
526   -
527   - }
528   -
529   - eidt_PointsList.push({potion: {lng: edit_pointE.getPath()[0].lng, lat: edit_pointE.getPath()[0].lat}});
530   -
531   - var edit_centre = [{potion:{lng:edit_pointE.getBounds().getCenter().lng,lat:edit_pointE.getBounds().getCenter().lat}}];
  543 + var edit_bPloygonGrid = "";
532 544  
533   - // 多边形中心点
534   - var centre_points = edit_pointE.getBounds().getCenter().lng + ' ' + edit_pointE.getBounds().getCenter().lat;
  545 + var editPolyGonLen_ = edit_pointE.getPath().length;
535 546  
536   - // 多边形坐标点集合转WGS坐标
537   - GetAjaxData.getFormPointEToWGS(eidt_PointsList,function(resultdata) {
538   -
539   - // 多边形WGS坐标字符串
540   - var eidt_gPloygonGrid = '';
541   -
542   - // 百度坐标字符串
543   - var edit_bPloygonGrid = '';
  547 + for(var k =0;k<editPolyGonLen_;k++) {
544 548  
545   - for(var k =0;k<resultdata.length;k++) {
  549 + if(k==0) {
546 550  
547   - if(k==0) {
548   -
549   - eidt_gPloygonGrid = resultdata[k].WGSpotion.Lng + ' ' +resultdata[k].WGSpotion.Lat;
550   -
551   - edit_bPloygonGrid = resultdata[k].potion.lng + ' ' +resultdata[k].potion.lat;
552   -
553   - }else {
554   -
555   - eidt_gPloygonGrid = eidt_gPloygonGrid + ',' + resultdata[k].WGSpotion.Lng + ' ' +resultdata[k].WGSpotion.Lat;
556   -
557   - edit_bPloygonGrid = edit_bPloygonGrid + ',' + resultdata[k].potion.lng + ' ' +resultdata[k].potion.lat;
558   -
559   - }
  551 + edit_bPloygonGrid = edit_pointE.getPath()[k].lng + ' ' + edit_pointE.getPath()[k].lat;
  552 +
  553 + }else {
  554 +
  555 + edit_bPloygonGrid = edit_bPloygonGrid + ',' + edit_pointE.getPath()[k].lng + ' ' + edit_pointE.getPath()[k].lat;
560 556  
561 557 }
  558 +
  559 + }
  560 +
  561 + edit_bPloygonGrid = edit_bPloygonGrid + ',' + edit_pointE.getPath()[0].lng + ' ' + edit_pointE.getPath()[0].lat;
  562 +
  563 + // 多边形中心点
  564 + var centre_points = edit_pointE.getBounds().getCenter().lng + ' ' + edit_pointE.getBounds().getCenter().lat;
  565 +
  566 + /** 设置修改站点集合对象站点中心点百度坐标属性值 @param:<bJwpoints:中心点百度坐标) */
  567 + EditStationObj.setEitdStationBJwpoints(centre_points);
  568 +
  569 + /** 设置修改站点集合对象范围图形类型属性值 @param:<shapesType:范围图形类型) */
  570 + EditStationObj.setEitdStationShapesType('d');
  571 +
  572 + /** 设置修改站点集合对象圆形半径属性值 @param:<radius:圆形半径) */
  573 + EditStationObj.setEitdStationRadius('');
  574 +
  575 + /** 设置修改站点集合对象图形百度坐标集合属性值 @param:<bPolygonGrid:图形百度坐标集合) */
  576 + EditStationObj.setEitdBPolygonGrid(edit_bPloygonGrid);
  577 +
  578 + $.get('edit.html', function(m){
562 579  
563   - eidt_gPloygonGrid = 'POLYGON((' + eidt_gPloygonGrid + '))';
564   -
565   - edit_bPloygonGrid = 'POLYGON((' + edit_bPloygonGrid + '))';
  580 + $(pjaxContainer).append(m);
566 581  
567   - // 中心点坐标转WGS坐标
568   - GetAjaxData.getFormPointEToWGS(edit_centre,function(p) {
569   -
570   - var edit_gLonx = p[0].WGSpotion.Lng;
571   -
572   - var edit_gLaty = p[0].WGSpotion.Lat;
573   -
574   - // 设置编辑站点参宿集合
575   - PublicFunctions.editSeteditStationParmasValue(centre_points,edit_gLonx,edit_gLaty,edit_bPloygonGrid,eidt_gPloygonGrid,'d','');
576   -
577   - // 加载编辑页面
578   - $.get('edit.html', function(m){$(pjaxContainer).append(m);});
579   -
580   - });
  582 + $('#edit_station_mobal').trigger('editSelectMobal_show', [WorldsBMap,GetAjaxData,EditStationObj,LineObj,PublicFunctions]);
581 583  
582   - });
583   -
  584 + });
584 585  
585 586 });
586 587  
... ... @@ -591,14 +592,15 @@ var WorldsBMap = function () {
591 592 // 在地图上画出上行线路走向
592 593 drawingUpline : function (polylineArray,resultdata) {
593 594  
594   - // 清除地图覆盖物
595   - mapBVvalue.clearOverlays();
  595 + WorldsBMap.clearMarkAndOverlays();
  596 +
  597 + polyUpline = '';
596 598  
597 599 // 创建线路走向
598 600 polyUpline = new BMap.Polyline(polylineArray, {strokeColor : "blue",strokeWeight : 6,strokeOpacity : 0.5});
599 601  
600 602 // 把折线添加到地图上
601   - mapBVvalue.addOverlay(polyUpline);
  603 + mapBValue.addOverlay(polyUpline);
602 604  
603 605 var ceter_index = Math.round(resultdata.length / 2);
604 606  
... ... @@ -610,13 +612,13 @@ var WorldsBMap = function () {
610 612  
611 613 var PanOptions_ ={noAnimation :true};
612 614  
613   - mapBVvalue.reset();
  615 + mapBValue.reset();
614 616  
615   - mapBVvalue.panTo(polyline_center,PanOptions_);
  617 + mapBValue.panTo(polyline_center,PanOptions_);
616 618  
617   - mapBVvalue.panBy(500,-510,PanOptions_);
  619 + mapBValue.panBy(500,-510,PanOptions_);
618 620  
619   - mapBVvalue.setZoom(14);
  621 + mapBValue.setZoom(14);
620 622  
621 623 },
622 624  
... ... @@ -627,24 +629,12 @@ var WorldsBMap = function () {
627 629 var icon_target = new BMap.Icon('/pages/base/stationroute/css/img/cz.png',new BMap.Size(20, 20));
628 630  
629 631 // 创建标注物
630   - var markers_thread = new BMap.Marker(point_center,{icon : icon_target});
  632 + marker = new BMap.Marker(point_center,{icon : icon_target});
631 633  
632 634 // 允许覆盖物在map.clearOverlays方法中被清除。
633   - markers_thread.enableMassClear();
634   -
635   - // 清除marker
636   - mapBVvalue.removeOverlay(markers_thread);
  635 + marker.enableMassClear();
637 636  
638   - mapBVvalue.addOverlay(markers_thread);
639   - },
640   -
641   - // 打开绘画工具
642   - drawingManagerOpen : function() {
643   -
644   - // 清楚地图覆盖物
645   - mapBVvalue.clearOverlays();
646   -
647   -
  637 + mapBValue.addOverlay(marker);
648 638 },
649 639  
650 640 // 站点名称获取百度坐标(手动规划)
... ... @@ -678,7 +668,7 @@ var WorldsBMap = function () {
678 668  
679 669 if(arra[index]!=''){
680 670  
681   - var localSearch = new BMap.LocalSearch(mapBVvalue);
  671 + var localSearch = new BMap.LocalSearch(mapBValue);
682 672  
683 673 localSearch.search(arra[index]);
684 674  
... ... @@ -742,7 +732,7 @@ var WorldsBMap = function () {
742 732  
743 733 var poiTwo = new BMap.Point(stationList[index+1].potion.lng,stationList[index+1].potion.lat);
744 734  
745   - var transit = new BMap.TransitRoute(mapBVvalue, {renderOptions: {map: mapBVvalue},onSearchComplete: searchComplete});
  735 + var transit = new BMap.TransitRoute(mapBValue, {renderOptions: {map: mapBValue},onSearchComplete: searchComplete});
746 736  
747 737 transit.search(poiOne,poiTwo);
748 738  
... ... @@ -810,7 +800,7 @@ var WorldsBMap = function () {
810 800  
811 801 /* var transit = new BMap.TransitRoute(mapB, {renderOptions: {map: mapB},onPolylinesSet: searchPolylinesSet});*/
812 802  
813   - var transit = new BMap.DrivingRoute(mapBVvalue, {renderOptions: {map: mapBVvalue},onPolylinesSet: searchPolylinesSet});
  803 + var transit = new BMap.DrivingRoute(mapBValue, {renderOptions: {map: mapBValue},onPolylinesSet: searchPolylinesSet});
814 804  
815 805 function searchPolylinesSet(results){
816 806  
... ... @@ -856,12 +846,12 @@ var WorldsBMap = function () {
856 846  
857 847 var PanOptions ={noAnimation :true};
858 848  
859   - mapBVvalue.panTo(stationNameChangePoint,PanOptions);
  849 + mapBValue.panTo(stationNameChangePoint,PanOptions);
860 850  
861   - mapBVvalue.panBy(0,-100);
  851 + mapBValue.panBy(0,-100);
862 852  
863 853 // 将标注添加到地图中
864   - mapBVvalue.addOverlay(marker_stargt2);
  854 + mapBValue.addOverlay(marker_stargt2);
865 855  
866 856 //跳动的动画
867 857 marker_stargt2.setAnimation(BMAP_ANIMATION_BOUNCE);
... ... @@ -875,7 +865,7 @@ var WorldsBMap = function () {
875 865 /** 系统规划抓去数据 @param lineNameValue:线路名称;i:方向*/
876 866 getBmapStationNames : function(lineNameValue,i,callback) {
877 867  
878   - var busline = new BMap.BusLineSearch(mapBVvalue,{
  868 + var busline = new BMap.BusLineSearch(mapBValue,{
879 869  
880 870 // 设置公交列表查询后的回调函数。参数:rs: BusListResult类型
881 871 onGetBusListComplete:function(BusListResult) {
... ... @@ -934,7 +924,9 @@ var WorldsBMap = function () {
934 924 clearMarkAndOverlays : function() {
935 925  
936 926 // 清楚地图覆盖物
937   - mapBVvalue.clearOverlays();
  927 + mapBValue.clearOverlays();
  928 +
  929 + mapBValue.removeOverlay();
938 930  
939 931 }
940 932  
... ...
src/main/resources/static/pages/base/stationroute/js/stationroute-list-treedata.js
... ... @@ -13,6 +13,160 @@
13 13  
14 14 var StationTreeData = function(){
15 15  
  16 + function parmasObj() {
  17 +
  18 + AddStationObj.setAddStation({});
  19 +
  20 + EditStationObj.setEitdStation({});
  21 +
  22 + EditSectionObj.setEitdSection({});
  23 +
  24 + }
  25 +
  26 + function upIsEidtStauts(shapesTypeT,chaildredType,data) {
  27 +
  28 + // 关闭弹出层
  29 + layer.closeAll();
  30 +
  31 + // 选中的是站点
  32 + if(chaildredType =='station') {
  33 +
  34 + // 如果是圆
  35 + if(shapesTypeT =='r') {
  36 +
  37 + // 百度地图画圆
  38 + WorldsBMap.pointsCircle(data);
  39 +
  40 + // 如果是多变行
  41 + }else if(shapesTypeT == 'd') {
  42 +
  43 + // 百度地图画多边形
  44 + WorldsBMap.pointsPolygon(objStation);
  45 +
  46 + }
  47 +
  48 + // 选中的是路段
  49 + }else if(chaildredType =='section'){
  50 +
  51 + // 路段矢量坐标点
  52 + var polylineArray = [data];
  53 +
  54 + // 路段方向
  55 + var dire_ = data.sectionrouteDirections;
  56 +
  57 + // 线路ID
  58 + var Line = LineObj.getLineObj();
  59 +
  60 + // 百度地图画路段
  61 + PublicFunctions.linePanlThree(Line.id,polylineArray,dire_);
  62 +
  63 + }
  64 +
  65 + }
  66 +
  67 + function TreeOnclickEvent(treeOjb) {
  68 +
  69 + // 节点个数
  70 + var len = treeOjb.length;
  71 +
  72 + if(len<0) {
  73 +
  74 + return;
  75 + }
  76 +
  77 + // 获取数据
  78 + var stationData = treeOjb[0].original;
  79 +
  80 + // 站点范围类型
  81 + var shapesType_ = stationData.stationShapesType;
  82 +
  83 + // 选中的节点类型
  84 + var chaildredType_ = stationData.chaildredType;
  85 +
  86 + // 选中的其它节点
  87 + if(chaildredType_ ==null){
  88 +
  89 + return;
  90 + }
  91 +
  92 + var edtsta = EditStationObj.getEitdStation();
  93 +
  94 + var edtste = EditSectionObj.getEitdSection();
  95 +
  96 + if(!$.isEmptyObject(edtsta)){
  97 +
  98 + var stationName = edtsta.stationStationName;
  99 +
  100 + var txType = edtsta.stationShapesType;
  101 +
  102 + // 是否继续弹出层
  103 + layer.confirm('您正处于站点【'+stationName+'】的编辑状态!是否退出!', {
  104 + btn : [ '确认并退出', '返回并继续' ]
  105 + }, function(index) {
  106 +
  107 + PublicFunctions.editAChangeCssRemoveDisabled();
  108 +
  109 + // 关闭弹出层
  110 + layer.close(index);
  111 +
  112 + if(txType=='r'){
  113 +
  114 + WorldsBMap.pointsCircle(edtsta);
  115 +
  116 + }else if(txType=='d') {
  117 +
  118 + // 百度地图画多边形
  119 + WorldsBMap.pointsPolygon(edtsta);
  120 + }
  121 +
  122 + parmasObj();
  123 +
  124 + // upIsEidtStauts(objStation,chaildredType,len);
  125 +
  126 + },function(){
  127 +
  128 + // 关闭弹出层
  129 + layer.closeAll();
  130 +
  131 + return false;
  132 + });
  133 +
  134 + }else if(!$.isEmptyObject(edtste)) {
  135 +
  136 + var sectionName = edtste.sectionName;
  137 +
  138 + // 是否继续弹出层
  139 + layer.confirm('您正处于路段【'+sectionName+'】的编辑状态!是否退出!', {
  140 + btn : [ '确认并退出', '返回并继续' ]
  141 + }, function(index) {
  142 +
  143 + // 关闭弹出层
  144 + layer.close(index);
  145 +
  146 + PublicFunctions.editAChangeCssRemoveDisabled();
  147 +
  148 + var polylineArray_ = [edtste];
  149 +
  150 + // 百度地图画路段
  151 + PublicFunctions.linePanlThree(edtste.sectionrouteLine,polylineArray_,edtste.sectionrouteDirections);
  152 +
  153 + // upIsEidtStauts(objStation,chaildredType,len);
  154 +
  155 + },function(){
  156 +
  157 + // 关闭弹出层
  158 + layer.closeAll();
  159 + return false;
  160 + });
  161 +
  162 + }else {
  163 +
  164 + upIsEidtStauts(shapesType_,chaildredType_,stationData);
  165 +
  166 + }
  167 +
  168 + }
  169 +
16 170 var stationTree = {
17 171  
18 172 upInit : function(treeDateJson) {
... ... @@ -74,74 +228,10 @@ var StationTreeData = function(){
74 228 // 树节点单击事件
75 229 }).bind('click.jstree', function(event) {
76 230  
77   - // 关闭弹出层
78   - layer.closeAll();
79   -
80   - // 获取选中树节点
  231 + // 获取上行选中树节点
81 232 var treeOjb = $.jstree.reference("#station_Up_tree").get_selected(true);
82 233  
83   - // 节点个数
84   - var len = treeOjb.length;
85   -
86   - // 如果选中
87   - if(len>0) {
88   -
89   - // 获取数据
90   - var objStation = treeOjb[0].original;
91   -
92   - // 选中的节点类型
93   - var chaildredType = objStation.chaildredType;
94   -
95   - // 选中的是站点
96   - if(chaildredType =='station') {
97   -
98   - // 站点范围类型
99   - var shapesTypeT = treeOjb[0].original.stationShapesType;
100   -
101   - // 节点数据
102   - var objStation = treeOjb[0].original;
103   -
104   - // 如果是圆
105   - if(shapesTypeT =='r') {
106   -
107   - // 百度地图画圆
108   - WorldsBMap.pointsCircle(objStation);
109   -
110   - // 如果是多变行
111   - }else if(shapesTypeT == 'd') {
112   -
113   - // 百度地图画多边形
114   - WorldsBMap.pointsPolygon(objStation);
115   -
116   - }
117   -
118   - // 选中的是路段
119   - }else if(chaildredType =='section'){
120   -
121   - // 选中节点数据
122   - var objSection = treeOjb[0].original.sectionBsectionVector;
123   -
124   - // 路段矢量坐标点
125   - var polylineArray = [];
126   -
127   - polylineArray.push(treeOjb[0].original);
128   -
129   - // 路段方向
130   - var dire_ = treeOjb[0].original.sectionrouteDirections;
131   -
132   - var lineIdPanlThree = PublicFunctions.getLineIdValue();
133   -
134   - // 百度地图画路段
135   - PublicFunctions.linePanlThree(lineIdPanlThree,polylineArray,dire_);
136   -
137   - // 选中的其它节点
138   - }else if(chaildredType ==null){
139   -
140   - return;
141   -
142   - }
143   -
144   - }
  234 + TreeOnclickEvent(treeOjb);
145 235  
146 236 });
147 237 }
... ... @@ -206,80 +296,11 @@ var StationTreeData = function(){
206 296 // 树节点单击事件
207 297 }).bind('click.jstree', function(event) {
208 298  
209   - // 关闭弹出层
210   - layer.closeAll();
211   -
212   - // 获取选中节点
  299 + // 获取下行选中树节点
213 300 var treeOjb = $.jstree.reference("#station_Down_tree").get_selected(true);
214 301  
215   - // 选择节点个数
216   - var len = treeOjb.length;
217   -
218   - // 如果选中
219   - if(len>0) {
220   -
221   - // 获取数据
222   - var objStation = treeOjb[0].original;
223   -
224   - // 选中的节点类型
225   - var chaildredType = objStation.chaildredType;
226   -
227   - // 选中的是站点
228   - if(chaildredType =='station') {
229   -
230   - // 将视图切换到指定的缩放等级,中心点坐标不变。注意:当有信息窗口在地图上打开时,地图缩放将保证信息窗口所在的坐标位置不动。(自1.2新增)
231   - mapB.setZoom(16);
232   -
233   - // 站点范围类型
234   - var shapesTypeT = treeOjb[0].original.stationShapesType;
235   -
236   - // 节点数据
237   - var objStation = treeOjb[0].original;
238   -
239   - // 如果是圆
240   - if(shapesTypeT =='r') {
241   -
242   - // 百度地图画圆
243   - WorldsBMap.pointsCircle(objStation,mapB);
244   -
245   - // 如果是多变行
246   - }else if(shapesTypeT == 'd') {
247   -
248   - // 百度地图画多边形
249   - WorldsBMap.pointsPolygon(objStation,mapB);
250   -
251   - }
252   -
253   - // 选中的是路段
254   - }else if(chaildredType =='section'){
255   -
256   - // 选中节点数据
257   - var objSection = treeOjb[0].original.sectionBsectionVector;
258   -
259   - // 路段矢量坐标点
260   - var polylineArray = [];
261   -
262   - polylineArray.push(treeOjb[0].original);
263   -
264   - // 路段方向
265   - var dire_ = treeOjb[0].original.sectionrouteDirections;
266   -
267   - /*// 清除地图覆盖物
268   - mapB.clearOverlays();*/
269   -
270   - var lineIdPanlThree = PublicFunctions.getLineIdValue();
271   -
272   - // 百度地图画路段
273   - PublicFunctions.linePanlThree(lineIdPanlThree,polylineArray,dire_);
274   -
275   - // 选中的其它节点
276   - }else if(chaildredType ==null){
277   -
278   - return;
279   -
280   - }
281   -
282   - }
  302 + TreeOnclickEvent(treeOjb);
  303 +
283 304 });
284 305 }
285 306 },
... ...
src/main/resources/static/pages/base/stationroute/list.html
... ... @@ -211,46 +211,18 @@
211 211 </div>
212 212 </div>
213 213 </div>
214   -<script type="text/javascript">
215   -
216   -/**
217   - * 全局变量
218   - * - - - - - > id:线路ID
219   - *
220   - * - - - - - > dir:方向
221   - *
222   - * - - - - - > map :地图
223   - *
224   - * - - - - - > drawingManager:鼠标绘制完成返回数据
225   - *
226   - * - - - - - > addStationNameValue:新增选择系统生成新增方式的站点名称
227   - *
228   - * - - - - - > circle:圆
229   - *
230   - * - - - - - > polygon:多边形
231   - *
232   - * - - - - - > polyUpline 线路上行走向
233   - *
234   - * - - - - - > addStaitonParmas 新增站点保存参数集合
235   - *
236   - * - - - - - > editStationParmas 编辑站点保存参数集合
237   - *
238   - * - - - - - > status 绘画状态:新增与编辑
239   - */
240   -/* var id = '',dir = '',map = '', drawingManager = '',addStationNameValue = '',
241   - circle='',marker = '',polyUpline='',addStaitonParmas = {},editStationParmas={},status='',manualPararms={}; */
242   -
243   -
244   -</script>
245 214 <!-- 线路类 -->
246 215 <script src="/pages/base/stationroute/js/line.js"></script>
247 216  
248 217 <!-- 新增站点对象类 -->
249 218 <script src="/pages/base/stationroute/js/addstationobj.js"></script>
250 219  
251   -<!-- 新增站点对象类 -->
  220 +<!-- 修改站点对象类 -->
252 221 <script src="/pages/base/stationroute/js/editstationobj.js"></script>
253 222  
  223 +<!-- 修改路段对象类 -->
  224 +<script src="/pages/base/stationroute/js/editsection.js"></script>
  225 +
254 226 <!-- 绘图类 -->
255 227 <script src="/pages/base/stationroute/js/drawingManager.js"></script>
256 228  
... ...
src/main/resources/static/pages/scheduleApp/module/basicInfo/busInfoManage/busInfoManage.js
... ... @@ -26,7 +26,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;BusInfoManageService&#39;, [&#39;BusInfoManageSer
26 26 resetSearchCondition: function() {
27 27 var key;
28 28 for (key in currentSearchCondition) {
29   - currentSearchCondition[key] = "";
  29 + currentSearchCondition[key] = null;
30 30 }
31 31 currentPageNo = 1;
32 32 },
... ...
src/main/resources/static/pages/scheduleApp/module/basicInfo/busInfoManage/list.html
... ... @@ -32,25 +32,20 @@
32 32 <input type="text" class="form-control form-filter input-sm" ng-model="ctrl.searchCondition().carPlate_like"/>
33 33 </td>
34 34 <td>
35   - <select class="form-control form-filter " >
36   - <option value="">请选择...</option>
37   - <option value="55">上南公司</option>
38   - <option value="22">金高公司</option>
39   - <option value="05">杨高公司</option>
40   - <option value="26">南汇公司</option>
41   - </select>
42   - </td>
43   - <td>
44   - <select class="form-control form-filter " >
45   - <option value="">请选择...</option>
46   - </select>
  35 + <div style="width: 150px">
  36 + <sa-Select model="ctrl.searchCondition()"
  37 + dicgroup="gsType"
  38 + placeholder="请选择..."
  39 + name="gs"
  40 + codename="businessCode_eq">
  41 + </sa-Select>
  42 + </div>
  43 + </td>
  44 + <td style="width: 100px">
  45 +
47 46 </td>
48   - <td>
49   - <select class="form-control form-filter " >
50   - <option value="">请选择...</option>
51   - <option value="1">是</option>
52   - <option value="0">否</option>
53   - </select>
  47 + <td style="width: 80px">
  48 +
54 49 </td>
55 50 <td>
56 51 <button class="btn btn-sm green btn-outline filter-submit margin-bottom"
... ...
src/main/resources/static/pages/scheduleApp/module/basicInfo/employeeInfoManage/employeeInfoManage.js
... ... @@ -27,7 +27,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;EmployeeInfoManageService&#39;, [&#39;EmployeeInf
27 27 resetSearchCondition: function() {
28 28 var key;
29 29 for (key in currentSearchCondition) {
30   - currentSearchCondition[key] = "";
  30 + currentSearchCondition[key] = null;
31 31 }
32 32 currentPageNo = 1;
33 33 },
... ...
src/main/resources/static/pages/scheduleApp/module/basicInfo/employeeInfoManage/list.html
... ... @@ -7,20 +7,16 @@
7 7 <input type="checkbox" class="group-checkable"/>
8 8 </th>
9 9 <th>序号</th>
10   - <th>员工编号</th>
11 10 <th>姓名</th>
12 11 <th>工号</th>
13 12 <th>性别</th>
14 13 <th>所在公司</th>
15 14 <th>分公司</th>
16 15 <th>工种</th>
17   - <th>一卡通号</th>
18   - <th>运营服务证号</th>
19 16 <th width="14%">操作</th>
20 17 </tr>
21 18 <tr role="row" class="filter">
22 19 <td></td>
23   - <td></td>
24 20 <td>
25 21 <input type="text" class="form-control input-sm" ng-model="ctrl.searchCondition().personnelCode_like"/>
26 22 </td>
... ... @@ -31,50 +27,37 @@
31 27 <input type="text" class="form-control input-sm" ng-model="ctrl.searchCondition().jobCode_like"/>
32 28 </td>
33 29 <td>
34   - <select class="form-contrl form-filter">
35   - <option value="">请选择</option>
36   - <option value="男">男</option>
37   - <option value="女">女</option>
38   - </select>
39   - </td>
40   - <td>
41   - <select class="form-control form-filter " >
42   - <option value="">请选择...</option>
43   - <option value="55">上南公司</option>
44   - <option value="22">金高公司</option>
45   - <option value="05">杨高公司</option>
46   - <option value="26">南汇公司</option>
47   - </select>
  30 + <div style="width: 150px">
  31 + <sa-Select model="ctrl.searchCondition()"
  32 + dicgroup="sexType"
  33 + placeholder="请选择..."
  34 + name="personnelType"
  35 + codename="personnelType_eq">
  36 + </sa-Select>
  37 + </div>
48 38 </td>
49 39 <td>
50   - <select class="form-control form-filter " >
51   - <option value="">请选择...</option>
52   - </select>
  40 + <div style="width: 150px">
  41 + <sa-Select model="ctrl.searchCondition()"
  42 + dicgroup="gsType"
  43 + placeholder="请选择..."
  44 + name="gs"
  45 + codename="companyCode_eq">
  46 + </sa-Select>
  47 + </div>
53 48 </td>
54   - <td>
55   - <select class="form-control form-filter " >
56   - <option value="">请选择...</option>
57   - <option value="公共汽电车驾驶员">公共汽电车驾驶员</option>
58   - <option value="公共汽电车调度员">公共汽电车调度员</option>
59   - <option value="公共汽电车售票员">公共汽电车售票员</option>
60   - <option value="站员">站员</option>
61   - <option value="管理员">管理员</option>
62   - <option value="安检员">安检员</option>
63   - <option value="机务">机务</option>
64   - <option value="引导员">引导员</option>
65   - <option value="乘务员">乘务员</option>
66   - <option value="车队长(线长、主">车队长(线长、主</option>
67   - <option value="公司管理人员">公司管理人员</option>
68   - <option value="警消人员">警消人员</option>
69   - <option value="票务人员">票务人员</option>
70   - <option value="其他服务人员">其他服务人员</option>
71   - </select>
72   - </td>
73   - <td>
74   - <input type="text" class="form-control input-sm" ng-model="ctrl.searchCondition().icCardCode_like"/>
  49 + <td style="width: 100px">
  50 +
75 51 </td>
76 52 <td>
77   - <input type="text" class="form-control input-sm" ng-model="ctrl.searchCondition().papersCode_like"/>
  53 + <div style="width: 180px">
  54 + <sa-Select model="ctrl.searchCondition()"
  55 + dicgroup="gzType"
  56 + placeholder="请选择..."
  57 + name="posts"
  58 + codename="posts_eq">
  59 + </sa-Select>
  60 + </div>
78 61 </td>
79 62 <td>
80 63 <button class="btn btn-sm green btn-outline filter-submit margin-bottom"
... ... @@ -97,9 +80,6 @@
97 80 <span ng-bind="$index + 1"></span>
98 81 </td>
99 82 <td>
100   - <span ng-bind="info.personnelCode"></span>
101   - </td>
102   - <td>
103 83 <span ng-bind="info.personnelName"></span>
104 84 </td>
105 85 <td>
... ... @@ -118,12 +98,6 @@
118 98 <span ng-bind="info.posts | dict:'gzType':'未知'"></span>
119 99 </td>
120 100 <td>
121   - <span ng-bind="info.icCardCode"></span>
122   - </td>
123   - <td>
124   - <span ng-bind="info.papersCode"></span>
125   - </td>
126   - <td>
127 101 <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>-->
128 102 <!--<a href="edit.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 修改 </a>-->
129 103 <a ui-sref="employeeInfoManage_detail({id: info.id})" class="btn default blue-stripe btn-sm"> 详细 </a>
... ...
src/main/resources/static/pages/scheduleApp/module/core/busConfig/busConfig.js
... ... @@ -20,7 +20,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;BusConfigService&#39;, [&#39;BusConfigService_g&#39;,
20 20 resetSearchCondition: function() {
21 21 var key;
22 22 for (key in currentSearchCondition) {
23   - currentSearchCondition[key] = "";
  23 + currentSearchCondition[key] = null;
24 24 }
25 25 },
26 26 /**
... ... @@ -38,7 +38,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;BusConfigService&#39;, [&#39;BusConfigService_g&#39;,
38 38 getPage: function() {
39 39 var params = currentSearchCondition; // 查询条件
40 40 params.page = currentPageNo - 1; // 服务端页码从0开始
41   - return service.list(params).$promise;
  41 + return service.rest.list(params).$promise;
42 42 },
43 43 /**
44 44 * 获取明细信息。
... ... @@ -47,7 +47,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;BusConfigService&#39;, [&#39;BusConfigService_g&#39;,
47 47 */
48 48 getDetail: function(id) {
49 49 var params = {id: id};
50   - return service.get(params).$promise;
  50 + return service.rest.get(params).$promise;
51 51 },
52 52 /**
53 53 * 保存信息。
... ... @@ -55,7 +55,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;BusConfigService&#39;, [&#39;BusConfigService_g&#39;,
55 55 * @return 返回一个 promise
56 56 */
57 57 saveDetail: function(obj) {
58   - return service.save(obj).$promise;
  58 + return service.rest.save(obj).$promise;
59 59 }
60 60 };
61 61  
... ... @@ -179,17 +179,105 @@ angular.module(&#39;ScheduleApp&#39;).controller(&#39;BusConfigListCtrl&#39;, [&#39;BusConfigService
179 179 };
180 180 // 重置查询条件
181 181 self.resetSearchCondition = function() {
182   - return busConfigService.resetSearchCondition();
  182 + busConfigService.resetSearchCondition();
  183 + self.pageInfo.currentPage = 1;
  184 + self.pageChanaged();
183 185 };
184 186  
185 187 }]);
186 188  
187   -angular.module('ScheduleApp').controller('BusConfigFormCtrl', ['BusConfigService', '$stateParams', '$state', function(busConfigService, $stateParams, $state) {
188   - // TODO:
  189 +angular.module('ScheduleApp').controller('BusConfigFormCtrl', ['BusConfigService', '$stateParams', '$state', '$scope', function(busConfigService, $stateParams, $state, $scope) {
  190 + var self = this;
  191 +
  192 + // 启用日期 日期控件开关
  193 + self.qyrqOpen = false;
  194 + self.qyrq_open = function() {
  195 + self.qyrqOpen = true;
  196 + };
  197 +
  198 + // 终止日期 日期控件开关
  199 + self.zzrqOpen = false;
  200 + self.zzrq_open = function() {
  201 + self.zzrqOpen = true;
  202 + };
  203 +
  204 + // 欲保存的busInfo信息,绑定
  205 + self.busConfigForSave = {};
  206 +
  207 + // 获取传过来的id,有的话就是修改,获取一遍数据
  208 + var id = $stateParams.id;
  209 + if (id) {
  210 + self.busConfigForSave.id = id;
  211 + busConfigService.getDetail(id).then(
  212 + function(result) {
  213 + var key;
  214 + for (key in result) {
  215 + self.busConfigForSave[key] = result[key];
  216 + }
  217 +
  218 + // 添加xl_id,cl_id
  219 + self.busConfigForSave["xl_id"] = self.busConfigForSave.xl.id;
  220 + self.busConfigForSave["cl_id"] = self.busConfigForSave.cl.id;
  221 + },
  222 + function(result) {
  223 + alert("出错啦!");
  224 + }
  225 + );
  226 + }
  227 +
  228 + // 提交方法
  229 + self.submit = function() {
  230 + console.log(self.busConfigForSave);
  231 +
  232 + var mf = $scope.myForm;
  233 +
  234 + // xl_id,cl_id要组织成对象,然后删除
  235 + self.busConfigForSave["xl"] = {};
  236 + self.busConfigForSave.xl["id"] = self.busConfigForSave["xl_id"];
  237 + delete self.busConfigForSave["xl_id"];
  238 + self.busConfigForSave["cl"] = {};
  239 + self.busConfigForSave.cl["id"] = self.busConfigForSave["cl_id"];
  240 + delete self.busConfigForSave["cl_id"];
  241 +
  242 + busConfigService.saveDetail(self.busConfigForSave).then(
  243 + function(result) {
  244 + // TODO:弹出框方式以后改
  245 + if (result.status == 'SUCCESS') {
  246 + alert("保存成功!");
  247 + $state.go("busConfig");
  248 + } else {
  249 + alert("保存异常!");
  250 + }
  251 + },
  252 + function(result) {
  253 + // TODO:弹出框方式以后改
  254 + alert("出错啦!");
  255 + }
  256 + );
  257 + };
189 258 }]);
190 259  
191 260 angular.module('ScheduleApp').controller('BusConfigDetailCtrl', ['BusConfigService', '$stateParams', function(busConfigService, $stateParams) {
192   - // TODO:
  261 + var self = this;
  262 + self.title = "";
  263 + self.busConfigForDetail = {};
  264 + self.busConfigForDetail.id = $stateParams.id;
  265 +
  266 + // 当转向到此页面时,就获取明细信息并绑定
  267 + busConfigService.getDetail($stateParams.id).then(
  268 + function(result) {
  269 + var key;
  270 + for (key in result) {
  271 + self.busConfigForDetail[key] = result[key];
  272 + }
  273 +
  274 + self.title = "车辆 " + self.busConfigForDetail.cl.insideCode + " 配置详细信息";
  275 + },
  276 + function(result) {
  277 + // TODO:弹出框方式以后改
  278 + alert("出错啦!");
  279 + }
  280 + );
193 281 }]);
194 282  
195 283  
... ...
src/main/resources/static/pages/scheduleApp/module/core/busConfig/dataExport.html
  1 +excelfieldnames=路牌,出场,陆家嘴地铁站1,长岛路东陆路1,陆家嘴地铁站2,长岛路东陆路2,陆家嘴地铁站3,长岛路东陆路3,陆家嘴地铁站4,长岛路东陆路4,陆家嘴地铁站5,长岛路东陆路5,陆家嘴地铁站6,长岛路东陆路6,进场1,出场1,陆家嘴地铁站7,长岛路东陆路7,陆家嘴地铁站8,长岛路东陆路8,陆家嘴地铁站9,长岛路东陆路9,陆家嘴地铁站10,长岛路东陆路10,陆家嘴地铁站11,长岛路东陆路11,陆家嘴地铁站12,长岛路东陆路12,陆家嘴地铁站13,长岛路东陆路13 ,进场
  2 +
  3 +normalizefieldnames=出场,陆家嘴地铁站1,长岛路东陆路1,陆家嘴地铁站2,长岛路东陆路2,陆家嘴地铁站3,长岛路东陆路3,陆家嘴地铁站4,长岛路东陆路4,陆家嘴地铁站5,长岛路东陆路5,陆家嘴地铁站6,长岛路东陆路6,进场1,出场1,陆家嘴地铁站7,长岛路东陆路7,陆家嘴地铁站8,长岛路东陆路8,陆家嘴地铁站9,长岛路东陆路9,陆家嘴地铁站10,长岛路东陆路10,陆家嘴地铁站11,长岛路东陆路11,陆家嘴地铁站12,长岛路东陆路12,陆家嘴地铁站13,长岛路东陆路13 ,进场
  4 +
  5 +tccname=<东靖路高行停车场></东靖路高行停车场>
  6 +
  7 +ttinfoname=85路0328平表
  8 +
  9 +xlname=85路
  10 +
  11 +filepath=/Users/xu/resource/project/bsth_control_etl/闵行公交/85路0328平表-测试1-时刻明细.xls
  12 +
  13 +erroroutputdir=/Users/xu/resource/project/bsth_control_u_d_files/erroroutput
  14 +
  15 +
  16 +${db_pwd}
  17 +
  18 +
  19 +
  20 +
  21 +
... ...
src/main/resources/static/pages/scheduleApp/module/core/busConfig/dataImport.html
1   -<div class="modal-header">
2   - <h3 class="modal-title">车辆配置信息excel数据导入</h3>
3   -</div>
4   -<div class="modal-body">
5   - <div class="col-md-6">
6   - <div class="input-group">
7   - <input type="file" class="form-control" nv-file-select="" uploader="ctrl.uploader"/>
8   - <span class="input-group-btn">
9   - <button type="button" ng-click="ctrl.clearInputFile()" class="btn btn-default">
10   - <span class="glyphicon glyphicon-trash"></span>
11   - </button>
12   - </span>
13   - </div>
14   - </div>
15   -
16   - <div class="table-scrollable table-scrollable-borderless">
17   - <table class="table table-hover table-light">
18   - <thead>
19   - <tr class="uppercase">
20   - <th width="50%">文件名</th>
21   - <th ng-show="ctrl.uploader.isHTML5">大小(M)</th>
22   - <th ng-show="ctrl.uploader.isHTML5">进度</th>
23   - <th>状态</th>
24   - <th>操作</th>
25   - </tr>
26   - </thead>
27   - <tbody>
28   - <tr ng-repeat="item in ctrl.uploader.queue">
29   - <td>
30   - <strong>{{ item.file.name }}</strong>
31   - </td>
32   - <td ng-show="ctrl.uploader.isHTML5" nowrap>{{ item.file.size/1024/1024|number:2 }} MB</td>
33   - <td ng-show="ctrl.uploader.isHTML5">
34   - <div class="progress progress-sm" style="margin-bottom: 0;">
35   - <div class="progress-bar progress-bar-info" role="progressbar"
36   - ng-style="{ 'width': item.progress + '%' }"></div>
37   - </div>
38   - </td>
39   - <td class="text-center">
40   - <span ng-show="item.isSuccess" class="text-success">
41   - <i class="glyphicon glyphicon-ok"></i>
42   - </span>
43   - <span ng-show="item.isCancel" class="text-info">
44   - <i class="glyphicon glyphicon-ban-circle"></i>
45   - </span>
46   - <span ng-show="item.isError" class="text-danger">
47   - <i class="glyphicon glyphicon-remove"></i>
48   - </span>
49   - </td>
50   - <td nowrap>
51   - <button type="button" class="btn btn-success btn-xs" ng-click="item.upload()"
52   - ng-disabled="item.isReady || item.isUploading || item.isSuccess">
53   - <span class="glyphicon glyphicon-upload"></span> 上传
54   - </button>
55   - <button type="button" class="btn btn-warning btn-xs" ng-click="item.cancel()"
56   - ng-disabled="!item.isUploading">
57   - <span class="glyphicon glyphicon-ban-circle"></span> 取消
58   - </button>
59   - <button type="button" class="btn btn-danger btn-xs" ng-click="item.remove()">
60   - <span class="glyphicon glyphicon-trash"></span> 删除
61   - </button>
62   - </td>
63   - </tr>
64   - </tbody>
65   - </table>
66   - </div>
67   -
68   -</div>
69   -
70   -<div class="modal-footer">
71   - <button class="btn btn-primary" ng-click="ctrl.close()">关闭</button>
  1 +<div class="modal-header">
  2 + <h3 class="modal-title">车辆配置信息excel数据导入</h3>
  3 +</div>
  4 +<div class="modal-body">
  5 + <div class="col-md-6">
  6 + <div class="input-group">
  7 + <input type="file" class="form-control" nv-file-select="" uploader="ctrl.uploader"/>
  8 + <span class="input-group-btn">
  9 + <button type="button" ng-click="ctrl.clearInputFile()" class="btn btn-default">
  10 + <span class="glyphicon glyphicon-trash"></span>
  11 + </button>
  12 + </span>
  13 + </div>
  14 + </div>
  15 +
  16 + <div class="table-scrollable table-scrollable-borderless">
  17 + <table class="table table-hover table-light">
  18 + <thead>
  19 + <tr class="uppercase">
  20 + <th width="50%">文件名</th>
  21 + <th ng-show="ctrl.uploader.isHTML5">大小(M)</th>
  22 + <th ng-show="ctrl.uploader.isHTML5">进度</th>
  23 + <th>状态</th>
  24 + <th>操作</th>
  25 + </tr>
  26 + </thead>
  27 + <tbody>
  28 + <tr ng-repeat="item in ctrl.uploader.queue">
  29 + <td>
  30 + <strong>{{ item.file.name }}</strong>
  31 + </td>
  32 + <td ng-show="ctrl.uploader.isHTML5" nowrap>{{ item.file.size/1024/1024|number:2 }} MB</td>
  33 + <td ng-show="ctrl.uploader.isHTML5">
  34 + <div class="progress progress-sm" style="margin-bottom: 0;">
  35 + <div class="progress-bar progress-bar-info" role="progressbar"
  36 + ng-style="{ 'width': item.progress + '%' }"></div>
  37 + </div>
  38 + </td>
  39 + <td class="text-center">
  40 + <span ng-show="item.isSuccess" class="text-success">
  41 + <i class="glyphicon glyphicon-ok"></i>
  42 + </span>
  43 + <span ng-show="item.isCancel" class="text-info">
  44 + <i class="glyphicon glyphicon-ban-circle"></i>
  45 + </span>
  46 + <span ng-show="item.isError" class="text-danger">
  47 + <i class="glyphicon glyphicon-remove"></i>
  48 + </span>
  49 + </td>
  50 + <td nowrap>
  51 + <button type="button" class="btn btn-success btn-xs" ng-click="item.upload()"
  52 + ng-disabled="item.isReady || item.isUploading || item.isSuccess">
  53 + <span class="glyphicon glyphicon-upload"></span> 上传
  54 + </button>
  55 + <button type="button" class="btn btn-warning btn-xs" ng-click="item.cancel()"
  56 + ng-disabled="!item.isUploading">
  57 + <span class="glyphicon glyphicon-ban-circle"></span> 取消
  58 + </button>
  59 + <button type="button" class="btn btn-danger btn-xs" ng-click="item.remove()">
  60 + <span class="glyphicon glyphicon-trash"></span> 删除
  61 + </button>
  62 + </td>
  63 + </tr>
  64 + </tbody>
  65 + </table>
  66 + </div>
  67 +
  68 +</div>
  69 +
  70 +<div class="modal-footer">
  71 + <button class="btn btn-primary" ng-click="ctrl.close()">关闭</button>
72 72 </div>
73 73 \ No newline at end of file
... ...
src/main/resources/static/pages/scheduleApp/module/core/busConfig/detail.html
1   -<h1>TODO</h1>
2 1 \ No newline at end of file
  2 +<div class="page-head">
  3 + <div class="page-title">
  4 + <h1>车辆配置管理</h1>
  5 + </div>
  6 +</div>
  7 +
  8 +<ul class="page-breadcrumb breadcrumb">
  9 + <li>
  10 + <a href="/pages/home.html" data-pjax>首页</a>
  11 + <i class="fa fa-circle"></i>
  12 + </li>
  13 + <li>
  14 + <span class="active">运营计划管理</span>
  15 + <i class="fa fa-circle"></i>
  16 + </li>
  17 + <li>
  18 + <a ui-sref="busConfig">车俩配置管理</a>
  19 + <i class="fa fa-circle"></i>
  20 + </li>
  21 + <li>
  22 + <span class="active">车辆配置详细信息</span>
  23 + </li>
  24 +</ul>
  25 +
  26 +<div class="portlet light bordered" ng-controller="BusConfigDetailCtrl as ctrl">
  27 + <div class="portlet-title">
  28 + <div class="caption">
  29 + <i class="icon-equalizer font-red-sunglo"></i> <span
  30 + class="caption-subject font-red-sunglo bold uppercase"
  31 + ng-bind="ctrl.title"></span>
  32 + </div>
  33 + </div>
  34 +
  35 + <div class="portlet-body form">
  36 + <form class="form-horizontal" novalidate name="myForm">
  37 + <!--<div class="alert alert-danger display-hide">-->
  38 + <!--<button class="close" data-close="alert"></button>-->
  39 + <!--您的输入有误,请检查下面的输入项-->
  40 + <!--</div>-->
  41 +
  42 +
  43 + <!-- 其他信息放置在这里 -->
  44 + <div class="form-body">
  45 + <div class="form-group has-success has-feedback">
  46 + <label class="col-md-2 control-label">线路*:</label>
  47 + <div class="col-md-3">
  48 + <input type="text" class="form-control"
  49 + name="xl" ng-model="ctrl.busConfigForDetail.xl.name" readonly/>
  50 + </div>
  51 + </div>
  52 +
  53 + <div class="form-group has-success has-feedback">
  54 + <label class="col-md-2 control-label">车辆*:</label>
  55 + <div class="col-md-3">
  56 + <input type="text" class="form-control" name="cl"
  57 + ng-model="ctrl.busConfigForDetail.cl.insideCode" readonly/>
  58 + </div>
  59 + </div>
  60 +
  61 + <div class="form-group">
  62 + <label class="col-md-2 control-label">启用日期*:</label>
  63 + <div class="col-md-4">
  64 + <input type="text" class="form-control"
  65 + name="qyrq" uib-datepicker-popup="yyyy年MM月dd日"
  66 + ng-model="ctrl.busConfigForDetail.qyrq" readonly/>
  67 + </div>
  68 + </div>
  69 + <div class="form-group">
  70 + <label class="col-md-2 control-label">终止日期:</label>
  71 + <div class="col-md-4">
  72 + <input type="text" class="form-control"
  73 + name="zzrq" uib-datepicker-popup="yyyy年MM月dd日"
  74 + ng-model="ctrl.busConfigForDetail.zzrq" readonly/>
  75 + </div>
  76 + </div>
  77 +
  78 + <div class="form-group">
  79 + <label class="col-md-2 control-label">停车点*:</label>
  80 + <div class="col-md-4">
  81 + <input type="text" class="form-control"
  82 + ng-model="ctrl.busConfigForDetail.tcd" readonly/>
  83 + </div>
  84 + </div>
  85 +
  86 +
  87 + <!-- 其他form-group -->
  88 +
  89 + </div>
  90 +
  91 + </form>
  92 +
  93 + </div>
  94 +</div>
3 95 \ No newline at end of file
... ...
src/main/resources/static/pages/scheduleApp/module/core/busConfig/edit.html
1   -<h1>TODO</h1>
2 1 \ No newline at end of file
  2 +<div class="page-head">
  3 + <div class="page-title">
  4 + <h1>车辆配置管理</h1>
  5 + </div>
  6 +</div>
  7 +
  8 +<ul class="page-breadcrumb breadcrumb">
  9 + <li>
  10 + <a href="/pages/home.html" data-pjax>首页</a>
  11 + <i class="fa fa-circle"></i>
  12 + </li>
  13 + <li>
  14 + <span class="active">运营计划管理</span>
  15 + <i class="fa fa-circle"></i>
  16 + </li>
  17 + <li>
  18 + <a ui-sref="busConfig">车俩配置管理</a>
  19 + <i class="fa fa-circle"></i>
  20 + </li>
  21 + <li>
  22 + <span class="active">修改车辆配置信息</span>
  23 + </li>
  24 +</ul>
  25 +
  26 +<div class="portlet light bordered" ng-controller="BusConfigFormCtrl as ctrl">
  27 + <div class="portlet-title">
  28 + <div class="caption">
  29 + <i class="icon-equalizer font-red-sunglo"></i> <span
  30 + class="caption-subject font-red-sunglo bold uppercase">表单</span>
  31 + </div>
  32 + </div>
  33 +
  34 + <div class="portlet-body form">
  35 + <form ng-submit="ctrl.submit()" class="form-horizontal" novalidate name="myForm">
  36 + <!--<div class="alert alert-danger display-hide">-->
  37 + <!--<button class="close" data-close="alert"></button>-->
  38 + <!--您的输入有误,请检查下面的输入项-->
  39 + <!--</div>-->
  40 +
  41 +
  42 + <!-- 其他信息放置在这里 -->
  43 + <div class="form-body">
  44 + <div class="form-group has-success has-feedback">
  45 + <label class="col-md-2 control-label">线路*:</label>
  46 + <div class="col-md-3">
  47 + <sa-Select2 model="ctrl.busConfigForSave"
  48 + name="xl"
  49 + required="true"
  50 + type="xl"
  51 + modelcolname1="xl_id"
  52 + datacolname1="id"
  53 + showcolname="name"
  54 + placeholder="请输拼音...">
  55 + </sa-Select2>
  56 + </div>
  57 + <!-- 隐藏块,显示验证信息 -->
  58 + <div class="alert alert-danger well-sm" ng-show="myForm.xl.$error.required">
  59 + 线路必须选择
  60 + </div>
  61 + </div>
  62 + <div class="form-group has-success has-feedback">
  63 + <label class="col-md-2 control-label">车辆*:</label>
  64 + <div class="col-md-3">
  65 + <sa-Select2 model="ctrl.busConfigForSave"
  66 + name="cl"
  67 + required="true"
  68 + type="cl"
  69 + modelcolname1="cl_id"
  70 + datacolname1="id"
  71 + showcolname="insideCode"
  72 + placeholder="请输拼音...">
  73 + </sa-Select2>
  74 + </div>
  75 + <!-- 隐藏块,显示验证信息 -->
  76 + <div class="alert alert-danger well-sm" ng-show="myForm.cl.$error.required">
  77 + 车辆必须选择
  78 + </div>
  79 + </div>
  80 +
  81 + <div class="form-group">
  82 + <label class="col-md-2 control-label">启用日期:</label>
  83 + <div class="col-md-3">
  84 + <div class="input-group">
  85 + <input type="text" class="form-control"
  86 + name="qyrq" placeholder="请选择启用日期..."
  87 + uib-datepicker-popup="yyyy年MM月dd日"
  88 + is-open="ctrl.qyrqOpen" required
  89 + ng-model="ctrl.busConfigForSave.qyrq"/>
  90 + <span class="input-group-btn">
  91 + <button type="button" class="btn btn-default" ng-click="ctrl.qyrq_open()">
  92 + <i class="glyphicon glyphicon-calendar"></i>
  93 + </button>
  94 + </span>
  95 + </div>
  96 + </div>
  97 + <!-- 隐藏块,显示验证信息 -->
  98 + <div class="alert alert-danger well-sm" ng-show="myForm.qyrq.$error.required">
  99 + 启用日期必须选择
  100 + </div>
  101 + </div>
  102 +
  103 + <div class="form-group">
  104 + <label class="col-md-2 control-label">终止日期:</label>
  105 + <div class="col-md-3">
  106 + <div class="input-group">
  107 + <input type="text" class="form-control"
  108 + name="zzrq" placeholder="请选择启用日期..."
  109 + uib-datepicker-popup="yyyy年MM月dd日"
  110 + is-open="ctrl.zzrqOpen"
  111 + ng-model="ctrl.busConfigForSave.zzrq"/>
  112 + <span class="input-group-btn">
  113 + <button type="button" class="btn btn-default" ng-click="ctrl.zzrq_open()">
  114 + <i class="glyphicon glyphicon-calendar"></i>
  115 + </button>
  116 + </span>
  117 + </div>
  118 + </div>
  119 + </div>
  120 +
  121 +
  122 + <div class="form-group">
  123 + <label class="col-md-2 control-label">停车场*:</label>
  124 + <div class="col-md-3">
  125 + <input type="text" class="form-control" name="tcd" ng-model="ctrl.busConfigForSave.tcd" required
  126 + placeholder="请输入停车场"/>
  127 + </div>
  128 + <!-- 隐藏块,显示验证信息 -->
  129 + <div class="alert alert-danger well-sm" ng-show="myForm.tcd.$error.required">
  130 + 停车场必须填写
  131 + </div>
  132 + </div>
  133 +
  134 +
  135 + <!-- 其他form-group -->
  136 +
  137 + </div>
  138 +
  139 + <!-- TODO:!myForm.$valid 在这里有点问题,改用以下方法验证 -->
  140 + <div class="form-actions">
  141 + <div class="row">
  142 + <div class="col-md-offset-3 col-md-4">
  143 + <button type="submit" class="btn green"
  144 + ng-disabled="myForm.xl.$error.required ||
  145 + myForm.cl.$error.required ||
  146 + myForm.qyrq.$error.required ||
  147 + myForm.tcd.$error.required"
  148 + ><i class="fa fa-check"></i> 提交</button>
  149 + <a type="button" class="btn default" ui-sref="busConfig" ><i class="fa fa-times"></i> 取消</a>
  150 + </div>
  151 + </div>
  152 + </div>
  153 +
  154 + </form>
  155 +
  156 + </div>
  157 +
  158 +
  159 +</div>
3 160 \ No newline at end of file
... ...
src/main/resources/static/pages/scheduleApp/module/core/busConfig/form.html
1   -<h1>TODO</h1>
2 1 \ No newline at end of file
  2 +<div class="page-head">
  3 + <div class="page-title">
  4 + <h1>车辆配置管理</h1>
  5 + </div>
  6 +</div>
  7 +
  8 +<ul class="page-breadcrumb breadcrumb">
  9 + <li>
  10 + <a href="/pages/home.html" data-pjax>首页</a>
  11 + <i class="fa fa-circle"></i>
  12 + </li>
  13 + <li>
  14 + <span class="active">运营计划管理</span>
  15 + <i class="fa fa-circle"></i>
  16 + </li>
  17 + <li>
  18 + <a ui-sref="busConfig">车俩配置管理</a>
  19 + <i class="fa fa-circle"></i>
  20 + </li>
  21 + <li>
  22 + <span class="active">添加车辆配置信息</span>
  23 + </li>
  24 +</ul>
  25 +
  26 +<div class="portlet light bordered" ng-controller="BusConfigFormCtrl as ctrl">
  27 + <div class="portlet-title">
  28 + <div class="caption">
  29 + <i class="icon-equalizer font-red-sunglo"></i> <span
  30 + class="caption-subject font-red-sunglo bold uppercase">表单</span>
  31 + </div>
  32 + </div>
  33 +
  34 + <div class="portlet-body form">
  35 + <form ng-submit="ctrl.submit()" class="form-horizontal" novalidate name="myForm">
  36 + <!--<div class="alert alert-danger display-hide">-->
  37 + <!--<button class="close" data-close="alert"></button>-->
  38 + <!--您的输入有误,请检查下面的输入项-->
  39 + <!--</div>-->
  40 +
  41 +
  42 + <!-- 其他信息放置在这里 -->
  43 + <div class="form-body">
  44 + <div class="form-group has-success has-feedback">
  45 + <label class="col-md-2 control-label">线路*:</label>
  46 + <div class="col-md-3">
  47 + <sa-Select2 model="ctrl.busConfigForSave"
  48 + name="xl"
  49 + required="true"
  50 + type="xl"
  51 + modelcolname1="xl_id"
  52 + datacolname1="id"
  53 + showcolname="name"
  54 + placeholder="请输拼音...">
  55 + </sa-Select2>
  56 + </div>
  57 + <!-- 隐藏块,显示验证信息 -->
  58 + <div class="alert alert-danger well-sm" ng-show="myForm.xl.$error.required">
  59 + 线路必须选择
  60 + </div>
  61 + </div>
  62 + <div class="form-group has-success has-feedback">
  63 + <label class="col-md-2 control-label">车辆*:</label>
  64 + <div class="col-md-3">
  65 + <sa-Select2 model="ctrl.busConfigForSave"
  66 + name="cl"
  67 + required="true"
  68 + type="cl"
  69 + modelcolname1="cl_id"
  70 + datacolname1="id"
  71 + showcolname="insideCode"
  72 + placeholder="请输拼音...">
  73 + </sa-Select2>
  74 + </div>
  75 + <!-- 隐藏块,显示验证信息 -->
  76 + <div class="alert alert-danger well-sm" ng-show="myForm.cl.$error.required">
  77 + 车辆必须选择
  78 + </div>
  79 + </div>
  80 +
  81 + <div class="form-group">
  82 + <label class="col-md-2 control-label">启用日期:</label>
  83 + <div class="col-md-3">
  84 + <div class="input-group">
  85 + <input type="text" class="form-control"
  86 + name="qyrq" placeholder="请选择启用日期..."
  87 + uib-datepicker-popup="yyyy年MM月dd日"
  88 + is-open="ctrl.qyrqOpen" required
  89 + ng-model="ctrl.busConfigForSave.qyrq"/>
  90 + <span class="input-group-btn">
  91 + <button type="button" class="btn btn-default" ng-click="ctrl.qyrq_open()">
  92 + <i class="glyphicon glyphicon-calendar"></i>
  93 + </button>
  94 + </span>
  95 + </div>
  96 + </div>
  97 + <!-- 隐藏块,显示验证信息 -->
  98 + <div class="alert alert-danger well-sm" ng-show="myForm.qyrq.$error.required">
  99 + 启用日期必须选择
  100 + </div>
  101 + </div>
  102 +
  103 + <div class="form-group">
  104 + <label class="col-md-2 control-label">终止日期:</label>
  105 + <div class="col-md-3">
  106 + <div class="input-group">
  107 + <input type="text" class="form-control"
  108 + name="zzrq" placeholder="请选择启用日期..."
  109 + uib-datepicker-popup="yyyy年MM月dd日"
  110 + is-open="ctrl.zzrqOpen"
  111 + ng-model="ctrl.busConfigForSave.zzrq"/>
  112 + <span class="input-group-btn">
  113 + <button type="button" class="btn btn-default" ng-click="ctrl.zzrq_open()">
  114 + <i class="glyphicon glyphicon-calendar"></i>
  115 + </button>
  116 + </span>
  117 + </div>
  118 + </div>
  119 + </div>
  120 +
  121 +
  122 + <div class="form-group">
  123 + <label class="col-md-2 control-label">停车场*:</label>
  124 + <div class="col-md-3">
  125 + <input type="text" class="form-control" name="tcd" ng-model="ctrl.busConfigForSave.tcd" required
  126 + placeholder="请输入停车场"/>
  127 + </div>
  128 + <!-- 隐藏块,显示验证信息 -->
  129 + <div class="alert alert-danger well-sm" ng-show="myForm.tcd.$error.required">
  130 + 停车场必须填写
  131 + </div>
  132 + </div>
  133 +
  134 +
  135 + <!-- 其他form-group -->
  136 +
  137 + </div>
  138 +
  139 + <!-- TODO:!myForm.$valid 在这里有点问题,改用以下方法验证 -->
  140 + <div class="form-actions">
  141 + <div class="row">
  142 + <div class="col-md-offset-3 col-md-4">
  143 + <button type="submit" class="btn green"
  144 + ng-disabled="myForm.xl.$error.required ||
  145 + myForm.cl.$error.required ||
  146 + myForm.qyrq.$error.required ||
  147 + myForm.tcd.$error.required"
  148 + ><i class="fa fa-check"></i> 提交</button>
  149 + <a type="button" class="btn default" ui-sref="busConfig" ><i class="fa fa-times"></i> 取消</a>
  150 + </div>
  151 + </div>
  152 + </div>
  153 +
  154 + </form>
  155 +
  156 + </div>
  157 +
  158 +
  159 +</div>
3 160 \ No newline at end of file
... ...
src/main/resources/static/pages/scheduleApp/module/core/busConfig/list.html
... ... @@ -9,25 +9,31 @@
9 9 <th>序号</th>
10 10 <th>线路</th>
11 11 <th>内部编号</th>
12   - <th>设备编码</th>
13 12 <th>启用日期</th>
14 13 <th>终止日期</th>
15 14 <th>停车点</th>
16   - <th>是否切换</th>
17 15 <th width="14%">操作</th>
18 16 </tr>
19 17 <tr role="row" class="filter">
20 18 <td></td>
21 19 <td></td>
22   - <td></td>
23   - <td></td>
  20 + <td>
  21 + <div style="width: 150px">
  22 + <sa-Select2 model="ctrl.searchCondition()"
  23 + type="xl"
  24 + modelcolname1="xl.lineCode_eq"
  25 + datacolname1="lineCode"
  26 + showcolname="name"
  27 + placeholder="请输拼音...">
  28 + </sa-Select2>
  29 + </div>
  30 + </td>
24 31 <td></td>
25 32 <td></td>
26 33 <td></td>
27 34 <td>
28 35 <input type="text" class="form-control form-filter input-sm" ng-model="ctrl.searchCondition().tcd_like"/>
29 36 </td>
30   - <td></td>
31 37 <td>
32 38 <button class="btn btn-sm green btn-outline filter-submit margin-bottom"
33 39 ng-click="ctrl.pageChanaged()">
... ... @@ -56,9 +62,6 @@
56 62 <span ng-bind="info.cl.insideCode"></span>
57 63 </td>
58 64 <td>
59   - <span ng-bind="info.cl.equipmentCode"></span>
60   - </td>
61   - <td>
62 65 <span ng-bind="info.qyrq | date: 'yyyy-MM-dd HH:mm:ss'"></span>
63 66 </td>
64 67 <td>
... ... @@ -68,9 +71,6 @@
68 71 <span ng-bind="info.tcd"></span>
69 72 </td>
70 73 <td>
71   - <span ng-bind="info.isSwitch"></span>
72   - </td>
73   - <td>
74 74 <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>-->
75 75 <!--<a href="edit.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 修改 </a>-->
76 76 <a ui-sref="busConfig_detail({id: info.id})" class="btn default blue-stripe btn-sm"> 详细 </a>
... ...
src/main/resources/static/pages/scheduleApp/module/core/employeeConfig/dataImport.html
1   -<div class="modal-header">
2   - <h3 class="modal-title">人员配置信息excel数据导入</h3>
3   -</div>
4   -<div class="modal-body">
5   - <div class="col-md-6">
6   - <div class="input-group">
7   - <input type="file" class="form-control" nv-file-select="" uploader="ctrl.uploader"/>
8   - <span class="input-group-btn">
9   - <button type="button" ng-click="ctrl.clearInputFile()" class="btn btn-default">
10   - <span class="glyphicon glyphicon-trash"></span>
11   - </button>
12   - </span>
13   - </div>
14   - </div>
15   -
16   - <div class="table-scrollable table-scrollable-borderless">
17   - <table class="table table-hover table-light">
18   - <thead>
19   - <tr class="uppercase">
20   - <th width="50%">文件名</th>
21   - <th ng-show="ctrl.uploader.isHTML5">大小(M)</th>
22   - <th ng-show="ctrl.uploader.isHTML5">进度</th>
23   - <th>状态</th>
24   - <th>操作</th>
25   - </tr>
26   - </thead>
27   - <tbody>
28   - <tr ng-repeat="item in ctrl.uploader.queue">
29   - <td>
30   - <strong>{{ item.file.name }}</strong>
31   - </td>
32   - <td ng-show="ctrl.uploader.isHTML5" nowrap>{{ item.file.size/1024/1024|number:2 }} MB</td>
33   - <td ng-show="ctrl.uploader.isHTML5">
34   - <div class="progress progress-sm" style="margin-bottom: 0;">
35   - <div class="progress-bar progress-bar-info" role="progressbar"
36   - ng-style="{ 'width': item.progress + '%' }"></div>
37   - </div>
38   - </td>
39   - <td class="text-center">
40   - <span ng-show="item.isSuccess" class="text-success">
41   - <i class="glyphicon glyphicon-ok"></i>
42   - </span>
43   - <span ng-show="item.isCancel" class="text-info">
44   - <i class="glyphicon glyphicon-ban-circle"></i>
45   - </span>
46   - <span ng-show="item.isError" class="text-danger">
47   - <i class="glyphicon glyphicon-remove"></i>
48   - </span>
49   - </td>
50   - <td nowrap>
51   - <button type="button" class="btn btn-success btn-xs" ng-click="item.upload()"
52   - ng-disabled="item.isReady || item.isUploading || item.isSuccess">
53   - <span class="glyphicon glyphicon-upload"></span> 上传
54   - </button>
55   - <button type="button" class="btn btn-warning btn-xs" ng-click="item.cancel()"
56   - ng-disabled="!item.isUploading">
57   - <span class="glyphicon glyphicon-ban-circle"></span> 取消
58   - </button>
59   - <button type="button" class="btn btn-danger btn-xs" ng-click="item.remove()">
60   - <span class="glyphicon glyphicon-trash"></span> 删除
61   - </button>
62   - </td>
63   - </tr>
64   - </tbody>
65   - </table>
66   - </div>
67   -
68   -</div>
69   -
70   -<div class="modal-footer">
71   - <button class="btn btn-primary" ng-click="ctrl.close()">关闭</button>
  1 +<div class="modal-header">
  2 + <h3 class="modal-title">人员配置信息excel数据导入</h3>
  3 +</div>
  4 +<div class="modal-body">
  5 + <div class="col-md-6">
  6 + <div class="input-group">
  7 + <input type="file" class="form-control" nv-file-select="" uploader="ctrl.uploader"/>
  8 + <span class="input-group-btn">
  9 + <button type="button" ng-click="ctrl.clearInputFile()" class="btn btn-default">
  10 + <span class="glyphicon glyphicon-trash"></span>
  11 + </button>
  12 + </span>
  13 + </div>
  14 + </div>
  15 +
  16 + <div class="table-scrollable table-scrollable-borderless">
  17 + <table class="table table-hover table-light">
  18 + <thead>
  19 + <tr class="uppercase">
  20 + <th width="50%">文件名</th>
  21 + <th ng-show="ctrl.uploader.isHTML5">大小(M)</th>
  22 + <th ng-show="ctrl.uploader.isHTML5">进度</th>
  23 + <th>状态</th>
  24 + <th>操作</th>
  25 + </tr>
  26 + </thead>
  27 + <tbody>
  28 + <tr ng-repeat="item in ctrl.uploader.queue">
  29 + <td>
  30 + <strong>{{ item.file.name }}</strong>
  31 + </td>
  32 + <td ng-show="ctrl.uploader.isHTML5" nowrap>{{ item.file.size/1024/1024|number:2 }} MB</td>
  33 + <td ng-show="ctrl.uploader.isHTML5">
  34 + <div class="progress progress-sm" style="margin-bottom: 0;">
  35 + <div class="progress-bar progress-bar-info" role="progressbar"
  36 + ng-style="{ 'width': item.progress + '%' }"></div>
  37 + </div>
  38 + </td>
  39 + <td class="text-center">
  40 + <span ng-show="item.isSuccess" class="text-success">
  41 + <i class="glyphicon glyphicon-ok"></i>
  42 + </span>
  43 + <span ng-show="item.isCancel" class="text-info">
  44 + <i class="glyphicon glyphicon-ban-circle"></i>
  45 + </span>
  46 + <span ng-show="item.isError" class="text-danger">
  47 + <i class="glyphicon glyphicon-remove"></i>
  48 + </span>
  49 + </td>
  50 + <td nowrap>
  51 + <button type="button" class="btn btn-success btn-xs" ng-click="item.upload()"
  52 + ng-disabled="item.isReady || item.isUploading || item.isSuccess">
  53 + <span class="glyphicon glyphicon-upload"></span> 上传
  54 + </button>
  55 + <button type="button" class="btn btn-warning btn-xs" ng-click="item.cancel()"
  56 + ng-disabled="!item.isUploading">
  57 + <span class="glyphicon glyphicon-ban-circle"></span> 取消
  58 + </button>
  59 + <button type="button" class="btn btn-danger btn-xs" ng-click="item.remove()">
  60 + <span class="glyphicon glyphicon-trash"></span> 删除
  61 + </button>
  62 + </td>
  63 + </tr>
  64 + </tbody>
  65 + </table>
  66 + </div>
  67 +
  68 +</div>
  69 +
  70 +<div class="modal-footer">
  71 + <button class="btn btn-primary" ng-click="ctrl.close()">关闭</button>
72 72 </div>
73 73 \ No newline at end of file
... ...
src/main/resources/static/pages/scheduleApp/module/core/employeeConfig/detail.html
1   -<h1>TODO</h1>
2 1 \ No newline at end of file
  2 +<div class="page-head">
  3 + <div class="page-title">
  4 + <h1>人员配置管理</h1>
  5 + </div>
  6 +</div>
  7 +
  8 +<ul class="page-breadcrumb breadcrumb">
  9 + <li>
  10 + <a href="/pages/home.html" data-pjax>首页</a>
  11 + <i class="fa fa-circle"></i>
  12 + </li>
  13 + <li>
  14 + <span class="active">运营计划管理</span>
  15 + <i class="fa fa-circle"></i>
  16 + </li>
  17 + <li>
  18 + <a ui-sref="employeeConfig">人员配置管理</a>
  19 + <i class="fa fa-circle"></i>
  20 + </li>
  21 + <li>
  22 + <span class="active">人员配置详细信息</span>
  23 + </li>
  24 +</ul>
  25 +
  26 +<div class="portlet light bordered" ng-controller="EmployeeConfigDetailCtrl as ctrl">
  27 + <div class="portlet-title">
  28 + <div class="caption">
  29 + <i class="icon-equalizer font-red-sunglo"></i> <span
  30 + class="caption-subject font-red-sunglo bold uppercase"
  31 + ng-bind="ctrl.title"></span>
  32 + </div>
  33 + </div>
  34 +
  35 + <div class="portlet-body form">
  36 + <form class="form-horizontal" novalidate name="myForm">
  37 + <!--<div class="alert alert-danger display-hide">-->
  38 + <!--<button class="close" data-close="alert"></button>-->
  39 + <!--您的输入有误,请检查下面的输入项-->
  40 + <!--</div>-->
  41 +
  42 +
  43 + <!-- 其他信息放置在这里 -->
  44 + <div class="form-body">
  45 + <div class="form-group has-success has-feedback">
  46 + <label class="col-md-2 control-label">线路*:</label>
  47 + <div class="col-md-3">
  48 + <input type="text" class="form-control"
  49 + name="xl" ng-model="ctrl.employeeConfigForDetail.xl.name" readonly/>
  50 + </div>
  51 + </div>
  52 + <div class="form-group has-success has-feedback">
  53 + <label class="col-md-2 control-label">搭班编码*:</label>
  54 + <div class="col-md-3">
  55 + <input type="text" class="form-control"
  56 + name="dbbm" ng-model="ctrl.employeeConfigForDetail.dbbm" readonly/>
  57 + </div>
  58 + </div>
  59 +
  60 + <div class="form-group has-success has-feedback">
  61 + <label class="col-md-2 control-label">驾驶员姓名*:</label>
  62 + <div class="col-md-3">
  63 + <input type="text" class="form-control" name="jsy_name"
  64 + ng-model="ctrl.employeeConfigForDetail.jsy.personnelName" readonly/>
  65 + </div>
  66 + </div>
  67 +
  68 + <div class="form-group has-success has-feedback">
  69 + <label class="col-md-2 control-label">驾驶员工号*:</label>
  70 + <div class="col-md-3">
  71 + <input type="text" class="form-control" name="jsy_code"
  72 + ng-model="ctrl.employeeConfigForDetail.jsy.jobCode" readonly/>
  73 + </div>
  74 + </div>
  75 +
  76 + <div class="form-group has-success has-feedback">
  77 + <label class="col-md-2 control-label">售票员姓名:</label>
  78 + <div class="col-md-3">
  79 + <input type="text" class="form-control" name="spy_name"
  80 + ng-model="ctrl.employeeConfigForDetail.spy.personnelName" readonly/>
  81 + </div>
  82 + </div>
  83 +
  84 + <div class="form-group has-success has-feedback">
  85 + <label class="col-md-2 control-label">售票员工号:</label>
  86 + <div class="col-md-3">
  87 + <input type="text" class="form-control" name="spy_code"
  88 + ng-model="ctrl.employeeConfigForDetail.spy.jobCode" readonly/>
  89 + </div>
  90 + </div>
  91 +
  92 +
  93 + <!-- 其他form-group -->
  94 +
  95 + </div>
  96 +
  97 + </form>
  98 +
  99 + </div>
  100 +</div>
3 101 \ No newline at end of file
... ...
src/main/resources/static/pages/scheduleApp/module/core/employeeConfig/edit.html
1   -<h1>TODO</h1>
2 1 \ No newline at end of file
  2 +<div class="page-head">
  3 + <div class="page-title">
  4 + <h1>人员配置管理</h1>
  5 + </div>
  6 +</div>
  7 +
  8 +<ul class="page-breadcrumb breadcrumb">
  9 + <li>
  10 + <a href="/pages/home.html" data-pjax>首页</a>
  11 + <i class="fa fa-circle"></i>
  12 + </li>
  13 + <li>
  14 + <span class="active">运营计划管理</span>
  15 + <i class="fa fa-circle"></i>
  16 + </li>
  17 + <li>
  18 + <a ui-sref="employeeConfig">人员配置管理</a>
  19 + <i class="fa fa-circle"></i>
  20 + </li>
  21 + <li>
  22 + <span class="active">修改人员配置信息</span>
  23 + </li>
  24 +</ul>
  25 +
  26 +<div class="portlet light bordered" ng-controller="EmployeeConfigFormCtrl as ctrl">
  27 + <div class="portlet-title">
  28 + <div class="caption">
  29 + <i class="icon-equalizer font-red-sunglo"></i> <span
  30 + class="caption-subject font-red-sunglo bold uppercase">表单</span>
  31 + </div>
  32 + </div>
  33 +
  34 + <div class="portlet-body form">
  35 + <form ng-submit="ctrl.submit()" class="form-horizontal" novalidate name="myForm">
  36 + <!--<div class="alert alert-danger display-hide">-->
  37 + <!--<button class="close" data-close="alert"></button>-->
  38 + <!--您的输入有误,请检查下面的输入项-->
  39 + <!--</div>-->
  40 +
  41 +
  42 + <!-- 其他信息放置在这里 -->
  43 + <div class="form-body">
  44 + <div class="form-group has-success has-feedback">
  45 + <label class="col-md-2 control-label">线路*:</label>
  46 + <div class="col-md-3">
  47 + <sa-Select2 model="ctrl.employeeConfigForSave"
  48 + name="xl"
  49 + required="true"
  50 + type="xl"
  51 + modelcolname1="xl_id"
  52 + datacolname1="id"
  53 + showcolname="name"
  54 + placeholder="请输拼音...">
  55 + </sa-Select2>
  56 + </div>
  57 + <!-- 隐藏块,显示验证信息 -->
  58 + <div class="alert alert-danger well-sm" ng-show="myForm.xl.$error.required">
  59 + 线路必须选择
  60 + </div>
  61 + </div>
  62 +
  63 + <div class="form-group">
  64 + <label class="col-md-2 control-label">搭班编码*:</label>
  65 + <div class="col-md-3">
  66 + <input type="text" class="form-control" name="dbbm" ng-model="ctrl.employeeConfigForSave.dbbm" required
  67 + placeholder="请输入搭班编码"/>
  68 + </div>
  69 + <!-- 隐藏块,显示验证信息 -->
  70 + <div class="alert alert-danger well-sm" ng-show="myForm.dbbm.$error.required">
  71 + 搭班编码必须填写
  72 + </div>
  73 + </div>
  74 +
  75 + <div class="form-group has-success has-feedback">
  76 + <label class="col-md-2 control-label">驾驶员*:</label>
  77 + <div class="col-md-3">
  78 + <sa-Select2 model="ctrl.employeeConfigForSave"
  79 + name="jsy"
  80 + required="true"
  81 + type="ry"
  82 + modelcolname1="jsy_id"
  83 + datacolname1="id"
  84 + showcolname="personnelName"
  85 + placeholder="请输拼音...">
  86 + </sa-Select2>
  87 + </div>
  88 + <!-- 隐藏块,显示验证信息 -->
  89 + <div class="alert alert-danger well-sm" ng-show="myForm.jsy.$error.required">
  90 + 驾驶员必须选择
  91 + </div>
  92 + </div>
  93 +
  94 + <div class="form-group has-success has-feedback">
  95 + <label class="col-md-2 control-label">售票员*:</label>
  96 + <div class="col-md-3">
  97 + <sa-Select2 model="ctrl.employeeConfigForSave"
  98 + name="spy"
  99 + type="ry"
  100 + modelcolname1="spy_id"
  101 + datacolname1="id"
  102 + showcolname="personnelName"
  103 + placeholder="请输拼音...">
  104 + </sa-Select2>
  105 + </div>
  106 + </div>
  107 +
  108 + <!-- 其他form-group -->
  109 +
  110 + </div>
  111 +
  112 + <!-- TODO:!myForm.$valid 在这里有点问题,改用以下方法验证 -->
  113 + <div class="form-actions">
  114 + <div class="row">
  115 + <div class="col-md-offset-3 col-md-4">
  116 + <button type="submit" class="btn green"
  117 + ng-disabled="myForm.xl.$error.required ||
  118 + myForm.dbbm.$error.required ||
  119 + myForm.jsy.$error.required ||
  120 + myForm.spy.$error.required"
  121 + ><i class="fa fa-check"></i> 提交</button>
  122 + <a type="button" class="btn default" ui-sref="employeeConfig" ><i class="fa fa-times"></i> 取消</a>
  123 + </div>
  124 + </div>
  125 + </div>
  126 +
  127 + </form>
  128 +
  129 + </div>
  130 +
  131 +
  132 +</div>
3 133 \ No newline at end of file
... ...
src/main/resources/static/pages/scheduleApp/module/core/employeeConfig/employeeConfig.js
... ... @@ -39,7 +39,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;EmployeeConfigService&#39;, [&#39;EmployeeConfigS
39 39 getPage: function() {
40 40 var params = currentSearchCondition; // 查询条件
41 41 params.page = currentPageNo - 1; // 服务端页码从0开始
42   - return service.list(params).$promise;
  42 + return service.rest.list(params).$promise;
43 43 },
44 44 /**
45 45 * 获取明细信息。
... ... @@ -48,7 +48,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;EmployeeConfigService&#39;, [&#39;EmployeeConfigS
48 48 */
49 49 getDetail: function(id) {
50 50 var params = {id: id};
51   - return service.get(params).$promise;
  51 + return service.rest.get(params).$promise;
52 52 },
53 53 /**
54 54 * 保存信息。
... ... @@ -56,7 +56,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;EmployeeConfigService&#39;, [&#39;EmployeeConfigS
56 56 * @return 返回一个 promise
57 57 */
58 58 saveDetail: function(obj) {
59   - return service.save(obj).$promise;
  59 + return service.rest.save(obj).$promise;
60 60 }
61 61 };
62 62 }]);
... ... @@ -184,10 +184,88 @@ angular.module(&#39;ScheduleApp&#39;).controller(&#39;EmployeeConfigListCtrl&#39;, [&#39;EmployeeCon
184 184 }]);
185 185  
186 186 angular.module('ScheduleApp').controller('EmployeeConfigFormCtrl', ['EmployeeConfigService', '$stateParams', '$state', function(employeeConfigService, $stateParams, $state) {
187   - // TODO:
  187 + var self = this;
  188 +
  189 + // 欲保存的busInfo信息,绑定
  190 + self.employeeConfigForSave = {};
  191 +
  192 + // 获取传过来的id,有的话就是修改,获取一遍数据
  193 + var id = $stateParams.id;
  194 + if (id) {
  195 + self.employeeConfigForSave.id = id;
  196 + employeeConfigService.getDetail(id).then(
  197 + function(result) {
  198 + var key;
  199 + for (key in result) {
  200 + self.employeeConfigForSave[key] = result[key];
  201 + }
  202 +
  203 + // 添加xl_id,jsy_id,spy_id
  204 + self.employeeConfigForSave["xl_id"] = self.employeeConfigForSave.xl.id;
  205 + self.employeeConfigForSave["jsy_id"] = self.employeeConfigForSave.jsy.id;
  206 + self.employeeConfigForSave["spy_id"] =
  207 + self.employeeConfigForSave.spy || self.employeeConfigForSave.spy.id;
  208 +
  209 + },
  210 + function(result) {
  211 + alert("出错啦!");
  212 + }
  213 + );
  214 + }
  215 +
  216 + // 提交方法
  217 + self.submit = function() {
  218 + console.log(self.employeeConfigForSave);
  219 +
  220 + // jsy_id,cl_id要组织成对象,然后删除
  221 + self.employeeConfigForSave["xl"] = {};
  222 + self.employeeConfigForSave.xl["id"] = self.employeeConfigForSave["xl_id"];
  223 + delete self.employeeConfigForSave["xl_id"];
  224 + self.employeeConfigForSave["jsy"] = {};
  225 + self.employeeConfigForSave.jsy["id"] = self.employeeConfigForSave["jsy_id"];
  226 + delete self.employeeConfigForSave["jsy_id"];
  227 + self.employeeConfigForSave["spy"] = {};
  228 + self.employeeConfigForSave.spy["id"] = self.employeeConfigForSave["spy_id"];
  229 + delete self.employeeConfigForSave["spy_id"];
  230 +
  231 + employeeConfigService.saveDetail(self.employeeConfigForSave).then(
  232 + function(result) {
  233 + // TODO:弹出框方式以后改
  234 + if (result.status == 'SUCCESS') {
  235 + alert("保存成功!");
  236 + $state.go("employeeConfig");
  237 + } else {
  238 + alert("保存异常!");
  239 + }
  240 + },
  241 + function(result) {
  242 + // TODO:弹出框方式以后改
  243 + alert("出错啦!");
  244 + }
  245 + );
  246 + };
188 247 }]);
189 248  
190 249 angular.module('ScheduleApp').controller('EmployeeConfigDetailCtrl', ['EmployeeConfigService', '$stateParams', function(employeeConfigService, $stateParams) {
191   - // TODO:
  250 + var self = this;
  251 + self.title = "";
  252 + self.employeeConfigForDetail = {};
  253 + self.employeeConfigForDetail.id = $stateParams.id;
  254 +
  255 + // 当转向到此页面时,就获取明细信息并绑定
  256 + employeeConfigService.getDetail($stateParams.id).then(
  257 + function(result) {
  258 + var key;
  259 + for (key in result) {
  260 + self.employeeConfigForDetail[key] = result[key];
  261 + }
  262 +
  263 + self.title = "驾驶员 " + self.employeeConfigForDetail.jsy.personnelName + " 配置详细信息";
  264 + },
  265 + function(result) {
  266 + // TODO:弹出框方式以后改
  267 + alert("出错啦!");
  268 + }
  269 + );
192 270 }]);
193 271  
... ...
src/main/resources/static/pages/scheduleApp/module/core/employeeConfig/form.html
1   -<h1>TODO</h1>
2 1 \ No newline at end of file
  2 +<div class="page-head">
  3 + <div class="page-title">
  4 + <h1>人员配置管理</h1>
  5 + </div>
  6 +</div>
  7 +
  8 +<ul class="page-breadcrumb breadcrumb">
  9 + <li>
  10 + <a href="/pages/home.html" data-pjax>首页</a>
  11 + <i class="fa fa-circle"></i>
  12 + </li>
  13 + <li>
  14 + <span class="active">运营计划管理</span>
  15 + <i class="fa fa-circle"></i>
  16 + </li>
  17 + <li>
  18 + <a ui-sref="employeeConfig">人员配置管理</a>
  19 + <i class="fa fa-circle"></i>
  20 + </li>
  21 + <li>
  22 + <span class="active">添加人员配置信息</span>
  23 + </li>
  24 +</ul>
  25 +
  26 +<div class="portlet light bordered" ng-controller="EmployeeConfigFormCtrl as ctrl">
  27 + <div class="portlet-title">
  28 + <div class="caption">
  29 + <i class="icon-equalizer font-red-sunglo"></i> <span
  30 + class="caption-subject font-red-sunglo bold uppercase">表单</span>
  31 + </div>
  32 + </div>
  33 +
  34 + <div class="portlet-body form">
  35 + <form ng-submit="ctrl.submit()" class="form-horizontal" novalidate name="myForm">
  36 + <!--<div class="alert alert-danger display-hide">-->
  37 + <!--<button class="close" data-close="alert"></button>-->
  38 + <!--您的输入有误,请检查下面的输入项-->
  39 + <!--</div>-->
  40 +
  41 +
  42 + <!-- 其他信息放置在这里 -->
  43 + <div class="form-body">
  44 + <div class="form-group has-success has-feedback">
  45 + <label class="col-md-2 control-label">线路*:</label>
  46 + <div class="col-md-3">
  47 + <sa-Select2 model="ctrl.employeeConfigForSave"
  48 + name="xl"
  49 + required="true"
  50 + type="xl"
  51 + modelcolname1="xl_id"
  52 + datacolname1="id"
  53 + showcolname="name"
  54 + placeholder="请输拼音...">
  55 + </sa-Select2>
  56 + </div>
  57 + <!-- 隐藏块,显示验证信息 -->
  58 + <div class="alert alert-danger well-sm" ng-show="myForm.xl.$error.required">
  59 + 线路必须选择
  60 + </div>
  61 + </div>
  62 +
  63 + <div class="form-group">
  64 + <label class="col-md-2 control-label">搭班编码*:</label>
  65 + <div class="col-md-3">
  66 + <input type="text" class="form-control" name="dbbm" ng-model="ctrl.employeeConfigForSave.dbbm" required
  67 + placeholder="请输入搭班编码"/>
  68 + </div>
  69 + <!-- 隐藏块,显示验证信息 -->
  70 + <div class="alert alert-danger well-sm" ng-show="myForm.dbbm.$error.required">
  71 + 搭班编码必须填写
  72 + </div>
  73 + </div>
  74 +
  75 + <div class="form-group has-success has-feedback">
  76 + <label class="col-md-2 control-label">驾驶员*:</label>
  77 + <div class="col-md-3">
  78 + <sa-Select2 model="ctrl.employeeConfigForSave"
  79 + name="jsy"
  80 + required="true"
  81 + type="ry"
  82 + modelcolname1="jsy_id"
  83 + datacolname1="id"
  84 + showcolname="personnelName"
  85 + placeholder="请输拼音...">
  86 + </sa-Select2>
  87 + </div>
  88 + <!-- 隐藏块,显示验证信息 -->
  89 + <div class="alert alert-danger well-sm" ng-show="myForm.jsy.$error.required">
  90 + 驾驶员必须选择
  91 + </div>
  92 + </div>
  93 +
  94 + <div class="form-group has-success has-feedback">
  95 + <label class="col-md-2 control-label">售票员*:</label>
  96 + <div class="col-md-3">
  97 + <sa-Select2 model="ctrl.employeeConfigForSave"
  98 + name="spy"
  99 + type="ry"
  100 + modelcolname1="spy_id"
  101 + datacolname1="id"
  102 + showcolname="personnelName"
  103 + placeholder="请输拼音...">
  104 + </sa-Select2>
  105 + </div>
  106 + </div>
  107 +
  108 + <!-- 其他form-group -->
  109 +
  110 + </div>
  111 +
  112 + <!-- TODO:!myForm.$valid 在这里有点问题,改用以下方法验证 -->
  113 + <div class="form-actions">
  114 + <div class="row">
  115 + <div class="col-md-offset-3 col-md-4">
  116 + <button type="submit" class="btn green"
  117 + ng-disabled="myForm.xl.$error.required ||
  118 + myForm.dbbm.$error.required ||
  119 + myForm.jsy.$error.required ||
  120 + myForm.spy.$error.required"
  121 + ><i class="fa fa-check"></i> 提交</button>
  122 + <a type="button" class="btn default" ui-sref="employeeConfig" ><i class="fa fa-times"></i> 取消</a>
  123 + </div>
  124 + </div>
  125 + </div>
  126 +
  127 + </form>
  128 +
  129 + </div>
  130 +
  131 +
  132 +</div>
3 133 \ No newline at end of file
... ...
src/main/resources/static/pages/scheduleApp/module/core/employeeConfig/list.html
... ... @@ -18,10 +18,30 @@
18 18 <tr role="row" class="filter">
19 19 <td></td>
20 20 <td></td>
  21 + <td>
  22 + <div style="width: 150px">
  23 + <sa-Select2 model="ctrl.searchCondition()"
  24 + type="xl"
  25 + modelcolname1="xl.lineCode_eq"
  26 + datacolname1="lineCode"
  27 + showcolname="name"
  28 + placeholder="请输拼音...">
  29 + </sa-Select2>
  30 + </div>
  31 + </td>
21 32 <td></td>
22 33 <td></td>
23   - <td></td>
24   - <td></td>
  34 + <td>
  35 + <div style="width: 180px">
  36 + <sa-Select2 model="ctrl.searchCondition()"
  37 + type="ry"
  38 + modelcolname1="jsy.id_eq"
  39 + datacolname1="id"
  40 + showcolname="personnelName"
  41 + placeholder="请输拼音...">
  42 + </sa-Select2>
  43 + </div>
  44 + </td>
25 45 <td></td>
26 46 <td></td>
27 47 <td>
... ...
src/main/resources/static/pages/scheduleApp/module/core/guideboardManage/dataImport.html
1   -<div class="modal-header">
2   - <h3 class="modal-title">路牌信息excel数据导入</h3>
3   -</div>
4   -<div class="modal-body">
5   - <div class="col-md-6">
6   - <div class="input-group">
7   - <input type="file" class="form-control" nv-file-select="" uploader="ctrl.uploader"/>
8   - <span class="input-group-btn">
9   - <button type="button" ng-click="ctrl.clearInputFile()" class="btn btn-default">
10   - <span class="glyphicon glyphicon-trash"></span>
11   - </button>
12   - </span>
13   - </div>
14   - </div>
15   -
16   - <div class="table-scrollable table-scrollable-borderless">
17   - <table class="table table-hover table-light">
18   - <thead>
19   - <tr class="uppercase">
20   - <th width="50%">文件名</th>
21   - <th ng-show="ctrl.uploader.isHTML5">大小(M)</th>
22   - <th ng-show="ctrl.uploader.isHTML5">进度</th>
23   - <th>状态</th>
24   - <th>操作</th>
25   - </tr>
26   - </thead>
27   - <tbody>
28   - <tr ng-repeat="item in ctrl.uploader.queue">
29   - <td>
30   - <strong>{{ item.file.name }}</strong>
31   - </td>
32   - <td ng-show="ctrl.uploader.isHTML5" nowrap>{{ item.file.size/1024/1024|number:2 }} MB</td>
33   - <td ng-show="ctrl.uploader.isHTML5">
34   - <div class="progress progress-sm" style="margin-bottom: 0;">
35   - <div class="progress-bar progress-bar-info" role="progressbar"
36   - ng-style="{ 'width': item.progress + '%' }"></div>
37   - </div>
38   - </td>
39   - <td class="text-center">
40   - <span ng-show="item.isSuccess" class="text-success">
41   - <i class="glyphicon glyphicon-ok"></i>
42   - </span>
43   - <span ng-show="item.isCancel" class="text-info">
44   - <i class="glyphicon glyphicon-ban-circle"></i>
45   - </span>
46   - <span ng-show="item.isError" class="text-danger">
47   - <i class="glyphicon glyphicon-remove"></i>
48   - </span>
49   - </td>
50   - <td nowrap>
51   - <button type="button" class="btn btn-success btn-xs" ng-click="item.upload()"
52   - ng-disabled="item.isReady || item.isUploading || item.isSuccess">
53   - <span class="glyphicon glyphicon-upload"></span> 上传
54   - </button>
55   - <button type="button" class="btn btn-warning btn-xs" ng-click="item.cancel()"
56   - ng-disabled="!item.isUploading">
57   - <span class="glyphicon glyphicon-ban-circle"></span> 取消
58   - </button>
59   - <button type="button" class="btn btn-danger btn-xs" ng-click="item.remove()">
60   - <span class="glyphicon glyphicon-trash"></span> 删除
61   - </button>
62   - </td>
63   - </tr>
64   - </tbody>
65   - </table>
66   - </div>
67   -
68   -</div>
69   -
70   -<div class="modal-footer">
71   - <button class="btn btn-primary" ng-click="ctrl.close()">关闭</button>
  1 +<div class="modal-header">
  2 + <h3 class="modal-title">路牌信息excel数据导入</h3>
  3 +</div>
  4 +<div class="modal-body">
  5 + <div class="col-md-6">
  6 + <div class="input-group">
  7 + <input type="file" class="form-control" nv-file-select="" uploader="ctrl.uploader"/>
  8 + <span class="input-group-btn">
  9 + <button type="button" ng-click="ctrl.clearInputFile()" class="btn btn-default">
  10 + <span class="glyphicon glyphicon-trash"></span>
  11 + </button>
  12 + </span>
  13 + </div>
  14 + </div>
  15 +
  16 + <div class="table-scrollable table-scrollable-borderless">
  17 + <table class="table table-hover table-light">
  18 + <thead>
  19 + <tr class="uppercase">
  20 + <th width="50%">文件名</th>
  21 + <th ng-show="ctrl.uploader.isHTML5">大小(M)</th>
  22 + <th ng-show="ctrl.uploader.isHTML5">进度</th>
  23 + <th>状态</th>
  24 + <th>操作</th>
  25 + </tr>
  26 + </thead>
  27 + <tbody>
  28 + <tr ng-repeat="item in ctrl.uploader.queue">
  29 + <td>
  30 + <strong>{{ item.file.name }}</strong>
  31 + </td>
  32 + <td ng-show="ctrl.uploader.isHTML5" nowrap>{{ item.file.size/1024/1024|number:2 }} MB</td>
  33 + <td ng-show="ctrl.uploader.isHTML5">
  34 + <div class="progress progress-sm" style="margin-bottom: 0;">
  35 + <div class="progress-bar progress-bar-info" role="progressbar"
  36 + ng-style="{ 'width': item.progress + '%' }"></div>
  37 + </div>
  38 + </td>
  39 + <td class="text-center">
  40 + <span ng-show="item.isSuccess" class="text-success">
  41 + <i class="glyphicon glyphicon-ok"></i>
  42 + </span>
  43 + <span ng-show="item.isCancel" class="text-info">
  44 + <i class="glyphicon glyphicon-ban-circle"></i>
  45 + </span>
  46 + <span ng-show="item.isError" class="text-danger">
  47 + <i class="glyphicon glyphicon-remove"></i>
  48 + </span>
  49 + </td>
  50 + <td nowrap>
  51 + <button type="button" class="btn btn-success btn-xs" ng-click="item.upload()"
  52 + ng-disabled="item.isReady || item.isUploading || item.isSuccess">
  53 + <span class="glyphicon glyphicon-upload"></span> 上传
  54 + </button>
  55 + <button type="button" class="btn btn-warning btn-xs" ng-click="item.cancel()"
  56 + ng-disabled="!item.isUploading">
  57 + <span class="glyphicon glyphicon-ban-circle"></span> 取消
  58 + </button>
  59 + <button type="button" class="btn btn-danger btn-xs" ng-click="item.remove()">
  60 + <span class="glyphicon glyphicon-trash"></span> 删除
  61 + </button>
  62 + </td>
  63 + </tr>
  64 + </tbody>
  65 + </table>
  66 + </div>
  67 +
  68 +</div>
  69 +
  70 +<div class="modal-footer">
  71 + <button class="btn btn-primary" ng-click="ctrl.close()">关闭</button>
72 72 </div>
73 73 \ No newline at end of file
... ...
src/main/resources/static/pages/scheduleApp/module/core/guideboardManage/detail.html
1   -<h1>TODO</h1>
2 1 \ No newline at end of file
  2 +<div class="page-head">
  3 + <div class="page-title">
  4 + <h1>路牌管理</h1>
  5 + </div>
  6 +</div>
  7 +
  8 +<ul class="page-breadcrumb breadcrumb">
  9 + <li>
  10 + <a href="/pages/home.html" data-pjax>首页</a>
  11 + <i class="fa fa-circle"></i>
  12 + </li>
  13 + <li>
  14 + <span class="active">运营计划管理</span>
  15 + <i class="fa fa-circle"></i>
  16 + </li>
  17 + <li>
  18 + <a ui-sref="guideboardManage">路牌管理</a>
  19 + <i class="fa fa-circle"></i>
  20 + </li>
  21 + <li>
  22 + <span class="active">路牌详细信息</span>
  23 + </li>
  24 +</ul>
  25 +
  26 +<div class="portlet light bordered" ng-controller="GuideboardManageDetailCtrl as ctrl">
  27 + <div class="portlet-title">
  28 + <div class="caption">
  29 + <i class="icon-equalizer font-red-sunglo"></i> <span
  30 + class="caption-subject font-red-sunglo bold uppercase"
  31 + ng-bind="ctrl.title"></span>
  32 + </div>
  33 + </div>
  34 +
  35 + <div class="portlet-body form">
  36 + <form class="form-horizontal" novalidate name="myForm">
  37 + <!--<div class="alert alert-danger display-hide">-->
  38 + <!--<button class="close" data-close="alert"></button>-->
  39 + <!--您的输入有误,请检查下面的输入项-->
  40 + <!--</div>-->
  41 +
  42 +
  43 + <!-- 其他信息放置在这里 -->
  44 + <div class="form-body">
  45 + <div class="form-group has-success has-feedback">
  46 + <label class="col-md-2 control-label">线路*:</label>
  47 + <div class="col-md-3">
  48 + <input type="text" class="form-control"
  49 + name="xl" ng-model="ctrl.guideboardForDetail.xl.name" readonly/>
  50 + </div>
  51 + </div>
  52 + <div class="form-group has-success has-feedback">
  53 + <label class="col-md-2 control-label">路牌编号*:</label>
  54 + <div class="col-md-3">
  55 + <input type="text" class="form-control"
  56 + name="lpNo" ng-model="ctrl.guideboardForDetail.lpNo" readonly/>
  57 + </div>
  58 + </div>
  59 +
  60 + <div class="form-group has-success has-feedback">
  61 + <label class="col-md-2 control-label">路牌名称*:</label>
  62 + <div class="col-md-3">
  63 + <input type="text" class="form-control" name="lpName"
  64 + ng-model="ctrl.guideboardForDetail.lpName" readonly/>
  65 + </div>
  66 + </div>
  67 +
  68 + <div class="form-group has-success has-feedback">
  69 + <label class="col-md-2 control-label">路牌类型*:</label>
  70 + <div class="col-md-3">
  71 + <input type="text" class="form-control" name="lpType"
  72 + ng-model="ctrl.guideboardForDetail.lpType" readonly/>
  73 + </div>
  74 + </div>
  75 +
  76 + <!-- 其他form-group -->
  77 +
  78 + </div>
  79 +
  80 + </form>
  81 +
  82 + </div>
  83 +</div>
3 84 \ No newline at end of file
... ...
src/main/resources/static/pages/scheduleApp/module/core/guideboardManage/guideboardManage.js
... ... @@ -39,7 +39,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;GuideboardManageService&#39;, [&#39;GuideboardMan
39 39 getPage: function() {
40 40 var params = currentSearchCondition; // 查询条件
41 41 params.page = currentPageNo - 1; // 服务端页码从0开始
42   - return service.list(params).$promise;
  42 + return service.rest.list(params).$promise;
43 43 },
44 44 /**
45 45 * 获取明细信息。
... ... @@ -48,7 +48,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;GuideboardManageService&#39;, [&#39;GuideboardMan
48 48 */
49 49 getDetail: function(id) {
50 50 var params = {id: id};
51   - return service.get(params).$promise;
  51 + return service.rest.get(params).$promise;
52 52 },
53 53 /**
54 54 * 保存信息。
... ... @@ -56,7 +56,7 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;GuideboardManageService&#39;, [&#39;GuideboardMan
56 56 * @return 返回一个 promise
57 57 */
58 58 saveDetail: function(obj) {
59   - return service.save(obj).$promise;
  59 + return service.rest.save(obj).$promise;
60 60 }
61 61 };
62 62 }]);
... ... @@ -183,12 +183,31 @@ angular.module(&#39;ScheduleApp&#39;).controller(&#39;GuideboardManageListCtrl&#39;, [&#39;Guideboar
183 183  
184 184 }]);
185 185  
186   -angular.module('ScheduleApp').controller('GuideboardManageFormCtrl', '$stateParams', '$state', ['GuideboardManageService', function(guideboardManageService, $stateParams, $state) {
  186 +angular.module('ScheduleApp').controller('GuideboardManageFormCtrl', ['GuideboardManageService', '$stateParams', '$state', function(guideboardManageService, $stateParams, $state) {
187 187 // TODO:
188 188 }]);
189 189  
190   -angular.module('ScheduleApp').controller('GuideboardManageDetailCtrl', '$stateParams', ['GuideboardManageService', function(guideboardManageService, $stateParams) {
191   - // TODO:
  190 +angular.module('ScheduleApp').controller('GuideboardManageDetailCtrl', ['GuideboardManageService', '$stateParams', function(guideboardManageService, $stateParams) {
  191 + var self = this;
  192 + self.title = "";
  193 + self.guideboardForDetail = {};
  194 + self.guideboardForDetail.id = $stateParams.id;
  195 +
  196 + // 当转向到此页面时,就获取明细信息并绑定
  197 + guideboardManageService.getDetail($stateParams.id).then(
  198 + function(result) {
  199 + var key;
  200 + for (key in result) {
  201 + self.guideboardForDetail[key] = result[key];
  202 + }
  203 +
  204 + self.title = "路牌 " + self.guideboardForDetail.lpName + " 详细信息";
  205 + },
  206 + function(result) {
  207 + // TODO:弹出框方式以后改
  208 + alert("出错啦!");
  209 + }
  210 + );
192 211 }]);
193 212  
194 213  
... ...
src/main/resources/static/pages/scheduleApp/module/core/guideboardManage/index.html
... ... @@ -27,10 +27,10 @@
27 27 <span class="caption-subject bold uppercase">路牌表</span>
28 28 </div>
29 29 <div class="actions">
30   - <a href="javascirpt:" class="btn btn-circle blue" ng-click="ctrl.goForm()">
31   - <i class="fa fa-plus"></i>
32   - 添加路牌
33   - </a>
  30 + <!--<a href="javascirpt:" class="btn btn-circle blue" ng-click="ctrl.goForm()">-->
  31 + <!--<i class="fa fa-plus"></i>-->
  32 + <!--添加路牌-->
  33 + <!--</a>-->
34 34  
35 35 <div class="btn-group">
36 36 <a href="javascript:" class="btn red btn-outline btn-circle" data-toggle="dropdown">
... ...
src/main/resources/static/pages/scheduleApp/module/core/guideboardManage/list.html
... ... @@ -16,7 +16,17 @@
16 16 <tr role="row" class="filter">
17 17 <td></td>
18 18 <td></td>
19   - <td></td>
  19 + <td>
  20 + <div style="width: 150px">
  21 + <sa-Select2 model="ctrl.searchCondition()"
  22 + type="xl"
  23 + modelcolname1="xl.lineCode_eq"
  24 + datacolname1="lineCode"
  25 + showcolname="name"
  26 + placeholder="请输拼音...">
  27 + </sa-Select2>
  28 + </div>
  29 + </td>
20 30 <td></td>
21 31 <td></td>
22 32 <td></td>
... ... @@ -54,8 +64,8 @@
54 64 <td>
55 65 <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>-->
56 66 <!--<a href="edit.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 修改 </a>-->
57   - <a ui-sref="#" class="btn default blue-stripe btn-sm"> 详细 </a>
58   - <a ui-sref="#" class="btn default blue-stripe btn-sm"> 修改 </a>
  67 + <a ui-sref="guideboardManage_detail({id : info.id})" class="btn default blue-stripe btn-sm"> 详细 </a>
  68 + <!--<a ui-sref="#" class="btn default blue-stripe btn-sm"> 修改 </a>-->
59 69 </td>
60 70 </tr>
61 71 </tbody>
... ...
src/main/resources/static/pages/scheduleApp/module/core/scheduleRuleManage/detail.html 0 → 100644
src/main/resources/static/pages/scheduleApp/module/core/scheduleRuleManage/edit.html 0 → 100644
src/main/resources/static/pages/scheduleApp/module/core/scheduleRuleManage/form.html 0 → 100644
  1 +<div class="page-head">
  2 + <div class="page-title">
  3 + <h1>排班规则管理</h1>
  4 + </div>
  5 +</div>
  6 +
  7 +<ul class="page-breadcrumb breadcrumb">
  8 + <li>
  9 + <a href="/pages/home.html" data-pjax>首页</a>
  10 + <i class="fa fa-circle"></i>
  11 + </li>
  12 + <li>
  13 + <span class="active">运营计划管理</span>
  14 + <i class="fa fa-circle"></i>
  15 + </li>
  16 + <li>
  17 + <a ui-sref="scheduleRuleManage">排班规则管理</a>
  18 + <i class="fa fa-circle"></i>
  19 + </li>
  20 + <li>
  21 + <span class="active">添加排班规则信息</span>
  22 + </li>
  23 +</ul>
  24 +
  25 +<div class="portlet light bordered" ng-controller="ScheduleRuleManageFormCtrl as ctrl">
  26 + <div class="portlet-title">
  27 + <div class="caption">
  28 + <i class="icon-equalizer font-red-sunglo"></i> <span
  29 + class="caption-subject font-red-sunglo bold uppercase">表单</span>
  30 + </div>
  31 + </div>
  32 +
  33 + <div class="portlet-body form">
  34 + <form ng-submit="ctrl.submit()" class="form-horizontal" novalidate name="myForm">
  35 + <!--<div class="alert alert-danger display-hide">-->
  36 + <!--<button class="close" data-close="alert"></button>-->
  37 + <!--您的输入有误,请检查下面的输入项-->
  38 + <!--</div>-->
  39 +
  40 +
  41 + <!-- 其他信息放置在这里 -->
  42 + <div class="form-body">
  43 + <div class="form-group has-success has-feedback">
  44 + <label class="col-md-2 control-label">线路*:</label>
  45 + <div class="col-md-3">
  46 + <sa-Select2 model="ctrl.scheduleRuleManageForSave"
  47 + name="xl"
  48 + required="true"
  49 + type="xl"
  50 + modelcolname1="xl_id"
  51 + datacolname1="id"
  52 + showcolname="name"
  53 + placeholder="请输拼音...">
  54 + </sa-Select2>
  55 + </div>
  56 + <!-- 隐藏块,显示验证信息 -->
  57 + <div class="alert alert-danger well-sm" ng-show="myForm.xl.$error.required">
  58 + 线路必须选择
  59 + </div>
  60 + </div>
  61 + <div class="form-group has-success has-feedback">
  62 + <label class="col-md-2 control-label">车辆*:</label>
  63 + <div class="col-md-3">
  64 + <sa-Select2 model="ctrl.scheduleRuleManageForSave"
  65 + name="cl"
  66 + required="true"
  67 + type="cl"
  68 + modelcolname1="cl_id"
  69 + datacolname1="id"
  70 + showcolname="insideCode"
  71 + placeholder="请输拼音...">
  72 + </sa-Select2>
  73 + </div>
  74 + <!-- 隐藏块,显示验证信息 -->
  75 + <div class="alert alert-danger well-sm" ng-show="myForm.cl.$error.required">
  76 + 车辆必须选择
  77 + </div>
  78 + </div>
  79 +
  80 + <div class="form-group">
  81 + <label class="col-md-2 control-label">启用日期:</label>
  82 + <div class="col-md-3">
  83 + <div class="input-group">
  84 + <input type="text" class="form-control"
  85 + name="qyrq" placeholder="请选择启用日期..."
  86 + uib-datepicker-popup="yyyy年MM月dd日"
  87 + is-open="ctrl.qyrqOpen" required
  88 + ng-model="ctrl.scheduleRuleManageForSave.qyrq"/>
  89 + <span class="input-group-btn">
  90 + <button type="button" class="btn btn-default" ng-click="ctrl.qyrq_open()">
  91 + <i class="glyphicon glyphicon-calendar"></i>
  92 + </button>
  93 + </span>
  94 + </div>
  95 + </div>
  96 + <!-- 隐藏块,显示验证信息 -->
  97 + <div class="alert alert-danger well-sm" ng-show="myForm.qyrq.$error.required">
  98 + 启用日期必须选择
  99 + </div>
  100 + </div>
  101 +
  102 + <div class="form-group">
  103 + <label class="col-md-2 control-label">路牌范围*:</label>
  104 + <div class="col-md-3">
  105 + <input type="text" class="form-control" name="lpNames" ng-model="ctrl.scheduleRuleManageForSave.lpNames" required
  106 + placeholder="由路牌名称组成,逗号分隔"/>
  107 + </div>
  108 + <!-- 隐藏块,显示验证信息 -->
  109 + <div class="alert alert-danger well-sm" ng-show="myForm.lpNames.$error.required">
  110 + 路牌范围必须填写
  111 + </div>
  112 + </div>
  113 +
  114 + <div class="form-group">
  115 + <label class="col-md-2 control-label">起始路牌*:</label>
  116 + <div class="col-md-3">
  117 + <input type="text" class="form-control" name="lpStart" ng-model="ctrl.scheduleRuleManageForSave.lpStart" required
  118 + placeholder="起始路牌,从0开始"/>
  119 + </div>
  120 + <!-- 隐藏块,显示验证信息 -->
  121 + <div class="alert alert-danger well-sm" ng-show="myForm.lpStart.$error.required">
  122 + 起始路牌必须填写
  123 + </div>
  124 + </div>
  125 +
  126 + <div class="form-group">
  127 + <label class="col-md-2 control-label">人员范围*:</label>
  128 + <div class="col-md-3">
  129 + <input type="text" class="form-control" name="ryDbbms" ng-model="ctrl.scheduleRuleManageForSave.ryDbbms" required
  130 + placeholder="由人员配置的搭班编码组成,逗号分隔"/>
  131 + </div>
  132 + <!-- 隐藏块,显示验证信息 -->
  133 + <div class="alert alert-danger well-sm" ng-show="myForm.ryDbbms.$error.required">
  134 + 人员范围必须填写
  135 + </div>
  136 + </div>
  137 +
  138 + <div class="form-group">
  139 + <label class="col-md-2 control-label">起始人员*:</label>
  140 + <div class="col-md-3">
  141 + <input type="text" class="form-control" name="ryStart" ng-model="ctrl.scheduleRuleManageForSave.ryStart" required
  142 + placeholder="起始路牌,从0开始"/>
  143 + </div>
  144 + <!-- 隐藏块,显示验证信息 -->
  145 + <div class="alert alert-danger well-sm" ng-show="myForm.ryStart.$error.required">
  146 + 起始路牌必须填写
  147 + </div>
  148 + </div>
  149 +
  150 + <div class="form-group">
  151 + <label class="col-md-2 control-label">翻班格式:</label>
  152 + <div class="col-md-3">
  153 + <input type="text" class="form-control" name="fbgs" ng-model="ctrl.scheduleRuleManageForSave.fbgs"
  154 + placeholder="车辆翻班格式"/>
  155 + </div>
  156 + </div>
  157 +
  158 +
  159 + <!-- 其他form-group -->
  160 +
  161 + </div>
  162 +
  163 + <!-- TODO:!myForm.$valid 在这里有点问题,改用以下方法验证 -->
  164 + <div class="form-actions">
  165 + <div class="row">
  166 + <div class="col-md-offset-3 col-md-4">
  167 + <button type="submit" class="btn green"
  168 + ng-disabled="myForm.xl.$error.required ||
  169 + myForm.cl.$error.required ||
  170 + myForm.qyrq.$error.required ||
  171 + myForm.lpNames.$error.required ||
  172 + myForm.lpStart.$error.required ||
  173 + myForm.ryDbbms.$error.required ||
  174 + myForm.ryStart.$error.required"
  175 + ><i class="fa fa-check"></i> 提交</button>
  176 + <a type="button" class="btn default" ui-sref="scheduleRuleManage" ><i class="fa fa-times"></i> 取消</a>
  177 + </div>
  178 + </div>
  179 + </div>
  180 +
  181 + </form>
  182 +
  183 + </div>
  184 +
  185 +
  186 +</div>
0 187 \ No newline at end of file
... ...
src/main/resources/static/pages/scheduleApp/module/core/scheduleRuleManage/list.html
... ... @@ -5,8 +5,7 @@
5 5 <th>序号</th>
6 6 <th>线路</th>
7 7 <th>修改时间</th>
8   - <th>启用时间</th>
9   - <th>规则类型</th>
  8 + <th>启用日期</th>
10 9 <th>车辆</th>
11 10 <th>翻版模式</th>
12 11 <th>起始路牌</th>
... ... @@ -17,11 +16,30 @@
17 16 </tr>
18 17 <tr role="row" class="filter">
19 18 <td></td>
  19 + <td>
  20 + <div style="width: 150px">
  21 + <sa-Select2 model="ctrl.searchCondition()"
  22 + type="xl"
  23 + modelcolname1="xl.id_eq"
  24 + datacolname1="id"
  25 + showcolname="name"
  26 + placeholder="请输拼音...">
  27 + </sa-Select2>
  28 + </div>
  29 + </td>
20 30 <td></td>
21 31 <td></td>
22   - <td></td>
23   - <td></td>
24   - <td></td>
  32 + <td>
  33 + <div style="width: 150px">
  34 + <sa-Select2 model="ctrl.searchCondition()"
  35 + type="cl"
  36 + modelcolname1="cl.id_eq"
  37 + datacolname1="id"
  38 + showcolname="insideCode"
  39 + placeholder="请输拼音...">
  40 + </sa-Select2>
  41 + </div>
  42 + </td>
25 43 <td></td>
26 44 <td></td>
27 45 <td></td>
... ... @@ -45,7 +63,7 @@
45 63 <span ng-bind="$index + 1"></span>
46 64 </td>
47 65 <td>
48   - <span ng-bind="info.xl"></span>
  66 + <span ng-bind="info.xl.name"></span>
49 67 </td>
50 68 <td>
51 69 <span ng-bind="info.updateDate | date: 'yyyy-MM-dd HH:mm:ss'"></span>
... ... @@ -54,29 +72,27 @@
54 72 <span ng-bind="info.qyrq | date: 'yyyy-MM-dd '"></span>
55 73 </td>
56 74 <td>
57   - <span>周期循环类型</span>
58   - </td>
59   - <td>
60   - <span ng-bind="info.cl"></span>
  75 + <span ng-bind="info.cl.insideCode"></span>
61 76 </td>
62 77 <td>
63   - <span ng-bind="info.fbms"></span>
  78 + <span ng-bind="info.fbgs"></span>
64 79 </td>
65 80 <td>
66   - <span ng-bind="info.qslp"></span>
  81 + <span ng-bind="info.lpStart"></span>
67 82 </td>
68 83 <td>
69   - <span ng-bind="info.lpfw"></span>
  84 + <span ng-bind="info.lpNames"></span>
70 85 </td>
71 86 <td>
72   - <span ng-bind="info.qsry"></span>
  87 + <span ng-bind="info.ryStart"></span>
73 88 </td>
74 89 <td>
75   - <span ng-bind="info.ryfw"></span>
  90 + <span ng-bind="info.ryDbbms"></span>
76 91 </td>
77 92 <td>
78 93 <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>-->
79 94 <!--<a href="edit.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 修改 </a>-->
  95 + <a ui-sref="#" class="btn default blue-stripe btn-sm"> 详细 </a>
80 96 <a ui-sref="#" class="btn default blue-stripe btn-sm"> 修改 </a>
81 97 </td>
82 98 </tr>
... ...
src/main/resources/static/pages/scheduleApp/module/core/scheduleRuleManage/scheduleRuleManage.html deleted 100644 → 0
1   -排班规则管理
2 0 \ No newline at end of file
src/main/resources/static/pages/scheduleApp/module/core/scheduleRuleManage/scheduleRuleManage.js
1   -// 车辆配置管理 service controller 等写在一起
2   -// TODO
  1 +// 规则配置管理 service controller 等写在一起
  2 +angular.module('ScheduleApp').factory('ScheduleRuleManageService', ['ScheduleRuleManageService_g', function(service) {
  3 + /** 当前的查询条件信息 */
  4 + var currentSearchCondition = {};
3 5  
4   -angular.module('ScheduleApp').controller('ScheduleRuleManageCtrl', ['$state', function($state) {
  6 + /** 当前第几页 */
  7 + var currentPageNo = 1;
  8 +
  9 + return {
  10 + /**
  11 + * 获取查询条件信息,
  12 + * 用于给controller用来和页面数据绑定。
  13 + */
  14 + getSearchCondition: function() {
  15 + return currentSearchCondition;
  16 + },
  17 + /**
  18 + * 重置查询条件信息。
  19 + */
  20 + resetSearchCondition: function() {
  21 + var key;
  22 + for (key in currentSearchCondition) {
  23 + currentSearchCondition[key] = null;
  24 + }
  25 + },
  26 + /**
  27 + * 设置当前页码。
  28 + * @param cpn 从1开始,后台是从0开始的
  29 + */
  30 + setCurrentPageNo: function(cpn) {
  31 + currentPageNo = cpn;
  32 + },
  33 + /**
  34 + * 组装查询参数,返回一个promise查询结果。
  35 + * @param params 查询参数
  36 + * @return 返回一个 promise
  37 + */
  38 + getPage: function() {
  39 + var params = currentSearchCondition; // 查询条件
  40 + params.page = currentPageNo - 1; // 服务端页码从0开始
  41 + return service.rest.list(params).$promise;
  42 + },
  43 + /**
  44 + * 获取明细信息。
  45 + * @param id 车辆id
  46 + * @return 返回一个 promise
  47 + */
  48 + getDetail: function(id) {
  49 + var params = {id: id};
  50 + return service.rest.get(params).$promise;
  51 + },
  52 + /**
  53 + * 保存信息。
  54 + * @param obj 车辆详细信息
  55 + * @return 返回一个 promise
  56 + */
  57 + saveDetail: function(obj) {
  58 + return service.rest.save(obj).$promise;
  59 + }
  60 + };
  61 +
  62 +}]);
  63 +
  64 +angular.module('ScheduleApp').controller('ScheduleRuleManageCtrl', ['ScheduleRuleManageService', '$state', function(busConfigService, $state) {
5 65 var self = this;
6 66  
7 67 // 切换到form状态
8 68 self.goForm = function() {
9   - alert("生成");
  69 + //alert("切换");
  70 + $state.go("scheduleRuleManage_form");
  71 + };
10 72  
11   - }
12 73 }]);
13 74  
14   -angular.module('ScheduleApp').controller('ScheduleRuleManageListCtrl', [function() {
  75 +angular.module('ScheduleApp').controller('ScheduleRuleManageListCtrl', ['ScheduleRuleManageService', function(scheduleRuleManageService) {
15 76 var self = this;
16 77 self.pageInfo = {
17 78 totalItems : 0,
... ... @@ -20,16 +81,17 @@ angular.module(&#39;ScheduleApp&#39;).controller(&#39;ScheduleRuleManageListCtrl&#39;, [function
20 81 };
21 82  
22 83 // 初始创建的时候,获取一次列表数据
23   - // TODO:假数据
24   - self.pageInfo.infos.push({
25   - xl: "85路",
26   - cl: "Q4A-001",
27   - fbms: "0111110",
28   - qslp: "1",
29   - lpfw: "+1,+2,+3,+4,+5",
30   - qsry: "1",
31   - ryfw: "36"
32   - });
  84 + scheduleRuleManageService.getPage().then(
  85 + function(result) {
  86 + self.pageInfo.totalItems = result.totalElements;
  87 + self.pageInfo.currentPage = result.number + 1;
  88 + self.pageInfo.infos = result.content;
  89 + scheduleRuleManageService.setCurrentPageNo(result.number + 1);
  90 + },
  91 + function(result) {
  92 + alert("出错啦!");
  93 + }
  94 + );
33 95  
34 96 //$scope.$watch("ctrl.pageInfo.currentPage", function() {
35 97 // alert("dfdfdf");
... ... @@ -37,16 +99,119 @@ angular.module(&#39;ScheduleApp&#39;).controller(&#39;ScheduleRuleManageListCtrl&#39;, [function
37 99  
38 100 // 翻页的时候调用
39 101 self.pageChanaged = function() {
  102 + scheduleRuleManageService.setCurrentPageNo(self.pageInfo.currentPage);
  103 + scheduleRuleManageService.getPage().then(
  104 + function(result) {
  105 + self.pageInfo.totalItems = result.totalElements;
  106 + self.pageInfo.currentPage = result.number + 1;
  107 + self.pageInfo.infos = result.content;
  108 + scheduleRuleManageService.setCurrentPageNo(result.number + 1);
  109 + },
  110 + function(result) {
  111 + alert("出错啦!");
  112 + }
  113 + );
40 114 };
41 115 // 获取查询条件数据
42 116 self.searchCondition = function() {
  117 + return scheduleRuleManageService.getSearchCondition();
43 118 };
44 119 // 重置查询条件
45 120 self.resetSearchCondition = function() {
  121 + scheduleRuleManageService.resetSearchCondition();
  122 + self.pageInfo.currentPage = 1;
  123 + self.pageChanaged();
46 124 };
47 125  
48 126 }]);
49 127  
  128 +angular.module('ScheduleApp').controller('ScheduleRuleManageFormCtrl', ['ScheduleRuleManageService', '$stateParams', '$state', '$scope', function(scheduleRuleManageService, $stateParams, $state, $scope) {
  129 + var self = this;
  130 +
  131 + // 启用日期 日期控件开关
  132 + self.qyrqOpen = false;
  133 + self.qyrq_open = function() {
  134 + self.qyrqOpen = true;
  135 + };
  136 +
  137 + // 欲保存的busInfo信息,绑定
  138 + self.scheduleRuleManageForSave = {};
  139 +
  140 + // 获取传过来的id,有的话就是修改,获取一遍数据
  141 + var id = $stateParams.id;
  142 + if (id) {
  143 + self.scheduleRuleManageForSave.id = id;
  144 + scheduleRuleManageService.getDetail(id).then(
  145 + function(result) {
  146 + var key;
  147 + for (key in result) {
  148 + self.scheduleRuleManageForSave[key] = result[key];
  149 + }
  150 +
  151 + // 添加xl_id,cl_id
  152 + self.scheduleRuleManageForSave["xl_id"] = self.scheduleRuleManageForSave.xl.id;
  153 + self.scheduleRuleManageForSave["cl_id"] = self.scheduleRuleManageForSave.cl.id;
  154 + },
  155 + function(result) {
  156 + alert("出错啦!");
  157 + }
  158 + );
  159 + }
  160 +
  161 + // 提交方法
  162 + self.submit = function() {
  163 + console.log(self.scheduleRuleManageForSave);
  164 +
  165 + var mf = $scope.myForm;
  166 +
  167 + // xl_id,cl_id要组织成对象,然后删除
  168 + self.scheduleRuleManageForSave["xl"] = {};
  169 + self.scheduleRuleManageForSave.xl["id"] = self.scheduleRuleManageForSave["xl_id"];
  170 + delete self.scheduleRuleManageForSave["xl_id"];
  171 + self.scheduleRuleManageForSave["cl"] = {};
  172 + self.scheduleRuleManageForSave.cl["id"] = self.scheduleRuleManageForSave["cl_id"];
  173 + delete self.scheduleRuleManageForSave["cl_id"];
  174 +
  175 + scheduleRuleManageService.saveDetail(self.scheduleRuleManageForSave).then(
  176 + function(result) {
  177 + // TODO:弹出框方式以后改
  178 + if (result.status == 'SUCCESS') {
  179 + alert("保存成功!");
  180 + $state.go("scheduleRuleManage");
  181 + } else {
  182 + alert("保存异常!");
  183 + }
  184 + },
  185 + function(result) {
  186 + // TODO:弹出框方式以后改
  187 + alert("出错啦!");
  188 + }
  189 + );
  190 + };
  191 +}]);
  192 +
  193 +angular.module('ScheduleApp').controller('ScheduleRuleManageDetailCtrl', ['ScheduleRuleManageService', '$stateParams', function(scheduleRuleManageService, $stateParams) {
  194 + var self = this;
  195 + self.title = "";
  196 + self.scheduleRuleManageForDetail = {};
  197 + self.scheduleRuleManageForDetail.id = $stateParams.id;
  198 +
  199 + // 当转向到此页面时,就获取明细信息并绑定
  200 + scheduleRuleManageService.getDetail($stateParams.id).then(
  201 + function(result) {
  202 + var key;
  203 + for (key in result) {
  204 + self.scheduleRuleManageForDetail[key] = result[key];
  205 + }
  206 +
  207 + self.title = "规则配置详细信息";
  208 + },
  209 + function(result) {
  210 + // TODO:弹出框方式以后改
  211 + alert("出错啦!");
  212 + }
  213 + );
  214 +}]);
50 215  
51 216  
52 217  
... ...
src/main/resources/static/pages/scheduleApp/module/core/timeTableManage/detailDataImport.html 0 → 100644
  1 +<div class="modal-header">
  2 + <h3 class="modal-title"><span ng-bind="ctrl.xlmc + '(' + ctrl.ttinfoname + ')' "></span>时刻表明细信息excel数据导入</h3>
  3 +</div>
  4 +<div class="modal-body">
  5 + <div class="col-md-6">
  6 + <div class="input-group">
  7 + <input type="file" class="form-control" nv-file-select="" uploader="ctrl.uploader"/>
  8 + <span class="input-group-btn">
  9 + <button type="button" ng-click="ctrl.clearInputFile()" class="btn btn-default">
  10 + <span class="glyphicon glyphicon-trash"></span>
  11 + </button>
  12 + </span>
  13 + </div>
  14 + </div>
  15 +
  16 + <div class="table-scrollable table-scrollable-borderless">
  17 + <table class="table table-hover table-light">
  18 + <thead>
  19 + <tr class="uppercase">
  20 + <th width="50%">文件名</th>
  21 + <th ng-show="ctrl.uploader.isHTML5">大小(M)</th>
  22 + <th ng-show="ctrl.uploader.isHTML5">进度</th>
  23 + <th>状态</th>
  24 + <th>操作</th>
  25 + </tr>
  26 + </thead>
  27 + <tbody>
  28 + <tr ng-repeat="item in ctrl.uploader.queue">
  29 + <td>
  30 + <strong>{{ item.file.name }}</strong>
  31 + </td>
  32 + <td ng-show="ctrl.uploader.isHTML5" nowrap>{{ item.file.size/1024/1024|number:2 }} MB</td>
  33 + <td ng-show="ctrl.uploader.isHTML5">
  34 + <div class="progress progress-sm" style="margin-bottom: 0;">
  35 + <div class="progress-bar progress-bar-info" role="progressbar"
  36 + ng-style="{ 'width': item.progress + '%' }"></div>
  37 + </div>
  38 + </td>
  39 + <td class="text-center">
  40 + <span ng-show="item.isSuccess" class="text-success">
  41 + <i class="glyphicon glyphicon-ok"></i>
  42 + </span>
  43 + <span ng-show="item.isCancel" class="text-info">
  44 + <i class="glyphicon glyphicon-ban-circle"></i>
  45 + </span>
  46 + <span ng-show="item.isError" class="text-danger">
  47 + <i class="glyphicon glyphicon-remove"></i>
  48 + </span>
  49 + </td>
  50 + <td nowrap>
  51 + <button type="button" class="btn btn-success btn-xs" ng-click="item.upload()"
  52 + ng-disabled="item.isReady || item.isUploading || item.isSuccess">
  53 + <span class="glyphicon glyphicon-upload"></span> 上传
  54 + </button>
  55 + <button type="button" class="btn btn-warning btn-xs" ng-click="item.cancel()"
  56 + ng-disabled="!item.isUploading">
  57 + <span class="glyphicon glyphicon-ban-circle"></span> 取消
  58 + </button>
  59 + <button type="button" class="btn btn-danger btn-xs" ng-click="item.remove()">
  60 + <span class="glyphicon glyphicon-trash"></span> 删除
  61 + </button>
  62 + </td>
  63 + </tr>
  64 + </tbody>
  65 + </table>
  66 + </div>
  67 +
  68 +</div>
  69 +
  70 +<div class="modal-footer">
  71 + <button class="btn btn-primary" ng-click="ctrl.close()">关闭</button>
  72 +</div>
0 73 \ No newline at end of file
... ...
src/main/resources/static/pages/scheduleApp/module/core/timeTableManage/detail_info.html
... ... @@ -86,7 +86,7 @@
86 86  
87 87 <div class="portlet-body">
88 88 <!--<div ng-view></div>-->
89   - <table class="table table-striped table-bordered table-hover table-checkable order-column" ng-controller="TimeTableInfoManageCtrl as ctrl">
  89 + <table class="table table-striped table-bordered table-hover table-checkable order-column" ng-controller="TimeTableDetailManageCtrl as ctrl">
90 90 <thead>
91 91 <tr>
92 92 <th>
... ...
src/main/resources/static/pages/scheduleApp/module/core/timeTableManage/list.html
... ... @@ -65,10 +65,10 @@
65 65 <span ng-bind="info.updateDate | date: 'yyyy-MM-dd HH:mm:ss'"></span>
66 66 </td>
67 67 <td>
68   - <a ui-sref="timeTableInfoManage" class="btn default blue-stripe btn-sm"> 编辑 </a>
69   - <a ui-sref="" class="btn default blue-stripe btn-sm"> 导入 </a>
70   - <a ui-sref="" class="btn default blue-stripe btn-sm"> 导出 </a>
71   - <a ui-sref="" class="btn default blue-stripe btn-sm"> 模版 </a>
  68 + <a ui-sref="timeTableDetailInfoManage" class="btn default blue-stripe btn-sm"> 编辑 </a>
  69 + <a ng-click="ctrl.importData($index)" class="btn default blue-stripe btn-sm"> 导入 </a>
  70 + <a href="javascript:" class="btn default blue-stripe btn-sm"> 导出 </a>
  71 + <a href="javascript:" class="btn default blue-stripe btn-sm"> 模版 </a>
72 72 </td>
73 73 <td>
74 74 <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>-->
... ...
src/main/resources/static/pages/scheduleApp/module/core/timeTableManage/timeTableDetailManage.js 0 → 100644
  1 +angular.module('ScheduleApp').controller('TimeTableDetailManageCtrl', [function() {
  2 + var self = this;
  3 +
  4 +
  5 + // 模拟799路的时刻信息
  6 + self.detailHeads = [
  7 + '路牌', '出场',
  8 + '华高新村1', '陆家嘴地铁站1', '华高新村2', '陆家嘴地铁站2',
  9 + '华高新村3', '陆家嘴地铁站3', '华高新村4', '陆家嘴地铁站4',
  10 + '华高新村5', '陆家嘴地铁站5', '华高新村6', '陆家嘴地铁站6',
  11 + '华高新村7', '陆家嘴地铁站7', '华高新村8', '陆家嘴地铁站8',
  12 + '进场', '空驶班次数/里程', '运营班次数/里程'
  13 + ];
  14 +
  15 + self.detailInfos = [
  16 + ['1', '07:01', '', '', '07:11', '08:01', '09:22', '10:12', '11:34', '12:24', '13:34', '14:24', '15:42', '16:32', '18:00', '18:50', '', '', '19:46', '2/1.6', '12/198'],
  17 + ['2', '06:51', '07:01', '07:51', '09:12', '10:02', '11:22', '12:12', '13:22', '14:12', '15:36', '16:26', '17:55', '18:45', '20:05', '20:55', '', '', '21:51', '2/1.6', '14/231'],
  18 + ['3', '05:56', '06:06', '06:56', '08:05', '08:55', '10:34', '11:24', '12:20', '', '', '17:01', '17:11', '18:01', '19:10', '19:58', '21:16', '22:08', '23:04', '4/3.2', '12/198'],
  19 + ['4', '06:20', '06:30', '07:20', '08:20', '09:10', '11:02', '08:38', '12:46', '13:36', '12:57', '15:44', '17:20', '18:10', '19:24', '20:14', '', '', '21:10', '2/1.6', '14/231'],
  20 + ['5', '07:21', '', '', '07:31', '08:21', '09:46', '10:36', '11:58', '12:48', '13:36', '14:46', '16:06', '16:56', '18:18', '19:08', '', '', '20:04', '2/1.6', '12/198'],
  21 + ['6', '06:36', '06:46', '07:36', '08:40', '09:30', '10:58', '11:48', '12:58', '13:48', '15:18', '16:08', '17:40', '18:30', '19:48', '20:38', '21:50', '22:49', '23:45', '2/1.6', '16/264'],
  22 + ['7', '07:30', '', '', '07:40', '08:31', '09:58', '10:48', '12:10', '13:00', '13:56', '16:20', '16:30', '17:20', '18:30', '19:20', '20:41', '21:31', '22:27', '4/3.2', '12/198'],
  23 + ['8', '07:46', '', '', '07:56', '08:46', '10:22', '11:12', '12:34', '13:24', '14:20', '16:38', '16:48', '17:38', '18:49', '19:38', '21:00', '21:50', '22:46', '4/3.2', '12/198'],
  24 + ['9', '07:38', '', '', '07:48', '08:38', '10:10', '10:00', '12:22', '13:12', '14:30', '15:20', '16:44', '17:34', '18:42', '19:32', '', '', '20:28', '2/1.6', '12/198'],
  25 + ['10', '06:46', '06:56', '07:46', '09:00', '09:50', '11:10', '12:00', '13:10', '14:00', '15:24', '16:14', '17:45', '18:35', '19:56', '20:46', '22:00', '23:00', '23:56', '2/1.6', '16/264'],
  26 + ['+1', '05:10', '05:20', '06:10', '07:21', '08:11', '09:07', '', '', '', '', '15:44', '15:54', '16:44', '18:12', '19:02', '20:23', '21:13', '22:09', '4/3.2', '10/165'],
  27 + ['+2', '05:30', '05:40', '06:30', '07:44', '08:34', '09:30', '', '', '', '', '16:29', '16:39', '17:29', '18:36', '19:26', '20:50', '21:40', '22:36', '4/3.2', '10/165'],
  28 + ['+3', '05:30', '', '06:00', '07:16', '08:06', '09:02', '', '', '', '', '15:38', '15:48', '16:38', '18:06', '18:56', '20:14', '21:04', '22:00', '4/14.95', '9/149'],
  29 + ['+4', '05:48', '05:58', '06:48', '08:00', '08:50', '09:46', '', '', '', '', '16:52', '17:02', '17:52', '19:03', '19:50', '21:08', '21:59', '22:54', '4/3.2', '10/165'],
  30 + ['+5', '05:40', '05:50', '06:40', '07:52', '08:42', '09:38', '', '', '14:26', '14:36', '15:26', '16:53', '17:43', '18:56', '19:44', '', '', '20:40', '4/3.2', '10/165'],
  31 + ['+6', '06:31', '06:41', '07:31', '08:31', '09:21', '10:17', '', '', '14:56', '15:06', '15:56', '17:30', '18:20', '19:32', '20:22', '21:32', '22:27', '23:23', '4/3.2', '12/198'],
  32 + ['+7', '05:20', '05:30', '06:20', '07:36', '08:26', '09:22', '', '', '', '', '16:08', '16:18', '17:08', '18:24', '19:14', '20:32', '21:22', '22:18', '4/3.2', '10/165'],
  33 + ['+8', '06:04', '06:14', '07:04', '08:10', '09:00', '09:56', '', '', '', '', '17:05', '17:15', '18:05', '19:17', '20:06', '21:24', '22:17', '23:13', '4/3.2', '10/165'],
  34 + ['+9', '06:41', '06:51', '07:41', '08:50', '09:40', '10:36', '', '', '15:02', '15:12', '16:02', '17:35', '18:25', '19:40', '20:30', '21:40', '22:38', '23:34', '4/3.2', '12/198'],
  35 + ['+10', '07:16', '', '', '07:26', '08:16', '09:34', '10:24', '11:46', '12:36', '13:46', '14:36', '16:00', '16:50', '', '', '', '', '17:46', '2/1.6', '10/165'],
  36 + ['+20', '06:12', '06:22', '07:12', '08:15', '09:05', '10:01', '', '', '14:50', '15:00', '15:50', '17:25', '18:15', '', '', '', '', '19:11', '4/3.2', '8/132'],
  37 + ['+21', '06:26', '06:36', '07:26', '08:25', '09:15', '10:11', '', '', '15:20', '15:30', '16:20', '17:50', '18:40', '', '', '', '', '19:36', '4/3.2', '8/132'],
  38 + ['+22', '06:56', '07:06', '07:56', '08:52', '', '', '', '', '14:38', '14:48', '15:38', '17:06', '17:56', '', '', '', '', '18:52', '4/3.2', '6/99'],
  39 + ['机1', '13:56', '', '', '', '', '', '', '', '', '14:06', '14:56', '16:12', '17:02', '', '', '', '', '17:58', '2/1.6', '4/66'],
  40 + ['机2', '14:04', '', '', '', '', '', '', '', '', '14:14', '15:04', '16:24', '17:14', '', '', '', '', '18:10', '2/1.6', '4/66'],
  41 + ['机3', '14:12', '', '', '', '', '', '', '', '', '14:22', '15:12', '16:35', '17:25', '', '', '', '', '18:21', '2/1.6', '4/66'],
  42 + ['机4', '14:32', '', '', '', '', '', '', '', '', '14:42', '15:32', '16:57', '17:47', '', '', '', '', '18:43', '2/1.6', '4/66']
  43 +
  44 + ]
  45 +
  46 +
  47 +
  48 +
  49 +
  50 +
  51 +
  52 +
  53 +
  54 +
  55 +
  56 +
  57 +
  58 +
  59 +
  60 +
  61 +
  62 +
  63 +
  64 +
  65 +
  66 +
  67 +
  68 +
  69 +
  70 +
  71 +
  72 +
  73 +
  74 +
  75 +
  76 +}]);
0 77 \ No newline at end of file
... ...
src/main/resources/static/pages/scheduleApp/module/core/timeTableManage/timeTableManage.js
... ... @@ -133,7 +133,7 @@ angular.module(&#39;ScheduleApp&#39;).controller(&#39;TimeTableManageToolsCtrl&#39;, [&#39;$modalIns
133 133  
134 134 }]);
135 135  
136   -angular.module('ScheduleApp').controller('TimeTableManageListCtrl', ['TimeTableManageService', function(timeTableManageService) {
  136 +angular.module('ScheduleApp').controller('TimeTableManageListCtrl', ['TimeTableManageService', '$uibModal', function(timeTableManageService, $uibModal) {
137 137 var self = this;
138 138 self.pageInfo = {
139 139 totalItems : 0,
... ... @@ -182,6 +182,82 @@ angular.module(&#39;ScheduleApp&#39;).controller(&#39;TimeTableManageListCtrl&#39;, [&#39;TimeTableM
182 182 return timeTableManageService.resetSearchCondition();
183 183 };
184 184  
  185 + // 导入excel
  186 + self.importData = function($index) {
  187 + // 线路名称
  188 + var xlmc = self.pageInfo.infos[$index]["xl"]["name"];
  189 + // 时刻表名称
  190 + var ttinfoname = self.pageInfo.infos[$index]["name"];
  191 + // 停车场名称(TODO:暂时写死)
  192 + var tccname = "东靖路高行停车场";
  193 +
  194 + // large方式弹出模态对话框
  195 + var modalInstance = $uibModal.open({
  196 + templateUrl: '/pages/scheduleApp/module/core/timeTableManage/detailDataImport.html',
  197 + size: "lg",
  198 + animation: true,
  199 + backdrop: 'static',
  200 + resolve: {
  201 + // 可以传值给controller
  202 + r_xlmc : function() {return xlmc},
  203 + r_ttinfoname : function() {return ttinfoname;},
  204 + r_tccname : function() {return tccname;}
  205 + },
  206 + windowClass: 'center-modal',
  207 + controller: "TimeTableDetailManageToolsCtrl",
  208 + controllerAs: "ctrl",
  209 + bindToController: true
  210 + });
  211 + modalInstance.result.then(
  212 + function() {
  213 + console.log("dataImport.html打开");
  214 + },
  215 + function() {
  216 + console.log("dataImport.html消失");
  217 + }
  218 + );
  219 + };
  220 +
  221 +}]);
  222 +
  223 +angular.module('ScheduleApp').controller('TimeTableDetailManageToolsCtrl', ['$modalInstance', 'FileUploader', 'r_xlmc', 'r_ttinfoname', 'r_tccname', function($modalInstance, FileUploader, r_xlmc, r_ttinfoname, r_tccname) {
  224 + var self = this;
  225 +
  226 + self.xlmc = r_xlmc;
  227 + self.ttinfoname = r_ttinfoname;
  228 + self.tccname = r_tccname;
  229 +
  230 + // 关闭窗口
  231 + self.close = function() {
  232 + $modalInstance.dismiss("cancel");
  233 + };
  234 +
  235 + self.clearInputFile = function() {
  236 + angular.element("input[type='file']").val(null);
  237 + };
  238 +
  239 + // 上传文件组件
  240 + self.uploader = new FileUploader({
  241 + url: "/tidc/dataImportExtend",
  242 + filters: [], // 用于过滤文件,比如只允许导入excel,
  243 + formData: [{xlmc: self.xlmc, ttinfoname: self.ttinfoname, tccname: self.tccname}]
  244 + });
  245 + self.uploader.onAfterAddingFile = function(fileItem)
  246 + {
  247 + console.info('onAfterAddingFile', fileItem);
  248 + console.log(self.uploader.queue.length);
  249 + if (self.uploader.queue.length > 1)
  250 + self.uploader.removeFromQueue(0);
  251 + };
  252 + self.uploader.onSuccessItem = function(fileItem, response, status, headers)
  253 + {
  254 + console.info('onSuccessItem', fileItem, response, status, headers);
  255 + };
  256 + self.uploader.onErrorItem = function(fileItem, response, status, headers)
  257 + {
  258 + console.info('onErrorItem', fileItem, response, status, headers);
  259 + };
  260 +
185 261 }]);
186 262  
187 263 angular.module('ScheduleApp').controller('TimeTableManageFormCtrl', ['TimeTableManageService', '$stateParams', '$state', function(timeTableManageService, $stateParams, $state) {
... ...
src/main/resources/static/pages/scheduleApp/module/main.js
... ... @@ -62,6 +62,8 @@ ScheduleApp.config([&#39;$stateProvider&#39;, &#39;$urlRouterProvider&#39;, function($stateProvi
62 62 name: 'busInfoManage_module',
63 63 insertBefore: '#ng_load_plugins_before', // 动态载入模块时放置的位置
64 64 files: [
  65 + "assets/bower_components/angular-ui-select/dist/select.min.css",
  66 + "assets/bower_components/angular-ui-select/dist/select.min.js",
65 67 "assets/bower_components/angular-file-upload/dist/angular-file-upload.min.js",
66 68 "pages/scheduleApp/module/basicInfo/busInfoManage/busInfoManage.js"
67 69 ]
... ... @@ -143,6 +145,8 @@ ScheduleApp.config([&#39;$stateProvider&#39;, &#39;$urlRouterProvider&#39;, function($stateProvi
143 145 name: 'employeeInfoManage_module',
144 146 insertBefore: '#ng_load_plugins_before', // 动态载入模块时放置的位置
145 147 files: [
  148 + "assets/bower_components/angular-ui-select/dist/select.min.css",
  149 + "assets/bower_components/angular-ui-select/dist/select.min.js",
146 150 "assets/bower_components/angular-file-upload/dist/angular-file-upload.min.js",
147 151 "pages/scheduleApp/module/basicInfo/employeeInfoManage/employeeInfoManage.js"
148 152 ]
... ... @@ -304,6 +308,8 @@ ScheduleApp.config([&#39;$stateProvider&#39;, &#39;$urlRouterProvider&#39;, function($stateProvi
304 308 name: 'busConfig_module',
305 309 insertBefore: '#ng_load_plugins_before', // 动态载入模块时放置的位置
306 310 files: [
  311 + "assets/bower_components/angular-ui-select/dist/select.min.css",
  312 + "assets/bower_components/angular-ui-select/dist/select.min.js",
307 313 "assets/bower_components/angular-file-upload/dist/angular-file-upload.min.js",
308 314 "pages/scheduleApp/module/core/busConfig/busConfig.js"
309 315 ]
... ... @@ -385,6 +391,8 @@ ScheduleApp.config([&#39;$stateProvider&#39;, &#39;$urlRouterProvider&#39;, function($stateProvi
385 391 name: 'employeeConfig_module',
386 392 insertBefore: '#ng_load_plugins_before', // 动态载入模块时放置的位置
387 393 files: [
  394 + "assets/bower_components/angular-ui-select/dist/select.min.css",
  395 + "assets/bower_components/angular-ui-select/dist/select.min.js",
388 396 "assets/bower_components/angular-file-upload/dist/angular-file-upload.min.js",
389 397 "pages/scheduleApp/module/core/employeeConfig/employeeConfig.js"
390 398 ]
... ... @@ -466,6 +474,8 @@ ScheduleApp.config([&#39;$stateProvider&#39;, &#39;$urlRouterProvider&#39;, function($stateProvi
466 474 name: 'guideboardManage_module',
467 475 insertBefore: '#ng_load_plugins_before', // 动态载入模块时放置的位置
468 476 files: [
  477 + "assets/bower_components/angular-ui-select/dist/select.min.css",
  478 + "assets/bower_components/angular-ui-select/dist/select.min.js",
469 479 "assets/bower_components/angular-file-upload/dist/angular-file-upload.min.js",
470 480 "pages/scheduleApp/module/core/guideboardManage/guideboardManage.js"
471 481 ]
... ... @@ -473,6 +483,23 @@ ScheduleApp.config([&#39;$stateProvider&#39;, &#39;$urlRouterProvider&#39;, function($stateProvi
473 483 }]
474 484 }
475 485 })
  486 + .state("guideboardManage_detail", {
  487 + url: '/guideboardManage_detail/:id',
  488 + views: {
  489 + "": {templateUrl: 'pages/scheduleApp/module/core/guideboardManage/detail.html'}
  490 + },
  491 + resolve: {
  492 + deps: ['$ocLazyLoad', function($ocLazyLoad) {
  493 + return $ocLazyLoad.load({
  494 + name: 'guideboardManage_detail_module',
  495 + insertBefore: '#ng_load_plugins_before', // 动态载入模块时放置的位置
  496 + files: [
  497 + "pages/scheduleApp/module/core/guideboardManage/guideboardManage.js"
  498 + ]
  499 + });
  500 + }]
  501 + }
  502 + })
476 503  
477 504  
478 505 // 时刻表管理
... ... @@ -555,18 +582,18 @@ ScheduleApp.config([&#39;$stateProvider&#39;, &#39;$urlRouterProvider&#39;, function($stateProvi
555 582 }]
556 583 }
557 584 })
558   - .state("timeTableInfoManage", {
559   - url: '/timeTableInfoManage',
  585 + .state("timeTableDetailInfoManage", {
  586 + url: '/timeTableDetailInfoManage',
560 587 views: {
561 588 "": {templateUrl: 'pages/scheduleApp/module/core/timeTableManage/detail_info.html'}
562 589 },
563 590 resolve: {
564 591 deps: ['$ocLazyLoad', function($ocLazyLoad) {
565 592 return $ocLazyLoad.load({
566   - name: 'timeTableInfoManage_detail_module',
  593 + name: 'timeTableDetailInfoManage_module',
567 594 insertBefore: '#ng_load_plugins_before', // 动态载入模块时放置的位置
568 595 files: [
569   - "pages/scheduleApp/module/core/timeTableManage/timeTableInfoManage.js"
  596 + "pages/scheduleApp/module/core/timeTableManage/timeTableDetailManage.js"
570 597 ]
571 598 });
572 599 }]
... ... @@ -591,6 +618,63 @@ ScheduleApp.config([&#39;$stateProvider&#39;, &#39;$urlRouterProvider&#39;, function($stateProvi
591 618 name: 'scheduleRuleManage_module',
592 619 insertBefore: '#ng_load_plugins_before', // 动态载入模块时放置的位置
593 620 files: [
  621 + "assets/bower_components/angular-ui-select/dist/select.min.css",
  622 + "assets/bower_components/angular-ui-select/dist/select.min.js",
  623 + "pages/scheduleApp/module/core/scheduleRuleManage/scheduleRuleManage.js"
  624 + ]
  625 + });
  626 + }]
  627 + }
  628 + })
  629 + .state("scheduleRuleManage_form", {
  630 + url: '/scheduleRuleManage_form',
  631 + views: {
  632 + "": {templateUrl: 'pages/scheduleApp/module/core/scheduleRuleManage/form.html'}
  633 + },
  634 + resolve: {
  635 + deps: ['$ocLazyLoad', function($ocLazyLoad) {
  636 + return $ocLazyLoad.load({
  637 + name: 'scheduleRuleManage_form_module',
  638 + insertBefore: '#ng_load_plugins_before', // 动态载入模块时放置的位置
  639 + files: [
  640 + "assets/bower_components/angular-ui-select/dist/select.min.css",
  641 + "assets/bower_components/angular-ui-select/dist/select.min.js",
  642 + "pages/scheduleApp/module/core/scheduleRuleManage/scheduleRuleManage.js"
  643 + ]
  644 + });
  645 + }]
  646 + }
  647 + })
  648 + .state("scheduleRuleManage_edit", {
  649 + url: '/scheduleRuleManage_edit/:id',
  650 + views: {
  651 + "": {templateUrl: 'pages/scheduleApp/module/core/scheduleRuleManage/edit.html'}
  652 + },
  653 + resolve: {
  654 + deps: ['$ocLazyLoad', function($ocLazyLoad) {
  655 + return $ocLazyLoad.load({
  656 + name: 'scheduleRuleManage_edit_module',
  657 + insertBefore: '#ng_load_plugins_before', // 动态载入模块时放置的位置
  658 + files: [
  659 + "assets/bower_components/angular-ui-select/dist/select.min.css",
  660 + "assets/bower_components/angular-ui-select/dist/select.min.js",
  661 + "pages/scheduleApp/module/core/scheduleRuleManage/scheduleRuleManage.js"
  662 + ]
  663 + });
  664 + }]
  665 + }
  666 + })
  667 + .state("scheduleRuleManage_detail", {
  668 + url: '/scheduleRuleManage_detail/:id',
  669 + views: {
  670 + "": {templateUrl: 'pages/scheduleApp/module/core/scheduleRuleManage/detail.html'}
  671 + },
  672 + resolve: {
  673 + deps: ['$ocLazyLoad', function($ocLazyLoad) {
  674 + return $ocLazyLoad.load({
  675 + name: 'scheduleRuleManage_detail_module',
  676 + insertBefore: '#ng_load_plugins_before', // 动态载入模块时放置的位置
  677 + files: [
594 678 "pages/scheduleApp/module/core/scheduleRuleManage/scheduleRuleManage.js"
595 679 ]
596 680 });
... ... @@ -775,68 +859,107 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;DeviceInfoManageService_g&#39;, [&#39;$resource&#39;,
775 859  
776 860 // 车辆配置service
777 861 angular.module('ScheduleApp').factory('BusConfigService_g', ['$resource', function($resource) {
778   - return $resource(
779   - '/cci/:id',
780   - {order: 'createDate', direction: 'DESC', id: '@id_route'}, // TODO:以后需要根据属性对象的属性查询
781   - {
782   - list: {
783   - method: 'GET',
784   - params: {
785   - page: 0
  862 + return {
  863 + rest : $resource(
  864 + '/cci/:id',
  865 + {order: 'createDate', direction: 'ASC', id: '@id_route'},
  866 + {
  867 + list: {
  868 + method: 'GET',
  869 + params: {
  870 + page: 0
  871 + }
  872 + },
  873 + get: {
  874 + method: 'GET'
  875 + },
  876 + save: {
  877 + method: 'POST'
786 878 }
787   - },
788   - get: {
789   - method: 'GET'
790   - },
791   - save: {
792   - method: 'POST'
793 879 }
794   - }
795   - );
  880 + )
  881 + };
796 882 }]);
797 883  
798 884 // 人员配置service
799 885 angular.module('ScheduleApp').factory('EmployeeConfigService_g', ['$resource', function($resource) {
800   - return $resource(
801   - '/eci/:id',
802   - {order: 'createDate', direction: 'DESC', id: '@id_route'}, // TODO:以后需要根据属性对象的属性查询
803   - {
804   - list: {
805   - method: 'GET',
806   - params: {
807   - page: 0
  886 + return {
  887 + rest : $resource(
  888 + '/eci/:id',
  889 + {order: 'createDate', direction: 'ASC', id: '@id_route'},
  890 + {
  891 + list: {
  892 + method: 'GET',
  893 + params: {
  894 + page: 0
  895 + }
  896 + },
  897 + get: {
  898 + method: 'GET'
  899 + },
  900 + save: {
  901 + method: 'POST'
808 902 }
809   - },
810   - get: {
811   - method: 'GET'
812   - },
813   - save: {
814   - method: 'POST'
815 903 }
816   - }
817   - );
  904 + ),
  905 + validate: $resource( // TODO:
  906 + '/personnel/validate/:type',
  907 + {},
  908 + {
  909 + jobCode: {
  910 + method: 'GET'
  911 + }
  912 + }
  913 + )
  914 + };
818 915 }]);
819 916  
820 917 // 路牌管理service
821 918 angular.module('ScheduleApp').factory('GuideboardManageService_g', ['$resource', function($resource) {
822   - return $resource(
823   - '/gic/:id',
824   - {order: 'createDate', direction: 'DESC', id: '@id_route'}, // TODO:以后需要根据属性对象的属性查询
825   - {
826   - list: {
827   - method: 'GET',
828   - params: {
829   - page: 0
  919 + return {
  920 + rest: $resource(
  921 + '/gic/:id',
  922 + {order: 'createDate', direction: 'DESC', id: '@id_route'},
  923 + {
  924 + list: {
  925 + method: 'GET',
  926 + params: {
  927 + page: 0
  928 + }
  929 + },
  930 + get: {
  931 + method: 'GET'
  932 + },
  933 + save: {
  934 + method: 'POST'
830 935 }
831   - },
832   - get: {
833   - method: 'GET'
834   - },
835   - save: {
836   - method: 'POST'
837 936 }
838   - }
839   - );
  937 + )
  938 + };
  939 +}]);
  940 +
  941 +// 排班管理service
  942 +angular.module('ScheduleApp').factory('ScheduleRuleManageService_g', ['$resource', function($resource) {
  943 + return {
  944 + rest: $resource(
  945 + '/sr1fc/:id',
  946 + {order: 'createDate', direction: 'DESC', id: '@id_route'},
  947 + {
  948 + list: {
  949 + method: 'GET',
  950 + params: {
  951 + page: 0
  952 + }
  953 + },
  954 + get: {
  955 + method: 'GET'
  956 + },
  957 + save: {
  958 + method: 'POST'
  959 + }
  960 + }
  961 + )
  962 + };
840 963 }]);
841 964  
842 965 // 时刻表管理service
... ... @@ -923,7 +1046,6 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;BusLineInfoStatService_g&#39;, [&#39;$resource&#39;,
923 1046 );
924 1047 }]);
925 1048  
926   -
927 1049 //--------------------------- 通用filter和directive -----------------------------//
928 1050 angular.module('ScheduleApp').filter("dict", [function() {
929 1051 /**
... ... @@ -949,7 +1071,7 @@ angular.module(&#39;ScheduleApp&#39;).directive(&quot;saSelect&quot;, [&#39;$timeout&#39;, function($timeo
949 1071 },
950 1072 controllerAs: "$saSelectCtrl",
951 1073 bindToController: true,
952   - controller: function($scope) {
  1074 + controller: function() {
953 1075 var self = this;
954 1076 self.datas = []; // 关联的字典数据,内部格式 {code:{值},name:{名字}}
955 1077 },
... ... @@ -1178,26 +1300,29 @@ angular.module(&#39;ScheduleApp&#39;).directive(&quot;remoteValidaton&quot;, [
1178 1300 }
1179 1301  
1180 1302 attr.$observe("rv1", function(value) {
1181   - if (!value) {
1182   - ngModelCtrl.$setValidity('remote', false);
1183   - return;
1184   - }
  1303 + if (attr["rvtype"] == "jobCode") {
  1304 + if (!value) {
  1305 + ngModelCtrl.$setValidity('remote', false);
  1306 + return;
  1307 + }
1185 1308  
1186   - employeeInfoManageService_g.validate.jobCode(
1187   - {"jobCode_eq": modelValue, "companyCode_eq": rv1_attr, type: "equale"},
1188   - function(result) {
1189   - //console.log(result);
1190   - if (result.status == "SUCCESS") {
  1309 + employeeInfoManageService_g.validate.jobCode(
  1310 + {"jobCode_eq": modelValue, "companyCode_eq": rv1_attr, type: "equale"},
  1311 + function(result) {
  1312 + //console.log(result);
  1313 + if (result.status == "SUCCESS") {
  1314 + ngModelCtrl.$setValidity('remote', true);
  1315 + } else {
  1316 + ngModelCtrl.$setValidity('remote', false);
  1317 + }
  1318 + },
  1319 + function(result) {
  1320 + //console.log(result);
1191 1321 ngModelCtrl.$setValidity('remote', true);
1192   - } else {
1193   - ngModelCtrl.$setValidity('remote', false);
1194 1322 }
1195   - },
1196   - function(result) {
1197   - //console.log(result);
1198   - ngModelCtrl.$setValidity('remote', true);
1199   - }
1200   - );
  1323 + );
  1324 + }
  1325 +
1201 1326 });
1202 1327 });
1203 1328 }
... ... @@ -1205,11 +1330,236 @@ angular.module(&#39;ScheduleApp&#39;).directive(&quot;remoteValidaton&quot;, [
1205 1330 }]);
1206 1331  
1207 1332  
  1333 +/**
  1334 + * saSelect2指令,根据属性值,动态载入数据,然后支持拼音搜索,点击右边的按钮清除选择并重新载入数据。
  1335 + * 1、compile阶段使用的属性如下:
  1336 + * required:用于和表单验证连接,指定成required="true"才有效。
  1337 + * 2、link阶段使用的属性如下
  1338 + * model:关联的模型对象
  1339 + * name:表单验证时需要的名字
  1340 + * type:关联的那种数据值(xl/cl/ry)-> 对应线路信息/车辆信息/人员信息,后面有的继续加
  1341 + * modelcolname1:关联的模型字段名字1(一般应该是编码字段)
  1342 + * modelcolname2:关联的模型字段名字2(一般应该是名字字段)
  1343 + * datacolname1;内部数据对应的字段名字1(与模型字段1对应)
  1344 + * datacolname2:内部数据对应的字段名字2(与模型字段2对应)
  1345 + * showcolname:下拉框显示的内部数据字段名(注意:不是模型数据字段名),TODO:以后考虑放动态表达式,并在compile阶段使用
  1346 + * placeholder:select placeholder字符串描述
  1347 + *
  1348 + * $$pyFilter,内部的filter指令,结合简拼音进行拼音过滤。
  1349 + * $$SearchInfoService_g,内部使用的数据服务
  1350 + */
  1351 +// saSelect2指令使用的内部信service
  1352 +angular.module('ScheduleApp').factory('$$SearchInfoService_g', ['$resource', function($resource) {
  1353 + return {
  1354 + xl: $resource(
  1355 + '/line/:type',
  1356 + {order: 'name', direction: 'ASC'},
  1357 + {
  1358 + list: {
  1359 + method: 'GET',
  1360 + isArray: true
  1361 + }
  1362 + }
  1363 + ),
  1364 + ry: $resource(
  1365 + '/personnel/:type',
  1366 + {order: 'personnelName', direction: 'ASC'},
  1367 + {
  1368 + list: {
  1369 + method: 'GET',
  1370 + isArray: true
  1371 + }
  1372 + }
  1373 + ),
  1374 + cl: $resource(
  1375 + '/cars/:type',
  1376 + {order: "insideCode", direction: 'ASC'},
  1377 + {
  1378 + list: {
  1379 + method: 'GET',
  1380 + isArray: true
  1381 + }
  1382 + }
  1383 + )
  1384 + }
  1385 +}]);
  1386 +angular.module('ScheduleApp').filter("$$pyFilter", function() {
  1387 + return function(items, props) {
  1388 + var out = [];
  1389 + var limit = props["limit"] || 20; // 默认20条记录
  1390 +
  1391 + if (angular.isArray(items)) {
  1392 + items.forEach(function(item) {
  1393 + if (out.length < limit) {
  1394 + if (props.search) {
  1395 + var upTerm = props.search.toUpperCase();
  1396 + if(item.fullChars.indexOf(upTerm) != -1
  1397 + || item.camelChars.indexOf(upTerm) != -1) {
  1398 + out.push(item);
  1399 + }
  1400 + }
  1401 + }
  1402 + });
  1403 + }
  1404 +
  1405 + return out;
  1406 + };
  1407 +});
  1408 +angular.module('ScheduleApp').directive("saSelect2", [
  1409 + '$timeout', '$$SearchInfoService_g',
  1410 + function($timeout, $$searchInfoService_g) {
  1411 + return {
  1412 + restrict: 'E',
  1413 + templateUrl: '/pages/scheduleApp/module/other/MySearchSelectTemplate.html',
  1414 + scope: {
  1415 + model: "=" // 独立作用域,关联外部的模型对象
  1416 + },
  1417 + controllerAs: "$saSelectCtrl",
  1418 + bindToController: true,
  1419 + controller: function($scope) {
  1420 + var self = this;
  1421 + self.$$data = []; // 内部关联的数据
  1422 + },
  1423 + /**
  1424 + * 此阶段可以改dom结构,此时angular还没扫描指令,
  1425 + * 这里就可以动态添加其他angularjs的指令字符串,如required指令字符串。
  1426 + * @param tElem
  1427 + * @param tAttrs
  1428 + * @returns {{pre: Function, post: Function}}
  1429 + */
  1430 + compile: function(tElem, tAttrs) {
  1431 + // 1、获取此阶段使用的属性
  1432 + var $required_attr = tAttrs["required"]; // 用于和表单验证连接,指定成required="true"才有效。
  1433 +
  1434 + // 2、处理属性
  1435 +
  1436 + // 确定是否使用angularjs required验证
  1437 + // 属性 required
  1438 + // 如果没有填写,内部不添加验证,如果填写了,并且等于true添加验证,否则不添加
  1439 + if ($required_attr) {
  1440 + if ($required_attr == "true") {
  1441 + // 添加required属性指令
  1442 + tElem.find("ui-select").attr("required", "");
  1443 + } else {
  1444 + // 不等于true,不添加required属性指令
  1445 + }
  1446 + } else {
  1447 + // 不添加required属性指令
  1448 + }
1208 1449  
  1450 + //console.log("saSelect" + ":compile = >" + tElem.html());
  1451 +
  1452 + return {
  1453 + pre: function(scope, element, attr) {
  1454 + // TODO:
  1455 + },
  1456 + /**
  1457 + * 相当于link函数。
  1458 + *
  1459 + * 重要属性如下:
  1460 + * model 是绑定外部值。
  1461 + * dicgroup 字典组的类型
  1462 + * name input name属性值
  1463 + */
  1464 + post: function(scope, element, attr) {
  1465 + // 1、获取此阶段使用的属性
  1466 + var $name_attr = attr["name"]; // 表单验证时需要的名字
  1467 + var $type_attr = attr["type"]; // 关联的那种数据值(xl/cl/ry)-> 对应线路信息/车辆信息/人员信息,后面有的继续加
  1468 + var $modelcolname1_attr = attr["modelcolname1"]; // 关联的模型字段名字1(一般应该是编码字段)
  1469 + var $modelcolname2_attr = attr["modelcolname2"]; // 关联的模型字段名字2(一般应该是名字字段)
  1470 + var $datacolname1_attr = attr["datacolname1"]; // 内部数据对应的字段名字1(与模型字段1对应)
  1471 + var $datacolname2_attr = attr["datacolname2"]; // 内部数据对应的字段名字2(与模型字段2对应)
  1472 + var $showcolname_attr = attr["showcolname"]; // 下拉框显示的内部数据字段名
  1473 + var $placeholder_attr = attr["placeholder"]; // select placeholder字符串描述
  1474 +
  1475 + // 2、处理属性、转换成$saSelectCtrl内部使用的属性
  1476 + if ($name_attr) {
  1477 + scope["$saSelectCtrl"].$name_attr = $name_attr;
  1478 + }
  1479 + if ($placeholder_attr) {
  1480 + scope["$saSelectCtrl"].$placeholder_attr = $placeholder_attr;
  1481 + }
  1482 + if ($showcolname_attr) {
  1483 + scope["$saSelectCtrl"].$showcolname_attr = $showcolname_attr;
  1484 + }
  1485 +
  1486 + // 2-1、添加内部方法,根据type值,改变$$data的值
  1487 + scope["$saSelectCtrl"].$$internal_data_change_fn = function() {
  1488 + // 根据type属性动态载入数据
  1489 + if ($type_attr) {
  1490 + $$searchInfoService_g[$type_attr].list(
  1491 + {type: "all"},
  1492 + function(result) {
  1493 + scope["$saSelectCtrl"].$$data = [];
  1494 + for (var i = 0; i < result.length; i ++) {
  1495 + var data = {}; // data是result的一部分属性集合,根据配置来确定
  1496 + if ($datacolname1_attr) {
  1497 + data[$datacolname1_attr] = result[i][$datacolname1_attr];
  1498 + }
  1499 + if ($datacolname2_attr) {
  1500 + data[$datacolname2_attr] = result[i][$datacolname2_attr];
  1501 + }
  1502 + if ($showcolname_attr) {
  1503 + // 动态添加基于名字的拼音
  1504 + data[$showcolname_attr] = result[i][$showcolname_attr];
  1505 + if (data[$showcolname_attr]) {
  1506 + data["fullChars"] = pinyin.getFullChars(result[i][$showcolname_attr]).toUpperCase(); // 全拼
  1507 + data["camelChars"] = pinyin.getCamelChars(result[i][$showcolname_attr]); // 简拼
  1508 + }
  1509 + }
  1510 + if (data["fullChars"])
  1511 + scope["$saSelectCtrl"].$$data.push(data);
  1512 + }
  1513 + },
  1514 + function(result) {
1209 1515  
  1516 + }
  1517 + );
  1518 + }
  1519 + };
1210 1520  
  1521 + // 3、选择、删除事件映射模型和内部数据对应的字段
  1522 + scope["$saSelectCtrl"].$select_fn_attr = function($item) {
  1523 + if ($modelcolname1_attr && $datacolname1_attr) {
  1524 + scope["$saSelectCtrl"].model[$modelcolname1_attr] = $item[$datacolname1_attr];
  1525 + }
  1526 + if ($modelcolname2_attr && $datacolname2_attr) {
  1527 + scope["$saSelectCtrl"].model[$modelcolname2_attr] = $item[$datacolname2_attr];
  1528 + }
  1529 + };
  1530 + scope["$saSelectCtrl"].$remove_fn_attr = function() {
  1531 + if ($modelcolname1_attr) {
  1532 + scope["$saSelectCtrl"].model[$modelcolname1_attr] = null;
  1533 + }
  1534 + if ($modelcolname2_attr) {
  1535 + scope["$saSelectCtrl"].model[$modelcolname2_attr] = null;
  1536 + }
  1537 + scope["$saSelectCtrl"].$$cmodel = null; // 内部模型清空
1211 1538  
  1539 + scope["$saSelectCtrl"].$$internal_data_change_fn();
  1540 + };
1212 1541  
  1542 + // 4、搜索事件
  1543 + scope["$saSelectCtrl"].$refreshdata_fn_attr = function($search) {
  1544 + //var fullChars = pinyin.getFullChars($search).toUpperCase();
  1545 + //var camelChars = pinyin.getCamelChars($search);
  1546 + //
  1547 + //console.log(fullChars + " " + camelChars);
  1548 + // TODO:事件暂时没用,放着以后再说
  1549 + };
  1550 +
  1551 + // 5、全部载入后,输入的
  1552 + $timeout(function() {
  1553 + // 创建内部使用的绑定对象,用于确认选中那个值
  1554 + scope["$saSelectCtrl"].$$cmodel = scope["$saSelectCtrl"].model[$modelcolname1_attr];
  1555 +
  1556 + scope["$saSelectCtrl"].$$internal_data_change_fn();
  1557 + }, 0);
  1558 + }
  1559 + }
  1560 + }
  1561 + };
  1562 +}]);
1213 1563  
1214 1564  
1215 1565  
... ...
src/main/resources/static/pages/scheduleApp/module/other/MySearchSelectTemplate.html 0 → 100644
  1 +
  2 +<div class="input-group">
  3 + <ui-select ng-model="$saSelectCtrl.$$cmodel" on-select="$saSelectCtrl.$select_fn_attr($item)"
  4 + theme="bootstrap" name="{{$saSelectCtrl.$name_attr}}" >
  5 + <ui-select-match placeholder="{{$saSelectCtrl.$placeholder_attr}}">
  6 + <span>{{$select.selected[$saSelectCtrl.$showcolname_attr]}}</span>
  7 + </ui-select-match>
  8 + <ui-select-choices repeat="item[$saSelectCtrl.$showcolname_attr] as item in $saSelectCtrl.$$data | $$pyFilter: {search : $select.search, limit : 10}"
  9 + refresh="$saSelectCtrl.$refreshdata_fn_attr($select.search)"
  10 + refresh-delay="1000">
  11 + <span ng-bind="item[$saSelectCtrl.$showcolname_attr]"></span>
  12 + </ui-select-choices>
  13 + </ui-select>
  14 + <span class="input-group-btn">
  15 + <button type="button" ng-click="$saSelectCtrl.$remove_fn_attr()" class="btn btn-default">
  16 + <span class="glyphicon glyphicon-trash"></span>
  17 + </button>
  18 + </span>
  19 +</div>
... ...
src/main/resources/static/pages/trafficManage/css/autocompleter.css 0 → 100644
  1 +/**
  2 + * Simplecomplete
  3 + */
  4 +
  5 +.autocompleter {
  6 + width: 20%;
  7 + background: #ffffff;
  8 + position: relative;
  9 + z-index: 100;
  10 +}
  11 +
  12 +.autocompleter,
  13 +.autocompleter-hint {
  14 + position: absolute;
  15 +}
  16 +
  17 +.autocompleter-list {
  18 + box-shadow: inset 0px 0px 6px rgba(0,0,0,0.1);
  19 + list-style: none;
  20 + margin: 0;
  21 + padding: 0;
  22 + text-align: left;
  23 +}
  24 +
  25 +.autocompleter-item-selected {
  26 + background: #ffffff;
  27 +}
  28 +
  29 +.autocompleter-item {
  30 + padding: 6px 12px;
  31 + color: #444444;
  32 + font-size: 14px;
  33 + cursor: pointer;
  34 +}
  35 +
  36 +.autocompleter-item:hover {
  37 + background: #ddd;
  38 +}
  39 +
  40 +.autocompleter-item strong {
  41 + background: #f9de8f;
  42 + text-shadow: 0 1px 0 #ffffff;
  43 +}
  44 +
  45 +.autocompleter-item span {
  46 + color: #bbbbbb;
  47 +}
  48 +
  49 +.autocompleter-hint {
  50 + color: #ccc;
  51 + text-align: left;
  52 + top: -56px;
  53 + font-weight: 400;
  54 + left: 0;
  55 + width: 100%;
  56 + padding: 12px 12px 12px 13px;
  57 + font-size: 24px;
  58 + display: none;
  59 +}
  60 +
  61 +.autocompleter-hint span {
  62 + color: transparent;
  63 +}
  64 +
  65 +
  66 +.autocompleter-closed {
  67 + display: none;
  68 +}
... ...
src/main/resources/static/pages/trafficManage/css/trafficManage.css 0 → 100644
  1 +
  2 +.tab_line{
  3 + background-color: #ffffff;
  4 + height: 800px;
  5 + padding-left: 3px;
  6 + padding-right: 3px;
  7 +}
  8 +.tab_line .breadcrumb{
  9 + color: #3f444a;
  10 + padding-top:10px;
  11 +}
  12 +.tab_line .panel-wrap{
  13 + height: 100%;
  14 + padding-left: 3px;
  15 + padding-right: 3px;
  16 +}
  17 +
  18 +.tab_line .panel-wrap ._panel{
  19 + border: 1px solid #ddd;
  20 + box-shadow: 0 2px 5px 0 rgba(221, 221, 221, 0.32),0 2px 10px 0 rgba(221, 221, 221, 0.32);
  21 + width: 100%;
  22 + height: 100%;
  23 + position: relative;
  24 + /* overflow: auto; */
  25 +}
  26 +.tab_line .panel-wrap ._panel ._head{
  27 + height: 42px;
  28 + line-height: 42px;
  29 + padding-left: 15px;
  30 + font-size: 16px;
  31 + font-family: 微软雅黑;
  32 +}
  33 +.table-striped>tbody>tr:nth-of-type(even) {
  34 + background-color: #eee;
  35 +}
  36 +
  37 +.breadcruma {
  38 + margin:0 auto;
  39 +}
  40 +
  41 +.breadcruma li {
  42 + text-align:center;
  43 + margin:0 auto;
  44 + list-style-type:none;
  45 +}
  46 +.divVerHorCenter{
  47 + line-height: 3;
  48 + position: absolute;
  49 + padding-left: initial;
  50 + top: 50%;
  51 + left: 50%;
  52 + width:50%;
  53 + -webkit-transform: translateX(-50%) translateY(-50%);
  54 +}
0 55 \ No newline at end of file
... ...
src/main/resources/static/pages/trafficManage/js/lineStationUpload.js 0 → 100644
  1 +/**
  2 + *
  3 + * @JSName : common.js(运管功能公共js)
  4 + *
  5 + * @Author : bsth@lq
  6 + *
  7 + * @Description : TODO(运管功能公共js)
  8 + *
  9 + * @Data : 2016年6月29日 上午9:21:17
  10 + *
  11 + * @Version 公交调度系统BS版 0.1
  12 + *
  13 + */
  14 +
  15 +(function(){
  16 + /**
  17 + * 取得编码-公司map
  18 + * gsmap["5"] = 南汇公司
  19 + * gsmap["5_3"] = 芦潮港分公司
  20 + */
  21 + function getBusMap(){
  22 + // 取得公司信息,替换公司编码
  23 + var gsmap = {};
  24 + $get('/business/all', null, function(array){
  25 + $.each(array, function(i, gs){
  26 + var k = gs.upCode + '_' + gs.businessCode;
  27 + if(gs.upCode === '88'){
  28 + k = gs.businessCode;
  29 + }
  30 + gsmap[k] = gs.businessName;
  31 + });
  32 + });
  33 + return gsmap;
  34 + }
  35 + // 填充公司下拉框选择值
  36 + $get('/business/all', {upCode_eq: '88'}, function(array){
  37 +
  38 + // 公司下拉options属性值
  39 + var options = '<option value="">请选择...</option>';
  40 +
  41 + // 遍历array
  42 + $.each(array, function(i,d){
  43 +
  44 + options += '<option value="'+d.businessCode+'">'+d.businessName+'</option>';
  45 +
  46 + });
  47 +
  48 + // 填充公司下拉框options,并添加公司下拉框值改变事件setbrancheCompanySelectOptions
  49 + $('#companySelect').html(options).on('change', setbrancheCompanySelectOptions);
  50 +
  51 + });
  52 +
  53 + // 填充分公司下拉框选择值
  54 + function setbrancheCompanySelectOptions(){
  55 +
  56 + // 获取公司下拉框选择值
  57 + var businessCode = $('#companySelect').val();
  58 +
  59 + // 分公司下拉框options属性值
  60 + var options = '<option value="">请选择...</option>';
  61 +
  62 + // 如果公司选择为空则分公司为空 ; 否则查询出所属公司下的分公司名称和相应分公司代码
  63 + if(businessCode == null || businessCode ==''){
  64 +
  65 + // 填充分公司下拉框options
  66 + $('#brancheCompanySelect').html(options);
  67 +
  68 + } else {
  69 +
  70 + // 查询出所属公司下的分公司名称和相应分公司代码
  71 + $get('/business/all', {upCode_eq: businessCode}, function(array){
  72 +
  73 + // 遍历array
  74 + $.each(array, function(i,d){
  75 +
  76 + options += '<option value="'+d.businessCode+'">'+d.businessName+'</option>';
  77 +
  78 + // 填充分公司下拉框options
  79 + $('#brancheCompanySelect').html(options);
  80 +
  81 + });
  82 + });
  83 +
  84 + // 填充公司下拉框options,并添加公司下拉框值改变事件setbrancheCompanySelectOptions
  85 + $('#brancheCompanySelect').html(options).on('change', setLineAutocompleteOptions);
  86 + }
  87 + }
  88 +
  89 + function setLineAutocompleteOptions(){
  90 + // 搜索参数集合
  91 + var params = {};
  92 + // 搜索字段名称
  93 + var name;
  94 + var items = $("ul.breadcrumb select");
  95 + // 遍历items集合
  96 + for(var j = 0, item; item = items[j++];){
  97 + // 获取字段名称
  98 + name = $(item).attr('name');
  99 + if(name){
  100 + // 赋取相对应的值
  101 + params[name] = $(item).val();
  102 + }
  103 + }
  104 + var lines = new Array();
  105 + var gsmap = getBusMap();
  106 + // 取得所有线路
  107 + $get('/line/all', params, function(allLine) {
  108 + // 遍历数组
  109 + $.each(allLine, function(i, e) {
  110 + var companyCode = e.company;
  111 + e.company = gsmap[e.company];
  112 + e.brancheCompany = gsmap[companyCode+"_"+e.brancheCompany];
  113 + var line = '{"hex":"'+e.company+'","label":"'+e.name+'"}';
  114 + var obj = jQuery.parseJSON(line);
  115 + lines[i]= obj;
  116 + });
  117 +
  118 +
  119 + });
  120 + // 给输入框绑定autocomplete事件
  121 + $("input[name='name_eq']").autocompleter({
  122 + highlightMatches: true,
  123 + source: lines,
  124 + template: '{{ label }} <span>({{ hex }})</span>',
  125 + hint: true,
  126 + empty: false,
  127 + limit: 5,
  128 + });
  129 + }
  130 +
  131 +
  132 + // 设置autocompleter的宽度和输入框一样
  133 + $(".autocompleter").css("width",$("input[name='name_eq']").css("width"))
  134 + // 绑定查询事件
  135 + $("#search").click(searchM);
  136 + // 绑定上传事件
  137 + $("#upload").click(uploadM);
  138 + // 绑定全部移到右边事件
  139 + $("#to_right").click(function(){
  140 + $("#left_div tbody tr:not(.muted)").click();
  141 + });
  142 + // 绑定全部移到左边事件
  143 + $("#to_left").click(function(){
  144 + $("#right_div tbody tr:not(.muted)").click();
  145 + });
  146 + // 查询方法
  147 + function searchM() {
  148 + // 清空已选定列表
  149 + $("#right_div table tbody").empty();
  150 + var params = {};
  151 + // 取得输入框的值
  152 + var inputs = $("ul.breadcrumb input");
  153 + // 遍历数组
  154 + $.each(inputs, function(i, element) {
  155 + params[$(element).attr("name")] = $(element).val();
  156 + });
  157 + var i = layer.load(2);
  158 + $get('/line', params, function(data) {
  159 + var bodyHtm = template('lineStation_list_temp', {
  160 + list : data.content
  161 + });
  162 + $("#left_div table tbody").empty();
  163 + $("#left_div table tbody").append(bodyHtm);
  164 + $("#left_div tbody tr:not(.muted)").click(_click);
  165 + layer.close(i);
  166 + });
  167 + }
  168 +
  169 + // 上传方法
  170 + function uploadM() {
  171 + var params = {};
  172 + // 取得输入框的值
  173 + var trs = $("#right_div tbody tr");
  174 + if (trs.length == 0) {
  175 + alert("请选择模板");
  176 + return;
  177 + }
  178 + // 遍历数组
  179 + $.each(trs, function(i, element) {
  180 + alert($(".ttInfoId", element).html());
  181 + });
  182 + }
  183 +
  184 + // 表格行的单击事件
  185 + function _click() {
  186 + var tmpTr = $(this).clone();
  187 + tmpTr.unbind("click").click(_click);
  188 + // 判断父DIV的ID
  189 + if ($(this).closest(".table-container").attr("id") == "left_div") {
  190 + // 把要移动行的class=".seq"的HTML的内容设成另一分类的最后一个序号
  191 + $(".seq",tmpTr).html($("#right_div tbody tr:not(.muted)").length + 1);
  192 + $("#right_div tbody").append(tmpTr);
  193 + nextAllChildSeqMinusOne($(this));
  194 + } else {
  195 + // 把要移动行的class=".seq"的HTML的内容设成另一分类的最后一个序号
  196 + $(".seq",tmpTr).html($("#left_div tbody tr:not(.muted)").length + 1);
  197 + $("#left_div tbody").append(tmpTr);
  198 + nextAllChildSeqMinusOne($(this));
  199 + }
  200 + $(this).remove();
  201 + }
  202 +
  203 + // 后面所有兄弟节点的中class=".seq"的HTML的内容自减 1
  204 + function nextAllChildSeqMinusOne(theElement){
  205 + $.each(theElement.nextAll(),function(i,e){
  206 + $(".seq",e).html($(".seq",e).html() - 1);
  207 + });
  208 + }
  209 + // 保存左边空表格
  210 + var leftDivTemplate = $("#left_div table").clone(true);
  211 + // 把左边表格的格式复制到右边
  212 + $("#right_div").append(leftDivTemplate);
  213 +
  214 +})();
0 215 \ No newline at end of file
... ...
src/main/resources/static/pages/trafficManage/js/shLineCodeList.js 0 → 100644
  1 +/**
  2 + *
  3 + * @JSName : common.js(运管功能公共js)
  4 + *
  5 + * @Author : bsth@lq
  6 + *
  7 + * @Description : TODO(运管功能公共js)
  8 + *
  9 + * @Data : 2016年6月29日 上午9:21:17
  10 + *
  11 + * @Version 公交调度系统BS版 0.1
  12 + *
  13 + */
  14 +
  15 +(function(){
  16 + /**
  17 + * 取得编码-公司map
  18 + * gsmap["5"] = 南汇公司
  19 + * gsmap["5_3"] = 芦潮港分公司
  20 + */
  21 + function getBusMap(){
  22 + // 取得公司信息,替换公司编码
  23 + var gsmap = {};
  24 + $get('/business/all', null, function(array){
  25 + $.each(array, function(i, gs){
  26 + var k = gs.upCode + '_' + gs.businessCode;
  27 + if(gs.upCode === '88'){
  28 + k = gs.businessCode;
  29 + }
  30 + gsmap[k] = gs.businessName;
  31 + });
  32 + });
  33 + return gsmap;
  34 + }
  35 + var lines = new Array();
  36 + var gsmap = getBusMap();
  37 + // 取得所有线路
  38 + $get('/line/all', null, function(allLine) {
  39 + // 遍历数组
  40 + $.each(allLine, function(i, e) {
  41 + var companyCode = e.company;
  42 + e.company = gsmap[e.company];
  43 + e.brancheCompany = gsmap[companyCode+"_"+e.brancheCompany];
  44 + var line = '{"hex":"' + e.company + '","label":"' + e.name
  45 + + '"}';
  46 + var obj = jQuery.parseJSON(line);
  47 + lines[i] = obj;
  48 + });
  49 + });
  50 + // 给输入框绑定autocomplete事件
  51 + $("input[name='name_like']").autocompleter({
  52 + highlightMatches : true,
  53 + source : lines,
  54 + template : '{{ label }} <span>({{ hex }})</span>',
  55 + hint : true,
  56 + empty : false,
  57 + limit : 5,
  58 + });
  59 + // 设置autocompleter的宽度和输入框一样
  60 + $(".autocompleter").css("width",
  61 + $("input[name='name_like']").css("width"))
  62 + /**
  63 + * -----page : 当前页
  64 + *
  65 + * -----initPag :
  66 + *
  67 + */
  68 + var page = 0,initPag;
  69 + // 绑定查询事件
  70 + $("#search").click(searchM);
  71 + // 查询方法
  72 + function searchM() {
  73 + // 搜索参数集合
  74 + var params = {};
  75 + // 取得输入框的值
  76 + var inputs = $("ul.breadcrumb input");
  77 + // 遍历数组
  78 + $.each(inputs, function(i, element) {
  79 + params[$(element).attr("name")] = $(element).val();
  80 + });
  81 + page = 0;
  82 +
  83 + loadTableDate(params,true);
  84 + }
  85 +
  86 + /**
  87 + * 表格数据分页加载事件
  88 + *
  89 + * ------@param : 查询参数
  90 + *
  91 + * ------@isPon : 是否重新分页
  92 + *
  93 + */
  94 + function loadTableDate(param,isPon){
  95 + // 搜索参数
  96 + var params = {};
  97 + if(param)
  98 + params = param;
  99 + // 排序(按更新时间)
  100 + params['order'] = 'id';
  101 + // 记录当前页数
  102 + params['page'] = page;
  103 + // 弹出正在加载层
  104 + var i = layer.load(2);
  105 + // 异步请求获取表格数据
  106 + $.get('/line',params,function(result){
  107 + // 遍历数组
  108 + $.each(result.content, function(i, e) {
  109 + var companyCode = e.company;
  110 + e.company = gsmap[e.company];
  111 + e.brancheCompany = gsmap[companyCode+"_"+e.brancheCompany];
  112 + });
  113 + // 把数据填充到模版中
  114 + var tbodyHtml = template('shLineCode_list_temp',{list:result.content});
  115 + // 把渲染好的模版html文本追加到表格中
  116 + $('.table-container tbody').html(tbodyHtml);
  117 + // 是重新分页且返回数据长度大于0
  118 + if(isPon && result.content.length > 0){
  119 + // 重新分页
  120 + initPag = true;
  121 + // 分页栏
  122 + showPagination(result);
  123 + }
  124 + // 关闭弹出加载层
  125 + layer.close(i);
  126 + });
  127 + }
  128 +
  129 + /**
  130 + * 分页栏组件
  131 + *
  132 + */
  133 + function showPagination(data){
  134 + // 分页组件
  135 + $('#pagination').jqPaginator({
  136 + // 总页数
  137 + totalPages: data.totalPages,
  138 + // 中间显示页数
  139 + visiblePages: 6,
  140 + // 当前页
  141 + currentPage: page + 1,
  142 + first: '<li class="first"><a href="javascript:void(0);">首页<\/a><\/li>',
  143 + prev: '<li class="prev"><a href="javascript:void(0);">上一页<\/a><\/li>',
  144 + next: '<li class="next"><a href="javascript:void(0);">下一页<\/a><\/li>',
  145 + last: '<li class="last"><a href="javascript:void(0);">尾页<\/a><\/li>',
  146 + page: '<li class="page"><a href="javascript:void(0);">{{page}}<\/a><\/li>',
  147 + onPageChange: function (num, type) {
  148 + if(initPag){
  149 + initPag = false;
  150 + return;
  151 + }
  152 + page = num - 1;
  153 + loadTableDate(null, false);
  154 + }
  155 + });
  156 + }
  157 +
  158 +})();
0 159 \ No newline at end of file
... ...
src/main/resources/static/pages/trafficManage/js/timeTempletUpload.js 0 → 100644
  1 +/**
  2 + *
  3 + * @JSName : common.js(运管功能公共js)
  4 + *
  5 + * @Author : bsth@lq
  6 + *
  7 + * @Description : TODO(运管功能公共js)
  8 + *
  9 + * @Data : 2016年6月29日 上午9:21:17
  10 + *
  11 + * @Version 公交调度系统BS版 0.1
  12 + *
  13 + */
  14 +
  15 +(function(){
  16 + /**
  17 + * 取得编码-公司map
  18 + * gsmap["5"] = 南汇公司
  19 + * gsmap["5_3"] = 芦潮港分公司
  20 + */
  21 + function getBusMap(){
  22 + // 取得公司信息,替换公司编码
  23 + var gsmap = {};
  24 + $get('/business/all', null, function(array){
  25 + $.each(array, function(i, gs){
  26 + var k = gs.upCode + '_' + gs.businessCode;
  27 + if(gs.upCode === '88'){
  28 + k = gs.businessCode;
  29 + }
  30 + gsmap[k] = gs.businessName;
  31 + });
  32 + });
  33 + return gsmap;
  34 + }
  35 + var lines = new Array();
  36 + var gsmap = getBusMap();
  37 + console.log(gsmap);
  38 + // 取得所有线路
  39 + $get('/line/all', null, function(allLine) {
  40 + // 遍历数组
  41 + $.each(allLine, function(i, e) {
  42 + var companyCode = e.company;
  43 + e.company = gsmap[e.company];
  44 + e.brancheCompany = gsmap[companyCode+"_"+e.brancheCompany];
  45 + var line = '{"hex":"' + e.company + '","label":"' + e.name
  46 + + '"}';
  47 + var obj = jQuery.parseJSON(line);
  48 + lines[i] = obj;
  49 + });
  50 + });
  51 + // 给输入框绑定autocomplete事件
  52 + $("input[name='xl.name_eq']").autocompleter({
  53 + highlightMatches : true,
  54 + source : lines,
  55 + template : '{{ label }} <span>({{ hex }})</span>',
  56 + hint : true,
  57 + empty : false,
  58 + limit : 5,
  59 + });
  60 + // 设置autocompleter的宽度和输入框一样
  61 + $(".autocompleter").css("width",
  62 + $("input[name='xl.name_eq']").css("width"))
  63 + // 绑定查询事件
  64 + $("#search").click(searchM);
  65 + // 绑定上传事件
  66 + $("#upload").click(uploadM);
  67 + // 绑定全部移到右边事件
  68 + $("#to_right").click(function() {
  69 + $("#left_div tbody tr:not(.muted)").click();
  70 + });
  71 + // 绑定全部移到左边事件
  72 + $("#to_left").click(function() {
  73 + $("#right_div tbody tr:not(.muted)").click();
  74 + });
  75 + // 查询方法
  76 + function searchM() {
  77 + // 清空已选定列表
  78 + $("#right_div table tbody").empty();
  79 + var params = {};
  80 + // 取得输入框的值
  81 + var inputs = $("ul.breadcrumb input");
  82 + // 遍历数组
  83 + $.each(inputs, function(i, element) {
  84 + params[$(element).attr("name")] = $(element).val();
  85 + });
  86 + var i = layer.load(2);
  87 + $get('/spc', params, function(data) {
  88 + _dateFormat(data.content);
  89 + var bodyHtm = template('timeTemplet_list_temp', {
  90 + list : data.content
  91 + });
  92 + $("#left_div table tbody").empty();
  93 + $("#left_div table tbody").append(bodyHtm);
  94 + $("#left_div tbody tr:not(.muted)").click(_click);
  95 + layer.close(i);
  96 + });
  97 + }
  98 +
  99 + // 上传方法
  100 + function uploadM() {
  101 + var params = {};
  102 + // 取得输入框的值
  103 + var trs = $("#right_div tbody tr");
  104 + if (trs.length == 0) {
  105 + alert("请选择模板");
  106 + return;
  107 + }
  108 + // 遍历数组
  109 + $.each(trs, function(i, element) {
  110 + alert($(".ttInfoId", element).html());
  111 + });
  112 + }
  113 +
  114 + // 表格行的单击事件
  115 + function _click() {
  116 + var tmpTr = $(this).clone();
  117 + tmpTr.unbind("click").click(_click);
  118 + // 判断父DIV的ID
  119 + if ($(this).closest(".table-container").attr("id") == "left_div") {
  120 + // 把要移动行的class=".seq"的HTML的内容设成另一分类的最后一个序号
  121 + $(".seq", tmpTr).html(
  122 + $("#right_div tbody tr:not(.muted)").length + 1);
  123 + $("#right_div tbody").append(tmpTr);
  124 + nextAllChildSeqMinusOne($(this));
  125 + } else {
  126 + // 把要移动行的class=".seq"的HTML的内容设成另一分类的最后一个序号
  127 + $(".seq", tmpTr).html(
  128 + $("#left_div tbody tr:not(.muted)").length + 1);
  129 + $("#left_div tbody").append(tmpTr);
  130 + nextAllChildSeqMinusOne($(this));
  131 + }
  132 + $(this).remove();
  133 + }
  134 +
  135 + // 后面所有兄弟节点的中class=".seq"的HTML的内容自减 1
  136 + function nextAllChildSeqMinusOne(theElement) {
  137 + $.each(theElement.nextAll(), function(i, e) {
  138 + $(".seq", e).html($(".seq", e).html() - 1);
  139 + });
  140 + }
  141 + // 保存左边空表格
  142 + var leftDivTemplate = $("#left_div table").clone(true);
  143 + // 把左边表格的格式复制到右边
  144 + $("#right_div").append(leftDivTemplate);
  145 + //转换时间格式
  146 + function _dateFormat(list) {
  147 + var fs = 'YYYY-MM-DD HH:mm';
  148 + $.each(list, function(i, obj) {
  149 + obj.ttInfo.qyrq = moment(obj.ttInfo.qyrq).format(fs);
  150 + });
  151 + }
  152 +})();
0 153 \ No newline at end of file
... ...
src/main/resources/static/pages/trafficManage/lineStationUpload.html 0 → 100644
  1 +<link href="css/trafficManage.css" rel="stylesheet" type="text/css" />
  2 +<link href="css/autocompleter.css" rel="stylesheet" type="text/css" />
  3 +<ul class="page-breadcrumb breadcrumb">
  4 + <li><a href="/pages/home.html" data-pjax>首页</a> <i class="fa fa-circle"></i></li>
  5 + <li><span class="active">运维管理</span> <i class="fa fa-circle"></i></li>
  6 + <li><span class="active">线路停靠站上传</span></li>
  7 +</ul>
  8 +<div class="tab_line">
  9 + <div class="col-md-12">
  10 + <ul class="breadcrumb">
  11 + <li>公司:</li>
  12 + <li><select name="company_eq" class="form-control" id="companySelect"></select></li>
  13 + <li>分公司:</li>
  14 + <li><select name="brancheCompany_eq" class="form-control" id="brancheCompanySelect"></select></li>
  15 + <li>线路名称:</li>
  16 + <li><input type="text" class="form-control form-filter input-sm"
  17 + name="name_eq" placeholder="请输入线路名称" maxlength="40" /></li>
  18 + <li><a class="btn btn-circle blue" id="search">查询</a></li>
  19 + <li><a class="btn btn-circle red" id="upload">上传</a></li>
  20 + </ul>
  21 + </div>
  22 + <!-- Begin: left-div -->
  23 + <div class="col-md-5 panel-wrap" style="height: 60%;">
  24 + <div class="_panel">
  25 + <div class="_head" style="color: #2765A7;">待选上传站点线路列表</div>
  26 + <div class="table-container" id="left_div">
  27 + <table
  28 + class="table table-striped table-bordered table-advance pb-table head">
  29 + <thead>
  30 + <tr>
  31 + <th width="5%">#</th>
  32 + <th width="20%">线路编码</th>
  33 + <th width="15%">线路名称</th>
  34 + </tr>
  35 + </thead>
  36 + <tbody>
  37 + </tbody>
  38 + </table>
  39 + </div>
  40 + </div>
  41 + </div>
  42 + <div class="col-md-2" style="height: 60%;">
  43 + <ul class="breadcruma divVerHorCenter">
  44 + <li><a class="btn btn-circle blue btn-outline" id="to_right">>></a></li>
  45 + <li><a class="btn btn-circle blue btn-outline" id="to_left"><<</a></li>
  46 + </ul>
  47 + </div>
  48 + <!-- End: left-div -->
  49 + <!-- Begin: right-div -->
  50 + <div class="col-md-5 panel-wrap" style="height: 60%;">
  51 + <div class="_panel">
  52 + <div class="_head" style="color: #2765A7;">已选上传站点线路列表</div>
  53 + <div class="table-container" id="right_div"></div>
  54 + </div>
  55 + </div>
  56 + <!-- End: right-div -->
  57 +</div>
  58 +<script id="lineStation_list_temp" type="text/html">
  59 +{{each list as obj i}}
  60 +<tr>
  61 + <td class="seq" style="vertical-align: middle;">
  62 + {{i+1}}
  63 + </td>
  64 + <td>
  65 + {{obj.lineCode}}
  66 + </td>
  67 + <td class="ttInfoId">
  68 + {{obj.name}}
  69 + </td>
  70 +</tr>
  71 +{{/each}}
  72 +{{if list.length == 0}}
  73 +<tr class="muted">
  74 + <td colspan=5 style="text-align: center;"><h6>没有找到相关数据</h6></td>
  75 +</tr>
  76 +{{/if}}
  77 + </script>
  78 +<script src="./js/lineStationUpload.js"></script>
... ...
src/main/resources/static/pages/trafficManage/shLineCodeList.html 0 → 100644
  1 +<link href="css/trafficManage.css" rel="stylesheet" type="text/css" />
  2 +<link href="css/autocompleter.css" rel="stylesheet" type="text/css" />
  3 +<ul class="page-breadcrumb breadcrumb">
  4 + <li><a href="/pages/home.html" data-pjax>首页</a> <i
  5 + class="fa fa-circle"></i></li>
  6 + <li><span class="active">运维管理</span> <i class="fa fa-circle"></i></li>
  7 + <li><span class="active">上海市线路编码查询</span></li>
  8 +</ul>
  9 +<div class="tab_line">
  10 + <div class="col-md-12">
  11 + <ul class="breadcrumb">
  12 + <li>线路名称:</li>
  13 + <li><input type="text" class="form-control form-filter input-sm"
  14 + name="name_like" placeholder="请输入线路名称" maxlength="40" /></li>
  15 + <li><a class="btn btn-circle blue" id="search">查询</a></li>
  16 + </ul>
  17 + </div>
  18 + <div class="col-md-12 panel-wrap">
  19 + <div class="_panel">
  20 + <div class="_head" style="color: #2765A7;">待选线路模板列表</div>
  21 + <div class="table-container">
  22 + <table
  23 + class="table table-striped table-bordered table-advance pb-table head">
  24 + <thead>
  25 + <tr>
  26 + <th width="5%">序号</th>
  27 + <th width="20%">线路名称</th>
  28 + <th width="15%">所属公司</th>
  29 + <th width="25%">调度方式</th>
  30 + <th>上海市线路编码</th>
  31 + </tr>
  32 + </thead>
  33 + <tbody>
  34 + </tbody>
  35 + </table>
  36 + <div style="text-align: right;">
  37 + <ul id="pagination" class="pagination"></ul>
  38 + </div>
  39 + </div>
  40 + </div>
  41 + </div>
  42 +</div>
  43 +<script id="shLineCode_list_temp" type="text/html">
  44 +{{each list as obj i}}
  45 +<tr>
  46 + <td class="seq" style="vertical-align: middle;">
  47 + {{i+1}}
  48 + </td>
  49 + <td>
  50 + {{obj.name}}
  51 + </td>
  52 + <td class="ttInfoId">
  53 + {{obj.company}}
  54 + </td>
  55 + <td>
  56 + 全程
  57 + </td>
  58 + <td >
  59 + {{obj.shanghaiLinecode}}
  60 + </td>
  61 +</tr>
  62 +{{/each}}
  63 +{{if list.length == 0}}
  64 +<tr class="muted">
  65 + <td colspan=5 style="text-align: center;"><h6>没有找到相关数据</h6></td>
  66 +</tr>
  67 +{{/if}}
  68 + </script>
  69 +<script src="./js/shLineCodeList.js"></script>
0 70 \ No newline at end of file
... ...
src/main/resources/static/pages/trafficManage/timeTempletUpload.html 0 → 100644
  1 +<link href="css/trafficManage.css" rel="stylesheet" type="text/css" />
  2 +<link href="css/autocompleter.css" rel="stylesheet" type="text/css" />
  3 +<ul class="page-breadcrumb breadcrumb">
  4 + <li><a href="/pages/home.html" data-pjax>首页</a> <i
  5 + class="fa fa-circle"></i></li>
  6 + <li><span class="active">运维管理</span> <i class="fa fa-circle"></i></li>
  7 + <li><span class="active">时刻模板上传</span></li>
  8 +</ul>
  9 +<div class="tab_line">
  10 + <div class="col-md-12">
  11 + <ul class="breadcrumb">
  12 + <li>线路名称:</li>
  13 + <li><input type="text" class="form-control form-filter input-sm"
  14 + name="xl.name_eq" placeholder="请输入线路名称" maxlength="40" /></li>
  15 + <li>模板名称(关键字):</li>
  16 + <li><input type="text" class="form-control form-filter input-sm"
  17 + name="ttInfo.name_like" maxlength="40" /></li>
  18 + <li><a class="btn btn-circle blue" id="search">查询</a></li>
  19 + <li><a class="btn btn-circle red" id="upload">上传</a></li>
  20 + </ul>
  21 + </div>
  22 + <!-- Begin: left-div -->
  23 + <div class="col-md-5 panel-wrap" style="height: 60%;">
  24 + <div class="_panel">
  25 + <div class="_head" style="color: #2765A7;">待选线路模板列表</div>
  26 + <div class="table-container" id="left_div">
  27 + <table
  28 + class="table table-striped table-bordered table-advance pb-table head">
  29 + <thead>
  30 + <tr>
  31 + <th width="5%">#</th>
  32 + <th width="20%">线路名称</th>
  33 + <th width="15%">模板ID</th>
  34 + <th width="25%">模板名称</th>
  35 + <th>启用日期</th>
  36 + </tr>
  37 + </thead>
  38 + <tbody>
  39 + </tbody>
  40 + </table>
  41 + </div>
  42 + </div>
  43 + </div>
  44 + <div class="col-md-2" style="height: 60%;">
  45 + <ul class="breadcruma divVerHorCenter">
  46 + <li><a class="btn btn-circle blue btn-outline" id="to_right">>></a></li>
  47 + <li><a class="btn btn-circle blue btn-outline" id="to_left"><<</a></li>
  48 + </ul>
  49 + </div>
  50 + <!-- End: left-div -->
  51 + <!-- Begin: right-div -->
  52 + <div class="col-md-5 panel-wrap" style="height: 60%;">
  53 + <div class="_panel">
  54 + <div class="_head" style="color: #2765A7;">已选线路模板列表</div>
  55 + <div class="table-container" id="right_div"></div>
  56 + </div>
  57 + </div>
  58 + <!-- End: right-div -->
  59 +</div>
  60 +<script id="timeTemplet_list_temp" type="text/html">
  61 +{{each list as obj i}}
  62 +<tr>
  63 + <td class="seq" style="vertical-align: middle;">
  64 + {{i+1}}
  65 + </td>
  66 + <td>
  67 + {{obj.xl.name}}
  68 + </td>
  69 + <td class="ttInfoId">
  70 + {{obj.ttInfo.id}}
  71 + </td>
  72 + <td>
  73 + {{obj.ttInfo.name}}
  74 + </td>
  75 + <td >
  76 + {{obj.ttInfo.qyrq}}
  77 + </td>
  78 +</tr>
  79 +{{/each}}
  80 +{{if list.length == 0}}
  81 +<tr class="muted">
  82 + <td colspan=5 style="text-align: center;"><h6>没有找到相关数据</h6></td>
  83 +</tr>
  84 +{{/if}}
  85 + </script>
  86 +<script src="./js/timeTempletUpload.js"></script>
0 87 \ No newline at end of file
... ...