Commit 458dd7cabfe971afc8a916e3f3f76929979f3ffe

Authored by 潘钊
2 parents bbb8f22d b0ba5592

Merge branch 'minhang' into pudong

Showing 26 changed files with 2772 additions and 1509 deletions

Too many changes to show.

To preserve performance only 26 of 73 files are displayed.

src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
... ... @@ -417,6 +417,70 @@ public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo,
417 417 }
418 418 return scheduleRealInfoService.statisticsDailyTj(gsdm,fgsdm,line, date,date2, xlName, type);
419 419 }
  420 +
  421 + /*
  422 + * 公里修正报表
  423 + */
  424 + @RequestMapping(value="/mileageReportTj")
  425 + public List<Map<String,Object>> mileageReport(@RequestParam Map<String, Object> map){
  426 + String gsdm="";
  427 + if(map.get("gsdm")!=null){
  428 + gsdm=map.get("gsdm").toString();
  429 + }
  430 + String fgsdm="";
  431 + if(map.get("fgsdm")!=null){
  432 + fgsdm=map.get("fgsdm").toString();
  433 + }
  434 + String line="";
  435 + if(map.get("line")!=null){
  436 + line=map.get("line").toString();
  437 + }
  438 + String date="";
  439 + if(map.get("date")!=null){
  440 + date=map.get("date").toString();
  441 + }
  442 + String date2="";
  443 + if(map.get("date2")!=null){
  444 + date2=map.get("date2").toString();
  445 + }
  446 + String xlName="";
  447 + if(map.get("xlName")!=null){
  448 + xlName=map.get("xlName").toString();
  449 + }
  450 + return scheduleRealInfoService.mileageReport(gsdm,fgsdm,line, date,date2);
  451 + }
  452 +
  453 + /*
  454 + * 班次修正报表
  455 + */
  456 + @RequestMapping(value="/scheduleCorrectionReport")
  457 + public List<Map<String,Object>> scheduleCorrectionReport(@RequestParam Map<String, Object> map){
  458 + String gsdm="";
  459 + if(map.get("gsdm")!=null){
  460 + gsdm=map.get("gsdm").toString();
  461 + }
  462 + String fgsdm="";
  463 + if(map.get("fgsdm")!=null){
  464 + fgsdm=map.get("fgsdm").toString();
  465 + }
  466 + String line="";
  467 + if(map.get("line")!=null){
  468 + line=map.get("line").toString();
  469 + }
  470 + String date="";
  471 + if(map.get("date")!=null){
  472 + date=map.get("date").toString();
  473 + }
  474 + String date2="";
  475 + if(map.get("date2")!=null){
  476 + date2=map.get("date2").toString();
  477 + }
  478 + String xlName="";
  479 + if(map.get("xlName")!=null){
  480 + xlName=map.get("xlName").toString();
  481 + }
  482 + return scheduleRealInfoService.scheduleCorrectionReport(gsdm,fgsdm,line, date,date2);
  483 + }
