Commit fc3393ec7e22f372fcaff0ec2822004bb5c2f0df

Authored by 徐烜
2 parents 131bb259 5c7a7e52

Update

src/main/java/com/bsth/XDApplication.java
... ... @@ -126,24 +126,25 @@ public class XDApplication implements CommandLineRunner {
126 126 ScheduledExecutorService sexec = Application.mainServices;
127 127  
128 128 /** 线调业务 */
129   - sexec.scheduleWithFixedDelay(gpsDataLoader, 30, 2, TimeUnit.SECONDS);//抓取GPS数据
130   - sexec.scheduleWithFixedDelay(offlineMonitorThread, 120, 60, TimeUnit.SECONDS);//GPS设备掉离线
131 129 sexec.scheduleWithFixedDelay(scheduleRefreshThread, 15, 240, TimeUnit.SECONDS);//班次更新线程
132   - sexec.scheduleWithFixedDelay(schedulePstThread, 60, 10, TimeUnit.SECONDS);//班次延迟入库线程
133   - sexec.scheduleWithFixedDelay(seiPstThread, 60, 60, TimeUnit.SECONDS);//班次修正日志入库
134   - sexec.scheduleWithFixedDelay(scheduleLateThread, 60, 30, TimeUnit.SECONDS);//检查班次误点
  130 + sexec.scheduleWithFixedDelay(scheduleLateThread, 70, 30, TimeUnit.SECONDS);//检查班次误点
  131 + sexec.scheduleWithFixedDelay(gpsDataLoader, 100, 2, TimeUnit.SECONDS);//抓取GPS数据
  132 +
  133 + sexec.scheduleWithFixedDelay(offlineMonitorThread, 120, 60, TimeUnit.SECONDS);//GPS设备掉离线
  134 + sexec.scheduleWithFixedDelay(schedulePstThread, 120, 10, TimeUnit.SECONDS);//班次延迟入库线程
  135 + sexec.scheduleWithFixedDelay(seiPstThread, 160, 60, TimeUnit.SECONDS);//班次修正日志入库
135 136 sexec.scheduleWithFixedDelay(directivesPstThread, 180, 100, TimeUnit.SECONDS);//调度指令延迟入库
136 137 sexec.scheduleWithFixedDelay(threadMonotor, 240, 60, TimeUnit.SECONDS);//线程监听(防止重要的线程阻塞、异常结束。以及部分主备切换工作)
137   - sexec.scheduleWithFixedDelay(sampleTimeDataLoader, 12, 120 * 60, TimeUnit.SECONDS);//到离站预测需要的站点间耗时数据
  138 + sexec.scheduleWithFixedDelay(sampleTimeDataLoader, 140, 120 * 60, TimeUnit.SECONDS);//到离站预测需要的站点间耗时数据
138 139 sexec.scheduleWithFixedDelay(basicDataLoader, 2, 2, TimeUnit.HOURS);//基础数据更新
139 140 DirectivePushQueue.start();//消息队列 -指令,系统下发的
140 141 WebSocketPushQueue.start();//消息队列 -webSocket ,推送至线调web页面的
141 142  
142 143 /** 线调为其他程序提供的数据 --写入数据库 */
143   - sexec.scheduleWithFixedDelay(fcxxUpdateThread, 60, 40, TimeUnit.SECONDS);//发车信息(发车屏、信息发布)
  144 + sexec.scheduleWithFixedDelay(fcxxUpdateThread, 160, 40, TimeUnit.SECONDS);//发车信息(发车屏、信息发布)
144 145 //线路首末班数据(网关用,班次更新时写入)
145 146 //com.bsth.data.schedule.f_a_l.FirstAndLastHandler
146   - sexec.scheduleWithFixedDelay(schSiginUpdateDBThread, 60, 60 * 30, TimeUnit.SECONDS);//无法自动完成的班次信息(网关用,补信号)
  147 + sexec.scheduleWithFixedDelay(schSiginUpdateDBThread, 160, 60 * 30, TimeUnit.SECONDS);//无法自动完成的班次信息(网关用,补信号)
147 148  
148 149 //运管处静态数据提交
149 150 log.info(timeDiff / 1000 / 60 + "分钟之后提交到运管处");
... ...
src/main/java/com/bsth/controller/LineController.java
... ... @@ -90,7 +90,7 @@ public class LineController extends BaseController<Line, Integer> {
90 90 map.put("status", ResponseCode.ERROR);
91 91 return map;
92 92 }
93   - return service.save(l);
  93 + return service.update(l);
94 94 }
95 95  
96 96 @RequestMapping(value ="/findById" , method = RequestMethod.GET)
... ...
src/main/java/com/bsth/data/gpsdata/arrival/GeoCacheData.java
... ... @@ -33,8 +33,8 @@ public class GeoCacheData {
33 33  
34 34 static Logger logger = LoggerFactory.getLogger(GeoCacheData.class);
35 35  
36   - //每辆车缓存最后1000条gps
37   - private static final int CACHE_SIZE = 1000;
  36 + //每辆车缓存最后500条gps
  37 + private static final int CACHE_SIZE = 500;
38 38 private static Map<String, CircleQueue<GpsEntity>> gpsCacheMap = new HashMap<>();
39 39  
40 40 //线路路段走向
... ...
src/main/java/com/bsth/data/gpsdata/arrival/GpsRealAnalyse.java
... ... @@ -41,7 +41,8 @@ public class GpsRealAnalyse {
41 41 @Autowired
42 42 GpsRealData gpsRealData;
43 43  
44   - static ExecutorService threadPool = Executors.newFixedThreadPool(25);
  44 + final static int POOL_SIZE = 15;
  45 + static ExecutorService threadPool = Executors.newFixedThreadPool(POOL_SIZE + 1);
45 46  
46 47 public static long st;
47 48 public static CountDownLatch count;
... ... @@ -60,19 +61,27 @@ public class GpsRealAnalyse {
60 61 return;
61 62 st = System.currentTimeMillis();
62 63  
63   - //按线路分组gps
  64 + //按设备号分组数据(一个设备号的多条数据,必须在一个线程里跑)
64 65 ArrayListMultimap multimap = ArrayListMultimap.create();
65 66 for (GpsEntity gps : list) {
66   - multimap.put(gps.getLineId(), gps);
  67 + multimap.put(gps.getDeviceId(), gps);
67 68 }
68   -
69   - Set<String> ks = multimap.keySet();
70   -
  69 + List<String> deviceList = new ArrayList<>(multimap.keySet());
  70 +
  71 + //数据均分给20个线程
  72 + ArrayListMultimap dataListMap = ArrayListMultimap.create();
  73 + int size = deviceList.size(), threadIndex=0, threadSize = size / POOL_SIZE;
  74 + for(int i = 0; i < size; i++){
  75 + if(i % threadSize == 0)
  76 + threadIndex ++;
  77 + dataListMap.putAll(threadIndex, multimap.get(deviceList.get(i)));
  78 + }
  79 + Set<Integer> ks = dataListMap.keySet();
71 80 logger.info("analyse gps size: " + list.size() + ", ks: " + ks.size());
72 81 count = new CountDownLatch(ks.size());
73 82  
74   - for (String lineCode : ks) {
75   - threadPool.execute(new SignalHandleThread(multimap.get(lineCode), count));
  83 + for (Integer index : ks) {
  84 + threadPool.execute(new SignalHandleThread(dataListMap.get(index), count));
76 85 }
77 86  
78 87 //等待子线程结束
... ...
src/main/java/com/bsth/data/summary/service/impl/FastAndSlowServiceImpl.java
... ... @@ -41,7 +41,7 @@ public class FastAndSlowServiceImpl extends BaseServiceImpl&lt;FastAndSlow, Long&gt; i
41 41 try {
42 42 //最多5天
43 43 map.put("rq_le", maxEndTime(map.get("rq_ge").toString()
44   - , map.get("rq_le").toString(), 5));
  44 + , map.get("rq_le").toString(), 4));
45 45  
46 46 List<FastAndSlow> list = (List) super.list(map);
47 47 String type = String.valueOf(map.get("type"));
... ... @@ -95,7 +95,7 @@ public class FastAndSlowServiceImpl extends BaseServiceImpl&lt;FastAndSlow, Long&gt; i
95 95 wb.setSheetName(i, ks.get(i));
96 96 }
97 97 //删除多余的sheet
98   - for(int i = ks.size(); i <31; i++){
  98 + for(int i = ks.size(); i <32; i++){
99 99 wb.removeSheetAt(ks.size());
100 100 }
101 101  
... ...
src/main/java/com/bsth/repository/LineRepository.java
1 1 package com.bsth.repository;
2 2  
  3 +import java.util.Date;
3 4 import java.util.List;
  5 +import java.util.Map;
4 6  
  7 +import org.springframework.data.jpa.repository.Modifying;
5 8 import org.springframework.data.jpa.repository.Query;
6 9 import org.springframework.stereotype.Repository;
  10 +import org.springframework.transaction.annotation.Transactional;
7 11  
8 12 import com.bsth.entity.Line;
9 13  
... ... @@ -24,8 +28,7 @@ import com.bsth.entity.Line;
24 28 */
25 29 @Repository
26 30 public interface LineRepository extends BaseRepository<Line, Integer> {
27   -
28   -
  31 +
29 32 /**
30 33 * 获取线路编码
31 34 *
... ... @@ -33,15 +36,31 @@ public interface LineRepository extends BaseRepository&lt;Line, Integer&gt; {
33 36 */
34 37 @Query(value = " SELECT IFNULL(num,0) as maxId from (SELECT MAX(id) as num FROM bsth_c_line) k ", nativeQuery = true)
35 38 public long selectMaxIdToLineCode();
36   -
  39 +
37 40 @Query(value = " SELECT l FROM Line l where l.name like ?1")
38 41 List<Line> findLine(String line);
39   -
  42 +
40 43 public Line findByLineCode(String string);
41   -
  44 +
42 45 @Query(value = " SELECT l FROM Line l where l.company like %?1% and l.brancheCompany like %?2% and l.lineCode like ?3")
43 46 public List<Line> findLineBygsBm(String gsBm, String fgsBm, String line);
44 47  
45 48 @Query("SELECT L FROM Line L where L.destroy=0")
46 49 List<Line> findAllService();
  50 +
  51 +
  52 + @Modifying
  53 + @Query(value = "UPDATE Line l set l.name=?1 , l.company=?2, l.brancheCompany=?3, "
  54 + + "l.level=?4, l.nature=?5, l.startStationName=?6, l.endStationName=?7, l.startStationFirstTime=?8, "
  55 + + "l.startStationEndTime=?9, l.endStationFirstTime=?10, l.endStationEndTime=?11, l.linePlayType=?12, "
  56 + + "l.openDate=?13, l.es=?14, l.shortName=?15, l.shanghaiLinecode=?16, l.eqLinecode=?17, l.startPhone=?18, "
  57 + + "l.endPhone=?19, l.carSumNumber=?20, l.hvacCarNumber=?21, l.ordCarNumber=?22, l.history=?23, "
  58 + + "l.descriptions=?24, l.destroy=?25, l.supperLine=?26, l.spacGrade=?27, l.warrantCar=?28 where "
  59 + + "l.lineCode=?29 ")
  60 + public int update(String name, String company, String brancheCompany, String level, String nature,
  61 + String startStationName, String endStationName, String startStationFirstTime, String startStationEndTime,
  62 + String endStationFirstTime, String endStationEndTime, Integer linePlayType, Date openDate, String es,
  63 + String shortName, String shanghaiLinecode, String eqLinecode, String startPhone, String endPhone,
  64 + Integer carSumNumber, Integer hvacCarNumber, Integer ordCarNumber, String history, String descriptions,
  65 + Integer destroy, Integer supperLine, Integer spacGrade, Integer warrantCar, String lineCode);
47 66 }
... ...
src/main/java/com/bsth/service/LineService.java
... ... @@ -36,4 +36,6 @@ public interface LineService extends BaseService&lt;Line, Integer&gt; {
36 36 Line findById(Integer id);
37 37  
38 38 String lineCodeVerification(String lineCode);
  39 +
  40 + Map<String, Object> update(Line l);
39 41 }
... ...
src/main/java/com/bsth/service/impl/LineServiceImpl.java
... ... @@ -5,7 +5,9 @@ import java.util.Map;
5 5  
6 6 import org.springframework.beans.factory.annotation.Autowired;
7 7 import org.springframework.stereotype.Service;
  8 +import org.springframework.transaction.annotation.Transactional;
8 9  
  10 +import com.bsth.common.ResponseCode;
9 11 import com.bsth.entity.Line;
10 12 import com.bsth.repository.LineRepository;
11 13 import com.bsth.service.LineService;
... ... @@ -27,11 +29,11 @@ import com.bsth.service.LineService;
27 29 */
28 30  
29 31 @Service
30   -public class LineServiceImpl extends BaseServiceImpl<Line, Integer> implements LineService{
31   -
  32 +public class LineServiceImpl extends BaseServiceImpl<Line, Integer> implements LineService {
  33 +
32 34 @Autowired
33 35 private LineRepository repository;
34   -
  36 +
35 37 /**
36 38 * 获取线路编码
37 39 *
... ... @@ -41,7 +43,7 @@ public class LineServiceImpl extends BaseServiceImpl&lt;Line, Integer&gt; implements L
41 43 // TODO Auto-generated method stub
42 44 return repository.selectMaxIdToLineCode();
43 45 }
44   -
  46 +
45 47 @Override
46 48 public Line findByLineCode(String lineCode) {
47 49 return repository.findByLineCode(lineCode);
... ... @@ -57,10 +59,31 @@ public class LineServiceImpl extends BaseServiceImpl&lt;Line, Integer&gt; implements L
57 59 public String lineCodeVerification(String lineCode) {
58 60 String state = "true";
59 61 Line line = repository.findByLineCode(lineCode);
60   - if(line != null){
  62 + if (line != null) {
61 63 state = "false";
62 64 }
63 65 return state;
64 66 }
  67 +
  68 + @Transactional
  69 + @Override
  70 + public Map<String, Object> update(Line l) {
  71 + Map<String, Object> map = new HashMap<>();
  72 +
  73 + int status = repository.update(l.getName(), l.getCompany(), l.getBrancheCompany(), l.getLevel(), l.getNature(),
  74 + l.getStartStationName(), l.getEndStationName(), l.getStartStationFirstTime(),
  75 + l.getStartStationEndTime(), l.getEndStationFirstTime(), l.getEndStationEndTime(), l.getLinePlayType(),
  76 + l.getOpenDate(), l.getEs(), l.getShortName(), l.getShanghaiLinecode(), l.getEqLinecode(),
  77 + l.getStartPhone(), l.getEndPhone(), l.getCarSumNumber(), l.getHvacCarNumber(), l.getOrdCarNumber(),
  78 + l.getHistory(), l.getDescriptions(), l.getDestroy(), l.getSupperLine(), l.getSpacGrade(),
  79 + l.getWarrantCar(), l.getLineCode());
  80 + if (status==1) {
  81 + map.put("status", ResponseCode.SUCCESS);
  82 + } else {
  83 + map.put("status", ResponseCode.ERROR);
  84 + }
  85 +
  86 + return map;
  87 + }
65 88  
66 89 }
... ...
src/main/java/com/bsth/service/report/impl/ReportServiceImpl.java
... ... @@ -1909,7 +1909,19 @@ public class ReportServiceImpl implements ReportService{
1909 1909 }
1910 1910  
1911 1911 List<ScheduleRealInfo> sList=scheduleRealInfoRepository.scheduleByDateAndLineTjrb(line, date);
1912   - Map<String, Object> newMap=culateService.culateWdbcs(sList);
  1912 + List<ScheduleRealInfo> lists=new ArrayList<ScheduleRealInfo>();
  1913 + for (int i = 0; i < sList.size(); i++) {
  1914 + ScheduleRealInfo s=sList.get(i);
  1915 + Set<ChildTaskPlan> cts = s.getcTasks();
  1916 + if(cts != null && cts.size() > 0){
  1917 + lists.add(s);
  1918 + }else{
  1919 + if(s.getZdsjActual()!=null){
  1920 + lists.add(s);
  1921 + }
  1922 + }
  1923 + }
  1924 + Map<String, Object> newMap=culateService.culateWdbcs(lists);
1913 1925 newMap.put("jhbc", culateService.culateJhbc(sList,""));
1914 1926 newMap.put("jhbczgf", culateService.culateJhbc(sList,"zgf"));
1915 1927 newMap.put("jhbcwgf", culateService.culateJhbc(sList,"wgf"));
... ... @@ -1917,35 +1929,35 @@ public class ReportServiceImpl implements ReportService{
1917 1929 newMap.put("jhglzgf", culateService.culateJhgl_(sList,"zgf"));
1918 1930 newMap.put("jhglwgf", culateService.culateJhgl_(sList,"wgf"));
1919 1931  
1920   - newMap.put("sjbc", culateService.culateSjbc(sList,""));
1921   - newMap.put("sjbczgf", culateService.culateSjbc(sList,"zgf"));
1922   - newMap.put("sjbcwgf", culateService.culateSjbc(sList,"wgf"));
1923   - newMap.put("sjgl", culateService.culateSjgl(sList));
1924   - newMap.put("sjglzgf", culateService.culateSjgl_(sList,"zgf"));
1925   - newMap.put("sjglwgf", culateService.culateSjgl_(sList,"wgf"));
  1932 + newMap.put("sjbc", culateService.culateSjbc(lists,""));
  1933 + newMap.put("sjbczgf", culateService.culateSjbc(lists,"zgf"));
  1934 + newMap.put("sjbcwgf", culateService.culateSjbc(lists,"wgf"));
  1935 + newMap.put("sjgl", culateService.culateSjgl(lists));
  1936 + newMap.put("sjglzgf", culateService.culateSjgl_(lists,"zgf"));
  1937 + newMap.put("sjglwgf", culateService.culateSjgl_(lists,"wgf"));
1926 1938  
1927   - newMap.put("lbgl", culateService.culateLbgl(sList));
1928   - newMap.put("lbbc", culateService.culateLbbc(sList));
1929   - newMap.put("ljgl", culateService.culateLjgl(sList));
1930   - newMap.put("ljglzgf", culateService.culateLjgl_(sList,"zgf"));
1931   - newMap.put("ljglwgf", culateService.culateLjgl_(sList,"wgf"));
1932   -
1933   - newMap.put("ljbc", culateService.culateLjbc(sList,""));
1934   - newMap.put("ksgl", culateService.culateKsgl(sList));
  1939 + newMap.put("lbgl", culateService.culateLbgl(lists));
  1940 + newMap.put("lbbc", culateService.culateLbbc(lists));
  1941 + newMap.put("ljgl", culateService.culateLjgl(lists));
  1942 + newMap.put("ljglzgf", culateService.culateLjgl_(lists,"zgf"));
  1943 + newMap.put("ljglwgf", culateService.culateLjgl_(lists,"wgf"));
  1944 +
  1945 + newMap.put("ljbc", culateService.culateLjbc(lists,""));
  1946 + newMap.put("ksgl", culateService.culateKsgl(lists));
1935 1947  
1936   - newMap.put("jhfbbc",culateService.culateDtfzbc(sList, "venting", "jh", ""));
1937   - newMap.put("jhfbbczgf",culateService.culateDtfzbc(sList, "venting", "jh", "zgf"));
1938   - newMap.put("jhfbbcwgf",culateService.culateDtfzbc(sList, "venting", "jh", "wgf"));
1939   - newMap.put("sjfbbc",culateService.culateDtfzbc(sList, "venting", "sj", ""));
1940   - newMap.put("sjfbbczgf",culateService.culateDtfzbc(sList, "venting", "sj", "zgf"));
1941   - newMap.put("sjfbbcwgf",culateService.culateDtfzbc(sList, "venting", "sj", "wgf"));
  1948 + newMap.put("jhfbbc",culateService.culateDtfzbc(lists, "venting", "jh", ""));
  1949 + newMap.put("jhfbbczgf",culateService.culateDtfzbc(lists, "venting", "jh", "zgf"));
  1950 + newMap.put("jhfbbcwgf",culateService.culateDtfzbc(lists, "venting", "jh", "wgf"));
  1951 + newMap.put("sjfbbc",culateService.culateDtfzbc(lists, "venting", "sj", ""));
  1952 + newMap.put("sjfbbczgf",culateService.culateDtfzbc(lists, "venting", "sj", "zgf"));
  1953 + newMap.put("sjfbbcwgf",culateService.culateDtfzbc(lists, "venting", "sj", "wgf"));
1942 1954  
1943   - newMap.put("jhdtbc",culateService.culateDtfzbc(sList, "major", "jh", ""));
1944   - newMap.put("jhdtbczgf",culateService.culateDtfzbc(sList, "major", "jh", "zgf"));
1945   - newMap.put("jhdtbcwgf",culateService.culateDtfzbc(sList, "major", "jh", "wgf"));
1946   - newMap.put("sjdtbc",culateService.culateDtfzbc(sList, "major", "sj", ""));
1947   - newMap.put("sjdtbczgf",culateService.culateDtfzbc(sList, "major", "sj", "zgf"));
1948   - newMap.put("sjdtbcwgf",culateService.culateDtfzbc(sList, "major", "sj", "wgf"));
  1955 + newMap.put("jhdtbc",culateService.culateDtfzbc(lists, "major", "jh", ""));
  1956 + newMap.put("jhdtbczgf",culateService.culateDtfzbc(lists, "major", "jh", "zgf"));
  1957 + newMap.put("jhdtbcwgf",culateService.culateDtfzbc(lists, "major", "jh", "wgf"));
  1958 + newMap.put("sjdtbc",culateService.culateDtfzbc(lists, "major", "sj", ""));
  1959 + newMap.put("sjdtbczgf",culateService.culateDtfzbc(lists, "major", "sj", "zgf"));
  1960 + newMap.put("sjdtbcwgf",culateService.culateDtfzbc(lists, "major", "sj", "wgf"));
1949 1961 return newMap;
1950 1962 }
1951 1963 @Override
... ...
src/main/resources/datatools/ktrs/employeesConfigDataInput.ktr
1   -<?xml version="1.0" encoding="UTF-8"?>
2   -<transformation>
3   - <info>
4   - <name>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</name>
5   - <description>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description>
6   - <extended_description>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#x4fe1;&#x606f;</extended_description>
7   - <trans_version/>
8   - <trans_type>Normal</trans_type>
9   - <trans_status>0</trans_status>
10   - <directory>&#x2f;</directory>
11   - <parameters>
12   - <parameter>
13   - <name>erroroutputdir</name>
14   - <default_value/>
15   - <description>ktr step&#x914d;&#x7f6e;&#x7684;&#x9519;&#x8bef;&#x8f93;&#x51fa;&#x76ee;&#x5f55;</description>
16   - </parameter>
17   - <parameter>
18   - <name>filepath</name>
19   - <default_value/>
20   - <description>&#x5f85;&#x5904;&#x7406;&#x5bfc;&#x5165;&#x7684;excel&#x6587;&#x4ef6;</description>
21   - </parameter>
22   - </parameters>
23   - <log>
24   -<trans-log-table><connection/>
25   -<schema/>
26   -<table/>
27   -<size_limit_lines/>
28   -<interval/>
29   -<timeout_days/>
30   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table>
31   -<perf-log-table><connection/>
32   -<schema/>
33   -<table/>
34   -<interval/>
35   -<timeout_days/>
36   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table>
37   -<channel-log-table><connection/>
38   -<schema/>
39   -<table/>
40   -<timeout_days/>
41   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table>
42   -<step-log-table><connection/>
43   -<schema/>
44   -<table/>
45   -<timeout_days/>
46   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table>
47   -<metrics-log-table><connection/>
48   -<schema/>
49   -<table/>
50   -<timeout_days/>
51   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table>
52   - </log>
53   - <maxdate>
54   - <connection/>
55   - <table/>
56   - <field/>
57   - <offset>0.0</offset>
58   - <maxdiff>0.0</maxdiff>
59   - </maxdate>
60   - <size_rowset>10000</size_rowset>
61   - <sleep_time_empty>50</sleep_time_empty>
62   - <sleep_time_full>50</sleep_time_full>
63   - <unique_connections>N</unique_connections>
64   - <feedback_shown>Y</feedback_shown>
65   - <feedback_size>50000</feedback_size>
66   - <using_thread_priorities>Y</using_thread_priorities>
67   - <shared_objects_file/>
68   - <capture_step_performance>N</capture_step_performance>
69   - <step_performance_capturing_delay>1000</step_performance_capturing_delay>
70   - <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
71   - <dependencies>
72   - </dependencies>
73   - <partitionschemas>
74   - </partitionschemas>
75   - <slaveservers>
76   - </slaveservers>
77   - <clusterschemas>
78   - </clusterschemas>
79   - <created_user>-</created_user>
80   - <created_date>2016&#x2f;06&#x2f;29 15&#x3a;12&#x3a;27.273</created_date>
81   - <modified_user>-</modified_user>
82   - <modified_date>2016&#x2f;06&#x2f;29 15&#x3a;12&#x3a;27.273</modified_date>
83   - <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
84   - <is_key_private>N</is_key_private>
85   - </info>
86   - <notepads>
87   - <notepad>
88   - <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>
89   - <xloc>101</xloc>
90   - <yloc>264</yloc>
91   - <width>333</width>
92   - <heigth>90</heigth>
93   - <fontname>YaHei Consolas Hybrid</fontname>
94   - <fontsize>12</fontsize>
95   - <fontbold>N</fontbold>
96   - <fontitalic>N</fontitalic>
97   - <fontcolorred>0</fontcolorred>
98   - <fontcolorgreen>0</fontcolorgreen>
99   - <fontcolorblue>0</fontcolorblue>
100   - <backgroundcolorred>255</backgroundcolorred>
101   - <backgroundcolorgreen>205</backgroundcolorgreen>
102   - <backgroundcolorblue>112</backgroundcolorblue>
103   - <bordercolorred>100</bordercolorred>
104   - <bordercolorgreen>100</bordercolorgreen>
105   - <bordercolorblue>100</bordercolorblue>
106   - <drawshadow>Y</drawshadow>
107   - </notepad>
108   - </notepads>
109   - <connection>
110   - <name>192.168.168.1_jwgl_dw</name>
111   - <server>192.168.168.1</server>
112   - <type>ORACLE</type>
113   - <access>Native</access>
114   - <database>orcl</database>
115   - <port>1521</port>
116   - <username>jwgl_dw</username>
117   - <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password>
118   - <servername/>
119   - <data_tablespace/>
120   - <index_tablespace/>
121   - <attributes>
122   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
123   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
124   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
125   - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
126   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
127   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
128   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
129   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
130   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
131   - </attributes>
132   - </connection>
133   - <connection>
134   - <name>bus_control_variable</name>
135   - <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
136   - <type>MYSQL</type>
137   - <access>Native</access>
138   - <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
139   - <port>3306</port>
140   - <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
141   - <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
142   - <servername/>
143   - <data_tablespace/>
144   - <index_tablespace/>
145   - <attributes>
146   - <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
147   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
148   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
149   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
150   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
151   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
152   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
153   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
154   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
155   - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
156   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
157   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
158   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
159   - </attributes>
160   - </connection>
161   - <connection>
162   - <name>bus_control_&#x516c;&#x53f8;_201</name>
163   - <server>localhost</server>
164   - <type>MYSQL</type>
165   - <access>Native</access>
166   - <database>control</database>
167   - <port>3306</port>
168   - <username>root</username>
169   - <password>Encrypted </password>
170   - <servername/>
171   - <data_tablespace/>
172   - <index_tablespace/>
173   - <attributes>
174   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
175   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
176   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
177   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
178   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
179   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
180   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
181   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
182   - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
183   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
184   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
185   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
186   - </attributes>
187   - </connection>
188   - <connection>
189   - <name>bus_control_&#x672c;&#x673a;</name>
190   - <server>localhost</server>
191   - <type>MYSQL</type>
192   - <access>Native</access>
193   - <database>control</database>
194   - <port>3306</port>
195   - <username>root</username>
196   - <password>Encrypted </password>
197   - <servername/>
198   - <data_tablespace/>
199   - <index_tablespace/>
200   - <attributes>
201   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
202   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
203   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
204   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
205   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
206   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
207   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
208   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
209   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
210   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
211   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
212   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
213   - </attributes>
214   - </connection>
215   - <connection>
216   - <name>xlab_mysql_youle</name>
217   - <server>101.231.124.8</server>
218   - <type>MYSQL</type>
219   - <access>Native</access>
220   - <database>xlab_youle</database>
221   - <port>45687</port>
222   - <username>xlab-youle</username>
223   - <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
224   - <servername/>
225   - <data_tablespace/>
226   - <index_tablespace/>
227   - <attributes>
228   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
229   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
230   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
231   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
232   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
233   - <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
234   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
235   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
236   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
237   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
238   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
239   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
240   - </attributes>
241   - </connection>
242   - <connection>
243   - <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
244   - <server>localhost</server>
245   - <type>MYSQL</type>
246   - <access>Native</access>
247   - <database>xlab_youle</database>
248   - <port>3306</port>
249   - <username>root</username>
250   - <password>Encrypted </password>
251   - <servername/>
252   - <data_tablespace/>
253   - <index_tablespace/>
254   - <attributes>
255   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
256   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
257   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
258   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
259   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
260   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
261   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
262   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
263   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
264   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
265   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
266   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
267   - </attributes>
268   - </connection>
269   - <connection>
270   - <name>xlab_youle</name>
271   - <server/>
272   - <type>MYSQL</type>
273   - <access>JNDI</access>
274   - <database>xlab_youle</database>
275   - <port>1521</port>
276   - <username/>
277   - <password>Encrypted </password>
278   - <servername/>
279   - <data_tablespace/>
280   - <index_tablespace/>
281   - <attributes>
282   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
283   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
284   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
285   - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
286   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
287   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
288   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
289   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
290   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
291   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
292   - </attributes>
293   - </connection>
294   - <order>
295   - <hop> <from>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
296   - <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>
297   - <hop> <from>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</from><to>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</to><enabled>Y</enabled> </hop>
298   - <hop> <from>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</from><to>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
299   - <hop> <from>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</from><to>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
300   - <hop> <from>&#x9a7e;&#x9a76;&#x5458;id&#x67e5;&#x627e;</from><to>&#x8fc7;&#x6ee4;&#x9a7e;&#x9a76;&#x5458;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
301   - <hop> <from>&#x8fc7;&#x6ee4;&#x9a7e;&#x9a76;&#x5458;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</from><to>&#x552e;&#x7968;&#x5458;id&#x67e5;&#x627e;</to><enabled>Y</enabled> </hop>
302   - <hop> <from>&#x552e;&#x7968;&#x5458;id&#x67e5;&#x627e;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</to><enabled>Y</enabled> </hop>
303   - <hop> <from>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</from><to>&#x9a7e;&#x9a76;&#x5458;id&#x67e5;&#x627e;</to><enabled>Y</enabled> </hop>
304   - </order>
305   - <step>
306   - <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name>
307   - <type>ExcelInput</type>
308   - <description/>
309   - <distribute>Y</distribute>
310   - <custom_distribution/>
311   - <copies>1</copies>
312   - <partitioning>
313   - <method>none</method>
314   - <schema_name/>
315   - </partitioning>
316   - <header>Y</header>
317   - <noempty>Y</noempty>
318   - <stoponempty>N</stoponempty>
319   - <filefield/>
320   - <sheetfield/>
321   - <sheetrownumfield/>
322   - <rownumfield/>
323   - <sheetfield/>
324   - <filefield/>
325   - <limit>0</limit>
326   - <encoding/>
327   - <add_to_result_filenames>Y</add_to_result_filenames>
328   - <accept_filenames>Y</accept_filenames>
329   - <accept_field>filepath_</accept_field>
330   - <accept_stepname>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</accept_stepname>
331   - <file>
332   - <name/>
333   - <filemask/>
334   - <exclude_filemask/>
335   - <file_required>N</file_required>
336   - <include_subfolders>N</include_subfolders>
337   - </file>
338   - <fields>
339   - <field>
340   - <name>&#x7ebf;&#x8def;</name>
341   - <type>String</type>
342   - <length>-1</length>
343   - <precision>-1</precision>
344   - <trim_type>none</trim_type>
345   - <repeat>N</repeat>
346   - <format/>
347   - <currency/>
348   - <decimal/>
349   - <group/>
350   - </field>
351   - <field>
352   - <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>
353   - <type>String</type>
354   - <length>-1</length>
355   - <precision>-1</precision>
356   - <trim_type>none</trim_type>
357   - <repeat>N</repeat>
358   - <format>&#x23;</format>
359   - <currency/>
360   - <decimal/>
361   - <group/>
362   - </field>
363   - <field>
364   - <name>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</name>
365   - <type>String</type>
366   - <length>-1</length>
367   - <precision>-1</precision>
368   - <trim_type>none</trim_type>
369   - <repeat>N</repeat>
370   - <format>&#x23;</format>
371   - <currency/>
372   - <decimal/>
373   - <group/>
374   - </field>
375   - <field>
376   - <name>&#x9a7e;&#x9a76;&#x5458;</name>
377   - <type>String</type>
378   - <length>-1</length>
379   - <precision>-1</precision>
380   - <trim_type>none</trim_type>
381   - <repeat>N</repeat>
382   - <format/>
383   - <currency/>
384   - <decimal/>
385   - <group/>
386   - </field>
387   - <field>
388   - <name>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</name>
389   - <type>String</type>
390   - <length>-1</length>
391   - <precision>-1</precision>
392   - <trim_type>none</trim_type>
393   - <repeat>N</repeat>
394   - <format>&#x23;</format>
395   - <currency/>
396   - <decimal/>
397   - <group/>
398   - </field>
399   - <field>
400   - <name>&#x552e;&#x7968;&#x5458;</name>
401   - <type>String</type>
402   - <length>-1</length>
403   - <precision>-1</precision>
404   - <trim_type>none</trim_type>
405   - <repeat>N</repeat>
406   - <format/>
407   - <currency/>
408   - <decimal/>
409   - <group/>
410   - </field>
411   - </fields>
412   - <sheets>
413   - <sheet>
414   - <name>&#x5de5;&#x4f5c;&#x8868;1</name>
415   - <startrow>0</startrow>
416   - <startcol>0</startcol>
417   - </sheet>
418   - </sheets>
419   - <strict_types>N</strict_types>
420   - <error_ignored>N</error_ignored>
421   - <error_line_skipped>N</error_line_skipped>
422   - <bad_line_files_destination_directory/>
423   - <bad_line_files_extension>warning</bad_line_files_extension>
424   - <error_line_files_destination_directory/>
425   - <error_line_files_extension>error</error_line_files_extension>
426   - <line_number_files_destination_directory/>
427   - <line_number_files_extension>line</line_number_files_extension>
428   - <shortFileFieldName/>
429   - <pathFieldName/>
430   - <hiddenFieldName/>
431   - <lastModificationTimeFieldName/>
432   - <uriNameFieldName/>
433   - <rootUriNameFieldName/>
434   - <extensionFieldName/>
435   - <sizeFieldName/>
436   - <spreadsheet_type>JXL</spreadsheet_type>
437   - <cluster_schema/>
438   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
439   - <xloc>93</xloc>
440   - <yloc>51</yloc>
441   - <draw>Y</draw>
442   - </GUI>
443   - </step>
444   -
445   - <step>
446   - <name>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</name>
447   - <type>Constant</type>
448   - <description/>
449   - <distribute>Y</distribute>
450   - <custom_distribution/>
451   - <copies>1</copies>
452   - <partitioning>
453   - <method>none</method>
454   - <schema_name/>
455   - </partitioning>
456   - <fields>
457   - <field>
458   - <name>isCancel</name>
459   - <type>Integer</type>
460   - <format/>
461   - <currency/>
462   - <decimal/>
463   - <group/>
464   - <nullif>0</nullif>
465   - <length>-1</length>
466   - <precision>-1</precision>
467   - <set_empty_string>N</set_empty_string>
468   - </field>
469   - </fields>
470   - <cluster_schema/>
471   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
472   - <xloc>225</xloc>
473   - <yloc>53</yloc>
474   - <draw>Y</draw>
475   - </GUI>
476   - </step>
477   -
478   - <step>
479   - <name>&#x552e;&#x7968;&#x5458;id&#x67e5;&#x627e;</name>
480   - <type>DBJoin</type>
481   - <description/>
482   - <distribute>Y</distribute>
483   - <custom_distribution/>
484   - <copies>1</copies>
485   - <partitioning>
486   - <method>none</method>
487   - <schema_name/>
488   - </partitioning>
489   - <connection>bus_control_variable</connection>
490   - <rowlimit>1</rowlimit>
491   - <sql>select id as sid from bsth_c_personnel&#xa;where job_codeori &#x3d; &#x3f; and personnel_name &#x3d; &#x3f;</sql>
492   - <outer_join>Y</outer_join>
493   - <replace_vars>N</replace_vars>
494   - <parameter>
495   - <field>
496   - <name>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</name>
497   - <type>String</type>
498   - </field>
499   - <field>
500   - <name>&#x552e;&#x7968;&#x5458;</name>
501   - <type>String</type>
502   - </field>
503   - </parameter>
504   - <cluster_schema/>
505   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
506   - <xloc>830</xloc>
507   - <yloc>45</yloc>
508   - <draw>Y</draw>
509   - </GUI>
510   - </step>
511   -
512   - <step>
513   - <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</name>
514   - <type>InsertUpdate</type>
515   - <description/>
516   - <distribute>Y</distribute>
517   - <custom_distribution/>
518   - <copies>1</copies>
519   - <partitioning>
520   - <method>none</method>
521   - <schema_name/>
522   - </partitioning>
523   - <connection>bus_control_variable</connection>
524   - <commit>100</commit>
525   - <update_bypassed>N</update_bypassed>
526   - <lookup>
527   - <schema/>
528   - <table>bsth_c_s_ecinfo</table>
529   - <key>
530   - <name>xlid</name>
531   - <field>xl</field>
532   - <condition>&#x3d;</condition>
533   - <name2/>
534   - </key>
535   - <key>
536   - <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>
537   - <field>dbbm</field>
538   - <condition>&#x3d;</condition>
539   - <name2/>
540   - </key>
541   - <key>
542   - <name>isCancel</name>
543   - <field>is_cancel</field>
544   - <condition>&#x3d;</condition>
545   - <name2/>
546   - </key>
547   - <value>
548   - <name>xl</name>
549   - <rename>xlid</rename>
550   - <update>Y</update>
551   - </value>
552   - <value>
553   - <name>dbbm</name>
554   - <rename>&#x642d;&#x73ed;&#x7f16;&#x7801;</rename>
555   - <update>Y</update>
556   - </value>
557   - <value>
558   - <name>jsy</name>
559   - <rename>jid</rename>
560   - <update>Y</update>
561   - </value>
562   - <value>
563   - <name>spy</name>
564   - <rename>sid</rename>
565   - <update>Y</update>
566   - </value>
567   - <value>
568   - <name>is_cancel</name>
569   - <rename>isCancel</rename>
570   - <update>Y</update>
571   - </value>
572   - </lookup>
573   - <cluster_schema/>
574   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
575   - <xloc>833</xloc>
576   - <yloc>198</yloc>
577   - <draw>Y</draw>
578   - </GUI>
579   - </step>
580   -
581   - <step>
582   - <name>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</name>
583   - <type>DBLookup</type>
584   - <description/>
585   - <distribute>Y</distribute>
586   - <custom_distribution/>
587   - <copies>1</copies>
588   - <partitioning>
589   - <method>none</method>
590   - <schema_name/>
591   - </partitioning>
592   - <connection>bus_control_variable</connection>
593   - <cache>Y</cache>
594   - <cache_load_all>Y</cache_load_all>
595   - <cache_size>0</cache_size>
596   - <lookup>
597   - <schema/>
598   - <table>bsth_c_line</table>
599   - <orderby/>
600   - <fail_on_multiple>N</fail_on_multiple>
601   - <eat_row_on_failure>N</eat_row_on_failure>
602   - <key>
603   - <name>&#x7ebf;&#x8def;</name>
604   - <field>name</field>
605   - <condition>&#x3d;</condition>
606   - <name2/>
607   - </key>
608   - <key>
609   - <name>isCancel</name>
610   - <field>destroy</field>
611   - <condition>&#x3d;</condition>
612   - <name2/>
613   - </key>
614   - <value>
615   - <name>id</name>
616   - <rename>xlid</rename>
617   - <default/>
618   - <type>Integer</type>
619   - </value>
620   - </lookup>
621   - <cluster_schema/>
622   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
623   - <xloc>397</xloc>
624   - <yloc>144</yloc>
625   - <draw>Y</draw>
626   - </GUI>
627   - </step>
628   -
629   - <step>
630   - <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>
631   - <type>GetVariable</type>
632   - <description/>
633   - <distribute>Y</distribute>
634   - <custom_distribution/>
635   - <copies>1</copies>
636   - <partitioning>
637   - <method>none</method>
638   - <schema_name/>
639   - </partitioning>
640   - <fields>
641   - <field>
642   - <name>filepath_</name>
643   - <variable>&#x24;&#x7b;filepath&#x7d;</variable>
644   - <type>String</type>
645   - <format/>
646   - <currency/>
647   - <decimal/>
648   - <group/>
649   - <length>-1</length>
650   - <precision>-1</precision>
651   - <trim_type>none</trim_type>
652   - </field>
653   - <field>
654   - <name>erroroutputdir_</name>
655   - <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
656   - <type>String</type>
657   - <format/>
658   - <currency/>
659   - <decimal/>
660   - <group/>
661   - <length>-1</length>
662   - <precision>-1</precision>
663   - <trim_type>none</trim_type>
664   - </field>
665   - </fields>
666   - <cluster_schema/>
667   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
668   - <xloc>94</xloc>
669   - <yloc>178</yloc>
670   - <draw>Y</draw>
671   - </GUI>
672   - </step>
673   -
674   - <step>
675   - <name>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>
676   - <type>FilterRows</type>
677   - <description/>
678   - <distribute>Y</distribute>
679   - <custom_distribution/>
680   - <copies>1</copies>
681   - <partitioning>
682   - <method>none</method>
683   - <schema_name/>
684   - </partitioning>
685   -<send_true_to/>
686   -<send_false_to/>
687   - <compare>
688   -<condition>
689   - <negated>N</negated>
690   - <leftvalue>xlid</leftvalue>
691   - <function>IS NOT NULL</function>
692   - <rightvalue/>
693   - </condition>
694   - </compare>
695   - <cluster_schema/>
696   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
697   - <xloc>395</xloc>
698   - <yloc>49</yloc>
699   - <draw>Y</draw>
700   - </GUI>
701   - </step>
702   -
703   - <step>
704   - <name>&#x8fc7;&#x6ee4;&#x9a7e;&#x9a76;&#x5458;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>
705   - <type>FilterRows</type>
706   - <description/>
707   - <distribute>Y</distribute>
708   - <custom_distribution/>
709   - <copies>1</copies>
710   - <partitioning>
711   - <method>none</method>
712   - <schema_name/>
713   - </partitioning>
714   -<send_true_to>&#x552e;&#x7968;&#x5458;id&#x67e5;&#x627e;</send_true_to>
715   -<send_false_to/>
716   - <compare>
717   -<condition>
718   - <negated>N</negated>
719   - <leftvalue>jid</leftvalue>
720   - <function>IS NOT NULL</function>
721   - <rightvalue/>
722   - </condition>
723   - </compare>
724   - <cluster_schema/>
725   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
726   - <xloc>604</xloc>
727   - <yloc>46</yloc>
728   - <draw>Y</draw>
729   - </GUI>
730   - </step>
731   -
732   - <step>
733   - <name>&#x9519;&#x8bef;&#x8f93;&#x51fa;</name>
734   - <type>ExcelOutput</type>
735   - <description/>
736   - <distribute>Y</distribute>
737   - <custom_distribution/>
738   - <copies>1</copies>
739   - <partitioning>
740   - <method>none</method>
741   - <schema_name/>
742   - </partitioning>
743   - <header>Y</header>
744   - <footer>N</footer>
745   - <encoding>UTF-8</encoding>
746   - <append>N</append>
747   - <add_to_result_filenames>Y</add_to_result_filenames>
748   - <file>
749   - <name>&#x24;&#x7b;erroroutputdir&#x7d;&#x2f;&#x4eba;&#x5458;&#x914d;&#x7f6e;_&#x9519;&#x8bef;</name>
750   - <extention>xls</extention>
751   - <do_not_open_newfile_init>N</do_not_open_newfile_init>
752   - <create_parent_folder>N</create_parent_folder>
753   - <split>N</split>
754   - <add_date>N</add_date>
755   - <add_time>N</add_time>
756   - <SpecifyFormat>N</SpecifyFormat>
757   - <date_time_format/>
758   - <sheetname>Sheet1</sheetname>
759   - <autosizecolums>N</autosizecolums>
760   - <nullisblank>N</nullisblank>
761   - <protect_sheet>N</protect_sheet>
762   - <password>Encrypted </password>
763   - <splitevery>0</splitevery>
764   - <usetempfiles>N</usetempfiles>
765   - <tempdirectory/>
766   - </file>
767   - <template>
768   - <enabled>N</enabled>
769   - <append>N</append>
770   - <filename>template.xls</filename>
771   - </template>
772   - <fields>
773   - <field>
774   - <name>&#x7ebf;&#x8def;</name>
775   - <type>String</type>
776   - <format/>
777   - </field>
778   - <field>
779   - <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>
780   - <type>String</type>
781   - <format/>
782   - </field>
783   - <field>
784   - <name>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</name>
785   - <type>String</type>
786   - <format/>
787   - </field>
788   - <field>
789   - <name>&#x9a7e;&#x9a76;&#x5458;</name>
790   - <type>String</type>
791   - <format/>
792   - </field>
793   - <field>
794   - <name>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</name>
795   - <type>String</type>
796   - <format/>
797   - </field>
798   - <field>
799   - <name>&#x552e;&#x7968;&#x5458;</name>
800   - <type>String</type>
801   - <format/>
802   - </field>
803   - <field>
804   - <name>isCancel</name>
805   - <type>Integer</type>
806   - <format/>
807   - </field>
808   - <field>
809   - <name>xlid</name>
810   - <type>Integer</type>
811   - <format/>
812   - </field>
813   - <field>
814   - <name>jid</name>
815   - <type>Integer</type>
816   - <format/>
817   - </field>
818   - <field>
819   - <name>sid</name>
820   - <type>Integer</type>
821   - <format/>
822   - </field>
823   - <field>
824   - <name>error_count</name>
825   - <type>Integer</type>
826   - <format/>
827   - </field>
828   - <field>
829   - <name>error_desc</name>
830   - <type>String</type>
831   - <format/>
832   - </field>
833   - <field>
834   - <name>error_column1</name>
835   - <type>String</type>
836   - <format/>
837   - </field>
838   - <field>
839   - <name>error_column2</name>
840   - <type>String</type>
841   - <format/>
842   - </field>
843   - </fields>
844   - <custom>
845   - <header_font_name>arial</header_font_name>
846   - <header_font_size>10</header_font_size>
847   - <header_font_bold>N</header_font_bold>
848   - <header_font_italic>N</header_font_italic>
849   - <header_font_underline>no</header_font_underline>
850   - <header_font_orientation>horizontal</header_font_orientation>
851   - <header_font_color>black</header_font_color>
852   - <header_background_color>none</header_background_color>
853   - <header_row_height>255</header_row_height>
854   - <header_alignment>left</header_alignment>
855   - <header_image/>
856   - <row_font_name>arial</row_font_name>
857   - <row_font_size>10</row_font_size>
858   - <row_font_color>black</row_font_color>
859   - <row_background_color>none</row_background_color>
860   - </custom>
861   - <cluster_schema/>
862   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
863   - <xloc>833</xloc>
864   - <yloc>321</yloc>
865   - <draw>Y</draw>
866   - </GUI>
867   - </step>
868   -
869   - <step>
870   - <name>&#x9a7e;&#x9a76;&#x5458;id&#x67e5;&#x627e;</name>
871   - <type>DBJoin</type>
872   - <description/>
873   - <distribute>Y</distribute>
874   - <custom_distribution/>
875   - <copies>1</copies>
876   - <partitioning>
877   - <method>none</method>
878   - <schema_name/>
879   - </partitioning>
880   - <connection>bus_control_variable</connection>
881   - <rowlimit>1</rowlimit>
882   - <sql>select id as jid from bsth_c_personnel&#xa;where job_codeori &#x3d; &#x3f; and personnel_name &#x3d; &#x3f;</sql>
883   - <outer_join>Y</outer_join>
884   - <replace_vars>N</replace_vars>
885   - <parameter>
886   - <field>
887   - <name>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</name>
888   - <type>String</type>
889   - </field>
890   - <field>
891   - <name>&#x9a7e;&#x9a76;&#x5458;</name>
892   - <type>String</type>
893   - </field>
894   - </parameter>
895   - <cluster_schema/>
896   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
897   - <xloc>603</xloc>
898   - <yloc>142</yloc>
899   - <draw>Y</draw>
900   - </GUI>
901   - </step>
902   -
903   - <step_error_handling>
904   - <error>
905   - <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</source_step>
906   - <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa;</target_step>
907   - <is_enabled>Y</is_enabled>
908   - <nr_valuename>error_count</nr_valuename>
909   - <descriptions_valuename>error_desc</descriptions_valuename>
910   - <fields_valuename>error_column1</fields_valuename>
911   - <codes_valuename>error_column2</codes_valuename>
912   - <max_errors/>
913   - <max_pct_errors/>
914   - <min_pct_rows/>
915   - </error>
916   - </step_error_handling>
917   - <slave-step-copy-partition-distribution>
918   -</slave-step-copy-partition-distribution>
919   - <slave_transformation>N</slave_transformation>
920   -
921   -</transformation>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</name>
  5 + <description>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description>
  6 + <extended_description>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#x4fe1;&#x606f;</extended_description>
  7 + <trans_version/>
  8 + <trans_type>Normal</trans_type>
  9 + <trans_status>0</trans_status>
  10 + <directory>&#x2f;</directory>
  11 + <parameters>
  12 + <parameter>
  13 + <name>erroroutputdir</name>
  14 + <default_value/>
  15 + <description>ktr step&#x914d;&#x7f6e;&#x7684;&#x9519;&#x8bef;&#x8f93;&#x51fa;&#x76ee;&#x5f55;</description>
  16 + </parameter>
  17 + <parameter>
  18 + <name>filepath</name>
  19 + <default_value/>
  20 + <description>&#x5f85;&#x5904;&#x7406;&#x5bfc;&#x5165;&#x7684;excel&#x6587;&#x4ef6;</description>
  21 + </parameter>
  22 + </parameters>
  23 + <log>
  24 +<trans-log-table><connection/>
  25 +<schema/>
  26 +<table/>
  27 +<size_limit_lines/>
  28 +<interval/>
  29 +<timeout_days/>
  30 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table>
  31 +<perf-log-table><connection/>
  32 +<schema/>
  33 +<table/>
  34 +<interval/>
  35 +<timeout_days/>
  36 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table>
  37 +<channel-log-table><connection/>
  38 +<schema/>
  39 +<table/>
  40 +<timeout_days/>
  41 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table>
  42 +<step-log-table><connection/>
  43 +<schema/>
  44 +<table/>
  45 +<timeout_days/>
  46 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table>
  47 +<metrics-log-table><connection/>
  48 +<schema/>
  49 +<table/>
  50 +<timeout_days/>
  51 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table>
  52 + </log>
  53 + <maxdate>
  54 + <connection/>
  55 + <table/>
  56 + <field/>
  57 + <offset>0.0</offset>
  58 + <maxdiff>0.0</maxdiff>
  59 + </maxdate>
  60 + <size_rowset>10000</size_rowset>
  61 + <sleep_time_empty>50</sleep_time_empty>
  62 + <sleep_time_full>50</sleep_time_full>
  63 + <unique_connections>N</unique_connections>
  64 + <feedback_shown>Y</feedback_shown>
  65 + <feedback_size>50000</feedback_size>
  66 + <using_thread_priorities>Y</using_thread_priorities>
  67 + <shared_objects_file/>
  68 + <capture_step_performance>N</capture_step_performance>
  69 + <step_performance_capturing_delay>1000</step_performance_capturing_delay>
  70 + <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
  71 + <dependencies>
  72 + </dependencies>
  73 + <partitionschemas>
  74 + </partitionschemas>
  75 + <slaveservers>
  76 + </slaveservers>
  77 + <clusterschemas>
  78 + </clusterschemas>
  79 + <created_user>-</created_user>
  80 + <created_date>2016&#x2f;06&#x2f;29 15&#x3a;12&#x3a;27.273</created_date>
  81 + <modified_user>-</modified_user>
  82 + <modified_date>2016&#x2f;06&#x2f;29 15&#x3a;12&#x3a;27.273</modified_date>
  83 + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
  84 + <is_key_private>N</is_key_private>
  85 + </info>
  86 + <notepads>
  87 + <notepad>
  88 + <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>
  89 + <xloc>101</xloc>
  90 + <yloc>264</yloc>
  91 + <width>333</width>
  92 + <heigth>90</heigth>
  93 + <fontname>YaHei Consolas Hybrid</fontname>
  94 + <fontsize>12</fontsize>
  95 + <fontbold>N</fontbold>
  96 + <fontitalic>N</fontitalic>
  97 + <fontcolorred>0</fontcolorred>
  98 + <fontcolorgreen>0</fontcolorgreen>
  99 + <fontcolorblue>0</fontcolorblue>
  100 + <backgroundcolorred>255</backgroundcolorred>
  101 + <backgroundcolorgreen>205</backgroundcolorgreen>
  102 + <backgroundcolorblue>112</backgroundcolorblue>
  103 + <bordercolorred>100</bordercolorred>
  104 + <bordercolorgreen>100</bordercolorgreen>
  105 + <bordercolorblue>100</bordercolorblue>
  106 + <drawshadow>Y</drawshadow>
  107 + </notepad>
  108 + </notepads>
  109 + <connection>
  110 + <name>192.168.168.1_jwgl_dw</name>
  111 + <server>192.168.168.1</server>
  112 + <type>ORACLE</type>
  113 + <access>Native</access>
  114 + <database>orcl</database>
  115 + <port>1521</port>
  116 + <username>jwgl_dw</username>
  117 + <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password>
  118 + <servername/>
  119 + <data_tablespace/>
  120 + <index_tablespace/>
  121 + <attributes>
  122 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  123 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  124 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  125 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  126 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  127 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  128 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  129 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  130 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  131 + </attributes>
  132 + </connection>
  133 + <connection>
  134 + <name>bus_control_variable</name>
  135 + <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
  136 + <type>MYSQL</type>
  137 + <access>Native</access>
  138 + <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
  139 + <port>3306</port>
  140 + <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
  141 + <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
  142 + <servername/>
  143 + <data_tablespace/>
  144 + <index_tablespace/>
  145 + <attributes>
  146 + <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
  147 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  148 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  149 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  150 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  151 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  152 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  153 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  154 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  155 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  156 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  157 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  158 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  159 + </attributes>
  160 + </connection>
  161 + <connection>
  162 + <name>bus_control_&#x516c;&#x53f8;_201</name>
  163 + <server>localhost</server>
  164 + <type>MYSQL</type>
  165 + <access>Native</access>
  166 + <database>control</database>
  167 + <port>3306</port>
  168 + <username>root</username>
  169 + <password>Encrypted </password>
  170 + <servername/>
  171 + <data_tablespace/>
  172 + <index_tablespace/>
  173 + <attributes>
  174 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  175 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  176 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  177 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  178 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  179 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  180 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  181 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  182 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  183 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  184 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  185 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  186 + </attributes>
  187 + </connection>
  188 + <connection>
  189 + <name>bus_control_&#x672c;&#x673a;</name>
  190 + <server>localhost</server>
  191 + <type>MYSQL</type>
  192 + <access>Native</access>
  193 + <database>control</database>
  194 + <port>3306</port>
  195 + <username>root</username>
  196 + <password>Encrypted </password>
  197 + <servername/>
  198 + <data_tablespace/>
  199 + <index_tablespace/>
  200 + <attributes>
  201 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  202 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  203 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  204 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  205 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  206 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  207 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  208 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  209 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  210 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  211 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  212 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  213 + </attributes>
  214 + </connection>
  215 + <connection>
  216 + <name>xlab_mysql_youle</name>
  217 + <server>101.231.124.8</server>
  218 + <type>MYSQL</type>
  219 + <access>Native</access>
  220 + <database>xlab_youle</database>
  221 + <port>45687</port>
  222 + <username>xlab-youle</username>
  223 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
  224 + <servername/>
  225 + <data_tablespace/>
  226 + <index_tablespace/>
  227 + <attributes>
  228 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  229 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  230 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  231 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  232 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  233 + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
  234 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  235 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  236 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  237 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  238 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  239 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  240 + </attributes>
  241 + </connection>
  242 + <connection>
  243 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  244 + <server>localhost</server>
  245 + <type>MYSQL</type>
  246 + <access>Native</access>
  247 + <database>xlab_youle</database>
  248 + <port>3306</port>
  249 + <username>root</username>
  250 + <password>Encrypted </password>
  251 + <servername/>
  252 + <data_tablespace/>
  253 + <index_tablespace/>
  254 + <attributes>
  255 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  256 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  257 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  258 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  259 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  260 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  261 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  262 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  263 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  264 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  265 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  266 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  267 + </attributes>
  268 + </connection>
  269 + <connection>
  270 + <name>xlab_youle</name>
  271 + <server/>
  272 + <type>MYSQL</type>
  273 + <access>JNDI</access>
  274 + <database>xlab_youle</database>
  275 + <port>1521</port>
  276 + <username/>
  277 + <password>Encrypted </password>
  278 + <servername/>
  279 + <data_tablespace/>
  280 + <index_tablespace/>
  281 + <attributes>
  282 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  283 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  284 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  285 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  286 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  287 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  288 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  289 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  290 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  291 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  292 + </attributes>
  293 + </connection>
  294 + <order>
  295 + <hop> <from>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
  296 + <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>
  297 + <hop> <from>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</from><to>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</to><enabled>Y</enabled> </hop>
  298 + <hop> <from>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</from><to>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  299 + <hop> <from>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</from><to>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  300 + <hop> <from>&#x9a7e;&#x9a76;&#x5458;id&#x67e5;&#x627e;</from><to>&#x8fc7;&#x6ee4;&#x9a7e;&#x9a76;&#x5458;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  301 + <hop> <from>&#x8fc7;&#x6ee4;&#x9a7e;&#x9a76;&#x5458;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</from><to>&#x552e;&#x7968;&#x5458;id&#x67e5;&#x627e;</to><enabled>Y</enabled> </hop>
  302 + <hop> <from>&#x552e;&#x7968;&#x5458;id&#x67e5;&#x627e;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</to><enabled>Y</enabled> </hop>
  303 + <hop> <from>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</from><to>&#x9a7e;&#x9a76;&#x5458;id&#x67e5;&#x627e;</to><enabled>Y</enabled> </hop>
  304 + </order>
  305 + <step>
  306 + <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name>
  307 + <type>ExcelInput</type>
  308 + <description/>
  309 + <distribute>Y</distribute>
  310 + <custom_distribution/>
  311 + <copies>1</copies>
  312 + <partitioning>
  313 + <method>none</method>
  314 + <schema_name/>
  315 + </partitioning>
  316 + <header>Y</header>
  317 + <noempty>Y</noempty>
  318 + <stoponempty>N</stoponempty>
  319 + <filefield/>
  320 + <sheetfield/>
  321 + <sheetrownumfield/>
  322 + <rownumfield/>
  323 + <sheetfield/>
  324 + <filefield/>
  325 + <limit>0</limit>
  326 + <encoding/>
  327 + <add_to_result_filenames>Y</add_to_result_filenames>
  328 + <accept_filenames>Y</accept_filenames>
  329 + <accept_field>filepath_</accept_field>
  330 + <accept_stepname>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</accept_stepname>
  331 + <file>
  332 + <name/>
  333 + <filemask/>
  334 + <exclude_filemask/>
  335 + <file_required>N</file_required>
  336 + <include_subfolders>N</include_subfolders>
  337 + </file>
  338 + <fields>
  339 + <field>
  340 + <name>&#x7ebf;&#x8def;</name>
  341 + <type>String</type>
  342 + <length>-1</length>
  343 + <precision>-1</precision>
  344 + <trim_type>none</trim_type>
  345 + <repeat>N</repeat>
  346 + <format/>
  347 + <currency/>
  348 + <decimal/>
  349 + <group/>
  350 + </field>
  351 + <field>
  352 + <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>
  353 + <type>String</type>
  354 + <length>-1</length>
  355 + <precision>-1</precision>
  356 + <trim_type>none</trim_type>
  357 + <repeat>N</repeat>
  358 + <format>&#x23;</format>
  359 + <currency/>
  360 + <decimal/>
  361 + <group/>
  362 + </field>
  363 + <field>
  364 + <name>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</name>
  365 + <type>String</type>
  366 + <length>-1</length>
  367 + <precision>-1</precision>
  368 + <trim_type>none</trim_type>
  369 + <repeat>N</repeat>
  370 + <format>&#x23;</format>
  371 + <currency/>
  372 + <decimal/>
  373 + <group/>
  374 + </field>
  375 + <field>
  376 + <name>&#x9a7e;&#x9a76;&#x5458;</name>
  377 + <type>String</type>
  378 + <length>-1</length>
  379 + <precision>-1</precision>
  380 + <trim_type>none</trim_type>
  381 + <repeat>N</repeat>
  382 + <format/>
  383 + <currency/>
  384 + <decimal/>
  385 + <group/>
  386 + </field>
  387 + <field>
  388 + <name>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</name>
  389 + <type>String</type>
  390 + <length>-1</length>
  391 + <precision>-1</precision>
  392 + <trim_type>none</trim_type>
  393 + <repeat>N</repeat>
  394 + <format>&#x23;</format>
  395 + <currency/>
  396 + <decimal/>
  397 + <group/>
  398 + </field>
  399 + <field>
  400 + <name>&#x552e;&#x7968;&#x5458;</name>
  401 + <type>String</type>
  402 + <length>-1</length>
  403 + <precision>-1</precision>
  404 + <trim_type>none</trim_type>
  405 + <repeat>N</repeat>
  406 + <format/>
  407 + <currency/>
  408 + <decimal/>
  409 + <group/>
  410 + </field>
  411 + </fields>
  412 + <sheets>
  413 + <sheet>
  414 + <name>&#x5de5;&#x4f5c;&#x8868;1</name>
  415 + <startrow>0</startrow>
  416 + <startcol>0</startcol>
  417 + </sheet>
  418 + </sheets>
  419 + <strict_types>N</strict_types>
  420 + <error_ignored>N</error_ignored>
  421 + <error_line_skipped>N</error_line_skipped>
  422 + <bad_line_files_destination_directory/>
  423 + <bad_line_files_extension>warning</bad_line_files_extension>
  424 + <error_line_files_destination_directory/>
  425 + <error_line_files_extension>error</error_line_files_extension>
  426 + <line_number_files_destination_directory/>
  427 + <line_number_files_extension>line</line_number_files_extension>
  428 + <shortFileFieldName/>
  429 + <pathFieldName/>
  430 + <hiddenFieldName/>
  431 + <lastModificationTimeFieldName/>
  432 + <uriNameFieldName/>
  433 + <rootUriNameFieldName/>
  434 + <extensionFieldName/>
  435 + <sizeFieldName/>
  436 + <spreadsheet_type>JXL</spreadsheet_type>
  437 + <cluster_schema/>
  438 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  439 + <xloc>93</xloc>
  440 + <yloc>51</yloc>
  441 + <draw>Y</draw>
  442 + </GUI>
  443 + </step>
  444 +
  445 + <step>
  446 + <name>&#x542f;&#x7528;&#x88ab;&#x6570;&#x636e;flag</name>
  447 + <type>Constant</type>
  448 + <description/>
  449 + <distribute>Y</distribute>
  450 + <custom_distribution/>
  451 + <copies>1</copies>
  452 + <partitioning>
  453 + <method>none</method>
  454 + <schema_name/>
  455 + </partitioning>
  456 + <fields>
  457 + <field>
  458 + <name>isCancel</name>
  459 + <type>Integer</type>
  460 + <format/>
  461 + <currency/>
  462 + <decimal/>
  463 + <group/>
  464 + <nullif>0</nullif>
  465 + <length>-1</length>
  466 + <precision>-1</precision>
  467 + <set_empty_string>N</set_empty_string>
  468 + </field>
  469 + </fields>
  470 + <cluster_schema/>
  471 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  472 + <xloc>225</xloc>
  473 + <yloc>53</yloc>
  474 + <draw>Y</draw>
  475 + </GUI>
  476 + </step>
  477 +
  478 + <step>
  479 + <name>&#x552e;&#x7968;&#x5458;id&#x67e5;&#x627e;</name>
  480 + <type>DBJoin</type>
  481 + <description/>
  482 + <distribute>Y</distribute>
  483 + <custom_distribution/>
  484 + <copies>1</copies>
  485 + <partitioning>
  486 + <method>none</method>
  487 + <schema_name/>
  488 + </partitioning>
  489 + <connection>bus_control_variable</connection>
  490 + <rowlimit>1</rowlimit>
  491 + <sql>select id as sid from bsth_c_personnel&#xa;where job_codeori &#x3d; &#x3f; and personnel_name &#x3d; &#x3f;</sql>
  492 + <outer_join>Y</outer_join>
  493 + <replace_vars>N</replace_vars>
  494 + <parameter>
  495 + <field>
  496 + <name>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</name>
  497 + <type>String</type>
  498 + </field>
  499 + <field>
  500 + <name>&#x552e;&#x7968;&#x5458;</name>
  501 + <type>String</type>
  502 + </field>
  503 + </parameter>
  504 + <cluster_schema/>
  505 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  506 + <xloc>830</xloc>
  507 + <yloc>45</yloc>
  508 + <draw>Y</draw>
  509 + </GUI>
  510 + </step>
  511 +
  512 + <step>
  513 + <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</name>
  514 + <type>InsertUpdate</type>
  515 + <description/>
  516 + <distribute>Y</distribute>
  517 + <custom_distribution/>
  518 + <copies>1</copies>
  519 + <partitioning>
  520 + <method>none</method>
  521 + <schema_name/>
  522 + </partitioning>
  523 + <connection>bus_control_variable</connection>
  524 + <commit>100</commit>
  525 + <update_bypassed>N</update_bypassed>
  526 + <lookup>
  527 + <schema/>
  528 + <table>bsth_c_s_ecinfo</table>
  529 + <key>
  530 + <name>xlid</name>
  531 + <field>xl</field>
  532 + <condition>&#x3d;</condition>
  533 + <name2/>
  534 + </key>
  535 + <key>
  536 + <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>
  537 + <field>dbbm</field>
  538 + <condition>&#x3d;</condition>
  539 + <name2/>
  540 + </key>
  541 + <key>
  542 + <name>isCancel</name>
  543 + <field>is_cancel</field>
  544 + <condition>&#x3d;</condition>
  545 + <name2/>
  546 + </key>
  547 + <value>
  548 + <name>xl</name>
  549 + <rename>xlid</rename>
  550 + <update>Y</update>
  551 + </value>
  552 + <value>
  553 + <name>dbbm</name>
  554 + <rename>&#x642d;&#x73ed;&#x7f16;&#x7801;</rename>
  555 + <update>Y</update>
  556 + </value>
  557 + <value>
  558 + <name>jsy</name>
  559 + <rename>jid</rename>
  560 + <update>Y</update>
  561 + </value>
  562 + <value>
  563 + <name>spy</name>
  564 + <rename>sid</rename>
  565 + <update>Y</update>
  566 + </value>
  567 + <value>
  568 + <name>is_cancel</name>
  569 + <rename>isCancel</rename>
  570 + <update>Y</update>
  571 + </value>
  572 + </lookup>
  573 + <cluster_schema/>
  574 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  575 + <xloc>833</xloc>
  576 + <yloc>198</yloc>
  577 + <draw>Y</draw>
  578 + </GUI>
  579 + </step>
  580 +
  581 + <step>
  582 + <name>&#x7ebf;&#x8def;id&#x67e5;&#x8be2;</name>
  583 + <type>DBLookup</type>
  584 + <description/>
  585 + <distribute>Y</distribute>
  586 + <custom_distribution/>
  587 + <copies>1</copies>
  588 + <partitioning>
  589 + <method>none</method>
  590 + <schema_name/>
  591 + </partitioning>
  592 + <connection>bus_control_variable</connection>
  593 + <cache>Y</cache>
  594 + <cache_load_all>Y</cache_load_all>
  595 + <cache_size>0</cache_size>
  596 + <lookup>
  597 + <schema/>
  598 + <table>bsth_c_line</table>
  599 + <orderby/>
  600 + <fail_on_multiple>N</fail_on_multiple>
  601 + <eat_row_on_failure>N</eat_row_on_failure>
  602 + <key>
  603 + <name>&#x7ebf;&#x8def;</name>
  604 + <field>name</field>
  605 + <condition>&#x3d;</condition>
  606 + <name2/>
  607 + </key>
  608 + <key>
  609 + <name>isCancel</name>
  610 + <field>destroy</field>
  611 + <condition>&#x3d;</condition>
  612 + <name2/>
  613 + </key>
  614 + <value>
  615 + <name>id</name>
  616 + <rename>xlid</rename>
  617 + <default/>
  618 + <type>Integer</type>
  619 + </value>
  620 + </lookup>
  621 + <cluster_schema/>
  622 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  623 + <xloc>397</xloc>
  624 + <yloc>144</yloc>
  625 + <draw>Y</draw>
  626 + </GUI>
  627 + </step>
  628 +
  629 + <step>
  630 + <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>
  631 + <type>GetVariable</type>
  632 + <description/>
  633 + <distribute>Y</distribute>
  634 + <custom_distribution/>
  635 + <copies>1</copies>
  636 + <partitioning>
  637 + <method>none</method>
  638 + <schema_name/>
  639 + </partitioning>
  640 + <fields>
  641 + <field>
  642 + <name>filepath_</name>
  643 + <variable>&#x24;&#x7b;filepath&#x7d;</variable>
  644 + <type>String</type>
  645 + <format/>
  646 + <currency/>
  647 + <decimal/>
  648 + <group/>
  649 + <length>-1</length>
  650 + <precision>-1</precision>
  651 + <trim_type>none</trim_type>
  652 + </field>
  653 + <field>
  654 + <name>erroroutputdir_</name>
  655 + <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
  656 + <type>String</type>
  657 + <format/>
  658 + <currency/>
  659 + <decimal/>
  660 + <group/>
  661 + <length>-1</length>
  662 + <precision>-1</precision>
  663 + <trim_type>none</trim_type>
  664 + </field>
  665 + </fields>
  666 + <cluster_schema/>
  667 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  668 + <xloc>94</xloc>
  669 + <yloc>178</yloc>
  670 + <draw>Y</draw>
  671 + </GUI>
  672 + </step>
  673 +
  674 + <step>
  675 + <name>&#x8fc7;&#x6ee4;&#x7ebf;&#x8def;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>
  676 + <type>FilterRows</type>
  677 + <description/>
  678 + <distribute>Y</distribute>
  679 + <custom_distribution/>
  680 + <copies>1</copies>
  681 + <partitioning>
  682 + <method>none</method>
  683 + <schema_name/>
  684 + </partitioning>
  685 +<send_true_to/>
  686 +<send_false_to/>
  687 + <compare>
  688 +<condition>
  689 + <negated>N</negated>
  690 + <leftvalue>xlid</leftvalue>
  691 + <function>IS NOT NULL</function>
  692 + <rightvalue/>
  693 + </condition>
  694 + </compare>
  695 + <cluster_schema/>
  696 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  697 + <xloc>395</xloc>
  698 + <yloc>49</yloc>
  699 + <draw>Y</draw>
  700 + </GUI>
  701 + </step>
  702 +
  703 + <step>
  704 + <name>&#x8fc7;&#x6ee4;&#x9a7e;&#x9a76;&#x5458;id&#x4e3a;&#x7a7a;&#x8bb0;&#x5f55;</name>
  705 + <type>FilterRows</type>
  706 + <description/>
  707 + <distribute>Y</distribute>
  708 + <custom_distribution/>
  709 + <copies>1</copies>
  710 + <partitioning>
  711 + <method>none</method>
  712 + <schema_name/>
  713 + </partitioning>
  714 +<send_true_to>&#x552e;&#x7968;&#x5458;id&#x67e5;&#x627e;</send_true_to>
  715 +<send_false_to/>
  716 + <compare>
  717 +<condition>
  718 + <negated>N</negated>
  719 + <leftvalue>jid</leftvalue>
  720 + <function>IS NOT NULL</function>
  721 + <rightvalue/>
  722 + </condition>
  723 + </compare>
  724 + <cluster_schema/>
  725 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  726 + <xloc>604</xloc>
  727 + <yloc>46</yloc>
  728 + <draw>Y</draw>
  729 + </GUI>
  730 + </step>
  731 +
  732 + <step>
  733 + <name>&#x9519;&#x8bef;&#x8f93;&#x51fa;</name>
  734 + <type>ExcelOutput</type>
  735 + <description/>
  736 + <distribute>Y</distribute>
  737 + <custom_distribution/>
  738 + <copies>1</copies>
  739 + <partitioning>
  740 + <method>none</method>
  741 + <schema_name/>
  742 + </partitioning>
  743 + <header>Y</header>
  744 + <footer>N</footer>
  745 + <encoding>UTF-8</encoding>
  746 + <append>N</append>
  747 + <add_to_result_filenames>Y</add_to_result_filenames>
  748 + <file>
  749 + <name>&#x24;&#x7b;erroroutputdir&#x7d;&#x2f;&#x4eba;&#x5458;&#x914d;&#x7f6e;_&#x9519;&#x8bef;</name>
  750 + <extention>xls</extention>
  751 + <do_not_open_newfile_init>N</do_not_open_newfile_init>
  752 + <create_parent_folder>N</create_parent_folder>
  753 + <split>N</split>
  754 + <add_date>N</add_date>
  755 + <add_time>N</add_time>
  756 + <SpecifyFormat>N</SpecifyFormat>
  757 + <date_time_format/>
  758 + <sheetname>Sheet1</sheetname>
  759 + <autosizecolums>N</autosizecolums>
  760 + <nullisblank>N</nullisblank>
  761 + <protect_sheet>N</protect_sheet>
  762 + <password>Encrypted </password>
  763 + <splitevery>0</splitevery>
  764 + <usetempfiles>N</usetempfiles>
  765 + <tempdirectory/>
  766 + </file>
  767 + <template>
  768 + <enabled>N</enabled>
  769 + <append>N</append>
  770 + <filename>template.xls</filename>
  771 + </template>
  772 + <fields>
  773 + <field>
  774 + <name>&#x7ebf;&#x8def;</name>
  775 + <type>String</type>
  776 + <format/>
  777 + </field>
  778 + <field>
  779 + <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>
  780 + <type>String</type>
  781 + <format/>
  782 + </field>
  783 + <field>
  784 + <name>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</name>
  785 + <type>String</type>
  786 + <format/>
  787 + </field>
  788 + <field>
  789 + <name>&#x9a7e;&#x9a76;&#x5458;</name>
  790 + <type>String</type>
  791 + <format/>
  792 + </field>
  793 + <field>
  794 + <name>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</name>
  795 + <type>String</type>
  796 + <format/>
  797 + </field>
  798 + <field>
  799 + <name>&#x552e;&#x7968;&#x5458;</name>
  800 + <type>String</type>
  801 + <format/>
  802 + </field>
  803 + <field>
  804 + <name>isCancel</name>
  805 + <type>Integer</type>
  806 + <format/>
  807 + </field>
  808 + <field>
  809 + <name>xlid</name>
  810 + <type>Integer</type>
  811 + <format/>
  812 + </field>
  813 + <field>
  814 + <name>jid</name>
  815 + <type>Integer</type>
  816 + <format/>
  817 + </field>
  818 + <field>
  819 + <name>sid</name>
  820 + <type>Integer</type>
  821 + <format/>
  822 + </field>
  823 + <field>
  824 + <name>error_count</name>
  825 + <type>Integer</type>
  826 + <format/>
  827 + </field>
  828 + <field>
  829 + <name>error_desc</name>
  830 + <type>String</type>
  831 + <format/>
  832 + </field>
  833 + <field>
  834 + <name>error_column1</name>
  835 + <type>String</type>
  836 + <format/>
  837 + </field>
  838 + <field>
  839 + <name>error_column2</name>
  840 + <type>String</type>
  841 + <format/>
  842 + </field>
  843 + </fields>
  844 + <custom>
  845 + <header_font_name>arial</header_font_name>
  846 + <header_font_size>10</header_font_size>
  847 + <header_font_bold>N</header_font_bold>
  848 + <header_font_italic>N</header_font_italic>
  849 + <header_font_underline>no</header_font_underline>
  850 + <header_font_orientation>horizontal</header_font_orientation>
  851 + <header_font_color>black</header_font_color>
  852 + <header_background_color>none</header_background_color>
  853 + <header_row_height>255</header_row_height>
  854 + <header_alignment>left</header_alignment>
  855 + <header_image/>
  856 + <row_font_name>arial</row_font_name>
  857 + <row_font_size>10</row_font_size>
  858 + <row_font_color>black</row_font_color>
  859 + <row_background_color>none</row_background_color>
  860 + </custom>
  861 + <cluster_schema/>
  862 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  863 + <xloc>833</xloc>
  864 + <yloc>321</yloc>
  865 + <draw>Y</draw>
  866 + </GUI>
  867 + </step>
  868 +
  869 + <step>
  870 + <name>&#x9a7e;&#x9a76;&#x5458;id&#x67e5;&#x627e;</name>
  871 + <type>DBJoin</type>
  872 + <description/>
  873 + <distribute>Y</distribute>
  874 + <custom_distribution/>
  875 + <copies>1</copies>
  876 + <partitioning>
  877 + <method>none</method>
  878 + <schema_name/>
  879 + </partitioning>
  880 + <connection>bus_control_variable</connection>
  881 + <rowlimit>1</rowlimit>
  882 + <sql>select id as jid from bsth_c_personnel&#xa;where job_codeori &#x3d; &#x3f; and personnel_name &#x3d; &#x3f;</sql>
  883 + <outer_join>Y</outer_join>
  884 + <replace_vars>N</replace_vars>
  885 + <parameter>
  886 + <field>
  887 + <name>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</name>
  888 + <type>String</type>
  889 + </field>
  890 + <field>
  891 + <name>&#x9a7e;&#x9a76;&#x5458;</name>
  892 + <type>String</type>
  893 + </field>
  894 + </parameter>
  895 + <cluster_schema/>
  896 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  897 + <xloc>603</xloc>
  898 + <yloc>142</yloc>
  899 + <draw>Y</draw>
  900 + </GUI>
  901 + </step>
  902 +
  903 + <step_error_handling>
  904 + <error>
  905 + <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_s_ecinfo</source_step>
  906 + <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa;</target_step>
  907 + <is_enabled>Y</is_enabled>
  908 + <nr_valuename>error_count</nr_valuename>
  909 + <descriptions_valuename>error_desc</descriptions_valuename>
  910 + <fields_valuename>error_column1</fields_valuename>
  911 + <codes_valuename>error_column2</codes_valuename>
  912 + <max_errors/>
  913 + <max_pct_errors/>
  914 + <min_pct_rows/>
  915 + </error>
  916 + </step_error_handling>
  917 + <slave-step-copy-partition-distribution>
  918 +</slave-step-copy-partition-distribution>
  919 + <slave_transformation>N</slave_transformation>
  920 +
  921 +</transformation>
... ...
src/main/resources/datatools/ktrs/employeesConfigDataOutput.ktr
1   -<?xml version="1.0" encoding="UTF-8"?>
2   -<transformation>
3   - <info>
4   - <name>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#x4fe1;&#x606f;&#x5bfc;&#x51fa;</name>
5   - <description/>
6   - <extended_description/>
7   - <trans_version/>
8   - <trans_type>Normal</trans_type>
9   - <trans_status>0</trans_status>
10   - <directory>&#x2f;</directory>
11   - <parameters>
12   - <parameter>
13   - <name>filepath</name>
14   - <default_value/>
15   - <description>excel&#x6587;&#x4ef6;&#x8def;&#x5f84;</description>
16   - </parameter>
17   - <parameter>
18   - <name>xlid</name>
19   - <default_value/>
20   - <description>&#x7ebf;&#x8def;id</description>
21   - </parameter>
22   - </parameters>
23   - <log>
24   -<trans-log-table><connection/>
25   -<schema/>
26   -<table/>
27   -<size_limit_lines/>
28   -<interval/>
29   -<timeout_days/>
30   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table>
31   -<perf-log-table><connection/>
32   -<schema/>
33   -<table/>
34   -<interval/>
35   -<timeout_days/>
36   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table>
37   -<channel-log-table><connection/>
38   -<schema/>
39   -<table/>
40   -<timeout_days/>
41   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table>
42   -<step-log-table><connection/>
43   -<schema/>
44   -<table/>
45   -<timeout_days/>
46   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table>
47   -<metrics-log-table><connection/>
48   -<schema/>
49   -<table/>
50   -<timeout_days/>
51   -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table>
52   - </log>
53   - <maxdate>
54   - <connection/>
55   - <table/>
56   - <field/>
57   - <offset>0.0</offset>
58   - <maxdiff>0.0</maxdiff>
59   - </maxdate>
60   - <size_rowset>10000</size_rowset>
61   - <sleep_time_empty>50</sleep_time_empty>
62   - <sleep_time_full>50</sleep_time_full>
63   - <unique_connections>N</unique_connections>
64   - <feedback_shown>Y</feedback_shown>
65   - <feedback_size>50000</feedback_size>
66   - <using_thread_priorities>Y</using_thread_priorities>
67   - <shared_objects_file/>
68   - <capture_step_performance>N</capture_step_performance>
69   - <step_performance_capturing_delay>1000</step_performance_capturing_delay>
70   - <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
71   - <dependencies>
72   - </dependencies>
73   - <partitionschemas>
74   - </partitionschemas>
75   - <slaveservers>
76   - </slaveservers>
77   - <clusterschemas>
78   - </clusterschemas>
79   - <created_user>-</created_user>
80   - <created_date>2017&#x2f;01&#x2f;11 15&#x3a;36&#x3a;10.101</created_date>
81   - <modified_user>-</modified_user>
82   - <modified_date>2017&#x2f;01&#x2f;11 15&#x3a;36&#x3a;10.101</modified_date>
83   - <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
84   - <is_key_private>N</is_key_private>
85   - </info>
86   - <notepads>
87   - <notepad>
88   - <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>
89   - <xloc>66</xloc>
90   - <yloc>151</yloc>
91   - <width>333</width>
92   - <heigth>90</heigth>
93   - <fontname>YaHei Consolas Hybrid</fontname>
94   - <fontsize>12</fontsize>
95   - <fontbold>N</fontbold>
96   - <fontitalic>N</fontitalic>
97   - <fontcolorred>0</fontcolorred>
98   - <fontcolorgreen>0</fontcolorgreen>
99   - <fontcolorblue>0</fontcolorblue>
100   - <backgroundcolorred>255</backgroundcolorred>
101   - <backgroundcolorgreen>205</backgroundcolorgreen>
102   - <backgroundcolorblue>112</backgroundcolorblue>
103   - <bordercolorred>100</bordercolorred>
104   - <bordercolorgreen>100</bordercolorgreen>
105   - <bordercolorblue>100</bordercolorblue>
106   - <drawshadow>Y</drawshadow>
107   - </notepad>
108   - </notepads>
109   - <connection>
110   - <name>192.168.168.1_jwgl_dw</name>
111   - <server>192.168.168.1</server>
112   - <type>ORACLE</type>
113   - <access>Native</access>
114   - <database>orcl</database>
115   - <port>1521</port>
116   - <username>jwgl_dw</username>
117   - <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password>
118   - <servername/>
119   - <data_tablespace/>
120   - <index_tablespace/>
121   - <attributes>
122   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
123   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
124   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
125   - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
126   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
127   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
128   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
129   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
130   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
131   - </attributes>
132   - </connection>
133   - <connection>
134   - <name>bus_control_variable</name>
135   - <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
136   - <type>MYSQL</type>
137   - <access>Native</access>
138   - <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
139   - <port>3306</port>
140   - <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
141   - <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
142   - <servername/>
143   - <data_tablespace/>
144   - <index_tablespace/>
145   - <attributes>
146   - <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
147   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
148   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
149   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
150   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
151   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
152   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
153   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
154   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
155   - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
156   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
157   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
158   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
159   - </attributes>
160   - </connection>
161   - <connection>
162   - <name>bus_control_&#x516c;&#x53f8;_201</name>
163   - <server>localhost</server>
164   - <type>MYSQL</type>
165   - <access>Native</access>
166   - <database>control</database>
167   - <port>3306</port>
168   - <username>root</username>
169   - <password>Encrypted </password>
170   - <servername/>
171   - <data_tablespace/>
172   - <index_tablespace/>
173   - <attributes>
174   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
175   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
176   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
177   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
178   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
179   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
180   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
181   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
182   - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
183   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
184   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
185   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
186   - </attributes>
187   - </connection>
188   - <connection>
189   - <name>bus_control_&#x672c;&#x673a;</name>
190   - <server>localhost</server>
191   - <type>MYSQL</type>
192   - <access>Native</access>
193   - <database>control</database>
194   - <port>3306</port>
195   - <username>root</username>
196   - <password>Encrypted </password>
197   - <servername/>
198   - <data_tablespace/>
199   - <index_tablespace/>
200   - <attributes>
201   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
202   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
203   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
204   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
205   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
206   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
207   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
208   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
209   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
210   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
211   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
212   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
213   - </attributes>
214   - </connection>
215   - <connection>
216   - <name>xlab_mysql_youle</name>
217   - <server>101.231.124.8</server>
218   - <type>MYSQL</type>
219   - <access>Native</access>
220   - <database>xlab_youle</database>
221   - <port>45687</port>
222   - <username>xlab-youle</username>
223   - <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
224   - <servername/>
225   - <data_tablespace/>
226   - <index_tablespace/>
227   - <attributes>
228   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
229   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
230   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
231   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
232   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
233   - <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
234   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
235   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
236   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
237   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
238   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
239   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
240   - </attributes>
241   - </connection>
242   - <connection>
243   - <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
244   - <server>localhost</server>
245   - <type>MYSQL</type>
246   - <access>Native</access>
247   - <database>xlab_youle</database>
248   - <port>3306</port>
249   - <username>root</username>
250   - <password>Encrypted </password>
251   - <servername/>
252   - <data_tablespace/>
253   - <index_tablespace/>
254   - <attributes>
255   - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
256   - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
257   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
258   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
259   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
260   - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
261   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
262   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
263   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
264   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
265   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
266   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
267   - </attributes>
268   - </connection>
269   - <connection>
270   - <name>xlab_youle</name>
271   - <server/>
272   - <type>MYSQL</type>
273   - <access>JNDI</access>
274   - <database>xlab_youle</database>
275   - <port>1521</port>
276   - <username/>
277   - <password>Encrypted </password>
278   - <servername/>
279   - <data_tablespace/>
280   - <index_tablespace/>
281   - <attributes>
282   - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
283   - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
284   - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
285   - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
286   - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
287   - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
288   - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
289   - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
290   - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
291   - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
292   - </attributes>
293   - </connection>
294   - <order>
295   - <hop> <from>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#xff08;&#x6ca1;&#x6709;&#x4f5c;&#x5e9f;&#xff09;</from><to>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
296   - <hop> <from>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</from><to>&#x9a7e;&#x9a76;&#x5458;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
297   - <hop> <from>&#x9a7e;&#x9a76;&#x5458;&#x67e5;&#x8be2;</from><to>&#x552e;&#x7968;&#x5458;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
298   - <hop> <from>&#x552e;&#x7968;&#x5458;&#x67e5;&#x8be2;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
299   - <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
300   - <hop> <from>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</from><to>Excel&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
301   - </order>
302   - <step>
303   - <name>Excel&#x8f93;&#x51fa;</name>
304   - <type>ExcelOutput</type>
305   - <description/>
306   - <distribute>Y</distribute>
307   - <custom_distribution/>
308   - <copies>1</copies>
309   - <partitioning>
310   - <method>none</method>
311   - <schema_name/>
312   - </partitioning>
313   - <header>Y</header>
314   - <footer>N</footer>
315   - <encoding/>
316   - <append>N</append>
317   - <add_to_result_filenames>Y</add_to_result_filenames>
318   - <file>
319   - <name>&#x24;&#x7b;filepath&#x7d;</name>
320   - <extention>xls</extention>
321   - <do_not_open_newfile_init>N</do_not_open_newfile_init>
322   - <create_parent_folder>N</create_parent_folder>
323   - <split>N</split>
324   - <add_date>N</add_date>
325   - <add_time>N</add_time>
326   - <SpecifyFormat>N</SpecifyFormat>
327   - <date_time_format>yyyyMMddHHmmss</date_time_format>
328   - <sheetname>&#x5de5;&#x4f5c;&#x8868;1</sheetname>
329   - <autosizecolums>N</autosizecolums>
330   - <nullisblank>N</nullisblank>
331   - <protect_sheet>N</protect_sheet>
332   - <password>Encrypted </password>
333   - <splitevery>0</splitevery>
334   - <usetempfiles>N</usetempfiles>
335   - <tempdirectory/>
336   - </file>
337   - <template>
338   - <enabled>N</enabled>
339   - <append>N</append>
340   - <filename>template.xls</filename>
341   - </template>
342   - <fields>
343   - <field>
344   - <name>&#x7ebf;&#x8def;</name>
345   - <type>String</type>
346   - <format/>
347   - </field>
348   - <field>
349   - <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>
350   - <type>String</type>
351   - <format/>
352   - </field>
353   - <field>
354   - <name>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</name>
355   - <type>String</type>
356   - <format/>
357   - </field>
358   - <field>
359   - <name>&#x9a7e;&#x9a76;&#x5458;</name>
360   - <type>String</type>
361   - <format/>
362   - </field>
363   - <field>
364   - <name>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</name>
365   - <type>String</type>
366   - <format/>
367   - </field>
368   - <field>
369   - <name>&#x552e;&#x7968;&#x5458;</name>
370   - <type>String</type>
371   - <format/>
372   - </field>
373   - </fields>
374   - <custom>
375   - <header_font_name>arial</header_font_name>
376   - <header_font_size>10</header_font_size>
377   - <header_font_bold>N</header_font_bold>
378   - <header_font_italic>N</header_font_italic>
379   - <header_font_underline>no</header_font_underline>
380   - <header_font_orientation>horizontal</header_font_orientation>
381   - <header_font_color>black</header_font_color>
382   - <header_background_color>none</header_background_color>
383   - <header_row_height>255</header_row_height>
384   - <header_alignment>left</header_alignment>
385   - <header_image/>
386   - <row_font_name>arial</row_font_name>
387   - <row_font_size>10</row_font_size>
388   - <row_font_color>black</row_font_color>
389   - <row_background_color>none</row_background_color>
390   - </custom>
391   - <cluster_schema/>
392   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
393   - <xloc>696</xloc>
394   - <yloc>257</yloc>
395   - <draw>Y</draw>
396   - </GUI>
397   - </step>
398   -
399   - <step>
400   - <name>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#xff08;&#x6ca1;&#x6709;&#x4f5c;&#x5e9f;&#xff09;</name>
401   - <type>TableInput</type>
402   - <description/>
403   - <distribute>Y</distribute>
404   - <custom_distribution/>
405   - <copies>1</copies>
406   - <partitioning>
407   - <method>none</method>
408   - <schema_name/>
409   - </partitioning>
410   - <connection>bus_control_variable</connection>
411   - <sql>select &#x2a; from bsth_c_s_ecinfo where is_cancel &#x3d; 0 and xl &#x3d; &#x24;&#x7b;xlid&#x7d;</sql>
412   - <limit>0</limit>
413   - <lookup/>
414   - <execute_each_row>N</execute_each_row>
415   - <variables_active>Y</variables_active>
416   - <lazy_conversion_active>N</lazy_conversion_active>
417   - <cluster_schema/>
418   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
419   - <xloc>90</xloc>
420   - <yloc>59</yloc>
421   - <draw>Y</draw>
422   - </GUI>
423   - </step>
424   -
425   - <step>
426   - <name>&#x552e;&#x7968;&#x5458;&#x67e5;&#x8be2;</name>
427   - <type>DBJoin</type>
428   - <description/>
429   - <distribute>Y</distribute>
430   - <custom_distribution/>
431   - <copies>1</copies>
432   - <partitioning>
433   - <method>none</method>
434   - <schema_name/>
435   - </partitioning>
436   - <connection>bus_control_variable</connection>
437   - <rowlimit>1</rowlimit>
438   - <sql>select job_codeori as scode, personnel_name as sname from bsth_c_personnel&#xa;where id &#x3d; &#x3f;</sql>
439   - <outer_join>Y</outer_join>
440   - <replace_vars>N</replace_vars>
441   - <parameter>
442   - <field>
443   - <name>spy</name>
444   - <type>Integer</type>
445   - </field>
446   - </parameter>
447   - <cluster_schema/>
448   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
449   - <xloc>491</xloc>
450   - <yloc>60</yloc>
451   - <draw>Y</draw>
452   - </GUI>
453   - </step>
454   -
455   - <step>
456   - <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
457   - <type>SelectValues</type>
458   - <description/>
459   - <distribute>Y</distribute>
460   - <custom_distribution/>
461   - <copies>1</copies>
462   - <partitioning>
463   - <method>none</method>
464   - <schema_name/>
465   - </partitioning>
466   - <fields> <field> <name>xlmc</name>
467   - <rename>&#x7ebf;&#x8def;</rename>
468   - <length>-2</length>
469   - <precision>-2</precision>
470   - </field> <field> <name>dbbm</name>
471   - <rename>&#x642d;&#x73ed;&#x7f16;&#x7801;</rename>
472   - <length>-2</length>
473   - <precision>-2</precision>
474   - </field> <field> <name>jcode</name>
475   - <rename>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</rename>
476   - <length>-2</length>
477   - <precision>-2</precision>
478   - </field> <field> <name>jname</name>
479   - <rename>&#x9a7e;&#x9a76;&#x5458;</rename>
480   - <length>-2</length>
481   - <precision>-2</precision>
482   - </field> <field> <name>scode</name>
483   - <rename>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</rename>
484   - <length>-2</length>
485   - <precision>-2</precision>
486   - </field> <field> <name>sname</name>
487   - <rename>&#x552e;&#x7968;&#x5458;</rename>
488   - <length>-2</length>
489   - <precision>-2</precision>
490   - </field> <select_unspecified>N</select_unspecified>
491   - </fields> <cluster_schema/>
492   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
493   - <xloc>492</xloc>
494   - <yloc>164</yloc>
495   - <draw>Y</draw>
496   - </GUI>
497   - </step>
498   -
499   - <step>
500   - <name>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</name>
501   - <type>SortRows</type>
502   - <description/>
503   - <distribute>Y</distribute>
504   - <custom_distribution/>
505   - <copies>1</copies>
506   - <partitioning>
507   - <method>none</method>
508   - <schema_name/>
509   - </partitioning>
510   - <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
511   - <prefix>out</prefix>
512   - <sort_size>1000000</sort_size>
513   - <free_memory/>
514   - <compress>N</compress>
515   - <compress_variable/>
516   - <unique_rows>N</unique_rows>
517   - <fields>
518   - <field>
519   - <name>&#x7ebf;&#x8def;</name>
520   - <ascending>Y</ascending>
521   - <case_sensitive>N</case_sensitive>
522   - <presorted>N</presorted>
523   - </field>
524   - <field>
525   - <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>
526   - <ascending>Y</ascending>
527   - <case_sensitive>N</case_sensitive>
528   - <presorted>N</presorted>
529   - </field>
530   - </fields>
531   - <cluster_schema/>
532   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
533   - <xloc>692</xloc>
534   - <yloc>164</yloc>
535   - <draw>Y</draw>
536   - </GUI>
537   - </step>
538   -
539   - <step>
540   - <name>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</name>
541   - <type>DBLookup</type>
542   - <description/>
543   - <distribute>Y</distribute>
544   - <custom_distribution/>
545   - <copies>1</copies>
546   - <partitioning>
547   - <method>none</method>
548   - <schema_name/>
549   - </partitioning>
550   - <connection>bus_control_variable</connection>
551   - <cache>Y</cache>
552   - <cache_load_all>Y</cache_load_all>
553   - <cache_size>0</cache_size>
554   - <lookup>
555   - <schema/>
556   - <table>bsth_c_line</table>
557   - <orderby/>
558   - <fail_on_multiple>N</fail_on_multiple>
559   - <eat_row_on_failure>N</eat_row_on_failure>
560   - <key>
561   - <name>xl</name>
562   - <field>id</field>
563   - <condition>&#x3d;</condition>
564   - <name2/>
565   - </key>
566   - <value>
567   - <name>name</name>
568   - <rename>xlmc</rename>
569   - <default/>
570   - <type>String</type>
571   - </value>
572   - </lookup>
573   - <cluster_schema/>
574   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
575   - <xloc>227</xloc>
576   - <yloc>59</yloc>
577   - <draw>Y</draw>
578   - </GUI>
579   - </step>
580   -
581   - <step>
582   - <name>&#x9a7e;&#x9a76;&#x5458;&#x67e5;&#x8be2;</name>
583   - <type>DBJoin</type>
584   - <description/>
585   - <distribute>Y</distribute>
586   - <custom_distribution/>
587   - <copies>1</copies>
588   - <partitioning>
589   - <method>none</method>
590   - <schema_name/>
591   - </partitioning>
592   - <connection>bus_control_variable</connection>
593   - <rowlimit>1</rowlimit>
594   - <sql>select job_codeori as jcode, personnel_name as jname from bsth_c_personnel&#xa;where id &#x3d; &#x3f;</sql>
595   - <outer_join>Y</outer_join>
596   - <replace_vars>N</replace_vars>
597   - <parameter>
598   - <field>
599   - <name>jsy</name>
600   - <type>Integer</type>
601   - </field>
602   - </parameter>
603   - <cluster_schema/>
604   - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
605   - <xloc>366</xloc>
606   - <yloc>60</yloc>
607   - <draw>Y</draw>
608   - </GUI>
609   - </step>
610   -
611   - <step_error_handling>
612   - </step_error_handling>
613   - <slave-step-copy-partition-distribution>
614   -</slave-step-copy-partition-distribution>
615   - <slave_transformation>N</slave_transformation>
616   -
617   -</transformation>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#x4fe1;&#x606f;&#x5bfc;&#x51fa;</name>
  5 + <description/>
  6 + <extended_description/>
  7 + <trans_version/>
  8 + <trans_type>Normal</trans_type>
  9 + <trans_status>0</trans_status>
  10 + <directory>&#x2f;</directory>
  11 + <parameters>
  12 + <parameter>
  13 + <name>filepath</name>
  14 + <default_value/>
  15 + <description>excel&#x6587;&#x4ef6;&#x8def;&#x5f84;</description>
  16 + </parameter>
  17 + <parameter>
  18 + <name>xlid</name>
  19 + <default_value/>
  20 + <description>&#x7ebf;&#x8def;id</description>
  21 + </parameter>
  22 + </parameters>
  23 + <log>
  24 +<trans-log-table><connection/>
  25 +<schema/>
  26 +<table/>
  27 +<size_limit_lines/>
  28 +<interval/>
  29 +<timeout_days/>
  30 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table>
  31 +<perf-log-table><connection/>
  32 +<schema/>
  33 +<table/>
  34 +<interval/>
  35 +<timeout_days/>
  36 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table>
  37 +<channel-log-table><connection/>
  38 +<schema/>
  39 +<table/>
  40 +<timeout_days/>
  41 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table>
  42 +<step-log-table><connection/>
  43 +<schema/>
  44 +<table/>
  45 +<timeout_days/>
  46 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table>
  47 +<metrics-log-table><connection/>
  48 +<schema/>
  49 +<table/>
  50 +<timeout_days/>
  51 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table>
  52 + </log>
  53 + <maxdate>
  54 + <connection/>
  55 + <table/>
  56 + <field/>
  57 + <offset>0.0</offset>
  58 + <maxdiff>0.0</maxdiff>
  59 + </maxdate>
  60 + <size_rowset>10000</size_rowset>
  61 + <sleep_time_empty>50</sleep_time_empty>
  62 + <sleep_time_full>50</sleep_time_full>
  63 + <unique_connections>N</unique_connections>
  64 + <feedback_shown>Y</feedback_shown>
  65 + <feedback_size>50000</feedback_size>
  66 + <using_thread_priorities>Y</using_thread_priorities>
  67 + <shared_objects_file/>
  68 + <capture_step_performance>N</capture_step_performance>
  69 + <step_performance_capturing_delay>1000</step_performance_capturing_delay>
  70 + <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
  71 + <dependencies>
  72 + </dependencies>
  73 + <partitionschemas>
  74 + </partitionschemas>
  75 + <slaveservers>
  76 + </slaveservers>
  77 + <clusterschemas>
  78 + </clusterschemas>
  79 + <created_user>-</created_user>
  80 + <created_date>2017&#x2f;01&#x2f;11 15&#x3a;36&#x3a;10.101</created_date>
  81 + <modified_user>-</modified_user>
  82 + <modified_date>2017&#x2f;01&#x2f;11 15&#x3a;36&#x3a;10.101</modified_date>
  83 + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
  84 + <is_key_private>N</is_key_private>
  85 + </info>
  86 + <notepads>
  87 + <notepad>
  88 + <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>
  89 + <xloc>66</xloc>
  90 + <yloc>151</yloc>
  91 + <width>333</width>
  92 + <heigth>90</heigth>
  93 + <fontname>YaHei Consolas Hybrid</fontname>
  94 + <fontsize>12</fontsize>
  95 + <fontbold>N</fontbold>
  96 + <fontitalic>N</fontitalic>
  97 + <fontcolorred>0</fontcolorred>
  98 + <fontcolorgreen>0</fontcolorgreen>
  99 + <fontcolorblue>0</fontcolorblue>
  100 + <backgroundcolorred>255</backgroundcolorred>
  101 + <backgroundcolorgreen>205</backgroundcolorgreen>
  102 + <backgroundcolorblue>112</backgroundcolorblue>
  103 + <bordercolorred>100</bordercolorred>
  104 + <bordercolorgreen>100</bordercolorgreen>
  105 + <bordercolorblue>100</bordercolorblue>
  106 + <drawshadow>Y</drawshadow>
  107 + </notepad>
  108 + </notepads>
  109 + <connection>
  110 + <name>192.168.168.1_jwgl_dw</name>
  111 + <server>192.168.168.1</server>
  112 + <type>ORACLE</type>
  113 + <access>Native</access>
  114 + <database>orcl</database>
  115 + <port>1521</port>
  116 + <username>jwgl_dw</username>
  117 + <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password>
  118 + <servername/>
  119 + <data_tablespace/>
  120 + <index_tablespace/>
  121 + <attributes>
  122 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  123 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  124 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  125 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  126 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  127 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  128 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  129 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  130 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  131 + </attributes>
  132 + </connection>
  133 + <connection>
  134 + <name>bus_control_variable</name>
  135 + <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
  136 + <type>MYSQL</type>
  137 + <access>Native</access>
  138 + <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
  139 + <port>3306</port>
  140 + <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
  141 + <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
  142 + <servername/>
  143 + <data_tablespace/>
  144 + <index_tablespace/>
  145 + <attributes>
  146 + <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
  147 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  148 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  149 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  150 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  151 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  152 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  153 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  154 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  155 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  156 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  157 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  158 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  159 + </attributes>
  160 + </connection>
  161 + <connection>
  162 + <name>bus_control_&#x516c;&#x53f8;_201</name>
  163 + <server>localhost</server>
  164 + <type>MYSQL</type>
  165 + <access>Native</access>
  166 + <database>control</database>
  167 + <port>3306</port>
  168 + <username>root</username>
  169 + <password>Encrypted </password>
  170 + <servername/>
  171 + <data_tablespace/>
  172 + <index_tablespace/>
  173 + <attributes>
  174 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  175 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  176 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  177 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  178 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  179 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  180 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  181 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  182 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  183 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  184 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  185 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  186 + </attributes>
  187 + </connection>
  188 + <connection>
  189 + <name>bus_control_&#x672c;&#x673a;</name>
  190 + <server>localhost</server>
  191 + <type>MYSQL</type>
  192 + <access>Native</access>
  193 + <database>control</database>
  194 + <port>3306</port>
  195 + <username>root</username>
  196 + <password>Encrypted </password>
  197 + <servername/>
  198 + <data_tablespace/>
  199 + <index_tablespace/>
  200 + <attributes>
  201 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  202 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  203 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  204 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  205 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  206 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  207 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  208 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  209 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  210 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  211 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  212 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  213 + </attributes>
  214 + </connection>
  215 + <connection>
  216 + <name>xlab_mysql_youle</name>
  217 + <server>101.231.124.8</server>
  218 + <type>MYSQL</type>
  219 + <access>Native</access>
  220 + <database>xlab_youle</database>
  221 + <port>45687</port>
  222 + <username>xlab-youle</username>
  223 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
  224 + <servername/>
  225 + <data_tablespace/>
  226 + <index_tablespace/>
  227 + <attributes>
  228 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  229 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  230 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  231 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  232 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  233 + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
  234 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  235 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  236 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  237 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  238 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  239 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  240 + </attributes>
  241 + </connection>
  242 + <connection>
  243 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  244 + <server>localhost</server>
  245 + <type>MYSQL</type>
  246 + <access>Native</access>
  247 + <database>xlab_youle</database>
  248 + <port>3306</port>
  249 + <username>root</username>
  250 + <password>Encrypted </password>
  251 + <servername/>
  252 + <data_tablespace/>
  253 + <index_tablespace/>
  254 + <attributes>
  255 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  256 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  257 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  258 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  259 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  260 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  261 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  262 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  263 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  264 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  265 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  266 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  267 + </attributes>
  268 + </connection>
  269 + <connection>
  270 + <name>xlab_youle</name>
  271 + <server/>
  272 + <type>MYSQL</type>
  273 + <access>JNDI</access>
  274 + <database>xlab_youle</database>
  275 + <port>1521</port>
  276 + <username/>
  277 + <password>Encrypted </password>
  278 + <servername/>
  279 + <data_tablespace/>
  280 + <index_tablespace/>
  281 + <attributes>
  282 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  283 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  284 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  285 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  286 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  287 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  288 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  289 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  290 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  291 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  292 + </attributes>
  293 + </connection>
  294 + <order>
  295 + <hop> <from>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#xff08;&#x6ca1;&#x6709;&#x4f5c;&#x5e9f;&#xff09;</from><to>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  296 + <hop> <from>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</from><to>&#x9a7e;&#x9a76;&#x5458;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  297 + <hop> <from>&#x9a7e;&#x9a76;&#x5458;&#x67e5;&#x8be2;</from><to>&#x552e;&#x7968;&#x5458;&#x67e5;&#x8be2;</to><enabled>Y</enabled> </hop>
  298 + <hop> <from>&#x552e;&#x7968;&#x5458;&#x67e5;&#x8be2;</from><to>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</to><enabled>Y</enabled> </hop>
  299 + <hop> <from>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</from><to>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</to><enabled>Y</enabled> </hop>
  300 + <hop> <from>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</from><to>Excel&#x8f93;&#x51fa;</to><enabled>Y</enabled> </hop>
  301 + </order>
  302 + <step>
  303 + <name>Excel&#x8f93;&#x51fa;</name>
  304 + <type>ExcelOutput</type>
  305 + <description/>
  306 + <distribute>Y</distribute>
  307 + <custom_distribution/>
  308 + <copies>1</copies>
  309 + <partitioning>
  310 + <method>none</method>
  311 + <schema_name/>
  312 + </partitioning>
  313 + <header>Y</header>
  314 + <footer>N</footer>
  315 + <encoding/>
  316 + <append>N</append>
  317 + <add_to_result_filenames>Y</add_to_result_filenames>
  318 + <file>
  319 + <name>&#x24;&#x7b;filepath&#x7d;</name>
  320 + <extention>xls</extention>
  321 + <do_not_open_newfile_init>N</do_not_open_newfile_init>
  322 + <create_parent_folder>N</create_parent_folder>
  323 + <split>N</split>
  324 + <add_date>N</add_date>
  325 + <add_time>N</add_time>
  326 + <SpecifyFormat>N</SpecifyFormat>
  327 + <date_time_format>yyyyMMddHHmmss</date_time_format>
  328 + <sheetname>&#x5de5;&#x4f5c;&#x8868;1</sheetname>
  329 + <autosizecolums>N</autosizecolums>
  330 + <nullisblank>N</nullisblank>
  331 + <protect_sheet>N</protect_sheet>
  332 + <password>Encrypted </password>
  333 + <splitevery>0</splitevery>
  334 + <usetempfiles>N</usetempfiles>
  335 + <tempdirectory/>
  336 + </file>
  337 + <template>
  338 + <enabled>N</enabled>
  339 + <append>N</append>
  340 + <filename>template.xls</filename>
  341 + </template>
  342 + <fields>
  343 + <field>
  344 + <name>&#x7ebf;&#x8def;</name>
  345 + <type>String</type>
  346 + <format/>
  347 + </field>
  348 + <field>
  349 + <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>
  350 + <type>String</type>
  351 + <format/>
  352 + </field>
  353 + <field>
  354 + <name>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</name>
  355 + <type>String</type>
  356 + <format/>
  357 + </field>
  358 + <field>
  359 + <name>&#x9a7e;&#x9a76;&#x5458;</name>
  360 + <type>String</type>
  361 + <format/>
  362 + </field>
  363 + <field>
  364 + <name>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</name>
  365 + <type>String</type>
  366 + <format/>
  367 + </field>
  368 + <field>
  369 + <name>&#x552e;&#x7968;&#x5458;</name>
  370 + <type>String</type>
  371 + <format/>
  372 + </field>
  373 + </fields>
  374 + <custom>
  375 + <header_font_name>arial</header_font_name>
  376 + <header_font_size>10</header_font_size>
  377 + <header_font_bold>N</header_font_bold>
  378 + <header_font_italic>N</header_font_italic>
  379 + <header_font_underline>no</header_font_underline>
  380 + <header_font_orientation>horizontal</header_font_orientation>
  381 + <header_font_color>black</header_font_color>
  382 + <header_background_color>none</header_background_color>
  383 + <header_row_height>255</header_row_height>
  384 + <header_alignment>left</header_alignment>
  385 + <header_image/>
  386 + <row_font_name>arial</row_font_name>
  387 + <row_font_size>10</row_font_size>
  388 + <row_font_color>black</row_font_color>
  389 + <row_background_color>none</row_background_color>
  390 + </custom>
  391 + <cluster_schema/>
  392 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  393 + <xloc>696</xloc>
  394 + <yloc>257</yloc>
  395 + <draw>Y</draw>
  396 + </GUI>
  397 + </step>
  398 +
  399 + <step>
  400 + <name>&#x4eba;&#x5458;&#x914d;&#x7f6e;&#xff08;&#x6ca1;&#x6709;&#x4f5c;&#x5e9f;&#xff09;</name>
  401 + <type>TableInput</type>
  402 + <description/>
  403 + <distribute>Y</distribute>
  404 + <custom_distribution/>
  405 + <copies>1</copies>
  406 + <partitioning>
  407 + <method>none</method>
  408 + <schema_name/>
  409 + </partitioning>
  410 + <connection>bus_control_variable</connection>
  411 + <sql>select &#x2a; from bsth_c_s_ecinfo where is_cancel &#x3d; 0 and xl &#x3d; &#x24;&#x7b;xlid&#x7d;</sql>
  412 + <limit>0</limit>
  413 + <lookup/>
  414 + <execute_each_row>N</execute_each_row>
  415 + <variables_active>Y</variables_active>
  416 + <lazy_conversion_active>N</lazy_conversion_active>
  417 + <cluster_schema/>
  418 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  419 + <xloc>90</xloc>
  420 + <yloc>59</yloc>
  421 + <draw>Y</draw>
  422 + </GUI>
  423 + </step>
  424 +
  425 + <step>
  426 + <name>&#x552e;&#x7968;&#x5458;&#x67e5;&#x8be2;</name>
  427 + <type>DBJoin</type>
  428 + <description/>
  429 + <distribute>Y</distribute>
  430 + <custom_distribution/>
  431 + <copies>1</copies>
  432 + <partitioning>
  433 + <method>none</method>
  434 + <schema_name/>
  435 + </partitioning>
  436 + <connection>bus_control_variable</connection>
  437 + <rowlimit>1</rowlimit>
  438 + <sql>select job_codeori as scode, personnel_name as sname from bsth_c_personnel&#xa;where id &#x3d; &#x3f;</sql>
  439 + <outer_join>Y</outer_join>
  440 + <replace_vars>N</replace_vars>
  441 + <parameter>
  442 + <field>
  443 + <name>spy</name>
  444 + <type>Integer</type>
  445 + </field>
  446 + </parameter>
  447 + <cluster_schema/>
  448 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  449 + <xloc>491</xloc>
  450 + <yloc>60</yloc>
  451 + <draw>Y</draw>
  452 + </GUI>
  453 + </step>
  454 +
  455 + <step>
  456 + <name>&#x5b57;&#x6bb5;&#x9009;&#x62e9;</name>
  457 + <type>SelectValues</type>
  458 + <description/>
  459 + <distribute>Y</distribute>
  460 + <custom_distribution/>
  461 + <copies>1</copies>
  462 + <partitioning>
  463 + <method>none</method>
  464 + <schema_name/>
  465 + </partitioning>
  466 + <fields> <field> <name>xlmc</name>
  467 + <rename>&#x7ebf;&#x8def;</rename>
  468 + <length>-2</length>
  469 + <precision>-2</precision>
  470 + </field> <field> <name>dbbm</name>
  471 + <rename>&#x642d;&#x73ed;&#x7f16;&#x7801;</rename>
  472 + <length>-2</length>
  473 + <precision>-2</precision>
  474 + </field> <field> <name>jcode</name>
  475 + <rename>&#x9a7e;&#x9a76;&#x5458;&#x5de5;&#x53f7;</rename>
  476 + <length>-2</length>
  477 + <precision>-2</precision>
  478 + </field> <field> <name>jname</name>
  479 + <rename>&#x9a7e;&#x9a76;&#x5458;</rename>
  480 + <length>-2</length>
  481 + <precision>-2</precision>
  482 + </field> <field> <name>scode</name>
  483 + <rename>&#x552e;&#x7968;&#x5458;&#x5de5;&#x53f7;</rename>
  484 + <length>-2</length>
  485 + <precision>-2</precision>
  486 + </field> <field> <name>sname</name>
  487 + <rename>&#x552e;&#x7968;&#x5458;</rename>
  488 + <length>-2</length>
  489 + <precision>-2</precision>
  490 + </field> <select_unspecified>N</select_unspecified>
  491 + </fields> <cluster_schema/>
  492 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  493 + <xloc>492</xloc>
  494 + <yloc>164</yloc>
  495 + <draw>Y</draw>
  496 + </GUI>
  497 + </step>
  498 +
  499 + <step>
  500 + <name>&#x6392;&#x5e8f;&#x8bb0;&#x5f55;</name>
  501 + <type>SortRows</type>
  502 + <description/>
  503 + <distribute>Y</distribute>
  504 + <custom_distribution/>
  505 + <copies>1</copies>
  506 + <partitioning>
  507 + <method>none</method>
  508 + <schema_name/>
  509 + </partitioning>
  510 + <directory>&#x25;&#x25;java.io.tmpdir&#x25;&#x25;</directory>
  511 + <prefix>out</prefix>
  512 + <sort_size>1000000</sort_size>
  513 + <free_memory/>
  514 + <compress>N</compress>
  515 + <compress_variable/>
  516 + <unique_rows>N</unique_rows>
  517 + <fields>
  518 + <field>
  519 + <name>&#x7ebf;&#x8def;</name>
  520 + <ascending>Y</ascending>
  521 + <case_sensitive>N</case_sensitive>
  522 + <presorted>N</presorted>
  523 + </field>
  524 + <field>
  525 + <name>&#x642d;&#x73ed;&#x7f16;&#x7801;</name>
  526 + <ascending>Y</ascending>
  527 + <case_sensitive>N</case_sensitive>
  528 + <presorted>N</presorted>
  529 + </field>
  530 + </fields>
  531 + <cluster_schema/>
  532 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  533 + <xloc>692</xloc>
  534 + <yloc>164</yloc>
  535 + <draw>Y</draw>
  536 + </GUI>
  537 + </step>
  538 +
  539 + <step>
  540 + <name>&#x7ebf;&#x8def;&#x67e5;&#x8be2;</name>
  541 + <type>DBLookup</type>
  542 + <description/>
  543 + <distribute>Y</distribute>
  544 + <custom_distribution/>
  545 + <copies>1</copies>
  546 + <partitioning>
  547 + <method>none</method>
  548 + <schema_name/>
  549 + </partitioning>
  550 + <connection>bus_control_variable</connection>
  551 + <cache>Y</cache>
  552 + <cache_load_all>Y</cache_load_all>
  553 + <cache_size>0</cache_size>
  554 + <lookup>
  555 + <schema/>
  556 + <table>bsth_c_line</table>
  557 + <orderby/>
  558 + <fail_on_multiple>N</fail_on_multiple>
  559 + <eat_row_on_failure>N</eat_row_on_failure>
  560 + <key>
  561 + <name>xl</name>
  562 + <field>id</field>
  563 + <condition>&#x3d;</condition>
  564 + <name2/>
  565 + </key>
  566 + <value>
  567 + <name>name</name>
  568 + <rename>xlmc</rename>
  569 + <default/>
  570 + <type>String</type>
  571 + </value>
  572 + </lookup>
  573 + <cluster_schema/>
  574 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  575 + <xloc>227</xloc>
  576 + <yloc>59</yloc>
  577 + <draw>Y</draw>
  578 + </GUI>
  579 + </step>
  580 +
  581 + <step>
  582 + <name>&#x9a7e;&#x9a76;&#x5458;&#x67e5;&#x8be2;</name>
  583 + <type>DBJoin</type>
  584 + <description/>
  585 + <distribute>Y</distribute>
  586 + <custom_distribution/>
  587 + <copies>1</copies>
  588 + <partitioning>
  589 + <method>none</method>
  590 + <schema_name/>
  591 + </partitioning>
  592 + <connection>bus_control_variable</connection>
  593 + <rowlimit>1</rowlimit>
  594 + <sql>select job_codeori as jcode, personnel_name as jname from bsth_c_personnel&#xa;where id &#x3d; &#x3f;</sql>
  595 + <outer_join>Y</outer_join>
  596 + <replace_vars>N</replace_vars>
  597 + <parameter>
  598 + <field>
  599 + <name>jsy</name>
  600 + <type>Integer</type>
  601 + </field>
  602 + </parameter>
  603 + <cluster_schema/>
  604 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  605 + <xloc>366</xloc>
  606 + <yloc>60</yloc>
  607 + <draw>Y</draw>
  608 + </GUI>
  609 + </step>
  610 +
  611 + <step_error_handling>
  612 + </step_error_handling>
  613 + <slave-step-copy-partition-distribution>
  614 +</slave-step-copy-partition-distribution>
  615 + <slave_transformation>N</slave_transformation>
  616 +
  617 +</transformation>
... ...
src/main/resources/static/pages/base/line/js/line-edit-form.js
... ... @@ -9,7 +9,8 @@
9 9  
10 10  
11 11 !function(){
12   -
  12 + // 关闭左侧栏
  13 + if (!$('body').hasClass('page-sidebar-closed')) {$('.menu-toggler.sidebar-toggler').click();}
13 14 /** 开辟日期 日期控件 <format:日期控件时间格式;locale:语言> */
14 15 $('#openDateInput').datetimepicker({format : 'YYYY-MM-DD', locale: 'zh-cn'});
15 16 /** 起始站首班时间 日期控件 <format:日期控件时间格式;locale:语言> */
... ...
src/main/resources/static/pages/base/station/js/station-list-edit.js
... ... @@ -16,9 +16,6 @@
16 16 $('#lineNameInput').val(no[1]);
17 17 // 获取站点对象信息
18 18 var editStation = {};
19   - /*PositionsPublicFunctions.getStationRouteInfo(id,function(r) {
20   - editStation = r;
21   - });*/
22 19 $.ajax({
23 20 url: "/stationroute/findStationRouteInfo", //请求地址
24 21 type: "Get",
... ... @@ -29,74 +26,77 @@
29 26 editStation = result[0];
30 27 }
31 28 });
32   - // 初始化表单值
33   - PositionsPublicFunctions.setListEditFrom(editStation);
34   - var initzdlyP = {'lineCode_eq':editStation.stationRouteLIneCode,'destroy_eq':0,'directions_eq':editStation.stationRoutedirections};
35   - initSelect(initzdlyP);
  29 + setTimeout(function(){
  30 + // 初始化表单值
  31 + PositionsPublicFunctions.setListEditFrom(editStation);
  32 +
  33 + var initzdlyP = {'lineCode_eq':editStation.stationRouteLIneCode,'destroy_eq':0,'directions_eq':editStation.stationRoutedirections};
  34 + initSelect(initzdlyP);
  35 +
  36 + // 编辑表单元素
  37 + var form = $('#list_edit_station_form');
  38 + // 获取错误提示元素
  39 + var error = $('.alert-danger', form);
  40 + // 提交数据按钮事件
  41 + $('#editStationButton').on('click', function() {
  42 + // 表单提交
  43 + form.submit();
  44 + });
  45 + // 表单验证
  46 + form.validate({
  47 + errorElement : 'span',
  48 + errorClass : 'help-block help-block-error',
  49 + focusInvalid : false,
  50 + rules : {
  51 + 'stationName' : {required : true},// 站点路由名称 必填项
  52 + 'stationCod': {required : true,},// 站点编码 必填项
  53 + 'directions' : {required : true,dirIs : true},// 站点方向 必填项 必填项
  54 + 'stationRouteCode' : {isStart : true},// 站点序号
  55 + 'bJwpoints' : {required : true},// 经纬度坐标点 必填项
  56 + 'shapesType' : {required : true},// 几何图形类型 必填项
  57 + 'radius' : {required : true},// 圆形半径 必填项
  58 + 'destroy' : {required : true},// 是否撤销 必填项
  59 + 'toTime' : {number : true},// 到站时间 必须输入合法的数字(负数,小数)。
  60 + 'distances' : {number : true},// 到站距离 // 到站距离
  61 + 'descriptions' : {maxlength: 150}// 描述与说明 最大长度
  62 + },
  63 + invalidHandler : function(event, validator) {
  64 + error.show();
  65 + App.scrollTo(error, -200);
  66 + },
  67 + highlight : function(element) {
  68 + $(element).closest('.form-group').addClass('has-error');
  69 + },
  70 + unhighlight : function(element) {
  71 + $(element).closest('.form-group').removeClass('has-error');
  72 + },
  73 + success : function(label) {
  74 + label.closest('.form-group').removeClass('has-error');
  75 + },
  76 + submitHandler : function(f) {
  77 + error.hide();
  78 + var params = form.serializeJSON();
  79 + /*if(params.shapesType=='圆形')
  80 + params.shapesType = 'r';
  81 + else if(params.shapesType=='多边形')
  82 + params.shapesType = 'd';*/
  83 + if(params.stationRouteCode=='请选择...')
  84 + params.stationRouteCode='';
  85 + PositionsPublicFunctions.stationUpdate(params,function(resuntDate) {
  86 + if(resuntDate.status=='SUCCESS') {
  87 + // 弹出添加成功提示消息
  88 + layer.msg('修改成功...');
  89 + }else {
  90 + // 弹出添加失败提示消息
  91 + layer.msg('修改失败...');
  92 + }
  93 + //返回站点信息页面
  94 + loadPage('list.html');
  95 + });
  96 + }
  97 + });
  98 + },500);
36 99  
37   - // 编辑表单元素
38   - var form = $('#list_edit_station_form');
39   - // 获取错误提示元素
40   - var error = $('.alert-danger', form);
41   - // 提交数据按钮事件
42   - $('#editStationButton').on('click', function() {
43   - // 表单提交
44   - form.submit();
45   - });
46   - // 表单验证
47   - form.validate({
48   - errorElement : 'span',
49   - errorClass : 'help-block help-block-error',
50   - focusInvalid : false,
51   - rules : {
52   - 'stationName' : {required : true},// 站点路由名称 必填项
53   - 'stationCod': {required : true,},// 站点编码 必填项
54   - 'directions' : {required : true,dirIs : true},// 站点方向 必填项 必填项
55   - 'stationRouteCode' : {isStart : true},// 站点序号
56   - 'stationMark' : {required : true},// 站点类型 必填项
57   - 'bJwpoints' : {required : true},// 经纬度坐标点 必填项
58   - 'shapesType' : {required : true},// 几何图形类型 必填项
59   - 'radius' : {required : true},// 圆形半径 必填项
60   - 'destroy' : {required : true},// 是否撤销 必填项
61   - 'toTime' : {number : true},// 到站时间 必须输入合法的数字(负数,小数)。
62   - 'distances' : {number : true},// 到站距离 // 到站距离
63   - 'descriptions' : {maxlength: 150}// 描述与说明 最大长度
64   - },
65   - invalidHandler : function(event, validator) {
66   - error.show();
67   - App.scrollTo(error, -200);
68   - },
69   - highlight : function(element) {
70   - $(element).closest('.form-group').addClass('has-error');
71   - },
72   - unhighlight : function(element) {
73   - $(element).closest('.form-group').removeClass('has-error');
74   - },
75   - success : function(label) {
76   - label.closest('.form-group').removeClass('has-error');
77   - },
78   - submitHandler : function(f) {
79   - error.hide();
80   - var params = form.serializeJSON();
81   - /*if(params.shapesType=='圆形')
82   - params.shapesType = 'r';
83   - else if(params.shapesType=='多边形')
84   - params.shapesType = 'd';*/
85   - if(params.stationRouteCode=='请选择...')
86   - params.stationRouteCode='';
87   - PositionsPublicFunctions.stationUpdate(params,function(resuntDate) {
88   - if(resuntDate.status=='SUCCESS') {
89   - // 弹出添加成功提示消息
90   - layer.msg('修改成功...');
91   - }else {
92   - // 弹出添加失败提示消息
93   - layer.msg('修改失败...');
94   - }
95   - //返回站点信息页面
96   - loadPage('list.html');
97   - });
98   - }
99   - });
100 100 // 站点序号值改变事件
101 101 $('#stationrouteSelect').on('change',function() {
102 102 var stationRValue = $('#stationrouteSelect').val();
... ...
src/main/resources/static/pages/base/station/js/station-positions-function.js
... ... @@ -154,12 +154,12 @@ var PositionsPublicFunctions = function () {
154 154 $('#descriptionsTextarea').val(stationObj.stationRouteDescriptions);
155 155 },
156 156 setListEditFrom : function(stationObj) {
157   - // 图形坐标点集合(百度坐标)
  157 + // WGS坐标点图形集合
158 158 $('#bPolygonGridInput').val(stationObj.stationBPolyonGrid);
159 159 // 百度地图经纬度坐标中心点
160 160 $('#bJwpointsInput').val(stationObj.stationJwpoints);
161   - // WGS坐标点图形集合
162   - $('#bPolygonGridInput').val(stationObj.stationGPloyonGrid);
  161 + // 图形坐标点集合(百度坐标)
  162 +// $('#bPolygonGridInput').val(stationObj.stationGPloyonGrid);
163 163 // 城建坐标x
164 164 $('#xInput').val(stationObj.stationGlonx);
165 165 // 城建坐标y
... ... @@ -169,14 +169,11 @@ var PositionsPublicFunctions = function () {
169 169 // 获取半径元素,并添加值
170 170 $('#radiusInput').val(stationObj.stationRadius);
171 171 // 线路ID
172   - $('#stationRouteLineInput').val(stationObj.stationRouteLIneCode);
  172 + $('#stationRouteLineInput').val(stationObj.stationRouteLine);
173 173 // 站点编码
174 174 $('#stationCodInput').val(stationObj.stationCode);
175   -
176 175 // 线路编码
177   - $('#lineCodeInput').val(stationObj.stationRouteCode);
178   - /*// 线路名称
179   - $('#lineNameInput').val();*/
  176 + $('#lineCodeInput').val(stationObj.stationRouteLIneCode);
180 177 // 站点ID
181 178 $('#StationCodeInput').val(stationObj.stationRouteStation);
182 179 // 站点路由ID
... ...
src/main/resources/static/pages/base/station/list_edit.html
... ... @@ -81,7 +81,6 @@
81 81 </label>
82 82 <div class="col-md-4">
83 83 <input type="text" class="form-control" name="lineName" id="lineNameInput" placeholder="线路名称" readonly="readonly" />
84   - <span class="help-block"> 例如 :浦东88路 </span>
85 84 </div>
86 85 </div>
87 86 <!-- 线路名称 (* 必填项) END -->
... ... @@ -157,7 +156,7 @@
157 156 <!-- 站点序号 -->
158 157 <div class="col-md-6">
159 158 <label class="control-label col-md-5">
160   - <span class="required"> * </span>上一站点&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
  159 + <span class="required"> </span>上一站点&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
161 160 </label>
162 161 <div class="col-md-4">
163 162 <select name="stationRouteCode" class="form-control" id="stationrouteSelect" style="width:100%"></select>
... ... @@ -205,7 +204,7 @@
205 204 <div class="form-group">
206 205 <!-- 道路编码-->
207 206 <div class="col-md-6">
208   - <label class="control-label col-md-5"><span class="required"> * </span>
  207 + <label class="control-label col-md-5"><span class="required"> </span>
209 208 道路编码&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
210 209 </label>
211 210 <div class="col-md-4">
... ... @@ -215,7 +214,7 @@
215 214  
216 215 <!-- 到站时间 -->
217 216 <div class="col-md-6">
218   - <label class="control-label col-md-5"><span class="required"> * </span>
  217 + <label class="control-label col-md-5"><span class="required"></span>
219 218 到站时间 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </label>
220 219 <div class="col-md-4">
221 220 <input type="text" class="form-control" name="toTime" id="toTimeInput" placeholder="到站时间">
... ... @@ -229,7 +228,7 @@
229 228 <div class="form-group">
230 229 <!-- 到站距离 -->
231 230 <div class="col-md-6">
232   - <label class="control-label col-md-5"><span class="required"> * </span>
  231 + <label class="control-label col-md-5"><span class="required"> </span>
233 232 到站距离&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:</label>
234 233 <div class="col-md-4">
235 234 <input type="text" class="form-control" name="distances" id="distancesInput" placeholder="到站距离">
... ... @@ -239,10 +238,10 @@
239 238  
240 239 <!-- 版本号 -->
241 240 <div class="col-md-6">
242   - <label class="control-label col-md-5"><span class="required"> * </span> 版本号&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
  241 + <label class="control-label col-md-5"><span class="required"> </span> 版本号&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
243 242 </label>
244 243 <div class="col-md-4">
245   - <input type="text" class="form-control" name="versions" value='1' Readonly>
  244 + <input type="text" class="form-control" name="versions" >
246 245 </div>
247 246 </div>
248 247 </div>
... ... @@ -252,7 +251,7 @@
252 251 <div class="form-group">
253 252 <!-- 描述/说明 -->
254 253 <div class="col-md-6">
255   - <label class="control-label col-md-5"><span class="required"> * </span>描述/说明&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
  254 + <label class="control-label col-md-5"><span class="required"></span>描述/说明&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:
256 255 </label>
257 256 <div class="col-md-4">
258 257 <textarea class="form-control" rows="3" name="descriptions" id="descriptionsTextarea" placeholder="描述/说明"></textarea>
... ...
src/main/resources/static/pages/base/timesmodel/js/strategy/BcObj.js
1   -/**
2   - * 班次类型对象(最后转换成显示用bc对象)
3   - * @param bcType
4   - * @param isUp
5   - * @param lp
6   - * @param fcno
7   - * @param fcTimeObj
8   - * @param paramObj
9   - * @returns {{}}
10   - * @constructor
11   - */
12   -var BcObj = function(bcType, isUp, lp, fcno, fcTimeObj, paramObj) {
13   -
14   - //---------- 内部属性 ----------//
15   - var _bcType = bcType; // 班次类型(normal,in,out等)
16   - var _isUp = isUp; // true表示上行,false表示下行
17   - var _lp = lp; // 路牌
18   - var _fcno = fcno; // 发车顺序号
19   -
20   - // 计算的属性,TODO:还有其他属性
21   - // 上标线里属于第几圈(本班次方向和标线方向一致,才有意义)
22   - var qCount;
23   -
24   - // 班次里程
25   - var _bclc = StrategyUtils.calcuTravelLcNumber(_isUp, _bcType, paramObj);
26   - // 发车时间
27   - var _fcsjObj = moment(fcTimeObj);
28   - // 班次时间
29   - var _bcsj = StrategyUtils.calcuTravelTime(_fcsjObj, _isUp, paramObj);
30   - // 到达时间
31   - var _arrsj = StrategyUtils.addMinute(_fcsjObj, _bcsj);
32   - // 到达后的停站时间(使用到达时间判定)
33   - var _stopTime = StrategyUtils.calcuFixedStopNumber(_arrsj, !_isUp, paramObj);
34   -
35   - return {
36   - /**
37   - * 是否上行。
38   - * @returns boolean
39   - */
40   - isUp: function() {
41   - return _isUp;
42   - },
43   - /**
44   - * 获取发车时间。
45   - * @returns {*|moment.Moment}
46   - */
47   - getFcTimeObj: function() {
48   - return _fcsjObj;
49   - },
50   - /**
51   - * 获取班次时间。
52   - */
53   - getBcTime: function() {
54   - return _bcsj;
55   - },
56   - /**
57   - * 获取停站时间。
58   - * @returns {*}
59   - */
60   - getStopTime: function() {
61   - return _stopTime;
62   - },
63   -
64   - /**
65   - * 转换成显示用班次对象。
66   - */
67   - toGanttBcObj: function() {
68   - var _bcObj = {
69   - parent: _lp,
70   - lpNo: _lp,
71   - lp: null,
72   - lpName: _lp,
73   - lpType: '普通路牌',
74   - bcType: _bcType,
75   - fcno: _fcno,
76   - isfb: 0,
77   - isSwitchXl: null,
78   - bz: null
79   - };
80   -
81   - // 线路上下行
82   - _bcObj.xlDir = _isUp ? "relationshipGraph-up" : "relationshipGraph-down";
83   -
84   - // 里程
85   - _bcObj.jhlc = _bclc;
86   -
87   - // 停车场
88   - _bcObj.tcc = paramObj.getTccId();
89   -
90   - // 时刻表
91   - _bcObj.ttinfo = paramObj.getTTinfoId();
92   -
93   - // 线路
94   - _bcObj.xl = paramObj.getXlId();
95   -
96   - // 起点站、终点站
97   - _bcObj.qdz = _isUp ? paramObj.getUpQdzObj().id : paramObj.getDownQdzObj().id;
98   - _bcObj.zdz = _isUp ? paramObj.getUpZdzObj().id : paramObj.getDownZdzObj().id;
99   -
100   - // 发车时间,行驶时间,到达时间,停站时间
101   - _bcObj.fcsj = _fcsjObj.format("HH:mm");
102   - _bcObj.bcsj = _bcsj;
103   - _bcObj.ARRIVALTIME = _arrsj.format("HH:mm");
104   - _bcObj.STOPTIME = _stopTime;
105   -
106   - return _bcObj;
107   - }
108   - };
  1 +/**
  2 + * 班次类型对象(最后转换成显示用bc对象)
  3 + * @param bcType
  4 + * @param isUp
  5 + * @param lp
  6 + * @param fcno
  7 + * @param fcTimeObj
  8 + * @param paramObj
  9 + * @returns {{}}
  10 + * @constructor
  11 + */
  12 +var BcObj = function(bcType, isUp, lp, fcno, fcTimeObj, paramObj) {
  13 +
  14 + //---------- 内部属性 ----------//
  15 + var _bcType = bcType; // 班次类型(normal,in,out等)
  16 + var _isUp = isUp; // true表示上行,false表示下行
  17 + var _lp = lp; // 路牌
  18 + var _fcno = fcno; // 发车顺序号
  19 +
  20 + // 计算的属性,TODO:还有其他属性
  21 + // 上标线里属于第几圈(本班次方向和标线方向一致,才有意义)
  22 + var qCount;
  23 +
  24 + // 班次里程
  25 + var _bclc = StrategyUtils.calcuTravelLcNumber(_isUp, _bcType, paramObj);
  26 + // 发车时间
  27 + var _fcsjObj = moment(fcTimeObj);
  28 + // 班次时间
  29 + var _bcsj = StrategyUtils.calcuTravelTime(_fcsjObj, _isUp, paramObj);
  30 + // 到达时间
  31 + var _arrsj = StrategyUtils.addMinute(_fcsjObj, _bcsj);
  32 + // 到达后的停站时间(使用到达时间判定)
  33 + var _stopTime = StrategyUtils.calcuFixedStopNumber(_arrsj, !_isUp, paramObj);
  34 +
  35 + return {
  36 + /**
  37 + * 是否上行。
  38 + * @returns boolean
  39 + */
  40 + isUp: function() {
  41 + return _isUp;
  42 + },
  43 + /**
  44 + * 获取发车时间。
  45 + * @returns {*|moment.Moment}
  46 + */
  47 + getFcTimeObj: function() {
  48 + return _fcsjObj;
  49 + },
  50 + /**
  51 + * 获取班次时间。
  52 + */
  53 + getBcTime: function() {
  54 + return _bcsj;
  55 + },
  56 + /**
  57 + * 获取停站时间。
  58 + * @returns {*}
  59 + */
  60 + getStopTime: function() {
  61 + return _stopTime;
  62 + },
  63 +
  64 + /**
  65 + * 转换成显示用班次对象。
  66 + */
  67 + toGanttBcObj: function() {
  68 + var _bcObj = {
  69 + parent: _lp,
  70 + lpNo: _lp,
  71 + lp: null,
  72 + lpName: _lp,
  73 + lpType: '普通路牌',
  74 + bcType: _bcType,
  75 + fcno: _fcno,
  76 + isfb: 0,
  77 + isSwitchXl: null,
  78 + bz: null
  79 + };
  80 +
  81 + // 线路上下行
  82 + _bcObj.xlDir = _isUp ? "relationshipGraph-up" : "relationshipGraph-down";
  83 +
  84 + // 里程
  85 + _bcObj.jhlc = _bclc;
  86 +
  87 + // 停车场
  88 + _bcObj.tcc = paramObj.getTccId();
  89 +
  90 + // 时刻表
  91 + _bcObj.ttinfo = paramObj.getTTinfoId();
  92 +
  93 + // 线路
  94 + _bcObj.xl = paramObj.getXlId();
  95 +
  96 + // 起点站、终点站
  97 + _bcObj.qdz = _isUp ? paramObj.getUpQdzObj().id : paramObj.getDownQdzObj().id;
  98 + _bcObj.zdz = _isUp ? paramObj.getUpZdzObj().id : paramObj.getDownZdzObj().id;
  99 +
  100 + // 发车时间,行驶时间,到达时间,停站时间
  101 + _bcObj.fcsj = _fcsjObj.format("HH:mm");
  102 + _bcObj.bcsj = _bcsj;
  103 + _bcObj.ARRIVALTIME = _arrsj.format("HH:mm");
  104 + _bcObj.STOPTIME = _stopTime;
  105 +
  106 + return _bcObj;
  107 + }
  108 + };
109 109 };
110 110 \ No newline at end of file
... ...
src/main/resources/static/pages/base/timesmodel/js/strategy/StrategyUtils.js
1   -/**
2   - * 工具类。
3   - * 注意:moment是mutable,所有的moment操作都会改变原有对象的值,
4   - * 所以所有的操作都要小心处理。
5   - */
6   -var StrategyUtils = function() {
7   - var date_wrap_prefix = "2000-01-01 "; // 包装日期的前缀
8   - var date_wrap_format = "YYYY-MM-DD HH:mm"; // 日期格式
9   - /**
10   - * 将时间包装成日期,方便计算。
11   - * @param timeStr 时间格式,如 06:30
12   - * @returns moment对象
13   - */
14   - var _wrapTimeFun = function(timeStr) {
15   - return moment(
16   - date_wrap_prefix + timeStr,
17   - date_wrap_format
18   - );
19   - };
20   - /**
21   - * 添加时间(注意,返回一个新的moment对象,此方法是immutable)
22   - * @param timeObj moment 对象
23   - * @param time 时间
24   - * @param type 时间单位
25   - * @returns 重新创建一个moment返回
26   - */
27   - var _addTimeFun = function(timeObj, time, type) {
28   - var _timeObj = moment(timeObj); // clone
29   - _timeObj.add(time, type);
30   - return _timeObj;
31   - };
32   -
33   - // 内部工厂类
34   - var _factoryFun = function() {
35   - return {
36   - // 创建参数
37   - createParameterObj: function(formMap, dataMap) {
38   - return ParameterObj(formMap, dataMap);
39   - },
40   - // 创建班次对象
41   - createBcObj: function(bcType, isUp, lp, fcno, fcTimeObj, paramObj) {
42   - return BcObj(bcType, isUp, lp, fcno, fcTimeObj, paramObj);
43   - }
44   - };
45   - };
46   -
47   - return {
48   - /**
49   - * 工厂对象,创建不同的对象。
50   - * @returns {{createParameterObj, createBcObj}}
51   - */
52   - getFactory: function() {
53   - return _factoryFun();
54   - },
55   -
56   - //-------------- 时间操作 ------------//
57   - /**
58   - * 通过字符串创建时间对象。
59   - * @param timeStr 时间字符串
60   - * @returns {moment对象}
61   - */
62   - toTimeObj: function(timeStr) {
63   - return _wrapTimeFun(timeStr);
64   - },
65   - /**
66   - * 增加分钟。
67   - * @param timeObj 时间对象
68   - * @param minute 分钟
69   - * @returns {重新创建一个moment返回}
70   - */
71   - addMinute: function(timeObj, minute) {
72   - return _addTimeFun(timeObj, minute, "m");
73   - },
74   -
75   - //-------------- 时间业务操作 ------------//
76   - /**
77   - * 判定某个班次是否是早高峰班次。
78   - * @param timeObj 班次时间
79   - * @param paramObj 参数对象
80   - * @returns true false
81   - */
82   - isMPeakBc: function(timeObj, paramObj) {
83   - // 早高峰开始时间
84   - var st = paramObj.getMPeakStartTimeObj();
85   - // 早高峰结束时间
86   - var et = paramObj.getMPeakEndTimeObj();
87   - // 包装日期
88   - return timeObj.isBetween(st, et, null, "[]");
89   - },
90   - /**
91   - * 判定某个班次是否是晚高峰班次。
92   - * @param timeObj 班次时间
93   - * @param paramObj 参数对象
94   - * @returns true false
95   - */
96   - isEPeakBc: function(timeObj, paramObj) {
97   - // 晚高峰开始时间
98   - var st = paramObj.getEPeakStartTimeObj();
99   - // 晚高峰结束时间
100   - var et = paramObj.getEPeakEndTimeObj();
101   - // 包装日期
102   - return timeObj.isBetween(st, et, null, "[]");
103   - },
104   - /**
105   - * 判定某个班次是否是低谷班次。
106   - * @param timeObj 班次时间
107   - * @param paramObj 参数对象
108   - * @returns true false
109   - */
110   - isTroughBc: function(timeObj, paramObj) {
111   - return (
112   - !this.isMPeakBc(timeObj, paramObj) &&
113   - !this.isEPeakBc(timeObj, paramObj)
114   - );
115   - },
116   - /**
117   - * 判定某个低谷班次是否在早高峰开始之前。
118   - * @param timeObj 班次时间
119   - * @param paramObj 参数对象
120   - * @returns true false
121   - */
122   - isTroughBeforMPeakStartBc: function(timeObj, paramObj) {
123   - // 早高峰开始时间
124   - var st = paramObj.getMPeakStartTimeObj();
125   - // 包装日期
126   - return timeObj.isBefore(st);
127   - },
128   - /**
129   - * 判定某个低谷班次是否在晚高峰结束之后。
130   - * @param timeObj 班次时间
131   - * @param paramObj 参数对象
132   - * @returns true false
133   - */
134   - isTroughAfterEPeakEndBc: function(timeObj, paramObj) {
135   - // 晚高峰结束时间
136   - var et = paramObj.getEPeakEndTimeObj();
137   - // 包装日期
138   - return timeObj.isAfter(et);
139   - },
140   -
141   - /**
142   - * 获取固定的停站时间(固定停站时间都是选的最大值)
143   - * @param timeObj 时间对象
144   - * @param isUp 是否上行
145   - * @param paramObj 参数对象
146   - * @returns number
147   - */
148   - calcuFixedStopNumber: function(timeObj, isUp, paramObj) {
149   - var peakStopTime; // 高峰停站时间
150   - var troughStopTime; // 低谷停站时间
151   - var secondaryStopTime; // 副站停站时间
152   -
153   - // 双向停站
154   - if (paramObj.isTwoWayStop()) {
155   - if (isUp) { // 上行
156   - if (this.isMPeakBc(timeObj, paramObj)) { // 早高峰
157   - peakStopTime = Math.floor(paramObj.getUpMPeakTime() * 0.1); // 行驶时间的10%
158   - if (peakStopTime < 3) { // 不少于3分钟
159   - peakStopTime = 3;
160   - }
161   - return peakStopTime;
162   - } else if (this.isEPeakBc(timeObj, paramObj)) { // 晚高峰
163   - peakStopTime = Math.floor(paramObj.getUpEPeakTime() * 0.1); // 行驶时间的10%
164   - if (peakStopTime < 3) { // 不少于3分钟
165   - peakStopTime = 3;
166   - }
167   - return peakStopTime;
168   - } else { // 低谷
169   - if (this.isTroughBeforMPeakStartBc(timeObj, paramObj)) { // 早高峰开始前
170   - troughStopTime = Math.floor(paramObj.getUpTroughTime() * 0.2); // 行驶时间20%
171   - if (troughStopTime < 10) { // 不少于10分钟
172   - troughStopTime = 10;
173   - }
174   - return troughStopTime;
175   - } else if (this.isTroughAfterEPeakEndBc(timeObj, paramObj)) { // 晚高峰结束后
176   - troughStopTime = Math.floor(paramObj.getUpTroughTime() * 0.2); // 行驶时间20%
177   - if (troughStopTime < 10) { // 不少于10分钟
178   - troughStopTime = 10;
179   - }
180   - return troughStopTime;
181   - } else { // 早高峰,晚高峰之间
182   - troughStopTime = Math.floor(paramObj.getUpTroughTime() * 0.15); // 行驶时间15%
183   - if (troughStopTime < 10) { // 不少于10分钟
184   - troughStopTime = 10;
185   - }
186   - return troughStopTime;
187   - }
188   - }
189   - } else { // 下行
190   - if (this.isMPeakBc(timeObj, paramObj)) { // 早高峰
191   - peakStopTime = Math.floor(paramObj.getDownMPeakTime() * 0.1); // 行驶时间的10%
192   - if (peakStopTime < 3) { // 不少于3分钟
193   - peakStopTime = 3;
194   - }
195   - return peakStopTime;
196   - } else if (this.isEPeakBc(timeObj, paramObj)) { // 晚高峰
197   - peakStopTime = Math.floor(paramObj.getDownEPeakTime() * 0.1); // 行驶时间的10%
198   - if (peakStopTime < 3) { // 不少于3分钟
199   - peakStopTime = 3;
200   - }
201   - return peakStopTime;
202   - } else { // 低谷
203   - if (this.isTroughBeforMPeakStartBc(timeObj, paramObj)) { // 早高峰开始前
204   - troughStopTime = Math.floor(paramObj.getDownTroughTime() * 0.2); // 行驶时间20%
205   - if (troughStopTime < 10) { // 不少于10分钟
206   - troughStopTime = 10;
207   - }
208   - return troughStopTime;
209   - } else if (this.isTroughAfterEPeakEndBc(timeObj, paramObj)) { // 晚高峰结束后
210   - troughStopTime = Math.floor(paramObj.getDownTroughTime() * 0.2); // 行驶时间20%
211   - if (troughStopTime < 10) { // 不少于10分钟
212   - troughStopTime = 10;
213   - }
214   - return troughStopTime;
215   - } else { // 早高峰,晚高峰之间
216   - troughStopTime = Math.floor(paramObj.getDownTroughTime() * 0.15); // 行驶时间15%
217   - if (troughStopTime < 10) { // 不少于10分钟
218   - troughStopTime = 10;
219   - }
220   - return troughStopTime;
221   - }
222   - }
223   - }
224   - } else { // 主站停站
225   - if (isUp == paramObj.isUpOneWayStop()) {
226   - if (isUp) { // 上行
227   - if (this.isMPeakBc(timeObj, paramObj)) { // 早高峰
228   - peakStopTime = Math.floor(paramObj.getUpMPeakTime() * 0.1); // 行驶时间的10%
229   - if (peakStopTime < 3) { // 不少于3分钟
230   - peakStopTime = 3;
231   - }
232   - return peakStopTime;
233   - } else if (this.isEPeakBc(timeObj, paramObj)) { // 晚高峰
234   - peakStopTime = Math.floor(paramObj.getUpEPeakTime() * 0.1); // 行驶时间的10%
235   - if (peakStopTime < 3) { // 不少于3分钟
236   - peakStopTime = 3;
237   - }
238   - return peakStopTime;
239   - } else { // 低谷
240   - if (this.isTroughBeforMPeakStartBc(timeObj, paramObj)) { // 早高峰开始前
241   - troughStopTime = Math.floor(paramObj.getUpTroughTime() * 0.2); // 行驶时间20%
242   - if (troughStopTime < 10) { // 不少于10分钟
243   - troughStopTime = 10;
244   - }
245   - return troughStopTime;
246   - } else if (this.isTroughAfterEPeakEndBc(timeObj, paramObj)) { // 晚高峰结束后
247   - troughStopTime = Math.floor(paramObj.getUpTroughTime() * 0.2); // 行驶时间20%
248   - if (troughStopTime < 10) { // 不少于10分钟
249   - troughStopTime = 10;
250   - }
251   - return troughStopTime;
252   - } else { // 早高峰,晚高峰之间
253   - troughStopTime = Math.floor(paramObj.getUpTroughTime() * 0.15); // 行驶时间15%
254   - if (troughStopTime < 10) { // 不少于10分钟
255   - troughStopTime = 10;
256   - }
257   - return troughStopTime;
258   - }
259   - }
260   - } else { // 下行
261   - if (this.isMPeakBc(timeObj, paramObj)) { // 早高峰
262   - peakStopTime = Math.floor(paramObj.getDownMPeakTime() * 0.1); // 行驶时间的10%
263   - if (peakStopTime < 3) { // 不少于3分钟
264   - peakStopTime = 3;
265   - }
266   - return peakStopTime;
267   - } else if (this.isEPeakBc(timeObj, paramObj)) { // 晚高峰
268   - peakStopTime = Math.floor(paramObj.getDownEPeakTime() * 0.1); // 行驶时间的10%
269   - if (peakStopTime < 3) { // 不少于3分钟
270   - peakStopTime = 3;
271   - }
272   - return peakStopTime;
273   - } else { // 低谷
274   - if (this.isTroughBeforMPeakStartBc(timeObj, paramObj)) { // 早高峰开始前
275   - troughStopTime = Math.floor(paramObj.getDownTroughTime() * 0.2); // 行驶时间20%
276   - if (troughStopTime < 10) { // 不少于10分钟
277   - troughStopTime = 10;
278   - }
279   - return troughStopTime;
280   - } else if (this.isTroughAfterEPeakEndBc(timeObj, paramObj)) { // 晚高峰结束后
281   - troughStopTime = Math.floor(paramObj.getDownTroughTime() * 0.2); // 行驶时间20%
282   - if (troughStopTime < 10) { // 不少于10分钟
283   - troughStopTime = 10;
284   - }
285   - return troughStopTime;
286   - } else { // 早高峰,晚高峰之间
287   - troughStopTime = Math.floor(paramObj.getDownTroughTime() * 0.15); // 行驶时间15%
288   - if (troughStopTime < 10) { // 不少于10分钟
289   - troughStopTime = 10;
290   - }
291   - return troughStopTime;
292   - }
293   - }
294   - }
295   - } else { // 副站停战,2到3分钟
296   - secondaryStopTime = 3;
297   - return secondaryStopTime; // 直接返回3分钟
298   - }
299   - }
300   -
301   - },
302   -
303   - /**
304   - * 获取行驶时间。
305   - * @param timeObj 班次时间字符串
306   - * @param isUp 是否上行
307   - * @param paramObj 参数对象
308   - */
309   - calcuTravelTime: function(timeObj, isUp, paramObj) {
310   - if (isUp) {
311   - if (this.isMPeakBc(timeObj, paramObj)) {
312   - return paramObj.getUpMPeakTime();
313   - } else if (this.isEPeakBc(timeObj, paramObj)) {
314   - return paramObj.getUpEPeakTime();
315   - } else {
316   - return paramObj.getUpTroughTime();
317   - }
318   - } else {
319   - if (this.isMPeakBc(timeObj, paramObj)) {
320   - return paramObj.getDownMPeakTime();
321   - } else if (this.isEPeakBc(timeObj, paramObj)) {
322   - return paramObj.getDownEPeakTime();
323   - } else {
324   - return paramObj.getDownTroughTime();
325   - }
326   - }
327   - },
328   -
329   - /**
330   - * 获取行驶里程。
331   - * @param isUp 是否上行
332   - * @param bcType 班次类型
333   - * @param paramObj 参数对象
334   - */
335   - calcuTravelLcNumber: function(isUp, bcType, paramObj) {
336   - if (isUp) {
337   - if (bcType == "in") {
338   - return paramObj.getUpInLc();
339   - } else if (bcType == "out") {
340   - return paramObj.getUpOutLc();
341   - } else {
342   - // 基本班次类型,暂时不考虑区间等其他班次类型
343   - // 暂时不考虑高峰低谷里程的区分
344   - return paramObj.getUpNormalLc();
345   - }
346   - } else {
347   - if (bcType == "in") {
348   - return paramObj.getDownInLc();
349   - } else if (bcType == "out") {
350   - return paramObj.getDownOutLc();
351   - } else {
352   - // 基本班次类型,暂时不考虑区间等其他班次类型
353   - // 暂时不考虑高峰低谷里程的区分
354   - return paramObj.getDownNormalLc();
355   - }
356   - }
357   - },
358   -
359   - /**
360   - * 计算高峰周转时间。
361   - * @param paramObj 参数对象
362   - * @returns 周转时间
363   - */
364   - calcuPeakZzsj: function(paramObj) {
365   - // 使用早高峰的周转时间
366   - var _time = paramObj.getMPeakStartTimeObj();
367   - var _zzsj = // 早高峰上行行驶时间+停站时间+早高峰下行行驶时间+停站时间
368   - this.calcuTravelTime(_time, true, paramObj) +
369   - this.calcuFixedStopNumber(_time, true, paramObj) +
370   - this.calcuTravelTime(_time, false, paramObj) +
371   - this.calcuFixedStopNumber(_time, false, paramObj);
372   - return _zzsj;
373   - },
374   -
375   - /**
376   - * 计算低谷周转时间。
377   - * @param paramObj 参数对象
378   - * @returns 周转时间
379   - */
380   - calcuTroughZzsj: function(paramObj) {
381   - // 使用低谷的周转时间
382   - var _time = this.addMinute(paramObj.getMPeakStartTimeObj(), -1); // 使用任意一个低谷时间
383   - var _zzsj = // 低谷上行行驶时间+停站时间+低谷下行行驶时间+停站时间
384   - this.calcuTravelTime(_time, true, paramObj) +
385   - this.calcuFixedStopNumber(_time, true, paramObj) +
386   - this.calcuTravelTime(_time, false, paramObj) +
387   - this.calcuFixedStopNumber(_time, false, paramObj);
388   -
389   - return _zzsj;
390   - },
391   -
392   - /**
393   - * 计算车辆总数。
394   - * @param paramObj 参数对象
395   - * @returns 车辆数
396   - */
397   - calcuClzx: function(paramObj) {
398   - // 使用早高峰平均间隔
399   - var _fcjx_avg = Math.floor((paramObj.getMPeakMinFcjx() + paramObj.getMPeakMaxFcjx()) / 2);
400   - return Math.round(this.calcuPeakZzsj(paramObj) / _fcjx_avg);
401   - }
402   -
403   - };
  1 +/**
  2 + * 工具类。
  3 + * 注意:moment是mutable,所有的moment操作都会改变原有对象的值,
  4 + * 所以所有的操作都要小心处理。
  5 + */
  6 +var StrategyUtils = function() {
  7 + var date_wrap_prefix = "2000-01-01 "; // 包装日期的前缀
  8 + var date_wrap_format = "YYYY-MM-DD HH:mm"; // 日期格式
  9 + /**
  10 + * 将时间包装成日期,方便计算。
  11 + * @param timeStr 时间格式,如 06:30
  12 + * @returns moment对象
  13 + */
  14 + var _wrapTimeFun = function(timeStr) {
  15 + return moment(
  16 + date_wrap_prefix + timeStr,
  17 + date_wrap_format
  18 + );
  19 + };
  20 + /**
  21 + * 添加时间(注意,返回一个新的moment对象,此方法是immutable)
  22 + * @param timeObj moment 对象
  23 + * @param time 时间
  24 + * @param type 时间单位
  25 + * @returns 重新创建一个moment返回
  26 + */
  27 + var _addTimeFun = function(timeObj, time, type) {
  28 + var _timeObj = moment(timeObj); // clone
  29 + _timeObj.add(time, type);
  30 + return _timeObj;
  31 + };
  32 +
  33 + // 内部工厂类
  34 + var _factoryFun = function() {
  35 + return {
  36 + // 创建参数
  37 + createParameterObj: function(formMap, dataMap) {
  38 + return ParameterObj(formMap, dataMap);
  39 + },
  40 + // 创建班次对象
  41 + createBcObj: function(bcType, isUp, lp, fcno, fcTimeObj, paramObj) {
  42 + return BcObj(bcType, isUp, lp, fcno, fcTimeObj, paramObj);
  43 + }
  44 + };
  45 + };
  46 +
  47 + return {
  48 + /**
  49 + * 工厂对象,创建不同的对象。
  50 + * @returns {{createParameterObj, createBcObj}}
  51 + */
  52 + getFactory: function() {
  53 + return _factoryFun();
  54 + },
  55 +
  56 + //-------------- 时间操作 ------------//
  57 + /**
  58 + * 通过字符串创建时间对象。
  59 + * @param timeStr 时间字符串
  60 + * @returns {moment对象}
  61 + */
  62 + toTimeObj: function(timeStr) {
  63 + return _wrapTimeFun(timeStr);
  64 + },
  65 + /**
  66 + * 增加分钟。
  67 + * @param timeObj 时间对象
  68 + * @param minute 分钟
  69 + * @returns {重新创建一个moment返回}
  70 + */
  71 + addMinute: function(timeObj, minute) {
  72 + return _addTimeFun(timeObj, minute, "m");
  73 + },
  74 +
  75 + //-------------- 时间业务操作 ------------//
  76 + /**
  77 + * 判定某个班次是否是早高峰班次。
  78 + * @param timeObj 班次时间
  79 + * @param paramObj 参数对象
  80 + * @returns true false
  81 + */
  82 + isMPeakBc: function(timeObj, paramObj) {
  83 + // 早高峰开始时间
  84 + var st = paramObj.getMPeakStartTimeObj();
  85 + // 早高峰结束时间
  86 + var et = paramObj.getMPeakEndTimeObj();
  87 + // 包装日期
  88 + return timeObj.isBetween(st, et, null, "[]");
  89 + },
  90 + /**
  91 + * 判定某个班次是否是晚高峰班次。
  92 + * @param timeObj 班次时间
  93 + * @param paramObj 参数对象
  94 + * @returns true false
  95 + */
  96 + isEPeakBc: function(timeObj, paramObj) {
  97 + // 晚高峰开始时间
  98 + var st = paramObj.getEPeakStartTimeObj();
  99 + // 晚高峰结束时间
  100 + var et = paramObj.getEPeakEndTimeObj();
  101 + // 包装日期
  102 + return timeObj.isBetween(st, et, null, "[]");
  103 + },
  104 + /**
  105 + * 判定某个班次是否是低谷班次。
  106 + * @param timeObj 班次时间
  107 + * @param paramObj 参数对象
  108 + * @returns true false
  109 + */
  110 + isTroughBc: function(timeObj, paramObj) {
  111 + return (
  112 + !this.isMPeakBc(timeObj, paramObj) &&
  113 + !this.isEPeakBc(timeObj, paramObj)
  114 + );
  115 + },
  116 + /**
  117 + * 判定某个低谷班次是否在早高峰开始之前。
  118 + * @param timeObj 班次时间
  119 + * @param paramObj 参数对象
  120 + * @returns true false
  121 + */
  122 + isTroughBeforMPeakStartBc: function(timeObj, paramObj) {
  123 + // 早高峰开始时间
  124 + var st = paramObj.getMPeakStartTimeObj();
  125 + // 包装日期
  126 + return timeObj.isBefore(st);
  127 + },
  128 + /**
  129 + * 判定某个低谷班次是否在晚高峰结束之后。
  130 + * @param timeObj 班次时间
  131 + * @param paramObj 参数对象
  132 + * @returns true false
  133 + */
  134 + isTroughAfterEPeakEndBc: function(timeObj, paramObj) {
  135 + // 晚高峰结束时间
  136 + var et = paramObj.getEPeakEndTimeObj();
  137 + // 包装日期
  138 + return timeObj.isAfter(et);
  139 + },
  140 +
  141 + /**
  142 + * 获取固定的停站时间(固定停站时间都是选的最大值)
  143 + * @param timeObj 时间对象
  144 + * @param isUp 是否上行
  145 + * @param paramObj 参数对象
  146 + * @returns number
  147 + */
  148 + calcuFixedStopNumber: function(timeObj, isUp, paramObj) {
  149 + var peakStopTime; // 高峰停站时间
  150 + var troughStopTime; // 低谷停站时间
  151 + var secondaryStopTime; // 副站停站时间
  152 +
  153 + // 双向停站
  154 + if (paramObj.isTwoWayStop()) {
  155 + if (isUp) { // 上行
  156 + if (this.isMPeakBc(timeObj, paramObj)) { // 早高峰
  157 + peakStopTime = Math.floor(paramObj.getUpMPeakTime() * 0.1); // 行驶时间的10%
  158 + if (peakStopTime < 3) { // 不少于3分钟
  159 + peakStopTime = 3;
  160 + }
  161 + return peakStopTime;
  162 + } else if (this.isEPeakBc(timeObj, paramObj)) { // 晚高峰
  163 + peakStopTime = Math.floor(paramObj.getUpEPeakTime() * 0.1); // 行驶时间的10%
  164 + if (peakStopTime < 3) { // 不少于3分钟
  165 + peakStopTime = 3;
  166 + }
  167 + return peakStopTime;
  168 + } else { // 低谷
  169 + if (this.isTroughBeforMPeakStartBc(timeObj, paramObj)) { // 早高峰开始前
  170 + troughStopTime = Math.floor(paramObj.getUpTroughTime() * 0.2); // 行驶时间20%
  171 + if (troughStopTime < 10) { // 不少于10分钟
  172 + troughStopTime = 10;
  173 + }
  174 + return troughStopTime;
  175 + } else if (this.isTroughAfterEPeakEndBc(timeObj, paramObj)) { // 晚高峰结束后
  176 + troughStopTime = Math.floor(paramObj.getUpTroughTime() * 0.2); // 行驶时间20%
  177 + if (troughStopTime < 10) { // 不少于10分钟
  178 + troughStopTime = 10;
  179 + }
  180 + return troughStopTime;
  181 + } else { // 早高峰,晚高峰之间
  182 + troughStopTime = Math.floor(paramObj.getUpTroughTime() * 0.15); // 行驶时间15%
  183 + if (troughStopTime < 10) { // 不少于10分钟
  184 + troughStopTime = 10;
  185 + }
  186 + return troughStopTime;
  187 + }
  188 + }
  189 + } else { // 下行
  190 + if (this.isMPeakBc(timeObj, paramObj)) { // 早高峰
  191 + peakStopTime = Math.floor(paramObj.getDownMPeakTime() * 0.1); // 行驶时间的10%
  192 + if (peakStopTime < 3) { // 不少于3分钟
  193 + peakStopTime = 3;
  194 + }
  195 + return peakStopTime;
  196 + } else if (this.isEPeakBc(timeObj, paramObj)) { // 晚高峰
  197 + peakStopTime = Math.floor(paramObj.getDownEPeakTime() * 0.1); // 行驶时间的10%
  198 + if (peakStopTime < 3) { // 不少于3分钟
  199 + peakStopTime = 3;
  200 + }
  201 + return peakStopTime;
  202 + } else { // 低谷
  203 + if (this.isTroughBeforMPeakStartBc(timeObj, paramObj)) { // 早高峰开始前
  204 + troughStopTime = Math.floor(paramObj.getDownTroughTime() * 0.2); // 行驶时间20%
  205 + if (troughStopTime < 10) { // 不少于10分钟
  206 + troughStopTime = 10;
  207 + }
  208 + return troughStopTime;
  209 + } else if (this.isTroughAfterEPeakEndBc(timeObj, paramObj)) { // 晚高峰结束后
  210 + troughStopTime = Math.floor(paramObj.getDownTroughTime() * 0.2); // 行驶时间20%
  211 + if (troughStopTime < 10) { // 不少于10分钟
  212 + troughStopTime = 10;
  213 + }
  214 + return troughStopTime;
  215 + } else { // 早高峰,晚高峰之间
  216 + troughStopTime = Math.floor(paramObj.getDownTroughTime() * 0.15); // 行驶时间15%
  217 + if (troughStopTime < 10) { // 不少于10分钟
  218 + troughStopTime = 10;
  219 + }
  220 + return troughStopTime;
  221 + }
  222 + }
  223 + }
  224 + } else { // 主站停站
  225 + if (isUp == paramObj.isUpOneWayStop()) {
  226 + if (isUp) { // 上行
  227 + if (this.isMPeakBc(timeObj, paramObj)) { // 早高峰
  228 + peakStopTime = Math.floor(paramObj.getUpMPeakTime() * 0.1); // 行驶时间的10%
  229 + if (peakStopTime < 3) { // 不少于3分钟
  230 + peakStopTime = 3;
  231 + }
  232 + return peakStopTime;
  233 + } else if (this.isEPeakBc(timeObj, paramObj)) { // 晚高峰
  234 + peakStopTime = Math.floor(paramObj.getUpEPeakTime() * 0.1); // 行驶时间的10%
  235 + if (peakStopTime < 3) { // 不少于3分钟
  236 + peakStopTime = 3;
  237 + }
  238 + return peakStopTime;
  239 + } else { // 低谷
  240 + if (this.isTroughBeforMPeakStartBc(timeObj, paramObj)) { // 早高峰开始前
  241 + troughStopTime = Math.floor(paramObj.getUpTroughTime() * 0.2); // 行驶时间20%
  242 + if (troughStopTime < 10) { // 不少于10分钟
  243 + troughStopTime = 10;
  244 + }
  245 + return troughStopTime;
  246 + } else if (this.isTroughAfterEPeakEndBc(timeObj, paramObj)) { // 晚高峰结束后
  247 + troughStopTime = Math.floor(paramObj.getUpTroughTime() * 0.2); // 行驶时间20%
  248 + if (troughStopTime < 10) { // 不少于10分钟
  249 + troughStopTime = 10;
  250 + }
  251 + return troughStopTime;
  252 + } else { // 早高峰,晚高峰之间
  253 + troughStopTime = Math.floor(paramObj.getUpTroughTime() * 0.15); // 行驶时间15%
  254 + if (troughStopTime < 10) { // 不少于10分钟
  255 + troughStopTime = 10;
  256 + }
  257 + return troughStopTime;
  258 + }
  259 + }
  260 + } else { // 下行
  261 + if (this.isMPeakBc(timeObj, paramObj)) { // 早高峰
  262 + peakStopTime = Math.floor(paramObj.getDownMPeakTime() * 0.1); // 行驶时间的10%
  263 + if (peakStopTime < 3) { // 不少于3分钟
  264 + peakStopTime = 3;
  265 + }
  266 + return peakStopTime;
  267 + } else if (this.isEPeakBc(timeObj, paramObj)) { // 晚高峰
  268 + peakStopTime = Math.floor(paramObj.getDownEPeakTime() * 0.1); // 行驶时间的10%
  269 + if (peakStopTime < 3) { // 不少于3分钟
  270 + peakStopTime = 3;
  271 + }
  272 + return peakStopTime;
  273 + } else { // 低谷
  274 + if (this.isTroughBeforMPeakStartBc(timeObj, paramObj)) { // 早高峰开始前
  275 + troughStopTime = Math.floor(paramObj.getDownTroughTime() * 0.2); // 行驶时间20%
  276 + if (troughStopTime < 10) { // 不少于10分钟
  277 + troughStopTime = 10;
  278 + }
  279 + return troughStopTime;
  280 + } else if (this.isTroughAfterEPeakEndBc(timeObj, paramObj)) { // 晚高峰结束后
  281 + troughStopTime = Math.floor(paramObj.getDownTroughTime() * 0.2); // 行驶时间20%
  282 + if (troughStopTime < 10) { // 不少于10分钟
  283 + troughStopTime = 10;
  284 + }
  285 + return troughStopTime;
  286 + } else { // 早高峰,晚高峰之间
  287 + troughStopTime = Math.floor(paramObj.getDownTroughTime() * 0.15); // 行驶时间15%
  288 + if (troughStopTime < 10) { // 不少于10分钟
  289 + troughStopTime = 10;
  290 + }
  291 + return troughStopTime;
  292 + }
  293 + }
  294 + }
  295 + } else { // 副站停战,2到3分钟
  296 + secondaryStopTime = 3;
  297 + return secondaryStopTime; // 直接返回3分钟
  298 + }
  299 + }
  300 +
  301 + },
  302 +
  303 + /**
  304 + * 获取行驶时间。
  305 + * @param timeObj 班次时间字符串
  306 + * @param isUp 是否上行
  307 + * @param paramObj 参数对象
  308 + */
  309 + calcuTravelTime: function(timeObj, isUp, paramObj) {
  310 + if (isUp) {
  311 + if (this.isMPeakBc(timeObj, paramObj)) {
  312 + return paramObj.getUpMPeakTime();
  313 + } else if (this.isEPeakBc(timeObj, paramObj)) {
  314 + return paramObj.getUpEPeakTime();
  315 + } else {
  316 + return paramObj.getUpTroughTime();
  317 + }
  318 + } else {
  319 + if (this.isMPeakBc(timeObj, paramObj)) {
  320 + return paramObj.getDownMPeakTime();
  321 + } else if (this.isEPeakBc(timeObj, paramObj)) {
  322 + return paramObj.getDownEPeakTime();
  323 + } else {
  324 + return paramObj.getDownTroughTime();
  325 + }
  326 + }
  327 + },
  328 +
  329 + /**
  330 + * 获取行驶里程。
  331 + * @param isUp 是否上行
  332 + * @param bcType 班次类型
  333 + * @param paramObj 参数对象
  334 + */
  335 + calcuTravelLcNumber: function(isUp, bcType, paramObj) {
  336 + if (isUp) {
  337 + if (bcType == "in") {
  338 + return paramObj.getUpInLc();
  339 + } else if (bcType == "out") {
  340 + return paramObj.getUpOutLc();
  341 + } else {
  342 + // 基本班次类型,暂时不考虑区间等其他班次类型
  343 + // 暂时不考虑高峰低谷里程的区分
  344 + return paramObj.getUpNormalLc();
  345 + }
  346 + } else {
  347 + if (bcType == "in") {
  348 + return paramObj.getDownInLc();
  349 + } else if (bcType == "out") {
  350 + return paramObj.getDownOutLc();
  351 + } else {
  352 + // 基本班次类型,暂时不考虑区间等其他班次类型
  353 + // 暂时不考虑高峰低谷里程的区分
  354 + return paramObj.getDownNormalLc();
  355 + }
  356 + }
  357 + },
  358 +
  359 + /**
  360 + * 计算高峰周转时间。
  361 + * @param paramObj 参数对象
  362 + * @returns 周转时间
  363 + */
  364 + calcuPeakZzsj: function(paramObj) {
  365 + // 使用早高峰的周转时间
  366 + var _time = paramObj.getMPeakStartTimeObj();
  367 + var _zzsj = // 早高峰上行行驶时间+停站时间+早高峰下行行驶时间+停站时间
  368 + this.calcuTravelTime(_time, true, paramObj) +
  369 + this.calcuFixedStopNumber(_time, true, paramObj) +
  370 + this.calcuTravelTime(_time, false, paramObj) +
  371 + this.calcuFixedStopNumber(_time, false, paramObj);
  372 + return _zzsj;
  373 + },
  374 +
  375 + /**
  376 + * 计算低谷周转时间。
  377 + * @param paramObj 参数对象
  378 + * @returns 周转时间
  379 + */
  380 + calcuTroughZzsj: function(paramObj) {
  381 + // 使用低谷的周转时间
  382 + var _time = this.addMinute(paramObj.getMPeakStartTimeObj(), -1); // 使用任意一个低谷时间
  383 + var _zzsj = // 低谷上行行驶时间+停站时间+低谷下行行驶时间+停站时间
  384 + this.calcuTravelTime(_time, true, paramObj) +
  385 + this.calcuFixedStopNumber(_time, true, paramObj) +
  386 + this.calcuTravelTime(_time, false, paramObj) +
  387 + this.calcuFixedStopNumber(_time, false, paramObj);
  388 +
  389 + return _zzsj;
  390 + },
  391 +
  392 + /**
  393 + * 计算车辆总数。
  394 + * @param paramObj 参数对象
  395 + * @returns 车辆数
  396 + */
  397 + calcuClzx: function(paramObj) {
  398 + // 使用早高峰平均间隔
  399 + var _fcjx_avg = Math.floor((paramObj.getMPeakMinFcjx() + paramObj.getMPeakMaxFcjx()) / 2);
  400 + return Math.round(this.calcuPeakZzsj(paramObj) / _fcjx_avg);
  401 + }
  402 +
  403 + };
404 404 }();
405 405 \ No newline at end of file
... ...
src/main/resources/static/pages/base/timesmodel/js/strategy/strategy-headway.js
1   -/**
2   - * 使用发车间隔模拟客流的策略,生成时刻表。
3   - */
4   -var StrategyHeadway = function() {
5   - // 所有的时间使用moment.js计算
6   -
7   - var _paramObj; // 参数对象
8   -
9   - var _bxDesc = [ // 班型描述
10   - {'type':'六工一休','hoursV':6.66, 'minueV':'6:40', 'qcount': 0, 'avertime': 0},
11   - {'type':'五工一休','hoursV':6.85, 'minueV':'6:51', 'qcount': 0, 'avertime': 0},
12   - {'type':'四工一休','hoursV':7.14, 'minueV':'7:08', 'qcount': 0, 'avertime': 0},
13   - {'type':'三工一休','hoursV':7.61, 'minueV':'7:37', 'qcount': 0, 'avertime': 0},
14   - {'type':'二工一休','hoursV':8.57, 'minueV':'8:34', 'qcount': 0, 'avertime': 0},
15   - {'type':'一工一休','hoursV':11.42, 'minueV':'11:25', 'qcount': 0, 'avertime': 0},
16   - {'type':'五工二休','hoursV':7.99, 'minueV':'8:00', 'qcount': 0, 'avertime': 0},
17   - {'type':'无工休', 'hoursV':5.43, 'minueV':'5:43', 'qcount': 0, 'avertime': 0}
18   - ];
19   -
20   - // 重要数据结构,二维数组的形式保存班次信息
21   - // 行表示几个路牌,列表示几圈,每个元素表示一圈包含两个班次对象(一个也有可能)
22   - // TODO:之后会把这个结构定义成一个类
23   - var _headWayBcArray = [];
24   -
25   - var headWayF = {
26   - /**
27   - * 使用发车间隔策略生成时刻表。
28   - * @param paramObj 参数对象
29   - * @param lpArray 路牌数组
30   - * @constructor
31   - */
32   - BXPplaceClassesTime03 : function(paramObj, lpArray) {
33   - //console.log(lpArray);
34   -
35   - _paramObj = paramObj;
36   -
37   - var i = 0;
38   - var j = 0;
39   - var data = [];
40   -
41   - // 第一步,计算标准线,计算所有班型工时,创建二维班次结构,并把标准线数据作为第一个路牌的班次数据
42   - this._01_buildBasicLine(lpArray);
43   - // 第二步,构造所有高峰班次
44   - this._02_buildAllGfbc(lpArray);
45   - // 第三步,计算班型类型(每个路牌的班型)
46   - this._03_calcuBxtype();
47   - // 第四步,根据每个路牌的班型构造所有班次
48   - this._04_buildAllOtherBc(lpArray);
49   -
50   -
51   - // TODO:先定死参数
52   - // 早高峰间隔时间 7分钟
53   - // 晚高峰间隔时间 7分钟
54   - // 早高峰之前 15分钟
55   - // 早高峰结束,晚高峰开始之前 15分钟
56   - // 晚高峰之后 20分钟
57   -
58   - // 做5休2路牌数目 6
59   - //var data1 = {};
60   - //
61   - //// TODO:计算基准线,不画,使用下行,以后根据哪个首班早,用哪个方向
62   - //data = data.concat(this._buildNormalLine(false, 12));
63   - //data = data.concat(this._01_buildBasicLine(lpArray));
64   - //console.log(_bxDesc);
65   -
66   - //// TODO:按照早高峰开始时间,以及间隔时间从头创建班次
67   - //var avertime = _bxDesc.avertime; // 平均周转时间
68   - //var maxgftime = 75 + 80 + 7 + 8; // 高峰最大周转时间
69   - //var data1 = this._buildAllGfBc(false);
70   - //console.log(data1);
71   - //
72   - //// TODO:分割路牌,选出正路牌,从早高峰班次开始添加到晚高峰结束
73   - //// TODO:写死,使用奇数路牌添加正路牌
74   - //// TODO:按照做一休一来,4.5圈
75   - //var maxdgtime = 75 + 75 + 15 + 15; // 低谷最大周转时间
76   - //var zlp = [1, 4, 7, 10, 13, 16, 19, 22, 23]; // 9个正路牌,使用低谷最小配车数
77   - //var xldir_z = true;
78   - //var bc_index = 1;
79   - //var bc_obj;
80   - //var kssj_gfstart;
81   - //for (i = 0; i < zlp.length; i++) {
82   - // // TODO:删除正路牌的bcWgf
83   - // delete data1[zlp[i]].bcWgf;
84   - //
85   - // kssj_gfstart = StrategyUtils.toWrapTime(data1[zlp[i]].bcZgf.fcsj);
86   - // kssj_gfstart = kssj_gfstart.add(data1[zlp[i]].bcZgf.bcsj, "m").add(data1[zlp[i]].bcZgf.STOPTIME, "m");
87   - // for (bc_index = 1; bc_index <= 9; bc_index++) {
88   - // bc_obj = StrategyUtils.getFactory().creatBcObjWithFixedStopTime(
89   - // "normal",
90   - // xldir_z, zlp[i], 3,
91   - // kssj_gfstart.format("HH:mm"),
92   - // _paramObj
93   - // );
94   - // data.push(bc_obj);
95   - //
96   - // xldir_z = !xldir_z;
97   - // kssj_gfstart = StrategyUtils.toWrapTime(bc_obj.ARRIVALTIME).add(bc_obj.STOPTIME, "m");
98   - // }
99   - //
100   - // bc_index = 1;
101   - // xldir_z = true;
102   - //}
103   - //
104   - //// TODO:修正bcWgf
105   - //for (var key in data1) {
106   - // if (data1[key].bcWgf) {
107   - // // TODO:第一块正路牌的bcWgf晚了18分钟,分班路牌的bcWgf向后移动18分钟
108   - // // TODO:还要改成上行
109   - // data1[key].bcWgf = StrategyUtils.getFactory().creatBcObjWithFixedStopTime(
110   - // "normal",
111   - // true, key, 3,
112   - // StrategyUtils.toWrapTime(data1[key].bcWgf.fcsj).add(18, "m").format("HH:mm"),
113   - // _paramObj
114   - // );
115   - // }
116   - //
117   - //}
118   - //
119   - //// TODO:6个做5休二,大致3圈
120   - //// TODO:暂时写死路牌分割位置,然后以bcZgf,bcWgf为基准向左右两侧各加2各班次
121   - //var _5_2_lp = [5, 8, 11, 14, 17, 20];
122   - //for (i = 0; i < _5_2_lp.length; i++) {
123   - // // TODO:先向后加一个班次
124   - // data.push(StrategyUtils.getFactory().creatBcObjWithFixedStopTime(
125   - // "normal",
126   - // "relationshipGraph-down", _5_2_lp[i], 3,
127   - // StrategyUtils.toWrapTime(data1[_5_2_lp[i]].bcZgf.ARRIVALTIME).add(data1[_5_2_lp[i]].bcZgf.STOPTIME, "m").format("HH:mm"),
128   - // _paramObj
129   - // ));
130   - // data.push(StrategyUtils.getFactory().creatBcObjWithFixedStopTime(
131   - // "normal",
132   - // "relationshipGraph-up", _5_2_lp[i], 3,
133   - // StrategyUtils.toWrapTime(data1[_5_2_lp[i]].bcWgf.ARRIVALTIME).add(data1[_5_2_lp[i]].bcWgf.STOPTIME, "m").format("HH:mm"),
134   - // _paramObj
135   - // ));
136   - //}
137   -
138   -
139   - // TODO:8个其他形式分班
140   -
141   -
142   - // final: 添加班次
143   - for (i = 0; i < _headWayBcArray.length; i++) {
144   - for (j = 0; j < _headWayBcArray[i]["qObj"].length; j++) {
145   - if (_headWayBcArray[i]["qObj"][j].hasBc1) {
146   - data.push(_headWayBcArray[i]["qObj"][j]["_bc1_"].toGanttBcObj());
147   - }
148   - if (_headWayBcArray[i]["qObj"][j].hasBc2) {
149   - data.push(_headWayBcArray[i]["qObj"][j]["_bc2_"].toGanttBcObj());
150   - }
151   - }
152   - }
153   -
154   - return {'json':data,'bxrcgs':null};
155   - },
156   -
157   - // TODO:构造所有路牌早晚高峰班次(假设早高峰和晚高峰相同的车辆数)
158   - _buildAllGfBc: function(isUp) {
159   - // TODO:按照早高峰开始时间,以及间隔时间从头创建班次
160   - var _travelTimeObj = _paramObj.getTravelTimeObj();
161   - var _timeIntervalObj = _paramObj.getTimeIntervalObj();
162   -
163   - var avertime = _bxDesc.avertime; // 平均周转时间
164   - var maxzgftime = // 早高峰最大周转时间
165   - _travelTimeObj.moningpeak[0] +
166   - _travelTimeObj.moningpeak[1] +
167   - Math.floor(_travelTimeObj.moningpeak[0] * 0.1) +
168   - Math.floor(_travelTimeObj.moningpeak[1] * 0.1);
169   - var maxwgftime = // 晚早高峰最大周转时间
170   - _travelTimeObj.eveningpeak[0] +
171   - _travelTimeObj.eveningpeak[1] +
172   - Math.floor(_travelTimeObj.eveningpeak[0] * 0.1) +
173   - Math.floor(_travelTimeObj.eveningpeak[1] * 0.1);
174   -
175   - // 计算早高峰间隔
176   - var data1 = {};
177   - var kssj_gfstart = StrategyUtils.toWrapTime(_timeIntervalObj.moningPeakTimeStrs.start);
178   - var clCount = _paramObj.getClzs();
179   - var c1 = Math.floor(maxzgftime / clCount);
180   - var c2 = maxzgftime % clCount;
181   - var i = 0;
182   - for (i = 1; i <= clCount - c2; i ++) {
183   - data1[i] = {};
184   - data1[i].bcZgf = StrategyUtils.getFactory().creatBcObjWithFixedStopTime(
185   - "normal",
186   - isUp, i, 3,
187   - kssj_gfstart.format("HH:mm"),
188   - _paramObj
189   - );
190   - kssj_gfstart = kssj_gfstart.add(c1, "m");
191   - }
192   - for (i = 1; i <= c2; i++) {
193   - data1[clCount - c2 + i] = {};
194   - data1[clCount - c2 + i].bcZgf = StrategyUtils.getFactory().creatBcObjWithFixedStopTime(
195   - "normal",
196   - isUp, clCount - c2 + i, 3,
197   - kssj_gfstart.format("HH:mm"),
198   - _paramObj
199   - );
200   - kssj_gfstart = kssj_gfstart.add(c1 + 1, "m");
201   - }
202   -
203   - // 计算晚高峰间隔
204   - kssj_gfstart = StrategyUtils.toWrapTime(_timeIntervalObj.eveningPeakTimeStrs.start);
205   - c1 = Math.floor(maxwgftime / clCount);
206   - c2 = maxwgftime % clCount;
207   - for (i = 1; i <= clCount - c2; i ++) {
208   - data1[i].bcWgf = StrategyUtils.getFactory().creatBcObjWithFixedStopTime(
209   - "normal",
210   - isUp, i, 3,
211   - kssj_gfstart.format("HH:mm"),
212   - _paramObj
213   - );
214   - kssj_gfstart = kssj_gfstart.add(c1, "m");
215   - }
216   - for (i = 1; i <= c2; i++) {
217   - data1[clCount - c2 + i].bcWgf = StrategyUtils.getFactory().creatBcObjWithFixedStopTime(
218   - "normal",
219   - isUp, clCount - c2 + i, 3,
220   - kssj_gfstart.format("HH:mm"),
221   - _paramObj
222   - );
223   - kssj_gfstart = kssj_gfstart.add(c1 + 1, "m");
224   - }
225   -
226   - return data1;
227   - },
228   -
229   - /**
230   - * 第一步,创建标准线,并放置在第一个路牌上。
231   - * @param lpArray 路牌列表
232   - */
233   - _01_buildBasicLine: function(lpArray) {
234   - // TODO:放置上标线,中标线在议
235   -
236   - // 确定使用上行还是下行首班车作为上标线开始
237   - var _isUp = _paramObj.getUpFirstDTimeObj().isBefore(_paramObj.getDownFirstDTimeObj()) ? false : true;
238   - var firstTime = _isUp ? _paramObj.getUpFirstDTimeObj() : _paramObj.getDownFirstDTimeObj();
239   - var downTime = _isUp ? _paramObj.getUpLastDtimeObj() : _paramObj.getDownLastDTimeObj();
240   -
241   - var data = [];
242   - var bcObj;
243   - var kssj = firstTime;
244   - var fcno = 1; // 发车顺序号
245   - var qBcCount = 1; // 班次数
246   - var qArray = [_isUp, !_isUp]; // 圈的方向(true:上行,false:下行)
247   - var qIndex = 0;
248   - do {
249   - bcObj = StrategyUtils.getFactory().createBcObj(
250   - "normal", qArray[qIndex], lpArray[0].lpNo, fcno, kssj, _paramObj);
251   - kssj = StrategyUtils.addMinute(kssj, bcObj.getBcTime() + bcObj.getStopTime());
252   - fcno ++;
253   - qBcCount ++;
254   - qIndex = (qBcCount - 1) % 2;
255   - data.push(bcObj);
256   - } while(kssj.isBefore(downTime));
257   - qBcCount = data.length;
258   -
259   - // 根据圈数,初始化
260   - var i = 0;
261   - var j = 0;
262   - var n = 0;
263   - for (i = 0; i < lpArray.length; i++) {
264   - // 前后都预留一圈
265   - n = 1 + (Math.floor(qBcCount / 2) + qBcCount % 2) + 1;
266   - _headWayBcArray[i] = {
267   - "bxIndex" : 6, // 默认做五休二
268   - "qObj" : new Array(n) // 圈数
269   - };
270   -
271   - for (j = 0; j < n; j++) {
272   - _headWayBcArray[i]["qObj"][j] = {
273   - "hasBc1" : false, // 是否有第一个班次
274   - "hasBc2" : false, // 是否有第二个班次
275   - "_bc1_" : {}, // 第一个班次
276   - "_bc2_" : {} // 第二个班次
277   -
278   - // TODO:其他参数再议
279   - };
280   - }
281   - }
282   - for (i = 1; i <= Math.floor(qBcCount / 2); i++) {
283   - _headWayBcArray[0]["qObj"][i]["hasBc1"] = true;
284   - _headWayBcArray[0]["qObj"][i]["_bc1_"] = data[(i - 1) * 2];
285   - _headWayBcArray[0]["qObj"][i]["hasBc2"] = true;
286   - _headWayBcArray[0]["qObj"][i]["_bc2_"] = data[(i - 1) * 2 + 1];
287   - }
288   - if (qBcCount % 2 != 0) {
289   - _headWayBcArray[0]["qObj"][Math.floor(qBcCount / 2) + 1]["hasBc1"] = true;
290   - _headWayBcArray[0]["qObj"][Math.floor(qBcCount / 2) + 1]["_bc1_"] = data[qBcCount - 1];
291   - }
292   -
293   - //console.log(_headWayBcArray);
294   -
295   - // 计算每种班型在基准线下对应的大致圈数(1表示1圈2个班次,.5表示半圈1个班次)
296   - i = 0;
297   - var avertime = 0;
298   - var sum = 0;
299   - var size_sub = qBcCount % 2; // 剩下的班次
300   - if (qBcCount > 1) {
301   - // 计算平均周转时间
302   - for (i = 0; i < data.length - size_sub; i ++) {
303   - sum += data[i].getBcTime() + data[i].getStopTime();
304   - }
305   - avertime = sum / ((qBcCount - size_sub) / 2);
306   - // 计算班型圈数
307   - for (i = 0; i < _bxDesc.length; i ++) {
308   - _bxDesc[i].avertime = avertime;
309   - _bxDesc[i].qcount = _bxDesc[i].hoursV * 60 / avertime;
310   - }
311   - }
312   -
313   - console.log(_headWayBcArray);
314   - console.log(_bxDesc);
315   -
316   - },
317   -
318   - /**
319   - * 第二步,构造所有高峰班次。
320   - */
321   - _02_buildAllGfbc: function(lpArray) {
322   - // TODO:先设定死,以标准线为起点从哪个班次出来,以后再用算法确定
323   - // 早高峰,从第一圈,第一个班次全部出来
324   - // 晚高峰,从第四圈,第二个班次全部出来
325   -
326   - var _kssj;
327   - var _zzsj;
328   - var _clCount = StrategyUtils.calcuClzx(_paramObj);;
329   - var _c1;
330   - var _c2;
331   - var i;
332   - var _bc1_;
333   - var _bc2_;
334   -
335   - // 计算早高峰
336   - _bc1_ = _headWayBcArray[0]["qObj"][1]["_bc1_"];
337   - _bc2_ = _headWayBcArray[0]["qObj"][1]["_bc2_"];
338   - _zzsj = _bc1_.getBcTime() + _bc1_.getStopTime() +
339   - _bc2_.getBcTime() + _bc2_.getStopTime();
340   - _c1 = Math.floor(_zzsj / _clCount);
341   - _c2 = _zzsj % _clCount;
342   - _kssj = _bc1_.getFcTimeObj();
343   -
344   - for (i = 2; i <= _clCount - _c2; i++) {
345   - _kssj = StrategyUtils.addMinute(_kssj, _c1);
346   - _headWayBcArray[i - 1]["qObj"][1]["hasBc1"] = true;
347   - _headWayBcArray[i - 1]["qObj"][1]["_bc1_"] =
348   - StrategyUtils.getFactory().createBcObj(
349   - "normal", true, lpArray[i - 1].lpNo,
350   - 3, _kssj, _paramObj);
351   - }
352   - for (i = 1; i <= _c2; i++) {
353   - _kssj = StrategyUtils.addMinute(_kssj, _c1 + 1);
354   - _headWayBcArray[_clCount - _c2 + i - 1]["qObj"][1]["hasBc1"] = true;
355   - _headWayBcArray[_clCount - _c2 + i - 1]["qObj"][1]["_bc1_"] =
356   - StrategyUtils.getFactory().createBcObj(
357   - "normal", true, lpArray[_clCount - _c2 + i - 1].lpNo,
358   - 3, _kssj, _paramObj);
359   - }
360   -
361   - // 计算晚高峰
362   - _bc1_ = _headWayBcArray[0]["qObj"][4]["_bc2_"];
363   - _bc2_ = _headWayBcArray[0]["qObj"][5]["_bc1_"];
364   - _zzsj = _bc1_.getBcTime() + _bc1_.getStopTime() +
365   - _bc2_.getBcTime() + _bc2_.getStopTime();
366   - _c1 = Math.floor(_zzsj / _clCount);
367   - _c2 = _zzsj % _clCount;
368   - _kssj = _bc1_.getFcTimeObj();
369   -
370   - for (i = 2; i <= _clCount - _c2; i++) {
371   - _kssj = StrategyUtils.addMinute(_kssj, _c1);
372   - _headWayBcArray[i - 1]["qObj"][4]["hasBc1"] = true;
373   - _headWayBcArray[i - 1]["qObj"][4]["_bc1_"] =
374   - StrategyUtils.getFactory().createBcObj(
375   - "normal", false, lpArray[i - 1].lpNo,
376   - 3, _kssj, _paramObj);
377   - }
378   - for (i = 1; i <= _c2; i++) {
379   - _kssj = StrategyUtils.addMinute(_kssj, _c1 + 1);
380   - _headWayBcArray[_clCount - _c2 + i - 1]["qObj"][4]["hasBc1"] = true;
381   - _headWayBcArray[_clCount - _c2 + i - 1]["qObj"][4]["_bc1_"] =
382   - StrategyUtils.getFactory().createBcObj(
383   - "normal", false, lpArray[_clCount - _c2 + i - 1].lpNo,
384   - 3, _kssj, _paramObj);
385   - }
386   -
387   -
388   -
389   -
390   - },
391   -
392   - /**
393   - * 第三步,计算班型类型(每个路牌的班型)。
394   - */
395   - _03_calcuBxtype: function() {
396   - // 路牌数和车辆数是一致的
397   -
398   - // 总共车辆数(高峰最大车辆数)
399   - var cls = StrategyUtils.calcuClzx(_paramObj);
400   - // 低谷最少配车
401   - var dgminpc = Math.round(StrategyUtils.calcuTroughZzsj(_paramObj) / _paramObj.getTroughMaxFcjx());
402   - // 加班车路牌数(做5休2的路牌数)
403   - var _5_2_lpes = _paramObj.getJBLpes();
404   -
405   - // 做些简单的验证
406   - if (cls < dgminpc) {
407   - alert("总配车数小于低谷最小配车");
408   - throw "总配车数小于低谷最小配车";
409   - }
410   - if (cls - dgminpc < _5_2_lpes) {
411   - alert("总分班路牌数小于加班路牌数");
412   - throw "总分班路牌数小于加班路牌数";
413   - }
414   -
415   - // 早高峰间隔时间 7分钟
416   - // 晚高峰间隔时间 7分钟
417   - // 早高峰之前 15分钟
418   - // 早高峰结束,晚高峰开始之前 15分钟
419   - // 晚高峰之后 20分钟
420   -
421   - // 做5休2路牌数目 6
422   -
423   -
424   -
425   - // TODO:不用间隔法,直接拉,先正路牌,再分班
426   - var _zlpCount = dgminpc;
427   - var _5_2_Count = _5_2_lpes;
428   - var _otherfb_ = cls - dgminpc - _5_2_lpes;
429   - var i = 0;
430   - for (i = 0; i < _zlpCount; i++) {
431   - _headWayBcArray[i].bxIndex = 5; // 做一休一
432   - }
433   - for (i = _zlpCount; i < _5_2_Count; i++) {
434   - _headWayBcArray[i].bxIndex = 6; // 做五休二
435   - }
436   - for (i = _zlpCount + _5_2_Count; i < _otherfb_; i++) {
437   - _headWayBcArray[i].bxIndex = 3; // 做三休一
438   - }
439   -
440   - },
441   -
442   - /**
443   - * 第四步,根据每个路牌的班型构造所有班次。
444   - */
445   - _04_buildAllOtherBc: function(lpArray) {
446   - var _bcCount;
447   - var _qArray;
448   - var i;
449   - var j;
450   - var z;
451   - var _kssj;
452   -
453   - // 构造正路牌,从早高峰一直加到晚高峰,不够晚高峰后再加
454   - _bcCount = Math.floor(_bxDesc[_headWayBcArray[0].bxIndex].qcount * 2);
455   - // TODO:都是从第一圈第一个班次开始
456   - for (i = 1; i < _headWayBcArray.length; i++) {
457   - _qArray = _headWayBcArray[i].qObj;
458   -
459   - j = 1;
460   - _kssj = StrategyUtils.addMinute(
461   - _qArray[1]._bc1_.getFcTimeObj(),
462   - _qArray[1]._bc1_.getBcTime() +
463   - _qArray[1]._bc1_.getStopTime()
464   - );
465   - // TODO:向后拉6个班次
466   - _qArray[1].hasBc2 = true;
467   - _qArray[1]._bc2_ =
468   - StrategyUtils.getFactory().createBcObj(
469   - "normal", false, lpArray[i].lpNo,
470   - 3, _kssj, _paramObj);
471   - _kssj = StrategyUtils.addMinute(
472   - _qArray[1]._bc2_.getFcTimeObj(),
473   - _qArray[1]._bc2_.getBcTime() +
474   - _qArray[1]._bc2_.getStopTime()
475   - );
476   -
477   - _qArray[2].hasBc1 = true;
478   - _qArray[2]._bc1_ =
479   - StrategyUtils.getFactory().createBcObj(
480   - "normal", true, lpArray[i].lpNo,
481   - 3, _kssj, _paramObj);
482   - _kssj = StrategyUtils.addMinute(
483   - _qArray[2]._bc1_.getFcTimeObj(),
484   - _qArray[2]._bc1_.getBcTime() +
485   - _qArray[2]._bc1_.getStopTime()
486   - );
487   - _qArray[2].hasBc2 = true;
488   - _qArray[2]._bc2_ =
489   - StrategyUtils.getFactory().createBcObj(
490   - "normal", false, lpArray[i].lpNo,
491   - 3, _kssj, _paramObj);
492   -
493   -
494   - }
495   -
496   - }
497   -
498   -
499   -
500   - };
501   -
502   - return headWayF;
503   -
  1 +/**
  2 + * 使用发车间隔模拟客流的策略,生成时刻表。
  3 + */
  4 +var StrategyHeadway = function() {
  5 + // 所有的时间使用moment.js计算
  6 +
  7 + var _paramObj; // 参数对象
  8 +
  9 + var _bxDesc = [ // 班型描述
  10 + {'type':'六工一休','hoursV':6.66, 'minueV':'6:40', 'qcount': 0, 'avertime': 0},
  11 + {'type':'五工一休','hoursV':6.85, 'minueV':'6:51', 'qcount': 0, 'avertime': 0},
  12 + {'type':'四工一休','hoursV':7.14, 'minueV':'7:08', 'qcount': 0, 'avertime': 0},
  13 + {'type':'三工一休','hoursV':7.61, 'minueV':'7:37', 'qcount': 0, 'avertime': 0},
  14 + {'type':'二工一休','hoursV':8.57, 'minueV':'8:34', 'qcount': 0, 'avertime': 0},
  15 + {'type':'一工一休','hoursV':11.42, 'minueV':'11:25', 'qcount': 0, 'avertime': 0},
  16 + {'type':'五工二休','hoursV':7.99, 'minueV':'8:00', 'qcount': 0, 'avertime': 0},
  17 + {'type':'无工休', 'hoursV':5.43, 'minueV':'5:43', 'qcount': 0, 'avertime': 0}
  18 + ];
  19 +
  20 + // 重要数据结构,二维数组的形式保存班次信息
  21 + // 行表示几个路牌,列表示几圈,每个元素表示一圈包含两个班次对象(一个也有可能)
  22 + // TODO:之后会把这个结构定义成一个类
  23 + var _headWayBcArray = [];
  24 +
  25 + var headWayF = {
  26 + /**
  27 + * 使用发车间隔策略生成时刻表。
  28 + * @param paramObj 参数对象
  29 + * @param lpArray 路牌数组
  30 + * @constructor
  31 + */
  32 + BXPplaceClassesTime03 : function(paramObj, lpArray) {
  33 + //console.log(lpArray);
  34 +
  35 + _paramObj = paramObj;
  36 +
  37 + var i = 0;
  38 + var j = 0;
  39 + var data = [];
  40 +
  41 + // 第一步,计算标准线,计算所有班型工时,创建二维班次结构,并把标准线数据作为第一个路牌的班次数据
  42 + this._01_buildBasicLine(lpArray);
  43 + // 第二步,构造所有高峰班次
  44 + this._02_buildAllGfbc(lpArray);
  45 + // 第三步,计算班型类型(每个路牌的班型)
  46 + this._03_calcuBxtype();
  47 + // 第四步,根据每个路牌的班型构造所有班次
  48 + this._04_buildAllOtherBc(lpArray);
  49 +
  50 +
  51 + // TODO:先定死参数
  52 + // 早高峰间隔时间 7分钟
  53 + // 晚高峰间隔时间 7分钟
  54 + // 早高峰之前 15分钟
  55 + // 早高峰结束,晚高峰开始之前 15分钟
  56 + // 晚高峰之后 20分钟
  57 +
  58 + // 做5休2路牌数目 6
  59 + //var data1 = {};
  60 + //
  61 + //// TODO:计算基准线,不画,使用下行,以后根据哪个首班早,用哪个方向
  62 + //data = data.concat(this._buildNormalLine(false, 12));
  63 + //data = data.concat(this._01_buildBasicLine(lpArray));
  64 + //console.log(_bxDesc);
  65 +
  66 + //// TODO:按照早高峰开始时间,以及间隔时间从头创建班次
  67 + //var avertime = _bxDesc.avertime; // 平均周转时间
  68 + //var maxgftime = 75 + 80 + 7 + 8; // 高峰最大周转时间
  69 + //var data1 = this._buildAllGfBc(false);
  70 + //console.log(data1);
  71 + //
  72 + //// TODO:分割路牌,选出正路牌,从早高峰班次开始添加到晚高峰结束
  73 + //// TODO:写死,使用奇数路牌添加正路牌
  74 + //// TODO:按照做一休一来,4.5圈
  75 + //var maxdgtime = 75 + 75 + 15 + 15; // 低谷最大周转时间
  76 + //var zlp = [1, 4, 7, 10, 13, 16, 19, 22, 23]; // 9个正路牌,使用低谷最小配车数
  77 + //var xldir_z = true;
  78 + //var bc_index = 1;
  79 + //var bc_obj;
  80 + //var kssj_gfstart;
  81 + //for (i = 0; i < zlp.length; i++) {
  82 + // // TODO:删除正路牌的bcWgf
  83 + // delete data1[zlp[i]].bcWgf;
  84 + //
  85 + // kssj_gfstart = StrategyUtils.toWrapTime(data1[zlp[i]].bcZgf.fcsj);
  86 + // kssj_gfstart = kssj_gfstart.add(data1[zlp[i]].bcZgf.bcsj, "m").add(data1[zlp[i]].bcZgf.STOPTIME, "m");
  87 + // for (bc_index = 1; bc_index <= 9; bc_index++) {
  88 + // bc_obj = StrategyUtils.getFactory().creatBcObjWithFixedStopTime(
  89 + // "normal",
  90 + // xldir_z, zlp[i], 3,
  91 + // kssj_gfstart.format("HH:mm"),
  92 + // _paramObj
  93 + // );
  94 + // data.push(bc_obj);
  95 + //
  96 + // xldir_z = !xldir_z;
  97 + // kssj_gfstart = StrategyUtils.toWrapTime(bc_obj.ARRIVALTIME).add(bc_obj.STOPTIME, "m");
  98 + // }
  99 + //
  100 + // bc_index = 1;
  101 + // xldir_z = true;
  102 + //}
  103 + //
  104 + //// TODO:修正bcWgf
  105 + //for (var key in data1) {
  106 + // if (data1[key].bcWgf) {
  107 + // // TODO:第一块正路牌的bcWgf晚了18分钟,分班路牌的bcWgf向后移动18分钟
  108 + // // TODO:还要改成上行
  109 + // data1[key].bcWgf = StrategyUtils.getFactory().creatBcObjWithFixedStopTime(
  110 + // "normal",
  111 + // true, key, 3,
  112 + // StrategyUtils.toWrapTime(data1[key].bcWgf.fcsj).add(18, "m").format("HH:mm"),
  113 + // _paramObj
  114 + // );
  115 + // }
  116 + //
  117 + //}
  118 + //
  119 + //// TODO:6个做5休二,大致3圈
  120 + //// TODO:暂时写死路牌分割位置,然后以bcZgf,bcWgf为基准向左右两侧各加2各班次
  121 + //var _5_2_lp = [5, 8, 11, 14, 17, 20];
  122 + //for (i = 0; i < _5_2_lp.length; i++) {
  123 + // // TODO:先向后加一个班次
  124 + // data.push(StrategyUtils.getFactory().creatBcObjWithFixedStopTime(
  125 + // "normal",
  126 + // "relationshipGraph-down", _5_2_lp[i], 3,
  127 + // StrategyUtils.toWrapTime(data1[_5_2_lp[i]].bcZgf.ARRIVALTIME).add(data1[_5_2_lp[i]].bcZgf.STOPTIME, "m").format("HH:mm"),
  128 + // _paramObj
  129 + // ));
  130 + // data.push(StrategyUtils.getFactory().creatBcObjWithFixedStopTime(
  131 + // "normal",
  132 + // "relationshipGraph-up", _5_2_lp[i], 3,
  133 + // StrategyUtils.toWrapTime(data1[_5_2_lp[i]].bcWgf.ARRIVALTIME).add(data1[_5_2_lp[i]].bcWgf.STOPTIME, "m").format("HH:mm"),
  134 + // _paramObj
  135 + // ));
  136 + //}
  137 +
  138 +
  139 + // TODO:8个其他形式分班
  140 +
  141 +
  142 + // final: 添加班次
  143 + for (i = 0; i < _headWayBcArray.length; i++) {
  144 + for (j = 0; j < _headWayBcArray[i]["qObj"].length; j++) {
  145 + if (_headWayBcArray[i]["qObj"][j].hasBc1) {
  146 + data.push(_headWayBcArray[i]["qObj"][j]["_bc1_"].toGanttBcObj());
  147 + }
  148 + if (_headWayBcArray[i]["qObj"][j].hasBc2) {
  149 + data.push(_headWayBcArray[i]["qObj"][j]["_bc2_"].toGanttBcObj());
  150 + }
  151 + }
  152 + }
  153 +
  154 + return {'json':data,'bxrcgs':null};
  155 + },
  156 +
  157 + // TODO:构造所有路牌早晚高峰班次(假设早高峰和晚高峰相同的车辆数)
  158 + _buildAllGfBc: function(isUp) {
  159 + // TODO:按照早高峰开始时间,以及间隔时间从头创建班次
  160 + var _travelTimeObj = _paramObj.getTravelTimeObj();
  161 + var _timeIntervalObj = _paramObj.getTimeIntervalObj();
  162 +
  163 + var avertime = _bxDesc.avertime; // 平均周转时间
  164 + var maxzgftime = // 早高峰最大周转时间
  165 + _travelTimeObj.moningpeak[0] +
  166 + _travelTimeObj.moningpeak[1] +
  167 + Math.floor(_travelTimeObj.moningpeak[0] * 0.1) +
  168 + Math.floor(_travelTimeObj.moningpeak[1] * 0.1);
  169 + var maxwgftime = // 晚早高峰最大周转时间
  170 + _travelTimeObj.eveningpeak[0] +
  171 + _travelTimeObj.eveningpeak[1] +
  172 + Math.floor(_travelTimeObj.eveningpeak[0] * 0.1) +
  173 + Math.floor(_travelTimeObj.eveningpeak[1] * 0.1);
  174 +
  175 + // 计算早高峰间隔
  176 + var data1 = {};
  177 + var kssj_gfstart = StrategyUtils.toWrapTime(_timeIntervalObj.moningPeakTimeStrs.start);
  178 + var clCount = _paramObj.getClzs();
  179 + var c1 = Math.floor(maxzgftime / clCount);
  180 + var c2 = maxzgftime % clCount;
  181 + var i = 0;
  182 + for (i = 1; i <= clCount - c2; i ++) {
  183 + data1[i] = {};
  184 + data1[i].bcZgf = StrategyUtils.getFactory().creatBcObjWithFixedStopTime(
  185 + "normal",
  186 + isUp, i, 3,
  187 + kssj_gfstart.format("HH:mm"),
  188 + _paramObj
  189 + );
  190 + kssj_gfstart = kssj_gfstart.add(c1, "m");
  191 + }
  192 + for (i = 1; i <= c2; i++) {
  193 + data1[clCount - c2 + i] = {};
  194 + data1[clCount - c2 + i].bcZgf = StrategyUtils.getFactory().creatBcObjWithFixedStopTime(
  195 + "normal",
  196 + isUp, clCount - c2 + i, 3,
  197 + kssj_gfstart.format("HH:mm"),
  198 + _paramObj
  199 + );
  200 + kssj_gfstart = kssj_gfstart.add(c1 + 1, "m");
  201 + }
  202 +
  203 + // 计算晚高峰间隔
  204 + kssj_gfstart = StrategyUtils.toWrapTime(_timeIntervalObj.eveningPeakTimeStrs.start);
  205 + c1 = Math.floor(maxwgftime / clCount);
  206 + c2 = maxwgftime % clCount;
  207 + for (i = 1; i <= clCount - c2; i ++) {
  208 + data1[i].bcWgf = StrategyUtils.getFactory().creatBcObjWithFixedStopTime(
  209 + "normal",
  210 + isUp, i, 3,
  211 + kssj_gfstart.format("HH:mm"),
  212 + _paramObj
  213 + );
  214 + kssj_gfstart = kssj_gfstart.add(c1, "m");
  215 + }
  216 + for (i = 1; i <= c2; i++) {
  217 + data1[clCount - c2 + i].bcWgf = StrategyUtils.getFactory().creatBcObjWithFixedStopTime(
  218 + "normal",
  219 + isUp, clCount - c2 + i, 3,
  220 + kssj_gfstart.format("HH:mm"),
  221 + _paramObj
  222 + );
  223 + kssj_gfstart = kssj_gfstart.add(c1 + 1, "m");
  224 + }
  225 +
  226 + return data1;
  227 + },
  228 +
  229 + /**
  230 + * 第一步,创建标准线,并放置在第一个路牌上。
  231 + * @param lpArray 路牌列表
  232 + */
  233 + _01_buildBasicLine: function(lpArray) {
  234 + // TODO:放置上标线,中标线在议
  235 +
  236 + // 确定使用上行还是下行首班车作为上标线开始
  237 + var _isUp = _paramObj.getUpFirstDTimeObj().isBefore(_paramObj.getDownFirstDTimeObj()) ? false : true;
  238 + var firstTime = _isUp ? _paramObj.getUpFirstDTimeObj() : _paramObj.getDownFirstDTimeObj();
  239 + var downTime = _isUp ? _paramObj.getUpLastDtimeObj() : _paramObj.getDownLastDTimeObj();
  240 +
  241 + var data = [];
  242 + var bcObj;
  243 + var kssj = firstTime;
  244 + var fcno = 1; // 发车顺序号
  245 + var qBcCount = 1; // 班次数
  246 + var qArray = [_isUp, !_isUp]; // 圈的方向(true:上行,false:下行)
  247 + var qIndex = 0;
  248 + do {
  249 + bcObj = StrategyUtils.getFactory().createBcObj(
  250 + "normal", qArray[qIndex], lpArray[0].lpNo, fcno, kssj, _paramObj);
  251 + kssj = StrategyUtils.addMinute(kssj, bcObj.getBcTime() + bcObj.getStopTime());
  252 + fcno ++;
  253 + qBcCount ++;
  254 + qIndex = (qBcCount - 1) % 2;
  255 + data.push(bcObj);
  256 + } while(kssj.isBefore(downTime));
  257 + qBcCount = data.length;
  258 +
  259 + // 根据圈数,初始化
  260 + var i = 0;
  261 + var j = 0;
  262 + var n = 0;
  263 + for (i = 0; i < lpArray.length; i++) {
  264 + // 前后都预留一圈
  265 + n = 1 + (Math.floor(qBcCount / 2) + qBcCount % 2) + 1;
  266 + _headWayBcArray[i] = {
  267 + "bxIndex" : 6, // 默认做五休二
  268 + "qObj" : new Array(n) // 圈数
  269 + };
  270 +
  271 + for (j = 0; j < n; j++) {
  272 + _headWayBcArray[i]["qObj"][j] = {
  273 + "hasBc1" : false, // 是否有第一个班次
  274 + "hasBc2" : false, // 是否有第二个班次
  275 + "_bc1_" : {}, // 第一个班次
  276 + "_bc2_" : {} // 第二个班次
  277 +
  278 + // TODO:其他参数再议
  279 + };
  280 + }
  281 + }
  282 + for (i = 1; i <= Math.floor(qBcCount / 2); i++) {
  283 + _headWayBcArray[0]["qObj"][i]["hasBc1"] = true;
  284 + _headWayBcArray[0]["qObj"][i]["_bc1_"] = data[(i - 1) * 2];
  285 + _headWayBcArray[0]["qObj"][i]["hasBc2"] = true;
  286 + _headWayBcArray[0]["qObj"][i]["_bc2_"] = data[(i - 1) * 2 + 1];
  287 + }
  288 + if (qBcCount % 2 != 0) {
  289 + _headWayBcArray[0]["qObj"][Math.floor(qBcCount / 2) + 1]["hasBc1"] = true;
  290 + _headWayBcArray[0]["qObj"][Math.floor(qBcCount / 2) + 1]["_bc1_"] = data[qBcCount - 1];
  291 + }
  292 +
  293 + //console.log(_headWayBcArray);
  294 +
  295 + // 计算每种班型在基准线下对应的大致圈数(1表示1圈2个班次,.5表示半圈1个班次)
  296 + i = 0;
  297 + var avertime = 0;
  298 + var sum = 0;
  299 + var size_sub = qBcCount % 2; // 剩下的班次
  300 + if (qBcCount > 1) {
  301 + // 计算平均周转时间
  302 + for (i = 0; i < data.length - size_sub; i ++) {
  303 + sum += data[i].getBcTime() + data[i].getStopTime();
  304 + }
  305 + avertime = sum / ((qBcCount - size_sub) / 2);
  306 + // 计算班型圈数
  307 + for (i = 0; i < _bxDesc.length; i ++) {
  308 + _bxDesc[i].avertime = avertime;
  309 + _bxDesc[i].qcount = _bxDesc[i].hoursV * 60 / avertime;
  310 + }
  311 + }
  312 +
  313 + console.log(_headWayBcArray);
  314 + console.log(_bxDesc);
  315 +
  316 + },
  317 +
  318 + /**
  319 + * 第二步,构造所有高峰班次。
  320 + */
  321 + _02_buildAllGfbc: function(lpArray) {
  322 + // TODO:先设定死,以标准线为起点从哪个班次出来,以后再用算法确定
  323 + // 早高峰,从第一圈,第一个班次全部出来
  324 + // 晚高峰,从第四圈,第二个班次全部出来
  325 +
  326 + var _kssj;
  327 + var _zzsj;
  328 + var _clCount = StrategyUtils.calcuClzx(_paramObj);;
  329 + var _c1;
  330 + var _c2;
  331 + var i;
  332 + var _bc1_;
  333 + var _bc2_;
  334 +
  335 + // 计算早高峰
  336 + _bc1_ = _headWayBcArray[0]["qObj"][1]["_bc1_"];
  337 + _bc2_ = _headWayBcArray[0]["qObj"][1]["_bc2_"];
  338 + _zzsj = _bc1_.getBcTime() + _bc1_.getStopTime() +
  339 + _bc2_.getBcTime() + _bc2_.getStopTime();
  340 + _c1 = Math.floor(_zzsj / _clCount);
  341 + _c2 = _zzsj % _clCount;
  342 + _kssj = _bc1_.getFcTimeObj();
  343 +
  344 + for (i = 2; i <= _clCount - _c2; i++) {
  345 + _kssj = StrategyUtils.addMinute(_kssj, _c1);
  346 + _headWayBcArray[i - 1]["qObj"][1]["hasBc1"] = true;
  347 + _headWayBcArray[i - 1]["qObj"][1]["_bc1_"] =
  348 + StrategyUtils.getFactory().createBcObj(
  349 + "normal", true, lpArray[i - 1].lpNo,
  350 + 3, _kssj, _paramObj);
  351 + }
  352 + for (i = 1; i <= _c2; i++) {
  353 + _kssj = StrategyUtils.addMinute(_kssj, _c1 + 1);
  354 + _headWayBcArray[_clCount - _c2 + i - 1]["qObj"][1]["hasBc1"] = true;
  355 + _headWayBcArray[_clCount - _c2 + i - 1]["qObj"][1]["_bc1_"] =
  356 + StrategyUtils.getFactory().createBcObj(
  357 + "normal", true, lpArray[_clCount - _c2 + i - 1].lpNo,
  358 + 3, _kssj, _paramObj);
  359 + }
  360 +
  361 + // 计算晚高峰
  362 + _bc1_ = _headWayBcArray[0]["qObj"][4]["_bc2_"];
  363 + _bc2_ = _headWayBcArray[0]["qObj"][5]["_bc1_"];
  364 + _zzsj = _bc1_.getBcTime() + _bc1_.getStopTime() +
  365 + _bc2_.getBcTime() + _bc2_.getStopTime();
  366 + _c1 = Math.floor(_zzsj / _clCount);
  367 + _c2 = _zzsj % _clCount;
  368 + _kssj = _bc1_.getFcTimeObj();
  369 +
  370 + for (i = 2; i <= _clCount - _c2; i++) {
  371 + _kssj = StrategyUtils.addMinute(_kssj, _c1);
  372 + _headWayBcArray[i - 1]["qObj"][4]["hasBc1"] = true;
  373 + _headWayBcArray[i - 1]["qObj"][4]["_bc1_"] =
  374 + StrategyUtils.getFactory().createBcObj(
  375 + "normal", false, lpArray[i - 1].lpNo,
  376 + 3, _kssj, _paramObj);
  377 + }
  378 + for (i = 1; i <= _c2; i++) {
  379 + _kssj = StrategyUtils.addMinute(_kssj, _c1 + 1);
  380 + _headWayBcArray[_clCount - _c2 + i - 1]["qObj"][4]["hasBc1"] = true;
  381 + _headWayBcArray[_clCount - _c2 + i - 1]["qObj"][4]["_bc1_"] =
  382 + StrategyUtils.getFactory().createBcObj(
  383 + "normal", false, lpArray[_clCount - _c2 + i - 1].lpNo,
  384 + 3, _kssj, _paramObj);
  385 + }
  386 +
  387 +
  388 +
  389 +
  390 + },
  391 +
  392 + /**
  393 + * 第三步,计算班型类型(每个路牌的班型)。
  394 + */
  395 + _03_calcuBxtype: function() {
  396 + // 路牌数和车辆数是一致的
  397 +
  398 + // 总共车辆数(高峰最大车辆数)
  399 + var cls = StrategyUtils.calcuClzx(_paramObj);
  400 + // 低谷最少配车
  401 + var dgminpc = Math.round(StrategyUtils.calcuTroughZzsj(_paramObj) / _paramObj.getTroughMaxFcjx());
  402 + // 加班车路牌数(做5休2的路牌数)
  403 + var _5_2_lpes = _paramObj.getJBLpes();
  404 +
  405 + // 做些简单的验证
  406 + if (cls < dgminpc) {
  407 + alert("总配车数小于低谷最小配车");
  408 + throw "总配车数小于低谷最小配车";
  409 + }
  410 + if (cls - dgminpc < _5_2_lpes) {
  411 + alert("总分班路牌数小于加班路牌数");
  412 + throw "总分班路牌数小于加班路牌数";
  413 + }
  414 +
  415 + // 早高峰间隔时间 7分钟
  416 + // 晚高峰间隔时间 7分钟
  417 + // 早高峰之前 15分钟
  418 + // 早高峰结束,晚高峰开始之前 15分钟
  419 + // 晚高峰之后 20分钟
  420 +
  421 + // 做5休2路牌数目 6
  422 +
  423 +
  424 +
  425 + // TODO:不用间隔法,直接拉,先正路牌,再分班
  426 + var _zlpCount = dgminpc;
  427 + var _5_2_Count = _5_2_lpes;
  428 + var _otherfb_ = cls - dgminpc - _5_2_lpes;
  429 + var i = 0;
  430 + for (i = 0; i < _zlpCount; i++) {
  431 + _headWayBcArray[i].bxIndex = 5; // 做一休一
  432 + }
  433 + for (i = _zlpCount; i < _5_2_Count; i++) {
  434 + _headWayBcArray[i].bxIndex = 6; // 做五休二
  435 + }
  436 + for (i = _zlpCount + _5_2_Count; i < _otherfb_; i++) {
  437 + _headWayBcArray[i].bxIndex = 3; // 做三休一
  438 + }
  439 +
  440 + },
  441 +
  442 + /**
  443 + * 第四步,根据每个路牌的班型构造所有班次。
  444 + */
  445 + _04_buildAllOtherBc: function(lpArray) {
  446 + var _bcCount;
  447 + var _qArray;
  448 + var i;
  449 + var j;
  450 + var z;
  451 + var _kssj;
  452 +
  453 + // 构造正路牌,从早高峰一直加到晚高峰,不够晚高峰后再加
  454 + _bcCount = Math.floor(_bxDesc[_headWayBcArray[0].bxIndex].qcount * 2);
  455 + // TODO:都是从第一圈第一个班次开始
  456 + for (i = 1; i < _headWayBcArray.length; i++) {
  457 + _qArray = _headWayBcArray[i].qObj;
  458 +
  459 + j = 1;
  460 + _kssj = StrategyUtils.addMinute(
  461 + _qArray[1]._bc1_.getFcTimeObj(),
  462 + _qArray[1]._bc1_.getBcTime() +
  463 + _qArray[1]._bc1_.getStopTime()
  464 + );
  465 + // TODO:向后拉6个班次
  466 + _qArray[1].hasBc2 = true;
  467 + _qArray[1]._bc2_ =
  468 + StrategyUtils.getFactory().createBcObj(
  469 + "normal", false, lpArray[i].lpNo,
  470 + 3, _kssj, _paramObj);
  471 + _kssj = StrategyUtils.addMinute(
  472 + _qArray[1]._bc2_.getFcTimeObj(),
  473 + _qArray[1]._bc2_.getBcTime() +
  474 + _qArray[1]._bc2_.getStopTime()
  475 + );
  476 +
  477 + _qArray[2].hasBc1 = true;
  478 + _qArray[2]._bc1_ =
  479 + StrategyUtils.getFactory().createBcObj(
  480 + "normal", true, lpArray[i].lpNo,
  481 + 3, _kssj, _paramObj);
  482 + _kssj = StrategyUtils.addMinute(
  483 + _qArray[2]._bc1_.getFcTimeObj(),
  484 + _qArray[2]._bc1_.getBcTime() +
  485 + _qArray[2]._bc1_.getStopTime()
  486 + );
  487 + _qArray[2].hasBc2 = true;
  488 + _qArray[2]._bc2_ =
  489 + StrategyUtils.getFactory().createBcObj(
  490 + "normal", false, lpArray[i].lpNo,
  491 + 3, _kssj, _paramObj);
  492 +
  493 +
  494 + }
  495 +
  496 + }
  497 +
  498 +
  499 +
  500 + };
  501 +
  502 + return headWayF;
  503 +
504 504 }();
505 505 \ No newline at end of file
... ...
src/main/resources/static/pages/summary/excel/快慢误点报表.xls
No preview for this file type