Commit d49b419f947af46fbab9820d2b37300ff299589c

Authored by 徐烜
2 parents 2cf6d5fc 502f6f7f

update

Showing 38 changed files with 3105 additions and 1253 deletions

Too many changes to show.

To preserve performance only 38 of 113 files are displayed.

src/main/java/com/bsth/StartCommand.java
1 1 package com.bsth;
2 2  
3 3  
4   -import java.util.concurrent.Executors;
5   -import java.util.concurrent.ScheduledExecutorService;
6   -import java.util.concurrent.TimeUnit;
7   -
8   -import org.slf4j.Logger;
9   -import org.slf4j.LoggerFactory;
10   -import org.springframework.beans.factory.annotation.Autowired;
11   -import org.springframework.boot.CommandLineRunner;
12   -import org.springframework.stereotype.Component;
13   -
14 4 import com.bsth.security.SecurityMetadataSourceService;
15 5 import com.bsth.service.realcontrol.buffer.GetSchedulePlanThread;
16 6 import com.bsth.service.realcontrol.buffer.SchedulePersistenceThread;
... ... @@ -18,6 +8,15 @@ import com.bsth.vehicle.common.CommonRefreshThread;
18 8 import com.bsth.vehicle.directive.DirectivePersistenceThread;
19 9 import com.bsth.vehicle.gpsdata.GpsArrivalStationThread;
20 10 import com.bsth.vehicle.gpsdata.GpsRefreshThread;
  11 +import org.slf4j.Logger;
  12 +import org.slf4j.LoggerFactory;
  13 +import org.springframework.beans.factory.annotation.Autowired;
  14 +import org.springframework.boot.CommandLineRunner;
  15 +import org.springframework.stereotype.Component;
  16 +
  17 +import java.util.concurrent.Executors;
  18 +import java.util.concurrent.ScheduledExecutorService;
  19 +import java.util.concurrent.TimeUnit;
21 20  
22 21 /**
23 22 * 随应用启动运行
... ... @@ -67,7 +66,7 @@ public class StartCommand implements CommandLineRunner{
67 66 //一分钟持久化一次实际排班
68 67 scheduler.scheduleWithFixedDelay(SchedulePersistenceThread, 60 * 1, 60 * 1, TimeUnit.SECONDS);
69 68 //将实际到离站和排班计划进行匹配 12秒一次
70   - //scheduler.scheduleWithFixedDelay(gpsArrivalStationThread, 20, 1200, TimeUnit.SECONDS);
  69 + //scheduler.scheduleWithFixedDelay(gpsArrivalStationThread, 5, 1200, TimeUnit.SECONDS);
71 70 } catch (Exception e) {
72 71 e.printStackTrace();
73 72 }
... ...
src/main/java/com/bsth/controller/CarDeviceController.java
1   -package com.bsth.controller;
2   -
3   -import com.bsth.entity.CarDevice;
4   -import org.springframework.web.bind.annotation.RequestBody;
5   -import org.springframework.web.bind.annotation.RequestMapping;
6   -import org.springframework.web.bind.annotation.RequestMethod;
7   -import org.springframework.web.bind.annotation.RestController;
8   -
9   -import java.util.Map;
10   -
11   -/**
12   - * Created by xu on 16/6/15.
13   - */
14   -@RestController
15   -@RequestMapping("carDevice")
16   -public class CarDeviceController extends BaseController<CarDevice, Long> {
17   -
18   - /**
19   - * 覆写方法,因为form提交的方式参数不全,改用 json形式提交 @RequestBody
20   - * @Title: save
21   - * @Description: TODO(持久化对象)
22   - * @param @param t
23   - * @param @return 设定文件
24   - * @return Map<String,Object> {status: 1(成功),-1(失败)}
25   - * @throws
26   - */
27   - @RequestMapping(method = RequestMethod.POST)
28   - public Map<String, Object> save(@RequestBody CarDevice t){
29   - return baseService.save(t);
30   - }
31   -}
  1 +package com.bsth.controller;
  2 +
  3 +import com.bsth.entity.CarDevice;
  4 +import org.springframework.web.bind.annotation.RequestBody;
  5 +import org.springframework.web.bind.annotation.RequestMapping;
  6 +import org.springframework.web.bind.annotation.RequestMethod;
  7 +import org.springframework.web.bind.annotation.RestController;
  8 +
  9 +import java.util.Map;
  10 +
  11 +/**
  12 + * Created by xu on 16/6/15.
  13 + */
  14 +@RestController
  15 +@RequestMapping("carDevice")
  16 +public class CarDeviceController extends BaseController<CarDevice, Long> {
  17 +
  18 + /**
  19 + * 覆写方法,因为form提交的方式参数不全,改用 json形式提交 @RequestBody
  20 + * @Title: save
  21 + * @Description: TODO(持久化对象)
  22 + * @param @param t
  23 + * @param @return 设定文件
  24 + * @return Map<String,Object> {status: 1(成功),-1(失败)}
  25 + * @throws
  26 + */
  27 + @RequestMapping(method = RequestMethod.POST)
  28 + public Map<String, Object> save(@RequestBody CarDevice t){
  29 + return baseService.save(t);
  30 + }
  31 +}
... ...
src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
1 1 package com.bsth.controller.realcontrol;
2 2  
3 3 import java.util.Collection;
  4 +import java.util.List;
4 5 import java.util.Map;
5 6  
6 7 import org.springframework.beans.factory.annotation.Autowired;
... ... @@ -66,4 +67,40 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
66 67 public Map<String, String> carDeviceMapp(){
67 68 return CommonMapped.vehicDeviceBiMap.inverse();
68 69 }
  70 +
  71 + /**
  72 + *
  73 + * @Title: findPersionByLine
  74 + * @Description: TODO(根据线路主键获取驾驶员)
  75 + * @param @param lineId
  76 + * @throws
  77 + */
  78 + @RequestMapping(value = "/driver", method = RequestMethod.GET)
  79 + public List<Map<String, String>> findDriverByLine(@RequestParam String lineCode){
  80 + return scheduleRealInfoService.findDriverByLine(lineCode);
  81 + }
  82 +
  83 + /**
  84 + *
  85 + * @Title: findPersionByLine
  86 + * @Description: TODO(根据线路主键获取售票员)
  87 + * @param @param lineId
  88 + * @throws
  89 + */
  90 + @RequestMapping(value = "/conductor", method = RequestMethod.GET)
  91 + public List<Map<String, String>> findConductorByLine(@RequestParam String lineCode){
  92 + return scheduleRealInfoService.findConductorByLine(lineCode);
  93 + }
  94 +
  95 + /**
  96 + *
  97 + * @Title: findPersionByLine
  98 + * @Description: TODO(根据线路主键获取车辆)
  99 + * @param @param lineId
  100 + * @throws
  101 + */
  102 + @RequestMapping(value = "/cars", method = RequestMethod.GET)
  103 + public List<Map<String, String>> findCarByLine(@RequestParam String lineCode){
  104 + return scheduleRealInfoService.findCarByLine(lineCode);
  105 + }
69 106 }
... ...
src/main/java/com/bsth/controller/schedule/SchedulePlanController.java
1   -package com.bsth.controller.schedule;
2   -
3   -import com.bsth.controller.BaseController;
4   -import com.bsth.entity.schedule.SchedulePlan;
5   -import org.springframework.web.bind.annotation.RequestMapping;
6   -import org.springframework.web.bind.annotation.RestController;
7   -
8   -/**
9   - * Created by xu on 16/6/16.
10   - */
11   -@RestController
12   -@RequestMapping("spc")
13   -public class SchedulePlanController extends BaseController<SchedulePlan, Long> {
14   -}
  1 +package com.bsth.controller.schedule;
  2 +
  3 +import com.bsth.controller.BaseController;
  4 +import com.bsth.entity.schedule.SchedulePlan;
  5 +import org.springframework.web.bind.annotation.RequestMapping;
  6 +import org.springframework.web.bind.annotation.RestController;
  7 +
  8 +/**
  9 + * Created by xu on 16/6/16.
  10 + */
  11 +@RestController
  12 +@RequestMapping("spc")
  13 +public class SchedulePlanController extends BaseController<SchedulePlan, Long> {
  14 +}
... ...
src/main/java/com/bsth/controller/schedule/SchedulePlanInfoController.java
1   -package com.bsth.controller.schedule;
2   -
3   -import com.bsth.controller.BaseController;
4   -import com.bsth.entity.schedule.SchedulePlanInfo;
5   -import org.springframework.web.bind.annotation.RequestMapping;
6   -import org.springframework.web.bind.annotation.RestController;
7   -
8   -/**
9   - * Created by xu on 16/6/16.
10   - */
11   -@RestController
12   -@RequestMapping("spic")
13   -public class SchedulePlanInfoController extends BaseController<SchedulePlanInfo, Long> {
14   -}
  1 +package com.bsth.controller.schedule;
  2 +
  3 +import com.bsth.controller.BaseController;
  4 +import com.bsth.entity.schedule.SchedulePlanInfo;
  5 +import org.springframework.web.bind.annotation.RequestMapping;
  6 +import org.springframework.web.bind.annotation.RestController;
  7 +
  8 +/**
  9 + * Created by xu on 16/6/16.
  10 + */
  11 +@RestController
  12 +@RequestMapping("spic")
  13 +public class SchedulePlanInfoController extends BaseController<SchedulePlanInfo, Long> {
  14 +}