420 484  
421 485 @RequestMapping(value="/MapById",method = RequestMethod.GET)
422 486 public Map<String, Object> MapById(@RequestParam("id") Long id){
... ...
src/main/java/com/bsth/controller/realcontrol/anomalyCheckController.java
... ... @@ -95,4 +95,9 @@ public class anomalyCheckController {
95 95 public void updateCacheBuff(){
96 96 geoCacheData.loadData();
97 97 }
  98 +
  99 + @RequestMapping(value = "/reCalcLpSch")
  100 + public void reCalcLpSch(){
  101 + dayOfSchedule._test_reCalcLpSch();
  102 + }
98 103 }
... ...
src/main/java/com/bsth/controller/report/ReportController.java
... ... @@ -84,12 +84,19 @@ public class ReportController {
84 84 @RequestParam int zd){
85 85 return service.queryStrinon(line,zd);
86 86 }
  87 + //根据排班查到离站
87 88 @RequestMapping(value="/queryInOutStrtion" ,method = RequestMethod.GET)
88 89 public List<Map<String, Object>> queryInOutStrtion(@RequestParam String line,
89 90 @RequestParam String date,@RequestParam int zd,@RequestParam String lzsj){
90 91 return service.queryInOutStrtion(line,date,zd,lzsj);
91 92 }
92 93  
  94 + //根据GPS数据查到离站
  95 + @RequestMapping(value="/queryInOutStrtions" ,method = RequestMethod.GET)
  96 + public List<Map<String, Object>> queryInOutStrtions(@RequestParam String line,
  97 + @RequestParam String date,@RequestParam int zd,@RequestParam String lzsj){
  98 + return service.queryInOutStrtions(line,date,zd,lzsj);
  99 + }
93 100 @RequestMapping(value="/queryListClzd" ,method = RequestMethod.GET)
94 101 public List<ArrivalInfo> queryListClzd(@RequestParam String zd,@RequestParam String line,
95 102 @RequestParam String zdlx,@RequestParam String fcsj,@RequestParam String ddsj){
... ...
src/main/java/com/bsth/data/car_out_info/CarOutInfoHandler.java
... ... @@ -54,27 +54,19 @@ public class CarOutInfoHandler {
54 54 * 全量更新发车信息表
55 55 */
56 56 public void updateAll() {
57   - Set<String> ks = BasicData.lineCode2NameMap.keySet();
58   - for (String lineCode : ks) {
59   - update(lineCode);
60   - }
61   - }
62   -
63   - public void update(String lineCode) {
64   - try {
65   - ArrayListMultimap<String, ScheduleRealInfo> lpScheduleMap = dayOfSchedule.getLpScheduleMap();
66   - List<ScheduleRealInfo> list = new ArrayList<>();
  57 + try{
  58 + //将班次按线路分组
  59 + List<ScheduleRealInfo> all = new ArrayList<>(dayOfSchedule.findAll());
  60 + ArrayListMultimap<String, ScheduleRealInfo> xlMaps = ArrayListMultimap.create();
  61 + for(ScheduleRealInfo sch : all){
  62 + xlMaps.put(sch.getXlBm(), sch);
  63 + }
67 64  
68   - Set<String> ks = lpScheduleMap.keySet();
69   - String prefix = lineCode + "_";
  65 + Set<String> ks = xlMaps.keySet();
70 66 for (String k : ks) {
71   - if (k.startsWith(prefix)) {
72   - list.addAll(lpScheduleMap.get(k));
73   - }
  67 + update(xlMaps.get(k));
74 68 }
75   -
76   - update(list);
77   - } catch (Exception e) {
  69 + }catch (Exception e){
78 70 logger.error("", e);
79 71 }
80 72 }
... ...
src/main/java/com/bsth/data/gpsdata/arrival/handlers/InOutStationSignalHandle.java
... ... @@ -338,6 +338,9 @@ public class InOutStationSignalHandle extends SignalHandle{
338 338 if(lpNext != null){
339 339 lpNext.setQdzArrDatesj(sch.getZdsjActual());
340 340 }
  341 + else{
  342 + logger.info(sch.getClZbh() + " 到终点,无下一班");
  343 + }
341 344  
342 345 //通知客户端
343 346 sendUtils.sendZdsj(sch, lpNext, doneSum);
... ...
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
... ... @@ -1137,4 +1137,16 @@ public class DayOfSchedule {
1137 1137 public ArrayListMultimap<String, ScheduleRealInfo> getLpScheduleMap() {
1138 1138 return lpScheduleMap;
1139 1139 }
  1140 +
  1141 + /**
  1142 + * 重新全量计算路牌下的班次关联性
  1143 + * 临时性的函数
  1144 + */
  1145 + public void _test_reCalcLpSch() {
  1146 + Map<String ,Collection<ScheduleRealInfo>> map = lpScheduleMap.asMap();
  1147 + Set<String> ks = map.keySet();
  1148 + for(String k : ks){
  1149 + schAttrCalculator.calcQdzTimePlan(new ArrayList<ScheduleRealInfo>(map.get(k)));
  1150 + }
  1151 + }
1140 1152 }
1141 1153 \ No newline at end of file
... ...
src/main/java/com/bsth/data/schedule/signal/SchSiginUpdateDBThread.java
1   -package com.bsth.data.schedule.signal;
2   -
3   -import org.slf4j.Logger;
4   -import org.slf4j.LoggerFactory;
5   -import org.springframework.beans.factory.annotation.Autowired;
6   -import org.springframework.stereotype.Component;
7   -
8   -/**
9   - * Created by panzhao on 2017/8/14.
10   - */
11   -@Component
12   -public class SchSiginUpdateDBThread extends Thread{
13   -
14   - @Autowired
15   - SignalComplateHandler signalComplateHandler;
16   -
17   - Logger logger = LoggerFactory.getLogger(this.getClass());
18   -
19   - @Override
20   - public void run() {
21   - try{
22   - signalComplateHandler.handler();
23   - }catch (Exception e){
24   - logger.error("", e);
25   - }
26   - }
27   -}
  1 +package com.bsth.data.schedule.signal;
  2 +
  3 +import org.slf4j.Logger;
  4 +import org.slf4j.LoggerFactory;
  5 +import org.springframework.beans.factory.annotation.Autowired;
  6 +import org.springframework.stereotype.Component;
  7 +
  8 +/**
  9 + * Created by panzhao on 2017/8/14.
  10 + */
  11 +@Component
  12 +public class SchSiginUpdateDBThread extends Thread{
  13 +
  14 + @Autowired
  15 + SignalComplateHandler signalComplateHandler;
  16 +
  17 + Logger logger = LoggerFactory.getLogger(this.getClass());
  18 +
  19 + @Override
  20 + public void run() {
  21 + try{
  22 + signalComplateHandler.handler();
  23 + }catch (Exception e){
  24 + logger.error("", e);
  25 + }
  26 + }
  27 +}
... ...
src/main/java/com/bsth/data/schedule/signal/SignalComplateHandler.java
1   -package com.bsth.data.schedule.signal;
2   -
3   -import com.bsth.data.schedule.DayOfSchedule;
4   -import com.bsth.data.schedule.signal.entity.SchSiginCompate;
5   -import com.bsth.entity.realcontrol.ScheduleRealInfo;
6   -import com.bsth.util.db.DBUtils_MS;
7   -import org.apache.commons.lang3.StringUtils;
8   -import org.slf4j.Logger;
9   -import org.slf4j.LoggerFactory;
10   -import org.springframework.beans.factory.annotation.Autowired;
11   -import org.springframework.jdbc.core.BatchPreparedStatementSetter;
12   -import org.springframework.jdbc.core.JdbcTemplate;
13   -import org.springframework.jdbc.datasource.DataSourceTransactionManager;
14   -import org.springframework.stereotype.Component;
15   -import org.springframework.transaction.TransactionDefinition;
16   -import org.springframework.transaction.TransactionStatus;
17   -import org.springframework.transaction.support.DefaultTransactionDefinition;
18   -
19   -import java.sql.PreparedStatement;
20   -import java.sql.SQLException;
21   -import java.util.ArrayList;
22   -import java.util.Collection;
23   -import java.util.Date;
24   -import java.util.List;
25   -
26   -/**
27   - * 班次信号补全(写入数据库,网关以补发的形式提交运管处)
28   - * Created by panzhao on 2017/8/13.
29   - */
30   -@Component
31   -public class SignalComplateHandler {
32   -
33   - @Autowired
34   - DayOfSchedule dayOfSchedule;
35   -
36   - Logger log = LoggerFactory.getLogger(this.getClass());
37   -
38   - public void handler(){
39   - Collection<ScheduleRealInfo> all = dayOfSchedule.findAll();
40   - List<SchSiginCompate> list = new ArrayList<>();
41   -
42   - SchSiginCompate siginCompate;
43   - Date d = new Date();
44   - long et = System.currentTimeMillis() - (1000 * 60 * 60 * 2),
45   - st = et - (1000 * 60 * 60 * 2);
46   - for(ScheduleRealInfo sch : all){
47   - if(sch.getDfsjT() > et || sch.getDfsjT() < st)
48   - continue;
49   -
50   - //能自动完成的
51   - if(sch.getSiginCompate() >= 2)
52   - continue;
53   -
54   - //烂班
55   - if(sch.isDestroy())
56   - continue;
57   -
58   - //空驶任务
59   - if(dayOfSchedule.emptyService(sch))
60   - continue;
61   -
62   - siginCompate = new SchSiginCompate(sch);
63   - if(siginCompate == null || StringUtils.isEmpty(siginCompate.getDeciveId()))
64   - continue;
65   -
66   - //标记已经补发
67   - sch.setSiginCompate(3);
68   - //标记入库
69   - dayOfSchedule.save(sch);
70   - siginCompate.setCreateDate(d);
71   - list.add(siginCompate);
72   - }
73   -
74   - put(list);
75   - }
76   -
77   - public void put(final List<SchSiginCompate> list){
78   - if(null == list || list.size() == 0)
79   - return;
80   -
81   - JdbcTemplate jdbcTemp = new JdbcTemplate(DBUtils_MS.getDataSource());
82   - //编程式事务
83   - DataSourceTransactionManager tran = new DataSourceTransactionManager(jdbcTemp.getDataSource());
84   - DefaultTransactionDefinition def = new DefaultTransactionDefinition();
85   - def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
86   - TransactionStatus status = tran.getTransaction(def);
87   -
88   - try{
89   - jdbcTemp.batchUpdate("insert into bsth_t_sigin_complate(id, rq, line_code, device_id, up_down, s_code, e_code, st, et, create_date, status) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", new BatchPreparedStatementSetter() {
90   - @Override
91   - public void setValues(PreparedStatement ps, int i) throws SQLException {
92   - SchSiginCompate sc = list.get(i);
93   - ps.setLong(1, sc.getId());
94   - ps.setString(2, sc.getRq());
95   - ps.setString(3, sc.getLineCode());
96   - ps.setString(4, sc.getDeciveId());
97   - ps.setInt(5, sc.getUpDown());
98   - ps.setString(6, sc.getsCode());
99   - ps.setString(7, sc.geteCode());
100   - ps.setLong(8, sc.getSt());
101   - ps.setLong(9, sc.getEt());
102   - ps.setDate(10, new java.sql.Date(sc.getCreateDate().getTime()));
103   - ps.setInt(11, sc.getStatus());
104   - }
105   -
106   - @Override
107   - public int getBatchSize() {
108   - return list.size();
109   - }
110   - });
111   -
112   - tran.commit(status);
113   - log.info("补信号班次入库," + list.size());
114   - }catch (Exception e){
115   - log.error("", e);
116   - tran.rollback(status);
117   - }
118   - }
119   -
120   -
121   -}
  1 +package com.bsth.data.schedule.signal;
  2 +
  3 +import com.bsth.data.schedule.DayOfSchedule;
  4 +import com.bsth.data.schedule.signal.entity.SchSiginCompate;
  5 +import com.bsth.entity.realcontrol.ScheduleRealInfo;
  6 +import com.bsth.util.db.DBUtils_MS;
  7 +import org.apache.commons.lang3.StringUtils;
  8 +import org.slf4j.Logger;
  9 +import org.slf4j.LoggerFactory;
  10 +import org.springframework.beans.factory.annotation.Autowired;
  11 +import org.springframework.jdbc.core.BatchPreparedStatementSetter;
  12 +import org.springframework.jdbc.core.JdbcTemplate;
  13 +import org.springframework.jdbc.datasource.DataSourceTransactionManager;
  14 +import org.springframework.stereotype.Component;
  15 +import org.springframework.transaction.TransactionDefinition;
  16 +import org.springframework.transaction.TransactionStatus;
  17 +import org.springframework.transaction.support.DefaultTransactionDefinition;
  18 +
  19 +import java.sql.PreparedStatement;
  20 +import java.sql.SQLException;
  21 +import java.util.ArrayList;
  22 +import java.util.Collection;
  23 +import java.util.Date;
  24 +import java.util.List;
  25 +
  26 +/**
  27 + * 班次信号补全(写入数据库,网关以补发的形式提交运管处)
  28 + * Created by panzhao on 2017/8/13.
  29 + */
  30 +@Component
  31 +public class SignalComplateHandler {
  32 +
  33 + @Autowired
  34 + DayOfSchedule dayOfSchedule;
  35 +
  36 + Logger log = LoggerFactory.getLogger(this.getClass());
  37 +
  38 + public void handler(){
  39 + Collection<ScheduleRealInfo> all = dayOfSchedule.findAll();
  40 + List<SchSiginCompate> list = new ArrayList<>();
  41 +
  42 + SchSiginCompate siginCompate;
  43 + Date d = new Date();
  44 + long et = System.currentTimeMillis() - (1000 * 60 * 60 * 2),
  45 + st = et - (1000 * 60 * 60 * 2);
  46 + for(ScheduleRealInfo sch : all){
  47 + if(sch.getDfsjT() > et || sch.getDfsjT() < st)
  48 + continue;
  49 +
  50 + //能自动完成的
  51 + if(sch.getSiginCompate() >= 2)
  52 + continue;
  53 +
  54 + //烂班
  55 + if(sch.isDestroy())
  56 + continue;
  57 +
  58 + //空驶任务
  59 + if(dayOfSchedule.emptyService(sch))
  60 + continue;
  61 +
  62 + siginCompate = new SchSiginCompate(sch);
  63 + if(siginCompate == null || StringUtils.isEmpty(siginCompate.getDeciveId()))
  64 + continue;
  65 +
  66 + //标记已经补发
  67 + sch.setSiginCompate(3);
  68 + //标记入库
  69 + dayOfSchedule.save(sch);
  70 + siginCompate.setCreateDate(d);
  71 + list.add(siginCompate);
  72 + }
  73 +
  74 + put(list);
  75 + }
  76 +
  77 + public void put(final List<SchSiginCompate> list){
  78 + if(null == list || list.size() == 0)
  79 + return;
  80 +
  81 + JdbcTemplate jdbcTemp = new JdbcTemplate(DBUtils_MS.getDataSource());
  82 + //编程式事务
  83 + DataSourceTransactionManager tran = new DataSourceTransactionManager(jdbcTemp.getDataSource());
  84 + DefaultTransactionDefinition def = new DefaultTransactionDefinition();
  85 + def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
  86 + TransactionStatus status = tran.getTransaction(def);
  87 +
  88 + try{
  89 + jdbcTemp.batchUpdate("insert into bsth_t_sigin_complate(id, rq, line_code, device_id, up_down, s_code, e_code, st, et, create_date, status) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", new BatchPreparedStatementSetter() {
  90 + @Override
  91 + public void setValues(PreparedStatement ps, int i) throws SQLException {
  92 + SchSiginCompate sc = list.get(i);
  93 + ps.setLong(1, sc.getId());
  94 + ps.setString(2, sc.getRq());
  95 + ps.setString(3, sc.getLineCode());
  96 + ps.setString(4, sc.getDeciveId());
  97 + ps.setInt(5, sc.getUpDown());
  98 + ps.setString(6, sc.getsCode());
  99 + ps.setString(7, sc.geteCode());
  100 + ps.setLong(8, sc.getSt());
  101 + ps.setLong(9, sc.getEt());
  102 + ps.setDate(10, new java.sql.Date(sc.getCreateDate().getTime()));
  103 + ps.setInt(11, sc.getStatus());
  104 + }
  105 +
  106 + @Override
  107 + public int getBatchSize() {
  108 + return list.size();
  109 + }
  110 + });
  111 +
  112 + tran.commit(status);
  113 + log.info("补信号班次入库," + list.size());
  114 + }catch (Exception e){
  115 + log.error("", e);
  116 + tran.rollback(status);
  117 + }
  118 + }
  119 +
  120 +
  121 +}
... ...
src/main/java/com/bsth/data/schedule/signal/entity/SchSiginCompate.java
1   -package com.bsth.data.schedule.signal.entity;
2   -
3   -import com.bsth.data.BasicData;
4   -import com.bsth.entity.realcontrol.ScheduleRealInfo;
5   -
6   -import java.util.Date;
7   -
8   -/**
9   - * 班次信号补偿
10   - * Created by panzhao on 2017/8/13.
11   - */
12   -public class SchSiginCompate {
13   -
14   - /** 实际班次ID */
15   - private long id;
16   -
17   - /** 班次日期 */
18   - private String rq;
19   -
20   - /** 线路编码 */
21   - private String lineCode;
22   -
23   - /** 设备号 */
24   - private String deciveId;
25   -
26   - /** 上下行 */
27   - private int upDown;
28   -
29   - /** 起始站编码 */
30   - private String sCode;
31   -
32   - /** 终点站编码 */
33   - private String eCode;
34   -
35   - /** 开始时间戳 */
36   - private long st;
37   -
38   - /** 结束时间戳 */
39   - private long et;
40   -
41   - /** 入库时间 */
42   - private Date createDate;
43   -
44   - private int status = 0;
45   -
46   - public SchSiginCompate(ScheduleRealInfo sch) {
47   - this.id = sch.getId();
48   - this.rq = sch.getScheduleDateStr();
49   - this.lineCode = sch.getXlBm();
50   - this.upDown = Integer.parseInt(sch.getXlDir());
51   - this.deciveId = BasicData.deviceId2NbbmMap.inverse().get(sch.getClZbh());
52   - this.sCode = sch.getQdzCode();
53   - this.eCode = sch.getZdzCode();
54   - this.st = sch.getDfsjT();
55   - this.et = sch.getZdsjT();
56   -
57   - if(sch.getFcsjActualTime() != null)
58   - this.st = sch.getFcsjActualTime();
59   - if(sch.getZdsjActualTime() != null)
60   - this.et = sch.getZdsjActualTime();
61   - }
62   -
63   - public long getId() {
64   - return id;
65   - }
66   -
67   - public void setId(long id) {
68   - this.id = id;
69   - }
70   -
71   - public String getRq() {
72   - return rq;
73   - }
74   -
75   - public void setRq(String rq) {
76   - this.rq = rq;
77   - }
78   -
79   - public String getLineCode() {
80   - return lineCode;
81   - }
82   -
83   - public void setLineCode(String lineCode) {
84   - this.lineCode = lineCode;
85   - }
86   -
87   - public String getDeciveId() {
88   - return deciveId;
89   - }
90   -
91   - public void setDeciveId(String deciveId) {
92   - this.deciveId = deciveId;
93   - }
94   -
95   - public int getUpDown() {
96   - return upDown;
97   - }
98   -
99   - public void setUpDown(int upDown) {
100   - this.upDown = upDown;
101   - }
102   -
103   - public String getsCode() {
104   - return sCode;
105   - }
106   -
107   - public void setsCode(String sCode) {
108   - this.sCode = sCode;
109   - }
110   -
111   - public String geteCode() {
112   - return eCode;
113   - }
114   -
115   - public void seteCode(String eCode) {
116   - this.eCode = eCode;
117   - }
118   -
119   - public long getSt() {
120   - return st;
121   - }
122   -
123   - public void setSt(long st) {
124   - this.st = st;
125   - }
126   -
127   - public long getEt() {
128   - return et;
129   - }
130   -
131   - public void setEt(long et) {
132   - this.et = et;
133   - }
134   -
135   - public Date getCreateDate() {
136   - return createDate;
137   - }
138   -
139   - public void setCreateDate(Date createDate) {
140   - this.createDate = createDate;
141   - }
142   -
143   - public int getStatus() {
144   - return status;
145   - }
146   -
147   - public void setStatus(int status) {
148   - this.status = status;
149   - }
150   -}
  1 +package com.bsth.data.schedule.signal.entity;
  2 +
  3 +import com.bsth.data.BasicData;
  4 +import com.bsth.entity.realcontrol.ScheduleRealInfo;
  5 +
  6 +import java.util.Date;
  7 +
  8 +/**
  9 + * 班次信号补偿
  10 + * Created by panzhao on 2017/8/13.
  11 + */
  12 +public class SchSiginCompate {
  13 +
  14 + /** 实际班次ID */
  15 + private long id;
  16 +
  17 + /** 班次日期 */
  18 + private String rq;
  19 +
  20 + /** 线路编码 */
  21 + private String lineCode;
  22 +
  23 + /** 设备号 */
  24 + private String deciveId;
  25 +
  26 + /** 上下行 */
  27 + private int upDown;
  28 +
  29 + /** 起始站编码 */
  30 + private String sCode;
  31 +
  32 + /** 终点站编码 */
  33 + private String eCode;
  34 +
  35 + /** 开始时间戳 */
  36 + private long st;
  37 +
  38 + /** 结束时间戳 */
  39 + private long et;
  40 +
  41 + /** 入库时间 */
  42 + private Date createDate;
  43 +
  44 + private int status = 0;
  45 +
  46 + public SchSiginCompate(ScheduleRealInfo sch) {
  47 + this.id = sch.getId();
  48 + this.rq = sch.getScheduleDateStr();
  49 + this.lineCode = sch.getXlBm();
  50 + this.upDown = Integer.parseInt(sch.getXlDir());
  51 + this.deciveId = BasicData.deviceId2NbbmMap.inverse().get(sch.getClZbh());
  52 + this.sCode = sch.getQdzCode();
  53 + this.eCode = sch.getZdzCode();
  54 + this.st = sch.getDfsjT();
  55 + this.et = sch.getZdsjT();
  56 +
  57 + if(sch.getFcsjActualTime() != null)
  58 + this.st = sch.getFcsjActualTime();
  59 + if(sch.getZdsjActualTime() != null)
  60 + this.et = sch.getZdsjActualTime();
  61 + }
  62 +
  63 + public long getId() {
  64 + return id;
  65 + }
  66 +
  67 + public void setId(long id) {
  68 + this.id = id;
  69 + }
  70 +
  71 + public String getRq() {
  72 + return rq;
  73 + }
  74 +
  75 + public void setRq(String rq) {
  76 + this.rq = rq;
  77 + }
  78 +
  79 + public String getLineCode() {
  80 + return lineCode;
  81 + }
  82 +
  83 + public void setLineCode(String lineCode) {
  84 + this.lineCode = lineCode;
  85 + }
  86 +
  87 + public String getDeciveId() {
  88 + return deciveId;
  89 + }
  90 +
  91 + public void setDeciveId(String deciveId) {
  92 + this.deciveId = deciveId;
  93 + }
  94 +
  95 + public int getUpDown() {
  96 + return upDown;
  97 + }
  98 +
  99 + public void setUpDown(int upDown) {
  100 + this.upDown = upDown;
  101 + }
  102 +
  103 + public String getsCode() {
  104 + return sCode;
  105 + }
  106 +
  107 + public void setsCode(String sCode) {
  108 + this.sCode = sCode;
  109 + }
  110 +
  111 + public String geteCode() {
  112 + return eCode;
  113 + }
  114 +
  115 + public void seteCode(String eCode) {
  116 + this.eCode = eCode;
  117 + }
  118 +
  119 + public long getSt() {
  120 + return st;
  121 + }
  122 +
  123 + public void setSt(long st) {
  124 + this.st = st;
  125 + }
  126 +
  127 + public long getEt() {
  128 + return et;
  129 + }
  130 +
  131 + public void setEt(long et) {
  132 + this.et = et;
  133 + }
  134 +
  135 + public Date getCreateDate() {
  136 + return createDate;
  137 + }
  138 +
  139 + public void setCreateDate(Date createDate) {
  140 + this.createDate = createDate;
  141 + }
  142 +
  143 + public int getStatus() {
  144 + return status;
  145 + }
  146 +
  147 + public void setStatus(int status) {
  148 + this.status = status;
  149 + }
  150 +}
... ...
src/main/java/com/bsth/entity/excep/ArrivalInfo.java
... ... @@ -61,11 +61,12 @@ public class ArrivalInfo {
61 61 private String jzsj;
62 62 /** -1 则信号有效,但程序标记为不使用 */
63 63 private int flag = 0;
64   -
  64 + private Date dates;
  65 + private int route;
65 66 public ArrivalInfo(){}
66 67  
67 68 public ArrivalInfo(String deviceId, long ts, String lineCode, int upDown, String stopNo, int inOut, long createDate,
68   - int weeksYear, String stopName) {
  69 + int weeksYear, String stopName,Date dates,int route) {
69 70  
70 71 this.deviceId = deviceId;
71 72 this.ts = ts;
... ... @@ -75,6 +76,8 @@ public class ArrivalInfo {
75 76 this.stopName = stopName;
76 77 this.inOut = inOut;
77 78 this.createDate = createDate;
  79 + this.dates=dates;
  80 + this.route=route;
78 81 }
79 82  
80 83 /* @Override
... ... @@ -253,6 +256,22 @@ public class ArrivalInfo {
253 256 public void setPzh(String pzh) {
254 257 this.pzh = pzh;
255 258 }
  259 +
  260 + public Date getDates() {
  261 + return dates;
  262 + }
  263 +
  264 + public void setDates(Date dates) {
  265 + this.dates = dates;
  266 + }
  267 +
  268 + public int getRoute() {
  269 + return route;
  270 + }
  271 +
  272 + public void setRoute(int route) {
  273 + this.route = route;
  274 + }
256 275  
257 276  
258 277  
... ...
src/main/java/com/bsth/entity/report/MileageReport.java 0 → 100644
  1 +package com.bsth.entity.report;
  2 +
  3 +import java.util.Date;
  4 +
  5 +/**
  6 + * @ClassName: MileageReport.java
  7 + * @Description: TODO(营运里程修正报表)
  8 + * @author: YouRuiFeng
  9 + * @date: 2017-8-14 上午11:09:19
  10 + *
  11 + */
  12 +public class MileageReport {
  13 + /** 公司编码 */
  14 + private String companyId;
  15 +
  16 + /** 分公司编码 */
  17 + private String subCompanyId;
  18 +
  19 + /** 公司名称 */
  20 + private String companyName;
  21 +
  22 + /** 分公司名称 */
  23 + private String subCompanyName;
  24 +
  25 + /** 线路编码 */
  26 + private String lineCode;
  27 +
  28 + /** 线路名称 */
  29 + private String lineName;
  30 +
  31 + /** 总营运公里 */
  32 + private double zgl;
  33 +
  34 + /** 实际运营公里 */
  35 + private double sjyygl;
  36 +
  37 + /** 实际空驶公里 */
  38 + private double sjksgl;
  39 +
  40 + /** 手动待发公里 */
  41 + private double sddfgl;
  42 +
  43 + /** 自动代发公里 */
  44 + private double zddfgl;
  45 +
  46 + /** 完全无Gps信号公里 */
  47 + private double wqwxhgl;
  48 +
  49 + /** 部分无Gps公里 */
  50 + private double bfwxhgl;
  51 +
  52 + /** 漂移公里 */
  53 + private double pygl;
  54 +
  55 + /** 临加公里 */
  56 + private double ljgl;
  57 +
  58 + /** 子任务 */
  59 + private double zrwgl;
  60 +
  61 + /** 其他*/
  62 + private String other;
  63 +
  64 + /** 备注 */
  65 + private String remarks;
  66 +
  67 + /** 日期 (班次日期) */
  68 + private String rq;
  69 +
  70 + private Date createDate;
  71 +
  72 +
  73 + public String getCompanyId() {
  74 + return companyId;
  75 + }
  76 +
  77 + public void setCompanyId(String companyId) {
  78 + this.companyId = companyId;
  79 + }
  80 +
  81 + public String getSubCompanyId() {
  82 + return subCompanyId;
  83 + }
  84 +
  85 + public void setSubCompanyId(String subCompanyId) {
  86 + this.subCompanyId = subCompanyId;
  87 + }
  88 +
  89 + public String getCompanyName() {
  90 + return companyName;
  91 + }
  92 +
  93 + public void setCompanyName(String companyName) {
  94 + this.companyName = companyName;
  95 + }
  96 +
  97 + public String getSubCompanyName() {
  98 + return subCompanyName;
  99 + }
  100 +
  101 + public void setSubCompanyName(String subCompanyName) {
  102 + this.subCompanyName = subCompanyName;
  103 + }
  104 +
  105 + public String getLineCode() {
  106 + return lineCode;
  107 + }
  108 +
  109 + public void setLineCode(String lineCode) {
  110 + this.lineCode = lineCode;
  111 + }
  112 +
  113 + public String getLineName() {
  114 + return lineName;
  115 + }
  116 +
  117 + public void setLineName(String lineName) {
  118 + this.lineName = lineName;
  119 + }
  120 +
  121 + public double getZgl() {
  122 + return zgl;
  123 + }
  124 +
  125 + public void setZgl(double zgl) {
  126 + this.zgl = zgl;
  127 + }
  128 +
  129 + public double getSjyygl() {
  130 + return sjyygl;
  131 + }
  132 +
  133 + public void setSjyygl(double sjyygl) {
  134 + this.sjyygl = sjyygl;
  135 + }
  136 +
  137 + public double getSjksgl() {
  138 + return sjksgl;
  139 + }
  140 +
  141 + public void setSjksgl(double sjksgl) {
  142 + this.sjksgl = sjksgl;
  143 + }
  144 +
  145 + public double getSddfgl() {
  146 + return sddfgl;
  147 + }
  148 +
  149 + public void setSddfgl(double sddfgl) {
  150 + this.sddfgl = sddfgl;
  151 + }
  152 +
  153 + public double getZddfgl() {
  154 + return zddfgl;
  155 + }
  156 +
  157 + public void setZddfgl(double zddfgl) {
  158 + this.zddfgl = zddfgl;
  159 + }
  160 +
  161 + public double getWqwxhgl() {
  162 + return wqwxhgl;
  163 + }
  164 +
  165 + public void setWqwxhgl(double wqwxhgl) {
  166 + this.wqwxhgl = wqwxhgl;
  167 + }
  168 +
  169 + public double getBfwxhgl() {
  170 + return bfwxhgl;
  171 + }
  172 +
  173 + public void setBfwxhgl(double bfwxhgl) {
  174 + this.bfwxhgl = bfwxhgl;
  175 + }
  176 +
  177 + public double getPygl() {
  178 + return pygl;
  179 + }
  180 +
  181 + public void setPygl(double pygl) {
  182 + this.pygl = pygl;
  183 + }
  184 +
  185 + public double getLjgl() {
  186 + return ljgl;
  187 + }
  188 +
  189 + public void setLjgl(double ljgl) {
  190 + this.ljgl = ljgl;
  191 + }
  192 +
  193 + public double getZrwgl() {
  194 + return zrwgl;
  195 + }
  196 +
  197 + public void setZrwgl(double zrwgl) {
  198 + this.zrwgl = zrwgl;
  199 + }
  200 +
  201 + public String getOther() {
  202 + return other;
  203 + }
  204 +
  205 + public void setOther(String other) {
  206 + this.other = other;
  207 + }
  208 +
  209 + public String getRemarks() {
  210 + return remarks;
  211 + }
  212 +
  213 + public void setRemarks(String remarks) {
  214 + this.remarks = remarks;
  215 + }
  216 +
  217 + public String getRq() {
  218 + return rq;
  219 + }
  220 +
  221 + public void setRq(String rq) {
  222 + this.rq = rq;
  223 + }
  224 +
  225 + public Date getCreateDate() {
  226 + return createDate;
  227 + }
  228 +
  229 + public void setCreateDate(Date createDate) {
  230 + this.createDate = createDate;
  231 + }
  232 +
  233 +
  234 +}
... ...
src/main/java/com/bsth/entity/report/ScheduleCorrectionReport.java 0 → 100644
  1 +package com.bsth.entity.report;
  2 +
  3 +import java.util.Date;
  4 +
  5 +/**
  6 + * @ClassName: MileageReport.java
  7 + * @Description: TODO(营运里程修正报表)
  8 + * @author: YouRuiFeng
  9 + * @date: 2017-8-14 上午11:09:19
  10 + *
  11 + */
  12 +public class ScheduleCorrectionReport {
  13 + /** 公司编码 */
  14 + private String companyId;
  15 +
  16 + /** 分公司编码 */
  17 + private String subCompanyId;
  18 +
  19 + /** 公司名称 */
  20 + private String companyName;
  21 +
  22 + /** 分公司名称 */
  23 + private String subCompanyName;
  24 +
  25 + /** 线路编码 */
  26 + private String lineCode;
  27 +
  28 + /** 线路名称 */
  29 + private String lineName;
  30 +
  31 + /** 总营运班次 */
  32 + private int zbc;
  33 +
  34 + /** 实际运营班次 */
  35 + private int sjyybc;
  36 +
  37 + /** 实际空驶班次 */
  38 + private int sjksbc;
  39 +
  40 + /** 手动待发班次 */
  41 + private int sddfbc;
  42 +
  43 + /** 自动代发班次 */
  44 + private int zddfbc;
  45 +
  46 + /** 完全无Gps信号班次 */
  47 + private int wqwxhbc;
  48 +
  49 + /** 部分无Gps班次 */
  50 + private int bfwxhbc;
  51 +
  52 + /** 漂移班次 */
  53 + private int pybc;
  54 +
  55 + /** 临加班次 */
  56 + private int ljbc;
  57 +
  58 + /** 子任务 */
  59 + private int zrwbc;
  60 +
  61 + /** 其他*/
  62 + private String other;
  63 +
  64 + /** 备注 */
  65 + private String remarks;
  66 +
  67 + /** 日期 (班次日期) */
  68 + private String rq;
  69 +
  70 + private Date createDate;
  71 +
  72 + public String getCompanyId() {
  73 + return companyId;
  74 + }
  75 +
  76 + public void setCompanyId(String companyId) {
  77 + this.companyId = companyId;
  78 + }
  79 +
  80 + public String getSubCompanyId() {
  81 + return subCompanyId;
  82 + }
  83 +
  84 + public void setSubCompanyId(String subCompanyId) {
  85 + this.subCompanyId = subCompanyId;
  86 + }
  87 +
  88 + public String getCompanyName() {
  89 + return companyName;
  90 + }
  91 +
  92 + public void setCompanyName(String companyName) {
  93 + this.companyName = companyName;
  94 + }
  95 +
  96 + public String getSubCompanyName() {
  97 + return subCompanyName;
  98 + }
  99 +
  100 + public void setSubCompanyName(String subCompanyName) {
  101 + this.subCompanyName = subCompanyName;
  102 + }
  103 +
  104 + public String getLineCode() {
  105 + return lineCode;
  106 + }
  107 +
  108 + public void setLineCode(String lineCode) {
  109 + this.lineCode = lineCode;
  110 + }
  111 +
  112 + public String getLineName() {
  113 + return lineName;
  114 + }
  115 +
  116 + public void setLineName(String lineName) {
  117 + this.lineName = lineName;
  118 + }
  119 +
  120 + public int getZbc() {
  121 + return zbc;
  122 + }
  123 +
  124 + public void setZbc(int zbc) {
  125 + this.zbc = zbc;
  126 + }
  127 +
  128 + public int getSjyybc() {
  129 + return sjyybc;
  130 + }
  131 +
  132 + public void setSjyybc(int sjyybc) {
  133 + this.sjyybc = sjyybc;
  134 + }
  135 +
  136 + public int getSjksbc() {
  137 + return sjksbc;
  138 + }
  139 +
  140 + public void setSjksbc(int sjksbc) {
  141 + this.sjksbc = sjksbc;
  142 + }
  143 +
  144 + public int getSddfbc() {
  145 + return sddfbc;
  146 + }
  147 +
  148 + public void setSddfbc(int sddfbc) {
  149 + this.sddfbc = sddfbc;
  150 + }
  151 +
  152 + public int getZddfbc() {
  153 + return zddfbc;
  154 + }
  155 +
  156 + public void setZddfbc(int zddfbc) {
  157 + this.zddfbc = zddfbc;
  158 + }
  159 +
  160 + public int getWqwxhbc() {
  161 + return wqwxhbc;
  162 + }
  163 +
  164 + public void setWqwxhbc(int wqwxhbc) {
  165 + this.wqwxhbc = wqwxhbc;
  166 + }
  167 +
  168 + public int getBfwxhbc() {
  169 + return bfwxhbc;
  170 + }
  171 +
  172 + public void setBfwxhbc(int bfwxhbc) {
  173 + this.bfwxhbc = bfwxhbc;
  174 + }
  175 +
  176 + public int getPybc() {
  177 + return pybc;
  178 + }
  179 +
  180 + public void setPybc(int pybc) {
  181 + this.pybc = pybc;
  182 + }
  183 +
  184 + public int getLjbc() {
  185 + return ljbc;
  186 + }
  187 +
  188 + public void setLjbc(int ljbc) {
  189 + this.ljbc = ljbc;
  190 + }
  191 +
  192 + public int getZrwbc() {
  193 + return zrwbc;
  194 + }
  195 +
  196 + public void setZrwbc(int zrwbc) {
  197 + this.zrwbc = zrwbc;
  198 + }
  199 +
  200 + public String getOther() {
  201 + return other;
  202 + }
  203 +
  204 + public void setOther(String other) {
  205 + this.other = other;
  206 + }
  207 +
  208 + public String getRemarks() {
  209 + return remarks;
  210 + }
  211 +
  212 + public void setRemarks(String remarks) {
  213 + this.remarks = remarks;
  214 + }
  215 +
  216 + public String getRq() {
  217 + return rq;
  218 + }
  219 +
  220 + public void setRq(String rq) {
  221 + this.rq = rq;
  222 + }
  223 +
  224 + public Date getCreateDate() {
  225 + return createDate;
  226 + }
  227 +
  228 + public void setCreateDate(Date createDate) {
  229 + this.createDate = createDate;
  230 + }
  231 +
  232 +}
... ...
src/main/java/com/bsth/repository/oil/DlbRepository.java
... ... @@ -53,7 +53,7 @@ public interface DlbRepository extends BaseRepository&lt;Dlb, Integer&gt;{
53 53 + " ssgsdm like %?2% "
54 54 + " and fgsdm like %?3%"
55 55 + " and xlbm like %?4% and nbbm like %?5% "
56   - + " group by nbbm,rq,ssgsdm,fgsdm,xlbm",nativeQuery=true)
  56 + + " group by nbbm,rq,ssgsdm,fgsdm",nativeQuery=true)
57 57 List<Object[]> checkNbmmNum(String rq, String gsbm,String fgsbm,String xlbm,String nbbm);
58 58  
59 59 @Query(value="select nbbm,sum(cdl*100) as cdl ,sum(zlc*100) as zlc from bsth_c_dlb where to_days(?1)=to_days(rq) and "
... ...
src/main/java/com/bsth/repository/oil/JdlRepository.java
... ... @@ -17,25 +17,25 @@ public interface JdlRepository extends BaseRepository&lt;Jdl, Integer&gt;{
17 17 @Transactional
18 18 @Modifying
19 19 @Query(value="INSERT INTO bsth_c_jdl("+
20   - "gs_bm, gs_name, fgs_bm, fgs_name, rq, nbbm, jdl, jdz, remarks, creater_date,jsy)" +
  20 + "gs_bm, gs_name, fgs_bm, fgs_name, rq, nbbm, jdl, jdz, remarks, creater_date)" +
21 21 " VALUES(" +
22   - "?1,?2,?3,?4,str_to_date(?5,'%Y-%m-%d'),?6,?7,?8,?9,str_to_date(?10,'%Y-%m-%d %H:%i:%s'),?11)", nativeQuery=true)
23   - void insertData(String gsbm, String gsName, String fgsbm, String fgsName, String rq, String nbbm, String jdl, String jdz, String remarks, String createrDate,String jsy);
  22 + "?1,?2,?3,?4,str_to_date(?5,'%Y-%m-%d'),?6,?7,?8,?9,str_to_date(?10,'%Y-%m-%d %H:%i:%s'))", nativeQuery=true)
  23 + void insertData(String gsbm, String gsName, String fgsbm, String fgsName, String rq, String nbbm, String jdl, String jdz, String remarks, String createrDate);
24 24  
25   - @Query(value="SELECT * FROM bsth_c_jdl where gs_bm = ?1 and fgs_bm = ?2 and rq = ?3 and nbbm like %?4% and jsy like %?5%" ,nativeQuery=true)
26   - List<Jdl> query(String gsbm, String fgsbm, String rq, String nbbm,String jsy);
  25 + @Query(value="SELECT * FROM bsth_c_jdl where gs_bm = ?1 and fgs_bm = ?2 and rq = ?3 and nbbm like %?4% " ,nativeQuery=true)
  26 + List<Jdl> query(String gsbm, String fgsbm, String rq, String nbbm);
27 27  
28 28  
29 29 @Query(value="SELECT * FROM bsth_c_jdl where rq = ?",nativeQuery=true)
30 30 List<Jdl> JdlList( String rq);
31 31  
32   - @Query(value="SELECT jdl FROM bsth_c_jdl where gs_bm = ?1 and fgs_bm = ?2 and rq = ?3 and nbbm = ?4 and jsy = ?5 ",nativeQuery=true)
33   - List<Double> queryBySame(String gsbm, String fgsbm, String rq, String nbbm, String jsy);
  32 + @Query(value="SELECT jdl FROM bsth_c_jdl where gs_bm = ?1 and fgs_bm = ?2 and rq = ?3 and nbbm = ?4 ",nativeQuery=true)
  33 + List<Double> queryBySame(String gsbm, String fgsbm, String rq, String nbbm);
34 34  
35 35  
36 36 @Transactional
37 37 @Modifying
38   - @Query(value="UPDATE bsth_c_jdl set jdl = ?1 where gs_bm = ?2 and fgs_bm = ?3 and rq = ?4 and nbbm = ?5 and jsy = ?6",nativeQuery=true)
39   - void UpdateJdl(String jdl, String gsbm, String fgsbm, String rq, String nbbm, String jsy);
  38 + @Query(value="UPDATE bsth_c_jdl set jdl = ?1 where gs_bm = ?2 and fgs_bm = ?3 and rq = ?4 and nbbm = ?5",nativeQuery=true)
  39 + void UpdateJdl(String jdl, String gsbm, String fgsbm, String rq, String nbbm);
40 40  
41 41 }
... ...
src/main/java/com/bsth/service/impl/BusIntervalServiceImpl.java
... ... @@ -673,9 +673,10 @@ public class BusIntervalServiceImpl implements BusIntervalService {
673 673 if(sfqr == 1){
674 674 where += " and zdsj >= '"+times1+"' and fcsj <= '"+times2+"'";
675 675 }
676   - where += " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'";
  676 +// where += " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'";
  677 + where += " and bc_type != 'ldks'";
677 678  
678   - String sql = "select id, schedule_date_Str, real_exec_date, xl_name, lp_name, bcs, bcsj, jhlc,"
  679 + String sql = "select id, schedule_date_Str, real_exec_date, xl_name, lp_name, bcs, bcsj, jhlc, bc_type,"
679 680 + " fcsj, fcsj_actual, zdsj, zdsj_actual, qdz_name, zdz_name, xl_dir, status, remarks, gs_name, fgs_name, sp_id"
680 681 + " from bsth_c_s_sp_info_real where DATE_FORMAT(schedule_date,'%Y-%m-%d') >= '"+startDate+"'"
681 682 + " and DATE_FORMAT(schedule_date,'%Y-%m-%d') <= '"+endDate+"'"+where+"";
... ... @@ -699,6 +700,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
699 700 schedule.setZdsjActual(rs.getString("zdsj_actual"));
700 701 schedule.setQdzName(rs.getString("qdz_name"));
701 702 schedule.setZdzName(rs.getString("zdz_name"));
  703 + schedule.setBcType(rs.getString("bc_type"));
702 704 schedule.setXlDir(rs.getString("xl_dir"));
703 705 schedule.setStatus(rs.getInt("status"));
704 706 schedule.setRemarks(rs.getString("remarks"));
... ... @@ -832,7 +834,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
832 834 if(model.length() != 0){
833 835 sql = "select sp.id from "
834 836 + "(select id, tt_info, xl_bm, lp, fcsj from bsth_c_s_sp_info where schedule_date >= '"+startDate+"' and schedule_date <= '"+endDate+"'"
835   - + " and tt_info = '" + model + "' and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks') sp"
  837 + + " and tt_info = '" + model + "' and bc_type != 'ldks') sp"
836 838 + " left join bsth_c_s_ttinfo_detail tt on sp.tt_info = tt.ttinfo and sp.xl_bm = tt.xl and sp.lp = tt.lp and sp.fcsj = tt.fcsj";
837 839  
838 840 ttList = jdbcTemplate.query(sql,
... ... @@ -915,6 +917,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
915 917 for(String key : keyMap.keySet()){
916 918 Map<String, Object> tempMap = new HashMap<String, Object>();
917 919 Map<Long, ScheduleRealInfo> sortMap = new HashMap<Long, ScheduleRealInfo>();
  920 + Map<Long, Map<String, Object>> sortMap1 = new HashMap<Long, Map<String, Object>>();
918 921 List<Map<String, Object>> mapList = new ArrayList<Map<String, Object>>();
919 922 List<Long> keyList = new ArrayList<Long>();
920 923 List<Long> keyList2 = new ArrayList<Long>();
... ... @@ -946,30 +949,25 @@ public class BusIntervalServiceImpl implements BusIntervalService {
946 949 for(int i = 1; i < keyList.size(); i++){
947 950 ScheduleRealInfo schedule1 = sortMap.get(keyList.get(i - 1));
948 951 ScheduleRealInfo schedule2 = sortMap.get(keyList.get(i));
949   - if(!tsSet.contains(schedule1.getId())){
950   - if(sfqr == 1 && time1 > schedule1.getFcsjT()){
951   - jhyysj += schedule2.getFcsjT() - time1;
952   - }else if(sfqr == 1 && time2 < schedule2.getFcsjT()){
953   - jhyysj += time2 - schedule1.getFcsjT();
  952 + if(!tsSet.contains(schedule1.getId()) && !schedule1.getBcType().toString().equals("in") && !schedule1.getBcType().toString().equals("out")){
  953 + long fcsj1 = schedule1.getFcsjT();
  954 + long fcsj2 = schedule2.getFcsjT();
  955 + if(tsSet.contains(schedule2.getId()) || schedule2.getBcType().toString().equals("in") || schedule2.getBcType().toString().equals("out")){
  956 + fcsj2 = schedule1.getZdsjT();
  957 + }
  958 + if(sfqr == 1 && time1 > fcsj1){
  959 + jhyysj += fcsj2 - time1;
  960 + }else if(sfqr == 1 && time2 < fcsj2){
  961 + jhyysj += time2 - fcsj1;
954 962 }else{
955   - jhyysj += schedule2.getFcsjT() - schedule1.getFcsjT();
  963 + jhyysj += fcsj2 - fcsj1;
956 964 }
957   - jhyysj1 += schedule2.getFcsjT() - schedule1.getFcsjT();
958   - }
959   - long zdsj2 = schedule2.getZdsjT();
960   - long fcsj2 = schedule2.getFcsjT();
961   - if(fcsj2 > zdsj2)
962   - zdsj2 += 1440l;
963   - if(sfqr == 1 && time1 > fcsj2){
964   - jhyssj += zdsj2 - time1;
965   - }else if(sfqr == 1 && time2 < zdsj2){
966   - jhyssj += time2 - fcsj2;
967   - }else{
968   - jhyssj += zdsj2 - fcsj2;
  965 + if(jhyysj < 0){
  966 + System.out.println(fcsj2 + " - " + fcsj1);
  967 + }
  968 + jhyysj1 += fcsj2 - fcsj1;
969 969 }
970   - jhyssj1 += zdsj2 - fcsj2;
971   - jhlc += schedule2.getJhlc()==null?0:schedule2.getJhlc();
972   - if(i == 1){
  970 + if(i == 1 && schedule1.getBcType().toString().equals("normal")){
973 971 long zdsj1 = schedule1.getZdsjT();
974 972 long fcsj1 = schedule1.getFcsjT();
975 973 if(fcsj1 > zdsj1)
... ... @@ -984,12 +982,27 @@ public class BusIntervalServiceImpl implements BusIntervalService {
984 982 jhyssj1 += zdsj1 - fcsj1;
985 983 jhlc += schedule1.getJhlc()==null?0:schedule1.getJhlc();
986 984 }
  985 + if(schedule2.getBcType().toString().equals("normal")){
  986 + long zdsj2 = schedule2.getZdsjT();
  987 + long fcsj2 = schedule2.getFcsjT();
  988 + if(fcsj2 > zdsj2)
  989 + zdsj2 += 1440l;
  990 + if(sfqr == 1 && time1 > fcsj2){
  991 + jhyssj += zdsj2 - time1;
  992 + }else if(sfqr == 1 && time2 < zdsj2){
  993 + jhyssj += time2 - fcsj2;
  994 + }else{
  995 + jhyssj += zdsj2 - fcsj2;
  996 + }
  997 + jhyssj1 += zdsj2 - fcsj2;
  998 + jhlc += schedule2.getJhlc()==null?0:schedule2.getJhlc();
  999 + }
987 1000 }
988 1001  
989 1002 for(int i = 0; i < keyList.size(); i++){
990 1003 Map<String, Object> m = new HashMap<String, Object>();
991 1004 ScheduleRealInfo schedule = sortMap.get(keyList.get(i));
992   -
  1005 +
993 1006 if(cMap.containsKey(schedule.getId())){
994 1007 List<ChildTaskPlan> cTasks = cMap.get(schedule.getId());
995 1008 for(ChildTaskPlan childTaskPlan : cTasks){
... ... @@ -1012,6 +1025,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1012 1025 temp.put("fcsj", null);
1013 1026 }
1014 1027 }
  1028 + temp.put("bcType", schedule.getBcType());
1015 1029 mapList.add(temp);
1016 1030 }
1017 1031 }else{
... ... @@ -1029,6 +1043,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1029 1043 m.put("zdsj", null);
1030 1044 m.put("fcsj", null);
1031 1045 }
  1046 + m.put("bcType", schedule.getBcType());
1032 1047 mapList.add(m);
1033 1048 }
1034 1049 }
... ... @@ -1036,6 +1051,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1036 1051 for(Map<String, Object> m : mapList){
1037 1052 if(m.get("fcsj") != null && m.get("fcsj").toString().trim().length()!=0){
1038 1053 keyList2.add(Long.valueOf(m.get("fcsj").toString()));
  1054 + sortMap1.put(Long.valueOf(m.get("fcsj").toString()), m);
1039 1055 }
1040 1056 }
1041 1057 Collections.sort(keyList2);
... ... @@ -1043,36 +1059,31 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1043 1059 for(int i = 1; i < keyList2.size(); i++){
1044 1060 long fcsj1 = keyList2.get(i - 1);
1045 1061 long fcsj2 = keyList2.get(i);
1046   - if(fcsj2 - fcsj1 < 90){
1047   - if(sfqr == 1 && time1 > fcsj1){
1048   - sjyysj += fcsj2 - time1;
1049   - }else if(sfqr == 1 && time2 < fcsj2){
1050   - sjyysj += time2 - fcsj1;
1051   - }else{
1052   - sjyysj += fcsj2 - fcsj1;
1053   - }
1054   - sjyysj1 += fcsj2 - fcsj1;
  1062 + Map<String, Object> m1 = sortMap1.get(fcsj1);
  1063 + Map<String, Object> m2 = sortMap1.get(fcsj2);
  1064 + if(m1.get("bcType").toString().equals("in") || m1.get("bcType").toString().equals("out"))
  1065 + continue;
  1066 + if(m2.get("bcType").toString().equals("in") || m2.get("bcType").toString().equals("out")){
  1067 + fcsj2 = Long.valueOf(m1.get("zdsj").toString());
  1068 + } else if(i == keyList.size() - 1){
  1069 + fcsj2 = Long.valueOf(m2.get("zdsj").toString());
  1070 + }
  1071 + if(sfqr == 1 && time1 > fcsj1){
  1072 + sjyysj += fcsj2 - time1;
  1073 + }else if(sfqr == 1 && time2 < fcsj2){
  1074 + sjyysj += time2 - fcsj1;
  1075 + }else{
  1076 + sjyysj += fcsj2 - fcsj1;
1055 1077 }
  1078 + sjyysj1 += fcsj2 - fcsj1;
1056 1079 }
1057 1080  
1058   - for(int i = 1; i < mapList.size(); i++){
1059   - Map<String, Object> m1 = mapList.get(i - 1);
1060   - Map<String, Object> m2 = mapList.get(i);
1061   -// if(m1.get("fcsj") != null && m2.get("fcsj") != null){
1062   -// long fcsj2 = Long.valueOf(m2.get("fcsj").toString());
1063   -// long fcsj1 = Long.valueOf(m1.get("fcsj").toString());
1064   -// if(sfqr == 1 && time1 > fcsj1){
1065   -// sjyysj += fcsj2 - time1;
1066   -// }else if(sfqr == 1 && time2 < fcsj2){
1067   -// sjyysj += time2 - fcsj1;
1068   -// }else{
1069   -// sjyysj += fcsj2 - fcsj1;
1070   -// }
1071   -// sjyysj1 += fcsj2 - fcsj1;
1072   -// }
1073   - if(m2.get("fcsj") != null && m2.get("zdsj") != null){
1074   - long zdsj = Long.valueOf(m2.get("zdsj").toString());
1075   - long fcsj = Long.valueOf(m2.get("fcsj").toString());
  1081 + for(int i = 0; i < mapList.size(); i++){
  1082 + Map<String, Object> m = mapList.get(i);
  1083 + if(m.get("fcsj") != null && m.get("zdsj") != null &&
  1084 + !m.get("bcType").toString().equals("in") && !m.get("bcType").toString().equals("out")){
  1085 + long zdsj = Long.valueOf(m.get("zdsj").toString());
  1086 + long fcsj = Long.valueOf(m.get("fcsj").toString());
1076 1087 if(fcsj > zdsj)
1077 1088 zdsj += 1440l;
1078 1089 if(sfqr == 1 && time1 > fcsj){
... ... @@ -1083,22 +1094,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1083 1094 sjyssj += zdsj - fcsj;
1084 1095 }
1085 1096 sjyssj1 += zdsj - fcsj;
1086   - sjlc += Double.valueOf(m2.get("lc").toString());
1087   - }
1088   - if(i == 1 && m1.get("fcsj") != null && m1.get("zdsj") != null){
1089   - long zdsj = Long.valueOf(m1.get("zdsj").toString());
1090   - long fcsj = Long.valueOf(m1.get("fcsj").toString());
1091   - if(fcsj > zdsj)
1092   - zdsj += 1440l;
1093   - if(sfqr == 1 && time1 > fcsj){
1094   - sjyssj += zdsj - time1;
1095   - }else if(sfqr == 1 && time2 < zdsj){
1096   - sjyssj += time2 - fcsj;
1097   - }else{
1098   - sjyssj += zdsj - fcsj;
1099   - }
1100   - sjyssj1 += zdsj - fcsj;
1101   - sjlc += Double.valueOf(m1.get("lc").toString());
  1097 + sjlc += Double.valueOf(m.get("lc").toString());
1102 1098 }
1103 1099 }
1104 1100 tempMap.put("company", companyName);
... ...
src/main/java/com/bsth/service/oil/impl/DlbServiceImpl.java
... ... @@ -9,6 +9,8 @@ import java.text.ParseException;
9 9 import java.text.SimpleDateFormat;
10 10 import java.util.ArrayList;
11 11 import java.util.Calendar;
  12 +import java.util.Collections;
  13 +import java.util.Comparator;
12 14 import java.util.Date;
13 15 import java.util.HashMap;
14 16 import java.util.Iterator;
... ... @@ -428,13 +430,22 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS
428 430 // repository.obtainYl(rq,gsbm,fgsbm,line,nbbm,"nbbm");
429 431 // 当天YLXXB信息
430 432 List<Ylxxb> ylxxList = ylxxbRepository.obtainYlxx(rq, 0,gsbm);
431   - // 前一天所有车辆最后进场班次信息
432   -// List<Ylb> ylListBe = repository.obtainYlbefore(rq, gsbm, fgsbm, line, nbbm);
433   -// List<Dlb> ylListBe =repository.listMaxRqJcsx(rq, gsbm, fgsbm, line, nbbm);
434   -// List<Cyl> clyList = cylRepository.obtainCyl(nbbm,gsbm);
435 433 // 从排班表中计算出行驶的总里程
436 434 List<Map<String, Object>> listpb =new ArrayList<Map<String, Object>>();
437 435 List<Map<String, Object>> listpbs=scheduleRealInfoService.yesterdayDataList(line, rq, gsbm, fgsbm, "", nbbm);
  436 + Map<String, Double> lcMap=new HashMap<String,Double>();
  437 + for (int i = 0; i < listpbs.size(); i++) {
  438 + String cl=listpbs.get(i).get("clZbh").toString();
  439 + Double lc= listpbs.get(i).get("totalKilometers") == null ? 0.0
  440 + : Double.parseDouble(listpbs.get(i).get("totalKilometers").toString());
  441 + if(lcMap.get(cl)==null){
  442 + lcMap.put(cl, lc);
  443 + }else{
  444 + Double lc_=lcMap.get(cl);
  445 + lcMap.remove(cl);
  446 + lcMap.put(cl, Arith.add(lc, lc_));
  447 + }
  448 + }
438 449 List<Jdl> jdlList=jdlRepository.JdlList(rq);
439 450 String sxtj=map2.get("sxtj").toString();
440 451 if(sxtj.equals("0")){
... ... @@ -470,126 +481,134 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS
470 481 }
471 482 }
472 483 }
473   -
  484 + Map<String, Object> newMap_=new HashMap<String,Object>();
474 485 List<Dlb> addList = new ArrayList<Dlb>();
475 486 List<Dlb> updateList = new ArrayList<Dlb>();
476 487 String ins="";
477 488 Map<String, Object> ylMap=new HashMap<String, Object>();
478   - for (int x = 0; x < listpb.size(); x++) {
  489 + List<Map<String, Object>> listpb_=listpb;
  490 + Collections.sort(listpb,new NbbmJcsxMap());
  491 + for (int x = 0; x < listpb_.size(); x++) {
479 492 String type = "add";
480 493 boolean sfdc = false;
481   - Map<String, Object> map = listpb.get(x);
482   - if (carsMap.get(map.get("clZbh").toString()) != null) {
483   - sfdc = carsMap.get(map.get("clZbh").toString());
  494 + Map<String, Object> map_ = listpb_.get(x);
  495 + if (carsMap.get(map_.get("clZbh").toString()) != null) {
  496 + sfdc = carsMap.get(map_.get("clZbh").toString());
484 497 } else {
485 498 sfdc = false;
486 499 }
487 500 if (sfdc) {
488   - // 判断驾驶员驾驶的该车辆是否已经存入了(查出的结果集中日期是相同的,根据驾驶员、内部编号、线路编码判断)
489   - Dlb t = new Dlb();
490   - for (int k = 0; k < dlList.size(); k++) {
491   - Dlb t1 = dlList.get(k);
492   - if (t1.getNbbm().equals(map.get("clZbh").toString())
493   - && t1.getJsy().equals(map.get("jGh").toString())
494   - && t1.getXlbm().equals(map.get("xlBm").toString())) {
495   - t = t1;
496   - type = "update";
  501 + if(newMap_.get(map_.get("clZbh").toString())==null){
  502 + newMap_.put(map_.get("clZbh").toString(), map_.get("clZbh").toString());
  503 + //车辆总里程
  504 + double zlc =lcMap.get(map_.get("clZbh").toString());
  505 + //车辆总加电量
  506 + Double zjzl = 0.0;
  507 + for (int j = 0; j < ylxxList.size(); j++) {
  508 + Ylxxb ylxxb = ylxxList.get(j);
  509 + if (map_.get("clZbh").toString().equals(ylxxb.getNbbm())
  510 + && map_.get("company").toString().equals(ylxxb.getGsdm())) {
  511 + zjzl = Arith.add(zjzl, ylxxb.getJzl());
  512 + }
497 513 }
498   - }
499   -
500   - // 当日的第一个班次,出场油量等于前一天的最后一个班次的进场油量
501   - /* if (map.get("seqNumber").toString().equals("1")) {
502   - boolean fage = true;
503   - for (int i = 0; i < ylListBe.size(); i++) {
504   - Ylb ylb = ylListBe.get(i);
505   - if (map.get("clZbh").toString().equals(ylb.getNbbm())) {
506   - if(ylb.getJzyl()>0){
507   - t.setCzyl(ylb.getJzyl());
508   - fage = false;
509   - break;
510   - }
511   -
  514 + for (int i = 0; i < jdlList.size(); i++) {
  515 + Jdl jdl=jdlList.get(i);
  516 + if(map_.get("clZbh").toString().equals(jdl.getNbbm())
  517 + &&map_.get("company").toString().equals(jdl.getGsBm())
  518 + &&map_.get("bCompany").toString().equals(jdl.getFgsBm())){
  519 + zjzl = Arith.add(zjzl,jdl.getJdl());
512 520 }
513 521 }
514   - if (fage) {
515   - for (int y = 0; y < clyList.size(); y++) {
516   - Cyl cyl = clyList.get(y);
517   - if (map.get("clZbh").toString().equals(cyl.getNbbm())) {
518   - if(cyl!=null){
519   - if(cyl.getCyl()>=0){
520   - t.setCzyl(cyl.getCyl());
521   - fage = false;
522   - break;
523   - }else {
524   - if(cyl.getCxrl()!=null){
525   - if(cyl.getCxrl()>0){
526   - t.setCzyl(cyl.getCxrl());
527   - fage = false;
528   - break;
529   - }
  522 +
  523 + Double nextJzyl = 0.0;
  524 + for (int i = 0; i < listpb.size(); i++) {
  525 + Map<String, Object> map = listpb.get(i);
  526 + if(map_.get("clZbh").toString().equals(map.get("clZbh").toString())){
  527 + // 判断驾驶员驾驶的该车辆是否已经存入了(查出的结果集中日期是相同的,根据驾驶员、内部编号、线路编码判断)
  528 + Dlb t = new Dlb();
  529 + for (int k = 0; k < dlList.size(); k++) {
  530 + Dlb t1 = dlList.get(k);
  531 + if (t1.getNbbm().equals(map.get("clZbh").toString())
  532 + && t1.getJsy().equals(map.get("jGh").toString())
  533 + && t1.getXlbm().equals(map.get("xlBm").toString())) {
  534 + t = t1;
  535 + type = "update";
  536 + }
  537 + }
  538 + Double lc= Double.parseDouble(map.get("totalKilometers").toString());
  539 + if(map.get("seqNumber").toString().equals("1")){
  540 + // 当日的第一个班次,出场油量等于前一天的最后一个班次的进场油量
  541 + Double dh=0.0;
  542 + if(zlc>0){
  543 + dh = Double.parseDouble(df.format(zjzl * (lc / zlc)));
  544 + }
  545 + nextJzyl =Arith.sub(zjzl,dh);
  546 + if(zlc>0){
  547 + long l=Math.round(nextJzyl);
  548 + double ylxs=l*100/100;
  549 + dh=Arith.add(dh, Arith.sub(nextJzyl,ylxs));
  550 + t.setHd(dh);
  551 + t.setCdl(dh);
  552 + nextJzyl=ylxs;
  553 + }else{
  554 + t.setHd(0.0);
  555 + t.setCdl(0.0);
  556 + }
  557 + }else{
  558 + Double dh=0.0;
  559 + if(zlc>0){
  560 + dh = Double.parseDouble(df.format(zjzl * (lc / zlc)));
  561 + }
  562 + nextJzyl =Arith.sub( nextJzyl,dh);
  563 + if(zlc>0){
  564 + long l=0l;
  565 + double ylxs=0.0;
  566 + if(i==listpb.size()-1){
  567 +// ylxs=czyl;
  568 + }else{
  569 + if(listpb.get(i+1).get("clZbh").toString().equals(map.get("clZbh").toString())){
  570 + l=Math.round(nextJzyl);
  571 + ylxs=l*100/100;
530 572 }
  573 +
531 574 }
  575 + dh=Arith.add(dh, Arith.sub(nextJzyl,ylxs));
  576 + t.setHd(dh);
  577 + t.setCdl(dh);
  578 + nextJzyl=ylxs;
  579 + }else{
  580 + t.setHd(0.0);
  581 + t.setCdl(0.0);
532 582 }
533 583 }
  584 + t.setCzcd(100.0);
  585 + t.setJzcd(100.0);
  586 + t.setNbbm(map.get("clZbh").toString());
  587 + t.setJsy(map.get("jGh") == null ? "" : map.get("jGh").toString());
  588 + t.setZlc(map.get("totalKilometers") == null ? 0.0
  589 + : Double.parseDouble(map.get("totalKilometers").toString()));
  590 + t.setXlbm(map.get("xlBm") == null ? "" : map.get("xlBm").toString());
  591 + t.setJcsx(Integer.parseInt(map.get("seqNumber").toString()));
  592 + t.setSsgsdm(map.get("company") == null ? "" : map.get("company").toString());
  593 + t.setFgsdm(map.get("bCompany") == null ? "" : map.get("bCompany").toString());
  594 + t.setJhsj(map.get("fcsj")==null?"":map.get("fcsj").toString());
  595 + t.setRq(sdf.parse(rq));
  596 +
  597 + if(!(t.getSsgsdm().equals("") || t.getFgsdm().equals(""))){
  598 + if(type.equals("add")){
  599 + t.setCreatetime(date);
  600 + addList.add(t);
  601 + }else{
  602 + t.setUpdatetime(date);
  603 + updateList.add(t);
  604 + ins += t.getId().toString()+",";
  605 + }
  606 + }
  607 +// repository.save(t);
  608 + newMap.put("status", ResponseCode.SUCCESS);
534 609 }
535 610 }
536   - if (fage) {
537   - t.setCzyl(0.0);
538   - }
539   - }
540   - */
541   - Double jzl = 0.0;
542   - //一人一车加注量只匹配一次
543   - if(ylMap.get(map.get("clZbh").toString()+"_"+ map.get("jGh").toString())!=null){
544   -
545   - }else{
546   - // 把当天的YLXXB的加注量设置为当天YLB的加注量(根据车号,驾驶员判断)
547   - for (int j = 0; j < ylxxList.size(); j++) {
548   - Ylxxb ylxxb = ylxxList.get(j);
549   - if (map.get("clZbh").toString().equals(ylxxb.getNbbm())
550   - && map.get("jGh").toString().equals(ylxxb.getJsy())) {
551   - jzl +=Arith.add(jzl, ylxxb.getJzl());
552   - }
553   - }
554   - ylMap.put(map.get("clZbh").toString()+"_"+ map.get("jGh").toString(),map.get("xlBm") == null ? "" : map.get("xlBm").toString());
555 611 }
556   - for (int i = 0; i < jdlList.size(); i++) {
557   - Jdl jdl=jdlList.get(i);
558   - if(map.get("clZbh").toString().equals(jdl.getNbbm())
559   - &&map.get("jGh").toString().equals(jdl.getJsy())
560   - &&map.get("bCompany").toString().equals(jdl.getFgsBm())){
561   - jzl+=jdl.getJdl();
562   - }
563   - }
564   -
565   - t.setCdl(jzl);
566   - t.setCzcd(100.0);
567   - t.setJzcd(100.0);
568   - t.setHd(jzl);
569   - t.setNbbm(map.get("clZbh").toString());
570   - t.setJsy(map.get("jGh") == null ? "" : map.get("jGh").toString());
571   - t.setZlc(map.get("totalKilometers") == null ? 0.0
572   - : Double.parseDouble(map.get("totalKilometers").toString()));
573   - t.setXlbm(map.get("xlBm") == null ? "" : map.get("xlBm").toString());
574   - t.setJcsx(Integer.parseInt(map.get("seqNumber").toString()));
575   - t.setSsgsdm(map.get("company") == null ? "" : map.get("company").toString());
576   - t.setFgsdm(map.get("bCompany") == null ? "" : map.get("bCompany").toString());
577   - t.setJhsj(map.get("fcsj")==null?"":map.get("fcsj").toString());
578   - t.setRq(sdf.parse(rq));
579   -
580   - if(!(t.getSsgsdm().equals("") || t.getFgsdm().equals(""))){
581   - if(type.equals("add")){
582   - t.setCreatetime(date);
583   - addList.add(t);
584   - }else{
585   - t.setUpdatetime(date);
586   - updateList.add(t);
587   - ins += t.getId().toString()+",";
588   - }
589   - }
590   -// repository.save(t);
591   - newMap.put("status", ResponseCode.SUCCESS);
592   -
593 612 }
594 613 }
595 614 if(addList.size()>0){
... ... @@ -1014,3 +1033,11 @@ public class DlbServiceImpl extends BaseServiceImpl&lt;Dlb,Integer&gt; implements DlbS
1014 1033 return lists;
1015 1034 }
1016 1035 }
  1036 +
  1037 +class NbbmJcsxMap implements Comparator<Map<String, Object>>{
  1038 + @Override
  1039 + public int compare(Map<String, Object> o1, Map<String, Object> o2) {
  1040 + // TODO Auto-generated method stub
  1041 + return (o1.get("clZbh").toString()+o1.get("seqNumber").toString()).compareTo((o2.get("clZbh").toString()+o1.get("seqNumber").toString()));
  1042 + }
  1043 +}
... ...
src/main/java/com/bsth/service/oil/impl/JdlServiceImpl.java
... ... @@ -63,7 +63,7 @@ public class JdlServiceImpl extends BaseServiceImpl&lt;Jdl, Integer&gt; implements Jdl
63 63 }
64 64 String[] split = (text+";").split(",");
65 65 String str = "";
66   - for(int j = 0; j < split.length && j < 6; j++){
  66 + for(int j = 0; j < split.length && j < 5; j++){
67 67 str += split[j];
68 68 }
69 69 if(str.trim().length() == 0)
... ... @@ -75,22 +75,22 @@ public class JdlServiceImpl extends BaseServiceImpl&lt;Jdl, Integer&gt; implements Jdl
75 75 String[] split = text.split(",");
76 76 String rq = split[0].trim();
77 77 String nbbm = split[1].trim();
78   - String jsy= split[2].trim();
79   - double jdl = Double.valueOf(split[3].trim().length()!=0?split[3]:"0");
80   - String jdz = split[4].trim();
81   - String remarks = split[5].trim();
  78 +// String jsy= split[2].trim();
  79 + double jdl = Double.valueOf(split[2].trim().length()!=0?split[2]:"0");
  80 + String jdz = split[3].trim();
  81 + String remarks = split[4].trim();
82 82 if(rq.trim().length() == 0){
83 83 rq = sdf.format(new Date());
84 84 }
85 85  
86   - List<Double> jdl_ = repository.queryBySame(gsbm, fgsbm, rq, nbbm, jsy);
  86 + List<Double> jdl_ = repository.queryBySame(gsbm, fgsbm, rq, nbbm);
87 87  
88 88 if(jdl_.size() == 0){
89 89 repository.insertData(gsbm, gsName, fgsbm, fgsName, rq, nbbm,
90   - df.format(jdl), jdz, remarks, sd.format(new Date()),jsy);
  90 + df.format(jdl), jdz, remarks, sd.format(new Date()));
91 91 }else{
92 92 // jdl += jdl_.get(0);
93   - repository.UpdateJdl(df.format(jdl), gsbm, fgsbm, rq, nbbm, jsy);
  93 + repository.UpdateJdl(df.format(jdl), gsbm, fgsbm, rq, nbbm);
94 94 }
95 95 }
96 96 wb.close();
... ... @@ -112,9 +112,9 @@ public class JdlServiceImpl extends BaseServiceImpl&lt;Jdl, Integer&gt; implements Jdl
112 112 String fgsbm = map.get("fgsbm").toString();
113 113 String rq = map.get("rq").toString();
114 114 String nbbm = map.get("nbbm").toString();
115   - String jsy =map.get("jsy").toString();
  115 +// String jsy =map.get("jsy").toString();
116 116 Integer page = Integer.valueOf(map.containsKey("page")?map.get("page").toString():"0");
117   - List<Jdl> query = repository.query(gsbm, fgsbm, rq, nbbm,jsy);
  117 + List<Jdl> query = repository.query(gsbm, fgsbm, rq, nbbm);
118 118  
119 119 if(!map.containsKey("type")){
120 120  
... ... @@ -133,7 +133,6 @@ public class JdlServiceImpl extends BaseServiceImpl&lt;Jdl, Integer&gt; implements Jdl
133 133 m.put("nbbm", jdl.getNbbm());
134 134 m.put("jdl", jdl.getJdl());
135 135 m.put("jdz", jdl.getJdz());
136   - m.put("jsy", jdl.getJsy());
137 136 m.put("remarks", jdl.getRemarks());
138 137 list.add(m);
139 138 }
... ...
src/main/java/com/bsth/service/realcontrol/ScheduleRealInfoService.java
... ... @@ -180,4 +180,10 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L
180 180 List<Map<String,Object>> statisticsDaily_mh_2(String line, String date, String xlName, String type);
181 181  
182 182 List<ScheduleRealInfo> realScheduleList_mh_2(String line, String date);
  183 +
  184 + List<Map<String, Object>> mileageReport(String gsdm, String fgsdm,
  185 + String line, String date, String date2);
  186 +
  187 + List<Map<String, Object>> scheduleCorrectionReport(String gsdm, String fgsdm,
  188 + String line, String date, String date2);
183 189 }
... ...
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
... ... @@ -31,6 +31,8 @@ import com.bsth.entity.realcontrol.ChildTaskPlan;
31 31 import com.bsth.entity.realcontrol.LineConfig;
32 32 import com.bsth.entity.realcontrol.ScheduleRealInfo;
33 33 import com.bsth.entity.realcontrol.SvgAttribute;
  34 +import com.bsth.entity.report.MileageReport;
  35 +import com.bsth.entity.report.ScheduleCorrectionReport;
34 36 import com.bsth.entity.schedule.CarConfigInfo;
35 37 import com.bsth.entity.schedule.EmployeeConfigInfo;
36 38 import com.bsth.entity.schedule.GuideboardInfo;
... ... @@ -1837,7 +1839,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1837 1839 map = new HashMap<String, Object>();
1838 1840 map.put("num", i++);
1839 1841 map.put("xlName", xlName);
1840   - map.put("clZbh", BasicData.deviceId2NbbmMap.get(obj[2]));
  1842 + map.put("clZbh", BasicData.deviceId2NbbmMap.get(obj[2])==null?"":BasicData.deviceId2NbbmMap.get(obj[2]));
1841 1843 map.put("company",fgs);
1842 1844 map.put("requestType", "0x" + Integer.toHexString(Integer.parseInt(obj[0] + "")).toUpperCase());
1843 1845 map.put("requestTime", obj[1]);
... ... @@ -2324,10 +2326,11 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2324 2326 map.put("dtbc", 0);
2325 2327 map.put("dtbc_m", 0);
2326 2328 map.put("dtbc_a", 0);
2327   - map.put("djg", 0);
2328   - map.put("djg_m", 0);
2329   - map.put("djg_a", 0);
2330   - map.put("djg_time", 0);
  2329 + Map<String, Object> m=culateService.culateDjg(list_s, line);
  2330 + map.put("djg", m.get("djgcsq"));
  2331 + map.put("djg_m", m.get("djgcsz"));
  2332 + map.put("djg_a", m.get("djgcsw"));
  2333 + map.put("djg_time", m.get("djgsj"));
2331 2334 map.put("jls", Arith.sub(Arith.add(jhlc, ljgl), lbgl));
2332 2335 lMap.add(map);
2333 2336 return lMap;
... ... @@ -4637,6 +4640,195 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
4637 4640 }
4638 4641 return rs;
4639 4642 }
  4643 +
  4644 +
  4645 + @Override
  4646 + public List<Map<String, Object>> mileageReport(String gsdm,
  4647 + String fgsdm, String line, String date, String date2) {
  4648 +
  4649 + String sql = "select * from calc_mileage where 1=1 " ;
  4650 + if (!line.equals(" ")) {
  4651 + sql = sql+" and line_code='"+ line+"' ";
  4652 + }
  4653 + sql = sql+" and DATE_FORMAT(rq,'%Y-%m-%d') between '"+ date+"' and '"+ date2+"'";
  4654 + if (!gsdm.equals(" ")) {
  4655 + sql = sql+" and company_id="+gsdm;
  4656 + }
  4657 + if (!gsdm.equals(" ")) {
  4658 + sql = sql+" and sub_company_id="+fgsdm;
  4659 + }
  4660 + sql = sql+" order by line_code";
  4661 + List<MileageReport> list = jdbcTemplate.query(sql,
  4662 + new RowMapper<MileageReport>() {
  4663 + @Override
  4664 + public MileageReport mapRow(ResultSet rs, int rowNum) throws SQLException {
  4665 + MileageReport mr = new MileageReport();
  4666 + mr.setCompanyName(rs.getString("company_name"));
  4667 + mr.setSubCompanyName(rs.getString("sub_company_name"));
  4668 + mr.setLineName(rs.getString("line_name"));
  4669 + mr.setSjyygl(rs.getDouble("sjyygl"));
  4670 + mr.setSjksgl(rs.getDouble("sjksgl"));
  4671 + mr.setZgl(rs.getDouble("zyygl"));
  4672 + mr.setZddfgl(rs.getDouble("sddfgl"));
  4673 + mr.setSddfgl(rs.getDouble("zddfgl"));
  4674 + mr.setWqwxhgl(rs.getDouble("wqwxhgl"));
  4675 + mr.setBfwxhgl(rs.getDouble("bfwxhgl"));
  4676 + mr.setPygl(rs.getDouble("pygl"));
  4677 + mr.setLjgl(rs.getDouble("ljgl"));
  4678 + mr.setZrwgl(rs.getDouble("zrwgl"));
  4679 + mr.setOther(rs.getString("other"));
  4680 + return mr;
  4681 + }
  4682 + });
  4683 + List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>();
  4684 + double sjyygl = 0.0;
  4685 + double sjksgl = 0.0;
  4686 + double zgl = 0.0;
  4687 + double sddfgl = 0.0;
  4688 + double zddfgl = 0.0;
  4689 + double wqwxhgl = 0.0;
  4690 + double bfwxhgl = 0.0;
  4691 + double pygl = 0.0;
  4692 + double ljgl = 0.0;
  4693 + double zrwgl = 0.0;
  4694 + for(MileageReport mr:list) {
  4695 + Map<String, Object> resMap = new HashMap<String, Object>();
  4696 + resMap.put("gsName", mr.getCompanyName());
  4697 + resMap.put("fgsName", mr.getSubCompanyName());
  4698 + resMap.put("xlName", mr.getLineName());
  4699 + resMap.put("sjyygl", mr.getSjyygl());
  4700 + resMap.put("sjksgl", mr.getSjksgl());
  4701 + resMap.put("zgl", mr.getZgl());
  4702 + resMap.put("sddfgl", mr.getSddfgl());
  4703 + resMap.put("zddfgl", mr.getZddfgl());
  4704 + resMap.put("wqwxhgl", mr.getWqwxhgl());
  4705 + resMap.put("bfwxhgl", mr.getBfwxhgl());
  4706 + resMap.put("pygl", mr.getPygl());
  4707 + resMap.put("ljgl", mr.getLjgl());
  4708 + resMap.put("zrwgl", mr.getZrwgl());
  4709 + resMap.put("other", mr.getOther());
  4710 + lMap.add(resMap);
  4711 + sjyygl = Arith.add(sjyygl,mr.getSjyygl());
  4712 + sjksgl = Arith.add(sjksgl,mr.getSjksgl());
  4713 + zgl = Arith.add(zgl,mr.getZgl());
  4714 + sddfgl = Arith.add(sddfgl,mr.getSddfgl());
  4715 + zddfgl = Arith.add(zddfgl,mr.getZddfgl());
  4716 + wqwxhgl = Arith.add(wqwxhgl,mr.getWqwxhgl());
  4717 + bfwxhgl = Arith.add(bfwxhgl,mr.getBfwxhgl());
  4718 + pygl = Arith.add(pygl,mr.getPygl());
  4719 + ljgl = Arith.add(ljgl,mr.getLjgl());
  4720 + zrwgl = Arith.add(zrwgl,mr.getZrwgl());
  4721 + }
  4722 + Map<String, Object> resMap = new HashMap<String, Object>();
  4723 + resMap.put("xlName", "合计");
  4724 + resMap.put("sjyygl", sjyygl);
  4725 + resMap.put("sjksgl", sjksgl);
  4726 + resMap.put("zgl", zgl);
  4727 + resMap.put("sddfgl", sddfgl);
  4728 + resMap.put("zddfgl", zddfgl);
  4729 + resMap.put("wqwxhgl", wqwxhgl);
  4730 + resMap.put("bfwxhgl", bfwxhgl);
  4731 + resMap.put("pygl", pygl);
  4732 + resMap.put("ljgl", ljgl);
  4733 + resMap.put("zrwgl", zrwgl);
  4734 + resMap.put("other", null);
  4735 + lMap.add(resMap);
  4736 + return lMap;
  4737 + }
  4738 +
  4739 + @Override
  4740 + public List<Map<String, Object>> scheduleCorrectionReport(String gsdm,
  4741 + String fgsdm, String line, String date, String date2) {
  4742 +
  4743 + String sql = "select * from calc_schedule where 1=1 " ;
  4744 + if (!line.equals(" ")) {
  4745 + sql = sql+" and line_code='"+ line+"' ";
  4746 + }
  4747 + sql = sql+" and DATE_FORMAT(rq,'%Y-%m-%d') between '"+ date+"' and '"+ date2+"'";
  4748 + if (!gsdm.equals(" ")) {
  4749 + sql = sql+" and company_id="+gsdm;
  4750 + }
  4751 + if (!gsdm.equals(" ")) {
  4752 + sql = sql+" and sub_company_id="+fgsdm;
  4753 + }
  4754 + sql = sql+" order by line_code";
  4755 + List<ScheduleCorrectionReport> list = jdbcTemplate.query(sql,
  4756 + new RowMapper<ScheduleCorrectionReport>() {
  4757 + @Override
  4758 + public ScheduleCorrectionReport mapRow(ResultSet rs, int rowNum) throws SQLException {
  4759 + ScheduleCorrectionReport sReport = new ScheduleCorrectionReport();
  4760 + sReport.setCompanyName(rs.getString("company_name"));
  4761 + sReport.setSubCompanyName(rs.getString("sub_company_name"));
  4762 + sReport.setLineName(rs.getString("line_name"));
  4763 + sReport.setSjyybc(rs.getInt("sjyybc"));
  4764 + sReport.setSjksbc(rs.getInt("sjksbc"));
  4765 + sReport.setZbc(rs.getInt("zyybc"));
  4766 + sReport.setZddfbc(rs.getInt("sddfbc"));
  4767 + sReport.setSddfbc(rs.getInt("zddfbc"));
  4768 + sReport.setWqwxhbc(rs.getInt("wqwxhbc"));
  4769 + sReport.setBfwxhbc(rs.getInt("bfwxhbc"));
  4770 + sReport.setPybc(rs.getInt("pybc"));
  4771 + sReport.setLjbc(rs.getInt("ljbc"));
  4772 + sReport.setZrwbc(rs.getInt("zrwbc"));
  4773 + sReport.setOther(rs.getString("other"));
  4774 + return sReport;
  4775 + }
  4776 + });
  4777 + List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>();
  4778 + int sjyybc = 0;
  4779 + int sjksbc = 0;
  4780 + int zbc = 0;
  4781 + int sddfbc = 0;
  4782 + int zddfbc = 0;
  4783 + int wqwxhbc = 0;
  4784 + int bfwxhbc = 0;
  4785 + int pybc = 0;
  4786 + int ljbc = 0;
  4787 + int zrwbc = 0;
  4788 + for(ScheduleCorrectionReport sReport:list) {
  4789 + Map<String, Object> resMap = new HashMap<String, Object>();
  4790 + resMap.put("gsName", sReport.getCompanyName());
  4791 + resMap.put("fgsName", sReport.getSubCompanyName());
  4792 + resMap.put("xlName", sReport.getLineName());
  4793 + resMap.put("sjyybc", sReport.getSjyybc());
  4794 + resMap.put("sjksbc", sReport.getSjksbc());
  4795 + resMap.put("zbc", sReport.getZbc());
  4796 + resMap.put("sddfbc", sReport.getSddfbc());
  4797 + resMap.put("zddfbc", sReport.getZddfbc());
  4798 + resMap.put("wqwxhbc", sReport.getWqwxhbc());
  4799 + resMap.put("bfwxhbc", sReport.getBfwxhbc());
  4800 + resMap.put("pybc", sReport.getPybc());
  4801 + resMap.put("ljbc", sReport.getLjbc());
  4802 + resMap.put("zrwbc", sReport.getZrwbc());
  4803 + resMap.put("other", sReport.getOther());
  4804 + lMap.add(resMap);
  4805 + sjyybc = sjyybc + sReport.getSjyybc();
  4806 + sjksbc = sjksbc + sReport.getSjksbc();
  4807 + zbc = zbc + sReport.getZbc();
  4808 + sddfbc = sddfbc + sReport.getSddfbc();
  4809 + zddfbc = zddfbc + sReport.getZddfbc();
  4810 + wqwxhbc = wqwxhbc + sReport.getWqwxhbc();
  4811 + bfwxhbc = bfwxhbc + sReport.getBfwxhbc();
  4812 + pybc = pybc + sReport.getPybc();
  4813 + ljbc = ljbc + sReport.getLjbc();
  4814 + zrwbc = zrwbc + sReport.getZrwbc();
  4815 + }
  4816 + Map<String, Object> resMap = new HashMap<String, Object>();
  4817 + resMap.put("xlName", "合计");
  4818 + resMap.put("sjyybc", sjyybc);
  4819 + resMap.put("sjksbc", sjksbc);
  4820 + resMap.put("zbc", zbc);
  4821 + resMap.put("sddfbc", sddfbc);
  4822 + resMap.put("zddfbc", zddfbc);
  4823 + resMap.put("wqwxhbc", wqwxhbc);
  4824 + resMap.put("bfwxhbc", bfwxhbc);
  4825 + resMap.put("pybc", pybc);
  4826 + resMap.put("ljbc", ljbc);
  4827 + resMap.put("zrwbc", zrwbc);
  4828 + resMap.put("other", null);
  4829 + lMap.add(resMap);
  4830 + return lMap;
  4831 + }
4640 4832 }
4641 4833  
4642 4834 class AccountMap implements Comparator<Map<String, Object>>{
... ...
src/main/java/com/bsth/service/report/CulateMileageService.java
... ... @@ -30,6 +30,8 @@ public interface CulateMileageService {
30 30  
31 31 int culateFzbc(List<ScheduleRealInfo> lists,String item);
32 32  
  33 + Map<String, Object> culateDjg(List<ScheduleRealInfo> lists,String line);
  34 +
33 35  
34 36  
35 37 //以下计算方法供新报表使用
... ...
src/main/java/com/bsth/service/report/ReportService.java
... ... @@ -17,6 +17,8 @@ public interface ReportService {
17 17 List<ArrivalInfo> queryListClzd(String line,String zd,String zdlx,String fcsj,String ddsj);
18 18 List<StationRoute> queryStrinon(String line,int zd);
19 19 List<Map<String, Object>> queryInOutStrtion(String line,String date,int zd,String lzsj);
  20 +
  21 + List<Map<String, Object>> queryInOutStrtions(String line,String date,int zd,String lzsj);
20 22 List<Map<String, String>> sreachZd(String line,int zdlx);
21 23  
22 24 List<Object[]> historyMessageCount(String line, String date, String code);
... ...
src/main/java/com/bsth/service/report/impl/CulateMileageServiceImpl.java
1 1 package com.bsth.service.report.impl;
2 2  
  3 +import java.sql.ResultSet;
  4 +import java.sql.SQLException;
  5 +import java.text.DecimalFormat;
  6 +import java.text.ParseException;
  7 +import java.text.SimpleDateFormat;
3 8 import java.util.ArrayList;
4 9 import java.util.Collections;
5 10 import java.util.HashMap;
... ... @@ -9,18 +14,26 @@ import java.util.Map;
9 14 import java.util.Set;
10 15  
11 16 import org.apache.commons.lang.StringUtils;
  17 +import org.springframework.beans.factory.annotation.Autowired;
  18 +import org.springframework.jdbc.core.JdbcTemplate;
  19 +import org.springframework.jdbc.core.RowMapper;
12 20 import org.springframework.stereotype.Service;
13 21  
  22 +import com.bsth.data.BasicData;
14 23 import com.bsth.entity.realcontrol.ChildTaskPlan;
15 24 import com.bsth.entity.realcontrol.ScheduleRealInfo;
  25 +import com.bsth.entity.sys.Interval;
16 26 import com.bsth.service.report.CulateMileageService;
17 27 import com.bsth.util.Arith;
  28 +import com.bsth.util.ComparableChild;
18 29 import com.bsth.util.ComparableJob;
  30 +import com.bsth.util.ReportUtils;
19 31 import com.google.common.util.concurrent.AbstractScheduledService.Scheduler;
20 32  
21 33 @Service
22 34 public class CulateMileageServiceImpl implements CulateMileageService{
23   -
  35 + @Autowired
  36 + JdbcTemplate jdbcTemplate;
24 37 private static long zgf1 = 6 * 60 + 31,
25 38 zgf2 = 8 * 60 + 30,
26 39 wgf1 = 16 * 60 + 1,
... ... @@ -943,6 +956,214 @@ public class CulateMileageServiceImpl implements CulateMileageService{
943 956 }
944 957 return kfks;
945 958 }
  959 +
  960 + @Override
  961 + public Map<String, Object> culateDjg(List<ScheduleRealInfo> lists, String line) {
  962 + // TODO Auto-generated method stub
  963 +
  964 +
  965 + // TODO Auto-generated method stub
  966 + List<ScheduleRealInfo> list=lists;
  967 + Map<String, Object> m=new HashMap<String,Object>();
  968 + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");
  969 +// Collections.sort(listInfo,new ComparableAcuals());
  970 + //查询所有线路
  971 + String xlSql="select line_code,spac_grade from bsth_c_line"
  972 + + " where line_code ='"+line+"'";
  973 +
  974 + List<Map<String, Object>> xlList=jdbcTemplate.query(xlSql, new RowMapper<Map<String, Object>>() {
  975 + @Override
  976 + public Map<String, Object> mapRow(ResultSet arg0, int arg1) throws SQLException {
  977 + Map<String, Object> map=new HashMap<String,Object>();
  978 + map.put("line",arg0.getString("line_code"));
  979 + map.put("grade", arg0.getString("spac_grade"));
  980 + return map;
  981 + }
  982 + });
  983 + //查询大间隔时间
  984 + String djgSql="select * from bsth_c_interval";
  985 + List<Interval> djgList=jdbcTemplate.query(djgSql, new RowMapper<Interval>() {
  986 + @Override
  987 + public Interval mapRow(ResultSet arg0, int arg1) throws SQLException {
  988 + Interval m=new Interval();
  989 + m.setLevel(arg0.getString("level"));
  990 + m.setPeak(arg0.getInt("peak"));
  991 + m.setTrough(arg0.getInt("trough"));
  992 + return m;
  993 + }
  994 + });
  995 +
  996 + for (int i = 0; i < xlList.size(); i++) {
  997 + String lineCode=xlList.get(i).get("line").toString();
  998 + String grade =xlList.get(i).get("grade")==null?"1":xlList.get(i).get("grade").toString();
  999 + int peak=0;
  1000 + int trough=0;
  1001 + for (int j = 0; j < djgList.size(); j++) {
  1002 + Interval il=djgList.get(j);
  1003 + if(il.getLevel().equals(grade)){
  1004 + peak=il.getPeak();
  1005 + trough=il.getTrough();
  1006 + continue;
  1007 + }
  1008 + }
  1009 + List<ScheduleRealInfo> listInfo=new ArrayList<ScheduleRealInfo>();
  1010 + for (int j = 0; j < list.size(); j++) {
  1011 + ScheduleRealInfo sinfo=list.get(j);
  1012 + try {
  1013 + if(sinfo.getXlBm().equals(lineCode)){
  1014 + ScheduleRealInfo s=checkBc(sinfo);
  1015 + String fcsj=s.getFcsjActual()==null?"":s.getFcsjActual();
  1016 + if(!fcsj.equals("")){
  1017 + Long fcsjAcual = sdf.parse(s.getRealExecDate() + " " + s.getFcsjActual()).getTime();
  1018 + s.setFcsjActualTime(fcsjAcual);
  1019 + s.setFcsjActual(fcsj);
  1020 + listInfo.add(s);
  1021 + }
  1022 +
  1023 + }
  1024 + } catch (ParseException e) {
  1025 + // TODO Auto-generated catch block
  1026 + e.printStackTrace();
  1027 + }
  1028 + }
  1029 +
  1030 + if(listInfo.size()>0){
  1031 + m=listDjg(peak,trough,listInfo,grade);
  1032 + }else{
  1033 + m.put("djgcsz", "0");
  1034 + m.put("djgcsw", "0");
  1035 + m.put("djgcsq", "0");
  1036 + m.put("djgsj", "0");
  1037 + }
  1038 + }
  1039 + return m;
  1040 +
  1041 + }
  1042 +
  1043 + public ScheduleRealInfo checkBc(ScheduleRealInfo s){
  1044 + //如果班次有子任务 且 子任务中有属于营运的。把该子任务的发车时间设置成班次的发车时间
  1045 + String fcsj=s.getFcsjActual()==null?"":s.getFcsjActual();
  1046 + if(fcsj.equals("")){
  1047 + Set<ChildTaskPlan> childTaskPlans = s.getcTasks();
  1048 + if(!childTaskPlans.isEmpty()){
  1049 + List<ChildTaskPlan> listit=new ArrayList<ChildTaskPlan>(childTaskPlans);
  1050 + Collections.sort(listit, new ComparableChild());
  1051 + for (int i = 0; i < listit.size(); i++) {
  1052 + ChildTaskPlan c=listit.get(i);
  1053 + if(!c.isDestroy()){
  1054 + if(c.getMileageType().equals("service")){
  1055 + s.setFcsjActual(c.getStartDate());
  1056 + break;
  1057 + }
  1058 +
  1059 + }
  1060 + }
  1061 + }
  1062 + }
  1063 + return s;
  1064 + }
946 1065  
  1066 + public Map<String, Object> listDjg(int peak,int trough,List<ScheduleRealInfo> listInfo,String grade){
  1067 + DecimalFormat df = new DecimalFormat("#0.00");
  1068 + Collections.sort(listInfo,new ComparableAcuals());
  1069 + List<ScheduleRealInfo> listInfo0=new ArrayList<ScheduleRealInfo>();
  1070 + List<ScheduleRealInfo> listInfo1=new ArrayList<ScheduleRealInfo>();
  1071 + for (int i = 0; i < listInfo.size(); i++) {
  1072 + ScheduleRealInfo s=listInfo.get(i);
  1073 + if(s.getXlDir().equals("0")){
  1074 + listInfo0.add(s);
  1075 + }else{
  1076 + listInfo0.add(s);
  1077 + }
  1078 +
  1079 + }
  1080 + Map<String, Object> map=new HashMap<String,Object>();
  1081 + int djgcsz=0;
  1082 + int djgcsw=0;
  1083 + int djgcsq=0;
  1084 + long djcsj=0l;
  1085 + for (int i = 0; i < listInfo0.size(); i++) {
  1086 + ScheduleRealInfo s=listInfo.get(i);
  1087 + Long fcsjTime=s.getFcsjActualTime();
  1088 + String time=s.getFcsjActual();
  1089 + String[] fcsjStr = time.split(":");
  1090 + long fcsj= Long.parseLong(fcsjStr[0])*60+Long.parseLong(fcsjStr[1]);
  1091 + if(i<listInfo.size()-1){
  1092 + Long djg=0l;
  1093 + Long fscjNext=listInfo.get(i+1).getFcsjActualTime();
  1094 + if((fcsj>=zgf1&&fcsj<=zgf2)){
  1095 + djg = (long) (peak*60*1000);
  1096 + if(fscjNext-fcsjTime>djg){
  1097 + djgcsz ++;
  1098 + djgcsq ++;
  1099 + if(fscjNext-fcsjTime>djcsj){
  1100 + djcsj=(fscjNext-fcsjTime)/1000;
  1101 + }
  1102 + }
  1103 + }else if((fcsj>=wgf1&&fcsj<=wgf2)){
  1104 + djg = (long) (peak*60*1000);
  1105 + if(fscjNext-fcsjTime>djg){
  1106 + djgcsw ++;
  1107 + djgcsq ++;
  1108 + if(fscjNext-fcsjTime>djcsj){
  1109 + djcsj=(fscjNext-fcsjTime)/1000;
  1110 + }
  1111 + }
  1112 + }else{
  1113 + djg = (long) (trough*60*1000);
  1114 + if(fscjNext-fcsjTime>djg){
  1115 + djgcsq ++;
  1116 + if(fscjNext-fcsjTime>djcsj){
  1117 + djcsj=(fscjNext-fcsjTime)/1000;
  1118 + }
  1119 + }
  1120 + }
  1121 + }
  1122 + }
  1123 + for (int i = 0; i < listInfo1.size(); i++) {
  1124 + ScheduleRealInfo s=listInfo.get(i);
  1125 + Long fcsjTime=s.getFcsjActualTime();
  1126 + String time=s.getFcsjActual();
  1127 + String[] fcsjStr = time.split(":");
  1128 + long fcsj= Long.parseLong(fcsjStr[0])*60+Long.parseLong(fcsjStr[1]);
  1129 + if(i<listInfo.size()-1){
  1130 + Long djg=0l;
  1131 + Long fscjNext=listInfo.get(i+1).getFcsjActualTime();
  1132 + if(fcsj>=zgf1&&fcsj<=zgf2){
  1133 + djg = (long) (peak*60*1000);
  1134 + if(fscjNext-fcsjTime>djg){
  1135 + djgcsz ++;
  1136 + djgcsq ++;
  1137 + if(fscjNext-fcsjTime>djcsj){
  1138 + djcsj=(fscjNext-fcsjTime)/1000;
  1139 + }
  1140 + }
  1141 + }else if(fcsj>=wgf1&&fcsj<=wgf2){
  1142 + djg = (long) (peak*60*1000);
  1143 + if(fscjNext-fcsjTime>djg){
  1144 + djgcsw ++;
  1145 + djgcsq ++;
  1146 + if(fscjNext-fcsjTime>djcsj){
  1147 + djcsj=(fscjNext-fcsjTime)/1000;
  1148 + }
  1149 + }
  1150 + }else{
  1151 + djg = (long) (trough*60*1000);
  1152 + if(fscjNext-fcsjTime>djg){
  1153 + djgcsq ++;
  1154 + if(fscjNext-fcsjTime>djcsj){
  1155 + djcsj=(fscjNext-fcsjTime)/1000;
  1156 + }
  1157 + }
  1158 + }
  1159 + }
  1160 + }
  1161 +
  1162 + map.put("djgcsz", djgcsz);
  1163 + map.put("djgcsw", djgcsw);
  1164 + map.put("djgcsq", djgcsq);
  1165 + map.put("djgsj", djcsj);
  1166 + return map;
  1167 + }
947 1168  
948 1169 }
... ...
src/main/java/com/bsth/service/report/impl/ReportServiceImpl.java
... ... @@ -598,7 +598,7 @@ public class ReportServiceImpl implements ReportService{
598 598  
599 599 String sqlCl="SELECT cl_zbh,qdz_name,bc_type,fcsj,bcsj FROM"
600 600 + " bsth_c_s_sp_info WHERE tt_info = '"+ttinfo+"' "
601   - + " AND bc_type = 'normal' order by qdz_name";
  601 + + " AND (bc_type = 'normal' or bc_type='region') order by qdz_name";
602 602  
603 603 List<Map<String, Object>> listj= jdbcTemplate.query(sqlCl,
604 604 new RowMapper<Map<String, Object>>(){
... ... @@ -873,7 +873,7 @@ public class ReportServiceImpl implements ReportService{
873 873 + " bsth_c_s_ttinfo_detail where ttinfo ='"+ttinfo+"' and "
874 874 + " fcsj > '"+minfcsj+"' and bc_type!='ldks' "
875 875 + " and bc_type !='region') "
876   - + " order by xl_dir, xh, lp,fcsj";
  876 + + " order by xh, lp,fcsj";
877 877 Map<String, Object> map=new HashMap<String,Object>();
878 878 List<Map<String, Object>> list= jdbcTemplate.query(sqlPc,
879 879 new RowMapper<Map<String, Object>>(){
... ... @@ -915,6 +915,8 @@ public class ReportServiceImpl implements ReportService{
915 915 int temp = 48*60+1, zcj = 0;
916 916 boolean ists = true;
917 917 String lpname="";
  918 + int dir =-1;
  919 + int fcsjT_= 0;
918 920 for (int i = 0; i < list.size(); i++) {
919 921 Map<String, Object> m=list.get(i);
920 922 int xlDir = Integer.valueOf(m.get("dir").toString());
... ... @@ -927,6 +929,10 @@ public class ReportServiceImpl implements ReportService{
927 929 if(temp>fcsjT){
928 930 temp=fcsjT+bcsj;
929 931 }
  932 + dir =xlDir;
  933 + if(bcType.equals("in") || bcType.equals("out")){
  934 + ists=false;
  935 + }
930 936 }else{
931 937 if(temp>fcsjT){
932 938 temp=fcsjT+bcsj;
... ... @@ -934,74 +940,146 @@ public class ReportServiceImpl implements ReportService{
934 940 if(bcType.equals("in") || bcType.equals("out")){
935 941 temp = fcsjT+bcsj;
936 942 lpname=m.get("lp").toString();
  943 + dir =xlDir;
937 944 ists=false;
938 945 }else{
939   -// if(ists){
940   -// temp = fcsjT+bcsj;
941   -// lpname=m.get("lp").toString();
942   -// }else{
943   - if(xlDir==0){
  946 +// if(xlDir==0){
944 947 //上行数据
945 948 if(fcsjT>= minSj && fcsjT <= 6*60+30){
946 949 //早高峰前
947   - yysxZq +=bcsj;
948   - sxcountZqbc ++;
949   - zqFcsj0.add(fcsjT);
  950 + if(xlDir==0){
  951 + yysxZq +=bcsj;
  952 + sxcountZqbc ++;
  953 + zqFcsj0.add(fcsjT);
  954 + }else{
  955 + yyxxZq +=bcsj;
  956 + xxcountZqbc ++;
  957 + zqFcsj1.add(fcsjT);
  958 + }
950 959 if(ists){
951 960 if(lpname.equals(m.get("lp").toString())){
952   - tzsxZq +=fcsjT-temp;
  961 + if(dir==0)
  962 + tzsxZq +=fcsjT-temp;
  963 + else
  964 + tzxxZq +=fcsjT-temp;
953 965 }
954 966 }
955 967 temp = fcsjT+bcsj;
956 968  
957 969 }else if(fcsjT > 6*60+30 && fcsjT <= 8*60+30){
958 970 //早高峰
959   - yysxZgf +=bcsj;
960   - sxcountZgfbc ++;
961   - zgfFcsj0.add(fcsjT);
  971 + if(xlDir==0){
  972 + yysxZgf +=bcsj;
  973 + sxcountZgfbc ++;
  974 + zgfFcsj0.add(fcsjT);
  975 + }else{
  976 + yyxxZgf +=bcsj;
  977 + xxcountZgfbc ++;
  978 + zgfFcsj1.add(fcsjT);
  979 + }
  980 +
962 981 if(ists){
963 982 if(lpname.equals(m.get("lp").toString())){
964   - tzsxZgf +=fcsjT-temp;
  983 + if(dir==0){
  984 + if(fcsjT>= minSj && fcsjT <= 6*60+30)
  985 + tzsxZq +=fcsjT-temp;
  986 + else
  987 + tzsxZgf +=fcsjT-temp;
  988 + }else{
  989 + if(fcsjT_>= minSj && fcsjT_ <= 6*60+30)
  990 + tzxxZq +=fcsjT-temp;
  991 + else
  992 + tzxxZgf +=fcsjT-temp;
  993 + }
965 994 }
966 995 }
967 996 temp =fcsjT+bcsj;
968 997  
969 998 }else if(fcsjT > 8*60+30 && fcsjT <= 16*60){
970 999 //中午
971   - yysxZw +=bcsj;
972   - sxcountZwbc ++;
973   - zwFcsj0.add(fcsjT);
  1000 + if(xlDir==0){
  1001 + yysxZw +=bcsj;
  1002 + sxcountZwbc ++;
  1003 + zwFcsj0.add(fcsjT);
  1004 + }else{
  1005 + yyxxZw +=bcsj;
  1006 + xxcountZwbc ++;
  1007 + zwFcsj1.add(fcsjT);
  1008 + }
974 1009 if(ists){
975 1010 if(lpname.equals(m.get("lp").toString())){
976   - tzsxZw +=fcsjT-temp;
  1011 + if(dir==0){
  1012 + if(fcsjT_ > 6*60+30 && fcsjT_ <= 8*60+30)
  1013 + tzsxZgf +=fcsjT-temp;
  1014 + else
  1015 + tzsxZw +=fcsjT-temp;
  1016 + }else{
  1017 + if(fcsjT_ > 6*60+30 && fcsjT_ <= 8*60+30)
  1018 + tzxxZgf +=fcsjT-temp;
  1019 + else
  1020 + tzxxZw +=fcsjT-temp;
  1021 + }
977 1022 }
978 1023 }
979 1024 temp =fcsjT+bcsj;
980 1025 }else if(fcsjT > 16*60 && fcsjT <= 18*60){
981 1026 //晚高峰
982   - yysxWgf +=bcsj;
983   - sxcountWgfbc ++;
984   - wgfFcsj0.add(fcsjT);
  1027 + if(xlDir==0){
  1028 + yysxWgf +=bcsj;
  1029 + sxcountWgfbc ++;
  1030 + wgfFcsj0.add(fcsjT);
  1031 + }else{
  1032 + yyxxWgf +=bcsj;
  1033 + xxcountWgfbc ++;
  1034 + wgfFcsj1.add(fcsjT);
  1035 + }
  1036 +
985 1037 if(ists){
986 1038 if(lpname.equals(m.get("lp").toString())){
987   - tzsxWgf +=fcsjT-temp;
  1039 + if(dir==0){
  1040 + if(fcsjT_ > 8*60+30 && fcsjT_ <= 16*60)
  1041 + tzsxZw +=fcsjT-temp;
  1042 + else
  1043 + tzsxWgf +=fcsjT-temp;
  1044 + }else{
  1045 + if(fcsjT_ > 8*60+30 && fcsjT_ <= 16*60)
  1046 + tzxxZw +=fcsjT-temp;
  1047 + else
  1048 + tzxxWgf +=fcsjT-temp;
  1049 + }
988 1050 }
989 1051 }
990 1052 temp =fcsjT+bcsj;
991 1053 }else{
992 1054 //晚高峰后
993   - yysxWh +=bcsj;
994   - sxcountWhbc ++;
995   - whFcsj0.add(fcsjT);
  1055 + if(xlDir==0){
  1056 + yysxWh +=bcsj;
  1057 + sxcountWhbc ++;
  1058 + whFcsj0.add(fcsjT);
  1059 + }else{
  1060 + yyxxWh +=bcsj;
  1061 + xxcountWhbc ++;
  1062 + whFcsj1.add(fcsjT);
  1063 + }
996 1064 if(ists){
997 1065 if(lpname.equals(m.get("lp").toString())){
998   - tzsxWh +=fcsjT-temp;
  1066 + if(dir==0){
  1067 + if(fcsjT_ > 16*60 && fcsjT_ <= 18*60)
  1068 + tzsxWgf +=fcsjT-temp;
  1069 + else
  1070 + tzsxWh +=fcsjT-temp;
  1071 + }else{
  1072 + if(fcsjT_ > 16*60 && fcsjT_ <= 18*60)
  1073 + tzxxWgf +=fcsjT-temp;
  1074 + else
  1075 + tzxxWh +=fcsjT-temp;
  1076 + }
999 1077 }
1000 1078 }
1001 1079 temp =fcsjT+bcsj;
1002 1080 }
1003   - lpname=m.get("lp").toString();
1004   - }else{
  1081 +
  1082 + /*}else{
1005 1083 //下行数据
1006 1084 if(fcsjT>= minSj && fcsjT <= 6*60+30){
1007 1085 //早高峰前
... ... @@ -1021,7 +1099,10 @@ public class ReportServiceImpl implements ReportService{
1021 1099 zgfFcsj1.add(fcsjT);
1022 1100 if(ists){
1023 1101 if(lpname.equals(m.get("lp").toString())){
1024   - tzxxZgf +=fcsjT-temp;
  1102 + if(fcsjT_>= minSj && fcsjT_ <= 6*60+30)
  1103 + tzxxZq +=fcsjT-temp;
  1104 + else
  1105 + tzxxZgf +=fcsjT-temp;
1025 1106 }
1026 1107 }
1027 1108 temp =fcsjT+bcsj;
... ... @@ -1032,7 +1113,10 @@ public class ReportServiceImpl implements ReportService{
1032 1113 zwFcsj1.add(fcsjT);
1033 1114 if(ists){
1034 1115 if(lpname.equals(m.get("lp").toString())){
1035   - tzxxZw +=fcsjT-temp;
  1116 + if(fcsjT_ > 6*60+30 && fcsjT_ <= 8*60+30)
  1117 + tzxxZgf +=fcsjT-temp;
  1118 + else
  1119 + tzxxZw +=fcsjT-temp;
1036 1120 }
1037 1121 }
1038 1122 temp =fcsjT+bcsj;
... ... @@ -1043,7 +1127,10 @@ public class ReportServiceImpl implements ReportService{
1043 1127 wgfFcsj1.add(fcsjT);
1044 1128 if(ists){
1045 1129 if(lpname.equals(m.get("lp").toString())){
1046   - tzxxWgf +=fcsjT-temp;
  1130 + if(fcsjT_ > 8*60+30 && fcsjT_ <= 16*60)
  1131 + tzxxZw +=fcsjT-temp;
  1132 + else
  1133 + tzxxWgf +=fcsjT-temp;
1047 1134 }
1048 1135 }
1049 1136 temp =fcsjT+bcsj;
... ... @@ -1054,20 +1141,27 @@ public class ReportServiceImpl implements ReportService{
1054 1141 whFcsj1.add(fcsjT);
1055 1142 if(ists){
1056 1143 if(lpname.equals(m.get("lp").toString())){
1057   - tzxxWh +=fcsjT-temp;
  1144 + if(fcsjT_ > 16*60 && fcsjT_ <= 18*60)
  1145 + tzxxWgf +=fcsjT-temp;
  1146 + else
  1147 + tzxxWh +=fcsjT-temp;
1058 1148 }
1059 1149 }
1060 1150 temp =fcsjT+bcsj;
1061 1151 }
1062 1152 // }
1063   - }
  1153 + }*/
  1154 + lpname=m.get("lp").toString();
  1155 + fcsjT_=fcsjT;
  1156 + dir =xlDir;
  1157 + if(m.get("ists").toString().trim().equals("1")){
  1158 + ists=false;
  1159 + }else{
  1160 + ists = true;
  1161 + }
1064 1162 }
1065 1163 }
1066   - if(m.get("ists").toString().trim().equals("1")){
1067   - ists=false;
1068   - }else{
1069   - ists = true;
1070   - }
  1164 +
1071 1165 }
1072 1166  
1073 1167 //---------------------------------------早前
... ... @@ -1885,6 +1979,50 @@ public class ReportServiceImpl implements ReportService{
1885 1979 return list;
1886 1980 }
1887 1981  
  1982 + public List<ArrivalInfo> load4(String line, String date, int zd,String minfcsj){
  1983 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  1984 + SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
  1985 + Long date1=0L;
  1986 + Long date2=0L;
  1987 + Calendar cal = Calendar.getInstance();
  1988 + List<ArrivalInfo> list=null;
  1989 + try {
  1990 + Date dates1 = simpleDateFormat.parse(date+" "+minfcsj+":01");
  1991 + String d1=date+" "+minfcsj+":01";
  1992 +// Date dates2=simpleDateFormat.parse(date+" 23:59:59");
  1993 + date1=dates1.getTime();
  1994 +// date2=dates2.getTime();
  1995 + cal.setTime(dates1);
  1996 + int weeks_year1 = cal.get(Calendar.WEEK_OF_YEAR);
  1997 + cal.add(cal.DATE,1);//把日期往后增加一天.整数往后推,负数往前移动
  1998 + int weeks_year2 = cal.get(Calendar.WEEK_OF_YEAR);
  1999 + Date dates2=cal.getTime();
  2000 + String d2=simpleDateFormat.format(dates2);
  2001 + String sql="select *,UNIX_TIMESTAMP(times) as ts from bsth_c_arrival_info where times >= '"+d1 +"'and "
  2002 + + " times <='"+d2+"' and line_id = '"+line+"' and up_down = '"+zd+"'"
  2003 + + " order by device_id,times";
  2004 +
  2005 + list =jdbcTemplate.query(sql, new RowMapper<ArrivalInfo>() {
  2006 + @Override
  2007 + public ArrivalInfo mapRow(ResultSet arg0, int arg1) throws SQLException {
  2008 + ArrivalInfo ai=new ArrivalInfo();
  2009 + ai.setInOut(arg0.getInt("in_out"));
  2010 + ai.setDeviceId(arg0.getString("device_id"));
  2011 + ai.setStopNo(arg0.getString("stop_no"));
  2012 + ai.setDates(arg0.getDate("times"));
  2013 + ai.setTs(arg0.getLong("ts")*1000);
  2014 + return ai;
  2015 + }
  2016 + });
  2017 +
  2018 + } catch (ParseException e1) {
  2019 + // TODO Auto-generated catch block
  2020 + e1.printStackTrace();
  2021 + }
  2022 + return list;
  2023 +
  2024 + }
  2025 +
1888 2026 public List<ArrivalInfo> load3(String line, String date, int zd){
1889 2027 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
1890 2028 SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
... ... @@ -1928,6 +2066,8 @@ public class ReportServiceImpl implements ReportService{
1928 2066 }
1929 2067 return list;
1930 2068 }
  2069 +
  2070 + //根据排班查到离站
1931 2071 @Override
1932 2072 public List<Map<String, Object>> queryInOutStrtion(String line, String date, int zd,String lzsj) {
1933 2073 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
... ... @@ -1997,6 +2137,106 @@ public class ReportServiceImpl implements ReportService{
1997 2137 return inoutList;
1998 2138 }
1999 2139  
  2140 + //根据GPS查到离站
  2141 + @Override
  2142 + public List<Map<String, Object>> queryInOutStrtions(String line, String date, int zd,String lzsj) {
  2143 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  2144 + String sqlMinYysj="select start_opt from bsth_c_line_config where "
  2145 + + " id = ("
  2146 + + "select max(id) from bsth_c_line_config where line ='"+BasicData.lineId2CodeMap.inverse().get(line) +"'"
  2147 + + ")";
  2148 + String minfcsj=jdbcTemplate.queryForObject(sqlMinYysj, String.class);
  2149 + List<ArrivalInfo> arrInfoList=this.load4(line, date, zd,minfcsj);
  2150 +
  2151 + //查询线路所有的站点
  2152 + List<StationRoute> listStation= stationRouteRepository.findByLine(line,zd);
  2153 + List<Map<String, Object>> inoutList=new ArrayList<Map<String,Object>>();
  2154 + //保存的所以的站点信息
  2155 + Map<String, Object> map1=new HashMap<String,Object>();
  2156 + map1.put("bc", "");
  2157 + map1.put("nbbm", "");
  2158 +
  2159 + for (int i = 0; i < listStation.size(); i++) {
  2160 + map1.put(listStation.get(i).getStationCode()+"in"
  2161 + , listStation.get(i).getStationName());
  2162 + map1.put(listStation.get(i).getStationCode()+"out"
  2163 + , (i+1));
  2164 + }
  2165 + inoutList.add(map1);
  2166 +
  2167 + /*for (int j = 0; j < listStation.size(); j++) {
  2168 + map2=new HashMap<String,Object>();
  2169 + StationRoute s=listStation.get(j);
  2170 + List<ArrivalInfo> arrivalList=new ArrayList<ArrivalInfo>();
  2171 + for (int j2 = 0; j2 < arrInfoList.size(); j2++) {
  2172 + ArrivalInfo a=arrivalList.get(j2);
  2173 + if(s.getStationCode().equals(a.getStopNo())){
  2174 + arrivalList.add(a);
  2175 + }
  2176 + }
  2177 + Map<String, String> m=this.strInOut(arrivalList,lzsj);
  2178 +
  2179 + map2.put(s.getStationCode()+"in", m.get("in"));
  2180 + map2.put(s.getStationCode()+"out", m.get("out"));
  2181 + map2.put(s.getStationCode(), m.get("type"));
  2182 + }*/
  2183 + List<String> list_nbbm=new ArrayList<String>();
  2184 + Map<String, Object> m=new HashMap<String,Object>();
  2185 + for (int i = 0; i < arrInfoList.size(); i++) {
  2186 + arrInfoList.get(i).setRoute(-1);
  2187 + for (int j = 0; j < listStation.size(); j++) {
  2188 + if(arrInfoList.get(i).getStopNo().equals(listStation.get(j).getStationCode())){
  2189 + arrInfoList.get(i).setRoute(listStation.get(j).getStationRouteCode());
  2190 +
  2191 + }
  2192 + }
  2193 + if(m.get(arrInfoList.get(i).getDeviceId())==null){
  2194 + m.put(arrInfoList.get(i).getDeviceId(), arrInfoList.get(i).getDeviceId());
  2195 + list_nbbm.add(arrInfoList.get(i).getDeviceId());
  2196 + }
  2197 + }
  2198 +
  2199 + Map<String, Object> map2=new HashMap<String, Object>();
  2200 + for (int i = 0; i < list_nbbm.size(); i++) {
  2201 + String nbbm=list_nbbm.get(i);
  2202 +
  2203 + int zdbm =0;
  2204 + int inout=-1;
  2205 + List<ArrivalInfo> arrivalList=new ArrayList<ArrivalInfo>();
  2206 + for (int j = 0; j < arrInfoList.size(); j++) {
  2207 + ArrivalInfo aif=arrInfoList.get(j);
  2208 +
  2209 + if(aif.getDeviceId().equals(nbbm)){
  2210 + map2.put("nbbm", BasicData.deviceId2NbbmMap.get(nbbm));
  2211 + if(aif.getRoute()>-1){
  2212 + if(((inout==aif.getInOut() && zdbm==aif.getRoute()) || !(zdbm ==aif.getRoute()))){
  2213 + if(aif.getRoute()<=zdbm ){
  2214 + inoutList.add(map2);
  2215 + map2=new HashMap<String, Object>();
  2216 + arrivalList=new ArrayList<ArrivalInfo>();
  2217 + }
  2218 + }
  2219 + arrivalList.add(aif);
  2220 +// if(!(zdbm ==aif.getRoute())){
  2221 + Map<String, String> m_=this.strInOut(arrivalList,lzsj);
  2222 + map2.put(aif.getStopNo()+"in", m_.get("in"));
  2223 + map2.put(aif.getStopNo()+"out", m_.get("out"));
  2224 + map2.put(aif.getStopNo(), m_.get("type"));
  2225 +// arrivalList=new ArrayList<ArrivalInfo>();
  2226 +// }
  2227 + zdbm =aif.getRoute();
  2228 + inout=aif.getInOut();
  2229 +
  2230 + }
  2231 +
  2232 + }
  2233 +
  2234 + }
  2235 + }
  2236 +
  2237 + return inoutList;
  2238 + }
  2239 +
2000 2240 public Map<String, String> strInOut(List<ArrivalInfo> lists,String lzsj){
2001 2241 String inout="";
2002 2242 SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
... ... @@ -2015,6 +2255,9 @@ public class ReportServiceImpl implements ReportService{
2015 2255 t1.setCzsj(sdf.format(new Date(t2.getTs())));
2016 2256 out =t2.getTs();
2017 2257 break;
  2258 + }else{
  2259 + t1.setCzsj("");
  2260 + out =0l;
2018 2261 }
2019 2262 }
2020 2263  
... ... @@ -2721,7 +2964,7 @@ public class ReportServiceImpl implements ReportService{
2721 2964  
2722 2965 for (int i = 0; i < xlList.size(); i++) {
2723 2966 String lineCode=xlList.get(i).get("line").toString();
2724   - String grade =xlList.get(i).get("grade").toString();
  2967 + String grade =xlList.get(i).get("grade")==null?"1":xlList.get(i).get("grade").toString();
2725 2968 int peak=0;
2726 2969 int trough=0;
2727 2970 for (int j = 0; j < djgList.size(); j++) {
... ...
src/main/java/com/bsth/service/schedule/impl/PeopleCarPlanServiceImpl.java
... ... @@ -1233,7 +1233,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1233 1233 String sql = "select a.schedule_date_Str, a.real_exec_date, a.xl_name, a.fcsj, a.fcsj_actual, a.zdsj, a.zdsj_actual, a.qdz_name, a.zdz_name, a.xl_dir, a.status, a.gs_name, a.fgs_name,"
1234 1234 + " b.start_opt from bsth_c_s_sp_info_real a left join (select line, start_opt from bsth_c_line_config order by id desc) b on a.xl_bm = b.line"
1235 1235 + " where DATE_FORMAT(schedule_date,'%Y-%m-%d') = '"+date+"'"
1236   - + " and fcsj_actual is not null and fcsj_actual != '' and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks' and bc_type != 'region'";
  1236 + + " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks' and bc_type != 'region'";
1237 1237 if(line.trim().length() != 0)
1238 1238 sql += " and xl_bm = '"+line+"'";
1239 1239 else if(company.length() != 0)
... ... @@ -1326,14 +1326,18 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1326 1326 for(ScheduleRealInfo s : keyMap.get(xlName)){
1327 1327 if(s.getXlDir().equals("0")){
1328 1328 up1.add(s.getFcsjT());
1329   - up2.add(s.getFcsjActualTime());
1330 1329 up1Map.put(s.getFcsjT(), s);
1331   - up2Map.put(s.getFcsjActualTime(), s);
  1330 + if(s.getFcsjActual() != null){
  1331 + up2.add(s.getFcsjActualTime());
  1332 + up2Map.put(s.getFcsjActualTime(), s);
  1333 + }
1332 1334 } else if(s.getXlDir().equals("1")){
1333 1335 dn1.add(s.getFcsjT());
1334   - dn2.add(s.getFcsjActualTime());
1335 1336 dn1Map.put(s.getFcsjT(), s);
1336   - dn2Map.put(s.getFcsjActualTime(), s);
  1337 + if(s.getFcsjActual() != null){
  1338 + dn2.add(s.getFcsjActualTime());
  1339 + dn2Map.put(s.getFcsjActualTime(), s);
  1340 + }
1337 1341 }
1338 1342 }
1339 1343 if(up1.size() > 0 && up2.size() > 0){
... ... @@ -1455,7 +1459,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1455 1459 String sql = "select a.schedule_date_Str, a.real_exec_date, a.xl_name, a.fcsj, a.fcsj_actual, a.zdsj, a.zdsj_actual, a.qdz_name, a.zdz_name, a.xl_dir, a.status, a.gs_name, a.fgs_name,"
1456 1460 + " b.start_opt from bsth_c_s_sp_info_real a left join (select line, start_opt from bsth_c_line_config order by id desc) b on a.xl_bm = b.line"
1457 1461 + " where DATE_FORMAT(schedule_date,'%Y-%m-%d') >= '"+startDate+"' and DATE_FORMAT(schedule_date,'%Y-%m-%d') <= '"+endDate+"'"
1458   - + " and fcsj_actual is not null and fcsj_actual != '' and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks' and bc_type != 'region'";
  1462 + + " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks' and bc_type != 'region'";
1459 1463 if(line.length() != 0)
1460 1464 sql += " and xl_bm = '"+line+"'";
1461 1465 if(company.length() != 0)
... ... @@ -1565,14 +1569,18 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1565 1569 for(ScheduleRealInfo s : keyMap.get(xlName).get(date)){
1566 1570 if(s.getXlDir().equals("0")){
1567 1571 up1.add(s.getFcsjT());
1568   - up2.add(s.getFcsjActualTime());
1569 1572 up1Map.put(s.getFcsjT(), s);
1570   - up2Map.put(s.getFcsjActualTime(), s);
  1573 + if(s.getFcsjActual() != null){
  1574 + up2.add(s.getFcsjActualTime());
  1575 + up2Map.put(s.getFcsjActualTime(), s);
  1576 + }
1571 1577 } else if(s.getXlDir().equals("1")){
1572 1578 dn1.add(s.getFcsjT());
1573   - dn2.add(s.getFcsjActualTime());
1574 1579 dn1Map.put(s.getFcsjT(), s);
1575   - dn2Map.put(s.getFcsjActualTime(), s);
  1580 + if(s.getFcsjActual() != null){
  1581 + dn2.add(s.getFcsjActualTime());
  1582 + dn2Map.put(s.getFcsjActualTime(), s);
  1583 + }
1576 1584 }
1577 1585 }
1578 1586 if(up1.size() > 0 && up2.size() > 0){
... ... @@ -1687,7 +1695,6 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1687 1695  
1688 1696 return resList;
1689 1697 }
1690   -
1691 1698 /*@Override
1692 1699 public List<Map<String, Object>> commandState(Map<String, Object> map) {
1693 1700 List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>();
... ...
src/main/java/com/bsth/service/schedule/impl/TTInfoDetailServiceImpl.java
... ... @@ -192,7 +192,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
192 192 (!"进场".equals(cell_con.trim()))) {
193 193 Map<String, Object> p1 = new HashMap<>();
194 194 p1.put("line.id_eq", lineid);
195   - p1.put("stationName_eq", cell_con.trim());
  195 + p1.put("stationName_like", cell_con.trim() + "%"); // 使用模糊匹配
196 196 p1.put("stationMark_eq", "B");
197 197 p1.put("destroy_eq", 0); // 未撤销
198 198  
... ...
src/main/resources/datatools/ktrs/carsDataInput.ktr
1   -<?xml version="1.0" encoding="UTF-8"?>
2   -<transformation>
3   - <info>
4   - <name>&#x8f66;&#x8f86;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</name>
5   - <description>&#x8f66;&#x8f86;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description>
6   - <extended_description>&#x8f66;&#x8f86;&#x57fa;&#x7840;&#x4fe1;&#x606f;</extended_description>
7   - <trans_version/>
8   - <trans_type>Normal</trans_type>
9   - <trans_status>0</trans_status>
10   - <directory>&#x2f;</directory>
11   - <parameters>
12   - <parameter>
13   - <name>erroroutputdir</name>
14   - <default_value/>
15   - <description>ktr step&#x914d;&#x7f6e;&#x7684;&#x9519;&#x8bef;&#x8f93;&#x51fa;&#x76ee;&#x5f55;</description>
16   - </parameter>
17   - <parameter>
18   - <name>filepath</name>
19   - <default_value/>
20   - <description>&#x5f85;&#x5904;&#x7406;&#x5bfc;&#x5165;&#x7684;excel&#x6587;&#x4ef6;</description>
21   - </parameter>
22   - </parameters>
23   - <log>
24   -<trans-log-table><connection/>
25   -<schema/>
26   -<table/>
27   -<size_limit_lines/>
28   -<interval/>
29   -<timeout_days/>
30   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table>
31   -<perf-log-table><connection/>
32   -<schema/>
33   -<table/>
34   -<interval/>
35   -<timeout_days/>
36   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table>
37   -<channel-log-table><connection/>
38   -<schema/>
39   -<table/>
40   -<timeout_days/>
41   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table>
42   -<step-log-table><connection/>
43   -<schema/>
44   -<table/>
45   -<timeout_days/>
46   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table>
47   -<metrics-log-table><connection/>
48   -<schema/>
49   -<table/>
50   -<timeout_days/>
51   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table>
52   - </log>
53   - <maxdate>
54   - <connection/>
55   - <table/>
56   - <field/>
57   - <offset>0.0</offset>
58   - <maxdiff>0.0</maxdiff>
59   - </maxdate>
60   - <size_rowset>10000</size_rowset>
61   - <sleep_time_empty>50</sleep_time_empty>
62   - <sleep_time_full>50</sleep_time_full>
63   - <unique_connections>N</unique_connections>
64   - <feedback_shown>Y</feedback_shown>
65   - <feedback_size>50000</feedback_size>
66   - <using_thread_priorities>Y</using_thread_priorities>
67   - <shared_objects_file/>
68   - <capture_step_performance>N</capture_step_performance>
69   - <step_performance_capturing_delay>1000</step_performance_capturing_delay>
70   - <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
71   - <dependencies>
72   - </dependencies>
73   - <partitionschemas>
74   - </partitionschemas>
75   - <slaveservers>
76   - </slaveservers>
77   - <clusterschemas>
78   - </clusterschemas>
79   - <created_user>-</created_user>
80   - <created_date>2016&#x2f;06&#x2f;23 17&#x3a;44&#x3a;46.781</created_date>
81   - <modified_user>-</modified_user>
82   - <modified_date>2016&#x2f;06&#x2f;23 17&#x3a;44&#x3a;46.781</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   - </notepads>
88   - <connection>
89   - <name>192.168.168.1_jwgl_dw</name>
90   - <server>192.168.168.1</server>
91   - <type>ORACLE</type>
92   - <access>Native</access>
93   - <database>orcl</database>
94   - <port>1521</port>
95   - <username>jwgl_dw</username>
96   - <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password>
97   - <servername/>
98   - <data_tablespace/>
99   - <index_tablespace/>
100   - <attributes>
101   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
102   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
103   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
104   - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
105   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
106   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
107   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
108   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
109   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
110   - </attributes>
111   - </connection>
112   - <connection>
113   - <name>bus_control_variable</name>
114   - <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
115   - <type>MYSQL</type>
116   - <access>Native</access>
117   - <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
118   - <port>3306</port>
119   - <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
120   - <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
121   - <servername/>
122   - <data_tablespace/>
123   - <index_tablespace/>
124   - <attributes>
125   - <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
126   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
127   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
128   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
129   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
130   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
131   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
132   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
133   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
134   - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
135   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
136   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
137   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
138   - </attributes>
139   - </connection>
140   - <connection>
141   - <name>bus_control_&#x516c;&#x53f8;_201</name>
142   - <server>localhost</server>
143   - <type>MYSQL</type>
144   - <access>Native</access>
145   - <database>control</database>
146   - <port>3306</port>
147   - <username>root</username>
148   - <password>Encrypted </password>
149   - <servername/>
150   - <data_tablespace/>
151   - <index_tablespace/>
152   - <attributes>
153   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
154   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
155   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
156   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
157   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
158   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
159   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
160   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
161   - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
162   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
163   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
164   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
165   - </attributes>
166   - </connection>
167   - <connection>
168   - <name>bus_control_&#x672c;&#x673a;</name>
169   - <server>localhost</server>
170   - <type>MYSQL</type>
171   - <access>Native</access>
172   - <database>control</database>
173   - <port>3306</port>
174   - <username>root</username>
175   - <password>Encrypted </password>
176   - <servername/>
177   - <data_tablespace/>
178   - <index_tablespace/>
179   - <attributes>
180   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
181   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
182   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
183   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
184   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
185   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
186   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
187   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
188   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
189   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
190   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
191   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
192   - </attributes>
193   - </connection>
194   - <connection>
195   - <name>xlab_mysql_youle</name>
196   - <server>101.231.124.8</server>
197   - <type>MYSQL</type>
198   - <access>Native</access>
199   - <database>xlab_youle</database>
200   - <port>45687</port>
201   - <username>xlab-youle</username>
202   - <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
203   - <servername/>
204   - <data_tablespace/>
205   - <index_tablespace/>
206   - <attributes>
207   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
208   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
209   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
210   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
211   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
212   - <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
213   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
214   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
215   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
216   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
217   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
218   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
219   - </attributes>
220   - </connection>
221   - <connection>
222   - <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
223   - <server>localhost</server>
224   - <type>MYSQL</type>
225   - <access>Native</access>
226   - <database>xlab_youle</database>
227   - <port>3306</port>
228   - <username>root</username>
229   - <password>Encrypted </password>
230   - <servername/>
231   - <data_tablespace/>
232   - <index_tablespace/>
233   - <attributes>
234   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
235   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
236   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
237   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
238   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
239   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
240   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
241   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
242   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
243   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
244   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
245   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
246   - </attributes>
247   - </connection>
248   - <connection>
249   - <name>xlab_youle</name>
250   - <server/>
251   - <type>MYSQL</type>
252   - <access>JNDI</access>
253   - <database>xlab_youle</database>
254   - <port>1521</port>
255   - <username/>
256   - <password>Encrypted </password>
257   - <servername/>
258   - <data_tablespace/>
259   - <index_tablespace/>
260   - <attributes>
261   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
262   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
263   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
264   - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
265   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
266   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
267   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
268   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
269   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
270   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
271   - </attributes>
272   - </connection>
273   - <order>
274   - <hop> <from>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars 2</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa; 2</to><enabled>Y</enabled> </hop>
275   - <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>
276   - <hop> <from>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</from><to>&#x5185;&#x90e8;&#x7f16;&#x7801;&#x4e0d;&#x4e3a;&#x7a7a;</to><enabled>Y</enabled> </hop>
277   - <hop> <from>&#x5185;&#x90e8;&#x7f16;&#x7801;&#x4e0d;&#x4e3a;&#x7a7a;</from><to>&#x6dfb;&#x52a0;&#x67e5;&#x8be2;&#x5e38;&#x91cf;</to><enabled>Y</enabled> </hop>
278   - <hop> <from>&#x6dfb;&#x52a0;&#x67e5;&#x8be2;&#x5e38;&#x91cf;</from><to>&#x516c;&#x53f8;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
279   - <hop> <from>&#x516c;&#x53f8;&#x67e5;&#x8be2;</from><to>&#x516c;&#x53f8;&#x4ee3;&#x7801;&#x4e0d;&#x4e3a;&#x7a7a;</to><enabled>Y</enabled> </hop>
280   - <hop> <from>&#x516c;&#x53f8;&#x4ee3;&#x7801;&#x4e0d;&#x4e3a;&#x7a7a;</from><to>&#x5206;&#x516c;&#x53f8;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
281   - <hop> <from>&#x5206;&#x516c;&#x53f8;&#x67e5;&#x8be2;</from><to>&#x5206;&#x516c;&#x53f8;&#x4ee3;&#x7801;&#x4e0d;&#x4e3a;&#x7a7a;</to><enabled>Y</enabled> </hop>
282   - <hop> <from>&#x5206;&#x516c;&#x53f8;&#x4ee3;&#x7801;&#x4e0d;&#x4e3a;&#x7a7a;</from><to>&#x8f66;&#x8f86;&#x7f16;&#x7801;</to><enabled>Y</enabled> </hop>
283   - <hop> <from>&#x8f66;&#x8f86;&#x7f16;&#x7801;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars 2</to><enabled>Y</enabled> </hop>
284   - </order>
285   - <step>
286   - <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name>
287   - <type>ExcelInput</type>
288   - <description/>
289   - <distribute>Y</distribute>
290   - <custom_distribution/>
291   - <copies>1</copies>
292   - <partitioning>
293   - <method>none</method>
294   - <schema_name/>
295   - </partitioning>
296   - <header>Y</header>
297   - <noempty>Y</noempty>
298   - <stoponempty>N</stoponempty>
299   - <filefield/>
300   - <sheetfield/>
301   - <sheetrownumfield/>
302   - <rownumfield/>
303   - <sheetfield/>
304   - <filefield/>
305   - <limit>0</limit>
306   - <encoding/>
307   - <add_to_result_filenames>Y</add_to_result_filenames>
308   - <accept_filenames>Y</accept_filenames>
309   - <accept_field>filepath_</accept_field>
310   - <accept_stepname>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</accept_stepname>
311   - <file>
312   - <name/>
313   - <filemask/>
314   - <exclude_filemask/>
315   - <file_required>N</file_required>
316   - <include_subfolders>N</include_subfolders>
317   - </file>
318   - <fields>
319   - <field>
320   - <name>&#x8f66;&#x724c;&#x53f7;</name>
321   - <type>String</type>
322   - <length>-1</length>
323   - <precision>-1</precision>
324   - <trim_type>none</trim_type>
325   - <repeat>N</repeat>
326   - <format/>
327   - <currency/>
328   - <decimal/>
329   - <group/>
330   - </field>
331   - <field>
332   - <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
333   - <type>String</type>
334   - <length>-1</length>
335   - <precision>-1</precision>
336   - <trim_type>none</trim_type>
337   - <repeat>N</repeat>
338   - <format/>
339   - <currency/>
340   - <decimal/>
341   - <group/>
342   - </field>
343   - <field>
344   - <name>&#x6240;&#x5c5e;&#x516c;&#x53f8;</name>
345   - <type>String</type>
346   - <length>-1</length>
347   - <precision>-1</precision>
348   - <trim_type>none</trim_type>
349   - <repeat>N</repeat>
350   - <format/>
351   - <currency/>
352   - <decimal/>
353   - <group/>
354   - </field>
355   - <field>
356   - <name>&#x6240;&#x5c5e;&#x5206;&#x516c;&#x53f8;</name>
357   - <type>String</type>
358   - <length>-1</length>
359   - <precision>-1</precision>
360   - <trim_type>none</trim_type>
361   - <repeat>N</repeat>
362   - <format/>
363   - <currency/>
364   - <decimal/>
365   - <group/>
366   - </field>
367   - <field>
368   - <name>&#x8bbe;&#x5907;&#x4f9b;&#x5e94;&#x5382;&#x5546;</name>
369   - <type>String</type>
370   - <length>-1</length>
371   - <precision>-1</precision>
372   - <trim_type>none</trim_type>
373   - <repeat>N</repeat>
374   - <format/>
375   - <currency/>
376   - <decimal/>
377   - <group/>
378   - </field>
379   - <field>
380   - <name>&#x8bbe;&#x5907;&#x7ec8;&#x7aef;&#x53f7;</name>
381   - <type>String</type>
382   - <length>-1</length>
383   - <precision>-1</precision>
384   - <trim_type>none</trim_type>
385   - <repeat>N</repeat>
386   - <format/>
387   - <currency/>
388   - <decimal/>
389   - <group/>
390   - </field>
391   - </fields>
392   - <sheets>
393   - <sheet>
394   - <name>&#x5de5;&#x4f5c;&#x8868;1</name>
395   - <startrow>0</startrow>
396   - <startcol>0</startcol>
397   - </sheet>
398   - </sheets>
399   - <strict_types>N</strict_types>
400   - <error_ignored>N</error_ignored>
401   - <error_line_skipped>N</error_line_skipped>
402   - <bad_line_files_destination_directory/>
403   - <bad_line_files_extension>warning</bad_line_files_extension>
404   - <error_line_files_destination_directory/>
405   - <error_line_files_extension>error</error_line_files_extension>
406   - <line_number_files_destination_directory/>
407   - <line_number_files_extension>line</line_number_files_extension>
408   - <shortFileFieldName/>
409   - <pathFieldName/>
410   - <hiddenFieldName/>
411   - <lastModificationTimeFieldName/>
412   - <uriNameFieldName/>
413   - <rootUriNameFieldName/>
414   - <extensionFieldName/>
415   - <sizeFieldName/>
416   - <spreadsheet_type>JXL</spreadsheet_type>
417   - <cluster_schema/>
418   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
419   - <xloc>218</xloc>
420   - <yloc>59</yloc>
421   - <draw>Y</draw>
422   - </GUI>
423   - </step>
424   -
425   - <step>
426   - <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars 2</name>
427   - <type>InsertUpdate</type>
428   - <description/>
429   - <distribute>Y</distribute>
430   - <custom_distribution/>
431   - <copies>1</copies>
432   - <partitioning>
433   - <method>none</method>
434   - <schema_name/>
435   - </partitioning>
436   - <connection>bus_control_variable</connection>
437   - <commit>500</commit>
438   - <update_bypassed>N</update_bypassed>
439   - <lookup>
440   - <schema/>
441   - <table>bsth_c_cars</table>
442   - <key>
443   - <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
444   - <field>inside_code</field>
445   - <condition>&#x3d;</condition>
446   - <name2/>
447   - </key>
448   - <value>
449   - <name>car_plate</name>
450   - <rename>&#x8f66;&#x724c;&#x53f7;</rename>
451   - <update>Y</update>
452   - </value>
453   - <value>
454   - <name>car_code</name>
455   - <rename>cl_code</rename>
456   - <update>Y</update>
457   - </value>
458   - <value>
459   - <name>inside_code</name>
460   - <rename>&#x5185;&#x90e8;&#x7f16;&#x7801;</rename>
461   - <update>Y</update>
462   - </value>
463   - <value>
464   - <name>company</name>
465   - <rename>&#x6240;&#x5c5e;&#x516c;&#x53f8;</rename>
466   - <update>Y</update>
467   - </value>
468   - <value>
469   - <name>business_code</name>
470   - <rename>gs_code</rename>
471   - <update>Y</update>
472   - </value>
473   - <value>
474   - <name>branche_company</name>
475   - <rename>&#x6240;&#x5c5e;&#x5206;&#x516c;&#x53f8;</rename>
476   - <update>Y</update>
477   - </value>
478   - <value>
479   - <name>branche_company_code</name>
480   - <rename>fgs_code</rename>
481   - <update>Y</update>
482   - </value>
483   - <value>
484   - <name>supplier_name</name>
485   - <rename>&#x8bbe;&#x5907;&#x4f9b;&#x5e94;&#x5382;&#x5546;</rename>
486   - <update>Y</update>
487   - </value>
488   - <value>
489   - <name>equipment_code</name>
490   - <rename>&#x8bbe;&#x5907;&#x7ec8;&#x7aef;&#x53f7;</rename>
491   - <update>Y</update>
492   - </value>
493   - </lookup>
494   - <cluster_schema/>
495   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
496   - <xloc>690</xloc>
497   - <yloc>393</yloc>
498   - <draw>Y</draw>
499   - </GUI>
500   - </step>
501   -
502   - <step>
503   - <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>
504   - <type>GetVariable</type>
505   - <description/>
506   - <distribute>Y</distribute>
507   - <custom_distribution/>
508   - <copies>1</copies>
509   - <partitioning>
510   - <method>none</method>
511   - <schema_name/>
512   - </partitioning>
513   - <fields>
514   - <field>
515   - <name>filepath_</name>
516   - <variable>&#x24;&#x7b;filepath&#x7d;</variable>
517   - <type>String</type>
518   - <format/>
519   - <currency/>
520   - <decimal/>
521   - <group/>
522   - <length>-1</length>
523   - <precision>-1</precision>
524   - <trim_type>none</trim_type>
525   - </field>
526   - <field>
527   - <name>erroroutputdir_</name>
528   - <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
529   - <type>String</type>
530   - <format/>
531   - <currency/>
532   - <decimal/>
533   - <group/>
534   - <length>-1</length>
535   - <precision>-1</precision>
536   - <trim_type>none</trim_type>
537   - </field>
538   - </fields>
539   - <cluster_schema/>
540   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
541   - <xloc>70</xloc>
542   - <yloc>59</yloc>
543   - <draw>Y</draw>
544   - </GUI>
545   - </step>
546   -
547   - <step>
548   - <name>&#x9519;&#x8bef;&#x8f93;&#x51fa; 2</name>
549   - <type>ExcelOutput</type>
550   - <description/>
551   - <distribute>Y</distribute>
552   - <custom_distribution/>
553   - <copies>1</copies>
554   - <partitioning>
555   - <method>none</method>
556   - <schema_name/>
557   - </partitioning>
558   - <header>Y</header>
559   - <footer>N</footer>
560   - <encoding/>
561   - <append>N</append>
562   - <add_to_result_filenames>Y</add_to_result_filenames>
563   - <file>
564   - <name>&#x24;&#x7b;erroroutputdir&#x7d;&#x2f;&#x8f66;&#x8f86;&#x57fa;&#x7840;&#x4fe1;&#x606f;_&#x9519;&#x8bef;</name>
565   - <extention>xls</extention>
566   - <do_not_open_newfile_init>N</do_not_open_newfile_init>
567   - <create_parent_folder>N</create_parent_folder>
568   - <split>N</split>
569   - <add_date>N</add_date>
570   - <add_time>N</add_time>
571   - <SpecifyFormat>N</SpecifyFormat>
572   - <date_time_format/>
573   - <sheetname>Sheet1</sheetname>
574   - <autosizecolums>N</autosizecolums>
575   - <nullisblank>N</nullisblank>
576   - <protect_sheet>N</protect_sheet>
577   - <password>Encrypted </password>
578   - <splitevery>0</splitevery>
579   - <usetempfiles>N</usetempfiles>
580   - <tempdirectory/>
581   - </file>
582   - <template>
583   - <enabled>N</enabled>
584   - <append>N</append>
585   - <filename>template.xls</filename>
586   - </template>
587   - <fields>
588   - <field>
589   - <name>&#x8f66;&#x724c;&#x53f7;</name>
590   - <type>String</type>
591   - <format/>
592   - </field>
593   - <field>
594   - <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
595   - <type>String</type>
596   - <format/>
597   - </field>
598   - <field>
599   - <name>&#x6240;&#x5c5e;&#x516c;&#x53f8;</name>
600   - <type>String</type>
601   - <format/>
602   - </field>
603   - <field>
604   - <name>&#x6240;&#x5c5e;&#x5206;&#x516c;&#x53f8;</name>
605   - <type>String</type>
606   - <format/>
607   - </field>
608   - <field>
609   - <name>&#x8bbe;&#x5907;&#x4f9b;&#x5e94;&#x5382;&#x5546;</name>
610   - <type>String</type>
611   - <format/>
612   - </field>
613   - <field>
614   - <name>&#x8bbe;&#x5907;&#x7ec8;&#x7aef;&#x53f7;</name>
615   - <type>String</type>
616   - <format/>
617   - </field>
618   - <field>
619   - <name>error_count</name>
620   - <type>Integer</type>
621   - <format/>
622   - </field>
623   - <field>
624   - <name>error_desc</name>
625   - <type>String</type>
626   - <format/>
627   - </field>
628   - <field>
629   - <name>error_column1</name>
630   - <type>String</type>
631   - <format/>
632   - </field>
633   - <field>
634   - <name>error_column2</name>
635   - <type>String</type>
636   - <format/>
637   - </field>
638   - </fields>
639   - <custom>
640   - <header_font_name>arial</header_font_name>
641   - <header_font_size>10</header_font_size>
642   - <header_font_bold>N</header_font_bold>
643   - <header_font_italic>N</header_font_italic>
644   - <header_font_underline>no</header_font_underline>
645   - <header_font_orientation>horizontal</header_font_orientation>
646   - <header_font_color>black</header_font_color>
647   - <header_background_color>none</header_background_color>
648   - <header_row_height>255</header_row_height>
649   - <header_alignment>left</header_alignment>
650   - <header_image/>
651   - <row_font_name>arial</row_font_name>
652   - <row_font_size>10</row_font_size>
653   - <row_font_color>black</row_font_color>
654   - <row_background_color>none</row_background_color>
655   - </custom>
656   - <cluster_schema/>
657   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
658   - <xloc>502</xloc>
659   - <yloc>395</yloc>
660   - <draw>Y</draw>
661   - </GUI>
662   - </step>
663   -
664   - <step>
665   - <name>&#x5185;&#x90e8;&#x7f16;&#x7801;&#x4e0d;&#x4e3a;&#x7a7a;</name>
666   - <type>FilterRows</type>
667   - <description/>
668   - <distribute>Y</distribute>
669   - <custom_distribution/>
670   - <copies>1</copies>
671   - <partitioning>
672   - <method>none</method>
673   - <schema_name/>
674   - </partitioning>
675   -<send_true_to/>
676   -<send_false_to/>
677   - <compare>
678   -<condition>
679   - <negated>N</negated>
680   - <conditions>
681   - <condition>
682   - <negated>N</negated>
683   - <leftvalue>&#x5185;&#x90e8;&#x7f16;&#x7801;</leftvalue>
684   - <function>IS NOT NULL</function>
685   - <rightvalue/>
686   - </condition>
687   - </conditions>
688   - </condition>
689   - </compare>
690   - <cluster_schema/>
691   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
692   - <xloc>218</xloc>
693   - <yloc>164</yloc>
694   - <draw>Y</draw>
695   - </GUI>
696   - </step>
697   -
698   - <step>
699   - <name>&#x6dfb;&#x52a0;&#x67e5;&#x8be2;&#x5e38;&#x91cf;</name>
700   - <type>ScriptValueMod</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   - <compatible>N</compatible>
710   - <optimizationLevel>9</optimizationLevel>
711   - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
712   - <jsScript_name>Script 1</jsScript_name>
713   - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var up_code &#x3d; &#x27;88&#x27;&#x3b;</jsScript_script>
714   - </jsScript> </jsScripts> <fields> <field> <name>up_code</name>
715   - <rename>up_code</rename>
716   - <type>String</type>
717   - <length>-1</length>
718   - <precision>-1</precision>
719   - <replace>N</replace>
720   - </field> </fields> <cluster_schema/>
721   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
722   - <xloc>389</xloc>
723   - <yloc>61</yloc>
724   - <draw>Y</draw>
725   - </GUI>
726   - </step>
727   -
728   - <step>
729   - <name>&#x516c;&#x53f8;&#x67e5;&#x8be2;</name>
730   - <type>DBLookup</type>
731   - <description/>
732   - <distribute>Y</distribute>
733   - <custom_distribution/>
734   - <copies>1</copies>
735   - <partitioning>
736   - <method>none</method>
737   - <schema_name/>
738   - </partitioning>
739   - <connection>bus_control_variable</connection>
740   - <cache>N</cache>
741   - <cache_load_all>N</cache_load_all>
742   - <cache_size>0</cache_size>
743   - <lookup>
744   - <schema/>
745   - <table>bsth_c_business</table>
746   - <orderby/>
747   - <fail_on_multiple>N</fail_on_multiple>
748   - <eat_row_on_failure>N</eat_row_on_failure>
749   - <key>
750   - <name>up_code</name>
751   - <field>up_code</field>
752   - <condition>&#x3d;</condition>
753   - <name2/>
754   - </key>
755   - <key>
756   - <name>&#x6240;&#x5c5e;&#x516c;&#x53f8;</name>
757   - <field>business_name</field>
758   - <condition>&#x3d;</condition>
759   - <name2/>
760   - </key>
761   - <value>
762   - <name>business_code</name>
763   - <rename>gs_code</rename>
764   - <default/>
765   - <type>String</type>
766   - </value>
767   - </lookup>
768   - <cluster_schema/>
769   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
770   - <xloc>540</xloc>
771   - <yloc>59</yloc>
772   - <draw>Y</draw>
773   - </GUI>
774   - </step>
775   -
776   - <step>
777   - <name>&#x516c;&#x53f8;&#x4ee3;&#x7801;&#x4e0d;&#x4e3a;&#x7a7a;</name>
778   - <type>FilterRows</type>
779   - <description/>
780   - <distribute>Y</distribute>
781   - <custom_distribution/>
782   - <copies>1</copies>
783   - <partitioning>
784   - <method>none</method>
785   - <schema_name/>
786   - </partitioning>
787   -<send_true_to/>
788   -<send_false_to/>
789   - <compare>
790   -<condition>
791   - <negated>N</negated>
792   - <conditions>
793   - <condition>
794   - <negated>N</negated>
795   - <leftvalue>gs_code</leftvalue>
796   - <function>IS NOT NULL</function>
797   - <rightvalue/>
798   - </condition>
799   - </conditions>
800   - </condition>
801   - </compare>
802   - <cluster_schema/>
803   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
804   - <xloc>542</xloc>
805   - <yloc>164</yloc>
806   - <draw>Y</draw>
807   - </GUI>
808   - </step>
809   -
810   - <step>
811   - <name>&#x5206;&#x516c;&#x53f8;&#x67e5;&#x8be2;</name>
812   - <type>DBLookup</type>
813   - <description/>
814   - <distribute>Y</distribute>
815   - <custom_distribution/>
816   - <copies>1</copies>
817   - <partitioning>
818   - <method>none</method>
819   - <schema_name/>
820   - </partitioning>
821   - <connection>bus_control_variable</connection>
822   - <cache>N</cache>
823   - <cache_load_all>N</cache_load_all>
824   - <cache_size>0</cache_size>
825   - <lookup>
826   - <schema/>
827   - <table>bsth_c_business</table>
828   - <orderby/>
829   - <fail_on_multiple>N</fail_on_multiple>
830   - <eat_row_on_failure>N</eat_row_on_failure>
831   - <key>
832   - <name>gs_code</name>
833   - <field>up_code</field>
834   - <condition>&#x3d;</condition>
835   - <name2/>
836   - </key>
837   - <key>
838   - <name>&#x6240;&#x5c5e;&#x5206;&#x516c;&#x53f8;</name>
839   - <field>business_name</field>
840   - <condition>&#x3d;</condition>
841   - <name2/>
842   - </key>
843   - <value>
844   - <name>business_code</name>
845   - <rename>fgs_code</rename>
846   - <default/>
847   - <type>String</type>
848   - </value>
849   - </lookup>
850   - <cluster_schema/>
851   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
852   - <xloc>683</xloc>
853   - <yloc>59</yloc>
854   - <draw>Y</draw>
855   - </GUI>
856   - </step>
857   -
858   - <step>
859   - <name>&#x5206;&#x516c;&#x53f8;&#x4ee3;&#x7801;&#x4e0d;&#x4e3a;&#x7a7a;</name>
860   - <type>FilterRows</type>
861   - <description/>
862   - <distribute>Y</distribute>
863   - <custom_distribution/>
864   - <copies>1</copies>
865   - <partitioning>
866   - <method>none</method>
867   - <schema_name/>
868   - </partitioning>
869   -<send_true_to/>
870   -<send_false_to/>
871   - <compare>
872   -<condition>
873   - <negated>N</negated>
874   - <conditions>
875   - <condition>
876   - <negated>N</negated>
877   - <leftvalue>fgs_code</leftvalue>
878   - <function>IS NOT NULL</function>
879   - <rightvalue/>
880   - </condition>
881   - </conditions>
882   - </condition>
883   - </compare>
884   - <cluster_schema/>
885   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
886   - <xloc>685</xloc>
887   - <yloc>162</yloc>
888   - <draw>Y</draw>
889   - </GUI>
890   - </step>
891   -
892   - <step>
893   - <name>&#x8f66;&#x8f86;&#x7f16;&#x7801;</name>
894   - <type>ScriptValueMod</type>
895   - <description/>
896   - <distribute>Y</distribute>
897   - <custom_distribution/>
898   - <copies>1</copies>
899   - <partitioning>
900   - <method>none</method>
901   - <schema_name/>
902   - </partitioning>
903   - <compatible>N</compatible>
904   - <optimizationLevel>9</optimizationLevel>
905   - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
906   - <jsScript_name>Script 1</jsScript_name>
907   - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var cl_code &#x3d; gs_code &#x2b; &#x22;0&#x22; &#x2b; &#x5185;&#x90e8;&#x7f16;&#x7801;&#x3b;</jsScript_script>
908   - </jsScript> </jsScripts> <fields> <field> <name>cl_code</name>
909   - <rename>cl_code</rename>
910   - <type>String</type>
911   - <length>-1</length>
912   - <precision>-1</precision>
913   - <replace>N</replace>
914   - </field> </fields> <cluster_schema/>
915   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
916   - <xloc>688</xloc>
917   - <yloc>273</yloc>
918   - <draw>Y</draw>
919   - </GUI>
920   - </step>
921   -
922   - <step_error_handling>
923   - <error>
924   - <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars 2</source_step>
925   - <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa; 2</target_step>
926   - <is_enabled>Y</is_enabled>
927   - <nr_valuename>error_count</nr_valuename>
928   - <descriptions_valuename>error_desc</descriptions_valuename>
929   - <fields_valuename>error_column1</fields_valuename>
930   - <codes_valuename>error_column2</codes_valuename>
931   - <max_errors/>
932   - <max_pct_errors/>
933   - <min_pct_rows/>
934   - </error>
935   - </step_error_handling>
936   - <slave-step-copy-partition-distribution>
937   -</slave-step-copy-partition-distribution>
938   - <slave_transformation>N</slave_transformation>
939   -
940   -</transformation>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>&#x8f66;&#x8f86;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</name>
  5 + <description>&#x8f66;&#x8f86;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description>
  6 + <extended_description>&#x8f66;&#x8f86;&#x57fa;&#x7840;&#x4fe1;&#x606f;</extended_description>
  7 + <trans_version/>
  8 + <trans_type>Normal</trans_type>
  9 + <trans_status>0</trans_status>
  10 + <directory>&#x2f;</directory>
  11 + <parameters>
  12 + <parameter>
  13 + <name>erroroutputdir</name>
  14 + <default_value/>
  15 + <description>ktr step&#x914d;&#x7f6e;&#x7684;&#x9519;&#x8bef;&#x8f93;&#x51fa;&#x76ee;&#x5f55;</description>
  16 + </parameter>
  17 + <parameter>
  18 + <name>filepath</name>
  19 + <default_value/>
  20 + <description>&#x5f85;&#x5904;&#x7406;&#x5bfc;&#x5165;&#x7684;excel&#x6587;&#x4ef6;</description>
  21 + </parameter>
  22 + </parameters>
  23 + <log>
  24 +<trans-log-table><connection/>
  25 +<schema/>
  26 +<table/>
  27 +<size_limit_lines/>
  28 +<interval/>
  29 +<timeout_days/>
  30 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table>
  31 +<perf-log-table><connection/>
  32 +<schema/>
  33 +<table/>
  34 +<interval/>
  35 +<timeout_days/>
  36 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table>
  37 +<channel-log-table><connection/>
  38 +<schema/>
  39 +<table/>
  40 +<timeout_days/>
  41 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table>
  42 +<step-log-table><connection/>
  43 +<schema/>
  44 +<table/>
  45 +<timeout_days/>
  46 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table>
  47 +<metrics-log-table><connection/>
  48 +<schema/>
  49 +<table/>
  50 +<timeout_days/>
  51 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table>
  52 + </log>
  53 + <maxdate>
  54 + <connection/>
  55 + <table/>
  56 + <field/>
  57 + <offset>0.0</offset>
  58 + <maxdiff>0.0</maxdiff>
  59 + </maxdate>
  60 + <size_rowset>10000</size_rowset>
  61 + <sleep_time_empty>50</sleep_time_empty>
  62 + <sleep_time_full>50</sleep_time_full>
  63 + <unique_connections>N</unique_connections>
  64 + <feedback_shown>Y</feedback_shown>
  65 + <feedback_size>50000</feedback_size>
  66 + <using_thread_priorities>Y</using_thread_priorities>
  67 + <shared_objects_file/>
  68 + <capture_step_performance>N</capture_step_performance>
  69 + <step_performance_capturing_delay>1000</step_performance_capturing_delay>
  70 + <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
  71 + <dependencies>
  72 + </dependencies>
  73 + <partitionschemas>
  74 + </partitionschemas>
  75 + <slaveservers>
  76 + </slaveservers>
  77 + <clusterschemas>
  78 + </clusterschemas>
  79 + <created_user>-</created_user>
  80 + <created_date>2016&#x2f;06&#x2f;23 17&#x3a;44&#x3a;46.781</created_date>
  81 + <modified_user>-</modified_user>
  82 + <modified_date>2016&#x2f;06&#x2f;23 17&#x3a;44&#x3a;46.781</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 + </notepads>
  88 + <connection>
  89 + <name>192.168.168.1_jwgl_dw</name>
  90 + <server>192.168.168.1</server>
  91 + <type>ORACLE</type>
  92 + <access>Native</access>
  93 + <database>orcl</database>
  94 + <port>1521</port>
  95 + <username>jwgl_dw</username>
  96 + <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password>
  97 + <servername/>
  98 + <data_tablespace/>
  99 + <index_tablespace/>
  100 + <attributes>
  101 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  102 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  103 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  104 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  105 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  106 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  107 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  108 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  109 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  110 + </attributes>
  111 + </connection>
  112 + <connection>
  113 + <name>bus_control_variable</name>
  114 + <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
  115 + <type>MYSQL</type>
  116 + <access>Native</access>
  117 + <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
  118 + <port>3306</port>
  119 + <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
  120 + <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
  121 + <servername/>
  122 + <data_tablespace/>
  123 + <index_tablespace/>
  124 + <attributes>
  125 + <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
  126 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  127 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  128 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  129 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  130 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  131 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  132 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  133 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  134 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  135 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  136 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  137 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  138 + </attributes>
  139 + </connection>
  140 + <connection>
  141 + <name>bus_control_&#x516c;&#x53f8;_201</name>
  142 + <server>localhost</server>
  143 + <type>MYSQL</type>
  144 + <access>Native</access>
  145 + <database>control</database>
  146 + <port>3306</port>
  147 + <username>root</username>
  148 + <password>Encrypted </password>
  149 + <servername/>
  150 + <data_tablespace/>
  151 + <index_tablespace/>
  152 + <attributes>
  153 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  154 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  155 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  156 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  157 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  158 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  159 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  160 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  161 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  162 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  163 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  164 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  165 + </attributes>
  166 + </connection>
  167 + <connection>
  168 + <name>bus_control_&#x672c;&#x673a;</name>
  169 + <server>localhost</server>
  170 + <type>MYSQL</type>
  171 + <access>Native</access>
  172 + <database>control</database>
  173 + <port>3306</port>
  174 + <username>root</username>
  175 + <password>Encrypted </password>
  176 + <servername/>
  177 + <data_tablespace/>
  178 + <index_tablespace/>
  179 + <attributes>
  180 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  181 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  182 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  183 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  184 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  185 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  186 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  187 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  188 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  189 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  190 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  191 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  192 + </attributes>
  193 + </connection>
  194 + <connection>
  195 + <name>xlab_mysql_youle</name>
  196 + <server>101.231.124.8</server>
  197 + <type>MYSQL</type>
  198 + <access>Native</access>
  199 + <database>xlab_youle</database>
  200 + <port>45687</port>
  201 + <username>xlab-youle</username>
  202 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
  203 + <servername/>
  204 + <data_tablespace/>
  205 + <index_tablespace/>
  206 + <attributes>
  207 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  208 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  209 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  210 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  211 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  212 + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
  213 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  214 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  215 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  216 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  217 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  218 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  219 + </attributes>
  220 + </connection>
  221 + <connection>
  222 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  223 + <server>localhost</server>
  224 + <type>MYSQL</type>
  225 + <access>Native</access>
  226 + <database>xlab_youle</database>
  227 + <port>3306</port>
  228 + <username>root</username>
  229 + <password>Encrypted </password>
  230 + <servername/>
  231 + <data_tablespace/>
  232 + <index_tablespace/>
  233 + <attributes>
  234 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  235 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  236 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  237 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  238 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  239 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  240 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  241 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  242 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  243 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  244 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  245 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  246 + </attributes>
  247 + </connection>
  248 + <connection>
  249 + <name>xlab_youle</name>
  250 + <server/>
  251 + <type>MYSQL</type>
  252 + <access>JNDI</access>
  253 + <database>xlab_youle</database>
  254 + <port>1521</port>
  255 + <username/>
  256 + <password>Encrypted </password>
  257 + <servername/>
  258 + <data_tablespace/>
  259 + <index_tablespace/>
  260 + <attributes>
  261 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  262 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  263 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  264 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  265 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  266 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  267 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  268 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  269 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  270 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  271 + </attributes>
  272 + </connection>
  273 + <order>
  274 + <hop> <from>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars 2</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa; 2</to><enabled>Y</enabled> </hop>
  275 + <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>
  276 + <hop> <from>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</from><to>&#x5185;&#x90e8;&#x7f16;&#x7801;&#x4e0d;&#x4e3a;&#x7a7a;</to><enabled>Y</enabled> </hop>
  277 + <hop> <from>&#x5185;&#x90e8;&#x7f16;&#x7801;&#x4e0d;&#x4e3a;&#x7a7a;</from><to>&#x6dfb;&#x52a0;&#x67e5;&#x8be2;&#x5e38;&#x91cf;</to><enabled>Y</enabled> </hop>
  278 + <hop> <from>&#x6dfb;&#x52a0;&#x67e5;&#x8be2;&#x5e38;&#x91cf;</from><to>&#x516c;&#x53f8;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  279 + <hop> <from>&#x516c;&#x53f8;&#x67e5;&#x8be2;</from><to>&#x516c;&#x53f8;&#x4ee3;&#x7801;&#x4e0d;&#x4e3a;&#x7a7a;</to><enabled>Y</enabled> </hop>
  280 + <hop> <from>&#x516c;&#x53f8;&#x4ee3;&#x7801;&#x4e0d;&#x4e3a;&#x7a7a;</from><to>&#x5206;&#x516c;&#x53f8;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  281 + <hop> <from>&#x5206;&#x516c;&#x53f8;&#x67e5;&#x8be2;</from><to>&#x5206;&#x516c;&#x53f8;&#x4ee3;&#x7801;&#x4e0d;&#x4e3a;&#x7a7a;</to><enabled>Y</enabled> </hop>
  282 + <hop> <from>&#x5206;&#x516c;&#x53f8;&#x4ee3;&#x7801;&#x4e0d;&#x4e3a;&#x7a7a;</from><to>&#x8f66;&#x8f86;&#x7f16;&#x7801;</to><enabled>Y</enabled> </hop>
  283 + <hop> <from>&#x8f66;&#x8f86;&#x7f16;&#x7801;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars 2</to><enabled>Y</enabled> </hop>
  284 + </order>
  285 + <step>
  286 + <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name>
  287 + <type>ExcelInput</type>
  288 + <description/>
  289 + <distribute>Y</distribute>
  290 + <custom_distribution/>
  291 + <copies>1</copies>
  292 + <partitioning>
  293 + <method>none</method>
  294 + <schema_name/>
  295 + </partitioning>
  296 + <header>Y</header>
  297 + <noempty>Y</noempty>
  298 + <stoponempty>N</stoponempty>
  299 + <filefield/>
  300 + <sheetfield/>
  301 + <sheetrownumfield/>
  302 + <rownumfield/>
  303 + <sheetfield/>
  304 + <filefield/>
  305 + <limit>0</limit>
  306 + <encoding/>
  307 + <add_to_result_filenames>Y</add_to_result_filenames>
  308 + <accept_filenames>Y</accept_filenames>
  309 + <accept_field>filepath_</accept_field>
  310 + <accept_stepname>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</accept_stepname>
  311 + <file>
  312 + <name/>
  313 + <filemask/>
  314 + <exclude_filemask/>
  315 + <file_required>N</file_required>
  316 + <include_subfolders>N</include_subfolders>
  317 + </file>
  318 + <fields>
  319 + <field>
  320 + <name>&#x8f66;&#x724c;&#x53f7;</name>
  321 + <type>String</type>
  322 + <length>-1</length>
  323 + <precision>-1</precision>
  324 + <trim_type>none</trim_type>
  325 + <repeat>N</repeat>
  326 + <format/>
  327 + <currency/>
  328 + <decimal/>
  329 + <group/>
  330 + </field>
  331 + <field>
  332 + <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
  333 + <type>String</type>
  334 + <length>-1</length>
  335 + <precision>-1</precision>
  336 + <trim_type>none</trim_type>
  337 + <repeat>N</repeat>
  338 + <format/>
  339 + <currency/>
  340 + <decimal/>
  341 + <group/>
  342 + </field>
  343 + <field>
  344 + <name>&#x6240;&#x5c5e;&#x516c;&#x53f8;</name>
  345 + <type>String</type>
  346 + <length>-1</length>
  347 + <precision>-1</precision>
  348 + <trim_type>none</trim_type>
  349 + <repeat>N</repeat>
  350 + <format/>
  351 + <currency/>
  352 + <decimal/>
  353 + <group/>
  354 + </field>
  355 + <field>
  356 + <name>&#x6240;&#x5c5e;&#x5206;&#x516c;&#x53f8;</name>
  357 + <type>String</type>
  358 + <length>-1</length>
  359 + <precision>-1</precision>
  360 + <trim_type>none</trim_type>
  361 + <repeat>N</repeat>
  362 + <format/>
  363 + <currency/>
  364 + <decimal/>
  365 + <group/>
  366 + </field>
  367 + <field>
  368 + <name>&#x8bbe;&#x5907;&#x4f9b;&#x5e94;&#x5382;&#x5546;</name>
  369 + <type>String</type>
  370 + <length>-1</length>
  371 + <precision>-1</precision>
  372 + <trim_type>none</trim_type>
  373 + <repeat>N</repeat>
  374 + <format/>
  375 + <currency/>
  376 + <decimal/>
  377 + <group/>
  378 + </field>
  379 + <field>
  380 + <name>&#x8bbe;&#x5907;&#x7ec8;&#x7aef;&#x53f7;</name>
  381 + <type>String</type>
  382 + <length>-1</length>
  383 + <precision>-1</precision>
  384 + <trim_type>none</trim_type>
  385 + <repeat>N</repeat>
  386 + <format/>
  387 + <currency/>
  388 + <decimal/>
  389 + <group/>
  390 + </field>
  391 + </fields>
  392 + <sheets>
  393 + <sheet>
  394 + <name>&#x5de5;&#x4f5c;&#x8868;1</name>
  395 + <startrow>0</startrow>
  396 + <startcol>0</startcol>
  397 + </sheet>
  398 + </sheets>
  399 + <strict_types>N</strict_types>
  400 + <error_ignored>N</error_ignored>
  401 + <error_line_skipped>N</error_line_skipped>
  402 + <bad_line_files_destination_directory/>
  403 + <bad_line_files_extension>warning</bad_line_files_extension>
  404 + <error_line_files_destination_directory/>
  405 + <error_line_files_extension>error</error_line_files_extension>
  406 + <line_number_files_destination_directory/>
  407 + <line_number_files_extension>line</line_number_files_extension>
  408 + <shortFileFieldName/>
  409 + <pathFieldName/>
  410 + <hiddenFieldName/>
  411 + <lastModificationTimeFieldName/>
  412 + <uriNameFieldName/>
  413 + <rootUriNameFieldName/>
  414 + <extensionFieldName/>
  415 + <sizeFieldName/>
  416 + <spreadsheet_type>JXL</spreadsheet_type>
  417 + <cluster_schema/>
  418 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  419 + <xloc>218</xloc>
  420 + <yloc>59</yloc>
  421 + <draw>Y</draw>
  422 + </GUI>
  423 + </step>
  424 +
  425 + <step>
  426 + <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars 2</name>
  427 + <type>InsertUpdate</type>
  428 + <description/>
  429 + <distribute>Y</distribute>
  430 + <custom_distribution/>
  431 + <copies>1</copies>
  432 + <partitioning>
  433 + <method>none</method>
  434 + <schema_name/>
  435 + </partitioning>
  436 + <connection>bus_control_variable</connection>
  437 + <commit>500</commit>
  438 + <update_bypassed>N</update_bypassed>
  439 + <lookup>
  440 + <schema/>
  441 + <table>bsth_c_cars</table>
  442 + <key>
  443 + <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
  444 + <field>inside_code</field>
  445 + <condition>&#x3d;</condition>
  446 + <name2/>
  447 + </key>
  448 + <value>
  449 + <name>car_plate</name>
  450 + <rename>&#x8f66;&#x724c;&#x53f7;</rename>
  451 + <update>Y</update>
  452 + </value>
  453 + <value>
  454 + <name>car_code</name>
  455 + <rename>cl_code</rename>
  456 + <update>Y</update>
  457 + </value>
  458 + <value>
  459 + <name>inside_code</name>
  460 + <rename>&#x5185;&#x90e8;&#x7f16;&#x7801;</rename>
  461 + <update>Y</update>
  462 + </value>
  463 + <value>
  464 + <name>company</name>
  465 + <rename>&#x6240;&#x5c5e;&#x516c;&#x53f8;</rename>
  466 + <update>Y</update>
  467 + </value>
  468 + <value>
  469 + <name>business_code</name>
  470 + <rename>gs_code</rename>
  471 + <update>Y</update>
  472 + </value>
  473 + <value>
  474 + <name>branche_company</name>
  475 + <rename>&#x6240;&#x5c5e;&#x5206;&#x516c;&#x53f8;</rename>
  476 + <update>Y</update>
  477 + </value>
  478 + <value>
  479 + <name>branche_company_code</name>
  480 + <rename>fgs_code</rename>
  481 + <update>Y</update>
  482 + </value>
  483 + <value>
  484 + <name>supplier_name</name>
  485 + <rename>&#x8bbe;&#x5907;&#x4f9b;&#x5e94;&#x5382;&#x5546;</rename>
  486 + <update>Y</update>
  487 + </value>
  488 + <value>
  489 + <name>equipment_code</name>
  490 + <rename>&#x8bbe;&#x5907;&#x7ec8;&#x7aef;&#x53f7;</rename>
  491 + <update>Y</update>
  492 + </value>
  493 + </lookup>
  494 + <cluster_schema/>
  495 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  496 + <xloc>690</xloc>
  497 + <yloc>393</yloc>
  498 + <draw>Y</draw>
  499 + </GUI>
  500 + </step>
  501 +
  502 + <step>
  503 + <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>
  504 + <type>GetVariable</type>
  505 + <description/>
  506 + <distribute>Y</distribute>
  507 + <custom_distribution/>
  508 + <copies>1</copies>
  509 + <partitioning>
  510 + <method>none</method>
  511 + <schema_name/>
  512 + </partitioning>
  513 + <fields>
  514 + <field>
  515 + <name>filepath_</name>
  516 + <variable>&#x24;&#x7b;filepath&#x7d;</variable>
  517 + <type>String</type>
  518 + <format/>
  519 + <currency/>
  520 + <decimal/>
  521 + <group/>
  522 + <length>-1</length>
  523 + <precision>-1</precision>
  524 + <trim_type>none</trim_type>
  525 + </field>
  526 + <field>
  527 + <name>erroroutputdir_</name>
  528 + <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
  529 + <type>String</type>
  530 + <format/>
  531 + <currency/>
  532 + <decimal/>
  533 + <group/>
  534 + <length>-1</length>
  535 + <precision>-1</precision>
  536 + <trim_type>none</trim_type>
  537 + </field>
  538 + </fields>
  539 + <cluster_schema/>
  540 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  541 + <xloc>70</xloc>
  542 + <yloc>59</yloc>
  543 + <draw>Y</draw>
  544 + </GUI>
  545 + </step>
  546 +
  547 + <step>
  548 + <name>&#x9519;&#x8bef;&#x8f93;&#x51fa; 2</name>
  549 + <type>ExcelOutput</type>
  550 + <description/>
  551 + <distribute>Y</distribute>
  552 + <custom_distribution/>
  553 + <copies>1</copies>
  554 + <partitioning>
  555 + <method>none</method>
  556 + <schema_name/>
  557 + </partitioning>
  558 + <header>Y</header>
  559 + <footer>N</footer>
  560 + <encoding/>
  561 + <append>N</append>
  562 + <add_to_result_filenames>Y</add_to_result_filenames>
  563 + <file>
  564 + <name>&#x24;&#x7b;erroroutputdir&#x7d;&#x2f;&#x8f66;&#x8f86;&#x57fa;&#x7840;&#x4fe1;&#x606f;_&#x9519;&#x8bef;</name>
  565 + <extention>xls</extention>
  566 + <do_not_open_newfile_init>N</do_not_open_newfile_init>
  567 + <create_parent_folder>N</create_parent_folder>
  568 + <split>N</split>
  569 + <add_date>N</add_date>
  570 + <add_time>N</add_time>
  571 + <SpecifyFormat>N</SpecifyFormat>
  572 + <date_time_format/>
  573 + <sheetname>Sheet1</sheetname>
  574 + <autosizecolums>N</autosizecolums>
  575 + <nullisblank>N</nullisblank>
  576 + <protect_sheet>N</protect_sheet>
  577 + <password>Encrypted </password>
  578 + <splitevery>0</splitevery>
  579 + <usetempfiles>N</usetempfiles>
  580 + <tempdirectory/>
  581 + </file>
  582 + <template>
  583 + <enabled>N</enabled>
  584 + <append>N</append>
  585 + <filename>template.xls</filename>
  586 + </template>
  587 + <fields>
  588 + <field>
  589 + <name>&#x8f66;&#x724c;&#x53f7;</name>
  590 + <type>String</type>
  591 + <format/>
  592 + </field>
  593 + <field>
  594 + <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
  595 + <type>String</type>
  596 + <format/>
  597 + </field>
  598 + <field>
  599 + <name>&#x6240;&#x5c5e;&#x516c;&#x53f8;</name>
  600 + <type>String</type>
  601 + <format/>
  602 + </field>
  603 + <field>
  604 + <name>&#x6240;&#x5c5e;&#x5206;&#x516c;&#x53f8;</name>
  605 + <type>String</type>
  606 + <format/>
  607 + </field>
  608 + <field>
  609 + <name>&#x8bbe;&#x5907;&#x4f9b;&#x5e94;&#x5382;&#x5546;</name>
  610 + <type>String</type>
  611 + <format/>
  612 + </field>
  613 + <field>
  614 + <name>&#x8bbe;&#x5907;&#x7ec8;&#x7aef;&#x53f7;</name>
  615 + <type>String</type>
  616 + <format/>
  617 + </field>
  618 + <field>
  619 + <name>error_count</name>
  620 + <type>Integer</type>
  621 + <format/>
  622 + </field>
  623 + <field>
  624 + <name>error_desc</name>
  625 + <type>String</type>
  626 + <format/>
  627 + </field>
  628 + <field>
  629 + <name>error_column1</name>
  630 + <type>String</type>
  631 + <format/>
  632 + </field>
  633 + <field>
  634 + <name>error_column2</name>
  635 + <type>String</type>
  636 + <format/>
  637 + </field>
  638 + </fields>
  639 + <custom>
  640 + <header_font_name>arial</header_font_name>
  641 + <header_font_size>10</header_font_size>
  642 + <header_font_bold>N</header_font_bold>
  643 + <header_font_italic>N</header_font_italic>
  644 + <header_font_underline>no</header_font_underline>
  645 + <header_font_orientation>horizontal</header_font_orientation>
  646 + <header_font_color>black</header_font_color>
  647 + <header_background_color>none</header_background_color>
  648 + <header_row_height>255</header_row_height>
  649 + <header_alignment>left</header_alignment>
  650 + <header_image/>
  651 + <row_font_name>arial</row_font_name>
  652 + <row_font_size>10</row_font_size>
  653 + <row_font_color>black</row_font_color>
  654 + <row_background_color>none</row_background_color>
  655 + </custom>
  656 + <cluster_schema/>
  657 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  658 + <xloc>502</xloc>
  659 + <yloc>395</yloc>
  660 + <draw>Y</draw>
  661 + </GUI>
  662 + </step>
  663 +
  664 + <step>
  665 + <name>&#x5185;&#x90e8;&#x7f16;&#x7801;&#x4e0d;&#x4e3a;&#x7a7a;</name>
  666 + <type>FilterRows</type>
  667 + <description/>
  668 + <distribute>Y</distribute>
  669 + <custom_distribution/>
  670 + <copies>1</copies>
  671 + <partitioning>
  672 + <method>none</method>
  673 + <schema_name/>
  674 + </partitioning>
  675 +<send_true_to/>
  676 +<send_false_to/>
  677 + <compare>
  678 +<condition>
  679 + <negated>N</negated>
  680 + <conditions>
  681 + <condition>
  682 + <negated>N</negated>
  683 + <leftvalue>&#x5185;&#x90e8;&#x7f16;&#x7801;</leftvalue>
  684 + <function>IS NOT NULL</function>
  685 + <rightvalue/>
  686 + </condition>
  687 + </conditions>
  688 + </condition>
  689 + </compare>
  690 + <cluster_schema/>
  691 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  692 + <xloc>218</xloc>
  693 + <yloc>164</yloc>
  694 + <draw>Y</draw>
  695 + </GUI>
  696 + </step>
  697 +
  698 + <step>
  699 + <name>&#x6dfb;&#x52a0;&#x67e5;&#x8be2;&#x5e38;&#x91cf;</name>
  700 + <type>ScriptValueMod</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 + <compatible>N</compatible>
  710 + <optimizationLevel>9</optimizationLevel>
  711 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  712 + <jsScript_name>Script 1</jsScript_name>
  713 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var up_code &#x3d; &#x27;88&#x27;&#x3b;</jsScript_script>
  714 + </jsScript> </jsScripts> <fields> <field> <name>up_code</name>
  715 + <rename>up_code</rename>
  716 + <type>String</type>
  717 + <length>-1</length>
  718 + <precision>-1</precision>
  719 + <replace>N</replace>
  720 + </field> </fields> <cluster_schema/>
  721 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  722 + <xloc>389</xloc>
  723 + <yloc>61</yloc>
  724 + <draw>Y</draw>
  725 + </GUI>
  726 + </step>
  727 +
  728 + <step>
  729 + <name>&#x516c;&#x53f8;&#x67e5;&#x8be2;</name>
  730 + <type>DBLookup</type>
  731 + <description/>
  732 + <distribute>Y</distribute>
  733 + <custom_distribution/>
  734 + <copies>1</copies>
  735 + <partitioning>
  736 + <method>none</method>
  737 + <schema_name/>
  738 + </partitioning>
  739 + <connection>bus_control_variable</connection>
  740 + <cache>N</cache>
  741 + <cache_load_all>N</cache_load_all>
  742 + <cache_size>0</cache_size>
  743 + <lookup>
  744 + <schema/>
  745 + <table>bsth_c_business</table>
  746 + <orderby/>
  747 + <fail_on_multiple>N</fail_on_multiple>
  748 + <eat_row_on_failure>N</eat_row_on_failure>
  749 + <key>
  750 + <name>up_code</name>
  751 + <field>up_code</field>
  752 + <condition>&#x3d;</condition>
  753 + <name2/>
  754 + </key>
  755 + <key>
  756 + <name>&#x6240;&#x5c5e;&#x516c;&#x53f8;</name>
  757 + <field>business_name</field>
  758 + <condition>&#x3d;</condition>
  759 + <name2/>
  760 + </key>
  761 + <value>
  762 + <name>business_code</name>
  763 + <rename>gs_code</rename>
  764 + <default/>
  765 + <type>String</type>
  766 + </value>
  767 + </lookup>
  768 + <cluster_schema/>
  769 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  770 + <xloc>540</xloc>
  771 + <yloc>59</yloc>
  772 + <draw>Y</draw>
  773 + </GUI>
  774 + </step>
  775 +
  776 + <step>
  777 + <name>&#x516c;&#x53f8;&#x4ee3;&#x7801;&#x4e0d;&#x4e3a;&#x7a7a;</name>
  778 + <type>FilterRows</type>
  779 + <description/>
  780 + <distribute>Y</distribute>
  781 + <custom_distribution/>
  782 + <copies>1</copies>
  783 + <partitioning>
  784 + <method>none</method>
  785 + <schema_name/>
  786 + </partitioning>
  787 +<send_true_to/>
  788 +<send_false_to/>
  789 + <compare>
  790 +<condition>
  791 + <negated>N</negated>
  792 + <conditions>
  793 + <condition>
  794 + <negated>N</negated>
  795 + <leftvalue>gs_code</leftvalue>
  796 + <function>IS NOT NULL</function>
  797 + <rightvalue/>
  798 + </condition>
  799 + </conditions>
  800 + </condition>
  801 + </compare>
  802 + <cluster_schema/>
  803 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  804 + <xloc>542</xloc>
  805 + <yloc>164</yloc>
  806 + <draw>Y</draw>
  807 + </GUI>
  808 + </step>
  809 +
  810 + <step>
  811 + <name>&#x5206;&#x516c;&#x53f8;&#x67e5;&#x8be2;</name>
  812 + <type>DBLookup</type>
  813 + <description/>
  814 + <distribute>Y</distribute>
  815 + <custom_distribution/>
  816 + <copies>1</copies>
  817 + <partitioning>
  818 + <method>none</method>
  819 + <schema_name/>
  820 + </partitioning>
  821 + <connection>bus_control_variable</connection>
  822 + <cache>N</cache>
  823 + <cache_load_all>N</cache_load_all>
  824 + <cache_size>0</cache_size>
  825 + <lookup>
  826 + <schema/>
  827 + <table>bsth_c_business</table>
  828 + <orderby/>
  829 + <fail_on_multiple>N</fail_on_multiple>
  830 + <eat_row_on_failure>N</eat_row_on_failure>
  831 + <key>
  832 + <name>gs_code</name>
  833 + <field>up_code</field>
  834 + <condition>&#x3d;</condition>
  835 + <name2/>
  836 + </key>
  837 + <key>
  838 + <name>&#x6240;&#x5c5e;&#x5206;&#x516c;&#x53f8;</name>
  839 + <field>business_name</field>
  840 + <condition>&#x3d;</condition>
  841 + <name2/>
  842 + </key>
  843 + <value>
  844 + <name>business_code</name>
  845 + <rename>fgs_code</rename>
  846 + <default/>
  847 + <type>String</type>
  848 + </value>
  849 + </lookup>
  850 + <cluster_schema/>
  851 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  852 + <xloc>683</xloc>
  853 + <yloc>59</yloc>
  854 + <draw>Y</draw>
  855 + </GUI>
  856 + </step>
  857 +
  858 + <step>
  859 + <name>&#x5206;&#x516c;&#x53f8;&#x4ee3;&#x7801;&#x4e0d;&#x4e3a;&#x7a7a;</name>
  860 + <type>FilterRows</type>
  861 + <description/>
  862 + <distribute>Y</distribute>
  863 + <custom_distribution/>
  864 + <copies>1</copies>
  865 + <partitioning>
  866 + <method>none</method>
  867 + <schema_name/>
  868 + </partitioning>
  869 +<send_true_to/>
  870 +<send_false_to/>
  871 + <compare>
  872 +<condition>
  873 + <negated>N</negated>
  874 + <conditions>
  875 + <condition>
  876 + <negated>N</negated>
  877 + <leftvalue>fgs_code</leftvalue>
  878 + <function>IS NOT NULL</function>
  879 + <rightvalue/>
  880 + </condition>
  881 + </conditions>
  882 + </condition>
  883 + </compare>
  884 + <cluster_schema/>
  885 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  886 + <xloc>685</xloc>
  887 + <yloc>162</yloc>
  888 + <draw>Y</draw>
  889 + </GUI>
  890 + </step>
  891 +
  892 + <step>
  893 + <name>&#x8f66;&#x8f86;&#x7f16;&#x7801;</name>
  894 + <type>ScriptValueMod</type>
  895 + <description/>
  896 + <distribute>Y</distribute>
  897 + <custom_distribution/>
  898 + <copies>1</copies>
  899 + <partitioning>
  900 + <method>none</method>
  901 + <schema_name/>
  902 + </partitioning>
  903 + <compatible>N</compatible>
  904 + <optimizationLevel>9</optimizationLevel>
  905 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  906 + <jsScript_name>Script 1</jsScript_name>
  907 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var cl_code &#x3d; gs_code &#x2b; &#x22;0&#x22; &#x2b; &#x5185;&#x90e8;&#x7f16;&#x7801;&#x3b;</jsScript_script>
  908 + </jsScript> </jsScripts> <fields> <field> <name>cl_code</name>
  909 + <rename>cl_code</rename>
  910 + <type>String</type>
  911 + <length>-1</length>
  912 + <precision>-1</precision>
  913 + <replace>N</replace>
  914 + </field> </fields> <cluster_schema/>
  915 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  916 + <xloc>688</xloc>
  917 + <yloc>273</yloc>
  918 + <draw>Y</draw>
  919 + </GUI>
  920 + </step>
  921 +
  922 + <step_error_handling>
  923 + <error>
  924 + <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars 2</source_step>
  925 + <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa; 2</target_step>
  926 + <is_enabled>Y</is_enabled>
  927 + <nr_valuename>error_count</nr_valuename>
  928 + <descriptions_valuename>error_desc</descriptions_valuename>
  929 + <fields_valuename>error_column1</fields_valuename>
  930 + <codes_valuename>error_column2</codes_valuename>
  931 + <max_errors/>
  932 + <max_pct_errors/>
  933 + <min_pct_rows/>
  934 + </error>
  935 + </step_error_handling>
  936 + <slave-step-copy-partition-distribution>
  937 +</slave-step-copy-partition-distribution>
  938 + <slave_transformation>N</slave_transformation>
  939 +
  940 +</transformation>
... ...