Commit 562d070daeda3727d1db7cb4c1140040963df70d

Authored by 潘钊
2 parents 67f552da 0e3d4c89

Merge branch 'minhang' into pudong

# Conflicts:
#	src/main/resources/static/real_control_v2/main.html
Showing 34 changed files with 2033 additions and 1141 deletions

Too many changes to show.

To preserve performance only 34 of 132 files are displayed.

src/main/java/com/bsth/controller/BaseController.java
@@ -24,37 +24,34 @@ import java.util.List; @@ -24,37 +24,34 @@ import java.util.List;
24 import java.util.Map; 24 import java.util.Map;
25 25
26 /** 26 /**
27 - *  
28 - * @ClassName: BaseController  
29 - * @Description: TODO(基础的Controller实现)  
30 - * @author PanZhao  
31 - * @date 2016年3月17日 下午12:44:06  
32 - *  
33 * @param <T> 27 * @param <T>
34 * @param <ID> 主键类型 28 * @param <ID> 主键类型
  29 + * @author PanZhao
  30 + * @ClassName: BaseController
  31 + * @Description: TODO(基础的Controller实现)
  32 + * @date 2016年3月17日 下午12:44:06
35 */ 33 */
36 public class BaseController<T, ID extends Serializable> { 34 public class BaseController<T, ID extends Serializable> {
37 -  
38 - @Autowired  
39 - protected BaseService<T, ID> baseService; 35 +
  36 + @Autowired
  37 + protected BaseService<T, ID> baseService;
40 @Autowired 38 @Autowired
41 DataImportExportService dataImportExportService; 39 DataImportExportService dataImportExportService;
42 -  
43 - /**  
44 - *  
45 - * @Title: list  
46 - * @Description: TODO(多条件分页查询)  
47 - * @param @param map 查询条件  
48 - * @param @param page 页码  
49 - * @param @param size 每页显示数量  
50 - * @throws  
51 - */  
52 - @RequestMapping(method = RequestMethod.GET)  
53 - public Page<T> list(@RequestParam Map<String, Object> map,  
54 - @RequestParam(defaultValue = "0") int page,  
55 - @RequestParam(defaultValue = "10") int size,  
56 - @RequestParam(defaultValue = "id") String order,  
57 - @RequestParam(defaultValue = "DESC") String direction){ 40 +
  41 + /**
  42 + * @param @param map 查询条件
  43 + * @param @param page 页码
  44 + * @param @param size 每页显示数量
  45 + * @throws
  46 + * @Title: list
  47 + * @Description: TODO(多条件分页查询)
  48 + */
  49 + @RequestMapping(method = RequestMethod.GET)
  50 + public Page<T> list(@RequestParam Map<String, Object> map,
  51 + @RequestParam(defaultValue = "0") int page,
  52 + @RequestParam(defaultValue = "10") int size,
  53 + @RequestParam(defaultValue = "id") String order,
  54 + @RequestParam(defaultValue = "DESC") String direction) {
58 55
59 // 允许多个字段排序,order可以写单个字段,也可以写多个字段 56 // 允许多个字段排序,order可以写单个字段,也可以写多个字段
60 // 多个字段格式:{col1},{col2},{col3},....,{coln} 57 // 多个字段格式:{col1},{col2},{col3},....,{coln}
@@ -81,60 +78,57 @@ public class BaseController&lt;T, ID extends Serializable&gt; { @@ -81,60 +78,57 @@ public class BaseController&lt;T, ID extends Serializable&gt; {
81 } else { 78 } else {
82 throw new RuntimeException("多字段排序参数格式问题,排序顺序和字段数不一致"); 79 throw new RuntimeException("多字段排序参数格式问题,排序顺序和字段数不一致");
83 } 80 }
84 - }  
85 -  
86 - /**  
87 - *  
88 - * @Title: list  
89 - * @Description: TODO(多条件查询)  
90 - * @param @param map  
91 - * @throws  
92 - */  
93 - @RequestMapping(value = "/all", method = RequestMethod.GET)  
94 - public Iterable<T> list(@RequestParam Map<String, Object> map){  
95 - return baseService.list(map);  
96 - }  
97 -  
98 - /**  
99 - *  
100 - * @Title: save  
101 - * @Description: TODO(持久化对象)  
102 - * @param @param t  
103 - * @param @return 设定文件  
104 - * @return Map<String,Object> {status: 1(成功),-1(失败)}  
105 - * @throws  
106 - */  
107 - @RequestMapping(method = RequestMethod.POST)  
108 - public Map<String, Object> save(T t){  
109 - return baseService.save(t);  
110 - }  
111 -  
112 - /**  
113 - *  
114 - * @Title: findById  
115 - * @Description: TODO(根据主键获取单个对象)  
116 - * @param @param id  
117 - * @throws  
118 - */  
119 - @RequestMapping(value="/{id}",method = RequestMethod.GET)  
120 - public T findById(@PathVariable("id") ID id){  
121 - return baseService.findById(id);  
122 - }  
123 -  
124 - /**  
125 - *  
126 - * @Title: delete  
127 - * @Description: TODO(根据主键删除对象)  
128 - * @param @param id  
129 - * @throws  
130 - */  
131 - @RequestMapping(value="/{id}",method = RequestMethod.DELETE)  
132 - public Map<String, Object> delete(@PathVariable("id") ID id){  
133 - return baseService.delete(id);  
134 - } 81 + }
  82 +
  83 + /**
  84 + * @param @param map
  85 + * @throws
  86 + * @Title: list
  87 + * @Description: TODO(多条件查询)
  88 + */
  89 + @RequestMapping(value = "/all", method = RequestMethod.GET)
  90 + public Iterable<T> list(@RequestParam Map<String, Object> map) {
  91 + return baseService.list(map);
  92 + }
  93 +
  94 + /**
  95 + * @param @param t
  96 + * @param @return 设定文件
  97 + * @return Map<String,Object> {status: 1(成功),-1(失败)}
  98 + * @throws
  99 + * @Title: save
  100 + * @Description: TODO(持久化对象)
  101 + */
  102 + @RequestMapping(method = RequestMethod.POST)
  103 + public Map<String, Object> save(T t) {
  104 + return baseService.save(t);
  105 + }
  106 +
  107 + /**
  108 + * @param @param id
  109 + * @throws
  110 + * @Title: findById
  111 + * @Description: TODO(根据主键获取单个对象)
  112 + */
  113 + @RequestMapping(value = "/{id}", method = RequestMethod.GET)
  114 + public T findById(@PathVariable("id") ID id) {
  115 + return baseService.findById(id);
  116 + }
  117 +
  118 + /**
  119 + * @param @param id
  120 + * @throws
  121 + * @Title: delete
  122 + * @Description: TODO(根据主键删除对象)
  123 + */
  124 + @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
  125 + public Map<String, Object> delete(@PathVariable("id") ID id) {
  126 + return baseService.delete(id);
  127 + }
135 128
136 /** 129 /**
137 * 上传数据文件,并使用ktr转换文件导入数据。 130 * 上传数据文件,并使用ktr转换文件导入数据。
  131 + *
138 * @param file 132 * @param file
139 * @return 133 * @return
140 * @throws Exception 134 * @throws Exception
@@ -163,6 +157,7 @@ public class BaseController&lt;T, ID extends Serializable&gt; { @@ -163,6 +157,7 @@ public class BaseController&lt;T, ID extends Serializable&gt; {
163 157
164 /** 158 /**
165 * 使用ktr导出数据。 159 * 使用ktr导出数据。
  160 + *
166 * @param response 161 * @param response
167 * @throws Exception 162 * @throws Exception
168 */ 163 */
@@ -241,5 +236,5 @@ public class BaseController&lt;T, ID extends Serializable&gt; { @@ -241,5 +236,5 @@ public class BaseController&lt;T, ID extends Serializable&gt; {
241 // 默认返回异常,子类如果要使用导入功能,必须覆写此方法,指定ktr文件类路径 236 // 默认返回异常,子类如果要使用导入功能,必须覆写此方法,指定ktr文件类路径
242 throw new RuntimeException("必须override,并指定ktr classpath"); 237 throw new RuntimeException("必须override,并指定ktr classpath");
243 } 238 }
244 - 239 +
245 } 240 }
src/main/java/com/bsth/controller/gps/GpsController.java
@@ -15,77 +15,85 @@ import java.util.Map; @@ -15,77 +15,85 @@ import java.util.Map;
15 @RequestMapping("gps") 15 @RequestMapping("gps")
16 public class GpsController { 16 public class GpsController {
17 17
18 - @Autowired  
19 - GpsRealData gpsRealData;  
20 -  
21 - @Autowired  
22 - GpsService gpsService;  
23 -  
24 - @RequestMapping(value = "/real/all")  
25 - public Map<String, Object> search(@RequestParam Map<String, Object> map,  
26 - @RequestParam(defaultValue = "0") int page,  
27 - @RequestParam(defaultValue = "15") int size,  
28 - @RequestParam(defaultValue = "timestamp") String order,  
29 - @RequestParam(defaultValue = "DESC") String direction){  
30 -  
31 -  
32 - return gpsService.search(map, page, size, order, direction);  
33 - }  
34 -  
35 - @RequestMapping(value = "/real/line/{lineCode}")  
36 - public List<GpsEntity> findByLineCode(@PathVariable("lineCode") String lineCode) {  
37 - return gpsRealData.getByLine(lineCode);  
38 - }  
39 -  
40 - @RequestMapping(value = "/real/line")  
41 - public List<GpsEntity> findByLineCodes(@RequestParam String lineCodes) {  
42 - return gpsRealData.get(Splitter.on(",").splitToList(lineCodes));  
43 - }  
44 -  
45 - @RequestMapping(value = "/allDevices")  
46 - public Iterable<String> allDevices(){  
47 - return gpsRealData.allDevices();  
48 - }  
49 -  
50 - @RequestMapping(value = "/removeRealGps", method = RequestMethod.POST)  
51 - public Map<String, Object> removeRealGps(@RequestParam String device){  
52 - return gpsService.removeRealGps(device);  
53 - }  
54 -  
55 - /**  
56 - *  
57 - * @Title: history @Description: TODO(这个方法给测试页面用) @throws  
58 - */  
59 - @RequestMapping(value = "/history/{device}")  
60 - public List<Map<String, Object>> history(@PathVariable("device") String device, @RequestParam Long startTime,  
61 - @RequestParam Long endTime, @RequestParam int directions) {  
62 -  
63 - return gpsService.history(device, startTime, endTime, directions);  
64 - }  
65 -  
66 - @RequestMapping(value = "/gpsHistory/multiple")  
67 - public List<Map<String, Object>> gpsHistory(@RequestParam String[] nbbmArray, @RequestParam Long st,  
68 - @RequestParam Long et) {  
69 - return gpsService.history(nbbmArray, st, et);  
70 - } 18 + @Autowired
  19 + GpsRealData gpsRealData;
  20 +
  21 + @Autowired
  22 + GpsService gpsService;
  23 +
  24 + @RequestMapping(value = "/real/all")
  25 + public Map<String, Object> search(@RequestParam Map<String, Object> map,
  26 + @RequestParam(defaultValue = "0") int page,
  27 + @RequestParam(defaultValue = "15") int size,
  28 + @RequestParam(defaultValue = "timestamp") String order,
  29 + @RequestParam(defaultValue = "DESC") String direction) {
  30 +
  31 +
  32 + return gpsService.search(map, page, size, order, direction);
  33 + }
  34 +
  35 + @RequestMapping(value = "/real/line/{lineCode}")
  36 + public List<GpsEntity> findByLineCode(@PathVariable("lineCode") String lineCode) {
  37 + return gpsRealData.getByLine(lineCode);
  38 + }
  39 +
  40 + @RequestMapping(value = "/real/line")
  41 + public List<GpsEntity> findByLineCodes(@RequestParam String lineCodes) {
  42 + return gpsRealData.get(Splitter.on(",").splitToList(lineCodes));
  43 + }
  44 +
  45 + @RequestMapping(value = "/allDevices")
  46 + public Iterable<String> allDevices() {
  47 + return gpsRealData.allDevices();
  48 + }
  49 +
  50 + @RequestMapping(value = "/removeRealGps", method = RequestMethod.POST)
  51 + public Map<String, Object> removeRealGps(@RequestParam String device) {
  52 + return gpsService.removeRealGps(device);
  53 + }
  54 +
  55 + /**
  56 + * @Title: history @Description: TODO(这个方法给测试页面用) @throws
  57 + */
  58 + @RequestMapping(value = "/history/{device}")
  59 + public List<Map<String, Object>> history(@PathVariable("device") String device, @RequestParam Long startTime,
  60 + @RequestParam Long endTime, @RequestParam int directions) {
  61 +
  62 + return gpsService.history(device, startTime, endTime, directions);
  63 + }
  64 +
  65 + @RequestMapping(value = "/gpsHistory/multiple")
  66 + public List<Map<String, Object>> gpsHistory(@RequestParam String[] nbbmArray, @RequestParam Long st,
  67 + @RequestParam Long et) {
  68 + return gpsService.history(nbbmArray, st, et);
  69 + }
71 70
72 /*@RequestMapping(value = "/analyse/ram") 71 /*@RequestMapping(value = "/analyse/ram")
73 - public List<ArrivalInfo> ramData(@RequestParam String nbbm) { 72 + public List<ArrivalInfo> ramData(@RequestParam String nbbm) {
74 return ArrivalDataBuffer.allMap.get(nbbm); 73 return ArrivalDataBuffer.allMap.get(nbbm);
75 }*/ 74 }*/
76 75
77 - @RequestMapping(value = "/Car2DeviceId")  
78 - public Map<String, String> findCarDeviceIdMap() {  
79 - return BasicData.deviceId2NbbmMap.inverse();  
80 - }  
81 -  
82 - @RequestMapping(value = "/buffAera")  
83 - public Map<String, Object> findBuffAeraByCode(@RequestParam String code,@RequestParam String type){  
84 - return gpsService.findBuffAeraByCode(code, type);  
85 - }  
86 -  
87 - @RequestMapping(value = "/findRoadSpeed")  
88 - public Map<String, Object> findRoadSpeed(@RequestParam String lineCode){  
89 - return gpsService.findRoadSpeed(lineCode);  
90 - } 76 + @RequestMapping(value = "/Car2DeviceId")
  77 + public Map<String, String> findCarDeviceIdMap() {
  78 + return BasicData.deviceId2NbbmMap.inverse();
  79 + }
  80 +
  81 + @RequestMapping(value = "/buffAera")
  82 + public Map<String, Object> findBuffAeraByCode(@RequestParam String code, @RequestParam String type) {
  83 + return gpsService.findBuffAeraByCode(code, type);
  84 + }
  85 +
  86 + @RequestMapping(value = "/findRoadSpeed")
  87 + public Map<String, Object> findRoadSpeed(@RequestParam String lineCode) {
  88 + return gpsService.findRoadSpeed(lineCode);
  89 + }
  90 +
  91 + /**
  92 + * gps补全
  93 + * @return
  94 + */
  95 + @RequestMapping(value = "/gpsCompletion", method = RequestMethod.POST)
  96 + public Map<String, Object> gpsCompletion(@RequestParam long schId) {
  97 + return gpsService.gpsCompletion(schId);
  98 + }
91 } 99 }
src/main/java/com/bsth/controller/realcontrol/PageForwardingController.java 0 → 100644
  1 +package com.bsth.controller.realcontrol;
  2 +
  3 +import com.bsth.entity.sys.SysUser;
  4 +import com.bsth.security.util.SecurityUtils;
  5 +import org.springframework.stereotype.Controller;
  6 +import org.springframework.web.bind.annotation.RequestMapping;
  7 +import org.springframework.web.servlet.ModelAndView;
  8 +
  9 +/**
  10 + * 线调登入页面转发
  11 + * Created by panzhao on 2017/1/21.
  12 + */
  13 +@Controller
  14 +@RequestMapping("real_control")
  15 +public class PageForwardingController {
  16 +
  17 + @RequestMapping("/v2")
  18 + public ModelAndView v2(){
  19 + ModelAndView mv = new ModelAndView();
  20 + SysUser user = SecurityUtils.getCurrentUser();
  21 +
  22 + //班次管理员
  23 + if(user.getUserName().equals("bcgly")){
  24 + mv.setViewName("/real_control_v2/sch_manage/sch_imitate.html");
  25 + }
  26 + //正常线调主页
  27 + else
  28 + mv.setViewName("/real_control_v2/main.html");
  29 + return mv;
  30 + }
  31 +}
src/main/java/com/bsth/controller/realcontrol/RealMapController.java
@@ -49,6 +49,11 @@ public class RealMapController { @@ -49,6 +49,11 @@ public class RealMapController {
49 return realMapService.findRouteByLine(lineCode); 49 return realMapService.findRouteByLine(lineCode);
50 } 50 }
51 51
  52 + @RequestMapping(value = "/multiRouteByLine")
  53 + public Map<String, Object> multiRouteByLine(@RequestParam String codeStr) {
  54 + return realMapService.multiRouteByLine(codeStr);
  55 + }
  56 +
52 57
53 /** 58 /**
54 * 获取线路的路段路由 和 站点路由信息 (为前端站间距计算提供数据源) 59 * 获取线路的路段路由 和 站点路由信息 (为前端站间距计算提供数据源)
src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
@@ -429,4 +429,9 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo, @@ -429,4 +429,9 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
429 public List<Map<String, Object>> scheduleDailyQp(@RequestParam String line,@RequestParam String date){ 429 public List<Map<String, Object>> scheduleDailyQp(@RequestParam String line,@RequestParam String date){
430 return scheduleRealInfoService.scheduleDailyQp(line,date); 430 return scheduleRealInfoService.scheduleDailyQp(line,date);
431 } 431 }
  432 +
  433 + @RequestMapping(value = "scheduleDailyExport", method = RequestMethod.GET)
  434 + public List<Map<String, Object>> scheduleDailyExport(@RequestParam Map<String, Object> map){
  435 + return scheduleRealInfoService.scheduleDailyExport(map);
  436 + }
432 } 437 }
src/main/java/com/bsth/controller/schedule/core/GuideboardInfoController.java
@@ -27,22 +27,10 @@ import java.util.Map; @@ -27,22 +27,10 @@ import java.util.Map;
27 public class GuideboardInfoController extends BController<GuideboardInfo, Long> { 27 public class GuideboardInfoController extends BController<GuideboardInfo, Long> {
28 @Autowired 28 @Autowired
29 private GuideboardInfoService guideboardInfoService; 29 private GuideboardInfoService guideboardInfoService;
30 -// @Autowired  
31 -// private DataToolsProperties dataToolsProperties; 30 +
32 @Autowired 31 @Autowired
33 private GuideboardInfoRepository guideboardInfoRepository; 32 private GuideboardInfoRepository guideboardInfoRepository;
34 -//  
35 -// @Override  
36 -// protected String getDataImportKtrClasspath() {  
37 -// return dataToolsProperties.getGuideboardsDatainputktr();  
38 -// }  
39 -//  
40 -// @Override  
41 -// public GuideboardInfo findById(@PathVariable("id") Long aLong) {  
42 -// return guideboardInfoRepository.findOneExtend(aLong);  
43 -// }  
44 -//  
45 -// 33 +
46 @RequestMapping(value = "/ttlpnames", method = RequestMethod.GET) 34 @RequestMapping(value = "/ttlpnames", method = RequestMethod.GET)
47 public List<Map<String, Object>> findLpName(Long ttid) { 35 public List<Map<String, Object>> findLpName(Long ttid) {
48 return guideboardInfoRepository.findLpName(ttid); 36 return guideboardInfoRepository.findLpName(ttid);
src/main/java/com/bsth/controller/sys/RealControAuthorityController.java 0 → 100644
  1 +package com.bsth.controller.sys;
  2 +
  3 +import com.bsth.controller.BaseController;
  4 +import com.bsth.entity.sys.RealControAuthority;
  5 +import com.bsth.security.util.SecurityUtils;
  6 +import com.bsth.service.sys.RealControAuthorityService;
  7 +import org.springframework.beans.factory.annotation.Autowired;
  8 +import org.springframework.web.bind.annotation.RequestMapping;
  9 +import org.springframework.web.bind.annotation.RequestParam;
  10 +import org.springframework.web.bind.annotation.RestController;
  11 +
  12 +import javax.servlet.http.HttpServletRequest;
  13 +
  14 +/**
  15 + * Created by panzhao on 2017/2/14.
  16 + */
  17 +@RestController
  18 +@RequestMapping("realControAuthority")
  19 +public class RealControAuthorityController extends BaseController<RealControAuthority, Integer> {
  20 +
  21 + @Autowired
  22 + RealControAuthorityService realControAuthorityService;
  23 +
  24 + @RequestMapping("findByUserId")
  25 + public RealControAuthority findByUserId(@RequestParam Integer userId){
  26 +
  27 + return realControAuthorityService.findByUserId(userId);
  28 + }
  29 +
  30 + @RequestMapping("findByCurrentUser")
  31 + public RealControAuthority findByUserId(HttpServletRequest request){
  32 + return realControAuthorityService.findByUserId(SecurityUtils.getCurrentUser().getId());
  33 + }
  34 +}
