Commit 8bde3e6c4d1ce9acb24053fbfc3e552ba3f78995

Authored by 廖磊
2 parents 6aa8893a 64abfd21

Merge branch 'minhang' of

http://222.66.0.204:8090/panzhaov5/bsth_control into minhang
Showing 51 changed files with 1687 additions and 1565 deletions
src/main/java/com/bsth/XDApplication.java
@@ -88,14 +88,14 @@ public class XDApplication implements CommandLineRunner { @@ -88,14 +88,14 @@ public class XDApplication implements CommandLineRunner {
88 ScheduledExecutorService sexec = Application.mainServices; 88 ScheduledExecutorService sexec = Application.mainServices;
89 //抓取GPS数据 89 //抓取GPS数据
90 gpsDataLoader.setFlag(-1); 90 gpsDataLoader.setFlag(-1);
91 - sexec.scheduleWithFixedDelay(gpsDataLoader, 30, 2, TimeUnit.SECONDS); 91 + //sexec.scheduleWithFixedDelay(gpsDataLoader, 30, 2, TimeUnit.SECONDS);
92 //实际排班更新线程 92 //实际排班更新线程
93 - sexec.scheduleWithFixedDelay(scheduleRefreshThread, 15, 240, TimeUnit.SECONDS); 93 + //sexec.scheduleWithFixedDelay(scheduleRefreshThread, 15, 240, TimeUnit.SECONDS);
94 //实际排班延迟入库线程 94 //实际排班延迟入库线程
95 - sexec.scheduleWithFixedDelay(schedulePstThread, 60, 30, TimeUnit.SECONDS); 95 + //sexec.scheduleWithFixedDelay(schedulePstThread, 60, 15, TimeUnit.SECONDS);
96 96
97 //线程监听(防止重要的线程阻塞、异常结束。以及部分主备切换工作) 97 //线程监听(防止重要的线程阻塞、异常结束。以及部分主备切换工作)
98 - sexec.scheduleWithFixedDelay(threadMonotor, 240, 60, TimeUnit.SECONDS); 98 + //sexec.scheduleWithFixedDelay(threadMonotor, 240, 60, TimeUnit.SECONDS);
99 } 99 }
100 100
101 public void prodInit(){ 101 public void prodInit(){
@@ -110,7 +110,7 @@ public class XDApplication implements CommandLineRunner { @@ -110,7 +110,7 @@ public class XDApplication implements CommandLineRunner {
110 //实际排班更新线程 110 //实际排班更新线程
111 sexec.scheduleWithFixedDelay(scheduleRefreshThread, 15, 240, TimeUnit.SECONDS); 111 sexec.scheduleWithFixedDelay(scheduleRefreshThread, 15, 240, TimeUnit.SECONDS);
112 //实际排班延迟入库线程 112 //实际排班延迟入库线程
113 - sexec.scheduleWithFixedDelay(schedulePstThread, 60, 30, TimeUnit.SECONDS); 113 + sexec.scheduleWithFixedDelay(schedulePstThread, 60, 15, TimeUnit.SECONDS);
114 //检查班次误点 114 //检查班次误点
115 sexec.scheduleWithFixedDelay(scheduleLateThread, 60, 30, TimeUnit.SECONDS); 115 sexec.scheduleWithFixedDelay(scheduleLateThread, 60, 30, TimeUnit.SECONDS);
116 //调度指令延迟入库 116 //调度指令延迟入库
src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
@@ -48,8 +48,9 @@ public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo, @@ -48,8 +48,9 @@ public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo,
48 */ 48 */
49 @RequestMapping(value = "/outgoAdjust", method = RequestMethod.POST) 49 @RequestMapping(value = "/outgoAdjust", method = RequestMethod.POST)
50 public Map<String, Object> outgoAdjust(@RequestParam Long id, @RequestParam String remarks, 50 public Map<String, Object> outgoAdjust(@RequestParam Long id, @RequestParam String remarks,
51 - @RequestParam String dfsj,String bcType) {  
52 - return scheduleRealInfoService.outgoAdjust(id, remarks, dfsj, bcType); 51 + @RequestParam String dfsj,String bcType,
  52 + @RequestParam(defaultValue = "") String opType) {
  53 + return scheduleRealInfoService.outgoAdjust(id, remarks, dfsj, bcType, opType);
53 } 54 }
54 55
55 /** 56 /**
src/main/java/com/bsth/controller/schedule/core/GuideboardInfoController.java
@@ -6,9 +6,7 @@ import com.bsth.entity.schedule.GuideboardInfo; @@ -6,9 +6,7 @@ import com.bsth.entity.schedule.GuideboardInfo;
6 import com.bsth.repository.schedule.GuideboardInfoRepository; 6 import com.bsth.repository.schedule.GuideboardInfoRepository;
7 import com.bsth.service.schedule.GuideboardInfoService; 7 import com.bsth.service.schedule.GuideboardInfoService;
8 import com.bsth.service.schedule.exception.ScheduleException; 8 import com.bsth.service.schedule.exception.ScheduleException;
9 -import com.bsth.service.schedule.utils.DataToolsProperties;  
10 import org.springframework.beans.factory.annotation.Autowired; 9 import org.springframework.beans.factory.annotation.Autowired;
11 -import org.springframework.boot.context.properties.EnableConfigurationProperties;  
12 import org.springframework.web.bind.annotation.RequestMapping; 10 import org.springframework.web.bind.annotation.RequestMapping;
13 import org.springframework.web.bind.annotation.RequestMethod; 11 import org.springframework.web.bind.annotation.RequestMethod;
14 import org.springframework.web.bind.annotation.RequestParam; 12 import org.springframework.web.bind.annotation.RequestParam;
@@ -23,7 +21,6 @@ import java.util.Map; @@ -23,7 +21,6 @@ import java.util.Map;
23 */ 21 */
24 @RestController 22 @RestController
25 @RequestMapping("gic") 23 @RequestMapping("gic")
26 -@EnableConfigurationProperties(DataToolsProperties.class)  
27 public class GuideboardInfoController extends BController<GuideboardInfo, Long> { 24 public class GuideboardInfoController extends BController<GuideboardInfo, Long> {
28 @Autowired 25 @Autowired
29 private GuideboardInfoService guideboardInfoService; 26 private GuideboardInfoService guideboardInfoService;
src/main/java/com/bsth/controller/schedule/core/TTInfoController.java
@@ -3,8 +3,8 @@ package com.bsth.controller.schedule.core; @@ -3,8 +3,8 @@ package com.bsth.controller.schedule.core;
3 import com.bsth.common.ResponseCode; 3 import com.bsth.common.ResponseCode;
4 import com.bsth.controller.schedule.BController; 4 import com.bsth.controller.schedule.BController;
5 import com.bsth.entity.schedule.TTInfo; 5 import com.bsth.entity.schedule.TTInfo;
6 -import com.bsth.service.schedule.exception.ScheduleException;  
7 import com.bsth.service.schedule.TTInfoService; 6 import com.bsth.service.schedule.TTInfoService;
  7 +import com.bsth.service.schedule.exception.ScheduleException;
8 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.beans.factory.annotation.Autowired;
9 import org.springframework.web.bind.annotation.RequestMapping; 9 import org.springframework.web.bind.annotation.RequestMapping;
10 import org.springframework.web.bind.annotation.RequestMethod; 10 import org.springframework.web.bind.annotation.RequestMethod;
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/gpsdata/arrival/handlers/ReverseSignalHandle.java
@@ -38,7 +38,7 @@ public class ReverseSignalHandle extends SignalHandle { @@ -38,7 +38,7 @@ public class ReverseSignalHandle extends SignalHandle {
38 if (isReverse(gps, prev)) { 38 if (isReverse(gps, prev)) {
39 RouteReverse reverse = reverseSearch(prevs, gps); 39 RouteReverse reverse = reverseSearch(prevs, gps);
40 40
41 - if (reverse.getCount() >= 3 41 + if (reverse != null && reverse.getCount() >= 3
42 && reverse.isClose() 42 && reverse.isClose()
43 && !GeoCacheData.isEndStation(gps.getLineId(), gps.getUpDown(), reverse.getTurned())) { 43 && !GeoCacheData.isEndStation(gps.getLineId(), gps.getUpDown(), reverse.getTurned())) {
44 scheduleSignalState.reverseAnalyse(reverse); 44 scheduleSignalState.reverseAnalyse(reverse);
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
@@ -31,6 +31,7 @@ import org.springframework.stereotype.Component; @@ -31,6 +31,7 @@ import org.springframework.stereotype.Component;
31 import java.text.ParseException; 31 import java.text.ParseException;
32 import java.text.SimpleDateFormat; 32 import java.text.SimpleDateFormat;
33 import java.util.*; 33 import java.util.*;
  34 +import java.util.concurrent.ConcurrentLinkedQueue;
34 35
35 /** 36 /**
36 * @author PanZhao 37 * @author PanZhao
@@ -59,7 +60,7 @@ public class DayOfSchedule { @@ -59,7 +60,7 @@ public class DayOfSchedule {
59 private static Map<String, ScheduleRealInfo> carExecutePlanMap; 60 private static Map<String, ScheduleRealInfo> carExecutePlanMap;
60 61
61 // 持久化 62 // 持久化
62 - public static LinkedList<ScheduleRealInfo> pstBuffer; 63 + public static ConcurrentLinkedQueue<ScheduleRealInfo> pstBuffer;
63 64
64 // 排序器 65 // 排序器
65 private static ScheduleComparator.FCSJ schFCSJComparator; 66 private static ScheduleComparator.FCSJ schFCSJComparator;
@@ -92,7 +93,7 @@ public class DayOfSchedule { @@ -92,7 +93,7 @@ public class DayOfSchedule {
92 lpScheduleMap = ArrayListMultimap.create(); 93 lpScheduleMap = ArrayListMultimap.create();
93 94
94 id2SchedulMap = new HashMap<>(); 95 id2SchedulMap = new HashMap<>();
95 - pstBuffer = new LinkedList<>(); 96 + pstBuffer = new ConcurrentLinkedQueue<>();
96 schFCSJComparator = new ScheduleComparator.FCSJ(); 97 schFCSJComparator = new ScheduleComparator.FCSJ();
97 currSchDateMap = new HashMap<>(); 98 currSchDateMap = new HashMap<>();
98 carExecutePlanMap = new HashMap<>(); 99 carExecutePlanMap = new HashMap<>();
@@ -109,7 +110,7 @@ public class DayOfSchedule { @@ -109,7 +110,7 @@ public class DayOfSchedule {
109 private static DateTimeFormatter fmtyyyyMMdd = DateTimeFormat.forPattern("yyyy-MM-dd"), fmtHHmm = DateTimeFormat.forPattern("HH:mm"); 110 private static DateTimeFormatter fmtyyyyMMdd = DateTimeFormat.forPattern("yyyy-MM-dd"), fmtHHmm = DateTimeFormat.forPattern("HH:mm");
110 111
111 //数据恢复 112 //数据恢复
112 - private void dataRecovery() { 113 + public void dataRecovery() {
113 GpsDataRecovery.run = true; 114 GpsDataRecovery.run = true;
114 115
115 Collection<LineConfig> confs = lineConfigs.getAll(); 116 Collection<LineConfig> confs = lineConfigs.getAll();
src/main/java/com/bsth/data/schedule/edit_logs/SchEditLogger.java 0 → 100644
  1 +package com.bsth.data.schedule.edit_logs;
  2 +
  3 +/**
  4 + * 班次修正记录
  5 + * Created by panzhao on 2017/5/16.
  6 + */
  7 +public class SchEditLogger {
  8 +
  9 + /**
  10 + * 待发调整
  11 + */
  12 + public static void dftz(Long id, String remarks, String dfsj, String bcType, String opType){
  13 +
  14 + }
  15 +}
src/main/java/com/bsth/data/schedule/thread/SchedulePstThread.java
@@ -10,7 +10,6 @@ import org.springframework.orm.jpa.JpaObjectRetrievalFailureException; @@ -10,7 +10,6 @@ import org.springframework.orm.jpa.JpaObjectRetrievalFailureException;
10 import org.springframework.stereotype.Component; 10 import org.springframework.stereotype.Component;
11 11
12 import javax.persistence.EntityNotFoundException; 12 import javax.persistence.EntityNotFoundException;
13 -import java.util.LinkedList;  
14 13
15 /** 14 /**
16 * @author PanZhao 15 * @author PanZhao
@@ -29,11 +28,11 @@ public class SchedulePstThread extends Thread { @@ -29,11 +28,11 @@ public class SchedulePstThread extends Thread {
29 @Override 28 @Override
30 public void run() { 29 public void run() {
31 30
32 - LinkedList<ScheduleRealInfo> list = DayOfSchedule.pstBuffer; 31 + //LinkedList<ScheduleRealInfo> list = DayOfSchedule.pstBuffer;
33 32
34 ScheduleRealInfo schedule; 33 ScheduleRealInfo schedule;
35 for (int i = 0; i < 1000; i++) { 34 for (int i = 0; i < 1000; i++) {
36 - schedule = list.poll(); 35 + schedule = DayOfSchedule.pstBuffer.poll();
37 if (null == schedule) 36 if (null == schedule)
38 break; 37 break;
39 38
@@ -47,7 +46,7 @@ public class SchedulePstThread extends Thread { @@ -47,7 +46,7 @@ public class SchedulePstThread extends Thread {
47 logger.error("EntityNotFoundException error.... 可忽略"); 46 logger.error("EntityNotFoundException error.... 可忽略");
48 } 47 }
49 catch (Exception e) { 48 catch (Exception e) {
50 - logger.error("", e); 49 + logger.error("班次入库的时候出现未知异常!!", e);
51 } 50 }
52 } 51 }
53 } 52 }
src/main/java/com/bsth/entity/realcontrol/ScheduleRealInfo.java
@@ -924,4 +924,8 @@ public class ScheduleRealInfo { @@ -924,4 +924,8 @@ public class ScheduleRealInfo {
924 public void setFcpSn(int fcpSn) { 924 public void setFcpSn(int fcpSn) {
925 this.fcpSn = fcpSn; 925 this.fcpSn = fcpSn;
926 } 926 }
  927 +
  928 + public boolean _isInout(){
  929 + return this.getBcType().equals("out") || this.getBcType().equals("in");
  930 + }
927 } 931 }
src/main/java/com/bsth/service/impl/BusIntervalServiceImpl.java
@@ -71,7 +71,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -71,7 +71,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
71 sql += " and gs_bm = '"+company+"' and fgs_bm = '"+subCompany+"'"; 71 sql += " and gs_bm = '"+company+"' and fgs_bm = '"+subCompany+"'";
72 } 72 }
73 if(normal){ 73 if(normal){
74 - sql += " and bc_type != 'in' and bc_type != 'out'"; 74 + sql += " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'";
75 } 75 }
76 76
77 list = jdbcTemplate.query(sql, 77 list = jdbcTemplate.query(sql,
@@ -158,7 +158,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -158,7 +158,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
158 158
159 if(model.length() != 0){ 159 if(model.length() != 0){
160 // sql = "select * from bsth_c_s_ttinfo_detail where ttinfo = '"+model+"' and bc_type != 'in' and bc_type != 'out'"; 160 // sql = "select * from bsth_c_s_ttinfo_detail where ttinfo = '"+model+"' and bc_type != 'in' and bc_type != 'out'";
161 - sql = "select id from bsth_c_s_sp_info where tt_info = '" + model + "' and bc_type != 'in' and bc_type != 'out'"; 161 + sql = "select id from bsth_c_s_sp_info where tt_info = '" + model + "' and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'";
162 162
163 ttList = jdbcTemplate.query(sql, 163 ttList = jdbcTemplate.query(sql,
164 new RowMapper<Long>(){ 164 new RowMapper<Long>(){
@@ -452,8 +452,16 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -452,8 +452,16 @@ public class BusIntervalServiceImpl implements BusIntervalService {
452 if(statu.equals("1")){ 452 if(statu.equals("1")){
453 for(Long time : timeList){ 453 for(Long time : timeList){
454 Map<String, Object> tempMap = new HashMap<String, Object>(); 454 Map<String, Object> tempMap = new HashMap<String, Object>();
455 - List<Long> fcsjs = timeMap0.get(time);  
456 - List<Long> fcsjAs = timeMap1.get(time); 455 + List<Long> fcsjs = new ArrayList<Long>();
  456 + List<Long> fcsjAs = new ArrayList<Long>();
  457 + for(Long l : timeMap0.get(time)){
  458 + if(l < 90)
  459 + fcsjs.add(l);
  460 + }
  461 + for(Long l : timeMap1.get(time)){
  462 + if(l < 90)
  463 + fcsjAs.add(l);
  464 + }
457 Collections.sort(fcsjs); 465 Collections.sort(fcsjs);
458 Collections.sort(fcsjAs); 466 Collections.sort(fcsjAs);
459 String[] split = key.split("/"); 467 String[] split = key.split("/");
@@ -514,8 +522,16 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -514,8 +522,16 @@ public class BusIntervalServiceImpl implements BusIntervalService {
514 String[] split = key.split("/"); 522 String[] split = key.split("/");
515 if((long)Long.valueOf(split[0]) == xlBm){ 523 if((long)Long.valueOf(split[0]) == xlBm){
516 Map<String, Object> tempMap = new HashMap<String, Object>(); 524 Map<String, Object> tempMap = new HashMap<String, Object>();
517 - List<Long> fcsjs = temp0.get(key);  
518 - List<Long> fcsjAs = temp1.get(key); 525 + List<Long> fcsjs = new ArrayList<Long>();
  526 + List<Long> fcsjAs = new ArrayList<Long>();
  527 + for(Long l : temp0.get(key)){
  528 + if(l < 90)
  529 + fcsjs.add(l);
  530 + }
  531 + for(Long l : temp1.get(key)){
  532 + if(l < 90)
  533 + fcsjAs.add(l);
  534 + }
519 Collections.sort(fcsjs); 535 Collections.sort(fcsjs);
520 Collections.sort(fcsjAs); 536 Collections.sort(fcsjAs);
521 long fcsj = 0l; 537 long fcsj = 0l;
@@ -613,7 +629,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -613,7 +629,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
613 if(sfqr == 1){ 629 if(sfqr == 1){
614 sql += " and zdsj >= '"+times1+"' and fcsj <= '"+times2+"'"; 630 sql += " and zdsj >= '"+times1+"' and fcsj <= '"+times2+"'";
615 } 631 }
616 - sql += " and bc_type != 'in' and bc_type != 'out' order by fcsj"; 632 + sql += " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks' order by fcsj";
617 633
618 list = jdbcTemplate.query(sql, 634 list = jdbcTemplate.query(sql,
619 new RowMapper<ScheduleRealInfo>(){ 635 new RowMapper<ScheduleRealInfo>(){
@@ -707,7 +723,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -707,7 +723,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
707 }); 723 });
708 724
709 if(model.length() != 0){ 725 if(model.length() != 0){
710 - sql = "select id from bsth_c_s_sp_info where tt_info = '" + model + "' and bc_type != 'in' and bc_type != 'out'"; 726 + sql = "select id from bsth_c_s_sp_info where tt_info = '" + model + "' and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'";
711 727
712 ttList = jdbcTemplate.query(sql, 728 ttList = jdbcTemplate.query(sql,
713 new RowMapper<Long>(){ 729 new RowMapper<Long>(){
@@ -896,9 +912,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -896,9 +912,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
896 } 912 }
897 } 913 }
898 Collections.sort(keyList2); 914 Collections.sort(keyList2);
899 - for(long l : keyList2){  
900 - System.out.println(l);  
901 - } 915 +
902 for(int i = 1; i < keyList2.size(); i++){ 916 for(int i = 1; i < keyList2.size(); i++){
903 long fcsj1 = keyList2.get(i - 1); 917 long fcsj1 = keyList2.get(i - 1);
904 long fcsj2 = keyList2.get(i); 918 long fcsj2 = keyList2.get(i);
@@ -911,7 +925,6 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -911,7 +925,6 @@ public class BusIntervalServiceImpl implements BusIntervalService {
911 sjyysj += fcsj2 - fcsj1; 925 sjyysj += fcsj2 - fcsj1;
912 } 926 }
913 sjyysj1 += fcsj2 - fcsj1; 927 sjyysj1 += fcsj2 - fcsj1;
914 - System.out.println("---"+(fcsj2-fcsj1)+"---"+sjyysj+"---"+sjyysj1);  
915 } 928 }
916 } 929 }
917 930
@@ -1722,7 +1735,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -1722,7 +1735,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1722 if(company.length() != 0){ 1735 if(company.length() != 0){
1723 sql += " and gs_bm = '"+company+"' and fgs_bm = '"+subCompany+"'"; 1736 sql += " and gs_bm = '"+company+"' and fgs_bm = '"+subCompany+"'";
1724 } 1737 }
1725 - sql += " and bc_type != 'in' and bc_type != 'out'"; 1738 + sql += " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'";
1726 1739
1727 list = jdbcTemplate.query(sql, 1740 list = jdbcTemplate.query(sql,
1728 new RowMapper<ScheduleRealInfo>(){ 1741 new RowMapper<ScheduleRealInfo>(){
src/main/java/com/bsth/service/impl/TrafficManageServiceImpl.java
@@ -16,6 +16,7 @@ import com.bsth.util.TimeUtils; @@ -16,6 +16,7 @@ import com.bsth.util.TimeUtils;
16 import com.bsth.util.db.DBUtils_MS; 16 import com.bsth.util.db.DBUtils_MS;
17 import com.bsth.webService.trafficManage.geotool.services.InternalPortType; 17 import com.bsth.webService.trafficManage.geotool.services.InternalPortType;
18 import com.bsth.webService.trafficManage.geotool.services.Internal; 18 import com.bsth.webService.trafficManage.geotool.services.Internal;
  19 +import com.bsth.webService.trafficManage.org.tempuri.Results;
19 import com.bsth.webService.trafficManage.org.tempuri.WebServiceLocator; 20 import com.bsth.webService.trafficManage.org.tempuri.WebServiceLocator;
20 import com.bsth.webService.trafficManage.org.tempuri.WebServiceSoap; 21 import com.bsth.webService.trafficManage.org.tempuri.WebServiceSoap;
21 import org.apache.commons.lang.time.DateUtils; 22 import org.apache.commons.lang.time.DateUtils;
@@ -300,7 +301,9 @@ public class TrafficManageServiceImpl implements TrafficManageService{ @@ -300,7 +301,9 @@ public class TrafficManageServiceImpl implements TrafficManageService{
300 String date = sdfnyr.format(DateUtils.addDays(new Date(), -1)); 301 String date = sdfnyr.format(DateUtils.addDays(new Date(), -1));
301 StringBuffer sf = new StringBuffer(); 302 StringBuffer sf = new StringBuffer();
302 try { 303 try {
303 - sf.append("<DLDS>"); 304 + int counter = 0; // 计数器
  305 + int per = 10; // 每几条线路上传一次路单
  306 +
304 List<ScheduleRealInfo> list = scheduleRealInfoRepository.setLD(date); 307 List<ScheduleRealInfo> list = scheduleRealInfoRepository.setLD(date);
305 List<Map<String,Object>> listGroup = scheduleRealInfoRepository.setLDGroup(date); 308 List<Map<String,Object>> listGroup = scheduleRealInfoRepository.setLDGroup(date);
306 Map<String,Object> map = new HashMap<String,Object>(); 309 Map<String,Object> map = new HashMap<String,Object>();
@@ -314,6 +317,11 @@ public class TrafficManageServiceImpl implements TrafficManageService{ @@ -314,6 +317,11 @@ public class TrafficManageServiceImpl implements TrafficManageService{
314 if(line == null || line.getInUse() == null || line.getInUse() == 0){ 317 if(line == null || line.getInUse() == null || line.getInUse() == 0){
315 continue; 318 continue;
316 } 319 }
  320 + if(counter % per == 0){
  321 + sf = new StringBuffer();
  322 + sf.append("<DLDS>");
  323 + }
  324 + counter ++;
317 sf.append("<DLD>"); 325 sf.append("<DLD>");
318 sf.append("<RQ>"+date+"</RQ>"); 326 sf.append("<RQ>"+date+"</RQ>");
319 sf.append("<XLBM>"+BasicData.lineCode2ShangHaiCodeMap.get(schRealInfo.get("xlBm")+"")+"</XLBM>"); 327 sf.append("<XLBM>"+BasicData.lineCode2ShangHaiCodeMap.get(schRealInfo.get("xlBm")+"")+"</XLBM>");
@@ -322,7 +330,6 @@ public class TrafficManageServiceImpl implements TrafficManageService{ @@ -322,7 +330,6 @@ public class TrafficManageServiceImpl implements TrafficManageService{
322 sf.append("<UPDT>"+sdfnyrsfm.format(new Date())+"</UPDT>"); 330 sf.append("<UPDT>"+sdfnyrsfm.format(new Date())+"</UPDT>");
323 sf.append("<LDList>"); 331 sf.append("<LDList>");
324 332
325 - int seqNumber = 0;  
326 for(ScheduleRealInfo scheduleRealInfo:list){ 333 for(ScheduleRealInfo scheduleRealInfo:list){
327 if((schRealInfo.get("xlBm")+"").equals(scheduleRealInfo.getXlBm()) && (schRealInfo.get("lpName")+"") 334 if((schRealInfo.get("xlBm")+"").equals(scheduleRealInfo.getXlBm()) && (schRealInfo.get("lpName")+"")
328 .equals(scheduleRealInfo.getLpName()) 335 .equals(scheduleRealInfo.getLpName())
@@ -369,17 +376,33 @@ public class TrafficManageServiceImpl implements TrafficManageService{ @@ -369,17 +376,33 @@ public class TrafficManageServiceImpl implements TrafficManageService{
369 sf.append("</LDList>"); 376 sf.append("</LDList>");
370 sf.append("</DLD>"); 377 sf.append("</DLD>");
371 } 378 }
  379 + if(counter % per == per - 1){
  380 + counter = 0;
  381 + sf.append("</DLDS>");
  382 + Results results = ssop.setLD(userNameOther, passwordOther, sf.toString());
  383 + if(results.isSuccess()){
  384 + result = "success";
  385 + }
  386 + logger.info("setLD:"+sf.toString());
  387 + logger.info("setLD:"+result);
  388 + }
372 } 389 }
373 - sf.append("</DLDS>");  
374 - if(ssop.setLD(userNameOther, passwordOther, sf.toString()).isSuccess()){  
375 - result = "success"; 390 + // 每per条线路上传后剩下的数据再上传
  391 + if(counter > 0){
  392 + sf.append("</DLDS>");
  393 + Results results = ssop.setLD(userNameOther, passwordOther, sf.toString());
  394 + if(results.isSuccess()){
  395 + result = "success";
  396 + }
  397 + logger.info("setLD:"+sf.toString());
  398 + logger.info("setLD:"+result);
376 } 399 }
  400 +
377 } catch (Exception e) { 401 } catch (Exception e) {
378 logger.error("setLD:",e); 402 logger.error("setLD:",e);
379 e.printStackTrace(); 403 e.printStackTrace();
380 }finally{ 404 }finally{
381 - logger.info("setLD:"+sf.toString());  
382 - logger.info("setLD:"+result); 405 +
383 } 406 }
384 return result; 407 return result;
385 } 408 }
src/main/java/com/bsth/service/realcontrol/ScheduleRealInfoService.java
@@ -16,7 +16,7 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L @@ -16,7 +16,7 @@ public interface ScheduleRealInfoService extends BaseService&lt;ScheduleRealInfo, L
16 16
17 Map<String, Collection<ScheduleRealInfo>> findByLines(String lines); 17 Map<String, Collection<ScheduleRealInfo>> findByLines(String lines);
18 18
19 - Map<String, Object> outgoAdjust(Long id, String remarks, String dfsj, String bcType); 19 + Map<String, Object> outgoAdjust(Long id, String remarks, String dfsj, String bcType, String opType);
20 20
21 Map<String, Object> destroy(String idsStr/*, int spaceAdjust*/, String remarks, String reason/*, int spaceNum*/); 21 Map<String, Object> destroy(String idsStr/*, int spaceAdjust*/, String remarks, String reason/*, int spaceNum*/);
22 22
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
@@ -207,7 +207,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -207,7 +207,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
207 private static DateTimeFormatter fmtHHmm = DateTimeFormat.forPattern("HH:mm"); 207 private static DateTimeFormatter fmtHHmm = DateTimeFormat.forPattern("HH:mm");
208 208
209 @Override 209 @Override
210 - public Map<String, Object> outgoAdjust(Long id, String remarks, String dfsj, String bcType) { 210 + public Map<String, Object> outgoAdjust(Long id, String remarks, String dfsj, String bcType, String opType) {
211 Map<String, Object> map = new HashMap<>(); 211 Map<String, Object> map = new HashMap<>();
212 try { 212 try {
213 213
@@ -1160,7 +1160,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1160,7 +1160,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1160 sch = list.get(i); 1160 sch = list.get(i);
1161 1161
1162 //调整待发 1162 //调整待发
1163 - outgoAdjust(sch.getId(), null, fmtHHmm.print(st), null); 1163 + outgoAdjust(sch.getId(), null, fmtHHmm.print(st), null, "间隔调整");
1164 } 1164 }
1165 1165
1166 rs.put("status", ResponseCode.SUCCESS); 1166 rs.put("status", ResponseCode.SUCCESS);
@@ -1330,7 +1330,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1330,7 +1330,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1330 if (StringUtils.isNotEmpty(jhlc)) { 1330 if (StringUtils.isNotEmpty(jhlc)) {
1331 double jhlcNum = Double.parseDouble(jhlc); 1331 double jhlcNum = Double.parseDouble(jhlc);
1332 //烂班 1332 //烂班
1333 - if(jhlcNum == 0 && sch.getJhlcOrig() != 0) 1333 + if(jhlcNum == 0 && sch.getJhlcOrig() != 0 && !sch._isInout())
1334 destroy(sch.getId() + "", "", map.get("adjustExps").toString()); 1334 destroy(sch.getId() + "", "", map.get("adjustExps").toString());
1335 else if(jhlcNum != sch.getJhlc()){ 1335 else if(jhlcNum != sch.getJhlc()){
1336 sch.setJhlc(jhlcNum); 1336 sch.setJhlc(jhlcNum);
@@ -1380,7 +1380,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -1380,7 +1380,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
1380 schedule = dayOfSchedule.get(id); 1380 schedule = dayOfSchedule.get(id);
1381 1381
1382 if(schedule != null) 1382 if(schedule != null)
1383 - outgoAdjust(id, null, dfsj, null); 1383 + outgoAdjust(id, null, dfsj, null, "批量调整");
1384 } 1384 }
1385 1385
1386 rs.put("status", ResponseCode.SUCCESS); 1386 rs.put("status", ResponseCode.SUCCESS);
@@ -3254,7 +3254,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf @@ -3254,7 +3254,7 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl&lt;ScheduleRealInf
3254 if (StringUtils.isEmpty(dc.getOld_dfsj()) || StringUtils.isEmpty(dc.getNew_dfsj())) 3254 if (StringUtils.isEmpty(dc.getOld_dfsj()) || StringUtils.isEmpty(dc.getNew_dfsj()))
3255 continue; 3255 continue;
3256 3256
3257 - tempMap = outgoAdjust(dc.getSchId(), "", dc.getNew_dfsj(), null); 3257 + tempMap = outgoAdjust(dc.getSchId(), "", dc.getNew_dfsj(), null, "批量调整");
3258 3258
3259 if (tempMap.get("status").equals(ResponseCode.SUCCESS)) { 3259 if (tempMap.get("status").equals(ResponseCode.SUCCESS)) {
3260 list.addAll((Collection<? extends ScheduleRealInfo>) tempMap.get("ts")); 3260 list.addAll((Collection<? extends ScheduleRealInfo>) tempMap.get("ts"));
src/main/java/com/bsth/service/report/impl/ReportServiceImpl.java
@@ -793,260 +793,74 @@ public class ReportServiceImpl implements ReportService{ @@ -793,260 +793,74 @@ public class ReportServiceImpl implements ReportService{
793 return m; 793 return m;
794 } 794 }
795 }); 795 });
796 -  
797 - //班次  
798 - int sj_0 = 6*60+31,sj_1 = 8*60+30,sj_2 = 16*60+1,sj_3 = 18*60;  
799 -  
800 - //顺序 出场--早高峰---中午---晚高峰---进场  
801 - //实驶时间时间(分),0为上行,1为下行  
802 - int ccsj0=0,ccsj1=0,zgf0=0,zgf1=0,zw0=0,zw1=0,wgf0=0,wgf1=0,jcsj0=0,jcsj1=0;  
803 -  
804 - //记录上一个发车时间(方便记录间距)  
805 - int cfc0=0,cfc1=0,zfc0=0,zfc1=0,zwfc0=0,zwfc1=0,wfc0=0,wfc1=0,jcfc0Z=0,jcfc1Z=0,jcfc0W=0,jcfc1W=0;  
806 - //车距 (发车时间的间距) i--MIN a--MAX  
807 - int iC=999,aC=-1,iZg=999,aZg=-1,iZw=999,aZw=-1,iWg=999,aWg=-1,iJcZ=999,aJcZ=-1,iJcW=999,aJcW=-1;  
808 - int iC1=999,aC1=-1,iZg1=999,aZg1=-1,iZw1=999,aZw1=-1,iWg1=999,aWg1=-1,iJc1Z=999,aJc1Z=-1,iJc1W=999,aJc1W=-1; 796 +
  797 + List<Map<String, Object>> newList=new ArrayList<Map<String,Object>>();
  798 + Map<String, List<Map<String, Object>>> keyMap = new HashMap<String, List<Map<String, Object>>>();
  799 + Map<String, Map<String, Object>> maps = new HashMap<String, Map<String, Object>>();
  800 + keyMap.put("(首)——6:30", new ArrayList<Map<String, Object>>());
  801 + keyMap.put("6:31——8:30", new ArrayList<Map<String, Object>>());
  802 + keyMap.put("8:31——16:00", new ArrayList<Map<String, Object>>());
  803 + keyMap.put("16:01——18:00", new ArrayList<Map<String, Object>>());
  804 + keyMap.put("18:01——(末)", new ArrayList<Map<String, Object>>());
  805 + for(int i = 0; i < list.size(); i++){
  806 + Map<String, Object> ttMap = list.get(i);
  807 + String fcsj = ttMap.get("fcsj").toString();
  808 + String[] split = fcsj.split(":");
  809 + int fcsjT = Integer.valueOf(split[0])*60+Integer.valueOf(split[1]);
  810 + if(fcsjT >= minSj && fcsjT <= 6*60+30){
  811 + keyMap.get("(首)——6:30").add(ttMap);
  812 + } else if(fcsjT > 6*60+30 && fcsjT <= 8*60+30){
  813 + keyMap.get("6:31——8:30").add(ttMap);
  814 + } else if(fcsjT > 8*60+30 && fcsjT <= 16*60){
  815 + keyMap.get("8:31——16:00").add(ttMap);
  816 + } else if(fcsjT > 16*60 && fcsjT <= 18*60){
  817 + keyMap.get("16:01——18:00").add(ttMap);
  818 + } else {
  819 + keyMap.get("18:01——(末)").add(ttMap);
  820 + }
  821 + }
809 822
810 - for(int i=0;i<list.size();i++){  
811 - Map<String, Object> ttMap=list.get(i);  
812 - String xlDir=ttMap.get("dir").toString();  
813 - int bcsj=Integer.parseInt(ttMap.get("bcsj").toString());  
814 - String fcsj=ttMap.get("fcsj").toString();  
815 - String[] fcsjs=fcsj.split(":");  
816 - int fcsjNum=Integer.parseInt(fcsjs[0])*60+Integer.parseInt(fcsjs[1]);  
817 -  
818 - if(xlDir.equals("0")){  
819 - if(fcsjNum>=minSj && fcsjNum<sj_0){  
820 - ccsj0 +=bcsj;  
821 - if(aC<0){  
822 - cfc0 =fcsjNum;  
823 - aC=0;  
824 - }else{  
825 - if(fcsjNum-cfc0<iC){  
826 - iC=fcsjNum-cfc0;  
827 - }  
828 - if(fcsjNum-cfc0>aC){  
829 - aC=fcsjNum-cfc0;  
830 - }  
831 -  
832 - cfc0=fcsjNum;  
833 - }  
834 -  
835 - }else if(fcsjNum>=sj_0 && fcsjNum<=sj_1){  
836 - zgf0 +=bcsj;  
837 - if(aZg<0){  
838 - zfc0 =fcsjNum;  
839 - aZg=0;  
840 - }else{  
841 - if(fcsjNum-zfc0<iZg){  
842 - iZg=fcsjNum-zfc0;  
843 - }  
844 -  
845 - if(fcsjNum-zfc0>aZg){  
846 - aZg=fcsjNum-zfc0;  
847 - }  
848 -  
849 - zfc0=fcsjNum;  
850 - }  
851 - }else if(fcsjNum>sj_1 && fcsjNum<sj_2){  
852 - zw0 +=bcsj;  
853 - if(aZw<0){  
854 - zwfc0 =fcsjNum;  
855 - aZw=0;  
856 - }else{  
857 - if(fcsjNum-zwfc0<iZw){  
858 - iZw=fcsjNum-zwfc0;  
859 - }  
860 - if(fcsjNum-zwfc0>aZw){  
861 - aZw=fcsjNum-zwfc0;  
862 - }  
863 - zwfc0=fcsjNum;  
864 - }  
865 -  
866 - }else if(fcsjNum>=sj_2 && fcsjNum<=sj_3){  
867 - wgf0 +=bcsj;  
868 - if(aWg<0){  
869 - wfc0=fcsjNum;  
870 - aWg=0;  
871 - }else{  
872 - if(fcsjNum-wfc0<iWg){  
873 - iWg=fcsjNum-wfc0;  
874 - }  
875 - if(fcsjNum-wfc0>aWg){  
876 - aWg=fcsjNum-wfc0;  
877 - }  
878 - wfc0=fcsjNum;  
879 - }  
880 - }else if(fcsjNum>sj_3){  
881 - jcsj0 +=bcsj;  
882 - if(aJcW<0){  
883 - jcfc0W=fcsjNum;  
884 - aJcW=0;  
885 - }else{  
886 - if(fcsjNum-jcfc0W<iJcW){  
887 - iJcW=fcsjNum-jcfc0W;  
888 - }  
889 - if(fcsjNum-jcfc0W>aJcW){  
890 - aJcW=fcsjNum-jcfc0W;  
891 - }  
892 - jcfc0W=fcsjNum;  
893 - }  
894 - }else if(fcsjNum<minSj){  
895 - jcsj0 +=bcsj;  
896 - if(aJcZ<0){  
897 - jcfc0Z=fcsjNum;  
898 - aJcZ=0;  
899 - }else{  
900 - if(fcsjNum-jcfc0Z<iJcZ){  
901 - iJcZ=fcsjNum-jcfc0Z;  
902 - }  
903 - if(fcsjNum-jcfc0Z>aJcZ){  
904 - aJcZ=fcsjNum-jcfc0Z;  
905 - }  
906 - jcfc0Z=fcsjNum;  
907 - } 823 + for(String key : keyMap.keySet()){
  824 + Map<String, Object> tempMap = new HashMap<String, Object>();
  825 + List<Map<String, Object>> list2 = keyMap.get(key);
  826 + List<Integer> cjs = new ArrayList<Integer>();
  827 + int sxsj = 0, xxsj = 0, zcj = 0;
  828 + int temp = 24*60+1;
  829 + for(Map<String, Object> m : list2){
  830 + String[] split = m.get("fcsj").toString().split(":");
  831 + int fcsj = Integer.valueOf(split[0])*60 + Integer.valueOf(split[1]);
  832 + int xlDir = Integer.valueOf(m.get("dir").toString());
  833 + int bcsj = Integer.valueOf(m.get("bcsj").toString());
  834 + if(xlDir == 0){
  835 + sxsj += bcsj;
  836 + } else {
  837 + xxsj += bcsj;
908 } 838 }
909 -  
910 -  
911 - }else{  
912 - if(fcsjNum>=minSj && fcsjNum<sj_0){  
913 - ccsj1 +=bcsj;  
914 - if(aC1<0){  
915 - cfc1=fcsjNum;  
916 - aC1=0;  
917 - }else{  
918 - if(fcsjNum-cfc1<iC1){  
919 - iC1=fcsjNum-cfc1;  
920 - }  
921 - if(fcsjNum-cfc1>aC1){  
922 - aC1=fcsjNum-cfc1;  
923 - }  
924 - cfc1=fcsjNum;  
925 - }  
926 - }else if(fcsjNum>=sj_0 && fcsjNum<=sj_1){  
927 - zgf1 +=bcsj;  
928 - if(aZg1<0){  
929 - zfc1=fcsjNum;  
930 - aZg1=0;  
931 - }else{  
932 - if(fcsjNum-zfc1<iZg1){  
933 - iZg1=fcsjNum-zfc1;  
934 - }  
935 - if(fcsjNum-zfc1>aZg1){  
936 - aZg1=fcsjNum-zfc1;  
937 - }  
938 -  
939 - zfc1=fcsjNum;  
940 - }  
941 - }else if(fcsjNum>sj_1 && fcsjNum<sj_2){  
942 - zw1 +=bcsj;  
943 - if(aZw1<0){  
944 - zwfc1=fcsjNum;  
945 - aZw1=0;  
946 - }else{  
947 - if(fcsjNum-zwfc1<iZw1){  
948 - iZw1=fcsjNum-zwfc1;  
949 - }  
950 - if(fcsjNum-zwfc1>aZw1){  
951 - aZw1=fcsjNum-zwfc1;  
952 - }  
953 - zwfc1=fcsjNum;  
954 - }  
955 - }else if(fcsjNum>=sj_2 && fcsjNum<=sj_3){  
956 - wgf1 +=bcsj;  
957 - if(aWg1<0){  
958 - wfc1=fcsjNum;  
959 - aWg1=0;  
960 - }else{  
961 - if(fcsjNum-wfc1<iWg1){  
962 - iWg1=fcsjNum-wfc1;  
963 - }  
964 - if(fcsjNum-wfc1<aWg1){  
965 - aWg1=fcsjNum-wfc1;  
966 - }  
967 - wfc1=fcsjNum;  
968 - }  
969 - }else if(fcsjNum>sj_3){  
970 - jcsj1 +=bcsj;  
971 - if(aJc1W<0){  
972 - jcfc1W=fcsjNum;  
973 - aJc1W=0;  
974 - }else{  
975 - if(fcsjNum-jcfc1W<iJc1W){  
976 - aJc1W=fcsjNum-jcfc1W;  
977 - }  
978 - if(fcsjNum-jcfc1W>aJc1W){  
979 - aJc1W=fcsjNum-jcfc1W;  
980 - }  
981 -  
982 - jcfc1W=fcsjNum;  
983 - }  
984 - }else if(fcsjNum<minSj){  
985 - jcsj1 +=bcsj;  
986 - if(aJc1Z<0){  
987 - jcfc1Z=fcsjNum;  
988 - aJc1Z=0;  
989 - }else{  
990 - if(fcsjNum-jcfc1Z<iJc1Z){  
991 - aJc1Z=fcsjNum-jcfc1Z;  
992 - }  
993 - if(fcsjNum-jcfc1Z>aJc1Z){  
994 - aJc1Z=fcsjNum-jcfc1Z;  
995 - }  
996 -  
997 - jcfc1Z=fcsjNum;  
998 - } 839 + if(temp >= fcsj){
  840 + temp = fcsj;
  841 + } else {
  842 + cjs.add(fcsj - temp);
  843 + temp = fcsj;
999 } 844 }
1000 } 845 }
1001 - 846 + Collections.sort(cjs);
  847 + for(int i : cjs){
  848 + zcj += i;
  849 + }
  850 + tempMap.put("sjd", key);
  851 + tempMap.put("sxsj", sxsj);
  852 + tempMap.put("xxsj", xxsj);
  853 + tempMap.put("fqsj", sxsj + xxsj);
  854 + tempMap.put("cjqj", cjs.size()>0?cjs.get(0)+"——"+cjs.get(cjs.size()-1):"——");
  855 + tempMap.put("pjcj", cjs.size()>0?zcj/(cjs.size()-1):"/");
  856 + maps.put(key, tempMap);
1002 } 857 }
  858 + newList.add(maps.get("(首)——6:30"));
  859 + newList.add(maps.get("6:31——8:30"));
  860 + newList.add(maps.get("8:31——16:00"));
  861 + newList.add(maps.get("16:01——18:00"));
  862 + newList.add(maps.get("18:01——(末)"));
1003 863
1004 -  
1005 - List<Map<String, Object>> newList=new ArrayList<Map<String,Object>>();  
1006 - Map<String, Object> newmap1=new HashMap<String,Object>();  
1007 - Map<String, Object> newmap2=new HashMap<String,Object>();  
1008 - Map<String, Object> newmap3=new HashMap<String,Object>();  
1009 - Map<String, Object> newmap4=new HashMap<String,Object>();  
1010 - Map<String, Object> newmap5=new HashMap<String,Object>();  
1011 - newmap1.put("sjd", "(首)——6:30");  
1012 - newmap1.put("sxsj", ccsj0);  
1013 - newmap1.put("xxsj", ccsj1);  
1014 - newmap1.put("fqsj", ccsj0+ccsj1);  
1015 - newmap1.put("cj", (iC-iC1>0?iC1:iC)+"——"+(aC-aC1>0?aC:aC1));  
1016 -  
1017 - newmap2.put("sjd", "6:31——8:30");  
1018 - newmap2.put("sxsj", zgf0);  
1019 - newmap2.put("xxsj", zgf1);  
1020 - newmap2.put("fqsj", zgf1+zgf0);  
1021 - newmap2.put("cj", (iZg-iZg1>0?iZg1:iZg)+"——"+(aZg-aZg1>0?aZg:aZg1));  
1022 -  
1023 - newmap3.put("sjd", "8:30——16:00");  
1024 - newmap3.put("sxsj", zw0);  
1025 - newmap3.put("xxsj", zw1);  
1026 - newmap3.put("fqsj", zw0+zw1);  
1027 - newmap3.put("cj", (iZw-iZw1>0?iZw1:iZw)+"——"+(aZw-aZw1>0?aZw:aZw1));  
1028 -  
1029 - newmap4.put("sjd", "16:01——18:00");  
1030 - newmap4.put("sxsj", wgf0);  
1031 - newmap4.put("xxsj", wgf1);  
1032 - newmap4.put("fqsj", wgf0+wgf1);  
1033 - newmap4.put("cj", (iWg-iWg1>0?iWg1:iWg)+"——"+(aWg-aWg1>0?aWg:aWg1));  
1034 -  
1035 - newmap5.put("sjd", "18:00——(末)");  
1036 - newmap5.put("sxsj", jcsj0);  
1037 - newmap5.put("xxsj", jcsj1);  
1038 - newmap5.put("fqsj", jcsj0+jcsj1);  
1039 - int min0=iJcZ-iJcW>0?iJcW:iJcZ;  
1040 - int max0=aJcZ-aJcW>0?aJcZ:aJcW;  
1041 - int min1=iJc1Z-iJc1W>0?iJc1W:iJc1Z;  
1042 - int max1=aJc1Z-aJc1W>0?aJc1Z:aJc1W;  
1043 - newmap5.put("cj", (min0-min1>0?min1:min0)+"——"+(max0-max1>0?max0:max1));  
1044 -  
1045 - newList.add(newmap1);  
1046 - newList.add(newmap2);  
1047 - newList.add(newmap3);  
1048 - newList.add(newmap4);  
1049 - newList.add(newmap5);  
1050 return newList; 864 return newList;
1051 } 865 }
1052 @Override 866 @Override
src/main/java/com/bsth/service/schedule/datatools/CarConfigInfoDataToolsImpl.java 0 → 100644
  1 +package com.bsth.service.schedule.datatools;
  2 +
  3 +import com.bsth.service.schedule.exception.ScheduleException;
  4 +import com.bsth.service.schedule.utils.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 0 → 100644
  1 +package com.bsth.service.schedule.datatools;
  2 +
  3 +import com.bsth.service.schedule.exception.ScheduleException;
  4 +import com.bsth.service.schedule.utils.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 0 → 100644
  1 +package com.bsth.service.schedule.datatools;
  2 +
  3 +import com.bsth.service.schedule.exception.ScheduleException;
  4 +import com.bsth.service.schedule.utils.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 0 → 100644
  1 +package com.bsth.service.schedule.datatools;
  2 +
  3 +import com.bsth.service.schedule.exception.ScheduleException;
  4 +import com.bsth.service.schedule.utils.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 0 → 100644
  1 +package com.bsth.service.schedule.datatools;
  2 +
  3 +import com.bsth.service.schedule.exception.ScheduleException;
  4 +import com.bsth.service.schedule.utils.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 0 → 100644
  1 +package com.bsth.service.schedule.datatools;
  2 +
  3 +import com.bsth.service.schedule.exception.ScheduleException;
  4 +import com.bsth.service.schedule.utils.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/TTInfoDetailDataToolsImpl.java 0 → 100644
  1 +package com.bsth.service.schedule.datatools;
  2 +
  3 +import com.bsth.service.schedule.exception.ScheduleException;
  4 +import com.bsth.service.schedule.utils.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.apache.commons.lang3.StringUtils;
  13 +import org.joda.time.DateTime;
  14 +import org.slf4j.Logger;
  15 +import org.slf4j.LoggerFactory;
  16 +import org.springframework.beans.factory.annotation.Autowired;
  17 +import org.springframework.beans.factory.annotation.Qualifier;
  18 +import org.springframework.boot.context.properties.EnableConfigurationProperties;
  19 +import org.springframework.stereotype.Service;
  20 +
  21 +import java.io.File;
  22 +import java.io.PrintWriter;
  23 +import java.io.StringWriter;
  24 +import java.util.ArrayList;
  25 +import java.util.HashMap;
  26 +import java.util.List;
  27 +import java.util.Map;
  28 +
  29 +/**
  30 + * Created by xu on 17/5/16.
  31 + */
  32 +@EnableConfigurationProperties(DataToolsProperties.class)
  33 +@Service(value = "ttInfoDetail_dataTool")
  34 +public class TTInfoDetailDataToolsImpl implements DataToolsService, TTInfoDetailForEdit {
  35 + /** 日志记录器 */
  36 + private final static Logger LOGGER = LoggerFactory.getLogger(TTInfoDetailDataToolsImpl.class);
  37 +
  38 + @Autowired
  39 + @Qualifier(value = "dataToolsServiceImpl")
  40 + private DataToolsService dataToolsService;
  41 +
  42 + @Autowired
  43 + private DataToolsProperties dataToolsProperties;
  44 +
  45 + @Override
  46 + public File uploadFile(String filename, byte[] filedata) throws ScheduleException {
  47 + try {
  48 + // 对上传的excel文件做处理,将第一个sheet名字设定为工作表1
  49 + File file = dataToolsService.uploadFile(filename, filedata);
  50 + Workbook workbook = Workbook.getWorkbook(file);
  51 + Sheet sheet = workbook.getSheet(0);
  52 +
  53 + File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls");
  54 + WritableWorkbook writableWorkbook = Workbook.createWorkbook(fileCal);
  55 + WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0);
  56 + for (int i = 0; i < sheet.getRows(); i++) {
  57 + Cell[] cells = sheet.getRow(i);
  58 + for (int j = 0; j < cells.length; j++) {
  59 + writableSheet.addCell(new Label(j, i, cells[j].getContents()));
  60 + }
  61 + }
  62 + writableWorkbook.write();
  63 + writableWorkbook.close();
  64 +
  65 + return fileCal;
  66 +
  67 + } catch (Exception exp) {
  68 + throw new ScheduleException(exp);
  69 + }
  70 + }
  71 +
  72 + @Override
  73 + public void importData(File file, Map<String, Object> params) throws ScheduleException {
  74 + try {
  75 + LOGGER.info("//---------------- 导入时刻表明细 start... ----------------//");
  76 +
  77 + String filename = file.getAbsolutePath(); // xls文件名
  78 + String sheetname = String.valueOf(params.get("sheetname")); // sheet名字
  79 + Long ttid = Long.valueOf(String.valueOf(params.get("ttid"))); // 时刻表id
  80 + Long xlid = Long.valueOf(String.valueOf(params.get("xlid"))); // 线路id
  81 + Integer lineid = Integer.valueOf(String.valueOf(params.get("lineinfo"))); // 线路标准id
  82 + String xlname = String.valueOf(params.get("xlname")); // 线路名字
  83 + String ttname = String.valueOf(params.get("ttname")); // 时刻表名字
  84 +
  85 + LOGGER.info("参数1, xls文件名={},sheet名字={}", filename, sheetname);
  86 + LOGGER.info("参数2, 线路id={},线路名字={}", xlid, xlname);
  87 + LOGGER.info("参数3, 时刻表id={},时刻表名字={}", ttid, ttname);
  88 +
  89 + LOGGER.info("转换xls文件格式成文本格式...");
  90 + // 1、修改已经上传的excel文件,在每个起点站后标示数字,表示第几个班次
  91 + // 2、由于格式问题,需要把内容都转换成字符串
  92 + List<String> colList = new ArrayList<>();
  93 + Workbook workbook = Workbook.getWorkbook(new File(filename));
  94 + Sheet sheet = workbook.getSheet(sheetname);
  95 + Cell[] cells = sheet.getRow(0);
  96 + for (int i = 0; i < cells.length; i++) {
  97 + if (i == 0) {
  98 + colList.add(cells[i].getContents().trim());
  99 + } else {
  100 + colList.add(cells[i].getContents() + i);
  101 + }
  102 + }
  103 +
  104 + File fileCal = new File(filename + "_stringType.xls");
  105 + WritableWorkbook writableWorkbook = Workbook.createWorkbook(fileCal, workbook);
  106 + WritableSheet sheet1 = writableWorkbook.getSheet(sheetname);
  107 + for (int i = 0; i < sheet1.getColumns(); i++) { // 第一行数据
  108 + sheet1.addCell(new Label(i, 0, colList.get(i)));
  109 + }
  110 + for (int i = 1; i < sheet1.getRows(); i++) { // 第二行开始
  111 + Cell[] cells1 = sheet.getRow(i);
  112 + for (int j = 0; j < cells1.length; j++) {
  113 + sheet1.addCell(new Label(j, i, cells1[j].getContents()));
  114 + }
  115 + }
  116 + writableWorkbook.write();
  117 + writableWorkbook.close();
  118 +
  119 + // 2、删除原有数据
  120 + // 操作在ktr内部执行
  121 +
  122 + // 3、导入时刻表
  123 +
  124 + // 计算表头参数
  125 + Workbook book = Workbook.getWorkbook(fileCal);
  126 + Sheet sheet_exp = book.getSheet(sheetname);
  127 + List<String> columnames = new ArrayList<>();
  128 + for (int i = 0; i < sheet_exp.getColumns(); i++) { // 获取第一行,数据,作为列名
  129 + columnames.add(sheet_exp.getCell(i, 0).getContents());
  130 + }
  131 + LOGGER.info("表头={}", StringUtils.join(columnames.toArray(), ","));
  132 +
  133 + // 创建ktr转换所需参数
  134 + Map<String, Object> ktrParms = new HashMap<>();
  135 + File ktrFile = new File(this.getClass().getResource(
  136 + dataToolsProperties.getTtinfodetailMetadatainputktr()).toURI());
  137 +// File ktrFile2 = new File(this.getClass().getResource(
  138 +// dataToolsProperties.getTtinfodetailDatainputktr()).toURI());
  139 + File ktrFile2 = new File(this.getClass().getResource(
  140 + dataToolsProperties.getTtinfodetailDatainputktr2()).toURI());
  141 +
  142 + // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径
  143 + ktrParms.put("transpath", ktrFile.getAbsolutePath());
  144 + ktrParms.put("filepath", fileCal.getAbsolutePath());
  145 + ktrParms.put("erroroutputdir", dataToolsProperties.getTransErrordir());
  146 +
  147 + // 附加参数
  148 + ktrParms.put("injectktrfile", ktrFile2.getAbsolutePath()); // 注入元数据的ktr文件
  149 + ktrParms.put("sheetname", sheetname); // sheet工作区的名字
  150 + ktrParms.put("lineinfoid", lineid); // 线路标准id
  151 + ktrParms.put("xlname", xlname); // 线路名称
  152 + ktrParms.put("ttinfoname", ttname); // 时刻表名称
  153 + ktrParms.put("ttid", ttid.intValue()); // 时刻表id
  154 + ktrParms.put("excelfieldnames", StringUtils.join(columnames.toArray(), ",")); // 时刻表excel输入字段名,以逗号连接
  155 + columnames.remove(0);
  156 + ktrParms.put("normalizefieldnames", StringUtils.join(columnames.toArray(), ",")); // 数据范式化字段名,以逗号连接
  157 +
  158 + dataToolsService.importData(fileCal, ktrParms);
  159 +
  160 + LOGGER.info("//---------------- 导入时刻表明细 success... ----------------//");
  161 + } catch (Exception exp) {
  162 + LOGGER.info("//---------------- 导入时刻表明细 failed... ----------------//");
  163 +
  164 + StringWriter sw = new StringWriter();
  165 + exp.printStackTrace(new PrintWriter(sw));
  166 + LOGGER.info(sw.toString());
  167 +
  168 + throw new ScheduleException(exp.getMessage());
  169 + }
  170 + }
  171 +
  172 + @Override
  173 + public File exportData(Map<String, Object> params) throws ScheduleException {
  174 + try {
  175 + LOGGER.info("//---------------- 导出时刻表明细 start... ----------------//");
  176 +
  177 + // 创建ktr转换所需参数
  178 + Map<String, Object> ktrParms = new HashMap<>();
  179 + File ktrFile = new File(this.getClass().getResource(
  180 + dataToolsProperties.getTtinfodetailMetaoutput()).toURI());
  181 + File ktrFile2 = new File(this.getClass().getResource(
  182 + dataToolsProperties.getTtinfodetailOutput()).toURI());
  183 +
  184 + // 通用参数,转换文件路径,excel输出文件名
  185 + ktrParms.put("transpath", ktrFile.getAbsolutePath());
  186 + ktrParms.put("filename", String.format("时刻表_(id=%s)_download-", String.valueOf(params.get("ttinfoid"))));
  187 +
  188 + // 附加参数
  189 + ktrParms.put("injectktrfile", ktrFile2.getAbsolutePath()); // 注入元数据的ktr文件
  190 + ktrParms.put("ttinfoid", String.valueOf(params.get("ttinfoid")));
  191 +
  192 + File file = dataToolsService.exportData(ktrParms);
  193 +
  194 + LOGGER.info("//---------------- 导出时刻表明细 success... ----------------//");
  195 +
  196 + return file;
  197 + } catch (Exception exp) {
  198 + LOGGER.info("//---------------- 导出时刻表明细 failed... ----------------//");
  199 +
  200 + StringWriter sw = new StringWriter();
  201 + exp.printStackTrace(new PrintWriter(sw));
  202 + LOGGER.info(sw.toString());
  203 +
  204 + throw new ScheduleException(exp.getMessage());
  205 + }
  206 + }
  207 +
  208 + @Override
  209 + public File exportDataForEdit(Integer xlid, Long ttid) throws ScheduleException {
  210 + try {
  211 + // 创建ktr转换所需参数
  212 + Map<String, Object> ktrParms = new HashMap<>();
  213 + File ktrFile = new File(this.getClass().getResource(
  214 + dataToolsProperties.getTtinfodetailForeditktr()).toURI());
  215 +
  216 + // 通用参数,转换文件路径,excel输出文件名,错误输出文件路径
  217 + ktrParms.put("transpath", ktrFile.getAbsolutePath());
  218 + ktrParms.put("filename", "todo");
  219 +
  220 + // 附加参数
  221 + String outputFilePath = String.format("ttinfodetail_(id=%s)_foredit-%s",
  222 + String.valueOf(ttid), new DateTime().toString("yyyyMMddHHmmss"));
  223 +
  224 + ktrParms.put("tempfilepath", dataToolsProperties.getTransTempdir() + File.separator + outputFilePath); // 数据输出文件路径
  225 + ktrParms.put("xlid", String.valueOf(xlid));
  226 + ktrParms.put("ttid", String.valueOf(ttid));
  227 +
  228 + return dataToolsService.exportData(ktrParms);
  229 + } catch (Exception exp) {
  230 + throw new ScheduleException(exp);
  231 + }
  232 + }
  233 +}
src/main/java/com/bsth/service/schedule/datatools/TTInfoDetailForEdit.java 0 → 100644
  1 +package com.bsth.service.schedule.datatools;
  2 +
  3 +import com.bsth.service.schedule.exception.ScheduleException;
  4 +
  5 +import java.io.File;
  6 +
  7 +/**
  8 + * Created by xu on 17/5/16.
  9 + */
  10 +public interface TTInfoDetailForEdit {
  11 + File exportDataForEdit(Integer xlid, Long ttid) throws ScheduleException;
  12 +}
src/main/java/com/bsth/service/schedule/impl/BServiceImpl.java
@@ -5,12 +5,6 @@ import com.bsth.repository.BaseRepository; @@ -5,12 +5,6 @@ import com.bsth.repository.BaseRepository;
5 import com.bsth.service.schedule.BService; 5 import com.bsth.service.schedule.BService;
6 import com.bsth.service.schedule.exception.ScheduleException; 6 import com.bsth.service.schedule.exception.ScheduleException;
7 import com.bsth.service.schedule.utils.DataToolsService; 7 import com.bsth.service.schedule.utils.DataToolsService;
8 -import jxl.Cell;  
9 -import jxl.Sheet;  
10 -import jxl.Workbook;  
11 -import jxl.write.Label;  
12 -import jxl.write.WritableSheet;  
13 -import jxl.write.WritableWorkbook;  
14 import org.slf4j.Logger; 8 import org.slf4j.Logger;
15 import org.slf4j.LoggerFactory; 9 import org.slf4j.LoggerFactory;
16 import org.springframework.beans.factory.annotation.Autowired; 10 import org.springframework.beans.factory.annotation.Autowired;
@@ -124,39 +118,16 @@ public class BServiceImpl&lt;T, ID extends Serializable&gt; implements BService&lt;T, ID&gt; @@ -124,39 +118,16 @@ public class BServiceImpl&lt;T, ID extends Serializable&gt; implements BService&lt;T, ID&gt;
124 118
125 @Override 119 @Override
126 public File uploadFile(String filename, byte[] filedata) throws ScheduleException { 120 public File uploadFile(String filename, byte[] filedata) throws ScheduleException {
127 - try {  
128 - // 对上传的excel文件做处理,将第一个sheet名字设定为工作表1  
129 - File file = dataToolsService.uploadFile(filename, filedata);  
130 - Workbook workbook = Workbook.getWorkbook(file);  
131 - Sheet sheet = workbook.getSheet(0);  
132 -  
133 - File fileCal = new File(file.getAbsolutePath() + "_sheetChange.xls");  
134 - WritableWorkbook writableWorkbook = Workbook.createWorkbook(fileCal);  
135 - WritableSheet writableSheet = writableWorkbook.createSheet("工作表1", 0);  
136 - for (int i = 0; i < sheet.getRows(); i++) {  
137 - Cell[] cells = sheet.getRow(i);  
138 - for (int j = 0; j < cells.length; j++) {  
139 - writableSheet.addCell(new Label(j, i, cells[j].getContents()));  
140 - }  
141 - }  
142 - writableWorkbook.write();  
143 - writableWorkbook.close();  
144 -  
145 - return fileCal;  
146 -  
147 - } catch (Exception exp) {  
148 - throw new ScheduleException(exp);  
149 - }  
150 - 121 + throw new ScheduleException("子类自己复写此方法!");
151 } 122 }
152 123
153 @Override 124 @Override
154 public void importData(File file, Map<String, Object> params) throws ScheduleException { 125 public void importData(File file, Map<String, Object> params) throws ScheduleException {
155 - dataToolsService.importData(file, params); 126 + throw new ScheduleException("子类自己复写此方法!");
156 } 127 }
157 128
158 @Override 129 @Override
159 public File exportData(Map<String, Object> params) throws ScheduleException { 130 public File exportData(Map<String, Object> params) throws ScheduleException {
160 - return dataToolsService.exportData(params); 131 + throw new ScheduleException("子类自己复写此方法!");
161 } 132 }
162 } 133 }
src/main/java/com/bsth/service/schedule/impl/CarConfigInfoServiceImpl.java
@@ -3,20 +3,16 @@ package com.bsth.service.schedule.impl; @@ -3,20 +3,16 @@ package com.bsth.service.schedule.impl;
3 import com.bsth.entity.schedule.CarConfigInfo; 3 import com.bsth.entity.schedule.CarConfigInfo;
4 import com.bsth.entity.schedule.rule.ScheduleRule1Flat; 4 import com.bsth.entity.schedule.rule.ScheduleRule1Flat;
5 import com.bsth.service.schedule.CarConfigInfoService; 5 import com.bsth.service.schedule.CarConfigInfoService;
6 -import com.bsth.service.schedule.exception.ScheduleException;  
7 import com.bsth.service.schedule.ScheduleRule1FlatService; 6 import com.bsth.service.schedule.ScheduleRule1FlatService;
8 -import com.bsth.service.schedule.utils.DataToolsProperties;  
9 -import org.slf4j.Logger;  
10 -import org.slf4j.LoggerFactory; 7 +import com.bsth.service.schedule.exception.ScheduleException;
  8 +import com.bsth.service.schedule.utils.DataToolsService;
11 import org.springframework.beans.factory.annotation.Autowired; 9 import org.springframework.beans.factory.annotation.Autowired;
12 -import org.springframework.boot.context.properties.EnableConfigurationProperties; 10 +import org.springframework.beans.factory.annotation.Qualifier;
13 import org.springframework.stereotype.Service; 11 import org.springframework.stereotype.Service;
14 import org.springframework.transaction.annotation.Transactional; 12 import org.springframework.transaction.annotation.Transactional;
15 import org.springframework.util.CollectionUtils; 13 import org.springframework.util.CollectionUtils;
16 14
17 import java.io.File; 15 import java.io.File;
18 -import java.io.PrintWriter;  
19 -import java.io.StringWriter;  
20 import java.util.HashMap; 16 import java.util.HashMap;
21 import java.util.List; 17 import java.util.List;
22 import java.util.Map; 18 import java.util.Map;
@@ -24,78 +20,28 @@ import java.util.Map; @@ -24,78 +20,28 @@ import java.util.Map;
24 /** 20 /**
25 * Created by xu on 16/5/9. 21 * Created by xu on 16/5/9.
26 */ 22 */
27 -@EnableConfigurationProperties(DataToolsProperties.class)  
28 @Service 23 @Service
29 public class CarConfigInfoServiceImpl extends BServiceImpl<CarConfigInfo, Long> implements CarConfigInfoService { 24 public class CarConfigInfoServiceImpl extends BServiceImpl<CarConfigInfo, Long> implements CarConfigInfoService {
30 - /** 日志记录器 */  
31 - private static Logger LOGGER = LoggerFactory.getLogger(CarConfigInfoServiceImpl.class);  
32 -  
33 @Autowired 25 @Autowired
34 - private DataToolsProperties dataToolsProperties; 26 + private ScheduleRule1FlatService scheduleRule1FlatService;
35 27
36 @Autowired 28 @Autowired
37 - private ScheduleRule1FlatService scheduleRule1FlatService; 29 + @Qualifier(value = "carConfig_dataTool")
  30 + private DataToolsService dataToolsService;
38 31
39 @Override 32 @Override
40 - public void importData(File file, Map<String, Object> params) throws ScheduleException {  
41 - try {  
42 - LOGGER.info("//---------------- 导入车辆配置信息 start... ----------------//");  
43 - // 创建ktr转换所需参数  
44 - Map<String, Object> ktrParms = new HashMap<>();  
45 - File ktrFile = new File(this.getClass().getResource(  
46 - dataToolsProperties.getCarsconfigDatainputktr()).toURI());  
47 -  
48 - // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径  
49 - ktrParms.put("transpath", ktrFile.getAbsolutePath());  
50 - ktrParms.put("filepath", file.getAbsolutePath());  
51 - ktrParms.put("erroroutputdir", dataToolsProperties.getTransErrordir());  
52 -  
53 - ktrParms.putAll(params);  
54 -  
55 - super.importData(file, ktrParms);  
56 -  
57 - LOGGER.info("//---------------- 导入车辆配置信息 success... ----------------//");  
58 - } catch (Exception exp) {  
59 - LOGGER.info("//---------------- 导入车辆配置信息 failed... ----------------//");  
60 -  
61 - StringWriter sw = new StringWriter();  
62 - exp.printStackTrace(new PrintWriter(sw));  
63 - LOGGER.info(sw.toString()); 33 + public File uploadFile(String filename, byte[] filedata) throws ScheduleException {
  34 + return dataToolsService.uploadFile(filename, filedata);
  35 + }
64 36
65 - throw new ScheduleException(exp.getMessage());  
66 - } 37 + @Override
  38 + public void importData(File file, Map<String, Object> params) throws ScheduleException {
  39 + dataToolsService.importData(file, params);
67 } 40 }
68 41
69 @Override 42 @Override
70 public File exportData(Map<String, Object> params) throws ScheduleException { 43 public File exportData(Map<String, Object> params) throws ScheduleException {
71 - try {  
72 - LOGGER.info("//---------------- 导出车辆配置信息 start... ----------------//");  
73 - // 创建ktr转换所需参数  
74 - Map<String, Object> ktrParms = new HashMap<>();  
75 - File ktrFile = new File(this.getClass().getResource(  
76 - dataToolsProperties.getCarsconfigDataoutputktr()).toURI());  
77 -  
78 - // 通用参数,转换文件路径,excel输出文件名  
79 - ktrParms.put("transpath", ktrFile.getAbsolutePath());  
80 - ktrParms.put("filename", "车辆配置信息_download-");  
81 -  
82 - ktrParms.putAll(params);  
83 -  
84 - File file = super.exportData(ktrParms);  
85 -  
86 - LOGGER.info("//---------------- 导出车辆配置信息 success... ----------------//");  
87 -  
88 - return file;  
89 -  
90 - } catch (Exception exp) {  
91 - LOGGER.info("//---------------- 导出车辆配置信息 failed... ----------------//");  
92 -  
93 - StringWriter sw = new StringWriter();  
94 - exp.printStackTrace(new PrintWriter(sw));  
95 - LOGGER.info(sw.toString());  
96 -  
97 - throw new ScheduleException(exp.getMessage());  
98 - } 44 + return dataToolsService.exportData(params);
99 } 45 }
100 46
101 @Transactional 47 @Transactional
src/main/java/com/bsth/service/schedule/impl/CarsServiceImpl.java
@@ -3,89 +3,39 @@ package com.bsth.service.schedule.impl; @@ -3,89 +3,39 @@ package com.bsth.service.schedule.impl;
3 import com.bsth.entity.Cars; 3 import com.bsth.entity.Cars;
4 import com.bsth.service.schedule.CarsService; 4 import com.bsth.service.schedule.CarsService;
5 import com.bsth.service.schedule.exception.ScheduleException; 5 import com.bsth.service.schedule.exception.ScheduleException;
6 -import com.bsth.service.schedule.utils.DataToolsProperties;  
7 -import org.slf4j.Logger;  
8 -import org.slf4j.LoggerFactory; 6 +import com.bsth.service.schedule.utils.DataToolsService;
9 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.beans.factory.annotation.Autowired;
10 -import org.springframework.boot.context.properties.EnableConfigurationProperties; 8 +import org.springframework.beans.factory.annotation.Qualifier;
11 import org.springframework.stereotype.Service; 9 import org.springframework.stereotype.Service;
12 import org.springframework.transaction.annotation.Transactional; 10 import org.springframework.transaction.annotation.Transactional;
13 import org.springframework.util.CollectionUtils; 11 import org.springframework.util.CollectionUtils;
14 12
15 import java.io.File; 13 import java.io.File;
16 -import java.io.PrintWriter;  
17 -import java.io.StringWriter;  
18 import java.util.HashMap; 14 import java.util.HashMap;
19 import java.util.Map; 15 import java.util.Map;
20 16
21 /** 17 /**
22 * Created by xu on 16/12/8. 18 * Created by xu on 16/12/8.
23 */ 19 */
24 -@EnableConfigurationProperties(DataToolsProperties.class)  
25 @Service(value = "carsServiceImpl_sc") 20 @Service(value = "carsServiceImpl_sc")
26 public class CarsServiceImpl extends BServiceImpl<Cars, Integer> implements CarsService { 21 public class CarsServiceImpl extends BServiceImpl<Cars, Integer> implements CarsService {
27 - /** 日志记录器 */  
28 - private static final Logger LOGGER = LoggerFactory.getLogger(CarsServiceImpl.class);  
29 -  
30 @Autowired 22 @Autowired
31 - private DataToolsProperties dataToolsProperties; 23 + @Qualifier(value = "cars_dataTool")
  24 + private DataToolsService dataToolsService;
32 25
33 @Override 26 @Override
34 public void importData(File file, Map<String, Object> params) throws ScheduleException { 27 public void importData(File file, Map<String, Object> params) throws ScheduleException {
35 - try {  
36 - LOGGER.info("//---------------- 导入车辆基础信息 start... ----------------//");  
37 - // 创建ktr转换所需参数  
38 - Map<String, Object> ktrParms = new HashMap<>();  
39 - File ktrFile = new File(this.getClass().getResource(  
40 - dataToolsProperties.getCarsDatainputktr()).toURI());  
41 -  
42 - // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径  
43 - ktrParms.put("transpath", ktrFile.getAbsolutePath());  
44 - ktrParms.put("filepath", file.getAbsolutePath());  
45 - ktrParms.put("erroroutputdir", dataToolsProperties.getTransErrordir());  
46 -  
47 - super.importData(file, ktrParms);  
48 -  
49 - LOGGER.info("//---------------- 导入车辆基础信息 success... ----------------//");  
50 - } catch (Exception exp) {  
51 - LOGGER.info("//---------------- 导入车辆基础信息 failed... ----------------//");  
52 -  
53 - StringWriter sw = new StringWriter();  
54 - exp.printStackTrace(new PrintWriter(sw));  
55 - LOGGER.info(sw.toString());  
56 -  
57 - throw new ScheduleException(exp.getMessage());  
58 - } 28 + dataToolsService.importData(file, params);
59 } 29 }
60 30
61 @Override 31 @Override
62 public File exportData(Map<String, Object> params) throws ScheduleException { 32 public File exportData(Map<String, Object> params) throws ScheduleException {
63 - try {  
64 - LOGGER.info("//---------------- 导出车辆基础信息 start... ----------------//");  
65 - // 创建ktr转换所需参数  
66 - Map<String, Object> ktrParms = new HashMap<>();  
67 - File ktrFile = new File(this.getClass().getResource(  
68 - dataToolsProperties.getCarsDataoutputktr()).toURI());  
69 -  
70 - // 通用参数,转换文件路径,excel输出文件名  
71 - ktrParms.put("transpath", ktrFile.getAbsolutePath());  
72 - ktrParms.put("filename", "车辆基础信息_download-");  
73 -  
74 - File file = super.exportData(ktrParms);  
75 -  
76 - LOGGER.info("//---------------- 导出车辆基础信息 success... ----------------//");  
77 -  
78 - return file;  
79 -  
80 - } catch (Exception exp) {  
81 - LOGGER.info("//---------------- 导出车辆基础信息 failed... ----------------//");  
82 -  
83 - StringWriter sw = new StringWriter();  
84 - exp.printStackTrace(new PrintWriter(sw));  
85 - LOGGER.info(sw.toString()); 33 + return dataToolsService.exportData(params);
  34 + }
86 35
87 - throw new ScheduleException(exp.getMessage());  
88 - } 36 + @Override
  37 + public File uploadFile(String filename, byte[] filedata) throws ScheduleException {
  38 + return dataToolsService.uploadFile(filename, filedata);
89 } 39 }
90 40
91 @Override 41 @Override
src/main/java/com/bsth/service/schedule/impl/EmployeeConfigInfoServiceImpl.java
@@ -3,97 +3,43 @@ package com.bsth.service.schedule.impl; @@ -3,97 +3,43 @@ package com.bsth.service.schedule.impl;
3 import com.bsth.entity.schedule.EmployeeConfigInfo; 3 import com.bsth.entity.schedule.EmployeeConfigInfo;
4 import com.bsth.entity.schedule.rule.ScheduleRule1Flat; 4 import com.bsth.entity.schedule.rule.ScheduleRule1Flat;
5 import com.bsth.service.schedule.EmployeeConfigInfoService; 5 import com.bsth.service.schedule.EmployeeConfigInfoService;
6 -import com.bsth.service.schedule.exception.ScheduleException;  
7 import com.bsth.service.schedule.ScheduleRule1FlatService; 6 import com.bsth.service.schedule.ScheduleRule1FlatService;
8 -import com.bsth.service.schedule.utils.DataToolsProperties;  
9 -import org.slf4j.Logger;  
10 -import org.slf4j.LoggerFactory; 7 +import com.bsth.service.schedule.exception.ScheduleException;
  8 +import com.bsth.service.schedule.utils.DataToolsService;
11 import org.springframework.beans.factory.annotation.Autowired; 9 import org.springframework.beans.factory.annotation.Autowired;
12 -import org.springframework.boot.context.properties.EnableConfigurationProperties; 10 +import org.springframework.beans.factory.annotation.Qualifier;
13 import org.springframework.stereotype.Service; 11 import org.springframework.stereotype.Service;
14 import org.springframework.transaction.annotation.Transactional; 12 import org.springframework.transaction.annotation.Transactional;
15 import org.springframework.util.CollectionUtils; 13 import org.springframework.util.CollectionUtils;
16 14
17 import java.io.File; 15 import java.io.File;
18 -import java.io.PrintWriter;  
19 -import java.io.StringWriter;  
20 import java.util.*; 16 import java.util.*;
21 17
22 /** 18 /**
23 * Created by xu on 16/5/10. 19 * Created by xu on 16/5/10.
24 */ 20 */
25 -@EnableConfigurationProperties(DataToolsProperties.class)  
26 @Service 21 @Service
27 public class EmployeeConfigInfoServiceImpl extends BServiceImpl<EmployeeConfigInfo, Long> implements EmployeeConfigInfoService { 22 public class EmployeeConfigInfoServiceImpl extends BServiceImpl<EmployeeConfigInfo, Long> implements EmployeeConfigInfoService {
28 - /** 日志记录器 */  
29 - private static Logger LOGGER = LoggerFactory.getLogger(EmployeeConfigInfoServiceImpl.class);  
30 -  
31 @Autowired 23 @Autowired
32 - private DataToolsProperties dataToolsProperties; 24 + private ScheduleRule1FlatService scheduleRule1FlatService;
33 25
34 @Autowired 26 @Autowired
35 - private ScheduleRule1FlatService scheduleRule1FlatService; 27 + @Qualifier(value = "employeeConfig_dataTool")
  28 + private DataToolsService dataToolsService;
36 29
37 @Override 30 @Override
38 - public void importData(File file, Map<String, Object> params) throws ScheduleException {  
39 - try {  
40 - LOGGER.info("//---------------- 导入人员配置信息 start... ----------------//");  
41 - // 创建ktr转换所需参数  
42 - Map<String, Object> ktrParms = new HashMap<>();  
43 - File ktrFile = new File(this.getClass().getResource(  
44 - dataToolsProperties.getEmployeesconfigDatainputktr()).toURI());  
45 -  
46 - // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径  
47 - ktrParms.put("transpath", ktrFile.getAbsolutePath());  
48 - ktrParms.put("filepath", file.getAbsolutePath());  
49 - ktrParms.put("erroroutputdir", dataToolsProperties.getTransErrordir());  
50 -  
51 - ktrParms.putAll(params);  
52 -  
53 - super.importData(file, ktrParms);  
54 -  
55 - LOGGER.info("//---------------- 导入人员配置信息 success... ----------------//");  
56 - } catch (Exception exp) {  
57 - LOGGER.info("//---------------- 导入人员配置信息 failed... ----------------//");  
58 -  
59 - StringWriter sw = new StringWriter();  
60 - exp.printStackTrace(new PrintWriter(sw));  
61 - LOGGER.info(sw.toString()); 31 + public File uploadFile(String filename, byte[] filedata) throws ScheduleException {
  32 + return dataToolsService.uploadFile(filename, filedata);
  33 + }
62 34
63 - throw new ScheduleException(exp.getMessage());  
64 - } 35 + @Override
  36 + public void importData(File file, Map<String, Object> params) throws ScheduleException {
  37 + dataToolsService.importData(file, params);
65 } 38 }
66 39
67 @Override 40 @Override
68 public File exportData(Map<String, Object> params) throws ScheduleException { 41 public File exportData(Map<String, Object> params) throws ScheduleException {
69 - try {  
70 - LOGGER.info("//---------------- 导出人员配置信息 start... ----------------//");  
71 - // 创建ktr转换所需参数  
72 - Map<String, Object> ktrParms = new HashMap<>();  
73 - File ktrFile = new File(this.getClass().getResource(  
74 - dataToolsProperties.getEmployeesconfigDataoutputktr()).toURI());  
75 -  
76 - // 通用参数,转换文件路径,excel输出文件名  
77 - ktrParms.put("transpath", ktrFile.getAbsolutePath());  
78 - ktrParms.put("filename", "人员配置信息_download-");  
79 -  
80 - ktrParms.putAll(params);  
81 -  
82 - File file = super.exportData(ktrParms);  
83 -  
84 - LOGGER.info("//---------------- 导出人员配置信息 success... ----------------//");  
85 -  
86 - return file;  
87 -  
88 - } catch (Exception exp) {  
89 - LOGGER.info("//---------------- 导出人员配置信息 failed... ----------------//");  
90 -  
91 - StringWriter sw = new StringWriter();  
92 - exp.printStackTrace(new PrintWriter(sw));  
93 - LOGGER.info(sw.toString());  
94 -  
95 - throw new ScheduleException(exp.getMessage());  
96 - } 42 + return dataToolsService.exportData(params);
97 } 43 }
98 44
99 @Transactional 45 @Transactional
src/main/java/com/bsth/service/schedule/impl/EmployeeServiceImpl.java
@@ -3,89 +3,39 @@ package com.bsth.service.schedule.impl; @@ -3,89 +3,39 @@ package com.bsth.service.schedule.impl;
3 import com.bsth.entity.Personnel; 3 import com.bsth.entity.Personnel;
4 import com.bsth.service.schedule.EmployeeService; 4 import com.bsth.service.schedule.EmployeeService;
5 import com.bsth.service.schedule.exception.ScheduleException; 5 import com.bsth.service.schedule.exception.ScheduleException;
6 -import com.bsth.service.schedule.utils.DataToolsProperties;  
7 -import org.slf4j.Logger;  
8 -import org.slf4j.LoggerFactory; 6 +import com.bsth.service.schedule.utils.DataToolsService;
9 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.beans.factory.annotation.Autowired;
10 -import org.springframework.boot.context.properties.EnableConfigurationProperties; 8 +import org.springframework.beans.factory.annotation.Qualifier;
11 import org.springframework.stereotype.Service; 9 import org.springframework.stereotype.Service;
12 import org.springframework.transaction.annotation.Transactional; 10 import org.springframework.transaction.annotation.Transactional;
13 import org.springframework.util.CollectionUtils; 11 import org.springframework.util.CollectionUtils;
14 12
15 import java.io.File; 13 import java.io.File;
16 -import java.io.PrintWriter;  
17 -import java.io.StringWriter;  
18 import java.util.HashMap; 14 import java.util.HashMap;
19 import java.util.Map; 15 import java.util.Map;
20 16
21 /** 17 /**
22 * Created by xu on 16/12/15. 18 * Created by xu on 16/12/15.
23 */ 19 */
24 -@EnableConfigurationProperties(DataToolsProperties.class)  
25 @Service 20 @Service
26 public class EmployeeServiceImpl extends BServiceImpl<Personnel, Integer> implements EmployeeService { 21 public class EmployeeServiceImpl extends BServiceImpl<Personnel, Integer> implements EmployeeService {
27 - /** 日志记录器 */  
28 - private static final Logger LOGGER = LoggerFactory.getLogger(EmployeeServiceImpl.class);  
29 -  
30 @Autowired 22 @Autowired
31 - private DataToolsProperties dataToolsProperties; 23 + @Qualifier(value = "employee_dataTool")
  24 + private DataToolsService dataToolsService;
32 25
33 @Override 26 @Override
34 - public void importData(File file, Map<String, Object> params) throws ScheduleException {  
35 - try {  
36 - LOGGER.info("//---------------- 导入人员基础信息 start... ----------------//");  
37 - // 创建ktr转换所需参数  
38 - Map<String, Object> ktrParms = new HashMap<>();  
39 - File ktrFile = new File(this.getClass().getResource(  
40 - dataToolsProperties.getEmployeesDatainputktr()).toURI());  
41 -  
42 - // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径  
43 - ktrParms.put("transpath", ktrFile.getAbsolutePath());  
44 - ktrParms.put("filepath", file.getAbsolutePath());  
45 - ktrParms.put("erroroutputdir", dataToolsProperties.getTransErrordir());  
46 -  
47 - super.importData(file, ktrParms);  
48 -  
49 - LOGGER.info("//---------------- 导入人员基础信息 success... ----------------//");  
50 - } catch (Exception exp) {  
51 - LOGGER.info("//---------------- 导入人员基础信息 failed... ----------------//");  
52 -  
53 - StringWriter sw = new StringWriter();  
54 - exp.printStackTrace(new PrintWriter(sw));  
55 - LOGGER.info(sw.toString()); 27 + public File uploadFile(String filename, byte[] filedata) throws ScheduleException {
  28 + return dataToolsService.uploadFile(filename, filedata);
  29 + }
56 30
57 - throw new ScheduleException(exp.getMessage());  
58 - } 31 + @Override
  32 + public void importData(File file, Map<String, Object> params) throws ScheduleException {
  33 + dataToolsService.importData(file, params);
59 } 34 }
60 35
61 @Override 36 @Override
62 public File exportData(Map<String, Object> params) throws ScheduleException { 37 public File exportData(Map<String, Object> params) throws ScheduleException {
63 - try {  
64 - LOGGER.info("//---------------- 导出人员基础信息 start... ----------------//");  
65 - // 创建ktr转换所需参数  
66 - Map<String, Object> ktrParms = new HashMap<>();  
67 - File ktrFile = new File(this.getClass().getResource(  
68 - dataToolsProperties.getEmployeesDataoutputktr()).toURI());  
69 -  
70 - // 通用参数,转换文件路径,excel输出文件名  
71 - ktrParms.put("transpath", ktrFile.getAbsolutePath());  
72 - ktrParms.put("filename", "人员基础信息_download-");  
73 -  
74 - File file = super.exportData(ktrParms);  
75 -  
76 - LOGGER.info("//---------------- 导出人员基础信息 success... ----------------//");  
77 -  
78 - return file;  
79 -  
80 - } catch (Exception exp) {  
81 - LOGGER.info("//---------------- 导出人员基础信息 failed... ----------------//");  
82 -  
83 - StringWriter sw = new StringWriter();  
84 - exp.printStackTrace(new PrintWriter(sw));  
85 - LOGGER.info(sw.toString());  
86 -  
87 - throw new ScheduleException(exp.getMessage());  
88 - } 38 + return dataToolsService.exportData(params);
89 } 39 }
90 40
91 @Override 41 @Override
src/main/java/com/bsth/service/schedule/impl/GuideboardInfoServiceImpl.java
@@ -5,18 +5,14 @@ import com.bsth.entity.schedule.TTInfoDetail; @@ -5,18 +5,14 @@ import com.bsth.entity.schedule.TTInfoDetail;
5 import com.bsth.service.schedule.GuideboardInfoService; 5 import com.bsth.service.schedule.GuideboardInfoService;
6 import com.bsth.service.schedule.TTInfoDetailService; 6 import com.bsth.service.schedule.TTInfoDetailService;
7 import com.bsth.service.schedule.exception.ScheduleException; 7 import com.bsth.service.schedule.exception.ScheduleException;
8 -import com.bsth.service.schedule.utils.DataToolsProperties;  
9 -import org.slf4j.Logger;  
10 -import org.slf4j.LoggerFactory; 8 +import com.bsth.service.schedule.utils.DataToolsService;
11 import org.springframework.beans.factory.annotation.Autowired; 9 import org.springframework.beans.factory.annotation.Autowired;
12 -import org.springframework.boot.context.properties.EnableConfigurationProperties; 10 +import org.springframework.beans.factory.annotation.Qualifier;
13 import org.springframework.stereotype.Service; 11 import org.springframework.stereotype.Service;
14 import org.springframework.util.CollectionUtils; 12 import org.springframework.util.CollectionUtils;
15 13
16 import javax.transaction.Transactional; 14 import javax.transaction.Transactional;
17 import java.io.File; 15 import java.io.File;
18 -import java.io.PrintWriter;  
19 -import java.io.StringWriter;  
20 import java.util.HashMap; 16 import java.util.HashMap;
21 import java.util.List; 17 import java.util.List;
22 import java.util.Map; 18 import java.util.Map;
@@ -24,14 +20,11 @@ import java.util.Map; @@ -24,14 +20,11 @@ import java.util.Map;
24 /** 20 /**
25 * 路牌信息服务。 21 * 路牌信息服务。
26 */ 22 */
27 -@EnableConfigurationProperties(DataToolsProperties.class)  
28 @Service 23 @Service
29 public class GuideboardInfoServiceImpl extends BServiceImpl<GuideboardInfo, Long> implements GuideboardInfoService { 24 public class GuideboardInfoServiceImpl extends BServiceImpl<GuideboardInfo, Long> implements GuideboardInfoService {
30 - /** 日志记录器 */  
31 - private static final Logger LOGGER = LoggerFactory.getLogger(GuideboardInfoServiceImpl.class);  
32 -  
33 @Autowired 25 @Autowired
34 - private DataToolsProperties dataToolsProperties; 26 + @Qualifier(value = "gbInfo_dataTool")
  27 + private DataToolsService dataToolsService;
35 28
36 @Autowired 29 @Autowired
37 private TTInfoDetailService ttInfoDetailService; 30 private TTInfoDetailService ttInfoDetailService;
@@ -109,65 +102,18 @@ public class GuideboardInfoServiceImpl extends BServiceImpl&lt;GuideboardInfo, Long @@ -109,65 +102,18 @@ public class GuideboardInfoServiceImpl extends BServiceImpl&lt;GuideboardInfo, Long
109 } 102 }
110 103
111 @Override 104 @Override
112 - public void importData(File file, Map<String, Object> params) throws ScheduleException {  
113 - try {  
114 - LOGGER.info("//---------------- 导入路牌信息 start... ----------------//");  
115 - // 创建ktr转换所需参数  
116 - Map<String, Object> ktrParms = new HashMap<>();  
117 - File ktrFile = new File(this.getClass().getResource(  
118 - dataToolsProperties.getGuideboardsDatainputktr()).toURI());  
119 -  
120 - // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径  
121 - ktrParms.put("transpath", ktrFile.getAbsolutePath());  
122 - ktrParms.put("filepath", file.getAbsolutePath());  
123 - ktrParms.put("erroroutputdir", dataToolsProperties.getTransErrordir());  
124 -  
125 - ktrParms.putAll(params);  
126 -  
127 - super.importData(file, ktrParms);  
128 -  
129 - LOGGER.info("//---------------- 导入路牌信息 success... ----------------//");  
130 - } catch (Exception exp) {  
131 - LOGGER.info("//---------------- 导入路牌信息 failed... ----------------//");  
132 -  
133 - StringWriter sw = new StringWriter();  
134 - exp.printStackTrace(new PrintWriter(sw));  
135 - LOGGER.info(sw.toString()); 105 + public File uploadFile(String filename, byte[] filedata) throws ScheduleException {
  106 + return dataToolsService.uploadFile(filename, filedata);
  107 + }
136 108
137 - throw new ScheduleException(exp.getMessage());  
138 - } 109 + @Override
  110 + public void importData(File file, Map<String, Object> params) throws ScheduleException {
  111 + dataToolsService.importData(file, params);
139 } 112 }
140 113
141 @Override 114 @Override
142 public File exportData(Map<String, Object> params) throws ScheduleException { 115 public File exportData(Map<String, Object> params) throws ScheduleException {
143 - try {  
144 - LOGGER.info("//---------------- 导出路牌信息 start... ----------------//");  
145 - // 创建ktr转换所需参数  
146 - Map<String, Object> ktrParms = new HashMap<>();  
147 - File ktrFile = new File(this.getClass().getResource(  
148 - dataToolsProperties.getGuideboardsDataoutputktr()).toURI());  
149 -  
150 - // 通用参数,转换文件路径,excel输出文件名  
151 - ktrParms.put("transpath", ktrFile.getAbsolutePath());  
152 - ktrParms.put("filename", "路牌信息_download-");  
153 -  
154 - ktrParms.putAll(params);  
155 -  
156 - File file = super.exportData(ktrParms);  
157 -  
158 - LOGGER.info("//---------------- 导出路牌信息 success... ----------------//");  
159 -  
160 - return file;  
161 -  
162 - } catch (Exception exp) {  
163 - LOGGER.info("//---------------- 导出路牌信息 failed... ----------------//");  
164 -  
165 - StringWriter sw = new StringWriter();  
166 - exp.printStackTrace(new PrintWriter(sw));  
167 - LOGGER.info(sw.toString());  
168 -  
169 - throw new ScheduleException(exp.getMessage());  
170 - } 116 + return dataToolsService.exportData(params);
171 } 117 }
172 118
173 } 119 }
src/main/java/com/bsth/service/schedule/impl/PeopleCarPlanServiceImpl.java
@@ -404,7 +404,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -404,7 +404,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
404 } 404 }
405 405
406 if(!schedule.getBcType().equals("in") && !schedule.getBcType().equals("out") 406 if(!schedule.getBcType().equals("in") && !schedule.getBcType().equals("out")
407 - && schedule.getFcsjActual() != null){ 407 + && !schedule.getBcType().equals("ldks") && schedule.getFcsjActual() != null){
408 // String clZbh = schedule.getClZbh(); 408 // String clZbh = schedule.getClZbh();
409 String xlDir = schedule.getXlDir(); 409 String xlDir = schedule.getXlDir();
410 if(!listMap.containsKey(xlDir)) 410 if(!listMap.containsKey(xlDir))
@@ -526,7 +526,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -526,7 +526,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
526 // if(company.length() != 0){ 526 // if(company.length() != 0){
527 sql += " and gs_bm like '%"+company+"%' and fgs_bm like '%"+subCompany+"%'"; 527 sql += " and gs_bm like '%"+company+"%' and fgs_bm like '%"+subCompany+"%'";
528 // } 528 // }
529 - sql += " and bc_type != 'in' and bc_type != 'out'"; 529 + sql += " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'";
530 530
531 list = jdbcTemplate.query(sql, 531 list = jdbcTemplate.query(sql,
532 new RowMapper<ScheduleRealInfo>(){ 532 new RowMapper<ScheduleRealInfo>(){
@@ -579,7 +579,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -579,7 +579,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
579 579
580 if(model.length() != 0){ 580 if(model.length() != 0){
581 // sql = "select * from bsth_c_s_ttinfo_detail where ttinfo = '"+model+"' and bc_type != 'in' and bc_type != 'out'"; 581 // sql = "select * from bsth_c_s_ttinfo_detail where ttinfo = '"+model+"' and bc_type != 'in' and bc_type != 'out'";
582 - sql = "select id from bsth_c_s_sp_info where tt_info = '" + model + "' and bc_type != 'in' and bc_type != 'out'"; 582 + sql = "select id from bsth_c_s_sp_info where tt_info = '" + model + "' and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'";
583 583
584 ttList = jdbcTemplate.query(sql, 584 ttList = jdbcTemplate.query(sql,
585 new RowMapper<Long>(){ 585 new RowMapper<Long>(){
@@ -807,7 +807,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -807,7 +807,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
807 // if(company.length() != 0){ 807 // if(company.length() != 0){
808 sql += " and gs_bm like '%"+company+"%' and fgs_bm like '%"+subCompany+"%'"; 808 sql += " and gs_bm like '%"+company+"%' and fgs_bm like '%"+subCompany+"%'";
809 // } 809 // }
810 - sql += " and bc_type != 'in' and bc_type != 'out'"; 810 + sql += " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'";
811 811
812 list = jdbcTemplate.query(sql, 812 list = jdbcTemplate.query(sql,
813 new RowMapper<ScheduleRealInfo>(){ 813 new RowMapper<ScheduleRealInfo>(){
@@ -1174,7 +1174,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -1174,7 +1174,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1174 List<ScheduleRealInfo> list = this.getSchedule(company, subCompany, line, date); 1174 List<ScheduleRealInfo> list = this.getSchedule(company, subCompany, line, date);
1175 1175
1176 for(ScheduleRealInfo schedule : list){ 1176 for(ScheduleRealInfo schedule : list){
1177 - if(schedule.getBcType().equals("in") || schedule.getBcType().equals("out")) 1177 + if(schedule.getBcType().equals("in") || schedule.getBcType().equals("out") || schedule.getBcType().equals("ldks"))
1178 continue; 1178 continue;
1179 if(schedule.getStatus() == -1){ 1179 if(schedule.getStatus() == -1){
1180 continue; 1180 continue;
@@ -1353,7 +1353,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -1353,7 +1353,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1353 List<ScheduleRealInfo> list = this.getSchedule(company, subCompany, line, date); 1353 List<ScheduleRealInfo> list = this.getSchedule(company, subCompany, line, date);
1354 1354
1355 for(ScheduleRealInfo schedule : list){ 1355 for(ScheduleRealInfo schedule : list){
1356 - if(schedule.getBcType().equals("in") || schedule.getBcType().equals("out")) 1356 + if(schedule.getBcType().equals("in") || schedule.getBcType().equals("out") || schedule.getBcType().equals("ldks"))
1357 continue; 1357 continue;
1358 if(schedule.getStatus() == -1){ 1358 if(schedule.getStatus() == -1){
1359 continue; 1359 continue;
src/main/java/com/bsth/service/schedule/impl/ScheduleRule1FlatServiceImpl.java
@@ -3,90 +3,35 @@ package com.bsth.service.schedule.impl; @@ -3,90 +3,35 @@ package com.bsth.service.schedule.impl;
3 import com.bsth.entity.schedule.rule.ScheduleRule1Flat; 3 import com.bsth.entity.schedule.rule.ScheduleRule1Flat;
4 import com.bsth.service.schedule.ScheduleRule1FlatService; 4 import com.bsth.service.schedule.ScheduleRule1FlatService;
5 import com.bsth.service.schedule.exception.ScheduleException; 5 import com.bsth.service.schedule.exception.ScheduleException;
6 -import com.bsth.service.schedule.utils.DataToolsProperties;  
7 -import org.slf4j.Logger;  
8 -import org.slf4j.LoggerFactory; 6 +import com.bsth.service.schedule.utils.DataToolsService;
9 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.beans.factory.annotation.Autowired;
10 -import org.springframework.boot.context.properties.EnableConfigurationProperties; 8 +import org.springframework.beans.factory.annotation.Qualifier;
11 import org.springframework.stereotype.Service; 9 import org.springframework.stereotype.Service;
12 10
13 import java.io.File; 11 import java.io.File;
14 -import java.io.PrintWriter;  
15 -import java.io.StringWriter;  
16 -import java.util.HashMap;  
17 import java.util.Map; 12 import java.util.Map;
18 13
19 /** 14 /**
20 * Created by xu on 16/7/4. 15 * Created by xu on 16/7/4.
21 */ 16 */
22 -@EnableConfigurationProperties(DataToolsProperties.class)  
23 @Service 17 @Service
24 public class ScheduleRule1FlatServiceImpl extends BServiceImpl<ScheduleRule1Flat, Long> implements ScheduleRule1FlatService { 18 public class ScheduleRule1FlatServiceImpl extends BServiceImpl<ScheduleRule1Flat, Long> implements ScheduleRule1FlatService {
25 - /** 日志记录器 */  
26 - private static Logger LOGGER = LoggerFactory.getLogger(ScheduleRule1FlatServiceImpl.class);  
27 -  
28 @Autowired 19 @Autowired
29 - private DataToolsProperties dataToolsProperties; 20 + @Qualifier(value = "scheduleRule_dataTool")
  21 + private DataToolsService dataToolsService;
30 22
31 @Override 23 @Override
32 - public void importData(File file, Map<String, Object> params) throws ScheduleException {  
33 - try {  
34 - LOGGER.info("//---------------- 导入排版规则信息 start... ----------------//");  
35 - // 创建ktr转换所需参数  
36 - Map<String, Object> ktrParms = new HashMap<>();  
37 - File ktrFile = new File(this.getClass().getResource(  
38 - dataToolsProperties.getScheduleruleDatainputktr()).toURI());  
39 -  
40 - // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径  
41 - ktrParms.put("transpath", ktrFile.getAbsolutePath());  
42 - ktrParms.put("filepath", file.getAbsolutePath());  
43 - ktrParms.put("erroroutputdir", dataToolsProperties.getTransErrordir());  
44 -  
45 - ktrParms.putAll(params);  
46 -  
47 - super.importData(file, ktrParms);  
48 -  
49 - LOGGER.info("//---------------- 导入排版规则信息 success... ----------------//");  
50 - } catch (Exception exp) {  
51 - LOGGER.info("//---------------- 导入排版规则信息 failed... ----------------//");  
52 -  
53 - StringWriter sw = new StringWriter();  
54 - exp.printStackTrace(new PrintWriter(sw));  
55 - LOGGER.info(sw.toString()); 24 + public File uploadFile(String filename, byte[] filedata) throws ScheduleException {
  25 + return dataToolsService.uploadFile(filename, filedata);
  26 + }
56 27
57 - throw new ScheduleException(exp.getMessage());  
58 - } 28 + @Override
  29 + public void importData(File file, Map<String, Object> params) throws ScheduleException {
  30 + dataToolsService.importData(file, params);
59 } 31 }
60 32
61 @Override 33 @Override
62 public File exportData(Map<String, Object> params) throws ScheduleException { 34 public File exportData(Map<String, Object> params) throws ScheduleException {
63 - try {  
64 - LOGGER.info("//---------------- 导出排版规则信息 start... ----------------//");  
65 - // 创建ktr转换所需参数  
66 - Map<String, Object> ktrParms = new HashMap<>();  
67 - File ktrFile = new File(this.getClass().getResource(  
68 - dataToolsProperties.getScheduleruleOutput()).toURI());  
69 -  
70 - // 通用参数,转换文件路径,excel输出文件名  
71 - ktrParms.put("transpath", ktrFile.getAbsolutePath());  
72 - ktrParms.put("filename", "排版规则信息_download-");  
73 -  
74 - ktrParms.putAll(params);  
75 -  
76 - File file = super.exportData(ktrParms);  
77 -  
78 - LOGGER.info("//---------------- 导出排版规则信息 success... ----------------//");  
79 -  
80 - return file;  
81 -  
82 - } catch (Exception exp) {  
83 - LOGGER.info("//---------------- 导出排版规则信息 failed... ----------------//");  
84 -  
85 - StringWriter sw = new StringWriter();  
86 - exp.printStackTrace(new PrintWriter(sw));  
87 - LOGGER.info(sw.toString());  
88 -  
89 - throw new ScheduleException(exp.getMessage());  
90 - } 35 + return dataToolsService.exportData(params);
91 } 36 }
92 } 37 }
src/main/java/com/bsth/service/schedule/impl/TTInfoDetailServiceImpl.java
@@ -21,6 +21,7 @@ import com.bsth.service.LineInformationService; @@ -21,6 +21,7 @@ import com.bsth.service.LineInformationService;
21 import com.bsth.service.StationRouteService; 21 import com.bsth.service.StationRouteService;
22 import com.bsth.service.schedule.GuideboardInfoService; 22 import com.bsth.service.schedule.GuideboardInfoService;
23 import com.bsth.service.schedule.TTInfoDetailService; 23 import com.bsth.service.schedule.TTInfoDetailService;
  24 +import com.bsth.service.schedule.datatools.TTInfoDetailForEdit;
24 import com.bsth.service.schedule.exception.ScheduleException; 25 import com.bsth.service.schedule.exception.ScheduleException;
25 import com.bsth.service.schedule.utils.DataToolsProperties; 26 import com.bsth.service.schedule.utils.DataToolsProperties;
26 import com.bsth.service.schedule.utils.DataToolsService; 27 import com.bsth.service.schedule.utils.DataToolsService;
@@ -53,7 +54,6 @@ import java.util.regex.Pattern; @@ -53,7 +54,6 @@ import java.util.regex.Pattern;
53 * Created by xu on 17/1/3. 54 * Created by xu on 17/1/3.
54 */ 55 */
55 @Service 56 @Service
56 -@EnableConfigurationProperties(DataToolsProperties.class)  
57 public class TTInfoDetailServiceImpl extends BServiceImpl<TTInfoDetail, Long> implements TTInfoDetailService { 57 public class TTInfoDetailServiceImpl extends BServiceImpl<TTInfoDetail, Long> implements TTInfoDetailService {
58 /** 日志记录器 */ 58 /** 日志记录器 */
59 private static final Logger LOGGER = LoggerFactory.getLogger(TTInfoDetailServiceImpl.class); 59 private static final Logger LOGGER = LoggerFactory.getLogger(TTInfoDetailServiceImpl.class);
@@ -82,11 +82,16 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -82,11 +82,16 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
82 private SysUserRepository sysUserRepository; 82 private SysUserRepository sysUserRepository;
83 @Autowired 83 @Autowired
84 private GuideboardInfoRepository guideboardInfoRepository; 84 private GuideboardInfoRepository guideboardInfoRepository;
  85 +
85 @Autowired 86 @Autowired
86 - @Qualifier(value = "dataToolsServiceImpl") 87 + @Qualifier(value = "ttInfoDetail_dataTool")
87 private DataToolsService dataToolsService; 88 private DataToolsService dataToolsService;
88 89
89 @Autowired 90 @Autowired
  91 + @Qualifier(value = "ttInfoDetail_dataTool")
  92 + private TTInfoDetailForEdit ttInfoDetailForEdit;
  93 +
  94 + @Autowired
90 private JdbcTemplate jdbcTemplate; 95 private JdbcTemplate jdbcTemplate;
91 96
92 /** 97 /**
@@ -115,7 +120,6 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -115,7 +120,6 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
115 120
116 @Override 121 @Override
117 public File uploadFile(String filename, byte[] filedata) throws ScheduleException { 122 public File uploadFile(String filename, byte[] filedata) throws ScheduleException {
118 -  
119 return dataToolsService.uploadFile(filename, filedata); 123 return dataToolsService.uploadFile(filename, filedata);
120 } 124 }
121 125
@@ -123,175 +127,26 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -123,175 +127,26 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
123 public void importData( 127 public void importData(
124 File file, 128 File file,
125 Map<String, Object> params) throws ScheduleException { 129 Map<String, Object> params) throws ScheduleException {
126 -  
127 - try {  
128 - LOGGER.info("//---------------- 导入时刻表明细 start... ----------------//");  
129 -  
130 - String filename = file.getAbsolutePath(); // xls文件名  
131 - String sheetname = String.valueOf(params.get("sheetname")); // sheet名字  
132 - Long ttid = Long.valueOf(String.valueOf(params.get("ttid"))); // 时刻表id  
133 - Long xlid = Long.valueOf(String.valueOf(params.get("xlid"))); // 线路id  
134 - Integer lineid = Integer.valueOf(String.valueOf(params.get("lineinfo"))); // 线路标准id  
135 - String xlname = String.valueOf(params.get("xlname")); // 线路名字  
136 - String ttname = String.valueOf(params.get("ttname")); // 时刻表名字  
137 -  
138 - LOGGER.info("参数1, xls文件名={},sheet名字={}", filename, sheetname);  
139 - LOGGER.info("参数2, 线路id={},线路名字={}", xlid, xlname);  
140 - LOGGER.info("参数3, 时刻表id={},时刻表名字={}", ttid, ttname);  
141 -  
142 - LOGGER.info("转换xls文件格式成文本格式...");  
143 - // 1、修改已经上传的excel文件,在每个起点站后标示数字,表示第几个班次  
144 - // 2、由于格式问题,需要把内容都转换成字符串  
145 - List<String> colList = new ArrayList<>();  
146 - Workbook workbook = Workbook.getWorkbook(new File(filename));  
147 - Sheet sheet = workbook.getSheet(sheetname);  
148 - Cell[] cells = sheet.getRow(0);  
149 - for (int i = 0; i < cells.length; i++) {  
150 - if (i == 0) {  
151 - colList.add(cells[i].getContents().trim());  
152 - } else {  
153 - colList.add(cells[i].getContents() + i);  
154 - }  
155 - }  
156 -  
157 - File fileCal = new File(filename + "_stringType.xls");  
158 - WritableWorkbook writableWorkbook = Workbook.createWorkbook(fileCal, workbook);  
159 - WritableSheet sheet1 = writableWorkbook.getSheet(sheetname);  
160 - for (int i = 0; i < sheet1.getColumns(); i++) { // 第一行数据  
161 - sheet1.addCell(new Label(i, 0, colList.get(i)));  
162 - }  
163 - for (int i = 1; i < sheet1.getRows(); i++) { // 第二行开始  
164 - Cell[] cells1 = sheet.getRow(i);  
165 - for (int j = 0; j < cells1.length; j++) {  
166 - sheet1.addCell(new Label(j, i, cells1[j].getContents()));  
167 - }  
168 - }  
169 - writableWorkbook.write();  
170 - writableWorkbook.close();  
171 -  
172 - // 2、删除原有数据  
173 - // 操作在ktr内部执行  
174 -  
175 - // 3、导入时刻表  
176 - // 获取停车场名字  
177 - LOGGER.info("获取停车场名字...");  
178 - LineInformation lineInformation = lineInformationService.findById(lineid);  
179 - Map<String, Object> p1 = new HashMap<>();  
180 - p1.put("parkCode_eq", lineInformation.getCarPark());  
181 - List<CarPark> carParkList = (List<CarPark>) carParkService.list(p1);  
182 - String tccname = carParkList.get(0).getParkName();  
183 - LOGGER.info("停车场名字={}", tccname);  
184 -  
185 -  
186 - // 计算表头参数  
187 - Workbook book = Workbook.getWorkbook(fileCal);  
188 - Sheet sheet_exp = book.getSheet(sheetname);  
189 - List<String> columnames = new ArrayList<>();  
190 - for (int i = 0; i < sheet_exp.getColumns(); i++) { // 获取第一行,数据,作为列名  
191 - columnames.add(sheet_exp.getCell(i, 0).getContents());  
192 - }  
193 - LOGGER.info("表头={}", StringUtils.join(columnames.toArray(), ","));  
194 -  
195 - // 创建ktr转换所需参数  
196 - Map<String, Object> ktrParms = new HashMap<>();  
197 - File ktrFile = new File(this.getClass().getResource(  
198 - dataToolsProperties.getTtinfodetailMetadatainputktr()).toURI());  
199 -// File ktrFile2 = new File(this.getClass().getResource(  
200 -// dataToolsProperties.getTtinfodetailDatainputktr()).toURI());  
201 - File ktrFile2 = new File(this.getClass().getResource(  
202 - dataToolsProperties.getTtinfodetailDatainputktr2()).toURI());  
203 -  
204 - // 通用参数,转换文件路径,excel输入文件路径,错误输出文件路径  
205 - ktrParms.put("transpath", ktrFile.getAbsolutePath());  
206 - ktrParms.put("filepath", fileCal.getAbsolutePath());  
207 - ktrParms.put("erroroutputdir", dataToolsProperties.getTransErrordir());  
208 -  
209 - // 附加参数  
210 - ktrParms.put("injectktrfile", ktrFile2.getAbsolutePath()); // 注入元数据的ktr文件  
211 - ktrParms.put("sheetname", sheetname); // sheet工作区的名字  
212 - ktrParms.put("xlname", xlname); // 线路名称  
213 - ktrParms.put("ttinfoname", ttname); // 时刻表名称  
214 - ktrParms.put("ttid", ttid.intValue()); // 时刻表id  
215 - ktrParms.put("tccname", tccname); // 停车场名字  
216 - ktrParms.put("excelfieldnames", StringUtils.join(columnames.toArray(), ",")); // 时刻表excel输入字段名,以逗号连接  
217 - columnames.remove(0);  
218 - ktrParms.put("normalizefieldnames", StringUtils.join(columnames.toArray(), ",")); // 数据范式化字段名,以逗号连接  
219 -  
220 - super.importData(fileCal, ktrParms);  
221 -  
222 - LOGGER.info("//---------------- 导入时刻表明细 success... ----------------//");  
223 - } catch (Exception exp) {  
224 - LOGGER.info("//---------------- 导入时刻表明细 failed... ----------------//");  
225 -  
226 - StringWriter sw = new StringWriter();  
227 - exp.printStackTrace(new PrintWriter(sw));  
228 - LOGGER.info(sw.toString());  
229 -  
230 - throw new ScheduleException(exp.getMessage());  
231 - } 130 + dataToolsService.importData(file, params);
232 } 131 }
233 132
234 @Override 133 @Override
235 public File exportData(Map<String, Object> params) throws ScheduleException { 134 public File exportData(Map<String, Object> params) throws ScheduleException {
236 - try {  
237 - LOGGER.info("//---------------- 导出时刻表明细 start... ----------------//");  
238 -  
239 - // 创建ktr转换所需参数  
240 - Map<String, Object> ktrParms = new HashMap<>();  
241 - File ktrFile = new File(this.getClass().getResource(  
242 - dataToolsProperties.getTtinfodetailMetaoutput()).toURI());  
243 - File ktrFile2 = new File(this.getClass().getResource(  
244 - dataToolsProperties.getTtinfodetailOutput()).toURI());  
245 -  
246 - // 通用参数,转换文件路径,excel输出文件名  
247 - ktrParms.put("transpath", ktrFile.getAbsolutePath());  
248 - ktrParms.put("filename", String.format("时刻表_(id=%s)_download-", String.valueOf(params.get("ttinfoid"))));  
249 -  
250 - // 附加参数  
251 - ktrParms.put("injectktrfile", ktrFile2.getAbsolutePath()); // 注入元数据的ktr文件  
252 - ktrParms.put("ttinfoid", String.valueOf(params.get("ttinfoid")));  
253 -  
254 - File file = super.exportData(ktrParms);  
255 -  
256 - LOGGER.info("//---------------- 导出时刻表明细 success... ----------------//");  
257 -  
258 - return file;  
259 - } catch (Exception exp) {  
260 - LOGGER.info("//---------------- 导出时刻表明细 failed... ----------------//");  
261 -  
262 - StringWriter sw = new StringWriter();  
263 - exp.printStackTrace(new PrintWriter(sw));  
264 - LOGGER.info(sw.toString());  
265 -  
266 - throw new ScheduleException(exp.getMessage());  
267 - } 135 + return dataToolsService.exportData(params);
268 } 136 }
269 137
270 @Override 138 @Override
271 - public EditInfo getEditInfo(Integer xlid, Long ttid) throws ScheduleException { 139 + public TTInfoDetailService.EditInfo getEditInfo(Integer xlid, Long ttid) throws ScheduleException {
272 try { 140 try {
273 LOGGER.info("//---------------- 时刻表编辑用数据输出 start... ----------------//"); 141 LOGGER.info("//---------------- 时刻表编辑用数据输出 start... ----------------//");
274 142
275 - // 创建ktr转换所需参数  
276 - Map<String, Object> ktrParms = new HashMap<>();  
277 - File ktrFile = new File(this.getClass().getResource(  
278 - dataToolsProperties.getTtinfodetailForeditktr()).toURI());  
279 -  
280 - // 通用参数,转换文件路径,excel输出文件名,错误输出文件路径  
281 - ktrParms.put("transpath", ktrFile.getAbsolutePath());  
282 - ktrParms.put("filename", "todo");  
283 -  
284 // 附加参数 143 // 附加参数
285 String outputFilePath = String.format("ttinfodetail_(id=%s)_foredit-%s", 144 String outputFilePath = String.format("ttinfodetail_(id=%s)_foredit-%s",
286 String.valueOf(ttid), new DateTime().toString("yyyyMMddHHmmss")); 145 String.valueOf(ttid), new DateTime().toString("yyyyMMddHHmmss"));
287 146
288 - ktrParms.put("tempfilepath", dataToolsProperties.getTransTempdir() + File.separator + outputFilePath); // 数据输出文件路径  
289 - ktrParms.put("xlid", String.valueOf(xlid));  
290 - ktrParms.put("ttid", String.valueOf(ttid));  
291 -  
292 - super.exportData(ktrParms); 147 + ttInfoDetailForEdit.exportDataForEdit(xlid, ttid);
293 148
294 - EditInfo editInfo = new EditInfo(); // 输出数据 149 + TTInfoDetailService.EditInfo editInfo = new TTInfoDetailService.EditInfo(); // 输出数据
295 150
296 // 1.6、获取最大的发车数,用于输出数据的数量 151 // 1.6、获取最大的发车数,用于输出数据的数量
297 Long maxfcno = ttInfoDetailRepository.findMaxFcno(xlid, ttid); 152 Long maxfcno = ttInfoDetailRepository.findMaxFcno(xlid, ttid);
@@ -315,9 +170,9 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -315,9 +170,9 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
315 headarrays[maxfcno.intValue() + 2] = "运营班次/运营里程"; 170 headarrays[maxfcno.intValue() + 2] = "运营班次/运营里程";
316 171
317 for (int r = 1; r < sheet.getRows(); r++) { 172 for (int r = 1; r < sheet.getRows(); r++) {
318 - List<FcInfo> fcInfos = new ArrayList<>(); 173 + List<TTInfoDetailService.FcInfo> fcInfos = new ArrayList<>();
319 // 每行第一列都是路牌 174 // 每行第一列都是路牌
320 - fcInfos.add(new FcInfo(null, null, sheet.getCell(0, r).getContents(), null, null, null, null)); // 用fcsj放置路牌显示 175 + fcInfos.add(new TTInfoDetailService.FcInfo(null, null, sheet.getCell(0, r).getContents(), null, null, null, null)); // 用fcsj放置路牌显示
321 176
322 int bc_ks = 0; // 空驶班次 177 int bc_ks = 0; // 空驶班次
323 int bc_yy = 0; // 营运班次 178 int bc_yy = 0; // 营运班次
@@ -340,7 +195,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -340,7 +195,7 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
340 String qdzCode = content == null ? "" : content[7]; // 起点站编码 195 String qdzCode = content == null ? "" : content[7]; // 起点站编码
341 String zdzCode = content == null ? "" : content[8]; // 终点站编码 196 String zdzCode = content == null ? "" : content[8]; // 终点站编码
342 197
343 - FcInfo fcInfo = new FcInfo(ttdid_str, bctype, fcsj, xldir, isfb, qdzCode, zdzCode); 198 + TTInfoDetailService.FcInfo fcInfo = new TTInfoDetailService.FcInfo(ttdid_str, bctype, fcsj, xldir, isfb, qdzCode, zdzCode);
344 199
345 if (StringUtils.isNotEmpty(fzdname)) 200 if (StringUtils.isNotEmpty(fzdname))
346 headarrays[c] = fzdname; 201 headarrays[c] = fzdname;
@@ -374,10 +229,10 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im @@ -374,10 +229,10 @@ public class TTInfoDetailServiceImpl extends BServiceImpl&lt;TTInfoDetail, Long&gt; im
374 } 229 }
375 230
376 // 添加一列 空驶班次/空驶里程,fcsj放置数据 231 // 添加一列 空驶班次/空驶里程,fcsj放置数据
377 - fcInfos.add(new FcInfo(null, null, String.format("%d/%.3f", bc_ks, lc_ks), null, null, null, null)); 232 + fcInfos.add(new TTInfoDetailService.FcInfo(null, null, String.format("%d/%.3f", bc_ks, lc_ks), null, null, null, null));
378 233
379 // 添加一列 营运班次/营运里程,fcsj放置数据 234 // 添加一列 营运班次/营运里程,fcsj放置数据
380 - fcInfos.add(new FcInfo(null, null, String.format("%d/%.3f", bc_yy, lc_yy), null, null, null, null)); 235 + fcInfos.add(new TTInfoDetailService.FcInfo(null, null, String.format("%d/%.3f", bc_yy, lc_yy), null, null, null, null));
381 236
382 editInfo.getContents().add(fcInfos); 237 editInfo.getContents().add(fcInfos);
383 } 238 }
src/main/java/com/bsth/service/schedule/rules/strategy/IStrategyImpl.java deleted 100644 → 0
1 -package com.bsth.service.schedule.rules.strategy;  
2 -  
3 -import com.bsth.entity.Line;  
4 -import com.bsth.entity.schedule.CarConfigInfo;  
5 -import com.bsth.entity.schedule.EmployeeConfigInfo;  
6 -import com.bsth.entity.schedule.TTInfo;  
7 -import com.bsth.entity.schedule.TTInfoDetail;  
8 -import com.bsth.entity.schedule.rule.ScheduleRule1Flat;  
9 -import com.bsth.service.LineService;  
10 -import com.bsth.service.schedule.*;  
11 -import com.bsth.service.schedule.rules.ttinfo.TTInfoCalcuParam_input;  
12 -import com.bsth.service.schedule.rules.ttinfo.TTInfoResult_output;  
13 -import com.bsth.service.schedule.rules.ttinfo.TTInfoResults_output;  
14 -import com.bsth.service.schedule.rules.ttinfo.TTInfo_input;  
15 -import com.google.common.collect.ArrayListMultimap;  
16 -import com.google.common.collect.Multimap;  
17 -import org.joda.time.DateTime;  
18 -import org.kie.api.KieBase;  
19 -import org.kie.api.runtime.KieSession;  
20 -import org.slf4j.Logger;  
21 -import org.slf4j.LoggerFactory;  
22 -import org.springframework.beans.factory.annotation.Autowired;  
23 -import org.springframework.stereotype.Service;  
24 -import org.springframework.util.CollectionUtils;  
25 -  
26 -import java.util.*;  
27 -  
28 -/**  
29 - * Created by xu on 16/7/10.  
30 - */  
31 -@Service  
32 -public class IStrategyImpl implements IStrategy {  
33 - @Autowired  
34 - private TTInfoService ttInfoService;  
35 - @Autowired  
36 - private CarConfigInfoService carConfigInfoService;  
37 - @Autowired  
38 - private EmployeeConfigInfoService employeeConfigInfoService;  
39 - @Autowired  
40 - private TTInfoDetailService ttInfoDetailService;  
41 - @Autowired  
42 - private LineService lineService;  
43 - @Autowired  
44 - private ScheduleRule1FlatService scheduleRule1FlatService;  
45 -  
46 - /** 日志记录器 */  
47 - private Logger logger = LoggerFactory.getLogger(IStrategyImpl.class);  
48 -  
49 - @Autowired  
50 - private KieBase kieBase;  
51 -  
52 - @Override  
53 - public Line getLine(Integer xlId) {  
54 - Map<String, Object> param = new HashMap<>();  
55 - param.put("id_eq", xlId);  
56 - param.put("destroy_eq", 0); // 未撤销  
57 - List<Line> lines = (List<Line>) lineService.list(param);  
58 - if (CollectionUtils.isEmpty(lines)) {  
59 - throw new RuntimeException("线路找不到,可能已经撤销!");  
60 - }  
61 - return lines.get(0);  
62 - }  
63 -  
64 - @Override  
65 - public List<TTInfo> getTTInfo(Integer xlId) {  
66 - // 查询参数  
67 - Map<String, Object> param = new HashMap<>();  
68 - param.put("xl.id_eq", xlId); // 线路Id  
69 - param.put("isCancel_eq", false); // 作废的过滤掉  
70 - Iterator<TTInfo> ttInfoIterator = ttInfoService.list(param).iterator();  
71 - if (!ttInfoIterator.hasNext()) {  
72 - throw new RuntimeException("线路id=" + xlId + " 没有时刻表!");  
73 - }  
74 - List<TTInfo> ttInfos = new ArrayList<>();  
75 - while (ttInfoIterator.hasNext()) {  
76 - TTInfo ttInfo = ttInfoIterator.next();  
77 - ttInfos.add(ttInfo);  
78 - }  
79 - return ttInfos;  
80 - }  
81 -  
82 - @Override  
83 - public List<TTInfoDetail> getTTInfoDetail(Integer xlId) {  
84 - List<TTInfoDetail> ttInfoDetails = new ArrayList<>();  
85 -  
86 - List<TTInfo> ttInfos = getTTInfo(xlId);  
87 - Map<String, Object> param = new HashMap<>();  
88 - for (TTInfo ttInfo : ttInfos) {  
89 - param.clear();  
90 - param.put("ttinfo.id_eq", ttInfo.getId());  
91 - Iterator<TTInfoDetail> ttInfoDetailIterator = ttInfoDetailService.list(param).iterator();  
92 - while (ttInfoDetailIterator.hasNext()) {  
93 - ttInfoDetails.add(ttInfoDetailIterator.next());  
94 - }  
95 - }  
96 -  
97 - return ttInfoDetails;  
98 - }  
99 -  
100 - @Override  
101 - public Iterable<ScheduleRule1Flat> getScheduleRule(Integer xlId) {  
102 - Map<String, Object> param = new HashMap<>(); // 查询参数  
103 - Line xl = lineService.findById(xlId); // 查找线路具体信息  
104 - param.clear();  
105 - param.put("xl.id_eq", xl.getId());  
106 - Iterable<ScheduleRule1Flat> scheduleRule1FlatIterable = scheduleRule1FlatService.list(param);  
107 - if (!scheduleRule1FlatIterable.iterator().hasNext())  
108 - throw new RuntimeException("线路:" + xl.getName() + " 没有配置规则!");  
109 -  
110 - return scheduleRule1FlatIterable;  
111 - }  
112 -  
113 - @Override  
114 - public Map<Date, Multimap<Long, TTInfoDetail>> getGuideboardXlTTInfoDetailMaps(  
115 - Integer xlId, Date fromDate, Date toDate) {  
116 - // 获取线路的所有时刻表  
117 - List<TTInfo> ttInfos = getTTInfo(xlId);  
118 -  
119 - // 执行规则,判定每天使用的时刻表  
120 - KieSession session = kieBase.newKieSession();  
121 -  
122 - session.setGlobal("log", logger);  
123 - TTInfoResults_output ttInfoResults_output = new TTInfoResults_output();  
124 - session.setGlobal("results", ttInfoResults_output);  
125 -  
126 - TTInfoCalcuParam_input ttInfoCalcuParam_input = new TTInfoCalcuParam_input(  
127 - new DateTime(fromDate), new DateTime(toDate), String.valueOf(xlId));  
128 - session.insert(ttInfoCalcuParam_input);  
129 - for (TTInfo ttInfo : ttInfos) {  
130 - TTInfo_input ttInfo_input = new TTInfo_input(ttInfo);  
131 - session.insert(ttInfo_input);  
132 - }  
133 -  
134 - session.fireAllRules();  
135 - session.dispose();  
136 -  
137 - // 获取ttinfoDetail  
138 - List<TTInfoDetail> ttInfoDetails = getTTInfoDetail(xlId);  
139 -  
140 - // 规则输出结果  
141 - Multimap<DateTime, TTInfoResult_output> outputMultimap =  
142 - ttInfoResults_output.getResults().get(String.valueOf(xlId));  
143 - // return结果输出  
144 - Map<Date, Multimap<Long, TTInfoDetail>> ttInfoDetailMultimap = new HashMap<>();  
145 -  
146 - for (DateTime dateTime : outputMultimap.keySet()) {  
147 - Collection<TTInfoResult_output> ttInfoResult_outputs = outputMultimap.get(dateTime);  
148 - // 如果有多个,使用第一个  
149 - Iterator<TTInfoResult_output> ttInfoResult_outputIterator = ttInfoResult_outputs.iterator();  
150 - if (ttInfoResult_outputIterator.hasNext()) {  
151 - // 同一天,多张时刻表只取第一张  
152 - TTInfoResult_output ttInfoResult_output = ttInfoResult_outputIterator.next();  
153 - // 查找时刻表明细  
154 - Multimap<Long, TTInfoDetail> ttinfodetailMap2 = ArrayListMultimap.create();  
155 - for (TTInfoDetail ttInfoDetail : ttInfoDetails) {  
156 - if (ttInfoDetail.getTtinfo().getId().equals(Long.valueOf(ttInfoResult_output.getTtInfoId()))) {  
157 - ttinfodetailMap2.put(ttInfoDetail.getLp().getId(), ttInfoDetail);  
158 - }  
159 - }  
160 -  
161 - ttInfoDetailMultimap.put(dateTime.toDate(), ttinfodetailMap2);  
162 - }  
163 - }  
164 -  
165 - return ttInfoDetailMultimap;  
166 - }  
167 -  
168 - @Override  
169 - public Map<Long, CarConfigInfo> getCarConfigMaps(Integer xlId) {  
170 - // 查询参数  
171 - Map<String, Object> param = new HashMap<>();  
172 - param.put("xl.id_eq", xlId);  
173 - Iterable<CarConfigInfo> carConfigInfoIterable = carConfigInfoService.list(param);  
174 - Iterator<CarConfigInfo> carConfigInfoIterator = carConfigInfoIterable.iterator();  
175 - if (!carConfigInfoIterator.hasNext())  
176 - throw new RuntimeException("线路id=" + xlId + ",下没有车辆配置信息!");  
177 -  
178 - Map<Long, CarConfigInfo> carConfigInfoMap = new HashMap<>();  
179 - while (carConfigInfoIterator.hasNext()) {  
180 - CarConfigInfo carConfigInfo = carConfigInfoIterator.next();  
181 - carConfigInfoMap.put(carConfigInfo.getId(), carConfigInfo);  
182 - }  
183 - return carConfigInfoMap;  
184 - }  
185 -  
186 - @Override  
187 - public Map<Long, EmployeeConfigInfo> getEmployeeConfigMaps(Integer xlId) {  
188 - // 查询参数  
189 - Map<String, Object> param = new HashMap<>();  
190 - param.put("xl.id_eq", xlId);  
191 - Iterable<EmployeeConfigInfo> employeeConfigInfoIterable = employeeConfigInfoService.list(param);  
192 - Iterator<EmployeeConfigInfo> employeeConfigInfoIterator = employeeConfigInfoIterable.iterator();  
193 - if (!employeeConfigInfoIterator.hasNext())  
194 - throw new RuntimeException("线路id=" + xlId + ",下没有人员配置信息!");  
195 -  
196 - Map<Long, EmployeeConfigInfo> employeeConfigInfoMap = new HashMap<>();  
197 - while (employeeConfigInfoIterator.hasNext()) {  
198 - EmployeeConfigInfo employeeConfigInfo = employeeConfigInfoIterator.next();  
199 - employeeConfigInfoMap.put(employeeConfigInfo.getId(), employeeConfigInfo);  
200 - }  
201 - return employeeConfigInfoMap;  
202 - }  
203 -}  
src/main/resources/datatools/ktrs/carsDataInput.ktr
@@ -475,7 +475,7 @@ @@ -475,7 +475,7 @@
475 <name2/> 475 <name2/>
476 </key> 476 </key>
477 <value> 477 <value>
478 - <name>car_gride</name> 478 + <name>car_plate</name>
479 <rename>&#x8f66;&#x724c;&#x53f7;</rename> 479 <rename>&#x8f66;&#x724c;&#x53f7;</rename>
480 <update>Y</update> 480 <update>Y</update>
481 </value> 481 </value>
@@ -645,7 +645,7 @@ @@ -645,7 +645,7 @@
645 <format/> 645 <format/>
646 </field> 646 </field>
647 <field> 647 <field>
648 - <name>&#x4f9b;&#x5e94;&#x5546;&#x540d;&#x79f0;</name> 648 + <name>&#x8bbe;&#x5907;&#x4f9b;&#x5e94;&#x5382;&#x5546;</name>
649 <type>String</type> 649 <type>String</type>
650 <format/> 650 <format/>
651 </field> 651 </field>
src/main/resources/datatools/ktrs/ttinfodetailDataInputMetaData.ktr
@@ -30,6 +30,11 @@ @@ -30,6 +30,11 @@
30 <description>&#x6ce8;&#x5165;&#x5143;&#x6570;&#x636e;&#x7684;ktr&#x6587;&#x4ef6;</description> 30 <description>&#x6ce8;&#x5165;&#x5143;&#x6570;&#x636e;&#x7684;ktr&#x6587;&#x4ef6;</description>
31 </parameter> 31 </parameter>
32 <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>
33 <name>normalizefieldnames</name> 38 <name>normalizefieldnames</name>
34 <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> 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>
35 <description>&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;&#x5b57;&#x6bb5;&#x540d;&#xff0c;&#x4ee5;&#x9017;&#x53f7;&#x8fde;&#x63a5;</description> 40 <description>&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;&#x5b57;&#x6bb5;&#x540d;&#xff0c;&#x4ee5;&#x9017;&#x53f7;&#x8fde;&#x63a5;</description>
@@ -126,6 +131,30 @@ @@ -126,6 +131,30 @@
126 <notepads> 131 <notepads>
127 </notepads> 132 </notepads>
128 <connection> 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>
129 <name>bus_control_variable</name> 158 <name>bus_control_variable</name>
130 <server>&#x24;&#x7b;v_db_ip&#x7d;</server> 159 <server>&#x24;&#x7b;v_db_ip&#x7d;</server>
131 <type>MYSQL</type> 160 <type>MYSQL</type>
@@ -297,7 +326,6 @@ @@ -297,7 +326,6 @@
297 <hop> <from>&#x83b7;&#x53d6;&#x7ebf;&#x8def;&#x540d;&#x79f0;</from><to>&#x589e;&#x52a0;&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata</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>
298 <hop> <from>&#x589e;&#x52a0;&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata</from><to>&#x66ff;&#x6362;&#x7ebf;&#x8def;&#x540d;&#x79f0;</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>
299 <hop> <from>&#x66ff;&#x6362;&#x7ebf;&#x8def;&#x540d;&#x79f0;</from><to>&#x7ebf;&#x8def;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</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>
300 - <hop> <from>&#x83b7;&#x53d6;&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;</from><to>&#x589e;&#x52a0;&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata</to><enabled>Y</enabled> </hop>  
301 <hop> <from>&#x589e;&#x52a0;&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata</from><to>&#x66ff;&#x6362;&#x505c;&#x8f66;&#x5382;&#x540d;&#x5b57; </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>
302 <hop> <from>&#x66ff;&#x6362;&#x505c;&#x8f66;&#x5382;&#x540d;&#x5b57; </from><to>&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;metadata&#x5b57;&#x6bb5;</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>
303 <hop> <from>&#x83b7;&#x53d6;&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;</from><to>&#x589e;&#x52a0;&#x65f6;&#x523b;&#x8868;&#x540d;&#x79f0;metadata</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>
@@ -308,6 +336,9 @@ @@ -308,6 +336,9 @@
308 <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> 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>
309 <hop> <from>&#x5408;&#x5e76;&#x589e;&#x52a0;&#x5e38;&#x91cf;&#x6570;&#x636e;metadata</from><to>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</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>
310 <hop> <from>&#x83b7;&#x53d6;&#x65f6;&#x523b;&#x8868;id</from><to>&#x5220;&#x9664;&#x4e4b;&#x524d;&#x7684;&#x660e;&#x7ec6;&#x4fe1;&#x606f;</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>
311 </order> 342 </order>
312 <step> 343 <step>
313 <name>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</name> 344 <name>ETL&#x5143;&#x6570;&#x636e;&#x6ce8;&#x5165;</name>
@@ -391,15 +422,15 @@ @@ -391,15 +422,15 @@
391 <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step> 422 <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step>
392 <source_field>nfieldname</source_field> 423 <source_field>nfieldname</source_field>
393 </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name> 424 </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
394 - <target_attribute_key>SHEET_NAME</target_attribute_key>  
395 - <target_detail>Y</target_detail>  
396 - <source_step>&#x83b7;&#x53d6;excel&#x6587;&#x4ef6;&#x540d;</source_step>  
397 - <source_field>sheetname_</source_field>  
398 - </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>  
399 <target_attribute_key>LENGTH</target_attribute_key> 425 <target_attribute_key>LENGTH</target_attribute_key>
400 <target_detail>Y</target_detail> 426 <target_detail>Y</target_detail>
401 <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step> 427 <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
402 <source_field>length</source_field> 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>
403 </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> 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>
404 <target_attribute_key>NAME</target_attribute_key> 435 <target_attribute_key>NAME</target_attribute_key>
405 <target_detail>Y</target_detail> 436 <target_detail>Y</target_detail>
@@ -415,41 +446,41 @@ @@ -415,41 +446,41 @@
415 <target_detail>Y</target_detail> 446 <target_detail>Y</target_detail>
416 <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step> 447 <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
417 <source_field>fieldName</source_field> 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>
418 </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name> 454 </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
419 <target_attribute_key>TRIM_TYPE</target_attribute_key> 455 <target_attribute_key>TRIM_TYPE</target_attribute_key>
420 <target_detail>Y</target_detail> 456 <target_detail>Y</target_detail>
421 <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step> 457 <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c;</source_step>
422 <source_field>trim_type</source_field> 458 <source_field>trim_type</source_field>
423 </mapping> <mapping> <target_step_name>&#x884c;&#x8f6c;&#x5217;</target_step_name> 459 </mapping> <mapping> <target_step_name>&#x884c;&#x8f6c;&#x5217;</target_step_name>
424 - <target_attribute_key>VALUE</target_attribute_key> 460 + <target_attribute_key>NORMALISED</target_attribute_key>
425 <target_detail>Y</target_detail> 461 <target_detail>Y</target_detail>
426 <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</source_step> 462 <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</source_step>
427 - <source_field>fieldName</source_field> 463 + <source_field>value</source_field>
428 </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name> 464 </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>
429 <target_attribute_key>REPEAT</target_attribute_key> 465 <target_attribute_key>REPEAT</target_attribute_key>
430 <target_detail>Y</target_detail> 466 <target_detail>Y</target_detail>
431 <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step> 467 <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>
432 <source_field>repeat</source_field> 468 <source_field>repeat</source_field>
433 - </mapping> <mapping> <target_step_name>&#x884c;&#x8f6c;&#x5217;</target_step_name>  
434 - <target_attribute_key>NORMALISED</target_attribute_key>  
435 - <target_detail>Y</target_detail>  
436 - <source_step>&#x5217;&#x62c6;&#x5206;&#x4e3a;&#x591a;&#x884c; 2</source_step>  
437 - <source_field>value</source_field>  
438 </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name> 469 </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name>
439 <target_attribute_key>NORMALISED</target_attribute_key> 470 <target_attribute_key>NORMALISED</target_attribute_key>
440 <target_detail>Y</target_detail> 471 <target_detail>Y</target_detail>
441 <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step> 472 <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step>
442 <source_field>valuefield</source_field> 473 <source_field>valuefield</source_field>
443 - </mapping> <mapping> <target_step_name>&#x65f6;&#x523b;&#x8868;&#x660e;&#x7ec6;&#x4fe1;&#x606f;Excel&#x8f93;&#x5165;</target_step_name>  
444 - <target_attribute_key>FORMAT</target_attribute_key>  
445 - <target_detail>Y</target_detail>  
446 - <source_step>&#x589e;&#x52a0;excel&#x5b57;&#x6bb5;&#x5176;&#x4ed6;&#x5143;&#x6570;&#x636e;</source_step>  
447 - <source_field>format</source_field>  
448 </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name> 474 </mapping> <mapping> <target_step_name>&#x73ed;&#x6b21;&#x6570;&#x636e;&#x8303;&#x5f0f;&#x5316;</target_step_name>
449 <target_attribute_key>VALUE</target_attribute_key> 475 <target_attribute_key>VALUE</target_attribute_key>
450 <target_detail>Y</target_detail> 476 <target_detail>Y</target_detail>
451 <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step> 477 <source_step>&#x589e;&#x52a0;normalize&#x5143;&#x6570;&#x636e;</source_step>
452 <source_field>nfieldname</source_field> 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>
453 </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name> 484 </mapping> <mapping> <target_step_name>Excel&#x8f93;&#x5165;</target_step_name>
454 <target_attribute_key>PRECISION</target_attribute_key> 485 <target_attribute_key>PRECISION</target_attribute_key>
455 <target_detail>Y</target_detail> 486 <target_detail>Y</target_detail>
@@ -457,8 +488,8 @@ @@ -457,8 +488,8 @@
457 <source_field>precision</source_field> 488 <source_field>precision</source_field>
458 </mapping> </mappings> <cluster_schema/> 489 </mapping> </mappings> <cluster_schema/>
459 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 490 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
460 - <xloc>695</xloc>  
461 - <yloc>177</yloc> 491 + <xloc>876</xloc>
  492 + <yloc>167</yloc>
462 <draw>Y</draw> 493 <draw>Y</draw>
463 </GUI> 494 </GUI>
464 </step> 495 </step>
@@ -489,8 +520,8 @@ @@ -489,8 +520,8 @@
489 </field> <select_unspecified>N</select_unspecified> 520 </field> <select_unspecified>N</select_unspecified>
490 </fields> <cluster_schema/> 521 </fields> <cluster_schema/>
491 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 522 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
492 - <xloc>490</xloc>  
493 - <yloc>429</yloc> 523 + <xloc>743</xloc>
  524 + <yloc>470</yloc>
494 <draw>Y</draw> 525 <draw>Y</draw>
495 </GUI> 526 </GUI>
496 </step> 527 </step>
@@ -522,8 +553,8 @@ @@ -522,8 +553,8 @@
522 </arguments> 553 </arguments>
523 <cluster_schema/> 554 <cluster_schema/>
524 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 555 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
525 - <xloc>627</xloc>  
526 - <yloc>26</yloc> 556 + <xloc>808</xloc>
  557 + <yloc>16</yloc>
527 <draw>Y</draw> 558 <draw>Y</draw>
528 </GUI> 559 </GUI>
529 </step> 560 </step>
@@ -541,8 +572,8 @@ @@ -541,8 +572,8 @@
541 </partitioning> 572 </partitioning>
542 <cluster_schema/> 573 <cluster_schema/>
543 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 574 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
544 - <xloc>702</xloc>  
545 - <yloc>383</yloc> 575 + <xloc>883</xloc>
  576 + <yloc>373</yloc>
546 <draw>Y</draw> 577 <draw>Y</draw>
547 </GUI> 578 </GUI>
548 </step> 579 </step>
@@ -634,8 +665,8 @@ @@ -634,8 +665,8 @@
634 </fields> 665 </fields>
635 <cluster_schema/> 666 <cluster_schema/>
636 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 667 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
637 - <xloc>441</xloc>  
638 - <yloc>172</yloc> 668 + <xloc>622</xloc>
  669 + <yloc>162</yloc>
639 <draw>Y</draw> 670 <draw>Y</draw>
640 </GUI> 671 </GUI>
641 </step> 672 </step>
@@ -667,8 +698,8 @@ @@ -667,8 +698,8 @@
667 </fields> 698 </fields>
668 <cluster_schema/> 699 <cluster_schema/>
669 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 700 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
670 - <xloc>447</xloc>  
671 - <yloc>257</yloc> 701 + <xloc>628</xloc>
  702 + <yloc>247</yloc>
672 <draw>Y</draw> 703 <draw>Y</draw>
673 </GUI> 704 </GUI>
674 </step> 705 </step>
@@ -724,8 +755,8 @@ @@ -724,8 +755,8 @@
724 </fields> 755 </fields>
725 <cluster_schema/> 756 <cluster_schema/>
726 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 757 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
727 - <xloc>208</xloc>  
728 - <yloc>428</yloc> 758 + <xloc>461</xloc>
  759 + <yloc>469</yloc>
729 <draw>Y</draw> 760 <draw>Y</draw>
730 </GUI> 761 </GUI>
731 </step> 762 </step>
@@ -781,8 +812,8 @@ @@ -781,8 +812,8 @@
781 </fields> 812 </fields>
782 <cluster_schema/> 813 <cluster_schema/>
783 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 814 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
784 - <xloc>216</xloc>  
785 - <yloc>508</yloc> 815 + <xloc>608</xloc>
  816 + <yloc>601</yloc>
786 <draw>Y</draw> 817 <draw>Y</draw>
787 </GUI> 818 </GUI>
788 </step> 819 </step>
@@ -838,8 +869,8 @@ @@ -838,8 +869,8 @@
838 </fields> 869 </fields>
839 <cluster_schema/> 870 <cluster_schema/>
840 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 871 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
841 - <xloc>202</xloc>  
842 - <yloc>351</yloc> 872 + <xloc>383</xloc>
  873 + <yloc>341</yloc>
843 <draw>Y</draw> 874 <draw>Y</draw>
844 </GUI> 875 </GUI>
845 </step> 876 </step>
@@ -870,8 +901,8 @@ @@ -870,8 +901,8 @@
870 </field> <select_unspecified>N</select_unspecified> 901 </field> <select_unspecified>N</select_unspecified>
871 </fields> <cluster_schema/> 902 </fields> <cluster_schema/>
872 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 903 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
873 - <xloc>496</xloc>  
874 - <yloc>508</yloc> 904 + <xloc>888</xloc>
  905 + <yloc>601</yloc>
875 <draw>Y</draw> 906 <draw>Y</draw>
876 </GUI> 907 </GUI>
877 </step> 908 </step>
@@ -895,8 +926,8 @@ @@ -895,8 +926,8 @@
895 </fields> 926 </fields>
896 <cluster_schema/> 927 <cluster_schema/>
897 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 928 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
898 - <xloc>345</xloc>  
899 - <yloc>430</yloc> 929 + <xloc>598</xloc>
  930 + <yloc>471</yloc>
900 <draw>Y</draw> 931 <draw>Y</draw>
901 </GUI> 932 </GUI>
902 </step> 933 </step>
@@ -920,8 +951,8 @@ @@ -920,8 +951,8 @@
920 </fields> 951 </fields>
921 <cluster_schema/> 952 <cluster_schema/>
922 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 953 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
923 - <xloc>354</xloc>  
924 - <yloc>509</yloc> 954 + <xloc>746</xloc>
  955 + <yloc>602</yloc>
925 <draw>Y</draw> 956 <draw>Y</draw>
926 </GUI> 957 </GUI>
927 </step> 958 </step>
@@ -945,8 +976,8 @@ @@ -945,8 +976,8 @@
945 </fields> 976 </fields>
946 <cluster_schema/> 977 <cluster_schema/>
947 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 978 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
948 - <xloc>340</xloc>  
949 - <yloc>352</yloc> 979 + <xloc>521</xloc>
  980 + <yloc>342</yloc>
950 <draw>Y</draw> 981 <draw>Y</draw>
951 </GUI> 982 </GUI>
952 </step> 983 </step>
@@ -977,8 +1008,8 @@ @@ -977,8 +1008,8 @@
977 </field> <select_unspecified>N</select_unspecified> 1008 </field> <select_unspecified>N</select_unspecified>
978 </fields> <cluster_schema/> 1009 </fields> <cluster_schema/>
979 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1010 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
980 - <xloc>487</xloc>  
981 - <yloc>353</yloc> 1011 + <xloc>668</xloc>
  1012 + <yloc>343</yloc>
982 <draw>Y</draw> 1013 <draw>Y</draw>
983 </GUI> 1014 </GUI>
984 </step> 1015 </step>
@@ -1010,8 +1041,8 @@ @@ -1010,8 +1041,8 @@
1010 </fields> 1041 </fields>
1011 <cluster_schema/> 1042 <cluster_schema/>
1012 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1043 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1013 - <xloc>71</xloc>  
1014 - <yloc>163</yloc> 1044 + <xloc>252</xloc>
  1045 + <yloc>153</yloc>
1015 <draw>Y</draw> 1046 <draw>Y</draw>
1016 </GUI> 1047 </GUI>
1017 </step> 1048 </step>
@@ -1067,8 +1098,8 @@ @@ -1067,8 +1098,8 @@
1067 </fields> 1098 </fields>
1068 <cluster_schema/> 1099 <cluster_schema/>
1069 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1100 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1070 - <xloc>120</xloc>  
1071 - <yloc>62</yloc> 1101 + <xloc>301</xloc>
  1102 + <yloc>52</yloc>
1072 <draw>Y</draw> 1103 <draw>Y</draw>
1073 </GUI> 1104 </GUI>
1074 </step> 1105 </step>
@@ -1100,41 +1131,8 @@ @@ -1100,41 +1131,8 @@
1100 </fields> 1131 </fields>
1101 <cluster_schema/> 1132 <cluster_schema/>
1102 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1133 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1103 - <xloc>80</xloc>  
1104 - <yloc>261</yloc>  
1105 - <draw>Y</draw>  
1106 - </GUI>  
1107 - </step>  
1108 -  
1109 - <step>  
1110 - <name>&#x83b7;&#x53d6;&#x505c;&#x8f66;&#x573a;&#x540d;&#x79f0;</name>  
1111 - <type>GetVariable</type>  
1112 - <description/>  
1113 - <distribute>Y</distribute>  
1114 - <custom_distribution/>  
1115 - <copies>1</copies>  
1116 - <partitioning>  
1117 - <method>none</method>  
1118 - <schema_name/>  
1119 - </partitioning>  
1120 - <fields>  
1121 - <field>  
1122 - <name>tccname_</name>  
1123 - <variable>&#x24;&#x7b;tccname&#x7d;</variable>  
1124 - <type>String</type>  
1125 - <format/>  
1126 - <currency/>  
1127 - <decimal/>  
1128 - <group/>  
1129 - <length>-1</length>  
1130 - <precision>-1</precision>  
1131 - <trim_type>none</trim_type>  
1132 - </field>  
1133 - </fields>  
1134 - <cluster_schema/>  
1135 - <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>  
1136 - <xloc>80</xloc>  
1137 - <yloc>430</yloc> 1134 + <xloc>261</xloc>
  1135 + <yloc>251</yloc>
1138 <draw>Y</draw> 1136 <draw>Y</draw>
1139 </GUI> 1137 </GUI>
1140 </step> 1138 </step>
@@ -1166,8 +1164,8 @@ @@ -1166,8 +1164,8 @@
1166 </fields> 1164 </fields>
1167 <cluster_schema/> 1165 <cluster_schema/>
1168 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1166 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1169 - <xloc>427</xloc>  
1170 - <yloc>26</yloc> 1167 + <xloc>608</xloc>
  1168 + <yloc>16</yloc>
1171 <draw>Y</draw> 1169 <draw>Y</draw>
1172 </GUI> 1170 </GUI>
1173 </step> 1171 </step>
@@ -1199,8 +1197,8 @@ @@ -1199,8 +1197,8 @@
1199 </fields> 1197 </fields>
1200 <cluster_schema/> 1198 <cluster_schema/>
1201 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1199 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1202 - <xloc>82</xloc>  
1203 - <yloc>508</yloc> 1200 + <xloc>474</xloc>
  1201 + <yloc>601</yloc>
1204 <draw>Y</draw> 1202 <draw>Y</draw>
1205 </GUI> 1203 </GUI>
1206 </step> 1204 </step>
@@ -1232,8 +1230,8 @@ @@ -1232,8 +1230,8 @@
1232 </fields> 1230 </fields>
1233 <cluster_schema/> 1231 <cluster_schema/>
1234 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1232 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1235 - <xloc>78</xloc>  
1236 - <yloc>351</yloc> 1233 + <xloc>184</xloc>
  1234 + <yloc>342</yloc>
1237 <draw>Y</draw> 1235 <draw>Y</draw>
1238 </GUI> 1236 </GUI>
1239 </step> 1237 </step>
@@ -1258,8 +1256,8 @@ @@ -1258,8 +1256,8 @@
1258 <delimiter_is_regex>N</delimiter_is_regex> 1256 <delimiter_is_regex>N</delimiter_is_regex>
1259 <cluster_schema/> 1257 <cluster_schema/>
1260 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1258 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1261 - <xloc>261</xloc>  
1262 - <yloc>163</yloc> 1259 + <xloc>442</xloc>
  1260 + <yloc>153</yloc>
1263 <draw>Y</draw> 1261 <draw>Y</draw>
1264 </GUI> 1262 </GUI>
1265 </step> 1263 </step>
@@ -1284,8 +1282,125 @@ @@ -1284,8 +1282,125 @@
1284 <delimiter_is_regex>N</delimiter_is_regex> 1282 <delimiter_is_regex>N</delimiter_is_regex>
1285 <cluster_schema/> 1283 <cluster_schema/>
1286 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI> 1284 <remotesteps> <input> </input> <output> </output> </remotesteps> <GUI>
1287 - <xloc>263</xloc>  
1288 - <yloc>257</yloc> 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>
1289 <draw>Y</draw> 1404 <draw>Y</draw>
1290 </GUI> 1405 </GUI>
1291 </step> 1406 </step>
src/main/resources/static/pages/report/timetable/timetable.html
@@ -165,13 +165,14 @@ @@ -165,13 +165,14 @@
165 <div class="col-md-6" > 165 <div class="col-md-6" >
166 <table class="table table-bordered table-checkable" id="formsTime5"> 166 <table class="table table-bordered table-checkable" id="formsTime5">
167 <tr> 167 <tr>
168 - <td colspan="5">全日分组行驶时间(区间除外)</td> 168 + <td colspan="6">全日分组行驶时间(区间除外)</td>
169 </tr> 169 </tr>
170 <tr> 170 <tr>
171 - <td width="25%" rowspan="2" style="text-align:center;vertical-align:middle;">分组 时间</td>  
172 - <td width="30%" colspan="2" style="text-align:center;vertical-align:middle;">实驶(分)</td> 171 + <td width="20%" rowspan="2" style="text-align:center;vertical-align:middle;">分组 时间</td>
  172 + <td width="25%" colspan="2" style="text-align:center;vertical-align:middle;">计划行驶(分)</td>
173 <td width="20%" rowspan="2" style="text-align:center;vertical-align:middle;">分圈 时间</td> 173 <td width="20%" rowspan="2" style="text-align:center;vertical-align:middle;">分圈 时间</td>
174 - <td width="25%" rowspan="2" style="text-align:center;vertical-align:middle;">车距</td> 174 + <td width="20%" rowspan="2" style="text-align:center;vertical-align:middle;">车距区间</td>
  175 + <td width="15%" rowspan="2" style="text-align:center;vertical-align:middle;">平均车距</td>
175 </tr> 176 </tr>
176 <tr> 177 <tr>
177 <td>上行</td> 178 <td>上行</td>
@@ -398,12 +399,13 @@ @@ -398,12 +399,13 @@
398 <td align="center">{{result.sxsj}}</td> 399 <td align="center">{{result.sxsj}}</td>
399 <td align="center">{{result.xxsj}}</td> 400 <td align="center">{{result.xxsj}}</td>
400 <td align="center">{{result.fqsj}}</td> 401 <td align="center">{{result.fqsj}}</td>
401 - <td align="center">{{result.cj}}</td> 402 + <td align="center">{{result.cjqj}}</td>
  403 + <td align="center">{{result.pjcj}}</td>
402 </tr> 404 </tr>
403 {{/each}} 405 {{/each}}
404 {{if list.length == 0}} 406 {{if list.length == 0}}
405 <tr> 407 <tr>
406 - <td colspan="5"><h6 class="muted">没有找到相关数据</h6></td> 408 + <td colspan="6"><h6 class="muted">没有找到相关数据</h6></td>
407 </tr> 409 </tr>
408 {{/if}} 410 {{/if}}
409 </script> 411 </script>
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/report/ext/list.html
@@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@
13 13
14 <div class="fixDiv"> 14 <div class="fixDiv">
15 <table class="fixTable table table-striped table-bordered table-hover table-checkable order-column" 15 <table class="fixTable table table-striped table-bordered table-hover table-checkable order-column"
16 - style="width: 1800px; min-height: 500px;"> 16 + style="width: 1600px; min-height: 500px;">
17 <thead> 17 <thead>
18 <tr role="row" class="heading"> 18 <tr role="row" class="heading">
19 <th style="width: 50px;">序号</th> 19 <th style="width: 50px;">序号</th>
@@ -24,10 +24,8 @@ @@ -24,10 +24,8 @@
24 <th style="width: 100px;">车辆</th> 24 <th style="width: 100px;">车辆</th>
25 <th style="width: 80px;">出场时间</th> 25 <th style="width: 80px;">出场时间</th>
26 <th style="width: 80px;">进场时间</th> 26 <th style="width: 80px;">进场时间</th>
27 - <th style="width: 100px;">驾驶员姓名</th>  
28 - <th style="width: 100px;">驾驶员工号</th>  
29 - <th style="width: 100px;">售票员姓名</th>  
30 - <th style="width: 100px;">售票员工号</th> 27 + <th style="width: 130px;">驾驶员</th>
  28 + <th style="width: 130px;">售票员</th>
31 <th>时刻表</th> 29 <th>时刻表</th>
32 <th style="width: 150px;">修改时间</th> 30 <th style="width: 150px;">修改时间</th>
33 <th style="width: 100px;">修改人</th> 31 <th style="width: 100px;">修改人</th>
@@ -72,8 +70,6 @@ @@ -72,8 +70,6 @@
72 <td></td> 70 <td></td>
73 <td></td> 71 <td></td>
74 <td></td> 72 <td></td>
75 - <td></td>  
76 - <td></td>  
77 </tr> 73 </tr>
78 </thead> 74 </thead>
79 <tbody> 75 <tbody>
@@ -114,35 +110,43 @@ @@ -114,35 +110,43 @@
114 </a> 110 </a>
115 </div> 111 </div>
116 </td> 112 </td>
117 - <td>  
118 - <div ng-repeat="jsyname in info.jsyNames">  
119 - <a href="#">  
120 - {{jsyname}}  
121 - </a>  
122 - </div>  
123 - </td>  
124 - <td>  
125 - <div ng-repeat="jsygh in info.jsyGhs">  
126 - <a href="#">  
127 - {{jsygh}}  
128 - </a>  
129 - </div>  
130 - </td>  
131 - <td>  
132 - <div ng-repeat="spyname in info.spyNames">  
133 - <a href="#">  
134 - {{spyname}}  
135 - </a> 113 + <td class="container-fluid">
  114 + <div class="row">
  115 + <div style="padding-right: 0px;" class="col-md-6">
  116 + <div ng-repeat="jsyname in info.jsyNames">
  117 + <a href="#">
  118 + {{jsyname}}
  119 + </a>
  120 + </div>
  121 + </div>
  122 + <div style="padding-left: 0px;" class="col-md-6">
  123 + <div ng-repeat="jsygh in info.jsyGhs">
  124 + <a href="#">
  125 + {{jsygh}}
  126 + </a>
  127 + </div>
  128 + </div>
136 </div> 129 </div>
137 </td> 130 </td>
138 - <td>  
139 - <div ng-repeat="spygh in info.spyGhs">  
140 - <a href="#">  
141 - {{spygh}}  
142 - </a> 131 + <td class="container-fluid">
  132 + <div class="row">
  133 + <div style="padding-right: 0px;" class="col-md-6">
  134 + <div ng-repeat="spyname in info.spyNames">
  135 + <a href="#">
  136 + {{spyname}}
  137 + </a>
  138 + </div>
  139 + </div>
  140 + <div style="padding-left: 0px;" class="col-md-6">
  141 + <div ng-repeat="spygh in info.spyGhs">
  142 + <a href="#">
  143 + {{spygh}}
  144 + </a>
  145 + </div>
  146 + </div>
143 </div> 147 </div>
144 - </td>  
145 148
  149 + </td>
146 <td> 150 <td>
147 <span ng-bind="info.ttInfoName"></span> 151 <span ng-bind="info.ttInfoName"></span>
148 </td> 152 </td>
src/main/resources/static/real_control_v2/css/main.css
@@ -1158,3 +1158,8 @@ ul.left_tabs_lg li{ @@ -1158,3 +1158,8 @@ ul.left_tabs_lg li{
1158 padding: 2px 7px; 1158 padding: 2px 7px;
1159 border-radius: 3px; 1159 border-radius: 3px;
1160 } 1160 }
  1161 +
  1162 +.uk-badge.sch_ldks{
  1163 + background: #8c8c8c;
  1164 + background-image: linear-gradient(to bottom,#a7a7a7,#8c8c8c);
  1165 +}
src/main/resources/static/real_control_v2/fragments/line_schedule/badge_tooltip.html
@@ -61,4 +61,12 @@ @@ -61,4 +61,12 @@
61 </div> 61 </div>
62 </div> 62 </div>
63 </script> 63 </script>
  64 +
  65 + <script id="sch-table-ldks-tootip-temp" type="text/html">
  66 + <div class="tl-tip-panel">
  67 + <div style="font-size: 13px;">
  68 + {{qdzName}} 空驶至 {{zdzName}}
  69 + </div>
  70 + </div>
  71 + </script>
64 </div> 72 </div>
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/dftz.html
@@ -115,6 +115,10 @@ @@ -115,6 +115,10 @@
115 (function() { 115 (function() {
116 var modal = '#schedule-dftz-modal' 116 var modal = '#schedule-dftz-modal'
117 ,sch; 117 ,sch;
  118 +
  119 + var isInout = function (code) {
  120 + return code=='out' || code=='in';
  121 + };
118 $(modal).on('init', function(e, data) { 122 $(modal).on('init', function(e, data) {
119 e.stopPropagation(); 123 e.stopPropagation();
120 sch=data.sch; 124 sch=data.sch;
@@ -125,12 +129,12 @@ @@ -125,12 +129,12 @@
125 var bctypes=dictionaryUtils.getByGroup('ScheduleType') 129 var bctypes=dictionaryUtils.getByGroup('ScheduleType')
126 ,opts=''; 130 ,opts='';
127 131
128 - if(sch.bcType == 'out' || sch.bcType == 'in'){ 132 + if(isInout(sch.bcType)){
129 $('[name=bcType]', modal).html('<option value="'+sch.bcType+'">'+bctypes[sch.bcType]+'</option>'); 133 $('[name=bcType]', modal).html('<option value="'+sch.bcType+'">'+bctypes[sch.bcType]+'</option>');
130 } 134 }
131 else{ 135 else{
132 for(var code in bctypes){ 136 for(var code in bctypes){
133 - if(code!='venting' && code!='major' && code != 'normal') 137 + if(isInout(code))
134 continue; 138 continue;
135 opts+='<option value="'+code+'">'+bctypes[code]+'</option>'; 139 opts+='<option value="'+code+'">'+bctypes[code]+'</option>';
136 } 140 }
@@ -166,10 +170,12 @@ @@ -166,10 +170,12 @@
166 url='/real_control_v2/fragments/line_schedule/context_menu/bc_type_venting.html'; 170 url='/real_control_v2/fragments/line_schedule/context_menu/bc_type_venting.html';
167 detailModal='#bctype-venting-modal'; 171 detailModal='#bctype-venting-modal';
168 } 172 }
169 - else{ 173 + else if(type=='major'){
170 detailModal='#bctype-major-modal'; 174 detailModal='#bctype-major-modal';
171 url='/real_control_v2/fragments/line_schedule/context_menu/bc_type_major.html'; 175 url='/real_control_v2/fragments/line_schedule/context_menu/bc_type_major.html';
172 } 176 }
  177 + else
  178 + return;
173 179
174 $.get(url, function(htmlStr){ 180 $.get(url, function(htmlStr){
175 $(document.body).append(htmlStr); 181 $(document.body).append(htmlStr);
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/lj_zrw.html
@@ -99,6 +99,8 @@ @@ -99,6 +99,8 @@
99 <span class="uk-badge uk-badge-danger">放站</span> 99 <span class="uk-badge uk-badge-danger">放站</span>
100 {{else if sch.bcType == "region"}} 100 {{else if sch.bcType == "region"}}
101 <span class="uk-badge">区间</span> 101 <span class="uk-badge">区间</span>
  102 + {{else if sch.bcType == "ldks"}}
  103 + <span class="uk-badge sch_ldks">空驶</span>
102 {{/if}} 104 {{/if}}
103 {{if sch.sflj}} 105 {{if sch.sflj}}
104 <span class="uk-badge uk-badge-danger">临加</span> 106 <span class="uk-badge uk-badge-danger">临加</span>
src/main/resources/static/real_control_v2/fragments/line_schedule/sch_table.html
@@ -74,6 +74,8 @@ @@ -74,6 +74,8 @@
74 <span class="uk-badge uk-badge-danger">放站</span> 74 <span class="uk-badge uk-badge-danger">放站</span>
75 {{else if sch.bcType == "region"}} 75 {{else if sch.bcType == "region"}}
76 <span class="uk-badge sch_region">区间</span> 76 <span class="uk-badge sch_region">区间</span>
  77 + {{else if sch.bcType == "ldks"}}
  78 + <span class="uk-badge sch_ldks">空驶</span>
77 {{/if}} 79 {{/if}}
78 {{if sch.sflj}} 80 {{if sch.sflj}}
79 <span class="uk-badge uk-badge-danger">临加</span> 81 <span class="uk-badge uk-badge-danger">临加</span>
@@ -126,6 +128,8 @@ @@ -126,6 +128,8 @@
126 <span class="uk-badge uk-badge-danger">放站</span> 128 <span class="uk-badge uk-badge-danger">放站</span>
127 {{else if bcType == "region"}} 129 {{else if bcType == "region"}}
128 <span class="uk-badge sch_region">区间</span> 130 <span class="uk-badge sch_region">区间</span>
  131 + {{else if bcType == "ldks"}}
  132 + <span class="uk-badge sch_ldks">空驶</span>
129 {{/if}} 133 {{/if}}
130 {{if sflj}} 134 {{if sflj}}
131 <span class="uk-badge uk-badge-danger">临加</span> 135 <span class="uk-badge uk-badge-danger">临加</span>
src/main/resources/static/real_control_v2/fragments/north/nav/history_sch/edit.html deleted 100644 → 0
1 -<div class="uk-modal ct-form-modal ct_move_modal" id="history-sch-edit-modal">  
2 - <div class="uk-modal-dialog" style="width: 900px;">  
3 - <a href="" class="uk-modal-close uk-close"></a>  
4 - <div class="uk-modal-header">  
5 - <h2>历史班次编辑</h2></div>  
6 - <form class="uk-form uk-form-horizontal">  
7 - </form>  
8 - </div>  
9 -  
10 - <script id="history-sch-edit-form-temp" type="text/html">  
11 - <input type="hidden" name="id" value="{{id}}"/>  
12 -  
13 - <div class="uk-grid">  
14 - <div class="uk-width-1-3">  
15 - <div class="uk-form-row">  
16 - <label class="uk-form-label" >班次类型</label>  
17 - <div class="uk-form-controls">  
18 - <select class="form-control nt-dictionary" disabled data-code="{{bcType}}" name="bcType" data-group=ScheduleType></select>  
19 - </div>  
20 - </div>  
21 - </div>  
22 - <div class="uk-width-1-3">  
23 - <div class="uk-form-row">  
24 - <label class="uk-form-label" >起点</label>  
25 - <div class="uk-form-controls">  
26 - <input type="text" value="{{qdzName}}" disabled>  
27 - </div>  
28 - </div>  
29 - </div>  
30 - <div class="uk-width-1-3">  
31 - <div class="uk-form-row">  
32 - <label class="uk-form-label" >终点</label>  
33 - <div class="uk-form-controls">  
34 - <input type="text" value="{{zdzName}}" disabled>  
35 - </div>  
36 - </div>  
37 - </div>  
38 - </div>  
39 -  
40 - <div class="uk-grid">  
41 - <div class="uk-width-1-3">  
42 - <div class="uk-form-row">  
43 - <label class="uk-form-label" >车辆</label>  
44 - <div class="uk-form-controls">  
45 - <div class="uk-autocomplete uk-form car-autocom">  
46 - <input type="text" value="{{clZbh}}" name="clZbh" required>  
47 - </div>  
48 - </div>  
49 - </div>  
50 - </div>  
51 - <div class="uk-width-1-3">  
52 - <div class="uk-form-row">  
53 - <label class="uk-form-label" >驾驶员</label>  
54 - <div class="uk-form-controls">  
55 - <div class="uk-autocomplete uk-form jsy-autocom">  
56 - <input type="text" value="{{jGh}}/{{jName}}" name="jsy" required>  
57 - </div>  
58 - </div>  
59 - </div>  
60 - </div>  
61 - </div>  
62 -  
63 - <div class="uk-grid">  
64 - <div class="uk-width-1-3">  
65 - <div class="uk-form-row">  
66 - <label class="uk-form-label" >计发</label>  
67 - <div class="uk-form-controls">  
68 - <input type="text" value="{{fcsj}}" disabled>  
69 - </div>  
70 - </div>  
71 - </div>  
72 - <div class="uk-width-1-3">  
73 - <div class="uk-form-row">  
74 - <label class="uk-form-label" >待发</label>  
75 - <div class="uk-form-controls">  
76 - <input type="text" name="dfsj" value="{{dfsj}}" required>  
77 - </div>  
78 - </div>  
79 - </div>  
80 - <div class="uk-width-1-3">  
81 - <div class="uk-form-row">  
82 - <label class="uk-form-label" >实发</label>  
83 - <div class="uk-form-controls">  
84 - <input type="text" name="fcsjActual" value="{{fcsjActual}}" >  
85 - </div>  
86 - </div>  
87 - </div>  
88 - </div>  
89 -  
90 - <div class="uk-grid">  
91 - <div class="uk-width-1-3">  
92 - <div class="uk-form-row">  
93 - <label class="uk-form-label" >计划里程</label>  
94 - <div class="uk-form-controls">  
95 - <input type="text" value="{{jhlc}}" disabled>  
96 - </div>  
97 - </div>  
98 - </div>  
99 - <div class="uk-width-1-3">  
100 - <div class="uk-form-row">  
101 - <label class="uk-form-label" >计划终点</label>  
102 - <div class="uk-form-controls">  
103 - <input type="text" value="{{zdsj}}" disabled>  
104 - </div>  
105 - </div>  
106 - </div>  
107 - <div class="uk-width-1-3">  
108 - <div class="uk-form-row">  
109 - <label class="uk-form-label" >实际终点</label>  
110 - <div class="uk-form-controls">  
111 - <input type="text" name="zdsjActual" value="{{zdsjActual}}" >  
112 - </div>  
113 - </div>  
114 - </div>  
115 - </div>  
116 -  
117 - <div class="uk-grid">  
118 - <div class="uk-width-1-1">  
119 - <div class="uk-form-row ct-stacked">  
120 - <label class="uk-form-label" >备注</label>  
121 - <div class="uk-form-controls" style="margin-top: 5px;">  
122 - <textarea id="form-s-t" cols="30" rows="5" name="remarks" data-fv-stringlength="true" data-fv-stringlength-max="100" placeholder="备注">{{remarks}}</textarea>  
123 - </div>  
124 - </div>  
125 - </div>  
126 - </div>  
127 - <div class="uk-modal-footer uk-text-right" style="margin-bottom: -20px;">  
128 - <button type="button" class="uk-button uk-modal-close">取消</button>  
129 - <button type="submit" class="uk-button uk-button-primary"><i class="uk-icon-check"></i> &nbsp;保存</button>  
130 - </div>  
131 - </script>  
132 -  
133 - <script>  
134 - (function() {  
135 - var modal = '#history-sch-edit-modal'  
136 - ,sch,parentModal;  
137 - $(modal).on('init', function(e, data) {  
138 - var id = data.id;  
139 - parentModal=data.parentModal;  
140 -  
141 - $.get('/realSchedule/'+id, function (sch) {  
142 - var htmlStr = template('history-sch-edit-form-temp', sch);  
143 - $('form', modal).html(htmlStr);  
144 -  
145 - //字典转换  
146 - dictionaryUtils.transformDom($('.nt-dictionary', modal));  
147 -  
148 - //----------- Autocomplete --------------  
149 - $.get('/basic/cars', function(rs) {  
150 - //车辆  
151 - gb_common.carAutocomplete($('.car-autocom', modal), rs);  
152 - });  
153 - $.get('/basic/all_personnel', function(rs) {  
154 - //驾驶员  
155 - gb_common.personAutocomplete($('.jsy-autocom', modal), rs);  
156 - //售票员  
157 - gb_common.personAutocomplete($('.spy-autocom', modal), rs);  
158 - });  
159 -  
160 -  
161 - //submit  
162 - var f = $('form', modal).formValidation(gb_form_validation_opts);  
163 - f.on('success.form.fv', function(e) {  
164 - e.preventDefault();  
165 - var data = $(this).serializeJSON();  
166 -  
167 - //拆分驾驶员工号和姓名  
168 - data.jGh = data.jsy.split('/')[0];  
169 - data.jName = data.jsy.split('/')[1];  
170 - delete data.jsy;  
171 - //拆分售票员工号和姓名  
172 - if(data.sGh != null){  
173 - data.sGh = data.spy.split('/')[0];  
174 - data.sName = data.spy.split('/')[1];  
175 - delete data.spy;  
176 - }  
177 -  
178 - gb_common.$post('/realSchedule/history', data, function (rs) {  
179 - //console.log(rs);  
180 - UIkit.modal(modal).hide();  
181 - $(parentModal).trigger('refresh');  
182 - });  
183 - });  
184 - });  
185 - });  
186 - })();  
187 - </script>  
188 -</div>  
src/main/resources/static/real_control_v2/fragments/north/nav/history_sch_maintain.html
@@ -86,6 +86,8 @@ @@ -86,6 +86,8 @@
86 <span class="uk-badge uk-badge-danger">放站</span> 86 <span class="uk-badge uk-badge-danger">放站</span>
87 {{else if sch.bcType == "region"}} 87 {{else if sch.bcType == "region"}}
88 <span class="uk-badge sch_region">区间</span> 88 <span class="uk-badge sch_region">区间</span>
  89 + {{else if sch.bcType == "ldks"}}
  90 + <span class="uk-badge sch_ldks">空驶</span>
89 {{/if}} 91 {{/if}}
90 {{if sch.sflj}} 92 {{if sch.sflj}}
91 <span class="uk-badge uk-badge-danger">临加</span> 93 <span class="uk-badge uk-badge-danger">临加</span>
src/main/resources/static/real_control_v2/fragments/north/toolbar.html
@@ -55,7 +55,7 @@ @@ -55,7 +55,7 @@
55 </li> 55 </li>
56 {{/each}} 56 {{/each}}
57 </ul> 57 </ul>
58 - <a class="uk-navbar-brand op-beijingtime-time" title="每次秒数到0与服务器同步一次,睡眠状态唤醒会短暂异常,可鼠标右击横幅任意区域立刻同步!"> 58 + <a class="uk-navbar-brand op-beijingtime-time" >
59 <span></span> 59 <span></span>
60 </a> 60 </a>
61 <div class="uk-navbar-content uk-navbar-flip uk-hidden-small" style="padding-left: 0;"> 61 <div class="uk-navbar-content uk-navbar-flip uk-hidden-small" style="padding-left: 0;">
src/main/resources/static/real_control_v2/js/line_schedule/badge_tooltip.js
@@ -2,6 +2,36 @@ @@ -2,6 +2,36 @@
2 /** badge 悬停 tip 相关 */ 2 /** badge 悬停 tip 相关 */
3 var gb_schedule_badge_tootip = (function () { 3 var gb_schedule_badge_tootip = (function () {
4 4
  5 + var _opts = {
  6 + show:{
  7 + ready: true,
  8 + delay: 300
  9 + },
  10 + position: {
  11 + viewport: $(window),
  12 + my: 'center left',
  13 + at: 'center right'
  14 + },
  15 + hide: {
  16 + fixed: true,
  17 + delay: 300
  18 + },
  19 + events: {
  20 + hidden: function(event, api) {
  21 + //destroy dom
  22 + $(this).qtip('destroy', true);
  23 + }
  24 + }
  25 + };
  26 +
  27 + var getSch = function (e) {
  28 + var id = $(e).parents('dl').data('id'),
  29 + lineCode = $(e).parents('li.line_schedule').data('id'),
  30 + sch = gb_schedule_table.findScheduleByLine(lineCode)[id];
  31 + return sch;
  32 + };
  33 +
  34 + var _badge = '.schedule-wrap .ct_table_body .uk-badge';
5 var temps; 35 var temps;
6 //html 模板 36 //html 模板
7 $.get('/real_control_v2/fragments/line_schedule/badge_tooltip.html', function(dom) { 37 $.get('/real_control_v2/fragments/line_schedule/badge_tooltip.html', function(dom) {
@@ -9,18 +39,13 @@ var gb_schedule_badge_tootip = (function () { @@ -9,18 +39,13 @@ var gb_schedule_badge_tootip = (function () {
9 }); 39 });
10 40
11 //子任务 tootip 41 //子任务 tootip
12 - $(document).on('mouseenter', '.schedule-wrap .ct_table_body .uk-badge.c_task', function() { 42 + $(document).on('mouseenter', _badge + '.c_task', function() {
13 $(this).qtip({ 43 $(this).qtip({
14 - show: {  
15 - ready: true,  
16 - delay: 300  
17 - }, 44 + show: _opts.show,
18 content: { 45 content: {
19 text: function() { 46 text: function() {
20 - var id = $(this).parents('dl').data('id'),  
21 - lineCode = $(this).parents('li.line_schedule').data('id'),  
22 - sch = gb_schedule_table.findScheduleByLine(lineCode)[id];  
23 - //排序 47 + var sch = getSch(this);
  48 + //子任务排序
24 var array = sch.cTasks.sort(function (a, b) { 49 var array = sch.cTasks.sort(function (a, b) {
25 var an = (a.mileageType=='service'?1:0)+''+(a.destroy?0:1); 50 var an = (a.mileageType=='service'?1:0)+''+(a.destroy?0:1);
26 var bn = (b.mileageType=='service'?1:0)+''+(b.destroy?0:1); 51 var bn = (b.mileageType=='service'?1:0)+''+(b.destroy?0:1);
@@ -29,134 +54,86 @@ var gb_schedule_badge_tootip = (function () { @@ -29,134 +54,86 @@ var gb_schedule_badge_tootip = (function () {
29 return temps['sch-table-task-tootip-temp']({tasks: array}); 54 return temps['sch-table-task-tootip-temp']({tasks: array});
30 } 55 }
31 }, 56 },
32 - position: {  
33 - viewport: $(window),  
34 - my: 'center left',  
35 - at: 'center right'  
36 - }, 57 + position: _opts.position,
37 style: { 58 style: {
38 classes: 'qtip-light qtip-rounded qtip-shadow sch-badge-tip' 59 classes: 'qtip-light qtip-rounded qtip-shadow sch-badge-tip'
39 }, 60 },
40 - hide: {  
41 - fixed: true,  
42 - delay: 300  
43 - },  
44 - events: {  
45 - hidden: function(event, api) {  
46 - //destroy dom  
47 - $(this).qtip('destroy', true);  
48 - }  
49 - } 61 + hide: _opts.hide,
  62 + events: _opts.events
50 }); 63 });
51 }); 64 });
52 65
53 //区间 tootip 66 //区间 tootip
54 - $(document).on('mouseenter', '.schedule-wrap .ct_table_body .uk-badge.sch_region', function() { 67 + $(document).on('mouseenter', _badge+'.sch_region', function() {
55 $(this).qtip({ 68 $(this).qtip({
56 - show: {  
57 - ready: true,  
58 - delay: 300  
59 - }, 69 + show: _opts.show,
60 content: { 70 content: {
61 text: function() { 71 text: function() {
62 - var id = $(this).parents('dl').data('id'),  
63 - lineCode = $(this).parents('li.line_schedule').data('id'),  
64 - sch = gb_schedule_table.findScheduleByLine(lineCode)[id];  
65 - return temps['sch-table-region-tootip-temp'](sch); 72 + return temps['sch-table-region-tootip-temp'](getSch(this));
66 } 73 }
67 }, 74 },
68 - position: {  
69 - viewport: $(window),  
70 - my: 'center left',  
71 - at: 'center right'  
72 - }, 75 + position: _opts.position,
73 style: { 76 style: {
74 classes: 'qtip-youtube sch-badge-tip' 77 classes: 'qtip-youtube sch-badge-tip'
75 }, 78 },
76 - hide: {  
77 - fixed: true,  
78 - delay: 300  
79 - },  
80 - events: {  
81 - hidden: function(event, api) {  
82 - //destroy dom  
83 - $(this).qtip('destroy', true);  
84 - }  
85 - } 79 + hide: _opts.hide,
  80 + events: _opts.events
86 }); 81 });
87 }); 82 });
88 83
89 84
90 //出场 tootip 85 //出场 tootip
91 - $(document).on('mouseenter', '.schedule-wrap .ct_table_body .uk-badge.out', function() { 86 + $(document).on('mouseenter', _badge+'.out', function() {
92 $(this).qtip({ 87 $(this).qtip({
93 - show: {  
94 - ready: true,  
95 - delay: 300  
96 - }, 88 + show: _opts.show,
97 content: { 89 content: {
98 text: function() { 90 text: function() {
99 - var id = $(this).parents('dl').data('id'),  
100 - lineCode = $(this).parents('li.line_schedule').data('id'),  
101 - sch = gb_schedule_table.findScheduleByLine(lineCode)[id];  
102 - return temps['sch-table-out-tootip-temp'](sch); 91 + return temps['sch-table-out-tootip-temp'](getSch(this));
103 } 92 }
104 }, 93 },
105 - position: {  
106 - viewport: $(window),  
107 - my: 'center left',  
108 - at: 'center right'  
109 - }, 94 + position: _opts.position,
110 style: { 95 style: {
111 classes: 'qtip-youtube sch-badge-tip' 96 classes: 'qtip-youtube sch-badge-tip'
112 }, 97 },
113 - hide: {  
114 - fixed: true,  
115 - delay: 300  
116 - },  
117 - events: {  
118 - hidden: function(event, api) {  
119 - //destroy dom  
120 - $(this).qtip('destroy', true);  
121 - }  
122 - } 98 + hide: _opts.hide,
  99 + events: _opts.events
123 }); 100 });
124 }); 101 });
125 102
126 103
127 //进场 tootip 104 //进场 tootip
128 - $(document).on('mouseenter', '.schedule-wrap .ct_table_body .uk-badge.in', function() { 105 + $(document).on('mouseenter', _badge+'.in', function() {
129 $(this).qtip({ 106 $(this).qtip({
130 - show: {  
131 - ready: true,  
132 - delay: 300  
133 - }, 107 + show: _opts.show,
134 content: { 108 content: {
135 text: function() { 109 text: function() {
136 - var id = $(this).parents('dl').data('id'),  
137 - lineCode = $(this).parents('li.line_schedule').data('id'),  
138 - sch = gb_schedule_table.findScheduleByLine(lineCode)[id];  
139 - return temps['sch-table-in-tootip-temp'](sch); 110 + return temps['sch-table-in-tootip-temp'](getSch(this));
140 } 111 }
141 }, 112 },
142 - position: {  
143 - viewport: $(window),  
144 - my: 'center left',  
145 - at: 'center right'  
146 - }, 113 + position: _opts.position,
147 style: { 114 style: {
148 classes: 'qtip-youtube sch-badge-tip' 115 classes: 'qtip-youtube sch-badge-tip'
149 }, 116 },
150 - hide: {  
151 - fixed: true,  
152 - delay: 300  
153 - },  
154 - events: {  
155 - hidden: function(event, api) {  
156 - //destroy dom  
157 - $(this).qtip('destroy', true); 117 + hide: _opts.hide,
  118 + events: _opts.events
  119 + });
  120 + });
  121 +
  122 + //2点间空放
  123 + $(document).on('mouseenter', _badge+'.sch_ldks', function() {
  124 + $(this).qtip({
  125 + show: _opts.show,
  126 + content: {
  127 + text: function() {
  128 + return temps['sch-table-ldks-tootip-temp'](getSch(this));
158 } 129 }
159 - } 130 + },
  131 + position: _opts.position,
  132 + style: {
  133 + classes: 'qtip-shadow qtip-bootstrap sch-badge-tip'
  134 + },
  135 + hide: _opts.hide,
  136 + events: _opts.events
160 }); 137 });
161 }); 138 });
162 })(); 139 })();
163 \ No newline at end of file 140 \ No newline at end of file
src/main/resources/static/real_control_v2/js/main.js
@@ -170,7 +170,7 @@ function showUpdateDescription() { @@ -170,7 +170,7 @@ function showUpdateDescription() {
170 //更新说明 170 //更新说明
171 var updateDescription = { 171 var updateDescription = {
172 date: '2017-05-16', 172 date: '2017-05-16',
173 - text: '<h5>菜单栏加入了服务器时间</h5>' 173 + text: '<h5>修复了进出场班次公里设置为0后自动烂班的问题</h5>'
174 }; 174 };
175 175
176 var storage = window.localStorage 176 var storage = window.localStorage
src/main/resources/static/real_control_v2/js/minute_timer.js deleted 100644 → 0
1 -/** 时钟 */  
2 -var gb_minute_timer = (function () {  
3 -  
4 -  
5 - var getServerTime = function (cb) {  
6 - function oncallback(jqXHR) {  
7 - var time = jqXHR && jqXHR.getResponseHeader("Date");  
8 - if (time)  
9 - callback(new Date(time))  
10 - }  
11 -  
12 - if ("function" == typeof callback)  
13 - $.ajax({  
14 - url: "/real_control_v2/assets/imgs/time.gif",  
15 - type: "HEAD"  
16 - }).done(function (data, textStatus, jqXHR) {  
17 - oncallback(jqXHR)  
18 - }).fail(function (jqXHR, textStatus, errorThrown) {  
19 - oncallback(jqXHR)  
20 - })  
21 - };  
22 -  
23 -  
24 - setTimeout(function () {  
25 - getServerTime(function () {  
26 - console.log('cb,,', cb);  
27 - });  
28 - }, 5000);  
29 -  
30 -})();  
31 \ No newline at end of file 0 \ No newline at end of file
src/main/resources/static/real_control_v2/js/north/second_timer.js
@@ -19,7 +19,7 @@ var gb_second_timer = (function () { @@ -19,7 +19,7 @@ var gb_second_timer = (function () {
19 setTime(); 19 setTime();
20 20
21 secondTimer = window.setInterval(function () { 21 secondTimer = window.setInterval(function () {
22 - if(0 == now.getSeconds() || true == contextFlag){ 22 + if (0 == now.getSeconds() || true == contextFlag) {
23 minuteTimer(); 23 minuteTimer();
24 contextFlag = false; 24 contextFlag = false;
25 } 25 }
@@ -48,7 +48,7 @@ var gb_second_timer = (function () { @@ -48,7 +48,7 @@ var gb_second_timer = (function () {
48 }) 48 })
49 }; 49 };
50 50
51 - var timeFormat = function(str) { 51 + var timeFormat = function (str) {
52 return ("0" + str).slice(-2) 52 return ("0" + str).slice(-2)
53 }; 53 };
54 54
@@ -57,11 +57,41 @@ var gb_second_timer = (function () { @@ -57,11 +57,41 @@ var gb_second_timer = (function () {
57 }; 57 };
58 58
59 var minuteTimer = function () { 59 var minuteTimer = function () {
60 - getServerTime(function(time) { 60 + getServerTime(function (time) {
61 now = time; 61 now = time;
62 setTime() 62 setTime()
63 }) 63 })
64 }; 64 };
65 65
66 window.setTimeout(init, 6000); 66 window.setTimeout(init, 6000);
  67 +
  68 +/* $(document).on('mouseenter', '.op-beijingtime-time', function () {
  69 + $(this).qtip({
  70 + show: {ready: true, delay: 300},
  71 + content: {
  72 + text: function () {
  73 + return '<div class="tl-tip-panel">' +
  74 + '<div style="font-size: 13px;">' +
  75 + '每次秒数到0与服务器同步一次<br>服务器每10分钟与国家授时中心标准时间同步一次<br>睡眠状态唤醒会短暂异常,可鼠标右击横幅任意区域立刻同步' +
  76 + '</div>' +
  77 + '</div>';
  78 + }
  79 + },
  80 + position: {
  81 + viewport: $(window),
  82 + my: 'top center',
  83 + at: 'bottom center'
  84 + },
  85 + style: {
  86 + classes: 'qtip-shadow qtip-tipped sch-badge-tip'
  87 + },
  88 + hide: {fixed: true, delay: 300},
  89 + events: {
  90 + hidden: function(event, api) {
  91 + //destroy dom
  92 + $(this).qtip('destroy', true);
  93 + }
  94 + }
  95 + });
  96 + });*/
67 })(); 97 })();
68 \ No newline at end of file 98 \ No newline at end of file
src/main/resources/static/real_control_v2/main.html
@@ -184,8 +184,6 @@ @@ -184,8 +184,6 @@
184 <script src="/real_control_v2/js/websocket/sch_websocket.js" merge="custom_js"></script> 184 <script src="/real_control_v2/js/websocket/sch_websocket.js" merge="custom_js"></script>
185 <!-- tts --> 185 <!-- tts -->
186 <script src="/real_control_v2/js/utils/tts.js" merge="custom_js"></script> 186 <script src="/real_control_v2/js/utils/tts.js" merge="custom_js"></script>
187 -<!-- minute_timer.js -->  
188 -<script src="/real_control_v2/js/minute_timer.js" merge="custom_js"></script>  
189 187
190 <!-- echart --> 188 <!-- echart -->
191 <script src="/real_control_v2/assets/echarts-3/echarts.js" merge="plugins"></script> 189 <script src="/real_control_v2/assets/echarts-3/echarts.js" merge="plugins"></script>
src/test/resources/testdata/test6.txt
@@ -21,4 +21,7 @@ where a.origingidindex is null; @@ -21,4 +21,7 @@ where a.origingidindex is null;
21 北蔡2路 21 北蔡2路
22 1048 22 1048
23 1118 23 1118
24 -上南二分通勤  
25 \ No newline at end of file 24 \ No newline at end of file
  25 +上南二分通勤
  26 +
  27 +
  28 +-Xms128M -Xmx1024M -XX:PermSize=64M -XX:MaxPermSize=128M
26 \ No newline at end of file 29 \ No newline at end of file