Commit 0375fb4bbada105fdf3ad4118025d7b8f9f9d3a0

Authored by 廖磊
2 parents 44fbeee6 cb3ee486

Merge branch 'minhang' of

http://222.66.0.204:8090/panzhaov5/bsth_control into minhang
Showing 43 changed files with 3816 additions and 166 deletions
src/main/java/com/bsth/XDApplication.java
... ... @@ -86,11 +86,14 @@ public class XDApplication implements CommandLineRunner {
86 86 }
87 87 }
88 88  
  89 + //@Autowired
  90 + //DayOfSchedule dayOfSchedule;
89 91 public void devInit(){
90 92 log.info("devInit...");
91 93 ScheduledExecutorService sexec = Application.mainServices;
92 94 //抓取GPS数据
93 95 gpsDataLoader.setFlag(-1);
  96 + //dayOfSchedule.dataRecovery();
94 97 //sexec.scheduleWithFixedDelay(gpsDataLoader, 30, 2, TimeUnit.SECONDS);
95 98 //实际排班更新线程
96 99 //sexec.scheduleWithFixedDelay(scheduleRefreshThread, 15, 240, TimeUnit.SECONDS);
... ... @@ -98,7 +101,8 @@ public class XDApplication implements CommandLineRunner {
98 101 //sexec.scheduleWithFixedDelay(schedulePstThread, 60, 15, TimeUnit.SECONDS);
99 102 //班次修正日志延迟入库
100 103 //sexec.scheduleWithFixedDelay(seiPstThread, 60, 30, TimeUnit.SECONDS);
101   -
  104 + //调度指令延迟入库
  105 + //sexec.scheduleWithFixedDelay(directivesPstThread, 180, 180, TimeUnit.SECONDS);
102 106 //线程监听(防止重要的线程阻塞、异常结束。以及部分主备切换工作)
103 107 //sexec.scheduleWithFixedDelay(threadMonotor, 240, 60, TimeUnit.SECONDS);
104 108 }
... ... @@ -116,7 +120,7 @@ public class XDApplication implements CommandLineRunner {
116 120 sexec.scheduleWithFixedDelay(scheduleRefreshThread, 15, 240, TimeUnit.SECONDS);
117 121 //班次延迟入库线程
118 122 sexec.scheduleWithFixedDelay(schedulePstThread, 60, 10, TimeUnit.SECONDS);
119   - //班次修正日志延迟入库
  123 + //班次修正日志入库
120 124 sexec.scheduleWithFixedDelay(seiPstThread, 60, 60, TimeUnit.SECONDS);
121 125 //检查班次误点
122 126 sexec.scheduleWithFixedDelay(scheduleLateThread, 60, 30, TimeUnit.SECONDS);
... ...
src/main/java/com/bsth/controller/schedule/core/EmployeeConfigInfoController.java
... ... @@ -7,10 +7,7 @@ import com.bsth.repository.schedule.EmployeeConfigInfoRepository;
7 7 import com.bsth.service.schedule.EmployeeConfigInfoService;
8 8 import com.bsth.service.schedule.exception.ScheduleException;
9 9 import org.springframework.beans.factory.annotation.Autowired;
10   -import org.springframework.web.bind.annotation.RequestMapping;
11   -import org.springframework.web.bind.annotation.RequestMethod;
12   -import org.springframework.web.bind.annotation.RequestParam;
13   -import org.springframework.web.bind.annotation.RestController;
  10 +import org.springframework.web.bind.annotation.*;
14 11  
15 12 import java.util.HashMap;
16 13 import java.util.List;
... ... @@ -38,6 +35,19 @@ public class EmployeeConfigInfoController extends BController<EmployeeConfigInfo
38 35 }
39 36  
40 37  
  38 + @RequestMapping(value = "/dbbm/{xlid}", method = RequestMethod.GET)
  39 + public Map<String, Object> getDbbm(@PathVariable("xlid") Integer xl) {
  40 + Map<String, Object> rtn = new HashMap<>();
  41 + try {
  42 + rtn.put("data", employeeConfigInfoService.getMaxDbbm(xl));
  43 + rtn.put("status", ResponseCode.SUCCESS);
  44 + } catch (Exception exp) {
  45 + exp.printStackTrace();
  46 + rtn.put("status", ResponseCode.ERROR);
  47 + rtn.put("msg", exp.getMessage());
  48 + }
  49 + return rtn;
  50 + }
41 51  
42 52 @RequestMapping(value = "/validate_jsy", method = RequestMethod.GET)
43 53 public Map<String, Object> validate_jsy(@RequestParam Map<String, Object> param) {
... ...
src/main/java/com/bsth/controller/schedule/core/GuideboardInfoController.java
... ... @@ -7,10 +7,7 @@ import com.bsth.repository.schedule.GuideboardInfoRepository;
7 7 import com.bsth.service.schedule.GuideboardInfoService;
8 8 import com.bsth.service.schedule.exception.ScheduleException;
9 9 import org.springframework.beans.factory.annotation.Autowired;
10   -import org.springframework.web.bind.annotation.RequestMapping;
11   -import org.springframework.web.bind.annotation.RequestMethod;
12   -import org.springframework.web.bind.annotation.RequestParam;
13   -import org.springframework.web.bind.annotation.RestController;
  10 +import org.springframework.web.bind.annotation.*;
14 11  
15 12 import java.util.HashMap;
16 13 import java.util.List;
... ... @@ -33,6 +30,21 @@ public class GuideboardInfoController extends BController&lt;GuideboardInfo, Long&gt;
33 30 return guideboardInfoRepository.findLpName(ttid);
34 31 }
35 32  
  33 + @RequestMapping(value = "lpno/{xlid}", method = RequestMethod.GET)
  34 + public Map<String, Object> getLpNo(@PathVariable("xlid") Integer xl) {
  35 + Map<String, Object> rtn = new HashMap<>();
  36 + try {
  37 + rtn.put("data", guideboardInfoService.getMaxLpno(xl));
  38 + rtn.put("status", ResponseCode.SUCCESS);
  39 + } catch (Exception exp) {
  40 + exp.printStackTrace();
  41 + rtn.put("status", ResponseCode.ERROR);
  42 + rtn.put("msg", exp.getMessage());
  43 + }
  44 +
  45 + return rtn;
  46 + }
  47 +
36 48 @RequestMapping(value = "/validate_lpno", method = RequestMethod.GET)
37 49 public Map<String, Object> validate_lpno(@RequestParam Map<String, Object> param) {
38 50 Map<String, Object> rtn = new HashMap<>();
... ...
src/main/java/com/bsth/data/directive/DirectivesPstThread.java
... ... @@ -34,6 +34,7 @@ public class DirectivesPstThread extends Thread {
34 34  
35 35 @Override
36 36 public void run() {
  37 +
37 38 LinkedList<Directive> list = DayOfDirectives.pstDirectives;
38 39  
39 40 Directive directive;
... ... @@ -46,8 +47,10 @@ public class DirectivesPstThread extends Thread {
46 47 if(d60.isDispatch()){
47 48 ScheduleRealInfo sch = d60.getSch();
48 49 //如果关联的班次已经不存在了,放弃入库
49   - if(dayOfSchedule.get(sch.getId()) == null)
  50 + if(dayOfSchedule.get(sch.getId()) == null){
  51 + logger.warn("班次:" + sch.getId() + "不存在了,调度指令放弃入库。");
50 52 continue;
  53 + }
51 54 }
52 55 d60Repository.save(d60);
53 56 }
... ...
src/main/java/com/bsth/data/gpsdata/arrival/GpsRealAnalyse.java
... ... @@ -117,29 +117,31 @@ public class GpsRealAnalyse {
117 117 try {
118 118 Collections.sort(list, comp);
119 119 for (GpsEntity gps : list) {
120   - //是否有任务
121   - boolean task;
122   - CircleQueue<GpsEntity> prevs = GeoCacheData.getGps(gps.getNbbm());
123   - //掉线处理
124   - offlineSignalHandle.handle(gps, prevs);
125   - //状态处理
126   - task = correctSignalHandle.handle(gps, prevs);
127   - //场,站内外判断
128   - stationInsideHandle.handle(gps, prevs);
129   - //异常判定(越界/超速)
130   - abnormalStateHandle.handle(gps, prevs);
131   -
132   - if (!task)
133   - continue; //无任务的,到这里就结束
134   -
135   - //反向处理
136   - reverseSignalHandle.handle(gps, prevs);
137   - //进出站动作处理
138   - inOutStationSignalHandle.handle(gps, prevs);
139   - GeoCacheData.putGps(gps);
  120 + try {
  121 + //是否有任务
  122 + boolean task;
  123 + CircleQueue<GpsEntity> prevs = GeoCacheData.getGps(gps.getNbbm());
  124 + //掉线处理
  125 + offlineSignalHandle.handle(gps, prevs);
  126 + //状态处理
  127 + task = correctSignalHandle.handle(gps, prevs);
  128 + //场,站内外判断
  129 + stationInsideHandle.handle(gps, prevs);
  130 + //异常判定(越界/超速)
  131 + abnormalStateHandle.handle(gps, prevs);
  132 +
  133 + if (!task)
  134 + continue; //无任务的,到这里就结束
  135 +
  136 + //反向处理
  137 + reverseSignalHandle.handle(gps, prevs);
  138 + //进出站动作处理
  139 + inOutStationSignalHandle.handle(gps, prevs);
  140 + GeoCacheData.putGps(gps);
  141 + }catch (Exception e){
  142 + logger.error("", e);
  143 + }
140 144 }
141   - } catch (Exception e) {
142   - logger.error("", e);
143 145 } finally {
144 146 if (count != null)
145 147 count.countDown();
... ...
src/main/java/com/bsth/data/gpsdata/arrival/handlers/InOutStationSignalHandle.java
... ... @@ -46,7 +46,7 @@ public class InOutStationSignalHandle extends SignalHandle{
46 46 @Autowired
47 47 SignalSchPlanMatcher signalSchPlanMatcher;
48 48  
49   - private final static int MAX_BEFORE_TIME = 1000 * 60 * 72;
  49 + private final static int MAX_BEFORE_TIME = 1000 * 60 * 120;
50 50  
51 51 //最大的班次时间差,防止异常的GPS时间打乱数据
52 52 private final static int MAX_NORMAL_DIFF = 1000 * 60 * 60 * 12;
... ... @@ -113,8 +113,8 @@ public class InOutStationSignalHandle extends SignalHandle{
113 113  
114 114 int diff = (int) (sch.getDfsjT() - gps.getTimestamp());
115 115  
116   - //首班出场最多提前1.2小时
117   - if(dayOfSchedule.isFirstOut(sch) && diff > MAX_BEFORE_TIME)
  116 + //首班出场最多提前2小时
  117 + if((dayOfSchedule.isFirstOut(sch) && diff > MAX_BEFORE_TIME) || diff > MAX_BEFORE_TIME / 2)
118 118 return;
119 119  
120 120 //正常班次最大时间差
... ... @@ -129,9 +129,11 @@ public class InOutStationSignalHandle extends SignalHandle{
129 129 signalSchPlanMatcher.outMatch(gps, sch);
130 130 sch = dayOfSchedule.executeCurr(gps.getNbbm());
131 131  
132   - //实发时间不覆盖
133   - if(StringUtils.isNotEmpty(sch.getFcsjActual()))
  132 + //班次已经实发
  133 + if(StringUtils.isNotEmpty(sch.getFcsjActual())
  134 + && !outManyFit(gps, sch)){
134 135 return;
  136 + }
135 137  
136 138 //应用到离站缓冲区设置参数
137 139 long rsT = lineConfigData.applyOut(sch, gps.getTimestamp());
... ... @@ -185,6 +187,26 @@ public class InOutStationSignalHandle extends SignalHandle{
185 187 }
186 188 }
187 189  
  190 + /**
  191 + * 是否是一个更合适的发车信号
  192 + * @param gps
  193 + * @param sch
  194 + * @return
  195 + */
  196 + private boolean outManyFit(GpsEntity gps, ScheduleRealInfo sch) {
  197 + if(StringUtils.isNotEmpty(sch.getZdsjActual()))
  198 + return false;
  199 +
  200 + long t1 = sch.getFcsjActualTime();
  201 + long t2 = gps.getTimestamp();
  202 + long c = sch.getDfsjT();
  203 +
  204 + if(c - t1 > 1000 * 60 * 15 && Math.abs(t2 - c) < 1000 * 60 * 5){
  205 + return true;
  206 + }
  207 + return false;
  208 + }
  209 +
188 210  
189 211 private void outStationAndOutPark(ScheduleRealInfo sch){
190 212 LineConfig config = lineConfigData.get(sch.getXlBm());
... ... @@ -230,7 +252,7 @@ public class InOutStationSignalHandle extends SignalHandle{
230 252 logger.info("NullPointerException " + sch.getXlName() + " 有班次无班次历时,,,检查一下是否需要出站既出场。");
231 253 }
232 254 //进场最多提前1.2小时
233   - if(sch.getBcType().equals("in") && diff > MAX_BEFORE_TIME)
  255 + if((sch.getBcType().equals("in") && diff > MAX_BEFORE_TIME) || diff > MAX_BEFORE_TIME/2)
234 256 return;
235 257  
236 258 //正常班次最大时间差
... ...
src/main/java/com/bsth/data/gpsdata/arrival/utils/SignalSchPlanMatcher.java
... ... @@ -3,6 +3,8 @@ package com.bsth.data.gpsdata.arrival.utils;
3 3 import com.bsth.data.gpsdata.GpsEntity;
4 4 import com.bsth.data.schedule.DayOfSchedule;
5 5 import com.bsth.entity.realcontrol.ScheduleRealInfo;
  6 +import org.slf4j.Logger;
  7 +import org.slf4j.LoggerFactory;
6 8 import org.springframework.beans.factory.annotation.Autowired;
7 9 import org.springframework.stereotype.Component;
8 10  
... ... @@ -16,6 +18,8 @@ public class SignalSchPlanMatcher {
16 18 @Autowired
17 19 DayOfSchedule dayOfSchedule;
18 20  
  21 + Logger log = LoggerFactory.getLogger(this.getClass());
  22 +
19 23 /**
20 24 * 发车信号匹配
21 25 * @param outSigal
... ... @@ -27,6 +31,25 @@ public class SignalSchPlanMatcher {
27 31 if(t < sch.getDfsjT())
28 32 return;
29 33  
  34 + try{
  35 + //会不会是分班没有完成
  36 + if(sch.getBcType().equals("in")){
  37 + ScheduleRealInfo fbFirst = dayOfSchedule.nextByBcType(sch, "normal");
  38 +
  39 + if(fbFirst == null)
  40 + return;
  41 +
  42 + long dt = fbFirst.getDfsjT();
  43 + //前5后10 -执行分班的首个营运
  44 + if(dt - t < 1000 * 60 * 5 || t - dt < 1000 * 60 * 10){
  45 + dayOfSchedule.addExecPlan(fbFirst);
  46 + return;
  47 + }
  48 + }
  49 + }catch (Exception e){
  50 + log.error("", e);
  51 + }
  52 +
30 53 //下一个相同走向的班次
31 54 ScheduleRealInfo next = dayOfSchedule.nextSame(sch);
32 55 if(next == null || !next.getQdzCode().equals(sch.getQdzCode()))
... ...
src/main/java/com/bsth/data/gpsdata/recovery/GpsDataRecovery.java
... ... @@ -60,8 +60,10 @@ public class GpsDataRecovery implements ApplicationContextAware {
60 60 for (String lineId : keys) {
61 61 Collections.sort(listMap.get(lineId), comp);
62 62 threadPool.execute(new RecoveryThread(listMap.get(lineId), count));
63   - /*if(nbbm.equals("W7C-001"))
  63 + /*if(nbbm.equals("W7E-016"))
64 64 new RecoveryThread(listMap.get(nbbm), count).run();*/
  65 + /*if(lineId.equals("60028"))
  66 + new RecoveryThread(listMap.get(lineId), count).run();*/
65 67 }
66 68  
67 69 try {
... ... @@ -82,7 +84,7 @@ public class GpsDataRecovery implements ApplicationContextAware {
82 84 Calendar calendar = Calendar.getInstance();
83 85 int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);
84 86  
85   - String sql = "select DEVICE_ID,LAT,LON,TS,SPEED_GPS,LINE_ID,SERVICE_STATE from bsth_c_gps_info where days_year=" + dayOfYear;
  87 + String sql = "select DEVICE_ID,LAT,LON,TS,SPEED_GPS,LINE_ID,SERVICE_STATE from bsth_c_gps_info where days_year=143";// + dayOfYear;
86 88 JdbcTemplate jdbcTemplate = new JdbcTemplate(DBUtils_MS.getDataSource());
87 89  
88 90 List<GpsEntity> list =
... ... @@ -150,30 +152,34 @@ public class GpsDataRecovery implements ApplicationContextAware {
150 152 CircleQueue<GpsEntity> prevs;
151 153 boolean task;
152 154 for (GpsEntity gps : list) {
153   -
154   - //是否有任务
155   -
156   - prevs = GeoCacheData.getGps(gps.getNbbm());
157   - //掉线处理
158   - offlineSignalHandle.handle(gps, prevs);
159   - //状态处理
160   - task = correctSignalHandle.handle(gps, prevs);
161   - //场,站内外判断
162   - stationInsideHandle.handle(gps, prevs);
163   - //异常判定(越界/超速)
164   - //abnormalStateHandle.handle(gps, prevs);
165   -
166   - if(!task)
167   - continue; //无任务的,到这里就结束
168   -
169   - //反向处理
170   - reverseSignalHandle.handle(gps, prevs);
171   - //进出站动作处理
172   - inOutStationSignalHandle.handle(gps, prevs);
173   - GeoCacheData.putGps(gps);
  155 + try {
  156 + /*if(gps.getTimestamp() >= 1495512240000L){
  157 + System.out.println("debugger...");
  158 + }*/
  159 + //是否有任务
  160 +
  161 + prevs = GeoCacheData.getGps(gps.getNbbm());
  162 + //掉线处理
  163 + offlineSignalHandle.handle(gps, prevs);
  164 + //状态处理
  165 + task = correctSignalHandle.handle(gps, prevs);
  166 + //场,站内外判断
  167 + stationInsideHandle.handle(gps, prevs);
  168 + //异常判定(越界/超速)
  169 + //abnormalStateHandle.handle(gps, prevs);
  170 +
  171 + if (!task)
  172 + continue; //无任务的,到这里就结束
  173 +
  174 + //反向处理
  175 + reverseSignalHandle.handle(gps, prevs);
  176 + //进出站动作处理
  177 + inOutStationSignalHandle.handle(gps, prevs);
  178 + GeoCacheData.putGps(gps);
  179 + } catch (Exception e) {
  180 + logger.error("", e);
  181 + }
174 182 }
175   - } catch (Exception e) {
176   - logger.error("", e);
177 183 } finally {
178 184 count.countDown();
179 185 }
... ...
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
... ... @@ -649,7 +649,12 @@ public class DayOfSchedule {
649 649 nbbmScheduleMap.remove(sch.getClZbh(), sch);
650 650 id2SchedulMap.remove(sch.getId());
651 651 lpScheduleMap.remove(sch.getXlBm() + "_" + sch.getLpName(), sch);
652   - //return sch;
  652 +
  653 + //如果正在执行该班次
  654 + if(carExecutePlanMap.get(sch.getClZbh()) == sch){
  655 + //重新计算车辆当前执行班次
  656 + reCalcExecPlan(sch.getClZbh());
  657 + }
653 658 }
654 659  
655 660  
... ... @@ -776,6 +781,26 @@ public class DayOfSchedule {
776 781 }
777 782  
778 783 /**
  784 + * @Title: nextByBcType
  785 + * @Description: TODO(获取下一个指定班次类型的班次)
  786 + */
  787 + public ScheduleRealInfo nextByBcType(ScheduleRealInfo sch, String bcType) {
  788 + List<ScheduleRealInfo> list = nbbmScheduleMap.get(sch.getClZbh());
  789 + Collections.sort(list, schFCSJComparator);
  790 +
  791 + boolean flag = false;
  792 + for(ScheduleRealInfo temp : list){
  793 + if(temp == sch){
  794 + flag = true;
  795 + }
  796 +
  797 + if(flag && temp.getBcType().equals(bcType))
  798 + return temp;
  799 + }
  800 + return null;
  801 + }
  802 +
  803 + /**
779 804 * 搜索离当前时间最近的一个指定类型的班次
780 805 * @param nbbm
781 806 * @param bcType
... ...
src/main/java/com/bsth/service/forms/impl/FormsServiceImpl.java
... ... @@ -783,6 +783,7 @@ public class FormsServiceImpl implements FormsService {
783 783 @Override
784 784 public List<Map<String, Object>> turnoutrate(Map<String, Object> map) {
785 785  
  786 + List<Map<String, Object>> tempList = new ArrayList<Map<String, Object>>();
786 787 List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>();
787 788 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
788 789 SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日");
... ... @@ -804,11 +805,14 @@ public class FormsServiceImpl implements FormsService {
804 805 String line = map.get("line").toString();
805 806 String startDate = map.get("startDate").toString();
806 807 String endDate = map.get("endDate").toString();
  808 + if(line.trim().length() == 0){
  809 + line = "";
  810 + }
807 811  
808 812 rq = rq2 + "-" + rq3;
809 813  
810 814 List<ScheduleRealInfo> list = scheduleRealInfoRepository.scheduleByDateAndLineTj(line, startDate, endDate, company, subCompany);
811   - List<Line> lineList = lineRepository.findLineBygsBm(company, subCompany, line);
  815 + List<Line> lineList = lineRepository.findLineBygsBm(company, subCompany, line.length()==0?"%"+line+"%":line);
812 816  
813 817 String sql = "select * from bsth_c_s_sp_info where gs_bm = '"+company+"' and fgs_bm = '"+subCompany+"' "
814 818 + "and DATE_FORMAT(schedule_date,'%Y-%m-%d') BETWEEN '"+startDate+"' and '"+endDate+"' ";
... ... @@ -842,10 +846,10 @@ public class FormsServiceImpl implements FormsService {
842 846 m.put("xlBm", line1.getLineCode());
843 847 m.put("qz", line1.getWarrantCar()!=null?line1.getWarrantCar():0);
844 848 m.put("sm", "");
845   - resList.add(m);
  849 + tempList.add(m);
846 850 }
847 851 }
848   - for(Map<String, Object> m : resList){
  852 + for(Map<String, Object> m : tempList){
849 853 String xlBm = m.get("xlBm").toString();
850 854 List<ScheduleRealInfo> reals = new ArrayList<ScheduleRealInfo>();
851 855 List<SchedulePlanInfo> plans = new ArrayList<SchedulePlanInfo>();
... ... @@ -895,6 +899,9 @@ public class FormsServiceImpl implements FormsService {
895 899 }else{
896 900 m.put("zxl", "--");
897 901 }
  902 + if(jhbc != 0 && sjbc != 0){
  903 + resList.add(m);
  904 + }
898 905 }
899 906 Map<String, Object> tempMap = new HashMap<String, Object>();
900 907 int jhcc = 0;
... ... @@ -902,7 +909,7 @@ public class FormsServiceImpl implements FormsService {
902 909 int jhbc = 0;
903 910 int sjbc = 0;
904 911 int qz = 0;
905   - for(Map<String, Object> m : resList){
  912 + for(Map<String, Object> m : tempList){
906 913 jhcc += Integer.valueOf(m.get("jhcc").toString());
907 914 sjcc += Integer.valueOf(m.get("sjcc").toString());
908 915 jhbc += Integer.valueOf(m.get("jhbc").toString());
... ... @@ -910,7 +917,7 @@ public class FormsServiceImpl implements FormsService {
910 917 qz += Integer.valueOf(m.get("qz").toString());
911 918 }
912 919 tempMap.put("rq", "分类汇总");
913   - tempMap.put("line", "共" + resList.size() + "条线路");
  920 + tempMap.put("line", "共" + tempList.size() + "条线路");
914 921 tempMap.put("jhcc", jhcc);
915 922 tempMap.put("sjcc", sjcc);
916 923 tempMap.put("jhbc", jhbc);
... ...
src/main/java/com/bsth/service/impl/BusIntervalServiceImpl.java
... ... @@ -113,6 +113,12 @@ public class BusIntervalServiceImpl implements BusIntervalService {
113 113 schedule.setSpId(rs.getLong("sp_id"));
114 114 schedule.setSflj(rs.getBoolean("sflj"));
115 115  
  116 + if(schedule.getFcsjActual() != null && schedule.getFcsjActual().trim().length() == 0){
  117 + schedule.setFcsjActual(null);
  118 + }
  119 + if(schedule.getZdsjActual() != null && schedule.getZdsjActual().trim().length() == 0){
  120 + schedule.setZdsjActual(null);
  121 + }
116 122 String[] split1 = schedule.getFcsj().split(":");
117 123 String[] split3 = schedule.getZdsj().split(":");
118 124 long fcsj = Long.valueOf(split1[0]) * 60 + Long.valueOf(split1[1]);
... ... @@ -669,6 +675,13 @@ public class BusIntervalServiceImpl implements BusIntervalService {
669 675 schedule.setjName(rs.getString("j_name"));
670 676 schedule.setStatus(rs.getInt("status"));
671 677 schedule.setSpId(rs.getLong("sp_id"));
  678 +
  679 + if(schedule.getFcsjActual() != null && schedule.getFcsjActual().trim().length() == 0){
  680 + schedule.setFcsjActual(null);
  681 + }
  682 + if(schedule.getZdsjActual() != null && schedule.getZdsjActual().trim().length() == 0){
  683 + schedule.setZdsjActual(null);
  684 + }
672 685 if(schedule.getDfsj() != null){
673 686 String[] split0 = schedule.getDfsj().split(":");
674 687 long dfsj = Long.valueOf(split0[0]) * 60 + Long.valueOf(split0[1]);
... ... @@ -1840,6 +1853,13 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1840 1853 schedule.setjName(rs.getString("j_name"));
1841 1854 schedule.setUpdateDate(rs.getDate("update_date"));
1842 1855  
  1856 + if(schedule.getFcsjActual() != null && schedule.getFcsjActual().trim().length() == 0){
  1857 + schedule.setFcsjActual(null);
  1858 + }
  1859 + if(schedule.getZdsjActual() != null && schedule.getZdsjActual().trim().length() == 0){
  1860 + schedule.setZdsjActual(null);
  1861 + }
  1862 +
1843 1863 return schedule;
1844 1864 }
1845 1865 });
... ...
src/main/java/com/bsth/service/schedule/EmployeeConfigInfoService.java
... ... @@ -9,5 +9,6 @@ import com.bsth.service.schedule.exception.ScheduleException;
9 9 public interface EmployeeConfigInfoService extends BService<EmployeeConfigInfo, Long> {
10 10 void validate_jsy(EmployeeConfigInfo employeeConfigInfo) throws ScheduleException;
11 11 void validate_spy(EmployeeConfigInfo employeeConfigInfo) throws ScheduleException;
12   - public void toggleCancel(Long id) throws ScheduleException;
  12 + void toggleCancel(Long id) throws ScheduleException;
  13 + Long getMaxDbbm(Integer xlId);
13 14 }
... ...
src/main/java/com/bsth/service/schedule/GuideboardInfoService.java
... ... @@ -7,8 +7,10 @@ import com.bsth.service.schedule.exception.ScheduleException;
7 7 * Created by xu on 16/5/11.
8 8 */
9 9 public interface GuideboardInfoService extends BService<GuideboardInfo, Long> {
10   - public void validate_lpno(GuideboardInfo guideboardInfo) throws ScheduleException;
11   - public void validate_lpname(GuideboardInfo guideboardInfo) throws ScheduleException;
12   - public void toggleCancel(Long id) throws ScheduleException;
  10 + void validate_lpno(GuideboardInfo guideboardInfo) throws ScheduleException;
  11 + void validate_lpname(GuideboardInfo guideboardInfo) throws ScheduleException;
  12 + void toggleCancel(Long id) throws ScheduleException;
  13 +
  14 + Long getMaxLpno(Integer xlid);
13 15  
14 16 }
... ...
src/main/java/com/bsth/service/schedule/impl/EmployeeConfigInfoServiceImpl.java
... ... @@ -8,11 +8,16 @@ import com.bsth.service.schedule.exception.ScheduleException;
8 8 import com.bsth.service.schedule.utils.DataToolsService;
9 9 import org.springframework.beans.factory.annotation.Autowired;
10 10 import org.springframework.beans.factory.annotation.Qualifier;
  11 +import org.springframework.dao.DataAccessException;
  12 +import org.springframework.jdbc.core.JdbcTemplate;
  13 +import org.springframework.jdbc.core.ResultSetExtractor;
11 14 import org.springframework.stereotype.Service;
12 15 import org.springframework.transaction.annotation.Transactional;
13 16 import org.springframework.util.CollectionUtils;
14 17  
15 18 import java.io.File;
  19 +import java.sql.ResultSet;
  20 +import java.sql.SQLException;
16 21 import java.util.*;
17 22  
18 23 /**
... ... @@ -27,6 +32,9 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn
27 32 @Qualifier(value = "employeeConfig_dataTool")
28 33 private DataToolsService dataToolsService;
29 34  
  35 + @Autowired
  36 + private JdbcTemplate jdbcTemplate;
  37 +
30 38 @Override
31 39 public File uploadFile(String filename, byte[] filedata) throws ScheduleException {
32 40 return dataToolsService.uploadFile(filename, filedata);
... ... @@ -42,6 +50,25 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl&lt;EmployeeConfigIn
42 50 return dataToolsService.exportData(params);
43 51 }
44 52  
  53 + @Override
  54 + public Long getMaxDbbm(Integer xlId) {
  55 + String sql = "select max(dbbm + 0) as maxdbbm from bsth_c_s_ecinfo where xl = ?";
  56 +
  57 + Long maxBM = jdbcTemplate.query(sql, new ResultSetExtractor<Long>() {
  58 + @Override
  59 + public Long extractData(ResultSet rs) throws SQLException, DataAccessException {
  60 + if (rs.next()) {
  61 + return rs.getLong("maxdbbm");
  62 + } else {
  63 + return 0L;
  64 + }
  65 +
  66 + }
  67 + }, xlId);
  68 +
  69 + return maxBM + 1;
  70 + }
  71 +
45 72 @Transactional
46 73 @Override
47 74 public void validate_jsy(EmployeeConfigInfo employeeConfigInfo) throws ScheduleException {
... ...
src/main/java/com/bsth/service/schedule/impl/GuideboardInfoServiceImpl.java
... ... @@ -8,11 +8,16 @@ import com.bsth.service.schedule.exception.ScheduleException;
8 8 import com.bsth.service.schedule.utils.DataToolsService;
9 9 import org.springframework.beans.factory.annotation.Autowired;
10 10 import org.springframework.beans.factory.annotation.Qualifier;
  11 +import org.springframework.dao.DataAccessException;
  12 +import org.springframework.jdbc.core.JdbcTemplate;
  13 +import org.springframework.jdbc.core.ResultSetExtractor;
11 14 import org.springframework.stereotype.Service;
12 15 import org.springframework.util.CollectionUtils;
13 16  
14 17 import javax.transaction.Transactional;
15 18 import java.io.File;
  19 +import java.sql.ResultSet;
  20 +import java.sql.SQLException;
16 21 import java.util.HashMap;
17 22 import java.util.List;
18 23 import java.util.Map;
... ... @@ -29,6 +34,27 @@ public class GuideboardInfoServiceImpl extends BServiceImpl&lt;GuideboardInfo, Long
29 34 @Autowired
30 35 private TTInfoDetailService ttInfoDetailService;
31 36  
  37 + @Autowired
  38 + private JdbcTemplate jdbcTemplate;
  39 +
  40 + @Override
  41 + public Long getMaxLpno(Integer xlid) {
  42 + String sql = "select max(lp_no) as maxno from bsth_c_s_gbi where xl = ?";
  43 +
  44 + Long maxNo = jdbcTemplate.query(sql, new ResultSetExtractor<Long>() {
  45 + @Override
  46 + public Long extractData(ResultSet rs) throws SQLException, DataAccessException {
  47 + if (rs.next()) {
  48 + return rs.getLong("maxno");
  49 + } else {
  50 + return 0L;
  51 + }
  52 + }
  53 + }, xlid);
  54 +
  55 + return maxNo + 1;
  56 + }
  57 +
32 58 @Override
33 59 public void validate_lpno(GuideboardInfo guideboardInfo) throws ScheduleException {
34 60 // 查询条件
... ...
src/main/java/com/bsth/service/schedule/impl/PeopleCarPlanServiceImpl.java
... ... @@ -81,6 +81,12 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
81 81 schedule.setsName(rs.getString("s_name"));
82 82 schedule.setSpId(rs.getLong("sp_id"));
83 83  
  84 + if(schedule.getFcsjActual() != null && schedule.getFcsjActual().trim().length() == 0){
  85 + schedule.setFcsjActual(null);
  86 + }
  87 + if(schedule.getZdsjActual() != null && schedule.getZdsjActual().trim().length() == 0){
  88 + schedule.setZdsjActual(null);
  89 + }
84 90 if(schedule.getFcsj() != null && schedule.getZdsj() != null){
85 91 String[] split1 = schedule.getFcsj().split(":");
86 92 String[] split2 = schedule.getZdsj().split(":");
... ... @@ -548,6 +554,12 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
548 554 schedule.setQdzName(rs.getString("qdz_name"));
549 555 schedule.setSpId(rs.getLong("sp_id"));
550 556  
  557 + if(schedule.getFcsjActual() != null && schedule.getFcsjActual().trim().length() == 0){
  558 + schedule.setFcsjActual(null);
  559 + }
  560 + if(schedule.getZdsjActual() != null && schedule.getZdsjActual().trim().length() == 0){
  561 + schedule.setZdsjActual(null);
  562 + }
551 563 if(schedule.getFcsj() != null && schedule.getZdsj() != null){
552 564 String[] split1 = schedule.getFcsj().split(":");
553 565 String[] split2 = schedule.getZdsj().split(":");
... ... @@ -831,6 +843,12 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
831 843 schedule.setQdzName(rs.getString("qdz_name"));
832 844 schedule.setSpId(rs.getLong("sp_id"));
833 845  
  846 + if(schedule.getFcsjActual() != null && schedule.getFcsjActual().trim().length() == 0){
  847 + schedule.setFcsjActual(null);
  848 + }
  849 + if(schedule.getZdsjActual() != null && schedule.getZdsjActual().trim().length() == 0){
  850 + schedule.setZdsjActual(null);
  851 + }
834 852 if(schedule.getFcsj() != null && schedule.getZdsj() != null){
835 853 String[] split1 = schedule.getFcsj().split(":");
836 854 String[] split2 = schedule.getZdsj().split(":");
... ...
src/main/java/com/bsth/service/schedule/impl/SchedulePlanServiceImpl.java
... ... @@ -249,6 +249,8 @@ public class SchedulePlanServiceImpl extends BServiceImpl&lt;SchedulePlan, Long&gt; im
249 249 end2.getTime() - start2.getTime(),
250 250 end3.getTime() - start3.getTime());
251 251  
  252 + // TODO:将lpInfoResults_output 也要返回
  253 +
252 254 return planResult;
253 255 }
254 256  
... ...
src/main/java/com/bsth/service/schedule/impl/TTInfoDetailServiceImpl.java
... ... @@ -210,6 +210,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
210 210 Map<String, Object> p2 = new HashMap<>();
211 211 p2.put("xl.id_eq", lineid);
212 212 p2.put("lpName_eq", bcell_con.trim());
  213 + p2.put("isCancel_eq", 0);
213 214 List<GuideboardInfo> guideboardInfoList = (List<GuideboardInfo>) guideboardInfoService.list(p2);
214 215 if (CollectionUtils.isEmpty(guideboardInfoList)) {
215 216 throw new Exception(String.format("第%d行,第1列的路牌在%s中不存在", i + 1, linename));
... ...
src/main/resources/datatools/ktrs/legecy/test.ktr 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x5bfc;&#x5165;</name>
  5 + <description>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description>
  6 + <extended_description>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;</extended_description>
  7 + <trans_version/>
  8 + <trans_type>Normal</trans_type>
  9 + <trans_status>0</trans_status>
  10 + <directory>&#x2f;</directory>
  11 + <parameters>
  12 + </parameters>
  13 + <log>
  14 +<trans-log-table><connection/>
  15 +<schema/>
  16 +<table/>
  17 +<size_limit_lines/>
  18 +<interval/>
  19 +<timeout_days/>
  20 +<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>
  21 +<perf-log-table><connection/>
  22 +<schema/>
  23 +<table/>
  24 +<interval/>
  25 +<timeout_days/>
  26 +<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>
  27 +<channel-log-table><connection/>
  28 +<schema/>
  29 +<table/>
  30 +<timeout_days/>
  31 +<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>
  32 +<step-log-table><connection/>
  33 +<schema/>
  34 +<table/>
  35 +<timeout_days/>
  36 +<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>
  37 +<metrics-log-table><connection/>
  38 +<schema/>
  39 +<table/>
  40 +<timeout_days/>
  41 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>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>
  42 + </log>
  43 + <maxdate>
  44 + <connection/>
  45 + <table/>
  46 + <field/>
  47 + <offset>0.0</offset>
  48 + <maxdiff>0.0</maxdiff>
  49 + </maxdate>
  50 + <size_rowset>10000</size_rowset>
  51 + <sleep_time_empty>50</sleep_time_empty>
  52 + <sleep_time_full>50</sleep_time_full>
  53 + <unique_connections>N</unique_connections>
  54 + <feedback_shown>Y</feedback_shown>
  55 + <feedback_size>50000</feedback_size>
  56 + <using_thread_priorities>Y</using_thread_priorities>
  57 + <shared_objects_file/>
  58 + <capture_step_performance>N</capture_step_performance>
  59 + <step_performance_capturing_delay>1000</step_performance_capturing_delay>
  60 + <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
  61 + <dependencies>
  62 + </dependencies>
  63 + <partitionschemas>
  64 + </partitionschemas>
  65 + <slaveservers>
  66 + </slaveservers>
  67 + <clusterschemas>
  68 + </clusterschemas>
  69 + <created_user>-</created_user>
  70 + <created_date>2016&#x2f;06&#x2f;30 12&#x3a;21&#x3a;57.536</created_date>
  71 + <modified_user>-</modified_user>
  72 + <modified_date>2016&#x2f;06&#x2f;30 12&#x3a;21&#x3a;57.536</modified_date>
  73 + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
  74 + <is_key_private>N</is_key_private>
  75 + </info>
  76 + <notepads>
  77 + <notepad>
  78 + <note>&#x5b57;&#x5178;&#x8868;&#x5bf9;&#x5e94;&#xff08;&#x4ee5;&#x540e;&#x76f4;&#x63a5;&#x67e5;&#x627e;&#x8868; bsth_c_sys_dictionary&#xff09;&#xa;&#x7c7b;&#x578b; &#x4ee3;&#x7801; &#x540d;&#x79f0;&#xa;LineTrend 0 &#x4e0a;&#x884c;&#xa;LineTrend 1 &#x4e0b;&#x884c;&#xa;ScheduleType normal &#x6b63;&#x5e38;&#x73ed;&#x6b21;&#xa;ScheduleType out &#x51fa;&#x573a;&#xa;ScheduleType in &#x8fdb;&#x573a;&#xa;ScheduleType temp &#x4e34;&#x52a0;&#xa;ScheduleType region &#x533a;&#x95f4;&#xa;ScheduleType venting &#x653e;&#x7a7a;&#xa;ScheduleType major &#x653e;&#x5927;&#x7ad9;</note>
  79 + <xloc>606</xloc>
  80 + <yloc>129</yloc>
  81 + <width>332</width>
  82 + <heigth>186</heigth>
  83 + <fontname>YaHei Consolas Hybrid</fontname>
  84 + <fontsize>12</fontsize>
  85 + <fontbold>N</fontbold>
  86 + <fontitalic>N</fontitalic>
  87 + <fontcolorred>0</fontcolorred>
  88 + <fontcolorgreen>0</fontcolorgreen>
  89 + <fontcolorblue>0</fontcolorblue>
  90 + <backgroundcolorred>255</backgroundcolorred>
  91 + <backgroundcolorgreen>205</backgroundcolorgreen>
  92 + <backgroundcolorblue>112</backgroundcolorblue>
  93 + <bordercolorred>100</bordercolorred>
  94 + <bordercolorgreen>100</bordercolorgreen>
  95 + <bordercolorblue>100</bordercolorblue>
  96 + <drawshadow>Y</drawshadow>
  97 + </notepad>
  98 + <notepad>
  99 + <note>&#x56e0;&#x4e3a;&#x65f6;&#x523b;&#x8868;&#x8f93;&#x5165;&#x683c;&#x5f0f;&#x4e0d;&#x786e;&#x5b9a;&#x6027;&#xff0c;&#x4e3b;&#x8981;&#x56e0;&#x4e3a;&#x8868;&#x7ed3;&#x6784;&#x662f;&#x53cd;&#x8303;&#x5f0f;&#x5316;&#x7684;&#xff0c;&#xa;&#x6240;&#x4ee5;&#x9700;&#x8981;&#x5916;&#x90e8;&#x52a8;&#x6001;&#x6307;&#x5b9a;&#x613f;&#x6570;&#x636e;&#xff0c;&#x5934;&#x4e09;&#x4e2a;step&#x52a8;&#x6001;&#x6307;&#x5b9a;&#x613f;&#x6570;&#x636e;&#xa;&#xa;</note>
  100 + <xloc>79</xloc>
  101 + <yloc>206</yloc>
  102 + <width>346</width>
  103 + <heigth>74</heigth>
  104 + <fontname>YaHei Consolas Hybrid</fontname>
  105 + <fontsize>12</fontsize>
  106 + <fontbold>N</fontbold>
  107 + <fontitalic>N</fontitalic>
  108 + <fontcolorred>0</fontcolorred>
  109 + <fontcolorgreen>0</fontcolorgreen>
  110 + <fontcolorblue>0</fontcolorblue>
  111 + <backgroundcolorred>255</backgroundcolorred>
  112 + <backgroundcolorgreen>205</backgroundcolorgreen>
  113 + <backgroundcolorblue>112</backgroundcolorblue>
  114 + <bordercolorred>100</bordercolorred>
  115 + <bordercolorgreen>100</bordercolorgreen>
  116 + <bordercolorblue>100</bordercolorblue>
  117 + <drawshadow>Y</drawshadow>
  118 + </notepad>
  119 + <notepad>
  120 + <note>&#x8fd9;&#x91cc;&#x6709;&#x4e9b;&#x95ee;&#x9898;&#xa;&#x5728;window2012&#x7684;&#x73af;&#x5883;&#x4e0b;&#xff0c;&#xa;MySql&#x6570;&#x636e;&#x5e93;&#x67e5;&#x8be2;&#x4e2d;&#x5982;&#x679c;&#x8fd4;&#x56de;&#x4e2d;&#x6587;&#x5185;&#x5bb9;&#x7684;&#x5b57;&#x6bb5;&#xff0c;&#x8fd9;&#x4e2a;&#x5185;&#x5bb9;&#x4e71;&#x7801;&#xa;&#x89e3;&#x51b3;&#x529e;&#x6cd5;&#xff0c;&#x5c31;&#x662f;&#x6570;&#x636e;&#x5e93;&#x67e5;&#x8be2;&#x5168;&#x90e8;&#x7f13;&#x5b58;&#xff0c;&#x5c31;&#x4e0d;&#x4e71;&#x7801;&#xa;linux&#x73af;&#x5883;&#x4e0b;&#x6ca1;&#x95ee;&#x9898;</note>
  121 + <xloc>721</xloc>
  122 + <yloc>762</yloc>
  123 + <width>333</width>
  124 + <heigth>90</heigth>
  125 + <fontname>YaHei Consolas Hybrid</fontname>
  126 + <fontsize>12</fontsize>
  127 + <fontbold>N</fontbold>
  128 + <fontitalic>N</fontitalic>
  129 + <fontcolorred>0</fontcolorred>
  130 + <fontcolorgreen>0</fontcolorgreen>
  131 + <fontcolorblue>0</fontcolorblue>
  132 + <backgroundcolorred>255</backgroundcolorred>
  133 + <backgroundcolorgreen>205</backgroundcolorgreen>
  134 + <backgroundcolorblue>112</backgroundcolorblue>
  135 + <bordercolorred>100</bordercolorred>
  136 + <bordercolorgreen>100</bordercolorgreen>
  137 + <bordercolorblue>100</bordercolorblue>
  138 + <drawshadow>Y</drawshadow>
  139 + </notepad>
  140 + <notepad>
  141 + <note>&#x51fa;&#x573a;&#x73ed;&#x6b21;&#xff0c;&#x65b9;&#x5411;&#x6709;&#x65f6;&#x786e;&#x5b9a;&#x4e0d;&#x51c6;&#xff0c;&#xa;&#x7a7a;&#x7684;&#x60c5;&#x51b5;&#x4e0b;&#x8bbe;&#x5b9a;&#x4e3a;0&#xff08;&#x4e0a;&#x884c;&#xff09;</note>
  142 + <xloc>120</xloc>
  143 + <yloc>1016</yloc>
  144 + <width>178</width>
  145 + <heigth>42</heigth>
  146 + <fontname>YaHei Consolas Hybrid</fontname>
  147 + <fontsize>12</fontsize>
  148 + <fontbold>N</fontbold>
  149 + <fontitalic>N</fontitalic>
  150 + <fontcolorred>0</fontcolorred>
  151 + <fontcolorgreen>0</fontcolorgreen>
  152 + <fontcolorblue>0</fontcolorblue>
  153 + <backgroundcolorred>255</backgroundcolorred>
  154 + <backgroundcolorgreen>205</backgroundcolorgreen>
  155 + <backgroundcolorblue>112</backgroundcolorblue>
  156 + <bordercolorred>100</bordercolorred>
  157 + <bordercolorgreen>100</bordercolorgreen>
  158 + <bordercolorblue>100</bordercolorblue>
  159 + <drawshadow>Y</drawshadow>
  160 + </notepad>
  161 + <notepad>
  162 + <note>&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#xff0c;&#x65b9;&#x5411;&#x6709;&#x65f6;&#x786e;&#x5b9a;&#x4e0d;&#x51c6;&#xff0c;&#xa;&#x7a7a;&#x7684;&#x60c5;&#x51b5;&#x4e0b;&#x8bbe;&#x5b9a;&#x4e3a;0&#xff08;&#x4e0a;&#x884c;&#xff09;</note>
  163 + <xloc>578</xloc>
  164 + <yloc>1084</yloc>
  165 + <width>178</width>
  166 + <heigth>42</heigth>
  167 + <fontname>YaHei Consolas Hybrid</fontname>
  168 + <fontsize>12</fontsize>
  169 + <fontbold>N</fontbold>
  170 + <fontitalic>N</fontitalic>
  171 + <fontcolorred>0</fontcolorred>
  172 + <fontcolorgreen>0</fontcolorgreen>
  173 + <fontcolorblue>0</fontcolorblue>
  174 + <backgroundcolorred>255</backgroundcolorred>
  175 + <backgroundcolorgreen>205</backgroundcolorgreen>
  176 + <backgroundcolorblue>112</backgroundcolorblue>
  177 + <bordercolorred>100</bordercolorred>
  178 + <bordercolorgreen>100</bordercolorgreen>
  179 + <bordercolorblue>100</bordercolorblue>
  180 + <drawshadow>Y</drawshadow>
  181 + </notepad>
  182 + </notepads>
  183 + <connection>
  184 + <name>192.168.168.1_jwgl_dw</name>
  185 + <server>192.168.168.1</server>
  186 + <type>ORACLE</type>
  187 + <access>Native</access>
  188 + <database>orcl</database>
  189 + <port>1521</port>
  190 + <username>jwgl_dw</username>
  191 + <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password>
  192 + <servername/>
  193 + <data_tablespace/>
  194 + <index_tablespace/>
  195 + <attributes>
  196 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  197 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  198 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  199 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  200 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  201 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  202 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  203 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  204 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  205 + </attributes>
  206 + </connection>
  207 + <connection>
  208 + <name>bus_control_variable</name>
  209 + <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
  210 + <type>MYSQL</type>
  211 + <access>Native</access>
  212 + <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
  213 + <port>3306</port>
  214 + <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
  215 + <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
  216 + <servername/>
  217 + <data_tablespace/>
  218 + <index_tablespace/>
  219 + <attributes>
  220 + <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
  221 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  222 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  223 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  224 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  225 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  226 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  227 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  228 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  229 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  230 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  231 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  232 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  233 + </attributes>
  234 + </connection>
  235 + <connection>
  236 + <name>bus_control_&#x516c;&#x53f8;_201</name>
  237 + <server>localhost</server>
  238 + <type>MYSQL</type>
  239 + <access>Native</access>
  240 + <database>control</database>
  241 + <port>3306</port>
  242 + <username>root</username>
  243 + <password>Encrypted </password>
  244 + <servername/>
  245 + <data_tablespace/>
  246 + <index_tablespace/>
  247 + <attributes>
  248 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  249 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  250 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  251 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  252 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  253 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  254 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  255 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  256 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  257 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  258 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  259 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  260 + </attributes>
  261 + </connection>
  262 + <connection>
  263 + <name>bus_control_&#x672c;&#x673a;</name>
  264 + <server>localhost</server>
  265 + <type>MYSQL</type>
  266 + <access>Native</access>
  267 + <database>control</database>
  268 + <port>3306</port>
  269 + <username>root</username>
  270 + <password>Encrypted </password>
  271 + <servername/>
  272 + <data_tablespace/>
  273 + <index_tablespace/>
  274 + <attributes>
  275 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  276 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  277 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  278 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  279 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  280 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  281 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  282 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  283 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  284 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  285 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  286 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  287 + </attributes>
  288 + </connection>
  289 + <connection>
  290 + <name>xlab_mysql_youle</name>
  291 + <server>101.231.124.8</server>
  292 + <type>MYSQL</type>
  293 + <access>Native</access>
  294 + <database>xlab_youle</database>
  295 + <port>45687</port>
  296 + <username>xlab-youle</username>
  297 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
  298 + <servername/>
  299 + <data_tablespace/>
  300 + <index_tablespace/>
  301 + <attributes>
  302 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  303 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  304 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  305 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  306 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  307 + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
  308 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  309 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  310 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  311 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  312 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  313 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  314 + </attributes>
  315 + </connection>
  316 + <connection>
  317 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  318 + <server>localhost</server>
  319 + <type>MYSQL</type>
  320 + <access>Native</access>
  321 + <database>xlab_youle</database>
  322 + <port>3306</port>
  323 + <username>root</username>
  324 + <password>Encrypted </password>
  325 + <servername/>
  326 + <data_tablespace/>
  327 + <index_tablespace/>
  328 + <attributes>
  329 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  330 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  331 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  332 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  333 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  334 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  335 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  336 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  337 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  338 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  339 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  340 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  341 + </attributes>
  342 + </connection>
  343 + <connection>
  344 + <name>xlab_youle</name>
  345 + <server/>
  346 + <type>MYSQL</type>
  347 + <access>JNDI</access>
  348 + <database>xlab_youle</database>
  349 + <port>1521</port>
  350 + <username/>
  351 + <password>Encrypted </password>
  352 + <servername/>
  353 + <data_tablespace/>
  354 + <index_tablespace/>
  355 + <attributes>
  356 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  357 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  358 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  359 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  360 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  361 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  362 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  363 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  364 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  365 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  366 + </attributes>
  367 + </connection>
  368 + <order>
  369 + <hop> <from>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</from><to>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</to><enabled>Y</enabled> </hop>
  370 + <hop> <from>&#x6dfb;&#x52a0;&#x53d1;&#x8f66;&#x987a;&#x5e8f;&#x53f7;</from><to>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;&#xff08;&#x53d1;&#x8f66;&#x65f6;&#x95f4;&#x4e3a;&#x7a7a;&#xff09;</to><enabled>Y</enabled> </hop>
  371 + <hop> <from>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;&#xff08;&#x53d1;&#x8f66;&#x65f6;&#x95f4;&#x4e3a;&#x7a7a;&#xff09;</from><to>&#x6dfb;&#x52a0;&#x5bf9;&#x5e94;&#x73ed;&#x6b21;&#x6570;</to><enabled>Y</enabled> </hop>
  372 + <hop> <from>&#x6dfb;&#x52a0;&#x5bf9;&#x5e94;&#x73ed;&#x6b21;&#x6570;</from><to>&#x5904;&#x7406;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
  373 + <hop> <from>&#x5904;&#x7406;&#x6570;&#x636e;</from><to>&#x5206;&#x7ec4;&#x5404;&#x4e2a;&#x8def;&#x724c;&#x7684;&#x7ad9;</to><enabled>Y</enabled> </hop>
  374 + <hop> <from>&#x67e5;&#x627e;&#x65f6;&#x523b;&#x8868;&#x57fa;&#x7840;&#x4fe1;&#x606f;&#x5173;&#x8054;</from><to>&#x67e5;&#x627e;&#x8def;&#x724c;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
  375 + <hop> <from>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</from><to>&#x67e5;&#x627e;&#x65f6;&#x523b;&#x8868;&#x57fa;&#x7840;&#x4fe1;&#x606f;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
  376 + <hop> <from>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178;</from><to>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178;</to><enabled>Y</enabled> </hop>
  377 + <hop> <from>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178; 2</from><to>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 2</to><enabled>Y</enabled> </hop>
  378 + <hop> <from>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178; 3</from><to>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 3</to><enabled>Y</enabled> </hop>
  379 + <hop> <from>&#x5339;&#x914d;&#x4e0a;&#x4e0b;&#x884c;&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</from><to>&#x7c7b;&#x578b;&#x4fee;&#x6b63;</to><enabled>Y</enabled> </hop>
  380 + <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;1</from><to>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</to><enabled>Y</enabled> </hop>
  381 + <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;1</from><to>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
  382 + <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</from><to>&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
  383 + <hop> <from>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</from><to>&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
  384 + <hop> <from>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x6240;&#x6709;&#x4e0a;&#x4e0b;&#x884c;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</from><to>&#x5339;&#x914d;&#x4e0a;&#x4e0b;&#x884c;&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
  385 + <hop> <from>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;</from><to>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178;</to><enabled>Y</enabled> </hop>
  386 + <hop> <from>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</from><to>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
  387 + <hop> <from>&#x6b63;&#x5e38;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</from><to>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</to><enabled>Y</enabled> </hop>
  388 + <hop> <from>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6570;&#x636e;</from><to>&#x6b63;&#x5e38;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
  389 + <hop> <from>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178;</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x6240;&#x6709;&#x4e0a;&#x4e0b;&#x884c;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
  390 + <hop> <from>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 2</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x51fa;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
  391 + <hop> <from>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 3</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x8fdb;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
  392 + <hop> <from>&#x67e5;&#x627e;&#x8def;&#x724c;&#x5173;&#x8054;</from><to>&#x8ba1;&#x7b97;&#x73ed;&#x6b21;&#x7c7b;&#x578b;</to><enabled>Y</enabled> </hop>
  393 + <hop> <from>&#x8ba1;&#x7b97;&#x73ed;&#x6b21;&#x7c7b;&#x578b;</from><to>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;1</to><enabled>Y</enabled> </hop>
  394 + <hop> <from>&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</from><to>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;1</to><enabled>Y</enabled> </hop>
  395 + <hop> <from>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;1</from><to>&#x51fa;&#x573a;&#x73ed;&#x6b21;_&#x786e;&#x5b9a;&#x7ec8;&#x70b9;&#x7ad9;&#x540d;&#x5b57;</to><enabled>Y</enabled> </hop>
  396 + <hop> <from>&#x51fa;&#x573a;&#x73ed;&#x6b21;_&#x786e;&#x5b9a;&#x7ec8;&#x70b9;&#x7ad9;&#x540d;&#x5b57;</from><to>&#x67e5;&#x627e;&#x51fa;&#x573a;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</to><enabled>Y</enabled> </hop>
  397 + <hop> <from>&#x67e5;&#x627e;&#x51fa;&#x573a;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</from><to>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178; 2</to><enabled>Y</enabled> </hop>
  398 + <hop> <from>&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</from><to>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;2</to><enabled>Y</enabled> </hop>
  399 + <hop> <from>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;2</from><to>&#x8fdb;&#x573a;&#x73ed;&#x6b21;_&#x786e;&#x5b9a;&#x8d77;&#x70b9;&#x7ad9;&#x540d;&#x5b57;</to><enabled>Y</enabled> </hop>
  400 + <hop> <from>&#x8fdb;&#x573a;&#x73ed;&#x6b21;_&#x786e;&#x5b9a;&#x8d77;&#x70b9;&#x7ad9;&#x540d;&#x5b57;</from><to>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ebf;&#x8def;&#x65b9;&#x5411;</to><enabled>Y</enabled> </hop>
  401 + <hop> <from>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ebf;&#x8def;&#x65b9;&#x5411;</from><to>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ec8;&#x70b9;&#x7ad9;&#xff0c;&#x5e76;&#x4f5c;&#x4e3a;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x7684;&#x8d77;&#x70b9;&#x7ad9;</to><enabled>Y</enabled> </hop>
  402 + <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x6dfb;&#x52a0;&#x53d1;&#x8f66;&#x987a;&#x5e8f;&#x53f7;</to><enabled>Y</enabled> </hop>
  403 + <hop> <from>&#x5206;&#x7ec4;&#x5404;&#x4e2a;&#x8def;&#x724c;&#x7684;&#x7ad9;</from><to>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</to><enabled>Y</enabled> </hop>
  404 + <hop> <from>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;&#xff0c;&#x7ebf;&#x8def;&#x540d;&#x5b57;&#xff0c;&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</from><to>&#x8bb0;&#x5f55;&#x5173;&#x8054; &#x28;&#x7b1b;&#x5361;&#x5c14;&#x8f93;&#x51fa;&#x29;</to><enabled>Y</enabled> </hop>
  405 + <hop> <from>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</from><to>&#x8bb0;&#x5f55;&#x5173;&#x8054; &#x28;&#x7b1b;&#x5361;&#x5c14;&#x8f93;&#x51fa;&#x29;</to><enabled>Y</enabled> </hop>
  406 + <hop> <from>&#x8bb0;&#x5f55;&#x5173;&#x8054; &#x28;&#x7b1b;&#x5361;&#x5c14;&#x8f93;&#x51fa;&#x29;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
  407 + <hop> <from>&#x7c7b;&#x578b;&#x4fee;&#x6b63;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo_detail</to><enabled>Y</enabled> </hop>
  408 + <hop> <from>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ec8;&#x70b9;&#x7ad9;&#xff0c;&#x5e76;&#x4f5c;&#x4e3a;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x7684;&#x8d77;&#x70b9;&#x7ad9;</from><to>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</to><enabled>Y</enabled> </hop>
  409 + <hop> <from>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</from><to>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178; 3</to><enabled>Y</enabled> </hop>
  410 + <hop> <from>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x51fa;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</from><to>&#x5339;&#x914d;&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
  411 + <hop> <from>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x8fdb;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</from><to>&#x5339;&#x914d;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</to><enabled>Y</enabled> </hop>
  412 + <hop> <from>&#x5339;&#x914d;&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</from><to>&#x4e0a;&#x4e0b;&#x884c;NULL&#x5224;&#x5b9a;</to><enabled>Y</enabled> </hop>
  413 + <hop> <from>&#x4e0a;&#x4e0b;&#x884c;NULL&#x5224;&#x5b9a;</from><to>&#x7c7b;&#x578b;&#x4fee;&#x6b63; 2</to><enabled>Y</enabled> </hop>
  414 + <hop> <from>&#x7c7b;&#x578b;&#x4fee;&#x6b63; 2</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo_detail 2</to><enabled>Y</enabled> </hop>
  415 + <hop> <from>&#x5339;&#x914d;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</from><to>&#x4e0a;&#x4e0b;&#x884c;&#x5224;&#x5b9a; 2</to><enabled>Y</enabled> </hop>
  416 + <hop> <from>&#x4e0a;&#x4e0b;&#x884c;&#x5224;&#x5b9a; 2</from><to>&#x7c7b;&#x578b;&#x4fee;&#x6b63; 3</to><enabled>Y</enabled> </hop>
  417 + <hop> <from>&#x7c7b;&#x578b;&#x4fee;&#x6b63; 3</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo_detail 3</to><enabled>Y</enabled> </hop>
  418 + </order>
  419 + <step>
  420 + <name>&#x4e0a;&#x4e0b;&#x884c;NULL&#x5224;&#x5b9a;</name>
  421 + <type>IfNull</type>
  422 + <description/>
  423 + <distribute>Y</distribute>
  424 + <custom_distribution/>
  425 + <copies>1</copies>
  426 + <partitioning>
  427 + <method>none</method>
  428 + <schema_name/>
  429 + </partitioning>
  430 + <replaceAllByValue/>
  431 + <replaceAllMask/>
  432 + <selectFields>Y</selectFields>
  433 + <selectValuesType>N</selectValuesType>
  434 + <setEmptyStringAll>N</setEmptyStringAll>
  435 + <valuetypes>
  436 + </valuetypes>
  437 + <fields>
  438 + <field>
  439 + <name>sxx</name>
  440 + <value>0</value>
  441 + <mask/>
  442 + <set_empty_string>N</set_empty_string>
  443 + </field>
  444 + </fields>
  445 + <cluster_schema/>
  446 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  447 + <xloc>230</xloc>
  448 + <yloc>946</yloc>
  449 + <draw>Y</draw>
  450 + </GUI>
  451 + </step>
  452 +
  453 + <step>
  454 + <name>&#x4e0a;&#x4e0b;&#x884c;&#x5224;&#x5b9a; 2</name>
  455 + <type>IfNull</type>
  456 + <description/>
  457 + <distribute>Y</distribute>
  458 + <custom_distribution/>
  459 + <copies>1</copies>
  460 + <partitioning>
  461 + <method>none</method>
  462 + <schema_name/>
  463 + </partitioning>
  464 + <replaceAllByValue/>
  465 + <replaceAllMask/>
  466 + <selectFields>Y</selectFields>
  467 + <selectValuesType>N</selectValuesType>
  468 + <setEmptyStringAll>N</setEmptyStringAll>
  469 + <valuetypes>
  470 + </valuetypes>
  471 + <fields>
  472 + <field>
  473 + <name>sxx2</name>
  474 + <value>0</value>
  475 + <mask/>
  476 + <set_empty_string>N</set_empty_string>
  477 + </field>
  478 + </fields>
  479 + <cluster_schema/>
  480 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  481 + <xloc>804</xloc>
  482 + <yloc>1081</yloc>
  483 + <draw>Y</draw>
  484 + </GUI>
  485 + </step>
  486 +
  487 + <step>
  488 + <name>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178;</name>
  489 + <type>ValueMapper</type>
  490 + <description/>
  491 + <distribute>Y</distribute>
  492 + <custom_distribution/>
  493 + <copies>1</copies>
  494 + <partitioning>
  495 + <method>none</method>
  496 + <schema_name/>
  497 + </partitioning>
  498 + <field_to_use>sxx</field_to_use>
  499 + <target_field>sxx_desc</target_field>
  500 + <non_match_default/>
  501 + <fields>
  502 + <field>
  503 + <source_value>0</source_value>
  504 + <target_value>&#x4e0a;&#x884c;</target_value>
  505 + </field>
  506 + <field>
  507 + <source_value>1</source_value>
  508 + <target_value>&#x4e0b;&#x884c;</target_value>
  509 + </field>
  510 + </fields>
  511 + <cluster_schema/>
  512 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  513 + <xloc>147</xloc>
  514 + <yloc>403</yloc>
  515 + <draw>Y</draw>
  516 + </GUI>
  517 + </step>
  518 +
  519 + <step>
  520 + <name>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178; 2</name>
  521 + <type>ValueMapper</type>
  522 + <description/>
  523 + <distribute>Y</distribute>
  524 + <custom_distribution/>
  525 + <copies>1</copies>
  526 + <partitioning>
  527 + <method>none</method>
  528 + <schema_name/>
  529 + </partitioning>
  530 + <field_to_use>sxx</field_to_use>
  531 + <target_field>sxx_desc</target_field>
  532 + <non_match_default/>
  533 + <fields>
  534 + <field>
  535 + <source_value>0</source_value>
  536 + <target_value>&#x4e0a;&#x884c;</target_value>
  537 + </field>
  538 + <field>
  539 + <source_value>1</source_value>
  540 + <target_value>&#x4e0b;&#x884c;</target_value>
  541 + </field>
  542 + </fields>
  543 + <cluster_schema/>
  544 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  545 + <xloc>331</xloc>
  546 + <yloc>598</yloc>
  547 + <draw>Y</draw>
  548 + </GUI>
  549 + </step>
  550 +
  551 + <step>
  552 + <name>&#x4e0a;&#x4e0b;&#x884c;&#x5b57;&#x5178; 3</name>
  553 + <type>ValueMapper</type>
  554 + <description/>
  555 + <distribute>Y</distribute>
  556 + <custom_distribution/>
  557 + <copies>1</copies>
  558 + <partitioning>
  559 + <method>none</method>
  560 + <schema_name/>
  561 + </partitioning>
  562 + <field_to_use>sxx</field_to_use>
  563 + <target_field>sxx_desc</target_field>
  564 + <non_match_default/>
  565 + <fields>
  566 + <field>
  567 + <source_value>0</source_value>
  568 + <target_value>&#x4e0a;&#x884c;</target_value>
  569 + </field>
  570 + <field>
  571 + <source_value>1</source_value>
  572 + <target_value>&#x4e0b;&#x884c;</target_value>
  573 + </field>
  574 + </fields>
  575 + <cluster_schema/>
  576 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  577 + <xloc>553</xloc>
  578 + <yloc>859</yloc>
  579 + <draw>Y</draw>
  580 + </GUI>
  581 + </step>
  582 +
  583 + <step>
  584 + <name>&#x51fa;&#x573a;&#x73ed;&#x6b21;_&#x786e;&#x5b9a;&#x7ec8;&#x70b9;&#x7ad9;&#x540d;&#x5b57;</name>
  585 + <type>ScriptValueMod</type>
  586 + <description/>
  587 + <distribute>Y</distribute>
  588 + <custom_distribution/>
  589 + <copies>1</copies>
  590 + <partitioning>
  591 + <method>none</method>
  592 + <schema_name/>
  593 + </partitioning>
  594 + <compatible>N</compatible>
  595 + <optimizationLevel>9</optimizationLevel>
  596 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  597 + <jsScript_name>Script 1</jsScript_name>
  598 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x6dfb;&#x52a0;&#x7ad9;&#x70b9;&#x6807;&#x8bc6;&#xa;var cc_groups &#x3d; qdzgroups.split&#x28;&#x22;,&#x22;&#x29;&#x3b; &#x2f;&#x2f; &#x6240;&#x6709;&#x73ed;&#x6b21;&#x8d77;&#x70b9;&#x7ad9;&#x6570;&#x7ec4;&#xa;var zdzname &#x3d; cc_groups&#x5b;gno&#x5d;&#x3b; &#x2f;&#x2f; &#x51fa;&#x573a;&#x73ed;&#x6b21;&#x7684;&#x7ec8;&#x70b9;&#x7ad9;&#x662f;&#x4e0b;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x8d77;&#x59cb;&#x7ad9;&#xa;var endZdtype &#x3d; &#x27;E&#x27;&#x3b;&#xa;&#xa;var destory &#x3d; 0&#x3b; &#x2f;&#x2f; &#x672a;&#x64a4;&#x9500;flag</jsScript_script>
  599 + </jsScript> </jsScripts> <fields> <field> <name>zdzname</name>
  600 + <rename>zdzname</rename>
  601 + <type>String</type>
  602 + <length>-1</length>
  603 + <precision>-1</precision>
  604 + <replace>N</replace>
  605 + </field> <field> <name>endZdtype</name>
  606 + <rename>endZdtype</rename>
  607 + <type>String</type>
  608 + <length>-1</length>
  609 + <precision>-1</precision>
  610 + <replace>N</replace>
  611 + </field> <field> <name>destory</name>
  612 + <rename>destory</rename>
  613 + <type>Integer</type>
  614 + <length>-1</length>
  615 + <precision>-1</precision>
  616 + <replace>N</replace>
  617 + </field> </fields> <cluster_schema/>
  618 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  619 + <xloc>575</xloc>
  620 + <yloc>502</yloc>
  621 + <draw>Y</draw>
  622 + </GUI>
  623 + </step>
  624 +
  625 + <step>
  626 + <name>&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</name>
  627 + <type>Dummy</type>
  628 + <description/>
  629 + <distribute>Y</distribute>
  630 + <custom_distribution/>
  631 + <copies>1</copies>
  632 + <partitioning>
  633 + <method>none</method>
  634 + <schema_name/>
  635 + </partitioning>
  636 + <cluster_schema/>
  637 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  638 + <xloc>869</xloc>
  639 + <yloc>504</yloc>
  640 + <draw>Y</draw>
  641 + </GUI>
  642 + </step>
  643 +
  644 + <step>
  645 + <name>&#x5206;&#x7ec4;&#x5404;&#x4e2a;&#x8def;&#x724c;&#x7684;&#x7ad9;</name>
  646 + <type>GroupBy</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 + <all_rows>Y</all_rows>
  656 + <ignore_aggregate>N</ignore_aggregate>
  657 + <field_ignore/>
  658 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  659 + <prefix>grp</prefix>
  660 + <add_linenr>Y</add_linenr>
  661 + <linenr_fieldname>gno</linenr_fieldname>
  662 + <give_back_row>N</give_back_row>
  663 + <group>
  664 + <field>
  665 + <name>lp</name>
  666 + </field>
  667 + </group>
  668 + <fields>
  669 + <field>
  670 + <aggregate>qdzgroups</aggregate>
  671 + <subject>qdzname</subject>
  672 + <type>CONCAT_STRING</type>
  673 + <valuefield>,</valuefield>
  674 + </field>
  675 + </fields>
  676 + <cluster_schema/>
  677 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  678 + <xloc>892</xloc>
  679 + <yloc>44</yloc>
  680 + <draw>Y</draw>
  681 + </GUI>
  682 + </step>
  683 +
  684 + <step>
  685 + <name>&#x5339;&#x914d;&#x4e0a;&#x4e0b;&#x884c;&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
  686 + <type>ScriptValueMod</type>
  687 + <description/>
  688 + <distribute>Y</distribute>
  689 + <custom_distribution/>
  690 + <copies>1</copies>
  691 + <partitioning>
  692 + <method>none</method>
  693 + <schema_name/>
  694 + </partitioning>
  695 + <compatible>N</compatible>
  696 + <optimizationLevel>9</optimizationLevel>
  697 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  698 + <jsScript_name>Script 1</jsScript_name>
  699 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var jhlc&#x3b; &#x2f;&#x2f; &#x8ba1;&#x5212;&#x91cc;&#x7a0b;&#xa;var bcsj&#x3b; &#x2f;&#x2f; &#x73ed;&#x6b21;&#x65f6;&#x95f4;&#xa;&#xa;&#x2f;&#x2f; &#x65f6;&#x95f4;&#x8303;&#x56f4;&#x6b63;&#x5219;&#x8868;&#x8fbe;&#x5f0f;&#xa;var timeRex &#x3d; &#x2f;&#x5e;&#x28;&#x5b;01&#x5d;&#x3f;&#x5b;0-9&#x5d;&#x7c;2&#x5b;0-3&#x5d;&#x29;&#x3a;&#x5b;0-5&#x5d;&#x5b;0-9&#x5d;&#x24;&#x2f;&#x3b;&#xa;&#x2f;&#x2f; &#x53d1;&#x8f66;&#x65f6;&#x95f4;&#x8f6c;&#x6362;&#x6210;&#x65e5;&#x671f;&#xa;var fcsj_hour &#x3d; str2num&#x28;sendtime_calcu.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa;var fcsj_min &#x3d; str2num&#x28;sendtime_calcu.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa;var fcsj_date &#x3d; new Date&#x28;2000,1,1,fcsj_hour,fcsj_min,0&#x29;&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x5224;&#x5b9a;&#x662f;&#x5426;&#x65e9;&#x9ad8;&#x5cf0;&#xa;var isZgf &#x3d; false&#x3b;&#xa;if &#x28;timeRex.test&#x28;early_start_time&#x29; &#x26;&#x26; timeRex.test&#x28;early_end_time&#x29; &#x26;&#x26; early_up_time &#x21;&#x3d; null &#x26;&#x26; early_down_time &#x21;&#x3d; null&#x29; &#x7b;&#xa; var early_s_hour &#x3d; str2num&#x28;early_start_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_s_min &#x3d; str2num&#x28;early_start_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_s_date &#x3d; new Date&#x28;2000,1,1,early_s_hour,early_s_min,0&#x29;&#x3b;&#xa;&#xa; var early_e_hour &#x3d; str2num&#x28;early_end_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_e_min &#x3d; str2num&#x28;early_end_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_e_date &#x3d; new Date&#x28;2000,1,1,early_e_hour,early_e_min,0&#x29;&#x3b;&#xa;&#xa; if &#x28;fcsj_date &#x3e;&#x3d; early_s_date &#x26;&#x26; fcsj_date &#x3c;&#x3d; early_e_date&#x29; &#x7b;&#xa; isZgf &#x3d; true&#x3b;&#xa; &#x7d;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x5224;&#x5b9a;&#x662f;&#x5426;&#x665a;&#x9ad8;&#x5cf0;&#xa;var isWgf &#x3d; false&#x3b;&#xa;if &#x28;timeRex.test&#x28;late_start_time&#x29; &#x26;&#x26; timeRex.test&#x28;late_end_time&#x29; &#x26;&#x26; late_up_time &#x21;&#x3d; null &#x26;&#x26; late_down_time &#x21;&#x3d; null&#x29; &#x7b;&#xa; var late_s_hour &#x3d; str2num&#x28;late_start_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_s_min &#x3d; str2num&#x28;late_start_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_s_date &#x3d; new Date&#x28;2000,1,1,late_s_hour,late_s_min,0&#x29;&#x3b;&#xa;&#xa; var late_e_hour &#x3d; str2num&#x28;late_end_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_e_min &#x3d; str2num&#x28;late_end_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_e_date &#x3d; new Date&#x28;2000,1,1,late_e_hour,late_e_min,0&#x29;&#x3b;&#xa;&#xa; if &#x28;fcsj_date &#x3e;&#x3d; late_s_date &#x26;&#x26; fcsj_date &#x3c;&#x3d; late_e_date&#x29; &#x7b;&#xa; isWgf &#x3d; true&#x3b;&#xa; &#x7d;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x5224;&#x5b9a;&#x662f;&#x5426;&#x665a;&#x9ad8;&#x5cf0;&#xa;&#xa;if &#x28;sxx &#x3d;&#x3d; 0&#x29; &#x7b; &#x2f;&#x2f; &#x4e0a;&#x884c;&#xa; if &#x28;isZgf&#x29; &#x7b;&#xa; jhlc &#x3d; up_mileage&#x3b;&#xa; bcsj &#x3d; early_up_time &#x3f; early_up_time &#x3a; up_travel_time&#x3b;&#xa; &#x7d; else if &#x28;isWgf&#x29; &#x7b;&#xa; jhlc &#x3d; up_mileage&#x3b;&#xa; bcsj &#x3d; late_up_time &#x3f; late_up_time &#x3a; up_travel_time&#x3b;&#xa; &#x7d; else &#x7b;&#xa; jhlc &#x3d; up_mileage&#x3b;&#xa; bcsj &#x3d; up_travel_time&#x3b;&#xa; &#x7d;&#xa;&#x7d; else &#x7b; &#x2f;&#x2f; sxx &#x3d;&#x3d; 1 &#x4e0b;&#x884c;&#xa; if &#x28;isZgf&#x29; &#x7b;&#xa; jhlc &#x3d; down_mileage&#x3b;&#xa; bcsj &#x3d; early_down_time &#x3f; early_down_time &#x3a; down_travel_time&#x3b;&#xa; &#x7d; else if &#x28;isWgf&#x29; &#x7b;&#xa; jhlc &#x3d; down_mileage&#x3b;&#xa; bcsj &#x3d; late_down_time &#x3f; late_down_time &#x3a; down_travel_time&#x3b;&#xa; &#x7d; else &#x7b;&#xa; jhlc &#x3d; down_mileage&#x3b;&#xa; bcsj &#x3d; down_travel_time&#x3b;&#xa; &#x7d;&#xa;&#x7d;&#xa;&#xa;</jsScript_script>
  700 + </jsScript> </jsScripts> <fields> <field> <name>jhlc</name>
  701 + <rename>jhlc</rename>
  702 + <type>String</type>
  703 + <length>-1</length>
  704 + <precision>-1</precision>
  705 + <replace>N</replace>
  706 + </field> <field> <name>bcsj</name>
  707 + <rename>bcsj</rename>
  708 + <type>String</type>
  709 + <length>-1</length>
  710 + <precision>-1</precision>
  711 + <replace>N</replace>
  712 + </field> </fields> <cluster_schema/>
  713 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  714 + <xloc>148</xloc>
  715 + <yloc>674</yloc>
  716 + <draw>Y</draw>
  717 + </GUI>
  718 + </step>
  719 +
  720 + <step>
  721 + <name>&#x5339;&#x914d;&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
  722 + <type>ScriptValueMod</type>
  723 + <description/>
  724 + <distribute>Y</distribute>
  725 + <custom_distribution/>
  726 + <copies>1</copies>
  727 + <partitioning>
  728 + <method>none</method>
  729 + <schema_name/>
  730 + </partitioning>
  731 + <compatible>N</compatible>
  732 + <optimizationLevel>9</optimizationLevel>
  733 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  734 + <jsScript_name>Script 1</jsScript_name>
  735 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var out_mileage&#x3b; &#x2f;&#x2f; &#x51fa;&#x573a;&#x8ba1;&#x5212;&#x91cc;&#x7a0b;&#xa;var out_time&#x3b; &#x2f;&#x2f; &#x51fa;&#x573a;&#x8ba1;&#x5212;&#x65f6;&#x95f4;&#xa;&#xa;if &#x28;sxx &#x3d;&#x3d; 0&#x29; &#x7b; &#x2f;&#x2f; &#x4e0a;&#x884c;&#xa; out_mileage &#x3d; up_out_mileage&#x3b;&#xa; out_time &#x3d; up_out_timer&#x3b;&#xa;&#x7d; else &#x7b; &#x2f;&#x2f; sxx &#x3d;&#x3d; 1 &#x4e0b;&#x884c;&#xa; out_mileage &#x3d; down_out_mileage&#x3b;&#xa; out_time &#x3d; down_out_timer&#x3b;&#xa;&#x7d;&#xa;&#xa;&#xa;&#xa;</jsScript_script>
  736 + </jsScript> </jsScripts> <fields> <field> <name>out_mileage</name>
  737 + <rename>out_mileage</rename>
  738 + <type>String</type>
  739 + <length>-1</length>
  740 + <precision>-1</precision>
  741 + <replace>N</replace>
  742 + </field> <field> <name>out_time</name>
  743 + <rename>out_time</rename>
  744 + <type>String</type>
  745 + <length>-1</length>
  746 + <precision>-1</precision>
  747 + <replace>N</replace>
  748 + </field> </fields> <cluster_schema/>
  749 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  750 + <xloc>336</xloc>
  751 + <yloc>862</yloc>
  752 + <draw>Y</draw>
  753 + </GUI>
  754 + </step>
  755 +
  756 + <step>
  757 + <name>&#x5339;&#x914d;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
  758 + <type>ScriptValueMod</type>
  759 + <description/>
  760 + <distribute>Y</distribute>
  761 + <custom_distribution/>
  762 + <copies>1</copies>
  763 + <partitioning>
  764 + <method>none</method>
  765 + <schema_name/>
  766 + </partitioning>
  767 + <compatible>N</compatible>
  768 + <optimizationLevel>9</optimizationLevel>
  769 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  770 + <jsScript_name>Script 1</jsScript_name>
  771 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var parade_mileage&#x3b; &#x2f;&#x2f; &#x8fdb;&#x573a;&#x8ba1;&#x5212;&#x91cc;&#x7a0b;&#xa;var parade_time&#x3b; &#x2f;&#x2f; &#x8fdb;&#x573a;&#x8ba1;&#x5212;&#x65f6;&#x95f4;&#xa;&#xa;if &#x28;sxx2 &#x3d;&#x3d; 0&#x29; &#x7b; &#x2f;&#x2f; &#x4e0a;&#x884c;&#xa; parade_mileage &#x3d; up_in_mileage&#x3b;&#xa; parade_time &#x3d; up_in_timer&#x3b;&#xa;&#x7d; else &#x7b; &#x2f;&#x2f; sxx &#x3d;&#x3d; 1 &#x4e0b;&#x884c;&#xa; parade_mileage &#x3d; down_in_mileage&#x3b;&#xa; parade_time &#x3d; down_in_timer&#x3b;&#xa;&#x7d;&#xa;&#xa;&#xa;&#xa;</jsScript_script>
  772 + </jsScript> </jsScripts> <fields> <field> <name>parade_mileage</name>
  773 + <rename>parade_mileage</rename>
  774 + <type>String</type>
  775 + <length>-1</length>
  776 + <precision>-1</precision>
  777 + <replace>N</replace>
  778 + </field> <field> <name>parade_time</name>
  779 + <rename>parade_time</rename>
  780 + <type>String</type>
  781 + <length>-1</length>
  782 + <precision>-1</precision>
  783 + <replace>N</replace>
  784 + </field> </fields> <cluster_schema/>
  785 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  786 + <xloc>726</xloc>
  787 + <yloc>1005</yloc>
  788 + <draw>Y</draw>
  789 + </GUI>
  790 + </step>
  791 +
  792 + <step>
  793 + <name>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;&#xff0c;&#x7ebf;&#x8def;&#x540d;&#x5b57;&#xff0c;&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</name>
  794 + <type>DataGrid</type>
  795 + <description/>
  796 + <distribute>Y</distribute>
  797 + <custom_distribution/>
  798 + <copies>1</copies>
  799 + <partitioning>
  800 + <method>none</method>
  801 + <schema_name/>
  802 + </partitioning>
  803 + <fields>
  804 + </fields>
  805 + <data>
  806 + <line> </line>
  807 + </data>
  808 + <cluster_schema/>
  809 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  810 + <xloc>110</xloc>
  811 + <yloc>133</yloc>
  812 + <draw>Y</draw>
  813 + </GUI>
  814 + </step>
  815 +
  816 + <step>
  817 + <name>&#x5904;&#x7406;&#x6570;&#x636e;</name>
  818 + <type>ScriptValueMod</type>
  819 + <description/>
  820 + <distribute>Y</distribute>
  821 + <custom_distribution/>
  822 + <copies>1</copies>
  823 + <partitioning>
  824 + <method>none</method>
  825 + <schema_name/>
  826 + </partitioning>
  827 + <compatible>N</compatible>
  828 + <optimizationLevel>9</optimizationLevel>
  829 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  830 + <jsScript_name>Script 1</jsScript_name>
  831 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x4f7f;&#x7528;&#x6b63;&#x5219;&#x8868;&#x8fbe;&#x5f0f;&#x53bb;&#x9664;&#x7ad9;&#x70b9;&#x540d;&#x79f0;&#x4e2d;&#x7684;&#x6570;&#x5b57;&#xa;qdzname &#x3d; qdzname.replace&#x28;&#x2f;&#x5c;d&#x2b;&#x2f;g,&#x27;&#x27;&#x29;&#x3b;&#xa;&#xa;&#x2f;&#x2f; sendtime&#x5904;&#x7406;&#xff0c;hhmm&#xff0c;hh&#x3a;mm&#xff0c;hh,mm&#xa;var sendtime_calcu&#x3b;&#xa;if &#x28;sendtime.length &#x3d;&#x3d; 5&#x29; &#x7b; &#x2f;&#x2f; &#x6700;&#x957f;&#x683c;&#x5f0f;&#xff0c;&#x5305;&#x62ec;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x7edf;&#x4e00;&#x628a;&#x5206;&#x9694;&#x7b26;&#x66ff;&#x6362;&#x6210;&#x5192;&#x53f7;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 2&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;3, 2&#x29;&#x3b;&#xa;&#x7d; else if &#x28;sendtime.length &#x3d;&#x3d; 4&#x29; &#x7b;&#xa; if &#x28;sendtime.indexOf&#x28;&#x22;&#x3a;&#x22;&#x29; &#x3e; 0&#x29; &#x7b; &#x2f;&#x2f; &#x5192;&#x53f7;&#x5206;&#x9694;&#xff0c;&#x65e0;&#x9700;&#x4fee;&#x6539;&#xa; sendtime_calcu &#x3d; sendtime&#x3b;&#xa; &#x7d; else if &#x28;sendtime.indexOf&#x28;&#x22;,&#x22;&#x29; &#x3e; 0&#x29; &#x7b; &#x2f;&#x2f; &#x9017;&#x53f7;&#x5206;&#x9694;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 1&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;2, 2&#x29;&#x3b;&#xa; &#x7d; else &#x7b; &#x2f;&#x2f; &#x65e0;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 2&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;2, 2&#x29;&#x3b;&#xa; &#x7d;&#xa;&#x7d; else if &#x28;sendtime.length &#x3d;&#x3d; 3&#x29; &#x7b; &#x2f;&#x2f; &#x65e0;&#x5206;&#x9694;&#x7b26;&#xff0c;&#x6539;&#x6210;&#x5192;&#x53f7;&#x5206;&#x9694;&#xa; sendtime_calcu &#x3d; sendtime.substr&#x28;0, 1&#x29; &#x2b; &#x22;&#x3a;&#x22; &#x2b; sendtime.substr&#x28;1, 2&#x29;&#x3b;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;&#x5206;&#x73ed;&#xa;var isfb &#x3d; 0&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x8bbe;&#x7f6e;isCanceled&#xa;var iscanceled &#x3d; 0&#x3b;</jsScript_script>
  832 + </jsScript> </jsScripts> <fields> <field> <name>qdzname</name>
  833 + <rename>qdzname</rename>
  834 + <type>String</type>
  835 + <length>-1</length>
  836 + <precision>-1</precision>
  837 + <replace>Y</replace>
  838 + </field> <field> <name>isfb</name>
  839 + <rename>isfb</rename>
  840 + <type>Integer</type>
  841 + <length>-1</length>
  842 + <precision>-1</precision>
  843 + <replace>N</replace>
  844 + </field> <field> <name>iscanceled</name>
  845 + <rename>iscanceled</rename>
  846 + <type>Integer</type>
  847 + <length>-1</length>
  848 + <precision>-1</precision>
  849 + <replace>N</replace>
  850 + </field> <field> <name>sendtime_calcu</name>
  851 + <rename>sendtime_calcu</rename>
  852 + <type>String</type>
  853 + <length>-1</length>
  854 + <precision>-1</precision>
  855 + <replace>N</replace>
  856 + </field> </fields> <cluster_schema/>
  857 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  858 + <xloc>788</xloc>
  859 + <yloc>44</yloc>
  860 + <draw>Y</draw>
  861 + </GUI>
  862 + </step>
  863 +
  864 + <step>
  865 + <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
  866 + <type>SelectValues</type>
  867 + <description/>
  868 + <distribute>Y</distribute>
  869 + <custom_distribution/>
  870 + <copies>1</copies>
  871 + <partitioning>
  872 + <method>none</method>
  873 + <schema_name/>
  874 + </partitioning>
  875 + <fields> <field> <name>&#x8def;&#x724c;</name>
  876 + <rename>lp</rename>
  877 + <length>-2</length>
  878 + <precision>-2</precision>
  879 + </field> <field> <name>&#x7ad9;&#x70b9;&#x540d;&#x79f0;</name>
  880 + <rename>qdzname</rename>
  881 + <length>-2</length>
  882 + <precision>-2</precision>
  883 + </field> <field> <name>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</name>
  884 + <rename>sendtime</rename>
  885 + <length>-2</length>
  886 + <precision>-2</precision>
  887 + </field> <select_unspecified>Y</select_unspecified>
  888 + </fields> <cluster_schema/>
  889 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  890 + <xloc>444</xloc>
  891 + <yloc>131</yloc>
  892 + <draw>Y</draw>
  893 + </GUI>
  894 + </step>
  895 +
  896 + <step>
  897 + <name>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;1</name>
  898 + <type>FilterRows</type>
  899 + <description/>
  900 + <distribute>Y</distribute>
  901 + <custom_distribution/>
  902 + <copies>1</copies>
  903 + <partitioning>
  904 + <method>none</method>
  905 + <schema_name/>
  906 + </partitioning>
  907 +<send_true_to>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6570;&#x636e;</send_true_to>
  908 +<send_false_to>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</send_false_to>
  909 + <compare>
  910 +<condition>
  911 + <negated>N</negated>
  912 + <leftvalue>bctype</leftvalue>
  913 + <function>&#x3d;</function>
  914 + <rightvalue/>
  915 + <value><name>constant</name><type>String</type><text>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</text><length>-1</length><precision>-1</precision><isnull>N</isnull><mask/></value> </condition>
  916 + </compare>
  917 + <cluster_schema/>
  918 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  919 + <xloc>860</xloc>
  920 + <yloc>401</yloc>
  921 + <draw>Y</draw>
  922 + </GUI>
  923 + </step>
  924 +
  925 + <step>
  926 + <name>&#x6309;&#x7167;&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x8fc7;&#x6ee4;&#x6570;&#x636e;2</name>
  927 + <type>FilterRows</type>
  928 + <description/>
  929 + <distribute>Y</distribute>
  930 + <custom_distribution/>
  931 + <copies>1</copies>
  932 + <partitioning>
  933 + <method>none</method>
  934 + <schema_name/>
  935 + </partitioning>
  936 +<send_true_to>&#x51fa;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</send_true_to>
  937 +<send_false_to>&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</send_false_to>
  938 + <compare>
  939 +<condition>
  940 + <negated>N</negated>
  941 + <leftvalue>bctype</leftvalue>
  942 + <function>&#x3d;</function>
  943 + <rightvalue/>
  944 + <value><name>constant</name><type>String</type><text>&#x51fa;&#x573a;</text><length>-1</length><precision>-1</precision><isnull>N</isnull><mask/></value> </condition>
  945 + </compare>
  946 + <cluster_schema/>
  947 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  948 + <xloc>995</xloc>
  949 + <yloc>503</yloc>
  950 + <draw>Y</draw>
  951 + </GUI>
  952 + </step>
  953 +
  954 + <step>
  955 + <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo_detail</name>
  956 + <type>InsertUpdate</type>
  957 + <description/>
  958 + <distribute>Y</distribute>
  959 + <custom_distribution/>
  960 + <copies>1</copies>
  961 + <partitioning>
  962 + <method>none</method>
  963 + <schema_name/>
  964 + </partitioning>
  965 + <connection>bus_control_variable</connection>
  966 + <commit>100</commit>
  967 + <update_bypassed>N</update_bypassed>
  968 + <lookup>
  969 + <schema/>
  970 + <table>bsth_c_s_ttinfo_detail</table>
  971 + <key>
  972 + <name>xlid</name>
  973 + <field>xl</field>
  974 + <condition>&#x3d;</condition>
  975 + <name2/>
  976 + </key>
  977 + <key>
  978 + <name>ttid</name>
  979 + <field>ttinfo</field>
  980 + <condition>&#x3d;</condition>
  981 + <name2/>
  982 + </key>
  983 + <key>
  984 + <name>lpid</name>
  985 + <field>lp</field>
  986 + <condition>&#x3d;</condition>
  987 + <name2/>
  988 + </key>
  989 + <key>
  990 + <name>fcno</name>
  991 + <field>fcno</field>
  992 + <condition>&#x3d;</condition>
  993 + <name2/>
  994 + </key>
  995 + <key>
  996 + <name>bcs</name>
  997 + <field>bcs</field>
  998 + <condition>&#x3d;</condition>
  999 + <name2/>
  1000 + </key>
  1001 + <value>
  1002 + <name>lp</name>
  1003 + <rename>lpid</rename>
  1004 + <update>Y</update>
  1005 + </value>
  1006 + <value>
  1007 + <name>bc_type</name>
  1008 + <rename>bctype_code</rename>
  1009 + <update>Y</update>
  1010 + </value>
  1011 + <value>
  1012 + <name>bcs</name>
  1013 + <rename>bcs</rename>
  1014 + <update>Y</update>
  1015 + </value>
  1016 + <value>
  1017 + <name>bcsj</name>
  1018 + <rename>bcsj</rename>
  1019 + <update>Y</update>
  1020 + </value>
  1021 + <value>
  1022 + <name>fcno</name>
  1023 + <rename>fcno</rename>
  1024 + <update>Y</update>
  1025 + </value>
  1026 + <value>
  1027 + <name>jhlc</name>
  1028 + <rename>jhlc</rename>
  1029 + <update>Y</update>
  1030 + </value>
  1031 + <value>
  1032 + <name>fcsj</name>
  1033 + <rename>sendtime_calcu</rename>
  1034 + <update>Y</update>
  1035 + </value>
  1036 + <value>
  1037 + <name>ttinfo</name>
  1038 + <rename>ttid</rename>
  1039 + <update>Y</update>
  1040 + </value>
  1041 + <value>
  1042 + <name>xl</name>
  1043 + <rename>xlid</rename>
  1044 + <update>Y</update>
  1045 + </value>
  1046 + <value>
  1047 + <name>qdz</name>
  1048 + <rename>qdzid</rename>
  1049 + <update>Y</update>
  1050 + </value>
  1051 + <value>
  1052 + <name>zdz</name>
  1053 + <rename>zdzid</rename>
  1054 + <update>Y</update>
  1055 + </value>
  1056 + <value>
  1057 + <name>xl_dir</name>
  1058 + <rename>sxx</rename>
  1059 + <update>Y</update>
  1060 + </value>
  1061 + <value>
  1062 + <name>isfb</name>
  1063 + <rename>isfb</rename>
  1064 + <update>Y</update>
  1065 + </value>
  1066 + <value>
  1067 + <name>qdz_code</name>
  1068 + <rename>qdzcode</rename>
  1069 + <update>Y</update>
  1070 + </value>
  1071 + <value>
  1072 + <name>qdz_name</name>
  1073 + <rename>qdzname</rename>
  1074 + <update>Y</update>
  1075 + </value>
  1076 + <value>
  1077 + <name>zdz_code</name>
  1078 + <rename>zdzcode</rename>
  1079 + <update>Y</update>
  1080 + </value>
  1081 + <value>
  1082 + <name>zdz_name</name>
  1083 + <rename>zdzname</rename>
  1084 + <update>Y</update>
  1085 + </value>
  1086 + </lookup>
  1087 + <cluster_schema/>
  1088 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1089 + <xloc>143</xloc>
  1090 + <yloc>860</yloc>
  1091 + <draw>Y</draw>
  1092 + </GUI>
  1093 + </step>
  1094 +
  1095 + <step>
  1096 + <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo_detail 2</name>
  1097 + <type>InsertUpdate</type>
  1098 + <description/>
  1099 + <distribute>Y</distribute>
  1100 + <custom_distribution/>
  1101 + <copies>1</copies>
  1102 + <partitioning>
  1103 + <method>none</method>
  1104 + <schema_name/>
  1105 + </partitioning>
  1106 + <connection>bus_control_variable</connection>
  1107 + <commit>100</commit>
  1108 + <update_bypassed>N</update_bypassed>
  1109 + <lookup>
  1110 + <schema/>
  1111 + <table>bsth_c_s_ttinfo_detail</table>
  1112 + <key>
  1113 + <name>xlid</name>
  1114 + <field>xl</field>
  1115 + <condition>&#x3d;</condition>
  1116 + <name2/>
  1117 + </key>
  1118 + <key>
  1119 + <name>ttid</name>
  1120 + <field>ttinfo</field>
  1121 + <condition>&#x3d;</condition>
  1122 + <name2/>
  1123 + </key>
  1124 + <key>
  1125 + <name>lpid</name>
  1126 + <field>lp</field>
  1127 + <condition>&#x3d;</condition>
  1128 + <name2/>
  1129 + </key>
  1130 + <key>
  1131 + <name>fcno</name>
  1132 + <field>fcno</field>
  1133 + <condition>&#x3d;</condition>
  1134 + <name2/>
  1135 + </key>
  1136 + <key>
  1137 + <name>bcs</name>
  1138 + <field>bcs</field>
  1139 + <condition>&#x3d;</condition>
  1140 + <name2/>
  1141 + </key>
  1142 + <value>
  1143 + <name>tcc</name>
  1144 + <rename>qdzid</rename>
  1145 + <update>Y</update>
  1146 + </value>
  1147 + <value>
  1148 + <name>zdz</name>
  1149 + <rename>zdzid</rename>
  1150 + <update>Y</update>
  1151 + </value>
  1152 + <value>
  1153 + <name>xl</name>
  1154 + <rename>xlid</rename>
  1155 + <update>Y</update>
  1156 + </value>
  1157 + <value>
  1158 + <name>ttinfo</name>
  1159 + <rename>ttid</rename>
  1160 + <update>Y</update>
  1161 + </value>
  1162 + <value>
  1163 + <name>xl_dir</name>
  1164 + <rename>sxx</rename>
  1165 + <update>Y</update>
  1166 + </value>
  1167 + <value>
  1168 + <name>lp</name>
  1169 + <rename>lpid</rename>
  1170 + <update>Y</update>
  1171 + </value>
  1172 + <value>
  1173 + <name>jhlc</name>
  1174 + <rename>out_mileage</rename>
  1175 + <update>Y</update>
  1176 + </value>
  1177 + <value>
  1178 + <name>fcsj</name>
  1179 + <rename>sendtime_calcu</rename>
  1180 + <update>Y</update>
  1181 + </value>
  1182 + <value>
  1183 + <name>bcsj</name>
  1184 + <rename>out_time</rename>
  1185 + <update>Y</update>
  1186 + </value>
  1187 + <value>
  1188 + <name>bcs</name>
  1189 + <rename>bcs</rename>
  1190 + <update>Y</update>
  1191 + </value>
  1192 + <value>
  1193 + <name>fcno</name>
  1194 + <rename>fcno</rename>
  1195 + <update>Y</update>
  1196 + </value>
  1197 + <value>
  1198 + <name>bc_type</name>
  1199 + <rename>bctype_code</rename>
  1200 + <update>Y</update>
  1201 + </value>
  1202 + <value>
  1203 + <name>isfb</name>
  1204 + <rename>isfb</rename>
  1205 + <update>Y</update>
  1206 + </value>
  1207 + <value>
  1208 + <name>qdz_code</name>
  1209 + <rename>qdzcode</rename>
  1210 + <update>Y</update>
  1211 + </value>
  1212 + <value>
  1213 + <name>qdz_name</name>
  1214 + <rename>tn</rename>
  1215 + <update>Y</update>
  1216 + </value>
  1217 + <value>
  1218 + <name>zdz_code</name>
  1219 + <rename>zdzcode</rename>
  1220 + <update>Y</update>
  1221 + </value>
  1222 + <value>
  1223 + <name>zdz_name</name>
  1224 + <rename>zdzname</rename>
  1225 + <update>Y</update>
  1226 + </value>
  1227 + </lookup>
  1228 + <cluster_schema/>
  1229 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1230 + <xloc>340</xloc>
  1231 + <yloc>1087</yloc>
  1232 + <draw>Y</draw>
  1233 + </GUI>
  1234 + </step>
  1235 +
  1236 + <step>
  1237 + <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo_detail 3</name>
  1238 + <type>InsertUpdate</type>
  1239 + <description/>
  1240 + <distribute>Y</distribute>
  1241 + <custom_distribution/>
  1242 + <copies>1</copies>
  1243 + <partitioning>
  1244 + <method>none</method>
  1245 + <schema_name/>
  1246 + </partitioning>
  1247 + <connection>bus_control_variable</connection>
  1248 + <commit>100</commit>
  1249 + <update_bypassed>N</update_bypassed>
  1250 + <lookup>
  1251 + <schema/>
  1252 + <table>bsth_c_s_ttinfo_detail</table>
  1253 + <key>
  1254 + <name>xlid</name>
  1255 + <field>xl</field>
  1256 + <condition>&#x3d;</condition>
  1257 + <name2/>
  1258 + </key>
  1259 + <key>
  1260 + <name>ttid</name>
  1261 + <field>ttinfo</field>
  1262 + <condition>&#x3d;</condition>
  1263 + <name2/>
  1264 + </key>
  1265 + <key>
  1266 + <name>lpid</name>
  1267 + <field>lp</field>
  1268 + <condition>&#x3d;</condition>
  1269 + <name2/>
  1270 + </key>
  1271 + <key>
  1272 + <name>fcno</name>
  1273 + <field>fcno</field>
  1274 + <condition>&#x3d;</condition>
  1275 + <name2/>
  1276 + </key>
  1277 + <key>
  1278 + <name>bcs</name>
  1279 + <field>bcs</field>
  1280 + <condition>&#x3d;</condition>
  1281 + <name2/>
  1282 + </key>
  1283 + <value>
  1284 + <name>fcno</name>
  1285 + <rename>fcno</rename>
  1286 + <update>Y</update>
  1287 + </value>
  1288 + <value>
  1289 + <name>bcs</name>
  1290 + <rename>bcs</rename>
  1291 + <update>Y</update>
  1292 + </value>
  1293 + <value>
  1294 + <name>xl</name>
  1295 + <rename>xlid</rename>
  1296 + <update>Y</update>
  1297 + </value>
  1298 + <value>
  1299 + <name>ttinfo</name>
  1300 + <rename>ttid</rename>
  1301 + <update>Y</update>
  1302 + </value>
  1303 + <value>
  1304 + <name>lp</name>
  1305 + <rename>lpid</rename>
  1306 + <update>Y</update>
  1307 + </value>
  1308 + <value>
  1309 + <name>bc_type</name>
  1310 + <rename>bctype_code</rename>
  1311 + <update>Y</update>
  1312 + </value>
  1313 + <value>
  1314 + <name>bcsj</name>
  1315 + <rename>parade_time</rename>
  1316 + <update>Y</update>
  1317 + </value>
  1318 + <value>
  1319 + <name>jhlc</name>
  1320 + <rename>parade_mileage</rename>
  1321 + <update>Y</update>
  1322 + </value>
  1323 + <value>
  1324 + <name>fcsj</name>
  1325 + <rename>sendtime_calcu</rename>
  1326 + <update>Y</update>
  1327 + </value>
  1328 + <value>
  1329 + <name>xl_dir</name>
  1330 + <rename>sxx2</rename>
  1331 + <update>Y</update>
  1332 + </value>
  1333 + <value>
  1334 + <name>qdz</name>
  1335 + <rename>qdzid</rename>
  1336 + <update>Y</update>
  1337 + </value>
  1338 + <value>
  1339 + <name>tcc</name>
  1340 + <rename>zdzid</rename>
  1341 + <update>Y</update>
  1342 + </value>
  1343 + <value>
  1344 + <name>isfb</name>
  1345 + <rename>isfb</rename>
  1346 + <update>Y</update>
  1347 + </value>
  1348 + <value>
  1349 + <name>qdz_code</name>
  1350 + <rename>qdzcode</rename>
  1351 + <update>Y</update>
  1352 + </value>
  1353 + <value>
  1354 + <name>qdz_name</name>
  1355 + <rename>qname</rename>
  1356 + <update>Y</update>
  1357 + </value>
  1358 + <value>
  1359 + <name>zdz_code</name>
  1360 + <rename>zdzcode</rename>
  1361 + <update>Y</update>
  1362 + </value>
  1363 + <value>
  1364 + <name>zdz_name</name>
  1365 + <rename>tn</rename>
  1366 + <update>Y</update>
  1367 + </value>
  1368 + </lookup>
  1369 + <cluster_schema/>
  1370 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1371 + <xloc>845</xloc>
  1372 + <yloc>899</yloc>
  1373 + <draw>Y</draw>
  1374 + </GUI>
  1375 + </step>
  1376 +
  1377 + <step>
  1378 + <name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</name>
  1379 + <type>ExcelInput</type>
  1380 + <description/>
  1381 + <distribute>N</distribute>
  1382 + <custom_distribution/>
  1383 + <copies>1</copies>
  1384 + <partitioning>
  1385 + <method>none</method>
  1386 + <schema_name/>
  1387 + </partitioning>
  1388 + <header>Y</header>
  1389 + <noempty>Y</noempty>
  1390 + <stoponempty>N</stoponempty>
  1391 + <filefield/>
  1392 + <sheetfield/>
  1393 + <sheetrownumfield/>
  1394 + <rownumfield/>
  1395 + <sheetfield/>
  1396 + <filefield/>
  1397 + <limit>0</limit>
  1398 + <encoding/>
  1399 + <add_to_result_filenames>Y</add_to_result_filenames>
  1400 + <accept_filenames>N</accept_filenames>
  1401 + <accept_field/>
  1402 + <accept_stepname/>
  1403 + <file>
  1404 + <name/>
  1405 + <filemask/>
  1406 + <exclude_filemask/>
  1407 + <file_required>N</file_required>
  1408 + <include_subfolders>N</include_subfolders>
  1409 + </file>
  1410 + <fields>
  1411 + </fields>
  1412 + <sheets>
  1413 + <sheet>
  1414 + <name/>
  1415 + <startrow>0</startrow>
  1416 + <startcol>0</startcol>
  1417 + </sheet>
  1418 + </sheets>
  1419 + <strict_types>N</strict_types>
  1420 + <error_ignored>N</error_ignored>
  1421 + <error_line_skipped>N</error_line_skipped>
  1422 + <bad_line_files_destination_directory/>
  1423 + <bad_line_files_extension>warning</bad_line_files_extension>
  1424 + <error_line_files_destination_directory/>
  1425 + <error_line_files_extension>error</error_line_files_extension>
  1426 + <line_number_files_destination_directory/>
  1427 + <line_number_files_extension>line</line_number_files_extension>
  1428 + <shortFileFieldName/>
  1429 + <pathFieldName/>
  1430 + <hiddenFieldName/>
  1431 + <lastModificationTimeFieldName/>
  1432 + <uriNameFieldName/>
  1433 + <rootUriNameFieldName/>
  1434 + <extensionFieldName/>
  1435 + <sizeFieldName/>
  1436 + <spreadsheet_type>JXL</spreadsheet_type>
  1437 + <cluster_schema/>
  1438 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1439 + <xloc>112</xloc>
  1440 + <yloc>44</yloc>
  1441 + <draw>Y</draw>
  1442 + </GUI>
  1443 + </step>
  1444 +
  1445 + <step>
  1446 + <name>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;1</name>
  1447 + <type>DBLookup</type>
  1448 + <description/>
  1449 + <distribute>Y</distribute>
  1450 + <custom_distribution/>
  1451 + <copies>1</copies>
  1452 + <partitioning>
  1453 + <method>none</method>
  1454 + <schema_name/>
  1455 + </partitioning>
  1456 + <connection>bus_control_variable</connection>
  1457 + <cache>N</cache>
  1458 + <cache_load_all>N</cache_load_all>
  1459 + <cache_size>0</cache_size>
  1460 + <lookup>
  1461 + <schema/>
  1462 + <table>bsth_c_car_park</table>
  1463 + <orderby/>
  1464 + <fail_on_multiple>N</fail_on_multiple>
  1465 + <eat_row_on_failure>N</eat_row_on_failure>
  1466 + <key>
  1467 + <name>tccname_</name>
  1468 + <field>park_name</field>
  1469 + <condition>&#x3d;</condition>
  1470 + <name2/>
  1471 + </key>
  1472 + <value>
  1473 + <name>id</name>
  1474 + <rename>qdzid</rename>
  1475 + <default/>
  1476 + <type>Integer</type>
  1477 + </value>
  1478 + <value>
  1479 + <name>park_code</name>
  1480 + <rename>qdzcode</rename>
  1481 + <default/>
  1482 + <type>String</type>
  1483 + </value>
  1484 + <value>
  1485 + <name>park_name</name>
  1486 + <rename>tn</rename>
  1487 + <default/>
  1488 + <type>String</type>
  1489 + </value>
  1490 + </lookup>
  1491 + <cluster_schema/>
  1492 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1493 + <xloc>755</xloc>
  1494 + <yloc>504</yloc>
  1495 + <draw>Y</draw>
  1496 + </GUI>
  1497 + </step>
  1498 +
  1499 + <step>
  1500 + <name>&#x67e5;&#x627e;&#x505c;&#x8f66;&#x573a;2</name>
  1501 + <type>DBLookup</type>
  1502 + <description/>
  1503 + <distribute>Y</distribute>
  1504 + <custom_distribution/>
  1505 + <copies>1</copies>
  1506 + <partitioning>
  1507 + <method>none</method>
  1508 + <schema_name/>
  1509 + </partitioning>
  1510 + <connection>bus_control_variable</connection>
  1511 + <cache>N</cache>
  1512 + <cache_load_all>N</cache_load_all>
  1513 + <cache_size>0</cache_size>
  1514 + <lookup>
  1515 + <schema/>
  1516 + <table>bsth_c_car_park</table>
  1517 + <orderby/>
  1518 + <fail_on_multiple>N</fail_on_multiple>
  1519 + <eat_row_on_failure>N</eat_row_on_failure>
  1520 + <key>
  1521 + <name>tccname_</name>
  1522 + <field>park_name</field>
  1523 + <condition>&#x3d;</condition>
  1524 + <name2/>
  1525 + </key>
  1526 + <value>
  1527 + <name>id</name>
  1528 + <rename>zdzid</rename>
  1529 + <default/>
  1530 + <type>Integer</type>
  1531 + </value>
  1532 + <value>
  1533 + <name>park_code</name>
  1534 + <rename>zdzcode</rename>
  1535 + <default/>
  1536 + <type>String</type>
  1537 + </value>
  1538 + <value>
  1539 + <name>park_name</name>
  1540 + <rename>tn</rename>
  1541 + <default/>
  1542 + <type>String</type>
  1543 + </value>
  1544 + </lookup>
  1545 + <cluster_schema/>
  1546 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1547 + <xloc>887</xloc>
  1548 + <yloc>608</yloc>
  1549 + <draw>Y</draw>
  1550 + </GUI>
  1551 + </step>
  1552 +
  1553 + <step>
  1554 + <name>&#x67e5;&#x627e;&#x51fa;&#x573a;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</name>
  1555 + <type>DBLookup</type>
  1556 + <description/>
  1557 + <distribute>Y</distribute>
  1558 + <custom_distribution/>
  1559 + <copies>1</copies>
  1560 + <partitioning>
  1561 + <method>none</method>
  1562 + <schema_name/>
  1563 + </partitioning>
  1564 + <connection>bus_control_variable</connection>
  1565 + <cache>N</cache>
  1566 + <cache_load_all>N</cache_load_all>
  1567 + <cache_size>0</cache_size>
  1568 + <lookup>
  1569 + <schema/>
  1570 + <table>bsth_c_stationroute</table>
  1571 + <orderby/>
  1572 + <fail_on_multiple>N</fail_on_multiple>
  1573 + <eat_row_on_failure>N</eat_row_on_failure>
  1574 + <key>
  1575 + <name>xlid</name>
  1576 + <field>line</field>
  1577 + <condition>&#x3d;</condition>
  1578 + <name2/>
  1579 + </key>
  1580 + <key>
  1581 + <name>zdzname</name>
  1582 + <field>station_name</field>
  1583 + <condition>&#x3d;</condition>
  1584 + <name2/>
  1585 + </key>
  1586 + <key>
  1587 + <name>endZdtype</name>
  1588 + <field>station_mark</field>
  1589 + <condition>&#x3d;</condition>
  1590 + <name2/>
  1591 + </key>
  1592 + <key>
  1593 + <name>destory</name>
  1594 + <field>destroy</field>
  1595 + <condition>&#x3d;</condition>
  1596 + <name2/>
  1597 + </key>
  1598 + <value>
  1599 + <name>station</name>
  1600 + <rename>zdzid</rename>
  1601 + <default/>
  1602 + <type>Integer</type>
  1603 + </value>
  1604 + <value>
  1605 + <name>directions</name>
  1606 + <rename>sxx</rename>
  1607 + <default/>
  1608 + <type>Integer</type>
  1609 + </value>
  1610 + <value>
  1611 + <name>station_code</name>
  1612 + <rename>zdzcode</rename>
  1613 + <default/>
  1614 + <type>String</type>
  1615 + </value>
  1616 + </lookup>
  1617 + <cluster_schema/>
  1618 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1619 + <xloc>329</xloc>
  1620 + <yloc>505</yloc>
  1621 + <draw>Y</draw>
  1622 + </GUI>
  1623 + </step>
  1624 +
  1625 + <step>
  1626 + <name>&#x67e5;&#x627e;&#x65f6;&#x523b;&#x8868;&#x57fa;&#x7840;&#x4fe1;&#x606f;&#x5173;&#x8054;</name>
  1627 + <type>DBLookup</type>
  1628 + <description/>
  1629 + <distribute>Y</distribute>
  1630 + <custom_distribution/>
  1631 + <copies>1</copies>
  1632 + <partitioning>
  1633 + <method>none</method>
  1634 + <schema_name/>
  1635 + </partitioning>
  1636 + <connection>bus_control_variable</connection>
  1637 + <cache>N</cache>
  1638 + <cache_load_all>N</cache_load_all>
  1639 + <cache_size>0</cache_size>
  1640 + <lookup>
  1641 + <schema/>
  1642 + <table>bsth_c_s_ttinfo</table>
  1643 + <orderby/>
  1644 + <fail_on_multiple>N</fail_on_multiple>
  1645 + <eat_row_on_failure>N</eat_row_on_failure>
  1646 + <key>
  1647 + <name>xlid</name>
  1648 + <field>xl</field>
  1649 + <condition>&#x3d;</condition>
  1650 + <name2/>
  1651 + </key>
  1652 + <key>
  1653 + <name>ttinfoname_</name>
  1654 + <field>name</field>
  1655 + <condition>&#x3d;</condition>
  1656 + <name2/>
  1657 + </key>
  1658 + <key>
  1659 + <name>iscanceled</name>
  1660 + <field>is_cancel</field>
  1661 + <condition>&#x3d;</condition>
  1662 + <name2/>
  1663 + </key>
  1664 + <value>
  1665 + <name>id</name>
  1666 + <rename>ttid</rename>
  1667 + <default/>
  1668 + <type>Integer</type>
  1669 + </value>
  1670 + </lookup>
  1671 + <cluster_schema/>
  1672 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1673 + <xloc>1011</xloc>
  1674 + <yloc>134</yloc>
  1675 + <draw>Y</draw>
  1676 + </GUI>
  1677 + </step>
  1678 +
  1679 + <step>
  1680 + <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x5173;&#x8054;</name>
  1681 + <type>DBLookup</type>
  1682 + <description/>
  1683 + <distribute>Y</distribute>
  1684 + <custom_distribution/>
  1685 + <copies>1</copies>
  1686 + <partitioning>
  1687 + <method>none</method>
  1688 + <schema_name/>
  1689 + </partitioning>
  1690 + <connection>bus_control_variable</connection>
  1691 + <cache>N</cache>
  1692 + <cache_load_all>N</cache_load_all>
  1693 + <cache_size>0</cache_size>
  1694 + <lookup>
  1695 + <schema/>
  1696 + <table>bsth_c_line</table>
  1697 + <orderby/>
  1698 + <fail_on_multiple>N</fail_on_multiple>
  1699 + <eat_row_on_failure>N</eat_row_on_failure>
  1700 + <key>
  1701 + <name>xlname_</name>
  1702 + <field>name</field>
  1703 + <condition>&#x3d;</condition>
  1704 + <name2/>
  1705 + </key>
  1706 + <key>
  1707 + <name>iscanceled</name>
  1708 + <field>destroy</field>
  1709 + <condition>&#x3d;</condition>
  1710 + <name2/>
  1711 + </key>
  1712 + <value>
  1713 + <name>id</name>
  1714 + <rename>xlid</rename>
  1715 + <default/>
  1716 + <type>Integer</type>
  1717 + </value>
  1718 + </lookup>
  1719 + <cluster_schema/>
  1720 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1721 + <xloc>1007</xloc>
  1722 + <yloc>43</yloc>
  1723 + <draw>Y</draw>
  1724 + </GUI>
  1725 + </step>
  1726 +
  1727 + <step>
  1728 + <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x51fa;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
  1729 + <type>DBLookup</type>
  1730 + <description/>
  1731 + <distribute>Y</distribute>
  1732 + <custom_distribution/>
  1733 + <copies>1</copies>
  1734 + <partitioning>
  1735 + <method>none</method>
  1736 + <schema_name/>
  1737 + </partitioning>
  1738 + <connection>bus_control_variable</connection>
  1739 + <cache>N</cache>
  1740 + <cache_load_all>N</cache_load_all>
  1741 + <cache_size>0</cache_size>
  1742 + <lookup>
  1743 + <schema/>
  1744 + <table>bsth_c_line_information</table>
  1745 + <orderby/>
  1746 + <fail_on_multiple>N</fail_on_multiple>
  1747 + <eat_row_on_failure>N</eat_row_on_failure>
  1748 + <key>
  1749 + <name>xlid</name>
  1750 + <field>line</field>
  1751 + <condition>&#x3d;</condition>
  1752 + <name2/>
  1753 + </key>
  1754 + <value>
  1755 + <name>up_out_timer</name>
  1756 + <rename>up_out_timer</rename>
  1757 + <default/>
  1758 + <type>Number</type>
  1759 + </value>
  1760 + <value>
  1761 + <name>up_out_mileage</name>
  1762 + <rename>up_out_mileage</rename>
  1763 + <default/>
  1764 + <type>Number</type>
  1765 + </value>
  1766 + <value>
  1767 + <name>down_out_timer</name>
  1768 + <rename>down_out_timer</rename>
  1769 + <default/>
  1770 + <type>Number</type>
  1771 + </value>
  1772 + <value>
  1773 + <name>down_out_mileage</name>
  1774 + <rename>down_out_mileage</rename>
  1775 + <default/>
  1776 + <type>Number</type>
  1777 + </value>
  1778 + </lookup>
  1779 + <cluster_schema/>
  1780 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1781 + <xloc>335</xloc>
  1782 + <yloc>763</yloc>
  1783 + <draw>Y</draw>
  1784 + </GUI>
  1785 + </step>
  1786 +
  1787 + <step>
  1788 + <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x6240;&#x6709;&#x4e0a;&#x4e0b;&#x884c;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
  1789 + <type>DBLookup</type>
  1790 + <description/>
  1791 + <distribute>Y</distribute>
  1792 + <custom_distribution/>
  1793 + <copies>1</copies>
  1794 + <partitioning>
  1795 + <method>none</method>
  1796 + <schema_name/>
  1797 + </partitioning>
  1798 + <connection>bus_control_variable</connection>
  1799 + <cache>N</cache>
  1800 + <cache_load_all>N</cache_load_all>
  1801 + <cache_size>0</cache_size>
  1802 + <lookup>
  1803 + <schema/>
  1804 + <table>bsth_c_line_information</table>
  1805 + <orderby/>
  1806 + <fail_on_multiple>N</fail_on_multiple>
  1807 + <eat_row_on_failure>N</eat_row_on_failure>
  1808 + <key>
  1809 + <name>xlid</name>
  1810 + <field>line</field>
  1811 + <condition>&#x3d;</condition>
  1812 + <name2/>
  1813 + </key>
  1814 + <value>
  1815 + <name>up_mileage</name>
  1816 + <rename>up_mileage</rename>
  1817 + <default/>
  1818 + <type>Number</type>
  1819 + </value>
  1820 + <value>
  1821 + <name>down_mileage</name>
  1822 + <rename>down_mileage</rename>
  1823 + <default/>
  1824 + <type>Number</type>
  1825 + </value>
  1826 + <value>
  1827 + <name>up_travel_time</name>
  1828 + <rename>up_travel_time</rename>
  1829 + <default/>
  1830 + <type>Number</type>
  1831 + </value>
  1832 + <value>
  1833 + <name>down_travel_time</name>
  1834 + <rename>down_travel_time</rename>
  1835 + <default/>
  1836 + <type>Number</type>
  1837 + </value>
  1838 + <value>
  1839 + <name>early_start_time</name>
  1840 + <rename>early_start_time</rename>
  1841 + <default/>
  1842 + <type>String</type>
  1843 + </value>
  1844 + <value>
  1845 + <name>early_end_time</name>
  1846 + <rename>early_end_time</rename>
  1847 + <default/>
  1848 + <type>String</type>
  1849 + </value>
  1850 + <value>
  1851 + <name>early_up_time</name>
  1852 + <rename>early_up_time</rename>
  1853 + <default/>
  1854 + <type>Number</type>
  1855 + </value>
  1856 + <value>
  1857 + <name>early_down_time</name>
  1858 + <rename>early_down_time</rename>
  1859 + <default/>
  1860 + <type>Number</type>
  1861 + </value>
  1862 + <value>
  1863 + <name>late_start_time</name>
  1864 + <rename>late_start_time</rename>
  1865 + <default/>
  1866 + <type>String</type>
  1867 + </value>
  1868 + <value>
  1869 + <name>late_end_time</name>
  1870 + <rename>late_end_time</rename>
  1871 + <default/>
  1872 + <type>String</type>
  1873 + </value>
  1874 + <value>
  1875 + <name>late_up_time</name>
  1876 + <rename>late_up_time</rename>
  1877 + <default/>
  1878 + <type>Number</type>
  1879 + </value>
  1880 + <value>
  1881 + <name>late_down_time</name>
  1882 + <rename>late_down_time</rename>
  1883 + <default/>
  1884 + <type>Number</type>
  1885 + </value>
  1886 + </lookup>
  1887 + <cluster_schema/>
  1888 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1889 + <xloc>149</xloc>
  1890 + <yloc>581</yloc>
  1891 + <draw>Y</draw>
  1892 + </GUI>
  1893 + </step>
  1894 +
  1895 + <step>
  1896 + <name>&#x67e5;&#x627e;&#x7ebf;&#x8def;&#x8fdb;&#x573a;&#x91cc;&#x7a0b;&#x65f6;&#x95f4;</name>
  1897 + <type>DBLookup</type>
  1898 + <description/>
  1899 + <distribute>Y</distribute>
  1900 + <custom_distribution/>
  1901 + <copies>1</copies>
  1902 + <partitioning>
  1903 + <method>none</method>
  1904 + <schema_name/>
  1905 + </partitioning>
  1906 + <connection>bus_control_variable</connection>
  1907 + <cache>N</cache>
  1908 + <cache_load_all>N</cache_load_all>
  1909 + <cache_size>0</cache_size>
  1910 + <lookup>
  1911 + <schema/>
  1912 + <table>bsth_c_line_information</table>
  1913 + <orderby/>
  1914 + <fail_on_multiple>N</fail_on_multiple>
  1915 + <eat_row_on_failure>N</eat_row_on_failure>
  1916 + <key>
  1917 + <name>xlid</name>
  1918 + <field>line</field>
  1919 + <condition>&#x3d;</condition>
  1920 + <name2/>
  1921 + </key>
  1922 + <value>
  1923 + <name>up_in_mileage</name>
  1924 + <rename>up_in_mileage</rename>
  1925 + <default/>
  1926 + <type>Number</type>
  1927 + </value>
  1928 + <value>
  1929 + <name>up_in_timer</name>
  1930 + <rename>up_in_timer</rename>
  1931 + <default/>
  1932 + <type>Number</type>
  1933 + </value>
  1934 + <value>
  1935 + <name>down_in_mileage</name>
  1936 + <rename>down_in_mileage</rename>
  1937 + <default/>
  1938 + <type>Number</type>
  1939 + </value>
  1940 + <value>
  1941 + <name>down_in_timer</name>
  1942 + <rename>down_in_timer</rename>
  1943 + <default/>
  1944 + <type>Number</type>
  1945 + </value>
  1946 + </lookup>
  1947 + <cluster_schema/>
  1948 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1949 + <xloc>553</xloc>
  1950 + <yloc>1004</yloc>
  1951 + <draw>Y</draw>
  1952 + </GUI>
  1953 + </step>
  1954 +
  1955 + <step>
  1956 + <name>&#x67e5;&#x627e;&#x7ec8;&#x70b9;&#x7ad9;&#x5173;&#x8054;</name>
  1957 + <type>DBLookup</type>
  1958 + <description/>
  1959 + <distribute>Y</distribute>
  1960 + <custom_distribution/>
  1961 + <copies>1</copies>
  1962 + <partitioning>
  1963 + <method>none</method>
  1964 + <schema_name/>
  1965 + </partitioning>
  1966 + <connection>bus_control_variable</connection>
  1967 + <cache>N</cache>
  1968 + <cache_load_all>N</cache_load_all>
  1969 + <cache_size>0</cache_size>
  1970 + <lookup>
  1971 + <schema/>
  1972 + <table>bsth_c_stationroute</table>
  1973 + <orderby/>
  1974 + <fail_on_multiple>N</fail_on_multiple>
  1975 + <eat_row_on_failure>N</eat_row_on_failure>
  1976 + <key>
  1977 + <name>xlid</name>
  1978 + <field>line</field>
  1979 + <condition>&#x3d;</condition>
  1980 + <name2/>
  1981 + </key>
  1982 + <key>
  1983 + <name>sxx</name>
  1984 + <field>directions</field>
  1985 + <condition>&#x3d;</condition>
  1986 + <name2/>
  1987 + </key>
  1988 + <key>
  1989 + <name>endZdtype</name>
  1990 + <field>station_mark</field>
  1991 + <condition>&#x3d;</condition>
  1992 + <name2/>
  1993 + </key>
  1994 + <key>
  1995 + <name>destory</name>
  1996 + <field>destroy</field>
  1997 + <condition>&#x3d;</condition>
  1998 + <name2/>
  1999 + </key>
  2000 + <value>
  2001 + <name>station_name</name>
  2002 + <rename>zdzname</rename>
  2003 + <default/>
  2004 + <type>String</type>
  2005 + </value>
  2006 + <value>
  2007 + <name>station</name>
  2008 + <rename>zdzid</rename>
  2009 + <default/>
  2010 + <type>Integer</type>
  2011 + </value>
  2012 + <value>
  2013 + <name>station_code</name>
  2014 + <rename>zdzcode</rename>
  2015 + <default/>
  2016 + <type>String</type>
  2017 + </value>
  2018 + </lookup>
  2019 + <cluster_schema/>
  2020 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2021 + <xloc>280</xloc>
  2022 + <yloc>404</yloc>
  2023 + <draw>Y</draw>
  2024 + </GUI>
  2025 + </step>
  2026 +
  2027 + <step>
  2028 + <name>&#x67e5;&#x627e;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x5e76;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</name>
  2029 + <type>DBLookup</type>
  2030 + <description/>
  2031 + <distribute>Y</distribute>
  2032 + <custom_distribution/>
  2033 + <copies>1</copies>
  2034 + <partitioning>
  2035 + <method>none</method>
  2036 + <schema_name/>
  2037 + </partitioning>
  2038 + <connection>bus_control_variable</connection>
  2039 + <cache>N</cache>
  2040 + <cache_load_all>N</cache_load_all>
  2041 + <cache_size>0</cache_size>
  2042 + <lookup>
  2043 + <schema/>
  2044 + <table>bsth_c_stationroute</table>
  2045 + <orderby/>
  2046 + <fail_on_multiple>N</fail_on_multiple>
  2047 + <eat_row_on_failure>N</eat_row_on_failure>
  2048 + <key>
  2049 + <name>xlid</name>
  2050 + <field>line</field>
  2051 + <condition>&#x3d;</condition>
  2052 + <name2/>
  2053 + </key>
  2054 + <key>
  2055 + <name>qdzname</name>
  2056 + <field>station_name</field>
  2057 + <condition>&#x3d;</condition>
  2058 + <name2/>
  2059 + </key>
  2060 + <key>
  2061 + <name>sendZdtype</name>
  2062 + <field>station_mark</field>
  2063 + <condition>&#x3d;</condition>
  2064 + <name2/>
  2065 + </key>
  2066 + <key>
  2067 + <name>destory</name>
  2068 + <field>destroy</field>
  2069 + <condition>&#x3d;</condition>
  2070 + <name2/>
  2071 + </key>
  2072 + <value>
  2073 + <name>station</name>
  2074 + <rename>qdzid</rename>
  2075 + <default/>
  2076 + <type>Integer</type>
  2077 + </value>
  2078 + <value>
  2079 + <name>directions</name>
  2080 + <rename>sxx</rename>
  2081 + <default/>
  2082 + <type>Integer</type>
  2083 + </value>
  2084 + <value>
  2085 + <name>station_code</name>
  2086 + <rename>qdzcode</rename>
  2087 + <default/>
  2088 + <type>String</type>
  2089 + </value>
  2090 + </lookup>
  2091 + <cluster_schema/>
  2092 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2093 + <xloc>430</xloc>
  2094 + <yloc>403</yloc>
  2095 + <draw>Y</draw>
  2096 + </GUI>
  2097 + </step>
  2098 +
  2099 + <step>
  2100 + <name>&#x67e5;&#x627e;&#x8def;&#x724c;&#x5173;&#x8054;</name>
  2101 + <type>DBLookup</type>
  2102 + <description/>
  2103 + <distribute>Y</distribute>
  2104 + <custom_distribution/>
  2105 + <copies>1</copies>
  2106 + <partitioning>
  2107 + <method>none</method>
  2108 + <schema_name/>
  2109 + </partitioning>
  2110 + <connection>bus_control_variable</connection>
  2111 + <cache>N</cache>
  2112 + <cache_load_all>N</cache_load_all>
  2113 + <cache_size>0</cache_size>
  2114 + <lookup>
  2115 + <schema/>
  2116 + <table>bsth_c_s_gbi</table>
  2117 + <orderby/>
  2118 + <fail_on_multiple>N</fail_on_multiple>
  2119 + <eat_row_on_failure>N</eat_row_on_failure>
  2120 + <key>
  2121 + <name>xlid</name>
  2122 + <field>xl</field>
  2123 + <condition>&#x3d;</condition>
  2124 + <name2/>
  2125 + </key>
  2126 + <key>
  2127 + <name>lp</name>
  2128 + <field>lp_name</field>
  2129 + <condition>&#x3d;</condition>
  2130 + <name2/>
  2131 + </key>
  2132 + <key>
  2133 + <name>iscanceled</name>
  2134 + <field>is_cancel</field>
  2135 + <condition>&#x3d;</condition>
  2136 + <name2/>
  2137 + </key>
  2138 + <value>
  2139 + <name>id</name>
  2140 + <rename>lpid</rename>
  2141 + <default/>
  2142 + <type>Integer</type>
  2143 + </value>
  2144 + </lookup>
  2145 + <cluster_schema/>
  2146 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2147 + <xloc>1013</xloc>
  2148 + <yloc>265</yloc>
  2149 + <draw>Y</draw>
  2150 + </GUI>
  2151 + </step>
  2152 +
  2153 + <step>
  2154 + <name>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ebf;&#x8def;&#x65b9;&#x5411;</name>
  2155 + <type>DBLookup</type>
  2156 + <description/>
  2157 + <distribute>Y</distribute>
  2158 + <custom_distribution/>
  2159 + <copies>1</copies>
  2160 + <partitioning>
  2161 + <method>none</method>
  2162 + <schema_name/>
  2163 + </partitioning>
  2164 + <connection>bus_control_variable</connection>
  2165 + <cache>N</cache>
  2166 + <cache_load_all>N</cache_load_all>
  2167 + <cache_size>0</cache_size>
  2168 + <lookup>
  2169 + <schema/>
  2170 + <table>bsth_c_stationroute</table>
  2171 + <orderby/>
  2172 + <fail_on_multiple>N</fail_on_multiple>
  2173 + <eat_row_on_failure>N</eat_row_on_failure>
  2174 + <key>
  2175 + <name>xlid</name>
  2176 + <field>line</field>
  2177 + <condition>&#x3d;</condition>
  2178 + <name2/>
  2179 + </key>
  2180 + <key>
  2181 + <name>startZdtype_calcu</name>
  2182 + <field>station_mark</field>
  2183 + <condition>&#x3d;</condition>
  2184 + <name2/>
  2185 + </key>
  2186 + <key>
  2187 + <name>qdzname_calcu</name>
  2188 + <field>station_name</field>
  2189 + <condition>&#x3d;</condition>
  2190 + <name2/>
  2191 + </key>
  2192 + <key>
  2193 + <name>destory</name>
  2194 + <field>destroy</field>
  2195 + <condition>&#x3d;</condition>
  2196 + <name2/>
  2197 + </key>
  2198 + <value>
  2199 + <name>directions</name>
  2200 + <rename>sxx</rename>
  2201 + <default/>
  2202 + <type>String</type>
  2203 + </value>
  2204 + </lookup>
  2205 + <cluster_schema/>
  2206 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2207 + <xloc>548</xloc>
  2208 + <yloc>610</yloc>
  2209 + <draw>Y</draw>
  2210 + </GUI>
  2211 + </step>
  2212 +
  2213 + <step>
  2214 + <name>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ec8;&#x70b9;&#x7ad9;&#xff0c;&#x5e76;&#x4f5c;&#x4e3a;&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x7684;&#x8d77;&#x70b9;&#x7ad9;</name>
  2215 + <type>DBLookup</type>
  2216 + <description/>
  2217 + <distribute>Y</distribute>
  2218 + <custom_distribution/>
  2219 + <copies>1</copies>
  2220 + <partitioning>
  2221 + <method>none</method>
  2222 + <schema_name/>
  2223 + </partitioning>
  2224 + <connection>bus_control_variable</connection>
  2225 + <cache>Y</cache>
  2226 + <cache_load_all>Y</cache_load_all>
  2227 + <cache_size>0</cache_size>
  2228 + <lookup>
  2229 + <schema/>
  2230 + <table>bsth_c_stationroute</table>
  2231 + <orderby/>
  2232 + <fail_on_multiple>N</fail_on_multiple>
  2233 + <eat_row_on_failure>N</eat_row_on_failure>
  2234 + <key>
  2235 + <name>xlid</name>
  2236 + <field>line</field>
  2237 + <condition>&#x3d;</condition>
  2238 + <name2/>
  2239 + </key>
  2240 + <key>
  2241 + <name>endZdtype_calcu</name>
  2242 + <field>station_mark</field>
  2243 + <condition>&#x3d;</condition>
  2244 + <name2/>
  2245 + </key>
  2246 + <key>
  2247 + <name>sxx</name>
  2248 + <field>directions</field>
  2249 + <condition>&#x3d;</condition>
  2250 + <name2/>
  2251 + </key>
  2252 + <key>
  2253 + <name>destory</name>
  2254 + <field>destroy</field>
  2255 + <condition>&#x3d;</condition>
  2256 + <name2/>
  2257 + </key>
  2258 + <value>
  2259 + <name>station_name</name>
  2260 + <rename>zdzname_calcu</rename>
  2261 + <default/>
  2262 + <type>Integer</type>
  2263 + </value>
  2264 + </lookup>
  2265 + <cluster_schema/>
  2266 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2267 + <xloc>550</xloc>
  2268 + <yloc>701</yloc>
  2269 + <draw>Y</draw>
  2270 + </GUI>
  2271 + </step>
  2272 +
  2273 + <step>
  2274 + <name>&#x67e5;&#x627e;&#x8fdb;&#x573a;&#x8d77;&#x70b9;&#x7ad9;&#x5173;&#x8054;&#x786e;&#x5b9a;&#x4e0a;&#x4e0b;&#x884c;</name>
  2275 + <type>DBLookup</type>
  2276 + <description/>
  2277 + <distribute>Y</distribute>
  2278 + <custom_distribution/>
  2279 + <copies>1</copies>
  2280 + <partitioning>
  2281 + <method>none</method>
  2282 + <schema_name/>
  2283 + </partitioning>
  2284 + <connection>bus_control_variable</connection>
  2285 + <cache>N</cache>
  2286 + <cache_load_all>N</cache_load_all>
  2287 + <cache_size>0</cache_size>
  2288 + <lookup>
  2289 + <schema/>
  2290 + <table>bsth_c_stationroute</table>
  2291 + <orderby/>
  2292 + <fail_on_multiple>N</fail_on_multiple>
  2293 + <eat_row_on_failure>N</eat_row_on_failure>
  2294 + <key>
  2295 + <name>xlid</name>
  2296 + <field>line</field>
  2297 + <condition>&#x3d;</condition>
  2298 + <name2/>
  2299 + </key>
  2300 + <key>
  2301 + <name>zdzname_calcu</name>
  2302 + <field>station_name</field>
  2303 + <condition>&#x3d;</condition>
  2304 + <name2/>
  2305 + </key>
  2306 + <key>
  2307 + <name>startZdtype_calcu</name>
  2308 + <field>station_mark</field>
  2309 + <condition>&#x3d;</condition>
  2310 + <name2/>
  2311 + </key>
  2312 + <key>
  2313 + <name>destory</name>
  2314 + <field>destroy</field>
  2315 + <condition>&#x3d;</condition>
  2316 + <name2/>
  2317 + </key>
  2318 + <value>
  2319 + <name>directions</name>
  2320 + <rename>sxx2</rename>
  2321 + <default/>
  2322 + <type>Integer</type>
  2323 + </value>
  2324 + <value>
  2325 + <name>station</name>
  2326 + <rename>qdzid</rename>
  2327 + <default/>
  2328 + <type>Integer</type>
  2329 + </value>
  2330 + <value>
  2331 + <name>station_code</name>
  2332 + <rename>qdzcode</rename>
  2333 + <default/>
  2334 + <type>String</type>
  2335 + </value>
  2336 + <value>
  2337 + <name>station_name</name>
  2338 + <rename>qname</rename>
  2339 + <default/>
  2340 + <type>String</type>
  2341 + </value>
  2342 + </lookup>
  2343 + <cluster_schema/>
  2344 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2345 + <xloc>551</xloc>
  2346 + <yloc>782</yloc>
  2347 + <draw>Y</draw>
  2348 + </GUI>
  2349 + </step>
  2350 +
  2351 + <step>
  2352 + <name>&#x6b63;&#x5e38;&#x73ed;&#x6b21;_&#x5904;&#x7406;&#x6570;&#x636e;</name>
  2353 + <type>ScriptValueMod</type>
  2354 + <description/>
  2355 + <distribute>Y</distribute>
  2356 + <custom_distribution/>
  2357 + <copies>1</copies>
  2358 + <partitioning>
  2359 + <method>none</method>
  2360 + <schema_name/>
  2361 + </partitioning>
  2362 + <compatible>N</compatible>
  2363 + <optimizationLevel>9</optimizationLevel>
  2364 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  2365 + <jsScript_name>Script 1</jsScript_name>
  2366 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x6dfb;&#x52a0;&#x7ad9;&#x70b9;&#x6807;&#x8bc6;&#xa;var sendZdtype &#x3d; &#x27;B&#x27;&#x3b;&#xa;var endZdtype &#x3d; &#x27;E&#x27;&#x3b;&#xa;&#xa;var destory &#x3d; 0&#x3b; &#x2f;&#x2f; &#x672a;&#x64a4;&#x9500;flag</jsScript_script>
  2367 + </jsScript> </jsScripts> <fields> <field> <name>sendZdtype</name>
  2368 + <rename>sendZdtype</rename>
  2369 + <type>String</type>
  2370 + <length>-1</length>
  2371 + <precision>-1</precision>
  2372 + <replace>N</replace>
  2373 + </field> <field> <name>endZdtype</name>
  2374 + <rename>endZdtype</rename>
  2375 + <type>String</type>
  2376 + <length>-1</length>
  2377 + <precision>-1</precision>
  2378 + <replace>N</replace>
  2379 + </field> <field> <name>destory</name>
  2380 + <rename>destory</rename>
  2381 + <type>Integer</type>
  2382 + <length>-1</length>
  2383 + <precision>-1</precision>
  2384 + <replace>N</replace>
  2385 + </field> </fields> <cluster_schema/>
  2386 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2387 + <xloc>588</xloc>
  2388 + <yloc>403</yloc>
  2389 + <draw>Y</draw>
  2390 + </GUI>
  2391 + </step>
  2392 +
  2393 + <step>
  2394 + <name>&#x6b63;&#x5e38;&#x73ed;&#x6b21;&#x6570;&#x636e;</name>
  2395 + <type>Dummy</type>
  2396 + <description/>
  2397 + <distribute>Y</distribute>
  2398 + <custom_distribution/>
  2399 + <copies>1</copies>
  2400 + <partitioning>
  2401 + <method>none</method>
  2402 + <schema_name/>
  2403 + </partitioning>
  2404 + <cluster_schema/>
  2405 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2406 + <xloc>725</xloc>
  2407 + <yloc>404</yloc>
  2408 + <draw>Y</draw>
  2409 + </GUI>
  2410 + </step>
  2411 +
  2412 + <step>
  2413 + <name>&#x6dfb;&#x52a0;&#x53d1;&#x8f66;&#x987a;&#x5e8f;&#x53f7;</name>
  2414 + <type>GroupBy</type>
  2415 + <description/>
  2416 + <distribute>Y</distribute>
  2417 + <custom_distribution/>
  2418 + <copies>1</copies>
  2419 + <partitioning>
  2420 + <method>none</method>
  2421 + <schema_name/>
  2422 + </partitioning>
  2423 + <all_rows>Y</all_rows>
  2424 + <ignore_aggregate>N</ignore_aggregate>
  2425 + <field_ignore/>
  2426 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  2427 + <prefix>grp</prefix>
  2428 + <add_linenr>Y</add_linenr>
  2429 + <linenr_fieldname>fcno</linenr_fieldname>
  2430 + <give_back_row>N</give_back_row>
  2431 + <group>
  2432 + <field>
  2433 + <name>lp</name>
  2434 + </field>
  2435 + </group>
  2436 + <fields>
  2437 + </fields>
  2438 + <cluster_schema/>
  2439 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2440 + <xloc>442</xloc>
  2441 + <yloc>44</yloc>
  2442 + <draw>Y</draw>
  2443 + </GUI>
  2444 + </step>
  2445 +
  2446 + <step>
  2447 + <name>&#x6dfb;&#x52a0;&#x5bf9;&#x5e94;&#x73ed;&#x6b21;&#x6570;</name>
  2448 + <type>GroupBy</type>
  2449 + <description/>
  2450 + <distribute>Y</distribute>
  2451 + <custom_distribution/>
  2452 + <copies>1</copies>
  2453 + <partitioning>
  2454 + <method>none</method>
  2455 + <schema_name/>
  2456 + </partitioning>
  2457 + <all_rows>Y</all_rows>
  2458 + <ignore_aggregate>N</ignore_aggregate>
  2459 + <field_ignore/>
  2460 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  2461 + <prefix>grp</prefix>
  2462 + <add_linenr>Y</add_linenr>
  2463 + <linenr_fieldname>bcs</linenr_fieldname>
  2464 + <give_back_row>N</give_back_row>
  2465 + <group>
  2466 + </group>
  2467 + <fields>
  2468 + </fields>
  2469 + <cluster_schema/>
  2470 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2471 + <xloc>692</xloc>
  2472 + <yloc>44</yloc>
  2473 + <draw>Y</draw>
  2474 + </GUI>
  2475 + </step>
  2476 +
  2477 + <step>
  2478 + <name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</name>
  2479 + <type>Normaliser</type>
  2480 + <description/>
  2481 + <distribute>Y</distribute>
  2482 + <custom_distribution/>
  2483 + <copies>1</copies>
  2484 + <partitioning>
  2485 + <method>none</method>
  2486 + <schema_name/>
  2487 + </partitioning>
  2488 + <typefield>&#x7ad9;&#x70b9;&#x540d;&#x79f0;</typefield>
  2489 + <fields> </fields> <cluster_schema/>
  2490 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2491 + <xloc>248</xloc>
  2492 + <yloc>44</yloc>
  2493 + <draw>Y</draw>
  2494 + </GUI>
  2495 + </step>
  2496 +
  2497 + <step>
  2498 + <name>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178;</name>
  2499 + <type>ValueMapper</type>
  2500 + <description/>
  2501 + <distribute>Y</distribute>
  2502 + <custom_distribution/>
  2503 + <copies>1</copies>
  2504 + <partitioning>
  2505 + <method>none</method>
  2506 + <schema_name/>
  2507 + </partitioning>
  2508 + <field_to_use>bctype</field_to_use>
  2509 + <target_field>bctype_code</target_field>
  2510 + <non_match_default>&#x672a;&#x77e5;&#x7c7b;&#x578b;</non_match_default>
  2511 + <fields>
  2512 + <field>
  2513 + <source_value>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</source_value>
  2514 + <target_value>normal</target_value>
  2515 + </field>
  2516 + <field>
  2517 + <source_value>&#x51fa;&#x573a;</source_value>
  2518 + <target_value>out</target_value>
  2519 + </field>
  2520 + <field>
  2521 + <source_value>&#x8fdb;&#x573a;</source_value>
  2522 + <target_value>in</target_value>
  2523 + </field>
  2524 + <field>
  2525 + <source_value>&#x52a0;&#x6cb9;</source_value>
  2526 + <target_value>oil</target_value>
  2527 + </field>
  2528 + <field>
  2529 + <source_value>&#x4e34;&#x52a0;</source_value>
  2530 + <target_value>temp</target_value>
  2531 + </field>
  2532 + <field>
  2533 + <source_value>&#x533a;&#x95f4;</source_value>
  2534 + <target_value>region</target_value>
  2535 + </field>
  2536 + <field>
  2537 + <source_value>&#x653e;&#x7a7a;</source_value>
  2538 + <target_value>venting</target_value>
  2539 + </field>
  2540 + <field>
  2541 + <source_value>&#x653e;&#x5927;&#x7ad9;</source_value>
  2542 + <target_value>major</target_value>
  2543 + </field>
  2544 + </fields>
  2545 + <cluster_schema/>
  2546 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2547 + <xloc>149</xloc>
  2548 + <yloc>491</yloc>
  2549 + <draw>Y</draw>
  2550 + </GUI>
  2551 + </step>
  2552 +
  2553 + <step>
  2554 + <name>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 2</name>
  2555 + <type>ValueMapper</type>
  2556 + <description/>
  2557 + <distribute>Y</distribute>
  2558 + <custom_distribution/>
  2559 + <copies>1</copies>
  2560 + <partitioning>
  2561 + <method>none</method>
  2562 + <schema_name/>
  2563 + </partitioning>
  2564 + <field_to_use>bctype</field_to_use>
  2565 + <target_field>bctype_code</target_field>
  2566 + <non_match_default>&#x672a;&#x77e5;&#x7c7b;&#x578b;</non_match_default>
  2567 + <fields>
  2568 + <field>
  2569 + <source_value>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</source_value>
  2570 + <target_value>normal</target_value>
  2571 + </field>
  2572 + <field>
  2573 + <source_value>&#x51fa;&#x573a;</source_value>
  2574 + <target_value>out</target_value>
  2575 + </field>
  2576 + <field>
  2577 + <source_value>&#x8fdb;&#x573a;</source_value>
  2578 + <target_value>in</target_value>
  2579 + </field>
  2580 + <field>
  2581 + <source_value>&#x52a0;&#x6cb9;</source_value>
  2582 + <target_value>oil</target_value>
  2583 + </field>
  2584 + <field>
  2585 + <source_value>&#x4e34;&#x52a0;</source_value>
  2586 + <target_value>temp</target_value>
  2587 + </field>
  2588 + <field>
  2589 + <source_value>&#x533a;&#x95f4;</source_value>
  2590 + <target_value>region</target_value>
  2591 + </field>
  2592 + <field>
  2593 + <source_value>&#x653e;&#x7a7a;</source_value>
  2594 + <target_value>venting</target_value>
  2595 + </field>
  2596 + <field>
  2597 + <source_value>&#x653e;&#x5927;&#x7ad9;</source_value>
  2598 + <target_value>major</target_value>
  2599 + </field>
  2600 + </fields>
  2601 + <cluster_schema/>
  2602 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2603 + <xloc>333</xloc>
  2604 + <yloc>681</yloc>
  2605 + <draw>Y</draw>
  2606 + </GUI>
  2607 + </step>
  2608 +
  2609 + <step>
  2610 + <name>&#x73ed;&#x6b21;&#x7c7b;&#x578b;&#x5b57;&#x5178; 3</name>
  2611 + <type>ValueMapper</type>
  2612 + <description/>
  2613 + <distribute>Y</distribute>
  2614 + <custom_distribution/>
  2615 + <copies>1</copies>
  2616 + <partitioning>
  2617 + <method>none</method>
  2618 + <schema_name/>
  2619 + </partitioning>
  2620 + <field_to_use>bctype</field_to_use>
  2621 + <target_field>bctype_code</target_field>
  2622 + <non_match_default>&#x672a;&#x77e5;&#x7c7b;&#x578b;</non_match_default>
  2623 + <fields>
  2624 + <field>
  2625 + <source_value>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</source_value>
  2626 + <target_value>normal</target_value>
  2627 + </field>
  2628 + <field>
  2629 + <source_value>&#x51fa;&#x573a;</source_value>
  2630 + <target_value>out</target_value>
  2631 + </field>
  2632 + <field>
  2633 + <source_value>&#x8fdb;&#x573a;</source_value>
  2634 + <target_value>in</target_value>
  2635 + </field>
  2636 + <field>
  2637 + <source_value>&#x52a0;&#x6cb9;</source_value>
  2638 + <target_value>oil</target_value>
  2639 + </field>
  2640 + <field>
  2641 + <source_value>&#x4e34;&#x52a0;</source_value>
  2642 + <target_value>temp</target_value>
  2643 + </field>
  2644 + <field>
  2645 + <source_value>&#x533a;&#x95f4;</source_value>
  2646 + <target_value>region</target_value>
  2647 + </field>
  2648 + <field>
  2649 + <source_value>&#x653e;&#x7a7a;</source_value>
  2650 + <target_value>venting</target_value>
  2651 + </field>
  2652 + <field>
  2653 + <source_value>&#x653e;&#x5927;&#x7ad9;</source_value>
  2654 + <target_value>major</target_value>
  2655 + </field>
  2656 + </fields>
  2657 + <cluster_schema/>
  2658 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2659 + <xloc>551</xloc>
  2660 + <yloc>928</yloc>
  2661 + <draw>Y</draw>
  2662 + </GUI>
  2663 + </step>
  2664 +
  2665 + <step>
  2666 + <name>&#x7c7b;&#x578b;&#x4fee;&#x6b63;</name>
  2667 + <type>SelectValues</type>
  2668 + <description/>
  2669 + <distribute>Y</distribute>
  2670 + <custom_distribution/>
  2671 + <copies>1</copies>
  2672 + <partitioning>
  2673 + <method>none</method>
  2674 + <schema_name/>
  2675 + </partitioning>
  2676 + <fields> <select_unspecified>N</select_unspecified>
  2677 + <meta> <name>jhlc</name>
  2678 + <rename>jhlc</rename>
  2679 + <type>Number</type>
  2680 + <length>-2</length>
  2681 + <precision>-2</precision>
  2682 + <conversion_mask/>
  2683 + <date_format_lenient>false</date_format_lenient>
  2684 + <date_format_locale/>
  2685 + <date_format_timezone/>
  2686 + <lenient_string_to_number>false</lenient_string_to_number>
  2687 + <encoding/>
  2688 + <decimal_symbol/>
  2689 + <grouping_symbol/>
  2690 + <currency_symbol/>
  2691 + <storage_type/>
  2692 + </meta> <meta> <name>bcsj</name>
  2693 + <rename>bcsj</rename>
  2694 + <type>Integer</type>
  2695 + <length>-2</length>
  2696 + <precision>-2</precision>
  2697 + <conversion_mask/>
  2698 + <date_format_lenient>false</date_format_lenient>
  2699 + <date_format_locale/>
  2700 + <date_format_timezone/>
  2701 + <lenient_string_to_number>false</lenient_string_to_number>
  2702 + <encoding/>
  2703 + <decimal_symbol/>
  2704 + <grouping_symbol/>
  2705 + <currency_symbol/>
  2706 + <storage_type/>
  2707 + </meta> </fields> <cluster_schema/>
  2708 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2709 + <xloc>146</xloc>
  2710 + <yloc>768</yloc>
  2711 + <draw>Y</draw>
  2712 + </GUI>
  2713 + </step>
  2714 +
  2715 + <step>
  2716 + <name>&#x7c7b;&#x578b;&#x4fee;&#x6b63; 2</name>
  2717 + <type>SelectValues</type>
  2718 + <description/>
  2719 + <distribute>Y</distribute>
  2720 + <custom_distribution/>
  2721 + <copies>1</copies>
  2722 + <partitioning>
  2723 + <method>none</method>
  2724 + <schema_name/>
  2725 + </partitioning>
  2726 + <fields> <select_unspecified>N</select_unspecified>
  2727 + <meta> <name>out_mileage</name>
  2728 + <rename>out_mileage</rename>
  2729 + <type>Number</type>
  2730 + <length>-2</length>
  2731 + <precision>-2</precision>
  2732 + <conversion_mask/>
  2733 + <date_format_lenient>false</date_format_lenient>
  2734 + <date_format_locale/>
  2735 + <date_format_timezone/>
  2736 + <lenient_string_to_number>false</lenient_string_to_number>
  2737 + <encoding/>
  2738 + <decimal_symbol/>
  2739 + <grouping_symbol/>
  2740 + <currency_symbol/>
  2741 + <storage_type/>
  2742 + </meta> <meta> <name>out_time</name>
  2743 + <rename>out_time</rename>
  2744 + <type>Integer</type>
  2745 + <length>-2</length>
  2746 + <precision>-2</precision>
  2747 + <conversion_mask/>
  2748 + <date_format_lenient>false</date_format_lenient>
  2749 + <date_format_locale/>
  2750 + <date_format_timezone/>
  2751 + <lenient_string_to_number>false</lenient_string_to_number>
  2752 + <encoding/>
  2753 + <decimal_symbol/>
  2754 + <grouping_symbol/>
  2755 + <currency_symbol/>
  2756 + <storage_type/>
  2757 + </meta> <meta> <name>sxx</name>
  2758 + <rename>sxx</rename>
  2759 + <type>Integer</type>
  2760 + <length>-2</length>
  2761 + <precision>-2</precision>
  2762 + <conversion_mask/>
  2763 + <date_format_lenient>false</date_format_lenient>
  2764 + <date_format_locale/>
  2765 + <date_format_timezone/>
  2766 + <lenient_string_to_number>false</lenient_string_to_number>
  2767 + <encoding/>
  2768 + <decimal_symbol/>
  2769 + <grouping_symbol/>
  2770 + <currency_symbol/>
  2771 + <storage_type/>
  2772 + </meta> </fields> <cluster_schema/>
  2773 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2774 + <xloc>338</xloc>
  2775 + <yloc>1008</yloc>
  2776 + <draw>Y</draw>
  2777 + </GUI>
  2778 + </step>
  2779 +
  2780 + <step>
  2781 + <name>&#x7c7b;&#x578b;&#x4fee;&#x6b63; 3</name>
  2782 + <type>SelectValues</type>
  2783 + <description/>
  2784 + <distribute>Y</distribute>
  2785 + <custom_distribution/>
  2786 + <copies>1</copies>
  2787 + <partitioning>
  2788 + <method>none</method>
  2789 + <schema_name/>
  2790 + </partitioning>
  2791 + <fields> <select_unspecified>N</select_unspecified>
  2792 + <meta> <name>parade_mileage</name>
  2793 + <rename>parade_mileage</rename>
  2794 + <type>Number</type>
  2795 + <length>-2</length>
  2796 + <precision>-2</precision>
  2797 + <conversion_mask/>
  2798 + <date_format_lenient>false</date_format_lenient>
  2799 + <date_format_locale/>
  2800 + <date_format_timezone/>
  2801 + <lenient_string_to_number>false</lenient_string_to_number>
  2802 + <encoding/>
  2803 + <decimal_symbol/>
  2804 + <grouping_symbol/>
  2805 + <currency_symbol/>
  2806 + <storage_type/>
  2807 + </meta> <meta> <name>parade_time</name>
  2808 + <rename>parade_time</rename>
  2809 + <type>Integer</type>
  2810 + <length>-2</length>
  2811 + <precision>-2</precision>
  2812 + <conversion_mask/>
  2813 + <date_format_lenient>false</date_format_lenient>
  2814 + <date_format_locale/>
  2815 + <date_format_timezone/>
  2816 + <lenient_string_to_number>false</lenient_string_to_number>
  2817 + <encoding/>
  2818 + <decimal_symbol/>
  2819 + <grouping_symbol/>
  2820 + <currency_symbol/>
  2821 + <storage_type/>
  2822 + </meta> <meta> <name>sxx2</name>
  2823 + <rename>sxx2</rename>
  2824 + <type>Integer</type>
  2825 + <length>-2</length>
  2826 + <precision>-2</precision>
  2827 + <conversion_mask/>
  2828 + <date_format_lenient>false</date_format_lenient>
  2829 + <date_format_locale/>
  2830 + <date_format_timezone/>
  2831 + <lenient_string_to_number>false</lenient_string_to_number>
  2832 + <encoding/>
  2833 + <decimal_symbol/>
  2834 + <grouping_symbol/>
  2835 + <currency_symbol/>
  2836 + <storage_type/>
  2837 + </meta> </fields> <cluster_schema/>
  2838 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2839 + <xloc>847</xloc>
  2840 + <yloc>1003</yloc>
  2841 + <draw>Y</draw>
  2842 + </GUI>
  2843 + </step>
  2844 +
  2845 + <step>
  2846 + <name>&#x8ba1;&#x7b97;&#x73ed;&#x6b21;&#x7c7b;&#x578b;</name>
  2847 + <type>ValueMapper</type>
  2848 + <description/>
  2849 + <distribute>Y</distribute>
  2850 + <custom_distribution/>
  2851 + <copies>1</copies>
  2852 + <partitioning>
  2853 + <method>none</method>
  2854 + <schema_name/>
  2855 + </partitioning>
  2856 + <field_to_use>qdzname</field_to_use>
  2857 + <target_field>bctype</target_field>
  2858 + <non_match_default>&#x6b63;&#x5e38;&#x73ed;&#x6b21;</non_match_default>
  2859 + <fields>
  2860 + <field>
  2861 + <source_value>&#x51fa;&#x573a;</source_value>
  2862 + <target_value>&#x51fa;&#x573a;</target_value>
  2863 + </field>
  2864 + <field>
  2865 + <source_value>&#x8fdb;&#x573a;</source_value>
  2866 + <target_value>&#x8fdb;&#x573a;</target_value>
  2867 + </field>
  2868 + </fields>
  2869 + <cluster_schema/>
  2870 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2871 + <xloc>1014</xloc>
  2872 + <yloc>401</yloc>
  2873 + <draw>Y</draw>
  2874 + </GUI>
  2875 + </step>
  2876 +
  2877 + <step>
  2878 + <name>&#x8bb0;&#x5f55;&#x5173;&#x8054; &#x28;&#x7b1b;&#x5361;&#x5c14;&#x8f93;&#x51fa;&#x29;</name>
  2879 + <type>JoinRows</type>
  2880 + <description/>
  2881 + <distribute>Y</distribute>
  2882 + <custom_distribution/>
  2883 + <copies>1</copies>
  2884 + <partitioning>
  2885 + <method>none</method>
  2886 + <schema_name/>
  2887 + </partitioning>
  2888 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  2889 + <prefix>out</prefix>
  2890 + <cache_size>500</cache_size>
  2891 + <main/>
  2892 + <compare>
  2893 +<condition>
  2894 + <negated>N</negated>
  2895 + <leftvalue/>
  2896 + <function>&#x3d;</function>
  2897 + <rightvalue/>
  2898 + </condition>
  2899 + </compare>
  2900 + <cluster_schema/>
  2901 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2902 + <xloc>310</xloc>
  2903 + <yloc>133</yloc>
  2904 + <draw>Y</draw>
  2905 + </GUI>
  2906 + </step>
  2907 +
  2908 + <step>
  2909 + <name>&#x8fc7;&#x6ee4;&#x8bb0;&#x5f55;&#xff08;&#x53d1;&#x8f66;&#x65f6;&#x95f4;&#x4e3a;&#x7a7a;&#xff09;</name>
  2910 + <type>FilterRows</type>
  2911 + <description/>
  2912 + <distribute>Y</distribute>
  2913 + <custom_distribution/>
  2914 + <copies>1</copies>
  2915 + <partitioning>
  2916 + <method>none</method>
  2917 + <schema_name/>
  2918 + </partitioning>
  2919 +<send_true_to/>
  2920 +<send_false_to/>
  2921 + <compare>
  2922 +<condition>
  2923 + <negated>N</negated>
  2924 + <leftvalue>sendtime</leftvalue>
  2925 + <function>IS NOT NULL</function>
  2926 + <rightvalue/>
  2927 + </condition>
  2928 + </compare>
  2929 + <cluster_schema/>
  2930 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2931 + <xloc>571</xloc>
  2932 + <yloc>44</yloc>
  2933 + <draw>Y</draw>
  2934 + </GUI>
  2935 + </step>
  2936 +
  2937 + <step>
  2938 + <name>&#x8fdb;&#x573a;&#x73ed;&#x6b21;_&#x786e;&#x5b9a;&#x8d77;&#x70b9;&#x7ad9;&#x540d;&#x5b57;</name>
  2939 + <type>ScriptValueMod</type>
  2940 + <description/>
  2941 + <distribute>Y</distribute>
  2942 + <custom_distribution/>
  2943 + <copies>1</copies>
  2944 + <partitioning>
  2945 + <method>none</method>
  2946 + <schema_name/>
  2947 + </partitioning>
  2948 + <compatible>N</compatible>
  2949 + <optimizationLevel>9</optimizationLevel>
  2950 + <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
  2951 + <jsScript_name>Script 1</jsScript_name>
  2952 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;&#x2f;&#x2f; &#x6dfb;&#x52a0;&#x7ad9;&#x70b9;&#x6807;&#x8bc6;&#xa;var cc_groups &#x3d; qdzgroups.split&#x28;&#x22;,&#x22;&#x29;&#x3b; &#x2f;&#x2f; &#x6240;&#x6709;&#x73ed;&#x6b21;&#x8d77;&#x70b9;&#x7ad9;&#x6570;&#x7ec4;&#xa;var qdzname_calcu &#x3d; cc_groups&#x5b;gno - 2&#x5d;&#x3b; &#x2f;&#x2f; &#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x7684;&#x8d77;&#x70b9;&#x7ad9;&#x662f;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x7ec8;&#x70b9;&#x7ad9;&#xff0c;&#x8fd9;&#x91cc;&#x53ea;&#x6709;&#x4e0a;&#x4e00;&#x4e2a;&#x73ed;&#x6b21;&#x7684;&#x8d77;&#x70b9;&#x7ad9;&#xff0c;&#x8fd8;&#x9700;&#x8981;&#x8ba1;&#x7b97;&#xa;var startZdtype_calcu &#x3d; &#x27;B&#x27;&#x3b;&#xa;var endZdtype_calcu &#x3d; &#x27;E&#x27;&#x3b;&#xa;&#xa;var destory &#x3d; 0&#x3b; &#x2f;&#x2f; &#x672a;&#x64a4;&#x9500;flag</jsScript_script>
  2953 + </jsScript> </jsScripts> <fields> <field> <name>qdzname_calcu</name>
  2954 + <rename>qdzname_calcu</rename>
  2955 + <type>String</type>
  2956 + <length>-1</length>
  2957 + <precision>-1</precision>
  2958 + <replace>N</replace>
  2959 + </field> <field> <name>startZdtype_calcu</name>
  2960 + <rename>startZdtype_calcu</rename>
  2961 + <type>String</type>
  2962 + <length>-1</length>
  2963 + <precision>-1</precision>
  2964 + <replace>N</replace>
  2965 + </field> <field> <name>endZdtype_calcu</name>
  2966 + <rename>endZdtype_calcu</rename>
  2967 + <type>String</type>
  2968 + <length>-1</length>
  2969 + <precision>-1</precision>
  2970 + <replace>N</replace>
  2971 + </field> <field> <name>destory</name>
  2972 + <rename>destory</rename>
  2973 + <type>Integer</type>
  2974 + <length>-1</length>
  2975 + <precision>-1</precision>
  2976 + <replace>N</replace>
  2977 + </field> </fields> <cluster_schema/>
  2978 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2979 + <xloc>754</xloc>
  2980 + <yloc>610</yloc>
  2981 + <draw>Y</draw>
  2982 + </GUI>
  2983 + </step>
  2984 +
  2985 + <step>
  2986 + <name>&#x8fdb;&#x573a;&#x73ed;&#x6b21;&#x6570;&#x636e;</name>
  2987 + <type>Dummy</type>
  2988 + <description/>
  2989 + <distribute>Y</distribute>
  2990 + <custom_distribution/>
  2991 + <copies>1</copies>
  2992 + <partitioning>
  2993 + <method>none</method>
  2994 + <schema_name/>
  2995 + </partitioning>
  2996 + <cluster_schema/>
  2997 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  2998 + <xloc>997</xloc>
  2999 + <yloc>606</yloc>
  3000 + <draw>Y</draw>
  3001 + </GUI>
  3002 + </step>
  3003 +
  3004 + <step_error_handling>
  3005 + <error>
  3006 + <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ttinfo_detail</source_step>
  3007 + <target_step/>
  3008 + <is_enabled>Y</is_enabled>
  3009 + <nr_valuename>c1</nr_valuename>
  3010 + <descriptions_valuename>c2</descriptions_valuename>
  3011 + <fields_valuename>c3</fields_valuename>
  3012 + <codes_valuename>c4</codes_valuename>
  3013 + <max_errors/>
  3014 + <max_pct_errors/>
  3015 + <min_pct_rows/>
  3016 + </error>
  3017 + </step_error_handling>
  3018 + <slave-step-copy-partition-distribution>
  3019 +</slave-step-copy-partition-distribution>
  3020 + <slave_transformation>N</slave_transformation>
  3021 +
  3022 +</transformation>
... ...
src/main/resources/datatools/ktrs/ttinfodetailDataInput.ktr
... ... @@ -696,7 +696,7 @@
696 696 <optimizationLevel>9</optimizationLevel>
697 697 <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
698 698 <jsScript_name>Script 1</jsScript_name>
699   - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var jhlc&#x3b; &#x2f;&#x2f; &#x8ba1;&#x5212;&#x91cc;&#x7a0b;&#xa;var bcsj&#x3b; &#x2f;&#x2f; &#x73ed;&#x6b21;&#x65f6;&#x95f4;&#xa;&#xa;&#x2f;&#x2f; &#x65f6;&#x95f4;&#x8303;&#x56f4;&#x6b63;&#x5219;&#x8868;&#x8fbe;&#x5f0f;&#xa;var timeRex &#x3d; &#x2f;&#x5e;&#x28;&#x5b;01&#x5d;&#x3f;&#x5b;0-9&#x5d;&#x7c;2&#x5b;0-3&#x5d;&#x29;&#x3a;&#x5b;0-5&#x5d;&#x5b;0-9&#x5d;&#x24;&#x2f;&#x3b;&#xa;&#x2f;&#x2f; &#x53d1;&#x8f66;&#x65f6;&#x95f4;&#x8f6c;&#x6362;&#x6210;&#x65e5;&#x671f;&#xa;var fcsj_hour &#x3d; str2num&#x28;sendtime_calcu.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa;var fcsj_min &#x3d; str2num&#x28;sendtime_calcu.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa;var fcsj_date &#x3d; new Date&#x28;2000,1,1,fcsj_hour,fcsj_min,0&#x29;&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x5224;&#x5b9a;&#x662f;&#x5426;&#x65e9;&#x9ad8;&#x5cf0;&#xa;var isZgf &#x3d; false&#x3b;&#xa;if &#x28;timeRex.test&#x28;early_start_time&#x29; &#x26;&#x26; timeRex.test&#x28;early_end_time&#x29; &#x26;&#x26; early_up_time &#x21;&#x3d; null &#x26;&#x26; early_down_time &#x21;&#x3d; null&#x29; &#x7b;&#xa; var early_s_hour &#x3d; str2num&#x28;early_start_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_s_min &#x3d; str2num&#x28;early_start_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_s_date &#x3d; new Date&#x28;2000,1,1,early_s_hour,early_s_min,0&#x29;&#x3b;&#xa;&#xa; var early_e_hour &#x3d; str2num&#x28;early_end_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_e_min &#x3d; str2num&#x28;early_end_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_e_date &#x3d; new Date&#x28;2000,1,1,early_e_hour,early_e_min,0&#x29;&#x3b;&#xa;&#xa; if &#x28;fcsj_date &#x3e;&#x3d; early_s_date &#x26;&#x26; fcsj_date &#x3c;&#x3d; early_e_date&#x29; &#x7b;&#xa; isZgf &#x3d; true&#x3b;&#xa; &#x7d;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x5224;&#x5b9a;&#x662f;&#x5426;&#x665a;&#x9ad8;&#x5cf0;&#xa;var isWgf &#x3d; false&#x3b;&#xa;if &#x28;timeRex.test&#x28;late_start_time&#x29; &#x26;&#x26; timeRex.test&#x28;late_end_time&#x29; &#x26;&#x26; late_up_time &#x21;&#x3d; null &#x26;&#x26; late_down_time &#x21;&#x3d; null&#x29; &#x7b;&#xa; var late_s_hour &#x3d; str2num&#x28;late_start_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_s_min &#x3d; str2num&#x28;late_start_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_s_date &#x3d; new Date&#x28;2000,1,1,late_s_hour,late_s_min,0&#x29;&#x3b;&#xa;&#xa; var late_e_hour &#x3d; str2num&#x28;late_end_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_e_min &#x3d; str2num&#x28;late_end_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_e_date &#x3d; new Date&#x28;2000,1,1,late_e_hour,late_e_min,0&#x29;&#x3b;&#xa;&#xa; if &#x28;fcsj_date &#x3e;&#x3d; late_s_date &#x26;&#x26; fcsj_date &#x3c;&#x3d; late_e_date&#x29; &#x7b;&#xa; isWgf &#x3d; true&#x3b;&#xa; &#x7d;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x5224;&#x5b9a;&#x662f;&#x5426;&#x665a;&#x9ad8;&#x5cf0;&#xa;&#xa;if &#x28;sxx &#x3d;&#x3d; 0&#x29; &#x7b; &#x2f;&#x2f; &#x4e0a;&#x884c;&#xa; if &#x28;isZgf&#x29; &#x7b;&#xa; jhlc &#x3d; up_mileage&#x3b;&#xa; bcsj &#x3d; early_up_time &#x3f; early_up_time &#x3a; up_travel_time&#x3b;&#xa; &#x7d; else if &#x28;isWgf&#x29; &#x7b;&#xa; jhlc &#x3d; up_mileage&#x3b;&#xa; bcsj &#x3d; late_up_time &#x3f; late_up_time &#x3a; up_travel_time&#x3b;&#xa; &#x7d; else &#x7b;&#xa; jhlc &#x3d; up_mileage&#x3b;&#xa; bcsj &#x3d; up_travel_time&#x3b;&#xa; &#x7d;&#xa;&#x7d; else &#x7b; &#x2f;&#x2f; sxx &#x3d;&#x3d; 1 &#x4e0b;&#x884c;&#xa; if &#x28;isZgf&#x29; &#x7b;&#xa; jhlc &#x3d; down_mileage&#x3b;&#xa; bcsj &#x3d; early_down_time &#x3f; early_down_time &#x3a; down_travel_time&#x3b;&#xa; &#x7d; else if &#x28;isWgf&#x29; &#x7b;&#xa; jhlc &#x3d; down_mileage&#x3b;&#xa; bcsj &#x3d; late_down_time &#x3f; late_down_time &#x3a; down_travel_time&#x3b;&#xa; &#x7d; else &#x7b;&#xa; jhlc &#x3d; down_mileage&#x3b;&#xa; bcsj &#x3d; down_travel_time&#x3b;&#xa; &#x7d;&#xa;&#x7d;&#xa;&#xa;</jsScript_script>
  699 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var jhlc&#x3b; &#x2f;&#x2f; &#x8ba1;&#x5212;&#x91cc;&#x7a0b;&#xa;var bcsj&#x3b; &#x2f;&#x2f; &#x73ed;&#x6b21;&#x65f6;&#x95f4;&#xa;&#xa;&#x2f;&#x2f; &#x65f6;&#x95f4;&#x8303;&#x56f4;&#x6b63;&#x5219;&#x8868;&#x8fbe;&#x5f0f;&#xa;var timeRex &#x3d; &#x2f;&#x5e;&#x28;&#x5b;01&#x5d;&#x3f;&#x5b;0-9&#x5d;&#x7c;2&#x5b;0-3&#x5d;&#x29;&#x3a;&#x5b;0-5&#x5d;&#x5b;0-9&#x5d;&#x24;&#x2f;&#x3b;&#xa;&#x2f;&#x2f; &#x53d1;&#x8f66;&#x65f6;&#x95f4;&#x8f6c;&#x6362;&#x6210;&#x65e5;&#x671f;&#xa;var fcsj_hour &#x3d; str2num&#x28;sendtime_calcu.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa;var fcsj_min &#x3d; str2num&#x28;sendtime_calcu.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa;var fcsj_date &#x3d; new Date&#x28;2000,1,1,fcsj_hour,fcsj_min,0&#x29;&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x5224;&#x5b9a;&#x662f;&#x5426;&#x65e9;&#x9ad8;&#x5cf0;&#xa;var isZgf &#x3d; false&#x3b;&#xa;if &#x28;timeRex.test&#x28;early_start_time&#x29; &#x26;&#x26; timeRex.test&#x28;early_end_time&#x29; &#x26;&#x26; early_up_time &#x21;&#x3d; null &#x26;&#x26; early_down_time &#x21;&#x3d; null&#x29; &#x7b;&#xa; var early_s_hour &#x3d; str2num&#x28;early_start_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_s_min &#x3d; str2num&#x28;early_start_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_s_date &#x3d; new Date&#x28;2000,1,1,early_s_hour,early_s_min,0&#x29;&#x3b;&#xa;&#xa; var early_e_hour &#x3d; str2num&#x28;early_end_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_e_min &#x3d; str2num&#x28;early_end_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_e_date &#x3d; new Date&#x28;2000,1,1,early_e_hour,early_e_min,0&#x29;&#x3b;&#xa;&#xa; if &#x28;fcsj_date &#x3e;&#x3d; early_s_date &#x26;&#x26; fcsj_date &#x3c;&#x3d; early_e_date&#x29; &#x7b;&#xa; isZgf &#x3d; true&#x3b;&#xa; &#x7d;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x5224;&#x5b9a;&#x662f;&#x5426;&#x665a;&#x9ad8;&#x5cf0;&#xa;var isWgf &#x3d; false&#x3b;&#xa;if &#x28;timeRex.test&#x28;late_start_time&#x29; &#x26;&#x26; timeRex.test&#x28;late_end_time&#x29; &#x26;&#x26; late_up_time &#x21;&#x3d; null &#x26;&#x26; late_down_time &#x21;&#x3d; null&#x29; &#x7b;&#xa; var late_s_hour &#x3d; str2num&#x28;late_start_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_s_min &#x3d; str2num&#x28;late_start_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_s_date &#x3d; new Date&#x28;2000,1,1,late_s_hour,late_s_min,0&#x29;&#x3b;&#xa;&#xa; var late_e_hour &#x3d; str2num&#x28;late_end_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_e_min &#x3d; str2num&#x28;late_end_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_e_date &#x3d; new Date&#x28;2000,1,1,late_e_hour,late_e_min,0&#x29;&#x3b;&#xa;&#xa; if &#x28;fcsj_date &#x3e;&#x3d; late_s_date &#x26;&#x26; fcsj_date &#x3c;&#x3d; late_e_date&#x29; &#x7b;&#xa; isWgf &#x3d; true&#x3b;&#xa; &#x7d;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x5224;&#x5b9a;&#x662f;&#x5426;&#x665a;&#x9ad8;&#x5cf0;&#xa;&#xa;if &#x28;sxx &#x3d;&#x3d; 0&#x29; &#x7b; &#x2f;&#x2f; &#x4e0a;&#x884c;&#xa; if &#x28;isZgf&#x29; &#x7b;&#xa; jhlc &#x3d; up_mileage&#x3b;&#xa; bcsj &#x3d; early_up_time &#x21;&#x3d; 0 &#x3f; early_up_time &#x3a; up_travel_time&#x3b;&#xa; &#x7d; else if &#x28;isWgf&#x29; &#x7b;&#xa; jhlc &#x3d; up_mileage&#x3b;&#xa; bcsj &#x3d; late_up_time &#x21;&#x3d; 0 &#x3f; late_up_time &#x3a; up_travel_time&#x3b;&#xa; &#x7d; else &#x7b;&#xa; jhlc &#x3d; up_mileage&#x3b;&#xa; bcsj &#x3d; up_travel_time&#x3b;&#xa; &#x7d;&#xa;&#x7d; else &#x7b; &#x2f;&#x2f; sxx &#x3d;&#x3d; 1 &#x4e0b;&#x884c;&#xa; if &#x28;isZgf&#x29; &#x7b;&#xa; jhlc &#x3d; down_mileage&#x3b;&#xa; bcsj &#x3d; early_down_time &#x21;&#x3d; 0 &#x3f; early_down_time &#x3a; down_travel_time&#x3b;&#xa; &#x7d; else if &#x28;isWgf&#x29; &#x7b;&#xa; jhlc &#x3d; down_mileage&#x3b;&#xa; bcsj &#x3d; late_down_time &#x21;&#x3d; 0 &#x3f; late_down_time &#x3a; down_travel_time&#x3b;&#xa; &#x7d; else &#x7b;&#xa; jhlc &#x3d; down_mileage&#x3b;&#xa; bcsj &#x3d; down_travel_time&#x3b;&#xa; &#x7d;&#xa;&#x7d;&#xa;&#xa;</jsScript_script>
700 700 </jsScript> </jsScripts> <fields> <field> <name>jhlc</name>
701 701 <rename>jhlc</rename>
702 702 <type>String</type>
... ...
src/main/resources/datatools/ktrs/ttinfodetailDataInput2.ktr
... ... @@ -696,7 +696,7 @@
696 696 <optimizationLevel>9</optimizationLevel>
697 697 <jsScripts> <jsScript> <jsScript_type>0</jsScript_type>
698 698 <jsScript_name>Script 1</jsScript_name>
699   - <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var jhlc&#x3b; &#x2f;&#x2f; &#x8ba1;&#x5212;&#x91cc;&#x7a0b;&#xa;var bcsj&#x3b; &#x2f;&#x2f; &#x73ed;&#x6b21;&#x65f6;&#x95f4;&#xa;&#xa;&#x2f;&#x2f; &#x65f6;&#x95f4;&#x8303;&#x56f4;&#x6b63;&#x5219;&#x8868;&#x8fbe;&#x5f0f;&#xa;var timeRex &#x3d; &#x2f;&#x5e;&#x28;&#x5b;01&#x5d;&#x3f;&#x5b;0-9&#x5d;&#x7c;2&#x5b;0-3&#x5d;&#x29;&#x3a;&#x5b;0-5&#x5d;&#x5b;0-9&#x5d;&#x24;&#x2f;&#x3b;&#xa;&#x2f;&#x2f; &#x53d1;&#x8f66;&#x65f6;&#x95f4;&#x8f6c;&#x6362;&#x6210;&#x65e5;&#x671f;&#xa;var fcsj_hour &#x3d; str2num&#x28;sendtime_calcu.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa;var fcsj_min &#x3d; str2num&#x28;sendtime_calcu.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa;var fcsj_date &#x3d; new Date&#x28;2000,1,1,fcsj_hour,fcsj_min,0&#x29;&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x5224;&#x5b9a;&#x662f;&#x5426;&#x65e9;&#x9ad8;&#x5cf0;&#xa;var isZgf &#x3d; false&#x3b;&#xa;if &#x28;timeRex.test&#x28;early_start_time&#x29; &#x26;&#x26; timeRex.test&#x28;early_end_time&#x29; &#x26;&#x26; early_up_time &#x21;&#x3d; null &#x26;&#x26; early_down_time &#x21;&#x3d; null&#x29; &#x7b;&#xa; var early_s_hour &#x3d; str2num&#x28;early_start_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_s_min &#x3d; str2num&#x28;early_start_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_s_date &#x3d; new Date&#x28;2000,1,1,early_s_hour,early_s_min,0&#x29;&#x3b;&#xa;&#xa; var early_e_hour &#x3d; str2num&#x28;early_end_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_e_min &#x3d; str2num&#x28;early_end_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_e_date &#x3d; new Date&#x28;2000,1,1,early_e_hour,early_e_min,0&#x29;&#x3b;&#xa;&#xa; if &#x28;fcsj_date &#x3e;&#x3d; early_s_date &#x26;&#x26; fcsj_date &#x3c;&#x3d; early_e_date&#x29; &#x7b;&#xa; isZgf &#x3d; true&#x3b;&#xa; &#x7d;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x5224;&#x5b9a;&#x662f;&#x5426;&#x665a;&#x9ad8;&#x5cf0;&#xa;var isWgf &#x3d; false&#x3b;&#xa;if &#x28;timeRex.test&#x28;late_start_time&#x29; &#x26;&#x26; timeRex.test&#x28;late_end_time&#x29; &#x26;&#x26; late_up_time &#x21;&#x3d; null &#x26;&#x26; late_down_time &#x21;&#x3d; null&#x29; &#x7b;&#xa; var late_s_hour &#x3d; str2num&#x28;late_start_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_s_min &#x3d; str2num&#x28;late_start_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_s_date &#x3d; new Date&#x28;2000,1,1,late_s_hour,late_s_min,0&#x29;&#x3b;&#xa;&#xa; var late_e_hour &#x3d; str2num&#x28;late_end_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_e_min &#x3d; str2num&#x28;late_end_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_e_date &#x3d; new Date&#x28;2000,1,1,late_e_hour,late_e_min,0&#x29;&#x3b;&#xa;&#xa; if &#x28;fcsj_date &#x3e;&#x3d; late_s_date &#x26;&#x26; fcsj_date &#x3c;&#x3d; late_e_date&#x29; &#x7b;&#xa; isWgf &#x3d; true&#x3b;&#xa; &#x7d;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x5224;&#x5b9a;&#x662f;&#x5426;&#x665a;&#x9ad8;&#x5cf0;&#xa;&#xa;if &#x28;sxx &#x3d;&#x3d; 0&#x29; &#x7b; &#x2f;&#x2f; &#x4e0a;&#x884c;&#xa; if &#x28;isZgf&#x29; &#x7b;&#xa; jhlc &#x3d; up_mileage&#x3b;&#xa; bcsj &#x3d; early_up_time &#x3f; early_up_time &#x3a; up_travel_time&#x3b;&#xa; &#x7d; else if &#x28;isWgf&#x29; &#x7b;&#xa; jhlc &#x3d; up_mileage&#x3b;&#xa; bcsj &#x3d; late_up_time &#x3f; late_up_time &#x3a; up_travel_time&#x3b;&#xa; &#x7d; else &#x7b;&#xa; jhlc &#x3d; up_mileage&#x3b;&#xa; bcsj &#x3d; up_travel_time&#x3b;&#xa; &#x7d;&#xa;&#x7d; else &#x7b; &#x2f;&#x2f; sxx &#x3d;&#x3d; 1 &#x4e0b;&#x884c;&#xa; if &#x28;isZgf&#x29; &#x7b;&#xa; jhlc &#x3d; down_mileage&#x3b;&#xa; bcsj &#x3d; early_down_time &#x3f; early_down_time &#x3a; down_travel_time&#x3b;&#xa; &#x7d; else if &#x28;isWgf&#x29; &#x7b;&#xa; jhlc &#x3d; down_mileage&#x3b;&#xa; bcsj &#x3d; late_down_time &#x3f; late_down_time &#x3a; down_travel_time&#x3b;&#xa; &#x7d; else &#x7b;&#xa; jhlc &#x3d; down_mileage&#x3b;&#xa; bcsj &#x3d; down_travel_time&#x3b;&#xa; &#x7d;&#xa;&#x7d;</jsScript_script>
  699 + <jsScript_script>&#x2f;&#x2f;Script here&#xa;&#xa;var jhlc&#x3b; &#x2f;&#x2f; &#x8ba1;&#x5212;&#x91cc;&#x7a0b;&#xa;var bcsj&#x3b; &#x2f;&#x2f; &#x73ed;&#x6b21;&#x65f6;&#x95f4;&#xa;&#xa;&#x2f;&#x2f; &#x65f6;&#x95f4;&#x8303;&#x56f4;&#x6b63;&#x5219;&#x8868;&#x8fbe;&#x5f0f;&#xa;var timeRex &#x3d; &#x2f;&#x5e;&#x28;&#x5b;01&#x5d;&#x3f;&#x5b;0-9&#x5d;&#x7c;2&#x5b;0-3&#x5d;&#x29;&#x3a;&#x5b;0-5&#x5d;&#x5b;0-9&#x5d;&#x24;&#x2f;&#x3b;&#xa;&#x2f;&#x2f; &#x53d1;&#x8f66;&#x65f6;&#x95f4;&#x8f6c;&#x6362;&#x6210;&#x65e5;&#x671f;&#xa;var fcsj_hour &#x3d; str2num&#x28;sendtime_calcu.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa;var fcsj_min &#x3d; str2num&#x28;sendtime_calcu.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa;var fcsj_date &#x3d; new Date&#x28;2000,1,1,fcsj_hour,fcsj_min,0&#x29;&#x3b;&#xa;&#xa;&#x2f;&#x2f; &#x5224;&#x5b9a;&#x662f;&#x5426;&#x65e9;&#x9ad8;&#x5cf0;&#xa;var isZgf &#x3d; false&#x3b;&#xa;if &#x28;timeRex.test&#x28;early_start_time&#x29; &#x26;&#x26; timeRex.test&#x28;early_end_time&#x29; &#x26;&#x26; early_up_time &#x21;&#x3d; null &#x26;&#x26; early_down_time &#x21;&#x3d; null&#x29; &#x7b;&#xa; var early_s_hour &#x3d; str2num&#x28;early_start_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_s_min &#x3d; str2num&#x28;early_start_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_s_date &#x3d; new Date&#x28;2000,1,1,early_s_hour,early_s_min,0&#x29;&#x3b;&#xa;&#xa; var early_e_hour &#x3d; str2num&#x28;early_end_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_e_min &#x3d; str2num&#x28;early_end_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var early_e_date &#x3d; new Date&#x28;2000,1,1,early_e_hour,early_e_min,0&#x29;&#x3b;&#xa;&#xa; if &#x28;fcsj_date &#x3e;&#x3d; early_s_date &#x26;&#x26; fcsj_date &#x3c;&#x3d; early_e_date&#x29; &#x7b;&#xa; isZgf &#x3d; true&#x3b;&#xa; &#x7d;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x5224;&#x5b9a;&#x662f;&#x5426;&#x665a;&#x9ad8;&#x5cf0;&#xa;var isWgf &#x3d; false&#x3b;&#xa;if &#x28;timeRex.test&#x28;late_start_time&#x29; &#x26;&#x26; timeRex.test&#x28;late_end_time&#x29; &#x26;&#x26; late_up_time &#x21;&#x3d; null &#x26;&#x26; late_down_time &#x21;&#x3d; null&#x29; &#x7b;&#xa; var late_s_hour &#x3d; str2num&#x28;late_start_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_s_min &#x3d; str2num&#x28;late_start_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_s_date &#x3d; new Date&#x28;2000,1,1,late_s_hour,late_s_min,0&#x29;&#x3b;&#xa;&#xa; var late_e_hour &#x3d; str2num&#x28;late_end_time.substr&#x28;0, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_e_min &#x3d; str2num&#x28;late_end_time.substr&#x28;3, 2&#x29;, &#x22;&#x23;&#x22;&#x29;&#x3b;&#xa; var late_e_date &#x3d; new Date&#x28;2000,1,1,late_e_hour,late_e_min,0&#x29;&#x3b;&#xa;&#xa; if &#x28;fcsj_date &#x3e;&#x3d; late_s_date &#x26;&#x26; fcsj_date &#x3c;&#x3d; late_e_date&#x29; &#x7b;&#xa; isWgf &#x3d; true&#x3b;&#xa; &#x7d;&#xa;&#x7d;&#xa;&#xa;&#x2f;&#x2f; &#x5224;&#x5b9a;&#x662f;&#x5426;&#x665a;&#x9ad8;&#x5cf0;&#xa;&#xa;if &#x28;sxx &#x3d;&#x3d; 0&#x29; &#x7b; &#x2f;&#x2f; &#x4e0a;&#x884c;&#xa; if &#x28;isZgf&#x29; &#x7b;&#xa; jhlc &#x3d; up_mileage&#x3b;&#xa; bcsj &#x3d; early_up_time &#x21;&#x3d; 0 &#x3f; early_up_time &#x3a; up_travel_time&#x3b;&#xa; &#x7d; else if &#x28;isWgf&#x29; &#x7b;&#xa; jhlc &#x3d; up_mileage&#x3b;&#xa; bcsj &#x3d; late_up_time &#x21;&#x3d; 0 &#x3f; late_up_time &#x3a; up_travel_time&#x3b;&#xa; &#x7d; else &#x7b;&#xa; jhlc &#x3d; up_mileage&#x3b;&#xa; bcsj &#x3d; up_travel_time&#x3b;&#xa; &#x7d;&#xa;&#x7d; else &#x7b; &#x2f;&#x2f; sxx &#x3d;&#x3d; 1 &#x4e0b;&#x884c;&#xa; if &#x28;isZgf&#x29; &#x7b;&#xa; jhlc &#x3d; down_mileage&#x3b;&#xa; bcsj &#x3d; early_down_time &#x21;&#x3d; 0 &#x3f; early_down_time &#x3a; down_travel_time&#x3b;&#xa; &#x7d; else if &#x28;isWgf&#x29; &#x7b;&#xa; jhlc &#x3d; down_mileage&#x3b;&#xa; bcsj &#x3d; late_down_time &#x21;&#x3d; 0 &#x3f; late_down_time &#x3a; down_travel_time&#x3b;&#xa; &#x7d; else &#x7b;&#xa; jhlc &#x3d; down_mileage&#x3b;&#xa; bcsj &#x3d; down_travel_time&#x3b;&#xa; &#x7d;&#xa;&#x7d;</jsScript_script>
700 700 </jsScript> </jsScripts> <fields> <field> <name>jhlc</name>
701 701 <rename>jhlc</rename>
702 702 <type>String</type>
... ...
src/main/resources/rules/validplan.drl
1 1 package com.bsth.service.schedule.rules.validate;
2 2  
3 3 import com.bsth.entity.schedule.SchedulePlanInfo;
  4 +import com.bsth.service.schedule.rules.ttinfo.LpInfoResult_output;
4 5  
5 6 import org.joda.time.*;
6 7 import java.util.*;
... ... @@ -60,6 +61,40 @@ rule &quot;Valid_repeat_bc&quot; // 验证是否存在重复班次
60 61  
61 62 end
62 63  
  64 +//
  65 +//declare LpInfo_wrap
  66 +// sd: DateTime // 具体日期
  67 +// lpId: Long // 路牌Id
  68 +// isPlan: Boolean = false // 是否排班
  69 +//end
  70 +//
  71 +//rule "Calcu_LpInfo_wrap"
  72 +// salience 500
  73 +// when
  74 +// $lp: LpInfoResult_output()
  75 +// then
  76 +// LpInfo_wrap ll = new LpInfo_wrap();
  77 +// ll.setSd($lp.getDateTime());
  78 +// ll.setLpId(Long.parseLong($lp.getLpId()));
  79 +//
  80 +// insert(ll);
  81 +//end
  82 +//
  83 +//rule "Valid_Lp_plan" // 查看路牌是否被排班
  84 +// salience 400
  85 +// no-loop
  86 +// when
  87 +// $sp: SchedulePlanInfo($lp: lp)
  88 +// $ll: LpInfo_wrap(lpId == $lp)
  89 +// then
  90 +// $ll.setIsPlan(true);
  91 +// update($ll);
  92 +//end
  93 +//
  94 +//// TODO:
  95 +
  96 +
  97 +
63 98  
64 99  
65 100  
... ...
src/main/resources/static/pages/forms/statement/timeAndSpeed.html
... ... @@ -354,6 +354,7 @@
354 354 _w_table_rowspan("#works", 4);
355 355 }
356 356 });
  357 + $("html,body").animate({scrollTop:$("#works").offset().top},700);
357 358 });
358 359 });
359 360 }
... ...
src/main/resources/static/pages/mforms/turnoutrates/turnoutrate.html
... ... @@ -37,15 +37,15 @@
37 37 <div class="portlet light porttlet-fit bordered">
38 38 <div class="portlet-title">
39 39 <form class="form-inline" action="" method="post">
40   - <div style="display: inline-block; margin-left: 33px;" id="gsdmDiv_turn">
  40 + <div style="display: inline-block; margin-left: 20px;" id="gsdmDiv_turn">
41 41 <span class="item-label" style="width: 80px;">公司: </span>
42 42 <select class="form-control" name="company" id="gsdmTurn" style="width: 140px;"></select>
43 43 </div>
44   - <div style="display: inline-block; margin-left: 24px;" id="fgsdmDiv_turn">
  44 + <div style="display: inline-block; margin-left: 20px;" id="fgsdmDiv_turn">
45 45 <span class="item-label" style="width: 80px;">分公司: </span>
46 46 <select class="form-control" name="subCompany" id="fgsdmTurn" style="width: 140px;"></select>
47 47 </div>
48   - <div style="display: inline-block;">
  48 + <div style="display: inline-block; margin-left: 15px;">
49 49 <span class="item-label" style="width: 80px;">线路: </span>
50 50 <select class="form-control" name="line" id="line" style="width: 120px;"></select>
51 51 </div>
... ... @@ -124,6 +124,17 @@
124 124 locale : 'zh-cn'
125 125 });
126 126  
  127 + var d = new Date();
  128 + var year = d.getFullYear();
  129 + var month = d.getMonth() + 1;
  130 + var day = d.getDate();
  131 + if(month < 10)
  132 + month = "0" + month;
  133 + if(day < 10)
  134 + day = "0" + day;
  135 + $("#startDate").val(year + "-" + month + "-" + day);
  136 + $("#endDate").val(year + "-" + month + "-" + day);
  137 +
127 138 var fage=false;
128 139 var xlList;
129 140 var obj = [];
... ... @@ -167,6 +178,7 @@
167 178 $("#fgsdmTurn").on("change",initXl);
168 179 function initXl(){
169 180 var data=[];
  181 + data.push({id:" ", text:"全部线路"});
170 182 if(fage){
171 183 $("#line").select2("destroy").html('');
172 184 }
... ...
src/main/resources/static/pages/scheduleApp/module/common/dts2/employeeGroup/saEmployeegroup.js
... ... @@ -182,6 +182,8 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [
182 182 dbbm: data_temp[$index].dbbm,
183 183 jsy: data_temp[$index].jsy,
184 184 spy: data_temp[$index].spy,
  185 + jcode: data_temp[$index].jcode,
  186 + scode: data_temp[$index].scode,
185 187 isstart: false
186 188 });
187 189  
... ... @@ -199,6 +201,8 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [
199 201 dbbm: data_temp[$index].dbbm,
200 202 jsy: data_temp[$index].jsy,
201 203 spy: data_temp[$index].spy,
  204 + jcode: data_temp[$index].jcode,
  205 + scode: data_temp[$index].scode,
202 206 isselected: true
203 207 };
204 208  
... ... @@ -211,12 +215,16 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [
211 215 dbbm: data_temp[$index].dbbm,
212 216 jsy: data_temp[$index].jsy,
213 217 spy: data_temp[$index].spy,
  218 + jcode: data_temp[$index].jcode,
  219 + scode: data_temp[$index].scode,
214 220 isselected: false
215 221 }, {
216 222 id : data_temp[$index].id,
217 223 dbbm: data_temp[$index].dbbm,
218 224 jsy: data_temp[$index].jsy,
219 225 spy: data_temp[$index].spy,
  226 + jcode: data_temp[$index].jcode,
  227 + scode: data_temp[$index].scode,
220 228 isselected: false
221 229 }
222 230 )
... ... @@ -536,6 +544,8 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [
536 544 if (dataFBSelect_temp[i].group[k].dbbm == data_temp[j].dbbm) {
537 545 dataFBSelect_temp[i].group[k].jsy = data_temp[j].jsy;
538 546 dataFBSelect_temp[i].group[k].spy = data_temp[j].spy;
  547 + dataFBSelect_temp[i].group[k].jcode = data_temp[j].jcode;
  548 + dataFBSelect_temp[i].group[k].scode = data_temp[j].scode;
539 549 break;
540 550 }
541 551 }
... ... @@ -563,6 +573,8 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [
563 573 if (dataSelect_temp[i].dbbm == data_temp[j].dbbm) {
564 574 dataSelect_temp[i].jsy = data_temp[j].jsy;
565 575 dataSelect_temp[i].spy = data_temp[j].spy;
  576 + dataSelect_temp[i].jcode = data_temp[j].jcode;
  577 + dataSelect_temp[i].scode = data_temp[j].scode;
566 578 break;
567 579 }
568 580 }
... ... @@ -643,21 +655,30 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [
643 655 angular.forEach(result.content, function(obj) {
644 656 var n1 = obj.jsy == null ? "" : (obj.jsy.personnelName || "");
645 657 var n2 = obj.spy == null ? "" : (obj.spy.personnelName || "");
646   - var n3 = obj.dbbm || "";
647   - //var c1 = obj.jsy == null ? "" : (obj.jsy.jobCode || "");
648   - //var c2 = obj.spy == null ? "" : (obj.spy.jobCode || "");
  658 + //var n3 = obj.dbbm || "";
  659 + var c1 = obj.jsy == null ? "" : (obj.jsy.jobCode || "");
  660 + var c2 = obj.spy == null ? "" : (obj.spy.jobCode || "");
  661 +
  662 + if (c1.indexOf("-") > 0) {
  663 + c1 = c1.substr(3);
  664 + }
  665 + if (c2.indexOf("-") > 0) {
  666 + c2 = c2.substr(3);
  667 + }
649 668  
650 669 var str = [];
651 670 str.push(n1);
652 671 str.push(n2);
653   - str.push(n3);
654   - //str.push(c1);
655   - //str.push(c2);
  672 + //str.push(n3);
  673 + str.push(c1);
  674 + str.push(c2);
656 675 this.push({
657 676 id: obj.id,
658 677 dbbm: obj.dbbm,
659 678 jsy: n1,
660 679 spy: n2,
  680 + jcode: c1,
  681 + scode: c2,
661 682 '$fullChars': pinyin.getFullChars(str.join("-")), // 全拼
662 683 '$camelChars': pinyin.getCamelChars(str.join("-")), // 简拼
663 684 '$str': str.join("-")
... ...
src/main/resources/static/pages/scheduleApp/module/common/dts2/employeeGroup/saEmployeegroupTemplate.html
... ... @@ -56,15 +56,15 @@
56 56 color: white;
57 57 background: #8DA29F;
58 58 border: 1px solid #8DA29F;
59   - min-width: 100px;
60   - max-width: 200px;
  59 + min-width: 150px;
  60 + max-width: 300px;
61 61 }
62 62 .employee-select .employeeGroup.start {
63 63 color: white;
64 64 background: #32C5D2;
65 65 border: 1px solid #32C5D2;
66   - min-width: 100px;
67   - max-width: 200px;
  66 + min-width: 150px;
  67 + max-width: 300px;
68 68 }
69 69  
70 70  
... ... @@ -79,7 +79,7 @@
79 79 </div>
80 80 <div class="col-md-3" style="padding-left: 0px;">
81 81 <input name="rysearch" ng-model="$saEmployeegroupCtrl.$$searchText"
82   - type="text" class="input-sm" style="width: 120px; height: 20px; border: 1px solid #32C5D2;" placeholder="输入拼音或编码..."/>
  82 + type="text" class="input-sm" style="width: 120px; height: 20px; border: 1px solid #32C5D2;" placeholder="拼音,编码,工号..."/>
83 83 </div>
84 84 <div class="col-md-2" style="min-height: 19px; color: black; padding-left: 0px;">
85 85 <div class="col-md-3" style="padding-left: 0px; padding-right: 0px;">
... ... @@ -96,19 +96,50 @@
96 96 <div class="employee active"
97 97 ng-repeat="$d in $saEmployeegroupCtrl.$$data track by $index"
98 98 ng-click="$saEmployeegroupCtrl.$$internal_rylist_click($index)">
99   - <span ng-if="$d.spy">
100   - <i class="fa fa-bus" aria-hidden="true"></i>
101   - {{$d.jsy}}
102   - -
103   - <i class="fa fa-ticket" aria-hidden="true"></i>
104   - {{$d.spy}}
105   - {{"(" + $d.dbbm + ")"}}
106   - </span>
107   - <span ng-if="!$d.spy">
108   - <i class="fa fa-bus" aria-hidden="true"></i>
109   - {{$d.jsy}}
110   - {{"(" + $d.dbbm + ")"}}
111   - </span>
  99 +
  100 + <div ng-if="$d.spy">
  101 + <div>
  102 + <div>
  103 + <span>
  104 + <i class="fa fa-bus" aria-hidden="true"></i>
  105 + {{$d.jsy}}
  106 + </span>
  107 + </div>
  108 + <div>
  109 + <span>
  110 + {{"(" + $d.jcode + ")"}}
  111 + </span>
  112 + </div>
  113 + </div>
  114 + ------
  115 + <div>
  116 + <div>
  117 + <span>
  118 + <i class="fa fa-ticket" aria-hidden="true"></i>
  119 + {{$d.spy}}
  120 + </span>
  121 + </div>
  122 + <div>
  123 + <span>
  124 + {{"(" + $d.scode + ")"}}
  125 + </span>
  126 + </div>
  127 + </div>
  128 + </div>
  129 +
  130 + <div ng-if="!$d.spy">
  131 + <div>
  132 + <span>
  133 + <i class="fa fa-bus" aria-hidden="true"></i>
  134 + {{$d.jsy}}
  135 + </span>
  136 + </div>
  137 + <div>
  138 + <span>
  139 + {{"(" + $d.jcode + ")"}}
  140 + </span>
  141 + </div>
  142 + </div>
112 143 </div>
113 144 </div>
114 145 </div>
... ... @@ -137,19 +168,50 @@
137 168 ng-repeat="$d in $saEmployeegroupCtrl.$$dataSelected track by $index"
138 169 ng-click="$saEmployeegroupCtrl.$$internal_selrylist_click($index)"
139 170 ng-dblclick="$saEmployeegroupCtrl.$$internal_selrylist_dbclick($index)">
140   - <span ng-if="$d.spy">
141   - <i class="fa fa-bus" aria-hidden="true"></i>
142   - {{$d.jsy}}
143   - -
144   - <i class="fa fa-ticket" aria-hidden="true"></i>
145   - {{$d.spy}}
146   - {{"(" + $d.dbbm + ")"}}
147   - </span>
148   - <span ng-if="!$d.spy">
149   - <i class="fa fa-bus" aria-hidden="true"></i>
150   - {{$d.jsy}}
151   - {{"(" + $d.dbbm + ")"}}
152   - </span>
  171 +
  172 + <div ng-if="$d.spy">
  173 + <div>
  174 + <div>
  175 + <span>
  176 + <i class="fa fa-bus" aria-hidden="true"></i>
  177 + {{$d.jsy}}
  178 + </span>
  179 + </div>
  180 + <div>
  181 + <span>
  182 + {{"(" + $d.jcode + ")"}}
  183 + </span>
  184 + </div>
  185 + </div>
  186 + ------
  187 + <div>
  188 + <div>
  189 + <span>
  190 + <i class="fa fa-ticket" aria-hidden="true"></i>
  191 + {{$d.spy}}
  192 + </span>
  193 + </div>
  194 + <div>
  195 + <span>
  196 + {{"(" + $d.scode + ")"}}
  197 + </span>
  198 + </div>
  199 + </div>
  200 + </div>
  201 +
  202 + <div ng-if="!$d.spy">
  203 + <div>
  204 + <span>
  205 + <i class="fa fa-bus" aria-hidden="true"></i>
  206 + {{$d.jsy}}
  207 + </span>
  208 + </div>
  209 + <div>
  210 + <span>
  211 + {{"(" + $d.jcode + ")"}}
  212 + </span>
  213 + </div>
  214 + </div>
153 215  
154 216 </div>
155 217 </div>
... ... @@ -184,19 +246,48 @@
184 246 <div ng-class="{employee: true, active: true, start: $d.group[0].isselected}"
185 247 ng-click="$saEmployeegroupCtrl.$$internal_selrygroup_click($index, 0, $event)"
186 248 ng-if="$d.group[0].spy">
187   - <i class="fa fa-bus" aria-hidden="true"></i>
188   - {{$d.group[0].jsy}}
189   - -
190   - <i class="fa fa-ticket" aria-hidden="true"></i>
191   - {{$d.group[0].spy}}
192   - {{"(" + $d.group[0].dbbm + ")"}}
  249 + <div>
  250 + <div>
  251 + <span>
  252 + <i class="fa fa-bus" aria-hidden="true"></i>
  253 + {{$d.group[0].jsy}}
  254 + </span>
  255 + </div>
  256 + <div>
  257 + <span>
  258 + {{"(" + $d.group[0].jcode + ")"}}
  259 + </span>
  260 + </div>
  261 + </div>
  262 + ------
  263 + <div>
  264 + <div>
  265 + <span>
  266 + <i class="fa fa-ticket" aria-hidden="true"></i>
  267 + {{$d.group[0].spy}}
  268 + </span>
  269 + </div>
  270 + <div>
  271 + <span>
  272 + {{"(" + $d.group[0].scode + ")"}}
  273 + </span>
  274 + </div>
  275 + </div>
193 276 </div>
194 277 <div ng-class="{employee: true, active: true, start: $d.group[0].isselected}"
195 278 ng-click="$saEmployeegroupCtrl.$$internal_selrygroup_click($index, 0, $event)"
196 279 ng-if="!$d.group[0].spy">
197   - <i class="fa fa-bus" aria-hidden="true"></i>
198   - {{$d.group[0].jsy}}
199   - {{"(" + $d.group[0].dbbm + ")"}}
  280 + <div>
  281 + <span>
  282 + <i class="fa fa-bus" aria-hidden="true"></i>
  283 + {{$d.group[0].jsy}}
  284 + </span>
  285 + </div>
  286 + <div>
  287 + <span>
  288 + {{"(" + $d.group[0].jcode + ")"}}
  289 + </span>
  290 + </div>
200 291 </div>
201 292 </div>
202 293  
... ... @@ -205,19 +296,48 @@
205 296 <div ng-class="{employee: true, active: true, start: $d.group[1].isselected}"
206 297 ng-click="$saEmployeegroupCtrl.$$internal_selrygroup_click($index, 1, $event)"
207 298 ng-if="$d.group[1].spy">
208   - <i class="fa fa-bus" aria-hidden="true"></i>
209   - {{$d.group[1].jsy}}
210   - -
211   - <i class="fa fa-ticket" aria-hidden="true"></i>
212   - {{$d.group[1].spy}}
213   - {{"(" + $d.group[1].dbbm + ")"}}
  299 + <div>
  300 + <div>
  301 + <span>
  302 + <i class="fa fa-bus" aria-hidden="true"></i>
  303 + {{$d.group[1].jsy}}
  304 + </span>
  305 + </div>
  306 + <div>
  307 + <span>
  308 + {{"(" + $d.group[1].jcode + ")"}}
  309 + </span>
  310 + </div>
  311 + </div>
  312 + ------
  313 + <div>
  314 + <div>
  315 + <span>
  316 + <i class="fa fa-ticket" aria-hidden="true"></i>
  317 + {{$d.group[1].spy}}
  318 + </span>
  319 + </div>
  320 + <div>
  321 + <span>
  322 + {{"(" + $d.group[1].scode + ")"}}
  323 + </span>
  324 + </div>
  325 + </div>
214 326 </div>
215 327 <div ng-class="{employee: true, active: true, start: $d.group[1].isselected}"
216 328 ng-click="$saEmployeegroupCtrl.$$internal_selrygroup_click($index, 1, $event)"
217 329 ng-if="!$d.group[1].spy">
218   - <i class="fa fa-bus" aria-hidden="true"></i>
219   - {{$d.group[1].jsy}}
220   - {{"(" + $d.group[1].dbbm + ")"}}
  330 + <div>
  331 + <span>
  332 + <i class="fa fa-bus" aria-hidden="true"></i>
  333 + {{$d.group[1].jsy}}
  334 + </span>
  335 + </div>
  336 + <div>
  337 + <span>
  338 + {{"(" + $d.group[1].jcode + ")"}}
  339 + </span>
  340 + </div>
221 341 </div>
222 342 </div>
223 343  
... ...
src/main/resources/static/pages/scheduleApp/module/common/dts2/scheduleplan/saPlanInfoEdit.js
... ... @@ -133,11 +133,17 @@ angular.module(&#39;ScheduleApp&#39;).directive(
133 133 var new_j1_id = new_j1.split("_")[0];
134 134 var new_j1_name = new_j1.split("_")[1];
135 135 var new_j1_gh = new_j1.split("_")[2];
  136 + if (new_j1_gh && new_j1_gh.indexOf("-") > 0) {
  137 + new_j1_gh = new_j1_gh.substr(3); // 修正工号,把 55- 这种前缀去掉
  138 + }
136 139  
137 140 if (new_j2) {
138 141 var new_j2_id = new_j2.split("_")[0];
139 142 var new_j2_name = new_j2.split("_")[1];
140 143 var new_j2_gh = new_j2.split("_")[2];
  144 + if (new_j2_gh && new_j2_gh.indexOf("-") > 0) {
  145 + new_j2_gh = new_j2_gh.substr(3); // 修正工号,把 55- 这种前缀去掉
  146 + }
141 147  
142 148 if (old_isfb) { // 使用分班判定
143 149 angular.forEach(scope[ctrlAs].ds, function(obj, index) {
... ... @@ -205,16 +211,23 @@ angular.module(&#39;ScheduleApp&#39;).directive(
205 211 var new_s1_id = new_s1.split("_")[0];
206 212 var new_s1_name = new_s1.split("_")[1];
207 213 var new_s1_gh = new_s1.split("_")[2];
  214 + if (new_s1_gh && new_s1_gh.indexOf("-") > 0) { // 修正工号,吧 55- 这种前缀去掉
  215 + new_s1_gh = new_s1_gh.substr(3);
  216 + }
208 217  
209 218 if (new_s2) {
210 219 var new_s2_id = new_s2.split("_")[0];
211 220 var new_s2_name = new_s2.split("_")[1];
212 221 var new_s2_gh = new_s2.split("_")[2];
  222 + if (new_s2_gh && new_s2_gh.indexOf("-") > 0) { // 修正工号,吧 55- 这种前缀去掉
  223 + new_s2_gh = new_s2_gh.substr(3);
  224 + }
213 225  
214 226 if (old_isfb) { // 使用分班判定
215 227 angular.forEach(scope[ctrlAs].ds, function(obj, index) {
216 228 if (index < old_isfb_index) {
217 229 obj.s = new_s1_id;
  230 +
218 231 obj.sGh = new_s1_gh;
219 232 obj.sName = new_s1_name;
220 233 } else {
... ...
src/main/resources/static/pages/scheduleApp/module/common/dts2/scheduleplan/saPlaninfoeditTemplate.html
... ... @@ -7,10 +7,10 @@
7 7 <thead>
8 8 <tr role="row" class="heading">
9 9 <th style="width: 50px;">序号</th>
10   - <th style="width: 80px;">发车时间</th>
  10 + <th style="width: 60px;">发车时间</th>
11 11 <th style="width: 70px;">车辆</th>
12   - <th style="width: 60px;">驾驶员</th>
13   - <th style="width: 60px;">售票员</th>
  12 + <th style="width: 70px;">驾驶员</th>
  13 + <th style="width: 70px;">售票员</th>
14 14 <th style="width: 100px;">停车场</th>
15 15 </tr>
16 16 </thead>
... ... @@ -30,14 +30,26 @@
30 30 </a>
31 31 </td>
32 32 <td>
33   - <a href="#">
34   - <span ng-bind="info.jName"></span>
35   - </a>
  33 + <div ng-if="info.jName">
  34 + <a href="#">
  35 + <i class="fa fa-bus" aria-hidden="true"></i>
  36 + <span ng-bind="info.jName"></span>
  37 + </a>
  38 + </div>
  39 + <div ng-if="info.jGh">
  40 + ({{info.jGh}})
  41 + </div>
36 42 </td>
37 43 <td>
38   - <a href="#">
39   - <span ng-bind="info.sName"></span>
40   - </a>
  44 + <div ng-if="info.sName">
  45 + <a href="#">
  46 + <i class="fa fa-ticket" aria-hidden="true"></i>
  47 + <span ng-bind="info.sName"></span>
  48 + </a>
  49 + </div>
  50 + <div ng-if="info.sGh">
  51 + ({{info.sGh}})
  52 + </div>
41 53 </td>
42 54 <td>
43 55 <a href="#" ng-if="info.bcType == 'in'">
... ...
src/main/resources/static/pages/scheduleApp/module/common/prj-common-directive.js
... ... @@ -2907,6 +2907,8 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [
2907 2907 dbbm: data_temp[$index].dbbm,
2908 2908 jsy: data_temp[$index].jsy,
2909 2909 spy: data_temp[$index].spy,
  2910 + jcode: data_temp[$index].jcode,
  2911 + scode: data_temp[$index].scode,
2910 2912 isstart: false
2911 2913 });
2912 2914  
... ... @@ -2924,6 +2926,8 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [
2924 2926 dbbm: data_temp[$index].dbbm,
2925 2927 jsy: data_temp[$index].jsy,
2926 2928 spy: data_temp[$index].spy,
  2929 + jcode: data_temp[$index].jcode,
  2930 + scode: data_temp[$index].scode,
2927 2931 isselected: true
2928 2932 };
2929 2933  
... ... @@ -2936,12 +2940,16 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [
2936 2940 dbbm: data_temp[$index].dbbm,
2937 2941 jsy: data_temp[$index].jsy,
2938 2942 spy: data_temp[$index].spy,
  2943 + jcode: data_temp[$index].jcode,
  2944 + scode: data_temp[$index].scode,
2939 2945 isselected: false
2940 2946 }, {
2941 2947 id : data_temp[$index].id,
2942 2948 dbbm: data_temp[$index].dbbm,
2943 2949 jsy: data_temp[$index].jsy,
2944 2950 spy: data_temp[$index].spy,
  2951 + jcode: data_temp[$index].jcode,
  2952 + scode: data_temp[$index].scode,
2945 2953 isselected: false
2946 2954 }
2947 2955 )
... ... @@ -3261,6 +3269,8 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [
3261 3269 if (dataFBSelect_temp[i].group[k].dbbm == data_temp[j].dbbm) {
3262 3270 dataFBSelect_temp[i].group[k].jsy = data_temp[j].jsy;
3263 3271 dataFBSelect_temp[i].group[k].spy = data_temp[j].spy;
  3272 + dataFBSelect_temp[i].group[k].jcode = data_temp[j].jcode;
  3273 + dataFBSelect_temp[i].group[k].scode = data_temp[j].scode;
3264 3274 break;
3265 3275 }
3266 3276 }
... ... @@ -3288,6 +3298,8 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [
3288 3298 if (dataSelect_temp[i].dbbm == data_temp[j].dbbm) {
3289 3299 dataSelect_temp[i].jsy = data_temp[j].jsy;
3290 3300 dataSelect_temp[i].spy = data_temp[j].spy;
  3301 + dataSelect_temp[i].jcode = data_temp[j].jcode;
  3302 + dataSelect_temp[i].scode = data_temp[j].scode;
3291 3303 break;
3292 3304 }
3293 3305 }
... ... @@ -3368,21 +3380,30 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saEmployeegroup&#39;, [
3368 3380 angular.forEach(result.content, function(obj) {
3369 3381 var n1 = obj.jsy == null ? "" : (obj.jsy.personnelName || "");
3370 3382 var n2 = obj.spy == null ? "" : (obj.spy.personnelName || "");
3371   - var n3 = obj.dbbm || "";
3372   - //var c1 = obj.jsy == null ? "" : (obj.jsy.jobCode || "");
3373   - //var c2 = obj.spy == null ? "" : (obj.spy.jobCode || "");
  3383 + //var n3 = obj.dbbm || "";
  3384 + var c1 = obj.jsy == null ? "" : (obj.jsy.jobCode || "");
  3385 + var c2 = obj.spy == null ? "" : (obj.spy.jobCode || "");
  3386 +
  3387 + if (c1.indexOf("-") > 0) {
  3388 + c1 = c1.substr(3);
  3389 + }
  3390 + if (c2.indexOf("-") > 0) {
  3391 + c2 = c2.substr(3);
  3392 + }
3374 3393  
3375 3394 var str = [];
3376 3395 str.push(n1);
3377 3396 str.push(n2);
3378   - str.push(n3);
3379   - //str.push(c1);
3380   - //str.push(c2);
  3397 + //str.push(n3);
  3398 + str.push(c1);
  3399 + str.push(c2);
3381 3400 this.push({
3382 3401 id: obj.id,
3383 3402 dbbm: obj.dbbm,
3384 3403 jsy: n1,
3385 3404 spy: n2,
  3405 + jcode: c1,
  3406 + scode: c2,
3386 3407 '$fullChars': pinyin.getFullChars(str.join("-")), // 全拼
3387 3408 '$camelChars': pinyin.getCamelChars(str.join("-")), // 简拼
3388 3409 '$str': str.join("-")
... ... @@ -4436,11 +4457,17 @@ angular.module(&#39;ScheduleApp&#39;).directive(
4436 4457 var new_j1_id = new_j1.split("_")[0];
4437 4458 var new_j1_name = new_j1.split("_")[1];
4438 4459 var new_j1_gh = new_j1.split("_")[2];
  4460 + if (new_j1_gh && new_j1_gh.indexOf("-") > 0) {
  4461 + new_j1_gh = new_j1_gh.substr(3); // 修正工号,把 55- 这种前缀去掉
  4462 + }
4439 4463  
4440 4464 if (new_j2) {
4441 4465 var new_j2_id = new_j2.split("_")[0];
4442 4466 var new_j2_name = new_j2.split("_")[1];
4443 4467 var new_j2_gh = new_j2.split("_")[2];
  4468 + if (new_j2_gh && new_j2_gh.indexOf("-") > 0) {
  4469 + new_j2_gh = new_j2_gh.substr(3); // 修正工号,把 55- 这种前缀去掉
  4470 + }
4444 4471  
4445 4472 if (old_isfb) { // 使用分班判定
4446 4473 angular.forEach(scope[ctrlAs].ds, function(obj, index) {
... ... @@ -4508,16 +4535,23 @@ angular.module(&#39;ScheduleApp&#39;).directive(
4508 4535 var new_s1_id = new_s1.split("_")[0];
4509 4536 var new_s1_name = new_s1.split("_")[1];
4510 4537 var new_s1_gh = new_s1.split("_")[2];
  4538 + if (new_s1_gh && new_s1_gh.indexOf("-") > 0) { // 修正工号,吧 55- 这种前缀去掉
  4539 + new_s1_gh = new_s1_gh.substr(3);
  4540 + }
4511 4541  
4512 4542 if (new_s2) {
4513 4543 var new_s2_id = new_s2.split("_")[0];
4514 4544 var new_s2_name = new_s2.split("_")[1];
4515 4545 var new_s2_gh = new_s2.split("_")[2];
  4546 + if (new_s2_gh && new_s2_gh.indexOf("-") > 0) { // 修正工号,吧 55- 这种前缀去掉
  4547 + new_s2_gh = new_s2_gh.substr(3);
  4548 + }
4516 4549  
4517 4550 if (old_isfb) { // 使用分班判定
4518 4551 angular.forEach(scope[ctrlAs].ds, function(obj, index) {
4519 4552 if (index < old_isfb_index) {
4520 4553 obj.s = new_s1_id;
  4554 +
4521 4555 obj.sGh = new_s1_gh;
4522 4556 obj.sName = new_s1_name;
4523 4557 } else {
... ...
src/main/resources/static/pages/scheduleApp/module/common/prj-common-globalservice.js
... ... @@ -295,6 +295,23 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;EmployeeConfigService_g&#39;, [&#39;$resource&#39;, f
295 295 }
296 296 }
297 297 ),
  298 + dbbm: $resource(
  299 + '/eci/dbbm/:xl',
  300 + {},
  301 + {
  302 + get: {
  303 + method: 'GET',
  304 + transformResponse: function(rs) {
  305 + var dst = angular.fromJson(rs);
  306 + if (dst.status == 'SUCCESS') {
  307 + return {data: dst.data};
  308 + } else {
  309 + return dst;
  310 + }
  311 + }
  312 + }
  313 + }
  314 + ),
298 315 validate: $resource( // TODO:
299 316 '/personnel/validate/:type',
300 317 {},
... ... @@ -360,6 +377,23 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;GuideboardManageService_g&#39;, [&#39;$resource&#39;,
360 377 // 内部还有默认的方法delete
361 378 }
362 379 ),
  380 + lpno: $resource(
  381 + '/gic/lpno/:xl',
  382 + {},
  383 + {
  384 + get: {
  385 + method: 'GET',
  386 + transformResponse: function(rs) {
  387 + var dst = angular.fromJson(rs);
  388 + if (dst.status == 'SUCCESS') {
  389 + return {data: dst.data};
  390 + } else {
  391 + return dst;
  392 + }
  393 + }
  394 + }
  395 + }
  396 + ),
363 397 dataTools: $resource(
364 398 '/gic/:type',
365 399 {},
... ...
src/main/resources/static/pages/scheduleApp/module/core/employeeConfig/module.js
... ... @@ -75,6 +75,10 @@ angular.module(&#39;ScheduleApp&#39;).factory(
75 75 alert("请选择线路!");
76 76 return null;
77 77 }
  78 + },
  79 +
  80 + dbbm: function(xlid) {
  81 + return service.dbbm.get({xl: xlid}).$promise;
78 82 }
79 83  
80 84 };
... ... @@ -229,7 +233,8 @@ angular.module(&#39;ScheduleApp&#39;).controller(
229 233 'EmployeeConfigService',
230 234 '$stateParams',
231 235 '$state',
232   - function(service, $stateParams, $state) {
  236 + '$scope',
  237 + function(service, $stateParams, $state, $scope) {
233 238 var self = this;
234 239 var EmpConfig = service.getQueryClass();
235 240  
... ... @@ -267,6 +272,25 @@ angular.module(&#39;ScheduleApp&#39;).controller(
267 272 $state.go("employeeConfig");
268 273 });
269 274 };
  275 +
  276 + $scope.$watch(
  277 + function() {
  278 + return self.employeeConfigForSave.xl.id;
  279 + },
  280 + function(newValue, oldValue) {
  281 + if (!id && newValue) { // form表单操作
  282 + var p = service.dbbm(newValue);
  283 + p.then(
  284 + function(rst) {
  285 + if (rst.data) {
  286 + self.employeeConfigForSave.dbbm = rst.data;
  287 + }
  288 +
  289 + }
  290 + );
  291 + }
  292 + }
  293 + );
270 294 }]);
271 295  
272 296 // detail.html控制器
... ...
src/main/resources/static/pages/scheduleApp/module/core/employeeConfig/service.js
... ... @@ -38,6 +38,23 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;EmployeeConfigService_g&#39;, [&#39;$resource&#39;, f
38 38 }
39 39 }
40 40 ),
  41 + dbbm: $resource(
  42 + '/eci/dbbm/:xl',
  43 + {},
  44 + {
  45 + get: {
  46 + method: 'GET',
  47 + transformResponse: function(rs) {
  48 + var dst = angular.fromJson(rs);
  49 + if (dst.status == 'SUCCESS') {
  50 + return {data: dst.data};
  51 + } else {
  52 + return dst;
  53 + }
  54 + }
  55 + }
  56 + }
  57 + ),
41 58 validate: $resource( // TODO:
42 59 '/personnel/validate/:type',
43 60 {},
... ...
src/main/resources/static/pages/scheduleApp/module/core/guideboardManage/module.js
... ... @@ -80,6 +80,10 @@ angular.module(&#39;ScheduleApp&#39;).factory(
80 80 alert("请选择线路!");
81 81 return null;
82 82 }
  83 + },
  84 +
  85 + lpno: function(xl) {
  86 + return service.lpno.get({xl: xl}).$promise;
83 87 }
84 88 };
85 89 }
... ... @@ -263,6 +267,25 @@ angular.module(&#39;ScheduleApp&#39;).controller(
263 267 });
264 268 };
265 269  
  270 + $scope.$watch(
  271 + function() {
  272 + return self.guideboardManageForForm.xl.id;
  273 + },
  274 + function(newValue, oldValue) {
  275 + if (!id && newValue) { // form表单操作
  276 + var p = service.lpno(newValue);
  277 + p.then(
  278 + function(rst) {
  279 + if (rst.data) {
  280 + self.guideboardManageForForm.lpNo = rst.data;
  281 + }
  282 +
  283 + }
  284 + );
  285 + }
  286 + }
  287 + );
  288 +
266 289 }
267 290 ]
268 291 );
... ...
src/main/resources/static/pages/scheduleApp/module/core/guideboardManage/service.js
... ... @@ -36,6 +36,23 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;GuideboardManageService_g&#39;, [&#39;$resource&#39;,
36 36 // 内部还有默认的方法delete
37 37 }
38 38 ),
  39 + lpno: $resource(
  40 + '/gic/lpno/:xl',
  41 + {},
  42 + {
  43 + get: {
  44 + method: 'GET',
  45 + transformResponse: function(rs) {
  46 + var dst = angular.fromJson(rs);
  47 + if (dst.status == 'SUCCESS') {
  48 + return {data: dst.data};
  49 + } else {
  50 + return dst;
  51 + }
  52 + }
  53 + }
  54 + }
  55 + ),
39 56 dataTools: $resource(
40 57 '/gic/:type',
41 58 {},
... ...
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/list.html
... ... @@ -85,6 +85,7 @@
85 85 <td>
86 86 <div ng-repeat="tinfo in info.rst">
87 87 <a ui-sref="ttInfoDetailManage_edit3({xlid: info.xl.id, ttid : tinfo.ttInfoId, xlname: info.xl.name, ttname : tinfo.ttInfoName, rflag : true})">
  88 + <i class="fa fa-table" aria-hidden="true"></i>
88 89 {{tinfo.ttInfoName}}
89 90 </a>
90 91 </div>
... ...
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/report/ext/list.html
... ... @@ -24,8 +24,8 @@
24 24 <th style="width: 100px;">车辆</th>
25 25 <th style="width: 80px;">出场时间</th>
26 26 <th style="width: 80px;">进场时间</th>
27   - <th style="width: 130px;">驾驶员</th>
28   - <th style="width: 130px;">售票员</th>
  27 + <th style="width: 150px;">驾驶员</th>
  28 + <th style="width: 150px;">售票员</th>
29 29 <th>时刻表</th>
30 30 <th style="width: 150px;">修改时间</th>
31 31 <th style="width: 100px;">修改人</th>
... ... @@ -115,6 +115,7 @@
115 115 <div style="padding-right: 0px;" class="col-md-6">
116 116 <div ng-repeat="jsyname in info.jsyNames">
117 117 <a href="#">
  118 + <i class="fa fa-bus" aria-hidden="true"></i>
118 119 {{jsyname}}
119 120 </a>
120 121 </div>
... ... @@ -133,6 +134,7 @@
133 134 <div style="padding-right: 0px;" class="col-md-6">
134 135 <div ng-repeat="spyname in info.spyNames">
135 136 <a href="#">
  137 + <i class="fa fa-ticket" aria-hidden="true"></i>
136 138 {{spyname}}
137 139 </a>
138 140 </div>
... ...
src/main/resources/static/pages/scheduleApp/module/core/scheduleRuleManage/edit.html
... ... @@ -129,7 +129,7 @@
129 129  
130 130 <div class="form-group has-success has-feedback">
131 131 <label class="col-md-2 control-label">人员范围*:</label>
132   - <div class="col-md-6">
  132 + <div class="col-md-8">
133 133 <sa-Employeegroup model="ctrl.scheduleRuleManageForSave"
134 134 name="ryrange"
135 135 xlidvalue="{{ctrl.scheduleRuleManageForSave.xl.id}}"
... ...
src/main/resources/static/pages/scheduleApp/module/core/scheduleRuleManage/form.html
... ... @@ -129,7 +129,7 @@
129 129  
130 130 <div class="form-group has-success has-feedback">
131 131 <label class="col-md-2 control-label">人员范围*:</label>
132   - <div class="col-md-6">
  132 + <div class="col-md-8">
133 133 <sa-Employeegroup model="ctrl.scheduleRuleManageForSave"
134 134 name="ryrange"
135 135 xlidvalue="{{ctrl.scheduleRuleManageForSave.xl.id}}"
... ...
src/main/resources/static/real_control_v2/css/main.css
  1 +input::-webkit-outer-spin-button,
  2 +input::-webkit-inner-spin-button{
  3 + display: none;
  4 +}
  5 +
  6 +input::-webkit-calendar-picker-indicator {
  7 + display: none;
  8 +}
  9 +
  10 +input::-webkit-datetime-edit { padding: 1px; }
1 11  
2 12 .ps-container > .ps-scrollbar-y-rail{
3 13 z-index: 1 !important;
... ...
src/main/resources/static/real_control_v2/js/main.js
... ... @@ -169,8 +169,8 @@ var disabled_submit_btn = function (form) {
169 169 function showUpdateDescription() {
170 170 //更新说明
171 171 var updateDescription = {
172   - date: '2017-05-23',
173   - text: '<h5>现在可以在 数据&统计 里面看到部分班次修正日志。05-23之后的数据开始展现</h5>'
  172 + date: '2017-05-24',
  173 + text: '<h5>修复了一个问题,这个问题曾导致 在临加班次处于 “准备执行” 或 “正在执行” 状态时。即使删除了临加班次,当车辆发出或到终点后,有一定几率路单里会复现这个班次。</h5>'
174 174 };
175 175  
176 176 var storage = window.localStorage
... ...
src/main/resources/static/real_control_v2/mapmonitor/fragments/playback_v2/main.html
... ... @@ -32,14 +32,14 @@
32 32 <div class="uk-form-row">
33 33 <label class="uk-form-label">开始时间</label>
34 34 <div class="uk-form-controls">
35   - <input name="sDate" type="date" required/>
  35 + <input name="sDate" type="date" style="width: 100%;" required/>
36 36 </div>
37 37 </div>
38 38 </div>
39 39 <div class="uk-width-1-3" style="padding-left: 15px;">
40 40 <div class="uk-form-row">
41 41 <div class="uk-form-controls" style="margin-left: 0;">
42   - <input name="sTime" type="time" required/>
  42 + <input name="sTime" type="time" style="width: calc(100% - 28px);" required/>
43 43 </div>
44 44 </div>
45 45 </div>
... ... @@ -49,14 +49,14 @@
49 49 <div class="uk-form-row">
50 50 <label class="uk-form-label">结束时间</label>
51 51 <div class="uk-form-controls">
52   - <input name="eDate" type="date" required/>
  52 + <input name="eDate" type="date" style="width: 100%;" required/>
53 53 </div>
54 54 </div>
55 55 </div>
56 56 <div class="uk-width-1-3" style="padding-left: 15px;">
57 57 <div class="uk-form-row">
58 58 <div class="uk-form-controls" style="margin-left: 0;">
59   - <input name="eTime" type="time" required/>
  59 + <input name="eTime" type="time" style="width: calc(100% - 28px);" required/>
60 60 </div>
61 61 </div>
62 62 </div>
... ... @@ -183,6 +183,16 @@
183 183 <span class="ct_btn text-panel">
184 184 <span>共约 <span class="sum_mileage"></span> 公里,<span class="count_point"></span> 个GPS点</span><br>
185 185 <a class="export-excel"><i class="uk-icon-file-excel-o"></i> 导出轨迹</a>
  186 +
  187 + <label>
  188 + <div class="uk-button-dropdown" data-uk-dropdown>
  189 + <a style="color: grey;margin-left: 12px;font-size: 12px;">线路底图 <i class="uk-icon-angle-down"></i></a>
  190 + <div class="uk-dropdown uk-dropdown-scrollable" style="max-height: 300px;">
  191 + <ul class="uk-nav uk-nav-dropdown line_route_list">
  192 + </ul>
  193 + </div>
  194 + </div>
  195 + </label>
186 196 </span>
187 197 </div>
188 198 <div class="ct-progress-bar" >
... ... @@ -294,6 +304,20 @@
294 304 $.get('/basic/cars', function (rs) {
295 305 gb_common.carAutocomplete($('.autocomplete-nbbm', modal), rs);
296 306 });
  307 +
  308 + //初始化线路底图下拉
  309 + var opts='';
  310 + $.each(gb_data_basic.activeLines, function () {
  311 + opts+='<li data-code="'+this.lineCode+'" data-dir="0"><a>'+this.name+'上行</a></li><li data-code="'+this.lineCode+'" data-dir="1"><a>'+this.name+'下行</a></li>';
  312 + });
  313 + $('.line_route_list', modal).html(opts);
  314 + });
  315 +
  316 + //切换线路底图
  317 + $(modal).on('click', '.line_route_list li', function () {
  318 + var code = $(this).data('code');
  319 + var updown = $(this).data('dir');
  320 + mapObj.changeLine(code, updown);
297 321 });
298 322  
299 323 /**
... ... @@ -730,7 +754,7 @@
730 754 //中心点和缩放级别
731 755 map.centerAndZoom(new BMap.Point(gb_map_consts.center_point.lng, gb_map_consts.center_point.lat), 16);
732 756 map.enableScrollWheelZoom();
733   - }
  757 + };
734 758  
735 759 var storage = window.localStorage;
736 760 var routes;//路段
... ... @@ -985,6 +1009,19 @@
985 1009 if(!markerIsVisible)
986 1010 map.panTo(gpsMarker.getPosition());
987 1011 };
  1012 +
  1013 + /**
  1014 + * 切换线路底图
  1015 + */
  1016 + var changeLine = function (lineCode, updown) {
  1017 + //reset();
  1018 + //从地图模块获取站点数据
  1019 + stations = gb_map_spatial_data.getStationArray(lineCode);
  1020 + //从localStorage 获取路段
  1021 + routes = JSON.parse(storage.getItem(lineCode + '_route'));
  1022 + routes = [routes.up_bd, routes.down_bd];
  1023 + switchPolyline(lineCode, updown);
  1024 + };
988 1025 return {
989 1026 initData: initData,
990 1027 updateCar: updateCar,
... ... @@ -992,7 +1029,8 @@
992 1029 updateTrailLine: updateTrailLine,
993 1030 refreshOverlay: switchPolyline,
994 1031 toCenterByBounds: toCenterByBounds,
995   - reset: reset
  1032 + reset: reset,
  1033 + changeLine: changeLine
996 1034 }
997 1035 })();
998 1036  
... ...
src/test/resources/testdata/problem.properties
... ... @@ -5,8 +5,8 @@
5 5 ##5=排班计划错误提示,如果选的排班日期之前没有排班,提示错误,排班结果有重复与时刻表不符合,显示错误
6 6 ##6=调度执行日报,显示最近排班日期,修改操作强化
7 7 7=警告功能,如时刻表选择相同的常规有效日,特殊有效日,车辆,人员配置重复等等
8   -8=时刻表明细编辑,颜色覆盖冲突
9   -9=下拉框貌似中文不能搜索
  8 +##8=时刻表明细编辑,颜色覆盖冲突
  9 +##9=下拉框貌似中文不能搜索
10 10 10=时刻表明细编辑,环线,选上下行,上下的站点在下行站点列表里
11 11 ##11=人员基础信息导入问题,工号前要加公司代码
12 12 ##12=套跑规则嵌入到主排班规则中
... ... @@ -15,7 +15,6 @@
15 15 15=时刻表导入的时候表头后面不需要加数字
16 16 ##16=时间框中文
17 17 ##17=人员工号前公司编码自动加
18   -18=排班计划明细可以修改(修改到每个班次)
19 18 19=线路运营概览
20 19 20=排班规则备注
21 20 ##21=时刻表,两点间空驶,算空驶
... ...
src/test/resources/testdata/test6.txt
... ... @@ -24,4 +24,8 @@ where a.origingidindex is null;
24 24 上南二分通勤
25 25  
26 26  
27   --Xms128M -Xmx1024M -XX:PermSize=64M -XX:MaxPermSize=128M
28 27 \ No newline at end of file
  28 +-Xms128M -Xmx1024M -XX:PermSize=64M -XX:MaxPermSize=128M
  29 +
  30 +1118
  31 +572康桥
  32 +83
... ...