Commit 2143ef3a4808b660324817e0ec2959039f765e8d

Authored by 潘钊
2 parents c4487d2b 852668bb

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

Too many changes to show.

To preserve performance only 18 of 23 files are displayed.

src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
... ... @@ -483,6 +483,11 @@ public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo,
483 483 public Map<String, Object> MapById(@RequestParam("id") Long id){
484 484 return scheduleRealInfoService.MapById(id);
485 485 }
  486 +
  487 + @RequestMapping(value="/MapByIdQp",method = RequestMethod.GET)
  488 + public Map<String, Object> MapByIdQp(@RequestParam("id") Long id){
  489 + return scheduleRealInfoService.MapByIdQp(id);
  490 + }
486 491  
487 492 /**
488 493 * @Title: scheduleDaily
... ...
src/main/java/com/bsth/controller/schedule/core/TTInfoDetailController.java
... ... @@ -5,9 +5,13 @@ import com.bsth.controller.schedule.BController;
5 5 import com.bsth.entity.schedule.TTInfoDetail;
6 6 import com.bsth.service.schedule.TTInfoDetailService;
7 7 import com.bsth.service.schedule.datatools.TTInfoDetailForEdit;
  8 +import com.bsth.service.schedule.datatools.TTinfoDetailDynamicData;
  9 +import com.bsth.service.schedule.utils.DataToolsFile;
8 10 import org.springframework.beans.factory.annotation.Autowired;
9 11 import org.springframework.web.bind.annotation.*;
10 12  
  13 +import javax.servlet.http.HttpServletResponse;
  14 +import java.io.*;
11 15 import java.util.HashMap;
12 16 import java.util.List;
13 17 import java.util.Map;
... ... @@ -120,4 +124,32 @@ public class TTInfoDetailController extends BController&lt;TTInfoDetail, Long&gt; {
120 124 public Map<String, Object> skbDetailMxSave(@RequestParam Map<String, Object> entities){
121 125 return ttInfoDetailService.skbDetailMxSave(entities);
122 126 }
  127 +
  128 +
  129 + @RequestMapping(value = "/exportDTDFile", method = RequestMethod.POST)
  130 + public void exportFile(
  131 + @RequestBody TTinfoDetailDynamicData.DTInfos dtInfos,
  132 + HttpServletResponse response) throws Exception {
  133 + DataToolsFile dataToolsFile = ttInfoDetailService.exportDynamicTTinfo(dtInfos);
  134 + // 流输出导出文件
  135 + response.setHeader("content-type", "application/octet-stream");
  136 + response.setHeader("Content-Disposition", "attachment; filename=" + dataToolsFile.getFile().getName());
  137 + response.setContentType("application/octet-stream");
  138 +
  139 + OutputStream os = response.getOutputStream();
  140 + BufferedOutputStream bos = new BufferedOutputStream(os);
  141 +
  142 + InputStream is = new FileInputStream(dataToolsFile.getFile());
  143 + BufferedInputStream bis = new BufferedInputStream(is);
  144 +
  145 + int length = 0;
  146 + byte[] temp = new byte[1 * 1024 * 10];
  147 + while ((length = bis.read(temp)) != -1) {
  148 + bos.write(temp, 0, length);
  149 + }
  150 + bos.flush();
  151 + bis.close();
  152 + bos.close();
  153 + is.close();
  154 + }
123 155 }
... ...
src/main/java/com/bsth/data/gpsdata_v2/handlers/overspeed/GpsOverspeed.java
1   -package com.bsth.data.gpsdata_v2.handlers.overspeed;
2   -
3   -/**
4   - * gps 超速信息
5   - * Created by panzhao on 2018/1/9.
6   - */
7   -public class GpsOverspeed {
8   -
9   - private String device;
10   -
11   - private String nbbm;
12   -
13   - private String lineCode;
14   -
15   - /**
16   - * 开始超速时间 HH:mm
17   - */
18   - private String sts;
19   -
20   - private long st;
21   -
22   - /**
23   - * 结束超速时间 HH:mm
24   - */
25   - private String ets;
26   -
27   - /**
28   - * 最新速度值
29   - */
30   - private float speed;
31   -
32   - /**
33   - * 0:结束超速, 1:离线
34   - */
35   - private int eType;
36   -
37   - public String getDevice() {
38   - return device;
39   - }
40   -
41   - public void setDevice(String device) {
42   - this.device = device;
43   - }
44   -
45   - public String getNbbm() {
46   - return nbbm;
47   - }
48   -
49   - public void setNbbm(String nbbm) {
50   - this.nbbm = nbbm;
51   - }
52   -
53   - public String getLineCode() {
54   - return lineCode;
55   - }
56   -
57   - public void setLineCode(String lineCode) {
58   - this.lineCode = lineCode;
59   - }
60   -
61   - public String getSts() {
62   - return sts;
63   - }
64   -
65   - public void setSts(String sts) {
66   - this.sts = sts;
67   - }
68   -
69   - public long getSt() {
70   - return st;
71   - }
72   -
73   - public void setSt(long st) {
74   - this.st = st;
75   - }
76   -
77   - public String getEts() {
78   - return ets;
79   - }
80   -
81   - public void setEts(String ets) {
82   - this.ets = ets;
83   - }
84   -
85   - public float getSpeed() {
86   - return speed;
87   - }
88   -
89   - public void setSpeed(float speed) {
90   - this.speed = speed;
91   - }
92   -
93   - public int geteType() {
94   - return eType;
95   - }
96   -
97   - public void seteType(int eType) {
98   - this.eType = eType;
99   - }
100   -}
  1 +package com.bsth.data.gpsdata_v2.handlers.overspeed;
  2 +
  3 +/**
  4 + * gps 超速信息
  5 + * Created by panzhao on 2018/1/9.
  6 + */
  7 +public class GpsOverspeed {
  8 +
  9 + private String device;
  10 +
  11 + private String nbbm;
  12 +
  13 + private String lineCode;
  14 +
  15 + /**
  16 + * 开始超速时间 HH:mm
  17 + */
  18 + private String sts;
  19 +
  20 + private long st;
  21 +
  22 + /**
  23 + * 结束超速时间 HH:mm
  24 + */
  25 + private String ets;
  26 +
  27 + /**
  28 + * 最新速度值
  29 + */
  30 + private float speed;
  31 +
  32 + /**
  33 + * 0:结束超速, 1:离线
  34 + */
  35 + private int eType;
  36 +
  37 + public String getDevice() {
  38 + return device;
  39 + }
  40 +
  41 + public void setDevice(String device) {
  42 + this.device = device;
  43 + }
  44 +
  45 + public String getNbbm() {
  46 + return nbbm;
  47 + }
  48 +
  49 + public void setNbbm(String nbbm) {
  50 + this.nbbm = nbbm;
  51 + }
  52 +
  53 + public String getLineCode() {
  54 + return lineCode;
  55 + }
  56 +
  57 + public void setLineCode(String lineCode) {
  58 + this.lineCode = lineCode;
  59 + }
  60 +
  61 + public String getSts() {
  62 + return sts;
  63 + }
  64 +
  65 + public void setSts(String sts) {
  66 + this.sts = sts;
  67 + }
  68 +
  69 + public long getSt() {
  70 + return st;
  71 + }
  72 +
  73 + public void setSt(long st) {
  74 + this.st = st;
  75 + }
  76 +
  77 + public String getEts() {
  78 + return ets;
  79 + }
  80 +
  81 + public void setEts(String ets) {
  82 + this.ets = ets;
  83 + }
  84 +
  85 + public float getSpeed() {
  86 + return speed;
  87 + }
  88 +
  89 + public void setSpeed(float speed) {
  90 + this.speed = speed;
  91 + }
  92 +
  93 + public int geteType() {
  94 + return eType;
  95 + }
  96 +
  97 + public void seteType(int eType) {
  98 + this.eType = eType;
  99 + }
  100 +}
... ...
src/main/java/com/bsth/data/gpsdata_v2/handlers/overspeed/OverspeedProcess.java
1   -package com.bsth.data.gpsdata_v2.handlers.overspeed;
2   -
3   -import com.bsth.data.gpsdata_v2.cache.GeoCacheData;
4   -import com.bsth.data.gpsdata_v2.entity.GpsEntity;
5   -import com.google.common.collect.ArrayListMultimap;
6   -import org.joda.time.format.DateTimeFormat;
7   -import org.joda.time.format.DateTimeFormatter;
8   -import org.slf4j.Logger;
9   -import org.slf4j.LoggerFactory;
10   -import org.springframework.stereotype.Component;
11   -
12   -import java.util.*;
13   -
14   -/**
15   - * 超速处理
16   - * Created by panzhao on 2018/1/9.
17   - */
18   -@Component
19   -public class OverspeedProcess {
20   -
21   -
22   - private static final double DEFAULT_SPEED_LIMIT = 60;
23   -
24   - private static final double INVALID_SPEED_LIMIT = 110;
25   -
26   - private static final int CONT_SPEED_SIZE = 6;
27   -
28   - private static DateTimeFormatter fmtHHmm = DateTimeFormat.forPattern("HH:mm");
29   -
30   - private static GpsOverspeedComp comp = new GpsOverspeedComp();
31   - /**
32   - * 按线路分组的超速信息
33   - */
34   - private static ArrayListMultimap<String, GpsOverspeed> multimap;
35   -
36   - /**
37   - * 设备号 --> 当前超速
38   - */
39   - private static Map<String, GpsOverspeed> realOverspeedMap;
40   -
41   - /**
42   - * 设备号 --> 连续超速次数
43   - */
44   - private static Map<String, Integer> contSpeedMap;
45   -
46   - Logger logger = LoggerFactory.getLogger(this.getClass());
47   -
48   - static{
49   - multimap = ArrayListMultimap.create();
50   - contSpeedMap = new HashMap();
51   - realOverspeedMap = new HashMap();
52   - }
53   -
54   - public static void clear(){
55   - multimap = null;
56   - multimap = ArrayListMultimap.create();
57   -
58   - contSpeedMap = null;
59   - contSpeedMap = new HashMap();
60   -
61   - realOverspeedMap = null;
62   - realOverspeedMap = new HashMap();
63   - }
64   -
65   - public boolean process(GpsEntity gps){
66   - if(gps.getSpeed() >= INVALID_SPEED_LIMIT){
67   - return false;//无效的速度
68   - }
69   -
70   - Double maxSpeed = GeoCacheData.speedLimit(gps.getLineId());
71   - if(null == maxSpeed)
72   - maxSpeed = DEFAULT_SPEED_LIMIT;
73   -
74   - if(gps.getSpeed() > maxSpeed){
75   - overspeed(gps, maxSpeed);
76   - }
77   - else if(realOverspeedMap.containsKey(gps.getDeviceId())){
78   - String device = gps.getDeviceId();
79   - //结束超速
80   - GpsOverspeed sp = realOverspeedMap.get(device);
81   - sp.setEts(fmtHHmm.print(gps.getTimestamp()));
82   -
83   - realOverspeedMap.remove(device);
84   - contSpeedMap.put(device, 0);
85   - }
86   - return false;
87   - }
88   -
89   - private void overspeed(GpsEntity gps, Double maxSpeed) {
90   - String device = gps.getDeviceId();
91   - Integer cont = contSpeedMap.get(device);
92   -
93   - if(null == cont)
94   - cont = 1;
95   -
96   - cont++;
97   -
98   - if(gps.getSpeed() - maxSpeed > (maxSpeed * 0.1))
99   - cont++;
100   -
101   - if(cont >= CONT_SPEED_SIZE){
102   - if(realOverspeedMap.containsKey(device)){
103   - //正在超速,更新速度
104   - realOverspeedMap.get(device).setSpeed(gps.getSpeed());
105   - }
106   - else{
107   - logger.info("开始超速..." + gps.getNbbm());
108   - GpsOverspeed sp = new GpsOverspeed();
109   - sp.setLineCode(gps.getLineId());
110   - sp.setDevice(device);
111   - sp.setSpeed(gps.getSpeed());
112   - sp.setNbbm(gps.getNbbm());
113   - sp.setSts(fmtHHmm.print(gps.getTimestamp()));
114   - sp.setSt(gps.getTimestamp());
115   -
116   - realOverspeedMap.put(device, sp);
117   - multimap.put(sp.getLineCode(), sp);
118   - }
119   - //标记gps超速
120   - gps.setAbnormalStatus("overspeed");
121   - }
122   -
123   - contSpeedMap.put(device, cont);
124   - }
125   -
126   - /**
127   - * 设备掉线
128   - * @param device
129   - */
130   - public void offline(String device){
131   - if(realOverspeedMap.containsKey(device)){
132   - //结束超速
133   - GpsOverspeed sp = realOverspeedMap.get(device);
134   - sp.setEts(fmtHHmm.print(System.currentTimeMillis()));
135   - sp.seteType(1);
136   -
137   - realOverspeedMap.remove(device);
138   - contSpeedMap.put(device, 0);
139   - }
140   - }
141   -
142   -
143   - public List<GpsOverspeed> findByLines(List<String> lineArray){
144   - List<GpsOverspeed> rs = new ArrayList<>();
145   -
146   - for(String code : lineArray){
147   - rs.addAll(multimap.get(code));
148   - }
149   -
150   - //按发送时间排序
151   - Collections.sort(rs, comp);
152   - if(rs.size() > 50)
153   - rs = rs.subList(0, 50);
154   -
155   - return rs;
156   - }
157   -
158   -
159   - public static class GpsOverspeedComp implements Comparator<GpsOverspeed>{
160   -
161   - @Override
162   - public int compare(GpsOverspeed o1, GpsOverspeed o2) {
163   - return (int) (o2.getSt() - o1.getSt());
164   - }
165   - }
166   -}
  1 +package com.bsth.data.gpsdata_v2.handlers.overspeed;
  2 +
  3 +import com.bsth.data.gpsdata_v2.cache.GeoCacheData;
  4 +import com.bsth.data.gpsdata_v2.entity.GpsEntity;
  5 +import com.google.common.collect.ArrayListMultimap;
  6 +import org.joda.time.format.DateTimeFormat;
  7 +import org.joda.time.format.DateTimeFormatter;
  8 +import org.slf4j.Logger;
  9 +import org.slf4j.LoggerFactory;
  10 +import org.springframework.stereotype.Component;
  11 +
  12 +import java.util.*;
  13 +
  14 +/**
  15 + * 超速处理
  16 + * Created by panzhao on 2018/1/9.
  17 + */
  18 +@Component
  19 +public class OverspeedProcess {
  20 +
  21 +
  22 + private static final double DEFAULT_SPEED_LIMIT = 60;
  23 +
  24 + private static final double INVALID_SPEED_LIMIT = 110;
  25 +
  26 + private static final int CONT_SPEED_SIZE = 6;
  27 +
  28 + private static DateTimeFormatter fmtHHmm = DateTimeFormat.forPattern("HH:mm");
  29 +
  30 + private static GpsOverspeedComp comp = new GpsOverspeedComp();
  31 + /**
  32 + * 按线路分组的超速信息
  33 + */
  34 + private static ArrayListMultimap<String, GpsOverspeed> multimap;
  35 +
  36 + /**
  37 + * 设备号 --> 当前超速
  38 + */
  39 + private static Map<String, GpsOverspeed> realOverspeedMap;
  40 +
  41 + /**
  42 + * 设备号 --> 连续超速次数
  43 + */
  44 + private static Map<String, Integer> contSpeedMap;
  45 +
  46 + Logger logger = LoggerFactory.getLogger(this.getClass());
  47 +
  48 + static{
  49 + multimap = ArrayListMultimap.create();
  50 + contSpeedMap = new HashMap();
  51 + realOverspeedMap = new HashMap();
  52 + }
  53 +
  54 + public static void clear(){
  55 + multimap = null;
  56 + multimap = ArrayListMultimap.create();
  57 +
  58 + contSpeedMap = null;
  59 + contSpeedMap = new HashMap();
  60 +
  61 + realOverspeedMap = null;
  62 + realOverspeedMap = new HashMap();
  63 + }
  64 +
  65 + public boolean process(GpsEntity gps){
  66 + if(gps.getSpeed() >= INVALID_SPEED_LIMIT){
  67 + return false;//无效的速度
  68 + }
  69 +
  70 + Double maxSpeed = GeoCacheData.speedLimit(gps.getLineId());
  71 + if(null == maxSpeed)
  72 + maxSpeed = DEFAULT_SPEED_LIMIT;
  73 +
  74 + if(gps.getSpeed() > maxSpeed){
  75 + overspeed(gps, maxSpeed);
  76 + }
  77 + else if(realOverspeedMap.containsKey(gps.getDeviceId())){
  78 + String device = gps.getDeviceId();
  79 + //结束超速
  80 + GpsOverspeed sp = realOverspeedMap.get(device);
  81 + sp.setEts(fmtHHmm.print(gps.getTimestamp()));
  82 +
  83 + realOverspeedMap.remove(device);
  84 + contSpeedMap.put(device, 0);
  85 + }
  86 + return false;
  87 + }
  88 +
  89 + private void overspeed(GpsEntity gps, Double maxSpeed) {
  90 + String device = gps.getDeviceId();
  91 + Integer cont = contSpeedMap.get(device);
  92 +
  93 + if(null == cont)
  94 + cont = 1;
  95 +
  96 + cont++;
  97 +
  98 + if(gps.getSpeed() - maxSpeed > (maxSpeed * 0.1))
  99 + cont++;
  100 +
  101 + if(cont >= CONT_SPEED_SIZE){
  102 + if(realOverspeedMap.containsKey(device)){
  103 + //正在超速,更新速度
  104 + realOverspeedMap.get(device).setSpeed(gps.getSpeed());
  105 + }
  106 + else{
  107 + logger.info("开始超速..." + gps.getNbbm());
  108 + GpsOverspeed sp = new GpsOverspeed();
  109 + sp.setLineCode(gps.getLineId());
  110 + sp.setDevice(device);
  111 + sp.setSpeed(gps.getSpeed());
  112 + sp.setNbbm(gps.getNbbm());
  113 + sp.setSts(fmtHHmm.print(gps.getTimestamp()));
  114 + sp.setSt(gps.getTimestamp());
  115 +
  116 + realOverspeedMap.put(device, sp);
  117 + multimap.put(sp.getLineCode(), sp);
  118 + }
  119 + //标记gps超速
  120 + gps.setAbnormalStatus("overspeed");
  121 + }
  122 +
  123 + contSpeedMap.put(device, cont);
  124 + }
  125 +
  126 + /**
  127 + * 设备掉线
  128 + * @param device
  129 + */
  130 + public void offline(String device){
  131 + if(realOverspeedMap.containsKey(device)){
  132 + //结束超速
  133 + GpsOverspeed sp = realOverspeedMap.get(device);
  134 + sp.setEts(fmtHHmm.print(System.currentTimeMillis()));
  135 + sp.seteType(1);
  136 +
  137 + realOverspeedMap.remove(device);
  138 + contSpeedMap.put(device, 0);
  139 + }
  140 + }
  141 +
  142 +
  143 + public List<GpsOverspeed> findByLines(List<String> lineArray){
  144 + List<GpsOverspeed> rs = new ArrayList<>();
  145 +
  146 + for(String code : lineArray){
  147 + rs.addAll(multimap.get(code));
  148 + }
  149 +
  150 + //按发送时间排序
  151 + Collections.sort(rs, comp);
  152 + if(rs.size() > 50)
  153 + rs = rs.subList(0, 50);
  154 +
  155 + return rs;
  156 + }
  157 +
  158 +
  159 + public static class GpsOverspeedComp implements Comparator<GpsOverspeed>{
  160 +
  161 + @Override
  162 + public int compare(GpsOverspeed o1, GpsOverspeed o2) {
  163 + return (int) (o2.getSt() - o1.getSt());
  164 + }
  165 + }
  166 +}