src/main/java/com/bsth/controller/sys/UserController.java
@@ -217,7 +217,7 @@ public class UserController extends BaseController&lt;SysUser, Integer&gt; { @@ -217,7 +217,7 @@ public class UserController extends BaseController&lt;SysUser, Integer&gt; {
217 * 确认新密码 217 * 确认新密码
218 * @return 218 * @return
219 */ 219 */
220 - @RequestMapping("/changePWD") 220 + @RequestMapping(value = "/changePWD", method = RequestMethod.POST)
221 public String changePWD(@RequestParam String oldPWD, @RequestParam String newPWD, @RequestParam String cnewPWD) { 221 public String changePWD(@RequestParam String oldPWD, @RequestParam String newPWD, @RequestParam String cnewPWD) {
222 SysUser sysUser = SecurityUtils.getCurrentUser(); 222 SysUser sysUser = SecurityUtils.getCurrentUser();
223 String msg = ""; 223 String msg = "";
src/main/java/com/bsth/data/gpsdata/GpsEntity.java
@@ -88,6 +88,9 @@ public class GpsEntity { @@ -88,6 +88,9 @@ public class GpsEntity {
88 /** 越界距离 */ 88 /** 越界距离 */
89 private double outOfBoundDistance; 89 private double outOfBoundDistance;
90 90
  91 + /** gps是否有效 设备端发送的状态 */
  92 + private int valid;
  93 +
91 public Integer getCompanyCode() { 94 public Integer getCompanyCode() {
92 return companyCode; 95 return companyCode;
93 } 96 }
@@ -280,4 +283,12 @@ public class GpsEntity { @@ -280,4 +283,12 @@ public class GpsEntity {
280 public void setOutOfBoundDistance(double outOfBoundDistance) { 283 public void setOutOfBoundDistance(double outOfBoundDistance) {
281 this.outOfBoundDistance = outOfBoundDistance; 284 this.outOfBoundDistance = outOfBoundDistance;
282 } 285 }
  286 +
  287 + public int getValid() {
  288 + return valid;
  289 + }
  290 +
  291 + public void setValid(int valid) {
  292 + this.valid = valid;
  293 + }
283 } 294 }
src/main/java/com/bsth/data/gpsdata/GpsRealData.java
@@ -52,7 +52,7 @@ public class GpsRealData implements CommandLineRunner { @@ -52,7 +52,7 @@ public class GpsRealData implements CommandLineRunner {
52 public void run(String... arg0) throws Exception { 52 public void run(String... arg0) throws Exception {
53 logger.info("gpsDataLoader,20,5"); 53 logger.info("gpsDataLoader,20,5");
54 //定时从网关获取GPS数据 54 //定时从网关获取GPS数据
55 - //Application.mainServices.scheduleWithFixedDelay(gpsDataLoader, 20, 5, TimeUnit.SECONDS); 55 + //Application.mainServices.scheduleWithFixedDelay(gpsDataLoader, 20, 15, TimeUnit.SECONDS);
56 //定时扫描掉离线 56 //定时扫描掉离线
57 57
58 } 58 }
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
@@ -341,6 +341,13 @@ public class DayOfSchedule implements CommandLineRunner { @@ -341,6 +341,13 @@ public class DayOfSchedule implements CommandLineRunner {
341 if (StringUtils.isEmpty(sch.getFcsj())) 341 if (StringUtils.isEmpty(sch.getFcsj()))
342 sch.setFcsj("00:00"); 342 sch.setFcsj("00:00");
343 343
  344 + if(sch.getFcsj().equals("24:00"))
  345 + sch.setFcsj("23:59");
  346 +
  347 + if(sch.getFcsj().substring(0, 2).equals("24")){
  348 + sch.setFcsj("00" + sch.getFcsj().substring(2));
  349 + }
  350 +
344 fcsj = sch.getFcsj().trim(); 351 fcsj = sch.getFcsj().trim();
345 //处理一下发车时间格式没有:号的问题 352 //处理一下发车时间格式没有:号的问题
346 if (fcsj.indexOf(":") == -1 && fcsj.length() >= 4) { 353 if (fcsj.indexOf(":") == -1 && fcsj.length() >= 4) {
@@ -823,8 +830,8 @@ public class DayOfSchedule implements CommandLineRunner { @@ -823,8 +830,8 @@ public class DayOfSchedule implements CommandLineRunner {
823 first = executeCurr(nbbm); 830 first = executeCurr(nbbm);
824 831
825 if(first.getBcType().equals("out") 832 if(first.getBcType().equals("out")
826 - && first.getDfsjT() < second.getDfsjT()  
827 - && doneSum(nbbm) == 0 && second.getDfsjT() > time) 833 + && first.getDfsjT() < second.getDfsjT()
  834 + && doneSum(nbbm) == 0 && second.getDfsjT() > time)
828 return true; 835 return true;
829 } catch (Exception e) { 836 } catch (Exception e) {
830 logger.error("", e); 837 logger.error("", e);
@@ -840,10 +847,10 @@ public class DayOfSchedule implements CommandLineRunner { @@ -840,10 +847,10 @@ public class DayOfSchedule implements CommandLineRunner {
840 847
841 public int stopTimePlan(Object task) { 848 public int stopTimePlan(Object task) {
842 849
843 - ScheduleRealInfo sch = prev((ScheduleRealInfo) task); 850 + ScheduleRealInfo sch = prev((ScheduleRealInfo) task);
844 851
845 - sch.getzdsj  
846 - return -1; 852 + sch.getzdsj
  853 + return -1;
847 }*/ 854 }*/
848 855
849 /** 856 /**
src/main/java/com/bsth/entity/realcontrol/ScheduleRealInfo.java
@@ -181,6 +181,9 @@ public class ScheduleRealInfo { @@ -181,6 +181,9 @@ public class ScheduleRealInfo {
181 //是否有GPS信号 181 //是否有GPS信号
182 private boolean online; 182 private boolean online;
183 183
  184 + /** 是否有补发GPS信号 */
  185 + private boolean reissue;
  186 +
184 public boolean isDfAuto() { 187 public boolean isDfAuto() {
185 return dfAuto; 188 return dfAuto;
186 } 189 }
@@ -819,4 +822,12 @@ public class ScheduleRealInfo { @@ -819,4 +822,12 @@ public class ScheduleRealInfo {
819 public void setAdjustExps(String adjustExps) { 822 public void setAdjustExps(String adjustExps) {
820 this.adjustExps = adjustExps; 823 this.adjustExps = adjustExps;
821 } 824 }
  825 +
  826 + public boolean isReissue() {
  827 + return reissue;
  828 + }
  829 +
  830 + public void setReissue(boolean reissue) {
  831 + this.reissue = reissue;
  832 + }
822 } 833 }
src/main/java/com/bsth/entity/sys/RealControAuthority.java 0 → 100644
  1 +package com.bsth.entity.sys;
  2 +
  3 +import javax.persistence.*;
  4 +
  5 +/**
  6 + * 线调权限配置
  7 + * Created by panzhao on 2017/2/14.
  8 + */
  9 +@Entity
  10 +@Table(name = "bsth_c_real_control_authority")
  11 +public class RealControAuthority {
  12 +
  13 + @Id
  14 + private Integer userId;
  15 +
  16 + /**
  17 + * 可调度的线路 , 分隔多个
  18 + */
  19 + private String lineCodeStr;
  20 +
  21 + /**
  22 + * 调度模式 0: 监控模式 1:主调模式
  23 + */
  24 + private int pattern;
  25 +
  26 + public Integer getUserId() {
  27 + return userId;
  28 + }
  29 +
  30 + public void setUserId(Integer userId) {
  31 + this.userId = userId;
  32 + }
  33 +
  34 + public String getLineCodeStr() {
  35 + return lineCodeStr;
  36 + }
  37 +
  38 + public void setLineCodeStr(String lineCodeStr) {
  39 + this.lineCodeStr = lineCodeStr;
  40 + }
  41 +
  42 + public int getPattern() {
  43 + return pattern;
  44 + }
  45 +
  46 + public void setPattern(int pattern) {
  47 + this.pattern = pattern;
  48 + }
  49 +}
src/main/java/com/bsth/entity/sys/UserLine.java
1 package com.bsth.entity.sys; 1 package com.bsth.entity.sys;
2 2
3 -import javax.persistence.Entity;  
4 -import javax.persistence.GeneratedValue;  
5 -import javax.persistence.GenerationType;  
6 -import javax.persistence.Id;  
7 -import javax.persistence.ManyToOne;  
8 -import javax.persistence.Table;  
9 -  
10 import com.bsth.entity.Line; 3 import com.bsth.entity.Line;
11 4
  5 +import javax.persistence.*;
  6 +
12 /** 7 /**
13 * 8 *
14 * @ClassName: Line(用户线路分配实体类) 9 * @ClassName: Line(用户线路分配实体类)
@@ -20,6 +15,8 @@ import com.bsth.entity.Line; @@ -20,6 +15,8 @@ import com.bsth.entity.Line;
20 * @Date 2016年8月26日 09:03:33 15 * @Date 2016年8月26日 09:03:33
21 * 16 *
22 * @Version 公交调度系统BS版 0.1 17 * @Version 公交调度系统BS版 0.1
  18 + *
  19 + * PS:这个类缺少主调监控模式的配置,暂不使用
23 * 20 *
24 */ 21 */
25 22
src/main/java/com/bsth/repository/realcontrol/ScheduleRealInfoRepository.java
1 package com.bsth.repository.realcontrol; 1 package com.bsth.repository.realcontrol;
2 2
3 import com.bsth.entity.realcontrol.ScheduleRealInfo; 3 import com.bsth.entity.realcontrol.ScheduleRealInfo;
  4 +import com.bsth.entity.schedule.CarConfigInfo;
4 import com.bsth.repository.BaseRepository; 5 import com.bsth.repository.BaseRepository;
  6 +import org.springframework.data.domain.Page;
  7 +import org.springframework.data.domain.Pageable;
  8 +import org.springframework.data.jpa.domain.Specification;
5 import org.springframework.data.jpa.repository.EntityGraph; 9 import org.springframework.data.jpa.repository.EntityGraph;
6 import org.springframework.data.jpa.repository.Modifying; 10 import org.springframework.data.jpa.repository.Modifying;
7 import org.springframework.data.jpa.repository.Query; 11 import org.springframework.data.jpa.repository.Query;
@@ -26,7 +30,7 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI @@ -26,7 +30,7 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI
26 30
27 @Query(value="select min(s.id), s.jGh,s.clZbh,s.lpName,s.jName from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 GROUP BY s.jGh,s.clZbh,s.lpName ,s.jName order by (lpName+1)") 31 @Query(value="select min(s.id), s.jGh,s.clZbh,s.lpName,s.jName from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 GROUP BY s.jGh,s.clZbh,s.lpName ,s.jName order by (lpName+1)")
28 List<ScheduleRealInfo> queryUserInfo2(String line,String date); 32 List<ScheduleRealInfo> queryUserInfo2(String line,String date);
29 - 33 +
30 @Query(value="select min(s.id), s.clZbh from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 GROUP BY s.clZbh ") 34 @Query(value="select min(s.id), s.clZbh from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 GROUP BY s.clZbh ")
31 List<ScheduleRealInfo> queryUserInfo3(String line,String date); 35 List<ScheduleRealInfo> queryUserInfo3(String line,String date);
32 36
@@ -115,6 +119,10 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI @@ -115,6 +119,10 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI
115 119
116 @Query(value="select s from ScheduleRealInfo s where s.xlBm like %?1% and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 and s.bcType not in ('in','out') order by s.xlBm") 120 @Query(value="select s from ScheduleRealInfo s where s.xlBm like %?1% and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 and s.bcType not in ('in','out') order by s.xlBm")
117 List<ScheduleRealInfo> scheduleByDateAndLine2(String line,String date); 121 List<ScheduleRealInfo> scheduleByDateAndLine2(String line,String date);
  122 +
  123 + //按月统计
  124 + @Query(value="select s from ScheduleRealInfo s where s.xlBm like %?1% and DATE_FORMAT(s.scheduleDate,'%Y-%m') = ?2 and s.bcType not in ('in','out') order by s.xlBm")
  125 + List<ScheduleRealInfo> scheduleByDateAndLine3(String line,String date);
118 126
119 @Query(value="select new map(s.scheduleDate as scheduleDate,s.xlBm as xlBm,s.clZbh as clZbh,s.jGh as jGh) from ScheduleRealInfo s where s.xlBm like %?1% and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 GROUP BY xlBm,clZbh,jGh,scheduleDate,jGh ORDER BY realExecDate,fcsj,xlBm,clZbh") 127 @Query(value="select new map(s.scheduleDate as scheduleDate,s.xlBm as xlBm,s.clZbh as clZbh,s.jGh as jGh) from ScheduleRealInfo s where s.xlBm like %?1% and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 GROUP BY xlBm,clZbh,jGh,scheduleDate,jGh ORDER BY realExecDate,fcsj,xlBm,clZbh")
120 List<Map<String,Object>> yesterdayDataList(String line,String date); 128 List<Map<String,Object>> yesterdayDataList(String line,String date);
@@ -131,4 +139,16 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI @@ -131,4 +139,16 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI
131 @Query(value="select new map(xlBm as xlBm) from ScheduleRealInfo s where DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?1 GROUP BY xlBm ORDER BY xlBm") 139 @Query(value="select new map(xlBm as xlBm) from ScheduleRealInfo s where DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?1 GROUP BY xlBm ORDER BY xlBm")
132 List<Map<String,Object>> setDDRBGroup(String date); 140 List<Map<String,Object>> setDDRBGroup(String date);
133 141
  142 + @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
  143 + @Override
  144 + Page<ScheduleRealInfo> findAll(Specification<ScheduleRealInfo> spec, Pageable pageable);
  145 +
  146 + @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
  147 + @Override
  148 + List<ScheduleRealInfo> findAll(Specification<ScheduleRealInfo> spec);
  149 +
  150 + @EntityGraph(value = "scheduleRealInfo_cTasks", type = EntityGraph.EntityGraphType.FETCH)
  151 + @Override
  152 + List<ScheduleRealInfo> findAll();
  153 +
134 } 154 }
src/main/java/com/bsth/repository/sys/RealControAuthorityRepository.java 0 → 100644
  1 +package com.bsth.repository.sys;
  2 +
  3 +import com.bsth.entity.sys.RealControAuthority;
  4 +import com.bsth.repository.BaseRepository;
  5 +import org.springframework.data.jpa.repository.Query;
  6 +import org.springframework.stereotype.Repository;
  7 +
  8 +/**
  9 + * Created by panzhao on 2017/2/14.
  10 + */
  11 +@Repository
  12 +public interface RealControAuthorityRepository extends BaseRepository<RealControAuthority, Integer>{
  13 +
  14 + @Query("select t from RealControAuthority t where t.userId=?1")
  15 + RealControAuthority findByUserId(Integer userId);
  16 +}
src/main/java/com/bsth/service/gps/GpsService.java
@@ -16,4 +16,6 @@ public interface GpsService { @@ -16,4 +16,6 @@ public interface GpsService {
16 Map<String,Object> removeRealGps(String device); 16 Map<String,Object> removeRealGps(String device);
17 17
18 Map<String,Object> findRoadSpeed(String lineCode); 18 Map<String,Object> findRoadSpeed(String lineCode);
  19 +
  20 + Map<String,Object> gpsCompletion(long schId);
19 } 21 }
src/main/java/com/bsth/service/gps/GpsServiceImpl.java
@@ -5,8 +5,11 @@ import com.bsth.data.BasicData; @@ -5,8 +5,11 @@ import com.bsth.data.BasicData;
5 import com.bsth.data.arrival.ArrivalEntity; 5 import com.bsth.data.arrival.ArrivalEntity;
6 import com.bsth.data.gpsdata.GpsEntity; 6 import com.bsth.data.gpsdata.GpsEntity;
7 import com.bsth.data.gpsdata.GpsRealData; 7 import com.bsth.data.gpsdata.GpsRealData;
  8 +import com.bsth.data.schedule.DayOfSchedule;
  9 +import com.bsth.entity.realcontrol.ScheduleRealInfo;
8 import com.bsth.repository.CarParkRepository; 10 import com.bsth.repository.CarParkRepository;
9 import com.bsth.repository.StationRepository; 11 import com.bsth.repository.StationRepository;
  12 +import com.bsth.repository.realcontrol.ScheduleRealInfoRepository;
10 import com.bsth.util.DateUtils; 13 import com.bsth.util.DateUtils;
11 import com.bsth.util.TransGPS; 14 import com.bsth.util.TransGPS;
12 import com.bsth.util.TransGPS.Location; 15 import com.bsth.util.TransGPS.Location;
@@ -47,6 +50,12 @@ public class GpsServiceImpl implements GpsService { @@ -47,6 +50,12 @@ public class GpsServiceImpl implements GpsService {
47 @Autowired 50 @Autowired
48 JdbcTemplate jdbcTemplate; 51 JdbcTemplate jdbcTemplate;
49 52
  53 + @Autowired
  54 + DayOfSchedule dayOfSchedule;
  55 +
  56 + @Autowired
  57 + ScheduleRealInfoRepository scheduleRealInfoRepository;
  58 +
50 // 历史gps查询 59 // 历史gps查询
51 @Override 60 @Override
52 public List<Map<String, Object>> history(String device, Long startTime, Long endTime, int directions) { 61 public List<Map<String, Object>> history(String device, Long startTime, Long endTime, int directions) {
@@ -203,7 +212,7 @@ public class GpsServiceImpl implements GpsService { @@ -203,7 +212,7 @@ public class GpsServiceImpl implements GpsService {
203 conn = DBUtils_MS.getConnection(); 212 conn = DBUtils_MS.getConnection();
204 ps = conn.prepareStatement(sql); 213 ps = conn.prepareStatement(sql);
205 ps.setInt(1, dayOfYear); 214 ps.setInt(1, dayOfYear);
206 - /* ps.setArray(2, conn.createArrayOf("VARCHAR", devices)); */ 215 + /* ps.setArray(2, conn.createArrayOf("VARCHAR", devices)); */
207 ps.setLong(2, st * 1000); 216 ps.setLong(2, st * 1000);
208 ps.setLong(3, et * 1000); 217 ps.setLong(3, et * 1000);
209 218
@@ -411,6 +420,96 @@ public class GpsServiceImpl implements GpsService { @@ -411,6 +420,96 @@ public class GpsServiceImpl implements GpsService {
411 return rs; 420 return rs;
412 } 421 }
413 422
  423 + /**
  424 + * gps补全
  425 + *
  426 + * @param schId
  427 + * @return
  428 + */
  429 + @Override
  430 + public Map<String, Object> gpsCompletion(long schId) {
  431 + Map<String, Object> rs = new HashMap<>();
  432 +
  433 + try {
  434 + ScheduleRealInfo sch = dayOfSchedule.get(schId);
  435 + if (sch == null) {
  436 + rs.put("status", ResponseCode.ERROR);
  437 + rs.put("msg", "找不到对应班次!!!");
  438 + return rs;
  439 + }
  440 +
  441 + if(sch.isReissue()){
  442 + rs.put("status", ResponseCode.ERROR);
  443 + rs.put("msg", "你不能重复这个操作");
  444 + return rs;
  445 + }
  446 +
  447 + String sql = "select * from bsth_gps_template where line_id='" + sch.getXlBm() + "' and up_down=" + sch.getXlDir();
  448 + List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
  449 +
  450 + if(list.size() == 0){
  451 + rs.put("status", ResponseCode.ERROR);
  452 + rs.put("msg", "缺少模板数据,请联系系统管理员!!");
  453 + return rs;
  454 + }
  455 + //排序
  456 + Collections.sort(list, new Comparator<Map<String, Object>>() {
  457 + @Override
  458 + public int compare(Map<String, Object> o1, Map<String, Object> o2) {
  459 + return (int) (Long.parseLong(o1.get("ts").toString()) - Long.parseLong(o2.get("ts").toString()));
  460 + }
  461 + });
  462 + Map<String, Object> fs = list.get(0);
  463 + //替换设备号和时间
  464 + int diff = (int) (sch.getDfsjT() - Long.parseLong(fs.get("ts").toString()) - 1000 * 70);
  465 +
  466 + String deviceId = BasicData.deviceId2NbbmMap.inverse().get(sch.getClZbh());
  467 + for(Map<String, Object> map : list){
  468 + map.put("device_id", deviceId);
  469 + map.put("ts", Long.parseLong(map.get("ts").toString()) + diff);
  470 + }
  471 +
  472 + String sqlBefore = "insert into bsth_c_template("
  473 + ,sqlValues = " values(";
  474 +
  475 + Set<String> ks = fs.keySet();
  476 + for(String k : ks){
  477 + sqlBefore += (k + ",");
  478 + sqlValues += "?,";
  479 + }
  480 + sqlBefore = sqlBefore.substring(0, sqlBefore.length() - 1) + ", create_ts)";
  481 + sqlValues = sqlValues.substring(0, sqlValues.length() - 1) + ", "+System.currentTimeMillis()+")";
  482 + sql = sqlBefore + " " + sqlValues;
  483 +
  484 + Connection conn = DBUtils_MS.getConnection();
  485 + conn.setAutoCommit(false);
  486 + ps = conn.prepareStatement(sql);
  487 + int fsize = ks.size();
  488 + List<Object> vs;
  489 + for(Map<String, Object> map : list){
  490 + vs = new ArrayList<>(map.values());
  491 + for(int i = 0; i < fsize; i ++){
  492 + ps.setObject(i + 1, vs.get(i));
  493 + }
  494 + ps.addBatch();
  495 + }
  496 + ps.executeBatch();
  497 + conn.commit();
  498 +
  499 + rs.put("status", ResponseCode.SUCCESS);
  500 +
  501 + //标记班次
  502 + sch.setReissue(true);
  503 + scheduleRealInfoRepository.save(sch);
  504 +
  505 + rs.put("status", ResponseCode.SUCCESS);
  506 + } catch (Exception e) {
  507 + logger.error("", e);
  508 + rs.put("status", ResponseCode.ERROR);
  509 + }
  510 + return rs;
  511 + }
  512 +
414 private void sortGpsList(final Field f, List<GpsEntity> rs) { 513 private void sortGpsList(final Field f, List<GpsEntity> rs) {
415 Collections.sort(rs, new Comparator<GpsEntity>() { 514 Collections.sort(rs, new Comparator<GpsEntity>() {
416 515
src/main/java/com/bsth/service/impl/TrafficManageServiceImpl.java
@@ -328,10 +328,21 @@ public class TrafficManageServiceImpl implements TrafficManageService{ @@ -328,10 +328,21 @@ public class TrafficManageServiceImpl implements TrafficManageService{
328 if((schRealInfo.get("xlBm")+"").equals(scheduleRealInfo.getXlBm()) && (schRealInfo.get("lpName")+"") 328 if((schRealInfo.get("xlBm")+"").equals(scheduleRealInfo.getXlBm()) && (schRealInfo.get("lpName")+"")
329 .equals(scheduleRealInfo.getLpName()) 329 .equals(scheduleRealInfo.getLpName())
330 && (schRealInfo.get("clZbh")+"").equals(scheduleRealInfo.getClZbh())){ 330 && (schRealInfo.get("clZbh")+"").equals(scheduleRealInfo.getClZbh())){
331 - if(scheduleRealInfo.getFcsjActual() == null ||scheduleRealInfo.getBcType().equals("in") 331 +
  332 + if(scheduleRealInfo.isDestroy()){
  333 + if(scheduleRealInfo.isReissue()){
  334 + scheduleRealInfo.setFcsjActualAll(scheduleRealInfo.getDfsj());
  335 + scheduleRealInfo.setZdsjActualAll(scheduleRealInfo.getZdsj());
  336 + }
  337 + else
  338 + continue;
  339 + }
  340 +
  341 + if(scheduleRealInfo.getBcType().equals("in")
332 || scheduleRealInfo.getBcType().equals("out")){ 342 || scheduleRealInfo.getBcType().equals("out")){
333 continue; 343 continue;
334 } 344 }
  345 +
335 scheduleRealInfo.getQdzCode(); 346 scheduleRealInfo.getQdzCode();
336 sf.append("<LD>"); 347 sf.append("<LD>");
337 sf.append("<SJGH>"+scheduleRealInfo.getjGh()+"</SJGH>"); 348 sf.append("<SJGH>"+scheduleRealInfo.getjGh()+"</SJGH>");
src/main/java/com/bsth/service/realcontrol/RealMapService.java
@@ -15,4 +15,6 @@ public interface RealMapService { @@ -15,4 +15,6 @@ public interface RealMapService {
15 Map<String,Object> findRouteAndStationByLine(String lineCode); 15 Map<String,Object> findRouteAndStationByLine(String lineCode);
16 16
17 Map<String,Object> multiSectionRoute(String codeIdx); 17 Map<String,Object> multiSectionRoute(String codeIdx);
  18 +
  19 + Map<String,Object> multiRouteByLine(String codeStr);
18 } 20 }
src/main/java/com/bsth/service/realcontrol/ScheduleRealInfoService.java
@@ -144,4 +144,6 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L @@ -144,4 +144,6 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L
144 Map<String,Object> addRemarks(Long id, String remarks); 144 Map<String,Object> addRemarks(Long id, String remarks);
145 145
146 List<Map<String, Object>> scheduleDailyQp(String line ,String date); 146 List<Map<String, Object>> scheduleDailyQp(String line ,String date);
  147 +
  148 + List<Map<String, Object>> scheduleDailyExport(Map<String, Object> map);
147 } 149 }
src/main/java/com/bsth/service/realcontrol/impl/RealMapServiceImpl.java
@@ -159,6 +159,17 @@ public class RealMapServiceImpl implements RealMapService { @@ -159,6 +159,17 @@ public class RealMapServiceImpl implements RealMapService {
159 return rs; 159 return rs;
160 } 160 }
161 161
  162 + @Override
  163 + public Map<String, Object> multiRouteByLine(String codeStr) {
  164 + List<String> codeArray = Splitter.on(",").splitToList(codeStr);
  165 + Map<String, Object> rs = new HashMap<>();
  166 +
  167 + for(String code : codeArray){
  168 + rs.put(code + "_route" ,findRouteByLine(code));
  169 + }
  170 + return rs;
  171 + }
  172 +
162 /** 173 /**
163 * wgs 坐标数组转 百度 174 * wgs 坐标数组转 百度
164 * 175 *
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
@@ -525,6 +525,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -525,6 +525,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
525 map.put("fast", ""); 525 map.put("fast", "");
526 map.put("slow", ""); 526 map.put("slow", "");
527 } 527 }
  528 + System.out.println(map);
528 listMap.add(map); 529 listMap.add(map);
529 } catch (Exception e) { 530 } catch (Exception e) {
530 e.printStackTrace(); 531 e.printStackTrace();
@@ -1386,13 +1387,18 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1386,13 +1387,18 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1386 @Override 1387 @Override
1387 public List<Map<String, Object>> statisticsDaily(String line, String date, 1388 public List<Map<String, Object>> statisticsDaily(String line, String date,
1388 String xlName, String type) { 1389 String xlName, String type) {
1389 - List<ScheduleRealInfo> list = scheduleRealInfoRepository.scheduleByDateAndLine2(line, date); 1390 + List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>();
  1391 + if(date.length() == 10)
  1392 + list = scheduleRealInfoRepository.scheduleByDateAndLine2(line, date);
  1393 + else if(date.length() == 7)
  1394 + list = scheduleRealInfoRepository.scheduleByDateAndLine3(line, date);
1390 1395
1391 List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>(); 1396 List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>();
1392 DecimalFormat format = new DecimalFormat("0.00"); 1397 DecimalFormat format = new DecimalFormat("0.00");
1393 double jhlc = 0, tempJhlc = 0, childMileage = 0; 1398 double jhlc = 0, tempJhlc = 0, childMileage = 0;
1394 float sjgl = 0f, ssgl = 0f, ssgl_lz = 0f, ssgl_dm = 0f, ssgl_gz = 0f, ssgl_jf = 0f, ssgl_zs = 0f, ssgl_qr = 0f, ssgl_qc = 0f, ssgl_kx = 0f, ssgl_qh = 0f, ssgl_yw = 0f, ssgl_other = 0f, ljgl = 0f; 1399 float sjgl = 0f, ssgl = 0f, ssgl_lz = 0f, ssgl_dm = 0f, ssgl_gz = 0f, ssgl_jf = 0f, ssgl_zs = 0f, ssgl_qr = 0f, ssgl_qc = 0f, ssgl_kx = 0f, ssgl_qh = 0f, ssgl_yw = 0f, ssgl_other = 0f, ljgl = 0f;
1395 //班次 1400 //班次
  1401 + int ssbc = 0, ssbc_lz = 0, ssbc_dm = 0, ssbc_gz = 0, ssbc_jf = 0, ssbc_zs = 0, ssbc_qr = 0, ssbc_qc = 0, ssbc_kx = 0, ssbc_qh = 0, ssbc_yw = 0, ssbc_other = 0;
1396 int sj_0 = 6 * 60 + 31, sj_1 = 8 * 60 + 30, sj_2 = 16 * 60 + 1, sj_3 = 18 * 60; 1402 int sj_0 = 6 * 60 + 31, sj_1 = 8 * 60 + 30, sj_2 = 16 * 60 + 1, sj_3 = 18 * 60;
1397 int jhbc = 0, jhbc_m = 0, jhbc_a = 0; 1403 int jhbc = 0, jhbc_m = 0, jhbc_a = 0;
1398 int sjbc = 0, sjbc_m = 0, sjbc_a = 0; 1404 int sjbc = 0, sjbc_m = 0, sjbc_a = 0;
@@ -1406,6 +1412,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1406,6 +1412,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1406 ssgl_gzZ = 0f, ssgl_jfZ = 0f, ssgl_zsZ = 0f, ssgl_qrZ = 0f, ssgl_qcZ = 0f, 1412 ssgl_gzZ = 0f, ssgl_jfZ = 0f, ssgl_zsZ = 0f, ssgl_qrZ = 0f, ssgl_qcZ = 0f,
1407 ssgl_kxZ = 0f, ssgl_qhZ = 0f, ssgl_ywZ = 0f, ssgl_otherZ = 0f, ljglZ = 0f; 1413 ssgl_kxZ = 0f, ssgl_qhZ = 0f, ssgl_ywZ = 0f, ssgl_otherZ = 0f, ljglZ = 0f;
1408 //班次 1414 //班次
  1415 + int ssbcZ = 0, ssbc_lzZ = 0, ssbc_dmZ = 0, ssbc_gzZ = 0, ssbc_jfZ = 0, ssbc_zsZ = 0, ssbc_qrZ = 0, ssbc_qcZ = 0, ssbc_kxZ = 0, ssbc_qhZ = 0, ssbc_ywZ = 0, ssbc_otherZ = 0;
1409 int jhbcZ = 0, jhbc_mZ = 0, jhbc_aZ = 0; 1416 int jhbcZ = 0, jhbc_mZ = 0, jhbc_aZ = 0;
1410 int sjbcZ = 0, sjbc_mZ = 0, sjbc_aZ = 0; 1417 int sjbcZ = 0, sjbc_mZ = 0, sjbc_aZ = 0;
1411 int ljbcZ = 0, ljbc_mZ = 0, ljbc_aZ = 0; 1418 int ljbcZ = 0, ljbc_mZ = 0, ljbc_aZ = 0;
@@ -1431,39 +1438,63 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1431,39 +1438,63 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1431 if (scheduleRealInfo.getStatus() == -1) { 1438 if (scheduleRealInfo.getStatus() == -1) {
1432 ssgl += tempJhlc; 1439 ssgl += tempJhlc;
1433 ssglZ += tempJhlc; 1440 ssglZ += tempJhlc;
  1441 + ssbc++;
  1442 + ssbcZ++;
1434 if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("路阻") != -1) { 1443 if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("路阻") != -1) {
1435 ssgl_lz += tempJhlc; 1444 ssgl_lz += tempJhlc;
1436 ssgl_lzZ += tempJhlc; 1445 ssgl_lzZ += tempJhlc;
  1446 + ssbc_lz++;
  1447 + ssbc_lzZ++;
1437 } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("吊慢") != -1) { 1448 } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("吊慢") != -1) {
1438 ssgl_dm += tempJhlc; 1449 ssgl_dm += tempJhlc;
1439 ssgl_dmZ += tempJhlc; 1450 ssgl_dmZ += tempJhlc;
  1451 + ssbc_dm++;
  1452 + ssbc_dmZ++;
1440 } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("故障") != -1) { 1453 } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("故障") != -1) {
1441 ssgl_gz += tempJhlc; 1454 ssgl_gz += tempJhlc;
1442 ssgl_gzZ += tempJhlc; 1455 ssgl_gzZ += tempJhlc;
  1456 + ssbc_gz++;
  1457 + ssbc_gzZ++;
1443 } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("纠纷") != -1) { 1458 } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("纠纷") != -1) {
1444 ssgl_jf += tempJhlc; 1459 ssgl_jf += tempJhlc;
1445 ssgl_jfZ += tempJhlc; 1460 ssgl_jfZ += tempJhlc;
  1461 + ssbc_jf++;
  1462 + ssbc_jfZ++;
1446 } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("肇事") != -1) { 1463 } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("肇事") != -1) {
1447 ssgl_zs += tempJhlc; 1464 ssgl_zs += tempJhlc;
1448 ssgl_zsZ += tempJhlc; 1465 ssgl_zsZ += tempJhlc;
  1466 + ssbc_zs++;
  1467 + ssbc_zsZ++;
1449 } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("缺人") != -1) { 1468 } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("缺人") != -1) {
1450 ssgl_qr += tempJhlc; 1469 ssgl_qr += tempJhlc;
1451 ssgl_qrZ += tempJhlc; 1470 ssgl_qrZ += tempJhlc;
  1471 + ssbc_qr++;
  1472 + ssbc_qrZ++;
1452 } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("缺车") != -1) { 1473 } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("缺车") != -1) {
1453 ssgl_qc += tempJhlc; 1474 ssgl_qc += tempJhlc;
1454 ssgl_qcZ += tempJhlc; 1475 ssgl_qcZ += tempJhlc;
  1476 + ssbc_qc++;
  1477 + ssbc_qcZ++;
1455 } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("客稀") != -1) { 1478 } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("客稀") != -1) {
1456 ssgl_kx += tempJhlc; 1479 ssgl_kx += tempJhlc;
1457 ssgl_kxZ += tempJhlc; 1480 ssgl_kxZ += tempJhlc;
  1481 + ssbc_kx++;
  1482 + ssbc_kxZ++;
1458 } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("气候") != -1) { 1483 } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("气候") != -1) {
1459 ssgl_qh += tempJhlc; 1484 ssgl_qh += tempJhlc;
1460 ssgl_qhZ += tempJhlc; 1485 ssgl_qhZ += tempJhlc;
  1486 + ssbc_qh++;
  1487 + ssbc_qhZ++;
1461 } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("援外") != -1) { 1488 } else if ((scheduleRealInfo.getRemarks() == null ? "" : scheduleRealInfo.getRemarks()).indexOf("援外") != -1) {
1462 ssgl_yw += tempJhlc; 1489 ssgl_yw += tempJhlc;
1463 ssgl_ywZ += tempJhlc; 1490 ssgl_ywZ += tempJhlc;
  1491 + ssbc_yw++;
  1492 + ssbc_ywZ++;
1464 } else { 1493 } else {
1465 ssgl_other += tempJhlc; 1494 ssgl_other += tempJhlc;
1466 ssgl_otherZ += tempJhlc; 1495 ssgl_otherZ += tempJhlc;
  1496 + ssbc_other++;
  1497 + ssbc_otherZ++;
1467 } 1498 }
1468 }else { 1499 }else {
1469 sjgl += tempJhlc; 1500 sjgl += tempJhlc;
@@ -1479,39 +1510,63 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1479,39 +1510,63 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1479 if (childTaskPlan.isDestroy()) { 1510 if (childTaskPlan.isDestroy()) {
1480 ssgl += childMileage; 1511 ssgl += childMileage;
1481 ssglZ += childMileage; 1512 ssglZ += childMileage;
  1513 + ssbc++;
  1514 + ssbcZ++;
1482 if (childTaskPlan.getDestroyReason().equals("路阻")) { 1515 if (childTaskPlan.getDestroyReason().equals("路阻")) {
1483 ssgl_lz += childTaskPlan.getMileage(); 1516 ssgl_lz += childTaskPlan.getMileage();
1484 ssgl_lzZ += childTaskPlan.getMileage(); 1517 ssgl_lzZ += childTaskPlan.getMileage();
  1518 + ssbc_lzZ++;
  1519 + ssbc_lzZ++;
1485 } else if (childTaskPlan.getDestroyReason().equals("吊慢")) { 1520 } else if (childTaskPlan.getDestroyReason().equals("吊慢")) {
1486 ssgl_dm += childTaskPlan.getMileage(); 1521 ssgl_dm += childTaskPlan.getMileage();
1487 ssgl_dmZ += childTaskPlan.getMileage(); 1522 ssgl_dmZ += childTaskPlan.getMileage();
  1523 + ssbc_dm++;
  1524 + ssbc_dmZ++;
1488 } else if (childTaskPlan.getDestroyReason().equals("故障")) { 1525 } else if (childTaskPlan.getDestroyReason().equals("故障")) {
1489 ssgl_gz += childTaskPlan.getMileage(); 1526 ssgl_gz += childTaskPlan.getMileage();
1490 ssgl_gzZ += childTaskPlan.getMileage(); 1527 ssgl_gzZ += childTaskPlan.getMileage();
  1528 + ssbc_gz++;
  1529 + ssbc_gzZ++;
1491 } else if (childTaskPlan.getDestroyReason().equals("纠纷")) { 1530 } else if (childTaskPlan.getDestroyReason().equals("纠纷")) {
1492 ssgl_jf += childTaskPlan.getMileage(); 1531 ssgl_jf += childTaskPlan.getMileage();
1493 ssgl_jfZ += childTaskPlan.getMileage(); 1532 ssgl_jfZ += childTaskPlan.getMileage();
  1533 + ssbc_jf++;
  1534 + ssbc_jfZ++;
1494 } else if (childTaskPlan.getDestroyReason().equals("肇事")) { 1535 } else if (childTaskPlan.getDestroyReason().equals("肇事")) {
1495 ssgl_zs += childTaskPlan.getMileage(); 1536 ssgl_zs += childTaskPlan.getMileage();
1496 ssgl_zsZ += childTaskPlan.getMileage(); 1537 ssgl_zsZ += childTaskPlan.getMileage();
  1538 + ssbc_zs++;
  1539 + ssbc_zsZ++;
1497 } else if (childTaskPlan.getDestroyReason().equals("缺人")) { 1540 } else if (childTaskPlan.getDestroyReason().equals("缺人")) {
1498 ssgl_qr += childTaskPlan.getMileage(); 1541 ssgl_qr += childTaskPlan.getMileage();
1499 ssgl_qrZ += childTaskPlan.getMileage(); 1542 ssgl_qrZ += childTaskPlan.getMileage();
  1543 + ssbc_qr++;
  1544 + ssbc_qrZ++;
1500 } else if (childTaskPlan.getDestroyReason().equals("缺车")) { 1545 } else if (childTaskPlan.getDestroyReason().equals("缺车")) {
1501 ssgl_qc += childTaskPlan.getMileage(); 1546 ssgl_qc += childTaskPlan.getMileage();
1502 ssgl_qcZ += childTaskPlan.getMileage(); 1547 ssgl_qcZ += childTaskPlan.getMileage();
  1548 + ssbc_qc++;
  1549 + ssbc_qcZ++;
1503 } else if (childTaskPlan.getDestroyReason().equals("客稀")) { 1550 } else if (childTaskPlan.getDestroyReason().equals("客稀")) {
1504 ssgl_kx += childTaskPlan.getMileage(); 1551 ssgl_kx += childTaskPlan.getMileage();
1505 ssgl_kxZ += childTaskPlan.getMileage(); 1552 ssgl_kxZ += childTaskPlan.getMileage();
  1553 + ssbc_kx++;
  1554 + ssbc_kxZ++;
1506 } else if (childTaskPlan.getDestroyReason().equals("气候")) { 1555 } else if (childTaskPlan.getDestroyReason().equals("气候")) {
1507 ssgl_qh += childTaskPlan.getMileage(); 1556 ssgl_qh += childTaskPlan.getMileage();
1508 ssgl_qhZ += childTaskPlan.getMileage(); 1557 ssgl_qhZ += childTaskPlan.getMileage();
  1558 + ssbc_qh++;
  1559 + ssbc_qhZ++;
1509 } else if (childTaskPlan.getDestroyReason().equals("援外")) { 1560 } else if (childTaskPlan.getDestroyReason().equals("援外")) {
1510 ssgl_yw += childTaskPlan.getMileage(); 1561 ssgl_yw += childTaskPlan.getMileage();
1511 ssgl_ywZ += childTaskPlan.getMileage(); 1562 ssgl_ywZ += childTaskPlan.getMileage();
  1563 + ssbc_yw++;
  1564 + ssbc_ywZ++;
1512 } else { 1565 } else {
1513 ssgl_other += childTaskPlan.getMileage(); 1566 ssgl_other += childTaskPlan.getMileage();
1514 ssgl_otherZ += childTaskPlan.getMileage(); 1567 ssgl_otherZ += childTaskPlan.getMileage();
  1568 + ssbc_other++;
  1569 + ssbc_otherZ++;
1515 } 1570 }
1516 } else { 1571 } else {
1517 sjgl += childMileage; 1572 sjgl += childMileage;
@@ -1522,6 +1577,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1522,6 +1577,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1522 1577
1523 //班次 1578 //班次
1524 jhbc++; 1579 jhbc++;
  1580 + jhbcZ++;
1525 String[] fcsj = scheduleRealInfo.getFcsj().split(":"); 1581 String[] fcsj = scheduleRealInfo.getFcsj().split(":");
1526 String[] fcsjActual = (scheduleRealInfo.getFcsjActual() == null ? "0:00" : scheduleRealInfo.getFcsjActual()).split(":"); 1582 String[] fcsjActual = (scheduleRealInfo.getFcsjActual() == null ? "0:00" : scheduleRealInfo.getFcsjActual()).split(":");
1527 if ((Integer.parseInt(fcsj[0]) * 60 + Integer.parseInt(fcsj[1])) > sj_0 && (Integer.parseInt(fcsj[0]) * 60 + Integer.parseInt(fcsj[1])) < sj_1) { 1583 if ((Integer.parseInt(fcsj[0]) * 60 + Integer.parseInt(fcsj[1])) > sj_0 && (Integer.parseInt(fcsj[0]) * 60 + Integer.parseInt(fcsj[1])) < sj_1) {
@@ -1584,6 +1640,18 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1584,6 +1640,18 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1584 map.put("ssgl_qh", ssgl_qh == 0 ? 0 : format.format(ssgl_qh)); 1640 map.put("ssgl_qh", ssgl_qh == 0 ? 0 : format.format(ssgl_qh));
1585 map.put("ssgl_yw", ssgl_yw == 0 ? 0 : format.format(ssgl_yw)); 1641 map.put("ssgl_yw", ssgl_yw == 0 ? 0 : format.format(ssgl_yw));
1586 map.put("ssgl_other", ssgl_other == 0 ? 0 : format.format(ssgl_other)); 1642 map.put("ssgl_other", ssgl_other == 0 ? 0 : format.format(ssgl_other));
  1643 + map.put("ssbc", ssbc);
  1644 + map.put("ssbc_lz", ssbc_lz);
  1645 + map.put("ssbc_dm", ssbc_dm);
  1646 + map.put("ssbc_gz", ssbc_gz);
  1647 + map.put("ssbc_jf", ssbc_jf);
  1648 + map.put("ssbc_zs", ssbc_zs);
  1649 + map.put("ssbc_qr", ssbc_qr);
  1650 + map.put("ssbc_qc", ssbc_qc);
  1651 + map.put("ssbc_kx", ssbc_kx);
  1652 + map.put("ssbc_qh", ssbc_qh);
  1653 + map.put("ssbc_yw", ssbc_yw);
  1654 + map.put("ssbc_other", ssbc_other);
1587 map.put("ljgl", ljgl == 0 ? 0 : format.format(ljgl)); 1655 map.put("ljgl", ljgl == 0 ? 0 : format.format(ljgl));
1588 map.put("jhbc", jhbc); 1656 map.put("jhbc", jhbc);
1589 map.put("jhbc_m", jhbc_m); 1657 map.put("jhbc_m", jhbc_m);
@@ -1634,6 +1702,18 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1634,6 +1702,18 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1634 map.put("ssgl_qh", ssgl_qh == 0 ? 0 : format.format(ssgl_qh)); 1702 map.put("ssgl_qh", ssgl_qh == 0 ? 0 : format.format(ssgl_qh));
1635 map.put("ssgl_yw", ssgl_yw == 0 ? 0 : format.format(ssgl_yw)); 1703 map.put("ssgl_yw", ssgl_yw == 0 ? 0 : format.format(ssgl_yw));
1636 map.put("ssgl_other", ssgl_other == 0 ? 0 : format.format(ssgl_other)); 1704 map.put("ssgl_other", ssgl_other == 0 ? 0 : format.format(ssgl_other));
  1705 + map.put("ssbc", ssbc);
  1706 + map.put("ssbc_lz", ssbc_lz);
  1707 + map.put("ssbc_dm", ssbc_dm);
  1708 + map.put("ssbc_gz", ssbc_gz);
  1709 + map.put("ssbc_jf", ssbc_jf);
  1710 + map.put("ssbc_zs", ssbc_zs);
  1711 + map.put("ssbc_qr", ssbc_qr);
  1712 + map.put("ssbc_qc", ssbc_qc);
  1713 + map.put("ssbc_kx", ssbc_kx);
  1714 + map.put("ssbc_qh", ssbc_qh);
  1715 + map.put("ssbc_yw", ssbc_yw);
  1716 + map.put("ssbc_other", ssbc_other);
1637 map.put("ljgl", ljgl == 0 ? 0 : format.format(ljgl)); 1717 map.put("ljgl", ljgl == 0 ? 0 : format.format(ljgl));
1638 map.put("jhbc", jhbc); 1718 map.put("jhbc", jhbc);
1639 map.put("jhbc_m", jhbc_m); 1719 map.put("jhbc_m", jhbc_m);
@@ -1685,6 +1765,18 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1685,6 +1765,18 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1685 map.put("ssgl_qh", ssgl_qhZ == 0 ? 0 : format.format(ssgl_qhZ)); 1765 map.put("ssgl_qh", ssgl_qhZ == 0 ? 0 : format.format(ssgl_qhZ));
1686 map.put("ssgl_yw", ssgl_ywZ == 0 ? 0 : format.format(ssgl_ywZ)); 1766 map.put("ssgl_yw", ssgl_ywZ == 0 ? 0 : format.format(ssgl_ywZ));
1687 map.put("ssgl_other", ssgl_otherZ == 0 ? 0 : format.format(ssgl_otherZ)); 1767 map.put("ssgl_other", ssgl_otherZ == 0 ? 0 : format.format(ssgl_otherZ));
  1768 + map.put("ssbc", ssbcZ);
  1769 + map.put("ssbc_lz", ssbc_lzZ);
  1770 + map.put("ssbc_dm", ssbc_lzZ);
  1771 + map.put("ssbc_gz", ssbc_gzZ);
  1772 + map.put("ssbc_jf", ssbc_jfZ);
  1773 + map.put("ssbc_zs", ssbc_zsZ);
  1774 + map.put("ssbc_qr", ssbc_qrZ);
  1775 + map.put("ssbc_qc", ssbc_qcZ);
  1776 + map.put("ssbc_kx", ssbc_qcZ);
  1777 + map.put("ssbc_qh", ssbc_qhZ);
  1778 + map.put("ssbc_yw", ssbc_ywZ);
  1779 + map.put("ssbc_other", ssbc_otherZ);
1688 map.put("ljgl", ljglZ == 0 ? 0 : format.format(ljglZ)); 1780 map.put("ljgl", ljglZ == 0 ? 0 : format.format(ljglZ));
1689 map.put("jhbc", jhbcZ); 1781 map.put("jhbc", jhbcZ);
1690 map.put("jhbc_m", jhbc_mZ); 1782 map.put("jhbc_m", jhbc_mZ);
@@ -2365,7 +2457,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2365,7 +2457,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2365 // int ljbc = scheduleRealInfoRepository.findLjbc(jName, clZbh, lpName); 2457 // int ljbc = scheduleRealInfoRepository.findLjbc(jName, clZbh, lpName);
2366 int jhbc = 0,cjbc = 0,ljbc = 0; 2458 int jhbc = 0,cjbc = 0,ljbc = 0;
2367 double jhlc = 0, yygl = 0, ksgl = 0,tempJhlc = 0,jcclc=0; 2459 double jhlc = 0, yygl = 0, ksgl = 0,tempJhlc = 0,jcclc=0;
2368 - float addMileage = 0l,remMileage = 0l; 2460 + float addMileage = 0l,remMileage = 0l, addgl = 0, remgl = 0;
2369 int xyz=1; 2461 int xyz=1;
2370 Map<String,Object> map; 2462 Map<String,Object> map;
2371 for(ScheduleRealInfo scheduleRealInfo : scheduleRealInfos){ 2463 for(ScheduleRealInfo scheduleRealInfo : scheduleRealInfos){
@@ -2375,6 +2467,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2375,6 +2467,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2375 //烂班里程(主任务烂班), 2467 //烂班里程(主任务烂班),
2376 //临加里程(主任务临加), 2468 //临加里程(主任务临加),
2377 //计划班次,烂班班次,增加班次 2469 //计划班次,烂班班次,增加班次
  2470 + double jh = 0, sj = 0;
2378 tempJhlc = scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc(); 2471 tempJhlc = scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc();
2379 if(scheduleRealInfo.isSflj()){ 2472 if(scheduleRealInfo.isSflj()){
2380 ljbc++; 2473 ljbc++;
@@ -2382,7 +2475,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2382,7 +2475,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2382 if( !(scheduleRealInfo.getBcType().equals("in") 2475 if( !(scheduleRealInfo.getBcType().equals("in")
2383 ||scheduleRealInfo.getBcType().equals("out")) ){ 2476 ||scheduleRealInfo.getBcType().equals("out")) ){
2384 jhbc++; 2477 jhbc++;
2385 - jhlc += tempJhlc; 2478 + jh += tempJhlc;
2386 } 2479 }
2387 if(scheduleRealInfo.getStatus() == -1){ 2480 if(scheduleRealInfo.getStatus() == -1){
2388 remMileage += tempJhlc; 2481 remMileage += tempJhlc;
@@ -2405,7 +2498,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2405,7 +2498,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2405 if(scheduleRealInfo.isSflj()){ 2498 if(scheduleRealInfo.isSflj()){
2406 addMileage += tempJhlc; 2499 addMileage += tempJhlc;
2407 } 2500 }
2408 - yygl += tempJhlc; 2501 + sj += tempJhlc;
2409 } 2502 }
2410 } 2503 }
2411 }else{ 2504 }else{
@@ -2429,7 +2522,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2429,7 +2522,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2429 if(scheduleRealInfo.isSflj()){ 2522 if(scheduleRealInfo.isSflj()){
2430 addMileage += tempJhlc; 2523 addMileage += tempJhlc;
2431 } 2524 }
2432 - yygl += childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage(); 2525 + sj += childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
2433 } 2526 }
2434 } 2527 }
2435 } 2528 }
@@ -2475,11 +2568,19 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2475,11 +2568,19 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2475 map.put("fast", ""); 2568 map.put("fast", "");
2476 map.put("slow", ""); 2569 map.put("slow", "");
2477 } 2570 }
2478 - listMap.add(map); 2571 + System.out.println(map);
  2572 + listMap.add(map);
2479 } catch (Exception e) { 2573 } catch (Exception e) {
2480 e.printStackTrace(); 2574 e.printStackTrace();
2481 } 2575 }
2482 } 2576 }
  2577 + jhlc += jh;
  2578 + yygl += sj;
  2579 + if(jh > sj){
  2580 + remgl += jh - sj;
  2581 + } else {
  2582 + addgl += sj - jh;
  2583 + }
2483 } 2584 }
2484 } 2585 }
2485 2586
@@ -2498,7 +2599,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2498,7 +2599,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2498 map.put("yygljh", format.format(jhlc)); 2599 map.put("yygljh", format.format(jhlc));
2499 map.put("ssgl", format.format(remMileage)); 2600 map.put("ssgl", format.format(remMileage));
2500 map.put("ksgl", format.format(ksgl)); 2601 map.put("ksgl", format.format(ksgl));
2501 - map.put("yyglsj", format.format(yygl+remMileage)); 2602 + map.put("yyglsj", format.format(yygl));
2502 map.put("jhbc", jhbc); 2603 map.put("jhbc", jhbc);
2503 map.put("jcclc", jcclc); 2604 map.put("jcclc", jcclc);
2504 2605
@@ -2506,7 +2607,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2506,7 +2607,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2506 map.put("ssbc", cjbc); 2607 map.put("ssbc", cjbc);
2507 map.put("ysgl", format.format(yygl)); 2608 map.put("ysgl", format.format(yygl));
2508 map.put("sjbc", jhbc-cjbc+ljbc); 2609 map.put("sjbc", jhbc-cjbc+ljbc);
2509 - map.put("zgl", format.format(yygl+remMileage+ksgl+jcclc)); 2610 + map.put("zgl", format.format(yygl+ksgl+jcclc));
2510 map.put("ljbc", ljbc); 2611 map.put("ljbc", ljbc);
2511 String zdp="",zwdp="",wdp=""; 2612 String zdp="",zwdp="",wdp="";
2512 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm"); 2613 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");
@@ -2557,7 +2658,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2557,7 +2658,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2557 // int ljbc = scheduleRealInfoRepository.findLjbc(jName, clZbh, lpName); 2658 // int ljbc = scheduleRealInfoRepository.findLjbc(jName, clZbh, lpName);
2558 int jhbc = 0,cjbc = 0,ljbc = 0; 2659 int jhbc = 0,cjbc = 0,ljbc = 0;
2559 double jhlc = 0, yygl = 0, ksgl = 0,tempJhlc = 0,jcclc=0; 2660 double jhlc = 0, yygl = 0, ksgl = 0,tempJhlc = 0,jcclc=0;
2560 - float addMileage = 0l,remMileage = 0l; 2661 + float addMileage = 0l,remMileage = 0l, addgl = 0, remgl = 0;
2561 Map<String,Object> map = new HashMap<String, Object>(); 2662 Map<String,Object> map = new HashMap<String, Object>();
2562 for(ScheduleRealInfo scheduleRealInfo : list){ 2663 for(ScheduleRealInfo scheduleRealInfo : list){
2563 if(scheduleRealInfo != null){ 2664 if(scheduleRealInfo != null){
@@ -2565,6 +2666,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2565,6 +2666,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2565 //烂班里程(主任务烂班), 2666 //烂班里程(主任务烂班),
2566 //临加里程(主任务临加), 2667 //临加里程(主任务临加),
2567 //计划班次,烂班班次,增加班次 2668 //计划班次,烂班班次,增加班次
  2669 + double jh = 0, sj = 0;
2568 tempJhlc = scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc(); 2670 tempJhlc = scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc();
2569 if(scheduleRealInfo.isSflj()){ 2671 if(scheduleRealInfo.isSflj()){
2570 ljbc++; 2672 ljbc++;
@@ -2572,7 +2674,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2572,7 +2674,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2572 if( !(scheduleRealInfo.getBcType().equals("in") 2674 if( !(scheduleRealInfo.getBcType().equals("in")
2573 ||scheduleRealInfo.getBcType().equals("out")) ){ 2675 ||scheduleRealInfo.getBcType().equals("out")) ){
2574 jhbc++; 2676 jhbc++;
2575 - jhlc += tempJhlc; 2677 + jh += tempJhlc;
2576 } 2678 }
2577 2679
2578 if(scheduleRealInfo.getStatus() == -1){ 2680 if(scheduleRealInfo.getStatus() == -1){
@@ -2597,7 +2699,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2597,7 +2699,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2597 if(scheduleRealInfo.isSflj()){ 2699 if(scheduleRealInfo.isSflj()){
2598 addMileage += tempJhlc; 2700 addMileage += tempJhlc;
2599 } 2701 }
2600 - yygl += tempJhlc; 2702 + sj += tempJhlc;
2601 } 2703 }
2602 } 2704 }
2603 }else{ 2705 }else{
@@ -2621,18 +2723,25 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2621,18 +2723,25 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2621 if(scheduleRealInfo.isSflj()){ 2723 if(scheduleRealInfo.isSflj()){
2622 addMileage += tempJhlc; 2724 addMileage += tempJhlc;
2623 } 2725 }
2624 - yygl += childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage(); 2726 + sj += childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage();
2625 } 2727 }
2626 } 2728 }
2627 } 2729 }
2628 } 2730 }
  2731 + jhlc += jh;
  2732 + yygl += sj;
  2733 + if(jh > sj){
  2734 + remgl += jh - sj;
  2735 + } else if(sj > jh){
  2736 + addgl += sj - jh;
  2737 + }
2629 } 2738 }
2630 } 2739 }
2631 map.put("jhlc", format.format(jhlc+jcclc)); 2740 map.put("jhlc", format.format(jhlc+jcclc));
2632 map.put("yygljh", format.format(jhlc)); 2741 map.put("yygljh", format.format(jhlc));
2633 map.put("ssgl", format.format(remMileage)); 2742 map.put("ssgl", format.format(remMileage));
2634 map.put("ksgl", format.format(ksgl)); 2743 map.put("ksgl", format.format(ksgl));
2635 - map.put("yyglsj", format.format(yygl+remMileage)); 2744 + map.put("yyglsj", format.format(yygl));
2636 map.put("jhbc", jhbc); 2745 map.put("jhbc", jhbc);
2637 map.put("jcclc", jcclc); 2746 map.put("jcclc", jcclc);
2638 2747
@@ -2640,7 +2749,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2640,7 +2749,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2640 map.put("ssbc", cjbc); 2749 map.put("ssbc", cjbc);
2641 map.put("ysgl", format.format(yygl)); 2750 map.put("ysgl", format.format(yygl));
2642 map.put("sjbc", jhbc-cjbc+ljbc); 2751 map.put("sjbc", jhbc-cjbc+ljbc);
2643 - map.put("zgl", format.format(yygl+remMileage+ksgl+jcclc)); 2752 + map.put("zgl", format.format(yygl+ksgl+jcclc));
2644 map.put("ljbc", ljbc); 2753 map.put("ljbc", ljbc);
2645 2754
2646 return map; 2755 return map;
@@ -2897,4 +3006,135 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2897,4 +3006,135 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2897 return list; 3006 return list;
2898 } 3007 }
2899 3008
  3009 +
  3010 + @Override
  3011 + public List<Map<String, Object>> scheduleDailyExport(Map<String, Object> map){
  3012 + String line = map.get("line").toString();
  3013 + String date = map.get("date").toString();
  3014 + String xlName = map.get("xlName").toString();
  3015 + String state = map.get("state").toString();
  3016 + String type = map.get("type").toString();
  3017 +
  3018 + List<Map<String, Object>> dataList2 = new ArrayList<Map<String, Object>>();
  3019 + List<Map<String, Object>> dataList3 = new ArrayList<Map<String, Object>>();
  3020 + List<Map<String, Object>> list1 = this.statisticsDaily(line, date, xlName, null);
  3021 + List<ScheduleRealInfo> list2 = this.queryUserInfo(line, date, state);
  3022 + List<ScheduleRealInfo> list3 = this.realScheduleList(line, date);
  3023 +
  3024 + for(Map<String, Object> m : list1){
  3025 +// m.put("ssgl", m.get("ssgl"));
  3026 +// m.put("ssbc", m.get("ssbc"));
  3027 +// m.put("ssgl_lz", m.get("ssgl_lz") + " / " + m.get("ssbc_lz"));
  3028 +// m.put("ssgl_dm", m.get("ssgl_dm") + " / " + m.get("ssbc_dm"));
  3029 +// m.put("ssgl_gz", m.get("ssgl_gz") + " / " + m.get("ssbc_gz"));
  3030 +// m.put("ssgl_jf", m.get("ssgl_jf") + " / " + m.get("ssbc_jf"));
  3031 +// m.put("ssgl_zs", m.get("ssgl_zs") + " / " + m.get("ssbc_zs"));
  3032 +// m.put("ssgl_qr", m.get("ssgl_qr") + " / " + m.get("ssbc_qr"));
  3033 +// m.put("ssgl_qc", m.get("ssgl_qc") + " / " + m.get("ssbc_qc"));
  3034 +// m.put("ssgl_kx", m.get("ssgl_kx") + " / " + m.get("ssbc_kx"));
  3035 +// m.put("ssgl_qh", m.get("ssgl_qh") + " / " + m.get("ssbc_qh"));
  3036 +// m.put("ssgl_yw", m.get("ssgl_yw") + " / " + m.get("ssbc_yw"));
  3037 +// m.put("ssgl_other", m.get("ssgl_other") + " / " + m.get("ssbc_other"));
  3038 + }
  3039 +
  3040 + int size = 0;
  3041 + Map<String, Object> tempMap = new HashMap<String, Object>();
  3042 + for(int i = 0; i < list2.size(); i++){
  3043 + Object obj = (Object)list2.get(i);
  3044 + Object[] objs = (Object[])obj;
  3045 + if(size == 5){
  3046 + size = 0;
  3047 + dataList2.add(tempMap);
  3048 + tempMap = new HashMap<String, Object>();
  3049 + }
  3050 + tempMap.put("lp" + size, objs[3]);
  3051 + tempMap.put("ch" + size, objs[2]);
  3052 + tempMap.put("jz" + size, objs[1] + "/" + objs[4]);
  3053 + tempMap.put("sz" + size, "");
  3054 + tempMap.put("jw" + size, "");
  3055 + tempMap.put("sw" + size, "");
  3056 +
  3057 + size++;
  3058 + }
  3059 + if(size < 5){
  3060 + for(;size < 5; size++){
  3061 + tempMap.put("lp" + size, "");
  3062 + tempMap.put("ch" + size, "");
  3063 + tempMap.put("jz" + size, "");
  3064 + tempMap.put("sz" + size, "");
  3065 + tempMap.put("jw" + size, "");
  3066 + tempMap.put("sw" + size, "");
  3067 + }
  3068 + }
  3069 +
  3070 + dataList2.add(tempMap);
  3071 +
  3072 + size = 0;
  3073 + tempMap = new HashMap<String, Object>();
  3074 + for(ScheduleRealInfo schedule : list3){
  3075 + if(size == 3){
  3076 + size = 0;
  3077 + dataList3.add(tempMap);
  3078 + tempMap = new HashMap<String, Object>();
  3079 + }
  3080 + tempMap.put("lpName" + size, schedule.getLpName());
  3081 + tempMap.put("qdzName" + size, schedule.getQdzName());
  3082 + tempMap.put("zdsj" + size, schedule.getZdsj());
  3083 + tempMap.put("zdsjActual" + size, schedule.getZdsjActual()!=null?schedule.getZdsjActual():"");
  3084 + tempMap.put("zdsjk" + size, "");
  3085 + tempMap.put("zdsjm" + size, "");
  3086 + tempMap.put("fcsj" + size, schedule.getFcsj());
  3087 + tempMap.put("fcsjActual" + size, schedule.getFcsjActual()!=null?schedule.getFcsjActual():"");
  3088 + tempMap.put("fcsjk" + size, "");
  3089 + tempMap.put("fcsjm" + size, "");
  3090 + tempMap.put("remarks" + size, schedule.getRemarks()!=null?schedule.getRemarks():"");
  3091 +
  3092 + size++;
  3093 + }
  3094 + if(size < 3){
  3095 + for(; size < 3; size++){
  3096 + tempMap.put("lpName" + size, "");
  3097 + tempMap.put("qdzName" + size, "");
  3098 + tempMap.put("zdsj" + size, "");
  3099 + tempMap.put("zdsjActual" + size, "");
  3100 + tempMap.put("zdsjk" + size, "");
  3101 + tempMap.put("zdsjm" + size, "");
  3102 + tempMap.put("fcsj" + size, "");
  3103 + tempMap.put("fcsjActual" + size, "");
  3104 + tempMap.put("fcsjk" + size, "");
  3105 + tempMap.put("fcsjm" + size, "");
  3106 + tempMap.put("remarks" + size, "");
  3107 + }
  3108 + }
  3109 +
  3110 + dataList3.add(tempMap);
  3111 +
  3112 + if (type.equals("export")) {
  3113 + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
  3114 + sdfSimple = new SimpleDateFormat("yyyyMMdd");
  3115 + Map<String, Object> m = new HashMap<String, Object>();
  3116 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  3117 + ReportUtils ee = new ReportUtils();
  3118 + try {
  3119 + listI.add(list1.iterator());
  3120 + listI.add(dataList2.iterator());
  3121 + listI.add(dataList3.iterator());
  3122 + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
  3123 + String sourcePath = path+"mould/scheduleDaily.xls";
  3124 + if(date.length() == 7){
  3125 + sdfMonth = new SimpleDateFormat("yyyy-MM");
  3126 + sdfSimple = new SimpleDateFormat("yyyyMM");
  3127 + sourcePath = path+"mould/scheduleDaily_m.xls";
  3128 + }
  3129 + ee.excelReplace(listI, new Object[] { m }, sourcePath,
  3130 + path+"export/调度日报" + sdfSimple.format(sdfMonth.parse(date))+".xls");
  3131 + } catch (Exception e) {
  3132 + // TODO: handle exception
  3133 + e.printStackTrace();
  3134 + }
  3135 + }
  3136 +
  3137 + return new ArrayList<Map<String, Object>>();
  3138 + }
  3139 +
2900 } 3140 }
2901 \ No newline at end of file 3141 \ No newline at end of file
src/main/java/com/bsth/service/schedule/exception/ScheduleException.java
@@ -7,4 +7,7 @@ public class ScheduleException extends Exception { @@ -7,4 +7,7 @@ public class ScheduleException extends Exception {
7 public ScheduleException(String message) { 7 public ScheduleException(String message) {
8 super("计划调度业务错误==>>" + message); 8 super("计划调度业务错误==>>" + message);
9 } 9 }
  10 + public ScheduleException(Throwable throwable) {
  11 + super(throwable);
  12 + }
10 } 13 }
src/main/java/com/bsth/service/schedule/impl/BServiceImpl.java
@@ -5,6 +5,12 @@ import com.bsth.repository.BaseRepository; @@ -5,6 +5,12 @@ import com.bsth.repository.BaseRepository;
5 import com.bsth.service.schedule.BService; 5 import com.bsth.service.schedule.BService;
6 import com.bsth.service.schedule.exception.ScheduleException; 6 import com.bsth.service.schedule.exception.ScheduleException;
7 import com.bsth.service.schedule.utils.DataToolsService; 7 import com.bsth.service.schedule.utils.DataToolsService;
  8 +import jxl.Cell;
  9 +import jxl.Sheet;
  10 +import jxl.Workbook;
  11 +import jxl.write.Label;
  12 +import jxl.write.WritableSheet;
  13 +import jxl.write.WritableWorkbook;
8 import org.slf4j.Logger; 14 import org.slf4j.Logger;
9 import org.slf4j.LoggerFactory; 15 import org.slf4j.LoggerFactory;
10 import org.springframework.beans.factory.annotation.Autowired; 16 import org.springframework.beans.factory.annotation.Autowired;
@@ -118,7 +124,30 @@ public class BServiceImpl&lt;T, ID extends Serializable&gt; implements BService&lt;T, ID&gt; @@ -118,7 +124,30 @@ public class BServiceImpl&lt;T, ID extends Serializable&gt; implements BService&lt;T, ID&gt;
118 124
119 @Override 125 @Override
120 public File uploadFile(String filename, byte[] filedata) throws ScheduleException { 126 public File uploadFile(String filename, byte[] filedata) throws ScheduleException {
121 - return dataToolsService.uploadFile(filename, filedata); 127 + try {
  128 + // 对上传的excel文件做处理,将第一个sheet名字设定为工作表1
  129 + File file = dataToolsService.uploadFile(filename, filedata);
  130 + Workbook workbook = Workbook.getWorkbook(file);
  131 + Sheet sheet = workbook.getSheet(0);
  132 +
  133 + File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls");
  134 + WritableWorkbook writableWorkbook = Workbook.createWorkbook(fileCal);
  135 + WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0);
  136 + for (int i = 0; i < sheet.getRows(); i++) {
  137 + Cell[] cells = sheet.getRow(i);
  138 + for (int j = 0; j < cells.length; j++) {
  139 + writableSheet.addCell(new Label(j, i, cells[j].getContents()));
  140 + }
  141 + }
  142 + writableWorkbook.write();
  143 + writableWorkbook.close();
  144 +
  145 + return fileCal;
  146 +
  147 + } catch (Exception exp) {
  148 + throw new ScheduleException(exp);
  149 + }
  150 +
122 } 151 }
123 152
124 @Override 153 @Override
src/main/java/com/bsth/service/schedule/impl/GuideboardInfoServiceImpl.java
@@ -3,13 +3,20 @@ package com.bsth.service.schedule.impl; @@ -3,13 +3,20 @@ package com.bsth.service.schedule.impl;
3 import com.bsth.entity.schedule.GuideboardInfo; 3 import com.bsth.entity.schedule.GuideboardInfo;
4 import com.bsth.entity.schedule.TTInfoDetail; 4 import com.bsth.entity.schedule.TTInfoDetail;
5 import com.bsth.service.schedule.GuideboardInfoService; 5 import com.bsth.service.schedule.GuideboardInfoService;
6 -import com.bsth.service.schedule.exception.ScheduleException;  
7 import com.bsth.service.schedule.TTInfoDetailService; 6 import com.bsth.service.schedule.TTInfoDetailService;
  7 +import com.bsth.service.schedule.exception.ScheduleException;
  8 +import com.bsth.service.schedule.utils.DataToolsProperties;
  9 +import org.slf4j.Logger;
  10 +import org.slf4j.LoggerFactory;
8 import org.springframework.beans.factory.annotation.Autowired; 11 import org.springframework.beans.factory.annotation.Autowired;
  12 +import org.springframework.boot.context.properties.EnableConfigurationProperties;
9 import org.springframework.stereotype.Service; 13 import org.springframework.stereotype.Service;
10 import org.springframework.util.CollectionUtils; 14 import org.springframework.util.CollectionUtils;
11 15
12 import javax.transaction.Transactional; 16 import javax.transaction.Transactional;
  17 +import java.io.File;
  18 +import java.io.PrintWriter;
  19 +import java.io.StringWriter;
13 import java.util.HashMap; 20 import java.util.HashMap;
14 import java.util.List; 21 import java.util.List;
15 import java.util.Map; 22 import java.util.Map;
@@ -17,8 +24,15 @@ import java.util.Map; @@ -17,8 +24,15 @@ import java.util.Map;
17 /** 24 /**
18 * 路牌信息服务。 25 * 路牌信息服务。
19 */ 26 */
  27 +@EnableConfigurationProperties(DataToolsProperties.class)
20 @Service 28 @Service
21 public class GuideboardInfoServiceImpl extends BServiceImpl<GuideboardInfo, Long> implements GuideboardInfoService { 29 public class GuideboardInfoServiceImpl extends BServiceImpl<GuideboardInfo, Long> implements GuideboardInfoService {
  30 + /** 日志记录器 */
  31 + private static final Logger LOGGER = LoggerFactory.getLogger(GuideboardInfoServiceImpl.class);
  32 +
  33 + @Autowired
  34 + private DataToolsProperties dataToolsProperties;
  35 +
22 @Autowired 36 @Autowired
23 private TTInfoDetailService ttInfoDetailService; 37 private TTInfoDetailService ttInfoDetailService;
24 38
@@ -94,4 +108,62 @@ public class GuideboardInfoServiceImpl extends BServiceImpl&lt;GuideboardInfo, Long @@ -94,4 +108,62 @@ public class GuideboardInfoServiceImpl extends BServiceImpl&lt;GuideboardInfo, Long
94 } 108 }
95 } 109 }
96 110
  111 + @Override
  112 + public void importData(File file, Map<String, Object> params) throws ScheduleException {
  113 + try {
  114 + LOGGER.info("//---------------- 导入路牌信息 start... ----------------//");
  115 + // 创建ktr转换所需参数
  116 + Map<String, Object> ktrParms = new HashMap<>();
  117 + File ktrFile = new File(this.getClass().getResource(
  118 + dataToolsProperties.getGuideboardsDatainputktr()).toURI());
  119 +
  120 + // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径
  121 + ktrParms.put("transpath", ktrFile.getAbsolutePath());
  122 + ktrParms.put("filepath", file.getAbsolutePath());
  123 + ktrParms.put("erroroutputdir", dataToolsProperties.getTransErrordir());
  124 +
  125 + super.importData(file, ktrParms);
  126 +
  127 + LOGGER.info("//---------------- 导入路牌信息 success... ----------------//");
  128 + } catch (Exception exp) {
  129 + LOGGER.info("//---------------- 导入路牌信息 failed... ----------------//");
  130 +
  131 + StringWriter sw = new StringWriter();
  132 + exp.printStackTrace(new PrintWriter(sw));
  133 + LOGGER.info(sw.toString());
  134 +
  135 + throw new ScheduleException(exp.getMessage());
  136 + }
  137 + }
  138 +
  139 + @Override
  140 + public File exportData(Map<String, Object> params) throws ScheduleException {
  141 + try {
  142 + LOGGER.info("//---------------- 导出路牌信息 start... ----------------//");
  143 + // 创建ktr转换所需参数
  144 + Map<String, Object> ktrParms = new HashMap<>();
  145 + File ktrFile = new File(this.getClass().getResource(
  146 + dataToolsProperties.getGuideboardsDataoutputktr()).toURI());
  147 +
  148 + // 通用参数,转换文件路径,excel输出文件名
  149 + ktrParms.put("transpath", ktrFile.getAbsolutePath());
  150 + ktrParms.put("filename", "路牌信息_download-");
  151 +
  152 + File file = super.exportData(ktrParms);
  153 +
  154 + LOGGER.info("//---------------- 导出路牌信息 success... ----------------//");
  155 +
  156 + return file;
  157 +
  158 + } catch (Exception exp) {
  159 + LOGGER.info("//---------------- 导出路牌信息 failed... ----------------//");
  160 +
  161 + StringWriter sw = new StringWriter();
  162 + exp.printStackTrace(new PrintWriter(sw));
  163 + LOGGER.info(sw.toString());
  164 +
  165 + throw new ScheduleException(exp.getMessage());
  166 + }
  167 + }
  168 +
97 } 169 }
src/main/java/com/bsth/service/schedule/impl/TTInfoDetailServiceImpl.java
@@ -13,6 +13,7 @@ import com.bsth.service.schedule.GuideboardInfoService; @@ -13,6 +13,7 @@ import com.bsth.service.schedule.GuideboardInfoService;
13 import com.bsth.service.schedule.TTInfoDetailService; 13 import com.bsth.service.schedule.TTInfoDetailService;
14 import com.bsth.service.schedule.exception.ScheduleException; 14 import com.bsth.service.schedule.exception.ScheduleException;
15 import com.bsth.service.schedule.utils.DataToolsProperties; 15 import com.bsth.service.schedule.utils.DataToolsProperties;
  16 +import com.bsth.service.schedule.utils.DataToolsService;
16 import jxl.Cell; 17 import jxl.Cell;
17 import jxl.Sheet; 18 import jxl.Sheet;
18 import jxl.Workbook; 19 import jxl.Workbook;
@@ -24,6 +25,7 @@ import org.joda.time.DateTime; @@ -24,6 +25,7 @@ import org.joda.time.DateTime;
24 import org.slf4j.Logger; 25 import org.slf4j.Logger;
25 import org.slf4j.LoggerFactory; 26 import org.slf4j.LoggerFactory;
26 import org.springframework.beans.factory.annotation.Autowired; 27 import org.springframework.beans.factory.annotation.Autowired;
  28 +import org.springframework.beans.factory.annotation.Qualifier;
27 import org.springframework.boot.context.properties.EnableConfigurationProperties; 29 import org.springframework.boot.context.properties.EnableConfigurationProperties;
28 import org.springframework.stereotype.Service; 30 import org.springframework.stereotype.Service;
29 import org.springframework.util.CollectionUtils; 31 import org.springframework.util.CollectionUtils;
@@ -57,12 +59,22 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -57,12 +59,22 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
57 @Autowired 59 @Autowired
58 private DataToolsProperties dataToolsProperties; 60 private DataToolsProperties dataToolsProperties;
59 61
  62 + @Autowired
  63 + @Qualifier(value = "dataToolsServiceImpl")
  64 + private DataToolsService dataToolsService;
  65 +
60 @Override 66 @Override
61 public TTInfoDetail findById(Long aLong) { 67 public TTInfoDetail findById(Long aLong) {
62 return ttInfoDetailRepository.findOneExtend(aLong); 68 return ttInfoDetailRepository.findOneExtend(aLong);
63 } 69 }
64 70
65 @Override 71 @Override
  72 + public File uploadFile(String filename, byte[] filedata) throws ScheduleException {
  73 +
  74 + return dataToolsService.uploadFile(filename, filedata);
  75 + }
  76 +
  77 + @Override
66 public void importData( 78 public void importData(
67 File file, 79 File file,
68 Map<String, Object> params) throws ScheduleException { 80 Map<String, Object> params) throws ScheduleException {
@@ -417,20 +429,23 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -417,20 +429,23 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
417 } 429 }
418 430
419 // 班次时间验证,正则表达式,格式hh:mm或者hhmm 431 // 班次时间验证,正则表达式,格式hh:mm或者hhmm
420 - String el = "^(([0-1]\\d)|(2[0-4])):[0-5]\\d$"; // hh:mm格式  
421 - String el2 = "^(([0-1]\\d)|(2[0-4]))[0-5]\\d$"; // hhmm格式  
422 - Pattern p = Pattern.compile(el);  
423 - Pattern p2 = Pattern.compile(el2); 432 + String rex1 = "^([01]?[0-9]|2[0-3]):[0-5][0-9]$"; // hh:mm格式
  433 + String rex2 = "^([01]?[0-9]|2[0-3]),[0-5][0-9]$"; // hh,mm格式
  434 + String rex3 = "^([01]?[0-9]|2[0-3])[0-5][0-9]$"; // hhmm格式
  435 + Pattern p1 = Pattern.compile(rex1);
  436 + Pattern p2 = Pattern.compile(rex2);
  437 + Pattern p3 = Pattern.compile(rex3);
424 438
425 for (int i = 1; i < sheet.getRows(); i++) { // 从第2行开始验证数据 439 for (int i = 1; i < sheet.getRows(); i++) { // 从第2行开始验证数据
426 Cell[] bcells = sheet.getRow(i); 440 Cell[] bcells = sheet.getRow(i);
427 for (int j = 1; j < bcells.length; j++) { // 从第2列开始 441 for (int j = 1; j < bcells.length; j++) { // 从第2列开始
428 String bcell_con = bcells[j].getContents(); 442 String bcell_con = bcells[j].getContents();
429 if (StringUtils.isNotEmpty(bcell_con)) { 443 if (StringUtils.isNotEmpty(bcell_con)) {
430 - Matcher m = p.matcher(bcell_con.trim()); 444 + Matcher m1 = p1.matcher(bcell_con.trim());
431 Matcher m2 = p2.matcher(bcell_con.trim()); 445 Matcher m2 = p2.matcher(bcell_con.trim());
432 - if ((!m.matches()) && (!m2.matches())) {  
433 - throw new Exception(String.format("第%d行,第%d列的发车时间格式不正确,格式应为hh:mm或hhmm", i + 1, j + 1)); 446 + Matcher m3 = p3.matcher(bcell_con.trim());
  447 + if ((!m1.matches()) && (!m2.matches()) && (!m3.matches())) {
  448 + throw new Exception(String.format("第%d行,第%d列的发车时间格式不正确,格式应为hh:mm或hh,mm或hhmm", i + 1, j + 1));
434 } 449 }
435 } 450 }
436 } 451 }
@@ -497,4 +512,5 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -497,4 +512,5 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
497 public List<TTInfoDetail> findBcdetails(Integer xlId, Long ttinfoId, Long lpId) { 512 public List<TTInfoDetail> findBcdetails(Integer xlId, Long ttinfoId, Long lpId) {
498 return ttInfoDetailRepository.findBcdetails(xlId, ttinfoId, lpId); 513 return ttInfoDetailRepository.findBcdetails(xlId, ttinfoId, lpId);
499 } 514 }
  515 +
500 } 516 }
src/main/java/com/bsth/service/schedule/utils/DataImportExportServiceImpl.java
@@ -170,4 +170,175 @@ public class DataImportExportServiceImpl implements DataImportExportService, Ini @@ -170,4 +170,175 @@ public class DataImportExportServiceImpl implements DataImportExportService, Ini
170 170
171 return new File(filepath); 171 return new File(filepath);
172 } 172 }
  173 +
  174 +
  175 + // TODO:以后改成下面的样子
  176 +// import java.io.FileInputStream;
  177 +// import java.io.FileOutputStream;
  178 +// import java.io.IOException;
  179 +// import java.io.InputStream;
  180 +// import java.util.Iterator;
  181 +//
  182 +// import org.apache.poi.hssf.usermodel.HSSFCell;
  183 +// import org.apache.poi.hssf.usermodel.HSSFRow;
  184 +// import org.apache.poi.hssf.usermodel.HSSFSheet;
  185 +// import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  186 +//
  187 +// import org.apache.poi.xssf.usermodel.XSSFCell;
  188 +// import org.apache.poi.xssf.usermodel.XSSFRow;
  189 +// import org.apache.poi.xssf.usermodel.XSSFSheet;
  190 +// import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  191 +//
  192 +// public class ReadWriteExcelFile {
  193 +//
  194 +// public static void readXLSFile() throws IOException
  195 +// {
  196 +// InputStream ExcelFileToRead = new FileInputStream("C:/Test.xls");
  197 +// HSSFWorkbook wb = new HSSFWorkbook(ExcelFileToRead);
  198 +//
  199 +// HSSFSheet sheet=wb.getSheetAt(0);
  200 +// HSSFRow row;
  201 +// HSSFCell cell;
  202 +//
  203 +// Iterator rows = sheet.rowIterator();
  204 +//
  205 +// while (rows.hasNext())
  206 +// {
  207 +// row=(HSSFRow) rows.next();
  208 +// Iterator cells = row.cellIterator();
  209 +//
  210 +// while (cells.hasNext())
  211 +// {
  212 +// cell=(HSSFCell) cells.next();
  213 +//
  214 +// if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING)
  215 +// {
  216 +// System.out.print(cell.getStringCellValue()+" ");
  217 +// }
  218 +// else if(cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC)
  219 +// {
  220 +// System.out.print(cell.getNumericCellValue()+" ");
  221 +// }
  222 +// else
  223 +// {
  224 +// //U Can Handel Boolean, Formula, Errors
  225 +// }
  226 +// }
  227 +// System.out.println();
  228 +// }
  229 +//
  230 +// }
  231 +//
  232 +// public static void writeXLSFile() throws IOException {
  233 +//
  234 +// String excelFileName = "C:/Test.xls";//name of excel file
  235 +//
  236 +// String sheetName = "Sheet1";//name of sheet
  237 +//
  238 +// HSSFWorkbook wb = new HSSFWorkbook();
  239 +// HSSFSheet sheet = wb.createSheet(sheetName) ;
  240 +//
  241 +// //iterating r number of rows
  242 +// for (int r=0;r < 5; r++ )
  243 +// {
  244 +// HSSFRow row = sheet.createRow(r);
  245 +//
  246 +// //iterating c number of columns
  247 +// for (int c=0;c < 5; c++ )
  248 +// {
  249 +// HSSFCell cell = row.createCell(c);
  250 +//
  251 +// cell.setCellValue("Cell "+r+" "+c);
  252 +// }
  253 +// }
  254 +//
  255 +// FileOutputStream fileOut = new FileOutputStream(excelFileName);
  256 +//
  257 +// //write this workbook to an Outputstream.
  258 +// wb.write(fileOut);
  259 +// fileOut.flush();
  260 +// fileOut.close();
  261 +// }
  262 +//
  263 +// public static void readXLSXFile() throws IOException
  264 +// {
  265 +// InputStream ExcelFileToRead = new FileInputStream("C:/Test.xlsx");
  266 +// XSSFWorkbook wb = new XSSFWorkbook(ExcelFileToRead);
  267 +//
  268 +// XSSFWorkbook test = new XSSFWorkbook();
  269 +//
  270 +// XSSFSheet sheet = wb.getSheetAt(0);
  271 +// XSSFRow row;
  272 +// XSSFCell cell;
  273 +//
  274 +// Iterator rows = sheet.rowIterator();
  275 +//
  276 +// while (rows.hasNext())
  277 +// {
  278 +// row=(XSSFRow) rows.next();
  279 +// Iterator cells = row.cellIterator();
  280 +// while (cells.hasNext())
  281 +// {
  282 +// cell=(XSSFCell) cells.next();
  283 +//
  284 +// if (cell.getCellType() == XSSFCell.CELL_TYPE_STRING)
  285 +// {
  286 +// System.out.print(cell.getStringCellValue()+" ");
  287 +// }
  288 +// else if(cell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC)
  289 +// {
  290 +// System.out.print(cell.getNumericCellValue()+" ");
  291 +// }
  292 +// else
  293 +// {
  294 +// //U Can Handel Boolean, Formula, Errors
  295 +// }
  296 +// }
  297 +// System.out.println();
  298 +// }
  299 +//
  300 +// }
  301 +//
  302 +// public static void writeXLSXFile() throws IOException {
  303 +//
  304 +// String excelFileName = "C:/Test.xlsx";//name of excel file
  305 +//
  306 +// String sheetName = "Sheet1";//name of sheet
  307 +//
  308 +// XSSFWorkbook wb = new XSSFWorkbook();
  309 +// XSSFSheet sheet = wb.createSheet(sheetName) ;
  310 +//
  311 +// //iterating r number of rows
  312 +// for (int r=0;r < 5; r++ )
  313 +// {
  314 +// XSSFRow row = sheet.createRow(r);
  315 +//
  316 +// //iterating c number of columns
  317 +// for (int c=0;c < 5; c++ )
  318 +// {
  319 +// XSSFCell cell = row.createCell(c);
  320 +//
  321 +// cell.setCellValue("Cell "+r+" "+c);
  322 +// }
  323 +// }
  324 +//
  325 +// FileOutputStream fileOut = new FileOutputStream(excelFileName);
  326 +//
  327 +// //write this workbook to an Outputstream.
  328 +// wb.write(fileOut);
  329 +// fileOut.flush();
  330 +// fileOut.close();
  331 +// }
  332 +//
  333 +// public static void main(String[] args) throws IOException {
  334 +//
  335 +// writeXLSFile();
  336 +// readXLSFile();
  337 +//
  338 +// writeXLSXFile();
  339 +// readXLSXFile();
  340 +//
  341 +// }
  342 +//
  343 +// }
173 } 344 }
src/main/java/com/bsth/service/schedule/utils/DataToolsProperties.java
@@ -99,6 +99,9 @@ public class DataToolsProperties { @@ -99,6 +99,9 @@ public class DataToolsProperties {
99 @NotNull 99 @NotNull
100 /** 人员配置信息导出ktr转换 */ 100 /** 人员配置信息导出ktr转换 */
101 private String employeesconfigDataoutputktr; 101 private String employeesconfigDataoutputktr;
  102 + @NotNull
  103 + /** 路牌信息导出 */
  104 + private String guideboardsDataoutputktr;
102 105
103 // TODO: 106 // TODO:
104 107
@@ -309,4 +312,12 @@ public class DataToolsProperties { @@ -309,4 +312,12 @@ public class DataToolsProperties {
309 public void setEmployeesconfigDataoutputktr(String employeesconfigDataoutputktr) { 312 public void setEmployeesconfigDataoutputktr(String employeesconfigDataoutputktr) {
310 this.employeesconfigDataoutputktr = employeesconfigDataoutputktr; 313 this.employeesconfigDataoutputktr = employeesconfigDataoutputktr;
311 } 314 }
  315 +
  316 + public String getGuideboardsDataoutputktr() {
  317 + return guideboardsDataoutputktr;
  318 + }
  319 +
  320 + public void setGuideboardsDataoutputktr(String guideboardsDataoutputktr) {
  321 + this.guideboardsDataoutputktr = guideboardsDataoutputktr;
  322 + }
312 } 323 }
src/main/java/com/bsth/service/sys/RealControAuthorityService.java 0 → 100644
  1 +package com.bsth.service.sys;
  2 +
  3 +import com.bsth.entity.sys.RealControAuthority;
  4 +import com.bsth.service.BaseService;
  5 +
  6 +/**
  7 + * Created by panzhao on 2017/2/14.
  8 + */
  9 +public interface RealControAuthorityService extends BaseService<RealControAuthority, Integer> {
  10 + RealControAuthority findByUserId(Integer userId);
  11 +}
src/main/java/com/bsth/service/sys/impl/RealControAuthorityServiceImpl.java 0 → 100644
  1 +package com.bsth.service.sys.impl;
  2 +
  3 +import com.bsth.entity.sys.RealControAuthority;
  4 +import com.bsth.repository.sys.RealControAuthorityRepository;
  5 +import com.bsth.service.impl.BaseServiceImpl;
  6 +import com.bsth.service.sys.RealControAuthorityService;
  7 +import org.springframework.beans.factory.annotation.Autowired;
  8 +import org.springframework.stereotype.Service;
  9 +
  10 +/**
  11 + * Created by panzhao on 2017/2/14.
  12 + */
  13 +@Service
  14 +public class RealControAuthorityServiceImpl extends BaseServiceImpl<RealControAuthority, Integer> implements RealControAuthorityService {
  15 +
  16 + @Autowired
  17 + RealControAuthorityRepository realControAuthorityRepository;
  18 +
  19 + @Override
  20 + public RealControAuthority findByUserId(Integer userId) {
  21 + return realControAuthorityRepository.findByUserId(userId);
  22 + }
  23 +}
src/main/resources/datatools/config-dev.properties
@@ -65,6 +65,9 @@ datatools.carsconfig_dataoutputktr=/datatools/ktrs/carsConfigDataOutput.ktr @@ -65,6 +65,9 @@ datatools.carsconfig_dataoutputktr=/datatools/ktrs/carsConfigDataOutput.ktr
65 # 人员配置信息导出ktr转换 65 # 人员配置信息导出ktr转换
66 datatools.employeesconfig_dataoutputktr=/datatools/ktrs/employeesConfigDataOutput.ktr 66 datatools.employeesconfig_dataoutputktr=/datatools/ktrs/employeesConfigDataOutput.ktr
67 67
  68 +# 路牌信息导出
  69 +datatools.guideboards_dataoutputktr=/datatools/ktrs/guideboardDataOutput.ktr
  70 +
68 71
69 # TODO: 72 # TODO:
70 73
src/main/resources/datatools/config-prod.properties
@@ -66,5 +66,8 @@ datatools.carsconfig_dataoutputktr=/datatools/ktrs/carsConfigDataOutput.ktr @@ -66,5 +66,8 @@ datatools.carsconfig_dataoutputktr=/datatools/ktrs/carsConfigDataOutput.ktr
66 # 人员配置信息导出ktr转换 66 # 人员配置信息导出ktr转换
67 datatools.employeesconfig_dataoutputktr=/datatools/ktrs/employeesConfigDataOutput.ktr 67 datatools.employeesconfig_dataoutputktr=/datatools/ktrs/employeesConfigDataOutput.ktr
68 68
  69 +# 路牌信息导出
  70 +datatools.guideboards_dataoutputktr=/datatools/ktrs/guideboardDataOutput.ktr
  71 +
69 72
70 # TODO: 73 # TODO:
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>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>  
84 - <is_key_private>N</is_key_private>  
85 - </info>  
86 - <notepads>  
87 - <notepad>  
88 - <note>&#x8fd9;&#x91cc;&#x6709;&#x4e9b;&#x95ee;&#x9898;&#xa;&#x5728;window2012&#x7684;&#x73af;&#x5883;&#x4e0b;&#xff0c;&#xa;MySql&#x6570;&#x636e;&#x5e93;&#x67e5;&#x8be2;&#x4e2d;&#x5982;&#x679c;&#x8fd4;&#x56de;&#x4e2d;&#x6587;&#x5185;&#x5bb9;&#x7684;&#x5b57;&#x6bb5;&#xff0c;&#x8fd9;&#x4e2a;&#x5185;&#x5bb9;&#x4e71;&#x7801;&#xa;&#x89e3;&#x51b3;&#x529e;&#x6cd5;&#xff0c;&#x5c31;&#x662f;&#x6570;&#x636e;&#x5e93;&#x67e5;&#x8be2;&#x5168;&#x90e8;&#x7f13;&#x5b58;&#xff0c;&#x5c31;&#x4e0d;&#x4e71;&#x7801;&#xa;linux&#x73af;&#x5883;&#x4e0b;&#x6ca1;&#x95ee;&#x9898;&#xa;</note>  
89 - <xloc>40</xloc>  
90 - <yloc>238</yloc>  
91 - <width>333</width>  
92 - <heigth>106</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>&#x24;&#x7b;v_db_dname&#x7d;</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.characterEncoding</code><attribute>utf8</attribute></attribute>  
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>N</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>bus_control_&#x516c;&#x53f8;_201</name>  
139 - <server>localhost</server>  
140 - <type>MYSQL</type>  
141 - <access>Native</access>  
142 - <database>control</database>  
143 - <port>3306</port>  
144 - <username>root</username>  
145 - <password>Encrypted </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>3306</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>N</attribute></attribute>  
159 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>  
160 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>  
161 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
162 - </attributes>  
163 - </connection>  
164 - <connection>  
165 - <name>bus_control_&#x672c;&#x673a;</name>  
166 - <server>localhost</server>  
167 - <type>MYSQL</type>  
168 - <access>Native</access>  
169 - <database>control</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>Y</attribute></attribute>  
187 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>  
188 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
189 - </attributes>  
190 - </connection>  
191 - <connection>  
192 - <name>xlab_mysql_youle</name>  
193 - <server>101.231.124.8</server>  
194 - <type>MYSQL</type>  
195 - <access>Native</access>  
196 - <database>xlab_youle</database>  
197 - <port>45687</port>  
198 - <username>xlab-youle</username>  
199 - <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>  
200 - <servername/>  
201 - <data_tablespace/>  
202 - <index_tablespace/>  
203 - <attributes>  
204 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
205 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
206 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
207 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
208 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
209 - <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>  
210 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
211 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
212 - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>  
213 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>  
214 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>  
215 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
216 - </attributes>  
217 - </connection>  
218 - <connection>  
219 - <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>  
220 - <server>localhost</server>  
221 - <type>MYSQL</type>  
222 - <access>Native</access>  
223 - <database>xlab_youle</database>  
224 - <port>3306</port>  
225 - <username>root</username>  
226 - <password>Encrypted </password>  
227 - <servername/>  
228 - <data_tablespace/>  
229 - <index_tablespace/>  
230 - <attributes>  
231 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
232 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
233 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
234 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
235 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
236 - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>  
237 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
238 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
239 - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>  
240 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>  
241 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>  
242 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
243 - </attributes>  
244 - </connection>  
245 - <connection>  
246 - <name>xlab_youle</name>  
247 - <server/>  
248 - <type>MYSQL</type>  
249 - <access>JNDI</access>  
250 - <database>xlab_youle</database>  
251 - <port>1521</port>  
252 - <username/>  
253 - <password>Encrypted </password>  
254 - <servername/>  
255 - <data_tablespace/>  
256 - <index_tablespace/>  
257 - <attributes>  
258 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
259 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
260 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
261 - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>  
262 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
263 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
264 - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>  
265 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>  
266 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>  
267 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
268 - </attributes>  
269 - </connection>  
270 - <order>  
271 - <hop> <from>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ccinfo</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>  
272 - <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>  
273 - <hop> <from>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</from><to>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</to><enabled>Y</enabled> </hop>  
274 - <hop> <from>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</from><to>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>  
275 - <hop> <from>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</from><to>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>  
276 - <hop> <from>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</from><to>&#x8f66;&#x8f86;id&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>  
277 - <hop> <from>&#x8f66;&#x8f86;id&#x67e5;&#x8be2;</from><to>&#x8fc7;&#x6ee4;&#x8f66;&#x8f86;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>  
278 - <hop> <from>&#x8fc7;&#x6ee4;&#x8f66;&#x8f86;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</from><to>&#x65e5;&#x671f;&#x8f6c;&#x6362;</to><enabled>Y</enabled> </hop>  
279 - <hop> <from>&#x65e5;&#x671f;&#x8f6c;&#x6362;</from><to>&#x662f;&#x5426;&#x5207;&#x6362;</to><enabled>Y</enabled> </hop>  
280 - <hop> <from>&#x662f;&#x5426;&#x5207;&#x6362;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ccinfo</to><enabled>Y</enabled> </hop>  
281 - </order>  
282 - <step>  
283 - <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name>  
284 - <type>ExcelInput</type>  
285 - <description/>  
286 - <distribute>Y</distribute>  
287 - <custom_distribution/>  
288 - <copies>1</copies>  
289 - <partitioning>  
290 - <method>none</method>  
291 - <schema_name/>  
292 - </partitioning>  
293 - <header>Y</header>  
294 - <noempty>Y</noempty>  
295 - <stoponempty>N</stoponempty>  
296 - <filefield/>  
297 - <sheetfield/>  
298 - <sheetrownumfield/>  
299 - <rownumfield/>  
300 - <sheetfield/>  
301 - <filefield/>  
302 - <limit>0</limit>  
303 - <encoding/>  
304 - <add_to_result_filenames>Y</add_to_result_filenames>  
305 - <accept_filenames>Y</accept_filenames>  
306 - <accept_field>filepath_</accept_field>  
307 - <accept_stepname>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</accept_stepname>  
308 - <file>  
309 - <name/>  
310 - <filemask/>  
311 - <exclude_filemask/>  
312 - <file_required>N</file_required>  
313 - <include_subfolders>N</include_subfolders>  
314 - </file>  
315 - <fields>  
316 - <field>  
317 - <name>&#x7ebf;&#x8def;</name>  
318 - <type>String</type>  
319 - <length>-1</length>  
320 - <precision>-1</precision>  
321 - <trim_type>none</trim_type>  
322 - <repeat>N</repeat>  
323 - <format/>  
324 - <currency/>  
325 - <decimal/>  
326 - <group/>  
327 - </field>  
328 - <field>  
329 - <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>  
330 - <type>String</type>  
331 - <length>-1</length>  
332 - <precision>-1</precision>  
333 - <trim_type>none</trim_type>  
334 - <repeat>N</repeat>  
335 - <format>&#x23;</format>  
336 - <currency/>  
337 - <decimal/>  
338 - <group/>  
339 - </field>  
340 - <field>  
341 - <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>  
342 - <type>String</type>  
343 - <length>-1</length>  
344 - <precision>-1</precision>  
345 - <trim_type>none</trim_type>  
346 - <repeat>N</repeat>  
347 - <format/>  
348 - <currency/>  
349 - <decimal/>  
350 - <group/>  
351 - </field>  
352 - <field>  
353 - <name>&#x7ec8;&#x7ed3;&#x65e5;&#x671f;</name>  
354 - <type>String</type>  
355 - <length>-1</length>  
356 - <precision>-1</precision>  
357 - <trim_type>none</trim_type>  
358 - <repeat>N</repeat>  
359 - <format/>  
360 - <currency/>  
361 - <decimal/>  
362 - <group/>  
363 - </field>  
364 - <field>  
365 - <name>&#x505c;&#x8f66;&#x70b9;</name>  
366 - <type>String</type>  
367 - <length>-1</length>  
368 - <precision>-1</precision>  
369 - <trim_type>none</trim_type>  
370 - <repeat>N</repeat>  
371 - <format/>  
372 - <currency/>  
373 - <decimal/>  
374 - <group/>  
375 - </field>  
376 - </fields>  
377 - <sheets>  
378 - <sheet>  
379 - <name>&#x5de5;&#x4f5c;&#x8868;1</name>  
380 - <startrow>0</startrow>  
381 - <startcol>0</startcol>  
382 - </sheet>  
383 - </sheets>  
384 - <strict_types>N</strict_types>  
385 - <error_ignored>N</error_ignored>  
386 - <error_line_skipped>N</error_line_skipped>  
387 - <bad_line_files_destination_directory/>  
388 - <bad_line_files_extension>warning</bad_line_files_extension>  
389 - <error_line_files_destination_directory/>  
390 - <error_line_files_extension>error</error_line_files_extension>  
391 - <line_number_files_destination_directory/>  
392 - <line_number_files_extension>line</line_number_files_extension>  
393 - <shortFileFieldName/>  
394 - <pathFieldName/>  
395 - <hiddenFieldName/>  
396 - <lastModificationTimeFieldName/>  
397 - <uriNameFieldName/>  
398 - <rootUriNameFieldName/>  
399 - <extensionFieldName/>  
400 - <sizeFieldName/>  
401 - <spreadsheet_type>JXL</spreadsheet_type>  
402 - <cluster_schema/>  
403 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
404 - <xloc>155</xloc>  
405 - <yloc>56</yloc>  
406 - <draw>Y</draw>  
407 - </GUI>  
408 - </step>  
409 -  
410 - <step>  
411 - <name>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</name>  
412 - <type>Constant</type>  
413 - <description/>  
414 - <distribute>Y</distribute>  
415 - <custom_distribution/>  
416 - <copies>1</copies>  
417 - <partitioning>  
418 - <method>none</method>  
419 - <schema_name/>  
420 - </partitioning>  
421 - <fields>  
422 - <field>  
423 - <name>isCancel</name>  
424 - <type>Integer</type>  
425 - <format/>  
426 - <currency/>  
427 - <decimal/>  
428 - <group/>  
429 - <nullif>0</nullif>  
430 - <length>-1</length>  
431 - <precision>-1</precision>  
432 - <set_empty_string>N</set_empty_string>  
433 - </field>  
434 - </fields>  
435 - <cluster_schema/>  
436 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
437 - <xloc>315</xloc>  
438 - <yloc>57</yloc>  
439 - <draw>Y</draw>  
440 - </GUI>  
441 - </step>  
442 -  
443 - <step>  
444 - <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ccinfo</name>  
445 - <type>InsertUpdate</type>  
446 - <description/>  
447 - <distribute>Y</distribute>  
448 - <custom_distribution/>  
449 - <copies>1</copies>  
450 - <partitioning>  
451 - <method>none</method>  
452 - <schema_name/>  
453 - </partitioning>  
454 - <connection>bus_control_variable</connection>  
455 - <commit>100</commit>  
456 - <update_bypassed>N</update_bypassed>  
457 - <lookup>  
458 - <schema/>  
459 - <table>bsth_c_s_ccinfo</table>  
460 - <key>  
461 - <name>xlid</name>  
462 - <field>xl</field>  
463 - <condition>&#x3d;</condition>  
464 - <name2/>  
465 - </key>  
466 - <key>  
467 - <name>clid</name>  
468 - <field>cl</field>  
469 - <condition>&#x3d;</condition>  
470 - <name2/>  
471 - </key>  
472 - <value>  
473 - <name>xl</name>  
474 - <rename>xlId</rename>  
475 - <update>Y</update>  
476 - </value>  
477 - <value>  
478 - <name>cl</name>  
479 - <rename>clId</rename>  
480 - <update>Y</update>  
481 - </value>  
482 - <value>  
483 - <name>is_switch</name>  
484 - <rename>isswitch</rename>  
485 - <update>Y</update>  
486 - </value>  
487 - <value>  
488 - <name>tcd</name>  
489 - <rename>&#x505c;&#x8f66;&#x70b9;</rename>  
490 - <update>Y</update>  
491 - </value>  
492 - <value>  
493 - <name>zzrq</name>  
494 - <rename>&#x7ec8;&#x7ed3;&#x65e5;&#x671f;</rename>  
495 - <update>Y</update>  
496 - </value>  
497 - <value>  
498 - <name>qyrq</name>  
499 - <rename>&#x542f;&#x7528;&#x65e5;&#x671f;</rename>  
500 - <update>Y</update>  
501 - </value>  
502 - <value>  
503 - <name>is_cancel</name>  
504 - <rename>isCancel</rename>  
505 - <update>Y</update>  
506 - </value>  
507 - </lookup>  
508 - <cluster_schema/>  
509 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
510 - <xloc>804</xloc>  
511 - <yloc>236</yloc>  
512 - <draw>Y</draw>  
513 - </GUI>  
514 - </step>  
515 -  
516 - <step>  
517 - <name>&#x65e5;&#x671f;&#x8f6c;&#x6362;</name>  
518 - <type>SelectValues</type>  
519 - <description/>  
520 - <distribute>Y</distribute>  
521 - <custom_distribution/>  
522 - <copies>1</copies>  
523 - <partitioning>  
524 - <method>none</method>  
525 - <schema_name/>  
526 - </partitioning>  
527 - <fields> <select_unspecified>N</select_unspecified>  
528 - <meta> <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>  
529 - <rename>&#x542f;&#x7528;&#x65e5;&#x671f;</rename>  
530 - <type>Timestamp</type>  
531 - <length>-2</length>  
532 - <precision>-2</precision>  
533 - <conversion_mask>yyyy-MM-dd</conversion_mask>  
534 - <date_format_lenient>false</date_format_lenient>  
535 - <date_format_locale/>  
536 - <date_format_timezone/>  
537 - <lenient_string_to_number>false</lenient_string_to_number>  
538 - <encoding/>  
539 - <decimal_symbol/>  
540 - <grouping_symbol/>  
541 - <currency_symbol/>  
542 - <storage_type/>  
543 - </meta> <meta> <name>&#x7ec8;&#x7ed3;&#x65e5;&#x671f;</name>  
544 - <rename>&#x7ec8;&#x7ed3;&#x65e5;&#x671f;</rename>  
545 - <type>Timestamp</type>  
546 - <length>-2</length>  
547 - <precision>-2</precision>  
548 - <conversion_mask>yyyy-MM-dd</conversion_mask>  
549 - <date_format_lenient>false</date_format_lenient>  
550 - <date_format_locale/>  
551 - <date_format_timezone/>  
552 - <lenient_string_to_number>false</lenient_string_to_number>  
553 - <encoding/>  
554 - <decimal_symbol/>  
555 - <grouping_symbol/>  
556 - <currency_symbol/>  
557 - <storage_type/>  
558 - </meta> </fields> <cluster_schema/>  
559 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
560 - <xloc>703</xloc>  
561 - <yloc>136</yloc>  
562 - <draw>Y</draw>  
563 - </GUI>  
564 - </step>  
565 -  
566 - <step>  
567 - <name>&#x662f;&#x5426;&#x5207;&#x6362;</name>  
568 - <type>Constant</type>  
569 - <description/>  
570 - <distribute>Y</distribute>  
571 - <custom_distribution/>  
572 - <copies>1</copies>  
573 - <partitioning>  
574 - <method>none</method>  
575 - <schema_name/>  
576 - </partitioning>  
577 - <fields>  
578 - <field>  
579 - <name>isswitch</name>  
580 - <type>Integer</type>  
581 - <format/>  
582 - <currency/>  
583 - <decimal/>  
584 - <group/>  
585 - <nullif>0</nullif>  
586 - <length>-1</length>  
587 - <precision>-1</precision>  
588 - <set_empty_string>N</set_empty_string>  
589 - </field>  
590 - </fields>  
591 - <cluster_schema/>  
592 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
593 - <xloc>803</xloc>  
594 - <yloc>137</yloc>  
595 - <draw>Y</draw>  
596 - </GUI>  
597 - </step>  
598 -  
599 - <step>  
600 - <name>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</name>  
601 - <type>DBLookup</type>  
602 - <description/>  
603 - <distribute>Y</distribute>  
604 - <custom_distribution/>  
605 - <copies>1</copies>  
606 - <partitioning>  
607 - <method>none</method>  
608 - <schema_name/>  
609 - </partitioning>  
610 - <connection>bus_control_variable</connection>  
611 - <cache>Y</cache>  
612 - <cache_load_all>Y</cache_load_all>  
613 - <cache_size>0</cache_size>  
614 - <lookup>  
615 - <schema/>  
616 - <table>bsth_c_line</table>  
617 - <orderby/>  
618 - <fail_on_multiple>N</fail_on_multiple>  
619 - <eat_row_on_failure>N</eat_row_on_failure>  
620 - <key>  
621 - <name>&#x7ebf;&#x8def;</name>  
622 - <field>name</field>  
623 - <condition>&#x3d;</condition>  
624 - <name2/>  
625 - </key>  
626 - <key>  
627 - <name>isCancel</name>  
628 - <field>destroy</field>  
629 - <condition>&#x3d;</condition>  
630 - <name2/>  
631 - </key>  
632 - <value>  
633 - <name>id</name>  
634 - <rename>xlid</rename>  
635 - <default/>  
636 - <type>Integer</type>  
637 - </value>  
638 - </lookup>  
639 - <cluster_schema/>  
640 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
641 - <xloc>438</xloc>  
642 - <yloc>57</yloc>  
643 - <draw>Y</draw>  
644 - </GUI>  
645 - </step>  
646 -  
647 - <step>  
648 - <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>  
649 - <type>GetVariable</type>  
650 - <description/>  
651 - <distribute>Y</distribute>  
652 - <custom_distribution/>  
653 - <copies>1</copies>  
654 - <partitioning>  
655 - <method>none</method>  
656 - <schema_name/>  
657 - </partitioning>  
658 - <fields>  
659 - <field>  
660 - <name>filepath_</name>  
661 - <variable>&#x24;&#x7b;filepath&#x7d;</variable>  
662 - <type>String</type>  
663 - <format/>  
664 - <currency/>  
665 - <decimal/>  
666 - <group/>  
667 - <length>-1</length>  
668 - <precision>-1</precision>  
669 - <trim_type>none</trim_type>  
670 - </field>  
671 - <field>  
672 - <name>erroroutputdir_</name>  
673 - <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>  
674 - <type>String</type>  
675 - <format/>  
676 - <currency/>  
677 - <decimal/>  
678 - <group/>  
679 - <length>-1</length>  
680 - <precision>-1</precision>  
681 - <trim_type>none</trim_type>  
682 - </field>  
683 - </fields>  
684 - <cluster_schema/>  
685 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
686 - <xloc>156</xloc>  
687 - <yloc>150</yloc>  
688 - <draw>Y</draw>  
689 - </GUI>  
690 - </step>  
691 -  
692 - <step>  
693 - <name>&#x8f66;&#x8f86;id&#x67e5;&#x8be2;</name>  
694 - <type>DBLookup</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 - <connection>bus_control_variable</connection>  
704 - <cache>Y</cache>  
705 - <cache_load_all>Y</cache_load_all>  
706 - <cache_size>0</cache_size>  
707 - <lookup>  
708 - <schema/>  
709 - <table>bsth_c_cars</table>  
710 - <orderby/>  
711 - <fail_on_multiple>N</fail_on_multiple>  
712 - <eat_row_on_failure>N</eat_row_on_failure>  
713 - <key>  
714 - <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>  
715 - <field>inside_code</field>  
716 - <condition>&#x3d;</condition>  
717 - <name2/>  
718 - </key>  
719 - <value>  
720 - <name>id</name>  
721 - <rename>clid</rename>  
722 - <default/>  
723 - <type>Integer</type>  
724 - </value>  
725 - </lookup>  
726 - <cluster_schema/>  
727 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
728 - <xloc>440</xloc>  
729 - <yloc>138</yloc>  
730 - <draw>Y</draw>  
731 - </GUI>  
732 - </step>  
733 -  
734 - <step>  
735 - <name>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>  
736 - <type>FilterRows</type>  
737 - <description/>  
738 - <distribute>Y</distribute>  
739 - <custom_distribution/>  
740 - <copies>1</copies>  
741 - <partitioning>  
742 - <method>none</method>  
743 - <schema_name/>  
744 - </partitioning>  
745 -<send_true_to>&#x8f66;&#x8f86;id&#x67e5;&#x8be2;</send_true_to>  
746 -<send_false_to/>  
747 - <compare>  
748 -<condition>  
749 - <negated>N</negated>  
750 - <leftvalue>xlid</leftvalue>  
751 - <function>IS NOT NULL</function>  
752 - <rightvalue/>  
753 - </condition>  
754 - </compare>  
755 - <cluster_schema/>  
756 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
757 - <xloc>563</xloc>  
758 - <yloc>57</yloc>  
759 - <draw>Y</draw>  
760 - </GUI>  
761 - </step>  
762 -  
763 - <step>  
764 - <name>&#x8fc7;&#x6ee4;&#x8f66;&#x8f86;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>  
765 - <type>FilterRows</type>  
766 - <description/>  
767 - <distribute>Y</distribute>  
768 - <custom_distribution/>  
769 - <copies>1</copies>  
770 - <partitioning>  
771 - <method>none</method>  
772 - <schema_name/>  
773 - </partitioning>  
774 -<send_true_to>&#x65e5;&#x671f;&#x8f6c;&#x6362;</send_true_to>  
775 -<send_false_to/>  
776 - <compare>  
777 -<condition>  
778 - <negated>N</negated>  
779 - <leftvalue>clid</leftvalue>  
780 - <function>IS NOT NULL</function>  
781 - <rightvalue/>  
782 - </condition>  
783 - </compare>  
784 - <cluster_schema/>  
785 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
786 - <xloc>566</xloc>  
787 - <yloc>137</yloc>  
788 - <draw>Y</draw>  
789 - </GUI>  
790 - </step>  
791 -  
792 - <step>  
793 - <name>&#x9519;&#x8bef;&#x8f93;&#x51fa;</name>  
794 - <type>ExcelOutput</type>  
795 - <description/>  
796 - <distribute>Y</distribute>  
797 - <custom_distribution/>  
798 - <copies>1</copies>  
799 - <partitioning>  
800 - <method>none</method>  
801 - <schema_name/>  
802 - </partitioning>  
803 - <header>Y</header>  
804 - <footer>N</footer>  
805 - <encoding>UTF-8</encoding>  
806 - <append>N</append>  
807 - <add_to_result_filenames>Y</add_to_result_filenames>  
808 - <file>  
809 - <name>&#x24;&#x7b;erroroutputdir&#x7d;&#x2f;&#x5f53;&#x524d;&#x914d;&#x8f66;_&#x9519;&#x8bef;</name>  
810 - <extention>xls</extention>  
811 - <do_not_open_newfile_init>N</do_not_open_newfile_init>  
812 - <create_parent_folder>N</create_parent_folder>  
813 - <split>N</split>  
814 - <add_date>N</add_date>  
815 - <add_time>N</add_time>  
816 - <SpecifyFormat>N</SpecifyFormat>  
817 - <date_time_format/>  
818 - <sheetname>Sheet1</sheetname>  
819 - <autosizecolums>N</autosizecolums>  
820 - <nullisblank>N</nullisblank>  
821 - <protect_sheet>N</protect_sheet>  
822 - <password>Encrypted </password>  
823 - <splitevery>0</splitevery>  
824 - <usetempfiles>N</usetempfiles>  
825 - <tempdirectory/>  
826 - </file>  
827 - <template>  
828 - <enabled>N</enabled>  
829 - <append>N</append>  
830 - <filename>template.xls</filename>  
831 - </template>  
832 - <fields>  
833 - <field>  
834 - <name>&#x7ebf;&#x8def;</name>  
835 - <type>String</type>  
836 - <format/>  
837 - </field>  
838 - <field>  
839 - <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>  
840 - <type>String</type>  
841 - <format/>  
842 - </field>  
843 - <field>  
844 - <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>  
845 - <type>Timestamp</type>  
846 - <format/>  
847 - </field>  
848 - <field>  
849 - <name>&#x7ec8;&#x7ed3;&#x65e5;&#x671f;</name>  
850 - <type>Timestamp</type>  
851 - <format/>  
852 - </field>  
853 - <field>  
854 - <name>&#x505c;&#x8f66;&#x70b9;</name>  
855 - <type>String</type>  
856 - <format/>  
857 - </field>  
858 - <field>  
859 - <name>isCancel</name>  
860 - <type>Integer</type>  
861 - <format/>  
862 - </field>  
863 - <field>  
864 - <name>xlid</name>  
865 - <type>Integer</type>  
866 - <format/>  
867 - </field>  
868 - <field>  
869 - <name>clid</name>  
870 - <type>Integer</type>  
871 - <format/>  
872 - </field>  
873 - <field>  
874 - <name>isswitch</name>  
875 - <type>Integer</type>  
876 - <format/>  
877 - </field>  
878 - <field>  
879 - <name>error_count</name>  
880 - <type>Integer</type>  
881 - <format/>  
882 - </field>  
883 - <field>  
884 - <name>error_desc</name>  
885 - <type>String</type>  
886 - <format/>  
887 - </field>  
888 - <field>  
889 - <name>error_column1</name>  
890 - <type>String</type>  
891 - <format/>  
892 - </field>  
893 - <field>  
894 - <name>error_column2</name>  
895 - <type>String</type>  
896 - <format/>  
897 - </field>  
898 - </fields>  
899 - <custom>  
900 - <header_font_name>arial</header_font_name>  
901 - <header_font_size>10</header_font_size>  
902 - <header_font_bold>N</header_font_bold>  
903 - <header_font_italic>N</header_font_italic>  
904 - <header_font_underline>no</header_font_underline>  
905 - <header_font_orientation>horizontal</header_font_orientation>  
906 - <header_font_color>black</header_font_color>  
907 - <header_background_color>none</header_background_color>  
908 - <header_row_height>255</header_row_height>  
909 - <header_alignment>left</header_alignment>  
910 - <header_image/>  
911 - <row_font_name>arial</row_font_name>  
912 - <row_font_size>10</row_font_size>  
913 - <row_font_color>black</row_font_color>  
914 - <row_background_color>none</row_background_color>  
915 - </custom>  
916 - <cluster_schema/>  
917 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
918 - <xloc>807</xloc>  
919 - <yloc>353</yloc>  
920 - <draw>Y</draw>  
921 - </GUI>  
922 - </step>  
923 -  
924 - <step_error_handling>  
925 - <error>  
926 - <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ccinfo</source_step>  
927 - <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa;</target_step>  
928 - <is_enabled>Y</is_enabled>  
929 - <nr_valuename>error_count</nr_valuename>  
930 - <descriptions_valuename>error_desc</descriptions_valuename>  
931 - <fields_valuename>error_column1</fields_valuename>  
932 - <codes_valuename>error_column2</codes_valuename>  
933 - <max_errors/>  
934 - <max_pct_errors/>  
935 - <min_pct_rows/>  
936 - </error>  
937 - </step_error_handling>  
938 - <slave-step-copy-partition-distribution>  
939 -</slave-step-copy-partition-distribution>  
940 - <slave_transformation>N</slave_transformation>  
941 -  
942 -</transformation> 1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>&#x8f66;&#x8f86;&#x914d;&#x7f6e;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</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>&#x8fd9;&#x91cc;&#x6709;&#x4e9b;&#x95ee;&#x9898;&#xa;&#x5728;window2012&#x7684;&#x73af;&#x5883;&#x4e0b;&#xff0c;&#xa;MySql&#x6570;&#x636e;&#x5e93;&#x67e5;&#x8be2;&#x4e2d;&#x5982;&#x679c;&#x8fd4;&#x56de;&#x4e2d;&#x6587;&#x5185;&#x5bb9;&#x7684;&#x5b57;&#x6bb5;&#xff0c;&#x8fd9;&#x4e2a;&#x5185;&#x5bb9;&#x4e71;&#x7801;&#xa;&#x89e3;&#x51b3;&#x529e;&#x6cd5;&#xff0c;&#x5c31;&#x662f;&#x6570;&#x636e;&#x5e93;&#x67e5;&#x8be2;&#x5168;&#x90e8;&#x7f13;&#x5b58;&#xff0c;&#x5c31;&#x4e0d;&#x4e71;&#x7801;&#xa;linux&#x73af;&#x5883;&#x4e0b;&#x6ca1;&#x95ee;&#x9898;&#xa;</note>
  89 + <xloc>40</xloc>
  90 + <yloc>238</yloc>
  91 + <width>333</width>
  92 + <heigth>106</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>&#x24;&#x7b;v_db_dname&#x7d;</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.characterEncoding</code><attribute>utf8</attribute></attribute>
  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>N</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>bus_control_&#x516c;&#x53f8;_201</name>
  139 + <server>localhost</server>
  140 + <type>MYSQL</type>
  141 + <access>Native</access>
  142 + <database>control</database>
  143 + <port>3306</port>
  144 + <username>root</username>
  145 + <password>Encrypted </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>3306</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>N</attribute></attribute>
  159 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  160 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  161 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  162 + </attributes>
  163 + </connection>
  164 + <connection>
  165 + <name>bus_control_&#x672c;&#x673a;</name>
  166 + <server>localhost</server>
  167 + <type>MYSQL</type>
  168 + <access>Native</access>
  169 + <database>control</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>Y</attribute></attribute>
  187 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  188 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  189 + </attributes>
  190 + </connection>
  191 + <connection>
  192 + <name>xlab_mysql_youle</name>
  193 + <server>101.231.124.8</server>
  194 + <type>MYSQL</type>
  195 + <access>Native</access>
  196 + <database>xlab_youle</database>
  197 + <port>45687</port>
  198 + <username>xlab-youle</username>
  199 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
  200 + <servername/>
  201 + <data_tablespace/>
  202 + <index_tablespace/>
  203 + <attributes>
  204 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  205 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  206 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  207 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  208 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  209 + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
  210 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  211 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  212 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  213 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  214 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  215 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  216 + </attributes>
  217 + </connection>
  218 + <connection>
  219 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  220 + <server>localhost</server>
  221 + <type>MYSQL</type>
  222 + <access>Native</access>
  223 + <database>xlab_youle</database>
  224 + <port>3306</port>
  225 + <username>root</username>
  226 + <password>Encrypted </password>
  227 + <servername/>
  228 + <data_tablespace/>
  229 + <index_tablespace/>
  230 + <attributes>
  231 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  232 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  233 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  234 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  235 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  236 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  237 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  238 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  239 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  240 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  241 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  242 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  243 + </attributes>
  244 + </connection>
  245 + <connection>
  246 + <name>xlab_youle</name>
  247 + <server/>
  248 + <type>MYSQL</type>
  249 + <access>JNDI</access>
  250 + <database>xlab_youle</database>
  251 + <port>1521</port>
  252 + <username/>
  253 + <password>Encrypted </password>
  254 + <servername/>
  255 + <data_tablespace/>
  256 + <index_tablespace/>
  257 + <attributes>
  258 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  259 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  260 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  261 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  262 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  263 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  264 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  265 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  266 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  267 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  268 + </attributes>
  269 + </connection>
  270 + <order>
  271 + <hop> <from>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ccinfo</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
  272 + <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>
  273 + <hop> <from>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</from><to>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</to><enabled>Y</enabled> </hop>
  274 + <hop> <from>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</from><to>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  275 + <hop> <from>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</from><to>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  276 + <hop> <from>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</from><to>&#x8f66;&#x8f86;id&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  277 + <hop> <from>&#x8f66;&#x8f86;id&#x67e5;&#x8be2;</from><to>&#x8fc7;&#x6ee4;&#x8f66;&#x8f86;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  278 + <hop> <from>&#x8fc7;&#x6ee4;&#x8f66;&#x8f86;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</from><to>&#x65e5;&#x671f;&#x8f6c;&#x6362;</to><enabled>Y</enabled> </hop>
  279 + <hop> <from>&#x65e5;&#x671f;&#x8f6c;&#x6362;</from><to>&#x662f;&#x5426;&#x5207;&#x6362;</to><enabled>Y</enabled> </hop>
  280 + <hop> <from>&#x662f;&#x5426;&#x5207;&#x6362;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ccinfo</to><enabled>Y</enabled> </hop>
  281 + </order>
  282 + <step>
  283 + <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name>
  284 + <type>ExcelInput</type>
  285 + <description/>
  286 + <distribute>Y</distribute>
  287 + <custom_distribution/>
  288 + <copies>1</copies>
  289 + <partitioning>
  290 + <method>none</method>
  291 + <schema_name/>
  292 + </partitioning>
  293 + <header>Y</header>
  294 + <noempty>Y</noempty>
  295 + <stoponempty>N</stoponempty>
  296 + <filefield/>
  297 + <sheetfield/>
  298 + <sheetrownumfield/>
  299 + <rownumfield/>
  300 + <sheetfield/>
  301 + <filefield/>
  302 + <limit>0</limit>
  303 + <encoding/>
  304 + <add_to_result_filenames>Y</add_to_result_filenames>
  305 + <accept_filenames>Y</accept_filenames>
  306 + <accept_field>filepath_</accept_field>
  307 + <accept_stepname>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</accept_stepname>
  308 + <file>
  309 + <name/>
  310 + <filemask/>
  311 + <exclude_filemask/>
  312 + <file_required>N</file_required>
  313 + <include_subfolders>N</include_subfolders>
  314 + </file>
  315 + <fields>
  316 + <field>
  317 + <name>&#x7ebf;&#x8def;</name>
  318 + <type>String</type>
  319 + <length>-1</length>
  320 + <precision>-1</precision>
  321 + <trim_type>none</trim_type>
  322 + <repeat>N</repeat>
  323 + <format/>
  324 + <currency/>
  325 + <decimal/>
  326 + <group/>
  327 + </field>
  328 + <field>
  329 + <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
  330 + <type>String</type>
  331 + <length>-1</length>
  332 + <precision>-1</precision>
  333 + <trim_type>none</trim_type>
  334 + <repeat>N</repeat>
  335 + <format>&#x23;</format>
  336 + <currency/>
  337 + <decimal/>
  338 + <group/>
  339 + </field>
  340 + <field>
  341 + <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  342 + <type>String</type>
  343 + <length>-1</length>
  344 + <precision>-1</precision>
  345 + <trim_type>none</trim_type>
  346 + <repeat>N</repeat>
  347 + <format/>
  348 + <currency/>
  349 + <decimal/>
  350 + <group/>
  351 + </field>
  352 + <field>
  353 + <name>&#x7ec8;&#x7ed3;&#x65e5;&#x671f;</name>
  354 + <type>String</type>
  355 + <length>-1</length>
  356 + <precision>-1</precision>
  357 + <trim_type>none</trim_type>
  358 + <repeat>N</repeat>
  359 + <format/>
  360 + <currency/>
  361 + <decimal/>
  362 + <group/>
  363 + </field>
  364 + <field>
  365 + <name>&#x505c;&#x8f66;&#x70b9;</name>
  366 + <type>String</type>
  367 + <length>-1</length>
  368 + <precision>-1</precision>
  369 + <trim_type>none</trim_type>
  370 + <repeat>N</repeat>
  371 + <format/>
  372 + <currency/>
  373 + <decimal/>
  374 + <group/>
  375 + </field>
  376 + </fields>
  377 + <sheets>
  378 + <sheet>
  379 + <name>&#x5de5;&#x4f5c;&#x8868;1</name>
  380 + <startrow>0</startrow>
  381 + <startcol>0</startcol>
  382 + </sheet>
  383 + </sheets>
  384 + <strict_types>N</strict_types>
  385 + <error_ignored>N</error_ignored>
  386 + <error_line_skipped>N</error_line_skipped>
  387 + <bad_line_files_destination_directory/>
  388 + <bad_line_files_extension>warning</bad_line_files_extension>
  389 + <error_line_files_destination_directory/>
  390 + <error_line_files_extension>error</error_line_files_extension>
  391 + <line_number_files_destination_directory/>
  392 + <line_number_files_extension>line</line_number_files_extension>
  393 + <shortFileFieldName/>
  394 + <pathFieldName/>
  395 + <hiddenFieldName/>
  396 + <lastModificationTimeFieldName/>
  397 + <uriNameFieldName/>
  398 + <rootUriNameFieldName/>
  399 + <extensionFieldName/>
  400 + <sizeFieldName/>
  401 + <spreadsheet_type>JXL</spreadsheet_type>
  402 + <cluster_schema/>
  403 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  404 + <xloc>155</xloc>
  405 + <yloc>56</yloc>
  406 + <draw>Y</draw>
  407 + </GUI>
  408 + </step>
  409 +
  410 + <step>
  411 + <name>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</name>
  412 + <type>Constant</type>
  413 + <description/>
  414 + <distribute>Y</distribute>
  415 + <custom_distribution/>
  416 + <copies>1</copies>
  417 + <partitioning>
  418 + <method>none</method>
  419 + <schema_name/>
  420 + </partitioning>
  421 + <fields>
  422 + <field>
  423 + <name>isCancel</name>
  424 + <type>Integer</type>
  425 + <format/>
  426 + <currency/>
  427 + <decimal/>
  428 + <group/>
  429 + <nullif>0</nullif>
  430 + <length>-1</length>
  431 + <precision>-1</precision>
  432 + <set_empty_string>N</set_empty_string>
  433 + </field>
  434 + </fields>
  435 + <cluster_schema/>
  436 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  437 + <xloc>315</xloc>
  438 + <yloc>57</yloc>
  439 + <draw>Y</draw>
  440 + </GUI>
  441 + </step>
  442 +
  443 + <step>
  444 + <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ccinfo</name>
  445 + <type>InsertUpdate</type>
  446 + <description/>
  447 + <distribute>Y</distribute>
  448 + <custom_distribution/>
  449 + <copies>1</copies>
  450 + <partitioning>
  451 + <method>none</method>
  452 + <schema_name/>
  453 + </partitioning>
  454 + <connection>bus_control_variable</connection>
  455 + <commit>100</commit>
  456 + <update_bypassed>N</update_bypassed>
  457 + <lookup>
  458 + <schema/>
  459 + <table>bsth_c_s_ccinfo</table>
  460 + <key>
  461 + <name>xlid</name>
  462 + <field>xl</field>
  463 + <condition>&#x3d;</condition>
  464 + <name2/>
  465 + </key>
  466 + <key>
  467 + <name>clid</name>
  468 + <field>cl</field>
  469 + <condition>&#x3d;</condition>
  470 + <name2/>
  471 + </key>
  472 + <key>
  473 + <name>isCancel</name>
  474 + <field>is_cancel</field>
  475 + <condition>&#x3d;</condition>
  476 + <name2/>
  477 + </key>
  478 + <value>
  479 + <name>xl</name>
  480 + <rename>xlId</rename>
  481 + <update>N</update>
  482 + </value>
  483 + <value>
  484 + <name>cl</name>
  485 + <rename>clId</rename>
  486 + <update>N</update>
  487 + </value>
  488 + <value>
  489 + <name>is_switch</name>
  490 + <rename>isswitch</rename>
  491 + <update>N</update>
  492 + </value>
  493 + <value>
  494 + <name>tcd</name>
  495 + <rename>&#x505c;&#x8f66;&#x70b9;</rename>
  496 + <update>N</update>
  497 + </value>
  498 + <value>
  499 + <name>zzrq</name>
  500 + <rename>&#x7ec8;&#x7ed3;&#x65e5;&#x671f;</rename>
  501 + <update>N</update>
  502 + </value>
  503 + <value>
  504 + <name>qyrq</name>
  505 + <rename>&#x542f;&#x7528;&#x65e5;&#x671f;</rename>
  506 + <update>N</update>
  507 + </value>
  508 + <value>
  509 + <name>is_cancel</name>
  510 + <rename>isCancel</rename>
  511 + <update>N</update>
  512 + </value>
  513 + </lookup>
  514 + <cluster_schema/>
  515 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  516 + <xloc>804</xloc>
  517 + <yloc>236</yloc>
  518 + <draw>Y</draw>
  519 + </GUI>
  520 + </step>
  521 +
  522 + <step>
  523 + <name>&#x65e5;&#x671f;&#x8f6c;&#x6362;</name>
  524 + <type>SelectValues</type>
  525 + <description/>
  526 + <distribute>Y</distribute>
  527 + <custom_distribution/>
  528 + <copies>1</copies>
  529 + <partitioning>
  530 + <method>none</method>
  531 + <schema_name/>
  532 + </partitioning>
  533 + <fields> <select_unspecified>N</select_unspecified>
  534 + <meta> <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  535 + <rename>&#x542f;&#x7528;&#x65e5;&#x671f;</rename>
  536 + <type>Timestamp</type>
  537 + <length>-2</length>
  538 + <precision>-2</precision>
  539 + <conversion_mask>yyyy-MM-dd</conversion_mask>
  540 + <date_format_lenient>false</date_format_lenient>
  541 + <date_format_locale/>
  542 + <date_format_timezone/>
  543 + <lenient_string_to_number>false</lenient_string_to_number>
  544 + <encoding/>
  545 + <decimal_symbol/>
  546 + <grouping_symbol/>
  547 + <currency_symbol/>
  548 + <storage_type/>
  549 + </meta> <meta> <name>&#x7ec8;&#x7ed3;&#x65e5;&#x671f;</name>
  550 + <rename>&#x7ec8;&#x7ed3;&#x65e5;&#x671f;</rename>
  551 + <type>Timestamp</type>
  552 + <length>-2</length>
  553 + <precision>-2</precision>
  554 + <conversion_mask>yyyy-MM-dd</conversion_mask>
  555 + <date_format_lenient>false</date_format_lenient>
  556 + <date_format_locale/>
  557 + <date_format_timezone/>
  558 + <lenient_string_to_number>false</lenient_string_to_number>
  559 + <encoding/>
  560 + <decimal_symbol/>
  561 + <grouping_symbol/>
  562 + <currency_symbol/>
  563 + <storage_type/>
  564 + </meta> </fields> <cluster_schema/>
  565 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  566 + <xloc>703</xloc>
  567 + <yloc>136</yloc>
  568 + <draw>Y</draw>
  569 + </GUI>
  570 + </step>
  571 +
  572 + <step>
  573 + <name>&#x662f;&#x5426;&#x5207;&#x6362;</name>
  574 + <type>Constant</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 + <fields>
  584 + <field>
  585 + <name>isswitch</name>
  586 + <type>Integer</type>
  587 + <format/>
  588 + <currency/>
  589 + <decimal/>
  590 + <group/>
  591 + <nullif>0</nullif>
  592 + <length>-1</length>
  593 + <precision>-1</precision>
  594 + <set_empty_string>N</set_empty_string>
  595 + </field>
  596 + </fields>
  597 + <cluster_schema/>
  598 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  599 + <xloc>803</xloc>
  600 + <yloc>137</yloc>
  601 + <draw>Y</draw>
  602 + </GUI>
  603 + </step>
  604 +
  605 + <step>
  606 + <name>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</name>
  607 + <type>DBLookup</type>
  608 + <description/>
  609 + <distribute>Y</distribute>
  610 + <custom_distribution/>
  611 + <copies>1</copies>
  612 + <partitioning>
  613 + <method>none</method>
  614 + <schema_name/>
  615 + </partitioning>
  616 + <connection>bus_control_variable</connection>
  617 + <cache>Y</cache>
  618 + <cache_load_all>Y</cache_load_all>
  619 + <cache_size>0</cache_size>
  620 + <lookup>
  621 + <schema/>
  622 + <table>bsth_c_line</table>
  623 + <orderby/>
  624 + <fail_on_multiple>N</fail_on_multiple>
  625 + <eat_row_on_failure>N</eat_row_on_failure>
  626 + <key>
  627 + <name>&#x7ebf;&#x8def;</name>
  628 + <field>name</field>
  629 + <condition>&#x3d;</condition>
  630 + <name2/>
  631 + </key>
  632 + <key>
  633 + <name>isCancel</name>
  634 + <field>destroy</field>
  635 + <condition>&#x3d;</condition>
  636 + <name2/>
  637 + </key>
  638 + <value>
  639 + <name>id</name>
  640 + <rename>xlid</rename>
  641 + <default/>
  642 + <type>Integer</type>
  643 + </value>
  644 + </lookup>
  645 + <cluster_schema/>
  646 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  647 + <xloc>438</xloc>
  648 + <yloc>57</yloc>
  649 + <draw>Y</draw>
  650 + </GUI>
  651 + </step>
  652 +
  653 + <step>
  654 + <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>
  655 + <type>GetVariable</type>
  656 + <description/>
  657 + <distribute>Y</distribute>
  658 + <custom_distribution/>
  659 + <copies>1</copies>
  660 + <partitioning>
  661 + <method>none</method>
  662 + <schema_name/>
  663 + </partitioning>
  664 + <fields>
  665 + <field>
  666 + <name>filepath_</name>
  667 + <variable>&#x24;&#x7b;filepath&#x7d;</variable>
  668 + <type>String</type>
  669 + <format/>
  670 + <currency/>
  671 + <decimal/>
  672 + <group/>
  673 + <length>-1</length>
  674 + <precision>-1</precision>
  675 + <trim_type>none</trim_type>
  676 + </field>
  677 + <field>
  678 + <name>erroroutputdir_</name>
  679 + <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
  680 + <type>String</type>
  681 + <format/>
  682 + <currency/>
  683 + <decimal/>
  684 + <group/>
  685 + <length>-1</length>
  686 + <precision>-1</precision>
  687 + <trim_type>none</trim_type>
  688 + </field>
  689 + </fields>
  690 + <cluster_schema/>
  691 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  692 + <xloc>156</xloc>
  693 + <yloc>150</yloc>
  694 + <draw>Y</draw>
  695 + </GUI>
  696 + </step>
  697 +
  698 + <step>
  699 + <name>&#x8f66;&#x8f86;id&#x67e5;&#x8be2;</name>
  700 + <type>DBLookup</type>
  701 + <description/>
  702 + <distribute>Y</distribute>
  703 + <custom_distribution/>
  704 + <copies>1</copies>
  705 + <partitioning>
  706 + <method>none</method>
  707 + <schema_name/>
  708 + </partitioning>
  709 + <connection>bus_control_variable</connection>
  710 + <cache>Y</cache>
  711 + <cache_load_all>Y</cache_load_all>
  712 + <cache_size>0</cache_size>
  713 + <lookup>
  714 + <schema/>
  715 + <table>bsth_c_cars</table>
  716 + <orderby/>
  717 + <fail_on_multiple>N</fail_on_multiple>
  718 + <eat_row_on_failure>N</eat_row_on_failure>
  719 + <key>
  720 + <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
  721 + <field>inside_code</field>
  722 + <condition>&#x3d;</condition>
  723 + <name2/>
  724 + </key>
  725 + <value>
  726 + <name>id</name>
  727 + <rename>clid</rename>
  728 + <default/>
  729 + <type>Integer</type>
  730 + </value>
  731 + </lookup>
  732 + <cluster_schema/>
  733 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  734 + <xloc>440</xloc>
  735 + <yloc>138</yloc>
  736 + <draw>Y</draw>
  737 + </GUI>
  738 + </step>
  739 +
  740 + <step>
  741 + <name>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>
  742 + <type>FilterRows</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 +<send_true_to>&#x8f66;&#x8f86;id&#x67e5;&#x8be2;</send_true_to>
  752 +<send_false_to/>
  753 + <compare>
  754 +<condition>
  755 + <negated>N</negated>
  756 + <leftvalue>xlid</leftvalue>
  757 + <function>IS NOT NULL</function>
  758 + <rightvalue/>
  759 + </condition>
  760 + </compare>
  761 + <cluster_schema/>
  762 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  763 + <xloc>563</xloc>
  764 + <yloc>57</yloc>
  765 + <draw>Y</draw>
  766 + </GUI>
  767 + </step>
  768 +
  769 + <step>
  770 + <name>&#x8fc7;&#x6ee4;&#x8f66;&#x8f86;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>
  771 + <type>FilterRows</type>
  772 + <description/>
  773 + <distribute>Y</distribute>
  774 + <custom_distribution/>
  775 + <copies>1</copies>
  776 + <partitioning>
  777 + <method>none</method>
  778 + <schema_name/>
  779 + </partitioning>
  780 +<send_true_to>&#x65e5;&#x671f;&#x8f6c;&#x6362;</send_true_to>
  781 +<send_false_to/>
  782 + <compare>
  783 +<condition>
  784 + <negated>N</negated>
  785 + <leftvalue>clid</leftvalue>
  786 + <function>IS NOT NULL</function>
  787 + <rightvalue/>
  788 + </condition>
  789 + </compare>
  790 + <cluster_schema/>
  791 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  792 + <xloc>566</xloc>
  793 + <yloc>137</yloc>
  794 + <draw>Y</draw>
  795 + </GUI>
  796 + </step>
  797 +
  798 + <step>
  799 + <name>&#x9519;&#x8bef;&#x8f93;&#x51fa;</name>
  800 + <type>ExcelOutput</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 + <header>Y</header>
  810 + <footer>N</footer>
  811 + <encoding>UTF-8</encoding>
  812 + <append>N</append>
  813 + <add_to_result_filenames>Y</add_to_result_filenames>
  814 + <file>
  815 + <name>&#x24;&#x7b;erroroutputdir&#x7d;&#x2f;&#x5f53;&#x524d;&#x914d;&#x8f66;_&#x9519;&#x8bef;</name>
  816 + <extention>xls</extention>
  817 + <do_not_open_newfile_init>N</do_not_open_newfile_init>
  818 + <create_parent_folder>N</create_parent_folder>
  819 + <split>N</split>
  820 + <add_date>N</add_date>
  821 + <add_time>N</add_time>
  822 + <SpecifyFormat>N</SpecifyFormat>
  823 + <date_time_format/>
  824 + <sheetname>Sheet1</sheetname>
  825 + <autosizecolums>N</autosizecolums>
  826 + <nullisblank>N</nullisblank>
  827 + <protect_sheet>N</protect_sheet>
  828 + <password>Encrypted </password>
  829 + <splitevery>0</splitevery>
  830 + <usetempfiles>N</usetempfiles>
  831 + <tempdirectory/>
  832 + </file>
  833 + <template>
  834 + <enabled>N</enabled>
  835 + <append>N</append>
  836 + <filename>template.xls</filename>
  837 + </template>
  838 + <fields>
  839 + <field>
  840 + <name>&#x7ebf;&#x8def;</name>
  841 + <type>String</type>
  842 + <format/>
  843 + </field>
  844 + <field>
  845 + <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
  846 + <type>String</type>
  847 + <format/>
  848 + </field>
  849 + <field>
  850 + <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  851 + <type>Timestamp</type>
  852 + <format/>
  853 + </field>
  854 + <field>
  855 + <name>&#x7ec8;&#x7ed3;&#x65e5;&#x671f;</name>
  856 + <type>Timestamp</type>
  857 + <format/>
  858 + </field>
  859 + <field>
  860 + <name>&#x505c;&#x8f66;&#x70b9;</name>
  861 + <type>String</type>
  862 + <format/>
  863 + </field>
  864 + <field>
  865 + <name>isCancel</name>
  866 + <type>Integer</type>
  867 + <format/>
  868 + </field>
  869 + <field>
  870 + <name>xlid</name>
  871 + <type>Integer</type>
  872 + <format/>
  873 + </field>
  874 + <field>
  875 + <name>clid</name>
  876 + <type>Integer</type>
  877 + <format/>
  878 + </field>
  879 + <field>
  880 + <name>isswitch</name>
  881 + <type>Integer</type>
  882 + <format/>
  883 + </field>
  884 + <field>
  885 + <name>error_count</name>
  886 + <type>Integer</type>
  887 + <format/>
  888 + </field>
  889 + <field>
  890 + <name>error_desc</name>
  891 + <type>String</type>
  892 + <format/>
  893 + </field>
  894 + <field>
  895 + <name>error_column1</name>
  896 + <type>String</type>
  897 + <format/>
  898 + </field>
  899 + <field>
  900 + <name>error_column2</name>
  901 + <type>String</type>
  902 + <format/>
  903 + </field>
  904 + </fields>
  905 + <custom>
  906 + <header_font_name>arial</header_font_name>
  907 + <header_font_size>10</header_font_size>
  908 + <header_font_bold>N</header_font_bold>
  909 + <header_font_italic>N</header_font_italic>
  910 + <header_font_underline>no</header_font_underline>
  911 + <header_font_orientation>horizontal</header_font_orientation>
  912 + <header_font_color>black</header_font_color>
  913 + <header_background_color>none</header_background_color>
  914 + <header_row_height>255</header_row_height>
  915 + <header_alignment>left</header_alignment>
  916 + <header_image/>
  917 + <row_font_name>arial</row_font_name>
  918 + <row_font_size>10</row_font_size>
  919 + <row_font_color>black</row_font_color>
  920 + <row_background_color>none</row_background_color>
  921 + </custom>
  922 + <cluster_schema/>
  923 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  924 + <xloc>807</xloc>
  925 + <yloc>353</yloc>
  926 + <draw>Y</draw>
  927 + </GUI>
  928 + </step>
  929 +
  930 + <step_error_handling>
  931 + <error>
  932 + <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ccinfo</source_step>
  933 + <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa;</target_step>
  934 + <is_enabled>Y</is_enabled>
  935 + <nr_valuename>error_count</nr_valuename>
  936 + <descriptions_valuename>error_desc</descriptions_valuename>
  937 + <fields_valuename>error_column1</fields_valuename>
  938 + <codes_valuename>error_column2</codes_valuename>
  939 + <max_errors/>
  940 + <max_pct_errors/>
  941 + <min_pct_rows/>
  942 + </error>
  943 + </step_error_handling>
  944 + <slave-step-copy-partition-distribution>
  945 +</slave-step-copy-partition-distribution>
  946 + <slave_transformation>N</slave_transformation>
  947 +
  948 +</transformation>