Commit 24a510139aabdcca207bc805d282058a9e4578fc

Authored by 徐烜
2 parents 834bbdb2 c9cf8588

Update

Showing 44 changed files with 4802 additions and 3088 deletions
src/main/java/com/bsth/data/BasicData.java
@@ -270,36 +270,36 @@ public class BasicData implements CommandLineRunner { @@ -270,36 +270,36 @@ public class BasicData implements CommandLineRunner {
270 Map<String, String> code2SHcode = new HashMap<String, String>(); 270 Map<String, String> code2SHcode = new HashMap<String, String>();
271 Map<String, Integer> tempStationName2YgcNumber = new HashMap<String, Integer>(); 271 Map<String, Integer> tempStationName2YgcNumber = new HashMap<String, Integer>();
272 272
  273 + /**
  274 + * 加载运管处的站点及序号
  275 + * 上行从1开始,下行顺序续编
  276 + */
  277 + List<Object[]> ygcLines = stationRouteRepository.findAllLineWithYgc();
  278 + if(ygcLines != null && ygcLines.size() > 0){
  279 + int size = ygcLines.size();
  280 + Object[] tempArray ;
  281 + int num = 1;
  282 + String key;
  283 + String lineCode = "";
  284 + for (int i = 0; i < size; i ++){
  285 + tempArray = ygcLines.get(i);
  286 + if(lineCode.equals("")){
  287 + lineCode = tempArray[0]+"";
  288 + }else if(!lineCode.equals(tempArray[0]+"")){
  289 + num = 1;
  290 + lineCode = tempArray[0]+"";
  291 + }
  292 + key = tempArray[0] + "_"+tempArray[1] + "_"+tempArray[2];
  293 + tempStationName2YgcNumber.put(key,num++);
  294 + }
  295 + }
  296 +
273 while (iterator.hasNext()) { 297 while (iterator.hasNext()) {
274 line = iterator.next(); 298 line = iterator.next();
275 biMap.put(line.getId(), line.getLineCode()); 299 biMap.put(line.getId(), line.getLineCode());
276 code2name.put(line.getLineCode(), line.getName()); 300 code2name.put(line.getLineCode(), line.getName());
277 id2SHcode.put(line.getId(), line.getShanghaiLinecode()); 301 id2SHcode.put(line.getId(), line.getShanghaiLinecode());
278 code2SHcode.put(line.getLineCode(), line.getShanghaiLinecode()); 302 code2SHcode.put(line.getLineCode(), line.getShanghaiLinecode());
279 -  
280 - /**  
281 - * 加载运管处的站点及序号  
282 - * 上行从1开始,下行顺序续编  
283 - */  
284 - List<Object[]> ygcLines = stationRouteRepository.findAllLineWithYgc();  
285 - if(ygcLines != null && ygcLines.size() > 0){  
286 - int size = ygcLines.size();  
287 - Object[] tempArray ;  
288 - int num = 1;  
289 - String key;  
290 - String lineCode = "";  
291 - for (int i = 0; i < size; i ++){  
292 - tempArray = ygcLines.get(i);  
293 - if(lineCode.equals("")){  
294 - lineCode = tempArray[0]+"";  
295 - }else if(!lineCode.equals(tempArray[0]+"")){  
296 - num = 1;  
297 - lineCode = tempArray[0]+"";  
298 - }  
299 - key = tempArray[0] + "_"+tempArray[1] + "_"+tempArray[2];  
300 - tempStationName2YgcNumber.put(key,num++);  
301 - }  
302 - }  
303 } 303 }
304 304
305 lineId2CodeMap = biMap; 305 lineId2CodeMap = biMap;
src/main/java/com/bsth/data/safe_driv/SafeDrivCenter.java
1 package com.bsth.data.safe_driv; 1 package com.bsth.data.safe_driv;
2 2
  3 +import com.bsth.Application;
3 import com.bsth.websocket.handler.SendUtils; 4 import com.bsth.websocket.handler.SendUtils;
4 import org.joda.time.format.DateTimeFormat; 5 import org.joda.time.format.DateTimeFormat;
5 import org.joda.time.format.DateTimeFormatter; 6 import org.joda.time.format.DateTimeFormatter;
@@ -14,6 +15,7 @@ import java.util.HashMap; @@ -14,6 +15,7 @@ import java.util.HashMap;
14 import java.util.HashSet; 15 import java.util.HashSet;
15 import java.util.Map; 16 import java.util.Map;
16 import java.util.Set; 17 import java.util.Set;
  18 +import java.util.concurrent.TimeUnit;
17 19
18 /** 20 /**
19 * 安全驾驶 21 * 安全驾驶
@@ -67,7 +69,7 @@ public class SafeDrivCenter implements CommandLineRunner,ApplicationContextAware @@ -67,7 +69,7 @@ public class SafeDrivCenter implements CommandLineRunner,ApplicationContextAware
67 @Override 69 @Override
68 public void run(String... strings) throws Exception { 70 public void run(String... strings) throws Exception {
69 //定时加载安全驾驶数据 71 //定时加载安全驾驶数据
70 - //Application.mainServices.scheduleWithFixedDelay(safeDrivDataLoadThread, 60, 4, TimeUnit.SECONDS); 72 + Application.mainServices.scheduleWithFixedDelay(safeDrivDataLoadThread, 60, 7, TimeUnit.SECONDS);
71 } 73 }
72 74
73 @Override 75 @Override
src/main/java/com/bsth/data/safe_driv/SafeDrivDataLoadThread.java
@@ -88,7 +88,7 @@ public class SafeDrivDataLoadThread extends Thread{ @@ -88,7 +88,7 @@ public class SafeDrivDataLoadThread extends Thread{
88 httpClient.close(); 88 httpClient.close();
89 response.close(); 89 response.close();
90 } catch (Exception e) { 90 } catch (Exception e) {
91 - logger.error(e.getMessage()); 91 + logger.error("安全驾驶接口报错了" , e.getMessage());
92 } 92 }
93 } 93 }
94 } 94 }
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
@@ -786,13 +786,14 @@ public class DayOfSchedule { @@ -786,13 +786,14 @@ public class DayOfSchedule {
786 Collections.sort(list, schFCSJComparator); 786 Collections.sort(list, schFCSJComparator);
787 787
788 long t = System.currentTimeMillis(); 788 long t = System.currentTimeMillis();
789 - int distance=-1; 789 + int distance=-1, diff;
790 790
791 ScheduleRealInfo sch = null; 791 ScheduleRealInfo sch = null;
792 for(ScheduleRealInfo temp : list){ 792 for(ScheduleRealInfo temp : list){
793 -  
794 - if(Math.abs(temp.getDfsjT() - t) < distance || distance == -1){ 793 + diff = (int) Math.abs(temp.getDfsjT() - t);
  794 + if(diff < distance || distance == -1){
795 sch = temp; 795 sch = temp;
  796 + distance = diff;
796 } 797 }
797 } 798 }
798 return sch; 799 return sch;
src/main/java/com/bsth/data/schedule/SchModifyLog.java renamed to src/main/java/com/bsth/data/schedule/edit_logs/FormLogger.java
1 -package com.bsth.data.schedule;  
2 -  
3 -import com.bsth.controller.realcontrol.dto.ChangePersonCar;  
4 -import com.bsth.entity.mcy_forms.Changetochange;  
5 -import com.bsth.entity.realcontrol.ScheduleRealInfo;  
6 -import com.bsth.entity.sys.SysUser;  
7 -import com.bsth.repository.form.ChangetochangeRepository;  
8 -import com.bsth.security.util.SecurityUtils;  
9 -import org.apache.commons.lang3.StringUtils;  
10 -import org.joda.time.format.DateTimeFormat;  
11 -import org.joda.time.format.DateTimeFormatter;  
12 -import org.slf4j.Logger;  
13 -import org.slf4j.LoggerFactory;  
14 -import org.springframework.beans.factory.annotation.Autowired;  
15 -import org.springframework.stereotype.Service;  
16 -  
17 -import java.util.Date;  
18 -  
19 -/**  
20 - * 线调实际排班修改日志记录  
21 - * Created by panzhao on 2017/5/7.  
22 - */  
23 -@Service  
24 -public class SchModifyLog {  
25 -  
26 - private static DateTimeFormatter fmtHHmm = DateTimeFormat.forPattern("HH:mm");  
27 -  
28 - Logger log = LoggerFactory.getLogger(this.getClass());  
29 -  
30 - @Autowired  
31 - ChangetochangeRepository changetochangeRepository;  
32 -  
33 - /**  
34 - * 换人换车情况表  
35 - */  
36 - public void saveChangetochange(ScheduleRealInfo sch, ChangePersonCar cpc){  
37 - try {  
38 - String newNbbm = cpc.getClZbh();  
39 - String newJsy = cpc.getJsy();  
40 - String oldJsy = sch.getjGh()+"/"+sch.getjName();  
41 -  
42 - if(newNbbm == null && newJsy == null)  
43 - return;  
44 -  
45 - if(newNbbm != null && newJsy != null  
46 - && newNbbm.equals(sch.getClZbh()) && newJsy.equals(oldJsy))  
47 - return;  
48 -  
49 - Date d = new Date();  
50 - SysUser user = SecurityUtils.getCurrentUser();  
51 - Changetochange cc = new Changetochange();  
52 - cc.setRq(sch.getScheduleDateStr());  
53 - cc.setGs(sch.getGsBm());  
54 - cc.setFgs(sch.getFgsBm());  
55 - cc.setXl(sch.getXlBm());  
56 - cc.setLp(sch.getLpName());  
57 - cc.setFssj(fmtHHmm.print(d.getTime()));  
58 - cc.setXgsj(fmtHHmm.print(d.getTime()));  
59 - if(user != null)  
60 - cc.setXgr(user.getUserName());  
61 -  
62 - cc.setPcch(sch.getClZbh());  
63 - cc.setPcry(oldJsy);  
64 - cc.setJhch(sch.getClZbh());  
65 - cc.setJhgh(sch.getjGh());  
66 -  
67 - if(StringUtils.isNotEmpty(newNbbm))  
68 - cc.setSjch(newNbbm);  
69 - if(StringUtils.isNotEmpty(newJsy))  
70 - cc.setSjgh(newJsy);  
71 -  
72 - changetochangeRepository.save(cc);  
73 - }catch (Exception e){  
74 - log.error("纪录换人换车情况表", e);  
75 - }  
76 - }  
77 -  
78 - public void saveChangetochange(ScheduleRealInfo sch, String nbbm, String jsy){  
79 - ChangePersonCar cpc = new ChangePersonCar();  
80 - cpc.setClZbh(nbbm);  
81 - cpc.setJsy(jsy);  
82 - saveChangetochange(sch, cpc);  
83 - }  
84 -} 1 +package com.bsth.data.schedule.edit_logs;
  2 +
  3 +import com.bsth.controller.realcontrol.dto.ChangePersonCar;
  4 +import com.bsth.entity.mcy_forms.Changetochange;
  5 +import com.bsth.entity.realcontrol.ScheduleRealInfo;
  6 +import com.bsth.entity.sys.SysUser;
  7 +import com.bsth.repository.form.ChangetochangeRepository;
  8 +import com.bsth.security.util.SecurityUtils;
  9 +import org.apache.commons.lang3.StringUtils;
  10 +import org.joda.time.format.DateTimeFormat;
  11 +import org.joda.time.format.DateTimeFormatter;
  12 +import org.slf4j.Logger;
  13 +import org.slf4j.LoggerFactory;
  14 +import org.springframework.beans.factory.annotation.Autowired;
  15 +import org.springframework.stereotype.Service;
  16 +
  17 +import java.util.Date;
  18 +
  19 +/**
  20 + * 为报表写入相关的班次修改记录
  21 + * Created by panzhao on 2017/5/7.
  22 + */
  23 +@Service
  24 +public class FormLogger {
  25 +
  26 + private static DateTimeFormatter fmtHHmm = DateTimeFormat.forPattern("HH:mm");
  27 +
  28 + Logger log = LoggerFactory.getLogger(this.getClass());
  29 +
  30 + @Autowired
  31 + ChangetochangeRepository changetochangeRepository;
  32 +
  33 + /**
  34 + * 换人换车情况表
  35 + */
  36 + public void saveChangetochange(ScheduleRealInfo sch, ChangePersonCar cpc){
  37 + try {
  38 + String newNbbm = cpc.getClZbh();
  39 + String newJsy = cpc.getJsy();
  40 + String oldJsy = sch.getjGh()+"/"+sch.getjName();
  41 +
  42 + if(newNbbm == null && newJsy == null)
  43 + return;
  44 +
  45 + if(newNbbm != null && newJsy != null
  46 + && newNbbm.equals(sch.getClZbh()) && newJsy.equals(oldJsy))
  47 + return;
  48 +
  49 + Date d = new Date();
  50 + SysUser user = SecurityUtils.getCurrentUser();
  51 + Changetochange cc = new Changetochange();
  52 + cc.setRq(sch.getScheduleDateStr());
  53 + cc.setGs(sch.getGsBm());
  54 + cc.setFgs(sch.getFgsBm());
  55 + cc.setXl(sch.getXlBm());
  56 + cc.setLp(sch.getLpName());
  57 + cc.setFssj(fmtHHmm.print(d.getTime()));
  58 + cc.setXgsj(fmtHHmm.print(d.getTime()));
  59 + if(user != null)
  60 + cc.setXgr(user.getUserName());
  61 +
  62 + cc.setPcch(sch.getClZbh());
  63 + cc.setPcry(oldJsy);
  64 + cc.setJhch(sch.getClZbh());
  65 + cc.setJhgh(sch.getjGh());
  66 +
  67 + if(StringUtils.isNotEmpty(newNbbm))
  68 + cc.setSjch(newNbbm);
  69 + if(StringUtils.isNotEmpty(newJsy))
  70 + cc.setSjgh(newJsy);
  71 +
  72 + changetochangeRepository.save(cc);
  73 + }catch (Exception e){
  74 + log.error("纪录换人换车情况表", e);
  75 + }
  76 + }
  77 +
  78 + public void saveChangetochange(ScheduleRealInfo sch, String nbbm, String jsy){
  79 + ChangePersonCar cpc = new ChangePersonCar();
  80 + cpc.setClZbh(nbbm);
  81 + cpc.setJsy(jsy);
  82 + saveChangetochange(sch, cpc);
  83 + }
  84 +}
src/main/java/com/bsth/data/schedule/edit_logs/SchEditLogger.java renamed to src/main/java/com/bsth/data/schedule/edit_logs/ScheduleModifyLogger.java
@@ -4,7 +4,7 @@ package com.bsth.data.schedule.edit_logs; @@ -4,7 +4,7 @@ package com.bsth.data.schedule.edit_logs;
4 * 班次修正记录 4 * 班次修正记录
5 * Created by panzhao on 2017/5/16. 5 * Created by panzhao on 2017/5/16.
6 */ 6 */
7 -public class SchEditLogger { 7 +public class ScheduleModifyLogger {
8 8
9 /** 9 /**
10 * 待发调整 10 * 待发调整
@@ -12,4 +12,4 @@ public class SchEditLogger { @@ -12,4 +12,4 @@ public class SchEditLogger {
12 public static void dftz(Long id, String remarks, String dfsj, String bcType, String opType){ 12 public static void dftz(Long id, String remarks, String dfsj, String bcType, String opType){
13 13
14 } 14 }
15 -} 15 -}
  16 +}
16 \ No newline at end of file 17 \ No newline at end of file
src/main/java/com/bsth/repository/oil/YlbRepository.java
@@ -86,7 +86,7 @@ public interface YlbRepository extends BaseRepository&lt;Ylb, Integer&gt;{ @@ -86,7 +86,7 @@ public interface YlbRepository extends BaseRepository&lt;Ylb, Integer&gt;{
86 + " ssgsdm like %?2% " 86 + " ssgsdm like %?2% "
87 + " and fgsdm like %?3%" 87 + " and fgsdm like %?3%"
88 + " and xlbm like %?4% and nbbm like %?5% " 88 + " and xlbm like %?4% and nbbm like %?5% "
89 - + " group by nbbm,rq,ssgsdm,fgsdm,xlbm",nativeQuery=true) 89 + + " group by nbbm,rq,ssgsdm,fgsdm",nativeQuery=true)
90 List<Object[]> checkNbmmNum(String rq, String gsbm,String fgsbm,String xlbm,String nbbm); 90 List<Object[]> checkNbmmNum(String rq, String gsbm,String fgsbm,String xlbm,String nbbm);
91 91
92 92
src/main/java/com/bsth/service/oil/impl/CwjyServiceImpl.java
@@ -291,7 +291,8 @@ public class CwjyServiceImpl extends BaseServiceImpl&lt;Cwjy,Integer&gt; implements Cw @@ -291,7 +291,8 @@ public class CwjyServiceImpl extends BaseServiceImpl&lt;Cwjy,Integer&gt; implements Cw
291 + "from bsth_c_ylb where to_days(rq)= to_days('"+rq+"' ) " 291 + "from bsth_c_ylb where to_days(rq)= to_days('"+rq+"' ) "
292 + " and ssgsdm='"+gsdm+"' and fgsdm ='"+fgsdm+"' group by nbbm "+ 292 + " and ssgsdm='"+gsdm+"' and fgsdm ='"+fgsdm+"' group by nbbm "+
293 " ) c on a.nbbm=c.nbbm " 293 " ) c on a.nbbm=c.nbbm "
294 - + "where a.nbbm like '%"+nbbm+"%' and a.gsdm='"+gsdm+"' and a.fgsdm ='"+fgsdm+"'"; 294 + + "where a.nbbm like '%"+nbbm+"%' and a.gsdm='"+gsdm+"' and a.fgsdm ='"+fgsdm+"'"
  295 + + " order by a.nbbm";
295 296
296 List<Ylxxb> yList= jdbcTemplate.query(sql, 297 List<Ylxxb> yList= jdbcTemplate.query(sql,
297 new RowMapper<Ylxxb>(){ 298 new RowMapper<Ylxxb>(){
src/main/java/com/bsth/service/oil/impl/YlbServiceImpl.java
@@ -1000,6 +1000,8 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS @@ -1000,6 +1000,8 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
1000 return sumMap; 1000 return sumMap;
1001 } 1001 }
1002 1002
  1003 +
  1004 +
1003 @Override 1005 @Override
1004 public List<Ylb> listYlb(Map<String, Object> map) { 1006 public List<Ylb> listYlb(Map<String, Object> map) {
1005 // TODO Auto-generated method stub 1007 // TODO Auto-generated method stub
@@ -1013,7 +1015,19 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS @@ -1013,7 +1015,19 @@ public class YlbServiceImpl extends BaseServiceImpl&lt;Ylb,Integer&gt; implements YlbS
1013 String sxtj=map.get("sxtj").toString(); 1015 String sxtj=map.get("sxtj").toString();
1014 if(nbbm.trim()!=""){ 1016 if(nbbm.trim()!=""){
1015 stringList.add(nbbm); 1017 stringList.add(nbbm);
1016 - listYlb=repository.listYlb(rq, gsbm, fgsbm, xlbm, stringList); 1018 + List<Object[]> objectLists=repository.checkNbmmNum(rq, gsbm, fgsbm, xlbm,nbbm);
  1019 + int cs=Integer.parseInt(objectLists.get(0)[1].toString());
  1020 + if(sxtj.equals("1")){
  1021 + if(cs==1){
  1022 + listYlb=repository.listYlb(rq, gsbm, fgsbm, xlbm, stringList);
  1023 + }
  1024 + }
  1025 +
  1026 + if(sxtj.equals("2")){
  1027 + if(cs>1){
  1028 + listYlb=repository.listYlb(rq, gsbm, fgsbm, xlbm, stringList);
  1029 + }
  1030 + }
1017 }else{ 1031 }else{
1018 //全部 1032 //全部
1019 if(sxtj.equals("0")){ 1033 if(sxtj.equals("0")){
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
@@ -13,7 +13,7 @@ import com.bsth.data.LineConfigData; @@ -13,7 +13,7 @@ import com.bsth.data.LineConfigData;
13 import com.bsth.data.msg_queue.DirectivePushQueue; 13 import com.bsth.data.msg_queue.DirectivePushQueue;
14 import com.bsth.data.schedule.DayOfSchedule; 14 import com.bsth.data.schedule.DayOfSchedule;
15 import com.bsth.data.schedule.SchAttrCalculator; 15 import com.bsth.data.schedule.SchAttrCalculator;
16 -import com.bsth.data.schedule.SchModifyLog; 16 +import com.bsth.data.schedule.edit_logs.FormLogger;
17 import com.bsth.data.schedule.ScheduleComparator; 17 import com.bsth.data.schedule.ScheduleComparator;
18 import com.bsth.data.schedule.late_adjust.LateAdjustHandle; 18 import com.bsth.data.schedule.late_adjust.LateAdjustHandle;
19 import com.bsth.entity.Cars; 19 import com.bsth.entity.Cars;
@@ -135,7 +135,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -135,7 +135,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
135 CulateMileageService culateService; 135 CulateMileageService culateService;
136 136
137 @Autowired 137 @Autowired
138 - SchModifyLog schModifyLog; 138 + FormLogger schModifyLog;
139 139
140 @Autowired 140 @Autowired
141 DirectiveService directiveService; 141 DirectiveService directiveService;
@@ -819,8 +819,13 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -819,8 +819,13 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
819 List<ScheduleRealInfo> lists=new ArrayList<ScheduleRealInfo>(); 819 List<ScheduleRealInfo> lists=new ArrayList<ScheduleRealInfo>();
820 for (int i = 0; i < scheduleRealInfos.size(); i++) { 820 for (int i = 0; i < scheduleRealInfos.size(); i++) {
821 ScheduleRealInfo s=scheduleRealInfos.get(i); 821 ScheduleRealInfo s=scheduleRealInfos.get(i);
822 - if(s.getZdsjActual()!=null){  
823 - lists.add(s); 822 + Set<ChildTaskPlan> cts = s.getcTasks();
  823 + if(cts != null && cts.size() > 0){
  824 + lists.add(s);
  825 + }else{
  826 + if(s.getZdsjActual()!=null){
  827 + lists.add(s);
  828 + }
824 } 829 }
825 } 830 }
826 DecimalFormat format = new DecimalFormat("0.00"); 831 DecimalFormat format = new DecimalFormat("0.00");
@@ -1076,6 +1081,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1076,6 +1081,9 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1076 sch.setStatus(0); 1081 sch.setStatus(0);
1077 sch.setRemarks("");//清空备注 1082 sch.setRemarks("");//清空备注
1078 sch.setJhlc(sch.getJhlcOrig()); 1083 sch.setJhlc(sch.getJhlcOrig());
  1084 +
  1085 + //入库
  1086 + dayOfSchedule.save(sch);
1079 rs.put("status", ResponseCode.SUCCESS); 1087 rs.put("status", ResponseCode.SUCCESS);
1080 rs.put("t", sch); 1088 rs.put("t", sch);
1081 1089
@@ -1667,8 +1675,13 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1667,8 +1675,13 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1667 List<ScheduleRealInfo> lists=new ArrayList<ScheduleRealInfo>(); 1675 List<ScheduleRealInfo> lists=new ArrayList<ScheduleRealInfo>();
1668 for (int i = 0; i < list.size(); i++) { 1676 for (int i = 0; i < list.size(); i++) {
1669 ScheduleRealInfo s=list.get(i); 1677 ScheduleRealInfo s=list.get(i);
1670 - if(s.getZdsjActual()!=null){  
1671 - lists.add(s); 1678 + Set<ChildTaskPlan> cts = s.getcTasks();
  1679 + if(cts != null && cts.size() > 0){
  1680 + lists.add(s);
  1681 + }else{
  1682 + if(s.getZdsjActual()!=null){
  1683 + lists.add(s);
  1684 + }
1672 } 1685 }
1673 } 1686 }
1674 double ksgl=culateService.culateKsgl(list); 1687 double ksgl=culateService.culateKsgl(list);
@@ -1953,8 +1966,13 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1953,8 +1966,13 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1953 List<ScheduleRealInfo> lists =new ArrayList<ScheduleRealInfo>(); 1966 List<ScheduleRealInfo> lists =new ArrayList<ScheduleRealInfo>();
1954 for (int i = 0; i < list_s.size(); i++) { 1967 for (int i = 0; i < list_s.size(); i++) {
1955 ScheduleRealInfo s=list_s.get(i); 1968 ScheduleRealInfo s=list_s.get(i);
1956 - if(s.getZdsjActual()!=null){  
1957 - lists.add(s); 1969 + Set<ChildTaskPlan> cts = s.getcTasks();
  1970 + if(cts != null && cts.size() > 0){
  1971 + lists.add(s);
  1972 + }else{
  1973 + if(s.getZdsjActual()!=null){
  1974 + lists.add(s);
  1975 + }
1958 } 1976 }
1959 } 1977 }
1960 Map<String, Object> map = new HashMap<String, Object>(); 1978 Map<String, Object> map = new HashMap<String, Object>();
@@ -2556,8 +2574,13 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2556,8 +2574,13 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2556 List<ScheduleRealInfo> lists=new ArrayList<ScheduleRealInfo>(); 2574 List<ScheduleRealInfo> lists=new ArrayList<ScheduleRealInfo>();
2557 for(int i=0;i<list.size();i++){ 2575 for(int i=0;i<list.size();i++){
2558 ScheduleRealInfo s=list.get(i); 2576 ScheduleRealInfo s=list.get(i);
2559 - if(s.getZdsjActual()!=null){  
2560 - lists.add(s); 2577 + Set<ChildTaskPlan> cts = s.getcTasks();
  2578 + if(cts != null && cts.size() > 0){
  2579 + lists.add(s);
  2580 + }else{
  2581 + if(s.getZdsjActual()!=null){
  2582 + lists.add(s);
  2583 + }
2561 } 2584 }
2562 } 2585 }
2563 Map<String, Object> map = new HashMap<String, Object>(); 2586 Map<String, Object> map = new HashMap<String, Object>();
@@ -2631,8 +2654,13 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -2631,8 +2654,13 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
2631 } 2654 }
2632 for (int i = 0; i < list.size(); i++) { 2655 for (int i = 0; i < list.size(); i++) {
2633 ScheduleRealInfo s=list.get(i); 2656 ScheduleRealInfo s=list.get(i);
2634 - if(s.getZdsjActual()!=null){  
2635 - list_s.add(s); 2657 + Set<ChildTaskPlan> cts = s.getcTasks();
  2658 + if(cts != null && cts.size() > 0){
  2659 + list_s.add(s);
  2660 + }else{
  2661 + if(s.getZdsjActual()!=null){
  2662 + list_s.add(s);
  2663 + }
2636 } 2664 }
2637 } 2665 }
2638 List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>(); 2666 List<Map<String, Object>> lMap = new ArrayList<Map<String, Object>>();
@@ -4235,8 +4263,13 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -4235,8 +4263,13 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
4235 List<ScheduleRealInfo> lists=new ArrayList<ScheduleRealInfo>(); 4263 List<ScheduleRealInfo> lists=new ArrayList<ScheduleRealInfo>();
4236 for (int i = 0; i < scheduleRealInfos.size(); i++) { 4264 for (int i = 0; i < scheduleRealInfos.size(); i++) {
4237 ScheduleRealInfo s=scheduleRealInfos.get(i); 4265 ScheduleRealInfo s=scheduleRealInfos.get(i);
4238 - if(s.getZdsjActual()!=null){  
4239 - lists.add(s); 4266 + Set<ChildTaskPlan> cts = s.getcTasks();
  4267 + if(cts != null && cts.size() > 0){
  4268 + lists.add(s);
  4269 + }else{
  4270 + if(s.getZdsjActual()!=null){
  4271 + lists.add(s);
  4272 + }
4240 } 4273 }
4241 } 4274 }
4242 DecimalFormat format = new DecimalFormat("0.00"); 4275 DecimalFormat format = new DecimalFormat("0.00");
src/main/java/com/bsth/service/report/impl/CulateMileageServiceImpl.java
@@ -568,8 +568,16 @@ public class CulateMileageServiceImpl implements CulateMileageService{ @@ -568,8 +568,16 @@ public class CulateMileageServiceImpl implements CulateMileageService{
568 //有子任务 568 //有子任务
569 if (cts != null && cts.size() > 0) { 569 if (cts != null && cts.size() > 0) {
570 for(ChildTaskPlan c : cts){ 570 for(ChildTaskPlan c : cts){
571 - if(c.isDestroy() && (c.getDestroyReason()==null?"": c.getDestroyReason()).equals(item))  
572 - sum = Arith.add(sum, c.getMileage()); 571 + if(item.equals("其他")){
  572 + if(c.isDestroy() &&
  573 + ((c.getDestroyReason()==null?"": c.getDestroyReason()).equals(item)||
  574 + (c.getDestroyReason()==null?"": c.getDestroyReason()).equals("")))
  575 + sum = Arith.add(sum, c.getMileage());
  576 + }else{
  577 + if(c.isDestroy() && (c.getDestroyReason()==null?"": c.getDestroyReason()).equals(item))
  578 + sum = Arith.add(sum, c.getMileage());
  579 + }
  580 +
573 } 581 }
574 } 582 }
575 else if(isInOut(sch)) 583 else if(isInOut(sch))
src/main/java/com/bsth/service/report/impl/ReportServiceImpl.java
@@ -981,7 +981,8 @@ public class ReportServiceImpl implements ReportService{ @@ -981,7 +981,8 @@ public class ReportServiceImpl implements ReportService{
981 for (int i = 0; i < sList.size(); i++) { 981 for (int i = 0; i < sList.size(); i++) {
982 ScheduleRealInfo scheduleRealInfo = sList.get(i); 982 ScheduleRealInfo scheduleRealInfo = sList.get(i);
983 if (!(scheduleRealInfo.getBcType().equals("in") 983 if (!(scheduleRealInfo.getBcType().equals("in")
984 - || scheduleRealInfo.getBcType().equals("out"))) { 984 + || scheduleRealInfo.getBcType().equals("out")
  985 + ||scheduleRealInfo.getBcType().equals("ldks"))) {
985 Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks(); 986 Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
986 if (childTaskPlans.isEmpty()) { 987 if (childTaskPlans.isEmpty()) {
987 Map<String, Object> newMap = new HashMap<String, Object>(); 988 Map<String, Object> newMap = new HashMap<String, Object>();
@@ -1009,32 +1010,62 @@ public class ReportServiceImpl implements ReportService{ @@ -1009,32 +1010,62 @@ public class ReportServiceImpl implements ReportService{
1009 1010
1010 } else { 1011 } else {
1011 Iterator<ChildTaskPlan> it = childTaskPlans.iterator(); 1012 Iterator<ChildTaskPlan> it = childTaskPlans.iterator();
1012 - while (it.hasNext()) {  
1013 - ChildTaskPlan childTaskPlan = it.next();  
1014 - if (childTaskPlan.isDestroy()) {  
1015 - String destroyReason = "";  
1016 - if ( childTaskPlan.getDestroyReason() == null) {  
1017 - destroyReason = "其他";  
1018 - }else if(childTaskPlan.getDestroyReason().equals("")){  
1019 - destroyReason = "其他";  
1020 - } else {  
1021 - destroyReason = childTaskPlan.getDestroyReason(); 1013 + if (scheduleRealInfo.getStatus() == -1) {
  1014 + while (it.hasNext()) {
  1015 + ChildTaskPlan childTaskPlan = it.next();
  1016 + if (childTaskPlan.isDestroy()) {
  1017 + String destroyReason = "";
  1018 + if ( childTaskPlan.getDestroyReason() == null) {
  1019 + destroyReason = "其他";
  1020 + }else if(childTaskPlan.getDestroyReason().equals("")){
  1021 + destroyReason = "其他";
  1022 + } else {
  1023 + destroyReason = childTaskPlan.getDestroyReason();
  1024 + }
  1025 + Map<String, Object> newMap = new HashMap<String, Object>();
  1026 + newMap.put("nr", destroyReason);
  1027 + newMap.put("lp", scheduleRealInfo.getLpName());
  1028 + newMap.put("nbbm", scheduleRealInfo.getClZbh());
  1029 + newMap.put("jgh", scheduleRealInfo.getjGh());
  1030 + newMap.put("dz", childTaskPlan.getStartStationName());
  1031 + newMap.put("sj", childTaskPlan.getStartDate());
  1032 + newMap.put("gzf", " ");
  1033 + newMap.put("lbbc", 1);
  1034 + newMap.put("lblc", childTaskPlan.getMileage());
  1035 + newMap.put("jyqp", childTaskPlan.getRemarks());
  1036 + list.add(newMap);
  1037 +
1022 } 1038 }
1023 - Map<String, Object> newMap = new HashMap<String, Object>();  
1024 - newMap.put("nr", destroyReason);  
1025 - newMap.put("lp", scheduleRealInfo.getLpName());  
1026 - newMap.put("nbbm", scheduleRealInfo.getClZbh());  
1027 - newMap.put("jgh", scheduleRealInfo.getjGh());  
1028 - newMap.put("dz", childTaskPlan.getStartStationName());  
1029 - newMap.put("sj", childTaskPlan.getStartDate());  
1030 - newMap.put("gzf", " ");  
1031 - newMap.put("lbbc", 0);  
1032 - newMap.put("lblc", childTaskPlan.getMileage());  
1033 - newMap.put("jyqp", childTaskPlan.getRemarks());  
1034 - list.add(newMap); 1039 + }
  1040 + }else{
  1041 + while (it.hasNext()) {
  1042 + ChildTaskPlan childTaskPlan = it.next();
  1043 + if (childTaskPlan.isDestroy()) {
  1044 + String destroyReason = "";
  1045 + if ( childTaskPlan.getDestroyReason() == null) {
  1046 + destroyReason = "其他";
  1047 + }else if(childTaskPlan.getDestroyReason().equals("")){
  1048 + destroyReason = "其他";
  1049 + } else {
  1050 + destroyReason = childTaskPlan.getDestroyReason();
  1051 + }
  1052 + Map<String, Object> newMap = new HashMap<String, Object>();
  1053 + newMap.put("nr", destroyReason);
  1054 + newMap.put("lp", scheduleRealInfo.getLpName());
  1055 + newMap.put("nbbm", scheduleRealInfo.getClZbh());
  1056 + newMap.put("jgh", scheduleRealInfo.getjGh());
  1057 + newMap.put("dz", childTaskPlan.getStartStationName());
  1058 + newMap.put("sj", childTaskPlan.getStartDate());
  1059 + newMap.put("gzf", " ");
  1060 + newMap.put("lbbc", 0);
  1061 + newMap.put("lblc", childTaskPlan.getMileage());
  1062 + newMap.put("jyqp", childTaskPlan.getRemarks());
  1063 + list.add(newMap);
1035 1064
  1065 + }
1036 } 1066 }
1037 } 1067 }
  1068 +
1038 } 1069 }
1039 } 1070 }
1040 } 1071 }
@@ -1086,7 +1117,8 @@ public class ReportServiceImpl implements ReportService{ @@ -1086,7 +1117,8 @@ public class ReportServiceImpl implements ReportService{
1086 for (int i = 0; i < sList.size(); i++) { 1117 for (int i = 0; i < sList.size(); i++) {
1087 ScheduleRealInfo scheduleRealInfo=sList.get(i); 1118 ScheduleRealInfo scheduleRealInfo=sList.get(i);
1088 if (!(scheduleRealInfo.getBcType().equals("in") 1119 if (!(scheduleRealInfo.getBcType().equals("in")
1089 - || scheduleRealInfo.getBcType().equals("out"))) { 1120 + || scheduleRealInfo.getBcType().equals("out")
  1121 + || scheduleRealInfo.getBcType().equals("ldks"))) {
1090 // Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks(); 1122 // Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks();
1091 // if(childTaskPlans.isEmpty()){ 1123 // if(childTaskPlans.isEmpty()){
1092 if(scheduleRealInfo.isSflj()){ 1124 if(scheduleRealInfo.isSflj()){
src/main/java/com/bsth/service/schedule/datatools/CarConfigInfoDataToolsImpl.java
1 -package com.bsth.service.schedule.datatools;  
2 -  
3 -import com.bsth.service.schedule.exception.ScheduleException;  
4 -import com.bsth.service.schedule.utils.DataToolsProperties;  
5 -import com.bsth.service.schedule.utils.DataToolsService;  
6 -import jxl.Cell;  
7 -import jxl.Sheet;  
8 -import jxl.Workbook;  
9 -import jxl.write.Label;  
10 -import jxl.write.WritableSheet;  
11 -import jxl.write.WritableWorkbook;  
12 -import org.slf4j.Logger;  
13 -import org.slf4j.LoggerFactory;  
14 -import org.springframework.beans.factory.annotation.Autowired;  
15 -import org.springframework.beans.factory.annotation.Qualifier;  
16 -import org.springframework.boot.context.properties.EnableConfigurationProperties;  
17 -import org.springframework.stereotype.Service;  
18 -  
19 -import java.io.File;  
20 -import java.io.PrintWriter;  
21 -import java.io.StringWriter;  
22 -import java.util.HashMap;  
23 -import java.util.Map;  
24 -  
25 -/**  
26 - * Created by xu on 17/5/16.  
27 - */  
28 -@EnableConfigurationProperties(DataToolsProperties.class)  
29 -@Service(value = "carConfig_dataTool")  
30 -public class CarConfigInfoDataToolsImpl implements DataToolsService {  
31 - /** 日志记录器 */  
32 - private final static Logger LOGGER = LoggerFactory.getLogger(CarConfigInfoDataToolsImpl.class);  
33 -  
34 - @Autowired  
35 - @Qualifier(value = "dataToolsServiceImpl")  
36 - private DataToolsService dataToolsService;  
37 -  
38 - @Autowired  
39 - private DataToolsProperties dataToolsProperties;  
40 -  
41 - @Override  
42 - public File uploadFile(String filename, byte[] filedata) throws ScheduleException {  
43 - try {  
44 - // 对上传的excel文件做处理,将第一个sheet名字设定为工作表1  
45 - File file = dataToolsService.uploadFile(filename, filedata);  
46 - Workbook workbook = Workbook.getWorkbook(file);  
47 - Sheet sheet = workbook.getSheet(0);  
48 -  
49 - File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls");  
50 - WritableWorkbook writableWorkbook = Workbook.createWorkbook(fileCal);  
51 - WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0);  
52 - for (int i = 0; i < sheet.getRows(); i++) {  
53 - Cell[] cells = sheet.getRow(i);  
54 - for (int j = 0; j < cells.length; j++) {  
55 - writableSheet.addCell(new Label(j, i, cells[j].getContents()));  
56 - }  
57 - }  
58 - writableWorkbook.write();  
59 - writableWorkbook.close();  
60 -  
61 - return fileCal;  
62 -  
63 - } catch (Exception exp) {  
64 - throw new ScheduleException(exp);  
65 - }  
66 - }  
67 -  
68 - @Override  
69 - public void importData(File file, Map<String, Object> params) throws ScheduleException {  
70 - try {  
71 - LOGGER.info("//---------------- 导入车辆配置信息 start... ----------------//");  
72 - // 创建ktr转换所需参数  
73 - Map<String, Object> ktrParms = new HashMap<>();  
74 - File ktrFile = new File(this.getClass().getResource(  
75 - dataToolsProperties.getCarsconfigDatainputktr()).toURI());  
76 -  
77 - // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径  
78 - ktrParms.put("transpath", ktrFile.getAbsolutePath());  
79 - ktrParms.put("filepath", file.getAbsolutePath());  
80 - ktrParms.put("erroroutputdir", dataToolsProperties.getTransErrordir());  
81 -  
82 - ktrParms.putAll(params);  
83 -  
84 - dataToolsService.importData(file, ktrParms);  
85 -  
86 - LOGGER.info("//---------------- 导入车辆配置信息 success... ----------------//");  
87 - } catch (Exception exp) {  
88 - LOGGER.info("//---------------- 导入车辆配置信息 failed... ----------------//");  
89 -  
90 - StringWriter sw = new StringWriter();  
91 - exp.printStackTrace(new PrintWriter(sw));  
92 - LOGGER.info(sw.toString());  
93 -  
94 - throw new ScheduleException(exp.getMessage());  
95 - }  
96 - }  
97 -  
98 - @Override  
99 - public File exportData(Map<String, Object> params) throws ScheduleException {  
100 - try {  
101 - LOGGER.info("//---------------- 导出车辆配置信息 start... ----------------//");  
102 - // 创建ktr转换所需参数  
103 - Map<String, Object> ktrParms = new HashMap<>();  
104 - File ktrFile = new File(this.getClass().getResource(  
105 - dataToolsProperties.getCarsconfigDataoutputktr()).toURI());  
106 -  
107 - // 通用参数,转换文件路径,excel输出文件名  
108 - ktrParms.put("transpath", ktrFile.getAbsolutePath());  
109 - ktrParms.put("filename", "车辆配置信息_download-");  
110 -  
111 - ktrParms.putAll(params);  
112 -  
113 - File file = dataToolsService.exportData(ktrParms);  
114 -  
115 - LOGGER.info("//---------------- 导出车辆配置信息 success... ----------------//");  
116 -  
117 - return file;  
118 -  
119 - } catch (Exception exp) {  
120 - LOGGER.info("//---------------- 导出车辆配置信息 failed... ----------------//");  
121 -  
122 - StringWriter sw = new StringWriter();  
123 - exp.printStackTrace(new PrintWriter(sw));  
124 - LOGGER.info(sw.toString());  
125 -  
126 - throw new ScheduleException(exp.getMessage());  
127 - }  
128 - }  
129 -} 1 +package com.bsth.service.schedule.datatools;
  2 +
  3 +import com.bsth.service.schedule.exception.ScheduleException;
  4 +import com.bsth.service.schedule.utils.DataToolsProperties;
  5 +import com.bsth.service.schedule.utils.DataToolsService;
  6 +import jxl.Cell;
  7 +import jxl.Sheet;
  8 +import jxl.Workbook;
  9 +import jxl.write.Label;
  10 +import jxl.write.WritableSheet;
  11 +import jxl.write.WritableWorkbook;
  12 +import org.slf4j.Logger;
  13 +import org.slf4j.LoggerFactory;
  14 +import org.springframework.beans.factory.annotation.Autowired;
  15 +import org.springframework.beans.factory.annotation.Qualifier;
  16 +import org.springframework.boot.context.properties.EnableConfigurationProperties;
  17 +import org.springframework.stereotype.Service;
  18 +
  19 +import java.io.File;
  20 +import java.io.PrintWriter;
  21 +import java.io.StringWriter;
  22 +import java.util.HashMap;
  23 +import java.util.Map;
  24 +
  25 +/**
  26 + * Created by xu on 17/5/16.
  27 + */
  28 +@EnableConfigurationProperties(DataToolsProperties.class)
  29 +@Service(value = "carConfig_dataTool")
  30 +public class CarConfigInfoDataToolsImpl implements DataToolsService {
  31 + /** 日志记录器 */
  32 + private final static Logger LOGGER = LoggerFactory.getLogger(CarConfigInfoDataToolsImpl.class);
  33 +
  34 + @Autowired
  35 + @Qualifier(value = "dataToolsServiceImpl")
  36 + private DataToolsService dataToolsService;
  37 +
  38 + @Autowired
  39 + private DataToolsProperties dataToolsProperties;
  40 +
  41 + @Override
  42 + public File uploadFile(String filename, byte[] filedata) throws ScheduleException {
  43 + try {
  44 + // 对上传的excel文件做处理,将第一个sheet名字设定为工作表1
  45 + File file = dataToolsService.uploadFile(filename, filedata);
  46 + Workbook workbook = Workbook.getWorkbook(file);
  47 + Sheet sheet = workbook.getSheet(0);
  48 +
  49 + File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls");
  50 + WritableWorkbook writableWorkbook = Workbook.createWorkbook(fileCal);
  51 + WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0);
  52 + for (int i = 0; i < sheet.getRows(); i++) {
  53 + Cell[] cells = sheet.getRow(i);
  54 + for (int j = 0; j < cells.length; j++) {
  55 + writableSheet.addCell(new Label(j, i, cells[j].getContents()));
  56 + }
  57 + }
  58 + writableWorkbook.write();
  59 + writableWorkbook.close();
  60 +
  61 + return fileCal;
  62 +
  63 + } catch (Exception exp) {
  64 + throw new ScheduleException(exp);
  65 + }
  66 + }
  67 +
  68 + @Override
  69 + public void importData(File file, Map<String, Object> params) throws ScheduleException {
  70 + try {
  71 + LOGGER.info("//---------------- 导入车辆配置信息 start... ----------------//");
  72 + // 创建ktr转换所需参数
  73 + Map<String, Object> ktrParms = new HashMap<>();
  74 + File ktrFile = new File(this.getClass().getResource(
  75 + dataToolsProperties.getCarsconfigDatainputktr()).toURI());
  76 +
  77 + // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径
  78 + ktrParms.put("transpath", ktrFile.getAbsolutePath());
  79 + ktrParms.put("filepath", file.getAbsolutePath());
  80 + ktrParms.put("erroroutputdir", dataToolsProperties.getTransErrordir());
  81 +
  82 + ktrParms.putAll(params);
  83 +
  84 + dataToolsService.importData(file, ktrParms);
  85 +
  86 + LOGGER.info("//---------------- 导入车辆配置信息 success... ----------------//");
  87 + } catch (Exception exp) {
  88 + LOGGER.info("//---------------- 导入车辆配置信息 failed... ----------------//");
  89 +
  90 + StringWriter sw = new StringWriter();
  91 + exp.printStackTrace(new PrintWriter(sw));
  92 + LOGGER.info(sw.toString());
  93 +
  94 + throw new ScheduleException(exp.getMessage());
  95 + }
  96 + }
  97 +
  98 + @Override
  99 + public File exportData(Map<String, Object> params) throws ScheduleException {
  100 + try {
  101 + LOGGER.info("//---------------- 导出车辆配置信息 start... ----------------//");
  102 + // 创建ktr转换所需参数
  103 + Map<String, Object> ktrParms = new HashMap<>();
  104 + File ktrFile = new File(this.getClass().getResource(
  105 + dataToolsProperties.getCarsconfigDataoutputktr()).toURI());
  106 +
  107 + // 通用参数,转换文件路径,excel输出文件名
  108 + ktrParms.put("transpath", ktrFile.getAbsolutePath());
  109 + ktrParms.put("filename", "车辆配置信息_download-");
  110 +
  111 + ktrParms.putAll(params);
  112 +
  113 + File file = dataToolsService.exportData(ktrParms);
  114 +
  115 + LOGGER.info("//---------------- 导出车辆配置信息 success... ----------------//");
  116 +
  117 + return file;
  118 +
  119 + } catch (Exception exp) {
  120 + LOGGER.info("//---------------- 导出车辆配置信息 failed... ----------------//");
  121 +
  122 + StringWriter sw = new StringWriter();
  123 + exp.printStackTrace(new PrintWriter(sw));
  124 + LOGGER.info(sw.toString());
  125 +
  126 + throw new ScheduleException(exp.getMessage());
  127 + }
  128 + }
  129 +}
src/main/java/com/bsth/service/schedule/datatools/CarsDataToolsImpl.java
1 -package com.bsth.service.schedule.datatools;  
2 -  
3 -import com.bsth.service.schedule.exception.ScheduleException;  
4 -import com.bsth.service.schedule.utils.DataToolsProperties;  
5 -import com.bsth.service.schedule.utils.DataToolsService;  
6 -import jxl.Cell;  
7 -import jxl.Sheet;  
8 -import jxl.Workbook;  
9 -import jxl.write.Label;  
10 -import jxl.write.WritableSheet;  
11 -import jxl.write.WritableWorkbook;  
12 -import org.slf4j.Logger;  
13 -import org.slf4j.LoggerFactory;  
14 -import org.springframework.beans.factory.annotation.Autowired;  
15 -import org.springframework.beans.factory.annotation.Qualifier;  
16 -import org.springframework.boot.context.properties.EnableConfigurationProperties;  
17 -import org.springframework.stereotype.Service;  
18 -  
19 -import java.io.File;  
20 -import java.io.PrintWriter;  
21 -import java.io.StringWriter;  
22 -import java.util.HashMap;  
23 -import java.util.Map;  
24 -  
25 -/**  
26 - * Created by xu on 17/5/16.  
27 - */  
28 -@EnableConfigurationProperties(DataToolsProperties.class)  
29 -@Service(value = "cars_dataTool")  
30 -public class CarsDataToolsImpl implements DataToolsService {  
31 - /** 日志记录器 */  
32 - private final static Logger LOGGER = LoggerFactory.getLogger(CarsDataToolsImpl.class);  
33 -  
34 - @Autowired  
35 - @Qualifier(value = "dataToolsServiceImpl")  
36 - private DataToolsService dataToolsService;  
37 -  
38 - @Autowired  
39 - private DataToolsProperties dataToolsProperties;  
40 -  
41 - @Override  
42 - public File uploadFile(String filename, byte[] filedata) throws ScheduleException {  
43 - try {  
44 - // 对上传的excel文件做处理,将第一个sheet名字设定为工作表1  
45 - File file = dataToolsService.uploadFile(filename, filedata);  
46 - Workbook workbook = Workbook.getWorkbook(file);  
47 - Sheet sheet = workbook.getSheet(0);  
48 -  
49 - File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls");  
50 - WritableWorkbook writableWorkbook = Workbook.createWorkbook(fileCal);  
51 - WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0);  
52 - for (int i = 0; i < sheet.getRows(); i++) {  
53 - Cell[] cells = sheet.getRow(i);  
54 - for (int j = 0; j < cells.length; j++) {  
55 - writableSheet.addCell(new Label(j, i, cells[j].getContents()));  
56 - }  
57 - }  
58 - writableWorkbook.write();  
59 - writableWorkbook.close();  
60 -  
61 - return fileCal;  
62 -  
63 - } catch (Exception exp) {  
64 - throw new ScheduleException(exp);  
65 - }  
66 - }  
67 -  
68 - @Override  
69 - public void importData(File file, Map<String, Object> params) throws ScheduleException {  
70 - try {  
71 - LOGGER.info("//---------------- 导入车辆基础信息 start... ----------------//");  
72 - // 创建ktr转换所需参数  
73 - Map<String, Object> ktrParms = new HashMap<>();  
74 - File ktrFile = new File(this.getClass().getResource(  
75 - dataToolsProperties.getCarsDatainputktr()).toURI());  
76 -  
77 - // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径  
78 - ktrParms.put("transpath", ktrFile.getAbsolutePath());  
79 - ktrParms.put("filepath", file.getAbsolutePath());  
80 - ktrParms.put("erroroutputdir", dataToolsProperties.getTransErrordir());  
81 -  
82 - dataToolsService.importData(file, ktrParms);  
83 -  
84 - LOGGER.info("//---------------- 导入车辆基础信息 success... ----------------//");  
85 - } catch (Exception exp) {  
86 - LOGGER.info("//---------------- 导入车辆基础信息 failed... ----------------//");  
87 -  
88 - StringWriter sw = new StringWriter();  
89 - exp.printStackTrace(new PrintWriter(sw));  
90 - LOGGER.info(sw.toString());  
91 -  
92 - throw new ScheduleException(exp.getMessage());  
93 - }  
94 - }  
95 -  
96 - @Override  
97 - public File exportData(Map<String, Object> params) throws ScheduleException {  
98 - try {  
99 - LOGGER.info("//---------------- 导出车辆基础信息 start... ----------------//");  
100 - // 创建ktr转换所需参数  
101 - Map<String, Object> ktrParms = new HashMap<>();  
102 - File ktrFile = new File(this.getClass().getResource(  
103 - dataToolsProperties.getCarsDataoutputktr()).toURI());  
104 -  
105 - // 通用参数,转换文件路径,excel输出文件名  
106 - ktrParms.put("transpath", ktrFile.getAbsolutePath());  
107 - ktrParms.put("filename", "车辆基础信息_download-");  
108 -  
109 - File file = dataToolsService.exportData(ktrParms);  
110 -  
111 - LOGGER.info("//---------------- 导出车辆基础信息 success... ----------------//");  
112 -  
113 - return file;  
114 -  
115 - } catch (Exception exp) {  
116 - LOGGER.info("//---------------- 导出车辆基础信息 failed... ----------------//");  
117 -  
118 - StringWriter sw = new StringWriter();  
119 - exp.printStackTrace(new PrintWriter(sw));  
120 - LOGGER.info(sw.toString());  
121 -  
122 - throw new ScheduleException(exp.getMessage());  
123 - }  
124 - }  
125 -} 1 +package com.bsth.service.schedule.datatools;
  2 +
  3 +import com.bsth.service.schedule.exception.ScheduleException;
  4 +import com.bsth.service.schedule.utils.DataToolsProperties;
  5 +import com.bsth.service.schedule.utils.DataToolsService;
  6 +import jxl.Cell;
  7 +import jxl.Sheet;
  8 +import jxl.Workbook;
  9 +import jxl.write.Label;
  10 +import jxl.write.WritableSheet;
  11 +import jxl.write.WritableWorkbook;
  12 +import org.slf4j.Logger;
  13 +import org.slf4j.LoggerFactory;
  14 +import org.springframework.beans.factory.annotation.Autowired;
  15 +import org.springframework.beans.factory.annotation.Qualifier;
  16 +import org.springframework.boot.context.properties.EnableConfigurationProperties;
  17 +import org.springframework.stereotype.Service;
  18 +
  19 +import java.io.File;
  20 +import java.io.PrintWriter;
  21 +import java.io.StringWriter;
  22 +import java.util.HashMap;
  23 +import java.util.Map;
  24 +
  25 +/**
  26 + * Created by xu on 17/5/16.
  27 + */
  28 +@EnableConfigurationProperties(DataToolsProperties.class)
  29 +@Service(value = "cars_dataTool")
  30 +public class CarsDataToolsImpl implements DataToolsService {
  31 + /** 日志记录器 */
  32 + private final static Logger LOGGER = LoggerFactory.getLogger(CarsDataToolsImpl.class);
  33 +
  34 + @Autowired
  35 + @Qualifier(value = "dataToolsServiceImpl")
  36 + private DataToolsService dataToolsService;
  37 +
  38 + @Autowired
  39 + private DataToolsProperties dataToolsProperties;
  40 +
  41 + @Override
  42 + public File uploadFile(String filename, byte[] filedata) throws ScheduleException {
  43 + try {
  44 + // 对上传的excel文件做处理,将第一个sheet名字设定为工作表1
  45 + File file = dataToolsService.uploadFile(filename, filedata);
  46 + Workbook workbook = Workbook.getWorkbook(file);
  47 + Sheet sheet = workbook.getSheet(0);
  48 +
  49 + File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls");
  50 + WritableWorkbook writableWorkbook = Workbook.createWorkbook(fileCal);
  51 + WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0);
  52 + for (int i = 0; i < sheet.getRows(); i++) {
  53 + Cell[] cells = sheet.getRow(i);
  54 + for (int j = 0; j < cells.length; j++) {
  55 + writableSheet.addCell(new Label(j, i, cells[j].getContents()));
  56 + }
  57 + }
  58 + writableWorkbook.write();
  59 + writableWorkbook.close();
  60 +
  61 + return fileCal;
  62 +
  63 + } catch (Exception exp) {
  64 + throw new ScheduleException(exp);
  65 + }
  66 + }
  67 +
  68 + @Override
  69 + public void importData(File file, Map<String, Object> params) throws ScheduleException {
  70 + try {
  71 + LOGGER.info("//---------------- 导入车辆基础信息 start... ----------------//");
  72 + // 创建ktr转换所需参数
  73 + Map<String, Object> ktrParms = new HashMap<>();
  74 + File ktrFile = new File(this.getClass().getResource(
  75 + dataToolsProperties.getCarsDatainputktr()).toURI());
  76 +
  77 + // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径
  78 + ktrParms.put("transpath", ktrFile.getAbsolutePath());
  79 + ktrParms.put("filepath", file.getAbsolutePath());
  80 + ktrParms.put("erroroutputdir", dataToolsProperties.getTransErrordir());
  81 +
  82 + dataToolsService.importData(file, ktrParms);
  83 +
  84 + LOGGER.info("//---------------- 导入车辆基础信息 success... ----------------//");
  85 + } catch (Exception exp) {
  86 + LOGGER.info("//---------------- 导入车辆基础信息 failed... ----------------//");
  87 +
  88 + StringWriter sw = new StringWriter();
  89 + exp.printStackTrace(new PrintWriter(sw));
  90 + LOGGER.info(sw.toString());
  91 +
  92 + throw new ScheduleException(exp.getMessage());
  93 + }
  94 + }
  95 +
  96 + @Override
  97 + public File exportData(Map<String, Object> params) throws ScheduleException {
  98 + try {
  99 + LOGGER.info("//---------------- 导出车辆基础信息 start... ----------------//");
  100 + // 创建ktr转换所需参数
  101 + Map<String, Object> ktrParms = new HashMap<>();
  102 + File ktrFile = new File(this.getClass().getResource(
  103 + dataToolsProperties.getCarsDataoutputktr()).toURI());
  104 +
  105 + // 通用参数,转换文件路径,excel输出文件名
  106 + ktrParms.put("transpath", ktrFile.getAbsolutePath());
  107 + ktrParms.put("filename", "车辆基础信息_download-");
  108 +
  109 + File file = dataToolsService.exportData(ktrParms);
  110 +
  111 + LOGGER.info("//---------------- 导出车辆基础信息 success... ----------------//");
  112 +
  113 + return file;
  114 +
  115 + } catch (Exception exp) {
  116 + LOGGER.info("//---------------- 导出车辆基础信息 failed... ----------------//");
  117 +
  118 + StringWriter sw = new StringWriter();
  119 + exp.printStackTrace(new PrintWriter(sw));
  120 + LOGGER.info(sw.toString());
  121 +
  122 + throw new ScheduleException(exp.getMessage());
  123 + }
  124 + }
  125 +}
src/main/java/com/bsth/service/schedule/datatools/EmployeeConfigInfoDataToolsImpl.java
1 -package com.bsth.service.schedule.datatools;  
2 -  
3 -import com.bsth.service.schedule.exception.ScheduleException;  
4 -import com.bsth.service.schedule.utils.DataToolsProperties;  
5 -import com.bsth.service.schedule.utils.DataToolsService;  
6 -import jxl.Cell;  
7 -import jxl.Sheet;  
8 -import jxl.Workbook;  
9 -import jxl.write.Label;  
10 -import jxl.write.WritableSheet;  
11 -import jxl.write.WritableWorkbook;  
12 -import org.slf4j.Logger;  
13 -import org.slf4j.LoggerFactory;  
14 -import org.springframework.beans.factory.annotation.Autowired;  
15 -import org.springframework.beans.factory.annotation.Qualifier;  
16 -import org.springframework.boot.context.properties.EnableConfigurationProperties;  
17 -import org.springframework.stereotype.Service;  
18 -  
19 -import java.io.File;  
20 -import java.io.PrintWriter;  
21 -import java.io.StringWriter;  
22 -import java.util.HashMap;  
23 -import java.util.Map;  
24 -  
25 -/**  
26 - * Created by xu on 17/5/16.  
27 - */  
28 -@EnableConfigurationProperties(DataToolsProperties.class)  
29 -@Service(value = "employeeConfig_dataTool")  
30 -public class EmployeeConfigInfoDataToolsImpl implements DataToolsService {  
31 - /** 日志记录器 */  
32 - private static final Logger LOGGER = LoggerFactory.getLogger(EmployeeConfigInfoDataToolsImpl.class);  
33 -  
34 - @Autowired  
35 - @Qualifier(value = "dataToolsServiceImpl")  
36 - private DataToolsService dataToolsService;  
37 -  
38 - @Autowired  
39 - private DataToolsProperties dataToolsProperties;  
40 -  
41 - @Override  
42 - public File uploadFile(String filename, byte[] filedata) throws ScheduleException {  
43 - try {  
44 - // 对上传的excel文件做处理,将第一个sheet名字设定为工作表1  
45 - File file = dataToolsService.uploadFile(filename, filedata);  
46 - Workbook workbook = Workbook.getWorkbook(file);  
47 - Sheet sheet = workbook.getSheet(0);  
48 -  
49 - File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls");  
50 - WritableWorkbook writableWorkbook = Workbook.createWorkbook(fileCal);  
51 - WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0);  
52 - for (int i = 0; i < sheet.getRows(); i++) {  
53 - Cell[] cells = sheet.getRow(i);  
54 - for (int j = 0; j < cells.length; j++) {  
55 - writableSheet.addCell(new Label(j, i, cells[j].getContents()));  
56 - }  
57 - }  
58 - writableWorkbook.write();  
59 - writableWorkbook.close();  
60 -  
61 - return fileCal;  
62 -  
63 - } catch (Exception exp) {  
64 - throw new ScheduleException(exp);  
65 - }  
66 - }  
67 -  
68 - @Override  
69 - public void importData(File file, Map<String, Object> params) throws ScheduleException {  
70 - try {  
71 - LOGGER.info("//---------------- 导入人员配置信息 start... ----------------//");  
72 - // 创建ktr转换所需参数  
73 - Map<String, Object> ktrParms = new HashMap<>();  
74 - File ktrFile = new File(this.getClass().getResource(  
75 - dataToolsProperties.getEmployeesconfigDatainputktr()).toURI());  
76 -  
77 - // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径  
78 - ktrParms.put("transpath", ktrFile.getAbsolutePath());  
79 - ktrParms.put("filepath", file.getAbsolutePath());  
80 - ktrParms.put("erroroutputdir", dataToolsProperties.getTransErrordir());  
81 -  
82 - ktrParms.putAll(params);  
83 -  
84 - dataToolsService.importData(file, ktrParms);  
85 -  
86 - LOGGER.info("//---------------- 导入人员配置信息 success... ----------------//");  
87 - } catch (Exception exp) {  
88 - LOGGER.info("//---------------- 导入人员配置信息 failed... ----------------//");  
89 -  
90 - StringWriter sw = new StringWriter();  
91 - exp.printStackTrace(new PrintWriter(sw));  
92 - LOGGER.info(sw.toString());  
93 -  
94 - throw new ScheduleException(exp.getMessage());  
95 - }  
96 - }  
97 -  
98 - @Override  
99 - public File exportData(Map<String, Object> params) throws ScheduleException {  
100 - try {  
101 - LOGGER.info("//---------------- 导出人员配置信息 start... ----------------//");  
102 - // 创建ktr转换所需参数  
103 - Map<String, Object> ktrParms = new HashMap<>();  
104 - File ktrFile = new File(this.getClass().getResource(  
105 - dataToolsProperties.getEmployeesconfigDataoutputktr()).toURI());  
106 -  
107 - // 通用参数,转换文件路径,excel输出文件名  
108 - ktrParms.put("transpath", ktrFile.getAbsolutePath());  
109 - ktrParms.put("filename", "人员配置信息_download-");  
110 -  
111 - ktrParms.putAll(params);  
112 -  
113 - File file = dataToolsService.exportData(ktrParms);  
114 -  
115 - LOGGER.info("//---------------- 导出人员配置信息 success... ----------------//");  
116 -  
117 - return file;  
118 -  
119 - } catch (Exception exp) {  
120 - LOGGER.info("//---------------- 导出人员配置信息 failed... ----------------//");  
121 -  
122 - StringWriter sw = new StringWriter();  
123 - exp.printStackTrace(new PrintWriter(sw));  
124 - LOGGER.info(sw.toString());  
125 -  
126 - throw new ScheduleException(exp.getMessage());  
127 - }  
128 - }  
129 -} 1 +package com.bsth.service.schedule.datatools;
  2 +
  3 +import com.bsth.service.schedule.exception.ScheduleException;
  4 +import com.bsth.service.schedule.utils.DataToolsProperties;
  5 +import com.bsth.service.schedule.utils.DataToolsService;
  6 +import jxl.Cell;
  7 +import jxl.Sheet;
  8 +import jxl.Workbook;
  9 +import jxl.write.Label;
  10 +import jxl.write.WritableSheet;
  11 +import jxl.write.WritableWorkbook;
  12 +import org.slf4j.Logger;
  13 +import org.slf4j.LoggerFactory;
  14 +import org.springframework.beans.factory.annotation.Autowired;
  15 +import org.springframework.beans.factory.annotation.Qualifier;
  16 +import org.springframework.boot.context.properties.EnableConfigurationProperties;
  17 +import org.springframework.stereotype.Service;
  18 +
  19 +import java.io.File;
  20 +import java.io.PrintWriter;
  21 +import java.io.StringWriter;
  22 +import java.util.HashMap;
  23 +import java.util.Map;
  24 +
  25 +/**
  26 + * Created by xu on 17/5/16.
  27 + */
  28 +@EnableConfigurationProperties(DataToolsProperties.class)
  29 +@Service(value = "employeeConfig_dataTool")
  30 +public class EmployeeConfigInfoDataToolsImpl implements DataToolsService {
  31 + /** 日志记录器 */
  32 + private static final Logger LOGGER = LoggerFactory.getLogger(EmployeeConfigInfoDataToolsImpl.class);
  33 +
  34 + @Autowired
  35 + @Qualifier(value = "dataToolsServiceImpl")
  36 + private DataToolsService dataToolsService;
  37 +
  38 + @Autowired
  39 + private DataToolsProperties dataToolsProperties;
  40 +
  41 + @Override
  42 + public File uploadFile(String filename, byte[] filedata) throws ScheduleException {
  43 + try {
  44 + // 对上传的excel文件做处理,将第一个sheet名字设定为工作表1
  45 + File file = dataToolsService.uploadFile(filename, filedata);
  46 + Workbook workbook = Workbook.getWorkbook(file);
  47 + Sheet sheet = workbook.getSheet(0);
  48 +
  49 + File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls");
  50 + WritableWorkbook writableWorkbook = Workbook.createWorkbook(fileCal);
  51 + WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0);
  52 + for (int i = 0; i < sheet.getRows(); i++) {
  53 + Cell[] cells = sheet.getRow(i);
  54 + for (int j = 0; j < cells.length; j++) {
  55 + writableSheet.addCell(new Label(j, i, cells[j].getContents()));
  56 + }
  57 + }
  58 + writableWorkbook.write();
  59 + writableWorkbook.close();
  60 +
  61 + return fileCal;
  62 +
  63 + } catch (Exception exp) {
  64 + throw new ScheduleException(exp);
  65 + }
  66 + }
  67 +
  68 + @Override
  69 + public void importData(File file, Map<String, Object> params) throws ScheduleException {
  70 + try {
  71 + LOGGER.info("//---------------- 导入人员配置信息 start... ----------------//");
  72 + // 创建ktr转换所需参数
  73 + Map<String, Object> ktrParms = new HashMap<>();
  74 + File ktrFile = new File(this.getClass().getResource(
  75 + dataToolsProperties.getEmployeesconfigDatainputktr()).toURI());
  76 +
  77 + // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径
  78 + ktrParms.put("transpath", ktrFile.getAbsolutePath());
  79 + ktrParms.put("filepath", file.getAbsolutePath());
  80 + ktrParms.put("erroroutputdir", dataToolsProperties.getTransErrordir());
  81 +
  82 + ktrParms.putAll(params);
  83 +
  84 + dataToolsService.importData(file, ktrParms);
  85 +
  86 + LOGGER.info("//---------------- 导入人员配置信息 success... ----------------//");
  87 + } catch (Exception exp) {
  88 + LOGGER.info("//---------------- 导入人员配置信息 failed... ----------------//");
  89 +
  90 + StringWriter sw = new StringWriter();
  91 + exp.printStackTrace(new PrintWriter(sw));
  92 + LOGGER.info(sw.toString());
  93 +
  94 + throw new ScheduleException(exp.getMessage());
  95 + }
  96 + }
  97 +
  98 + @Override
  99 + public File exportData(Map<String, Object> params) throws ScheduleException {
  100 + try {
  101 + LOGGER.info("//---------------- 导出人员配置信息 start... ----------------//");
  102 + // 创建ktr转换所需参数
  103 + Map<String, Object> ktrParms = new HashMap<>();
  104 + File ktrFile = new File(this.getClass().getResource(
  105 + dataToolsProperties.getEmployeesconfigDataoutputktr()).toURI());
  106 +
  107 + // 通用参数,转换文件路径,excel输出文件名
  108 + ktrParms.put("transpath", ktrFile.getAbsolutePath());
  109 + ktrParms.put("filename", "人员配置信息_download-");
  110 +
  111 + ktrParms.putAll(params);
  112 +
  113 + File file = dataToolsService.exportData(ktrParms);
  114 +
  115 + LOGGER.info("//---------------- 导出人员配置信息 success... ----------------//");
  116 +
  117 + return file;
  118 +
  119 + } catch (Exception exp) {
  120 + LOGGER.info("//---------------- 导出人员配置信息 failed... ----------------//");
  121 +
  122 + StringWriter sw = new StringWriter();
  123 + exp.printStackTrace(new PrintWriter(sw));
  124 + LOGGER.info(sw.toString());
  125 +
  126 + throw new ScheduleException(exp.getMessage());
  127 + }
  128 + }
  129 +}
src/main/java/com/bsth/service/schedule/datatools/EmployeeDataToolsImpl.java
1 -package com.bsth.service.schedule.datatools;  
2 -  
3 -import com.bsth.service.schedule.exception.ScheduleException;  
4 -import com.bsth.service.schedule.utils.DataToolsProperties;  
5 -import com.bsth.service.schedule.utils.DataToolsService;  
6 -import jxl.Cell;  
7 -import jxl.Sheet;  
8 -import jxl.Workbook;  
9 -import jxl.write.Label;  
10 -import jxl.write.WritableSheet;  
11 -import jxl.write.WritableWorkbook;  
12 -import org.slf4j.Logger;  
13 -import org.slf4j.LoggerFactory;  
14 -import org.springframework.beans.factory.annotation.Autowired;  
15 -import org.springframework.beans.factory.annotation.Qualifier;  
16 -import org.springframework.boot.context.properties.EnableConfigurationProperties;  
17 -import org.springframework.stereotype.Service;  
18 -  
19 -import java.io.File;  
20 -import java.io.PrintWriter;  
21 -import java.io.StringWriter;  
22 -import java.util.HashMap;  
23 -import java.util.Map;  
24 -  
25 -/**  
26 - * Created by xu on 17/5/16.  
27 - */  
28 -@EnableConfigurationProperties(DataToolsProperties.class)  
29 -@Service(value = "employee_dataTool")  
30 -public class EmployeeDataToolsImpl implements DataToolsService {  
31 - /** 日志记录器 */  
32 - private final static Logger LOGGER = LoggerFactory.getLogger(EmployeeDataToolsImpl.class);  
33 -  
34 - @Autowired  
35 - @Qualifier(value = "dataToolsServiceImpl")  
36 - private DataToolsService dataToolsService;  
37 -  
38 - @Autowired  
39 - private DataToolsProperties dataToolsProperties;  
40 -  
41 - @Override  
42 - public File uploadFile(String filename, byte[] filedata) throws ScheduleException {  
43 - try {  
44 - // 对上传的excel文件做处理,将第一个sheet名字设定为工作表1  
45 - File file = dataToolsService.uploadFile(filename, filedata);  
46 - Workbook workbook = Workbook.getWorkbook(file);  
47 - Sheet sheet = workbook.getSheet(0);  
48 -  
49 - File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls");  
50 - WritableWorkbook writableWorkbook = Workbook.createWorkbook(fileCal);  
51 - WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0);  
52 - for (int i = 0; i < sheet.getRows(); i++) {  
53 - Cell[] cells = sheet.getRow(i);  
54 - for (int j = 0; j < cells.length; j++) {  
55 - writableSheet.addCell(new Label(j, i, cells[j].getContents()));  
56 - }  
57 - }  
58 - writableWorkbook.write();  
59 - writableWorkbook.close();  
60 -  
61 - return fileCal;  
62 -  
63 - } catch (Exception exp) {  
64 - throw new ScheduleException(exp);  
65 - }  
66 - }  
67 -  
68 - @Override  
69 - public void importData(File file, Map<String, Object> params) throws ScheduleException {  
70 - try {  
71 - LOGGER.info("//---------------- 导入人员基础信息 start... ----------------//");  
72 - // 创建ktr转换所需参数  
73 - Map<String, Object> ktrParms = new HashMap<>();  
74 - File ktrFile = new File(this.getClass().getResource(  
75 - dataToolsProperties.getEmployeesDatainputktr()).toURI());  
76 -  
77 - // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径  
78 - ktrParms.put("transpath", ktrFile.getAbsolutePath());  
79 - ktrParms.put("filepath", file.getAbsolutePath());  
80 - ktrParms.put("erroroutputdir", dataToolsProperties.getTransErrordir());  
81 -  
82 - dataToolsService.importData(file, ktrParms);  
83 -  
84 - LOGGER.info("//---------------- 导入人员基础信息 success... ----------------//");  
85 - } catch (Exception exp) {  
86 - LOGGER.info("//---------------- 导入人员基础信息 failed... ----------------//");  
87 -  
88 - StringWriter sw = new StringWriter();  
89 - exp.printStackTrace(new PrintWriter(sw));  
90 - LOGGER.info(sw.toString());  
91 -  
92 - throw new ScheduleException(exp.getMessage());  
93 - }  
94 - }  
95 -  
96 - @Override  
97 - public File exportData(Map<String, Object> params) throws ScheduleException {  
98 - try {  
99 - LOGGER.info("//---------------- 导出人员基础信息 start... ----------------//");  
100 - // 创建ktr转换所需参数  
101 - Map<String, Object> ktrParms = new HashMap<>();  
102 - File ktrFile = new File(this.getClass().getResource(  
103 - dataToolsProperties.getEmployeesDataoutputktr()).toURI());  
104 -  
105 - // 通用参数,转换文件路径,excel输出文件名  
106 - ktrParms.put("transpath", ktrFile.getAbsolutePath());  
107 - ktrParms.put("filename", "人员基础信息_download-");  
108 -  
109 - File file = dataToolsService.exportData(ktrParms);  
110 -  
111 - LOGGER.info("//---------------- 导出人员基础信息 success... ----------------//");  
112 -  
113 - return file;  
114 -  
115 - } catch (Exception exp) {  
116 - LOGGER.info("//---------------- 导出人员基础信息 failed... ----------------//");  
117 -  
118 - StringWriter sw = new StringWriter();  
119 - exp.printStackTrace(new PrintWriter(sw));  
120 - LOGGER.info(sw.toString());  
121 -  
122 - throw new ScheduleException(exp.getMessage());  
123 - }  
124 - }  
125 -} 1 +package com.bsth.service.schedule.datatools;
  2 +
  3 +import com.bsth.service.schedule.exception.ScheduleException;
  4 +import com.bsth.service.schedule.utils.DataToolsProperties;
  5 +import com.bsth.service.schedule.utils.DataToolsService;
  6 +import jxl.Cell;
  7 +import jxl.Sheet;
  8 +import jxl.Workbook;
  9 +import jxl.write.Label;
  10 +import jxl.write.WritableSheet;
  11 +import jxl.write.WritableWorkbook;
  12 +import org.slf4j.Logger;
  13 +import org.slf4j.LoggerFactory;
  14 +import org.springframework.beans.factory.annotation.Autowired;
  15 +import org.springframework.beans.factory.annotation.Qualifier;
  16 +import org.springframework.boot.context.properties.EnableConfigurationProperties;
  17 +import org.springframework.stereotype.Service;
  18 +
  19 +import java.io.File;
  20 +import java.io.PrintWriter;
  21 +import java.io.StringWriter;
  22 +import java.util.HashMap;
  23 +import java.util.Map;
  24 +
  25 +/**
  26 + * Created by xu on 17/5/16.
  27 + */
  28 +@EnableConfigurationProperties(DataToolsProperties.class)
  29 +@Service(value = "employee_dataTool")
  30 +public class EmployeeDataToolsImpl implements DataToolsService {
  31 + /** 日志记录器 */
  32 + private final static Logger LOGGER = LoggerFactory.getLogger(EmployeeDataToolsImpl.class);
  33 +
  34 + @Autowired
  35 + @Qualifier(value = "dataToolsServiceImpl")
  36 + private DataToolsService dataToolsService;
  37 +
  38 + @Autowired
  39 + private DataToolsProperties dataToolsProperties;
  40 +
  41 + @Override
  42 + public File uploadFile(String filename, byte[] filedata) throws ScheduleException {
  43 + try {
  44 + // 对上传的excel文件做处理,将第一个sheet名字设定为工作表1
  45 + File file = dataToolsService.uploadFile(filename, filedata);
  46 + Workbook workbook = Workbook.getWorkbook(file);
  47 + Sheet sheet = workbook.getSheet(0);
  48 +
  49 + File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls");
  50 + WritableWorkbook writableWorkbook = Workbook.createWorkbook(fileCal);
  51 + WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0);
  52 + for (int i = 0; i < sheet.getRows(); i++) {
  53 + Cell[] cells = sheet.getRow(i);
  54 + for (int j = 0; j < cells.length; j++) {
  55 + writableSheet.addCell(new Label(j, i, cells[j].getContents()));
  56 + }
  57 + }
  58 + writableWorkbook.write();
  59 + writableWorkbook.close();
  60 +
  61 + return fileCal;
  62 +
  63 + } catch (Exception exp) {
  64 + throw new ScheduleException(exp);
  65 + }
  66 + }
  67 +
  68 + @Override
  69 + public void importData(File file, Map<String, Object> params) throws ScheduleException {
  70 + try {
  71 + LOGGER.info("//---------------- 导入人员基础信息 start... ----------------//");
  72 + // 创建ktr转换所需参数
  73 + Map<String, Object> ktrParms = new HashMap<>();
  74 + File ktrFile = new File(this.getClass().getResource(
  75 + dataToolsProperties.getEmployeesDatainputktr()).toURI());
  76 +
  77 + // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径
  78 + ktrParms.put("transpath", ktrFile.getAbsolutePath());
  79 + ktrParms.put("filepath", file.getAbsolutePath());
  80 + ktrParms.put("erroroutputdir", dataToolsProperties.getTransErrordir());
  81 +
  82 + dataToolsService.importData(file, ktrParms);
  83 +
  84 + LOGGER.info("//---------------- 导入人员基础信息 success... ----------------//");
  85 + } catch (Exception exp) {
  86 + LOGGER.info("//---------------- 导入人员基础信息 failed... ----------------//");
  87 +
  88 + StringWriter sw = new StringWriter();
  89 + exp.printStackTrace(new PrintWriter(sw));
  90 + LOGGER.info(sw.toString());
  91 +
  92 + throw new ScheduleException(exp.getMessage());
  93 + }
  94 + }
  95 +
  96 + @Override
  97 + public File exportData(Map<String, Object> params) throws ScheduleException {
  98 + try {
  99 + LOGGER.info("//---------------- 导出人员基础信息 start... ----------------//");
  100 + // 创建ktr转换所需参数
  101 + Map<String, Object> ktrParms = new HashMap<>();
  102 + File ktrFile = new File(this.getClass().getResource(
  103 + dataToolsProperties.getEmployeesDataoutputktr()).toURI());
  104 +
  105 + // 通用参数,转换文件路径,excel输出文件名
  106 + ktrParms.put("transpath", ktrFile.getAbsolutePath());
  107 + ktrParms.put("filename", "人员基础信息_download-");
  108 +
  109 + File file = dataToolsService.exportData(ktrParms);
  110 +
  111 + LOGGER.info("//---------------- 导出人员基础信息 success... ----------------//");
  112 +
  113 + return file;
  114 +
  115 + } catch (Exception exp) {
  116 + LOGGER.info("//---------------- 导出人员基础信息 failed... ----------------//");
  117 +
  118 + StringWriter sw = new StringWriter();
  119 + exp.printStackTrace(new PrintWriter(sw));
  120 + LOGGER.info(sw.toString());
  121 +
  122 + throw new ScheduleException(exp.getMessage());
  123 + }
  124 + }
  125 +}
src/main/java/com/bsth/service/schedule/datatools/GuideboardInfoDataToolsImpl.java
1 -package com.bsth.service.schedule.datatools;  
2 -  
3 -import com.bsth.service.schedule.exception.ScheduleException;  
4 -import com.bsth.service.schedule.utils.DataToolsProperties;  
5 -import com.bsth.service.schedule.utils.DataToolsService;  
6 -import jxl.Cell;  
7 -import jxl.Sheet;  
8 -import jxl.Workbook;  
9 -import jxl.write.Label;  
10 -import jxl.write.WritableSheet;  
11 -import jxl.write.WritableWorkbook;  
12 -import org.slf4j.Logger;  
13 -import org.slf4j.LoggerFactory;  
14 -import org.springframework.beans.factory.annotation.Autowired;  
15 -import org.springframework.beans.factory.annotation.Qualifier;  
16 -import org.springframework.boot.context.properties.EnableConfigurationProperties;  
17 -import org.springframework.stereotype.Service;  
18 -  
19 -import java.io.File;  
20 -import java.io.PrintWriter;  
21 -import java.io.StringWriter;  
22 -import java.util.HashMap;  
23 -import java.util.Map;  
24 -  
25 -/**  
26 - * Created by xu on 17/5/16.  
27 - */  
28 -@EnableConfigurationProperties(DataToolsProperties.class)  
29 -@Service(value = "gbInfo_dataTool")  
30 -public class GuideboardInfoDataToolsImpl implements DataToolsService {  
31 - /** 日志记录器 */  
32 - private final static Logger LOGGER = LoggerFactory.getLogger(GuideboardInfoDataToolsImpl.class);  
33 -  
34 - @Autowired  
35 - @Qualifier(value = "dataToolsServiceImpl")  
36 - private DataToolsService dataToolsService;  
37 -  
38 - @Autowired  
39 - private DataToolsProperties dataToolsProperties;  
40 -  
41 - @Override  
42 - public File uploadFile(String filename, byte[] filedata) throws ScheduleException {  
43 - try {  
44 - // 对上传的excel文件做处理,将第一个sheet名字设定为工作表1  
45 - File file = dataToolsService.uploadFile(filename, filedata);  
46 - Workbook workbook = Workbook.getWorkbook(file);  
47 - Sheet sheet = workbook.getSheet(0);  
48 -  
49 - File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls");  
50 - WritableWorkbook writableWorkbook = Workbook.createWorkbook(fileCal);  
51 - WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0);  
52 - for (int i = 0; i < sheet.getRows(); i++) {  
53 - Cell[] cells = sheet.getRow(i);  
54 - for (int j = 0; j < cells.length; j++) {  
55 - writableSheet.addCell(new Label(j, i, cells[j].getContents()));  
56 - }  
57 - }  
58 - writableWorkbook.write();  
59 - writableWorkbook.close();  
60 -  
61 - return fileCal;  
62 -  
63 - } catch (Exception exp) {  
64 - throw new ScheduleException(exp);  
65 - }  
66 - }  
67 -  
68 - @Override  
69 - public void importData(File file, Map<String, Object> params) throws ScheduleException {  
70 - try {  
71 - LOGGER.info("//---------------- 导入路牌信息 start... ----------------//");  
72 - // 创建ktr转换所需参数  
73 - Map<String, Object> ktrParms = new HashMap<>();  
74 - File ktrFile = new File(this.getClass().getResource(  
75 - dataToolsProperties.getGuideboardsDatainputktr()).toURI());  
76 -  
77 - // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径  
78 - ktrParms.put("transpath", ktrFile.getAbsolutePath());  
79 - ktrParms.put("filepath", file.getAbsolutePath());  
80 - ktrParms.put("erroroutputdir", dataToolsProperties.getTransErrordir());  
81 -  
82 - ktrParms.putAll(params);  
83 -  
84 - dataToolsService.importData(file, ktrParms);  
85 -  
86 - LOGGER.info("//---------------- 导入路牌信息 success... ----------------//");  
87 - } catch (Exception exp) {  
88 - LOGGER.info("//---------------- 导入路牌信息 failed... ----------------//");  
89 -  
90 - StringWriter sw = new StringWriter();  
91 - exp.printStackTrace(new PrintWriter(sw));  
92 - LOGGER.info(sw.toString());  
93 -  
94 - throw new ScheduleException(exp.getMessage());  
95 - }  
96 - }  
97 -  
98 - @Override  
99 - public File exportData(Map<String, Object> params) throws ScheduleException {  
100 - try {  
101 - LOGGER.info("//---------------- 导出路牌信息 start... ----------------//");  
102 - // 创建ktr转换所需参数  
103 - Map<String, Object> ktrParms = new HashMap<>();  
104 - File ktrFile = new File(this.getClass().getResource(  
105 - dataToolsProperties.getGuideboardsDataoutputktr()).toURI());  
106 -  
107 - // 通用参数,转换文件路径,excel输出文件名  
108 - ktrParms.put("transpath", ktrFile.getAbsolutePath());  
109 - ktrParms.put("filename", "路牌信息_download-");  
110 -  
111 - ktrParms.putAll(params);  
112 -  
113 - File file = dataToolsService.exportData(ktrParms);  
114 -  
115 - LOGGER.info("//---------------- 导出路牌信息 success... ----------------//");  
116 -  
117 - return file;  
118 -  
119 - } catch (Exception exp) {  
120 - LOGGER.info("//---------------- 导出路牌信息 failed... ----------------//");  
121 -  
122 - StringWriter sw = new StringWriter();  
123 - exp.printStackTrace(new PrintWriter(sw));  
124 - LOGGER.info(sw.toString());  
125 -  
126 - throw new ScheduleException(exp.getMessage());  
127 - }  
128 - }  
129 -} 1 +package com.bsth.service.schedule.datatools;
  2 +
  3 +import com.bsth.service.schedule.exception.ScheduleException;
  4 +import com.bsth.service.schedule.utils.DataToolsProperties;
  5 +import com.bsth.service.schedule.utils.DataToolsService;
  6 +import jxl.Cell;
  7 +import jxl.Sheet;
  8 +import jxl.Workbook;
  9 +import jxl.write.Label;
  10 +import jxl.write.WritableSheet;
  11 +import jxl.write.WritableWorkbook;
  12 +import org.slf4j.Logger;
  13 +import org.slf4j.LoggerFactory;
  14 +import org.springframework.beans.factory.annotation.Autowired;
  15 +import org.springframework.beans.factory.annotation.Qualifier;
  16 +import org.springframework.boot.context.properties.EnableConfigurationProperties;
  17 +import org.springframework.stereotype.Service;
  18 +
  19 +import java.io.File;
  20 +import java.io.PrintWriter;
  21 +import java.io.StringWriter;
  22 +import java.util.HashMap;
  23 +import java.util.Map;
  24 +
  25 +/**
  26 + * Created by xu on 17/5/16.
  27 + */
  28 +@EnableConfigurationProperties(DataToolsProperties.class)
  29 +@Service(value = "gbInfo_dataTool")
  30 +public class GuideboardInfoDataToolsImpl implements DataToolsService {
  31 + /** 日志记录器 */
  32 + private final static Logger LOGGER = LoggerFactory.getLogger(GuideboardInfoDataToolsImpl.class);
  33 +
  34 + @Autowired
  35 + @Qualifier(value = "dataToolsServiceImpl")
  36 + private DataToolsService dataToolsService;
  37 +
  38 + @Autowired
  39 + private DataToolsProperties dataToolsProperties;
  40 +
  41 + @Override
  42 + public File uploadFile(String filename, byte[] filedata) throws ScheduleException {
  43 + try {
  44 + // 对上传的excel文件做处理,将第一个sheet名字设定为工作表1
  45 + File file = dataToolsService.uploadFile(filename, filedata);
  46 + Workbook workbook = Workbook.getWorkbook(file);
  47 + Sheet sheet = workbook.getSheet(0);
  48 +
  49 + File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls");
  50 + WritableWorkbook writableWorkbook = Workbook.createWorkbook(fileCal);
  51 + WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0);
  52 + for (int i = 0; i < sheet.getRows(); i++) {
  53 + Cell[] cells = sheet.getRow(i);
  54 + for (int j = 0; j < cells.length; j++) {
  55 + writableSheet.addCell(new Label(j, i, cells[j].getContents()));
  56 + }
  57 + }
  58 + writableWorkbook.write();
  59 + writableWorkbook.close();
  60 +
  61 + return fileCal;
  62 +
  63 + } catch (Exception exp) {
  64 + throw new ScheduleException(exp);
  65 + }
  66 + }
  67 +
  68 + @Override
  69 + public void importData(File file, Map<String, Object> params) throws ScheduleException {
  70 + try {
  71 + LOGGER.info("//---------------- 导入路牌信息 start... ----------------//");
  72 + // 创建ktr转换所需参数
  73 + Map<String, Object> ktrParms = new HashMap<>();
  74 + File ktrFile = new File(this.getClass().getResource(
  75 + dataToolsProperties.getGuideboardsDatainputktr()).toURI());
  76 +
  77 + // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径
  78 + ktrParms.put("transpath", ktrFile.getAbsolutePath());
  79 + ktrParms.put("filepath", file.getAbsolutePath());
  80 + ktrParms.put("erroroutputdir", dataToolsProperties.getTransErrordir());
  81 +
  82 + ktrParms.putAll(params);
  83 +
  84 + dataToolsService.importData(file, ktrParms);
  85 +
  86 + LOGGER.info("//---------------- 导入路牌信息 success... ----------------//");
  87 + } catch (Exception exp) {
  88 + LOGGER.info("//---------------- 导入路牌信息 failed... ----------------//");
  89 +
  90 + StringWriter sw = new StringWriter();
  91 + exp.printStackTrace(new PrintWriter(sw));
  92 + LOGGER.info(sw.toString());
  93 +
  94 + throw new ScheduleException(exp.getMessage());
  95 + }
  96 + }
  97 +
  98 + @Override
  99 + public File exportData(Map<String, Object> params) throws ScheduleException {
  100 + try {
  101 + LOGGER.info("//---------------- 导出路牌信息 start... ----------------//");
  102 + // 创建ktr转换所需参数
  103 + Map<String, Object> ktrParms = new HashMap<>();
  104 + File ktrFile = new File(this.getClass().getResource(
  105 + dataToolsProperties.getGuideboardsDataoutputktr()).toURI());
  106 +
  107 + // 通用参数,转换文件路径,excel输出文件名
  108 + ktrParms.put("transpath", ktrFile.getAbsolutePath());
  109 + ktrParms.put("filename", "路牌信息_download-");
  110 +
  111 + ktrParms.putAll(params);
  112 +
  113 + File file = dataToolsService.exportData(ktrParms);
  114 +
  115 + LOGGER.info("//---------------- 导出路牌信息 success... ----------------//");
  116 +
  117 + return file;
  118 +
  119 + } catch (Exception exp) {
  120 + LOGGER.info("//---------------- 导出路牌信息 failed... ----------------//");
  121 +
  122 + StringWriter sw = new StringWriter();
  123 + exp.printStackTrace(new PrintWriter(sw));
  124 + LOGGER.info(sw.toString());
  125 +
  126 + throw new ScheduleException(exp.getMessage());
  127 + }
  128 + }
  129 +}
src/main/java/com/bsth/service/schedule/datatools/ScheduleRule1FlatDataToolsImpl.java
1 -package com.bsth.service.schedule.datatools;  
2 -  
3 -import com.bsth.service.schedule.exception.ScheduleException;  
4 -import com.bsth.service.schedule.utils.DataToolsProperties;  
5 -import com.bsth.service.schedule.utils.DataToolsService;  
6 -import jxl.Cell;  
7 -import jxl.Sheet;  
8 -import jxl.Workbook;  
9 -import jxl.write.Label;  
10 -import jxl.write.WritableSheet;  
11 -import jxl.write.WritableWorkbook;  
12 -import org.slf4j.Logger;  
13 -import org.slf4j.LoggerFactory;  
14 -import org.springframework.beans.factory.annotation.Autowired;  
15 -import org.springframework.beans.factory.annotation.Qualifier;  
16 -import org.springframework.boot.context.properties.EnableConfigurationProperties;  
17 -import org.springframework.stereotype.Service;  
18 -  
19 -import java.io.File;  
20 -import java.io.PrintWriter;  
21 -import java.io.StringWriter;  
22 -import java.util.HashMap;  
23 -import java.util.Map;  
24 -  
25 -/**  
26 - * Created by xu on 17/5/16.  
27 - */  
28 -@EnableConfigurationProperties(DataToolsProperties.class)  
29 -@Service(value = "scheduleRule_dataTool")  
30 -public class ScheduleRule1FlatDataToolsImpl implements DataToolsService {  
31 - /** 日志记录器 */  
32 - private final static Logger LOGGER = LoggerFactory.getLogger(ScheduleRule1FlatDataToolsImpl.class);  
33 -  
34 - @Autowired  
35 - @Qualifier(value = "dataToolsServiceImpl")  
36 - private DataToolsService dataToolsService;  
37 -  
38 - @Autowired  
39 - private DataToolsProperties dataToolsProperties;  
40 -  
41 - @Override  
42 - public File uploadFile(String filename, byte[] filedata) throws ScheduleException {  
43 - try {  
44 - // 对上传的excel文件做处理,将第一个sheet名字设定为工作表1  
45 - File file = dataToolsService.uploadFile(filename, filedata);  
46 - Workbook workbook = Workbook.getWorkbook(file);  
47 - Sheet sheet = workbook.getSheet(0);  
48 -  
49 - File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls");  
50 - WritableWorkbook writableWorkbook = Workbook.createWorkbook(fileCal);  
51 - WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0);  
52 - for (int i = 0; i < sheet.getRows(); i++) {  
53 - Cell[] cells = sheet.getRow(i);  
54 - for (int j = 0; j < cells.length; j++) {  
55 - writableSheet.addCell(new Label(j, i, cells[j].getContents()));  
56 - }  
57 - }  
58 - writableWorkbook.write();  
59 - writableWorkbook.close();  
60 -  
61 - return fileCal;  
62 -  
63 - } catch (Exception exp) {  
64 - throw new ScheduleException(exp);  
65 - }  
66 - }  
67 -  
68 - @Override  
69 - public void importData(File file, Map<String, Object> params) throws ScheduleException {  
70 - try {  
71 - LOGGER.info("//---------------- 导入排版规则信息 start... ----------------//");  
72 - // 创建ktr转换所需参数  
73 - Map<String, Object> ktrParms = new HashMap<>();  
74 - File ktrFile = new File(this.getClass().getResource(  
75 - dataToolsProperties.getScheduleruleDatainputktr()).toURI());  
76 -  
77 - // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径  
78 - ktrParms.put("transpath", ktrFile.getAbsolutePath());  
79 - ktrParms.put("filepath", file.getAbsolutePath());  
80 - ktrParms.put("erroroutputdir", dataToolsProperties.getTransErrordir());  
81 -  
82 - ktrParms.putAll(params);  
83 -  
84 - dataToolsService.importData(file, ktrParms);  
85 -  
86 - LOGGER.info("//---------------- 导入排版规则信息 success... ----------------//");  
87 - } catch (Exception exp) {  
88 - LOGGER.info("//---------------- 导入排版规则信息 failed... ----------------//");  
89 -  
90 - StringWriter sw = new StringWriter();  
91 - exp.printStackTrace(new PrintWriter(sw));  
92 - LOGGER.info(sw.toString());  
93 -  
94 - throw new ScheduleException(exp.getMessage());  
95 - }  
96 - }  
97 -  
98 - @Override  
99 - public File exportData(Map<String, Object> params) throws ScheduleException {  
100 - try {  
101 - LOGGER.info("//---------------- 导出排版规则信息 start... ----------------//");  
102 - // 创建ktr转换所需参数  
103 - Map<String, Object> ktrParms = new HashMap<>();  
104 - File ktrFile = new File(this.getClass().getResource(  
105 - dataToolsProperties.getScheduleruleOutput()).toURI());  
106 -  
107 - // 通用参数,转换文件路径,excel输出文件名  
108 - ktrParms.put("transpath", ktrFile.getAbsolutePath());  
109 - ktrParms.put("filename", "排版规则信息_download-");  
110 -  
111 - ktrParms.putAll(params);  
112 -  
113 - File file = dataToolsService.exportData(ktrParms);  
114 -  
115 - LOGGER.info("//---------------- 导出排版规则信息 success... ----------------//");  
116 -  
117 - return file;  
118 -  
119 - } catch (Exception exp) {  
120 - LOGGER.info("//---------------- 导出排版规则信息 failed... ----------------//");  
121 -  
122 - StringWriter sw = new StringWriter();  
123 - exp.printStackTrace(new PrintWriter(sw));  
124 - LOGGER.info(sw.toString());  
125 -  
126 - throw new ScheduleException(exp.getMessage());  
127 - }  
128 - }  
129 -} 1 +package com.bsth.service.schedule.datatools;
  2 +
  3 +import com.bsth.service.schedule.exception.ScheduleException;
  4 +import com.bsth.service.schedule.utils.DataToolsProperties;
  5 +import com.bsth.service.schedule.utils.DataToolsService;
  6 +import jxl.Cell;
  7 +import jxl.Sheet;
  8 +import jxl.Workbook;
  9 +import jxl.write.Label;
  10 +import jxl.write.WritableSheet;
  11 +import jxl.write.WritableWorkbook;
  12 +import org.slf4j.Logger;
  13 +import org.slf4j.LoggerFactory;
  14 +import org.springframework.beans.factory.annotation.Autowired;
  15 +import org.springframework.beans.factory.annotation.Qualifier;
  16 +import org.springframework.boot.context.properties.EnableConfigurationProperties;
  17 +import org.springframework.stereotype.Service;
  18 +
  19 +import java.io.File;
  20 +import java.io.PrintWriter;
  21 +import java.io.StringWriter;
  22 +import java.util.HashMap;
  23 +import java.util.Map;
  24 +
  25 +/**
  26 + * Created by xu on 17/5/16.
  27 + */
  28 +@EnableConfigurationProperties(DataToolsProperties.class)
  29 +@Service(value = "scheduleRule_dataTool")
  30 +public class ScheduleRule1FlatDataToolsImpl implements DataToolsService {
  31 + /** 日志记录器 */
  32 + private final static Logger LOGGER = LoggerFactory.getLogger(ScheduleRule1FlatDataToolsImpl.class);
  33 +
  34 + @Autowired
  35 + @Qualifier(value = "dataToolsServiceImpl")
  36 + private DataToolsService dataToolsService;
  37 +
  38 + @Autowired
  39 + private DataToolsProperties dataToolsProperties;
  40 +
  41 + @Override
  42 + public File uploadFile(String filename, byte[] filedata) throws ScheduleException {
  43 + try {
  44 + // 对上传的excel文件做处理,将第一个sheet名字设定为工作表1
  45 + File file = dataToolsService.uploadFile(filename, filedata);
  46 + Workbook workbook = Workbook.getWorkbook(file);
  47 + Sheet sheet = workbook.getSheet(0);
  48 +
  49 + File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls");
  50 + WritableWorkbook writableWorkbook = Workbook.createWorkbook(fileCal);
  51 + WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0);
  52 + for (int i = 0; i < sheet.getRows(); i++) {
  53 + Cell[] cells = sheet.getRow(i);
  54 + for (int j = 0; j < cells.length; j++) {
  55 + writableSheet.addCell(new Label(j, i, cells[j].getContents()));
  56 + }
  57 + }
  58 + writableWorkbook.write();
  59 + writableWorkbook.close();
  60 +
  61 + return fileCal;
  62 +
  63 + } catch (Exception exp) {
  64 + throw new ScheduleException(exp);
  65 + }
  66 + }
  67 +
  68 + @Override
  69 + public void importData(File file, Map<String, Object> params) throws ScheduleException {
  70 + try {
  71 + LOGGER.info("//---------------- 导入排版规则信息 start... ----------------//");
  72 + // 创建ktr转换所需参数
  73 + Map<String, Object> ktrParms = new HashMap<>();
  74 + File ktrFile = new File(this.getClass().getResource(
  75 + dataToolsProperties.getScheduleruleDatainputktr()).toURI());
  76 +
  77 + // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径
  78 + ktrParms.put("transpath", ktrFile.getAbsolutePath());
  79 + ktrParms.put("filepath", file.getAbsolutePath());
  80 + ktrParms.put("erroroutputdir", dataToolsProperties.getTransErrordir());
  81 +
  82 + ktrParms.putAll(params);
  83 +
  84 + dataToolsService.importData(file, ktrParms);
  85 +
  86 + LOGGER.info("//---------------- 导入排版规则信息 success... ----------------//");
  87 + } catch (Exception exp) {
  88 + LOGGER.info("//---------------- 导入排版规则信息 failed... ----------------//");
  89 +
  90 + StringWriter sw = new StringWriter();
  91 + exp.printStackTrace(new PrintWriter(sw));
  92 + LOGGER.info(sw.toString());
  93 +
  94 + throw new ScheduleException(exp.getMessage());
  95 + }
  96 + }
  97 +
  98 + @Override
  99 + public File exportData(Map<String, Object> params) throws ScheduleException {
  100 + try {
  101 + LOGGER.info("//---------------- 导出排版规则信息 start... ----------------//");
  102 + // 创建ktr转换所需参数
  103 + Map<String, Object> ktrParms = new HashMap<>();
  104 + File ktrFile = new File(this.getClass().getResource(
  105 + dataToolsProperties.getScheduleruleOutput()).toURI());
  106 +
  107 + // 通用参数,转换文件路径,excel输出文件名
  108 + ktrParms.put("transpath", ktrFile.getAbsolutePath());
  109 + ktrParms.put("filename", "排版规则信息_download-");
  110 +
  111 + ktrParms.putAll(params);
  112 +
  113 + File file = dataToolsService.exportData(ktrParms);
  114 +
  115 + LOGGER.info("//---------------- 导出排版规则信息 success... ----------------//");
  116 +
  117 + return file;
  118 +
  119 + } catch (Exception exp) {
  120 + LOGGER.info("//---------------- 导出排版规则信息 failed... ----------------//");
  121 +
  122 + StringWriter sw = new StringWriter();
  123 + exp.printStackTrace(new PrintWriter(sw));
  124 + LOGGER.info(sw.toString());
  125 +
  126 + throw new ScheduleException(exp.getMessage());
  127 + }
  128 + }
  129 +}
src/main/java/com/bsth/service/schedule/datatools/TTInfoDetailForEdit.java
@@ -165,3 +165,4 @@ public interface TTInfoDetailForEdit { @@ -165,3 +165,4 @@ public interface TTInfoDetailForEdit {
165 EditInfo getEditInfo(Integer xlid, Long ttid, Long maxfcno) throws ScheduleException; 165 EditInfo getEditInfo(Integer xlid, Long ttid, Long maxfcno) throws ScheduleException;
166 166
167 } 167 }
  168 +
src/main/java/com/bsth/websocket/handler/RealControlSocketHandler.java
@@ -133,13 +133,14 @@ public class RealControlSocketHandler implements WebSocketHandler { @@ -133,13 +133,14 @@ public class RealControlSocketHandler implements WebSocketHandler {
133 WebSocketSession user; 133 WebSocketSession user;
134 while(iterator.hasNext()){ 134 while(iterator.hasNext()){
135 user = iterator.next(); 135 user = iterator.next();
136 - try { 136 + WebSocketPushQueue.put(user, message);
  137 + /*try {
137 if (user.isOpen()) { 138 if (user.isOpen()) {
138 user.sendMessage(message); 139 user.sendMessage(message);
139 } 140 }
140 } catch (Exception e) { 141 } catch (Exception e) {
141 logger.error("sendMessage error ...."+msg); 142 logger.error("sendMessage error ...."+msg);
142 - } 143 + }*/
143 } 144 }
144 } 145 }
145 } 146 }
src/main/resources/datatools/ktrs/carsDataInput.ktr
1 -<?xml version="1.0" encoding="UTF-8"?>  
2 -<transformation>  
3 - <info>  
4 - <name>&#x8f66;&#x8f86;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</name>  
5 - <description>&#x8f66;&#x8f86;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description>  
6 - <extended_description>&#x8f66;&#x8f86;&#x57fa;&#x7840;&#x4fe1;&#x606f;</extended_description>  
7 - <trans_version/>  
8 - <trans_type>Normal</trans_type>  
9 - <trans_status>0</trans_status>  
10 - <directory>&#x2f;</directory>  
11 - <parameters>  
12 - <parameter>  
13 - <name>erroroutputdir</name>  
14 - <default_value/>  
15 - <description>ktr step&#x914d;&#x7f6e;&#x7684;&#x9519;&#x8bef;&#x8f93;&#x51fa;&#x76ee;&#x5f55;</description>  
16 - </parameter>  
17 - <parameter>  
18 - <name>filepath</name>  
19 - <default_value/>  
20 - <description>&#x5f85;&#x5904;&#x7406;&#x5bfc;&#x5165;&#x7684;excel&#x6587;&#x4ef6;</description>  
21 - </parameter>  
22 - </parameters>  
23 - <log>  
24 -<trans-log-table><connection/>  
25 -<schema/>  
26 -<table/>  
27 -<size_limit_lines/>  
28 -<interval/>  
29 -<timeout_days/>  
30 -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table>  
31 -<perf-log-table><connection/>  
32 -<schema/>  
33 -<table/>  
34 -<interval/>  
35 -<timeout_days/>  
36 -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table>  
37 -<channel-log-table><connection/>  
38 -<schema/>  
39 -<table/>  
40 -<timeout_days/>  
41 -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table>  
42 -<step-log-table><connection/>  
43 -<schema/>  
44 -<table/>  
45 -<timeout_days/>  
46 -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table>  
47 -<metrics-log-table><connection/>  
48 -<schema/>  
49 -<table/>  
50 -<timeout_days/>  
51 -<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table>  
52 - </log>  
53 - <maxdate>  
54 - <connection/>  
55 - <table/>  
56 - <field/>  
57 - <offset>0.0</offset>  
58 - <maxdiff>0.0</maxdiff>  
59 - </maxdate>  
60 - <size_rowset>10000</size_rowset>  
61 - <sleep_time_empty>50</sleep_time_empty>  
62 - <sleep_time_full>50</sleep_time_full>  
63 - <unique_connections>N</unique_connections>  
64 - <feedback_shown>Y</feedback_shown>  
65 - <feedback_size>50000</feedback_size>  
66 - <using_thread_priorities>Y</using_thread_priorities>  
67 - <shared_objects_file/>  
68 - <capture_step_performance>N</capture_step_performance>  
69 - <step_performance_capturing_delay>1000</step_performance_capturing_delay>  
70 - <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>  
71 - <dependencies>  
72 - </dependencies>  
73 - <partitionschemas>  
74 - </partitionschemas>  
75 - <slaveservers>  
76 - </slaveservers>  
77 - <clusterschemas>  
78 - </clusterschemas>  
79 - <created_user>-</created_user>  
80 - <created_date>2016&#x2f;06&#x2f;23 17&#x3a;44&#x3a;46.781</created_date>  
81 - <modified_user>-</modified_user>  
82 - <modified_date>2016&#x2f;06&#x2f;23 17&#x3a;44&#x3a;46.781</modified_date>  
83 - <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>  
84 - <is_key_private>N</is_key_private>  
85 - </info>  
86 - <notepads>  
87 - </notepads>  
88 - <connection>  
89 - <name>192.168.168.1_jwgl_dw</name>  
90 - <server>192.168.168.1</server>  
91 - <type>ORACLE</type>  
92 - <access>Native</access>  
93 - <database>orcl</database>  
94 - <port>1521</port>  
95 - <username>jwgl_dw</username>  
96 - <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password>  
97 - <servername/>  
98 - <data_tablespace/>  
99 - <index_tablespace/>  
100 - <attributes>  
101 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
102 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
103 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
104 - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>  
105 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
106 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
107 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>  
108 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>  
109 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
110 - </attributes>  
111 - </connection>  
112 - <connection>  
113 - <name>bus_control_variable</name>  
114 - <server>&#x24;&#x7b;v_db_ip&#x7d;</server>  
115 - <type>MYSQL</type>  
116 - <access>Native</access>  
117 - <database>&#x24;&#x7b;v_db_dname&#x7d;</database>  
118 - <port>3306</port>  
119 - <username>&#x24;&#x7b;v_db_uname&#x7d;</username>  
120 - <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>  
121 - <servername/>  
122 - <data_tablespace/>  
123 - <index_tablespace/>  
124 - <attributes>  
125 - <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>  
126 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
127 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
128 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
129 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
130 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
131 - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>  
132 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
133 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
134 - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>  
135 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>  
136 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>  
137 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
138 - </attributes>  
139 - </connection>  
140 - <connection>  
141 - <name>bus_control_&#x516c;&#x53f8;_201</name>  
142 - <server>localhost</server>  
143 - <type>MYSQL</type>  
144 - <access>Native</access>  
145 - <database>control</database>  
146 - <port>3306</port>  
147 - <username>root</username>  
148 - <password>Encrypted </password>  
149 - <servername/>  
150 - <data_tablespace/>  
151 - <index_tablespace/>  
152 - <attributes>  
153 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
154 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
155 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
156 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
157 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
158 - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>  
159 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
160 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
161 - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>  
162 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>  
163 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>  
164 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
165 - </attributes>  
166 - </connection>  
167 - <connection>  
168 - <name>bus_control_&#x672c;&#x673a;</name>  
169 - <server>localhost</server>  
170 - <type>MYSQL</type>  
171 - <access>Native</access>  
172 - <database>control</database>  
173 - <port>3306</port>  
174 - <username>root</username>  
175 - <password>Encrypted </password>  
176 - <servername/>  
177 - <data_tablespace/>  
178 - <index_tablespace/>  
179 - <attributes>  
180 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
181 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
182 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
183 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
184 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
185 - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>  
186 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
187 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
188 - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>  
189 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>  
190 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>  
191 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
192 - </attributes>  
193 - </connection>  
194 - <connection>  
195 - <name>xlab_mysql_youle</name>  
196 - <server>101.231.124.8</server>  
197 - <type>MYSQL</type>  
198 - <access>Native</access>  
199 - <database>xlab_youle</database>  
200 - <port>45687</port>  
201 - <username>xlab-youle</username>  
202 - <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>  
203 - <servername/>  
204 - <data_tablespace/>  
205 - <index_tablespace/>  
206 - <attributes>  
207 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
208 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
209 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
210 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
211 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
212 - <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>  
213 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
214 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
215 - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>  
216 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>  
217 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>  
218 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
219 - </attributes>  
220 - </connection>  
221 - <connection>  
222 - <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>  
223 - <server>localhost</server>  
224 - <type>MYSQL</type>  
225 - <access>Native</access>  
226 - <database>xlab_youle</database>  
227 - <port>3306</port>  
228 - <username>root</username>  
229 - <password>Encrypted </password>  
230 - <servername/>  
231 - <data_tablespace/>  
232 - <index_tablespace/>  
233 - <attributes>  
234 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
235 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
236 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
237 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
238 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
239 - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>  
240 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
241 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
242 - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>  
243 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>  
244 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>  
245 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
246 - </attributes>  
247 - </connection>  
248 - <connection>  
249 - <name>xlab_youle</name>  
250 - <server/>  
251 - <type>MYSQL</type>  
252 - <access>JNDI</access>  
253 - <database>xlab_youle</database>  
254 - <port>1521</port>  
255 - <username/>  
256 - <password>Encrypted </password>  
257 - <servername/>  
258 - <data_tablespace/>  
259 - <index_tablespace/>  
260 - <attributes>  
261 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
262 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
263 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
264 - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>  
265 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
266 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
267 - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>  
268 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>  
269 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>  
270 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
271 - </attributes>  
272 - </connection>  
273 - <order>  
274 - <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>  
275 - <hop> <from>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars 2</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa; 2</to><enabled>Y</enabled> </hop>  
276 - <hop> <from>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars 2</to><enabled>Y</enabled> </hop>  
277 - </order>  
278 - <step>  
279 - <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name>  
280 - <type>ExcelInput</type>  
281 - <description/>  
282 - <distribute>Y</distribute>  
283 - <custom_distribution/>  
284 - <copies>1</copies>  
285 - <partitioning>  
286 - <method>none</method>  
287 - <schema_name/>  
288 - </partitioning>  
289 - <header>Y</header>  
290 - <noempty>Y</noempty>  
291 - <stoponempty>N</stoponempty>  
292 - <filefield/>  
293 - <sheetfield/>  
294 - <sheetrownumfield/>  
295 - <rownumfield/>  
296 - <sheetfield/>  
297 - <filefield/>  
298 - <limit>0</limit>  
299 - <encoding/>  
300 - <add_to_result_filenames>Y</add_to_result_filenames>  
301 - <accept_filenames>Y</accept_filenames>  
302 - <accept_field>filepath_</accept_field>  
303 - <accept_stepname>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</accept_stepname>  
304 - <file>  
305 - <name/>  
306 - <filemask/>  
307 - <exclude_filemask/>  
308 - <file_required>N</file_required>  
309 - <include_subfolders>N</include_subfolders>  
310 - </file>  
311 - <fields>  
312 - <field>  
313 - <name>&#x8f66;&#x724c;&#x53f7;</name>  
314 - <type>String</type>  
315 - <length>-1</length>  
316 - <precision>-1</precision>  
317 - <trim_type>none</trim_type>  
318 - <repeat>N</repeat>  
319 - <format/>  
320 - <currency/>  
321 - <decimal/>  
322 - <group/>  
323 - </field>  
324 - <field>  
325 - <name>&#x8f66;&#x8f86;&#x7f16;&#x7801;</name>  
326 - <type>String</type>  
327 - <length>-1</length>  
328 - <precision>-1</precision>  
329 - <trim_type>none</trim_type>  
330 - <repeat>N</repeat>  
331 - <format/>  
332 - <currency/>  
333 - <decimal/>  
334 - <group/>  
335 - </field>  
336 - <field>  
337 - <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>  
338 - <type>String</type>  
339 - <length>-1</length>  
340 - <precision>-1</precision>  
341 - <trim_type>none</trim_type>  
342 - <repeat>N</repeat>  
343 - <format/>  
344 - <currency/>  
345 - <decimal/>  
346 - <group/>  
347 - </field>  
348 - <field>  
349 - <name>&#x6240;&#x5c5e;&#x516c;&#x53f8;</name>  
350 - <type>String</type>  
351 - <length>-1</length>  
352 - <precision>-1</precision>  
353 - <trim_type>none</trim_type>  
354 - <repeat>N</repeat>  
355 - <format/>  
356 - <currency/>  
357 - <decimal/>  
358 - <group/>  
359 - </field>  
360 - <field>  
361 - <name>&#x6240;&#x5c5e;&#x516c;&#x53f8;&#x4ee3;&#x7801;</name>  
362 - <type>String</type>  
363 - <length>-1</length>  
364 - <precision>-1</precision>  
365 - <trim_type>none</trim_type>  
366 - <repeat>N</repeat>  
367 - <format/>  
368 - <currency/>  
369 - <decimal/>  
370 - <group/>  
371 - </field>  
372 - <field>  
373 - <name>&#x6240;&#x5c5e;&#x5206;&#x516c;&#x53f8;</name>  
374 - <type>String</type>  
375 - <length>-1</length>  
376 - <precision>-1</precision>  
377 - <trim_type>none</trim_type>  
378 - <repeat>N</repeat>  
379 - <format/>  
380 - <currency/>  
381 - <decimal/>  
382 - <group/>  
383 - </field>  
384 - <field>  
385 - <name>&#x6240;&#x5c5e;&#x5206;&#x516c;&#x53f8;&#x4ee3;&#x7801;</name>  
386 - <type>String</type>  
387 - <length>-1</length>  
388 - <precision>-1</precision>  
389 - <trim_type>none</trim_type>  
390 - <repeat>N</repeat>  
391 - <format/>  
392 - <currency/>  
393 - <decimal/>  
394 - <group/>  
395 - </field>  
396 - <field>  
397 - <name>&#x8bbe;&#x5907;&#x4f9b;&#x5e94;&#x5382;&#x5546;</name>  
398 - <type>String</type>  
399 - <length>-1</length>  
400 - <precision>-1</precision>  
401 - <trim_type>none</trim_type>  
402 - <repeat>N</repeat>  
403 - <format/>  
404 - <currency/>  
405 - <decimal/>  
406 - <group/>  
407 - </field>  
408 - <field>  
409 - <name>&#x8bbe;&#x5907;&#x7ec8;&#x7aef;&#x53f7;</name>  
410 - <type>String</type>  
411 - <length>-1</length>  
412 - <precision>-1</precision>  
413 - <trim_type>none</trim_type>  
414 - <repeat>N</repeat>  
415 - <format/>  
416 - <currency/>  
417 - <decimal/>  
418 - <group/>  
419 - </field>  
420 - </fields>  
421 - <sheets>  
422 - <sheet>  
423 - <name>&#x5de5;&#x4f5c;&#x8868;1</name>  
424 - <startrow>0</startrow>  
425 - <startcol>0</startcol>  
426 - </sheet>  
427 - </sheets>  
428 - <strict_types>N</strict_types>  
429 - <error_ignored>N</error_ignored>  
430 - <error_line_skipped>N</error_line_skipped>  
431 - <bad_line_files_destination_directory/>  
432 - <bad_line_files_extension>warning</bad_line_files_extension>  
433 - <error_line_files_destination_directory/>  
434 - <error_line_files_extension>error</error_line_files_extension>  
435 - <line_number_files_destination_directory/>  
436 - <line_number_files_extension>line</line_number_files_extension>  
437 - <shortFileFieldName/>  
438 - <pathFieldName/>  
439 - <hiddenFieldName/>  
440 - <lastModificationTimeFieldName/>  
441 - <uriNameFieldName/>  
442 - <rootUriNameFieldName/>  
443 - <extensionFieldName/>  
444 - <sizeFieldName/>  
445 - <spreadsheet_type>JXL</spreadsheet_type>  
446 - <cluster_schema/>  
447 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
448 - <xloc>131</xloc>  
449 - <yloc>58</yloc>  
450 - <draw>Y</draw>  
451 - </GUI>  
452 - </step>  
453 -  
454 - <step>  
455 - <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars 2</name>  
456 - <type>InsertUpdate</type>  
457 - <description/>  
458 - <distribute>Y</distribute>  
459 - <custom_distribution/>  
460 - <copies>1</copies>  
461 - <partitioning>  
462 - <method>none</method>  
463 - <schema_name/>  
464 - </partitioning>  
465 - <connection>bus_control_variable</connection>  
466 - <commit>1000</commit>  
467 - <update_bypassed>N</update_bypassed>  
468 - <lookup>  
469 - <schema/>  
470 - <table>bsth_c_cars</table>  
471 - <key>  
472 - <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>  
473 - <field>inside_code</field>  
474 - <condition>&#x3d;</condition>  
475 - <name2/>  
476 - </key>  
477 - <value>  
478 - <name>car_plate</name>  
479 - <rename>&#x8f66;&#x724c;&#x53f7;</rename>  
480 - <update>Y</update>  
481 - </value>  
482 - <value>  
483 - <name>car_code</name>  
484 - <rename>&#x8f66;&#x8f86;&#x7f16;&#x7801;</rename>  
485 - <update>Y</update>  
486 - </value>  
487 - <value>  
488 - <name>inside_code</name>  
489 - <rename>&#x5185;&#x90e8;&#x7f16;&#x7801;</rename>  
490 - <update>Y</update>  
491 - </value>  
492 - <value>  
493 - <name>company</name>  
494 - <rename>&#x6240;&#x5c5e;&#x516c;&#x53f8;</rename>  
495 - <update>Y</update>  
496 - </value>  
497 - <value>  
498 - <name>business_code</name>  
499 - <rename>&#x6240;&#x5c5e;&#x516c;&#x53f8;&#x4ee3;&#x7801;</rename>  
500 - <update>Y</update>  
501 - </value>  
502 - <value>  
503 - <name>branche_company</name>  
504 - <rename>&#x6240;&#x5c5e;&#x5206;&#x516c;&#x53f8;</rename>  
505 - <update>Y</update>  
506 - </value>  
507 - <value>  
508 - <name>branche_company_code</name>  
509 - <rename>&#x6240;&#x5c5e;&#x5206;&#x516c;&#x53f8;&#x4ee3;&#x7801;</rename>  
510 - <update>Y</update>  
511 - </value>  
512 - <value>  
513 - <name>supplier_name</name>  
514 - <rename>&#x8bbe;&#x5907;&#x4f9b;&#x5e94;&#x5382;&#x5546;</rename>  
515 - <update>Y</update>  
516 - </value>  
517 - <value>  
518 - <name>equipment_code</name>  
519 - <rename>&#x8bbe;&#x5907;&#x7ec8;&#x7aef;&#x53f7;</rename>  
520 - <update>Y</update>  
521 - </value>  
522 - </lookup>  
523 - <cluster_schema/>  
524 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
525 - <xloc>516</xloc>  
526 - <yloc>138</yloc>  
527 - <draw>Y</draw>  
528 - </GUI>  
529 - </step>  
530 -  
531 - <step>  
532 - <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>  
533 - <type>GetVariable</type>  
534 - <description/>  
535 - <distribute>Y</distribute>  
536 - <custom_distribution/>  
537 - <copies>1</copies>  
538 - <partitioning>  
539 - <method>none</method>  
540 - <schema_name/>  
541 - </partitioning>  
542 - <fields>  
543 - <field>  
544 - <name>filepath_</name>  
545 - <variable>&#x24;&#x7b;filepath&#x7d;</variable>  
546 - <type>String</type>  
547 - <format/>  
548 - <currency/>  
549 - <decimal/>  
550 - <group/>  
551 - <length>-1</length>  
552 - <precision>-1</precision>  
553 - <trim_type>none</trim_type>  
554 - </field>  
555 - <field>  
556 - <name>erroroutputdir_</name>  
557 - <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>  
558 - <type>String</type>  
559 - <format/>  
560 - <currency/>  
561 - <decimal/>  
562 - <group/>  
563 - <length>-1</length>  
564 - <precision>-1</precision>  
565 - <trim_type>none</trim_type>  
566 - </field>  
567 - </fields>  
568 - <cluster_schema/>  
569 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
570 - <xloc>134</xloc>  
571 - <yloc>183</yloc>  
572 - <draw>Y</draw>  
573 - </GUI>  
574 - </step>  
575 -  
576 - <step>  
577 - <name>&#x9519;&#x8bef;&#x8f93;&#x51fa; 2</name>  
578 - <type>ExcelOutput</type>  
579 - <description/>  
580 - <distribute>Y</distribute>  
581 - <custom_distribution/>  
582 - <copies>1</copies>  
583 - <partitioning>  
584 - <method>none</method>  
585 - <schema_name/>  
586 - </partitioning>  
587 - <header>Y</header>  
588 - <footer>N</footer>  
589 - <encoding/>  
590 - <append>N</append>  
591 - <add_to_result_filenames>Y</add_to_result_filenames>  
592 - <file>  
593 - <name>&#x24;&#x7b;erroroutputdir&#x7d;&#x2f;&#x8f66;&#x8f86;&#x57fa;&#x7840;&#x4fe1;&#x606f;_&#x9519;&#x8bef;</name>  
594 - <extention>xls</extention>  
595 - <do_not_open_newfile_init>N</do_not_open_newfile_init>  
596 - <create_parent_folder>N</create_parent_folder>  
597 - <split>N</split>  
598 - <add_date>N</add_date>  
599 - <add_time>N</add_time>  
600 - <SpecifyFormat>N</SpecifyFormat>  
601 - <date_time_format/>  
602 - <sheetname>Sheet1</sheetname>  
603 - <autosizecolums>N</autosizecolums>  
604 - <nullisblank>N</nullisblank>  
605 - <protect_sheet>N</protect_sheet>  
606 - <password>Encrypted </password>  
607 - <splitevery>0</splitevery>  
608 - <usetempfiles>N</usetempfiles>  
609 - <tempdirectory/>  
610 - </file>  
611 - <template>  
612 - <enabled>N</enabled>  
613 - <append>N</append>  
614 - <filename>template.xls</filename>  
615 - </template>  
616 - <fields>  
617 - <field>  
618 - <name>&#x8f66;&#x724c;&#x53f7;</name>  
619 - <type>String</type>  
620 - <format/>  
621 - </field>  
622 - <field>  
623 - <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>  
624 - <type>String</type>  
625 - <format/>  
626 - </field>  
627 - <field>  
628 - <name>&#x6240;&#x5c5e;&#x516c;&#x53f8;</name>  
629 - <type>String</type>  
630 - <format/>  
631 - </field>  
632 - <field>  
633 - <name>&#x6240;&#x5c5e;&#x516c;&#x53f8;&#x4ee3;&#x7801;</name>  
634 - <type>String</type>  
635 - <format/>  
636 - </field>  
637 - <field>  
638 - <name>&#x6240;&#x5c5e;&#x5206;&#x516c;&#x53f8;</name>  
639 - <type>String</type>  
640 - <format/>  
641 - </field>  
642 - <field>  
643 - <name>&#x6240;&#x5c5e;&#x5206;&#x516c;&#x53f8;&#x4ee3;&#x7801;</name>  
644 - <type>String</type>  
645 - <format/>  
646 - </field>  
647 - <field>  
648 - <name>&#x8bbe;&#x5907;&#x4f9b;&#x5e94;&#x5382;&#x5546;</name>  
649 - <type>String</type>  
650 - <format/>  
651 - </field>  
652 - <field>  
653 - <name>&#x8bbe;&#x5907;&#x7ec8;&#x7aef;&#x53f7;</name>  
654 - <type>String</type>  
655 - <format/>  
656 - </field>  
657 - <field>  
658 - <name>error_count</name>  
659 - <type>Integer</type>  
660 - <format/>  
661 - </field>  
662 - <field>  
663 - <name>error_desc</name>  
664 - <type>String</type>  
665 - <format/>  
666 - </field>  
667 - <field>  
668 - <name>error_column1</name>  
669 - <type>String</type>  
670 - <format/>  
671 - </field>  
672 - <field>  
673 - <name>error_column2</name>  
674 - <type>String</type>  
675 - <format/>  
676 - </field>  
677 - </fields>  
678 - <custom>  
679 - <header_font_name>arial</header_font_name>  
680 - <header_font_size>10</header_font_size>  
681 - <header_font_bold>N</header_font_bold>  
682 - <header_font_italic>N</header_font_italic>  
683 - <header_font_underline>no</header_font_underline>  
684 - <header_font_orientation>horizontal</header_font_orientation>  
685 - <header_font_color>black</header_font_color>  
686 - <header_background_color>none</header_background_color>  
687 - <header_row_height>255</header_row_height>  
688 - <header_alignment>left</header_alignment>  
689 - <header_image/>  
690 - <row_font_name>arial</row_font_name>  
691 - <row_font_size>10</row_font_size>  
692 - <row_font_color>black</row_font_color>  
693 - <row_background_color>none</row_background_color>  
694 - </custom>  
695 - <cluster_schema/>  
696 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
697 - <xloc>328</xloc>  
698 - <yloc>140</yloc>  
699 - <draw>Y</draw>  
700 - </GUI>  
701 - </step>  
702 -  
703 - <step_error_handling>  
704 - <error>  
705 - <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars 2</source_step>  
706 - <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa; 2</target_step>  
707 - <is_enabled>Y</is_enabled>  
708 - <nr_valuename>error_count</nr_valuename>  
709 - <descriptions_valuename>error_desc</descriptions_valuename>  
710 - <fields_valuename>error_column1</fields_valuename>  
711 - <codes_valuename>error_column2</codes_valuename>  
712 - <max_errors/>  
713 - <max_pct_errors/>  
714 - <min_pct_rows/>  
715 - </error>  
716 - </step_error_handling>  
717 - <slave-step-copy-partition-distribution>  
718 -</slave-step-copy-partition-distribution>  
719 - <slave_transformation>N</slave_transformation>  
720 -  
721 -</transformation> 1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>&#x8f66;&#x8f86;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</name>
  5 + <description>&#x8f66;&#x8f86;&#x4fe1;&#x606f;&#x5bfc;&#x5165;</description>
  6 + <extended_description>&#x8f66;&#x8f86;&#x57fa;&#x7840;&#x4fe1;&#x606f;</extended_description>
  7 + <trans_version/>
  8 + <trans_type>Normal</trans_type>
  9 + <trans_status>0</trans_status>
  10 + <directory>&#x2f;</directory>
  11 + <parameters>
  12 + <parameter>
  13 + <name>erroroutputdir</name>
  14 + <default_value/>
  15 + <description>ktr step&#x914d;&#x7f6e;&#x7684;&#x9519;&#x8bef;&#x8f93;&#x51fa;&#x76ee;&#x5f55;</description>
  16 + </parameter>
  17 + <parameter>
  18 + <name>filepath</name>
  19 + <default_value/>
  20 + <description>&#x5f85;&#x5904;&#x7406;&#x5bfc;&#x5165;&#x7684;excel&#x6587;&#x4ef6;</description>
  21 + </parameter>
  22 + </parameters>
  23 + <log>
  24 +<trans-log-table><connection/>
  25 +<schema/>
  26 +<table/>
  27 +<size_limit_lines/>
  28 +<interval/>
  29 +<timeout_days/>
  30 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field><field><id>EXECUTING_SERVER</id><enabled>N</enabled><name>EXECUTING_SERVER</name></field><field><id>EXECUTING_USER</id><enabled>N</enabled><name>EXECUTING_USER</name></field><field><id>CLIENT</id><enabled>N</enabled><name>CLIENT</name></field></trans-log-table>
  31 +<perf-log-table><connection/>
  32 +<schema/>
  33 +<table/>
  34 +<interval/>
  35 +<timeout_days/>
  36 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table>
  37 +<channel-log-table><connection/>
  38 +<schema/>
  39 +<table/>
  40 +<timeout_days/>
  41 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table>
  42 +<step-log-table><connection/>
  43 +<schema/>
  44 +<table/>
  45 +<timeout_days/>
  46 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table>
  47 +<metrics-log-table><connection/>
  48 +<schema/>
  49 +<table/>
  50 +<timeout_days/>
  51 +<field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>METRICS_DATE</id><enabled>Y</enabled><name>METRICS_DATE</name></field><field><id>METRICS_CODE</id><enabled>Y</enabled><name>METRICS_CODE</name></field><field><id>METRICS_DESCRIPTION</id><enabled>Y</enabled><name>METRICS_DESCRIPTION</name></field><field><id>METRICS_SUBJECT</id><enabled>Y</enabled><name>METRICS_SUBJECT</name></field><field><id>METRICS_TYPE</id><enabled>Y</enabled><name>METRICS_TYPE</name></field><field><id>METRICS_VALUE</id><enabled>Y</enabled><name>METRICS_VALUE</name></field></metrics-log-table>
  52 + </log>
  53 + <maxdate>
  54 + <connection/>
  55 + <table/>
  56 + <field/>
  57 + <offset>0.0</offset>
  58 + <maxdiff>0.0</maxdiff>
  59 + </maxdate>
  60 + <size_rowset>10000</size_rowset>
  61 + <sleep_time_empty>50</sleep_time_empty>
  62 + <sleep_time_full>50</sleep_time_full>
  63 + <unique_connections>N</unique_connections>
  64 + <feedback_shown>Y</feedback_shown>
  65 + <feedback_size>50000</feedback_size>
  66 + <using_thread_priorities>Y</using_thread_priorities>
  67 + <shared_objects_file/>
  68 + <capture_step_performance>N</capture_step_performance>
  69 + <step_performance_capturing_delay>1000</step_performance_capturing_delay>
  70 + <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
  71 + <dependencies>
  72 + </dependencies>
  73 + <partitionschemas>
  74 + </partitionschemas>
  75 + <slaveservers>
  76 + </slaveservers>
  77 + <clusterschemas>
  78 + </clusterschemas>
  79 + <created_user>-</created_user>
  80 + <created_date>2016&#x2f;06&#x2f;23 17&#x3a;44&#x3a;46.781</created_date>
  81 + <modified_user>-</modified_user>
  82 + <modified_date>2016&#x2f;06&#x2f;23 17&#x3a;44&#x3a;46.781</modified_date>
  83 + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
  84 + <is_key_private>N</is_key_private>
  85 + </info>
  86 + <notepads>
  87 + </notepads>
  88 + <connection>
  89 + <name>192.168.168.1_jwgl_dw</name>
  90 + <server>192.168.168.1</server>
  91 + <type>ORACLE</type>
  92 + <access>Native</access>
  93 + <database>orcl</database>
  94 + <port>1521</port>
  95 + <username>jwgl_dw</username>
  96 + <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password>
  97 + <servername/>
  98 + <data_tablespace/>
  99 + <index_tablespace/>
  100 + <attributes>
  101 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  102 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  103 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  104 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  105 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  106 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  107 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  108 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  109 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  110 + </attributes>
  111 + </connection>
  112 + <connection>
  113 + <name>bus_control_variable</name>
  114 + <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
  115 + <type>MYSQL</type>
  116 + <access>Native</access>
  117 + <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
  118 + <port>3306</port>
  119 + <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
  120 + <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
  121 + <servername/>
  122 + <data_tablespace/>
  123 + <index_tablespace/>
  124 + <attributes>
  125 + <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
  126 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  127 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  128 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  129 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  130 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  131 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  132 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  133 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  134 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  135 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  136 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  137 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  138 + </attributes>
  139 + </connection>
  140 + <connection>
  141 + <name>bus_control_&#x516c;&#x53f8;_201</name>
  142 + <server>localhost</server>
  143 + <type>MYSQL</type>
  144 + <access>Native</access>
  145 + <database>control</database>
  146 + <port>3306</port>
  147 + <username>root</username>
  148 + <password>Encrypted </password>
  149 + <servername/>
  150 + <data_tablespace/>
  151 + <index_tablespace/>
  152 + <attributes>
  153 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  154 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  155 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  156 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  157 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  158 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  159 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  160 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  161 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  162 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  163 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  164 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  165 + </attributes>
  166 + </connection>
  167 + <connection>
  168 + <name>bus_control_&#x672c;&#x673a;</name>
  169 + <server>localhost</server>
  170 + <type>MYSQL</type>
  171 + <access>Native</access>
  172 + <database>control</database>
  173 + <port>3306</port>
  174 + <username>root</username>
  175 + <password>Encrypted </password>
  176 + <servername/>
  177 + <data_tablespace/>
  178 + <index_tablespace/>
  179 + <attributes>
  180 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  181 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  182 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  183 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  184 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  185 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  186 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  187 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  188 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  189 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  190 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  191 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  192 + </attributes>
  193 + </connection>
  194 + <connection>
  195 + <name>xlab_mysql_youle</name>
  196 + <server>101.231.124.8</server>
  197 + <type>MYSQL</type>
  198 + <access>Native</access>
  199 + <database>xlab_youle</database>
  200 + <port>45687</port>
  201 + <username>xlab-youle</username>
  202 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
  203 + <servername/>
  204 + <data_tablespace/>
  205 + <index_tablespace/>
  206 + <attributes>
  207 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  208 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  209 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  210 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  211 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  212 + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
  213 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  214 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  215 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  216 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  217 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  218 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  219 + </attributes>
  220 + </connection>
  221 + <connection>
  222 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  223 + <server>localhost</server>
  224 + <type>MYSQL</type>
  225 + <access>Native</access>
  226 + <database>xlab_youle</database>
  227 + <port>3306</port>
  228 + <username>root</username>
  229 + <password>Encrypted </password>
  230 + <servername/>
  231 + <data_tablespace/>
  232 + <index_tablespace/>
  233 + <attributes>
  234 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  235 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  236 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  237 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  238 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  239 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  240 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  241 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  242 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  243 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  244 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  245 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  246 + </attributes>
  247 + </connection>
  248 + <connection>
  249 + <name>xlab_youle</name>
  250 + <server/>
  251 + <type>MYSQL</type>
  252 + <access>JNDI</access>
  253 + <database>xlab_youle</database>
  254 + <port>1521</port>
  255 + <username/>
  256 + <password>Encrypted </password>
  257 + <servername/>
  258 + <data_tablespace/>
  259 + <index_tablespace/>
  260 + <attributes>
  261 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  262 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  263 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  264 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  265 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  266 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  267 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  268 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  269 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  270 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  271 + </attributes>
  272 + </connection>
  273 + <order>
  274 + <hop> <from>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</from><to>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</to><enabled>Y</enabled> </hop>
  275 + <hop> <from>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars 2</from><to>&#x9519;&#x8bef;&#x8f93;&#x51fa; 2</to><enabled>Y</enabled> </hop>
  276 + <hop> <from>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</from><to>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars 2</to><enabled>Y</enabled> </hop>
  277 + </order>
  278 + <step>
  279 + <name>&#x539f;&#x59cb;&#x7cfb;&#x7edf;&#x5bfc;&#x51fa;&#x7684;Excel&#x8f93;&#x5165;</name>
  280 + <type>ExcelInput</type>
  281 + <description/>
  282 + <distribute>Y</distribute>
  283 + <custom_distribution/>
  284 + <copies>1</copies>
  285 + <partitioning>
  286 + <method>none</method>
  287 + <schema_name/>
  288 + </partitioning>
  289 + <header>Y</header>
  290 + <noempty>Y</noempty>
  291 + <stoponempty>N</stoponempty>
  292 + <filefield/>
  293 + <sheetfield/>
  294 + <sheetrownumfield/>
  295 + <rownumfield/>
  296 + <sheetfield/>
  297 + <filefield/>
  298 + <limit>0</limit>
  299 + <encoding/>
  300 + <add_to_result_filenames>Y</add_to_result_filenames>
  301 + <accept_filenames>Y</accept_filenames>
  302 + <accept_field>filepath_</accept_field>
  303 + <accept_stepname>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</accept_stepname>
  304 + <file>
  305 + <name/>
  306 + <filemask/>
  307 + <exclude_filemask/>
  308 + <file_required>N</file_required>
  309 + <include_subfolders>N</include_subfolders>
  310 + </file>
  311 + <fields>
  312 + <field>
  313 + <name>&#x8f66;&#x724c;&#x53f7;</name>
  314 + <type>String</type>
  315 + <length>-1</length>
  316 + <precision>-1</precision>
  317 + <trim_type>none</trim_type>
  318 + <repeat>N</repeat>
  319 + <format/>
  320 + <currency/>
  321 + <decimal/>
  322 + <group/>
  323 + </field>
  324 + <field>
  325 + <name>&#x8f66;&#x8f86;&#x7f16;&#x7801;</name>
  326 + <type>String</type>
  327 + <length>-1</length>
  328 + <precision>-1</precision>
  329 + <trim_type>none</trim_type>
  330 + <repeat>N</repeat>
  331 + <format/>
  332 + <currency/>
  333 + <decimal/>
  334 + <group/>
  335 + </field>
  336 + <field>
  337 + <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
  338 + <type>String</type>
  339 + <length>-1</length>
  340 + <precision>-1</precision>
  341 + <trim_type>none</trim_type>
  342 + <repeat>N</repeat>
  343 + <format/>
  344 + <currency/>
  345 + <decimal/>
  346 + <group/>
  347 + </field>
  348 + <field>
  349 + <name>&#x6240;&#x5c5e;&#x516c;&#x53f8;</name>
  350 + <type>String</type>
  351 + <length>-1</length>
  352 + <precision>-1</precision>
  353 + <trim_type>none</trim_type>
  354 + <repeat>N</repeat>
  355 + <format/>
  356 + <currency/>
  357 + <decimal/>
  358 + <group/>
  359 + </field>
  360 + <field>
  361 + <name>&#x6240;&#x5c5e;&#x516c;&#x53f8;&#x4ee3;&#x7801;</name>
  362 + <type>String</type>
  363 + <length>-1</length>
  364 + <precision>-1</precision>
  365 + <trim_type>none</trim_type>
  366 + <repeat>N</repeat>
  367 + <format/>
  368 + <currency/>
  369 + <decimal/>
  370 + <group/>
  371 + </field>
  372 + <field>
  373 + <name>&#x6240;&#x5c5e;&#x5206;&#x516c;&#x53f8;</name>
  374 + <type>String</type>
  375 + <length>-1</length>
  376 + <precision>-1</precision>
  377 + <trim_type>none</trim_type>
  378 + <repeat>N</repeat>
  379 + <format/>
  380 + <currency/>
  381 + <decimal/>
  382 + <group/>
  383 + </field>
  384 + <field>
  385 + <name>&#x6240;&#x5c5e;&#x5206;&#x516c;&#x53f8;&#x4ee3;&#x7801;</name>
  386 + <type>String</type>
  387 + <length>-1</length>
  388 + <precision>-1</precision>
  389 + <trim_type>none</trim_type>
  390 + <repeat>N</repeat>
  391 + <format/>
  392 + <currency/>
  393 + <decimal/>
  394 + <group/>
  395 + </field>
  396 + <field>
  397 + <name>&#x8bbe;&#x5907;&#x4f9b;&#x5e94;&#x5382;&#x5546;</name>
  398 + <type>String</type>
  399 + <length>-1</length>
  400 + <precision>-1</precision>
  401 + <trim_type>none</trim_type>
  402 + <repeat>N</repeat>
  403 + <format/>
  404 + <currency/>
  405 + <decimal/>
  406 + <group/>
  407 + </field>
  408 + <field>
  409 + <name>&#x8bbe;&#x5907;&#x7ec8;&#x7aef;&#x53f7;</name>
  410 + <type>String</type>
  411 + <length>-1</length>
  412 + <precision>-1</precision>
  413 + <trim_type>none</trim_type>
  414 + <repeat>N</repeat>
  415 + <format/>
  416 + <currency/>
  417 + <decimal/>
  418 + <group/>
  419 + </field>
  420 + </fields>
  421 + <sheets>
  422 + <sheet>
  423 + <name>&#x5de5;&#x4f5c;&#x8868;1</name>
  424 + <startrow>0</startrow>
  425 + <startcol>0</startcol>
  426 + </sheet>
  427 + </sheets>
  428 + <strict_types>N</strict_types>
  429 + <error_ignored>N</error_ignored>
  430 + <error_line_skipped>N</error_line_skipped>
  431 + <bad_line_files_destination_directory/>
  432 + <bad_line_files_extension>warning</bad_line_files_extension>
  433 + <error_line_files_destination_directory/>
  434 + <error_line_files_extension>error</error_line_files_extension>
  435 + <line_number_files_destination_directory/>
  436 + <line_number_files_extension>line</line_number_files_extension>
  437 + <shortFileFieldName/>
  438 + <pathFieldName/>
  439 + <hiddenFieldName/>
  440 + <lastModificationTimeFieldName/>
  441 + <uriNameFieldName/>
  442 + <rootUriNameFieldName/>
  443 + <extensionFieldName/>
  444 + <sizeFieldName/>
  445 + <spreadsheet_type>JXL</spreadsheet_type>
  446 + <cluster_schema/>
  447 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  448 + <xloc>131</xloc>
  449 + <yloc>58</yloc>
  450 + <draw>Y</draw>
  451 + </GUI>
  452 + </step>
  453 +
  454 + <step>
  455 + <name>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars 2</name>
  456 + <type>InsertUpdate</type>
  457 + <description/>
  458 + <distribute>Y</distribute>
  459 + <custom_distribution/>
  460 + <copies>1</copies>
  461 + <partitioning>
  462 + <method>none</method>
  463 + <schema_name/>
  464 + </partitioning>
  465 + <connection>bus_control_variable</connection>
  466 + <commit>1000</commit>
  467 + <update_bypassed>N</update_bypassed>
  468 + <lookup>
  469 + <schema/>
  470 + <table>bsth_c_cars</table>
  471 + <key>
  472 + <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
  473 + <field>inside_code</field>
  474 + <condition>&#x3d;</condition>
  475 + <name2/>
  476 + </key>
  477 + <value>
  478 + <name>car_plate</name>
  479 + <rename>&#x8f66;&#x724c;&#x53f7;</rename>
  480 + <update>Y</update>
  481 + </value>
  482 + <value>
  483 + <name>car_code</name>
  484 + <rename>&#x8f66;&#x8f86;&#x7f16;&#x7801;</rename>
  485 + <update>Y</update>
  486 + </value>
  487 + <value>
  488 + <name>inside_code</name>
  489 + <rename>&#x5185;&#x90e8;&#x7f16;&#x7801;</rename>
  490 + <update>Y</update>
  491 + </value>
  492 + <value>
  493 + <name>company</name>
  494 + <rename>&#x6240;&#x5c5e;&#x516c;&#x53f8;</rename>
  495 + <update>Y</update>
  496 + </value>
  497 + <value>
  498 + <name>business_code</name>
  499 + <rename>&#x6240;&#x5c5e;&#x516c;&#x53f8;&#x4ee3;&#x7801;</rename>
  500 + <update>Y</update>
  501 + </value>
  502 + <value>
  503 + <name>branche_company</name>
  504 + <rename>&#x6240;&#x5c5e;&#x5206;&#x516c;&#x53f8;</rename>
  505 + <update>Y</update>
  506 + </value>
  507 + <value>
  508 + <name>branche_company_code</name>
  509 + <rename>&#x6240;&#x5c5e;&#x5206;&#x516c;&#x53f8;&#x4ee3;&#x7801;</rename>
  510 + <update>Y</update>
  511 + </value>
  512 + <value>
  513 + <name>supplier_name</name>
  514 + <rename>&#x8bbe;&#x5907;&#x4f9b;&#x5e94;&#x5382;&#x5546;</rename>
  515 + <update>Y</update>
  516 + </value>
  517 + <value>
  518 + <name>equipment_code</name>
  519 + <rename>&#x8bbe;&#x5907;&#x7ec8;&#x7aef;&#x53f7;</rename>
  520 + <update>Y</update>
  521 + </value>
  522 + </lookup>
  523 + <cluster_schema/>
  524 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  525 + <xloc>516</xloc>
  526 + <yloc>138</yloc>
  527 + <draw>Y</draw>
  528 + </GUI>
  529 + </step>
  530 +
  531 + <step>
  532 + <name>&#x83b7;&#x53d6;&#x53d8;&#x91cf;</name>
  533 + <type>GetVariable</type>
  534 + <description/>
  535 + <distribute>Y</distribute>
  536 + <custom_distribution/>
  537 + <copies>1</copies>
  538 + <partitioning>
  539 + <method>none</method>
  540 + <schema_name/>
  541 + </partitioning>
  542 + <fields>
  543 + <field>
  544 + <name>filepath_</name>
  545 + <variable>&#x24;&#x7b;filepath&#x7d;</variable>
  546 + <type>String</type>
  547 + <format/>
  548 + <currency/>
  549 + <decimal/>
  550 + <group/>
  551 + <length>-1</length>
  552 + <precision>-1</precision>
  553 + <trim_type>none</trim_type>
  554 + </field>
  555 + <field>
  556 + <name>erroroutputdir_</name>
  557 + <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
  558 + <type>String</type>
  559 + <format/>
  560 + <currency/>
  561 + <decimal/>
  562 + <group/>
  563 + <length>-1</length>
  564 + <precision>-1</precision>
  565 + <trim_type>none</trim_type>
  566 + </field>
  567 + </fields>
  568 + <cluster_schema/>
  569 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  570 + <xloc>134</xloc>
  571 + <yloc>183</yloc>
  572 + <draw>Y</draw>
  573 + </GUI>
  574 + </step>
  575 +
  576 + <step>
  577 + <name>&#x9519;&#x8bef;&#x8f93;&#x51fa; 2</name>
  578 + <type>ExcelOutput</type>
  579 + <description/>
  580 + <distribute>Y</distribute>
  581 + <custom_distribution/>
  582 + <copies>1</copies>
  583 + <partitioning>
  584 + <method>none</method>
  585 + <schema_name/>
  586 + </partitioning>
  587 + <header>Y</header>
  588 + <footer>N</footer>
  589 + <encoding/>
  590 + <append>N</append>
  591 + <add_to_result_filenames>Y</add_to_result_filenames>
  592 + <file>
  593 + <name>&#x24;&#x7b;erroroutputdir&#x7d;&#x2f;&#x8f66;&#x8f86;&#x57fa;&#x7840;&#x4fe1;&#x606f;_&#x9519;&#x8bef;</name>
  594 + <extention>xls</extention>
  595 + <do_not_open_newfile_init>N</do_not_open_newfile_init>
  596 + <create_parent_folder>N</create_parent_folder>
  597 + <split>N</split>
  598 + <add_date>N</add_date>
  599 + <add_time>N</add_time>
  600 + <SpecifyFormat>N</SpecifyFormat>
  601 + <date_time_format/>
  602 + <sheetname>Sheet1</sheetname>
  603 + <autosizecolums>N</autosizecolums>
  604 + <nullisblank>N</nullisblank>
  605 + <protect_sheet>N</protect_sheet>
  606 + <password>Encrypted </password>
  607 + <splitevery>0</splitevery>
  608 + <usetempfiles>N</usetempfiles>
  609 + <tempdirectory/>
  610 + </file>
  611 + <template>
  612 + <enabled>N</enabled>
  613 + <append>N</append>
  614 + <filename>template.xls</filename>
  615 + </template>
  616 + <fields>
  617 + <field>
  618 + <name>&#x8f66;&#x724c;&#x53f7;</name>
  619 + <type>String</type>
  620 + <format/>
  621 + </field>
  622 + <field>
  623 + <name>&#x5185;&#x90e8;&#x7f16;&#x7801;</name>
  624 + <type>String</type>
  625 + <format/>
  626 + </field>
  627 + <field>
  628 + <name>&#x6240;&#x5c5e;&#x516c;&#x53f8;</name>
  629 + <type>String</type>
  630 + <format/>
  631 + </field>
  632 + <field>
  633 + <name>&#x6240;&#x5c5e;&#x516c;&#x53f8;&#x4ee3;&#x7801;</name>
  634 + <type>String</type>
  635 + <format/>
  636 + </field>
  637 + <field>
  638 + <name>&#x6240;&#x5c5e;&#x5206;&#x516c;&#x53f8;</name>
  639 + <type>String</type>
  640 + <format/>
  641 + </field>
  642 + <field>
  643 + <name>&#x6240;&#x5c5e;&#x5206;&#x516c;&#x53f8;&#x4ee3;&#x7801;</name>
  644 + <type>String</type>
  645 + <format/>
  646 + </field>
  647 + <field>
  648 + <name>&#x8bbe;&#x5907;&#x4f9b;&#x5e94;&#x5382;&#x5546;</name>
  649 + <type>String</type>
  650 + <format/>
  651 + </field>
  652 + <field>
  653 + <name>&#x8bbe;&#x5907;&#x7ec8;&#x7aef;&#x53f7;</name>
  654 + <type>String</type>
  655 + <format/>
  656 + </field>
  657 + <field>
  658 + <name>error_count</name>
  659 + <type>Integer</type>
  660 + <format/>
  661 + </field>
  662 + <field>
  663 + <name>error_desc</name>
  664 + <type>String</type>
  665 + <format/>
  666 + </field>
  667 + <field>
  668 + <name>error_column1</name>
  669 + <type>String</type>
  670 + <format/>
  671 + </field>
  672 + <field>
  673 + <name>error_column2</name>
  674 + <type>String</type>
  675 + <format/>
  676 + </field>
  677 + </fields>
  678 + <custom>
  679 + <header_font_name>arial</header_font_name>
  680 + <header_font_size>10</header_font_size>
  681 + <header_font_bold>N</header_font_bold>
  682 + <header_font_italic>N</header_font_italic>
  683 + <header_font_underline>no</header_font_underline>
  684 + <header_font_orientation>horizontal</header_font_orientation>
  685 + <header_font_color>black</header_font_color>
  686 + <header_background_color>none</header_background_color>
  687 + <header_row_height>255</header_row_height>
  688 + <header_alignment>left</header_alignment>
  689 + <header_image/>
  690 + <row_font_name>arial</row_font_name>
  691 + <row_font_size>10</row_font_size>
  692 + <row_font_color>black</row_font_color>
  693 + <row_background_color>none</row_background_color>
  694 + </custom>
  695 + <cluster_schema/>
  696 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  697 + <xloc>328</xloc>
  698 + <yloc>140</yloc>
  699 + <draw>Y</draw>
  700 + </GUI>
  701 + </step>
  702 +
  703 + <step_error_handling>
  704 + <error>
  705 + <source_step>&#x63d2;&#x5165;&#x2f;&#x66f4;&#x65b0;bsth_c_cars 2</source_step>
  706 + <target_step>&#x9519;&#x8bef;&#x8f93;&#x51fa; 2</target_step>
  707 + <is_enabled>Y</is_enabled>
  708 + <nr_valuename>error_count</nr_valuename>
  709 + <descriptions_valuename>error_desc</descriptions_valuename>
  710 + <fields_valuename>error_column1</fields_valuename>
  711 + <codes_valuename>error_column2</codes_valuename>
  712 + <max_errors/>
  713 + <max_pct_errors/>
  714 + <min_pct_rows/>
  715 + </error>
  716 + </step_error_handling>
  717 + <slave-step-copy-partition-distribution>
  718 +</slave-step-copy-partition-distribution>
  719 + <slave_transformation>N</slave_transformation>
  720 +
  721 +</transformation>
src/main/resources/datatools/ktrs/ttinfodetailDataInputMetaData.ktr
1 -<?xml version="1.0" encoding="UTF-8"?>  
2 -<transformation>  
3 - <info>  
4 - <name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x5bfc;&#x5165;&#x5143;&#x6570;&#x636e;</name>  
5 - <description/>  
6 - <extended_description/>  
7 - <trans_version/>  
8 - <trans_type>Normal</trans_type>  
9 - <trans_status>0</trans_status>  
10 - <directory>&#x2f;</directory>  
11 - <parameters>  
12 - <parameter>  
13 - <name>erroroutputdir</name>  
14 - <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project_code&#x2f;runtime_temp&#x2f;bsth_control_u_d_files&#x2f;erroroutput</default_value>  
15 - <description>ktr step&#x914d;&#x7f6e;&#x7684;&#x9519;&#x8bef;&#x8f93;&#x51fa;&#x76ee;&#x5f55;</description>  
16 - </parameter>  
17 - <parameter>  
18 - <name>excelfieldnames</name>  
19 - <default_value>&#x8def;&#x724c;,&#x51fa;&#x573a;,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;1,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;1,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;2,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;2,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;3,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;3,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;4,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;4,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;5,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;5,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;6,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;6,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;7,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;7,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;8,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;8,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;9,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;9,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;10,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;10,&#x8fdb;&#x573a;</default_value>  
20 - <description>&#x65f6;&#x523b;&#x8868;excel&#x8f93;&#x5165;&#x5b57;&#x6bb5;&#x540d;&#xff0c;&#x4ee5;&#x9017;&#x53f7;&#x8fde;&#x63a5;</description>  
21 - </parameter>  
22 - <parameter>  
23 - <name>filepath</name>  
24 - <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project_code&#x2f;bsth_project&#x2f;bsth_control_etl&#x2f;&#x95f5;&#x884c;&#x516c;&#x4ea4;&#x2f;&#x95f5;&#x884c;26&#x8def;&#x65f6;&#x523b;&#x8868;160630&#x65f6;&#x523b;&#x8868;.xls</default_value>  
25 - <description>&#x5f85;&#x5904;&#x7406;&#x5bfc;&#x5165;&#x7684;excel&#x6587;&#x4ef6;</description>  
26 - </parameter>  
27 - <parameter>  
28 - <name>injectktrfile</name>  
29 - <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project_code&#x2f;bsth_project&#x2f;bsth_control&#x2f;src&#x2f;main&#x2f;resources&#x2f;datatools&#x2f;ktrs&#x2f;ttinfodetailDataInput.ktr</default_value>  
30 - <description>&#x6ce8;&#x5165;&#x5143;&#x6570;&#x636e;&#x7684;ktr&#x6587;&#x4ef6;</description>  
31 - </parameter>  
32 - <parameter>  
33 - <name>lineinfoid</name>  
34 - <default_value>1000</default_value>  
35 - <description>&#x7ebf;&#x8def;&#x6807;&#x51c6;id</description>  
36 - </parameter>  
37 - <parameter>  
38 - <name>normalizefieldnames</name>  
39 - <default_value>&#x51fa;&#x573a;,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;1,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;1,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;2,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;2,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;3,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;3,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;4,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;4,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;5,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;5,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;6,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;6,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;7,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;7,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;8,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;8,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;9,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;9,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;10,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;10,&#x8fdb;&#x573a;</default_value>  
40 - <description>&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;&#x5b57;&#x6bb5;&#x540d;&#xff0c;&#x4ee5;&#x9017;&#x53f7;&#x8fde;&#x63a5;</description>  
41 - </parameter>  
42 - <parameter>  
43 - <name>sheetname</name>  
44 - <default_value>&#x5de5;&#x4f5c;&#x8868;1</default_value>  
45 - <description>xls sheet&#x540d;&#x5b57;</description>  
46 - </parameter>  
47 - <parameter>  
48 - <name>tccname</name>  
49 - <default_value>&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;&#x505c;&#x8f66;&#x573a;</default_value>  
50 - <description>&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</description>  
51 - </parameter>  
52 - <parameter>  
53 - <name>ttid</name>  
54 - <default_value>1</default_value>  
55 - <description>&#x65f6;&#x523b;&#x8868;id</description>  
56 - </parameter>  
57 - <parameter>  
58 - <name>ttinfoname</name>  
59 - <default_value>&#x8868;2</default_value>  
60 - <description>&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;</description>  
61 - </parameter>  
62 - <parameter>  
63 - <name>xlname</name>  
64 - <default_value>&#x95f5;&#x884c;26&#x8def;</default_value>  
65 - <description>&#x7ebf;&#x8def;&#x540d;&#x79f0;</description>  
66 - </parameter>  
67 - </parameters>  
68 - <log>  
69 -<trans-log-table><connection/>  
70 -<schema/>  
71 -<table/>  
72 -<size_limit_lines/>  
73 -<interval/>  
74 -<timeout_days/>  
75 -<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>  
76 -<perf-log-table><connection/>  
77 -<schema/>  
78 -<table/>  
79 -<interval/>  
80 -<timeout_days/>  
81 -<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>  
82 -<channel-log-table><connection/>  
83 -<schema/>  
84 -<table/>  
85 -<timeout_days/>  
86 -<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>  
87 -<step-log-table><connection/>  
88 -<schema/>  
89 -<table/>  
90 -<timeout_days/>  
91 -<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>  
92 -<metrics-log-table><connection/>  
93 -<schema/>  
94 -<table/>  
95 -<timeout_days/>  
96 -<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>  
97 - </log>  
98 - <maxdate>  
99 - <connection/>  
100 - <table/>  
101 - <field/>  
102 - <offset>0.0</offset>  
103 - <maxdiff>0.0</maxdiff>  
104 - </maxdate>  
105 - <size_rowset>10000</size_rowset>  
106 - <sleep_time_empty>50</sleep_time_empty>  
107 - <sleep_time_full>50</sleep_time_full>  
108 - <unique_connections>N</unique_connections>  
109 - <feedback_shown>Y</feedback_shown>  
110 - <feedback_size>50000</feedback_size>  
111 - <using_thread_priorities>Y</using_thread_priorities>  
112 - <shared_objects_file/>  
113 - <capture_step_performance>N</capture_step_performance>  
114 - <step_performance_capturing_delay>1000</step_performance_capturing_delay>  
115 - <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>  
116 - <dependencies>  
117 - </dependencies>  
118 - <partitionschemas>  
119 - </partitionschemas>  
120 - <slaveservers>  
121 - </slaveservers>  
122 - <clusterschemas>  
123 - </clusterschemas>  
124 - <created_user>-</created_user>  
125 - <created_date>2016&#x2f;07&#x2f;01 09&#x3a;55&#x3a;32.649</created_date>  
126 - <modified_user>-</modified_user>  
127 - <modified_date>2016&#x2f;07&#x2f;01 09&#x3a;55&#x3a;32.649</modified_date>  
128 - <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>  
129 - <is_key_private>N</is_key_private>  
130 - </info>  
131 - <notepads>  
132 - </notepads>  
133 - <connection>  
134 - <name>192.168.168.1_jwgl_dw</name>  
135 - <server>192.168.168.1</server>  
136 - <type>ORACLE</type>  
137 - <access>Native</access>  
138 - <database>orcl</database>  
139 - <port>1521</port>  
140 - <username>jwgl_dw</username>  
141 - <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password>  
142 - <servername/>  
143 - <data_tablespace/>  
144 - <index_tablespace/>  
145 - <attributes>  
146 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
147 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
148 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
149 - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>  
150 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
151 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
152 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>  
153 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>  
154 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
155 - </attributes>  
156 - </connection>  
157 - <connection>  
158 - <name>bus_control_variable</name>  
159 - <server>&#x24;&#x7b;v_db_ip&#x7d;</server>  
160 - <type>MYSQL</type>  
161 - <access>Native</access>  
162 - <database>&#x24;&#x7b;v_db_dname&#x7d;</database>  
163 - <port>3306</port>  
164 - <username>&#x24;&#x7b;v_db_uname&#x7d;</username>  
165 - <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>  
166 - <servername/>  
167 - <data_tablespace/>  
168 - <index_tablespace/>  
169 - <attributes>  
170 - <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>  
171 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
172 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
173 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
174 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
175 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
176 - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>  
177 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
178 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
179 - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>  
180 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>  
181 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>  
182 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
183 - </attributes>  
184 - </connection>  
185 - <connection>  
186 - <name>bus_control_&#x516c;&#x53f8;_201</name>  
187 - <server>localhost</server>  
188 - <type>MYSQL</type>  
189 - <access>Native</access>  
190 - <database>control</database>  
191 - <port>3306</port>  
192 - <username>root</username>  
193 - <password>Encrypted </password>  
194 - <servername/>  
195 - <data_tablespace/>  
196 - <index_tablespace/>  
197 - <attributes>  
198 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
199 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
200 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
201 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
202 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
203 - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>  
204 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
205 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
206 - <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>  
207 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>  
208 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>  
209 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
210 - </attributes>  
211 - </connection>  
212 - <connection>  
213 - <name>bus_control_&#x672c;&#x673a;</name>  
214 - <server>localhost</server>  
215 - <type>MYSQL</type>  
216 - <access>Native</access>  
217 - <database>control</database>  
218 - <port>3306</port>  
219 - <username>root</username>  
220 - <password>Encrypted </password>  
221 - <servername/>  
222 - <data_tablespace/>  
223 - <index_tablespace/>  
224 - <attributes>  
225 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
226 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
227 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
228 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
229 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
230 - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>  
231 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
232 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
233 - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>  
234 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>  
235 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>  
236 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
237 - </attributes>  
238 - </connection>  
239 - <connection>  
240 - <name>xlab_mysql_youle</name>  
241 - <server>101.231.124.8</server>  
242 - <type>MYSQL</type>  
243 - <access>Native</access>  
244 - <database>xlab_youle</database>  
245 - <port>45687</port>  
246 - <username>xlab-youle</username>  
247 - <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>  
248 - <servername/>  
249 - <data_tablespace/>  
250 - <index_tablespace/>  
251 - <attributes>  
252 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
253 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
254 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
255 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
256 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
257 - <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>  
258 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
259 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
260 - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>  
261 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>  
262 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>  
263 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
264 - </attributes>  
265 - </connection>  
266 - <connection>  
267 - <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>  
268 - <server>localhost</server>  
269 - <type>MYSQL</type>  
270 - <access>Native</access>  
271 - <database>xlab_youle</database>  
272 - <port>3306</port>  
273 - <username>root</username>  
274 - <password>Encrypted </password>  
275 - <servername/>  
276 - <data_tablespace/>  
277 - <index_tablespace/>  
278 - <attributes>  
279 - <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>  
280 - <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>  
281 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
282 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
283 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
284 - <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>  
285 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
286 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
287 - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>  
288 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>  
289 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>  
290 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
291 - </attributes>  
292 - </connection>  
293 - <connection>  
294 - <name>xlab_youle</name>  
295 - <server/>  
296 - <type>MYSQL</type>  
297 - <access>JNDI</access>  
298 - <database>xlab_youle</database>  
299 - <port>1521</port>  
300 - <username/>  
301 - <password>Encrypted </password>  
302 - <servername/>  
303 - <data_tablespace/>  
304 - <index_tablespace/>  
305 - <attributes>  
306 - <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>  
307 - <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>  
308 - <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>  
309 - <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>  
310 - <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>  
311 - <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>  
312 - <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>  
313 - <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>  
314 - <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>  
315 - <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>  
316 - </attributes>  
317 - </connection>  
318 - <order>  
319 - <hop> <from>&#x83b7;&#x53d6;excel&#x6587;&#x4ef6;&#x540d;</from><to>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</to><enabled>Y</enabled> </hop>  
320 - <hop> <from>&#x83b7;&#x53d6;excel&#x5b57;&#x6bb5;&#x540d;&#x5b57;&#x7b26;&#x4e32;</from><to>&#x9017;&#x53f7;&#x5207;&#x5206;&#x6210;&#x5b57;&#x6bb5;&#x540d;</to><enabled>Y</enabled> </hop>  
321 - <hop> <from>&#x9017;&#x53f7;&#x5207;&#x5206;&#x6210;&#x5b57;&#x6bb5;&#x540d;</from><to>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>  
322 - <hop> <from>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</from><to>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</to><enabled>Y</enabled> </hop>  
323 - <hop> <from>&#x83b7;&#x53d6;normalize&#x5b57;&#x6bb5;&#x540d;&#x5b57;&#x7b26;&#x4e32;</from><to>&#x9017;&#x53f7;&#x5207;&#x5206;&#x6210;&#x5b57;&#x6bb5;&#x540d; 2</to><enabled>Y</enabled> </hop>  
324 - <hop> <from>&#x9017;&#x53f7;&#x5207;&#x5206;&#x6210;&#x5b57;&#x6bb5;&#x540d; 2</from><to>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>  
325 - <hop> <from>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</from><to>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</to><enabled>Y</enabled> </hop>  
326 - <hop> <from>&#x83b7;&#x53d6;&#x7ebf;&#x8def;&#x540d;&#x79f0;</from><to>&#x589e;&#x52a0;&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata</to><enabled>Y</enabled> </hop>  
327 - <hop> <from>&#x589e;&#x52a0;&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata</from><to>&#x66ff;&#x6362;&#x7ebf;&#x8def;&#x540d;&#x79f0;</to><enabled>Y</enabled> </hop>  
328 - <hop> <from>&#x66ff;&#x6362;&#x7ebf;&#x8def;&#x540d;&#x79f0;</from><to>&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</to><enabled>Y</enabled> </hop>  
329 - <hop> <from>&#x589e;&#x52a0;&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata</from><to>&#x66ff;&#x6362;&#x505c;&#x8f66;&#x5382;&#x540d;&#x5b57; </to><enabled>Y</enabled> </hop>  
330 - <hop> <from>&#x66ff;&#x6362;&#x505c;&#x8f66;&#x5382;&#x540d;&#x5b57; </from><to>&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</to><enabled>Y</enabled> </hop>  
331 - <hop> <from>&#x83b7;&#x53d6;&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;</from><to>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;metadata</to><enabled>Y</enabled> </hop>  
332 - <hop> <from>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;metadata</from><to>&#x66ff;&#x6362;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;</to><enabled>Y</enabled> </hop>  
333 - <hop> <from>&#x66ff;&#x6362;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;</from><to>&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</to><enabled>Y</enabled> </hop>  
334 - <hop> <from>&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</from><to>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</to><enabled>Y</enabled> </hop>  
335 - <hop> <from>&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</from><to>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</to><enabled>Y</enabled> </hop>  
336 - <hop> <from>&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</from><to>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</to><enabled>Y</enabled> </hop>  
337 - <hop> <from>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</from><to>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</to><enabled>Y</enabled> </hop>  
338 - <hop> <from>&#x83b7;&#x53d6;&#x65f6;&#x523b;&#x8868;id</from><to>&#x5220;&#x9664;&#x4e4b;&#x524d;&#x7684;&#x660e;&#x7ec6;&#x4fe1;&#x606f;</to><enabled>Y</enabled> </hop>  
339 - <hop> <from>&#x83b7;&#x53d6;&#x7ebf;&#x8def;&#x6807;&#x51c6;id</from><to>&#x505c;&#x8f66;&#x573a;&#x7f16;&#x7801;</to><enabled>Y</enabled> </hop>  
340 - <hop> <from>&#x505c;&#x8f66;&#x573a;&#x7f16;&#x7801;</from><to>&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;</to><enabled>Y</enabled> </hop>  
341 - <hop> <from>&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;</from><to>&#x589e;&#x52a0;&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata</to><enabled>Y</enabled> </hop>  
342 - </order>  
343 - <step>  
344 - <name>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</name>  
345 - <type>MetaInject</type>  
346 - <description/>  
347 - <distribute>Y</distribute>  
348 - <custom_distribution/>  
349 - <copies>1</copies>  
350 - <partitioning>  
351 - <method>none</method>  
352 - <schema_name/>  
353 - </partitioning>  
354 - <specification_method>filename</specification_method>  
355 - <trans_object_id/>  
356 - <trans_name/>  
357 - <filename>&#x24;&#x7b;injectktrfile&#x7d;</filename>  
358 - <directory_path/>  
359 - <source_step/>  
360 - <source_output_fields> </source_output_fields> <target_file/>  
361 - <no_execution>N</no_execution>  
362 - <stream_source_step/>  
363 - <stream_target_step/>  
364 - <mappings> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>  
365 - <target_attribute_key>FORMAT</target_attribute_key>  
366 - <target_detail>Y</target_detail>  
367 - <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>  
368 - <source_field>format</source_field>  
369 - </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>  
370 - <target_attribute_key>REPEAT</target_attribute_key>  
371 - <target_detail>Y</target_detail>  
372 - <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>  
373 - <source_field>repeat</source_field>  
374 - </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>  
375 - <target_attribute_key>TRIM_TYPE</target_attribute_key>  
376 - <target_detail>Y</target_detail>  
377 - <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>  
378 - <source_field>trim_type</source_field>  
379 - </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>  
380 - <target_attribute_key>FILENAME</target_attribute_key>  
381 - <target_detail>Y</target_detail>  
382 - <source_step>&#x83b7;&#x53d6;excel&#x6587;&#x4ef6;&#x540d;</source_step>  
383 - <source_field>filepath_</source_field>  
384 - </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>  
385 - <target_attribute_key>PRECISION</target_attribute_key>  
386 - <target_detail>Y</target_detail>  
387 - <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>  
388 - <source_field>precision</source_field>  
389 - </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>  
390 - <target_attribute_key>TYPE</target_attribute_key>  
391 - <target_detail>Y</target_detail>  
392 - <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>  
393 - <source_field>type</source_field>  
394 - </mapping> <mapping> <target_step_name>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;&#xff0c;&#x7ebf;&#x8def;&#x540d;&#x5b57;&#xff0c;&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</target_step_name>  
395 - <target_attribute_key>DATA_VALUE</target_attribute_key>  
396 - <target_detail>Y</target_detail>  
397 - <source_step>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</source_step>  
398 - <source_field>col_value</source_field>  
399 - </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>  
400 - <target_attribute_key>LENGTH</target_attribute_key>  
401 - <target_detail>Y</target_detail>  
402 - <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>  
403 - <source_field>length</source_field>  
404 - </mapping> <mapping> <target_step_name>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;&#xff0c;&#x7ebf;&#x8def;&#x540d;&#x5b57;&#xff0c;&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</target_step_name>  
405 - <target_attribute_key>TYPE</target_attribute_key>  
406 - <target_detail>Y</target_detail>  
407 - <source_step>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</source_step>  
408 - <source_field>col_type</source_field>  
409 - </mapping> <mapping> <target_step_name>&#x884c;&#x8f6c;&#x5217;</target_step_name>  
410 - <target_attribute_key>NAME</target_attribute_key>  
411 - <target_detail>Y</target_detail>  
412 - <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</source_step>  
413 - <source_field>fieldName</source_field>  
414 - </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>  
415 - <target_attribute_key>NAME</target_attribute_key>  
416 - <target_detail>Y</target_detail>  
417 - <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>  
418 - <source_field>fieldname</source_field>  
419 - </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name>  
420 - <target_attribute_key>NAME</target_attribute_key>  
421 - <target_detail>Y</target_detail>  
422 - <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step>  
423 - <source_field>nfieldname</source_field>  
424 - </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>  
425 - <target_attribute_key>LENGTH</target_attribute_key>  
426 - <target_detail>Y</target_detail>  
427 - <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>  
428 - <source_field>length</source_field>  
429 - </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>  
430 - <target_attribute_key>SHEET_NAME</target_attribute_key>  
431 - <target_detail>Y</target_detail>  
432 - <source_step>&#x83b7;&#x53d6;excel&#x6587;&#x4ef6;&#x540d;</source_step>  
433 - <source_field>sheetname_</source_field>  
434 - </mapping> <mapping> <target_step_name>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;&#xff0c;&#x7ebf;&#x8def;&#x540d;&#x5b57;&#xff0c;&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</target_step_name>  
435 - <target_attribute_key>NAME</target_attribute_key>  
436 - <target_detail>Y</target_detail>  
437 - <source_step>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</source_step>  
438 - <source_field>col_name</source_field>  
439 - </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>  
440 - <target_attribute_key>TYPE</target_attribute_key>  
441 - <target_detail>Y</target_detail>  
442 - <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>  
443 - <source_field>fieldtype</source_field>  
444 - </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>  
445 - <target_attribute_key>NAME</target_attribute_key>  
446 - <target_detail>Y</target_detail>  
447 - <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>  
448 - <source_field>fieldName</source_field>  
449 - </mapping> <mapping> <target_step_name>&#x884c;&#x8f6c;&#x5217;</target_step_name>  
450 - <target_attribute_key>VALUE</target_attribute_key>  
451 - <target_detail>Y</target_detail>  
452 - <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</source_step>  
453 - <source_field>fieldName</source_field>  
454 - </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>  
455 - <target_attribute_key>TRIM_TYPE</target_attribute_key>  
456 - <target_detail>Y</target_detail>  
457 - <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>  
458 - <source_field>trim_type</source_field>  
459 - </mapping> <mapping> <target_step_name>&#x884c;&#x8f6c;&#x5217;</target_step_name>  
460 - <target_attribute_key>NORMALISED</target_attribute_key>  
461 - <target_detail>Y</target_detail>  
462 - <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</source_step>  
463 - <source_field>value</source_field>  
464 - </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>  
465 - <target_attribute_key>REPEAT</target_attribute_key>  
466 - <target_detail>Y</target_detail>  
467 - <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>  
468 - <source_field>repeat</source_field>  
469 - </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name>  
470 - <target_attribute_key>NORMALISED</target_attribute_key>  
471 - <target_detail>Y</target_detail>  
472 - <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step>  
473 - <source_field>valuefield</source_field>  
474 - </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name>  
475 - <target_attribute_key>VALUE</target_attribute_key>  
476 - <target_detail>Y</target_detail>  
477 - <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step>  
478 - <source_field>nfieldname</source_field>  
479 - </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>  
480 - <target_attribute_key>FORMAT</target_attribute_key>  
481 - <target_detail>Y</target_detail>  
482 - <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>  
483 - <source_field>format</source_field>  
484 - </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>  
485 - <target_attribute_key>PRECISION</target_attribute_key>  
486 - <target_detail>Y</target_detail>  
487 - <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>  
488 - <source_field>precision</source_field>  
489 - </mapping> </mappings> <cluster_schema/>  
490 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
491 - <xloc>876</xloc>  
492 - <yloc>167</yloc>  
493 - <draw>Y</draw>  
494 - </GUI>  
495 - </step>  
496 -  
497 - <step>  
498 - <name>&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</name>  
499 - <type>SelectValues</type>  
500 - <description/>  
501 - <distribute>Y</distribute>  
502 - <custom_distribution/>  
503 - <copies>1</copies>  
504 - <partitioning>  
505 - <method>none</method>  
506 - <schema_name/>  
507 - </partitioning>  
508 - <fields> <field> <name>col_name</name>  
509 - <rename/>  
510 - <length>-2</length>  
511 - <precision>-2</precision>  
512 - </field> <field> <name>col_type</name>  
513 - <rename/>  
514 - <length>-2</length>  
515 - <precision>-2</precision>  
516 - </field> <field> <name>col_value</name>  
517 - <rename/>  
518 - <length>-2</length>  
519 - <precision>-2</precision>  
520 - </field> <select_unspecified>N</select_unspecified>  
521 - </fields> <cluster_schema/>  
522 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
523 - <xloc>743</xloc>  
524 - <yloc>470</yloc>  
525 - <draw>Y</draw>  
526 - </GUI>  
527 - </step>  
528 -  
529 - <step>  
530 - <name>&#x5220;&#x9664;&#x4e4b;&#x524d;&#x7684;&#x660e;&#x7ec6;&#x4fe1;&#x606f;</name>  
531 - <type>ExecSQL</type>  
532 - <description/>  
533 - <distribute>Y</distribute>  
534 - <custom_distribution/>  
535 - <copies>1</copies>  
536 - <partitioning>  
537 - <method>none</method>  
538 - <schema_name/>  
539 - </partitioning>  
540 - <connection>bus_control_variable</connection>  
541 - <execute_each_row>Y</execute_each_row>  
542 - <single_statement>N</single_statement>  
543 - <replace_variables>N</replace_variables>  
544 - <quoteString>N</quoteString>  
545 - <sql>delete from bsth_c_s_ttinfo_detail where ttinfo &#x3d; &#x3f;</sql>  
546 - <set_params>N</set_params>  
547 - <insert_field/>  
548 - <update_field/>  
549 - <delete_field/>  
550 - <read_field/>  
551 - <arguments>  
552 - <argument><name>ttid_</name></argument>  
553 - </arguments>  
554 - <cluster_schema/>  
555 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
556 - <xloc>808</xloc>  
557 - <yloc>16</yloc>  
558 - <draw>Y</draw>  
559 - </GUI>  
560 - </step>  
561 -  
562 - <step>  
563 - <name>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</name>  
564 - <type>Dummy</type>  
565 - <description/>  
566 - <distribute>Y</distribute>  
567 - <custom_distribution/>  
568 - <copies>1</copies>  
569 - <partitioning>  
570 - <method>none</method>  
571 - <schema_name/>  
572 - </partitioning>  
573 - <cluster_schema/>  
574 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
575 - <xloc>883</xloc>  
576 - <yloc>373</yloc>  
577 - <draw>Y</draw>  
578 - </GUI>  
579 - </step>  
580 -  
581 - <step>  
582 - <name>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</name>  
583 - <type>Constant</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 - <fields>  
593 - <field>  
594 - <name>fieldtype</name>  
595 - <type>String</type>  
596 - <format/>  
597 - <currency/>  
598 - <decimal/>  
599 - <group/>  
600 - <nullif>String</nullif>  
601 - <length>-1</length>  
602 - <precision>-1</precision>  
603 - <set_empty_string>N</set_empty_string>  
604 - </field>  
605 - <field>  
606 - <name>length</name>  
607 - <type>String</type>  
608 - <format/>  
609 - <currency/>  
610 - <decimal/>  
611 - <group/>  
612 - <nullif>-1</nullif>  
613 - <length>-1</length>  
614 - <precision>-1</precision>  
615 - <set_empty_string>N</set_empty_string>  
616 - </field>  
617 - <field>  
618 - <name>precision</name>  
619 - <type>String</type>  
620 - <format/>  
621 - <currency/>  
622 - <decimal/>  
623 - <group/>  
624 - <nullif>-1</nullif>  
625 - <length>-1</length>  
626 - <precision>-1</precision>  
627 - <set_empty_string>N</set_empty_string>  
628 - </field>  
629 - <field>  
630 - <name>trim_type</name>  
631 - <type>String</type>  
632 - <format/>  
633 - <currency/>  
634 - <decimal/>  
635 - <group/>  
636 - <nullif>none</nullif>  
637 - <length>-1</length>  
638 - <precision>-1</precision>  
639 - <set_empty_string>N</set_empty_string>  
640 - </field>  
641 - <field>  
642 - <name>repeat</name>  
643 - <type>String</type>  
644 - <format/>  
645 - <currency/>  
646 - <decimal/>  
647 - <group/>  
648 - <nullif>N</nullif>  
649 - <length>-1</length>  
650 - <precision>-1</precision>  
651 - <set_empty_string>N</set_empty_string>  
652 - </field>  
653 - <field>  
654 - <name>format</name>  
655 - <type>String</type>  
656 - <format/>  
657 - <currency/>  
658 - <decimal/>  
659 - <group/>  
660 - <nullif>&#x23;</nullif>  
661 - <length>-1</length>  
662 - <precision>-1</precision>  
663 - <set_empty_string>N</set_empty_string>  
664 - </field>  
665 - </fields>  
666 - <cluster_schema/>  
667 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
668 - <xloc>622</xloc>  
669 - <yloc>162</yloc>  
670 - <draw>Y</draw>  
671 - </GUI>  
672 - </step>  
673 -  
674 - <step>  
675 - <name>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</name>  
676 - <type>Constant</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 - <fields>  
686 - <field>  
687 - <name>valuefield</name>  
688 - <type>String</type>  
689 - <format/>  
690 - <currency/>  
691 - <decimal/>  
692 - <group/>  
693 - <nullif>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</nullif>  
694 - <length>-1</length>  
695 - <precision>-1</precision>  
696 - <set_empty_string>N</set_empty_string>  
697 - </field>  
698 - </fields>  
699 - <cluster_schema/>  
700 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
701 - <xloc>628</xloc>  
702 - <yloc>247</yloc>  
703 - <draw>Y</draw>  
704 - </GUI>  
705 - </step>  
706 -  
707 - <step>  
708 - <name>&#x589e;&#x52a0;&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata</name>  
709 - <type>Constant</type>  
710 - <description/>  
711 - <distribute>Y</distribute>  
712 - <custom_distribution/>  
713 - <copies>1</copies>  
714 - <partitioning>  
715 - <method>none</method>  
716 - <schema_name/>  
717 - </partitioning>  
718 - <fields>  
719 - <field>  
720 - <name>col_name</name>  
721 - <type>String</type>  
722 - <format/>  
723 - <currency/>  
724 - <decimal/>  
725 - <group/>  
726 - <nullif>tccname_</nullif>  
727 - <length>-1</length>  
728 - <precision>-1</precision>  
729 - <set_empty_string>N</set_empty_string>  
730 - </field>  
731 - <field>  
732 - <name>col_type</name>  
733 - <type>String</type>  
734 - <format/>  
735 - <currency/>  
736 - <decimal/>  
737 - <group/>  
738 - <nullif>String</nullif>  
739 - <length>-1</length>  
740 - <precision>-1</precision>  
741 - <set_empty_string>N</set_empty_string>  
742 - </field>  
743 - <field>  
744 - <name>col_value</name>  
745 - <type>String</type>  
746 - <format/>  
747 - <currency/>  
748 - <decimal/>  
749 - <group/>  
750 - <nullif>replace</nullif>  
751 - <length>-1</length>  
752 - <precision>-1</precision>  
753 - <set_empty_string>N</set_empty_string>  
754 - </field>  
755 - </fields>  
756 - <cluster_schema/>  
757 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
758 - <xloc>461</xloc>  
759 - <yloc>469</yloc>  
760 - <draw>Y</draw>  
761 - </GUI>  
762 - </step>  
763 -  
764 - <step>  
765 - <name>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;metadata</name>  
766 - <type>Constant</type>  
767 - <description/>  
768 - <distribute>Y</distribute>  
769 - <custom_distribution/>  
770 - <copies>1</copies>  
771 - <partitioning>  
772 - <method>none</method>  
773 - <schema_name/>  
774 - </partitioning>  
775 - <fields>  
776 - <field>  
777 - <name>col_name</name>  
778 - <type>String</type>  
779 - <format/>  
780 - <currency/>  
781 - <decimal/>  
782 - <group/>  
783 - <nullif>ttinfoname_</nullif>  
784 - <length>-1</length>  
785 - <precision>-1</precision>  
786 - <set_empty_string>N</set_empty_string>  
787 - </field>  
788 - <field>  
789 - <name>col_type</name>  
790 - <type>String</type>  
791 - <format/>  
792 - <currency/>  
793 - <decimal/>  
794 - <group/>  
795 - <nullif>String</nullif>  
796 - <length>-1</length>  
797 - <precision>-1</precision>  
798 - <set_empty_string>N</set_empty_string>  
799 - </field>  
800 - <field>  
801 - <name>col_value</name>  
802 - <type>String</type>  
803 - <format/>  
804 - <currency/>  
805 - <decimal/>  
806 - <group/>  
807 - <nullif>replace</nullif>  
808 - <length>-1</length>  
809 - <precision>-1</precision>  
810 - <set_empty_string>N</set_empty_string>  
811 - </field>  
812 - </fields>  
813 - <cluster_schema/>  
814 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
815 - <xloc>608</xloc>  
816 - <yloc>601</yloc>  
817 - <draw>Y</draw>  
818 - </GUI>  
819 - </step>  
820 -  
821 - <step>  
822 - <name>&#x589e;&#x52a0;&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata</name>  
823 - <type>Constant</type>  
824 - <description/>  
825 - <distribute>Y</distribute>  
826 - <custom_distribution/>  
827 - <copies>1</copies>  
828 - <partitioning>  
829 - <method>none</method>  
830 - <schema_name/>  
831 - </partitioning>  
832 - <fields>  
833 - <field>  
834 - <name>col_name</name>  
835 - <type>String</type>  
836 - <format/>  
837 - <currency/>  
838 - <decimal/>  
839 - <group/>  
840 - <nullif>xlname_</nullif>  
841 - <length>-1</length>  
842 - <precision>-1</precision>  
843 - <set_empty_string>N</set_empty_string>  
844 - </field>  
845 - <field>  
846 - <name>col_type</name>  
847 - <type>String</type>  
848 - <format/>  
849 - <currency/>  
850 - <decimal/>  
851 - <group/>  
852 - <nullif>String</nullif>  
853 - <length>-1</length>  
854 - <precision>-1</precision>  
855 - <set_empty_string>N</set_empty_string>  
856 - </field>  
857 - <field>  
858 - <name>col_value</name>  
859 - <type>String</type>  
860 - <format/>  
861 - <currency/>  
862 - <decimal/>  
863 - <group/>  
864 - <nullif>replace</nullif>  
865 - <length>-1</length>  
866 - <precision>-1</precision>  
867 - <set_empty_string>N</set_empty_string>  
868 - </field>  
869 - </fields>  
870 - <cluster_schema/>  
871 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
872 - <xloc>383</xloc>  
873 - <yloc>341</yloc>  
874 - <draw>Y</draw>  
875 - </GUI>  
876 - </step>  
877 -  
878 - <step>  
879 - <name>&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</name>  
880 - <type>SelectValues</type>  
881 - <description/>  
882 - <distribute>Y</distribute>  
883 - <custom_distribution/>  
884 - <copies>1</copies>  
885 - <partitioning>  
886 - <method>none</method>  
887 - <schema_name/>  
888 - </partitioning>  
889 - <fields> <field> <name>col_name</name>  
890 - <rename/>  
891 - <length>-2</length>  
892 - <precision>-2</precision>  
893 - </field> <field> <name>col_type</name>  
894 - <rename/>  
895 - <length>-2</length>  
896 - <precision>-2</precision>  
897 - </field> <field> <name>col_value</name>  
898 - <rename/>  
899 - <length>-2</length>  
900 - <precision>-2</precision>  
901 - </field> <select_unspecified>N</select_unspecified>  
902 - </fields> <cluster_schema/>  
903 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
904 - <xloc>888</xloc>  
905 - <yloc>601</yloc>  
906 - <draw>Y</draw>  
907 - </GUI>  
908 - </step>  
909 -  
910 - <step>  
911 - <name>&#x66ff;&#x6362;&#x505c;&#x8f66;&#x5382;&#x540d;&#x5b57; </name>  
912 - <type>SetValueField</type>  
913 - <description/>  
914 - <distribute>Y</distribute>  
915 - <custom_distribution/>  
916 - <copies>1</copies>  
917 - <partitioning>  
918 - <method>none</method>  
919 - <schema_name/>  
920 - </partitioning>  
921 - <fields>  
922 - <field>  
923 - <name>col_value</name>  
924 - <replaceby>tccname_</replaceby>  
925 - </field>  
926 - </fields>  
927 - <cluster_schema/>  
928 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
929 - <xloc>598</xloc>  
930 - <yloc>471</yloc>  
931 - <draw>Y</draw>  
932 - </GUI>  
933 - </step>  
934 -  
935 - <step>  
936 - <name>&#x66ff;&#x6362;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;</name>  
937 - <type>SetValueField</type>  
938 - <description/>  
939 - <distribute>Y</distribute>  
940 - <custom_distribution/>  
941 - <copies>1</copies>  
942 - <partitioning>  
943 - <method>none</method>  
944 - <schema_name/>  
945 - </partitioning>  
946 - <fields>  
947 - <field>  
948 - <name>col_value</name>  
949 - <replaceby>ttinfoname_</replaceby>  
950 - </field>  
951 - </fields>  
952 - <cluster_schema/>  
953 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
954 - <xloc>746</xloc>  
955 - <yloc>602</yloc>  
956 - <draw>Y</draw>  
957 - </GUI>  
958 - </step>  
959 -  
960 - <step>  
961 - <name>&#x66ff;&#x6362;&#x7ebf;&#x8def;&#x540d;&#x79f0;</name>  
962 - <type>SetValueField</type>  
963 - <description/>  
964 - <distribute>Y</distribute>  
965 - <custom_distribution/>  
966 - <copies>1</copies>  
967 - <partitioning>  
968 - <method>none</method>  
969 - <schema_name/>  
970 - </partitioning>  
971 - <fields>  
972 - <field>  
973 - <name>col_value</name>  
974 - <replaceby>xlname_</replaceby>  
975 - </field>  
976 - </fields>  
977 - <cluster_schema/>  
978 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
979 - <xloc>521</xloc>  
980 - <yloc>342</yloc>  
981 - <draw>Y</draw>  
982 - </GUI>  
983 - </step>  
984 -  
985 - <step>  
986 - <name>&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</name>  
987 - <type>SelectValues</type>  
988 - <description/>  
989 - <distribute>Y</distribute>  
990 - <custom_distribution/>  
991 - <copies>1</copies>  
992 - <partitioning>  
993 - <method>none</method>  
994 - <schema_name/>  
995 - </partitioning>  
996 - <fields> <field> <name>col_name</name>  
997 - <rename/>  
998 - <length>-2</length>  
999 - <precision>-2</precision>  
1000 - </field> <field> <name>col_type</name>  
1001 - <rename/>  
1002 - <length>-2</length>  
1003 - <precision>-2</precision>  
1004 - </field> <field> <name>col_value</name>  
1005 - <rename/>  
1006 - <length>-2</length>  
1007 - <precision>-2</precision>  
1008 - </field> <select_unspecified>N</select_unspecified>  
1009 - </fields> <cluster_schema/>  
1010 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
1011 - <xloc>668</xloc>  
1012 - <yloc>343</yloc>  
1013 - <draw>Y</draw>  
1014 - </GUI>  
1015 - </step>  
1016 -  
1017 - <step>  
1018 - <name>&#x83b7;&#x53d6;excel&#x5b57;&#x6bb5;&#x540d;&#x5b57;&#x7b26;&#x4e32;</name>  
1019 - <type>GetVariable</type>  
1020 - <description/>  
1021 - <distribute>Y</distribute>  
1022 - <custom_distribution/>  
1023 - <copies>1</copies>  
1024 - <partitioning>  
1025 - <method>none</method>  
1026 - <schema_name/>  
1027 - </partitioning>  
1028 - <fields>  
1029 - <field>  
1030 - <name>fieldnames</name>  
1031 - <variable>&#x24;&#x7b;excelfieldnames&#x7d;</variable>  
1032 - <type>String</type>  
1033 - <format/>  
1034 - <currency/>  
1035 - <decimal/>  
1036 - <group/>  
1037 - <length>-1</length>  
1038 - <precision>-1</precision>  
1039 - <trim_type>none</trim_type>  
1040 - </field>  
1041 - </fields>  
1042 - <cluster_schema/>  
1043 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
1044 - <xloc>252</xloc>  
1045 - <yloc>153</yloc>  
1046 - <draw>Y</draw>  
1047 - </GUI>  
1048 - </step>  
1049 -  
1050 - <step>  
1051 - <name>&#x83b7;&#x53d6;excel&#x6587;&#x4ef6;&#x540d;</name>  
1052 - <type>GetVariable</type>  
1053 - <description/>  
1054 - <distribute>Y</distribute>  
1055 - <custom_distribution/>  
1056 - <copies>1</copies>  
1057 - <partitioning>  
1058 - <method>none</method>  
1059 - <schema_name/>  
1060 - </partitioning>  
1061 - <fields>  
1062 - <field>  
1063 - <name>filepath_</name>  
1064 - <variable>&#x24;&#x7b;filepath&#x7d;</variable>  
1065 - <type>String</type>  
1066 - <format/>  
1067 - <currency/>  
1068 - <decimal/>  
1069 - <group/>  
1070 - <length>-1</length>  
1071 - <precision>-1</precision>  
1072 - <trim_type>none</trim_type>  
1073 - </field>  
1074 - <field>  
1075 - <name>erroroutputdir_</name>  
1076 - <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>  
1077 - <type>String</type>  
1078 - <format/>  
1079 - <currency/>  
1080 - <decimal/>  
1081 - <group/>  
1082 - <length>-1</length>  
1083 - <precision>-1</precision>  
1084 - <trim_type>none</trim_type>  
1085 - </field>  
1086 - <field>  
1087 - <name>sheetname_</name>  
1088 - <variable>&#x24;&#x7b;sheetname&#x7d;</variable>  
1089 - <type>String</type>  
1090 - <format/>  
1091 - <currency/>  
1092 - <decimal/>  
1093 - <group/>  
1094 - <length>-1</length>  
1095 - <precision>-1</precision>  
1096 - <trim_type>none</trim_type>  
1097 - </field>  
1098 - </fields>  
1099 - <cluster_schema/>  
1100 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
1101 - <xloc>301</xloc>  
1102 - <yloc>52</yloc>  
1103 - <draw>Y</draw>  
1104 - </GUI>  
1105 - </step>  
1106 -  
1107 - <step>  
1108 - <name>&#x83b7;&#x53d6;normalize&#x5b57;&#x6bb5;&#x540d;&#x5b57;&#x7b26;&#x4e32;</name>  
1109 - <type>GetVariable</type>  
1110 - <description/>  
1111 - <distribute>Y</distribute>  
1112 - <custom_distribution/>  
1113 - <copies>1</copies>  
1114 - <partitioning>  
1115 - <method>none</method>  
1116 - <schema_name/>  
1117 - </partitioning>  
1118 - <fields>  
1119 - <field>  
1120 - <name>normalizefieldnames_</name>  
1121 - <variable>&#x24;&#x7b;normalizefieldnames&#x7d;</variable>  
1122 - <type>String</type>  
1123 - <format/>  
1124 - <currency/>  
1125 - <decimal/>  
1126 - <group/>  
1127 - <length>-1</length>  
1128 - <precision>-1</precision>  
1129 - <trim_type>none</trim_type>  
1130 - </field>  
1131 - </fields>  
1132 - <cluster_schema/>  
1133 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
1134 - <xloc>261</xloc>  
1135 - <yloc>251</yloc>  
1136 - <draw>Y</draw>  
1137 - </GUI>  
1138 - </step>  
1139 -  
1140 - <step>  
1141 - <name>&#x83b7;&#x53d6;&#x65f6;&#x523b;&#x8868;id</name>  
1142 - <type>GetVariable</type>  
1143 - <description/>  
1144 - <distribute>Y</distribute>  
1145 - <custom_distribution/>  
1146 - <copies>1</copies>  
1147 - <partitioning>  
1148 - <method>none</method>  
1149 - <schema_name/>  
1150 - </partitioning>  
1151 - <fields>  
1152 - <field>  
1153 - <name>ttid_</name>  
1154 - <variable>&#x24;&#x7b;ttid&#x7d;</variable>  
1155 - <type>Integer</type>  
1156 - <format/>  
1157 - <currency/>  
1158 - <decimal/>  
1159 - <group/>  
1160 - <length>-1</length>  
1161 - <precision>-1</precision>  
1162 - <trim_type>none</trim_type>  
1163 - </field>  
1164 - </fields>  
1165 - <cluster_schema/>  
1166 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
1167 - <xloc>608</xloc>  
1168 - <yloc>16</yloc>  
1169 - <draw>Y</draw>  
1170 - </GUI>  
1171 - </step>  
1172 -  
1173 - <step>  
1174 - <name>&#x83b7;&#x53d6;&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;</name>  
1175 - <type>GetVariable</type>  
1176 - <description/>  
1177 - <distribute>Y</distribute>  
1178 - <custom_distribution/>  
1179 - <copies>1</copies>  
1180 - <partitioning>  
1181 - <method>none</method>  
1182 - <schema_name/>  
1183 - </partitioning>  
1184 - <fields>  
1185 - <field>  
1186 - <name>ttinfoname_</name>  
1187 - <variable>&#x24;&#x7b;ttinfoname&#x7d;</variable>  
1188 - <type>String</type>  
1189 - <format/>  
1190 - <currency/>  
1191 - <decimal/>  
1192 - <group/>  
1193 - <length>-1</length>  
1194 - <precision>-1</precision>  
1195 - <trim_type>none</trim_type>  
1196 - </field>  
1197 - </fields>  
1198 - <cluster_schema/>  
1199 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
1200 - <xloc>474</xloc>  
1201 - <yloc>601</yloc>  
1202 - <draw>Y</draw>  
1203 - </GUI>  
1204 - </step>  
1205 -  
1206 - <step>  
1207 - <name>&#x83b7;&#x53d6;&#x7ebf;&#x8def;&#x540d;&#x79f0;</name>  
1208 - <type>GetVariable</type>  
1209 - <description/>  
1210 - <distribute>Y</distribute>  
1211 - <custom_distribution/>  
1212 - <copies>1</copies>  
1213 - <partitioning>  
1214 - <method>none</method>  
1215 - <schema_name/>  
1216 - </partitioning>  
1217 - <fields>  
1218 - <field>  
1219 - <name>xlname_</name>  
1220 - <variable>&#x24;&#x7b;xlname&#x7d;</variable>  
1221 - <type>String</type>  
1222 - <format/>  
1223 - <currency/>  
1224 - <decimal/>  
1225 - <group/>  
1226 - <length>-1</length>  
1227 - <precision>-1</precision>  
1228 - <trim_type>none</trim_type>  
1229 - </field>  
1230 - </fields>  
1231 - <cluster_schema/>  
1232 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
1233 - <xloc>184</xloc>  
1234 - <yloc>342</yloc>  
1235 - <draw>Y</draw>  
1236 - </GUI>  
1237 - </step>  
1238 -  
1239 - <step>  
1240 - <name>&#x9017;&#x53f7;&#x5207;&#x5206;&#x6210;&#x5b57;&#x6bb5;&#x540d;</name>  
1241 - <type>SplitFieldToRows3</type>  
1242 - <description/>  
1243 - <distribute>Y</distribute>  
1244 - <custom_distribution/>  
1245 - <copies>1</copies>  
1246 - <partitioning>  
1247 - <method>none</method>  
1248 - <schema_name/>  
1249 - </partitioning>  
1250 - <splitfield>fieldnames</splitfield>  
1251 - <delimiter>,</delimiter>  
1252 - <newfield>fieldname</newfield>  
1253 - <rownum>N</rownum>  
1254 - <rownum_field/>  
1255 - <resetrownumber>Y</resetrownumber>  
1256 - <delimiter_is_regex>N</delimiter_is_regex>  
1257 - <cluster_schema/>  
1258 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
1259 - <xloc>442</xloc>  
1260 - <yloc>153</yloc>  
1261 - <draw>Y</draw>  
1262 - </GUI>  
1263 - </step>  
1264 -  
1265 - <step>  
1266 - <name>&#x9017;&#x53f7;&#x5207;&#x5206;&#x6210;&#x5b57;&#x6bb5;&#x540d; 2</name>  
1267 - <type>SplitFieldToRows3</type>  
1268 - <description/>  
1269 - <distribute>Y</distribute>  
1270 - <custom_distribution/>  
1271 - <copies>1</copies>  
1272 - <partitioning>  
1273 - <method>none</method>  
1274 - <schema_name/>  
1275 - </partitioning>  
1276 - <splitfield>normalizefieldnames_</splitfield>  
1277 - <delimiter>,</delimiter>  
1278 - <newfield>nfieldname</newfield>  
1279 - <rownum>N</rownum>  
1280 - <rownum_field/>  
1281 - <resetrownumber>Y</resetrownumber>  
1282 - <delimiter_is_regex>N</delimiter_is_regex>  
1283 - <cluster_schema/>  
1284 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
1285 - <xloc>444</xloc>  
1286 - <yloc>247</yloc>  
1287 - <draw>Y</draw>  
1288 - </GUI>  
1289 - </step>  
1290 -  
1291 - <step>  
1292 - <name>&#x83b7;&#x53d6;&#x7ebf;&#x8def;&#x6807;&#x51c6;id</name>  
1293 - <type>GetVariable</type>  
1294 - <description/>  
1295 - <distribute>Y</distribute>  
1296 - <custom_distribution/>  
1297 - <copies>1</copies>  
1298 - <partitioning>  
1299 - <method>none</method>  
1300 - <schema_name/>  
1301 - </partitioning>  
1302 - <fields>  
1303 - <field>  
1304 - <name>lineinfoid_</name>  
1305 - <variable>&#x24;&#x7b;lineinfoid&#x7d;</variable>  
1306 - <type>Integer</type>  
1307 - <format/>  
1308 - <currency/>  
1309 - <decimal/>  
1310 - <group/>  
1311 - <length>-1</length>  
1312 - <precision>-1</precision>  
1313 - <trim_type>none</trim_type>  
1314 - </field>  
1315 - </fields>  
1316 - <cluster_schema/>  
1317 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
1318 - <xloc>74</xloc>  
1319 - <yloc>468</yloc>  
1320 - <draw>Y</draw>  
1321 - </GUI>  
1322 - </step>  
1323 -  
1324 - <step>  
1325 - <name>&#x505c;&#x8f66;&#x573a;&#x7f16;&#x7801;</name>  
1326 - <type>DBLookup</type>  
1327 - <description/>  
1328 - <distribute>Y</distribute>  
1329 - <custom_distribution/>  
1330 - <copies>1</copies>  
1331 - <partitioning>  
1332 - <method>none</method>  
1333 - <schema_name/>  
1334 - </partitioning>  
1335 - <connection>bus_control_variable</connection>  
1336 - <cache>N</cache>  
1337 - <cache_load_all>N</cache_load_all>  
1338 - <cache_size>0</cache_size>  
1339 - <lookup>  
1340 - <schema/>  
1341 - <table>bsth_c_line_information</table>  
1342 - <orderby/>  
1343 - <fail_on_multiple>N</fail_on_multiple>  
1344 - <eat_row_on_failure>N</eat_row_on_failure>  
1345 - <key>  
1346 - <name>lineinfoid_</name>  
1347 - <field>id</field>  
1348 - <condition>&#x3d;</condition>  
1349 - <name2/>  
1350 - </key>  
1351 - <value>  
1352 - <name>car_park</name>  
1353 - <rename>car_park</rename>  
1354 - <default/>  
1355 - <type>String</type>  
1356 - </value>  
1357 - </lookup>  
1358 - <cluster_schema/>  
1359 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
1360 - <xloc>182</xloc>  
1361 - <yloc>467</yloc>  
1362 - <draw>Y</draw>  
1363 - </GUI>  
1364 - </step>  
1365 -  
1366 - <step>  
1367 - <name>&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;</name>  
1368 - <type>DBLookup</type>  
1369 - <description/>  
1370 - <distribute>Y</distribute>  
1371 - <custom_distribution/>  
1372 - <copies>1</copies>  
1373 - <partitioning>  
1374 - <method>none</method>  
1375 - <schema_name/>  
1376 - </partitioning>  
1377 - <connection>bus_control_variable</connection>  
1378 - <cache>N</cache>  
1379 - <cache_load_all>N</cache_load_all>  
1380 - <cache_size>0</cache_size>  
1381 - <lookup>  
1382 - <schema/>  
1383 - <table>bsth_c_car_park</table>  
1384 - <orderby/>  
1385 - <fail_on_multiple>N</fail_on_multiple>  
1386 - <eat_row_on_failure>N</eat_row_on_failure>  
1387 - <key>  
1388 - <name>car_park</name>  
1389 - <field>park_code</field>  
1390 - <condition>&#x3d;</condition>  
1391 - <name2/>  
1392 - </key>  
1393 - <value>  
1394 - <name>park_name</name>  
1395 - <rename>tccname_</rename>  
1396 - <default/>  
1397 - <type>String</type>  
1398 - </value>  
1399 - </lookup>  
1400 - <cluster_schema/>  
1401 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
1402 - <xloc>319</xloc>  
1403 - <yloc>468</yloc>  
1404 - <draw>Y</draw>  
1405 - </GUI>  
1406 - </step>  
1407 -  
1408 - <step_error_handling>  
1409 - </step_error_handling>  
1410 - <slave-step-copy-partition-distribution>  
1411 -</slave-step-copy-partition-distribution>  
1412 - <slave_transformation>N</slave_transformation>  
1413 -  
1414 -</transformation> 1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<transformation>
  3 + <info>
  4 + <name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x5bfc;&#x5165;&#x5143;&#x6570;&#x636e;</name>
  5 + <description/>
  6 + <extended_description/>
  7 + <trans_version/>
  8 + <trans_type>Normal</trans_type>
  9 + <trans_status>0</trans_status>
  10 + <directory>&#x2f;</directory>
  11 + <parameters>
  12 + <parameter>
  13 + <name>erroroutputdir</name>
  14 + <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project_code&#x2f;runtime_temp&#x2f;bsth_control_u_d_files&#x2f;erroroutput</default_value>
  15 + <description>ktr step&#x914d;&#x7f6e;&#x7684;&#x9519;&#x8bef;&#x8f93;&#x51fa;&#x76ee;&#x5f55;</description>
  16 + </parameter>
  17 + <parameter>
  18 + <name>excelfieldnames</name>
  19 + <default_value>&#x8def;&#x724c;,&#x51fa;&#x573a;,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;1,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;1,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;2,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;2,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;3,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;3,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;4,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;4,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;5,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;5,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;6,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;6,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;7,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;7,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;8,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;8,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;9,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;9,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;10,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;10,&#x8fdb;&#x573a;</default_value>
  20 + <description>&#x65f6;&#x523b;&#x8868;excel&#x8f93;&#x5165;&#x5b57;&#x6bb5;&#x540d;&#xff0c;&#x4ee5;&#x9017;&#x53f7;&#x8fde;&#x63a5;</description>
  21 + </parameter>
  22 + <parameter>
  23 + <name>filepath</name>
  24 + <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project_code&#x2f;bsth_project&#x2f;bsth_control_etl&#x2f;&#x95f5;&#x884c;&#x516c;&#x4ea4;&#x2f;&#x95f5;&#x884c;26&#x8def;&#x65f6;&#x523b;&#x8868;160630&#x65f6;&#x523b;&#x8868;.xls</default_value>
  25 + <description>&#x5f85;&#x5904;&#x7406;&#x5bfc;&#x5165;&#x7684;excel&#x6587;&#x4ef6;</description>
  26 + </parameter>
  27 + <parameter>
  28 + <name>injectktrfile</name>
  29 + <default_value>&#x2f;Users&#x2f;xu&#x2f;resource&#x2f;project_code&#x2f;bsth_project&#x2f;bsth_control&#x2f;src&#x2f;main&#x2f;resources&#x2f;datatools&#x2f;ktrs&#x2f;ttinfodetailDataInput.ktr</default_value>
  30 + <description>&#x6ce8;&#x5165;&#x5143;&#x6570;&#x636e;&#x7684;ktr&#x6587;&#x4ef6;</description>
  31 + </parameter>
  32 + <parameter>
  33 + <name>lineinfoid</name>
  34 + <default_value>1000</default_value>
  35 + <description>&#x7ebf;&#x8def;&#x6807;&#x51c6;id</description>
  36 + </parameter>
  37 + <parameter>
  38 + <name>normalizefieldnames</name>
  39 + <default_value>&#x51fa;&#x573a;,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;1,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;1,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;2,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;2,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;3,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;3,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;4,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;4,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;5,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;5,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;6,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;6,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;7,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;7,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;8,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;8,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;9,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;9,&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;10,&#x5858;&#x6cfe;&#x8def;&#x5c1a;&#x4e49;&#x8def;10,&#x8fdb;&#x573a;</default_value>
  40 + <description>&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;&#x5b57;&#x6bb5;&#x540d;&#xff0c;&#x4ee5;&#x9017;&#x53f7;&#x8fde;&#x63a5;</description>
  41 + </parameter>
  42 + <parameter>
  43 + <name>sheetname</name>
  44 + <default_value>&#x5de5;&#x4f5c;&#x8868;1</default_value>
  45 + <description>xls sheet&#x540d;&#x5b57;</description>
  46 + </parameter>
  47 + <parameter>
  48 + <name>tccname</name>
  49 + <default_value>&#x4e1c;&#x5ddd;&#x8def;&#x5730;&#x94c1;&#x7ad9;&#x505c;&#x8f66;&#x573a;</default_value>
  50 + <description>&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</description>
  51 + </parameter>
  52 + <parameter>
  53 + <name>ttid</name>
  54 + <default_value>1</default_value>
  55 + <description>&#x65f6;&#x523b;&#x8868;id</description>
  56 + </parameter>
  57 + <parameter>
  58 + <name>ttinfoname</name>
  59 + <default_value>&#x8868;2</default_value>
  60 + <description>&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;</description>
  61 + </parameter>
  62 + <parameter>
  63 + <name>xlname</name>
  64 + <default_value>&#x95f5;&#x884c;26&#x8def;</default_value>
  65 + <description>&#x7ebf;&#x8def;&#x540d;&#x79f0;</description>
  66 + </parameter>
  67 + </parameters>
  68 + <log>
  69 +<trans-log-table><connection/>
  70 +<schema/>
  71 +<table/>
  72 +<size_limit_lines/>
  73 +<interval/>
  74 +<timeout_days/>
  75 +<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>
  76 +<perf-log-table><connection/>
  77 +<schema/>
  78 +<table/>
  79 +<interval/>
  80 +<timeout_days/>
  81 +<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>
  82 +<channel-log-table><connection/>
  83 +<schema/>
  84 +<table/>
  85 +<timeout_days/>
  86 +<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>
  87 +<step-log-table><connection/>
  88 +<schema/>
  89 +<table/>
  90 +<timeout_days/>
  91 +<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>
  92 +<metrics-log-table><connection/>
  93 +<schema/>
  94 +<table/>
  95 +<timeout_days/>
  96 +<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>
  97 + </log>
  98 + <maxdate>
  99 + <connection/>
  100 + <table/>
  101 + <field/>
  102 + <offset>0.0</offset>
  103 + <maxdiff>0.0</maxdiff>
  104 + </maxdate>
  105 + <size_rowset>10000</size_rowset>
  106 + <sleep_time_empty>50</sleep_time_empty>
  107 + <sleep_time_full>50</sleep_time_full>
  108 + <unique_connections>N</unique_connections>
  109 + <feedback_shown>Y</feedback_shown>
  110 + <feedback_size>50000</feedback_size>
  111 + <using_thread_priorities>Y</using_thread_priorities>
  112 + <shared_objects_file/>
  113 + <capture_step_performance>N</capture_step_performance>
  114 + <step_performance_capturing_delay>1000</step_performance_capturing_delay>
  115 + <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
  116 + <dependencies>
  117 + </dependencies>
  118 + <partitionschemas>
  119 + </partitionschemas>
  120 + <slaveservers>
  121 + </slaveservers>
  122 + <clusterschemas>
  123 + </clusterschemas>
  124 + <created_user>-</created_user>
  125 + <created_date>2016&#x2f;07&#x2f;01 09&#x3a;55&#x3a;32.649</created_date>
  126 + <modified_user>-</modified_user>
  127 + <modified_date>2016&#x2f;07&#x2f;01 09&#x3a;55&#x3a;32.649</modified_date>
  128 + <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA&#x3d;</key_for_session_key>
  129 + <is_key_private>N</is_key_private>
  130 + </info>
  131 + <notepads>
  132 + </notepads>
  133 + <connection>
  134 + <name>192.168.168.1_jwgl_dw</name>
  135 + <server>192.168.168.1</server>
  136 + <type>ORACLE</type>
  137 + <access>Native</access>
  138 + <database>orcl</database>
  139 + <port>1521</port>
  140 + <username>jwgl_dw</username>
  141 + <password>Encrypted 2be98afc86aa7f2e4cb13b977d2adabcd</password>
  142 + <servername/>
  143 + <data_tablespace/>
  144 + <index_tablespace/>
  145 + <attributes>
  146 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  147 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  148 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  149 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  150 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  151 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  152 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  153 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  154 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  155 + </attributes>
  156 + </connection>
  157 + <connection>
  158 + <name>bus_control_variable</name>
  159 + <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
  160 + <type>MYSQL</type>
  161 + <access>Native</access>
  162 + <database>&#x24;&#x7b;v_db_dname&#x7d;</database>
  163 + <port>3306</port>
  164 + <username>&#x24;&#x7b;v_db_uname&#x7d;</username>
  165 + <password>&#x24;&#x7b;v_db_pwd&#x7d;</password>
  166 + <servername/>
  167 + <data_tablespace/>
  168 + <index_tablespace/>
  169 + <attributes>
  170 + <attribute><code>EXTRA_OPTION_MYSQL.characterEncoding</code><attribute>utf8</attribute></attribute>
  171 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  172 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  173 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  174 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  175 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  176 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  177 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  178 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  179 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  180 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  181 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  182 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  183 + </attributes>
  184 + </connection>
  185 + <connection>
  186 + <name>bus_control_&#x516c;&#x53f8;_201</name>
  187 + <server>localhost</server>
  188 + <type>MYSQL</type>
  189 + <access>Native</access>
  190 + <database>control</database>
  191 + <port>3306</port>
  192 + <username>root</username>
  193 + <password>Encrypted </password>
  194 + <servername/>
  195 + <data_tablespace/>
  196 + <index_tablespace/>
  197 + <attributes>
  198 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  199 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  200 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  201 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  202 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  203 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  204 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  205 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  206 + <attribute><code>STREAM_RESULTS</code><attribute>N</attribute></attribute>
  207 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  208 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  209 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  210 + </attributes>
  211 + </connection>
  212 + <connection>
  213 + <name>bus_control_&#x672c;&#x673a;</name>
  214 + <server>localhost</server>
  215 + <type>MYSQL</type>
  216 + <access>Native</access>
  217 + <database>control</database>
  218 + <port>3306</port>
  219 + <username>root</username>
  220 + <password>Encrypted </password>
  221 + <servername/>
  222 + <data_tablespace/>
  223 + <index_tablespace/>
  224 + <attributes>
  225 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  226 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  227 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  228 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  229 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  230 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  231 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  232 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  233 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  234 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  235 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  236 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  237 + </attributes>
  238 + </connection>
  239 + <connection>
  240 + <name>xlab_mysql_youle</name>
  241 + <server>101.231.124.8</server>
  242 + <type>MYSQL</type>
  243 + <access>Native</access>
  244 + <database>xlab_youle</database>
  245 + <port>45687</port>
  246 + <username>xlab-youle</username>
  247 + <password>Encrypted 2be98afc86aa78a88aa1be369d187a3df</password>
  248 + <servername/>
  249 + <data_tablespace/>
  250 + <index_tablespace/>
  251 + <attributes>
  252 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  253 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  254 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  255 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  256 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  257 + <attribute><code>PORT_NUMBER</code><attribute>45687</attribute></attribute>
  258 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  259 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  260 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  261 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  262 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  263 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  264 + </attributes>
  265 + </connection>
  266 + <connection>
  267 + <name>xlab_mysql_youle&#xff08;&#x672c;&#x673a;&#xff09;</name>
  268 + <server>localhost</server>
  269 + <type>MYSQL</type>
  270 + <access>Native</access>
  271 + <database>xlab_youle</database>
  272 + <port>3306</port>
  273 + <username>root</username>
  274 + <password>Encrypted </password>
  275 + <servername/>
  276 + <data_tablespace/>
  277 + <index_tablespace/>
  278 + <attributes>
  279 + <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
  280 + <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
  281 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  282 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  283 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  284 + <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
  285 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  286 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  287 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  288 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
  289 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>N</attribute></attribute>
  290 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  291 + </attributes>
  292 + </connection>
  293 + <connection>
  294 + <name>xlab_youle</name>
  295 + <server/>
  296 + <type>MYSQL</type>
  297 + <access>JNDI</access>
  298 + <database>xlab_youle</database>
  299 + <port>1521</port>
  300 + <username/>
  301 + <password>Encrypted </password>
  302 + <servername/>
  303 + <data_tablespace/>
  304 + <index_tablespace/>
  305 + <attributes>
  306 + <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
  307 + <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
  308 + <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
  309 + <attribute><code>PORT_NUMBER</code><attribute>1521</attribute></attribute>
  310 + <attribute><code>PRESERVE_RESERVED_WORD_CASE</code><attribute>N</attribute></attribute>
  311 + <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
  312 + <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
  313 + <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>Y</attribute></attribute>
  314 + <attribute><code>SUPPORTS_TIMESTAMP_DATA_TYPE</code><attribute>Y</attribute></attribute>
  315 + <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
  316 + </attributes>
  317 + </connection>
  318 + <order>
  319 + <hop> <from>&#x83b7;&#x53d6;excel&#x6587;&#x4ef6;&#x540d;</from><to>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</to><enabled>Y</enabled> </hop>
  320 + <hop> <from>&#x83b7;&#x53d6;excel&#x5b57;&#x6bb5;&#x540d;&#x5b57;&#x7b26;&#x4e32;</from><to>&#x9017;&#x53f7;&#x5207;&#x5206;&#x6210;&#x5b57;&#x6bb5;&#x540d;</to><enabled>Y</enabled> </hop>
  321 + <hop> <from>&#x9017;&#x53f7;&#x5207;&#x5206;&#x6210;&#x5b57;&#x6bb5;&#x540d;</from><to>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
  322 + <hop> <from>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</from><to>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</to><enabled>Y</enabled> </hop>
  323 + <hop> <from>&#x83b7;&#x53d6;normalize&#x5b57;&#x6bb5;&#x540d;&#x5b57;&#x7b26;&#x4e32;</from><to>&#x9017;&#x53f7;&#x5207;&#x5206;&#x6210;&#x5b57;&#x6bb5;&#x540d; 2</to><enabled>Y</enabled> </hop>
  324 + <hop> <from>&#x9017;&#x53f7;&#x5207;&#x5206;&#x6210;&#x5b57;&#x6bb5;&#x540d; 2</from><to>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</to><enabled>Y</enabled> </hop>
  325 + <hop> <from>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</from><to>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</to><enabled>Y</enabled> </hop>
  326 + <hop> <from>&#x83b7;&#x53d6;&#x7ebf;&#x8def;&#x540d;&#x79f0;</from><to>&#x589e;&#x52a0;&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata</to><enabled>Y</enabled> </hop>
  327 + <hop> <from>&#x589e;&#x52a0;&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata</from><to>&#x66ff;&#x6362;&#x7ebf;&#x8def;&#x540d;&#x79f0;</to><enabled>Y</enabled> </hop>
  328 + <hop> <from>&#x66ff;&#x6362;&#x7ebf;&#x8def;&#x540d;&#x79f0;</from><to>&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</to><enabled>Y</enabled> </hop>
  329 + <hop> <from>&#x589e;&#x52a0;&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata</from><to>&#x66ff;&#x6362;&#x505c;&#x8f66;&#x5382;&#x540d;&#x5b57; </to><enabled>Y</enabled> </hop>
  330 + <hop> <from>&#x66ff;&#x6362;&#x505c;&#x8f66;&#x5382;&#x540d;&#x5b57; </from><to>&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</to><enabled>Y</enabled> </hop>
  331 + <hop> <from>&#x83b7;&#x53d6;&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;</from><to>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;metadata</to><enabled>Y</enabled> </hop>
  332 + <hop> <from>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;metadata</from><to>&#x66ff;&#x6362;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;</to><enabled>Y</enabled> </hop>
  333 + <hop> <from>&#x66ff;&#x6362;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;</from><to>&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</to><enabled>Y</enabled> </hop>
  334 + <hop> <from>&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</from><to>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</to><enabled>Y</enabled> </hop>
  335 + <hop> <from>&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</from><to>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</to><enabled>Y</enabled> </hop>
  336 + <hop> <from>&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</from><to>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</to><enabled>Y</enabled> </hop>
  337 + <hop> <from>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</from><to>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</to><enabled>Y</enabled> </hop>
  338 + <hop> <from>&#x83b7;&#x53d6;&#x65f6;&#x523b;&#x8868;id</from><to>&#x5220;&#x9664;&#x4e4b;&#x524d;&#x7684;&#x660e;&#x7ec6;&#x4fe1;&#x606f;</to><enabled>Y</enabled> </hop>
  339 + <hop> <from>&#x83b7;&#x53d6;&#x7ebf;&#x8def;&#x6807;&#x51c6;id</from><to>&#x505c;&#x8f66;&#x573a;&#x7f16;&#x7801;</to><enabled>Y</enabled> </hop>
  340 + <hop> <from>&#x505c;&#x8f66;&#x573a;&#x7f16;&#x7801;</from><to>&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;</to><enabled>Y</enabled> </hop>
  341 + <hop> <from>&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;</from><to>&#x589e;&#x52a0;&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata</to><enabled>Y</enabled> </hop>
  342 + </order>
  343 + <step>
  344 + <name>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</name>
  345 + <type>MetaInject</type>
  346 + <description/>
  347 + <distribute>Y</distribute>
  348 + <custom_distribution/>
  349 + <copies>1</copies>
  350 + <partitioning>
  351 + <method>none</method>
  352 + <schema_name/>
  353 + </partitioning>
  354 + <specification_method>filename</specification_method>
  355 + <trans_object_id/>
  356 + <trans_name/>
  357 + <filename>&#x24;&#x7b;injectktrfile&#x7d;</filename>
  358 + <directory_path/>
  359 + <source_step/>
  360 + <source_output_fields> </source_output_fields> <target_file/>
  361 + <no_execution>N</no_execution>
  362 + <stream_source_step/>
  363 + <stream_target_step/>
  364 + <mappings> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
  365 + <target_attribute_key>FORMAT</target_attribute_key>
  366 + <target_detail>Y</target_detail>
  367 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
  368 + <source_field>format</source_field>
  369 + </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
  370 + <target_attribute_key>REPEAT</target_attribute_key>
  371 + <target_detail>Y</target_detail>
  372 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
  373 + <source_field>repeat</source_field>
  374 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  375 + <target_attribute_key>TRIM_TYPE</target_attribute_key>
  376 + <target_detail>Y</target_detail>
  377 + <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
  378 + <source_field>trim_type</source_field>
  379 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  380 + <target_attribute_key>FILENAME</target_attribute_key>
  381 + <target_detail>Y</target_detail>
  382 + <source_step>&#x83b7;&#x53d6;excel&#x6587;&#x4ef6;&#x540d;</source_step>
  383 + <source_field>filepath_</source_field>
  384 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  385 + <target_attribute_key>PRECISION</target_attribute_key>
  386 + <target_detail>Y</target_detail>
  387 + <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
  388 + <source_field>precision</source_field>
  389 + </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
  390 + <target_attribute_key>TYPE</target_attribute_key>
  391 + <target_detail>Y</target_detail>
  392 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
  393 + <source_field>type</source_field>
  394 + </mapping> <mapping> <target_step_name>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;&#xff0c;&#x7ebf;&#x8def;&#x540d;&#x5b57;&#xff0c;&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</target_step_name>
  395 + <target_attribute_key>DATA_VALUE</target_attribute_key>
  396 + <target_detail>Y</target_detail>
  397 + <source_step>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</source_step>
  398 + <source_field>col_value</source_field>
  399 + </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
  400 + <target_attribute_key>LENGTH</target_attribute_key>
  401 + <target_detail>Y</target_detail>
  402 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
  403 + <source_field>length</source_field>
  404 + </mapping> <mapping> <target_step_name>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;&#xff0c;&#x7ebf;&#x8def;&#x540d;&#x5b57;&#xff0c;&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</target_step_name>
  405 + <target_attribute_key>TYPE</target_attribute_key>
  406 + <target_detail>Y</target_detail>
  407 + <source_step>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</source_step>
  408 + <source_field>col_type</source_field>
  409 + </mapping> <mapping> <target_step_name>&#x884c;&#x8f6c;&#x5217;</target_step_name>
  410 + <target_attribute_key>NAME</target_attribute_key>
  411 + <target_detail>Y</target_detail>
  412 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</source_step>
  413 + <source_field>fieldName</source_field>
  414 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  415 + <target_attribute_key>NAME</target_attribute_key>
  416 + <target_detail>Y</target_detail>
  417 + <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
  418 + <source_field>fieldname</source_field>
  419 + </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name>
  420 + <target_attribute_key>NAME</target_attribute_key>
  421 + <target_detail>Y</target_detail>
  422 + <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step>
  423 + <source_field>nfieldname</source_field>
  424 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  425 + <target_attribute_key>LENGTH</target_attribute_key>
  426 + <target_detail>Y</target_detail>
  427 + <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
  428 + <source_field>length</source_field>
  429 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  430 + <target_attribute_key>SHEET_NAME</target_attribute_key>
  431 + <target_detail>Y</target_detail>
  432 + <source_step>&#x83b7;&#x53d6;excel&#x6587;&#x4ef6;&#x540d;</source_step>
  433 + <source_field>sheetname_</source_field>
  434 + </mapping> <mapping> <target_step_name>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;&#xff0c;&#x7ebf;&#x8def;&#x540d;&#x5b57;&#xff0c;&#x505c;&#x8f66;&#x573a;&#x540d;&#x5b57;</target_step_name>
  435 + <target_attribute_key>NAME</target_attribute_key>
  436 + <target_detail>Y</target_detail>
  437 + <source_step>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</source_step>
  438 + <source_field>col_name</source_field>
  439 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  440 + <target_attribute_key>TYPE</target_attribute_key>
  441 + <target_detail>Y</target_detail>
  442 + <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
  443 + <source_field>fieldtype</source_field>
  444 + </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
  445 + <target_attribute_key>NAME</target_attribute_key>
  446 + <target_detail>Y</target_detail>
  447 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
  448 + <source_field>fieldName</source_field>
  449 + </mapping> <mapping> <target_step_name>&#x884c;&#x8f6c;&#x5217;</target_step_name>
  450 + <target_attribute_key>VALUE</target_attribute_key>
  451 + <target_detail>Y</target_detail>
  452 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</source_step>
  453 + <source_field>fieldName</source_field>
  454 + </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
  455 + <target_attribute_key>TRIM_TYPE</target_attribute_key>
  456 + <target_detail>Y</target_detail>
  457 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
  458 + <source_field>trim_type</source_field>
  459 + </mapping> <mapping> <target_step_name>&#x884c;&#x8f6c;&#x5217;</target_step_name>
  460 + <target_attribute_key>NORMALISED</target_attribute_key>
  461 + <target_detail>Y</target_detail>
  462 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</source_step>
  463 + <source_field>value</source_field>
  464 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  465 + <target_attribute_key>REPEAT</target_attribute_key>
  466 + <target_detail>Y</target_detail>
  467 + <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
  468 + <source_field>repeat</source_field>
  469 + </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name>
  470 + <target_attribute_key>NORMALISED</target_attribute_key>
  471 + <target_detail>Y</target_detail>
  472 + <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step>
  473 + <source_field>valuefield</source_field>
  474 + </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name>
  475 + <target_attribute_key>VALUE</target_attribute_key>
  476 + <target_detail>Y</target_detail>
  477 + <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step>
  478 + <source_field>nfieldname</source_field>
  479 + </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
  480 + <target_attribute_key>FORMAT</target_attribute_key>
  481 + <target_detail>Y</target_detail>
  482 + <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
  483 + <source_field>format</source_field>
  484 + </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
  485 + <target_attribute_key>PRECISION</target_attribute_key>
  486 + <target_detail>Y</target_detail>
  487 + <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
  488 + <source_field>precision</source_field>
  489 + </mapping> </mappings> <cluster_schema/>
  490 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  491 + <xloc>876</xloc>
  492 + <yloc>167</yloc>
  493 + <draw>Y</draw>
  494 + </GUI>
  495 + </step>
  496 +
  497 + <step>
  498 + <name>&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</name>
  499 + <type>SelectValues</type>
  500 + <description/>
  501 + <distribute>Y</distribute>
  502 + <custom_distribution/>
  503 + <copies>1</copies>
  504 + <partitioning>
  505 + <method>none</method>
  506 + <schema_name/>
  507 + </partitioning>
  508 + <fields> <field> <name>col_name</name>
  509 + <rename/>
  510 + <length>-2</length>
  511 + <precision>-2</precision>
  512 + </field> <field> <name>col_type</name>
  513 + <rename/>
  514 + <length>-2</length>
  515 + <precision>-2</precision>
  516 + </field> <field> <name>col_value</name>
  517 + <rename/>
  518 + <length>-2</length>
  519 + <precision>-2</precision>
  520 + </field> <select_unspecified>N</select_unspecified>
  521 + </fields> <cluster_schema/>
  522 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  523 + <xloc>743</xloc>
  524 + <yloc>470</yloc>
  525 + <draw>Y</draw>
  526 + </GUI>
  527 + </step>
  528 +
  529 + <step>
  530 + <name>&#x5220;&#x9664;&#x4e4b;&#x524d;&#x7684;&#x660e;&#x7ec6;&#x4fe1;&#x606f;</name>
  531 + <type>ExecSQL</type>
  532 + <description/>
  533 + <distribute>Y</distribute>
  534 + <custom_distribution/>
  535 + <copies>1</copies>
  536 + <partitioning>
  537 + <method>none</method>
  538 + <schema_name/>
  539 + </partitioning>
  540 + <connection>bus_control_variable</connection>
  541 + <execute_each_row>Y</execute_each_row>
  542 + <single_statement>N</single_statement>
  543 + <replace_variables>N</replace_variables>
  544 + <quoteString>N</quoteString>
  545 + <sql>delete from bsth_c_s_ttinfo_detail where ttinfo &#x3d; &#x3f;</sql>
  546 + <set_params>N</set_params>
  547 + <insert_field/>
  548 + <update_field/>
  549 + <delete_field/>
  550 + <read_field/>
  551 + <arguments>
  552 + <argument><name>ttid_</name></argument>
  553 + </arguments>
  554 + <cluster_schema/>
  555 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  556 + <xloc>808</xloc>
  557 + <yloc>16</yloc>
  558 + <draw>Y</draw>
  559 + </GUI>
  560 + </step>
  561 +
  562 + <step>
  563 + <name>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</name>
  564 + <type>Dummy</type>
  565 + <description/>
  566 + <distribute>Y</distribute>
  567 + <custom_distribution/>
  568 + <copies>1</copies>
  569 + <partitioning>
  570 + <method>none</method>
  571 + <schema_name/>
  572 + </partitioning>
  573 + <cluster_schema/>
  574 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  575 + <xloc>883</xloc>
  576 + <yloc>373</yloc>
  577 + <draw>Y</draw>
  578 + </GUI>
  579 + </step>
  580 +
  581 + <step>
  582 + <name>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</name>
  583 + <type>Constant</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 + <fields>
  593 + <field>
  594 + <name>fieldtype</name>
  595 + <type>String</type>
  596 + <format/>
  597 + <currency/>
  598 + <decimal/>
  599 + <group/>
  600 + <nullif>String</nullif>
  601 + <length>-1</length>
  602 + <precision>-1</precision>
  603 + <set_empty_string>N</set_empty_string>
  604 + </field>
  605 + <field>
  606 + <name>length</name>
  607 + <type>String</type>
  608 + <format/>
  609 + <currency/>
  610 + <decimal/>
  611 + <group/>
  612 + <nullif>-1</nullif>
  613 + <length>-1</length>
  614 + <precision>-1</precision>
  615 + <set_empty_string>N</set_empty_string>
  616 + </field>
  617 + <field>
  618 + <name>precision</name>
  619 + <type>String</type>
  620 + <format/>
  621 + <currency/>
  622 + <decimal/>
  623 + <group/>
  624 + <nullif>-1</nullif>
  625 + <length>-1</length>
  626 + <precision>-1</precision>
  627 + <set_empty_string>N</set_empty_string>
  628 + </field>
  629 + <field>
  630 + <name>trim_type</name>
  631 + <type>String</type>
  632 + <format/>
  633 + <currency/>
  634 + <decimal/>
  635 + <group/>
  636 + <nullif>none</nullif>
  637 + <length>-1</length>
  638 + <precision>-1</precision>
  639 + <set_empty_string>N</set_empty_string>
  640 + </field>
  641 + <field>
  642 + <name>repeat</name>
  643 + <type>String</type>
  644 + <format/>
  645 + <currency/>
  646 + <decimal/>
  647 + <group/>
  648 + <nullif>N</nullif>
  649 + <length>-1</length>
  650 + <precision>-1</precision>
  651 + <set_empty_string>N</set_empty_string>
  652 + </field>
  653 + <field>
  654 + <name>format</name>
  655 + <type>String</type>
  656 + <format/>
  657 + <currency/>
  658 + <decimal/>
  659 + <group/>
  660 + <nullif>&#x23;</nullif>
  661 + <length>-1</length>
  662 + <precision>-1</precision>
  663 + <set_empty_string>N</set_empty_string>
  664 + </field>
  665 + </fields>
  666 + <cluster_schema/>
  667 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  668 + <xloc>622</xloc>
  669 + <yloc>162</yloc>
  670 + <draw>Y</draw>
  671 + </GUI>
  672 + </step>
  673 +
  674 + <step>
  675 + <name>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</name>
  676 + <type>Constant</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 + <fields>
  686 + <field>
  687 + <name>valuefield</name>
  688 + <type>String</type>
  689 + <format/>
  690 + <currency/>
  691 + <decimal/>
  692 + <group/>
  693 + <nullif>&#x53d1;&#x8f66;&#x65f6;&#x95f4;</nullif>
  694 + <length>-1</length>
  695 + <precision>-1</precision>
  696 + <set_empty_string>N</set_empty_string>
  697 + </field>
  698 + </fields>
  699 + <cluster_schema/>
  700 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  701 + <xloc>628</xloc>
  702 + <yloc>247</yloc>
  703 + <draw>Y</draw>
  704 + </GUI>
  705 + </step>
  706 +
  707 + <step>
  708 + <name>&#x589e;&#x52a0;&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata</name>
  709 + <type>Constant</type>
  710 + <description/>
  711 + <distribute>Y</distribute>
  712 + <custom_distribution/>
  713 + <copies>1</copies>
  714 + <partitioning>
  715 + <method>none</method>
  716 + <schema_name/>
  717 + </partitioning>
  718 + <fields>
  719 + <field>
  720 + <name>col_name</name>
  721 + <type>String</type>
  722 + <format/>
  723 + <currency/>
  724 + <decimal/>
  725 + <group/>
  726 + <nullif>tccname_</nullif>
  727 + <length>-1</length>
  728 + <precision>-1</precision>
  729 + <set_empty_string>N</set_empty_string>
  730 + </field>
  731 + <field>
  732 + <name>col_type</name>
  733 + <type>String</type>
  734 + <format/>
  735 + <currency/>
  736 + <decimal/>
  737 + <group/>
  738 + <nullif>String</nullif>
  739 + <length>-1</length>
  740 + <precision>-1</precision>
  741 + <set_empty_string>N</set_empty_string>
  742 + </field>
  743 + <field>
  744 + <name>col_value</name>
  745 + <type>String</type>
  746 + <format/>
  747 + <currency/>
  748 + <decimal/>
  749 + <group/>
  750 + <nullif>replace</nullif>
  751 + <length>-1</length>
  752 + <precision>-1</precision>
  753 + <set_empty_string>N</set_empty_string>
  754 + </field>
  755 + </fields>
  756 + <cluster_schema/>
  757 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  758 + <xloc>461</xloc>
  759 + <yloc>469</yloc>
  760 + <draw>Y</draw>
  761 + </GUI>
  762 + </step>
  763 +
  764 + <step>
  765 + <name>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;metadata</name>
  766 + <type>Constant</type>
  767 + <description/>
  768 + <distribute>Y</distribute>
  769 + <custom_distribution/>
  770 + <copies>1</copies>
  771 + <partitioning>
  772 + <method>none</method>
  773 + <schema_name/>
  774 + </partitioning>
  775 + <fields>
  776 + <field>
  777 + <name>col_name</name>
  778 + <type>String</type>
  779 + <format/>
  780 + <currency/>
  781 + <decimal/>
  782 + <group/>
  783 + <nullif>ttinfoname_</nullif>
  784 + <length>-1</length>
  785 + <precision>-1</precision>
  786 + <set_empty_string>N</set_empty_string>
  787 + </field>
  788 + <field>
  789 + <name>col_type</name>
  790 + <type>String</type>
  791 + <format/>
  792 + <currency/>
  793 + <decimal/>
  794 + <group/>
  795 + <nullif>String</nullif>
  796 + <length>-1</length>
  797 + <precision>-1</precision>
  798 + <set_empty_string>N</set_empty_string>
  799 + </field>
  800 + <field>
  801 + <name>col_value</name>
  802 + <type>String</type>
  803 + <format/>
  804 + <currency/>
  805 + <decimal/>
  806 + <group/>
  807 + <nullif>replace</nullif>
  808 + <length>-1</length>
  809 + <precision>-1</precision>
  810 + <set_empty_string>N</set_empty_string>
  811 + </field>
  812 + </fields>
  813 + <cluster_schema/>
  814 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  815 + <xloc>608</xloc>
  816 + <yloc>601</yloc>
  817 + <draw>Y</draw>
  818 + </GUI>
  819 + </step>
  820 +
  821 + <step>
  822 + <name>&#x589e;&#x52a0;&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata</name>
  823 + <type>Constant</type>
  824 + <description/>
  825 + <distribute>Y</distribute>
  826 + <custom_distribution/>
  827 + <copies>1</copies>
  828 + <partitioning>
  829 + <method>none</method>
  830 + <schema_name/>
  831 + </partitioning>
  832 + <fields>
  833 + <field>
  834 + <name>col_name</name>
  835 + <type>String</type>
  836 + <format/>
  837 + <currency/>
  838 + <decimal/>
  839 + <group/>
  840 + <nullif>xlname_</nullif>
  841 + <length>-1</length>
  842 + <precision>-1</precision>
  843 + <set_empty_string>N</set_empty_string>
  844 + </field>
  845 + <field>
  846 + <name>col_type</name>
  847 + <type>String</type>
  848 + <format/>
  849 + <currency/>
  850 + <decimal/>
  851 + <group/>
  852 + <nullif>String</nullif>
  853 + <length>-1</length>
  854 + <precision>-1</precision>
  855 + <set_empty_string>N</set_empty_string>
  856 + </field>
  857 + <field>
  858 + <name>col_value</name>
  859 + <type>String</type>
  860 + <format/>
  861 + <currency/>
  862 + <decimal/>
  863 + <group/>
  864 + <nullif>replace</nullif>
  865 + <length>-1</length>
  866 + <precision>-1</precision>
  867 + <set_empty_string>N</set_empty_string>
  868 + </field>
  869 + </fields>
  870 + <cluster_schema/>
  871 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  872 + <xloc>383</xloc>
  873 + <yloc>341</yloc>
  874 + <draw>Y</draw>
  875 + </GUI>
  876 + </step>
  877 +
  878 + <step>
  879 + <name>&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</name>
  880 + <type>SelectValues</type>
  881 + <description/>
  882 + <distribute>Y</distribute>
  883 + <custom_distribution/>
  884 + <copies>1</copies>
  885 + <partitioning>
  886 + <method>none</method>
  887 + <schema_name/>
  888 + </partitioning>
  889 + <fields> <field> <name>col_name</name>
  890 + <rename/>
  891 + <length>-2</length>
  892 + <precision>-2</precision>
  893 + </field> <field> <name>col_type</name>
  894 + <rename/>
  895 + <length>-2</length>
  896 + <precision>-2</precision>
  897 + </field> <field> <name>col_value</name>
  898 + <rename/>
  899 + <length>-2</length>
  900 + <precision>-2</precision>
  901 + </field> <select_unspecified>N</select_unspecified>
  902 + </fields> <cluster_schema/>
  903 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  904 + <xloc>888</xloc>
  905 + <yloc>601</yloc>
  906 + <draw>Y</draw>
  907 + </GUI>
  908 + </step>
  909 +
  910 + <step>
  911 + <name>&#x66ff;&#x6362;&#x505c;&#x8f66;&#x5382;&#x540d;&#x5b57; </name>
  912 + <type>SetValueField</type>
  913 + <description/>
  914 + <distribute>Y</distribute>
  915 + <custom_distribution/>
  916 + <copies>1</copies>
  917 + <partitioning>
  918 + <method>none</method>
  919 + <schema_name/>
  920 + </partitioning>
  921 + <fields>
  922 + <field>
  923 + <name>col_value</name>
  924 + <replaceby>tccname_</replaceby>
  925 + </field>
  926 + </fields>
  927 + <cluster_schema/>
  928 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  929 + <xloc>598</xloc>
  930 + <yloc>471</yloc>
  931 + <draw>Y</draw>
  932 + </GUI>
  933 + </step>
  934 +
  935 + <step>
  936 + <name>&#x66ff;&#x6362;&#x65f6;&#x523b;&#x8868;&#x540d;&#x5b57;</name>
  937 + <type>SetValueField</type>
  938 + <description/>
  939 + <distribute>Y</distribute>
  940 + <custom_distribution/>
  941 + <copies>1</copies>
  942 + <partitioning>
  943 + <method>none</method>
  944 + <schema_name/>
  945 + </partitioning>
  946 + <fields>
  947 + <field>
  948 + <name>col_value</name>
  949 + <replaceby>ttinfoname_</replaceby>
  950 + </field>
  951 + </fields>
  952 + <cluster_schema/>
  953 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  954 + <xloc>746</xloc>
  955 + <yloc>602</yloc>
  956 + <draw>Y</draw>
  957 + </GUI>
  958 + </step>
  959 +
  960 + <step>
  961 + <name>&#x66ff;&#x6362;&#x7ebf;&#x8def;&#x540d;&#x79f0;</name>
  962 + <type>SetValueField</type>
  963 + <description/>
  964 + <distribute>Y</distribute>
  965 + <custom_distribution/>
  966 + <copies>1</copies>
  967 + <partitioning>
  968 + <method>none</method>
  969 + <schema_name/>
  970 + </partitioning>
  971 + <fields>
  972 + <field>
  973 + <name>col_value</name>
  974 + <replaceby>xlname_</replaceby>
  975 + </field>
  976 + </fields>
  977 + <cluster_schema/>
  978 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  979 + <xloc>521</xloc>
  980 + <yloc>342</yloc>
  981 + <draw>Y</draw>
  982 + </GUI>
  983 + </step>
  984 +
  985 + <step>
  986 + <name>&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</name>
  987 + <type>SelectValues</type>
  988 + <description/>
  989 + <distribute>Y</distribute>
  990 + <custom_distribution/>
  991 + <copies>1</copies>
  992 + <partitioning>
  993 + <method>none</method>
  994 + <schema_name/>
  995 + </partitioning>
  996 + <fields> <field> <name>col_name</name>
  997 + <rename/>
  998 + <length>-2</length>
  999 + <precision>-2</precision>
  1000 + </field> <field> <name>col_type</name>
  1001 + <rename/>
  1002 + <length>-2</length>
  1003 + <precision>-2</precision>
  1004 + </field> <field> <name>col_value</name>
  1005 + <rename/>
  1006 + <length>-2</length>
  1007 + <precision>-2</precision>
  1008 + </field> <select_unspecified>N</select_unspecified>
  1009 + </fields> <cluster_schema/>
  1010 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1011 + <xloc>668</xloc>
  1012 + <yloc>343</yloc>
  1013 + <draw>Y</draw>
  1014 + </GUI>
  1015 + </step>
  1016 +
  1017 + <step>
  1018 + <name>&#x83b7;&#x53d6;excel&#x5b57;&#x6bb5;&#x540d;&#x5b57;&#x7b26;&#x4e32;</name>
  1019 + <type>GetVariable</type>
  1020 + <description/>
  1021 + <distribute>Y</distribute>
  1022 + <custom_distribution/>
  1023 + <copies>1</copies>
  1024 + <partitioning>
  1025 + <method>none</method>
  1026 + <schema_name/>
  1027 + </partitioning>
  1028 + <fields>
  1029 + <field>
  1030 + <name>fieldnames</name>
  1031 + <variable>&#x24;&#x7b;excelfieldnames&#x7d;</variable>
  1032 + <type>String</type>
  1033 + <format/>
  1034 + <currency/>
  1035 + <decimal/>
  1036 + <group/>
  1037 + <length>-1</length>
  1038 + <precision>-1</precision>
  1039 + <trim_type>none</trim_type>
  1040 + </field>
  1041 + </fields>
  1042 + <cluster_schema/>
  1043 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1044 + <xloc>252</xloc>
  1045 + <yloc>153</yloc>
  1046 + <draw>Y</draw>
  1047 + </GUI>
  1048 + </step>
  1049 +
  1050 + <step>
  1051 + <name>&#x83b7;&#x53d6;excel&#x6587;&#x4ef6;&#x540d;</name>
  1052 + <type>GetVariable</type>
  1053 + <description/>
  1054 + <distribute>Y</distribute>
  1055 + <custom_distribution/>
  1056 + <copies>1</copies>
  1057 + <partitioning>
  1058 + <method>none</method>
  1059 + <schema_name/>
  1060 + </partitioning>
  1061 + <fields>
  1062 + <field>
  1063 + <name>filepath_</name>
  1064 + <variable>&#x24;&#x7b;filepath&#x7d;</variable>
  1065 + <type>String</type>
  1066 + <format/>
  1067 + <currency/>
  1068 + <decimal/>
  1069 + <group/>
  1070 + <length>-1</length>
  1071 + <precision>-1</precision>
  1072 + <trim_type>none</trim_type>
  1073 + </field>
  1074 + <field>
  1075 + <name>erroroutputdir_</name>
  1076 + <variable>&#x24;&#x7b;erroroutputdir&#x7d;</variable>
  1077 + <type>String</type>
  1078 + <format/>
  1079 + <currency/>
  1080 + <decimal/>
  1081 + <group/>
  1082 + <length>-1</length>
  1083 + <precision>-1</precision>
  1084 + <trim_type>none</trim_type>
  1085 + </field>
  1086 + <field>
  1087 + <name>sheetname_</name>
  1088 + <variable>&#x24;&#x7b;sheetname&#x7d;</variable>
  1089 + <type>String</type>
  1090 + <format/>
  1091 + <currency/>
  1092 + <decimal/>
  1093 + <group/>
  1094 + <length>-1</length>
  1095 + <precision>-1</precision>
  1096 + <trim_type>none</trim_type>
  1097 + </field>
  1098 + </fields>
  1099 + <cluster_schema/>
  1100 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1101 + <xloc>301</xloc>
  1102 + <yloc>52</yloc>
  1103 + <draw>Y</draw>
  1104 + </GUI>
  1105 + </step>
  1106 +
  1107 + <step>
  1108 + <name>&#x83b7;&#x53d6;normalize&#x5b57;&#x6bb5;&#x540d;&#x5b57;&#x7b26;&#x4e32;</name>
  1109 + <type>GetVariable</type>
  1110 + <description/>
  1111 + <distribute>Y</distribute>
  1112 + <custom_distribution/>
  1113 + <copies>1</copies>
  1114 + <partitioning>
  1115 + <method>none</method>
  1116 + <schema_name/>
  1117 + </partitioning>
  1118 + <fields>
  1119 + <field>
  1120 + <name>normalizefieldnames_</name>
  1121 + <variable>&#x24;&#x7b;normalizefieldnames&#x7d;</variable>
  1122 + <type>String</type>
  1123 + <format/>
  1124 + <currency/>
  1125 + <decimal/>
  1126 + <group/>
  1127 + <length>-1</length>
  1128 + <precision>-1</precision>
  1129 + <trim_type>none</trim_type>
  1130 + </field>
  1131 + </fields>
  1132 + <cluster_schema/>
  1133 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1134 + <xloc>261</xloc>
  1135 + <yloc>251</yloc>
  1136 + <draw>Y</draw>
  1137 + </GUI>
  1138 + </step>
  1139 +
  1140 + <step>
  1141 + <name>&#x83b7;&#x53d6;&#x65f6;&#x523b;&#x8868;id</name>
  1142 + <type>GetVariable</type>
  1143 + <description/>
  1144 + <distribute>Y</distribute>
  1145 + <custom_distribution/>
  1146 + <copies>1</copies>
  1147 + <partitioning>
  1148 + <method>none</method>
  1149 + <schema_name/>
  1150 + </partitioning>
  1151 + <fields>
  1152 + <field>
  1153 + <name>ttid_</name>
  1154 + <variable>&#x24;&#x7b;ttid&#x7d;</variable>
  1155 + <type>Integer</type>
  1156 + <format/>
  1157 + <currency/>
  1158 + <decimal/>
  1159 + <group/>
  1160 + <length>-1</length>
  1161 + <precision>-1</precision>
  1162 + <trim_type>none</trim_type>
  1163 + </field>
  1164 + </fields>
  1165 + <cluster_schema/>
  1166 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1167 + <xloc>608</xloc>
  1168 + <yloc>16</yloc>
  1169 + <draw>Y</draw>
  1170 + </GUI>
  1171 + </step>
  1172 +
  1173 + <step>
  1174 + <name>&#x83b7;&#x53d6;&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;</name>
  1175 + <type>GetVariable</type>
  1176 + <description/>
  1177 + <distribute>Y</distribute>
  1178 + <custom_distribution/>
  1179 + <copies>1</copies>
  1180 + <partitioning>
  1181 + <method>none</method>
  1182 + <schema_name/>
  1183 + </partitioning>
  1184 + <fields>
  1185 + <field>
  1186 + <name>ttinfoname_</name>
  1187 + <variable>&#x24;&#x7b;ttinfoname&#x7d;</variable>
  1188 + <type>String</type>
  1189 + <format/>
  1190 + <currency/>
  1191 + <decimal/>
  1192 + <group/>
  1193 + <length>-1</length>
  1194 + <precision>-1</precision>
  1195 + <trim_type>none</trim_type>
  1196 + </field>
  1197 + </fields>
  1198 + <cluster_schema/>
  1199 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1200 + <xloc>474</xloc>
  1201 + <yloc>601</yloc>
  1202 + <draw>Y</draw>
  1203 + </GUI>
  1204 + </step>
  1205 +
  1206 + <step>
  1207 + <name>&#x83b7;&#x53d6;&#x7ebf;&#x8def;&#x540d;&#x79f0;</name>
  1208 + <type>GetVariable</type>
  1209 + <description/>
  1210 + <distribute>Y</distribute>
  1211 + <custom_distribution/>
  1212 + <copies>1</copies>
  1213 + <partitioning>
  1214 + <method>none</method>
  1215 + <schema_name/>
  1216 + </partitioning>
  1217 + <fields>
  1218 + <field>
  1219 + <name>xlname_</name>
  1220 + <variable>&#x24;&#x7b;xlname&#x7d;</variable>
  1221 + <type>String</type>
  1222 + <format/>
  1223 + <currency/>
  1224 + <decimal/>
  1225 + <group/>
  1226 + <length>-1</length>
  1227 + <precision>-1</precision>
  1228 + <trim_type>none</trim_type>
  1229 + </field>
  1230 + </fields>
  1231 + <cluster_schema/>
  1232 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1233 + <xloc>184</xloc>
  1234 + <yloc>342</yloc>
  1235 + <draw>Y</draw>
  1236 + </GUI>
  1237 + </step>
  1238 +
  1239 + <step>
  1240 + <name>&#x9017;&#x53f7;&#x5207;&#x5206;&#x6210;&#x5b57;&#x6bb5;&#x540d;</name>
  1241 + <type>SplitFieldToRows3</type>
  1242 + <description/>
  1243 + <distribute>Y</distribute>
  1244 + <custom_distribution/>
  1245 + <copies>1</copies>
  1246 + <partitioning>
  1247 + <method>none</method>
  1248 + <schema_name/>
  1249 + </partitioning>
  1250 + <splitfield>fieldnames</splitfield>
  1251 + <delimiter>,</delimiter>
  1252 + <newfield>fieldname</newfield>
  1253 + <rownum>N</rownum>
  1254 + <rownum_field/>
  1255 + <resetrownumber>Y</resetrownumber>
  1256 + <delimiter_is_regex>N</delimiter_is_regex>
  1257 + <cluster_schema/>
  1258 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1259 + <xloc>442</xloc>
  1260 + <yloc>153</yloc>
  1261 + <draw>Y</draw>
  1262 + </GUI>
  1263 + </step>
  1264 +
  1265 + <step>
  1266 + <name>&#x9017;&#x53f7;&#x5207;&#x5206;&#x6210;&#x5b57;&#x6bb5;&#x540d; 2</name>
  1267 + <type>SplitFieldToRows3</type>
  1268 + <description/>
  1269 + <distribute>Y</distribute>
  1270 + <custom_distribution/>
  1271 + <copies>1</copies>
  1272 + <partitioning>
  1273 + <method>none</method>
  1274 + <schema_name/>
  1275 + </partitioning>
  1276 + <splitfield>normalizefieldnames_</splitfield>
  1277 + <delimiter>,</delimiter>
  1278 + <newfield>nfieldname</newfield>
  1279 + <rownum>N</rownum>
  1280 + <rownum_field/>
  1281 + <resetrownumber>Y</resetrownumber>
  1282 + <delimiter_is_regex>N</delimiter_is_regex>
  1283 + <cluster_schema/>
  1284 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1285 + <xloc>444</xloc>
  1286 + <yloc>247</yloc>
  1287 + <draw>Y</draw>
  1288 + </GUI>
  1289 + </step>
  1290 +
  1291 + <step>
  1292 + <name>&#x83b7;&#x53d6;&#x7ebf;&#x8def;&#x6807;&#x51c6;id</name>
  1293 + <type>GetVariable</type>
  1294 + <description/>
  1295 + <distribute>Y</distribute>
  1296 + <custom_distribution/>
  1297 + <copies>1</copies>
  1298 + <partitioning>
  1299 + <method>none</method>
  1300 + <schema_name/>
  1301 + </partitioning>
  1302 + <fields>
  1303 + <field>
  1304 + <name>lineinfoid_</name>
  1305 + <variable>&#x24;&#x7b;lineinfoid&#x7d;</variable>
  1306 + <type>Integer</type>
  1307 + <format/>
  1308 + <currency/>
  1309 + <decimal/>
  1310 + <group/>
  1311 + <length>-1</length>
  1312 + <precision>-1</precision>
  1313 + <trim_type>none</trim_type>
  1314 + </field>
  1315 + </fields>
  1316 + <cluster_schema/>
  1317 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1318 + <xloc>74</xloc>
  1319 + <yloc>468</yloc>
  1320 + <draw>Y</draw>
  1321 + </GUI>
  1322 + </step>
  1323 +
  1324 + <step>
  1325 + <name>&#x505c;&#x8f66;&#x573a;&#x7f16;&#x7801;</name>
  1326 + <type>DBLookup</type>
  1327 + <description/>
  1328 + <distribute>Y</distribute>
  1329 + <custom_distribution/>
  1330 + <copies>1</copies>
  1331 + <partitioning>
  1332 + <method>none</method>
  1333 + <schema_name/>
  1334 + </partitioning>
  1335 + <connection>bus_control_variable</connection>
  1336 + <cache>N</cache>
  1337 + <cache_load_all>N</cache_load_all>
  1338 + <cache_size>0</cache_size>
  1339 + <lookup>
  1340 + <schema/>
  1341 + <table>bsth_c_line_information</table>
  1342 + <orderby/>
  1343 + <fail_on_multiple>N</fail_on_multiple>
  1344 + <eat_row_on_failure>N</eat_row_on_failure>
  1345 + <key>
  1346 + <name>lineinfoid_</name>
  1347 + <field>id</field>
  1348 + <condition>&#x3d;</condition>
  1349 + <name2/>
  1350 + </key>
  1351 + <value>
  1352 + <name>car_park</name>
  1353 + <rename>car_park</rename>
  1354 + <default/>
  1355 + <type>String</type>
  1356 + </value>
  1357 + </lookup>
  1358 + <cluster_schema/>
  1359 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1360 + <xloc>182</xloc>
  1361 + <yloc>467</yloc>
  1362 + <draw>Y</draw>
  1363 + </GUI>
  1364 + </step>
  1365 +
  1366 + <step>
  1367 + <name>&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;</name>
  1368 + <type>DBLookup</type>
  1369 + <description/>
  1370 + <distribute>Y</distribute>
  1371 + <custom_distribution/>
  1372 + <copies>1</copies>
  1373 + <partitioning>
  1374 + <method>none</method>
  1375 + <schema_name/>
  1376 + </partitioning>
  1377 + <connection>bus_control_variable</connection>
  1378 + <cache>N</cache>
  1379 + <cache_load_all>N</cache_load_all>
  1380 + <cache_size>0</cache_size>
  1381 + <lookup>
  1382 + <schema/>
  1383 + <table>bsth_c_car_park</table>
  1384 + <orderby/>
  1385 + <fail_on_multiple>N</fail_on_multiple>
  1386 + <eat_row_on_failure>N</eat_row_on_failure>
  1387 + <key>
  1388 + <name>car_park</name>
  1389 + <field>park_code</field>
  1390 + <condition>&#x3d;</condition>
  1391 + <name2/>
  1392 + </key>
  1393 + <value>
  1394 + <name>park_name</name>
  1395 + <rename>tccname_</rename>
  1396 + <default/>
  1397 + <type>String</type>
  1398 + </value>
  1399 + </lookup>
  1400 + <cluster_schema/>
  1401 + <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
  1402 + <xloc>319</xloc>
  1403 + <yloc>468</yloc>
  1404 + <draw>Y</draw>
  1405 + </GUI>
  1406 + </step>
  1407 +
  1408 + <step_error_handling>
  1409 + </step_error_handling>
  1410 + <slave-step-copy-partition-distribution>
  1411 +</slave-step-copy-partition-distribution>
  1412 + <slave_transformation>N</slave_transformation>
  1413 +
  1414 +</transformation>
src/main/resources/static/pages/forms/statement/account.html
@@ -149,7 +149,7 @@ @@ -149,7 +149,7 @@
149 code = $("#code").val(); 149 code = $("#code").val();
150 var type = "query"; 150 var type = "query";
151 $(".hidden").removeClass("hidden"); 151 $(".hidden").removeClass("hidden");
152 - $post('/realSchedule/account',{line:line,date:date,code:code,xlName:xlName,type:type},function(result){ 152 + $get('/realSchedule/account',{line:line,date:date,code:code,xlName:xlName,type:type},function(result){
153 $.each(result, function(i, obj) { 153 $.each(result, function(i, obj) {
154 obj.requestType = reqCodeMap[obj.requestType]; 154 obj.requestType = reqCodeMap[obj.requestType];
155 }); 155 });
src/main/resources/static/real_control_v2/assets/plugins/layer3.0.3/layer.js 0 → 100644
  1 +/**
  2 +
  3 + @Name:layer v3.0.3 Web弹层组件
  4 + @Author:贤心
  5 + @Site:http://layer.layui.com
  6 + @License:MIT
  7 +
  8 + */
  9 +
  10 +;!function(window, undefined){
  11 +"use strict";
  12 +
  13 +var isLayui = window.layui && layui.define, $, win, ready = {
  14 + getPath: function(){
  15 + var js = document.scripts, script = js[js.length - 1], jsPath = script.src;
  16 + if(script.getAttribute('merge')) return;
  17 + return jsPath.substring(0, jsPath.lastIndexOf("/") + 1);
  18 + }(),
  19 +
  20 + config: {}, end: {}, minIndex: 0, minLeft: [],
  21 + btn: ['&#x786E;&#x5B9A;', '&#x53D6;&#x6D88;'],
  22 +
  23 + //五种原始层模式
  24 + type: ['dialog', 'page', 'iframe', 'loading', 'tips']
  25 +};
  26 +
  27 +//默认内置方法。
  28 +var layer = {
  29 + v: '3.0.3',
  30 + ie: function(){ //ie版本
  31 + var agent = navigator.userAgent.toLowerCase();
  32 + return (!!window.ActiveXObject || "ActiveXObject" in window) ? (
  33 + (agent.match(/msie\s(\d+)/) || [])[1] || '11' //由于ie11并没有msie的标识
  34 + ) : false;
  35 + }(),
  36 + index: (window.layer && window.layer.v) ? 100000 : 0,
  37 + path: ready.getPath,
  38 + config: function(options, fn){
  39 + options = options || {};
  40 + layer.cache = ready.config = $.extend({}, ready.config, options);
  41 + layer.path = ready.config.path || layer.path;
  42 + typeof options.extend === 'string' && (options.extend = [options.extend]);
  43 +
  44 + if(ready.config.path) layer.ready();
  45 +
  46 + if(!options.extend) return this;
  47 +
  48 + isLayui
  49 + ? layui.addcss('modules/layer/' + options.extend)
  50 + : layer.link('skin/' + options.extend);
  51 +
  52 + return this;
  53 + },
  54 +
  55 + //载入CSS配件
  56 + link: function(href, fn, cssname){
  57 +
  58 + //未设置路径,则不主动加载css
  59 + if(!layer.path) return;
  60 +
  61 + var head = $('head')[0], link = document.createElement('link');
  62 + if(typeof fn === 'string') cssname = fn;
  63 + var app = (cssname || href).replace(/\.|\//g, '');
  64 + var id = 'layuicss-'+app, timeout = 0;
  65 +
  66 + link.rel = 'stylesheet';
  67 + link.href = layer.path + href;
  68 + link.id = id;
  69 +
  70 + if(!$('#'+ id)[0]){
  71 + head.appendChild(link);
  72 + }
  73 +
  74 + if(typeof fn !== 'function') return;
  75 +
  76 + //轮询css是否加载完毕
  77 +/* (function poll() {
  78 + if(++timeout > 8 * 1000 / 100){
  79 + return window.console && console.error('layer.css: Invalid');
  80 + };
  81 + parseInt($('#'+id).css('width')) === 1989 ? fn() : setTimeout(poll, 100);
  82 + }());*/
  83 + },
  84 +
  85 + ready: function(callback){
  86 + /*var cssname = 'skinlayercss', ver = '303';
  87 + isLayui ? layui.addcss('modules/layer/default/layer.css?v='+layer.v+ver, callback, cssname)
  88 + : layer.link('skin/default/layer.css?v='+layer.v+ver, callback, cssname);*/
  89 + return this;
  90 + },
  91 +
  92 + //各种快捷引用
  93 + alert: function(content, options, yes){
  94 + var type = typeof options === 'function';
  95 + if(type) yes = options;
  96 + return layer.open($.extend({
  97 + content: content,
  98 + yes: yes
  99 + }, type ? {} : options));
  100 + },
  101 +
  102 + confirm: function(content, options, yes, cancel){
  103 + var type = typeof options === 'function';
  104 + if(type){
  105 + cancel = yes;
  106 + yes = options;
  107 + }
  108 + return layer.open($.extend({
  109 + content: content,
  110 + btn: ready.btn,
  111 + yes: yes,
  112 + btn2: cancel
  113 + }, type ? {} : options));
  114 + },
  115 +
  116 + msg: function(content, options, end){ //最常用提示层
  117 + var type = typeof options === 'function', rskin = ready.config.skin;
  118 + var skin = (rskin ? rskin + ' ' + rskin + '-msg' : '')||'layui-layer-msg';
  119 + var anim = doms.anim.length - 1;
  120 + if(type) end = options;
  121 + return layer.open($.extend({
  122 + content: content,
  123 + time: 3000,
  124 + shade: false,
  125 + skin: skin,
  126 + title: false,
  127 + closeBtn: false,
  128 + btn: false,
  129 + resize: false,
  130 + end: end
  131 + }, (type && !ready.config.skin) ? {
  132 + skin: skin + ' layui-layer-hui',
  133 + anim: anim
  134 + } : function(){
  135 + options = options || {};
  136 + if(options.icon === -1 || options.icon === undefined && !ready.config.skin){
  137 + options.skin = skin + ' ' + (options.skin||'layui-layer-hui');
  138 + }
  139 + return options;
  140 + }()));
  141 + },
  142 +
  143 + load: function(icon, options){
  144 + return layer.open($.extend({
  145 + type: 3,
  146 + icon: icon || 0,
  147 + resize: false,
  148 + shade: 0.01
  149 + }, options));
  150 + },
  151 +
  152 + tips: function(content, follow, options){
  153 + return layer.open($.extend({
  154 + type: 4,
  155 + content: [content, follow],
  156 + closeBtn: false,
  157 + time: 3000,
  158 + shade: false,
  159 + resize: false,
  160 + fixed: false,
  161 + maxWidth: 210
  162 + }, options));
  163 + }
  164 +};
  165 +
  166 +var Class = function(setings){
  167 + var that = this;
  168 + that.index = ++layer.index;
  169 + that.config = $.extend({}, that.config, ready.config, setings);
  170 + document.body ? that.creat() : setTimeout(function(){
  171 + that.creat();
  172 + }, 30);
  173 +};
  174 +
  175 +Class.pt = Class.prototype;
  176 +
  177 +//缓存常用字符
  178 +var doms = ['layui-layer', '.layui-layer-title', '.layui-layer-main', '.layui-layer-dialog', 'layui-layer-iframe', 'layui-layer-content', 'layui-layer-btn', 'layui-layer-close'];
  179 +doms.anim = ['layer-anim', 'layer-anim-01', 'layer-anim-02', 'layer-anim-03', 'layer-anim-04', 'layer-anim-05', 'layer-anim-06'];
  180 +
  181 +//默认配置
  182 +Class.pt.config = {
  183 + type: 0,
  184 + shade: 0.3,
  185 + fixed: true,
  186 + move: doms[1],
  187 + title: '&#x4FE1;&#x606F;',
  188 + offset: 'auto',
  189 + area: 'auto',
  190 + closeBtn: 1,
  191 + time: 0, //0表示不自动关闭
  192 + zIndex: 19891014,
  193 + maxWidth: 360,
  194 + anim: 0,
  195 + isOutAnim: true,
  196 + icon: -1,
  197 + moveType: 1,
  198 + resize: true,
  199 + scrollbar: true, //是否允许浏览器滚动条
  200 + tips: 2
  201 +};
  202 +
  203 +//容器
  204 +Class.pt.vessel = function(conType, callback){
  205 + var that = this, times = that.index, config = that.config;
  206 + var zIndex = config.zIndex + times, titype = typeof config.title === 'object';
  207 + var ismax = config.maxmin && (config.type === 1 || config.type === 2);
  208 + var titleHTML = (config.title ? '<div class="layui-layer-title" style="'+ (titype ? config.title[1] : '') +'">'
  209 + + (titype ? config.title[0] : config.title)
  210 + + '</div>' : '');
  211 +
  212 + config.zIndex = zIndex;
  213 + callback([
  214 + //遮罩
  215 + config.shade ? ('<div class="layui-layer-shade" id="layui-layer-shade'+ times +'" times="'+ times +'" style="'+ ('z-index:'+ (zIndex-1) +'; background-color:'+ (config.shade[1]||'#000') +'; opacity:'+ (config.shade[0]||config.shade) +'; filter:alpha(opacity='+ (config.shade[0]*100||config.shade*100) +');') +'"></div>') : '',
  216 +
  217 + //主体
  218 + '<div class="'+ doms[0] + (' layui-layer-'+ready.type[config.type]) + (((config.type == 0 || config.type == 2) && !config.shade) ? ' layui-layer-border' : '') + ' ' + (config.skin||'') +'" id="'+ doms[0] + times +'" type="'+ ready.type[config.type] +'" times="'+ times +'" showtime="'+ config.time +'" conType="'+ (conType ? 'object' : 'string') +'" style="z-index: '+ zIndex +'; width:'+ config.area[0] + ';height:' + config.area[1] + (config.fixed ? '' : ';position:absolute;') +'">'
  219 + + (conType && config.type != 2 ? '' : titleHTML)
  220 + + '<div id="'+ (config.id||'') +'" class="layui-layer-content'+ ((config.type == 0 && config.icon !== -1) ? ' layui-layer-padding' :'') + (config.type == 3 ? ' layui-layer-loading'+config.icon : '') +'">'
  221 + + (config.type == 0 && config.icon !== -1 ? '<i class="layui-layer-ico layui-layer-ico'+ config.icon +'"></i>' : '')
  222 + + (config.type == 1 && conType ? '' : (config.content||''))
  223 + + '</div>'
  224 + + '<span class="layui-layer-setwin">'+ function(){
  225 + var closebtn = ismax ? '<a class="layui-layer-min" href="javascript:;"><cite></cite></a><a class="layui-layer-ico layui-layer-max" href="javascript:;"></a>' : '';
  226 + config.closeBtn && (closebtn += '<a class="layui-layer-ico '+ doms[7] +' '+ doms[7] + (config.title ? config.closeBtn : (config.type == 4 ? '1' : '2')) +'" href="javascript:;"></a>');
  227 + return closebtn;
  228 + }() + '</span>'
  229 + + (config.btn ? function(){
  230 + var button = '';
  231 + typeof config.btn === 'string' && (config.btn = [config.btn]);
  232 + for(var i = 0, len = config.btn.length; i < len; i++){
  233 + button += '<a class="'+ doms[6] +''+ i +'">'+ config.btn[i] +'</a>'
  234 + }
  235 + return '<div class="'+ doms[6] + (config.btnAlign ? (' layui-layer-btn-' + config.btnAlign) : '') +'">'+ button +'</div>'
  236 + }() : '')
  237 + + (config.resize ? '<span class="layui-layer-resize"></span>' : '')
  238 + + '</div>'
  239 + ], titleHTML, $('<div class="layui-layer-move"></div>'));
  240 + return that;
  241 +};
  242 +
  243 +//创建骨架
  244 +Class.pt.creat = function(){
  245 + var that = this
  246 + ,config = that.config
  247 + ,times = that.index, nodeIndex
  248 + ,content = config.content
  249 + ,conType = typeof content === 'object'
  250 + ,body = $('body');
  251 +
  252 + if(config.id && $('#'+config.id)[0]) return;
  253 +
  254 + if(typeof config.area === 'string'){
  255 + config.area = config.area === 'auto' ? ['', ''] : [config.area, ''];
  256 + }
  257 +
  258 + //anim兼容旧版shift
  259 + if(config.shift){
  260 + config.anim = config.shift;
  261 + }
  262 +
  263 + if(layer.ie == 6){
  264 + config.fixed = false;
  265 + }
  266 +
  267 + switch(config.type){
  268 + case 0:
  269 + config.btn = ('btn' in config) ? config.btn : ready.btn[0];
  270 + layer.closeAll('dialog');
  271 + break;
  272 + case 2:
  273 + var content = config.content = conType ? config.content : [config.content, 'auto'];
  274 + config.content = '<iframe scrolling="'+ (config.content[1]||'auto') +'" allowtransparency="true" id="'+ doms[4] +''+ times +'" name="'+ doms[4] +''+ times +'" onload="this.className=\'\';" class="layui-layer-load" frameborder="0" src="' + config.content[0] + '"></iframe>';
  275 + break;
  276 + case 3:
  277 + delete config.title;
  278 + delete config.closeBtn;
  279 + config.icon === -1 && (config.icon === 0);
  280 + layer.closeAll('loading');
  281 + break;
  282 + case 4:
  283 + conType || (config.content = [config.content, 'body']);
  284 + config.follow = config.content[1];
  285 + config.content = config.content[0] + '<i class="layui-layer-TipsG"></i>';
  286 + delete config.title;
  287 + config.tips = typeof config.tips === 'object' ? config.tips : [config.tips, true];
  288 + config.tipsMore || layer.closeAll('tips');
  289 + break;
  290 + }
  291 +
  292 + //建立容器
  293 + that.vessel(conType, function(html, titleHTML, moveElem){
  294 + body.append(html[0]);
  295 + conType ? function(){
  296 + (config.type == 2 || config.type == 4) ? function(){
  297 + $('body').append(html[1]);
  298 + }() : function(){
  299 + if(!content.parents('.'+doms[0])[0]){
  300 + content.data('display', content.css('display')).show().addClass('layui-layer-wrap').wrap(html[1]);
  301 + $('#'+ doms[0] + times).find('.'+doms[5]).before(titleHTML);
  302 + }
  303 + }();
  304 + }() : body.append(html[1]);
  305 + $('.layui-layer-move')[0] || body.append(ready.moveElem = moveElem);
  306 + that.layero = $('#'+ doms[0] + times);
  307 + config.scrollbar || doms.html.css('overflow', 'hidden').attr('layer-full', times);
  308 + }).auto(times);
  309 +
  310 + config.type == 2 && layer.ie == 6 && that.layero.find('iframe').attr('src', content[0]);
  311 +
  312 + //坐标自适应浏览器窗口尺寸
  313 + config.type == 4 ? that.tips() : that.offset();
  314 + if(config.fixed){
  315 + win.on('resize', function(){
  316 + that.offset();
  317 + (/^\d+%$/.test(config.area[0]) || /^\d+%$/.test(config.area[1])) && that.auto(times);
  318 + config.type == 4 && that.tips();
  319 + });
  320 + }
  321 +
  322 + config.time <= 0 || setTimeout(function(){
  323 + layer.close(that.index)
  324 + }, config.time);
  325 + that.move().callback();
  326 +
  327 + //为兼容jQuery3.0的css动画影响元素尺寸计算
  328 + if(doms.anim[config.anim]){
  329 + that.layero.addClass(doms.anim[config.anim]);
  330 + };
  331 +
  332 + //记录关闭动画
  333 + if(config.isOutAnim){
  334 + that.layero.data('isOutAnim', true);
  335 + }
  336 +};
  337 +
  338 +//自适应
  339 +Class.pt.auto = function(index){
  340 + var that = this, config = that.config, layero = $('#'+ doms[0] + index);
  341 + if(config.area[0] === '' && config.maxWidth > 0){
  342 + //为了修复IE7下一个让人难以理解的bug
  343 + if(layer.ie && layer.ie < 8 && config.btn){
  344 + layero.width(layero.innerWidth());
  345 + }
  346 + layero.outerWidth() > config.maxWidth && layero.width(config.maxWidth);
  347 + }
  348 + var area = [layero.innerWidth(), layero.innerHeight()];
  349 + var titHeight = layero.find(doms[1]).outerHeight() || 0;
  350 + var btnHeight = layero.find('.'+doms[6]).outerHeight() || 0;
  351 + function setHeight(elem){
  352 + elem = layero.find(elem);
  353 + elem.height(area[1] - titHeight - btnHeight - 2*(parseFloat(elem.css('padding-top'))|0));
  354 + }
  355 + switch(config.type){
  356 + case 2:
  357 + setHeight('iframe');
  358 + break;
  359 + default:
  360 + if(config.area[1] === ''){
  361 + if(config.fixed && area[1] >= win.height()){
  362 + area[1] = win.height();
  363 + setHeight('.'+doms[5]);
  364 + }
  365 + } else {
  366 + setHeight('.'+doms[5]);
  367 + }
  368 + break;
  369 + }
  370 + return that;
  371 +};
  372 +
  373 +//计算坐标
  374 +Class.pt.offset = function(){
  375 + var that = this, config = that.config, layero = that.layero;
  376 + var area = [layero.outerWidth(), layero.outerHeight()];
  377 + var type = typeof config.offset === 'object';
  378 + that.offsetTop = (win.height() - area[1])/2;
  379 + that.offsetLeft = (win.width() - area[0])/2;
  380 +
  381 + if(type){
  382 + that.offsetTop = config.offset[0];
  383 + that.offsetLeft = config.offset[1]||that.offsetLeft;
  384 + } else if(config.offset !== 'auto'){
  385 +
  386 + if(config.offset === 't'){ //上
  387 + that.offsetTop = 0;
  388 + } else if(config.offset === 'r'){ //右
  389 + that.offsetLeft = win.width() - area[0];
  390 + } else if(config.offset === 'b'){ //下
  391 + that.offsetTop = win.height() - area[1];
  392 + } else if(config.offset === 'l'){ //左
  393 + that.offsetLeft = 0;
  394 + } else if(config.offset === 'lt'){ //左上角
  395 + that.offsetTop = 0;
  396 + that.offsetLeft = 0;
  397 + } else if(config.offset === 'lb'){ //左下角
  398 + that.offsetTop = win.height() - area[1];
  399 + that.offsetLeft = 0;
  400 + } else if(config.offset === 'rt'){ //右上角
  401 + that.offsetTop = 0;
  402 + that.offsetLeft = win.width() - area[0];
  403 + } else if(config.offset === 'rb'){ //右下角
  404 + that.offsetTop = win.height() - area[1];
  405 + that.offsetLeft = win.width() - area[0];
  406 + } else {
  407 + that.offsetTop = config.offset;
  408 + }
  409 +
  410 + }
  411 +
  412 + if(!config.fixed){
  413 + that.offsetTop = /%$/.test(that.offsetTop) ?
  414 + win.height()*parseFloat(that.offsetTop)/100
  415 + : parseFloat(that.offsetTop);
  416 + that.offsetLeft = /%$/.test(that.offsetLeft) ?
  417 + win.width()*parseFloat(that.offsetLeft)/100
  418 + : parseFloat(that.offsetLeft);
  419 + that.offsetTop += win.scrollTop();
  420 + that.offsetLeft += win.scrollLeft();
  421 + }
  422 +
  423 + if(layero.attr('minLeft')){
  424 + that.offsetTop = win.height() - (layero.find(doms[1]).outerHeight() || 0);
  425 + that.offsetLeft = layero.css('left');
  426 + }
  427 +
  428 + layero.css({top: that.offsetTop, left: that.offsetLeft});
  429 +};
  430 +
  431 +//Tips
  432 +Class.pt.tips = function(){
  433 + var that = this, config = that.config, layero = that.layero;
  434 + var layArea = [layero.outerWidth(), layero.outerHeight()], follow = $(config.follow);
  435 + if(!follow[0]) follow = $('body');
  436 + var goal = {
  437 + width: follow.outerWidth(),
  438 + height: follow.outerHeight(),
  439 + top: follow.offset().top,
  440 + left: follow.offset().left
  441 + }, tipsG = layero.find('.layui-layer-TipsG');
  442 +
  443 + var guide = config.tips[0];
  444 + config.tips[1] || tipsG.remove();
  445 +
  446 + goal.autoLeft = function(){
  447 + if(goal.left + layArea[0] - win.width() > 0){
  448 + goal.tipLeft = goal.left + goal.width - layArea[0];
  449 + tipsG.css({right: 12, left: 'auto'});
  450 + } else {
  451 + goal.tipLeft = goal.left;
  452 + };
  453 + };
  454 +
  455 + //辨别tips的方位
  456 + goal.where = [function(){ //上
  457 + goal.autoLeft();
  458 + goal.tipTop = goal.top - layArea[1] - 10;
  459 + tipsG.removeClass('layui-layer-TipsB').addClass('layui-layer-TipsT').css('border-right-color', config.tips[1]);
  460 + }, function(){ //右
  461 + goal.tipLeft = goal.left + goal.width + 10;
  462 + goal.tipTop = goal.top;
  463 + tipsG.removeClass('layui-layer-TipsL').addClass('layui-layer-TipsR').css('border-bottom-color', config.tips[1]);
  464 + }, function(){ //下
  465 + goal.autoLeft();
  466 + goal.tipTop = goal.top + goal.height + 10;
  467 + tipsG.removeClass('layui-layer-TipsT').addClass('layui-layer-TipsB').css('border-right-color', config.tips[1]);
  468 + }, function(){ //左
  469 + goal.tipLeft = goal.left - layArea[0] - 10;
  470 + goal.tipTop = goal.top;
  471 + tipsG.removeClass('layui-layer-TipsR').addClass('layui-layer-TipsL').css('border-bottom-color', config.tips[1]);
  472 + }];
  473 + goal.where[guide-1]();
  474 +
  475 + /* 8*2为小三角形占据的空间 */
  476 + if(guide === 1){
  477 + goal.top - (win.scrollTop() + layArea[1] + 8*2) < 0 && goal.where[2]();
  478 + } else if(guide === 2){
  479 + win.width() - (goal.left + goal.width + layArea[0] + 8*2) > 0 || goal.where[3]()
  480 + } else if(guide === 3){
  481 + (goal.top - win.scrollTop() + goal.height + layArea[1] + 8*2) - win.height() > 0 && goal.where[0]();
  482 + } else if(guide === 4){
  483 + layArea[0] + 8*2 - goal.left > 0 && goal.where[1]()
  484 + }
  485 +
  486 + layero.find('.'+doms[5]).css({
  487 + 'background-color': config.tips[1],
  488 + 'padding-right': (config.closeBtn ? '30px' : '')
  489 + });
  490 + layero.css({
  491 + left: goal.tipLeft - (config.fixed ? win.scrollLeft() : 0),
  492 + top: goal.tipTop - (config.fixed ? win.scrollTop() : 0)
  493 + });
  494 +}
  495 +
  496 +//拖拽层
  497 +Class.pt.move = function(){
  498 + var that = this
  499 + ,config = that.config
  500 + ,_DOC = $(document)
  501 + ,layero = that.layero
  502 + ,moveElem = layero.find(config.move)
  503 + ,resizeElem = layero.find('.layui-layer-resize')
  504 + ,dict = {};
  505 +
  506 + if(config.move){
  507 + moveElem.css('cursor', 'move');
  508 + }
  509 +
  510 + moveElem.on('mousedown', function(e){
  511 + e.preventDefault();
  512 + if(config.move){
  513 + dict.moveStart = true;
  514 + dict.offset = [
  515 + e.clientX - parseFloat(layero.css('left'))
  516 + ,e.clientY - parseFloat(layero.css('top'))
  517 + ];
  518 + ready.moveElem.css('cursor', 'move').show();
  519 + }
  520 + });
  521 +
  522 + resizeElem.on('mousedown', function(e){
  523 + e.preventDefault();
  524 + dict.resizeStart = true;
  525 + dict.offset = [e.clientX, e.clientY];
  526 + dict.area = [
  527 + layero.outerWidth()
  528 + ,layero.outerHeight()
  529 + ];
  530 + ready.moveElem.css('cursor', 'se-resize').show();
  531 + });
  532 +
  533 + _DOC.on('mousemove', function(e){
  534 +
  535 + //拖拽移动
  536 + if(dict.moveStart){
  537 + var X = e.clientX - dict.offset[0]
  538 + ,Y = e.clientY - dict.offset[1]
  539 + ,fixed = layero.css('position') === 'fixed';
  540 +
  541 + e.preventDefault();
  542 +
  543 + dict.stX = fixed ? 0 : win.scrollLeft();
  544 + dict.stY = fixed ? 0 : win.scrollTop();
  545 +
  546 + //控制元素不被拖出窗口外
  547 + if(!config.moveOut){
  548 + var setRig = win.width() - layero.outerWidth() + dict.stX
  549 + ,setBot = win.height() - layero.outerHeight() + dict.stY;
  550 + X < dict.stX && (X = dict.stX);
  551 + X > setRig && (X = setRig);
  552 + Y < dict.stY && (Y = dict.stY);
  553 + Y > setBot && (Y = setBot);
  554 + }
  555 +
  556 + layero.css({
  557 + left: X
  558 + ,top: Y
  559 + });
  560 + }
  561 +
  562 + //Resize
  563 + if(config.resize && dict.resizeStart){
  564 + var X = e.clientX - dict.offset[0]
  565 + ,Y = e.clientY - dict.offset[1];
  566 +
  567 + e.preventDefault();
  568 +
  569 + layer.style(that.index, {
  570 + width: dict.area[0] + X
  571 + ,height: dict.area[1] + Y
  572 + })
  573 + dict.isResize = true;
  574 + config.resizing && config.resizing(layero);
  575 + }
  576 + }).on('mouseup', function(e){
  577 + if(dict.moveStart){
  578 + delete dict.moveStart;
  579 + ready.moveElem.hide();
  580 + config.moveEnd && config.moveEnd(layero);
  581 + }
  582 + if(dict.resizeStart){
  583 + delete dict.resizeStart;
  584 + ready.moveElem.hide();
  585 + }
  586 + });
  587 +
  588 + return that;
  589 +};
  590 +
  591 +Class.pt.callback = function(){
  592 + var that = this, layero = that.layero, config = that.config;
  593 + that.openLayer();
  594 + if(config.success){
  595 + if(config.type == 2){
  596 + layero.find('iframe').on('load', function(){
  597 + config.success(layero, that.index);
  598 + });
  599 + } else {
  600 + config.success(layero, that.index);
  601 + }
  602 + }
  603 + layer.ie == 6 && that.IE6(layero);
  604 +
  605 + //按钮
  606 + layero.find('.'+ doms[6]).children('a').on('click', function(){
  607 + var index = $(this).index();
  608 + if(index === 0){
  609 + if(config.yes){
  610 + config.yes(that.index, layero)
  611 + } else if(config['btn1']){
  612 + config['btn1'](that.index, layero)
  613 + } else {
  614 + layer.close(that.index);
  615 + }
  616 + } else {
  617 + var close = config['btn'+(index+1)] && config['btn'+(index+1)](that.index, layero);
  618 + close === false || layer.close(that.index);
  619 + }
  620 + });
  621 +
  622 + //取消
  623 + function cancel(){
  624 + var close = config.cancel && config.cancel(that.index, layero);
  625 + close === false || layer.close(that.index);
  626 + }
  627 +
  628 + //右上角关闭回调
  629 + layero.find('.'+ doms[7]).on('click', cancel);
  630 +
  631 + //点遮罩关闭
  632 + if(config.shadeClose){
  633 + $('#layui-layer-shade'+ that.index).on('click', function(){
  634 + layer.close(that.index);
  635 + });
  636 + }
  637 +
  638 + //最小化
  639 + layero.find('.layui-layer-min').on('click', function(){
  640 + var min = config.min && config.min(layero);
  641 + min === false || layer.min(that.index, config);
  642 + });
  643 +
  644 + //全屏/还原
  645 + layero.find('.layui-layer-max').on('click', function(){
  646 + if($(this).hasClass('layui-layer-maxmin')){
  647 + layer.restore(that.index);
  648 + config.restore && config.restore(layero);
  649 + } else {
  650 + layer.full(that.index, config);
  651 + setTimeout(function(){
  652 + config.full && config.full(layero);
  653 + }, 100);
  654 + }
  655 + });
  656 +
  657 + config.end && (ready.end[that.index] = config.end);
  658 +};
  659 +
  660 +//for ie6 恢复select
  661 +ready.reselect = function(){
  662 + $.each($('select'), function(index , value){
  663 + var sthis = $(this);
  664 + if(!sthis.parents('.'+doms[0])[0]){
  665 + (sthis.attr('layer') == 1 && $('.'+doms[0]).length < 1) && sthis.removeAttr('layer').show();
  666 + }
  667 + sthis = null;
  668 + });
  669 +};
  670 +
  671 +Class.pt.IE6 = function(layero){
  672 + //隐藏select
  673 + $('select').each(function(index , value){
  674 + var sthis = $(this);
  675 + if(!sthis.parents('.'+doms[0])[0]){
  676 + sthis.css('display') === 'none' || sthis.attr({'layer' : '1'}).hide();
  677 + }
  678 + sthis = null;
  679 + });
  680 +};
  681 +
  682 +//需依赖原型的对外方法
  683 +Class.pt.openLayer = function(){
  684 + var that = this;
  685 +
  686 + //置顶当前窗口
  687 + layer.zIndex = that.config.zIndex;
  688 + layer.setTop = function(layero){
  689 + var setZindex = function(){
  690 + layer.zIndex++;
  691 + layero.css('z-index', layer.zIndex + 1);
  692 + };
  693 + layer.zIndex = parseInt(layero[0].style.zIndex);
  694 + layero.on('mousedown', setZindex);
  695 + return layer.zIndex;
  696 + };
  697 +};
  698 +
  699 +ready.record = function(layero){
  700 + var area = [
  701 + layero.width(),
  702 + layero.height(),
  703 + layero.position().top,
  704 + layero.position().left + parseFloat(layero.css('margin-left'))
  705 + ];
  706 + layero.find('.layui-layer-max').addClass('layui-layer-maxmin');
  707 + layero.attr({area: area});
  708 +};
  709 +
  710 +ready.rescollbar = function(index){
  711 + if(doms.html.attr('layer-full') == index){
  712 + if(doms.html[0].style.removeProperty){
  713 + doms.html[0].style.removeProperty('overflow');
  714 + } else {
  715 + doms.html[0].style.removeAttribute('overflow');
  716 + }
  717 + doms.html.removeAttr('layer-full');
  718 + }
  719 +};
  720 +
  721 +/** 内置成员 */
  722 +
  723 +window.layer = layer;
  724 +
  725 +//获取子iframe的DOM
  726 +layer.getChildFrame = function(selector, index){
  727 + index = index || $('.'+doms[4]).attr('times');
  728 + return $('#'+ doms[0] + index).find('iframe').contents().find(selector);
  729 +};
  730 +
  731 +//得到当前iframe层的索引,子iframe时使用
  732 +layer.getFrameIndex = function(name){
  733 + return $('#'+ name).parents('.'+doms[4]).attr('times');
  734 +};
  735 +
  736 +//iframe层自适应宽高
  737 +layer.iframeAuto = function(index){
  738 + if(!index) return;
  739 + var heg = layer.getChildFrame('html', index).outerHeight();
  740 + var layero = $('#'+ doms[0] + index);
  741 + var titHeight = layero.find(doms[1]).outerHeight() || 0;
  742 + var btnHeight = layero.find('.'+doms[6]).outerHeight() || 0;
  743 + layero.css({height: heg + titHeight + btnHeight});
  744 + layero.find('iframe').css({height: heg});
  745 +};
  746 +
  747 +//重置iframe url
  748 +layer.iframeSrc = function(index, url){
  749 + $('#'+ doms[0] + index).find('iframe').attr('src', url);
  750 +};
  751 +
  752 +//设定层的样式
  753 +layer.style = function(index, options, limit){
  754 + var layero = $('#'+ doms[0] + index)
  755 + ,contElem = layero.find('.layui-layer-content')
  756 + ,type = layero.attr('type')
  757 + ,titHeight = layero.find(doms[1]).outerHeight() || 0
  758 + ,btnHeight = layero.find('.'+doms[6]).outerHeight() || 0
  759 + ,minLeft = layero.attr('minLeft');
  760 +
  761 + if(type === ready.type[3] || type === ready.type[4]){
  762 + return;
  763 + }
  764 +
  765 + if(!limit){
  766 + if(parseFloat(options.width) <= 260){
  767 + options.width = 260;
  768 + };
  769 +
  770 + if(parseFloat(options.height) - titHeight - btnHeight <= 64){
  771 + options.height = 64 + titHeight + btnHeight;
  772 + };
  773 + }
  774 +
  775 + layero.css(options);
  776 + btnHeight = layero.find('.'+doms[6]).outerHeight();
  777 +
  778 + if(type === ready.type[2]){
  779 + layero.find('iframe').css({
  780 + height: parseFloat(options.height) - titHeight - btnHeight
  781 + });
  782 + } else {
  783 + contElem.css({
  784 + height: parseFloat(options.height) - titHeight - btnHeight
  785 + - parseFloat(contElem.css('padding-top'))
  786 + - parseFloat(contElem.css('padding-bottom'))
  787 + })
  788 + }
  789 +};
  790 +
  791 +//最小化
  792 +layer.min = function(index, options){
  793 + var layero = $('#'+ doms[0] + index)
  794 + ,titHeight = layero.find(doms[1]).outerHeight() || 0
  795 + ,left = layero.attr('minLeft') || (181*ready.minIndex)+'px'
  796 + ,position = layero.css('position');
  797 +
  798 + ready.record(layero);
  799 +
  800 + if(ready.minLeft[0]){
  801 + left = ready.minLeft[0];
  802 + ready.minLeft.shift();
  803 + }
  804 +
  805 + layero.attr('position', position);
  806 +
  807 + layer.style(index, {
  808 + width: 180
  809 + ,height: titHeight
  810 + ,left: left
  811 + ,top: win.height() - titHeight
  812 + ,position: 'fixed'
  813 + ,overflow: 'hidden'
  814 + }, true);
  815 +
  816 + layero.find('.layui-layer-min').hide();
  817 + layero.attr('type') === 'page' && layero.find(doms[4]).hide();
  818 + ready.rescollbar(index);
  819 +
  820 + if(!layero.attr('minLeft')){
  821 + ready.minIndex++;
  822 + }
  823 + layero.attr('minLeft', left);
  824 +};
  825 +
  826 +//还原
  827 +layer.restore = function(index){
  828 + var layero = $('#'+ doms[0] + index), area = layero.attr('area').split(',');
  829 + var type = layero.attr('type');
  830 + layer.style(index, {
  831 + width: parseFloat(area[0]),
  832 + height: parseFloat(area[1]),
  833 + top: parseFloat(area[2]),
  834 + left: parseFloat(area[3]),
  835 + position: layero.attr('position'),
  836 + overflow: 'visible'
  837 + }, true);
  838 + layero.find('.layui-layer-max').removeClass('layui-layer-maxmin');
  839 + layero.find('.layui-layer-min').show();
  840 + layero.attr('type') === 'page' && layero.find(doms[4]).show();
  841 + ready.rescollbar(index);
  842 +};
  843 +
  844 +//全屏
  845 +layer.full = function(index){
  846 + var layero = $('#'+ doms[0] + index), timer;
  847 + ready.record(layero);
  848 + if(!doms.html.attr('layer-full')){
  849 + doms.html.css('overflow','hidden').attr('layer-full', index);
  850 + }
  851 + clearTimeout(timer);
  852 + timer = setTimeout(function(){
  853 + var isfix = layero.css('position') === 'fixed';
  854 + layer.style(index, {
  855 + top: isfix ? 0 : win.scrollTop(),
  856 + left: isfix ? 0 : win.scrollLeft(),
  857 + width: win.width(),
  858 + height: win.height()
  859 + }, true);
  860 + layero.find('.layui-layer-min').hide();
  861 + }, 100);
  862 +};
  863 +
  864 +//改变title
  865 +layer.title = function(name, index){
  866 + var title = $('#'+ doms[0] + (index||layer.index)).find(doms[1]);
  867 + title.html(name);
  868 +};
  869 +
  870 +//关闭layer总方法
  871 +layer.close = function(index){
  872 + var layero = $('#'+ doms[0] + index), type = layero.attr('type'), closeAnim = 'layer-anim-close';
  873 + if(!layero[0]) return;
  874 + var WRAP = 'layui-layer-wrap', remove = function(){
  875 + if(type === ready.type[1] && layero.attr('conType') === 'object'){
  876 + layero.children(':not(.'+ doms[5] +')').remove();
  877 + var wrap = layero.find('.'+WRAP);
  878 + for(var i = 0; i < 2; i++){
  879 + wrap.unwrap();
  880 + }
  881 + wrap.css('display', wrap.data('display')).removeClass(WRAP);
  882 + } else {
  883 + //低版本IE 回收 iframe
  884 + if(type === ready.type[2]){
  885 + try {
  886 + var iframe = $('#'+doms[4]+index)[0];
  887 + iframe.contentWindow.document.write('');
  888 + iframe.contentWindow.close();
  889 + layero.find('.'+doms[5])[0].removeChild(iframe);
  890 + } catch(e){}
  891 + }
  892 + layero[0].innerHTML = '';
  893 + layero.remove();
  894 + }
  895 + typeof ready.end[index] === 'function' && ready.end[index]();
  896 + delete ready.end[index];
  897 + };
  898 +
  899 + if(layero.data('isOutAnim')){
  900 + layero.addClass(closeAnim);
  901 + }
  902 +
  903 + $('#layui-layer-moves, #layui-layer-shade' + index).remove();
  904 + layer.ie == 6 && ready.reselect();
  905 + ready.rescollbar(index);
  906 + if(layero.attr('minLeft')){
  907 + ready.minIndex--;
  908 + ready.minLeft.push(layero.attr('minLeft'));
  909 + }
  910 +
  911 + if((layer.ie && layer.ie < 10) || !layero.data('isOutAnim')){
  912 + remove()
  913 + } else {
  914 + setTimeout(function(){
  915 + remove();
  916 + }, 200);
  917 + }
  918 +};
  919 +
  920 +//关闭所有层
  921 +layer.closeAll = function(type){
  922 + $.each($('.'+doms[0]), function(){
  923 + var othis = $(this);
  924 + var is = type ? (othis.attr('type') === type) : 1;
  925 + is && layer.close(othis.attr('times'));
  926 + is = null;
  927 + });
  928 +};
  929 +
  930 +/**
  931 +
  932 + 拓展模块,layui开始合并在一起
  933 +
  934 + */
  935 +
  936 +var cache = layer.cache||{}, skin = function(type){
  937 + return (cache.skin ? (' ' + cache.skin + ' ' + cache.skin + '-'+type) : '');
  938 +};
  939 +
  940 +//仿系统prompt
  941 +layer.prompt = function(options, yes){
  942 + var style = '';
  943 + options = options || {};
  944 +
  945 + if(typeof options === 'function') yes = options;
  946 +
  947 + if(options.area){
  948 + var area = options.area;
  949 + style = 'style="width: '+ area[0] +'; height: '+ area[1] + ';"';
  950 + delete options.area;
  951 + }
  952 + var prompt, content = options.formType == 2 ? '<textarea class="layui-layer-input"' + style +'>' + (options.value||'') +'</textarea>' : function(){
  953 + return '<input type="'+ (options.formType == 1 ? 'password' : 'text') +'" class="layui-layer-input" value="'+ (options.value||'') +'">';
  954 + }();
  955 +
  956 + var success = options.success;
  957 + delete options.success;
  958 +
  959 + return layer.open($.extend({
  960 + type: 1
  961 + ,btn: ['&#x786E;&#x5B9A;','&#x53D6;&#x6D88;']
  962 + ,content: content
  963 + ,skin: 'layui-layer-prompt' + skin('prompt')
  964 + ,maxWidth: win.width()
  965 + ,success: function(layero){
  966 + prompt = layero.find('.layui-layer-input');
  967 + prompt.focus();
  968 + typeof success === 'function' && success(layero);
  969 + }
  970 + ,resize: false
  971 + ,yes: function(index){
  972 + var value = prompt.val();
  973 + if(value === ''){
  974 + prompt.focus();
  975 + } else if(value.length > (options.maxlength||500)) {
  976 + layer.tips('&#x6700;&#x591A;&#x8F93;&#x5165;'+ (options.maxlength || 500) +'&#x4E2A;&#x5B57;&#x6570;', prompt, {tips: 1});
  977 + } else {
  978 + yes && yes(value, index, prompt);
  979 + }
  980 + }
  981 + }, options));
  982 +};
  983 +
  984 +//tab层
  985 +layer.tab = function(options){
  986 + options = options || {};
  987 +
  988 + var tab = options.tab || {}
  989 + ,success = options.success;
  990 +
  991 + delete options.success;
  992 +
  993 + return layer.open($.extend({
  994 + type: 1,
  995 + skin: 'layui-layer-tab' + skin('tab'),
  996 + resize: false,
  997 + title: function(){
  998 + var len = tab.length, ii = 1, str = '';
  999 + if(len > 0){
  1000 + str = '<span class="layui-layer-tabnow">'+ tab[0].title +'</span>';
  1001 + for(; ii < len; ii++){
  1002 + str += '<span>'+ tab[ii].title +'</span>';
  1003 + }
  1004 + }
  1005 + return str;
  1006 + }(),
  1007 + content: '<ul class="layui-layer-tabmain">'+ function(){
  1008 + var len = tab.length, ii = 1, str = '';
  1009 + if(len > 0){
  1010 + str = '<li class="layui-layer-tabli xubox_tab_layer">'+ (tab[0].content || 'no content') +'</li>';
  1011 + for(; ii < len; ii++){
  1012 + str += '<li class="layui-layer-tabli">'+ (tab[ii].content || 'no content') +'</li>';
  1013 + }
  1014 + }
  1015 + return str;
  1016 + }() +'</ul>',
  1017 + success: function(layero){
  1018 + var btn = layero.find('.layui-layer-title').children();
  1019 + var main = layero.find('.layui-layer-tabmain').children();
  1020 + btn.on('mousedown', function(e){
  1021 + e.stopPropagation ? e.stopPropagation() : e.cancelBubble = true;
  1022 + var othis = $(this), index = othis.index();
  1023 + othis.addClass('layui-layer-tabnow').siblings().removeClass('layui-layer-tabnow');
  1024 + main.eq(index).show().siblings().hide();
  1025 + typeof options.change === 'function' && options.change(index);
  1026 + });
  1027 + typeof success === 'function' && success(layero);
  1028 + }
  1029 + }, options));
  1030 +};
  1031 +
  1032 +//相册层
  1033 +layer.photos = function(options, loop, key){
  1034 + var dict = {};
  1035 + options = options || {};
  1036 + if(!options.photos) return;
  1037 + var type = options.photos.constructor === Object;
  1038 + var photos = type ? options.photos : {}, data = photos.data || [];
  1039 + var start = photos.start || 0;
  1040 + dict.imgIndex = (start|0) + 1;
  1041 +
  1042 + options.img = options.img || 'img';
  1043 +
  1044 + var success = options.success;
  1045 + delete options.success;
  1046 +
  1047 + if(!type){ //页面直接获取
  1048 + var parent = $(options.photos), pushData = function(){
  1049 + data = [];
  1050 + parent.find(options.img).each(function(index){
  1051 + var othis = $(this);
  1052 + othis.attr('layer-index', index);
  1053 + data.push({
  1054 + alt: othis.attr('alt'),
  1055 + pid: othis.attr('layer-pid'),
  1056 + src: othis.attr('layer-src') || othis.attr('src'),
  1057 + thumb: othis.attr('src')
  1058 + });
  1059 + })
  1060 + };
  1061 +
  1062 + pushData();
  1063 +
  1064 + if (data.length === 0) return;
  1065 +
  1066 + loop || parent.on('click', options.img, function(){
  1067 + var othis = $(this), index = othis.attr('layer-index');
  1068 + layer.photos($.extend(options, {
  1069 + photos: {
  1070 + start: index,
  1071 + data: data,
  1072 + tab: options.tab
  1073 + },
  1074 + full: options.full
  1075 + }), true);
  1076 + pushData();
  1077 + })
  1078 +
  1079 + //不直接弹出
  1080 + if(!loop) return;
  1081 +
  1082 + } else if (data.length === 0){
  1083 + return layer.msg('&#x6CA1;&#x6709;&#x56FE;&#x7247;');
  1084 + }
  1085 +
  1086 + //上一张
  1087 + dict.imgprev = function(key){
  1088 + dict.imgIndex--;
  1089 + if(dict.imgIndex < 1){
  1090 + dict.imgIndex = data.length;
  1091 + }
  1092 + dict.tabimg(key);
  1093 + };
  1094 +
  1095 + //下一张
  1096 + dict.imgnext = function(key,errorMsg){
  1097 + dict.imgIndex++;
  1098 + if(dict.imgIndex > data.length){
  1099 + dict.imgIndex = 1;
  1100 + if (errorMsg) {return};
  1101 + }
  1102 + dict.tabimg(key)
  1103 + };
  1104 +
  1105 + //方向键
  1106 + dict.keyup = function(event){
  1107 + if(!dict.end){
  1108 + var code = event.keyCode;
  1109 + event.preventDefault();
  1110 + if(code === 37){
  1111 + dict.imgprev(true);
  1112 + } else if(code === 39) {
  1113 + dict.imgnext(true);
  1114 + } else if(code === 27) {
  1115 + layer.close(dict.index);
  1116 + }
  1117 + }
  1118 + }
  1119 +
  1120 + //切换
  1121 + dict.tabimg = function(key){
  1122 + if(data.length <= 1) return;
  1123 + photos.start = dict.imgIndex - 1;
  1124 + layer.close(dict.index);
  1125 + return layer.photos(options, true, key);
  1126 + setTimeout(function(){
  1127 + layer.photos(options, true, key);
  1128 + }, 200);
  1129 + }
  1130 +
  1131 + //一些动作
  1132 + dict.event = function(){
  1133 + dict.bigimg.hover(function(){
  1134 + dict.imgsee.show();
  1135 + }, function(){
  1136 + dict.imgsee.hide();
  1137 + });
  1138 +
  1139 + dict.bigimg.find('.layui-layer-imgprev').on('click', function(event){
  1140 + event.preventDefault();
  1141 + dict.imgprev();
  1142 + });
  1143 +
  1144 + dict.bigimg.find('.layui-layer-imgnext').on('click', function(event){
  1145 + event.preventDefault();
  1146 + dict.imgnext();
  1147 + });
  1148 +
  1149 + $(document).on('keyup', dict.keyup);
  1150 + };
  1151 +
  1152 + //图片预加载
  1153 + function loadImage(url, callback, error) {
  1154 + var img = new Image();
  1155 + img.src = url;
  1156 + if(img.complete){
  1157 + return callback(img);
  1158 + }
  1159 + img.onload = function(){
  1160 + img.onload = null;
  1161 + callback(img);
  1162 + };
  1163 + img.onerror = function(e){
  1164 + img.onerror = null;
  1165 + error(e);
  1166 + };
  1167 + };
  1168 +
  1169 + dict.loadi = layer.load(1, {
  1170 + shade: 'shade' in options ? false : 0.9,
  1171 + scrollbar: false
  1172 + });
  1173 +
  1174 + loadImage(data[start].src, function(img){
  1175 + layer.close(dict.loadi);
  1176 + dict.index = layer.open($.extend({
  1177 + type: 1,
  1178 + id: 'layui-layer-photos',
  1179 + area: function(){
  1180 + var imgarea = [img.width, img.height];
  1181 + var winarea = [$(window).width() - 100, $(window).height() - 100];
  1182 +
  1183 + //如果 实际图片的宽或者高比 屏幕大(那么进行缩放)
  1184 + if(!options.full && (imgarea[0]>winarea[0]||imgarea[1]>winarea[1])){
  1185 + var wh = [imgarea[0]/winarea[0],imgarea[1]/winarea[1]];//取宽度缩放比例、高度缩放比例
  1186 + if(wh[0] > wh[1]){//取缩放比例最大的进行缩放
  1187 + imgarea[0] = imgarea[0]/wh[0];
  1188 + imgarea[1] = imgarea[1]/wh[0];
  1189 + } else if(wh[0] < wh[1]){
  1190 + imgarea[0] = imgarea[0]/wh[1];
  1191 + imgarea[1] = imgarea[1]/wh[1];
  1192 + }
  1193 + }
  1194 +
  1195 + return [imgarea[0]+'px', imgarea[1]+'px'];
  1196 + }(),
  1197 + title: false,
  1198 + shade: 0.9,
  1199 + shadeClose: true,
  1200 + closeBtn: false,
  1201 + move: '.layui-layer-phimg img',
  1202 + moveType: 1,
  1203 + scrollbar: false,
  1204 + moveOut: true,
  1205 + //anim: Math.random()*5|0,
  1206 + isOutAnim: false,
  1207 + skin: 'layui-layer-photos' + skin('photos'),
  1208 + content: '<div class="layui-layer-phimg">'
  1209 + +'<img src="'+ data[start].src +'" alt="'+ (data[start].alt||'') +'" layer-pid="'+ data[start].pid +'">'
  1210 + +'<div class="layui-layer-imgsee">'
  1211 + +(data.length > 1 ? '<span class="layui-layer-imguide"><a href="javascript:;" class="layui-layer-iconext layui-layer-imgprev"></a><a href="javascript:;" class="layui-layer-iconext layui-layer-imgnext"></a></span>' : '')
  1212 + +'<div class="layui-layer-imgbar" style="display:'+ (key ? 'block' : '') +'"><span class="layui-layer-imgtit"><a href="javascript:;">'+ (data[start].alt||'') +'</a><em>'+ dict.imgIndex +'/'+ data.length +'</em></span></div>'
  1213 + +'</div>'
  1214 + +'</div>',
  1215 + success: function(layero, index){
  1216 + dict.bigimg = layero.find('.layui-layer-phimg');
  1217 + dict.imgsee = layero.find('.layui-layer-imguide,.layui-layer-imgbar');
  1218 + dict.event(layero);
  1219 + options.tab && options.tab(data[start], layero);
  1220 + typeof success === 'function' && success(layero);
  1221 + }, end: function(){
  1222 + dict.end = true;
  1223 + $(document).off('keyup', dict.keyup);
  1224 + }
  1225 + }, options));
  1226 + }, function(){
  1227 + layer.close(dict.loadi);
  1228 + layer.msg('&#x5F53;&#x524D;&#x56FE;&#x7247;&#x5730;&#x5740;&#x5F02;&#x5E38;<br>&#x662F;&#x5426;&#x7EE7;&#x7EED;&#x67E5;&#x770B;&#x4E0B;&#x4E00;&#x5F20;&#xFF1F;', {
  1229 + time: 30000,
  1230 + btn: ['&#x4E0B;&#x4E00;&#x5F20;', '&#x4E0D;&#x770B;&#x4E86;'],
  1231 + yes: function(){
  1232 + data.length > 1 && dict.imgnext(true,true);
  1233 + }
  1234 + });
  1235 + });
  1236 +};
  1237 +
  1238 +//主入口
  1239 +ready.run = function(_$){
  1240 + $ = _$;
  1241 + win = $(window);
  1242 + doms.html = $('html');
  1243 + layer.open = function(deliver){
  1244 + var o = new Class(deliver);
  1245 + return o.index;
  1246 + };
  1247 +};
  1248 +
  1249 +//加载方式
  1250 +window.layui && layui.define ? (
  1251 + layer.ready()
  1252 + ,layui.define('jquery', function(exports){ //layui加载
  1253 + layer.path = layui.cache.dir;
  1254 + ready.run(layui.jquery);
  1255 +
  1256 + //暴露模块
  1257 + window.layer = layer;
  1258 + exports('layer', layer);
  1259 + })
  1260 +) : (
  1261 + (typeof define === 'function' && define.amd) ? define(['jquery'], function(){ //requirejs加载
  1262 + ready.run(window.jQuery);
  1263 + return layer;
  1264 + }) : function(){ //普通script标签加载
  1265 + ready.run(window.jQuery);
  1266 + layer.ready();
  1267 + }()
  1268 +);
  1269 +
  1270 +}(window);
src/main/resources/static/real_control_v2/assets/plugins/layer3.0.3/skin/default/icon-ext.png 0 → 100644

5.77 KB

src/main/resources/static/real_control_v2/assets/plugins/layer3.0.3/skin/default/icon.png 0 → 100644

11.2 KB

src/main/resources/static/real_control_v2/assets/plugins/layer3.0.3/skin/default/layer.css 0 → 100644
  1 +/**
  2 +
  3 + @Name: layer
  4 + @Author: 贤心
  5 +
  6 + **/
  7 +
  8 +*html{background-image: url(about:blank); background-attachment: fixed;}
  9 +html #layuicss-skinlayercss{display: none; position: absolute; width: 1989px;}
  10 +
  11 +/* common */
  12 +.layui-layer-shade, .layui-layer{position:fixed; _position:absolute; pointer-events: auto;}
  13 +.layui-layer-shade{top:0; left:0; width:100%; height:100%; _height:expression(document.body.offsetHeight+"px");}
  14 +.layui-layer{-webkit-overflow-scrolling: touch;}
  15 +.layui-layer{top:150px; left: 0; margin:0; padding:0; background-color:#fff; -webkit-background-clip: content; box-shadow: 1px 1px 50px rgba(0,0,0,.3);}
  16 +.layui-layer-close{position:absolute;}
  17 +.layui-layer-content{position:relative;}
  18 +.layui-layer-border{border: 1px solid #B2B2B2; border: 1px solid rgba(0,0,0,.1); box-shadow: 1px 1px 5px rgba(0,0,0,.2);}
  19 +.layui-layer-load{background:url("/real_control_v2/assets/plugins/layer3.0.3/skin/default/loading-1.gif") #eee center center no-repeat;}
  20 +.layui-layer-ico{ background:url("/real_control_v2/assets/plugins/layer3.0.3/skin/default/icon.png") no-repeat;}
  21 +.layui-layer-dialog .layui-layer-ico,
  22 +.layui-layer-setwin a,
  23 +.layui-layer-btn a{display:inline-block; *display:inline; *zoom:1; vertical-align:top;}
  24 +
  25 +.layui-layer-move{display: none; position: fixed; *position: absolute; left: 0px; top: 0px; width: 100%; height: 100%; cursor: move; opacity: 0; filter:alpha(opacity=0); background-color: #fff; z-index: 2147483647;}
  26 +.layui-layer-resize{position: absolute; width: 15px; height: 15px; right: 0; bottom: 0; cursor: se-resize;}
  27 +
  28 +/* 动画 */
  29 +.layui-layer{border-radius: 2px; -webkit-animation-fill-mode: both; animation-fill-mode: both; -webkit-animation-duration:.3s; animation-duration:.3s;}
  30 +
  31 +@-webkit-keyframes layer-bounceIn { /* 默认 */
  32 + 0% {opacity: 0; -webkit-transform: scale(.5); transform: scale(.5)}
  33 + 100% {opacity: 1; -webkit-transform: scale(1); transform: scale(1)}
  34 +}
  35 +@keyframes layer-bounceIn {
  36 + 0% {opacity: 0; -webkit-transform: scale(.5); -ms-transform: scale(.5); transform: scale(.5)}
  37 + 100% {opacity: 1; -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1)}
  38 +}
  39 +.layer-anim{-webkit-animation-name: layer-bounceIn;animation-name: layer-bounceIn}
  40 +
  41 +@-webkit-keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);-ms-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);-ms-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-01{-webkit-animation-name:layer-zoomInDown;animation-name:layer-zoomInDown}
  42 +
  43 +@-webkit-keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.layer-anim-02{-webkit-animation-name:layer-fadeInUpBig;animation-name:layer-fadeInUpBig}
  44 +
  45 +@-webkit-keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);-ms-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);-ms-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-03{-webkit-animation-name:layer-zoomInLeft;animation-name:layer-zoomInLeft}
  46 +
  47 +@-webkit-keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg);transform:translateX(0px) rotate(0deg)}}@keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg);-ms-transform:translateX(0px) rotate(0deg);transform:translateX(0px) rotate(0deg)}}.layer-anim-04{-webkit-animation-name:layer-rollIn;animation-name:layer-rollIn}
  48 +
  49 +@keyframes layer-fadeIn{0%{opacity:0}100%{opacity:1}}.layer-anim-05{-webkit-animation-name:layer-fadeIn;animation-name:layer-fadeIn}
  50 +
  51 +@-webkit-keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.layer-anim-06{-webkit-animation-name:layer-shake;animation-name:layer-shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}
  52 +
  53 +/* 标题栏 */
  54 +.layui-layer-title{padding:0 80px 0 20px; height:42px; line-height:42px; border-bottom:1px solid #eee; font-size:14px; color:#333; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; background-color: #F8F8F8; border-radius: 2px 2px 0 0;}
  55 +.layui-layer-setwin{position:absolute; right:15px; *right:0; top:15px; font-size:0; line-height: initial;}
  56 +.layui-layer-setwin a{position:relative; width: 16px; height:16px; margin-left:10px; font-size:12px; _overflow:hidden;}
  57 +.layui-layer-setwin .layui-layer-min cite{position:absolute; width:14px; height:2px; left:0; top:50%; margin-top:-1px; background-color:#2E2D3C; cursor:pointer; _overflow:hidden;}
  58 +.layui-layer-setwin .layui-layer-min:hover cite{background-color:#2D93CA; }
  59 +.layui-layer-setwin .layui-layer-max{background-position:-32px -40px;}
  60 +.layui-layer-setwin .layui-layer-max:hover{background-position:-16px -40px;}
  61 +.layui-layer-setwin .layui-layer-maxmin{background-position:-65px -40px;}
  62 +.layui-layer-setwin .layui-layer-maxmin:hover{background-position:-49px -40px;}
  63 +.layui-layer-setwin .layui-layer-close1{background-position: 1px -40px; cursor: pointer;}
  64 +.layui-layer-setwin .layui-layer-close1:hover{opacity:0.7;}
  65 +.layui-layer-setwin .layui-layer-close2{position:absolute; right:-28px; top:-28px; width:30px; height:30px; margin-left:0; background-position:-149px -31px; *right:-18px; _display:none;}
  66 +.layui-layer-setwin .layui-layer-close2:hover{ background-position:-180px -31px;}
  67 +
  68 +/* 按钮栏 */
  69 +.layui-layer-btn{text-align: right; padding:0 10px 12px; pointer-events: auto; user-select: none; -webkit-user-select: none;}
  70 +.layui-layer-btn a{height: 28px; line-height: 28px; margin: 6px 6px 0; padding: 0 15px; border:1px #dedede solid; background-color:#f1f1f1; color: #333; border-radius: 2px; font-weight:400; cursor:pointer; text-decoration: none;}
  71 +.layui-layer-btn a:hover{opacity: 0.9; text-decoration: none;}
  72 +.layui-layer-btn a:active{opacity: 0.8;}
  73 +.layui-layer-btn .layui-layer-btn0{border-color: #4898d5; background-color: #2e8ded; color:#fff;}
  74 +.layui-layer-btn-l{text-align: left;}
  75 +.layui-layer-btn-c{text-align: center;}
  76 +
  77 +/* 定制化 */
  78 +.layui-layer-dialog{min-width:260px;}
  79 +.layui-layer-dialog .layui-layer-content{position: relative; padding:20px; line-height:24px; word-break: break-all; overflow:hidden; font-size:14px; overflow-x: hidden; overflow-y:auto;}
  80 +.layui-layer-dialog .layui-layer-content .layui-layer-ico{position:absolute; top:16px; left:15px; _left:-40px; width:30px; height:30px;}
  81 +.layui-layer-ico1{background-position:-30px 0 }
  82 +.layui-layer-ico2{background-position:-60px 0;}
  83 +.layui-layer-ico3{background-position:-90px 0;}
  84 +.layui-layer-ico4{background-position:-120px 0;}
  85 +.layui-layer-ico5{background-position:-150px 0;}
  86 +.layui-layer-ico6{background-position:-180px 0;}
  87 +.layui-layer-rim{border:6px solid #8D8D8D; border:6px solid rgba(0,0,0,.3); border-radius:5px; box-shadow: none;}
  88 +.layui-layer-msg{min-width:180px; border:1px solid #D3D4D3; box-shadow: none;}
  89 +.layui-layer-hui{min-width:100px; background-color: #000; filter:alpha(opacity=60); background-color: rgba(0,0,0,0.6); color: #fff; border:none;}
  90 +.layui-layer-hui .layui-layer-content{padding:12px 25px; text-align:center;}
  91 +.layui-layer-dialog .layui-layer-padding{padding: 20px 20px 20px 55px; text-align: left;}
  92 +.layui-layer-page .layui-layer-content{position:relative; overflow:auto;}
  93 +.layui-layer-page .layui-layer-btn,.layui-layer-iframe .layui-layer-btn{padding-top:10px;}
  94 +.layui-layer-nobg{background:none;}
  95 +.layui-layer-iframe iframe{display: block; width: 100%;}
  96 +
  97 +.layui-layer-loading{border-radius:100%; background:none; box-shadow:none; border:none;}
  98 +.layui-layer-loading .layui-layer-content{width:60px; height:24px; background:url("/real_control_v2/assets/plugins/layer3.0.3/skin/default/loading-0.gif") no-repeat;}
  99 +.layui-layer-loading .layui-layer-loading1{width:37px; height:37px; background:url("/real_control_v2/assets/plugins/layer3.0.3/skin/default/loading-1.gif") no-repeat;}
  100 +.layui-layer-loading .layui-layer-loading2, .layui-layer-ico16{width:32px; height:32px; background:url("/real_control_v2/assets/plugins/layer3.0.3/skin/default/loading-2.gif") no-repeat;}
  101 +.layui-layer-tips{background: none; box-shadow:none; border:none;}
  102 +.layui-layer-tips .layui-layer-content{position: relative; line-height: 22px; min-width: 12px; padding: 5px 10px; font-size: 12px; _float:left; border-radius: 2px; box-shadow: 1px 1px 3px rgba(0,0,0,.2); background-color: #000; color: #fff;}
  103 +.layui-layer-tips .layui-layer-close{right:-2px; top:-1px;}
  104 +.layui-layer-tips i.layui-layer-TipsG{ position:absolute; width:0; height:0; border-width:8px; border-color:transparent; border-style:dashed; *overflow:hidden;}
  105 +.layui-layer-tips i.layui-layer-TipsT, .layui-layer-tips i.layui-layer-TipsB{left:5px; border-right-style:solid; border-right-color: #000;}
  106 +.layui-layer-tips i.layui-layer-TipsT{bottom:-8px;}
  107 +.layui-layer-tips i.layui-layer-TipsB{top:-8px;}
  108 +.layui-layer-tips i.layui-layer-TipsR, .layui-layer-tips i.layui-layer-TipsL{top:1px; border-bottom-style:solid; border-bottom-color: #000;}
  109 +.layui-layer-tips i.layui-layer-TipsR{left:-8px;}
  110 +.layui-layer-tips i.layui-layer-TipsL{right:-8px;}
  111 +
  112 +/* skin */
  113 +.layui-layer-lan[type="dialog"]{min-width:280px;}
  114 +.layui-layer-lan .layui-layer-title{background:#4476A7; color:#fff; border: none;}
  115 +.layui-layer-lan .layui-layer-btn{padding: 5px 10px 10px; text-align: right; border-top:1px solid #E9E7E7}
  116 +.layui-layer-lan .layui-layer-btn a{background:#BBB5B5; border:none;}
  117 +.layui-layer-lan .layui-layer-btn .layui-layer-btn1{background:#C9C5C5;}
  118 +.layui-layer-molv .layui-layer-title{background:#009f95; color:#fff; border: none;}
  119 +.layui-layer-molv .layui-layer-btn a{background:#009f95;}
  120 +.layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92B8B1;}
  121 +
  122 +
  123 +
  124 +/**
  125 +
  126 + @Name: layer拓展样式
  127 +
  128 + */
  129 +
  130 +.layui-layer-iconext{background:url("/real_control_v2/assets/plugins/layer3.0.3/skin/default/icon-ext.png") no-repeat;}
  131 +
  132 +/* prompt模式 */
  133 +.layui-layer-prompt .layui-layer-input{display:block; width:220px; height:30px; margin:0 auto; line-height:30px; padding: 0 5px; border: 1px solid #ccc; box-shadow: 1px 1px 5px rgba(0,0,0,.1) inset; color:#333;}
  134 +.layui-layer-prompt textarea.layui-layer-input{width:300px; height:100px; line-height:20px;}
  135 +.layui-layer-prompt .layui-layer-content{padding: 20px;}
  136 +.layui-layer-prompt .layui-layer-btn{padding-top: 0;}
  137 +
  138 +/* tab模式 */
  139 +.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4);}
  140 +.layui-layer-tab .layui-layer-title{padding-left:0; border-bottom:1px solid #ccc; background-color:#eee; overflow: visible;}
  141 +.layui-layer-tab .layui-layer-title span{position:relative; float:left; min-width:80px; max-width:260px; padding:0 20px; text-align:center; cursor:default; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}
  142 +.layui-layer-tab .layui-layer-title span.layui-layer-tabnow{height:43px; border-left:1px solid #ccc; border-right:1px solid #ccc; background-color:#fff; z-index:10;}
  143 +.layui-layer-tab .layui-layer-title span:first-child{border-left:none;}
  144 +.layui-layer-tabmain{line-height:24px; clear:both;}
  145 +.layui-layer-tabmain .layui-layer-tabli{display:none;}
  146 +.layui-layer-tabmain .layui-layer-tabli.xubox_tab_layer{display:block;}
  147 +.xubox_tabclose{position:absolute; right:10px; top:5px; cursor:pointer;}
  148 +
  149 +/* photo模式 */
  150 +.layui-layer-photos{-webkit-animation-duration: .8s; animation-duration: .8s;}
  151 +.layui-layer-photos .layui-layer-content{overflow:hidden; text-align: center;}
  152 +.layui-layer-photos .layui-layer-phimg img{position: relative; width:100%; display: inline-block; *display:inline; *zoom:1; vertical-align:top;}
  153 +.layui-layer-imguide,.layui-layer-imgbar{display:none;}
  154 +.layui-layer-imgprev, .layui-layer-imgnext{position:absolute; top:50%; width:27px; _width:44px; height:44px; margin-top:-22px; outline:none;blr:expression(this.onFocus=this.blur());}
  155 +.layui-layer-imgprev{left:10px; background-position:-5px -5px; _background-position:-70px -5px;}
  156 +.layui-layer-imgprev:hover{background-position:-33px -5px; _background-position:-120px -5px;}
  157 +.layui-layer-imgnext{right:10px; _right:8px; background-position:-5px -50px; _background-position:-70px -50px;}
  158 +.layui-layer-imgnext:hover{background-position:-33px -50px; _background-position:-120px -50px;}
  159 +.layui-layer-imgbar{position:absolute; left:0; bottom:0; width:100%; height:32px; line-height:32px; background-color:rgba(0,0,0,.8); background-color:#000\9; filter:Alpha(opacity=80); color:#fff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; font-size:0;}
  160 +.layui-layer-imgtit{/*position:absolute; left:20px;*/}
  161 +.layui-layer-imgtit *{display:inline-block; *display:inline; *zoom:1; vertical-align:top; font-size:12px;}
  162 +.layui-layer-imgtit a{max-width:65%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; color:#fff;}
  163 +.layui-layer-imgtit a:hover{color:#fff; text-decoration:underline;}
  164 +.layui-layer-imgtit em{padding-left:10px; font-style: normal;}
  165 +
  166 +/* 关闭动画 */
  167 +@-webkit-keyframes layer-bounceOut {
  168 + 100% {opacity: 0; -webkit-transform: scale(.7); transform: scale(.7)}
  169 + 30% {-webkit-transform: scale(1.05); transform: scale(1.05)}
  170 + 0% {-webkit-transform: scale(1); transform: scale(1);}
  171 +}
  172 +@keyframes layer-bounceOut {
  173 + 100% {opacity: 0; -webkit-transform: scale(.7); -ms-transform: scale(.7); transform: scale(.7);}
  174 + 30% {-webkit-transform: scale(1.05); -ms-transform: scale(1.05); transform: scale(1.05);}
  175 + 0% {-webkit-transform: scale(1); -ms-transform: scale(1);transform: scale(1);}
  176 +}
  177 +.layer-anim-close{-webkit-animation-name: layer-bounceOut;animation-name: layer-bounceOut; -webkit-animation-duration:.2s; animation-duration:.2s;}
  178 +
  179 +@media screen and (max-width: 1100px) {
  180 + .layui-layer-iframe{overflow-y: auto; -webkit-overflow-scrolling: touch;}
  181 +}
  182 +
  183 +
src/main/resources/static/real_control_v2/assets/plugins/layer3.0.3/skin/default/loading-0.gif 0 → 100644

5.66 KB

src/main/resources/static/real_control_v2/assets/plugins/layer3.0.3/skin/default/loading-1.gif 0 → 100644

701 Bytes

src/main/resources/static/real_control_v2/assets/plugins/layer3.0.3/skin/default/loading-2.gif 0 → 100644

1.75 KB

src/main/resources/static/real_control_v2/assets/plugins/layer3.0.3/skin/moon/default.png 0 → 100644

7.39 KB

src/main/resources/static/real_control_v2/assets/plugins/layer3.0.3/skin/moon/style.css 0 → 100644
  1 +html #layui_layer_skinmoonstylecss{display:none;position:absolute;width:1989px}body .layer-ext-moon[type=dialog]{min-width:320px}body .layer-ext-moon-msg[type=dialog]{min-width:200px}body .layer-ext-moon .layui-layer-title{background:#f6f6f6;color:#212a31;font-size:16px;font-weight:700;height:46px;line-height:46px;border-bottom:1px solid #D5D5D5}body .layer-ext-moon .layui-layer-content .layui-layer-ico{height:32px;width:32px;top:18.5px}body .layer-ext-moon .layui-layer-ico0{background:url("/real_control_v2/assets/plugins/layer3.0.3/skin/moon/default.png") -96px 0 no-repeat}body .layer-ext-moon .layui-layer-ico1{background:url("/real_control_v2/assets/plugins/layer3.0.3/skin/moon/default.png") -224px 0 no-repeat}body .layer-ext-moon .layui-layer-ico2{background:url("/real_control_v2/assets/plugins/layer3.0.3/skin/moon/default.png") -192px 0 no-repeat}body .layer-ext-moon .layui-layer-ico3{background:url("/real_control_v2/assets/plugins/layer3.0.3/skin/moon/default.png") -160px 0 no-repeat}body .layer-ext-moon .layui-layer-ico4{background:url("/real_control_v2/assets/plugins/layer3.0.3/skin/moon/default.png") -320px 0 no-repeat}body .layer-ext-moon .layui-layer-ico5{background:url("/real_control_v2/assets/plugins/layer3.0.3/skin/moon/default.png") -288px 0 no-repeat}body .layer-ext-moon .layui-layer-ico6{background:url("/real_control_v2/assets/plugins/layer3.0.3/skin/moon/default.png") -256px 0}body .layer-ext-moon .layui-layer-ico7{background:url("/real_control_v2/assets/plugins/layer3.0.3/skin/moon/default.png") -128px 0 no-repeat}body .layer-ext-moon .layui-layer-setwin{top:15px;right:15px}body .layer-ext-moon .layui-layer-setwin a{width:16px;height:16px}body .layer-ext-moon .layui-layer-setwin .layui-layer-min cite:hover{background-color:#56abe4}body .layer-ext-moon .layui-layer-setwin .layui-layer-max{background:url("/real_control_v2/assets/plugins/layer3.0.3/skin/moon/default.png") -80px 0 no-repeat}body .layer-ext-moon .layui-layer-setwin .layui-layer-max:hover{background:url("/real_control_v2/assets/plugins/layer3.0.3/skin/moon/default.png") -64px 0 no-repeat}body .layer-ext-moon .layui-layer-setwin .layui-layer-maxmin{background:url("/real_control_v2/assets/plugins/layer3.0.3/skin/moon/default.png") -32px 0 no-repeat}body .layer-ext-moon .layui-layer-setwin .layui-layer-maxmin:hover{background:url("/real_control_v2/assets/plugins/layer3.0.3/skin/moon/default.png") -16px 0 no-repeat}body .layer-ext-moon .layui-layer-setwin .layui-layer-close1,body .layer-ext-moon .layui-layer-setwin .layui-layer-close2{background:url("/real_control_v2/assets/plugins/layer3.0.3/skin/moon/default.png")}body .layer-ext-moon .layui-layer-setwin .layui-layer-close1:hover,body .layer-ext-moon .layui-layer-setwin .layui-layer-close2:hover{background:url("/real_control_v2/assets/plugins/layer3.0.3/skin/moon/default.png") -48px 0}body .layer-ext-moon .layui-layer-padding{padding-top:24px}body .layer-ext-moon .layui-layer-btn{text-align:center;padding-top:15px;padding-bottom:15px;background:#f0f4f7;border-top:1px #c7c7c7 solid}body .layer-ext-moon .layui-layer-btn a{font-size:12px;font-weight:400;margin:0 7px;padding:6px 20px;color:#fff;border:1px solid #0064b6;background:no-repeat #0071ce;border-radius:3px;display:inline-block;height:20px;line-height:20px;text-align:center;vertical-align:middle;text-decoration:none;outline:0}body .layer-ext-moon .layui-layer-btn .layui-layer-btn0{background:#0071ce}body .layer-ext-moon .layui-layer-btn .layui-layer-btn1{background:#fff;color:#404a58;border:1px solid #c0c4cd;border-radius:3px}body .layer-ext-moon .layui-layer-btn .layui-layer-btn2{background:#f60;color:#fff;border:1px solid #f60;border-radius:3px}body .layer-ext-moon .layui-layer-btn .layui-layer-btn3{background:red;color:#fff;border:1px solid red;border-radius:3px}body .layer-ext-moon .layui-layer-title span.layui-layer-tabnow{height:47px}
0 \ No newline at end of file 2 \ No newline at end of file
src/main/resources/static/real_control_v2/css/modal_extend.css
@@ -15,4 +15,37 @@ @@ -15,4 +15,37 @@
15 .uk-modal.ct_move_modal .uk-modal-header{ 15 .uk-modal.ct_move_modal .uk-modal-header{
16 cursor: move; 16 cursor: move;
17 user-select: none; 17 user-select: none;
  18 +}
  19 +
  20 +#ssspVedioModal .uk-modal-dialog-large{
  21 + height: 650px;
  22 +}
  23 +
  24 +#ssspVedioModal .uk-modal-header{
  25 + border-bottom: 1px solid #a2bfe7;
  26 +}
  27 +
  28 +#ssspVedioModal iframe{
  29 + width: calc(100% + 37px);
  30 + height: calc(100% - 32px);
  31 + margin-left: -18px;
  32 + margin-top: -15px;
  33 +}
  34 +
  35 +#ssspVedioModal #vedioIframe{
  36 + display: none;
  37 +}
  38 +
  39 +#ssspVedioModal p.loading{
  40 + text-align: center;
  41 + margin-top: 50px;
  42 +}
  43 +
  44 +.layui-layer-border{
  45 + box-shadow: rgba(0, 0, 0, 0.2) 0px 8px 17px 0px, rgba(0, 0, 0, 0.19) 0px 6px 20px 0px !important;
  46 +}
  47 +
  48 +body .layer-ext-moon .layui-layer-title{
  49 + background: #707070 !important;
  50 + color: #e2e2e2 !important;
18 } 51 }
19 \ No newline at end of file 52 \ No newline at end of file
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/dftz.html
@@ -154,6 +154,8 @@ @@ -154,6 +154,8 @@
154 gb_schedule_table.updateSchedule(rs.ts); 154 gb_schedule_table.updateSchedule(rs.ts);
155 notify_succ('操作成功!'); 155 notify_succ('操作成功!');
156 UIkit.modal(modal).hide(); 156 UIkit.modal(modal).hide();
  157 + //重新计算应发未发
  158 + gb_schedule_table.calc_yfwf_num(sch.xlBm);
157 }); 159 });
158 }); 160 });
159 161
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/sub_task/add_sub_task_other.html
@@ -97,7 +97,7 @@ @@ -97,7 +97,7 @@
97 <div class="uk-form-row"> 97 <div class="uk-form-row">
98 <label class="uk-form-label">烂班原因</label> 98 <label class="uk-form-label">烂班原因</label>
99 <div class="uk-form-controls"> 99 <div class="uk-form-controls">
100 - <select class="form-control" name="destroyReason"> 100 + <select class="form-control" name="destroyReason" required>
101 <option value="">请选择...</option> 101 <option value="">请选择...</option>
102 {{each adjustExps as exp i}} 102 {{each adjustExps as exp i}}
103 <option value="{{exp}}">{{exp}}</option> 103 <option value="{{exp}}">{{exp}}</option>
@@ -198,12 +198,11 @@ @@ -198,12 +198,11 @@
198 198
199 //是否烂班 199 //是否烂班
200 $('[name=destroy]', f).on('click', function () { 200 $('[name=destroy]', f).on('click', function () {
201 - console.log(this, this.checked);  
202 if (this.checked) { 201 if (this.checked) {
203 - $('.destroy_reason_wrap', modal).show(); 202 + $('.destroy_reason_wrap', modal).show();//.find('[name=destroyReason]').attr('required', 'required');
204 } 203 }
205 else { 204 else {
206 - $('.destroy_reason_wrap', modal).hide(); 205 + $('.destroy_reason_wrap', modal).hide();//.find('[name=destroyReason]').removeAttr('required');
207 } 206 }
208 }); 207 });
209 208
src/main/resources/static/real_control_v2/fragments/north/nav/safeDriving.html
@@ -26,6 +26,7 @@ @@ -26,6 +26,7 @@
26 <option value="A7">行驶中与人交谈</option> 26 <option value="A7">行驶中与人交谈</option>
27 </select> 27 </select>
28 <button class="uk-button">检索</button> 28 <button class="uk-button">检索</button>
  29 + <a id="showSSSpVedioModal" style="color: red;float: right;font-size: 12px;">查看实时视频</a>
29 </fieldset> 30 </fieldset>
30 </form> 31 </form>
31 </div> 32 </div>
@@ -52,6 +53,7 @@ @@ -52,6 +53,7 @@
52 </div> 53 </div>
53 </div> 54 </div>
54 55
  56 +
55 <script id="all-safe_dring-table-temp" type="text/html"> 57 <script id="all-safe_dring-table-temp" type="text/html">
56 {{each array as sd i}} 58 {{each array as sd i}}
57 <tr> 59 <tr>
@@ -86,6 +88,9 @@ @@ -86,6 +88,9 @@
86 var page = 0; 88 var page = 0;
87 var pageSize = 12; 89 var pageSize = 12;
88 90
  91 + $('#showSSSpVedioModal', modal).on('click', function () {
  92 + gb_safe_driv.showVedioModal();
  93 + });
89 $(modal).on('init', function(e, data) { 94 $(modal).on('init', function(e, data) {
90 e.stopPropagation(); 95 e.stopPropagation();
91 96
src/main/resources/static/real_control_v2/js/forms/form_embed.js
@@ -5,6 +5,9 @@ @@ -5,6 +5,9 @@
5 5
6 var gb_embed_form_hanlde = (function () { 6 var gb_embed_form_hanlde = (function () {
7 7
  8 + layer.config({
  9 + skin: 'layer-ext-moon'
  10 + })
8 11
9 var temps; 12 var temps;
10 $.get('/real_control_v2/js/forms/temps.html', function (dom) { 13 $.get('/real_control_v2/js/forms/temps.html', function (dom) {
@@ -14,7 +17,7 @@ var gb_embed_form_hanlde = (function () { @@ -14,7 +17,7 @@ var gb_embed_form_hanlde = (function () {
14 /** 17 /**
15 * 打开表单片段 18 * 打开表单片段
16 * @param pageUrl 19 * @param pageUrl
17 - */ 20 +
18 var open_modal_form_fragment = function (pageUrl, title) { 21 var open_modal_form_fragment = function (pageUrl, title) {
19 //modal ID 22 //modal ID
20 var id = '#formFragmentModal'; 23 var id = '#formFragmentModal';
@@ -30,7 +33,36 @@ var gb_embed_form_hanlde = (function () { @@ -30,7 +33,36 @@ var gb_embed_form_hanlde = (function () {
30 var htmlStr = gb_embed_form_hanlde.temps()['forms-embed-modal-temp']({pageUrl: wrapUrl, title: title}); 33 var htmlStr = gb_embed_form_hanlde.temps()['forms-embed-modal-temp']({pageUrl: wrapUrl, title: title});
31 $(document.body).append(htmlStr); 34 $(document.body).append(htmlStr);
32 UIkit.modal(id, {bgclose: false}).show(); 35 UIkit.modal(id, {bgclose: false}).show();
33 - }; 36 + };*/
  37 + var open_modal_form_fragment = function (pageUrl, title) {
  38 + var id = '#formFragmentModal';
  39 + if($(id+'.uk-modal').length > 0){
  40 + $(id).remove();
  41 + }
  42 + //将片段路径写入 localStorage
  43 + window.localStorage.setItem('real_control_form_embed_pageUrl', pageUrl);
  44 + //包裹页面
  45 + var wrapUrl = '/real_control_v2/js/forms/wrap.html?origin=real_control_iframe';
  46 +
  47 + layer.open({
  48 + type: 2,
  49 + title: title,
  50 + shadeClose: true,
  51 + shade: false,
  52 + maxmin: true, //开启最大化最小化按钮
  53 + area: ['1093px', '600px'],
  54 + moveOut: true,
  55 + content: wrapUrl,
  56 + zIndex: layer.zIndex,
  57 + success: function(layero){
  58 + layer.setTop(layero);
  59 + },
  60 + end: function () {
  61 +
  62 + }
  63 + });
  64 + }
  65 +
34 66
35 return { 67 return {
36 temps: function () { 68 temps: function () {
src/main/resources/static/real_control_v2/js/forms/wrap.html
@@ -15,6 +15,9 @@ @@ -15,6 +15,9 @@
15 <!-- 日期控件 --> 15 <!-- 日期控件 -->
16 <link href="/metronic_v4.5.4/plugins/bootstrap-datetimepicker-2/css/bootstrap-datetimepicker.min.css" 16 <link href="/metronic_v4.5.4/plugins/bootstrap-datetimepicker-2/css/bootstrap-datetimepicker.min.css"
17 rel="stylesheet" type="text/css"/> 17 rel="stylesheet" type="text/css"/>
  18 + <!-- layer 弹层 插件 -->
  19 + <link href="/assets/plugins/layer-v2.4/layer/skin/layer.css"
  20 + rel="stylesheet" type="text/css" />
18 21
19 <!-- jQuery --> 22 <!-- jQuery -->
20 <script src="/metronic_v4.5.4/plugins/jquery.min.js"></script> 23 <script src="/metronic_v4.5.4/plugins/jquery.min.js"></script>
@@ -28,6 +31,8 @@ @@ -28,6 +31,8 @@
28 <!-- art-template 模版引擎 --> 31 <!-- art-template 模版引擎 -->
29 <script src="/assets/plugins/template.js"></script> 32 <script src="/assets/plugins/template.js"></script>
30 <script src="/pages/forms/statement/js/jquery.PrintArea.js"></script> 33 <script src="/pages/forms/statement/js/jquery.PrintArea.js"></script>
  34 + <!-- layer 弹层 -->
  35 + <script src="/assets/plugins/layer-v2.4/layer/layer.js" ></script>
31 36
32 <style> 37 <style>
33 body{ 38 body{
@@ -40,6 +45,36 @@ @@ -40,6 +45,36 @@
40 .form-page-content .portlet{ 45 .form-page-content .portlet{
41 margin-bottom: 0px !important; 46 margin-bottom: 0px !important;
42 } 47 }
  48 +
  49 + .row{
  50 + margin-left: 0 !important;
  51 + margin-right: 0 !important;
  52 + }
  53 +
  54 + .row .col-md-12{
  55 + padding-left: 0 !important;
  56 + }
  57 +
  58 + .portlet{
  59 + padding-top: 0 !important;
  60 + padding-left: 0 !important;
  61 + }
  62 +
  63 + .form-page-content .portlet>.portlet-title{
  64 + position: fixed;
  65 + width: 100%;
  66 + background: #ffffff;
  67 + z-index: 9;
  68 + padding-top: 12px;
  69 + margin-top: -2px;
  70 + box-shadow: 0px 4px 2px 0 rgba(225, 225, 225, 0.2), 0px 4px 9px 0 rgba(139, 135, 135, 0.19);
  71 + border-bottom: 1px solid #dbdbdb;
  72 + }
  73 +
  74 + .form-page-content .portlet.light .portlet-body{
  75 + padding-top: 8px;
  76 + margin-top: 55px;
  77 + }
43 </style> 78 </style>
44 </head> 79 </head>
45 <body> 80 <body>
@@ -65,10 +100,25 @@ @@ -65,10 +100,25 @@
65 if($("#ddrbBody").length > 0){ 100 if($("#ddrbBody").length > 0){
66 $("#ddrbBody").height("620px"); 101 $("#ddrbBody").height("620px");
67 } 102 }
  103 +
  104 + //去掉公司和分公司选项
  105 + var company = $('select[name=company]', '.form-page-content');
  106 + var subCompany = $('select[name=subCompany]', '.form-page-content');
  107 + if(company.length > 0){
  108 + company.parent().remove();
  109 + }
  110 + if(subCompany.length > 0){
  111 + subCompany.parent().remove();
  112 + }
  113 +
  114 + //重新构造线路下拉框
  115 + //var lineSelect = $('select[name=line]', '.form-page-content');
  116 + //lineSelect.select2('destory').html('');
  117 + //initPinYinSelect2(lineSelect);
68 }); 118 });
69 119
70 //iframe 自适应高度 120 //iframe 自适应高度
71 - var iframeHeight; 121 +/* var iframeHeight;
72 var ifm = top.document.getElementById("formFragmentModalIframe"); 122 var ifm = top.document.getElementById("formFragmentModalIframe");
73 123
74 function changeFrameHeight() { 124 function changeFrameHeight() {
@@ -84,13 +134,13 @@ @@ -84,13 +134,13 @@
84 var h = $('.form-page-content').height(); 134 var h = $('.form-page-content').height();
85 if (iframeHeight != h) 135 if (iframeHeight != h)
86 ifm.height = h + 'px'; 136 ifm.height = h + 'px';
87 - }, 600); 137 + }, 600);*/
88 138
89 })(); 139 })();
90 140
91 function initPinYinSelect2(selector, data, cb) { 141 function initPinYinSelect2(selector, data, cb) {
92 //过滤线路选择框数据 142 //过滤线路选择框数据
93 - if(selector === '#line'){ 143 + /*if(selector === '#line'){
94 var idx = ',' + top.gb_data_basic.line_idx + ','; 144 var idx = ',' + top.gb_data_basic.line_idx + ',';
95 var newData = []; 145 var newData = [];
96 $.each(data, function () { 146 $.each(data, function () {
@@ -98,8 +148,17 @@ @@ -98,8 +148,17 @@
98 newData.push(this); 148 newData.push(this);
99 }); 149 });
100 data = newData; 150 data = newData;
  151 + }*/
  152 + if(selector === '#line'){
  153 + //写死线路下拉框
  154 + data = [];
  155 + $.each(top.gb_data_basic.activeLines, function () {
  156 + data.push({
  157 + id: this.lineCode,
  158 + text: this.name
  159 + });
  160 + });
101 } 161 }
102 -  
103 $.each(data, function () { 162 $.each(data, function () {
104 this.fullChars = pinyin.getFullChars(this.text).toUpperCase(); 163 this.fullChars = pinyin.getFullChars(this.text).toUpperCase();
105 this.camelChars = pinyin.getCamelChars(this.text); 164 this.camelChars = pinyin.getCamelChars(this.text);
src/main/resources/static/real_control_v2/js/line_schedule/dbclick.js
@@ -22,6 +22,8 @@ var gb_schedule_table_dbclick = (function() { @@ -22,6 +22,8 @@ var gb_schedule_table_dbclick = (function() {
22 }, function(rs) { 22 }, function(rs) {
23 gb_schedule_table.updateSchedule(rs.ts); 23 gb_schedule_table.updateSchedule(rs.ts);
24 notify_succ('待发调整成功!'); 24 notify_succ('待发调整成功!');
  25 + //重新计算应发未发
  26 + gb_schedule_table.calc_yfwf_num(rs.ts[0].xlBm);
25 }); 27 });
26 } 28 }
27 } 29 }
src/main/resources/static/real_control_v2/js/line_schedule/sch_table.js
@@ -478,10 +478,11 @@ var gb_schedule_table = (function () { @@ -478,10 +478,11 @@ var gb_schedule_table = (function () {
478 478
479 var carYfwfMap = {}, nbbm; 479 var carYfwfMap = {}, nbbm;
480 $.each(schArr, function () { 480 $.each(schArr, function () {
481 - if (this.fcsjT > t)  
482 - return false; 481 + /*if (this.dfsjT > t)
  482 + return false;*/
483 483
484 - if (this.fcsjActual == null && this.fcsjActualTime == null && this.status != -1) { 484 + if (this.dfsjT < t &&
  485 + this.fcsjActual == null && this.fcsjActualTime == null && this.status != -1) {
485 yfwf_num++; 486 yfwf_num++;
486 nbbm = this.clZbh; 487 nbbm = this.clZbh;
487 if (carYfwfMap[nbbm]) 488 if (carYfwfMap[nbbm])
src/main/resources/static/real_control_v2/js/main.js
@@ -169,8 +169,9 @@ var disabled_submit_btn = function (form) { @@ -169,8 +169,9 @@ var disabled_submit_btn = function (form) {
169 function showUpdateDescription() { 169 function showUpdateDescription() {
170 //更新说明 170 //更新说明
171 var updateDescription = { 171 var updateDescription = {
172 - date: '2017-05-16',  
173 - text: '<h5>修复了进出场班次公里设置为0后自动烂班的问题</h5>' 172 + date: '2017-05-18',
  173 + text: '<h5>现在自定义子任务,勾选是否烂班后,烂班原因必填。</h5><h5>修复了在驾驶员请求出场时,误下发分班出场指令的问题</h5>' +
  174 + '<h5>调整了报表的弹出窗口<br>1、取消了窗口遮罩,可同时打开多个报表窗口,窗口堆叠时,点击窗口title切换堆叠顺序<br>2、鼠标按住窗口右下角,可随意改变窗口大小。<br>3、拖动窗口时,允许拖出页面之外<br><br>注意:将窗口和窗口title拖出页面外时,会面临窗口丢失的风险,过多丢失的窗口会影响到页面性能,你可以刷新页面以重置!</h5>'
174 }; 175 };
175 176
176 var storage = window.localStorage 177 var storage = window.localStorage
src/main/resources/static/real_control_v2/js/safe_driv/safeDriv.js
@@ -42,8 +42,16 @@ var gb_safe_driv = (function () { @@ -42,8 +42,16 @@ var gb_safe_driv = (function () {
42 $wrap.append(htmlStr); 42 $wrap.append(htmlStr);
43 }; 43 };
44 44
  45 + var vedioModal = '<div id="ssspVedioModal" class="uk-modal ct_move_modal">' +
  46 + '<div class="uk-modal-dialog uk-modal-dialog-large">' +
  47 + '<button type="button" class="uk-modal-close uk-close"></button>' +
  48 + '<div class="uk-modal-header"> <h2>实时视频</h2> </div> '+
  49 + '<p class="loading"><i class="uk-icon-spinner uk-icon-spin"></i> 载入资源...</p><iframe id="vedioIframe" src="http://222.66.0.204:8910/transport_server/dvr_monitor1.jsp?deviceId=229L0650&channel=0"></iframe>' +
  50 + '</div>' +
  51 + '</div>';
  52 +
45 $wrap.on('click', '.safe_driv_pop', function () { 53 $wrap.on('click', '.safe_driv_pop', function () {
46 - var title = $(this).data('title'); 54 + var title = $(this).data('title') + '&nbsp;<button class="uk-button uk-button-mini uk-button-primary" id="openVedioModalBtn" type="button">查看实时视频</button>';
47 var url = $(this).data('url'); 55 var url = $(this).data('url');
48 $(this).remove(); 56 $(this).remove();
49 var lightbox = UIkit.lightbox.create([ 57 var lightbox = UIkit.lightbox.create([
@@ -53,9 +61,24 @@ var gb_safe_driv = (function () { @@ -53,9 +61,24 @@ var gb_safe_driv = (function () {
53 lightbox.show(); 61 lightbox.show();
54 }); 62 });
55 63
  64 + var showVedioModal = function () {
  65 + open_modal_dom(vedioModal ,{}, {modal: false});
  66 + $('#ssspVedioModal #vedioIframe').on('load', function () {
  67 + var that = this;
  68 + setTimeout(function () {
  69 + $(that).show();
  70 + $('#ssspVedioModal p.loading').remove();
  71 + }, 500);
  72 + });
  73 + };
  74 +
  75 + $(document).on('click', '#openVedioModalBtn', showVedioModal);
  76 +
  77 +
56 return { 78 return {
57 pop: pop, 79 pop: pop,
58 safeCode: codes, 80 safeCode: codes,
59 - urlPath: path 81 + urlPath: path,
  82 + showVedioModal: showVedioModal
60 } 83 }
61 })(); 84 })();
62 \ No newline at end of file 85 \ No newline at end of file
src/main/resources/static/real_control_v2/main.html
@@ -40,6 +40,9 @@ @@ -40,6 +40,9 @@
40 <link rel="stylesheet" href="/real_control_v2/css/modal_extend.css" merge="custom_style"/> 40 <link rel="stylesheet" href="/real_control_v2/css/modal_extend.css" merge="custom_style"/>
41 <!-- perfect-scrollbar style --> 41 <!-- perfect-scrollbar style -->
42 <link rel="stylesheet" href="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.css" merge="plugins"/> 42 <link rel="stylesheet" href="/real_control_v2/assets/plugins/perfect-scrollbar/perfect-scrollbar.css" merge="plugins"/>
  43 + <!-- layer 3.0.3 -->
  44 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/layer3.0.3/skin/default/layer.css" merge="plugins"/>
  45 + <link rel="stylesheet" href="/real_control_v2/assets/plugins/layer3.0.3/skin/moon/style.css" merge="plugins"/>
43 </head> 46 </head>
44 47
45 <body> 48 <body>
@@ -147,6 +150,8 @@ @@ -147,6 +150,8 @@
147 <script src="/assets/plugins/pinyin.js" merge="plugins"></script> 150 <script src="/assets/plugins/pinyin.js" merge="plugins"></script>
148 <!-- qtip --> 151 <!-- qtip -->
149 <script src="/real_control_v2/assets/plugins/qtip/jquery.qtip.min.js" merge="plugins"></script> 152 <script src="/real_control_v2/assets/plugins/qtip/jquery.qtip.min.js" merge="plugins"></script>
  153 +<!-- layer 3.0.3 -->
  154 +<script src="/real_control_v2/assets/plugins/layer3.0.3/layer.js" merge="plugins"></script>
150 155
151 <!-- 数据 --> 156 <!-- 数据 -->
152 <script src="/real_control_v2/js/data/data_basic.js" merge="custom_js"></script> 157 <script src="/real_control_v2/js/data/data_basic.js" merge="custom_js"></script>
src/main/resources/static/real_control_v2/mapmonitor/fragments/playback_v2/main.html
@@ -760,17 +760,19 @@ @@ -760,17 +760,19 @@
760 var initDropdownList = function (lineCode) { 760 var initDropdownList = function (lineCode) {
761 //从地图模块获取停车场数据 761 //从地图模块获取停车场数据
762 parks = gb_map_spatial_data.carparkArray(); 762 parks = gb_map_spatial_data.carparkArray();
763 - console.log('parksparks', parks); 763 + //console.log('parksparks', parks);
764 //将线路标准停车场排在第一个 764 //将线路标准停车场排在第一个
765 var information = gb_data_basic.getLineInformation(lineCode); 765 var information = gb_data_basic.getLineInformation(lineCode);
766 - var index;  
767 - for(var i = 0,p; p=parks[i++];){  
768 - if(p.parkCode == information.carPark){  
769 - index = i - 1;  
770 - break; 766 + if(information){
  767 + var index;
  768 + for(var i = 0,p; p=parks[i++];){
  769 + if(p.parkCode == information.carPark){
  770 + index = i - 1;
  771 + break;
  772 + }
771 } 773 }
  774 + parks[index] = parks.splice(0, 1 , parks[index])[0];
772 } 775 }
773 - parks[index] = parks.splice(0, 1 , parks[index])[0];  
774 //渲染 776 //渲染
775 var htmlStr = template('pb_park_list_dropdown-temp', {list: parks}); 777 var htmlStr = template('pb_park_list_dropdown-temp', {list: parks});
776 $('.buffer_area_form .parks_list', modal).html(htmlStr); 778 $('.buffer_area_form .parks_list', modal).html(htmlStr);
@@ -833,6 +835,8 @@ @@ -833,6 +835,8 @@
833 } 835 }
834 836
835 //更新路段底图 837 //更新路段底图
  838 + if(gps.upDown!=0 && gps.upDown!=1)
  839 + gps.upDown = 0;
836 if(gps.upDown!=roadUpdown){ 840 if(gps.upDown!=roadUpdown){
837 switchPolyline(gps.upDown); 841 switchPolyline(gps.upDown);
838 //清除轨迹线 842 //清除轨迹线
@@ -859,13 +863,13 @@ @@ -859,13 +863,13 @@
859 /** 863 /**
860 * 绘制路段底图(包括站点) 864 * 绘制路段底图(包括站点)
861 */ 865 */
862 - var roadUpdown=-1; 866 + var roadUpdown=-100;
863 var switchPolyline = function (upDown) { 867 var switchPolyline = function (upDown) {
864 if(typeof(upDown) == "undefined") 868 if(typeof(upDown) == "undefined")
865 upDown = roadUpdown; 869 upDown = roadUpdown;
866 870
867 if(upDown!= 0 && upDown != 1) 871 if(upDown!= 0 && upDown != 1)
868 - return; 872 + upDown = 0;
869 map.clearOverlays(); 873 map.clearOverlays();
870 parkPolygons = {};//清除停车场对照 874 parkPolygons = {};//清除停车场对照
871 //路段 875 //路段
@@ -966,7 +970,7 @@ @@ -966,7 +970,7 @@
966 if(gpsMarker) 970 if(gpsMarker)
967 gpsMarker.enableMassClear(); 971 gpsMarker.enableMassClear();
968 map.clearOverlays(); 972 map.clearOverlays();
969 - roadUpdown = -1; 973 + roadUpdown = -100;
970 trailArray=[]; 974 trailArray=[];
971 trailPolyline = null; 975 trailPolyline = null;
972 gpsMarker = null; 976 gpsMarker = null;