... ...
src/main/java/com/bsth/service/realcontrol/ScheduleRealInfoService.java
... ... @@ -144,6 +144,8 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L
144 144 Map<String,Object> historySave(ScheduleRealInfo sch);
145 145  
146 146 Map<String, Object> MapById(Long id) ;
  147 + Map<String, Object> MapByIdQp(Long id) ;
  148 +
147 149  
148 150 Map<String,Object> svgAttr(String jsonStr);
149 151  
... ...
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
... ... @@ -3732,22 +3732,23 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
3732 3732 }
3733 3733  
3734 3734 //计算里程和班次数,并放入Map里
3735   - map = new HashMap<String, Object>();
  3735 + map = findKMBCQp(clZbh, date, line);
3736 3736 map.put("jzl", jzl);
3737   - map.put("jhlc", format.format(jhlc + jcclc));
3738   - map.put("yygljh", format.format(jhlc));
3739   - map.put("ssgl", format.format(remMileage));
3740   - map.put("ksgl", format.format(ksgl));
3741   - map.put("yyglsj", format.format(yygl));
3742   - map.put("jhbc", jhbc);
3743   - map.put("jcclc", jcclc);
3744   -
3745   - map.put("ljgl", format.format(addMileage));
3746   - map.put("ssbc", cjbc);
3747   - map.put("ysgl", format.format(yygl));
3748   - map.put("sjbc", jhbc - cjbc + ljbc);
3749   - map.put("zgl", format.format(yygl + ksgl + jcclc));
3750   - map.put("ljbc", ljbc);
  3737 +// map.put("jhlc", format.format(jhlc + jcclc));
  3738 +// map.put("yygljh", format.format(jhlc));
  3739 +// map.put("ssgl", format.format(remMileage));
  3740 +// map.put("ksgl", format.format(ksgl));
  3741 +// map.put("yyglsj", format.format(yygl));
  3742 +// map.put("jhbc", jhbc);
  3743 +// map.put("jcclc", jcclc);
  3744 +//
  3745 +// map.put("ljgl", format.format(addMileage));
  3746 +// map.put("ssbc", cjbc);
  3747 +// map.put("ysgl", format.format(yygl));
  3748 +// map.put("sjbc", jhbc - cjbc + ljbc);
  3749 +// map.put("zgl", format.format(yygl + ksgl + jcclc));
  3750 +// map.put("ljbc", ljbc);
  3751 +
3751 3752 String zdp = "", zwdp = "", wdp = "";
3752 3753 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
3753 3754 List<DutyEmployee> listDtuy = dutyEmployeeService.getDutyEmployee(line, date + "00:00", date + "23:59");
... ... @@ -4006,6 +4007,141 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
4006 4007 map.put("dbdp", dbdp);
4007 4008 return map;
4008 4009 }
  4010 +
  4011 + @Override
  4012 + public Map<String, Object> MapByIdQp(Long id) {
  4013 + // TODO Auto-generated method stub
  4014 + Map<String, Object> map = new HashMap<String, Object>();
  4015 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
  4016 + ScheduleRealInfo s = scheduleRealInfoRepository.scheduleById(id);
  4017 + String xlbm = s.getXlBm();
  4018 + String fcrq = s.getScheduleDateStr();
  4019 +
  4020 + int type=0;
  4021 + Double ccyl = 0.0;
  4022 + Double jcyl = 0.0;
  4023 + Double yh = 0.0;
  4024 + Double jzl = 0.0;
  4025 + Double zlc=0.0;
  4026 +// List<Ylb> listYlb = ylbRepository.queryListYlb(fcrq, s.getClZbh(), s.getjGh(),xlbm);
  4027 +// List<Dlb> listDlb = dlbRepository.queryListDlb(fcrq, s.getClZbh(), s.getjGh(),xlbm);
  4028 +// if(listYlb.size()>0){
  4029 +// type=0;
  4030 +// for (int i = 0; i < listYlb.size(); i++) {
  4031 +// Ylb y = listYlb.get(i);
  4032 +// if(y.getLp()==null){
  4033 +// ccyl=Arith.add(ccyl, y.getCzyl());
  4034 +// jcyl=Arith.add(jcyl, y.getJzyl());
  4035 +// yh =Arith.add(yh ,y.getYh());
  4036 +// jzl =Arith.add(jzl, y.getJzl());
  4037 +// zlc =Arith.add(zlc, y.getZlc());
  4038 +// }else{
  4039 +// if(y.getLp().equals(s.getLpName())){
  4040 +// ccyl=Arith.add(ccyl, y.getCzyl());
  4041 +// jcyl=Arith.add(jcyl, y.getJzyl());
  4042 +// yh =Arith.add(yh ,y.getYh());
  4043 +// jzl =Arith.add(jzl, y.getJzl());
  4044 +// zlc =Arith.add(zlc, y.getZlc());
  4045 +// }
  4046 +// }
  4047 +//
  4048 +// }
  4049 +// }else{
  4050 +// type=1;
  4051 +// for (int i = 0; i < listDlb.size(); i++) {
  4052 +// Dlb d=listDlb.get(i);
  4053 +// if(d.getLp()==null){
  4054 +// ccyl=Arith.add(ccyl, d.getCzcd());
  4055 +// jcyl=Arith.add(jcyl, d.getJzcd());
  4056 +// yh =Arith.add(yh ,d.getHd());
  4057 +// jzl =Arith.add(jzl, d.getCdl());
  4058 +// zlc =Arith.add(zlc, d.getZlc());
  4059 +// }else{
  4060 +// if(d.getLp().equals(s.getLpName())){
  4061 +// ccyl=Arith.add(ccyl, d.getCzcd());
  4062 +// jcyl=Arith.add(jcyl, d.getJzcd());
  4063 +// yh =Arith.add(yh ,d.getHd());
  4064 +// jzl =Arith.add(jzl, d.getCdl());
  4065 +// zlc =Arith.add(zlc, d.getZlc());
  4066 +// }
  4067 +// }
  4068 +//
  4069 +// }
  4070 +// }
  4071 +
  4072 + List<Ylxxb> listylxxb=ylxxbRepository.queryListYlxxb(s.getClZbh(), fcrq);
  4073 + for (int i = 0; i < listylxxb.size(); i++) {
  4074 + Ylxxb t=listylxxb.get(i);
  4075 + jzl =Arith.add(jzl, t.getJzl());
  4076 + }
  4077 + map.put("jzl", jzl);
  4078 + map.put("yh", yh);
  4079 + map.put("ccyl", ccyl);
  4080 + map.put("jcyl", jcyl);
  4081 + map.put("type", type);
  4082 + map.put("zlc", zlc);
  4083 + map.put("xlName", s.getXlName());
  4084 + map.put("clZbh", s.getClZbh());
  4085 + map.put("plate", BasicData.nbbmCompanyPlateMap.get(s.getClZbh()));
  4086 + map.put("fcsjActual", s.getFcsjActual());
  4087 + map.put("zdzName", s.getZdzName());
  4088 + map.put("scheduleDate", s.getScheduleDateStr());
  4089 + map.put("lpName", s.getLpName());
  4090 + String zdp = "", zwdp = "", wdp = "";
  4091 + String zdpT = "", zwdpT = "", wdpT = "";
  4092 + String dbdp="";
  4093 + List<DutyEmployee> list = dutyEmployeeService.getDutyEmployee(xlbm, fcrq + "00:01", fcrq + "23:59");
  4094 + try {
  4095 + Long fcsj1 = sdf.parse(fcrq + " 00:01").getTime();
  4096 + Long fcsj2 = sdf.parse(fcrq + " 11:00").getTime();
  4097 + Long fcsj3 = sdf.parse(fcrq + " 23:59").getTime();
  4098 + for (int i = 0; i < list.size(); i++) {
  4099 + DutyEmployee t = list.get(i);
  4100 + if(dbdp.indexOf(t.getuName()) == -1){
  4101 + if(!(dbdp.length()>0)){
  4102 + dbdp =t.getuName();
  4103 + }else{
  4104 + dbdp +=","+t.getuName();
  4105 + }
  4106 + }
  4107 + Long ts = t.getTs();
  4108 + if (ts > fcsj1 && ts < fcsj2) {
  4109 + if (zdp.indexOf(t.getuName()) == -1) {
  4110 + if (!(zdp.length() > 0)) {
  4111 + zdpT = t.getuName() + "...";
  4112 + }
  4113 + zdp += t.getuName() + ",";
  4114 +
  4115 + }
  4116 + } else if (ts > fcsj2 && ts < fcsj3) {
  4117 + if (zwdp.indexOf(t.getuName()) == -1) {
  4118 + if (!(zwdp.length() > 0)) {
  4119 + zwdpT = t.getuName() + "...";
  4120 + }
  4121 + zwdp += t.getuName() + ",";
  4122 + }
  4123 + } else {
  4124 + if (wdp.indexOf(t.getuName()) == -1) {
  4125 + if (!(wdp.length() > 0)) {
  4126 + wdpT = t.getuName() + "...";
  4127 + }
  4128 + wdp += t.getuName() + ",";
  4129 + }
  4130 + }
  4131 + }
  4132 + } catch (ParseException e) {
  4133 + // TODO Auto-generated catch block
  4134 + e.printStackTrace();
  4135 + }
  4136 + map.put("zdp", zdp);
  4137 + map.put("zwdp", zwdp);
  4138 + map.put("wdp", wdp);
  4139 + map.put("zdpT", zdpT);
  4140 + map.put("zwdpT", zwdpT);
  4141 + map.put("wdpT", wdpT);
  4142 + map.put("dbdp", dbdp);
  4143 + return map;
  4144 + }