... ...
src/main/java/com/bsth/entity/schedule/GuideboardInfo.java
1   -package com.bsth.entity.schedule;
2   -
3   -import com.bsth.entity.Line;
4   -import com.bsth.entity.sys.SysUser;
5   -
6   -import javax.persistence.*;
7   -import javax.persistence.Table;
8   -import java.util.Date;
9   -
10   -/**
11   - * 路牌信息。
12   - */
13   -@Entity
14   -@Table(name = "bsth_c_s_gbi")
15   -public class GuideboardInfo {
16   -
17   - /** 主键Id */
18   - @Id
19   - @GeneratedValue
20   - private Long id;
21   -
22   - /** 线路关联 */
23   - @ManyToOne(optional = false, cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
24   - private Line xl;
25   -
26   - /** 路牌顺序号 */
27   - @Column(nullable = false)
28   - private Integer lpNo;
29   - /** 路牌名称 */
30   - @Column(nullable = false)
31   - private String lpName;
32   - /** 路牌类型(普通路牌/临加路牌) */
33   - @Column(nullable = false)
34   - private String lpType;
35   -
36   - /** 创建人 */
37   - @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
38   - private SysUser createBy;
39   - /** 修改人 */
40   - @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
41   - private SysUser updateBy;
42   -
43   - /** 创建日期 */
44   - @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
45   - private Date createDate;
46   - /** 修改日期 */
47   - @Column(name = "update_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
48   - private Date updateDate;
49   -
50   -
51   - public Long getId() {
52   - return id;
53   - }
54   -
55   - public void setId(Long id) {
56   - this.id = id;
57   - }
58   -
59   - public Line getXl() {
60   - return xl;
61   - }
62   -
63   - public void setXl(Line xl) {
64   - this.xl = xl;
65   - }
66   -
67   - public Integer getLpNo() {
68   - return lpNo;
69   - }
70   -
71   - public void setLpNo(Integer lpNo) {
72   - this.lpNo = lpNo;
73   - }
74   -
75   - public String getLpName() {
76   - return lpName;
77   - }
78   -
79   - public void setLpName(String lpName) {
80   - this.lpName = lpName;
81   - }
82   -
83   - public String getLpType() {
84   - return lpType;
85   - }
86   -
87   - public void setLpType(String lpType) {
88   - this.lpType = lpType;
89   - }
90   -
91   - public SysUser getCreateBy() {
92   - return createBy;
93   - }
94   -
95   - public void setCreateBy(SysUser createBy) {
96   - this.createBy = createBy;
97   - }
98   -
99   - public SysUser getUpdateBy() {
100   - return updateBy;
101   - }
102   -
103   - public void setUpdateBy(SysUser updateBy) {
104   - this.updateBy = updateBy;
105   - }
106   -
107   - public Date getCreateDate() {
108   - return createDate;
109   - }
110   -
111   - public void setCreateDate(Date createDate) {
112   - this.createDate = createDate;
113   - }
114   -
115   - public Date getUpdateDate() {
116   - return updateDate;
117   - }
118   -
119   - public void setUpdateDate(Date updateDate) {
120   - this.updateDate = updateDate;
121   - }
122   -}
  1 +package com.bsth.entity.schedule;
  2 +
  3 +import com.bsth.entity.Line;
  4 +import com.bsth.entity.sys.SysUser;
  5 +
  6 +import javax.persistence.*;
  7 +import javax.persistence.Table;
  8 +import java.util.Date;
  9 +
  10 +/**
  11 + * 路牌信息。
  12 + */
  13 +@Entity
  14 +@Table(name = "bsth_c_s_gbi")
  15 +public class GuideboardInfo {
  16 +
  17 + /** 主键Id */
  18 + @Id
  19 + @GeneratedValue
  20 + private Long id;
  21 +
  22 + /** 线路关联 */
  23 + @ManyToOne(optional = false, cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  24 + private Line xl;
  25 +
  26 + /** 路牌顺序号 */
  27 + @Column(nullable = false)
  28 + private Integer lpNo;
  29 + /** 路牌名称 */
  30 + @Column(nullable = false)
  31 + private String lpName;
  32 + /** 路牌类型(普通路牌/临加路牌) */
  33 + @Column(nullable = false)
  34 + private String lpType;
  35 +
  36 + /** 创建人 */
  37 + @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
  38 + private SysUser createBy;
  39 + /** 修改人 */
  40 + @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
  41 + private SysUser updateBy;
  42 +
  43 + /** 创建日期 */
  44 + @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
  45 + private Date createDate;
  46 + /** 修改日期 */
  47 + @Column(name = "update_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
  48 + private Date updateDate;
  49 +
  50 +
  51 + public Long getId() {
  52 + return id;
  53 + }
  54 +
  55 + public void setId(Long id) {
  56 + this.id = id;
  57 + }
  58 +
  59 + public Line getXl() {
  60 + return xl;
  61 + }
  62 +
  63 + public void setXl(Line xl) {
  64 + this.xl = xl;
  65 + }
  66 +
  67 + public Integer getLpNo() {
  68 + return lpNo;
  69 + }
  70 +
  71 + public void setLpNo(Integer lpNo) {
  72 + this.lpNo = lpNo;
  73 + }
  74 +
  75 + public String getLpName() {
  76 + return lpName;
  77 + }
  78 +
  79 + public void setLpName(String lpName) {
  80 + this.lpName = lpName;
  81 + }
  82 +
  83 + public String getLpType() {
  84 + return lpType;
  85 + }
  86 +
  87 + public void setLpType(String lpType) {
  88 + this.lpType = lpType;
  89 + }
  90 +
  91 + public SysUser getCreateBy() {
  92 + return createBy;
  93 + }
  94 +
  95 + public void setCreateBy(SysUser createBy) {
  96 + this.createBy = createBy;
  97 + }
  98 +
  99 + public SysUser getUpdateBy() {
  100 + return updateBy;
  101 + }
  102 +
  103 + public void setUpdateBy(SysUser updateBy) {
  104 + this.updateBy = updateBy;
  105 + }
  106 +
  107 + public Date getCreateDate() {
  108 + return createDate;
  109 + }
  110 +
  111 + public void setCreateDate(Date createDate) {
  112 + this.createDate = createDate;
  113 + }
  114 +
  115 + public Date getUpdateDate() {
  116 + return updateDate;
  117 + }
  118 +
  119 + public void setUpdateDate(Date updateDate) {
  120 + this.updateDate = updateDate;
  121 + }
  122 +}
... ...
src/main/java/com/bsth/entity/schedule/TTInfo.java
1   -package com.bsth.entity.schedule;
2   -
3   -import com.bsth.entity.Line;
4   -import com.bsth.entity.sys.SysUser;
5   -
6   -import javax.persistence.*;
7   -import java.util.Date;
8   -
9   -/**
10   - * 时刻表信息
11   - */
12   -@Entity
13   -@Table(name="bsth_c_s_ttinfo")
14   -public class TTInfo {
15   -
16   - /** 主键Id */
17   - @Id
18   - @GeneratedValue
19   - private Long id;
20   -
21   - /** 线路关联 */
22   - @ManyToOne(optional = false, cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
23   - private Line xl;
24   -
25   - /** 时刻表名称 */
26   - @Column(nullable = false, unique = true)
27   - private String name;
28   - /** 线路方向(TODO:上下行,上行,下行,这个以后用枚举还是字典再议,现在先用文字) */
29   - @Column(nullable = false)
30   - private String xlDir;
31   - /** 启用日期 */
32   - @Column(nullable = false)
33   - private Date qyrq;
34   - /** 模版类型(TODO:时刻表,间隔式,这个以后用枚举还是字典再议,现在先用文字) */
35   - private String templateType;
36   - /** 是否启用调度模版 */
37   - private Boolean isEnableDisTemplate;
38   - /** 路牌数 */
39   - private int lpCount;
40   - /** 圈数 */
41   - private int loopCount;
42   -
43   - // TODO:原系统里的分别在,圈后圈进场,意思不知道,再议
44   -
45   - /** 常规有效日(1-7表示星期一到星期日,多个用逗号隔开) */
46   - private String rule_days;
47   - /** 特殊有效日期(格式:2001-01-01,多个用逗号隔开) */
48   - private String special_days;
49   -
50   -
51   -
52   - /** 是否启用(这个是算出来的,不持久化) */
53   - @Transient
54   - private boolean isEnable;
55   -
56   - /** 操作人员关联 */
57   - @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
58   - private SysUser createBy;
59   - /** 更新人员关联 */
60   - @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
61   - private SysUser updateBy;
62   - // 创建日期
63   - @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
64   - private Date createDate;
65   - // 修改日期
66   - @Column(name = "update_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
67   - private Date updateDate;
68   -
69   -
70   - public Long getId() {
71   - return id;
72   - }
73   -
74   - public void setId(Long id) {
75   - this.id = id;
76   - }
77   -
78   - public Line getXl() {
79   - return xl;
80   - }
81   -
82   - public void setXl(Line xl) {
83   - this.xl = xl;
84   - }
85   -
86   - public String getName() {
87   - return name;
88   - }
89   -
90   - public void setName(String name) {
91   - this.name = name;
92   - }
93   -
94   - public String getXlDir() {
95   - return xlDir;
96   - }
97   -
98   - public void setXlDir(String xlDir) {
99   - this.xlDir = xlDir;
100   - }
101   -
102   - public Date getQyrq() {
103   - return qyrq;
104   - }
105   -
106   - public void setQyrq(Date qyrq) {
107   - this.qyrq = qyrq;
108   - }
109   -
110   - public String getTemplateType() {
111   - return templateType;
112   - }
113   -
114   - public void setTemplateType(String templateType) {
115   - this.templateType = templateType;
116   - }
117   -
118   - public Boolean getIsEnableDisTemplate() {
119   - return isEnableDisTemplate;
120   - }
121   -
122   - public void setIsEnableDisTemplate(Boolean isEnableDisTemplate) {
123   - this.isEnableDisTemplate = isEnableDisTemplate;
124   - }
125   -
126   - public int getLpCount() {
127   - return lpCount;
128   - }
129   -
130   - public void setLpCount(int lpCount) {
131   - this.lpCount = lpCount;
132   - }
133   -
134   - public int getLoopCount() {
135   - return loopCount;
136   - }
137   -
138   - public void setLoopCount(int loopCount) {
139   - this.loopCount = loopCount;
140   - }
141   -
142   - public String getRule_days() {
143   - return rule_days;
144   - }
145   -
146   - public void setRule_days(String rule_days) {
147   - this.rule_days = rule_days;
148   - }
149   -
150   - public String getSpecial_days() {
151   - return special_days;
152   - }
153   -
154   - public void setSpecial_days(String special_days) {
155   - this.special_days = special_days;
156   - }
157   -
158   - public boolean isEnable() {
159   - return isEnable;
160   - }
161   -
162   - public void setIsEnable(boolean isEnable) {
163   - this.isEnable = isEnable;
164   - }
165   -
166   - public SysUser getCreateBy() {
167   - return createBy;
168   - }
169   -
170   - public void setCreateBy(SysUser createBy) {
171   - this.createBy = createBy;
172   - }
173   -
174   - public SysUser getUpdateBy() {
175   - return updateBy;
176   - }
177   -
178   - public void setUpdateBy(SysUser updateBy) {
179   - this.updateBy = updateBy;
180   - }
181   -
182   - public Date getCreateDate() {
183   - return createDate;
184   - }
185   -
186   - public void setCreateDate(Date createDate) {
187   - this.createDate = createDate;
188   - }
189   -
190   - public Date getUpdateDate() {
191   - return updateDate;
192   - }
193   -
194   - public void setUpdateDate(Date updateDate) {
195   - this.updateDate = updateDate;
196   - }
197   -}
  1 +package com.bsth.entity.schedule;
  2 +
  3 +import com.bsth.entity.Line;
  4 +import com.bsth.entity.sys.SysUser;
  5 +
  6 +import javax.persistence.*;
  7 +import java.util.Date;
  8 +
  9 +/**
  10 + * 时刻表信息
  11 + */
  12 +@Entity
  13 +@Table(name="bsth_c_s_ttinfo")
  14 +public class TTInfo {
  15 +
  16 + /** 主键Id */
  17 + @Id
  18 + @GeneratedValue
  19 + private Long id;
  20 +
  21 + /** 线路关联 */
  22 + @ManyToOne(optional = false, cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  23 + private Line xl;
  24 +
  25 + /** 时刻表名称 */
  26 + @Column(nullable = false, unique = true)
  27 + private String name;
  28 + /** 线路方向(TODO:上下行,上行,下行,这个以后用枚举还是字典再议,现在先用文字) */
  29 + @Column(nullable = false)
  30 + private String xlDir;
  31 + /** 启用日期 */
  32 + @Column(nullable = false)
  33 + private Date qyrq;
  34 + /** 模版类型(TODO:时刻表,间隔式,这个以后用枚举还是字典再议,现在先用文字) */
  35 + private String templateType;
  36 + /** 是否启用调度模版 */
  37 + private Boolean isEnableDisTemplate;
  38 + /** 路牌数 */
  39 + private int lpCount;
  40 + /** 圈数 */
  41 + private int loopCount;
  42 +
  43 + // TODO:原系统里的分别在,圈后圈进场,意思不知道,再议
  44 +
  45 + /** 常规有效日(1-7表示星期一到星期日,多个用逗号隔开) */
  46 + private String rule_days;
  47 + /** 特殊有效日期(格式:2001-01-01,多个用逗号隔开) */
  48 + private String special_days;
  49 +
  50 +
  51 +
  52 + /** 是否启用(这个是算出来的,不持久化) */
  53 + @Transient
  54 + private boolean isEnable;
  55 +
  56 + /** 操作人员关联 */
  57 + @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  58 + private SysUser createBy;
  59 + /** 更新人员关联 */
  60 + @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  61 + private SysUser updateBy;
  62 + // 创建日期
  63 + @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
  64 + private Date createDate;
  65 + // 修改日期
  66 + @Column(name = "update_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
  67 + private Date updateDate;
  68 +
  69 +
  70 + public Long getId() {
  71 + return id;
  72 + }
  73 +
  74 + public void setId(Long id) {
  75 + this.id = id;
  76 + }
  77 +
  78 + public Line getXl() {
  79 + return xl;
  80 + }
  81 +
  82 + public void setXl(Line xl) {
  83 + this.xl = xl;
  84 + }
  85 +
  86 + public String getName() {
  87 + return name;
  88 + }
  89 +
  90 + public void setName(String name) {
  91 + this.name = name;
  92 + }
  93 +
  94 + public String getXlDir() {
  95 + return xlDir;
  96 + }
  97 +
  98 + public void setXlDir(String xlDir) {
  99 + this.xlDir = xlDir;
  100 + }
  101 +
  102 + public Date getQyrq() {
  103 + return qyrq;
  104 + }
  105 +
  106 + public void setQyrq(Date qyrq) {
  107 + this.qyrq = qyrq;
  108 + }
  109 +
  110 + public String getTemplateType() {
  111 + return templateType;
  112 + }
  113 +
  114 + public void setTemplateType(String templateType) {
  115 + this.templateType = templateType;
  116 + }
  117 +
  118 + public Boolean getIsEnableDisTemplate() {
  119 + return isEnableDisTemplate;
  120 + }
  121 +
  122 + public void setIsEnableDisTemplate(Boolean isEnableDisTemplate) {
  123 + this.isEnableDisTemplate = isEnableDisTemplate;
  124 + }
  125 +
  126 + public int getLpCount() {
  127 + return lpCount;
  128 + }
  129 +
  130 + public void setLpCount(int lpCount) {
  131 + this.lpCount = lpCount;
  132 + }
  133 +
  134 + public int getLoopCount() {
  135 + return loopCount;
  136 + }
  137 +
  138 + public void setLoopCount(int loopCount) {
  139 + this.loopCount = loopCount;
  140 + }
  141 +
  142 + public String getRule_days() {
  143 + return rule_days;
  144 + }
  145 +
  146 + public void setRule_days(String rule_days) {
  147 + this.rule_days = rule_days;
  148 + }
  149 +
  150 + public String getSpecial_days() {
  151 + return special_days;
  152 + }
  153 +
  154 + public void setSpecial_days(String special_days) {
  155 + this.special_days = special_days;
  156 + }
  157 +
  158 + public boolean isEnable() {
  159 + return isEnable;
  160 + }
  161 +
  162 + public void setIsEnable(boolean isEnable) {
  163 + this.isEnable = isEnable;
  164 + }
  165 +
  166 + public SysUser getCreateBy() {
  167 + return createBy;
  168 + }
  169 +
  170 + public void setCreateBy(SysUser createBy) {
  171 + this.createBy = createBy;
  172 + }
  173 +
  174 + public SysUser getUpdateBy() {
  175 + return updateBy;
  176 + }
  177 +
  178 + public void setUpdateBy(SysUser updateBy) {
  179 + this.updateBy = updateBy;
  180 + }
  181 +
  182 + public Date getCreateDate() {
  183 + return createDate;
  184 + }
  185 +
  186 + public void setCreateDate(Date createDate) {
  187 + this.createDate = createDate;
  188 + }
  189 +
  190 + public Date getUpdateDate() {
  191 + return updateDate;
  192 + }
  193 +
  194 + public void setUpdateDate(Date updateDate) {
  195 + this.updateDate = updateDate;
  196 + }
  197 +}
... ...
src/main/java/com/bsth/entity/schedule/TTInfoDetail.java
1   -package com.bsth.entity.schedule;
2   -
3   -import com.bsth.entity.CarPark;
4   -import com.bsth.entity.Line;
5   -import com.bsth.entity.Station;
6   -import com.bsth.entity.sys.SysUser;
7   -
8   -import javax.persistence.*;
9   -import java.util.Date;
10   -
11   -/**
12   - * 时刻表明细
13   - */
14   -@Entity
15   -@Table(name = "bsth_c_s_ttinfo_detail")
16   -public class TTInfoDetail {
17   -
18   - /** 主健Id */
19   - @Id
20   - @GeneratedValue
21   - private Long id;
22   -
23   -
24   - /** 关联线路 */
25   - @ManyToOne(optional = false, cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
26   - private Line xl;
27   - /** 时刻表主对象关联 */
28   - @ManyToOne(optional = false, cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
29   - private TTInfo ttinfo;
30   - /** 关联的路牌 */
31   - @ManyToOne(optional = false, cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
32   - private GuideboardInfo lp;
33   -
34   - /** 发车顺序号 */
35   - @Column(nullable = false)
36   - private Integer fcno;
37   - /** 线路方向(TODO:上下行,上行,下行,这个以后用枚举还是字典再议,现在先用文字) */
38   - @Column(nullable = false)
39   - private String xlDir;
40   - /** 起点站关联 */
41   - @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
42   - private Station qdz;
43   - /** 终点站关联 */
44   - @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
45   - private Station zdz;
46   - /** 停车场关联(出场,进场班次会关联停车场) */
47   - @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
48   - private CarPark tcc;
49   -
50   - /** 发车时间(格式 HH:mm) */
51   - @Column(nullable = false, length = 5)
52   - private String fcsj;
53   - /** 对应班次数 */
54   - private Integer bcs;
55   - @Column(nullable = false)
56   - /** 计划里程 */
57   - private Double jhlc;
58   - /** 班次历时 */
59   - private Integer bcsj;
60   -
61   - /**
62   - * 班次类型
63   - * TODO:正常班次、出场、进场、加油、临加班次、区间班次、放空班次、放大站班次、两点间空驶
64   - * TODO:这个以后用枚举还是字典再议,现在先用文字
65   - */
66   - @Column(nullable = false)
67   - private String bcType;
68   -
69   - /** 是否分班(表示这个班次是否是晚班班次,就是换另外一个驾驶员开)*/
70   - private Boolean isFB;
71   -
72   - /** 是否切换线路 */
73   - private Boolean isSwitchXl;
74   - /** 切换的线路(isSwitchXl == true) */
75   - @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
76   - private Line switchXl;
77   - /** 切换线路信息(isSwitchXl == true) */
78   - private String switchXlDesc;
79   - /** 备注 */
80   - private String remark;
81   -
82   - /** 创建人 */
83   - @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
84   - private SysUser createBy;
85   - /** 修改人 */
86   - @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
87   - private SysUser updateBy;
88   -
89   - /** 创建日期 */
90   - @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
91   - private Date createDate;
92   - /** 修改日期 */
93   - @Column(name = "update_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
94   - private Date updateDate;
95   -
96   - public Long getId() {
97   - return id;
98   - }
99   -
100   - public void setId(Long id) {
101   - this.id = id;
102   - }
103   -
104   - public Line getXl() {
105   - return xl;
106   - }
107   -
108   - public void setXl(Line xl) {
109   - this.xl = xl;
110   - }
111   -
112   - public TTInfo getTtinfo() {
113   - return ttinfo;
114   - }
115   -
116   - public void setTtinfo(TTInfo ttinfo) {
117   - this.ttinfo = ttinfo;
118   - }
119   -
120   - public GuideboardInfo getLp() {
121   - return lp;
122   - }
123   -
124   - public void setLp(GuideboardInfo lp) {
125   - this.lp = lp;
126   - }
127   -
128   - public Integer getFcno() {
129   - return fcno;
130   - }
131   -
132   - public void setFcno(Integer fcno) {
133   - this.fcno = fcno;
134   - }
135   -
136   - public String getXlDir() {
137   - return xlDir;
138   - }
139   -
140   - public void setXlDir(String xlDir) {
141   - this.xlDir = xlDir;
142   - }
143   -
144   - public Station getQdz() {
145   - return qdz;
146   - }
147   -
148   - public void setQdz(Station qdz) {
149   - this.qdz = qdz;
150   - }
151   -
152   - public Station getZdz() {
153   - return zdz;
154   - }
155   -
156   - public void setZdz(Station zdz) {
157   - this.zdz = zdz;
158   - }
159   -
160   - public String getFcsj() {
161   - return fcsj;
162   - }
163   -
164   - public void setFcsj(String fcsj) {
165   - this.fcsj = fcsj;
166   - }
167   -
168   - public Integer getBcs() {
169   - return bcs;
170   - }
171   -
172   - public void setBcs(Integer bcs) {
173   - this.bcs = bcs;
174   - }
175   -
176   - public Double getJhlc() {
177   - return jhlc;
178   - }
179   -
180   - public void setJhlc(Double jhlc) {
181   - this.jhlc = jhlc;
182   - }
183   -
184   - public Integer getBcsj() {
185   - return bcsj;
186   - }
187   -
188   - public void setBcsj(Integer bcsj) {
189   - this.bcsj = bcsj;
190   - }
191   -
192   - public String getBcType() {
193   - return bcType;
194   - }
195   -
196   - public void setBcType(String bcType) {
197   - this.bcType = bcType;
198   - }
199   -
200   - public Boolean getIsSwitchXl() {
201   - return isSwitchXl;
202   - }
203   -
204   - public void setIsSwitchXl(Boolean isSwitchXl) {
205   - this.isSwitchXl = isSwitchXl;
206   - }
207   -
208   - public Line getSwitchXl() {
209   - return switchXl;
210   - }
211   -
212   - public void setSwitchXl(Line switchXl) {
213   - this.switchXl = switchXl;
214   - }
215   -
216   - public String getSwitchXlDesc() {
217   - return switchXlDesc;
218   - }
219   -
220   - public void setSwitchXlDesc(String switchXlDesc) {
221   - this.switchXlDesc = switchXlDesc;
222   - }
223   -
224   - public String getRemark() {
225   - return remark;
226   - }
227   -
228   - public void setRemark(String remark) {
229   - this.remark = remark;
230   - }
231   -
232   - public SysUser getCreateBy() {
233   - return createBy;
234   - }
235   -
236   - public void setCreateBy(SysUser createBy) {
237   - this.createBy = createBy;
238   - }
239   -
240   - public SysUser getUpdateBy() {
241   - return updateBy;
242   - }
243   -
244   - public void setUpdateBy(SysUser updateBy) {
245   - this.updateBy = updateBy;
246   - }
247   -
248   - public Date getCreateDate() {
249   - return createDate;
250   - }
251   -
252   - public void setCreateDate(Date createDate) {
253   - this.createDate = createDate;
254   - }
255   -
256   - public Date getUpdateDate() {
257   - return updateDate;
258   - }
259   -
260   - public void setUpdateDate(Date updateDate) {
261   - this.updateDate = updateDate;
262   - }
263   -
264   - public CarPark getTcc() {
265   - return tcc;
266   - }
267   -
268   - public void setTcc(CarPark tcc) {
269   - this.tcc = tcc;
270   - }
271   -
272   - public Boolean getIsFB() {
273   - return isFB;
274   - }
275   -
276   - public void setIsFB(Boolean isFB) {
277   - this.isFB = isFB;
278   - }
279   -}
  1 +package com.bsth.entity.schedule;
  2 +
  3 +import com.bsth.entity.CarPark;
  4 +import com.bsth.entity.Line;
  5 +import com.bsth.entity.Station;
  6 +import com.bsth.entity.sys.SysUser;
  7 +
  8 +import javax.persistence.*;
  9 +import java.util.Date;
  10 +
  11 +/**
  12 + * 时刻表明细
  13 + */
  14 +@Entity
  15 +@Table(name = "bsth_c_s_ttinfo_detail")
  16 +public class TTInfoDetail {
  17 +
  18 + /** 主健Id */
  19 + @Id
  20 + @GeneratedValue
  21 + private Long id;
  22 +
  23 +
  24 + /** 关联线路 */
  25 + @ManyToOne(optional = false, cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  26 + private Line xl;
  27 + /** 时刻表主对象关联 */
  28 + @ManyToOne(optional = false, cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  29 + private TTInfo ttinfo;
  30 + /** 关联的路牌 */
  31 + @ManyToOne(optional = false, cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  32 + private GuideboardInfo lp;
  33 +
  34 + /** 发车顺序号 */
  35 + @Column(nullable = false)
  36 + private Integer fcno;
  37 + /** 线路方向(TODO:上下行,上行,下行,这个以后用枚举还是字典再议,现在先用文字) */
  38 + @Column(nullable = false)
  39 + private String xlDir;
  40 + /** 起点站关联 */
  41 + @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  42 + private Station qdz;
  43 + /** 终点站关联 */
  44 + @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  45 + private Station zdz;
  46 + /** 停车场关联(出场,进场班次会关联停车场) */
  47 + @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  48 + private CarPark tcc;
  49 +
  50 + /** 发车时间(格式 HH:mm) */
  51 + @Column(nullable = false, length = 5)
  52 + private String fcsj;
  53 + /** 对应班次数 */
  54 + private Integer bcs;
  55 + @Column(nullable = false)
  56 + /** 计划里程 */
  57 + private Double jhlc;
  58 + /** 班次历时 */
  59 + private Integer bcsj;
  60 +
  61 + /**
  62 + * 班次类型
  63 + * TODO:正常班次、出场、进场、加油、临加班次、区间班次、放空班次、放大站班次、两点间空驶
  64 + * TODO:这个以后用枚举还是字典再议,现在先用文字
  65 + */
  66 + @Column(nullable = false)
  67 + private String bcType;
  68 +
  69 + /** 是否分班(表示这个班次是否是晚班班次,就是换另外一个驾驶员开)*/
  70 + private Boolean isFB;
  71 +
  72 + /** 是否切换线路 */
  73 + private Boolean isSwitchXl;
  74 + /** 切换的线路(isSwitchXl == true) */
  75 + @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  76 + private Line switchXl;
  77 + /** 切换线路信息(isSwitchXl == true) */
  78 + private String switchXlDesc;
  79 + /** 备注 */
  80 + private String remark;
  81 +
  82 + /** 创建人 */
  83 + @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  84 + private SysUser createBy;
  85 + /** 修改人 */
  86 + @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  87 + private SysUser updateBy;
  88 +
  89 + /** 创建日期 */
  90 + @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
  91 + private Date createDate;
  92 + /** 修改日期 */
  93 + @Column(name = "update_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
  94 + private Date updateDate;
  95 +
  96 + public Long getId() {
  97 + return id;
  98 + }
  99 +
  100 + public void setId(Long id) {
  101 + this.id = id;
  102 + }
  103 +
  104 + public Line getXl() {
  105 + return xl;
  106 + }
  107 +
  108 + public void setXl(Line xl) {
  109 + this.xl = xl;
  110 + }
  111 +
  112 + public TTInfo getTtinfo() {
  113 + return ttinfo;
  114 + }
  115 +
  116 + public void setTtinfo(TTInfo ttinfo) {
  117 + this.ttinfo = ttinfo;
  118 + }
  119 +
  120 + public GuideboardInfo getLp() {
  121 + return lp;
  122 + }
  123 +
  124 + public void setLp(GuideboardInfo lp) {
  125 + this.lp = lp;
  126 + }
  127 +
  128 + public Integer getFcno() {
  129 + return fcno;
  130 + }
  131 +
  132 + public void setFcno(Integer fcno) {
  133 + this.fcno = fcno;
  134 + }
  135 +
  136 + public String getXlDir() {
  137 + return xlDir;
  138 + }
  139 +
  140 + public void setXlDir(String xlDir) {
  141 + this.xlDir = xlDir;
  142 + }
  143 +
  144 + public Station getQdz() {
  145 + return qdz;
  146 + }
  147 +
  148 + public void setQdz(Station qdz) {
  149 + this.qdz = qdz;
  150 + }
  151 +
  152 + public Station getZdz() {
  153 + return zdz;
  154 + }
  155 +
  156 + public void setZdz(Station zdz) {
  157 + this.zdz = zdz;
  158 + }
  159 +
  160 + public String getFcsj() {
  161 + return fcsj;
  162 + }
  163 +
  164 + public void setFcsj(String fcsj) {
  165 + this.fcsj = fcsj;
  166 + }
  167 +
  168 + public Integer getBcs() {
  169 + return bcs;
  170 + }
  171 +
  172 + public void setBcs(Integer bcs) {
  173 + this.bcs = bcs;
  174 + }
  175 +
  176 + public Double getJhlc() {
  177 + return jhlc;
  178 + }
  179 +
  180 + public void setJhlc(Double jhlc) {
  181 + this.jhlc = jhlc;
  182 + }
  183 +
  184 + public Integer getBcsj() {
  185 + return bcsj;
  186 + }
  187 +
  188 + public void setBcsj(Integer bcsj) {
  189 + this.bcsj = bcsj;
  190 + }
  191 +
  192 + public String getBcType() {
  193 + return bcType;
  194 + }
  195 +
  196 + public void setBcType(String bcType) {
  197 + this.bcType = bcType;
  198 + }
  199 +
  200 + public Boolean getIsSwitchXl() {
  201 + return isSwitchXl;
  202 + }
  203 +
  204 + public void setIsSwitchXl(Boolean isSwitchXl) {
  205 + this.isSwitchXl = isSwitchXl;
  206 + }
  207 +
  208 + public Line getSwitchXl() {
  209 + return switchXl;
  210 + }
  211 +
  212 + public void setSwitchXl(Line switchXl) {
  213 + this.switchXl = switchXl;
  214 + }
  215 +
  216 + public String getSwitchXlDesc() {
  217 + return switchXlDesc;
  218 + }
  219 +
  220 + public void setSwitchXlDesc(String switchXlDesc) {
  221 + this.switchXlDesc = switchXlDesc;
  222 + }
  223 +
  224 + public String getRemark() {
  225 + return remark;
  226 + }
  227 +
  228 + public void setRemark(String remark) {
  229 + this.remark = remark;
  230 + }
  231 +
  232 + public SysUser getCreateBy() {
  233 + return createBy;
  234 + }
  235 +
  236 + public void setCreateBy(SysUser createBy) {
  237 + this.createBy = createBy;
  238 + }
  239 +
  240 + public SysUser getUpdateBy() {
  241 + return updateBy;
  242 + }
  243 +
  244 + public void setUpdateBy(SysUser updateBy) {
  245 + this.updateBy = updateBy;
  246 + }
  247 +
  248 + public Date getCreateDate() {
  249 + return createDate;
  250 + }
  251 +
  252 + public void setCreateDate(Date createDate) {
  253 + this.createDate = createDate;
  254 + }
  255 +
  256 + public Date getUpdateDate() {
  257 + return updateDate;
  258 + }
  259 +
  260 + public void setUpdateDate(Date updateDate) {
  261 + this.updateDate = updateDate;
  262 + }
  263 +
  264 + public CarPark getTcc() {
  265 + return tcc;
  266 + }
  267 +
  268 + public void setTcc(CarPark tcc) {
  269 + this.tcc = tcc;
  270 + }
  271 +
  272 + public Boolean getIsFB() {
  273 + return isFB;
  274 + }
  275 +
  276 + public void setIsFB(Boolean isFB) {
  277 + this.isFB = isFB;
  278 + }
  279 +}
... ...
src/main/java/com/bsth/repository/CarDeviceRepository.java
1   -package com.bsth.repository;
2   -
3   -import com.bsth.entity.CarDevice;
4   -import org.springframework.stereotype.Repository;
5   -
6   -/**
7   - * Created by xu on 16/6/15.
8   - */
9   -@Repository
10   -public interface CarDeviceRepository extends BaseRepository<CarDevice, Long> {
11   -}
  1 +package com.bsth.repository;
  2 +
  3 +import com.bsth.entity.CarDevice;
  4 +import org.springframework.stereotype.Repository;
  5 +
  6 +/**
  7 + * Created by xu on 16/6/15.
  8 + */
  9 +@Repository
  10 +public interface CarDeviceRepository extends BaseRepository<CarDevice, Long> {
  11 +}
... ...
src/main/java/com/bsth/repository/PersonnelRepository.java
1   -package com.bsth.repository;
2   -
3   -import com.bsth.entity.Personnel;
4   -import org.springframework.stereotype.Repository;
5   -
6   -/**
7   - * Created by xu on 16/6/15.
8   - */
9   -@Repository
10   -public interface PersonnelRepository extends BaseRepository<Personnel, Integer> {
11   -}
  1 +package com.bsth.repository;
  2 +
  3 +import com.bsth.entity.Personnel;
  4 +import org.springframework.stereotype.Repository;
  5 +
  6 +/**
  7 + * Created by xu on 16/6/15.
  8 + */
  9 +@Repository
  10 +public interface PersonnelRepository extends BaseRepository<Personnel, Integer> {
  11 +}
... ...
src/main/java/com/bsth/repository/schedule/CarConfigInfoRepository.java
... ... @@ -2,10 +2,14 @@ package com.bsth.repository.schedule;
2 2  
3 3 import com.bsth.entity.schedule.CarConfigInfo;
4 4 import com.bsth.repository.BaseRepository;
  5 +
  6 +import java.util.List;
  7 +
5 8 import org.springframework.data.domain.Page;
6 9 import org.springframework.data.domain.Pageable;
7 10 import org.springframework.data.jpa.domain.Specification;
8 11 import org.springframework.data.jpa.repository.EntityGraph;
  12 +import org.springframework.data.jpa.repository.Query;
9 13 import org.springframework.stereotype.Repository;
10 14  
11 15 /**
... ... @@ -17,4 +21,8 @@ public interface CarConfigInfoRepository extends BaseRepository&lt;CarConfigInfo, L
17 21 @EntityGraph(value = "carConfigInfo_xl_cl", type = EntityGraph.EntityGraphType.FETCH)
18 22 @Override
19 23 Page<CarConfigInfo> findAll(Specification<CarConfigInfo> spec, Pageable pageable);
20   -}
  24 +
  25 + @EntityGraph(value = "carConfigInfo_xl_cl", type = EntityGraph.EntityGraphType.FETCH)
  26 + @Query("select cc from CarConfigInfo cc where cc.xl.lineCode=?1")
  27 + List<CarConfigInfo> findBylineCode(String lineCode);
  28 +}
21 29 \ No newline at end of file
... ...
src/main/java/com/bsth/repository/schedule/EmployeeConfigInfoRepository.java
... ... @@ -16,6 +16,6 @@ import org.springframework.stereotype.Repository;
16 16 public interface EmployeeConfigInfoRepository extends BaseRepository<EmployeeConfigInfo, Long> {
17 17  
18 18 @EntityGraph(value = "employeeConfigInfo_xl_cl", type = EntityGraph.EntityGraphType.FETCH)
19   - @Query("select ec from EmployeeConfigInfo ec where ec.xl.id=?1")
20   - List<EmployeeConfigInfo> findByLine(Integer lineId);
  19 + @Query("select ec from EmployeeConfigInfo ec where ec.xl.lineCode=?1")
  20 + List<EmployeeConfigInfo> findBylineCode(String lineCode);
21 21 }
... ...
src/main/java/com/bsth/repository/schedule/SchedulePlanRepository.java
1   -package com.bsth.repository.schedule;
2   -
3   -import com.bsth.entity.schedule.SchedulePlan;
4   -import com.bsth.repository.BaseRepository;
5   -import org.springframework.stereotype.Repository;
6   -
7   -/**
8   - * Created by xu on 16/6/16.
9   - */
10   -@Repository
11   -public interface SchedulePlanRepository extends BaseRepository<SchedulePlan, Long> {
12   -}
  1 +package com.bsth.repository.schedule;
  2 +
  3 +import com.bsth.entity.schedule.SchedulePlan;
  4 +import com.bsth.repository.BaseRepository;
  5 +import org.springframework.stereotype.Repository;
  6 +
  7 +/**
  8 + * Created by xu on 16/6/16.
  9 + */
  10 +@Repository
  11 +public interface SchedulePlanRepository extends BaseRepository<SchedulePlan, Long> {
  12 +}
... ...
src/main/java/com/bsth/service/CarDeviceService.java
1   -package com.bsth.service;
2   -
3   -import com.bsth.entity.CarDevice;
4   -
5   -/**
6   - * Created by xu on 16/6/15.
7   - */
8   -public interface CarDeviceService extends BaseService<CarDevice, Long> {
9   -}
  1 +package com.bsth.service;
  2 +
  3 +import com.bsth.entity.CarDevice;
  4 +
  5 +/**
  6 + * Created by xu on 16/6/15.
  7 + */
  8 +public interface CarDeviceService extends BaseService<CarDevice, Long> {
  9 +}
... ...
src/main/java/com/bsth/service/PersonnelService.java
1   -package com.bsth.service;
2   -
3   -import com.bsth.entity.Personnel;
4   -
5   -/**
6   - * Created by xu on 16/6/15.
7   - */
8   -public interface PersonnelService extends BaseService<Personnel, Integer> {
9   -}
  1 +package com.bsth.service;
  2 +
  3 +import com.bsth.entity.Personnel;
  4 +
  5 +/**
  6 + * Created by xu on 16/6/15.
  7 + */
  8 +public interface PersonnelService extends BaseService<Personnel, Integer> {
  9 +}
... ...
src/main/java/com/bsth/service/impl/CarDeviceServiceImpl.java
1   -package com.bsth.service.impl;
2   -
3   -import com.bsth.entity.CarDevice;
4   -import com.bsth.service.CarDeviceService;
5   -import org.springframework.stereotype.Service;
6   -
7   -/**
8   - * Created by xu on 16/6/15.
9   - */
10   -@Service
11   -public class CarDeviceServiceImpl extends BaseServiceImpl<CarDevice, Long> implements CarDeviceService {
12   -}
  1 +package com.bsth.service.impl;
  2 +
  3 +import com.bsth.entity.CarDevice;
  4 +import com.bsth.service.CarDeviceService;
  5 +import org.springframework.stereotype.Service;
  6 +
  7 +/**
  8 + * Created by xu on 16/6/15.
  9 + */
  10 +@Service
  11 +public class CarDeviceServiceImpl extends BaseServiceImpl<CarDevice, Long> implements CarDeviceService {
  12 +}
... ...
src/main/java/com/bsth/service/impl/PersonnelServiceImpl.java
1   -package com.bsth.service.impl;
2   -
3   -import com.bsth.entity.Personnel;
4   -import com.bsth.service.PersonnelService;
5   -import org.springframework.stereotype.Service;
6   -
7   -/**
8   - * Created by xu on 16/6/15.
9   - */
10   -@Service
11   -public class PersonnelServiceImpl extends BaseServiceImpl<Personnel, Integer> implements PersonnelService {
12   -}
  1 +package com.bsth.service.impl;
  2 +
  3 +import com.bsth.entity.Personnel;
  4 +import com.bsth.service.PersonnelService;
  5 +import org.springframework.stereotype.Service;
  6 +
  7 +/**
  8 + * Created by xu on 16/6/15.
  9 + */
  10 +@Service
  11 +public class PersonnelServiceImpl extends BaseServiceImpl<Personnel, Integer> implements PersonnelService {
  12 +}
... ...
src/main/java/com/bsth/service/realcontrol/ScheduleRealInfoService.java
1 1 package com.bsth.service.realcontrol;
2 2  
3 3 import java.util.Collection;
  4 +import java.util.List;
4 5 import java.util.Map;
5 6  
6 7 import org.springframework.stereotype.Service;
... ... @@ -17,4 +18,10 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L
17 18  
18 19 Map<String, Object> destroy(String idsStr, int spaceAdjust, String remarks, String reason, int spaceNum);
19 20  
  21 + List<Map<String, String>> findDriverByLine(String lineCode);
  22 +
  23 + List<Map<String, String>> findConductorByLine(String lineCode);
  24 +
  25 + List<Map<String, String>> findCarByLine(String lineCode);
  26 +
20 27 }
... ...
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
... ... @@ -14,8 +14,14 @@ import org.springframework.beans.factory.annotation.Autowired;
14 14 import org.springframework.stereotype.Service;
15 15  
16 16 import com.bsth.common.ResponseCode;
  17 +import com.bsth.entity.Cars;
  18 +import com.bsth.entity.Personnel;
17 19 import com.bsth.entity.realcontrol.ScheduleRealInfo;
  20 +import com.bsth.entity.schedule.CarConfigInfo;
  21 +import com.bsth.entity.schedule.EmployeeConfigInfo;
18 22 import com.bsth.repository.realcontrol.ScheduleRealInfoRepository;
  23 +import com.bsth.repository.schedule.CarConfigInfoRepository;
  24 +import com.bsth.repository.schedule.EmployeeConfigInfoRepository;
19 25 import com.bsth.service.impl.BaseServiceImpl;
20 26 import com.bsth.service.realcontrol.ScheduleRealInfoService;
21 27 import com.bsth.service.realcontrol.buffer.ScheduleBuffer;
... ... @@ -30,6 +36,12 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
30 36 @Autowired
31 37 ScheduleRealInfoRepository scheduleRealInfoRepository;
32 38  
  39 + @Autowired
  40 + EmployeeConfigInfoRepository employeeConfigInfoRepository;
  41 +
  42 + @Autowired
  43 + CarConfigInfoRepository carConfigInfoRepository;
  44 +
33 45 Logger logger = LoggerFactory.getLogger(this.getClass());
34 46  
35 47 SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd")
... ... @@ -139,4 +151,73 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
139 151 }
140 152 return map;
141 153 }
  154 +
  155 + //线路id获取驾驶员
  156 + @Override
  157 + public List<Map<String, String>> findDriverByLine(String lineCode) {
  158 + List<EmployeeConfigInfo> list = employeeConfigInfoRepository.findBylineCode(lineCode);
  159 +
  160 + List<Map<String, String>> rsList = new ArrayList<>();
  161 + Map<String, String> map = null;
  162 + Personnel driver = null;
  163 + String code = null;
  164 +
  165 + for(EmployeeConfigInfo employee : list){
  166 + driver = employee.getJsy();
  167 + if(driver != null){
  168 + map = new HashMap<>();
  169 + code = driver.getJobCode();
  170 + map.put("id", code);
  171 + map.put("text", code + "/" + driver.getPersonnelName());
  172 + rsList.add(map);
  173 + }
  174 + }
  175 + return rsList;
  176 + }
  177 +
  178 + //线路id获取售票员
  179 + @Override
  180 + public List<Map<String, String>> findConductorByLine(String lineCode) {
  181 + List<EmployeeConfigInfo> list = employeeConfigInfoRepository.findBylineCode(lineCode);
  182 +
  183 + List<Map<String, String>> rsList = new ArrayList<>();
  184 + Map<String, String> map = null;
  185 + Personnel conductor = null;
  186 + String code = null;
  187 +
  188 + for(EmployeeConfigInfo employee : list){
  189 + conductor = employee.getSpy();
  190 + if(conductor != null){
  191 + code = conductor.getJobCode();
  192 + map = new HashMap<>();
  193 + map.put("id", code);
  194 + map.put("text", code + "/" + conductor.getPersonnelName());
  195 + rsList.add(map);
  196 + }
  197 + }
  198 + return rsList;
  199 + }
  200 +
  201 + @Override
  202 + public List<Map<String, String>> findCarByLine(String lineCode) {
  203 +
  204 + List<CarConfigInfo> list = carConfigInfoRepository.findBylineCode(lineCode);
  205 +
  206 + List<Map<String, String>> rsList = new ArrayList<>();
  207 + Map<String, String> map = null;
  208 + Cars car = null;
  209 + String code = null;
  210 +
  211 + for(CarConfigInfo cci : list){
  212 + car = cci.getCl();
  213 + if(car != null){
  214 + code = car.getInsideCode();
  215 + map = new HashMap<>();
  216 + map.put("id", code);
  217 + map.put("text", code);
  218 + rsList.add(map);
  219 + }
  220 + }
  221 + return rsList;
  222 + }
142 223 }
... ...
src/main/java/com/bsth/service/schedule/SchedulePlanInfoService.java
1   -package com.bsth.service.schedule;
2   -
3   -import com.bsth.entity.schedule.SchedulePlanInfo;
4   -import com.bsth.service.BaseService;
5   -
6   -/**
7   - * Created by xu on 16/6/16.
8   - */
9   -public interface SchedulePlanInfoService extends BaseService<SchedulePlanInfo, Long> {
10   -}
  1 +package com.bsth.service.schedule;
  2 +
  3 +import com.bsth.entity.schedule.SchedulePlanInfo;
  4 +import com.bsth.service.BaseService;
  5 +
  6 +/**
  7 + * Created by xu on 16/6/16.
  8 + */
  9 +public interface SchedulePlanInfoService extends BaseService<SchedulePlanInfo, Long> {
  10 +}
... ...
src/main/java/com/bsth/service/schedule/SchedulePlanInfoServiceImpl.java
1   -package com.bsth.service.schedule;
2   -
3   -import com.bsth.entity.schedule.SchedulePlanInfo;
4   -import com.bsth.service.impl.BaseServiceImpl;
5   -import org.springframework.stereotype.Service;
6   -
7   -/**
8   - * Created by xu on 16/6/16.
9   - */
10   -@Service
11   -public class SchedulePlanInfoServiceImpl extends BaseServiceImpl<SchedulePlanInfo, Long> implements SchedulePlanInfoService {
12   -}
  1 +package com.bsth.service.schedule;
  2 +
  3 +import com.bsth.entity.schedule.SchedulePlanInfo;
  4 +import com.bsth.service.impl.BaseServiceImpl;
  5 +import org.springframework.stereotype.Service;
  6 +
  7 +/**
  8 + * Created by xu on 16/6/16.
  9 + */
  10 +@Service
  11 +public class SchedulePlanInfoServiceImpl extends BaseServiceImpl<SchedulePlanInfo, Long> implements SchedulePlanInfoService {
  12 +}
... ...
src/main/java/com/bsth/service/schedule/SchedulePlanService.java
1   -package com.bsth.service.schedule;
2   -
3   -import com.bsth.entity.schedule.SchedulePlan;
4   -import com.bsth.service.BaseService;
5   -
6   -/**
7   - * Created by xu on 16/6/16.
8   - */
9   -public interface SchedulePlanService extends BaseService<SchedulePlan, Long> {
10   -}
  1 +package com.bsth.service.schedule;
  2 +
  3 +import com.bsth.entity.schedule.SchedulePlan;
  4 +import com.bsth.service.BaseService;
  5 +
  6 +/**
  7 + * Created by xu on 16/6/16.
  8 + */
  9 +public interface SchedulePlanService extends BaseService<SchedulePlan, Long> {
  10 +}
... ...
src/main/java/com/bsth/service/schedule/SchedulePlanServiceImpl.java
1   -package com.bsth.service.schedule;
2   -
3   -import com.bsth.entity.schedule.SchedulePlan;
4   -import com.bsth.service.impl.BaseServiceImpl;
5   -import org.springframework.stereotype.Service;
6   -
7   -/**
8   - * Created by xu on 16/6/16.
9   - */
10   -@Service
11   -public class SchedulePlanServiceImpl extends BaseServiceImpl<SchedulePlan, Long> implements SchedulePlanService {
12   -}
  1 +package com.bsth.service.schedule;
  2 +
  3 +import com.bsth.entity.schedule.SchedulePlan;
  4 +import com.bsth.service.impl.BaseServiceImpl;
  5 +import org.springframework.stereotype.Service;
  6 +
  7 +/**
  8 + * Created by xu on 16/6/16.
  9 + */
  10 +@Service
  11 +public class SchedulePlanServiceImpl extends BaseServiceImpl<SchedulePlan, Long> implements SchedulePlanService {
  12 +}
... ...
src/main/java/com/bsth/service/schedule/rules/Message.java
1   -package com.bsth.service.schedule.rules;
2   -
3   -/**
4   - * Created by xu on 16/6/15.
5   - */
6   -public class Message {
7   - public static final int HELLO = 0;
8   - public static final int GOODBYE = 1;
9   -
10   - private String message;
11   - private int status;
12   - public String getMessage() {
13   - return message;
14   - }
15   - public void setMessage(String message) {
16   - this.message = message;
17   - }
18   - public int getStatus() {
19   - return status;
20   - }
21   - public void setStatus(int status) {
22   - this.status = status;
23   - }
24   -}
  1 +package com.bsth.service.schedule.rules;
  2 +
  3 +/**
  4 + * Created by xu on 16/6/15.
  5 + */
  6 +public class Message {
  7 + public static final int HELLO = 0;
  8 + public static final int GOODBYE = 1;
  9 +
  10 + private String message;
  11 + private int status;
  12 + public String getMessage() {
  13 + return message;
  14 + }
  15 + public void setMessage(String message) {
  16 + this.message = message;
  17 + }
  18 + public int getStatus() {
  19 + return status;
  20 + }
  21 + public void setStatus(int status) {
  22 + this.status = status;
  23 + }
  24 +}
... ...
src/main/java/com/bsth/service/schedule/rules/MyDroolsConfiguration.java
1   -package com.bsth.service.schedule.rules;
2   -
3   -import org.kie.api.KieBase;
4   -import org.kie.api.KieBaseConfiguration;
5   -import org.kie.api.KieServices;
6   -import org.kie.api.builder.*;
7   -import org.kie.api.builder.Message;
8   -import org.kie.api.builder.model.KieBaseModel;
9   -import org.kie.api.builder.model.KieModuleModel;
10   -import org.kie.api.builder.model.KieSessionModel;
11   -import org.kie.api.conf.EqualityBehaviorOption;
12   -import org.kie.api.conf.EventProcessingOption;
13   -import org.kie.api.runtime.KieContainer;
14   -import org.kie.api.runtime.conf.ClockTypeOption;
15   -import org.springframework.context.annotation.Bean;
16   -import org.springframework.context.annotation.Configuration;
17   -
18   -/**
19   - * Drools 6配置类。
20   - */
21   -@Configuration
22   -public class MyDroolsConfiguration {
23   - /**
24   - * 返回一个kiebase知识库,直接冲文件系统读入drl规则文件,
25   - * TODO:以后需要从数据库读入规则文件,并重新创建kbase知识库。
26   - */
27   - @Bean
28   - public KieBase myKieBase() {
29   - // Drools 6开始引入kie统一接口(jboss的jbpm工作流也使用kie接口了),整个定义方式和5差别很大
30   - // 这里使用全api方式创建知识库对象,不使用xml的方式,提供最大的灵活性
31   -
32   - // 1、创建kieservices
33   - KieServices kieServices = KieServices.Factory.get();
34   - // 2、创建KieModuleModel,默认是由kmodule.xml的方式创建,这里使用api方式闯将
35   - KieModuleModel kieModuleModel = kieServices.newKieModuleModel();
36   - // 2.1、创建KieBaseModel,类似kmodule.xml中的kbase标签
37   - KieBaseModel kieBaseModel1 = kieModuleModel.newKieBaseModel("KBase1")
38   - .setDefault(true)
39   - .setEqualsBehavior(EqualityBehaviorOption.EQUALITY)
40   - .setEventProcessingMode(EventProcessingOption.STREAM);
41   - // 2.2、创建与kbase关联的KieSessionModel,类似kmodule.xml中的kbase内的ksession标签
42   - kieBaseModel1.newKieSessionModel("KSession1")
43   - .setDefault(true)
44   - .setType(KieSessionModel.KieSessionType.STATEFUL)
45   - .setClockType(ClockTypeOption.get("realtime"));
46   -
47   - // 3、创建KieFileSystem,将模型xml,drl等写入,TODO:以后考虑从数据库中获取
48   - KieFileSystem kfs = kieServices.newKieFileSystem();
49   - // 3.1、写入KieBaseModel(内部包含了KieSessionModel的内容了,注意之前的KieSessionModel的创建方式)
50   - kfs.writeKModuleXML(kieModuleModel.toXML());
51   -
52   - // 3.2、写入drl(写法超多,有点混乱)
53   - // 这里使用文件的形式写入,TODO:以后考虑从数据库中读drl写入
54   - // 注意kfs写的时候如果指定path,强制为src/main/resources/加上文件名,还有就是文件名不要重复否则会覆盖的
55   - kfs.write("src/main/resources/HelloWorld.drl", kieServices.getResources()
56   - .newInputStreamResource(this.getClass().getResourceAsStream(
57   - "/rules/HelloWorld.drl"), "UTF-8"));
58   - kfs.write("src/main/resources/shiftloop.drl", kieServices.getResources()
59   - .newInputStreamResource(this.getClass().getResourceAsStream(
60   - "/rules/shiftloop.drl"), "UTF-8"));
61   - // TODO:还有其他drl....
62   -
63   - // 4、创建KieBuilder,使用KieFileSystem构建
64   - KieBuilder kieBuilder = kieServices.newKieBuilder(kfs).buildAll();
65   - Results results = kieBuilder.getResults();
66   - if (results.hasMessages(Message.Level.ERROR))
67   - throw new IllegalStateException("构建drools6错误:" + results.getMessages());
68   -
69   - // 5、获取KieContainer
70   - // TODO:ReleaseId用处很大,以后再议
71   - ReleaseId releaseId = kieServices.getRepository().getDefaultReleaseId();
72   - KieContainer kieContainer = kieServices.newKieContainer(releaseId);
73   -
74   - // 6、创建kbase
75   - KieBaseConfiguration kieBaseConfiguration = kieServices.newKieBaseConfiguration();
76   - KieBase kieBase = kieContainer.newKieBase("KBase1", kieBaseConfiguration);
77   -
78   - return kieBase;
79   - }
80   -}
  1 +package com.bsth.service.schedule.rules;
  2 +
  3 +import org.kie.api.KieBase;
  4 +import org.kie.api.KieBaseConfiguration;
  5 +import org.kie.api.KieServices;
  6 +import org.kie.api.builder.*;
  7 +import org.kie.api.builder.Message;
  8 +import org.kie.api.builder.model.KieBaseModel;
  9 +import org.kie.api.builder.model.KieModuleModel;
  10 +import org.kie.api.builder.model.KieSessionModel;
  11 +import org.kie.api.conf.EqualityBehaviorOption;
  12 +import org.kie.api.conf.EventProcessingOption;
  13 +import org.kie.api.runtime.KieContainer;
  14 +import org.kie.api.runtime.conf.ClockTypeOption;
  15 +import org.springframework.context.annotation.Bean;
  16 +import org.springframework.context.annotation.Configuration;
  17 +
  18 +/**
  19 + * Drools 6配置类。
  20 + */
  21 +@Configuration
  22 +public class MyDroolsConfiguration {
  23 + /**
  24 + * 返回一个kiebase知识库,直接冲文件系统读入drl规则文件,
  25 + * TODO:以后需要从数据库读入规则文件,并重新创建kbase知识库。
  26 + */
  27 + @Bean
  28 + public KieBase myKieBase() {
  29 + // Drools 6开始引入kie统一接口(jboss的jbpm工作流也使用kie接口了),整个定义方式和5差别很大
  30 + // 这里使用全api方式创建知识库对象,不使用xml的方式,提供最大的灵活性
  31 +
  32 + // 1、创建kieservices
  33 + KieServices kieServices = KieServices.Factory.get();
  34 + // 2、创建KieModuleModel,默认是由kmodule.xml的方式创建,这里使用api方式闯将
  35 + KieModuleModel kieModuleModel = kieServices.newKieModuleModel();
  36 + // 2.1、创建KieBaseModel,类似kmodule.xml中的kbase标签
  37 + KieBaseModel kieBaseModel1 = kieModuleModel.newKieBaseModel("KBase1")
  38 + .setDefault(true)
  39 + .setEqualsBehavior(EqualityBehaviorOption.EQUALITY)
  40 + .setEventProcessingMode(EventProcessingOption.STREAM);
  41 + // 2.2、创建与kbase关联的KieSessionModel,类似kmodule.xml中的kbase内的ksession标签
  42 + kieBaseModel1.newKieSessionModel("KSession1")
  43 + .setDefault(true)
  44 + .setType(KieSessionModel.KieSessionType.STATEFUL)
  45 + .setClockType(ClockTypeOption.get("realtime"));
  46 +
  47 + // 3、创建KieFileSystem,将模型xml,drl等写入,TODO:以后考虑从数据库中获取
  48 + KieFileSystem kfs = kieServices.newKieFileSystem();
  49 + // 3.1、写入KieBaseModel(内部包含了KieSessionModel的内容了,注意之前的KieSessionModel的创建方式)
  50 + kfs.writeKModuleXML(kieModuleModel.toXML());
  51 +
  52 + // 3.2、写入drl(写法超多,有点混乱)
  53 + // 这里使用文件的形式写入,TODO:以后考虑从数据库中读drl写入
  54 + // 注意kfs写的时候如果指定path,强制为src/main/resources/加上文件名,还有就是文件名不要重复否则会覆盖的
  55 + kfs.write("src/main/resources/HelloWorld.drl", kieServices.getResources()
  56 + .newInputStreamResource(this.getClass().getResourceAsStream(
  57 + "/rules/HelloWorld.drl"), "UTF-8"));
  58 + kfs.write("src/main/resources/shiftloop.drl", kieServices.getResources()
  59 + .newInputStreamResource(this.getClass().getResourceAsStream(
  60 + "/rules/shiftloop.drl"), "UTF-8"));
  61 + // TODO:还有其他drl....
  62 +
  63 + // 4、创建KieBuilder,使用KieFileSystem构建
  64 + KieBuilder kieBuilder = kieServices.newKieBuilder(kfs).buildAll();
  65 + Results results = kieBuilder.getResults();
  66 + if (results.hasMessages(Message.Level.ERROR))
  67 + throw new IllegalStateException("构建drools6错误:" + results.getMessages());
  68 +
  69 + // 5、获取KieContainer
  70 + // TODO:ReleaseId用处很大,以后再议
  71 + ReleaseId releaseId = kieServices.getRepository().getDefaultReleaseId();
  72 + KieContainer kieContainer = kieServices.newKieContainer(releaseId);
  73 +
  74 + // 6、创建kbase
  75 + KieBaseConfiguration kieBaseConfiguration = kieServices.newKieBaseConfiguration();
  76 + KieBase kieBase = kieContainer.newKieBase("KBase1", kieBaseConfiguration);
  77 +
  78 + return kieBase;
  79 + }
  80 +}
... ...
src/main/java/com/bsth/service/schedule/rules/shiftloop/ScheduleCalcuParam_input.java
1   -package com.bsth.service.schedule.rules.shiftloop;
2   -
3   -import org.joda.time.DateTime;
4   -
5   -/**
6   - * 排班计算参数_输入。
7   - */
8   -public class ScheduleCalcuParam_input {
9   - /** 开始计算日期 */
10   - private DateTime fromDate;
11   - /** 结束计算日期 */
12   - private DateTime toDate;
13   - /** 时刻表id */
14   - private Long ttinfoId;
15   -
16   - public DateTime getFromDate() {
17   - return fromDate;
18   - }
19   -
20   - public void setFromDate(DateTime fromDate) {
21   - this.fromDate = fromDate;
22   - }
23   -
24   - public DateTime getToDate() {
25   - return toDate;
26   - }
27   -
28   - public void setToDate(DateTime toDate) {
29   - this.toDate = toDate;
30   - }
31   -
32   - public Long getTtinfoId() {
33   - return ttinfoId;
34   - }
35   -
36   - public void setTtinfoId(Long ttinfoId) {
37   - this.ttinfoId = ttinfoId;
38   - }
39   -}
  1 +package com.bsth.service.schedule.rules.shiftloop;
  2 +
  3 +import org.joda.time.DateTime;
  4 +
  5 +/**
  6 + * 排班计算参数_输入。
  7 + */
  8 +public class ScheduleCalcuParam_input {
  9 + /** 开始计算日期 */
  10 + private DateTime fromDate;
  11 + /** 结束计算日期 */
  12 + private DateTime toDate;
  13 + /** 时刻表id */
  14 + private Long ttinfoId;
  15 +
  16 + public DateTime getFromDate() {
  17 + return fromDate;
  18 + }
  19 +
  20 + public void setFromDate(DateTime fromDate) {
  21 + this.fromDate = fromDate;
  22 + }
  23 +
  24 + public DateTime getToDate() {
  25 + return toDate;
  26 + }
  27 +
  28 + public void setToDate(DateTime toDate) {
  29 + this.toDate = toDate;
  30 + }
  31 +
  32 + public Long getTtinfoId() {
  33 + return ttinfoId;
  34 + }
  35 +
  36 + public void setTtinfoId(Long ttinfoId) {
  37 + this.ttinfoId = ttinfoId;
  38 + }
  39 +}
... ...
src/main/java/com/bsth/service/schedule/rules/shiftloop/ScheduleResult_output.java
1   -package com.bsth.service.schedule.rules.shiftloop;
2   -
3   -import org.joda.time.DateTime;
4   -
5   -/**
6   - * 规则计算出的结果_输出。
7   - */
8   -public class ScheduleResult_output {
9   - /** 具体日期 */
10   - private DateTime sd;
11   - /** 用的是哪一组rule */
12   - private Long ruleId;
13   - /** 路牌id */
14   - private Long guideboardId;
15   - /** 人员配置id */
16   - private Long employeeConfigId;
17   - /** 车辆配置id */
18   - private Long carConfigId;
19   -
20   - public DateTime getSd() {
21   - return sd;
22   - }
23   -
24   - public void setSd(DateTime sd) {
25   - this.sd = sd;
26   - }
27   -
28   - public Long getGuideboardId() {
29   - return guideboardId;
30   - }
31   -
32   - public void setGuideboardId(Long guideboardId) {
33   - this.guideboardId = guideboardId;
34   - }
35   -
36   - public Long getEmployeeConfigId() {
37   - return employeeConfigId;
38   - }
39   -
40   - public void setEmployeeConfigId(Long employeeConfigId) {
41   - this.employeeConfigId = employeeConfigId;
42   - }
43   -
44   - public Long getCarConfigId() {
45   - return carConfigId;
46   - }
47   -
48   - public void setCarConfigId(Long carConfigId) {
49   - this.carConfigId = carConfigId;
50   - }
51   -
52   - public Long getRuleId() {
53   - return ruleId;
54   - }
55   -
56   - public void setRuleId(Long ruleId) {
57   - this.ruleId = ruleId;
58   - }
59   -
60   -}
  1 +package com.bsth.service.schedule.rules.shiftloop;
  2 +
  3 +import org.joda.time.DateTime;
  4 +
  5 +/**
  6 + * 规则计算出的结果_输出。
  7 + */
  8 +public class ScheduleResult_output {
  9 + /** 具体日期 */
  10 + private DateTime sd;
  11 + /** 用的是哪一组rule */
  12 + private Long ruleId;
  13 + /** 路牌id */
  14 + private Long guideboardId;
  15 + /** 人员配置id */
  16 + private Long employeeConfigId;
  17 + /** 车辆配置id */
  18 + private Long carConfigId;
  19 +
  20 + public DateTime getSd() {
  21 + return sd;
  22 + }
  23 +
  24 + public void setSd(DateTime sd) {
  25 + this.sd = sd;
  26 + }
  27 +
  28 + public Long getGuideboardId() {
  29 + return guideboardId;
  30 + }
  31 +
  32 + public void setGuideboardId(Long guideboardId) {
  33 + this.guideboardId = guideboardId;
  34 + }
  35 +
  36 + public Long getEmployeeConfigId() {
  37 + return employeeConfigId;
  38 + }
  39 +
  40 + public void setEmployeeConfigId(Long employeeConfigId) {
  41 + this.employeeConfigId = employeeConfigId;
  42 + }
  43 +
  44 + public Long getCarConfigId() {
  45 + return carConfigId;
  46 + }
  47 +
  48 + public void setCarConfigId(Long carConfigId) {
  49 + this.carConfigId = carConfigId;
  50 + }
  51 +
  52 + public Long getRuleId() {
  53 + return ruleId;
  54 + }
  55 +
  56 + public void setRuleId(Long ruleId) {
  57 + this.ruleId = ruleId;
  58 + }
  59 +
  60 +}
... ...
src/main/java/com/bsth/service/schedule/rules/shiftloop/ScheduleResults_output.java
1   -package com.bsth.service.schedule.rules.shiftloop;
2   -
3   -import org.apache.commons.lang3.StringUtils;
4   -
5   -import java.util.*;
6   -
7   -/**
8   - * 输出结果集合。
9   - */
10   -public class ScheduleResults_output {
11   - /** 输出列表 */
12   - private List<ScheduleResult_output> results = new ArrayList<>();
13   -
14   - public List<ScheduleResult_output> getResults() {
15   - return results;
16   - }
17   -
18   - public void setResults(List<ScheduleResult_output> results) {
19   - this.results = results;
20   - }
21   -
22   - /**
23   - * 输出每个规则排出来的路牌id列表
24   - * @return
25   - */
26   - public String showGuideboardDesc1() {
27   - StringBuilder stringBuilder = new StringBuilder();
28   - Map<Long, List<ScheduleResult_output>> groupRuleIdGuideBoardMap = new HashMap<>();
29   - for (ScheduleResult_output s : results) {
30   - if (groupRuleIdGuideBoardMap.get(s.getRuleId()) == null) {
31   - groupRuleIdGuideBoardMap.put(s.getRuleId(), new ArrayList<ScheduleResult_output>());
32   - }
33   - groupRuleIdGuideBoardMap.get(s.getRuleId()).add(s);
34   - }
35   -
36   - for (Long ruleId : groupRuleIdGuideBoardMap.keySet()) {
37   - Collections.sort(groupRuleIdGuideBoardMap.get(ruleId), new Comparator<ScheduleResult_output>() {
38   - @Override
39   - public int compare(ScheduleResult_output o1, ScheduleResult_output o2) {
40   - return o1.getSd().compareTo(o2.getSd());
41   - }
42   - });
43   -
44   - List<Long> gbids = new ArrayList<>();
45   - List<Long> ecids = new ArrayList<>();
46   - for (ScheduleResult_output so : groupRuleIdGuideBoardMap.get(ruleId)) {
47   - gbids.add(so.getGuideboardId());
48   - ecids.add(so.getEmployeeConfigId());
49   - }
50   -
51   - stringBuilder.append(
52   - "规则id=" + ruleId + ", " +
53   - "路牌列表=" + StringUtils.join(gbids, ",") + "\n");
54   - stringBuilder.append(
55   - "规则id=" + ruleId + ", " +
56   - "人员配置列表=" + StringUtils.join(ecids, ",") + "\n");
57   - }
58   -
59   - return stringBuilder.toString();
60   - }
61   -
62   - // TODO:人员输出
63   -}
  1 +package com.bsth.service.schedule.rules.shiftloop;
  2 +
  3 +import org.apache.commons.lang3.StringUtils;
  4 +
  5 +import java.util.*;
  6 +
  7 +/**
  8 + * 输出结果集合。
  9 + */
  10 +public class ScheduleResults_output {
  11 + /** 输出列表 */
  12 + private List<ScheduleResult_output> results = new ArrayList<>();
  13 +
  14 + public List<ScheduleResult_output> getResults() {
  15 + return results;
  16 + }
  17 +
  18 + public void setResults(List<ScheduleResult_output> results) {
  19 + this.results = results;
  20 + }
  21 +
  22 + /**
  23 + * 输出每个规则排出来的路牌id列表
  24 + * @return
  25 + */
  26 + public String showGuideboardDesc1() {
  27 + StringBuilder stringBuilder = new StringBuilder();
  28 + Map<Long, List<ScheduleResult_output>> groupRuleIdGuideBoardMap = new HashMap<>();
  29 + for (ScheduleResult_output s : results) {
  30 + if (groupRuleIdGuideBoardMap.get(s.getRuleId()) == null) {
  31 + groupRuleIdGuideBoardMap.put(s.getRuleId(), new ArrayList<ScheduleResult_output>());
  32 + }
  33 + groupRuleIdGuideBoardMap.get(s.getRuleId()).add(s);
  34 + }
  35 +
  36 + for (Long ruleId : groupRuleIdGuideBoardMap.keySet()) {
  37 + Collections.sort(groupRuleIdGuideBoardMap.get(ruleId), new Comparator<ScheduleResult_output>() {
  38 + @Override
  39 + public int compare(ScheduleResult_output o1, ScheduleResult_output o2) {
  40 + return o1.getSd().compareTo(o2.getSd());
  41 + }
  42 + });
  43 +
  44 + List<Long> gbids = new ArrayList<>();
  45 + List<Long> ecids = new ArrayList<>();
  46 + for (ScheduleResult_output so : groupRuleIdGuideBoardMap.get(ruleId)) {
  47 + gbids.add(so.getGuideboardId());
  48 + ecids.add(so.getEmployeeConfigId());
  49 + }
  50 +
  51 + stringBuilder.append(
  52 + "规则id=" + ruleId + ", " +
  53 + "路牌列表=" + StringUtils.join(gbids, ",") + "\n");
  54 + stringBuilder.append(
  55 + "规则id=" + ruleId + ", " +
  56 + "人员配置列表=" + StringUtils.join(ecids, ",") + "\n");
  57 + }
  58 +
  59 + return stringBuilder.toString();
  60 + }
  61 +
  62 + // TODO:人员输出
  63 +}
... ...
src/main/java/com/bsth/service/schedule/rules/shiftloop/ScheduleRule_input.java
1   -package com.bsth.service.schedule.rules.shiftloop;
2   -
3   -import org.joda.time.DateTime;
4   -
5   -import java.util.ArrayList;
6   -import java.util.List;
7   -
8   -/**
9   - * 排班规则_输入。
10   - */
11   -public class ScheduleRule_input {
12   - /** 规则Id */
13   - private Long ruleId;
14   - /** 规则启用日期 */
15   - private DateTime qyrq;
16   -
17   - /** 路牌范围 */
18   - private List<Long> guideboardIds = new ArrayList<>();
19   - /** 起始路牌下标 */
20   - private int startGbdIndex;
21   -
22   - /** 人员范围 */
23   - private List<Long> employeeConfigIds = new ArrayList<>();
24   - /** 起始人员下标 */
25   - private int startEIndex;
26   -
27   - /** 车辆配置id */
28   - private Long carConfigId;
29   -
30   - // TODO:车辆翻班暂时不考虑进去
31   -
32   -
33   - public Long getRuleId() {
34   - return ruleId;
35   - }
36   -
37   - public void setRuleId(Long ruleId) {
38   - this.ruleId = ruleId;
39   - }
40   -
41   - public DateTime getQyrq() {
42   - return qyrq;
43   - }
44   -
45   - public void setQyrq(DateTime qyrq) {
46   - this.qyrq = qyrq;
47   - }
48   -
49   - public List<Long> getGuideboardIds() {
50   - return guideboardIds;
51   - }
52   -
53   - public void setGuideboardIds(List<Long> guideboardIds) {
54   - this.guideboardIds = guideboardIds;
55   - }
56   -
57   - public int getStartGbdIndex() {
58   - return startGbdIndex;
59   - }
60   -
61   - public void setStartGbdIndex(int startGbdIndex) {
62   - this.startGbdIndex = startGbdIndex;
63   - }
64   -
65   - public List<Long> getEmployeeConfigIds() {
66   - return employeeConfigIds;
67   - }
68   -
69   - public void setEmployeeConfigIds(List<Long> employeeConfigIds) {
70   - this.employeeConfigIds = employeeConfigIds;
71   - }
72   -
73   - public int getStartEIndex() {
74   - return startEIndex;
75   - }
76   -
77   - public void setStartEIndex(int startEIndex) {
78   - this.startEIndex = startEIndex;
79   - }
80   -
81   - public Long getCarConfigId() {
82   - return carConfigId;
83   - }
84   -
85   - public void setCarConfigId(Long carConfigId) {
86   - this.carConfigId = carConfigId;
87   - }
88   -}
  1 +package com.bsth.service.schedule.rules.shiftloop;
  2 +
  3 +import org.joda.time.DateTime;
  4 +
  5 +import java.util.ArrayList;
  6 +import java.util.List;
  7 +
  8 +/**
  9 + * 排班规则_输入。
  10 + */
  11 +public class ScheduleRule_input {
  12 + /** 规则Id */
  13 + private Long ruleId;
  14 + /** 规则启用日期 */
  15 + private DateTime qyrq;
  16 +
  17 + /** 路牌范围 */
  18 + private List<Long> guideboardIds = new ArrayList<>();
  19 + /** 起始路牌下标 */
  20 + private int startGbdIndex;
  21 +
  22 + /** 人员范围 */
  23 + private List<Long> employeeConfigIds = new ArrayList<>();
  24 + /** 起始人员下标 */
  25 + private int startEIndex;
  26 +
  27 + /** 车辆配置id */
  28 + private Long carConfigId;
  29 +
  30 + // TODO:车辆翻班暂时不考虑进去
  31 +
  32 +
  33 + public Long getRuleId() {
  34 + return ruleId;
  35 + }
  36 +
  37 + public void setRuleId(Long ruleId) {
  38 + this.ruleId = ruleId;
  39 + }
  40 +
  41 + public DateTime getQyrq() {
  42 + return qyrq;
  43 + }
  44 +
  45 + public void setQyrq(DateTime qyrq) {
  46 + this.qyrq = qyrq;
  47 + }
  48 +
  49 + public List<Long> getGuideboardIds() {
  50 + return guideboardIds;
  51 + }
  52 +
  53 + public void setGuideboardIds(List<Long> guideboardIds) {
  54 + this.guideboardIds = guideboardIds;
  55 + }
  56 +
  57 + public int getStartGbdIndex() {
  58 + return startGbdIndex;
  59 + }
  60 +
  61 + public void setStartGbdIndex(int startGbdIndex) {
  62 + this.startGbdIndex = startGbdIndex;
  63 + }
  64 +
  65 + public List<Long> getEmployeeConfigIds() {
  66 + return employeeConfigIds;
  67 + }
  68 +
  69 + public void setEmployeeConfigIds(List<Long> employeeConfigIds) {
  70 + this.employeeConfigIds = employeeConfigIds;
  71 + }
  72 +
  73 + public int getStartEIndex() {
  74 + return startEIndex;
  75 + }
  76 +
  77 + public void setStartEIndex(int startEIndex) {
  78 + this.startEIndex = startEIndex;
  79 + }
  80 +
  81 + public Long getCarConfigId() {
  82 + return carConfigId;
  83 + }
  84 +
  85 + public void setCarConfigId(Long carConfigId) {
  86 + this.carConfigId = carConfigId;
  87 + }
  88 +}
... ...
src/main/java/com/bsth/service/schedule/utils/DataImportExportService.java
1   -package com.bsth.service.schedule.utils;
2   -
3   -import org.springframework.web.multipart.MultipartFile;
4   -
5   -import java.io.File;
6   -
7   -/**
8   - * 数据导入导出服务。
9   - */
10   -public interface DataImportExportService {
11   - /**
12   - * 上传文件。
13   - * @param file mutipartFile
14   - * @return 上传后的文件路径
15   - * @throws Exception
16   - */
17   - File uploadFile(MultipartFile file) throws Exception;
18   -
19   - /**
20   - * 上传文件,并导入文件数据。
21   - * @param datafile 上传的文件
22   - * @param ktrFile 导入的逻辑ktr文件
23   - * @throws Exception
24   - */
25   - void fileDataImport(MultipartFile datafile, File ktrFile) throws Exception;
26   -}
  1 +package com.bsth.service.schedule.utils;
  2 +
  3 +import org.springframework.web.multipart.MultipartFile;
  4 +
  5 +import java.io.File;
  6 +
  7 +/**
  8 + * 数据导入导出服务。
  9 + */
  10 +public interface DataImportExportService {
  11 + /**
  12 + * 上传文件。
  13 + * @param file mutipartFile
  14 + * @return 上传后的文件路径
  15 + * @throws Exception
  16 + */
  17 + File uploadFile(MultipartFile file) throws Exception;
  18 +
  19 + /**
  20 + * 上传文件,并导入文件数据。
  21 + * @param datafile 上传的文件
  22 + * @param ktrFile 导入的逻辑ktr文件
  23 + * @throws Exception
  24 + */
  25 + void fileDataImport(MultipartFile datafile, File ktrFile) throws Exception;
  26 +}
... ...
src/main/java/com/bsth/service/schedule/utils/DataImportExportServiceImpl.java
1   -package com.bsth.service.schedule.utils;
2   -
3   -import com.google.common.io.Files;
4   -import org.pentaho.di.core.KettleEnvironment;
5   -import org.pentaho.di.core.util.EnvUtil;
6   -import org.pentaho.di.trans.Trans;
7   -import org.pentaho.di.trans.TransMeta;
8   -import org.springframework.beans.factory.annotation.Autowired;
9   -import org.springframework.boot.context.properties.EnableConfigurationProperties;
10   -import org.springframework.stereotype.Service;
11   -import org.springframework.web.multipart.MultipartFile;
12   -
13   -import java.io.File;
14   -
15   -/**
16   - * Created by xu on 16/6/23.
17   - */
18   -@Service
19   -@EnableConfigurationProperties(DataToolsProperties.class)
20   -public class DataImportExportServiceImpl implements DataImportExportService {
21   -
22   - @Autowired
23   - private DataToolsProperties dataToolsProperties;
24   -
25   - @Override
26   - public File uploadFile(MultipartFile file) throws Exception {
27   - // TODO:以后的文件名要加时间戳
28   - File newFile = new File(
29   - dataToolsProperties.getFileuploadDir() + File.separator +
30   - file.getOriginalFilename());
31   - Files.write(file.getBytes(), newFile);
32   - return newFile;
33   - }
34   -
35   - @Override
36   - public void fileDataImport(MultipartFile datafile, File ktrFile) throws Exception {
37   - // 1、上传数据文件
38   - File uploadFile = uploadFile(datafile);
39   -
40   - // 2、使用kettle运行封装数据导入逻辑的ktr转换文件
41   - // 2.1、初始化kettle
42   - EnvUtil.environmentInit();
43   - KettleEnvironment.init();
44   - // 2.2、创建转换元数据,转换
45   - TransMeta transMeta = new TransMeta(ktrFile.getAbsolutePath());
46   - Trans trans = new Trans(transMeta);
47   - // 2.3、设定命名参数,用于指定数据文件,注意每个ktr必须都有以下指定的命名参数
48   - trans.setParameterValue("filepath", uploadFile.getAbsolutePath()); // 指定导入数据文件的位置
49   - trans.setParameterValue("erroroutputdir", dataToolsProperties.getTransErrordir()); // ktr转换错误输出目录
50   - // TODO:可以考虑设定日志输出
51   - // 2.4、执行转换
52   - trans.execute(null);
53   - // 2.5、等待转换结束
54   - trans.waitUntilFinished();
55   -
56   - // 3、判定ktr错误数,注意这种错误代表部分数据错误,不会终止转换执行,一般设计ktr的时候,会有错误输出文件,TODO:以后考虑使用日志实时输出
57   - if (trans.getErrors() > 0) {
58   - throw new Exception("转换数据部分错误,请查看相关错误输出文件!");
59   - }
60   - }
61   -}
  1 +package com.bsth.service.schedule.utils;
  2 +
  3 +import com.google.common.io.Files;
  4 +import org.pentaho.di.core.KettleEnvironment;
  5 +import org.pentaho.di.core.util.EnvUtil;
  6 +import org.pentaho.di.trans.Trans;
  7 +import org.pentaho.di.trans.TransMeta;
  8 +import org.springframework.beans.factory.annotation.Autowired;
  9 +import org.springframework.boot.context.properties.EnableConfigurationProperties;
  10 +import org.springframework.stereotype.Service;
  11 +import org.springframework.web.multipart.MultipartFile;
  12 +
  13 +import java.io.File;
  14 +
  15 +/**
  16 + * Created by xu on 16/6/23.
  17 + */
  18 +@Service
  19 +@EnableConfigurationProperties(DataToolsProperties.class)
  20 +public class DataImportExportServiceImpl implements DataImportExportService {
  21 +
  22 + @Autowired
  23 + private DataToolsProperties dataToolsProperties;
  24 +
  25 + @Override
  26 + public File uploadFile(MultipartFile file) throws Exception {
  27 + // TODO:以后的文件名要加时间戳
  28 + File newFile = new File(
  29 + dataToolsProperties.getFileuploadDir() + File.separator +
  30 + file.getOriginalFilename());
  31 + Files.write(file.getBytes(), newFile);
  32 + return newFile;
  33 + }
  34 +
  35 + @Override
  36 + public void fileDataImport(MultipartFile datafile, File ktrFile) throws Exception {
  37 + // 1、上传数据文件
  38 + File uploadFile = uploadFile(datafile);
  39 +
  40 + // 2、使用kettle运行封装数据导入逻辑的ktr转换文件
  41 + // 2.1、初始化kettle
  42 + EnvUtil.environmentInit();
  43 + KettleEnvironment.init();
  44 + // 2.2、创建转换元数据,转换
  45 + TransMeta transMeta = new TransMeta(ktrFile.getAbsolutePath());
  46 + Trans trans = new Trans(transMeta);
  47 + // 2.3、设定命名参数,用于指定数据文件,注意每个ktr必须都有以下指定的命名参数
  48 + trans.setParameterValue("filepath", uploadFile.getAbsolutePath()); // 指定导入数据文件的位置
  49 + trans.setParameterValue("erroroutputdir", dataToolsProperties.getTransErrordir()); // ktr转换错误输出目录
  50 + // TODO:可以考虑设定日志输出
  51 + // 2.4、执行转换
  52 + trans.execute(null);
  53 + // 2.5、等待转换结束
  54 + trans.waitUntilFinished();
  55 +
  56 + // 3、判定ktr错误数,注意这种错误代表部分数据错误,不会终止转换执行,一般设计ktr的时候,会有错误输出文件,TODO:以后考虑使用日志实时输出
  57 + if (trans.getErrors() > 0) {
  58 + throw new Exception("转换数据部分错误,请查看相关错误输出文件!");
  59 + }
  60 + }
  61 +}
... ...
src/main/java/com/bsth/util/TransGPS.java
... ... @@ -82,7 +82,7 @@ public class TransGPS {
82 82 return mgLoc;
83 83 }
84 84  
85   - Location transformFromGCJToWGS(Location gcLoc) {
  85 + public static Location transformFromGCJToWGS(Location gcLoc) {
86 86 Location wgLoc = new Location();
87 87 wgLoc.lat = gcLoc.lat;
88 88 wgLoc.lng = gcLoc.lng;
... ...
src/main/java/com/bsth/vehicle/gpsdata/GpsArrivalStationThread.java
... ... @@ -8,7 +8,6 @@ import java.text.SimpleDateFormat;
8 8 import java.util.ArrayList;
9 9 import java.util.Calendar;
10 10 import java.util.Iterator;
11   -import java.util.LinkedList;
12 11 import java.util.List;
13 12 import java.util.Set;
14 13  
... ... @@ -37,7 +36,7 @@ public class GpsArrivalStationThread extends Thread{
37 36 Logger logger = LoggerFactory.getLogger(this.getClass());
38 37 SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
39 38  
40   - private static int diff = 1000 * 60 * 60;
  39 + private static int diff = 1000 * 60 * 20;
41 40  
42 41 @Override
43 42 public void run() {
... ... @@ -47,7 +46,6 @@ public class GpsArrivalStationThread extends Thread{
47 46 } catch (ParseException e) {
48 47 e.printStackTrace();
49 48 }
50   - System.out.println("size: " + list.size());
51 49 GpsArrivalDataBuffer.putAll(list);
52 50 //实际到离站和计划排班相匹配
53 51  
... ... @@ -85,26 +83,62 @@ public class GpsArrivalStationThread extends Thread{
85 83 }
86 84 }
87 85  
88   - //单个匹配
89 86 public void match(ScheduleRealInfo scInfo, ArrivalInfo arr){
  87 + try{
  88 + //匹配起点
  89 + matchStart(scInfo, arr);
  90 +
  91 + //计划终点
  92 + matchEnd(scInfo, arr);
  93 + }catch(Exception e){
  94 + e.printStackTrace();
  95 + }
  96 + }
  97 +
  98 + /**
  99 + *
  100 + * @Title: matchStart
  101 + * @Description: TODO(匹配起点 出站时间)
  102 + * @param @param scInfo
  103 + * @throws
  104 + */
  105 + public void matchStart(ScheduleRealInfo scInfo, ArrivalInfo arr){
  106 + if(scInfo.getFcsjT() == null
  107 + || arr.getInOut() != 1)
  108 + return;
  109 +
90 110 Long ts = arr.getTs();
91   - //起点
92   - if(scInfo.getFcsjActualTime() == null
93   - && scInfo.getQdzCode().equals(arr.getStopNo())
  111 + //起点站和发车时间比比较
  112 + if(scInfo.getQdzCode().equals(arr.getStopNo())
94 113 && Math.abs(scInfo.getFcsjT() - ts) < diff){
95   -
96 114 scInfo.setFcsjActualTime(ts);
97 115 scInfo.setFcsjActual(sdf.format(ts));
  116 +
98 117 System.out.println("成功匹配一个起点...");
  118 + ScheduleBuffer.persistentList.add(scInfo);
99 119 }
100   - //终点
101   - if(scInfo.getZdsjActualTime() == null
102   - && scInfo.getZdzCode().equals(arr.getStopNo())
  120 + }
  121 +
  122 + /**
  123 + *
  124 + * @Title: matchEnd
  125 + * @Description: TODO(匹配终点 进站时间)
  126 + * @throws
  127 + */
  128 + public void matchEnd(ScheduleRealInfo scInfo, ArrivalInfo arr){
  129 + if(scInfo.getZdsjT() == null
  130 + || arr.getInOut() != 0)
  131 + return;
  132 +
  133 + Long ts = arr.getTs();
  134 + //终点站和发车时间比较
  135 + if(scInfo.getZdzCode().equals(arr.getStopNo())
103 136 && Math.abs(scInfo.getZdsjT() - ts) < diff){
104   -
105 137 scInfo.setZdsjActualTime(ts);
106 138 scInfo.setZdsjActual(sdf.format(ts));
  139 +
107 140 System.out.println("成功匹配一个终点...");
  141 + ScheduleBuffer.persistentList.add(scInfo);
108 142 }
109 143 }
110 144  
... ... @@ -136,7 +170,7 @@ public class GpsArrivalStationThread extends Thread{
136 170 conn = DBUtils_MS.getConnection();
137 171 ps = conn.prepareStatement(sql);
138 172 ps.setInt(1, weeks_year);
139   - ps.setLong(2, GpsArrivalDataBuffer.markTime);
  173 + ps.setLong(2, /*GpsArrivalDataBuffer.markTime*/1467099600000L);
140 174  
141 175 Long t = System.currentTimeMillis();
142 176 rs = ps.executeQuery();
... ...
src/main/java/com/bsth/vehicle/gpsdata/controller/GpsDataController.java
1 1 package com.bsth.vehicle.gpsdata.controller;
2 2  
3 3 import java.util.List;
  4 +import java.util.Map;
4 5  
5 6 import org.springframework.beans.factory.annotation.Autowired;
6 7 import org.springframework.web.bind.annotation.PathVariable;
... ... @@ -10,6 +11,7 @@ import org.springframework.web.bind.annotation.RestController;
10 11  
11 12 import com.bsth.vehicle.gpsdata.buffer.GpsRealDataBuffer;
12 13 import com.bsth.vehicle.gpsdata.entity.GpsRealData;
  14 +import com.bsth.vehicle.gpsdata.service.GpsDataService;
13 15 import com.google.common.base.Splitter;
14 16  
15 17 @RestController
... ... @@ -19,6 +21,9 @@ public class GpsDataController {
19 21 @Autowired
20 22 GpsRealDataBuffer gpsBuffer;
21 23  
  24 + @Autowired
  25 + GpsDataService gpsDataService;
  26 +
22 27 @RequestMapping(value = "/real/line/{lineCode}")
23 28 public List<GpsRealData> findByLineCode(@PathVariable("lineCode") Integer lineCode){
24 29 return gpsBuffer.getListByLineCode(lineCode);
... ... @@ -28,4 +33,13 @@ public class GpsDataController {
28 33 public List<GpsRealData> findByLineCode(@RequestParam String lineCodes){
29 34 return gpsBuffer.getListByLines(Splitter.on(",").split(lineCodes).iterator());
30 35 }
  36 +
  37 + @RequestMapping(value = "/history/{device}")
  38 + public List<Map<String, Object>> history(@PathVariable("device") String device
  39 + ,@RequestParam Long startTime
  40 + ,@RequestParam Long endTime,
  41 + @RequestParam int directions){
  42 +
  43 + return gpsDataService.history(device, startTime, endTime, directions);
  44 + }
31 45 }
... ...
src/main/java/com/bsth/vehicle/gpsdata/entity/ArrivalInfo.java
... ... @@ -17,18 +17,17 @@ import javax.persistence.Transient;
17 17 public class ArrivalInfo {
18 18  
19 19 @Transient
20   - static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd")
21   - ,sdf2 = new SimpleDateFormat("HH:mm")
22   - ,sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
  20 + static SimpleDateFormat sdf = new SimpleDateFormat("HH:mm")
  21 + ,sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
23 22  
24 23  
25 24 public ArrivalInfo(String deviceId, Long ts, String lineCode, Integer upDown, String stopNo, Integer inOut,
26 25 Date createDate, Integer weeksYear) {
27 26 this.deviceId = deviceId;
28 27  
29   - //gps是2014年的数据,临时将ts拉到当天
  28 + //gps是2014年的数据,临时将ts拉到6月1号
30 29 try {
31   - this.ts = sdf3.parse(sdf.format(new Date()) +" " + sdf2.format(new Date(ts))).getTime();
  30 + this.ts = sdf2.parse("2016-06-01 " + sdf.format(new Date(ts))).getTime();
32 31 } catch (ParseException e) {
33 32 e.printStackTrace();
34 33 }
... ...
src/main/java/com/bsth/vehicle/gpsdata/service/GpsDataServiceImpl.java
... ... @@ -59,7 +59,7 @@ public class GpsDataServiceImpl implements GpsDataService{
59 59  
60 60 //to 百度坐标
61 61 lon = rs.getFloat("LON");
62   - lat = rs.getFloat("lat");
  62 + lat = rs.getFloat("LAT");
63 63 location = TransGPS.LocationMake(lon, lat);
64 64 location = TransGPS.bd_encrypt(TransGPS.transformFromWGSToGCJ(location));
65 65  
... ... @@ -67,7 +67,7 @@ public class GpsDataServiceImpl implements GpsDataService{
67 67 map.put("device", rs.getString("DEVICE_ID"));
68 68 map.put("lon", location.getLng());
69 69 map.put("lat", location.getLat());
70   - map.put("ts", rs.getLong("ts"));
  70 + map.put("ts", rs.getLong("TS"));
71 71 map.put("inout_stop", rs.getInt("INOUT_STOP"));
72 72 //上下行
73 73 map.put("upDown", upDown);
... ...
src/main/resources/datatools/config.properties
  1 +<<<<<<< HEAD
1 2 # 配置数据导入导出用到的配置信息
2 3  
3 4 # 上传文件目录配置(根据不同的环境需要修正)
... ... @@ -20,4 +21,28 @@ datatools.employees_datainputktr=/datatools/ktrs/employeesDataInput.ktr
20 21 datatools.carsconfig_datainputktr=/datatools/ktrs/carsConfigDataInput.ktr
21 22 # 人员配置信息导入
22 23  
  24 +=======
  25 +# 配置数据导入导出用到的配置信息
  26 +
  27 +# 上传文件目录配置(根据不同的环境需要修正)
  28 +datatools.fileupload_dir=/Users/xu/resource/project/bsth_control_u_d_files
  29 +# ktr转换文件,中配置的错误输出目录(根据不同的环境需要修正)
  30 +datatools.trans_errordir=/Users/xu/resource/project/bsth_control_u_d_files/erroroutput
  31 +
  32 +# 以下是封装数据导入导出逻辑的ktr转换文件,类路径,以后考虑放到数据库中
  33 +# 测试temp的ktr转换文件
  34 +datatools.temp_datainputktr=/datatools/ktrs/test.ktr
  35 +# 车辆信息导入ktr转换
  36 +datatools.cars_datainputktr=/datatools/ktrs/carsDataInput.ktr
  37 +# 人员信息导入
  38 +datatools.employees_datainputktr=/datatools/ktrs/employeesDataInput.ktr
  39 +# 时刻表基础信息导入
  40 +
  41 +# 时刻明细信息导入
  42 +
  43 +# 车辆配置信息导入
  44 +
  45 +# 人员配置信息导入
  46 +
  47 +>>>>>>> 502f6f7ff3ff76f0f6b6dbdac8a353604a7d5626
23 48 # 排班规则信息导入**
24 49 \ No newline at end of file
... ...
src/main/resources/datatools/ktrs/carsDataInput.ktr
  1 +<<<<<<< HEAD
1 2 <?xml version="1.0" encoding="UTF-8"?>
2 3 <transformation>
3 4 <info>
... ... @@ -1649,3 +1650,1650 @@
1649 1650 <slave_transformation>N</slave_transformation>
1650 1651  
1651 1652 </transformation>
  1653 +=======
  1654 +<?xml version="1.0" encoding="UTF-8"?>
  1655 +<transformation>
  1656 + <info>
  1657 + <name>carsDataInput</name>
  1658 + <description>&#x8f66;&#x8f86;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description>
  1659 + <extended_description>&#x8f66;&#x8f86;&#x57fa;&#x7840;&#x4fe1;&#x606f;</extended_description>
  1660 + <trans_version/>
  1661 + <trans_type>Normal</trans_type>
  1662 + <trans_status>0</trans_status>
  1663 + <directory>&#x2f;</directory>
  1664 + <parameters>
  1665 + <parameter>
  1666 + <name>erroroutputdir</name>
  1667 + <default_value/>
  1668 + <description>ktr step&#x914d;&#x7f6e;&#x7684;&#x9519;&#x8bef;&#x8f93;&#x51fa;&#x76ee;&#x5f55;</description>
  1669 + </parameter>
  1670 + <parameter>
  1671 + <name>filepath</name>
  1672 + <default_value/>
  1673 + <description>&#x5f85;&#x5904;&#x7406;&#x5bfc;&#x5165;&#x7684;excel&#x6587;&#x4ef6;</description>
  1674 + </parameter>
  1675 + </parameters>
  1676 + <log>
  1677 +<trans-log-table><connection/>
  1678 +<schema/>
  1679 +<table/>
  1680 +<size_limit_lines/>
  1681 +<interval/>
  1682 +<timeout_days/>
  1683 +<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>
  1684 +<perf-log-table><connection/>
  1685 +<schema/>
  1686 +<table/>
  1687 +<interval/>
  1688 +<timeout_days/>
  1689 +<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>
  1690 +<channel-log-table><connection/>
  1691 +<schema/>
  1692 +<table/>
  1693 +<timeout_days/>
  1694 +<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>
  1695 +<step-log-table><connection/>
  1696 +<schema/>
  1697 +<table/>
  1698 +<timeout_days/>
  1699 +<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>
  1700 +<metrics-log-table><connection/>
  1701 +<schema/>
  1702 +<table/>
  1703 +<timeout_days/>
  1704 +<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>
  1705 + </log>
  1706 + <maxdate>
  1707 + <connection/>
  1708 + <table/>
  1709 + <field/>
  1710 + <offset>0.0</offset>
  1711 + <maxdiff>0.0</maxdiff>
  1712 + </maxdate>
  1713 + <size_rowset>10000</size_rowset>
  1714 + <sleep_time_empty>50</sleep_time_empty>
  1715 + <sleep_time_full>50</sleep_time_full>
  1716 + <unique_connections>N</unique_connections>
  1717 + <feedback_shown>Y</feedback_shown>
  1718 + <feedback_size>50000</feedback_size>
  1719 + <using_thread_priorities>Y</using_thread_priorities>
  1720 + <shared_objects_file/>
  1721 + <capture_step_performance>N</capture_step_performance>
  1722 + <step_performance_capturing_delay>1000</step_performance_capturing_delay>
  1723 + <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
  1724 + <dependencies>
  1725 + </dependencies>
  1726 + <partitionschemas>
  1727 + </partitionschemas>
  1728 + <slaveservers>
  1729 + </slaveservers>
  1730 + <clusterschemas>
  1731 + </clusterschemas>
  1732 + <created_user>-</created_user>
  1733 + <created_date>2016&#x2f;06&#x2f;23 17&#x3a;44&#x3a;46.781</created_date>
  1734 + <modified_user>-</modified_user>
  1735 + <modified_date>2016&#x2f;06&#x2f;23 17&#x3a;44&#x3a;46.781</modified_date>
  1736 + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
  1737 + <is_key_private>N</is_key_private>
  1738 + </info>
  1739 + <notepads>
  1740 + <notepad>
  1741 + <note>&#x539f;&#x7cfb;&#x7edf;&#x7684;&#x5bfc;&#x51fa;&#x8868;&#xff0c;&#x6709;&#x4e9b;&#x6570;&#x636e;&#x662f;&#x6ca1;&#x6709;&#x7684;&#xff0c;&#x6709;&#x4e9b;&#x6570;&#x636e;&#x4e5f;&#x6709;&#x95ee;&#x9898;&#xff0c;&#x5982;&#x4e0b;&#xa;&#x62a5;&#x5e9f;&#x65e5;&#x671f;&#x53bb;&#x6389;&#xa;&#x8f66;&#x8f86;&#x7f16;&#x7801;&#xff0c;&#x6682;&#x65f6;&#x7528;1&#x4ee3;&#x66ff;&#xa;&#x662f;&#x5426;&#x7535;&#x8f66; &#x6ca1;&#x6709;&#xa;&#x8f66;&#x8f86;&#x5e8f;&#x53f7; &#x6ca1;&#x6709;&#xa;&#x662f;&#x5426;&#x5207;&#x6362; &#x6ca1;&#x6709;&#xa;&#x7ebf;&#x8def;&#x540d;&#x79f0;&#xff08;&#x8fd9;&#x91cc;&#x4e0d;&#x505a;&#x5173;&#x8054;&#xff0c;&#x53ea;&#x662f;&#x767b;&#x8bb0;&#x7684;&#x65f6;&#x5019;&#x4f7f;&#x7528;&#xff09; &#x54a9;&#x6709;</note>
  1742 + <xloc>365</xloc>
  1743 + <yloc>136</yloc>
  1744 + <width>346</width>
  1745 + <heigth>122</heigth>
  1746 + <fontname>YaHei Consolas Hybrid</fontname>
  1747 + <fontsize>12</fontsize>
  1748 + <fontbold>N</fontbold>
  1749 + <fontitalic>N</fontitalic>
  1750 + <fontcolorred>0</fontcolorred>
  1751 + <fontcolorgreen>0</fontcolorgreen>
  1752 + <fontcolorblue>0</fontcolorblue>
  1753 + <backgroundcolorred>255</backgroundcolorred>
  1754 + <backgroundcolorgreen>205</backgroundcolorgreen>
  1755 + <backgroundcolorblue>112</backgroundcolorblue>
  1756 + <bordercolorred>100</bordercolorred>
  1757 + <bordercolorgreen>100</bordercolorgreen>
  1758 + <bordercolorblue>100</bordercolorblue>
  1759 + <drawshadow>Y</drawshadow>
  1760 + </notepad>
  1761 + </notepads>
  1762 + <connection>
  1763 + <name>bus_control_&#x516c;&#x53f8;_201</name>
  1764 + <server>192.168.168.201</server>
  1765 + <type>MYSQL</type>
  1766 + <access>Native</access>
  1767 + <database>control</database>
  1768 + <port>3306</port>
  1769 + <username>root</username>
  1770 + <password>Encrypted 2be98afc86aa7f2e4cb79ff228dc6fa8c</password>
  1771 + <servername/>
  1772 + <data_tablespace/>
  1773 + <index_tablespace/>
  1774 + <attributes>
  1775 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  1776 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  1777 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  1778 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  1779 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  1780 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  1781 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  1782 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  1783 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  1784 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  1785 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  1786 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  1787 + </attributes>
  1788 + </connection>
  1789 + <connection>
  1790 + <name>xlab_mysql_youle</name>
  1791 + <server>101.231.124.8</server>
  1792 + <type>MYSQL</type>
  1793 + <access>Native</access>
  1794 + <database>xlab_youle</database>
  1795 + <port>45687</port>
  1796 + <username>xlab-youle</username>
  1797 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
  1798 + <servername/>
  1799 + <data_tablespace/>
  1800 + <index_tablespace/>
  1801 + <attributes>
  1802 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  1803 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  1804 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  1805 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  1806 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  1807 + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
  1808 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  1809 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  1810 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  1811 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  1812 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  1813 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  1814 + </attributes>
  1815 + </connection>
  1816 + <connection>
  1817 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  1818 + <server>localhost</server>
  1819 + <type>MYSQL</type>
  1820 + <access>Native</access>
  1821 + <database>xlab_youle</database>
  1822 + <port>3306</port>
  1823 + <username>root</username>
  1824 + <password>Encrypted </password>
  1825 + <servername/>
  1826 + <data_tablespace/>
  1827 + <index_tablespace/>
  1828 + <attributes>
  1829 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  1830 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  1831 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  1832 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  1833 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  1834 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  1835 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  1836 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  1837 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  1838 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  1839 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  1840 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  1841 + </attributes>
  1842 + </connection>
  1843 + <connection>
  1844 + <name>xlab_youle</name>
  1845 + <server/>
  1846 + <type>MYSQL</type>
  1847 + <access>JNDI</access>
  1848 + <database>xlab_youle</database>
  1849 + <port>1521</port>
  1850 + <username/>
  1851 + <password>Encrypted </password>
  1852 + <servername/>
  1853 + <data_tablespace/>
  1854 + <index_tablespace/>
  1855 + <attributes>
  1856 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  1857 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  1858 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  1859 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  1860 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  1861 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  1862 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  1863 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  1864 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  1865 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  1866 + </attributes>
  1867 + </connection>
  1868 + <order>
  1869 + <hop> <from>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
  1870 + <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x662f;&#x5426;&#x7a7a;&#x8c03;&#x8f66;</to><enabled>Y</enabled> </hop>
  1871 + <hop> <from>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
  1872 + <hop> <from>&#x662f;&#x5426;&#x6709;LED&#x670d;&#x52a1;&#x5c4f;</from><to>&#x662f;&#x5426;&#x6709;TV&#x89c6;&#x9891;</to><enabled>Y</enabled> </hop>
  1873 + <hop> <from>&#x662f;&#x5426;&#x6709;TV&#x89c6;&#x9891;</from><to>&#x662f;&#x5426;&#x7684;&#x53d8;&#x6210;&#x6570;&#x5b57;&#x578b;</to><enabled>Y</enabled> </hop>
  1874 + <hop> <from>&#x662f;&#x5426;&#x7684;&#x53d8;&#x6210;&#x6570;&#x5b57;&#x578b;</from><to>&#x516c;&#x4ea4;&#x4f01;&#x4e1a;&#x4ee3;&#x7801;</to><enabled>Y</enabled> </hop>
  1875 + <hop> <from>&#x662f;&#x5426;&#x7a7a;&#x8c03;&#x8f66;</from><to>&#x6709;&#x65e0;&#x4eba;&#x552e;&#x7968;</to><enabled>Y</enabled> </hop>
  1876 + <hop> <from>&#x6709;&#x65e0;&#x4eba;&#x552e;&#x7968;</from><to>&#x662f;&#x5426;&#x6709;LED&#x670d;&#x52a1;&#x5c4f;</to><enabled>Y</enabled> </hop>
  1877 + <hop> <from>&#x516c;&#x4ea4;&#x4f01;&#x4e1a;&#x4ee3;&#x7801;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars</to><enabled>Y</enabled> </hop>
  1878 + <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>
  1879 + </order>
  1880 + <step>
  1881 + <name>&#x516c;&#x4ea4;&#x4f01;&#x4e1a;&#x4ee3;&#x7801;</name>
  1882 + <type>ValueMapper</type>
  1883 + <description/>
  1884 + <distribute>Y</distribute>
  1885 + <custom_distribution/>
  1886 + <copies>1</copies>
  1887 + <partitioning>
  1888 + <method>none</method>
  1889 + <schema_name/>
  1890 + </partitioning>
  1891 + <field_to_use>company</field_to_use>
  1892 + <target_field>businessCode</target_field>
  1893 + <non_match_default/>
  1894 + <fields>
  1895 + <field>
  1896 + <source_value>&#x4e0a;&#x5357;&#x516c;&#x53f8;</source_value>
  1897 + <target_value>55</target_value>
  1898 + </field>
  1899 + <field>
  1900 + <source_value>&#x91d1;&#x9ad8;&#x516c;&#x53f8;</source_value>
  1901 + <target_value>22</target_value>
  1902 + </field>
  1903 + <field>
  1904 + <source_value>&#x6768;&#x9ad8;&#x516c;&#x53f8;</source_value>
  1905 + <target_value>05</target_value>
  1906 + </field>
  1907 + <field>
  1908 + <source_value>&#x5357;&#x6c47;&#x516c;&#x53f8;</source_value>
  1909 + <target_value>26</target_value>
  1910 + </field>
  1911 + <field>
  1912 + <source_value>&#x516c;&#x4ea4;&#x516c;&#x53f8;</source_value>
  1913 + <target_value>88</target_value>
  1914 + </field>
  1915 + <field>
  1916 + <source_value>&#x95f5;&#x884c;&#x516c;&#x4ea4;</source_value>
  1917 + <target_value>77</target_value>
  1918 + </field>
  1919 + </fields>
  1920 + <cluster_schema/>
  1921 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1922 + <xloc>841</xloc>
  1923 + <yloc>166</yloc>
  1924 + <draw>Y</draw>
  1925 + </GUI>
  1926 + </step>
  1927 +
  1928 + <step>
  1929 + <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name>
  1930 + <type>ExcelInput</type>
  1931 + <description/>
  1932 + <distribute>Y</distribute>
  1933 + <custom_distribution/>
  1934 + <copies>1</copies>
  1935 + <partitioning>
  1936 + <method>none</method>
  1937 + <schema_name/>
  1938 + </partitioning>
  1939 + <header>Y</header>
  1940 + <noempty>Y</noempty>
  1941 + <stoponempty>N</stoponempty>
  1942 + <filefield/>
  1943 + <sheetfield/>
  1944 + <sheetrownumfield/>
  1945 + <rownumfield/>
  1946 + <sheetfield/>
  1947 + <filefield/>
  1948 + <limit>0</limit>
  1949 + <encoding/>
  1950 + <add_to_result_filenames>Y</add_to_result_filenames>
  1951 + <accept_filenames>Y</accept_filenames>
  1952 + <accept_field>filepath_</accept_field>
  1953 + <accept_stepname>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</accept_stepname>
  1954 + <file>
  1955 + <name/>
  1956 + <filemask/>
  1957 + <exclude_filemask/>
  1958 + <file_required>N</file_required>
  1959 + <include_subfolders>N</include_subfolders>
  1960 + </file>
  1961 + <fields>
  1962 + <field>
  1963 + <name>&#x8f66;&#x724c;&#x53f7;</name>
  1964 + <type>String</type>
  1965 + <length>-1</length>
  1966 + <precision>-1</precision>
  1967 + <trim_type>none</trim_type>
  1968 + <repeat>N</repeat>
  1969 + <format/>
  1970 + <currency/>
  1971 + <decimal/>
  1972 + <group/>
  1973 + </field>
  1974 + <field>
  1975 + <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
  1976 + <type>String</type>
  1977 + <length>-1</length>
  1978 + <precision>-1</precision>
  1979 + <trim_type>none</trim_type>
  1980 + <repeat>N</repeat>
  1981 + <format/>
  1982 + <currency/>
  1983 + <decimal/>
  1984 + <group/>
  1985 + </field>
  1986 + <field>
  1987 + <name>&#x8f66;&#x8f86;&#x7f16;&#x7801;</name>
  1988 + <type>String</type>
  1989 + <length>-1</length>
  1990 + <precision>-1</precision>
  1991 + <trim_type>none</trim_type>
  1992 + <repeat>N</repeat>
  1993 + <format/>
  1994 + <currency/>
  1995 + <decimal/>
  1996 + <group/>
  1997 + </field>
  1998 + <field>
  1999 + <name>&#x8f66;&#x578b;&#x7c7b;&#x522b;</name>
  2000 + <type>String</type>
  2001 + <length>-1</length>
  2002 + <precision>-1</precision>
  2003 + <trim_type>none</trim_type>
  2004 + <repeat>N</repeat>
  2005 + <format/>
  2006 + <currency/>
  2007 + <decimal/>
  2008 + <group/>
  2009 + </field>
  2010 + <field>
  2011 + <name>&#x5ea7;&#x4f4d;&#x6570;</name>
  2012 + <type>String</type>
  2013 + <length>-1</length>
  2014 + <precision>-1</precision>
  2015 + <trim_type>none</trim_type>
  2016 + <repeat>N</repeat>
  2017 + <format/>
  2018 + <currency/>
  2019 + <decimal/>
  2020 + <group/>
  2021 + </field>
  2022 + <field>
  2023 + <name>&#x8f7d;&#x5ba2;&#x6807;&#x51c6;</name>
  2024 + <type>String</type>
  2025 + <length>-1</length>
  2026 + <precision>-1</precision>
  2027 + <trim_type>none</trim_type>
  2028 + <repeat>N</repeat>
  2029 + <format/>
  2030 + <currency/>
  2031 + <decimal/>
  2032 + <group/>
  2033 + </field>
  2034 + <field>
  2035 + <name>&#x6280;&#x672f;&#x901f;&#x5ea6;</name>
  2036 + <type>String</type>
  2037 + <length>-1</length>
  2038 + <precision>-1</precision>
  2039 + <trim_type>none</trim_type>
  2040 + <repeat>N</repeat>
  2041 + <format/>
  2042 + <currency/>
  2043 + <decimal/>
  2044 + <group/>
  2045 + </field>
  2046 + <field>
  2047 + <name>&#x662f;&#x5426;&#x7a7a;&#x8c03;</name>
  2048 + <type>String</type>
  2049 + <length>-1</length>
  2050 + <precision>-1</precision>
  2051 + <trim_type>none</trim_type>
  2052 + <repeat>N</repeat>
  2053 + <format/>
  2054 + <currency/>
  2055 + <decimal/>
  2056 + <group/>
  2057 + </field>
  2058 + <field>
  2059 + <name>&#x6807;&#x51c6;&#x6cb9;&#x8017;&#x28;&#x5f00;&#x7a7a;&#x8c03;&#x29;</name>
  2060 + <type>String</type>
  2061 + <length>-1</length>
  2062 + <precision>-1</precision>
  2063 + <trim_type>none</trim_type>
  2064 + <repeat>N</repeat>
  2065 + <format/>
  2066 + <currency/>
  2067 + <decimal/>
  2068 + <group/>
  2069 + </field>
  2070 + <field>
  2071 + <name>&#x6807;&#x51c6;&#x6cb9;&#x8017;&#x28;&#x5173;&#x7a7a;&#x8c03;&#x29;</name>
  2072 + <type>String</type>
  2073 + <length>-1</length>
  2074 + <precision>-1</precision>
  2075 + <trim_type>none</trim_type>
  2076 + <repeat>N</repeat>
  2077 + <format/>
  2078 + <currency/>
  2079 + <decimal/>
  2080 + <group/>
  2081 + </field>
  2082 + <field>
  2083 + <name>&#x6709;&#x65e0;&#x4eba;&#x552e;&#x7968;</name>
  2084 + <type>String</type>
  2085 + <length>-1</length>
  2086 + <precision>-1</precision>
  2087 + <trim_type>none</trim_type>
  2088 + <repeat>N</repeat>
  2089 + <format/>
  2090 + <currency/>
  2091 + <decimal/>
  2092 + <group/>
  2093 + </field>
  2094 + <field>
  2095 + <name>&#x662f;&#x5426;&#x6709;TV&#x89c6;&#x9891;</name>
  2096 + <type>String</type>
  2097 + <length>-1</length>
  2098 + <precision>-1</precision>
  2099 + <trim_type>none</trim_type>
  2100 + <repeat>N</repeat>
  2101 + <format/>
  2102 + <currency/>
  2103 + <decimal/>
  2104 + <group/>
  2105 + </field>
  2106 + <field>
  2107 + <name>&#x662f;&#x5426;&#x6709;LED&#x670d;&#x52a1;&#x5c4f;</name>
  2108 + <type>String</type>
  2109 + <length>-1</length>
  2110 + <precision>-1</precision>
  2111 + <trim_type>none</trim_type>
  2112 + <repeat>N</repeat>
  2113 + <format/>
  2114 + <currency/>
  2115 + <decimal/>
  2116 + <group/>
  2117 + </field>
  2118 + <field>
  2119 + <name>&#x8fd0;&#x8425;&#x72b6;&#x6001;</name>
  2120 + <type>String</type>
  2121 + <length>-1</length>
  2122 + <precision>-1</precision>
  2123 + <trim_type>none</trim_type>
  2124 + <repeat>N</repeat>
  2125 + <format/>
  2126 + <currency/>
  2127 + <decimal/>
  2128 + <group/>
  2129 + </field>
  2130 + <field>
  2131 + <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  2132 + <type>String</type>
  2133 + <length>-1</length>
  2134 + <precision>-1</precision>
  2135 + <trim_type>none</trim_type>
  2136 + <repeat>N</repeat>
  2137 + <format/>
  2138 + <currency/>
  2139 + <decimal/>
  2140 + <group/>
  2141 + </field>
  2142 + <field>
  2143 + <name>&#x53d6;&#x6d88;&#x65e5;&#x671f;</name>
  2144 + <type>String</type>
  2145 + <length>-1</length>
  2146 + <precision>-1</precision>
  2147 + <trim_type>none</trim_type>
  2148 + <repeat>N</repeat>
  2149 + <format/>
  2150 + <currency/>
  2151 + <decimal/>
  2152 + <group/>
  2153 + </field>
  2154 + <field>
  2155 + <name>&#x62a5;&#x5e9f;&#x53f7;</name>
  2156 + <type>String</type>
  2157 + <length>-1</length>
  2158 + <precision>-1</precision>
  2159 + <trim_type>none</trim_type>
  2160 + <repeat>N</repeat>
  2161 + <format/>
  2162 + <currency/>
  2163 + <decimal/>
  2164 + <group/>
  2165 + </field>
  2166 + <field>
  2167 + <name>&#x62a5;&#x5e9f;&#x65e5;&#x671f;</name>
  2168 + <type>String</type>
  2169 + <length>-1</length>
  2170 + <precision>-1</precision>
  2171 + <trim_type>none</trim_type>
  2172 + <repeat>N</repeat>
  2173 + <format/>
  2174 + <currency/>
  2175 + <decimal/>
  2176 + <group/>
  2177 + </field>
  2178 + <field>
  2179 + <name>&#x5907;&#x6ce8;</name>
  2180 + <type>String</type>
  2181 + <length>-1</length>
  2182 + <precision>-1</precision>
  2183 + <trim_type>none</trim_type>
  2184 + <repeat>N</repeat>
  2185 + <format/>
  2186 + <currency/>
  2187 + <decimal/>
  2188 + <group/>
  2189 + </field>
  2190 + <field>
  2191 + <name>&#x8bbe;&#x5907;&#x7f16;&#x53f7;</name>
  2192 + <type>String</type>
  2193 + <length>-1</length>
  2194 + <precision>-1</precision>
  2195 + <trim_type>none</trim_type>
  2196 + <repeat>N</repeat>
  2197 + <format/>
  2198 + <currency/>
  2199 + <decimal/>
  2200 + <group/>
  2201 + </field>
  2202 + <field>
  2203 + <name>&#x5382;&#x724c;&#x578b;&#x53f7;</name>
  2204 + <type>String</type>
  2205 + <length>-1</length>
  2206 + <precision>-1</precision>
  2207 + <trim_type>none</trim_type>
  2208 + <repeat>N</repeat>
  2209 + <format/>
  2210 + <currency/>
  2211 + <decimal/>
  2212 + <group/>
  2213 + </field>
  2214 + <field>
  2215 + <name>&#x5382;&#x724c;&#x578b;&#x53f7;2</name>
  2216 + <type>String</type>
  2217 + <length>-1</length>
  2218 + <precision>-1</precision>
  2219 + <trim_type>none</trim_type>
  2220 + <repeat>N</repeat>
  2221 + <format/>
  2222 + <currency/>
  2223 + <decimal/>
  2224 + <group/>
  2225 + </field>
  2226 + <field>
  2227 + <name>&#x8f66;&#x8f86;&#x7b49;&#x7ea7;&#x6807;&#x51c6;</name>
  2228 + <type>String</type>
  2229 + <length>-1</length>
  2230 + <precision>-1</precision>
  2231 + <trim_type>none</trim_type>
  2232 + <repeat>N</repeat>
  2233 + <format/>
  2234 + <currency/>
  2235 + <decimal/>
  2236 + <group/>
  2237 + </field>
  2238 + <field>
  2239 + <name>&#x51fa;&#x5382;&#x6392;&#x653e;&#x6807;&#x51c6;</name>
  2240 + <type>String</type>
  2241 + <length>-1</length>
  2242 + <precision>-1</precision>
  2243 + <trim_type>none</trim_type>
  2244 + <repeat>N</repeat>
  2245 + <format/>
  2246 + <currency/>
  2247 + <decimal/>
  2248 + <group/>
  2249 + </field>
  2250 + <field>
  2251 + <name>&#x53d1;&#x52a8;&#x673a;&#x53f7;&#x7801;1</name>
  2252 + <type>String</type>
  2253 + <length>-1</length>
  2254 + <precision>-1</precision>
  2255 + <trim_type>none</trim_type>
  2256 + <repeat>N</repeat>
  2257 + <format/>
  2258 + <currency/>
  2259 + <decimal/>
  2260 + <group/>
  2261 + </field>
  2262 + <field>
  2263 + <name>&#x53d1;&#x52a8;&#x673a;&#x53f7;&#x7801;2</name>
  2264 + <type>String</type>
  2265 + <length>-1</length>
  2266 + <precision>-1</precision>
  2267 + <trim_type>none</trim_type>
  2268 + <repeat>N</repeat>
  2269 + <format/>
  2270 + <currency/>
  2271 + <decimal/>
  2272 + <group/>
  2273 + </field>
  2274 + <field>
  2275 + <name>&#x8f66;&#x67b6;&#x53f7;&#x7801;1</name>
  2276 + <type>String</type>
  2277 + <length>-1</length>
  2278 + <precision>-1</precision>
  2279 + <trim_type>none</trim_type>
  2280 + <repeat>N</repeat>
  2281 + <format/>
  2282 + <currency/>
  2283 + <decimal/>
  2284 + <group/>
  2285 + </field>
  2286 + <field>
  2287 + <name>&#x8f66;&#x67b6;&#x53f7;&#x7801;2</name>
  2288 + <type>String</type>
  2289 + <length>-1</length>
  2290 + <precision>-1</precision>
  2291 + <trim_type>none</trim_type>
  2292 + <repeat>N</repeat>
  2293 + <format/>
  2294 + <currency/>
  2295 + <decimal/>
  2296 + <group/>
  2297 + </field>
  2298 + <field>
  2299 + <name>&#x8f66;&#x8f86;&#x7c7b;&#x578b;</name>
  2300 + <type>String</type>
  2301 + <length>-1</length>
  2302 + <precision>-1</precision>
  2303 + <trim_type>none</trim_type>
  2304 + <repeat>N</repeat>
  2305 + <format/>
  2306 + <currency/>
  2307 + <decimal/>
  2308 + <group/>
  2309 + </field>
  2310 + <field>
  2311 + <name>&#x6240;&#x5c5e;&#x516c;&#x53f8;</name>
  2312 + <type>String</type>
  2313 + <length>-1</length>
  2314 + <precision>-1</precision>
  2315 + <trim_type>none</trim_type>
  2316 + <repeat>N</repeat>
  2317 + <format/>
  2318 + <currency/>
  2319 + <decimal/>
  2320 + <group/>
  2321 + </field>
  2322 + <field>
  2323 + <name>&#x4fee;&#x6539;&#x65e5;&#x671f;</name>
  2324 + <type>String</type>
  2325 + <length>-1</length>
  2326 + <precision>-1</precision>
  2327 + <trim_type>none</trim_type>
  2328 + <repeat>N</repeat>
  2329 + <format/>
  2330 + <currency/>
  2331 + <decimal/>
  2332 + <group/>
  2333 + </field>
  2334 + <field>
  2335 + <name>&#x662f;&#x5426;&#x673a;&#x52a8;&#x8f66;</name>
  2336 + <type>String</type>
  2337 + <length>-1</length>
  2338 + <precision>-1</precision>
  2339 + <trim_type>none</trim_type>
  2340 + <repeat>N</repeat>
  2341 + <format/>
  2342 + <currency/>
  2343 + <decimal/>
  2344 + <group/>
  2345 + </field>
  2346 + <field>
  2347 + <name>&#x89c6;&#x9891;&#x7f16;&#x53f7;</name>
  2348 + <type>String</type>
  2349 + <length>-1</length>
  2350 + <precision>-1</precision>
  2351 + <trim_type>none</trim_type>
  2352 + <repeat>N</repeat>
  2353 + <format/>
  2354 + <currency/>
  2355 + <decimal/>
  2356 + <group/>
  2357 + </field>
  2358 + <field>
  2359 + <name>&#x8bbe;&#x5907;&#x4f9b;&#x5e94;&#x5382;&#x5546;</name>
  2360 + <type>String</type>
  2361 + <length>-1</length>
  2362 + <precision>-1</precision>
  2363 + <trim_type>none</trim_type>
  2364 + <repeat>N</repeat>
  2365 + <format/>
  2366 + <currency/>
  2367 + <decimal/>
  2368 + <group/>
  2369 + </field>
  2370 + <field>
  2371 + <name>&#x5206;&#x516c;&#x53f8;</name>
  2372 + <type>String</type>
  2373 + <length>-1</length>
  2374 + <precision>-1</precision>
  2375 + <trim_type>none</trim_type>
  2376 + <repeat>N</repeat>
  2377 + <format/>
  2378 + <currency/>
  2379 + <decimal/>
  2380 + <group/>
  2381 + </field>
  2382 + </fields>
  2383 + <sheets>
  2384 + <sheet>
  2385 + <name>&#x5de5;&#x4f5c;&#x8868;1</name>
  2386 + <startrow>0</startrow>
  2387 + <startcol>0</startcol>
  2388 + </sheet>
  2389 + </sheets>
  2390 + <strict_types>N</strict_types>
  2391 + <error_ignored>N</error_ignored>
  2392 + <error_line_skipped>N</error_line_skipped>
  2393 + <bad_line_files_destination_directory/>
  2394 + <bad_line_files_extension>warning</bad_line_files_extension>
  2395 + <error_line_files_destination_directory/>
  2396 + <error_line_files_extension>error</error_line_files_extension>
  2397 + <line_number_files_destination_directory/>
  2398 + <line_number_files_extension>line</line_number_files_extension>
  2399 + <shortFileFieldName/>
  2400 + <pathFieldName/>
  2401 + <hiddenFieldName/>
  2402 + <lastModificationTimeFieldName/>
  2403 + <uriNameFieldName/>
  2404 + <rootUriNameFieldName/>
  2405 + <extensionFieldName/>
  2406 + <sizeFieldName/>
  2407 + <spreadsheet_type>JXL</spreadsheet_type>
  2408 + <cluster_schema/>
  2409 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2410 + <xloc>131</xloc>
  2411 + <yloc>58</yloc>
  2412 + <draw>Y</draw>
  2413 + </GUI>
  2414 + </step>
  2415 +
  2416 + <step>
  2417 + <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
  2418 + <type>SelectValues</type>
  2419 + <description/>
  2420 + <distribute>Y</distribute>
  2421 + <custom_distribution/>
  2422 + <copies>1</copies>
  2423 + <partitioning>
  2424 + <method>none</method>
  2425 + <schema_name/>
  2426 + </partitioning>
  2427 + <fields> <field> <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
  2428 + <rename>insideCode</rename>
  2429 + <length>-2</length>
  2430 + <precision>-2</precision>
  2431 + </field> <field> <name>&#x8f66;&#x8f86;&#x7f16;&#x7801;</name>
  2432 + <rename>carCode</rename>
  2433 + <length>-2</length>
  2434 + <precision>-2</precision>
  2435 + </field> <field> <name>&#x6240;&#x5c5e;&#x516c;&#x53f8;</name>
  2436 + <rename>company</rename>
  2437 + <length>-2</length>
  2438 + <precision>-2</precision>
  2439 + </field> <field> <name>&#x5206;&#x516c;&#x53f8;</name>
  2440 + <rename>brancheCompany</rename>
  2441 + <length>-2</length>
  2442 + <precision>-2</precision>
  2443 + </field> <field> <name>&#x8f66;&#x724c;&#x53f7;</name>
  2444 + <rename>carPlate</rename>
  2445 + <length>-2</length>
  2446 + <precision>-2</precision>
  2447 + </field> <field> <name>&#x8bbe;&#x5907;&#x4f9b;&#x5e94;&#x5382;&#x5546;</name>
  2448 + <rename>supplierName</rename>
  2449 + <length>-2</length>
  2450 + <precision>-2</precision>
  2451 + </field> <field> <name>&#x8bbe;&#x5907;&#x7f16;&#x53f7;</name>
  2452 + <rename>equipmentCode</rename>
  2453 + <length>-2</length>
  2454 + <precision>-2</precision>
  2455 + </field> <field> <name>&#x8f66;&#x578b;&#x7c7b;&#x522b;</name>
  2456 + <rename>carClass</rename>
  2457 + <length>-2</length>
  2458 + <precision>-2</precision>
  2459 + </field> <field> <name>&#x6280;&#x672f;&#x901f;&#x5ea6;</name>
  2460 + <rename>speed</rename>
  2461 + <length>-2</length>
  2462 + <precision>-2</precision>
  2463 + </field> <field> <name>&#x5ea7;&#x4f4d;&#x6570;</name>
  2464 + <rename>carSeatnNumber</rename>
  2465 + <length>-2</length>
  2466 + <precision>-2</precision>
  2467 + </field> <field> <name>&#x8f7d;&#x5ba2;&#x6807;&#x51c6;</name>
  2468 + <rename>carStandard</rename>
  2469 + <length>-2</length>
  2470 + <precision>-2</precision>
  2471 + </field> <field> <name>&#x6807;&#x51c6;&#x6cb9;&#x8017;&#x28;&#x5f00;&#x7a7a;&#x8c03;&#x29;</name>
  2472 + <rename>kburnStandard</rename>
  2473 + <length>-2</length>
  2474 + <precision>-2</precision>
  2475 + </field> <field> <name>&#x6807;&#x51c6;&#x6cb9;&#x8017;&#x28;&#x5173;&#x7a7a;&#x8c03;&#x29;</name>
  2476 + <rename>gburnStandard</rename>
  2477 + <length>-2</length>
  2478 + <precision>-2</precision>
  2479 + </field> <field> <name>&#x62a5;&#x5e9f;&#x53f7;</name>
  2480 + <rename>scrapCode</rename>
  2481 + <length>-2</length>
  2482 + <precision>-2</precision>
  2483 + </field> <field> <name>&#x5382;&#x724c;&#x578b;&#x53f7;</name>
  2484 + <rename>makeCodeOne</rename>
  2485 + <length>-2</length>
  2486 + <precision>-2</precision>
  2487 + </field> <field> <name>&#x5382;&#x724c;&#x578b;&#x53f7;2</name>
  2488 + <rename>makeCodeTwo</rename>
  2489 + <length>-2</length>
  2490 + <precision>-2</precision>
  2491 + </field> <field> <name>&#x8f66;&#x8f86;&#x7b49;&#x7ea7;&#x6807;&#x51c6;</name>
  2492 + <rename>carGride</rename>
  2493 + <length>-2</length>
  2494 + <precision>-2</precision>
  2495 + </field> <field> <name>&#x51fa;&#x5382;&#x6392;&#x653e;&#x6807;&#x51c6;</name>
  2496 + <rename>emissionsStandard</rename>
  2497 + <length>-2</length>
  2498 + <precision>-2</precision>
  2499 + </field> <field> <name>&#x53d1;&#x52a8;&#x673a;&#x53f7;&#x7801;1</name>
  2500 + <rename>engineCodeOne</rename>
  2501 + <length>-2</length>
  2502 + <precision>-2</precision>
  2503 + </field> <field> <name>&#x53d1;&#x52a8;&#x673a;&#x53f7;&#x7801;2</name>
  2504 + <rename>engineCodeTwo</rename>
  2505 + <length>-2</length>
  2506 + <precision>-2</precision>
  2507 + </field> <field> <name>&#x8f66;&#x67b6;&#x53f7;&#x7801;1</name>
  2508 + <rename>carNumberOne</rename>
  2509 + <length>-2</length>
  2510 + <precision>-2</precision>
  2511 + </field> <field> <name>&#x8f66;&#x67b6;&#x53f7;&#x7801;2</name>
  2512 + <rename>carNumberTwo</rename>
  2513 + <length>-2</length>
  2514 + <precision>-2</precision>
  2515 + </field> <field> <name>&#x542f;&#x7528;&#x65e5;&#x671f;</name>
  2516 + <rename>openDate</rename>
  2517 + <length>-2</length>
  2518 + <precision>-2</precision>
  2519 + </field> <field> <name>&#x53d6;&#x6d88;&#x65e5;&#x671f;</name>
  2520 + <rename>closeDate</rename>
  2521 + <length>-2</length>
  2522 + <precision>-2</precision>
  2523 + </field> <field> <name>&#x662f;&#x5426;&#x7a7a;&#x8c03;</name>
  2524 + <rename>hvacCar</rename>
  2525 + <length>-2</length>
  2526 + <precision>-2</precision>
  2527 + </field> <field> <name>&#x6709;&#x65e0;&#x4eba;&#x552e;&#x7968;</name>
  2528 + <rename>ticketType</rename>
  2529 + <length>-2</length>
  2530 + <precision>-2</precision>
  2531 + </field> <field> <name>&#x662f;&#x5426;&#x6709;LED&#x670d;&#x52a1;&#x5c4f;</name>
  2532 + <rename>ledScreen</rename>
  2533 + <length>-2</length>
  2534 + <precision>-2</precision>
  2535 + </field> <field> <name>&#x662f;&#x5426;&#x6709;TV&#x89c6;&#x9891;</name>
  2536 + <rename>tvVideoType</rename>
  2537 + <length>-2</length>
  2538 + <precision>-2</precision>
  2539 + </field> <field> <name>&#x8f66;&#x8f86;&#x7c7b;&#x578b;</name>
  2540 + <rename>carType</rename>
  2541 + <length>-2</length>
  2542 + <precision>-2</precision>
  2543 + </field> <field> <name>&#x662f;&#x5426;&#x673a;&#x52a8;&#x8f66;</name>
  2544 + <rename>vehicleStats</rename>
  2545 + <length>-2</length>
  2546 + <precision>-2</precision>
  2547 + </field> <field> <name>&#x8fd0;&#x8425;&#x72b6;&#x6001;</name>
  2548 + <rename>operatorsState</rename>
  2549 + <length>-2</length>
  2550 + <precision>-2</precision>
  2551 + </field> <field> <name>&#x5907;&#x6ce8;</name>
  2552 + <rename>descriptions</rename>
  2553 + <length>-2</length>
  2554 + <precision>-2</precision>
  2555 + </field> <field> <name>&#x89c6;&#x9891;&#x7f16;&#x53f7;</name>
  2556 + <rename>videoCode</rename>
  2557 + <length>-2</length>
  2558 + <precision>-2</precision>
  2559 + </field> <select_unspecified>Y</select_unspecified>
  2560 + </fields> <cluster_schema/>
  2561 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2562 + <xloc>279</xloc>
  2563 + <yloc>59</yloc>
  2564 + <draw>Y</draw>
  2565 + </GUI>
  2566 + </step>
  2567 +
  2568 + <step>
  2569 + <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars</name>
  2570 + <type>InsertUpdate</type>
  2571 + <description/>
  2572 + <distribute>Y</distribute>
  2573 + <custom_distribution/>
  2574 + <copies>1</copies>
  2575 + <partitioning>
  2576 + <method>none</method>
  2577 + <schema_name/>
  2578 + </partitioning>
  2579 + <connection>bus_control_&#x516c;&#x53f8;_201</connection>
  2580 + <commit>1000</commit>
  2581 + <update_bypassed>N</update_bypassed>
  2582 + <lookup>
  2583 + <schema/>
  2584 + <table>bsth_c_cars</table>
  2585 + <key>
  2586 + <name>insideCode</name>
  2587 + <field>inside_code</field>
  2588 + <condition>&#x3d;</condition>
  2589 + <name2/>
  2590 + </key>
  2591 + <value>
  2592 + <name>inside_code</name>
  2593 + <rename>insideCode</rename>
  2594 + <update>Y</update>
  2595 + </value>
  2596 + <value>
  2597 + <name>company</name>
  2598 + <rename>company</rename>
  2599 + <update>Y</update>
  2600 + </value>
  2601 + <value>
  2602 + <name>branche_company</name>
  2603 + <rename>brancheCompany</rename>
  2604 + <update>Y</update>
  2605 + </value>
  2606 + <value>
  2607 + <name>car_plate</name>
  2608 + <rename>carPlate</rename>
  2609 + <update>Y</update>
  2610 + </value>
  2611 + <value>
  2612 + <name>supplier_name</name>
  2613 + <rename>supplierName</rename>
  2614 + <update>Y</update>
  2615 + </value>
  2616 + <value>
  2617 + <name>equipment_code</name>
  2618 + <rename>equipmentCode</rename>
  2619 + <update>Y</update>
  2620 + </value>
  2621 + <value>
  2622 + <name>car_class</name>
  2623 + <rename>carClass</rename>
  2624 + <update>Y</update>
  2625 + </value>
  2626 + <value>
  2627 + <name>speed</name>
  2628 + <rename>speed</rename>
  2629 + <update>Y</update>
  2630 + </value>
  2631 + <value>
  2632 + <name>car_seatn_number</name>
  2633 + <rename>carSeatnNumber</rename>
  2634 + <update>Y</update>
  2635 + </value>
  2636 + <value>
  2637 + <name>car_standard</name>
  2638 + <rename>carStandard</rename>
  2639 + <update>Y</update>
  2640 + </value>
  2641 + <value>
  2642 + <name>car_code</name>
  2643 + <rename>carCode</rename>
  2644 + <update>Y</update>
  2645 + </value>
  2646 + <value>
  2647 + <name>kburn_standard</name>
  2648 + <rename>kburnStandard</rename>
  2649 + <update>Y</update>
  2650 + </value>
  2651 + <value>
  2652 + <name>gburn_standard</name>
  2653 + <rename>gburnStandard</rename>
  2654 + <update>Y</update>
  2655 + </value>
  2656 + <value>
  2657 + <name>scrap_code</name>
  2658 + <rename>scrapCode</rename>
  2659 + <update>Y</update>
  2660 + </value>
  2661 + <value>
  2662 + <name>make_code_one</name>
  2663 + <rename>makeCodeOne</rename>
  2664 + <update>Y</update>
  2665 + </value>
  2666 + <value>
  2667 + <name>make_code_two</name>
  2668 + <rename>makeCodeTwo</rename>
  2669 + <update>Y</update>
  2670 + </value>
  2671 + <value>
  2672 + <name>car_gride</name>
  2673 + <rename>carGride</rename>
  2674 + <update>Y</update>
  2675 + </value>
  2676 + <value>
  2677 + <name>emissions_standard</name>
  2678 + <rename>emissionsStandard</rename>
  2679 + <update>Y</update>
  2680 + </value>
  2681 + <value>
  2682 + <name>engine_code_one</name>
  2683 + <rename>engineCodeOne</rename>
  2684 + <update>Y</update>
  2685 + </value>
  2686 + <value>
  2687 + <name>engine_code_two</name>
  2688 + <rename>engineCodeTwo</rename>
  2689 + <update>Y</update>
  2690 + </value>
  2691 + <value>
  2692 + <name>car_number_one</name>
  2693 + <rename>carNumberOne</rename>
  2694 + <update>Y</update>
  2695 + </value>
  2696 + <value>
  2697 + <name>car_number_two</name>
  2698 + <rename>carNumberTwo</rename>
  2699 + <update>Y</update>
  2700 + </value>
  2701 + <value>
  2702 + <name>open_date</name>
  2703 + <rename>openDate</rename>
  2704 + <update>Y</update>
  2705 + </value>
  2706 + <value>
  2707 + <name>close_date</name>
  2708 + <rename>closeDate</rename>
  2709 + <update>Y</update>
  2710 + </value>
  2711 + <value>
  2712 + <name>hvac_car</name>
  2713 + <rename>hvacCar</rename>
  2714 + <update>Y</update>
  2715 + </value>
  2716 + <value>
  2717 + <name>ticket_type</name>
  2718 + <rename>ticketType</rename>
  2719 + <update>Y</update>
  2720 + </value>
  2721 + <value>
  2722 + <name>led_screen</name>
  2723 + <rename>ledScreen</rename>
  2724 + <update>Y</update>
  2725 + </value>
  2726 + <value>
  2727 + <name>tv_video_type</name>
  2728 + <rename>tvVideoType</rename>
  2729 + <update>Y</update>
  2730 + </value>
  2731 + <value>
  2732 + <name>car_type</name>
  2733 + <rename>carType</rename>
  2734 + <update>Y</update>
  2735 + </value>
  2736 + <value>
  2737 + <name>vehicle_stats</name>
  2738 + <rename>vehicleStats</rename>
  2739 + <update>Y</update>
  2740 + </value>
  2741 + <value>
  2742 + <name>operators_state</name>
  2743 + <rename>operatorsState</rename>
  2744 + <update>Y</update>
  2745 + </value>
  2746 + <value>
  2747 + <name>descriptions</name>
  2748 + <rename>descriptions</rename>
  2749 + <update>Y</update>
  2750 + </value>
  2751 + <value>
  2752 + <name>video_code</name>
  2753 + <rename>videoCode</rename>
  2754 + <update>Y</update>
  2755 + </value>
  2756 + <value>
  2757 + <name>business_code</name>
  2758 + <rename>businessCode</rename>
  2759 + <update>Y</update>
  2760 + </value>
  2761 + </lookup>
  2762 + <cluster_schema/>
  2763 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2764 + <xloc>842</xloc>
  2765 + <yloc>319</yloc>
  2766 + <draw>Y</draw>
  2767 + </GUI>
  2768 + </step>
  2769 +
  2770 + <step>
  2771 + <name>&#x662f;&#x5426;&#x6709;LED&#x670d;&#x52a1;&#x5c4f;</name>
  2772 + <type>ValueMapper</type>
  2773 + <description/>
  2774 + <distribute>Y</distribute>
  2775 + <custom_distribution/>
  2776 + <copies>1</copies>
  2777 + <partitioning>
  2778 + <method>none</method>
  2779 + <schema_name/>
  2780 + </partitioning>
  2781 + <field_to_use>ledScreen</field_to_use>
  2782 + <target_field/>
  2783 + <non_match_default/>
  2784 + <fields>
  2785 + <field>
  2786 + <source_value>&#x662f;</source_value>
  2787 + <target_value>1</target_value>
  2788 + </field>
  2789 + <field>
  2790 + <source_value>&#x5426;</source_value>
  2791 + <target_value>0</target_value>
  2792 + </field>
  2793 + </fields>
  2794 + <cluster_schema/>
  2795 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2796 + <xloc>590</xloc>
  2797 + <yloc>61</yloc>
  2798 + <draw>Y</draw>
  2799 + </GUI>
  2800 + </step>
  2801 +
  2802 + <step>
  2803 + <name>&#x662f;&#x5426;&#x6709;TV&#x89c6;&#x9891;</name>
  2804 + <type>ValueMapper</type>
  2805 + <description/>
  2806 + <distribute>Y</distribute>
  2807 + <custom_distribution/>
  2808 + <copies>1</copies>
  2809 + <partitioning>
  2810 + <method>none</method>
  2811 + <schema_name/>
  2812 + </partitioning>
  2813 + <field_to_use>tvVideoType</field_to_use>
  2814 + <target_field/>
  2815 + <non_match_default/>
  2816 + <fields>
  2817 + <field>
  2818 + <source_value>&#x662f;</source_value>
  2819 + <target_value>1</target_value>
  2820 + </field>
  2821 + <field>
  2822 + <source_value>&#x5426;</source_value>
  2823 + <target_value>0</target_value>
  2824 + </field>
  2825 + </fields>
  2826 + <cluster_schema/>
  2827 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2828 + <xloc>706</xloc>
  2829 + <yloc>61</yloc>
  2830 + <draw>Y</draw>
  2831 + </GUI>
  2832 + </step>
  2833 +
  2834 + <step>
  2835 + <name>&#x662f;&#x5426;&#x7684;&#x53d8;&#x6210;&#x6570;&#x5b57;&#x578b;</name>
  2836 + <type>SelectValues</type>
  2837 + <description/>
  2838 + <distribute>Y</distribute>
  2839 + <custom_distribution/>
  2840 + <copies>1</copies>
  2841 + <partitioning>
  2842 + <method>none</method>
  2843 + <schema_name/>
  2844 + </partitioning>
  2845 + <fields> <select_unspecified>N</select_unspecified>
  2846 + <meta> <name>hvacCar</name>
  2847 + <rename>hvacCar</rename>
  2848 + <type>Integer</type>
  2849 + <length>1</length>
  2850 + <precision>-2</precision>
  2851 + <conversion_mask/>
  2852 + <date_format_lenient>false</date_format_lenient>
  2853 + <date_format_locale/>
  2854 + <date_format_timezone/>
  2855 + <lenient_string_to_number>false</lenient_string_to_number>
  2856 + <encoding/>
  2857 + <decimal_symbol/>
  2858 + <grouping_symbol/>
  2859 + <currency_symbol/>
  2860 + <storage_type/>
  2861 + </meta> <meta> <name>ticketType</name>
  2862 + <rename>ticketType</rename>
  2863 + <type>Integer</type>
  2864 + <length>1</length>
  2865 + <precision>-2</precision>
  2866 + <conversion_mask/>
  2867 + <date_format_lenient>false</date_format_lenient>
  2868 + <date_format_locale/>
  2869 + <date_format_timezone/>
  2870 + <lenient_string_to_number>false</lenient_string_to_number>
  2871 + <encoding/>
  2872 + <decimal_symbol/>
  2873 + <grouping_symbol/>
  2874 + <currency_symbol/>
  2875 + <storage_type/>
  2876 + </meta> <meta> <name>ledScreen</name>
  2877 + <rename>ledScreen</rename>
  2878 + <type>Integer</type>
  2879 + <length>1</length>
  2880 + <precision>-2</precision>
  2881 + <conversion_mask/>
  2882 + <date_format_lenient>false</date_format_lenient>
  2883 + <date_format_locale/>
  2884 + <date_format_timezone/>
  2885 + <lenient_string_to_number>false</lenient_string_to_number>
  2886 + <encoding/>
  2887 + <decimal_symbol/>
  2888 + <grouping_symbol/>
  2889 + <currency_symbol/>
  2890 + <storage_type/>
  2891 + </meta> <meta> <name>tvVideoType</name>
  2892 + <rename>tvVideoType</rename>
  2893 + <type>Integer</type>
  2894 + <length>1</length>
  2895 + <precision>-2</precision>
  2896 + <conversion_mask/>
  2897 + <date_format_lenient>false</date_format_lenient>
  2898 + <date_format_locale/>
  2899 + <date_format_timezone/>
  2900 + <lenient_string_to_number>false</lenient_string_to_number>
  2901 + <encoding/>
  2902 + <decimal_symbol/>
  2903 + <grouping_symbol/>
  2904 + <currency_symbol/>
  2905 + <storage_type/>
  2906 + </meta> </fields> <cluster_schema/>
  2907 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2908 + <xloc>839</xloc>
  2909 + <yloc>61</yloc>
  2910 + <draw>Y</draw>
  2911 + </GUI>
  2912 + </step>
  2913 +
  2914 + <step>
  2915 + <name>&#x662f;&#x5426;&#x7a7a;&#x8c03;&#x8f66;</name>
  2916 + <type>ValueMapper</type>
  2917 + <description/>
  2918 + <distribute>Y</distribute>
  2919 + <custom_distribution/>
  2920 + <copies>1</copies>
  2921 + <partitioning>
  2922 + <method>none</method>
  2923 + <schema_name/>
  2924 + </partitioning>
  2925 + <field_to_use>hvacCar</field_to_use>
  2926 + <target_field/>
  2927 + <non_match_default/>
  2928 + <fields>
  2929 + <field>
  2930 + <source_value>&#x662f;</source_value>
  2931 + <target_value>1</target_value>
  2932 + </field>
  2933 + <field>
  2934 + <source_value>&#x5426;</source_value>
  2935 + <target_value>0</target_value>
  2936 + </field>
  2937 + </fields>
  2938 + <cluster_schema/>
  2939 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2940 + <xloc>388</xloc>
  2941 + <yloc>61</yloc>
  2942 + <draw>Y</draw>
  2943 + </GUI>
  2944 + </step>
  2945 +
  2946 + <step>
  2947 + <name>&#x6709;&#x65e0;&#x4eba;&#x552e;&#x7968;</name>
  2948 + <type>ValueMapper</type>
  2949 + <description/>
  2950 + <distribute>Y</distribute>
  2951 + <custom_distribution/>
  2952 + <copies>1</copies>
  2953 + <partitioning>
  2954 + <method>none</method>
  2955 + <schema_name/>
  2956 + </partitioning>
  2957 + <field_to_use>ticketType</field_to_use>
  2958 + <target_field/>
  2959 + <non_match_default/>
  2960 + <fields>
  2961 + <field>
  2962 + <source_value>&#x662f;</source_value>
  2963 + <target_value>1</target_value>
  2964 + </field>
  2965 + <field>
  2966 + <source_value>&#x5426;</source_value>
  2967 + <target_value>0</target_value>
  2968 + </field>
  2969 + </fields>
  2970 + <cluster_schema/>
  2971 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2972 + <xloc>485</xloc>
  2973 + <yloc>61</yloc>
  2974 + <draw>Y</draw>
  2975 + </GUI>
  2976 + </step>
  2977 +
  2978 + <step>
  2979 + <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>
  2980 + <type>GetVariable</type>
  2981 + <description/>
  2982 + <distribute>Y</distribute>
  2983 + <custom_distribution/>
  2984 + <copies>1</copies>
  2985 + <partitioning>
  2986 + <method>none</method>
  2987 + <schema_name/>
  2988 + </partitioning>
  2989 + <fields>
  2990 + <field>
  2991 + <name>filepath_</name>
  2992 + <variable>&#x24;&#x7b;filepath&#x7d;</variable>
  2993 + <type>String</type>
  2994 + <format/>
  2995 + <currency/>
  2996 + <decimal/>
  2997 + <group/>
  2998 + <length>-1</length>
  2999 + <precision>-1</precision>
  3000 + <trim_type>none</trim_type>
  3001 + </field>
  3002 + <field>
  3003 + <name>erroroutputdir_</name>
  3004 + <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
  3005 + <type>String</type>
  3006 + <format/>
  3007 + <currency/>
  3008 + <decimal/>
  3009 + <group/>
  3010 + <length>-1</length>
  3011 + <precision>-1</precision>
  3012 + <trim_type>none</trim_type>
  3013 + </field>
  3014 + </fields>
  3015 + <cluster_schema/>
  3016 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  3017 + <xloc>134</xloc>
  3018 + <yloc>183</yloc>
  3019 + <draw>Y</draw>
  3020 + </GUI>
  3021 + </step>
  3022 +
  3023 + <step>
  3024 + <name>&#x9519;&#x8bef;&#x8f93;&#x51fa;</name>
  3025 + <type>ExcelOutput</type>
  3026 + <description/>
  3027 + <distribute>Y</distribute>
  3028 + <custom_distribution/>
  3029 + <copies>1</copies>
  3030 + <partitioning>
  3031 + <method>none</method>
  3032 + <schema_name/>
  3033 + </partitioning>
  3034 + <header>Y</header>
  3035 + <footer>N</footer>
  3036 + <encoding/>
  3037 + <append>N</append>
  3038 + <add_to_result_filenames>Y</add_to_result_filenames>
  3039 + <file>
  3040 + <name>&#x24;&#x7b;erroroutputdir&#x7d;&#x2f;&#x8f66;&#x8f86;&#x57fa;&#x7840;&#x4fe1;&#x606f;_&#x9519;&#x8bef;</name>
  3041 + <extention>xls</extention>
  3042 + <do_not_open_newfile_init>N</do_not_open_newfile_init>
  3043 + <create_parent_folder>N</create_parent_folder>
  3044 + <split>N</split>
  3045 + <add_date>N</add_date>
  3046 + <add_time>N</add_time>
  3047 + <SpecifyFormat>N</SpecifyFormat>
  3048 + <date_time_format/>
  3049 + <sheetname>Sheet1</sheetname>
  3050 + <autosizecolums>N</autosizecolums>
  3051 + <nullisblank>N</nullisblank>
  3052 + <protect_sheet>N</protect_sheet>
  3053 + <password>Encrypted </password>
  3054 + <splitevery>0</splitevery>
  3055 + <usetempfiles>N</usetempfiles>
  3056 + <tempdirectory/>
  3057 + </file>
  3058 + <template>
  3059 + <enabled>N</enabled>
  3060 + <append>N</append>
  3061 + <filename>template.xls</filename>
  3062 + </template>
  3063 + <fields>
  3064 + <field>
  3065 + <name>insideCode</name>
  3066 + <type>String</type>
  3067 + <format/>
  3068 + </field>
  3069 + <field>
  3070 + <name>company</name>
  3071 + <type>String</type>
  3072 + <format/>
  3073 + </field>
  3074 + <field>
  3075 + <name>brancheCompany</name>
  3076 + <type>String</type>
  3077 + <format/>
  3078 + </field>
  3079 + <field>
  3080 + <name>carPlate</name>
  3081 + <type>String</type>
  3082 + <format/>
  3083 + </field>
  3084 + <field>
  3085 + <name>supplierName</name>
  3086 + <type>String</type>
  3087 + <format/>
  3088 + </field>
  3089 + <field>
  3090 + <name>equipmentCode</name>
  3091 + <type>String</type>
  3092 + <format/>
  3093 + </field>
  3094 + <field>
  3095 + <name>carClass</name>
  3096 + <type>String</type>
  3097 + <format/>
  3098 + </field>
  3099 + <field>
  3100 + <name>speed</name>
  3101 + <type>String</type>
  3102 + <format/>
  3103 + </field>
  3104 + <field>
  3105 + <name>carSeatnNumber</name>
  3106 + <type>String</type>
  3107 + <format/>
  3108 + </field>
  3109 + <field>
  3110 + <name>carStandard</name>
  3111 + <type>String</type>
  3112 + <format/>
  3113 + </field>
  3114 + <field>
  3115 + <name>kburnStandard</name>
  3116 + <type>String</type>
  3117 + <format/>
  3118 + </field>
  3119 + <field>
  3120 + <name>gburnStandard</name>
  3121 + <type>String</type>
  3122 + <format/>
  3123 + </field>
  3124 + <field>
  3125 + <name>scrapCode</name>
  3126 + <type>String</type>
  3127 + <format/>
  3128 + </field>
  3129 + <field>
  3130 + <name>makeCodeOne</name>
  3131 + <type>String</type>
  3132 + <format/>
  3133 + </field>
  3134 + <field>
  3135 + <name>makeCodeTwo</name>
  3136 + <type>String</type>
  3137 + <format/>
  3138 + </field>
  3139 + <field>
  3140 + <name>carGride</name>
  3141 + <type>String</type>
  3142 + <format/>
  3143 + </field>
  3144 + <field>
  3145 + <name>emissionsStandard</name>
  3146 + <type>String</type>
  3147 + <format/>
  3148 + </field>
  3149 + <field>
  3150 + <name>engineCodeOne</name>
  3151 + <type>String</type>
  3152 + <format/>
  3153 + </field>
  3154 + <field>
  3155 + <name>engineCodeTwo</name>
  3156 + <type>String</type>
  3157 + <format/>
  3158 + </field>
  3159 + <field>
  3160 + <name>carNumberOne</name>
  3161 + <type>String</type>
  3162 + <format/>
  3163 + </field>
  3164 + <field>
  3165 + <name>carNumberTwo</name>
  3166 + <type>String</type>
  3167 + <format/>
  3168 + </field>
  3169 + <field>
  3170 + <name>openDate</name>
  3171 + <type>String</type>
  3172 + <format/>
  3173 + </field>
  3174 + <field>
  3175 + <name>closeDate</name>
  3176 + <type>String</type>
  3177 + <format/>
  3178 + </field>
  3179 + <field>
  3180 + <name>hvacCar</name>
  3181 + <type>Integer</type>
  3182 + <format/>
  3183 + </field>
  3184 + <field>
  3185 + <name>ticketType</name>
  3186 + <type>Integer</type>
  3187 + <format/>
  3188 + </field>
  3189 + <field>
  3190 + <name>ledScreen</name>
  3191 + <type>Integer</type>
  3192 + <format/>
  3193 + </field>
  3194 + <field>
  3195 + <name>tvVideoType</name>
  3196 + <type>Integer</type>
  3197 + <format/>
  3198 + </field>
  3199 + <field>
  3200 + <name>carType</name>
  3201 + <type>String</type>
  3202 + <format/>
  3203 + </field>
  3204 + <field>
  3205 + <name>vehicleStats</name>
  3206 + <type>String</type>
  3207 + <format/>
  3208 + </field>
  3209 + <field>
  3210 + <name>operatorsState</name>
  3211 + <type>String</type>
  3212 + <format/>
  3213 + </field>
  3214 + <field>
  3215 + <name>descriptions</name>
  3216 + <type>String</type>
  3217 + <format/>
  3218 + </field>
  3219 + <field>
  3220 + <name>videoCode</name>
  3221 + <type>String</type>
  3222 + <format/>
  3223 + </field>
  3224 + <field>
  3225 + <name>businessCode</name>
  3226 + <type>String</type>
  3227 + <format/>
  3228 + </field>
  3229 + <field>
  3230 + <name>carCode</name>
  3231 + <type>String</type>
  3232 + <format/>
  3233 + </field>
  3234 + <field>
  3235 + <name>error_count</name>
  3236 + <type>Integer</type>
  3237 + <format/>
  3238 + </field>
  3239 + <field>
  3240 + <name>error_desc</name>
  3241 + <type>String</type>
  3242 + <format/>
  3243 + </field>
  3244 + <field>
  3245 + <name>error_column1</name>
  3246 + <type>String</type>
  3247 + <format/>
  3248 + </field>
  3249 + <field>
  3250 + <name>error_column2</name>
  3251 + <type>String</type>
  3252 + <format/>
  3253 + </field>
  3254 + </fields>
  3255 + <custom>
  3256 + <header_font_name>arial</header_font_name>
  3257 + <header_font_size>10</header_font_size>
  3258 + <header_font_bold>N</header_font_bold>
  3259 + <header_font_italic>N</header_font_italic>
  3260 + <header_font_underline>no</header_font_underline>
  3261 + <header_font_orientation>horizontal</header_font_orientation>
  3262 + <header_font_color>black</header_font_color>
  3263 + <header_background_color>none</header_background_color>
  3264 + <header_row_height>255</header_row_height>
  3265 + <header_alignment>left</header_alignment>
  3266 + <header_image/>
  3267 + <row_font_name>arial</row_font_name>
  3268 + <row_font_size>10</row_font_size>
  3269 + <row_font_color>black</row_font_color>
  3270 + <row_background_color>none</row_background_color>
  3271 + </custom>
  3272 + <cluster_schema/>
  3273 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  3274 + <xloc>637</xloc>
  3275 + <yloc>320</yloc>
  3276 + <draw>Y</draw>
  3277 + </GUI>
  3278 + </step>
  3279 +
  3280 + <step_error_handling>
  3281 + <error>
  3282 + <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars</source_step>
  3283 + <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa;</target_step>
  3284 + <is_enabled>Y</is_enabled>
  3285 + <nr_valuename>error_count</nr_valuename>
  3286 + <descriptions_valuename>error_desc</descriptions_valuename>
  3287 + <fields_valuename>error_column1</fields_valuename>
  3288 + <codes_valuename>error_column2</codes_valuename>
  3289 + <max_errors/>
  3290 + <max_pct_errors/>
  3291 + <min_pct_rows/>
  3292 + </error>
  3293 + </step_error_handling>
  3294 + <slave-step-copy-partition-distribution>
  3295 +</slave-step-copy-partition-distribution>
  3296 + <slave_transformation>N</slave_transformation>
  3297 +
  3298 +</transformation>
  3299 +>>>>>>> 502f6f7ff3ff76f0f6b6dbdac8a353604a7d5626
... ...