Commit 93decfc058b0c4fbf1362551194e5d02e8ba51aa

Authored by 潘钊
2 parents f2378ac6 88d90ee1

Merge branch 'minhang' of http://222.66.0.204:8090/panzhaov5/bsth_control into minhang

Too many changes to show.

To preserve performance only 21 of 64 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/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/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/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>
... ...