4009 4145  
4010 4146 @Override
4011 4147 public List<Map<String, Object>> scheduleDailyQp(String line, String date) {
... ...
src/main/java/com/bsth/service/schedule/TTInfoDetailService.java
... ... @@ -2,7 +2,9 @@ package com.bsth.service.schedule;
2 2  
3 3 import com.bsth.entity.schedule.TTInfoDetail;
4 4 import com.bsth.service.schedule.datatools.TTInfoDetailForEdit;
  5 +import com.bsth.service.schedule.datatools.TTinfoDetailDynamicData;
5 6 import com.bsth.service.schedule.exception.ScheduleException;
  7 +import com.bsth.service.schedule.utils.DataToolsFile;
6 8  
7 9 import java.util.List;
8 10 import java.util.Map;
... ... @@ -22,6 +24,14 @@ public interface TTInfoDetailService extends BService&lt;TTInfoDetail, Long&gt; {
22 24 TTInfoDetailForEdit.EditInfo getEditInfo(Integer xlid, Long ttid, Long maxfcno) throws ScheduleException;
23 25  
24 26 /**
  27 + * 导出动态时刻表。
  28 + * @param dtInfos
  29 + * @return
  30 + * @throws ScheduleException
  31 + */
  32 + DataToolsFile exportDynamicTTinfo(TTinfoDetailDynamicData.DTInfos dtInfos) throws ScheduleException;
  33 +
  34 + /**
25 35 * 获取时刻表最大发车顺序号
26 36 * @param xlid 线路id
27 37 * @param ttinfoid 时刻表id
... ...
src/main/java/com/bsth/service/schedule/datatools/TTInfoDetailDataToolsImpl.java
1 1 package com.bsth.service.schedule.datatools;
2 2  
  3 +import com.bsth.entity.Station;
  4 +import com.bsth.service.StationService;
3 5 import com.bsth.service.schedule.exception.ScheduleException;
4 6 import com.bsth.service.schedule.utils.*;
5 7 import jxl.Sheet;
... ... @@ -8,7 +10,13 @@ import jxl.write.Label;
8 10 import jxl.write.WritableSheet;
9 11 import jxl.write.WritableWorkbook;
10 12 import org.apache.commons.lang3.StringUtils;
  13 +import org.apache.poi.ss.usermodel.Cell;
11 14 import org.apache.poi.ss.usermodel.Row;
  15 +import org.apache.poi.ss.util.CellRangeAddress;
  16 +import org.apache.poi.ss.util.WorkbookUtil;
  17 +import org.apache.poi.xssf.usermodel.XSSFRow;
  18 +import org.apache.poi.xssf.usermodel.XSSFSheet;
  19 +import org.apache.poi.xssf.usermodel.XSSFWorkbook;
12 20 import org.joda.time.DateTime;
13 21 import org.slf4j.Logger;
14 22 import org.slf4j.LoggerFactory;
... ... @@ -17,20 +25,27 @@ import org.springframework.beans.factory.annotation.Qualifier;
17 25 import org.springframework.boot.context.properties.EnableConfigurationProperties;
18 26 import org.springframework.stereotype.Service;
19 27  
  28 +import java.awt.*;
20 29 import java.io.File;
  30 +import java.io.FileOutputStream;
21 31 import java.io.PrintWriter;
22 32 import java.io.StringWriter;
23 33 import java.util.*;
  34 +import java.util.List;
24 35  
25 36 /**
26 37 * Created by xu on 17/5/16.
27 38 */
28 39 @EnableConfigurationProperties(DataToolsProperties.class)
29 40 @Service(value = "ttInfoDetail_dataTool")
30   -public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetailForEdit {
  41 +public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetailForEdit, TTinfoDetailDynamicData {
31 42 /** 日志记录器 */
32 43 private final static Logger LOGGER = LoggerFactory.getLogger(TTInfoDetailDataToolsImpl.class);
33 44  
  45 + // TODO:之后改了
  46 + @Autowired
  47 + private StationService stationService;
  48 +
34 49 @Autowired
35 50 @Qualifier(value = "dataToolsServiceImpl")
36 51 private DataToolsService dataToolsService;
... ... @@ -363,4 +378,141 @@ public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetail
363 378 }
364 379 }
365 380  
  381 + @Override
  382 + public DataToolsFile exportDynamicTTinfo(DTInfos dtInfos) throws ScheduleException {
  383 + try {
  384 + // 使用POI,创建xlsx文件
  385 + XSSFWorkbook wb = new XSSFWorkbook();
  386 + XSSFSheet sheet = wb.createSheet(WorkbookUtil.createSafeSheetName("时刻表信息"));
  387 +
  388 + //-------------------------------- 1、路牌班次数据 -------------------------------//
  389 + List<LpObj> lpObjList = dtInfos.getLpObjList();
  390 +
  391 + // 构建第一行数据
  392 + XSSFRow lpHeadRow = sheet.createRow((short) 0);
  393 + if (lpObjList.size() == 0) {
  394 + throw new RuntimeException("没有班次数据!");
  395 + }
  396 + int groupCount = lpObjList.get(0).getGroupCount(); // 获取总圈数
  397 + if (groupCount == 0) {
  398 + throw new RuntimeException("总圈数为0,有问题!");
  399 + }
  400 +
  401 + // 构造表头
  402 + PoiUtils.createStringXSSFCell(wb, lpHeadRow, (short)0, "路牌", new Color(0x96b9d7));
  403 + Station station1 = stationService.findById(lpObjList.get(0).getStationRouteId1());
  404 + Station station2 = stationService.findById(lpObjList.get(1).getStationRouteId2());
  405 + for (int i = 0; i < groupCount; i++) {
  406 + PoiUtils.createStringXSSFCell(wb, lpHeadRow, (short) (i * 2 + 1),
  407 + station1.getStationName(), new Color(0x96b9d7));
  408 + PoiUtils.createStringXSSFCell(wb, lpHeadRow, (short) (i * 2 + 2),
  409 + station2.getStationName(), new Color(0x96b9d7));
  410 + }
  411 + PoiUtils.createStringXSSFCell(wb, lpHeadRow, (short) (groupCount * 2 + 1),
  412 + "路牌工时", new Color(0x96b9d7));
  413 + PoiUtils.createStringXSSFCell(wb, lpHeadRow, (short) (groupCount * 2 + 2),
  414 + "营运班次数", new Color(0x96b9d7));
  415 +
  416 + // 构建每个路牌的班次数据
  417 + for (int i = 0; i < lpObjList.size(); i++) {
  418 + LpObj lpObj = lpObjList.get(i);
  419 + XSSFRow lpRow = sheet.createRow((short) (i + 1));
  420 + PoiUtils.createStringXSSFCell(wb, lpRow, (short) 0, lpObj.getLpname());
  421 + for (int j = 0; j < groupCount; j++) {
  422 + PoiUtils.createBlankXSSFCell(wb, lpRow, (short) (j * 2 + 1));
  423 + PoiUtils.createBlankXSSFCell(wb, lpRow, (short) (j * 2 + 2));
  424 + }
  425 + for (BcObj bcObj : lpObj.getBcObjList()) {
  426 + Cell cell = lpRow.getCell((short) (bcObj.getGroupNo() * 2 + bcObj.getGroupBcNo() + 1));
  427 + cell.setCellValue(bcObj.getFcsj());
  428 + }
  429 + // 路牌工时/班次数
  430 + PoiUtils.createDoubleXSSFCell(wb, lpRow, (short) (groupCount * 2 + 1),
  431 + lpObj.getZgs() / 60);
  432 + // 营运班次数
  433 + PoiUtils.createIntegerXSSFCell(wb, lpRow, (short) (groupCount * 2 + 2),
  434 + lpObj.getZbc());
  435 + }
  436 +
  437 + // 自适应单元格长宽
  438 + sheet.autoSizeColumn(0);
  439 + for (int i = 0; i < groupCount; i++) {
  440 + sheet.autoSizeColumn(i * 2 + 1);
  441 + sheet.autoSizeColumn(i * 2 + 2);
  442 + }
  443 + sheet.autoSizeColumn(groupCount * 2 + 1);
  444 + sheet.autoSizeColumn(groupCount * 2 + 2);
  445 +
  446 + // 锁定行首,列首
  447 + sheet.createFreezePane(1, 1);
  448 +
  449 + //-------------------------------- 2、统计数据 -------------------------------//
  450 + List<StatInfo> statInfos = dtInfos.getStatInfoList();
  451 +
  452 + // 创建总的统计数据格式
  453 + // 第一行 统计数据
  454 + // 第二行 序号,统计项目(8个单元格合并),统计数值
  455 + // 第三行开始数据,一共20行
  456 +
  457 + int startrow = lpObjList.size() + 3;
  458 + for (int i = startrow; i <= startrow + 22; i++) {
  459 + XSSFRow xssfRow = sheet.createRow(i);
  460 + for (int j = 0; j < 10; j++) {
  461 + PoiUtils.createStringXSSFCell(wb, xssfRow, (short) j, "");
  462 +
  463 + }
  464 + }
  465 + // 合并第一行
  466 + sheet.addMergedRegion(new CellRangeAddress(startrow, startrow, 0, 9));
  467 + sheet.getRow(startrow).getCell(0).setCellValue("统计数据");
  468 + // 合并第二行
  469 + sheet.getRow(startrow + 1).getCell(0).setCellValue("序号");
  470 + sheet.getRow(startrow + 1).getCell(1).setCellValue("统计项目");
  471 + sheet.getRow(startrow + 1).getCell(9).setCellValue("统计数值");
  472 + sheet.addMergedRegion(new CellRangeAddress(startrow + 1, startrow + 1, 1, 8));
  473 + // 处理后面具体统计行
  474 + for (int row = startrow + 2; row <= startrow + 2 + statInfos.size(); row++) {
  475 + sheet.addMergedRegion(new CellRangeAddress(row, row, 1, 8));
  476 + }
  477 +
  478 + for (int i = 0; i < statInfos.size(); i++) {
  479 + StatInfo statInfo = statInfos.get(i);
  480 +
  481 + // 1、统计序号
  482 + PoiUtils.setIntegerStyleXSSFCellStyle(wb, sheet.getRow(startrow + 2 + i).getCell(0));
  483 + sheet.getRow(startrow + 2 + i).getCell(0).setCellValue(i);
  484 +
  485 + // 2、统计项目
  486 + sheet.getRow(startrow + 2 + i).getCell(1).setCellValue(statInfo.getStatItem());
  487 +
  488 + // 3、统计数值
  489 + PoiUtils.setDoubleStyleXSSFCellStyle(wb, sheet.getRow(startrow + 2 + i).getCell(9));
  490 + sheet.getRow(startrow + 2 + i).getCell(9).setCellValue(statInfo.getStatValue());
  491 + }
  492 +
  493 + // 最后内存写入文件
  494 + String filepath = dataToolsProperties.getFileoutputDir() +
  495 + File.separator +
  496 + "动态时刻表-" +
  497 + new DateTime().toString("yyyyMMddHHmmss") + ".xlsx";
  498 + FileOutputStream fileOut = new FileOutputStream(filepath);
  499 + wb.write(fileOut);
  500 +
  501 + DataToolsFile dataToolsFile = new DataToolsFile();
  502 + dataToolsFile.setFileType(DataToolsFileType.XLSX);
  503 + dataToolsFile.setFile(new File(filepath));
  504 +
  505 + return dataToolsFile;
  506 +
  507 + } catch (Exception exp) {
  508 + LOGGER.info("//---------------- 动态时刻表输出 failed... ----------------//");
  509 +
  510 + StringWriter sw = new StringWriter();
  511 + exp.printStackTrace(new PrintWriter(sw));
  512 + LOGGER.info(sw.toString());
  513 +
  514 + throw new ScheduleException(exp);
  515 + }
  516 +
  517 + }
366 518 }
... ...
src/main/java/com/bsth/service/schedule/datatools/TTinfoDetailDynamicData.java 0 → 100644
  1 +package com.bsth.service.schedule.datatools;
  2 +
  3 +import com.bsth.service.schedule.exception.ScheduleException;
  4 +import com.bsth.service.schedule.utils.DataToolsFile;
  5 +import com.fasterxml.jackson.annotation.JsonCreator;
  6 +import com.fasterxml.jackson.annotation.JsonValue;
  7 +
  8 +import java.util.List;
  9 +
  10 +/**
  11 + * 动态时刻表数据。
  12 + */
  13 +public interface TTinfoDetailDynamicData {
  14 +
  15 + //---------------------- 生成时刻表用对象(以下) ---------------------//
  16 + public static enum BcType { // 班次类型枚举
  17 + IN("in"), // 进场
  18 + OUT("out"), // 出场
  19 + BD("bd"), // 早例保
  20 + LC("lc"), // 晚例保
  21 + NORMAL("normal"); // 正常
  22 + private String flag;
  23 +
  24 + @JsonCreator
  25 + private BcType(String flag) {
  26 + this.flag = flag;
  27 + }
  28 +
  29 + @JsonValue
  30 + public String getFlag() {
  31 + return flag;
  32 + }
  33 +
  34 + public void setFlag(String flag) {
  35 + this.flag = flag;
  36 + }
  37 + }
  38 +
  39 + public static class BcObj { // 班次对象
  40 + /** 班次时间 */
  41 + private Integer bcsj;
  42 + /** 停站时间 */
  43 + private Integer ssj;
  44 + /** 吃饭时间 */
  45 + private Integer eatsj;
  46 +
  47 + /** 停车场id */
  48 + private Integer tccid;
  49 + /** 起点站id */
  50 + private Integer qdzid;
  51 + /** 终点站id */
  52 + private Integer zdzid;
  53 +
  54 + /** 是否上行 */
  55 + private Boolean isUp;
  56 +
  57 + /** 班次类型 */
  58 + private BcType bcType;
  59 + /** 发车时刻 */
  60 + private String fcsj;
  61 +
  62 + /** 第几圈(从1开始) */
  63 + private Integer groupNo;
  64 + /** 圈里第几个班次(1或者2) */
  65 + private Integer groupBcNo;
  66 +
  67 + public Integer getBcsj() {
  68 + return bcsj;
  69 + }
  70 +
  71 + public void setBcsj(Integer bcsj) {
  72 + this.bcsj = bcsj;
  73 + }
  74 +
  75 + public Integer getSsj() {
  76 + return ssj;
  77 + }
  78 +
  79 + public void setSsj(Integer ssj) {
  80 + this.ssj = ssj;
  81 + }
  82 +
  83 + public Integer getEatsj() {
  84 + return eatsj;
  85 + }
  86 +
  87 + public void setEatsj(Integer eatsj) {
  88 + this.eatsj = eatsj;
  89 + }
  90 +
  91 + public Integer getTccid() {
  92 + return tccid;
  93 + }
  94 +
  95 + public void setTccid(Integer tccid) {
  96 + this.tccid = tccid;
  97 + }
  98 +
  99 + public Integer getQdzid() {
  100 + return qdzid;
  101 + }
  102 +
  103 + public void setQdzid(Integer qdzid) {
  104 + this.qdzid = qdzid;
  105 + }
  106 +
  107 + public Integer getZdzid() {
  108 + return zdzid;
  109 + }
  110 +
  111 + public void setZdzid(Integer zdzid) {
  112 + this.zdzid = zdzid;
  113 + }
  114 +
  115 + public BcType getBcType() {
  116 + return bcType;
  117 + }
  118 +
  119 + public void setBcType(BcType bcType) {
  120 + this.bcType = bcType;
  121 + }
  122 +
  123 + public String getFcsj() {
  124 + return fcsj;
  125 + }
  126 +
  127 + public void setFcsj(String fcsj) {
  128 + this.fcsj = fcsj;
  129 + }
  130 +
  131 + public Boolean getIsUp() {
  132 + return isUp;
  133 + }
  134 +
  135 + public void setIsUp(Boolean isUp) {
  136 + this.isUp = isUp;
  137 + }
  138 +
  139 + public Integer getGroupNo() {
  140 + return groupNo;
  141 + }
  142 +
  143 + public void setGroupNo(Integer groupNo) {
  144 + this.groupNo = groupNo;
  145 + }
  146 +
  147 + public Integer getGroupBcNo() {
  148 + return groupBcNo;
  149 + }
  150 +
  151 + public void setGroupBcNo(Integer groupBcNo) {
  152 + this.groupBcNo = groupBcNo;
  153 + }
  154 + }
  155 +
  156 + public static class LpObj { // 路牌对象
  157 + /** 路牌名字 */
  158 + private String lpname;
  159 + /** 每圈的第一个班次是否上行 */
  160 + private Boolean isUp;
  161 +
  162 + /** 第一个班次起点站路由id */
  163 + private Integer stationRouteId1;
  164 + /** 第二个班次起点站路由id */
  165 + private Integer stationRouteId2;
  166 +
  167 + /** 班次列表 */
  168 + private List<BcObj> bcObjList;
  169 + /** 总圈数 */
  170 + private Integer groupCount;
  171 +
  172 + /** 总工时 */
  173 + private Double zgs;
  174 + /** 总班次 */
  175 + private Integer zbc;
  176 +
  177 +
  178 + public String getLpname() {
  179 + return lpname;
  180 + }
  181 +
  182 + public void setLpname(String lpname) {
  183 + this.lpname = lpname;
  184 + }
  185 +
  186 + public Boolean getIsUp() {
  187 + return isUp;
  188 + }
  189 +
  190 + public void setIsUp(Boolean isUp) {
  191 + this.isUp = isUp;
  192 + }
  193 +
  194 + public List<BcObj> getBcObjList() {
  195 + return bcObjList;
  196 + }
  197 +
  198 + public void setBcObjList(List<BcObj> bcObjList) {
  199 + this.bcObjList = bcObjList;
  200 + }
  201 +
  202 + public Integer getGroupCount() {
  203 + return groupCount;
  204 + }
  205 +
  206 + public void setGroupCount(Integer groupCount) {
  207 + this.groupCount = groupCount;
  208 + }
  209 +
  210 + public Double getZgs() {
  211 + return zgs;
  212 + }
  213 +
  214 + public void setZgs(Double zgs) {
  215 + this.zgs = zgs;
  216 + }
  217 +
  218 + public Integer getZbc() {
  219 + return zbc;
  220 + }
  221 +
  222 + public void setZbc(Integer zbc) {
  223 + this.zbc = zbc;
  224 + }
  225 +
  226 + public Integer getStationRouteId1() {
  227 + return stationRouteId1;
  228 + }
  229 +
  230 + public void setStationRouteId1(Integer stationRouteId1) {
  231 + this.stationRouteId1 = stationRouteId1;
  232 + }
  233 +
  234 + public Integer getStationRouteId2() {
  235 + return stationRouteId2;
  236 + }
  237 +
  238 + public void setStationRouteId2(Integer stationRouteId2) {
  239 + this.stationRouteId2 = stationRouteId2;
  240 + }
  241 + }
  242 +
  243 + public static class StatInfo { // 统计数据对象
  244 + /** 统计项目 */
  245 + private String statItem;
  246 + /** 统计值 */
  247 + private Double statValue;
  248 +
  249 + public String getStatItem() {
  250 + return statItem;
  251 + }
  252 +
  253 + public void setStatItem(String statItem) {
  254 + this.statItem = statItem;
  255 + }
  256 +
  257 + public Double getStatValue() {
  258 + return statValue;
  259 + }
  260 +
  261 + public void setStatValue(Double statValue) {
  262 + this.statValue = statValue;
  263 + }
  264 + }
  265 +
  266 + public static class DTInfos { // 所有数据信息
  267 + /** 路牌班次数据列表 */
  268 + private List<LpObj> lpObjList;
  269 + /** 统计数据列表 */
  270 + private List<StatInfo> statInfoList;
  271 +
  272 + public List<LpObj> getLpObjList() {
  273 + return lpObjList;
  274 + }
  275 +
  276 + public void setLpObjList(List<LpObj> lpObjList) {
  277 + this.lpObjList = lpObjList;
  278 + }
  279 +
  280 + public List<StatInfo> getStatInfoList() {
  281 + return statInfoList;
  282 + }
  283 +
  284 + public void setStatInfoList(List<StatInfo> statInfoList) {
  285 + this.statInfoList = statInfoList;
  286 + }
  287 + }
  288 +
  289 + //---------------------- 生成时刻表用对象(以上) ---------------------//
  290 +
  291 + /**
  292 + * 导出动态时刻表数据。
  293 + * @param dtInfos
  294 + * @return
  295 + * @throws ScheduleException
  296 + */
  297 + public DataToolsFile exportDynamicTTinfo(DTInfos dtInfos) throws ScheduleException;
  298 +}
... ...
src/main/java/com/bsth/service/schedule/impl/TTInfoDetailServiceImpl.java
... ... @@ -19,6 +19,7 @@ import com.bsth.service.StationRouteService;
19 19 import com.bsth.service.schedule.GuideboardInfoService;
20 20 import com.bsth.service.schedule.TTInfoDetailService;
21 21 import com.bsth.service.schedule.datatools.TTInfoDetailForEdit;
  22 +import com.bsth.service.schedule.datatools.TTinfoDetailDynamicData;
22 23 import com.bsth.service.schedule.exception.ScheduleException;
23 24 import com.bsth.service.schedule.utils.DataToolsFile;
24 25 import com.bsth.service.schedule.utils.DataToolsFileType;
... ... @@ -86,6 +87,10 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
86 87 private TTInfoDetailForEdit ttInfoDetailForEdit;
87 88  
88 89 @Autowired
  90 + @Qualifier(value = "ttInfoDetail_dataTool")
  91 + private TTinfoDetailDynamicData tTinfoDetailDynamicData;
  92 +
  93 + @Autowired
89 94 private JdbcTemplate jdbcTemplate;
90 95  
91 96 /**
... ... @@ -134,6 +139,10 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
134 139 return dataToolsService.exportData(params);
135 140 }
136 141  
  142 + @Override
  143 + public DataToolsFile exportDynamicTTinfo(TTinfoDetailDynamicData.DTInfos dtInfos) throws ScheduleException {
  144 + return tTinfoDetailDynamicData.exportDynamicTTinfo(dtInfos);
  145 + }
137 146  
138 147 @Override
139 148 public TTInfoDetailForEdit.EditInfo getEditInfo(Integer xlid, Long ttid, Long maxfcno) throws ScheduleException {
... ...
src/main/java/com/bsth/service/schedule/utils/PoiUtils.java
1 1 package com.bsth.service.schedule.utils;
2 2  
3 3 import org.apache.poi.hssf.usermodel.HSSFDateUtil;
4   -import org.apache.poi.ss.usermodel.Cell;
5   -import org.apache.poi.xssf.usermodel.XSSFCell;
  4 +import org.apache.poi.ss.usermodel.*;
  5 +import org.apache.poi.ss.util.WorkbookUtil;
  6 +import org.apache.poi.xssf.usermodel.*;
6 7  
  8 +import java.awt.Color;
7 9 import java.text.DecimalFormat;
8 10 import java.text.SimpleDateFormat;
9 11 import java.util.Date;
... ... @@ -52,4 +54,152 @@ public class PoiUtils {
52 54 }
53 55 return cellValue;
54 56 }
  57 +
  58 + public static XSSFCell createStringXSSFCell(
  59 + XSSFWorkbook xssfWorkbook, XSSFRow xssfRow, short column, String value,
  60 + Color backgroundColor) {
  61 + return createXSSFCell(
  62 + xssfWorkbook, xssfRow, column,
  63 + value, XSSFCell.CELL_TYPE_STRING,
  64 + HorizontalAlignment.CENTER, VerticalAlignment.CENTER,
  65 + BorderStyle.MEDIUM, new Color(0xdedede),
  66 + (short) 13, new Color(0x2765A7), "宋体",
  67 + backgroundColor, FillPatternType.SOLID_FOREGROUND
  68 + );
  69 + }
  70 +
  71 + public static XSSFCell createStringXSSFCell(
  72 + XSSFWorkbook xssfWorkbook, XSSFRow xssfRow, short column, String value) {
  73 + return createXSSFCell(
  74 + xssfWorkbook, xssfRow, column,
  75 + value, XSSFCell.CELL_TYPE_STRING,
  76 + HorizontalAlignment.CENTER, VerticalAlignment.CENTER,
  77 + BorderStyle.MEDIUM, new Color(0xdedede),
  78 + (short) 13, new Color(0x2765A7), "宋体",
  79 + new Color(0xffffff), FillPatternType.SOLID_FOREGROUND
  80 + );
  81 + }
  82 +
  83 + public static XSSFCell createDoubleXSSFCell(
  84 + XSSFWorkbook xssfWorkbook, XSSFRow xssfRow, short column, Double value) {
  85 + return createXSSFCell(
  86 + xssfWorkbook, xssfRow, column,
  87 + value, XSSFCell.CELL_TYPE_NUMERIC,
  88 + HorizontalAlignment.CENTER, VerticalAlignment.CENTER,
  89 + BorderStyle.MEDIUM, new Color(0xdedede),
  90 + (short) 13, new Color(0x2765A7), "宋体",
  91 + new Color(0xffffff), FillPatternType.SOLID_FOREGROUND
  92 + );
  93 + }
  94 +
  95 + public static XSSFCell createIntegerXSSFCell(
  96 + XSSFWorkbook xssfWorkbook, XSSFRow xssfRow, short column, Integer value) {
  97 + return createXSSFCell(
  98 + xssfWorkbook, xssfRow, column,
  99 + value, XSSFCell.CELL_TYPE_NUMERIC,
  100 + HorizontalAlignment.CENTER, VerticalAlignment.CENTER,
  101 + BorderStyle.MEDIUM, new Color(0xdedede),
  102 + (short) 13, new Color(0x2765A7), "宋体",
  103 + new Color(0xffffff), FillPatternType.SOLID_FOREGROUND
  104 + );
  105 + }
  106 +
  107 + public static XSSFCell createBlankXSSFCell(
  108 + XSSFWorkbook xssfWorkbook, XSSFRow xssfRow, short column) {
  109 + return createXSSFCell(
  110 + xssfWorkbook, xssfRow, column,
  111 + null, XSSFCell.CELL_TYPE_BLANK,
  112 + HorizontalAlignment.CENTER, VerticalAlignment.CENTER,
  113 + BorderStyle.MEDIUM, new Color(0xdedede),
  114 + (short) 13, new Color(0x2765A7), "宋体",
  115 + new Color(0xffffff), FillPatternType.SOLID_FOREGROUND
  116 + );
  117 + }
  118 +
  119 + public static XSSFCell setIntegerStyleXSSFCellStyle(XSSFWorkbook xssfWorkbook, XSSFCell xssfCell) {
  120 + CreationHelper creationHelper = xssfWorkbook.getCreationHelper();
  121 + XSSFCellStyle xssfCellStyle = xssfCell.getCellStyle();
  122 + xssfCellStyle.setDataFormat(creationHelper.createDataFormat().getFormat("0"));
  123 + return xssfCell;
  124 + }
  125 + public static XSSFCell setDoubleStyleXSSFCellStyle(XSSFWorkbook xssfWorkbook, XSSFCell xssfCell) {
  126 + CreationHelper creationHelper = xssfWorkbook.getCreationHelper();
  127 + XSSFCellStyle xssfCellStyle = xssfCell.getCellStyle();
  128 + xssfCellStyle.setDataFormat(creationHelper.createDataFormat().getFormat("0.00"));
  129 + return xssfCell;
  130 + }
  131 +
  132 + public static XSSFCell createXSSFCell(
  133 + XSSFWorkbook xssfWorkbook, XSSFRow xssfRow, short column,
  134 + Object value, int valueType,
  135 + HorizontalAlignment horizontalAlignment, VerticalAlignment verticalAlignment,
  136 + BorderStyle borderStyle, Color borderColor,
  137 + short fontSize, Color fontColor, String fontName,
  138 + Color backgroudColor, FillPatternType fillPatternType) {
  139 + CreationHelper creationHelper = xssfWorkbook.getCreationHelper();
  140 +
  141 + // 1、创建单元格对象
  142 + XSSFCell cell = xssfRow.createCell(column);
  143 +
  144 + // 2、设定样式
  145 + XSSFCellStyle cellStyle = xssfWorkbook.createCellStyle();
  146 +
  147 + // 设定值
  148 + if (valueType == XSSFCell.CELL_TYPE_STRING) {
  149 + cell.setCellValue(creationHelper.createRichTextString(
  150 + WorkbookUtil.createSafeSheetName(String.valueOf(value))));
  151 + } else if (valueType == XSSFCell.CELL_TYPE_NUMERIC) {
  152 + if (value instanceof Date) { // 日期
  153 + cellStyle.setDataFormat(creationHelper.createDataFormat().getFormat("yyyy-mm-dd"));
  154 + cell.setCellValue((Date) value);
  155 + } else if (value instanceof Double) {
  156 + cellStyle.setDataFormat(creationHelper.createDataFormat().getFormat("0.00"));
  157 + cell.setCellValue((Double) value);
  158 + } else if (value instanceof Integer) {
  159 + cellStyle.setDataFormat(creationHelper.createDataFormat().getFormat("0"));
  160 + cell.setCellValue(Double.valueOf(value.toString()));
  161 + } else {
  162 + throw new RuntimeException("只支持 Date Double Integer 单元格类型");
  163 + }
  164 + } else if (valueType == XSSFCell.CELL_TYPE_BLANK) {
  165 + cell.setCellType(Cell.CELL_TYPE_BLANK);
  166 + }
  167 +
  168 + else {
  169 + throw new RuntimeException("暂时不支持字符串、日期、数字以为的类型");
  170 + }
  171 +
  172 + // 对齐方式
  173 + cellStyle.setAlignment(horizontalAlignment);
  174 + cellStyle.setVerticalAlignment(verticalAlignment);
  175 +
  176 + // 边框样式
  177 + cellStyle.setBorderTop(borderStyle);
  178 + cellStyle.setTopBorderColor(new XSSFColor(borderColor));
  179 + cellStyle.setBorderBottom(borderStyle);
  180 + cellStyle.setBottomBorderColor(new XSSFColor(borderColor));
  181 + cellStyle.setBorderLeft(borderStyle);
  182 + cellStyle.setLeftBorderColor(new XSSFColor(borderColor));
  183 + cellStyle.setBorderRight(borderStyle);
  184 + cellStyle.setRightBorderColor(new XSSFColor(borderColor));
  185 +
  186 + // 字体颜色
  187 + XSSFFont font = xssfWorkbook.createFont();
  188 + font.setColor(new XSSFColor(fontColor));
  189 + font.setFontHeightInPoints(fontSize);
  190 + font.setFontName(fontName);
  191 + cellStyle.setFont(font);
  192 +
  193 +
  194 + // 单元背景色
  195 + cellStyle.setFillForegroundColor(new XSSFColor(backgroudColor));
  196 + cellStyle.setFillPattern(fillPatternType);
  197 +
  198 + // TODO
  199 +
  200 + cell.setCellStyle(cellStyle);
  201 + return cell;
  202 + }
  203 +
55 204 }
  205 +
... ...
src/main/resources/datatools/ktrs/ttinfodetailDataOutputMetaData.ktr
1   -<?xml version="1.0" encoding="UTF-8"?>
2   -<transformation>
3   - <info>
4   - <name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x5bfc;&#x51fa;&#x5143;&#x6570;&#x636e;</name>
5   - <description/>
6   - <extended_description/>
7   - <trans_version/>
8   - <trans_type>Normal</trans_type>
9   - <trans_status>0</trans_status>
10   - <directory>&#x2f;</directory>
11   - <parameters>
12   - <parameter>
13   - <name>filepath</name>
14   - <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project_code&#x2f;runtime_temp&#x2f;bsth_control_u_d_files&#x2f;ttinfodetail_test.xls</default_value>
15   - <description>&#x65f6;&#x523b;&#x8868;excel&#x5bfc;&#x51fa;&#x6587;&#x4ef6;&#x8def;&#x5f84;&#x540d;</description>
16   - </parameter>
17   - <parameter>
18   - <name>injectktrfile</name>
19   - <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project_code&#x2f;bsth_project&#x2f;bsth_control_parent&#x2f;bsth_control&#x2f;src&#x2f;main&#x2f;resources&#x2f;datatools&#x2f;ktrs&#x2f;ttinfodetailDataOutput.ktr</default_value>
20   - <description>&#x6ce8;&#x5165;&#x5143;&#x6570;&#x636e;&#x7684;ktr&#x6587;&#x4ef6;</description>
21   - </parameter>
22   - <parameter>
23   - <name>ttinfoid</name>
24   - <default_value>56</default_value>
25   - <description>&#x65f6;&#x523b;&#x8868;id</description>
26   - </parameter>
27   - </parameters>
28   - <log>
29   -<trans-log-table><connection/>
30   -<schema/>
31   -<table/>
32   -<size_limit_lines/>
33   -<interval/>
34   -<timeout_days/>
35   -<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>
36   -<perf-log-table><connection/>
37   -<schema/>
38   -<table/>
39   -<interval/>
40   -<timeout_days/>
41   -<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>
42   -<channel-log-table><connection/>
43   -<schema/>
44   -<table/>
45   -<timeout_days/>
46   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>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>
47   -<step-log-table><connection/>
48   -<schema/>
49   -<table/>
50   -<timeout_days/>
51   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>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>
52   -<metrics-log-table><connection/>
53   -<schema/>
54   -<table/>
55   -<timeout_days/>
56   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>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>
57   - </log>
58   - <maxdate>
59   - <connection/>
60   - <table/>
61   - <field/>
62   - <offset>0.0</offset>
63   - <maxdiff>0.0</maxdiff>
64   - </maxdate>
65   - <size_rowset>10000</size_rowset>
66   - <sleep_time_empty>50</sleep_time_empty>
67   - <sleep_time_full>50</sleep_time_full>
68   - <unique_connections>N</unique_connections>
69   - <feedback_shown>Y</feedback_shown>
70   - <feedback_size>50000</feedback_size>
71   - <using_thread_priorities>Y</using_thread_priorities>
72   - <shared_objects_file/>
73   - <capture_step_performance>N</capture_step_performance>
74   - <step_performance_capturing_delay>1000</step_performance_capturing_delay>
75   - <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
76   - <dependencies>
77   - </dependencies>
78   - <partitionschemas>
79   - </partitionschemas>
80   - <slaveservers>
81   - </slaveservers>
82   - <clusterschemas>
83   - </clusterschemas>
84   - <created_user>-</created_user>
85   - <created_date>2016&#x2f;11&#x2f;15 15&#x3a;02&#x3a;41.624</created_date>
86   - <modified_user>-</modified_user>
87   - <modified_date>2016&#x2f;11&#x2f;15 15&#x3a;02&#x3a;41.624</modified_date>
88   - <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
89   - <is_key_private>N</is_key_private>
90   - </info>
91   - <notepads>
92   - <notepad>
93   - <note>TODO&#xff1a;&#x5982;&#x679c;groupby &#x52a0;&#x5165;bctype&#xff0c;&#xa;&#x5219;&#x4ee5;&#x53d1;&#x8f66;&#x987a;&#x5e8f;&#x53f7;&#xff0c;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5206;&#x7ec4;&#x7684;&#x6570;&#x636e;&#x53ef;&#x80fd;&#x91cd;&#x590d;&#xff0c;&#xa;&#x5e94;&#x4e3a;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x53ef;&#x80fd;&#x4e0d;&#x4e00;&#x6837;&#xff08;&#x5bfc;&#x5165;&#x4e4b;&#x540e;&#x4eba;&#x4e3a;&#x4fee;&#x6539;&#x7684;&#xff0c;&#x5982;&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6539;&#x6210;&#x533a;&#x95f4;&#xff09;&#xff0c;&#xa;&#x56e0;&#x4e3a;&#x5bfc;&#x51fa;&#x65f6;&#x5fc5;&#x987b;&#x6570;&#x636e;&#x4e0d;&#x91cd;&#x590d;&#xff0c;&#x8fd9;&#x91cc;&#x7684;&#x89e3;&#x51b3;&#x65b9;&#x6cd5;&#xff0c;&#x53ea;&#x4f7f;&#x7528;&#x53d1;&#x8f66;&#x987a;&#x5e8f;&#x53f7;&#x5206;&#x7ec4;&#xff0c;&#xa;&#x4ee5;&#x540e;&#x5efa;&#x8bae;&#xff0c;&#x8fd8;&#x662f;&#x539f;&#x6765;&#x7684;&#x65b9;&#x5f0f;&#x5206;&#x7ec4;&#xff0c;&#x7136;&#x540e;&#x628a;&#x66f4;&#x65b0;&#x65f6;&#x95f4;&#x665a;&#x7684;&#x53bb;&#x9664;&#xa;&#xa;&#x4ee5;&#x540e;&#x6539;&#x6210;&#x53bb;&#x9664;&#x91cd;&#x590d;&#x7eaa;&#x5f55;</note>
94   - <xloc>46</xloc>
95   - <yloc>400</yloc>
96   - <width>406</width>
97   - <heigth>122</heigth>
98   - <fontname>YaHei Consolas Hybrid</fontname>
99   - <fontsize>12</fontsize>
100   - <fontbold>N</fontbold>
101   - <fontitalic>N</fontitalic>
102   - <fontcolorred>0</fontcolorred>
103   - <fontcolorgreen>0</fontcolorgreen>
104   - <fontcolorblue>0</fontcolorblue>
105   - <backgroundcolorred>255</backgroundcolorred>
106   - <backgroundcolorgreen>205</backgroundcolorgreen>
107   - <backgroundcolorblue>112</backgroundcolorblue>
108   - <bordercolorred>100</bordercolorred>
109   - <bordercolorgreen>100</bordercolorgreen>
110   - <bordercolorblue>100</bordercolorblue>
111   - <drawshadow>Y</drawshadow>
112   - </notepad>
113   - </notepads>
114   - <connection>
115   - <name>192.168.168.1_jwgl_dw</name>
116   - <server>192.168.168.1</server>
117   - <type>ORACLE</type>
118   - <access>Native</access>
119   - <database>orcl</database>
120   - <port>1521</port>
121   - <username>jwgl_dw</username>
122   - <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password>
123   - <servername/>
124   - <data_tablespace/>
125   - <index_tablespace/>
126   - <attributes>
127   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
128   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
129   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
130   - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
131   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
132   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
133   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
134   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
135   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
136   - </attributes>
137   - </connection>
138   - <connection>
139   - <name>bus_control_variable</name>
140   - <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
141   - <type>MYSQL</type>
142   - <access>Native</access>
143   - <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
144   - <port>3306</port>
145   - <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
146   - <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
147   - <servername/>
148   - <data_tablespace/>
149   - <index_tablespace/>
150   - <attributes>
151   - <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
152   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
153   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
154   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
155   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
156   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
157   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
158   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
159   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
160   - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
161   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
162   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
163   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
164   - </attributes>
165   - </connection>
166   - <connection>
167   - <name>bus_control_&#x516c;&#x53f8;_201</name>
168   - <server>localhost</server>
169   - <type>MYSQL</type>
170   - <access>Native</access>
171   - <database>control</database>
172   - <port>3306</port>
173   - <username>root</username>
174   - <password>Encrypted </password>
175   - <servername/>
176   - <data_tablespace/>
177   - <index_tablespace/>
178   - <attributes>
179   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
180   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
181   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
182   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
183   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
184   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
185   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
186   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
187   - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
188   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
189   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
190   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
191   - </attributes>
192   - </connection>
193   - <connection>
194   - <name>bus_control_&#x672c;&#x673a;</name>
195   - <server>localhost</server>
196   - <type>MYSQL</type>
197   - <access>Native</access>
198   - <database>control</database>
199   - <port>3306</port>
200   - <username>root</username>
201   - <password>Encrypted </password>
202   - <servername/>
203   - <data_tablespace/>
204   - <index_tablespace/>
205   - <attributes>
206   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
207   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
208   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
209   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
210   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
211   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
212   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
213   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
214   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
215   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
216   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
217   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
218   - </attributes>
219   - </connection>
220   - <connection>
221   - <name>xlab_mysql_youle</name>
222   - <server>101.231.124.8</server>
223   - <type>MYSQL</type>
224   - <access>Native</access>
225   - <database>xlab_youle</database>
226   - <port>45687</port>
227   - <username>xlab-youle</username>
228   - <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
229   - <servername/>
230   - <data_tablespace/>
231   - <index_tablespace/>
232   - <attributes>
233   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
234   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
235   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
236   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
237   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
238   - <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
239   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
240   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
241   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
242   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
243   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
244   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
245   - </attributes>
246   - </connection>
247   - <connection>
248   - <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
249   - <server>localhost</server>
250   - <type>MYSQL</type>
251   - <access>Native</access>
252   - <database>xlab_youle</database>
253   - <port>3306</port>
254   - <username>root</username>
255   - <password>Encrypted </password>
256   - <servername/>
257   - <data_tablespace/>
258   - <index_tablespace/>
259   - <attributes>
260   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
261   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
262   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
263   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
264   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
265   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
266   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
267   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
268   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
269   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
270   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
271   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
272   - </attributes>
273   - </connection>
274   - <connection>
275   - <name>xlab_youle</name>
276   - <server/>
277   - <type>MYSQL</type>
278   - <access>JNDI</access>
279   - <database>xlab_youle</database>
280   - <port>1521</port>
281   - <username/>
282   - <password>Encrypted </password>
283   - <servername/>
284   - <data_tablespace/>
285   - <index_tablespace/>
286   - <attributes>
287   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
288   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
289   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
290   - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
291   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
292   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
293   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
294   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
295   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
296   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
297   - </attributes>
298   - </connection>
299   - <order>
300   - <hop> <from>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x5206;&#x7ec4;&#x6570;&#x636e;</from><to>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
301   - <hop> <from>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;</from><to>&#x8ba1;&#x7b97;&#x7ad9;&#x70b9;</to><enabled>Y</enabled> </hop>
302   - <hop> <from>&#x8ba1;&#x7b97;&#x7ad9;&#x70b9;</from><to>&#x67e5;&#x627e;&#x7ad9;&#x70b9;&#x540d;</to><enabled>Y</enabled> </hop>
303   - <hop> <from>&#x67e5;&#x627e;&#x7ad9;&#x70b9;&#x540d;</from><to>&#x8ba1;&#x7b97;&#x53cd;&#x8303;&#x5f0f;&#x5143;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
304   - <hop> <from>&#x67e5;&#x627e;&#x7ad9;&#x70b9;&#x540d;</from><to>&#x8ba1;&#x7b97;excel&#x8f93;&#x51fa;&#x5b57;&#x6bb5;</to><enabled>Y</enabled> </hop>
305   - <hop> <from>&#x8ba1;&#x7b97;excel&#x8f93;&#x51fa;&#x5b57;&#x6bb5;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
306   - <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
307   - <hop> <from>&#x751f;&#x6210;&#x8def;&#x724c;&#x5b57;&#x6bb5;</from><to>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
308   - <hop> <from>&#x8ba1;&#x7b97;&#x53cd;&#x8303;&#x5f0f;&#x5143;&#x6570;&#x636e;</from><to>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</to><enabled>Y</enabled> </hop>
309   - <hop> <from>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</from><to>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</to><enabled>Y</enabled> </hop>
310   - </order>
311   - <step>
312   - <name>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</name>
313   - <type>MetaInject</type>
314   - <description/>
315   - <distribute>Y</distribute>
316   - <custom_distribution/>
317   - <copies>1</copies>
318   - <partitioning>
319   - <method>none</method>
320   - <schema_name/>
321   - </partitioning>
322   - <specification_method>filename</specification_method>
323   - <trans_object_id/>
324   - <trans_name/>
325   - <filename>&#x24;&#x7b;injectktrfile&#x7d;</filename>
326   - <directory_path/>
327   - <source_step/>
328   - <source_output_fields> </source_output_fields> <target_file/>
329   - <no_execution>N</no_execution>
330   - <stream_source_step/>
331   - <stream_target_step/>
332   - <mappings> <mapping> <target_step_name>&#x5217;&#x8f6c;&#x884c;</target_step_name>
333   - <target_attribute_key>TARGET_TYPE</target_attribute_key>
334   - <target_detail>Y</target_detail>
335   - <source_step>&#x8ba1;&#x7b97;&#x53cd;&#x8303;&#x5f0f;&#x5143;&#x6570;&#x636e;</source_step>
336   - <source_field>targettype</source_field>
337   - </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x51fa;</target_step_name>
338   - <target_attribute_key>TYPE</target_attribute_key>
339   - <target_detail>Y</target_detail>
340   - <source_step>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</source_step>
341   - <source_field>fieldtype</source_field>
342   - </mapping> <mapping> <target_step_name>&#x5217;&#x8f6c;&#x884c;</target_step_name>
343   - <target_attribute_key>NAME</target_attribute_key>
344   - <target_detail>Y</target_detail>
345   - <source_step>&#x8ba1;&#x7b97;&#x53cd;&#x8303;&#x5f0f;&#x5143;&#x6570;&#x636e;</source_step>
346   - <source_field>valuefieldname</source_field>
347   - </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x51fa;</target_step_name>
348   - <target_attribute_key>NAME</target_attribute_key>
349   - <target_detail>Y</target_detail>
350   - <source_step>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</source_step>
351   - <source_field>fieldname</source_field>
352   - </mapping> <mapping> <target_step_name>&#x5217;&#x8f6c;&#x884c;</target_step_name>
353   - <target_attribute_key>TARGET_NAME</target_attribute_key>
354   - <target_detail>Y</target_detail>
355   - <source_step>&#x8ba1;&#x7b97;&#x53cd;&#x8303;&#x5f0f;&#x5143;&#x6570;&#x636e;</source_step>
356   - <source_field>targetfieldname</source_field>
357   - </mapping> <mapping> <target_step_name>&#x5217;&#x8f6c;&#x884c;</target_step_name>
358   - <target_attribute_key>KEY_VALUE</target_attribute_key>
359   - <target_detail>Y</target_detail>
360   - <source_step>&#x8ba1;&#x7b97;&#x53cd;&#x8303;&#x5f0f;&#x5143;&#x6570;&#x636e;</source_step>
361   - <source_field>keyvalue</source_field>
362   - </mapping> </mappings> <cluster_schema/>
363   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
364   - <xloc>640</xloc>
365   - <yloc>64</yloc>
366   - <draw>Y</draw>
367   - </GUI>
368   - </step>
369   -
370   - <step>
371   - <name>&#x53bb;&#x9664;&#x91cd;&#x590d;&#x8bb0;&#x5f55;</name>
372   - <type>Unique</type>
373   - <description/>
374   - <distribute>Y</distribute>
375   - <custom_distribution/>
376   - <copies>1</copies>
377   - <partitioning>
378   - <method>none</method>
379   - <schema_name/>
380   - </partitioning>
381   - <count_rows>N</count_rows>
382   - <count_field/>
383   - <reject_duplicate_row>N</reject_duplicate_row>
384   - <error_description/>
385   - <fields> </fields> <cluster_schema/>
386   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
387   - <xloc>842</xloc>
388   - <yloc>592</yloc>
389   - <draw>Y</draw>
390   - </GUI>
391   - </step>
392   -
393   - <step>
394   - <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
395   - <type>SelectValues</type>
396   - <description/>
397   - <distribute>Y</distribute>
398   - <custom_distribution/>
399   - <copies>1</copies>
400   - <partitioning>
401   - <method>none</method>
402   - <schema_name/>
403   - </partitioning>
404   - <fields> <field> <name>fieldname</name>
405   - <rename/>
406   - <length>-2</length>
407   - <precision>-2</precision>
408   - </field> <field> <name>fieldtype</name>
409   - <rename/>
410   - <length>-2</length>
411   - <precision>-2</precision>
412   - </field> <field> <name>fcno</name>
413   - <rename/>
414   - <length>-2</length>
415   - <precision>-2</precision>
416   - </field> <select_unspecified>N</select_unspecified>
417   - </fields> <cluster_schema/>
418   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
419   - <xloc>533</xloc>
420   - <yloc>325</yloc>
421   - <draw>Y</draw>
422   - </GUI>
423   - </step>
424   -
425   - <step>
426   - <name>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</name>
427   - <type>SortRows</type>
428   - <description/>
429   - <distribute>Y</distribute>
430   - <custom_distribution/>
431   - <copies>1</copies>
432   - <partitioning>
433   - <method>none</method>
434   - <schema_name/>
435   - </partitioning>
436   - <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
437   - <prefix>out</prefix>
438   - <sort_size>1000000</sort_size>
439   - <free_memory/>
440   - <compress>N</compress>
441   - <compress_variable/>
442   - <unique_rows>N</unique_rows>
443   - <fields>
444   - <field>
445   - <name>fcno</name>
446   - <ascending>Y</ascending>
447   - <case_sensitive>N</case_sensitive>
448   - <presorted>N</presorted>
449   - </field>
450   - </fields>
451   - <cluster_schema/>
452   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
453   - <xloc>642</xloc>
454   - <yloc>325</yloc>
455   - <draw>Y</draw>
456   - </GUI>
457   - </step>
458   -
459   - <step>
460   - <name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x5206;&#x7ec4;&#x6570;&#x636e;</name>
461   - <type>TableInput</type>
462   - <description/>
463   - <distribute>Y</distribute>
464   - <custom_distribution/>
465   - <copies>1</copies>
466   - <partitioning>
467   - <method>none</method>
468   - <schema_name/>
469   - </partitioning>
470   - <connection>bus_control_variable</connection>
471   - <sql>select &#xa;fcno&#xa;, min&#x28;xl&#x29; xl &#xa;, min&#x28;xl_dir&#x29; xl_dir&#xa;, min&#x28;qdz_code&#x29; qdz&#xa;, min&#x28;zdz_code&#x29; zdz&#xa;, min&#x28;bc_type&#x29; bc_type &#xa;from bsth_c_s_ttinfo_detail&#xa;where ttinfo &#x3d; &#x24;&#x7b;ttinfoid&#x7d;&#xa;group by fcno</sql>
472   - <limit>0</limit>
473   - <lookup/>
474   - <execute_each_row>N</execute_each_row>
475   - <variables_active>Y</variables_active>
476   - <lazy_conversion_active>N</lazy_conversion_active>
477   - <cluster_schema/>
478   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
479   - <xloc>56</xloc>
480   - <yloc>185</yloc>
481   - <draw>Y</draw>
482   - </GUI>
483   - </step>
484   -
485   - <step>
486   - <name>&#x67e5;&#x627e;&#x7ad9;&#x70b9;&#x540d;</name>
487   - <type>DBLookup</type>
488   - <description/>
489   - <distribute>N</distribute>
490   - <custom_distribution/>
491   - <copies>1</copies>
492   - <partitioning>
493   - <method>none</method>
494   - <schema_name/>
495   - </partitioning>
496   - <connection>bus_control_variable</connection>
497   - <cache>N</cache>
498   - <cache_load_all>Y</cache_load_all>
499   - <cache_size>0</cache_size>
500   - <lookup>
501   - <schema/>
502   - <table>bsth_c_stationroute</table>
503   - <orderby/>
504   - <fail_on_multiple>N</fail_on_multiple>
505   - <eat_row_on_failure>N</eat_row_on_failure>
506   - <key>
507   - <name>xl</name>
508   - <field>line</field>
509   - <condition>&#x3d;</condition>
510   - <name2/>
511   - </key>
512   - <key>
513   - <name>xl_dir</name>
514   - <field>directions</field>
515   - <condition>&#x3d;</condition>
516   - <name2/>
517   - </key>
518   - <key>
519   - <name>zd</name>
520   - <field>station_code</field>
521   - <condition>&#x3d;</condition>
522   - <name2/>
523   - </key>
524   - <value>
525   - <name>station_name</name>
526   - <rename>zdname</rename>
527   - <default/>
528   - <type>String</type>
529   - </value>
530   - </lookup>
531   - <cluster_schema/>
532   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
533   - <xloc>410</xloc>
534   - <yloc>191</yloc>
535   - <draw>Y</draw>
536   - </GUI>
537   - </step>
538   -
539   - <step>
540   - <name>&#x751f;&#x6210;&#x8def;&#x724c;&#x5b57;&#x6bb5;</name>
541   - <type>RowGenerator</type>
542   - <description/>
543   - <distribute>Y</distribute>
544   - <custom_distribution/>
545   - <copies>1</copies>
546   - <partitioning>
547   - <method>none</method>
548   - <schema_name/>
549   - </partitioning>
550   - <fields>
551   - <field>
552   - <name>fieldname</name>
553   - <type>String</type>
554   - <format/>
555   - <currency/>
556   - <decimal/>
557   - <group/>
558   - <nullif>&#x8def;&#x724c;</nullif>
559   - <length>-1</length>
560   - <precision>-1</precision>
561   - <set_empty_string>N</set_empty_string>
562   - </field>
563   - <field>
564   - <name>fieldtype</name>
565   - <type>String</type>
566   - <format/>
567   - <currency/>
568   - <decimal/>
569   - <group/>
570   - <nullif>String</nullif>
571   - <length>-1</length>
572   - <precision>-1</precision>
573   - <set_empty_string>N</set_empty_string>
574   - </field>
575   - <field>
576   - <name>fcno</name>
577   - <type>Integer</type>
578   - <format/>
579   - <currency/>
580   - <decimal/>
581   - <group/>
582   - <nullif>0</nullif>
583   - <length>-1</length>
584   - <precision>-1</precision>
585   - <set_empty_string>N</set_empty_string>
586   - </field>
587   - </fields>
588   - <limit>1</limit>
589   - <never_ending>N</never_ending>
590   - <interval_in_ms>5000</interval_in_ms>
591   - <row_time_field>now</row_time_field>
592   - <last_time_field>FiveSecondsAgo</last_time_field>
593   - <cluster_schema/>
594   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
595   - <xloc>530</xloc>
596   - <yloc>194</yloc>
597   - <draw>Y</draw>
598   - </GUI>
599   - </step>
600   -
601   - <step>
602   - <name>&#x8ba1;&#x7b97;excel&#x8f93;&#x51fa;&#x5b57;&#x6bb5;</name>
603   - <type>ScriptValueMod</type>
604   - <description/>
605   - <distribute>Y</distribute>
606   - <custom_distribution/>
607   - <copies>1</copies>
608   - <partitioning>
609   - <method>none</method>
610   - <schema_name/>
611   - </partitioning>
612   - <compatible>N</compatible>
613   - <optimizationLevel>9</optimizationLevel>
614   - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
615   - <jsScript_name>Script 1</jsScript_name>
616   - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var fieldname&#x3b; &#x2f;&#x2f; &#x5b57;&#x6bb5;&#x540d;&#xa;var fieldtype&#x3b; &#x2f;&#x2f; &#x5b57;&#x6bb5;&#x7c7b;&#x578b;&#xa;&#xa;if &#x28;bc_type &#x3d;&#x3d; &#x27;in&#x27;&#x29; &#x7b;&#xa; fieldname &#x3d; &#x27;&#x8fdb;&#x573a;&#x27; &#x2b; &#x22;-&#x3e;&#x22; &#x2b; fcno&#x3b;&#xa;&#x7d; else if &#x28;bc_type &#x3d;&#x3d; &#x27;out&#x27;&#x29; &#x7b;&#xa; fieldname &#x3d; &#x27;&#x51fa;&#x573a;&#x27; &#x2b; &#x22;-&#x3e;&#x22; &#x2b; fcno&#x3b;&#xa;&#x7d; else if &#x28;bc_type &#x3d;&#x3d; &#x27;normal&#x27;&#x29; &#x7b;&#xa; fieldname &#x3d; zdname &#x2b; &#x22;-&#x3e;&#x22; &#x2b; fcno&#x3b;&#xa;&#x7d; else &#x7b;&#xa; fieldname &#x3d; zdname &#x2b; &#x22;-&#x3e;&#x22; &#x2b; fcno&#x3b;&#xa;&#x7d; &#xa;&#xa;fieldtype &#x3d; &#x27;String&#x27;&#x3b;&#xa;</jsScript_script>
617   - </jsScript> </jsScripts> <fields> <field> <name>fieldname</name>
618   - <rename>fieldname</rename>
619   - <type>String</type>
620   - <length>-1</length>
621   - <precision>-1</precision>
622   - <replace>N</replace>
623   - </field> <field> <name>fieldtype</name>
624   - <rename>fieldtype</rename>
625   - <type>String</type>
626   - <length>-1</length>
627   - <precision>-1</precision>
628   - <replace>N</replace>
629   - </field> </fields> <cluster_schema/>
630   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
631   - <xloc>410</xloc>
632   - <yloc>326</yloc>
633   - <draw>Y</draw>
634   - </GUI>
635   - </step>
636   -
637   - <step>
638   - <name>&#x8ba1;&#x7b97;&#x53cd;&#x8303;&#x5f0f;&#x5143;&#x6570;&#x636e;</name>
639   - <type>ScriptValueMod</type>
640   - <description/>
641   - <distribute>Y</distribute>
642   - <custom_distribution/>
643   - <copies>1</copies>
644   - <partitioning>
645   - <method>none</method>
646   - <schema_name/>
647   - </partitioning>
648   - <compatible>N</compatible>
649   - <optimizationLevel>9</optimizationLevel>
650   - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
651   - <jsScript_name>Script 1</jsScript_name>
652   - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var targetfieldname&#x3b; &#x2f;&#x2f; &#x76ee;&#x6807;&#x5b57;&#x6bb5;&#x540d;&#xa;var targettype&#x3b; &#x2f;&#x2f; &#x76ee;&#x6807;&#x7c7b;&#x578b;&#xa;var valuefieldname&#x3b; &#x2f;&#x2f; &#x503c;&#x5b57;&#x6bb5;&#x540d;&#xa;var keyvalue&#x3b; &#x2f;&#x2f; &#x5173;&#x952e;&#x5b57;&#x503c;&#xa;&#xa;if &#x28;bc_type &#x3d;&#x3d; &#x27;in&#x27;&#x29; &#x7b;&#xa; targetfieldname &#x3d; &#x27;&#x8fdb;&#x573a;&#x27; &#x2b; &#x22;-&#x3e;&#x22; &#x2b; fcno&#x3b;&#xa;&#x7d; else if &#x28;bc_type &#x3d;&#x3d; &#x27;out&#x27;&#x29; &#x7b;&#xa; targetfieldname &#x3d; &#x27;&#x51fa;&#x573a;&#x27; &#x2b; &#x22;-&#x3e;&#x22; &#x2b; fcno&#x3b;&#xa;&#x7d; else if &#x28;bc_type &#x3d;&#x3d; &#x27;normal&#x27;&#x29; &#x7b;&#xa; targetfieldname &#x3d; zdname &#x2b; &#x22;-&#x3e;&#x22; &#x2b; fcno&#x3b;&#xa;&#x7d; else &#x7b;&#xa; targetfieldname &#x3d; zdname &#x2b; &#x22;-&#x3e;&#x22; &#x2b; fcno&#x3b;&#xa;&#x7d; &#xa;&#xa;targettype &#x3d; &#x27;String&#x27;&#x3b;&#xa;valuefieldname &#x3d; &#x27;fcsj&#x27;&#x3b;&#xa;keyvalue &#x3d; fcno&#x3b;&#xa;</jsScript_script>
653   - </jsScript> </jsScripts> <fields> <field> <name>targetfieldname</name>
654   - <rename>targetfieldname</rename>
655   - <type>String</type>
656   - <length>-1</length>
657   - <precision>-1</precision>
658   - <replace>N</replace>
659   - </field> <field> <name>targettype</name>
660   - <rename>targettype</rename>
661   - <type>String</type>
662   - <length>-1</length>
663   - <precision>-1</precision>
664   - <replace>N</replace>
665   - </field> <field> <name>valuefieldname</name>
666   - <rename>valuefieldname</rename>
667   - <type>String</type>
668   - <length>-1</length>
669   - <precision>-1</precision>
670   - <replace>N</replace>
671   - </field> <field> <name>keyvalue</name>
672   - <rename>keyvalue</rename>
673   - <type>String</type>
674   - <length>-1</length>
675   - <precision>-1</precision>
676   - <replace>N</replace>
677   - </field> </fields> <cluster_schema/>
678   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
679   - <xloc>410</xloc>
680   - <yloc>64</yloc>
681   - <draw>Y</draw>
682   - </GUI>
683   - </step>
684   -
685   - <step>
686   - <name>&#x8ba1;&#x7b97;&#x7ad9;&#x70b9;</name>
687   - <type>ScriptValueMod</type>
688   - <description/>
689   - <distribute>Y</distribute>
690   - <custom_distribution/>
691   - <copies>1</copies>
692   - <partitioning>
693   - <method>none</method>
694   - <schema_name/>
695   - </partitioning>
696   - <compatible>N</compatible>
697   - <optimizationLevel>9</optimizationLevel>
698   - <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
699   - <jsScript_name>Script 1</jsScript_name>
700   - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var zd&#x3b;&#xa;&#xa;if &#x28;bc_type &#x3d;&#x3d; &#x27;in&#x27;&#x29; &#x7b;&#xa; zd &#x3d; qdz&#x3b;&#xa;&#x7d; else if &#x28;bc_type &#x3d;&#x3d; &#x27;out&#x27;&#x29; &#x7b;&#xa; zd &#x3d; zdz&#x3b;&#xa;&#x7d; else if &#x28;bc_type &#x3d;&#x3d; &#x27;normal&#x27;&#x29; &#x7b;&#xa; zd &#x3d; qdz&#x3b;&#xa;&#x7d; else &#x7b;&#xa; zd &#x3d; qdz&#x3b;&#xa;&#x7d;&#xa;</jsScript_script>
701   - </jsScript> </jsScripts> <fields> <field> <name>zd</name>
702   - <rename>zd</rename>
703   - <type>String</type>
704   - <length>-1</length>
705   - <precision>-1</precision>
706   - <replace>N</replace>
707   - </field> </fields> <cluster_schema/>
708   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
709   - <xloc>300</xloc>
710   - <yloc>190</yloc>
711   - <draw>Y</draw>
712   - </GUI>
713   - </step>
714   -
715   - <step>
716   - <name>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;</name>
717   - <type>FilterRows</type>
718   - <description/>
719   - <distribute>Y</distribute>
720   - <custom_distribution/>
721   - <copies>1</copies>
722   - <partitioning>
723   - <method>none</method>
724   - <schema_name/>
725   - </partitioning>
726   -<send_true_to/>
727   -<send_false_to/>
728   - <compare>
729   -<condition>
730   - <negated>N</negated>
731   - <leftvalue>bc_type</leftvalue>
732   - <function>IS NOT NULL</function>
733   - <rightvalue/>
734   - </condition>
735   - </compare>
736   - <cluster_schema/>
737   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
738   - <xloc>182</xloc>
739   - <yloc>189</yloc>
740   - <draw>Y</draw>
741   - </GUI>
742   - </step>
743   -
744   - <step_error_handling>
745   - </step_error_handling>
746   - <slave-step-copy-partition-distribution>
747   -</slave-step-copy-partition-distribution>
748   - <slave_transformation>N</slave_transformation>
749   -
750   -</transformation>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x5bfc;&#x51fa;&#x5143;&#x6570;&#x636e;</name>
  5 + <description/>
  6 + <extended_description/>
  7 + <trans_version/>
  8 + <trans_type>Normal</trans_type>
  9 + <trans_status>0</trans_status>
  10 + <directory>&#x2f;</directory>
  11 + <parameters>
  12 + <parameter>
  13 + <name>filepath</name>
  14 + <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project_code&#x2f;runtime_temp&#x2f;bsth_control_u_d_files&#x2f;ttinfodetail_test.xls</default_value>
  15 + <description>&#x65f6;&#x523b;&#x8868;excel&#x5bfc;&#x51fa;&#x6587;&#x4ef6;&#x8def;&#x5f84;&#x540d;</description>
  16 + </parameter>
  17 + <parameter>
  18 + <name>injectktrfile</name>
  19 + <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project_code&#x2f;bsth_project&#x2f;bsth_control_parent&#x2f;bsth_control&#x2f;src&#x2f;main&#x2f;resources&#x2f;datatools&#x2f;ktrs&#x2f;ttinfodetailDataOutput.ktr</default_value>
  20 + <description>&#x6ce8;&#x5165;&#x5143;&#x6570;&#x636e;&#x7684;ktr&#x6587;&#x4ef6;</description>
  21 + </parameter>
  22 + <parameter>
  23 + <name>ttinfoid</name>
  24 + <default_value>56</default_value>
  25 + <description>&#x65f6;&#x523b;&#x8868;id</description>
  26 + </parameter>
  27 + </parameters>
  28 + <log>
  29 +<trans-log-table><connection/>
  30 +<schema/>
  31 +<table/>
  32 +<size_limit_lines/>
  33 +<interval/>
  34 +<timeout_days/>
  35 +<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>
  36 +<perf-log-table><connection/>
  37 +<schema/>
  38 +<table/>
  39 +<interval/>
  40 +<timeout_days/>
  41 +<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>
  42 +<channel-log-table><connection/>
  43 +<schema/>
  44 +<table/>
  45 +<timeout_days/>
  46 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>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>
  47 +<step-log-table><connection/>
  48 +<schema/>
  49 +<table/>
  50 +<timeout_days/>
  51 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>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>
  52 +<metrics-log-table><connection/>
  53 +<schema/>
  54 +<table/>
  55 +<timeout_days/>
  56 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>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>
  57 + </log>
  58 + <maxdate>
  59 + <connection/>
  60 + <table/>
  61 + <field/>
  62 + <offset>0.0</offset>
  63 + <maxdiff>0.0</maxdiff>
  64 + </maxdate>
  65 + <size_rowset>10000</size_rowset>
  66 + <sleep_time_empty>50</sleep_time_empty>
  67 + <sleep_time_full>50</sleep_time_full>
  68 + <unique_connections>N</unique_connections>
  69 + <feedback_shown>Y</feedback_shown>
  70 + <feedback_size>50000</feedback_size>
  71 + <using_thread_priorities>Y</using_thread_priorities>
  72 + <shared_objects_file/>
  73 + <capture_step_performance>N</capture_step_performance>
  74 + <step_performance_capturing_delay>1000</step_performance_capturing_delay>
  75 + <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
  76 + <dependencies>
  77 + </dependencies>
  78 + <partitionschemas>
  79 + </partitionschemas>
  80 + <slaveservers>
  81 + </slaveservers>
  82 + <clusterschemas>
  83 + </clusterschemas>
  84 + <created_user>-</created_user>
  85 + <created_date>2016&#x2f;11&#x2f;15 15&#x3a;02&#x3a;41.624</created_date>
  86 + <modified_user>-</modified_user>
  87 + <modified_date>2016&#x2f;11&#x2f;15 15&#x3a;02&#x3a;41.624</modified_date>
  88 + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
  89 + <is_key_private>N</is_key_private>
  90 + </info>
  91 + <notepads>
  92 + <notepad>
  93 + <note>TODO&#xff1a;&#x5982;&#x679c;groupby &#x52a0;&#x5165;bctype&#xff0c;&#xa;&#x5219;&#x4ee5;&#x53d1;&#x8f66;&#x987a;&#x5e8f;&#x53f7;&#xff0c;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5206;&#x7ec4;&#x7684;&#x6570;&#x636e;&#x53ef;&#x80fd;&#x91cd;&#x590d;&#xff0c;&#xa;&#x5e94;&#x4e3a;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x53ef;&#x80fd;&#x4e0d;&#x4e00;&#x6837;&#xff08;&#x5bfc;&#x5165;&#x4e4b;&#x540e;&#x4eba;&#x4e3a;&#x4fee;&#x6539;&#x7684;&#xff0c;&#x5982;&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6539;&#x6210;&#x533a;&#x95f4;&#xff09;&#xff0c;&#xa;&#x56e0;&#x4e3a;&#x5bfc;&#x51fa;&#x65f6;&#x5fc5;&#x987b;&#x6570;&#x636e;&#x4e0d;&#x91cd;&#x590d;&#xff0c;&#x8fd9;&#x91cc;&#x7684;&#x89e3;&#x51b3;&#x65b9;&#x6cd5;&#xff0c;&#x53ea;&#x4f7f;&#x7528;&#x53d1;&#x8f66;&#x987a;&#x5e8f;&#x53f7;&#x5206;&#x7ec4;&#xff0c;&#xa;&#x4ee5;&#x540e;&#x5efa;&#x8bae;&#xff0c;&#x8fd8;&#x662f;&#x539f;&#x6765;&#x7684;&#x65b9;&#x5f0f;&#x5206;&#x7ec4;&#xff0c;&#x7136;&#x540e;&#x628a;&#x66f4;&#x65b0;&#x65f6;&#x95f4;&#x665a;&#x7684;&#x53bb;&#x9664;&#xa;&#xa;&#x4ee5;&#x540e;&#x6539;&#x6210;&#x53bb;&#x9664;&#x91cd;&#x590d;&#x7eaa;&#x5f55;</note>
  94 + <xloc>178</xloc>
  95 + <yloc>547</yloc>
  96 + <width>406</width>
  97 + <heigth>122</heigth>
  98 + <fontname>YaHei Consolas Hybrid</fontname>
  99 + <fontsize>12</fontsize>
  100 + <fontbold>N</fontbold>
  101 + <fontitalic>N</fontitalic>
  102 + <fontcolorred>0</fontcolorred>
  103 + <fontcolorgreen>0</fontcolorgreen>
  104 + <fontcolorblue>0</fontcolorblue>
  105 + <backgroundcolorred>255</backgroundcolorred>
  106 + <backgroundcolorgreen>205</backgroundcolorgreen>
  107 + <backgroundcolorblue>112</backgroundcolorblue>
  108 + <bordercolorred>100</bordercolorred>
  109 + <bordercolorgreen>100</bordercolorgreen>
  110 + <bordercolorblue>100</bordercolorblue>
  111 + <drawshadow>Y</drawshadow>
  112 + </notepad>
  113 + </notepads>
  114 + <connection>
  115 + <name>192.168.168.1_jwgl_dw</name>
  116 + <server>192.168.168.1</server>
  117 + <type>ORACLE</type>
  118 + <access>Native</access>
  119 + <database>orcl</database>
  120 + <port>1521</port>
  121 + <username>jwgl_dw</username>
  122 + <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password>
  123 + <servername/>
  124 + <data_tablespace/>
  125 + <index_tablespace/>
  126 + <attributes>
  127 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  128 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  129 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  130 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  131 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  132 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  133 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  134 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  135 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  136 + </attributes>
  137 + </connection>
  138 + <connection>
  139 + <name>bus_control_variable</name>
  140 + <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
  141 + <type>MYSQL</type>
  142 + <access>Native</access>
  143 + <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
  144 + <port>3306</port>
  145 + <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
  146 + <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
  147 + <servername/>
  148 + <data_tablespace/>
  149 + <index_tablespace/>
  150 + <attributes>
  151 + <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
  152 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  153 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  154 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  155 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  156 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  157 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  158 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  159 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  160 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  161 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  162 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  163 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  164 + </attributes>
  165 + </connection>
  166 + <connection>
  167 + <name>bus_control_&#x516c;&#x53f8;_201</name>
  168 + <server>localhost</server>
  169 + <type>MYSQL</type>
  170 + <access>Native</access>
  171 + <database>control</database>
  172 + <port>3306</port>
  173 + <username>root</username>
  174 + <password>Encrypted </password>
  175 + <servername/>
  176 + <data_tablespace/>
  177 + <index_tablespace/>
  178 + <attributes>
  179 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  180 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  181 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  182 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  183 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  184 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  185 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  186 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  187 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  188 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  189 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  190 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  191 + </attributes>
  192 + </connection>
  193 + <connection>
  194 + <name>bus_control_&#x672c;&#x673a;</name>
  195 + <server>localhost</server>
  196 + <type>MYSQL</type>
  197 + <access>Native</access>
  198 + <database>control</database>
  199 + <port>3306</port>
  200 + <username>root</username>
  201 + <password>Encrypted </password>
  202 + <servername/>
  203 + <data_tablespace/>
  204 + <index_tablespace/>
  205 + <attributes>
  206 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  207 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  208 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  209 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  210 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  211 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  212 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  213 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  214 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  215 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  216 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  217 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  218 + </attributes>
  219 + </connection>
  220 + <connection>
  221 + <name>xlab_mysql_youle</name>
  222 + <server>101.231.124.8</server>
  223 + <type>MYSQL</type>
  224 + <access>Native</access>
  225 + <database>xlab_youle</database>
  226 + <port>45687</port>
  227 + <username>xlab-youle</username>
  228 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
  229 + <servername/>
  230 + <data_tablespace/>
  231 + <index_tablespace/>
  232 + <attributes>
  233 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  234 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  235 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  236 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  237 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  238 + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
  239 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  240 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  241 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  242 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  243 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  244 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  245 + </attributes>
  246 + </connection>
  247 + <connection>
  248 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  249 + <server>localhost</server>
  250 + <type>MYSQL</type>
  251 + <access>Native</access>
  252 + <database>xlab_youle</database>
  253 + <port>3306</port>
  254 + <username>root</username>
  255 + <password>Encrypted </password>
  256 + <servername/>
  257 + <data_tablespace/>
  258 + <index_tablespace/>
  259 + <attributes>
  260 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  261 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  262 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  263 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  264 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  265 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  266 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  267 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  268 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  269 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  270 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  271 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  272 + </attributes>
  273 + </connection>
  274 + <connection>
  275 + <name>xlab_youle</name>
  276 + <server/>
  277 + <type>MYSQL</type>
  278 + <access>JNDI</access>
  279 + <database>xlab_youle</database>
  280 + <port>1521</port>
  281 + <username/>
  282 + <password>Encrypted </password>
  283 + <servername/>
  284 + <data_tablespace/>
  285 + <index_tablespace/>
  286 + <attributes>
  287 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  288 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  289 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  290 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  291 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  292 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  293 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  294 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  295 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  296 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  297 + </attributes>
  298 + </connection>
  299 + <order>
  300 + <hop> <from>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x5206;&#x7ec4;&#x6570;&#x636e;</from><to>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  301 + <hop> <from>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;</from><to>&#x8ba1;&#x7b97;&#x7ad9;&#x70b9;</to><enabled>Y</enabled> </hop>
  302 + <hop> <from>&#x8ba1;&#x7b97;excel&#x8f93;&#x51fa;&#x5b57;&#x6bb5;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
  303 + <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  304 + <hop> <from>&#x751f;&#x6210;&#x8def;&#x724c;&#x5b57;&#x6bb5;</from><to>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  305 + <hop> <from>&#x8ba1;&#x7b97;&#x53cd;&#x8303;&#x5f0f;&#x5143;&#x6570;&#x636e;</from><to>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</to><enabled>Y</enabled> </hop>
  306 + <hop> <from>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</from><to>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</to><enabled>Y</enabled> </hop>
  307 + <hop> <from>&#x8ba1;&#x7b97;&#x7ad9;&#x70b9;</from><to>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;</to><enabled>Y</enabled> </hop>
  308 + <hop> <from>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;</from><to>&#x8ba1;&#x7b97;&#x53cd;&#x8303;&#x5f0f;&#x5143;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
  309 + <hop> <from>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;</from><to>&#x8ba1;&#x7b97;excel&#x8f93;&#x51fa;&#x5b57;&#x6bb5;</to><enabled>Y</enabled> </hop>
  310 + </order>
  311 + <step>
  312 + <name>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</name>
  313 + <type>MetaInject</type>
  314 + <description/>
  315 + <distribute>Y</distribute>
  316 + <custom_distribution/>
  317 + <copies>1</copies>
  318 + <partitioning>
  319 + <method>none</method>
  320 + <schema_name/>
  321 + </partitioning>
  322 + <specification_method>filename</specification_method>
  323 + <trans_object_id/>
  324 + <trans_name/>
  325 + <filename>&#x24;&#x7b;injectktrfile&#x7d;</filename>
  326 + <directory_path/>
  327 + <source_step/>
  328 + <source_output_fields> </source_output_fields> <target_file/>
  329 + <no_execution>N</no_execution>
  330 + <stream_source_step/>
  331 + <stream_target_step/>
  332 + <mappings> <mapping> <target_step_name>&#x5217;&#x8f6c;&#x884c;</target_step_name>
  333 + <target_attribute_key>TARGET_TYPE</target_attribute_key>
  334 + <target_detail>Y</target_detail>
  335 + <source_step>&#x8ba1;&#x7b97;&#x53cd;&#x8303;&#x5f0f;&#x5143;&#x6570;&#x636e;</source_step>
  336 + <source_field>targettype</source_field>
  337 + </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x51fa;</target_step_name>
  338 + <target_attribute_key>TYPE</target_attribute_key>
  339 + <target_detail>Y</target_detail>
  340 + <source_step>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</source_step>
  341 + <source_field>fieldtype</source_field>
  342 + </mapping> <mapping> <target_step_name>&#x5217;&#x8f6c;&#x884c;</target_step_name>
  343 + <target_attribute_key>NAME</target_attribute_key>
  344 + <target_detail>Y</target_detail>
  345 + <source_step>&#x8ba1;&#x7b97;&#x53cd;&#x8303;&#x5f0f;&#x5143;&#x6570;&#x636e;</source_step>
  346 + <source_field>valuefieldname</source_field>
  347 + </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x51fa;</target_step_name>
  348 + <target_attribute_key>NAME</target_attribute_key>
  349 + <target_detail>Y</target_detail>
  350 + <source_step>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</source_step>
  351 + <source_field>fieldname</source_field>
  352 + </mapping> <mapping> <target_step_name>&#x5217;&#x8f6c;&#x884c;</target_step_name>
  353 + <target_attribute_key>TARGET_NAME</target_attribute_key>
  354 + <target_detail>Y</target_detail>
  355 + <source_step>&#x8ba1;&#x7b97;&#x53cd;&#x8303;&#x5f0f;&#x5143;&#x6570;&#x636e;</source_step>
  356 + <source_field>targetfieldname</source_field>
  357 + </mapping> <mapping> <target_step_name>&#x5217;&#x8f6c;&#x884c;</target_step_name>
  358 + <target_attribute_key>KEY_VALUE</target_attribute_key>
  359 + <target_detail>Y</target_detail>
  360 + <source_step>&#x8ba1;&#x7b97;&#x53cd;&#x8303;&#x5f0f;&#x5143;&#x6570;&#x636e;</source_step>
  361 + <source_field>keyvalue</source_field>
  362 + </mapping> </mappings> <cluster_schema/>
  363 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  364 + <xloc>640</xloc>
  365 + <yloc>64</yloc>
  366 + <draw>Y</draw>
  367 + </GUI>
  368 + </step>
  369 +
  370 + <step>
  371 + <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
  372 + <type>SelectValues</type>
  373 + <description/>
  374 + <distribute>Y</distribute>
  375 + <custom_distribution/>
  376 + <copies>1</copies>
  377 + <partitioning>
  378 + <method>none</method>
  379 + <schema_name/>
  380 + </partitioning>
  381 + <fields> <field> <name>fieldname</name>
  382 + <rename/>
  383 + <length>-2</length>
  384 + <precision>-2</precision>
  385 + </field> <field> <name>fieldtype</name>
  386 + <rename/>
  387 + <length>-2</length>
  388 + <precision>-2</precision>
  389 + </field> <field> <name>fcno</name>
  390 + <rename/>
  391 + <length>-2</length>
  392 + <precision>-2</precision>
  393 + </field> <select_unspecified>N</select_unspecified>
  394 + </fields> <cluster_schema/>
  395 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  396 + <xloc>533</xloc>
  397 + <yloc>325</yloc>
  398 + <draw>Y</draw>
  399 + </GUI>
  400 + </step>
  401 +
  402 + <step>
  403 + <name>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</name>
  404 + <type>SortRows</type>
  405 + <description/>
  406 + <distribute>Y</distribute>
  407 + <custom_distribution/>
  408 + <copies>1</copies>
  409 + <partitioning>
  410 + <method>none</method>
  411 + <schema_name/>
  412 + </partitioning>
  413 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  414 + <prefix>out</prefix>
  415 + <sort_size>1000000</sort_size>
  416 + <free_memory/>
  417 + <compress>N</compress>
  418 + <compress_variable/>
  419 + <unique_rows>N</unique_rows>
  420 + <fields>
  421 + <field>
  422 + <name>fcno</name>
  423 + <ascending>Y</ascending>
  424 + <case_sensitive>N</case_sensitive>
  425 + <presorted>N</presorted>
  426 + </field>
  427 + </fields>
  428 + <cluster_schema/>
  429 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  430 + <xloc>642</xloc>
  431 + <yloc>325</yloc>
  432 + <draw>Y</draw>
  433 + </GUI>
  434 + </step>
  435 +
  436 + <step>
  437 + <name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x5206;&#x7ec4;&#x6570;&#x636e;</name>
  438 + <type>TableInput</type>
  439 + <description/>
  440 + <distribute>Y</distribute>
  441 + <custom_distribution/>
  442 + <copies>1</copies>
  443 + <partitioning>
  444 + <method>none</method>
  445 + <schema_name/>
  446 + </partitioning>
  447 + <connection>bus_control_variable</connection>
  448 + <sql>select &#xa;fcno&#xa;, min&#x28;xl&#x29; xl &#xa;, min&#x28;xl_dir&#x29; xl_dir&#xa;, min&#x28;qdz_code&#x29; qdz&#xa;, min&#x28;zdz_code&#x29; zdz&#xa;, min&#x28;bc_type&#x29; bc_type &#xa;, min&#x28;line_version&#x29; line_version&#xa;from bsth_c_s_ttinfo_detail&#xa;where ttinfo &#x3d; &#x24;&#x7b;ttinfoid&#x7d;&#xa;group by fcno</sql>
  449 + <limit>0</limit>
  450 + <lookup/>
  451 + <execute_each_row>N</execute_each_row>
  452 + <variables_active>Y</variables_active>
  453 + <lazy_conversion_active>N</lazy_conversion_active>
  454 + <cluster_schema/>
  455 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  456 + <xloc>56</xloc>
  457 + <yloc>192</yloc>
  458 + <draw>Y</draw>
  459 + </GUI>
  460 + </step>
  461 +
  462 + <step>
  463 + <name>&#x751f;&#x6210;&#x8def;&#x724c;&#x5b57;&#x6bb5;</name>
  464 + <type>RowGenerator</type>
  465 + <description/>
  466 + <distribute>Y</distribute>
  467 + <custom_distribution/>
  468 + <copies>1</copies>
  469 + <partitioning>
  470 + <method>none</method>
  471 + <schema_name/>
  472 + </partitioning>
  473 + <fields>
  474 + <field>
  475 + <name>fieldname</name>
  476 + <type>String</type>
  477 + <format/>
  478 + <currency/>
  479 + <decimal/>
  480 + <group/>
  481 + <nullif>&#x8def;&#x724c;</nullif>
  482 + <length>-1</length>
  483 + <precision>-1</precision>
  484 + <set_empty_string>N</set_empty_string>
  485 + </field>
  486 + <field>
  487 + <name>fieldtype</name>
  488 + <type>String</type>
  489 + <format/>
  490 + <currency/>
  491 + <decimal/>
  492 + <group/>
  493 + <nullif>String</nullif>
  494 + <length>-1</length>
  495 + <precision>-1</precision>
  496 + <set_empty_string>N</set_empty_string>
  497 + </field>
  498 + <field>
  499 + <name>fcno</name>
  500 + <type>Integer</type>
  501 + <format/>
  502 + <currency/>
  503 + <decimal/>
  504 + <group/>
  505 + <nullif>0</nullif>
  506 + <length>-1</length>
  507 + <precision>-1</precision>
  508 + <set_empty_string>N</set_empty_string>
  509 + </field>
  510 + </fields>
  511 + <limit>1</limit>
  512 + <never_ending>N</never_ending>
  513 + <interval_in_ms>5000</interval_in_ms>
  514 + <row_time_field>now</row_time_field>
  515 + <last_time_field>FiveSecondsAgo</last_time_field>
  516 + <cluster_schema/>
  517 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  518 + <xloc>530</xloc>
  519 + <yloc>194</yloc>
  520 + <draw>Y</draw>
  521 + </GUI>
  522 + </step>
  523 +
  524 + <step>
  525 + <name>&#x8ba1;&#x7b97;excel&#x8f93;&#x51fa;&#x5b57;&#x6bb5;</name>
  526 + <type>ScriptValueMod</type>
  527 + <description/>
  528 + <distribute>Y</distribute>
  529 + <custom_distribution/>
  530 + <copies>1</copies>
  531 + <partitioning>
  532 + <method>none</method>
  533 + <schema_name/>
  534 + </partitioning>
  535 + <compatible>N</compatible>
  536 + <optimizationLevel>9</optimizationLevel>
  537 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  538 + <jsScript_name>Script 1</jsScript_name>
  539 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var fieldname&#x3b; &#x2f;&#x2f; &#x5b57;&#x6bb5;&#x540d;&#xa;var fieldtype&#x3b; &#x2f;&#x2f; &#x5b57;&#x6bb5;&#x7c7b;&#x578b;&#xa;&#xa;if &#x28;bc_type &#x3d;&#x3d; &#x27;in&#x27;&#x29; &#x7b;&#xa; fieldname &#x3d; &#x27;&#x8fdb;&#x573a;&#x27; &#x2b; &#x22;-&#x3e;&#x22; &#x2b; fcno&#x3b;&#xa;&#x7d; else if &#x28;bc_type &#x3d;&#x3d; &#x27;out&#x27;&#x29; &#x7b;&#xa; fieldname &#x3d; &#x27;&#x51fa;&#x573a;&#x27; &#x2b; &#x22;-&#x3e;&#x22; &#x2b; fcno&#x3b;&#xa;&#x7d; else if &#x28;bc_type &#x3d;&#x3d; &#x27;normal&#x27;&#x29; &#x7b;&#xa; fieldname &#x3d; zdname &#x2b; &#x22;-&#x3e;&#x22; &#x2b; fcno&#x3b;&#xa;&#x7d; else &#x7b;&#xa; fieldname &#x3d; zdname &#x2b; &#x22;-&#x3e;&#x22; &#x2b; fcno&#x3b;&#xa;&#x7d; &#xa;&#xa;fieldtype &#x3d; &#x27;String&#x27;&#x3b;&#xa;</jsScript_script>
  540 + </jsScript> </jsScripts> <fields> <field> <name>fieldname</name>
  541 + <rename>fieldname</rename>
  542 + <type>String</type>
  543 + <length>-1</length>
  544 + <precision>-1</precision>
  545 + <replace>N</replace>
  546 + </field> <field> <name>fieldtype</name>
  547 + <rename>fieldtype</rename>
  548 + <type>String</type>
  549 + <length>-1</length>
  550 + <precision>-1</precision>
  551 + <replace>N</replace>
  552 + </field> </fields> <cluster_schema/>
  553 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  554 + <xloc>410</xloc>
  555 + <yloc>326</yloc>
  556 + <draw>Y</draw>
  557 + </GUI>
  558 + </step>
  559 +
  560 + <step>
  561 + <name>&#x8ba1;&#x7b97;&#x53cd;&#x8303;&#x5f0f;&#x5143;&#x6570;&#x636e;</name>
  562 + <type>ScriptValueMod</type>
  563 + <description/>
  564 + <distribute>Y</distribute>
  565 + <custom_distribution/>
  566 + <copies>1</copies>
  567 + <partitioning>
  568 + <method>none</method>
  569 + <schema_name/>
  570 + </partitioning>
  571 + <compatible>N</compatible>
  572 + <optimizationLevel>9</optimizationLevel>
  573 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  574 + <jsScript_name>Script 1</jsScript_name>
  575 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var targetfieldname&#x3b; &#x2f;&#x2f; &#x76ee;&#x6807;&#x5b57;&#x6bb5;&#x540d;&#xa;var targettype&#x3b; &#x2f;&#x2f; &#x76ee;&#x6807;&#x7c7b;&#x578b;&#xa;var valuefieldname&#x3b; &#x2f;&#x2f; &#x503c;&#x5b57;&#x6bb5;&#x540d;&#xa;var keyvalue&#x3b; &#x2f;&#x2f; &#x5173;&#x952e;&#x5b57;&#x503c;&#xa;&#xa;if &#x28;bc_type &#x3d;&#x3d; &#x27;in&#x27;&#x29; &#x7b;&#xa; targetfieldname &#x3d; &#x27;&#x8fdb;&#x573a;&#x27; &#x2b; &#x22;-&#x3e;&#x22; &#x2b; fcno&#x3b;&#xa;&#x7d; else if &#x28;bc_type &#x3d;&#x3d; &#x27;out&#x27;&#x29; &#x7b;&#xa; targetfieldname &#x3d; &#x27;&#x51fa;&#x573a;&#x27; &#x2b; &#x22;-&#x3e;&#x22; &#x2b; fcno&#x3b;&#xa;&#x7d; else if &#x28;bc_type &#x3d;&#x3d; &#x27;normal&#x27;&#x29; &#x7b;&#xa; targetfieldname &#x3d; zdname &#x2b; &#x22;-&#x3e;&#x22; &#x2b; fcno&#x3b;&#xa;&#x7d; else &#x7b;&#xa; targetfieldname &#x3d; zdname &#x2b; &#x22;-&#x3e;&#x22; &#x2b; fcno&#x3b;&#xa;&#x7d; &#xa;&#xa;targettype &#x3d; &#x27;String&#x27;&#x3b;&#xa;valuefieldname &#x3d; &#x27;fcsj&#x27;&#x3b;&#xa;keyvalue &#x3d; fcno&#x3b;&#xa;</jsScript_script>
  576 + </jsScript> </jsScripts> <fields> <field> <name>targetfieldname</name>
  577 + <rename>targetfieldname</rename>
  578 + <type>String</type>
  579 + <length>-1</length>
  580 + <precision>-1</precision>
  581 + <replace>N</replace>
  582 + </field> <field> <name>targettype</name>
  583 + <rename>targettype</rename>
  584 + <type>String</type>
  585 + <length>-1</length>
  586 + <precision>-1</precision>
  587 + <replace>N</replace>
  588 + </field> <field> <name>valuefieldname</name>
  589 + <rename>valuefieldname</rename>
  590 + <type>String</type>
  591 + <length>-1</length>
  592 + <precision>-1</precision>
  593 + <replace>N</replace>
  594 + </field> <field> <name>keyvalue</name>
  595 + <rename>keyvalue</rename>
  596 + <type>String</type>
  597 + <length>-1</length>
  598 + <precision>-1</precision>
  599 + <replace>N</replace>
  600 + </field> </fields> <cluster_schema/>
  601 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  602 + <xloc>410</xloc>
  603 + <yloc>64</yloc>
  604 + <draw>Y</draw>
  605 + </GUI>
  606 + </step>
  607 +
  608 + <step>
  609 + <name>&#x8ba1;&#x7b97;&#x7ad9;&#x70b9;</name>
  610 + <type>ScriptValueMod</type>
  611 + <description/>
  612 + <distribute>Y</distribute>
  613 + <custom_distribution/>
  614 + <copies>1</copies>
  615 + <partitioning>
  616 + <method>none</method>
  617 + <schema_name/>
  618 + </partitioning>
  619 + <compatible>N</compatible>
  620 + <optimizationLevel>9</optimizationLevel>
  621 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  622 + <jsScript_name>Script 1</jsScript_name>
  623 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2a;&#xa;var zd&#x3b;&#xa;&#xa;if &#x28;bc_type &#x3d;&#x3d; &#x27;in&#x27;&#x29; &#x7b;&#xa; zd &#x3d; qdz&#x3b;&#xa;&#x7d; else if &#x28;bc_type &#x3d;&#x3d; &#x27;out&#x27;&#x29; &#x7b;&#xa; zd &#x3d; zdz&#x3b;&#xa;&#x7d; else if &#x28;bc_type &#x3d;&#x3d; &#x27;normal&#x27;&#x29; &#x7b;&#xa; zd &#x3d; qdz&#x3b;&#xa;&#x7d; else &#x7b;&#xa; zd &#x3d; qdz&#x3b;&#xa;&#x7d;&#xa;&#x2a;&#x2f;&#xa;&#xa;&#x2f;&#x2f; &#x7ad9;&#x70b9;&#x6807;&#x5fd7;&#xa;var smark &#x3d; &#x22;B&#x22;&#x3b;&#xa;var destroy &#x3d; 0&#x3b;</jsScript_script>
  624 + </jsScript> </jsScripts> <fields> <field> <name>smark</name>
  625 + <rename>smark</rename>
  626 + <type>String</type>
  627 + <length>-1</length>
  628 + <precision>-1</precision>
  629 + <replace>N</replace>
  630 + </field> <field> <name>destroy</name>
  631 + <rename>destroy</rename>
  632 + <type>Number</type>
  633 + <length>16</length>
  634 + <precision>2</precision>
  635 + <replace>N</replace>
  636 + </field> </fields> <cluster_schema/>
  637 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  638 + <xloc>300</xloc>
  639 + <yloc>190</yloc>
  640 + <draw>Y</draw>
  641 + </GUI>
  642 + </step>
  643 +
  644 + <step>
  645 + <name>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;</name>
  646 + <type>FilterRows</type>
  647 + <description/>
  648 + <distribute>Y</distribute>
  649 + <custom_distribution/>
  650 + <copies>1</copies>
  651 + <partitioning>
  652 + <method>none</method>
  653 + <schema_name/>
  654 + </partitioning>
  655 +<send_true_to/>
  656 +<send_false_to/>
  657 + <compare>
  658 +<condition>
  659 + <negated>N</negated>
  660 + <conditions>
  661 + <condition>
  662 + <negated>N</negated>
  663 + <leftvalue>bc_type</leftvalue>
  664 + <function>IS NOT NULL</function>
  665 + <rightvalue/>
  666 + </condition>
  667 + </conditions>
  668 + </condition>
  669 + </compare>
  670 + <cluster_schema/>
  671 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  672 + <xloc>182</xloc>
  673 + <yloc>189</yloc>
  674 + <draw>Y</draw>
  675 + </GUI>
  676 + </step>
  677 +
  678 + <step>
  679 + <name>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;</name>
  680 + <type>DBLookup</type>
  681 + <description/>
  682 + <distribute>N</distribute>
  683 + <custom_distribution/>
  684 + <copies>1</copies>
  685 + <partitioning>
  686 + <method>none</method>
  687 + <schema_name/>
  688 + </partitioning>
  689 + <connection>bus_control_variable</connection>
  690 + <cache>N</cache>
  691 + <cache_load_all>Y</cache_load_all>
  692 + <cache_size>0</cache_size>
  693 + <lookup>
  694 + <schema/>
  695 + <table>bsth_c_ls_stationroute</table>
  696 + <orderby/>
  697 + <fail_on_multiple>N</fail_on_multiple>
  698 + <eat_row_on_failure>N</eat_row_on_failure>
  699 + <key>
  700 + <name>xl</name>
  701 + <field>line</field>
  702 + <condition>&#x3d;</condition>
  703 + <name2/>
  704 + </key>
  705 + <key>
  706 + <name>xl_dir</name>
  707 + <field>directions</field>
  708 + <condition>&#x3d;</condition>
  709 + <name2/>
  710 + </key>
  711 + <key>
  712 + <name>line_version</name>
  713 + <field>versions</field>
  714 + <condition>&#x3d;</condition>
  715 + <name2/>
  716 + </key>
  717 + <key>
  718 + <name>smark</name>
  719 + <field>station_mark</field>
  720 + <condition>&#x3d;</condition>
  721 + <name2/>
  722 + </key>
  723 + <key>
  724 + <name>destroy</name>
  725 + <field>destroy</field>
  726 + <condition>&#x3d;</condition>
  727 + <name2/>
  728 + </key>
  729 + <value>
  730 + <name>station_name</name>
  731 + <rename>zdname</rename>
  732 + <default/>
  733 + <type>String</type>
  734 + </value>
  735 + </lookup>
  736 + <cluster_schema/>
  737 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  738 + <xloc>412</xloc>
  739 + <yloc>189</yloc>
  740 + <draw>Y</draw>
  741 + </GUI>
  742 + </step>
  743 +
  744 + <step_error_handling>
  745 + </step_error_handling>
  746 + <slave-step-copy-partition-distribution>
  747 +</slave-step-copy-partition-distribution>
  748 + <slave_transformation>N</slave_transformation>
  749 +
  750 +</transformation>
... ...
src/main/resources/static/pages/base/geo_data_edit/js/change_line.js
1   -/**
2   - * 线路切换面板
3   - */
4   -
5   -var gb_change_line = (function () {
6   -
7   - var data;
8   -
9   - var init = function () {
10   -
11   - var ep = EventProxy.create("findLine", "findCompanyData", function (lines, comps) {
12   - //根据公司权限过滤线路
13   - var lineArray = [];
14   - for(var i=0,line;line=lines[i++];){
15   - if(comps.indexOf(line.company + '_' + line.brancheCompany)){
16   - //拼音映射
17   - lineArray.push({
18   - name: line.name,
19   - code: line.lineCode,
20   - came: pinyin.getCamelChars(line.name),
21   - full: pinyin.getFullChars(line.name).toUpperCase()
22   - });
23   - }
24   - }
25   -
26   - data = lineArray;
27   -
28   - //按更新时间排序
29   - lineArray.sort(function (a, b) {
30   - return b.updateDate - a.updateDate;
31   - });
32   -
33   - //渲染页面
34   - var htmlStr = template('geo_d_e_dropdown_list-temp', {list: lineArray.slice(0, 10), ellipsis: lineArray.length > 10});
35   - $('.line_change_panel ul.uk-list').html(htmlStr);
36   - });
37   -
38   - $.get('/line/all', {destroy_eq: 0}, function (rs) {
39   - ep.emit('findLine', rs);
40   - });
41   -
42   - $.get('/user/companyData', {}, function (rs) {
43   - var filters = [];
44   - for(var i=0,obj;obj=rs[i++];){
45   -
46   - for(var j=0,sCom;sCom=obj.children[j++];){
47   - filters.push(obj.companyCode + '_' + sCom.code);
48   - }
49   - }
50   - ep.emit('findCompanyData', filters);
51   - });
52   - };
53   -
54   - /**
55   - * 线路搜索
56   - */
57   - var search_k;
58   - var search_flag;
59   - $('.line_change_panel #line_search_input').on('input', function () {
60   - search_k = $(this).val();
61   - if(search_flag)
62   - return;
63   - search_flag = true;
64   -
65   - setTimeout(function () {
66   - _search(search_k);
67   - search_flag = false;
68   - }, 300);
69   - });
70   -
71   - function _search(v) {
72   - v = v.toUpperCase();
73   - var rs = [], ellipsis;
74   - for(var i=0,obj;obj=data[i++];){
75   - if(obj.came.indexOf(v)!=-1
76   - || obj.full.indexOf(v)!=-1
77   - || obj.name.indexOf(v)!=-1)
78   - rs.push(obj);
79   -
80   - if(rs.length >= 10){
81   - ellipsis = true;
82   - break;
83   - }
84   - }
85   -
86   - var htmlStr = template('geo_d_e_dropdown_list-temp', {list: rs, ellipsis: ellipsis});
87   - $('.line_change_panel ul.uk-list').empty().html(htmlStr);
88   - }
89   -
90   - /**
91   - * 点击切换线路 data-code
92   - */
93   - $('.line_change_panel ul.uk-list').on('click', 'li[data-code]', function () {
94   - var lineCode = $(this).data('code');
95   - storage.setItem('geo_data_edit_line_code' , lineCode);
96   - storage.removeItem('geo_data_edit_line_version');
97   -
98   - $loadPanel.show();
99   - clearAll();
100   - startup();
101   - });
102   -
103   - return {
104   - init: init
105   - };
  1 +/**
  2 + * 线路切换面板
  3 + */
  4 +
  5 +var gb_change_line = (function () {
  6 +
  7 + var data;
  8 +
  9 + var init = function () {
  10 +
  11 + var ep = EventProxy.create("findLine", "findCompanyData", function (lines, comps) {
  12 + //根据公司权限过滤线路
  13 + var lineArray = [];
  14 + for(var i=0,line;line=lines[i++];){
  15 + if(comps.indexOf(line.company + '_' + line.brancheCompany)){
  16 + //拼音映射
  17 + lineArray.push({
  18 + name: line.name,
  19 + code: line.lineCode,
  20 + came: pinyin.getCamelChars(line.name),
  21 + full: pinyin.getFullChars(line.name).toUpperCase()
  22 + });
  23 + }
  24 + }
  25 +
  26 + data = lineArray;
  27 +
  28 + //按更新时间排序
  29 + lineArray.sort(function (a, b) {
  30 + return b.updateDate - a.updateDate;
  31 + });
  32 +
  33 + //渲染页面
  34 + var htmlStr = template('geo_d_e_dropdown_list-temp', {list: lineArray.slice(0, 10), ellipsis: lineArray.length > 10});
  35 + $('.line_change_panel ul.uk-list').html(htmlStr);
  36 + });
  37 +
  38 + $.get('/line/all', {destroy_eq: 0}, function (rs) {
  39 + ep.emit('findLine', rs);
  40 + });
  41 +
  42 + $.get('/user/companyData', {}, function (rs) {
  43 + var filters = [];
  44 + for(var i=0,obj;obj=rs[i++];){
  45 +
  46 + for(var j=0,sCom;sCom=obj.children[j++];){
  47 + filters.push(obj.companyCode + '_' + sCom.code);
  48 + }
  49 + }
  50 + ep.emit('findCompanyData', filters);
  51 + });
  52 + };
  53 +
  54 + /**
  55 + * 线路搜索
  56 + */
  57 + var search_k;
  58 + var search_flag;
  59 + $('.line_change_panel #line_search_input').on('input', function () {
  60 + search_k = $(this).val();
  61 + if(search_flag)
  62 + return;
  63 + search_flag = true;
  64 +
  65 + setTimeout(function () {
  66 + _search(search_k);
  67 + search_flag = false;
  68 + }, 300);
  69 + });
  70 +
  71 + function _search(v) {
  72 + v = v.toUpperCase();
  73 + var rs = [], ellipsis;
  74 + for(var i=0,obj;obj=data[i++];){
  75 + if(obj.came.indexOf(v)!=-1
  76 + || obj.full.indexOf(v)!=-1
  77 + || obj.name.indexOf(v)!=-1)
  78 + rs.push(obj);
  79 +
  80 + if(rs.length >= 10){
  81 + ellipsis = true;
  82 + break;
  83 + }
  84 + }
  85 +
  86 + var htmlStr = template('geo_d_e_dropdown_list-temp', {list: rs, ellipsis: ellipsis});
  87 + $('.line_change_panel ul.uk-list').empty().html(htmlStr);
  88 + }
  89 +
  90 + /**
  91 + * 点击切换线路 data-code
  92 + */
  93 + $('.line_change_panel ul.uk-list').on('click', 'li[data-code]', function () {
  94 + var lineCode = $(this).data('code');
  95 + storage.setItem('geo_data_edit_line_code' , lineCode);
  96 + storage.removeItem('geo_data_edit_line_version');
  97 +
  98 + $loadPanel.show();
  99 + clearAll();
  100 + startup();
  101 + });
  102 +
  103 + return {
  104 + init: init
  105 + };
106 106 })();
107 107 \ No newline at end of file
... ...
src/main/resources/static/pages/base/timesmodel/gantt.html
... ... @@ -44,9 +44,12 @@
44 44 <div class="btn-group btn-group-devided countbtn" data-toggle="buttons">
45 45 <a class="btn btn-circle blue countAdd" href="javascript:;" data-pjax><i class="fa fa-database"></i> 统计数据</a>
46 46 </div>
47   - <div class="btn-group btn-group-devided checkbtn" data-toggle="buttons">
48   - <a class="btn btn-circle blue checkAdd" href="javascript:;" data-pjax><i class="fa fa-check"></i> 保存数据</a>
49   - </div>
  47 + <!--<div class="btn-group btn-group-devided checkbtn" data-toggle="buttons">-->
  48 + <!--<a class="btn btn-circle blue checkAdd" href="javascript:;" data-pjax><i class="fa fa-check"></i> 保存数据</a>-->
  49 + <!--</div>-->
  50 + <div class="btn-group btn-group-devided exportbtn" data-toggle="buttons">
  51 + <!--<a class="btn btn-circle blue exportAdd" href="javascript:;" data-pjax><i class="fa fa-file-excel-o"></i> 导出数据</a>-->
  52 + </div>
50 53 <div class="btn-group checkbtn">
51 54 <a href="javascript:" class="btn red btn-outline btn-circle" data-toggle="dropdown" aria-expanded="false">
52 55 <i class="fa fa-cog"></i>
... ...
src/main/resources/static/pages/base/timesmodel/js/add-form-reload.js
... ... @@ -7,7 +7,7 @@
7 7 $('.openHaveSkb').on('click',function() {
8 8 var skbId = $("#skbNameSelect").val();
9 9 var argus = {
10   - baseRes:"0",carPark:"FFFFFF68",downInMileage:"0",
  10 + baseRes:"0",czarPark:"FFFFFF68",downInMileage:"0",
11 11 downInTimer:"0",downMileage:"3.5",downOutMileage:"0",
12 12 downOutTimer:"0",downStopTime:"10",downTravelTime:"7",
13 13 down_s:"26922_26928",earlyDownTime:"7",earlyEndTime:"08:30",
... ...
src/main/resources/static/pages/base/timesmodel/js/add-form-wizard.js
... ... @@ -372,11 +372,22 @@ var SKBFormWizard = function() {
372 372 }
373 373 sjdArr[s].num = num;
374 374 }
375   - map.zgfbeforepcs = sjdArr[0].num;// 早高峰前配车数
376   - map.zgfpcs = sjdArr[2].num;// 早高峰配车数
377   - map.gfzjpcs = sjdArr[4].num;// 高峰之间配车数
378   - map.wgfpcs = sjdArr[2].num ;// 晚高峰配车数
379   - map.wgfafterpcs = sjdArr[1].num + sjdArr[3].num;// 晚高峰后配车数
  375 +
  376 + // 注意:如果为0,设置成 10 17默认值
  377 + map.zgfbeforepcs = sjdArr[0].num == 0 ? 10 : sjdArr[0].num;// 早高峰前配车数
  378 + map.zgfpcs = sjdArr[2].num == 0 ? 17 : sjdArr[2].num;// 早高峰配车数
  379 + map.gfzjpcs = sjdArr[4].num == 0 ? 10 : sjdArr[4].num;// 高峰之间配车数
  380 + map.wgfpcs = sjdArr[2].num == 0 ? 17 : sjdArr[2].num ;// 晚高峰配车数
  381 + map.wgfafterpcs = (sjdArr[1].num + sjdArr[3].num) == 0 ? 10 : sjdArr[1].num + sjdArr[3].num;// 晚高峰后配车数
  382 +
  383 + // 注意:高峰 5 低谷 20 其他 10
  384 + map.upStopTime = 10;
  385 + map.downStopTime = 10;
  386 + map.mixstopTime = 5;
  387 + map.maxstopTime = 20;
  388 +
  389 + //alert("dddd");
  390 +
380 391 // 返回参数详情模版.
381 392 return cb && cb ({'forminput':template(tempName,{map:map}),'datadisplay': template(tempName +'config',{map:null})});
382 393 });
... ... @@ -640,13 +651,49 @@ var SKBFormWizard = function() {
640 651  
641 652 // 表单提交.
642 653 function submit(p,argus) {
643   - storage.setItem("Gantt_AgursData",JSON.stringify(argus));
644   - if(p!=null) {
645   - storage.setItem('isDoDate',JSON.stringify({'rsD':p.rsD,'rsLP':p.rsLp}));
646   - }else {
647   - storage.setItem('isDoDate','');
648   - }
649   - loadPage('gantt.html');
  654 + var baseRes2 = $('#submit_argus_form input[name="baseRes"]:checked').val();// 获取参数方式值.
  655 + if (baseRes2 == 0) {
  656 + // TODO:客流暂时有问题,直接使用现有时刻表打开,日后有机会再改好
  657 + var skbId2 = $("#skbNameSelect").val();
  658 + var argus2 = {
  659 + baseRes:"0",carPark:"FFFFFF68",downInMileage:"0",
  660 + downInTimer:"0",downMileage:"3.5",downOutMileage:"0",
  661 + downOutTimer:"0",downStopTime:"10",downTravelTime:"7",
  662 + down_s:"26922_26928",earlyDownTime:"7",earlyEndTime:"08:30",
  663 + earlyStartTime:"06:31",earlyUpTime:"10",endStationEndTime:"22:30",
  664 + endStationFirstTime:"05:50",gfzjpcs:"7",istidc:1,kfsj:"",krl:"50",
  665 + lateDownTime:"7",lateEndTime:"18:30",lateStartTime:"16:31",
  666 + lateUpTime:"10",lb:"15",lineName:"801702_801702_1109路",
  667 + linePlayType:"0",maxstopTime:"20",mixstopTime:"8",qjDownTime:"",
  668 + qjUpTime:"",skbName:skbId2,skbmc:"2016.4.6双时刻表",
  669 + startStationEndTime:"23:00",startStationFirstTime:"06:15",tcc_id:45,troughDownTime:"7",troughUpTime:"10",upInMileage:"0",
  670 + upInTimer:"10",upMileage:"3.5",upOutMileage:"0",upOutTimer:"10",upStopTime:"10",upTravelTime:"10",
  671 + up_s:"26912_26921",wgfafterpcs:"5",wgfpcs:"10",workeDinner:"20",workeLunch:"20",xlmc:"1109路",zgfbeforepcs:"3",zgfpcs:"10",}
  672 + // 获取时刻表明细.
  673 + $get('/tidc/all',{'ttinfo.id_eq':parseInt(argus.skbName)},function(data) {
  674 + var p = formatData(data.data,argus2);
  675 + // TODO:添加parent
  676 + for (var ii = 0; ii < p.rsD.length; ii++) {
  677 + p.rsD[ii].parent = p.rsD[ii].lpNo;// 路牌名称
  678 + }
  679 +
  680 + argus2.istidc = 1;
  681 + var storage = window.localStorage;
  682 + storage.setItem("Gantt_AgursData",JSON.stringify(argus2));
  683 + storage.setItem('isDoDate',JSON.stringify({'rsD':p.rsD,'rsLP':p.rsLp}));
  684 + loadPage('gantt.html');
  685 + });
  686 + } else {
  687 + storage.setItem("Gantt_AgursData",JSON.stringify(argus));
  688 + if(p!=null) {
  689 + storage.setItem('isDoDate',JSON.stringify({'rsD':p.rsD,'rsLP':p.rsLp}));
  690 + }else {
  691 + storage.setItem('isDoDate','');
  692 + }
  693 + loadPage('gantt.html');
  694 + }
  695 +
  696 +
650 697 }
651 698 }
652 699 });
... ...
src/main/resources/static/pages/base/timesmodel/js/gantt.js
... ... @@ -83,7 +83,9 @@
83 83 // TODO:绘制gantt图表
84 84 // TODO:var seDate = getksjssj(null,seMap.s); 关联参数必须设置
85 85 // TODO:CSMap.maxCar 之后要设定一下的
  86 + $(".exportbtn").html("<a class=\"btn btn-circle blue exportAdd\" href=\"javascript:;\" data-pjax><i class=\"fa fa-file-excel-o\"></i> 导出数据</a>");
86 87 data = Main_v2.BXPplaceClassesTime03(_paramObj, CSMap.maxCar);
  88 + Main_v2.exportDataConfig(data.aInternalLpObj);
87 89 }
88 90  
89 91 }else {
... ...
src/main/resources/static/pages/base/timesmodel/js/v2/core/InternalBcObj.js
... ... @@ -51,7 +51,7 @@ var InternalBcObj = function(
51 51 //------------------- get/set 方法 -------------------//
52 52  
53 53 InternalBcObj.prototype.fnSetIsFirstBc = function(bFlag) {
54   - this._$_bIsFirstBc = true;
  54 + this._$_bIsFirstBc = bFlag;
55 55 };
56 56 InternalBcObj.prototype.fnIsFirstBc = function() {
57 57 return this._$_bIsFirstBc;
... ...