Commit 3d8bcc05ef5df12a061b57130fdd227892cdefaa
Merge branch 'minhang' into pudong
Showing
31 changed files
with
2194 additions
and
905 deletions
Too many changes to show.
To preserve performance only 31 of 54 files are displayed.
src/main/java/com/bsth/XDApplication.java
| @@ -86,11 +86,14 @@ public class XDApplication implements CommandLineRunner { | @@ -86,11 +86,14 @@ public class XDApplication implements CommandLineRunner { | ||
| 86 | } | 86 | } |
| 87 | } | 87 | } |
| 88 | 88 | ||
| 89 | + //@Autowired | ||
| 90 | + //DayOfSchedule dayOfSchedule; | ||
| 89 | public void devInit(){ | 91 | public void devInit(){ |
| 90 | log.info("devInit..."); | 92 | log.info("devInit..."); |
| 91 | ScheduledExecutorService sexec = Application.mainServices; | 93 | ScheduledExecutorService sexec = Application.mainServices; |
| 92 | //抓取GPS数据 | 94 | //抓取GPS数据 |
| 93 | gpsDataLoader.setFlag(-1); | 95 | gpsDataLoader.setFlag(-1); |
| 96 | + //dayOfSchedule.dataRecovery(); | ||
| 94 | //sexec.scheduleWithFixedDelay(gpsDataLoader, 30, 2, TimeUnit.SECONDS); | 97 | //sexec.scheduleWithFixedDelay(gpsDataLoader, 30, 2, TimeUnit.SECONDS); |
| 95 | //实际排班更新线程 | 98 | //实际排班更新线程 |
| 96 | //sexec.scheduleWithFixedDelay(scheduleRefreshThread, 15, 240, TimeUnit.SECONDS); | 99 | //sexec.scheduleWithFixedDelay(scheduleRefreshThread, 15, 240, TimeUnit.SECONDS); |
| @@ -98,7 +101,8 @@ public class XDApplication implements CommandLineRunner { | @@ -98,7 +101,8 @@ public class XDApplication implements CommandLineRunner { | ||
| 98 | //sexec.scheduleWithFixedDelay(schedulePstThread, 60, 15, TimeUnit.SECONDS); | 101 | //sexec.scheduleWithFixedDelay(schedulePstThread, 60, 15, TimeUnit.SECONDS); |
| 99 | //班次修正日志延迟入库 | 102 | //班次修正日志延迟入库 |
| 100 | //sexec.scheduleWithFixedDelay(seiPstThread, 60, 30, TimeUnit.SECONDS); | 103 | //sexec.scheduleWithFixedDelay(seiPstThread, 60, 30, TimeUnit.SECONDS); |
| 101 | - | 104 | + //调度指令延迟入库 |
| 105 | + //sexec.scheduleWithFixedDelay(directivesPstThread, 180, 180, TimeUnit.SECONDS); | ||
| 102 | //线程监听(防止重要的线程阻塞、异常结束。以及部分主备切换工作) | 106 | //线程监听(防止重要的线程阻塞、异常结束。以及部分主备切换工作) |
| 103 | //sexec.scheduleWithFixedDelay(threadMonotor, 240, 60, TimeUnit.SECONDS); | 107 | //sexec.scheduleWithFixedDelay(threadMonotor, 240, 60, TimeUnit.SECONDS); |
| 104 | } | 108 | } |
| @@ -116,7 +120,7 @@ public class XDApplication implements CommandLineRunner { | @@ -116,7 +120,7 @@ public class XDApplication implements CommandLineRunner { | ||
| 116 | sexec.scheduleWithFixedDelay(scheduleRefreshThread, 15, 240, TimeUnit.SECONDS); | 120 | sexec.scheduleWithFixedDelay(scheduleRefreshThread, 15, 240, TimeUnit.SECONDS); |
| 117 | //班次延迟入库线程 | 121 | //班次延迟入库线程 |
| 118 | sexec.scheduleWithFixedDelay(schedulePstThread, 60, 10, TimeUnit.SECONDS); | 122 | sexec.scheduleWithFixedDelay(schedulePstThread, 60, 10, TimeUnit.SECONDS); |
| 119 | - //班次修正日志延迟入库 | 123 | + //班次修正日志入库 |
| 120 | sexec.scheduleWithFixedDelay(seiPstThread, 60, 60, TimeUnit.SECONDS); | 124 | sexec.scheduleWithFixedDelay(seiPstThread, 60, 60, TimeUnit.SECONDS); |
| 121 | //检查班次误点 | 125 | //检查班次误点 |
| 122 | sexec.scheduleWithFixedDelay(scheduleLateThread, 60, 30, TimeUnit.SECONDS); | 126 | sexec.scheduleWithFixedDelay(scheduleLateThread, 60, 30, TimeUnit.SECONDS); |
src/main/java/com/bsth/controller/realcontrol/SchEditInfoController.java
| 1 | -package com.bsth.controller.realcontrol; | ||
| 2 | - | ||
| 3 | -import com.bsth.controller.BaseController; | ||
| 4 | -import com.bsth.data.schedule.edit_logs.entity.SchEditInfo; | ||
| 5 | -import com.bsth.data.schedule.edit_logs.service.SchEditInfoService; | ||
| 6 | -import org.springframework.beans.factory.annotation.Autowired; | ||
| 7 | -import org.springframework.web.bind.annotation.RequestMapping; | ||
| 8 | -import org.springframework.web.bind.annotation.RequestMethod; | ||
| 9 | -import org.springframework.web.bind.annotation.RequestParam; | ||
| 10 | -import org.springframework.web.bind.annotation.RestController; | ||
| 11 | - | ||
| 12 | -import java.util.Map; | ||
| 13 | - | ||
| 14 | -/** | ||
| 15 | - * 班次修正记录 | ||
| 16 | - * Created by panzhao on 2017/5/22. | ||
| 17 | - */ | ||
| 18 | -@RestController | ||
| 19 | -@RequestMapping("schEditInfo") | ||
| 20 | -public class SchEditInfoController extends BaseController<SchEditInfo, Long>{ | ||
| 21 | - | ||
| 22 | - @Autowired | ||
| 23 | - SchEditInfoService editInfoService; | ||
| 24 | - | ||
| 25 | - @RequestMapping(value = "/_list", method = RequestMethod.GET) | ||
| 26 | - public Map<String, Object> _list(@RequestParam String rq, @RequestParam String lineCode,@RequestParam Map<String, String> map) { | ||
| 27 | - return editInfoService._list(rq, lineCode, map); | ||
| 28 | - } | ||
| 29 | -} | 1 | +package com.bsth.controller.realcontrol; |
| 2 | + | ||
| 3 | +import com.bsth.controller.BaseController; | ||
| 4 | +import com.bsth.data.schedule.edit_logs.entity.SchEditInfo; | ||
| 5 | +import com.bsth.data.schedule.edit_logs.service.SchEditInfoService; | ||
| 6 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 7 | +import org.springframework.web.bind.annotation.RequestMapping; | ||
| 8 | +import org.springframework.web.bind.annotation.RequestMethod; | ||
| 9 | +import org.springframework.web.bind.annotation.RequestParam; | ||
| 10 | +import org.springframework.web.bind.annotation.RestController; | ||
| 11 | + | ||
| 12 | +import java.util.Map; | ||
| 13 | + | ||
| 14 | +/** | ||
| 15 | + * 班次修正记录 | ||
| 16 | + * Created by panzhao on 2017/5/22. | ||
| 17 | + */ | ||
| 18 | +@RestController | ||
| 19 | +@RequestMapping("schEditInfo") | ||
| 20 | +public class SchEditInfoController extends BaseController<SchEditInfo, Long>{ | ||
| 21 | + | ||
| 22 | + @Autowired | ||
| 23 | + SchEditInfoService editInfoService; | ||
| 24 | + | ||
| 25 | + @RequestMapping(value = "/_list", method = RequestMethod.GET) | ||
| 26 | + public Map<String, Object> _list(@RequestParam String rq, @RequestParam String lineCode,@RequestParam Map<String, String> map) { | ||
| 27 | + return editInfoService._list(rq, lineCode, map); | ||
| 28 | + } | ||
| 29 | +} |
src/main/java/com/bsth/controller/report/SheetController.java
0 → 100644
| 1 | +package com.bsth.controller.report; | ||
| 2 | + | ||
| 3 | +import java.util.List; | ||
| 4 | +import java.util.Map; | ||
| 5 | + | ||
| 6 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 7 | +import org.springframework.web.bind.annotation.RequestMapping; | ||
| 8 | +import org.springframework.web.bind.annotation.RequestMethod; | ||
| 9 | +import org.springframework.web.bind.annotation.RequestParam; | ||
| 10 | +import org.springframework.web.bind.annotation.RestController; | ||
| 11 | + | ||
| 12 | +import com.bsth.controller.BaseController; | ||
| 13 | +import com.bsth.entity.sheet.Sheet; | ||
| 14 | +import com.bsth.service.report.SheetService; | ||
| 15 | + | ||
| 16 | +@RestController | ||
| 17 | +@RequestMapping("sheet") | ||
| 18 | +public class SheetController extends BaseController<Sheet, Integer>{ | ||
| 19 | + @Autowired | ||
| 20 | + SheetService sheetService; | ||
| 21 | + @RequestMapping(value = "/saveListSheet",method = RequestMethod.POST) | ||
| 22 | + public String saveListSheet(){ | ||
| 23 | + String result=""; | ||
| 24 | + try { | ||
| 25 | + result = sheetService.saveSheetList(); | ||
| 26 | + } catch (Exception e) { | ||
| 27 | + // TODO Auto-generated catch block | ||
| 28 | + e.printStackTrace(); | ||
| 29 | + } | ||
| 30 | + return result; | ||
| 31 | + } | ||
| 32 | + | ||
| 33 | + | ||
| 34 | + @RequestMapping(value = "/sheetList",method = RequestMethod.GET) | ||
| 35 | + public List<Sheet> sheetList(@RequestParam Integer id){ | ||
| 36 | + List<Sheet> list=sheetService.sheetList(id); | ||
| 37 | + return list; | ||
| 38 | + } | ||
| 39 | + @RequestMapping(value = "/countList",method = RequestMethod.GET) | ||
| 40 | + public List<Map<String, Object>> countList(@RequestParam Map<String, Object> map){ | ||
| 41 | + List<Map<String, Object>> list=sheetService.countList(map); | ||
| 42 | + return list; | ||
| 43 | + } | ||
| 44 | +} |
src/main/java/com/bsth/controller/schedule/core/EmployeeConfigInfoController.java
| @@ -7,10 +7,7 @@ import com.bsth.repository.schedule.EmployeeConfigInfoRepository; | @@ -7,10 +7,7 @@ import com.bsth.repository.schedule.EmployeeConfigInfoRepository; | ||
| 7 | import com.bsth.service.schedule.EmployeeConfigInfoService; | 7 | import com.bsth.service.schedule.EmployeeConfigInfoService; |
| 8 | import com.bsth.service.schedule.exception.ScheduleException; | 8 | import com.bsth.service.schedule.exception.ScheduleException; |
| 9 | import org.springframework.beans.factory.annotation.Autowired; | 9 | import org.springframework.beans.factory.annotation.Autowired; |
| 10 | -import org.springframework.web.bind.annotation.RequestMapping; | ||
| 11 | -import org.springframework.web.bind.annotation.RequestMethod; | ||
| 12 | -import org.springframework.web.bind.annotation.RequestParam; | ||
| 13 | -import org.springframework.web.bind.annotation.RestController; | 10 | +import org.springframework.web.bind.annotation.*; |
| 14 | 11 | ||
| 15 | import java.util.HashMap; | 12 | import java.util.HashMap; |
| 16 | import java.util.List; | 13 | import java.util.List; |
| @@ -38,6 +35,19 @@ public class EmployeeConfigInfoController extends BController<EmployeeConfigInfo | @@ -38,6 +35,19 @@ public class EmployeeConfigInfoController extends BController<EmployeeConfigInfo | ||
| 38 | } | 35 | } |
| 39 | 36 | ||
| 40 | 37 | ||
| 38 | + @RequestMapping(value = "/dbbm/{xlid}", method = RequestMethod.GET) | ||
| 39 | + public Map<String, Object> getDbbm(@PathVariable("xlid") Integer xl) { | ||
| 40 | + Map<String, Object> rtn = new HashMap<>(); | ||
| 41 | + try { | ||
| 42 | + rtn.put("data", employeeConfigInfoService.getMaxDbbm(xl)); | ||
| 43 | + rtn.put("status", ResponseCode.SUCCESS); | ||
| 44 | + } catch (Exception exp) { | ||
| 45 | + exp.printStackTrace(); | ||
| 46 | + rtn.put("status", ResponseCode.ERROR); | ||
| 47 | + rtn.put("msg", exp.getMessage()); | ||
| 48 | + } | ||
| 49 | + return rtn; | ||
| 50 | + } | ||
| 41 | 51 | ||
| 42 | @RequestMapping(value = "/validate_jsy", method = RequestMethod.GET) | 52 | @RequestMapping(value = "/validate_jsy", method = RequestMethod.GET) |
| 43 | public Map<String, Object> validate_jsy(@RequestParam Map<String, Object> param) { | 53 | public Map<String, Object> validate_jsy(@RequestParam Map<String, Object> param) { |
src/main/java/com/bsth/controller/schedule/core/GuideboardInfoController.java
| @@ -7,10 +7,7 @@ import com.bsth.repository.schedule.GuideboardInfoRepository; | @@ -7,10 +7,7 @@ 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 org.springframework.beans.factory.annotation.Autowired; | 9 | import org.springframework.beans.factory.annotation.Autowired; |
| 10 | -import org.springframework.web.bind.annotation.RequestMapping; | ||
| 11 | -import org.springframework.web.bind.annotation.RequestMethod; | ||
| 12 | -import org.springframework.web.bind.annotation.RequestParam; | ||
| 13 | -import org.springframework.web.bind.annotation.RestController; | 10 | +import org.springframework.web.bind.annotation.*; |
| 14 | 11 | ||
| 15 | import java.util.HashMap; | 12 | import java.util.HashMap; |
| 16 | import java.util.List; | 13 | import java.util.List; |
| @@ -33,6 +30,21 @@ public class GuideboardInfoController extends BController<GuideboardInfo, Long> | @@ -33,6 +30,21 @@ public class GuideboardInfoController extends BController<GuideboardInfo, Long> | ||
| 33 | return guideboardInfoRepository.findLpName(ttid); | 30 | return guideboardInfoRepository.findLpName(ttid); |
| 34 | } | 31 | } |
| 35 | 32 | ||
| 33 | + @RequestMapping(value = "lpno/{xlid}", method = RequestMethod.GET) | ||
| 34 | + public Map<String, Object> getLpNo(@PathVariable("xlid") Integer xl) { | ||
| 35 | + Map<String, Object> rtn = new HashMap<>(); | ||
| 36 | + try { | ||
| 37 | + rtn.put("data", guideboardInfoService.getMaxLpno(xl)); | ||
| 38 | + rtn.put("status", ResponseCode.SUCCESS); | ||
| 39 | + } catch (Exception exp) { | ||
| 40 | + exp.printStackTrace(); | ||
| 41 | + rtn.put("status", ResponseCode.ERROR); | ||
| 42 | + rtn.put("msg", exp.getMessage()); | ||
| 43 | + } | ||
| 44 | + | ||
| 45 | + return rtn; | ||
| 46 | + } | ||
| 47 | + | ||
| 36 | @RequestMapping(value = "/validate_lpno", method = RequestMethod.GET) | 48 | @RequestMapping(value = "/validate_lpno", method = RequestMethod.GET) |
| 37 | public Map<String, Object> validate_lpno(@RequestParam Map<String, Object> param) { | 49 | public Map<String, Object> validate_lpno(@RequestParam Map<String, Object> param) { |
| 38 | Map<String, Object> rtn = new HashMap<>(); | 50 | Map<String, Object> rtn = new HashMap<>(); |
src/main/java/com/bsth/data/directive/DirectivesPstThread.java
| @@ -34,6 +34,7 @@ public class DirectivesPstThread extends Thread { | @@ -34,6 +34,7 @@ public class DirectivesPstThread extends Thread { | ||
| 34 | 34 | ||
| 35 | @Override | 35 | @Override |
| 36 | public void run() { | 36 | public void run() { |
| 37 | + | ||
| 37 | LinkedList<Directive> list = DayOfDirectives.pstDirectives; | 38 | LinkedList<Directive> list = DayOfDirectives.pstDirectives; |
| 38 | 39 | ||
| 39 | Directive directive; | 40 | Directive directive; |
| @@ -46,8 +47,10 @@ public class DirectivesPstThread extends Thread { | @@ -46,8 +47,10 @@ public class DirectivesPstThread extends Thread { | ||
| 46 | if(d60.isDispatch()){ | 47 | if(d60.isDispatch()){ |
| 47 | ScheduleRealInfo sch = d60.getSch(); | 48 | ScheduleRealInfo sch = d60.getSch(); |
| 48 | //如果关联的班次已经不存在了,放弃入库 | 49 | //如果关联的班次已经不存在了,放弃入库 |
| 49 | - if(dayOfSchedule.get(sch.getId()) == null) | 50 | + if(dayOfSchedule.get(sch.getId()) == null){ |
| 51 | + logger.warn("班次:" + sch.getId() + "不存在了,调度指令放弃入库。"); | ||
| 50 | continue; | 52 | continue; |
| 53 | + } | ||
| 51 | } | 54 | } |
| 52 | d60Repository.save(d60); | 55 | d60Repository.save(d60); |
| 53 | } | 56 | } |
src/main/java/com/bsth/data/gpsdata/arrival/GpsRealAnalyse.java
| @@ -117,29 +117,31 @@ public class GpsRealAnalyse { | @@ -117,29 +117,31 @@ public class GpsRealAnalyse { | ||
| 117 | try { | 117 | try { |
| 118 | Collections.sort(list, comp); | 118 | Collections.sort(list, comp); |
| 119 | for (GpsEntity gps : list) { | 119 | for (GpsEntity gps : list) { |
| 120 | - //是否有任务 | ||
| 121 | - boolean task; | ||
| 122 | - CircleQueue<GpsEntity> prevs = GeoCacheData.getGps(gps.getNbbm()); | ||
| 123 | - //掉线处理 | ||
| 124 | - offlineSignalHandle.handle(gps, prevs); | ||
| 125 | - //状态处理 | ||
| 126 | - task = correctSignalHandle.handle(gps, prevs); | ||
| 127 | - //场,站内外判断 | ||
| 128 | - stationInsideHandle.handle(gps, prevs); | ||
| 129 | - //异常判定(越界/超速) | ||
| 130 | - abnormalStateHandle.handle(gps, prevs); | ||
| 131 | - | ||
| 132 | - if (!task) | ||
| 133 | - continue; //无任务的,到这里就结束 | ||
| 134 | - | ||
| 135 | - //反向处理 | ||
| 136 | - reverseSignalHandle.handle(gps, prevs); | ||
| 137 | - //进出站动作处理 | ||
| 138 | - inOutStationSignalHandle.handle(gps, prevs); | ||
| 139 | - GeoCacheData.putGps(gps); | 120 | + try { |
| 121 | + //是否有任务 | ||
| 122 | + boolean task; | ||
| 123 | + CircleQueue<GpsEntity> prevs = GeoCacheData.getGps(gps.getNbbm()); | ||
| 124 | + //掉线处理 | ||
| 125 | + offlineSignalHandle.handle(gps, prevs); | ||
| 126 | + //状态处理 | ||
| 127 | + task = correctSignalHandle.handle(gps, prevs); | ||
| 128 | + //场,站内外判断 | ||
| 129 | + stationInsideHandle.handle(gps, prevs); | ||
| 130 | + //异常判定(越界/超速) | ||
| 131 | + abnormalStateHandle.handle(gps, prevs); | ||
| 132 | + | ||
| 133 | + if (!task) | ||
| 134 | + continue; //无任务的,到这里就结束 | ||
| 135 | + | ||
| 136 | + //反向处理 | ||
| 137 | + reverseSignalHandle.handle(gps, prevs); | ||
| 138 | + //进出站动作处理 | ||
| 139 | + inOutStationSignalHandle.handle(gps, prevs); | ||
| 140 | + GeoCacheData.putGps(gps); | ||
| 141 | + }catch (Exception e){ | ||
| 142 | + logger.error("", e); | ||
| 143 | + } | ||
| 140 | } | 144 | } |
| 141 | - } catch (Exception e) { | ||
| 142 | - logger.error("", e); | ||
| 143 | } finally { | 145 | } finally { |
| 144 | if (count != null) | 146 | if (count != null) |
| 145 | count.countDown(); | 147 | count.countDown(); |
src/main/java/com/bsth/data/gpsdata/arrival/handlers/InOutStationSignalHandle.java
| @@ -46,7 +46,7 @@ public class InOutStationSignalHandle extends SignalHandle{ | @@ -46,7 +46,7 @@ public class InOutStationSignalHandle extends SignalHandle{ | ||
| 46 | @Autowired | 46 | @Autowired |
| 47 | SignalSchPlanMatcher signalSchPlanMatcher; | 47 | SignalSchPlanMatcher signalSchPlanMatcher; |
| 48 | 48 | ||
| 49 | - private final static int MAX_BEFORE_TIME = 1000 * 60 * 72; | 49 | + private final static int MAX_BEFORE_TIME = 1000 * 60 * 120; |
| 50 | 50 | ||
| 51 | //最大的班次时间差,防止异常的GPS时间打乱数据 | 51 | //最大的班次时间差,防止异常的GPS时间打乱数据 |
| 52 | private final static int MAX_NORMAL_DIFF = 1000 * 60 * 60 * 12; | 52 | private final static int MAX_NORMAL_DIFF = 1000 * 60 * 60 * 12; |
| @@ -113,8 +113,8 @@ public class InOutStationSignalHandle extends SignalHandle{ | @@ -113,8 +113,8 @@ public class InOutStationSignalHandle extends SignalHandle{ | ||
| 113 | 113 | ||
| 114 | int diff = (int) (sch.getDfsjT() - gps.getTimestamp()); | 114 | int diff = (int) (sch.getDfsjT() - gps.getTimestamp()); |
| 115 | 115 | ||
| 116 | - //首班出场最多提前1.2小时 | ||
| 117 | - if(dayOfSchedule.isFirstOut(sch) && diff > MAX_BEFORE_TIME) | 116 | + //首班出场最多提前2小时 |
| 117 | + if((dayOfSchedule.isFirstOut(sch) && diff > MAX_BEFORE_TIME) || diff > MAX_BEFORE_TIME / 2) | ||
| 118 | return; | 118 | return; |
| 119 | 119 | ||
| 120 | //正常班次最大时间差 | 120 | //正常班次最大时间差 |
| @@ -129,9 +129,11 @@ public class InOutStationSignalHandle extends SignalHandle{ | @@ -129,9 +129,11 @@ public class InOutStationSignalHandle extends SignalHandle{ | ||
| 129 | signalSchPlanMatcher.outMatch(gps, sch); | 129 | signalSchPlanMatcher.outMatch(gps, sch); |
| 130 | sch = dayOfSchedule.executeCurr(gps.getNbbm()); | 130 | sch = dayOfSchedule.executeCurr(gps.getNbbm()); |
| 131 | 131 | ||
| 132 | - //实发时间不覆盖 | ||
| 133 | - if(StringUtils.isNotEmpty(sch.getFcsjActual())) | 132 | + //班次已经实发 |
| 133 | + if(StringUtils.isNotEmpty(sch.getFcsjActual()) | ||
| 134 | + && !outManyFit(gps, sch)){ | ||
| 134 | return; | 135 | return; |
| 136 | + } | ||
| 135 | 137 | ||
| 136 | //应用到离站缓冲区设置参数 | 138 | //应用到离站缓冲区设置参数 |
| 137 | long rsT = lineConfigData.applyOut(sch, gps.getTimestamp()); | 139 | long rsT = lineConfigData.applyOut(sch, gps.getTimestamp()); |
| @@ -185,6 +187,26 @@ public class InOutStationSignalHandle extends SignalHandle{ | @@ -185,6 +187,26 @@ public class InOutStationSignalHandle extends SignalHandle{ | ||
| 185 | } | 187 | } |
| 186 | } | 188 | } |
| 187 | 189 | ||
| 190 | + /** | ||
| 191 | + * 是否是一个更合适的发车信号 | ||
| 192 | + * @param gps | ||
| 193 | + * @param sch | ||
| 194 | + * @return | ||
| 195 | + */ | ||
| 196 | + private boolean outManyFit(GpsEntity gps, ScheduleRealInfo sch) { | ||
| 197 | + if(StringUtils.isNotEmpty(sch.getZdsjActual())) | ||
| 198 | + return false; | ||
| 199 | + | ||
| 200 | + long t1 = sch.getFcsjActualTime(); | ||
| 201 | + long t2 = gps.getTimestamp(); | ||
| 202 | + long c = sch.getDfsjT(); | ||
| 203 | + | ||
| 204 | + if(c - t1 > 1000 * 60 * 15 && Math.abs(t2 - c) < 1000 * 60 * 5){ | ||
| 205 | + return true; | ||
| 206 | + } | ||
| 207 | + return false; | ||
| 208 | + } | ||
| 209 | + | ||
| 188 | 210 | ||
| 189 | private void outStationAndOutPark(ScheduleRealInfo sch){ | 211 | private void outStationAndOutPark(ScheduleRealInfo sch){ |
| 190 | LineConfig config = lineConfigData.get(sch.getXlBm()); | 212 | LineConfig config = lineConfigData.get(sch.getXlBm()); |
| @@ -230,7 +252,7 @@ public class InOutStationSignalHandle extends SignalHandle{ | @@ -230,7 +252,7 @@ public class InOutStationSignalHandle extends SignalHandle{ | ||
| 230 | logger.info("NullPointerException " + sch.getXlName() + " 有班次无班次历时,,,检查一下是否需要出站既出场。"); | 252 | logger.info("NullPointerException " + sch.getXlName() + " 有班次无班次历时,,,检查一下是否需要出站既出场。"); |
| 231 | } | 253 | } |
| 232 | //进场最多提前1.2小时 | 254 | //进场最多提前1.2小时 |
| 233 | - if(sch.getBcType().equals("in") && diff > MAX_BEFORE_TIME) | 255 | + if((sch.getBcType().equals("in") && diff > MAX_BEFORE_TIME) || diff > MAX_BEFORE_TIME/2) |
| 234 | return; | 256 | return; |
| 235 | 257 | ||
| 236 | //正常班次最大时间差 | 258 | //正常班次最大时间差 |
src/main/java/com/bsth/data/gpsdata/arrival/utils/SignalSchPlanMatcher.java
| @@ -3,6 +3,8 @@ package com.bsth.data.gpsdata.arrival.utils; | @@ -3,6 +3,8 @@ package com.bsth.data.gpsdata.arrival.utils; | ||
| 3 | import com.bsth.data.gpsdata.GpsEntity; | 3 | import com.bsth.data.gpsdata.GpsEntity; |
| 4 | import com.bsth.data.schedule.DayOfSchedule; | 4 | import com.bsth.data.schedule.DayOfSchedule; |
| 5 | import com.bsth.entity.realcontrol.ScheduleRealInfo; | 5 | import com.bsth.entity.realcontrol.ScheduleRealInfo; |
| 6 | +import org.slf4j.Logger; | ||
| 7 | +import org.slf4j.LoggerFactory; | ||
| 6 | import org.springframework.beans.factory.annotation.Autowired; | 8 | import org.springframework.beans.factory.annotation.Autowired; |
| 7 | import org.springframework.stereotype.Component; | 9 | import org.springframework.stereotype.Component; |
| 8 | 10 | ||
| @@ -16,6 +18,8 @@ public class SignalSchPlanMatcher { | @@ -16,6 +18,8 @@ public class SignalSchPlanMatcher { | ||
| 16 | @Autowired | 18 | @Autowired |
| 17 | DayOfSchedule dayOfSchedule; | 19 | DayOfSchedule dayOfSchedule; |
| 18 | 20 | ||
| 21 | + Logger log = LoggerFactory.getLogger(this.getClass()); | ||
| 22 | + | ||
| 19 | /** | 23 | /** |
| 20 | * 发车信号匹配 | 24 | * 发车信号匹配 |
| 21 | * @param outSigal | 25 | * @param outSigal |
| @@ -27,6 +31,25 @@ public class SignalSchPlanMatcher { | @@ -27,6 +31,25 @@ public class SignalSchPlanMatcher { | ||
| 27 | if(t < sch.getDfsjT()) | 31 | if(t < sch.getDfsjT()) |
| 28 | return; | 32 | return; |
| 29 | 33 | ||
| 34 | + try{ | ||
| 35 | + //会不会是分班没有完成 | ||
| 36 | + if(sch.getBcType().equals("in")){ | ||
| 37 | + ScheduleRealInfo fbFirst = dayOfSchedule.nextByBcType(sch, "normal"); | ||
| 38 | + | ||
| 39 | + if(fbFirst == null) | ||
| 40 | + return; | ||
| 41 | + | ||
| 42 | + long dt = fbFirst.getDfsjT(); | ||
| 43 | + //前5后10 -执行分班的首个营运 | ||
| 44 | + if(dt - t < 1000 * 60 * 5 || t - dt < 1000 * 60 * 10){ | ||
| 45 | + dayOfSchedule.addExecPlan(fbFirst); | ||
| 46 | + return; | ||
| 47 | + } | ||
| 48 | + } | ||
| 49 | + }catch (Exception e){ | ||
| 50 | + log.error("", e); | ||
| 51 | + } | ||
| 52 | + | ||
| 30 | //下一个相同走向的班次 | 53 | //下一个相同走向的班次 |
| 31 | ScheduleRealInfo next = dayOfSchedule.nextSame(sch); | 54 | ScheduleRealInfo next = dayOfSchedule.nextSame(sch); |
| 32 | if(next == null || !next.getQdzCode().equals(sch.getQdzCode())) | 55 | if(next == null || !next.getQdzCode().equals(sch.getQdzCode())) |
src/main/java/com/bsth/data/gpsdata/recovery/GpsDataRecovery.java
| @@ -60,8 +60,10 @@ public class GpsDataRecovery implements ApplicationContextAware { | @@ -60,8 +60,10 @@ public class GpsDataRecovery implements ApplicationContextAware { | ||
| 60 | for (String lineId : keys) { | 60 | for (String lineId : keys) { |
| 61 | Collections.sort(listMap.get(lineId), comp); | 61 | Collections.sort(listMap.get(lineId), comp); |
| 62 | threadPool.execute(new RecoveryThread(listMap.get(lineId), count)); | 62 | threadPool.execute(new RecoveryThread(listMap.get(lineId), count)); |
| 63 | - /*if(nbbm.equals("W7C-001")) | 63 | + /*if(nbbm.equals("W7E-016")) |
| 64 | new RecoveryThread(listMap.get(nbbm), count).run();*/ | 64 | new RecoveryThread(listMap.get(nbbm), count).run();*/ |
| 65 | + /*if(lineId.equals("60028")) | ||
| 66 | + new RecoveryThread(listMap.get(lineId), count).run();*/ | ||
| 65 | } | 67 | } |
| 66 | 68 | ||
| 67 | try { | 69 | try { |
| @@ -82,7 +84,7 @@ public class GpsDataRecovery implements ApplicationContextAware { | @@ -82,7 +84,7 @@ public class GpsDataRecovery implements ApplicationContextAware { | ||
| 82 | Calendar calendar = Calendar.getInstance(); | 84 | Calendar calendar = Calendar.getInstance(); |
| 83 | int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR); | 85 | int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR); |
| 84 | 86 | ||
| 85 | - String sql = "select DEVICE_ID,LAT,LON,TS,SPEED_GPS,LINE_ID,SERVICE_STATE from bsth_c_gps_info where days_year=" + dayOfYear; | 87 | + String sql = "select DEVICE_ID,LAT,LON,TS,SPEED_GPS,LINE_ID,SERVICE_STATE from bsth_c_gps_info where days_year=143";// + dayOfYear; |
| 86 | JdbcTemplate jdbcTemplate = new JdbcTemplate(DBUtils_MS.getDataSource()); | 88 | JdbcTemplate jdbcTemplate = new JdbcTemplate(DBUtils_MS.getDataSource()); |
| 87 | 89 | ||
| 88 | List<GpsEntity> list = | 90 | List<GpsEntity> list = |
| @@ -150,30 +152,34 @@ public class GpsDataRecovery implements ApplicationContextAware { | @@ -150,30 +152,34 @@ public class GpsDataRecovery implements ApplicationContextAware { | ||
| 150 | CircleQueue<GpsEntity> prevs; | 152 | CircleQueue<GpsEntity> prevs; |
| 151 | boolean task; | 153 | boolean task; |
| 152 | for (GpsEntity gps : list) { | 154 | for (GpsEntity gps : list) { |
| 153 | - | ||
| 154 | - //是否有任务 | ||
| 155 | - | ||
| 156 | - prevs = GeoCacheData.getGps(gps.getNbbm()); | ||
| 157 | - //掉线处理 | ||
| 158 | - offlineSignalHandle.handle(gps, prevs); | ||
| 159 | - //状态处理 | ||
| 160 | - task = correctSignalHandle.handle(gps, prevs); | ||
| 161 | - //场,站内外判断 | ||
| 162 | - stationInsideHandle.handle(gps, prevs); | ||
| 163 | - //异常判定(越界/超速) | ||
| 164 | - //abnormalStateHandle.handle(gps, prevs); | ||
| 165 | - | ||
| 166 | - if(!task) | ||
| 167 | - continue; //无任务的,到这里就结束 | ||
| 168 | - | ||
| 169 | - //反向处理 | ||
| 170 | - reverseSignalHandle.handle(gps, prevs); | ||
| 171 | - //进出站动作处理 | ||
| 172 | - inOutStationSignalHandle.handle(gps, prevs); | ||
| 173 | - GeoCacheData.putGps(gps); | 155 | + try { |
| 156 | + /*if(gps.getTimestamp() >= 1495512240000L){ | ||
| 157 | + System.out.println("debugger..."); | ||
| 158 | + }*/ | ||
| 159 | + //是否有任务 | ||
| 160 | + | ||
| 161 | + prevs = GeoCacheData.getGps(gps.getNbbm()); | ||
| 162 | + //掉线处理 | ||
| 163 | + offlineSignalHandle.handle(gps, prevs); | ||
| 164 | + //状态处理 | ||
| 165 | + task = correctSignalHandle.handle(gps, prevs); | ||
| 166 | + //场,站内外判断 | ||
| 167 | + stationInsideHandle.handle(gps, prevs); | ||
| 168 | + //异常判定(越界/超速) | ||
| 169 | + //abnormalStateHandle.handle(gps, prevs); | ||
| 170 | + | ||
| 171 | + if (!task) | ||
| 172 | + continue; //无任务的,到这里就结束 | ||
| 173 | + | ||
| 174 | + //反向处理 | ||
| 175 | + reverseSignalHandle.handle(gps, prevs); | ||
| 176 | + //进出站动作处理 | ||
| 177 | + inOutStationSignalHandle.handle(gps, prevs); | ||
| 178 | + GeoCacheData.putGps(gps); | ||
| 179 | + } catch (Exception e) { | ||
| 180 | + logger.error("", e); | ||
| 181 | + } | ||
| 174 | } | 182 | } |
| 175 | - } catch (Exception e) { | ||
| 176 | - logger.error("", e); | ||
| 177 | } finally { | 183 | } finally { |
| 178 | count.countDown(); | 184 | count.countDown(); |
| 179 | } | 185 | } |
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
| @@ -649,7 +649,12 @@ public class DayOfSchedule { | @@ -649,7 +649,12 @@ public class DayOfSchedule { | ||
| 649 | nbbmScheduleMap.remove(sch.getClZbh(), sch); | 649 | nbbmScheduleMap.remove(sch.getClZbh(), sch); |
| 650 | id2SchedulMap.remove(sch.getId()); | 650 | id2SchedulMap.remove(sch.getId()); |
| 651 | lpScheduleMap.remove(sch.getXlBm() + "_" + sch.getLpName(), sch); | 651 | lpScheduleMap.remove(sch.getXlBm() + "_" + sch.getLpName(), sch); |
| 652 | - //return sch; | 652 | + |
| 653 | + //如果正在执行该班次 | ||
| 654 | + if(carExecutePlanMap.get(sch.getClZbh()) == sch){ | ||
| 655 | + //重新计算车辆当前执行班次 | ||
| 656 | + reCalcExecPlan(sch.getClZbh()); | ||
| 657 | + } | ||
| 653 | } | 658 | } |
| 654 | 659 | ||
| 655 | 660 | ||
| @@ -776,6 +781,26 @@ public class DayOfSchedule { | @@ -776,6 +781,26 @@ public class DayOfSchedule { | ||
| 776 | } | 781 | } |
| 777 | 782 | ||
| 778 | /** | 783 | /** |
| 784 | + * @Title: nextByBcType | ||
| 785 | + * @Description: TODO(获取下一个指定班次类型的班次) | ||
| 786 | + */ | ||
| 787 | + public ScheduleRealInfo nextByBcType(ScheduleRealInfo sch, String bcType) { | ||
| 788 | + List<ScheduleRealInfo> list = nbbmScheduleMap.get(sch.getClZbh()); | ||
| 789 | + Collections.sort(list, schFCSJComparator); | ||
| 790 | + | ||
| 791 | + boolean flag = false; | ||
| 792 | + for(ScheduleRealInfo temp : list){ | ||
| 793 | + if(temp == sch){ | ||
| 794 | + flag = true; | ||
| 795 | + } | ||
| 796 | + | ||
| 797 | + if(flag && temp.getBcType().equals(bcType)) | ||
| 798 | + return temp; | ||
| 799 | + } | ||
| 800 | + return null; | ||
| 801 | + } | ||
| 802 | + | ||
| 803 | + /** | ||
| 779 | * 搜索离当前时间最近的一个指定类型的班次 | 804 | * 搜索离当前时间最近的一个指定类型的班次 |
| 780 | * @param nbbm | 805 | * @param nbbm |
| 781 | * @param bcType | 806 | * @param bcType |
src/main/java/com/bsth/data/schedule/edit_logs/ScheduleModifyLogger.java
| 1 | -package com.bsth.data.schedule.edit_logs; | ||
| 2 | - | ||
| 3 | -import com.alibaba.fastjson.JSONArray; | ||
| 4 | -import com.alibaba.fastjson.JSONObject; | ||
| 5 | -import com.bsth.controller.realcontrol.dto.ChangePersonCar; | ||
| 6 | -import com.bsth.data.schedule.edit_logs.entity.EditType; | ||
| 7 | -import com.bsth.data.schedule.edit_logs.entity.SchEditInfo; | ||
| 8 | -import com.bsth.entity.realcontrol.ScheduleRealInfo; | ||
| 9 | -import org.apache.commons.lang3.StringUtils; | ||
| 10 | -import org.slf4j.Logger; | ||
| 11 | -import org.slf4j.LoggerFactory; | ||
| 12 | - | ||
| 13 | -import java.util.LinkedList; | ||
| 14 | - | ||
| 15 | -/** | ||
| 16 | - * 班次修正记录 | ||
| 17 | - * Created by panzhao on 2017/5/16. | ||
| 18 | - */ | ||
| 19 | -public class ScheduleModifyLogger { | ||
| 20 | - | ||
| 21 | - public static LinkedList<SchEditInfo> list; | ||
| 22 | - | ||
| 23 | - static { | ||
| 24 | - list = new LinkedList<>(); | ||
| 25 | - } | ||
| 26 | - | ||
| 27 | - static Logger log = LoggerFactory.getLogger(ScheduleModifyLogger.class); | ||
| 28 | - | ||
| 29 | - /** | ||
| 30 | - * 待发调整 | ||
| 31 | - * opType 0: 双击调整、 1:待发调整、2:批量待发调整、3:间隔调整 | ||
| 32 | - */ | ||
| 33 | - public static void dftz(ScheduleRealInfo sch, String opType, String oldDfsj, String nowDfsj, String remarks) { | ||
| 34 | - try { | ||
| 35 | - if (oldDfsj.equals(nowDfsj)) | ||
| 36 | - return; | ||
| 37 | - | ||
| 38 | - SchEditInfo sei = SchEditInfo.getInstance(sch); | ||
| 39 | - sei.setType(EditType.DFTZ); | ||
| 40 | - sei.setType2(opType); | ||
| 41 | - sei.setRemarks(remarks == null ? "" : remarks); | ||
| 42 | - | ||
| 43 | - //detail | ||
| 44 | - JSONObject jobj = new JSONObject(); | ||
| 45 | - jobj.put("old", oldDfsj); | ||
| 46 | - jobj.put("now", nowDfsj); | ||
| 47 | - | ||
| 48 | - sei.setJsonArray(jobj.toJSONString()); | ||
| 49 | - | ||
| 50 | - put(sei); | ||
| 51 | - } catch (Exception e) { | ||
| 52 | - log.error("", e); | ||
| 53 | - } | ||
| 54 | - } | ||
| 55 | - | ||
| 56 | - /** | ||
| 57 | - * 发车信息微调记录器 | ||
| 58 | - */ | ||
| 59 | - public static void fcxxwt(ScheduleRealInfo sch, String remarks, JSONArray jsonArray) { | ||
| 60 | - | ||
| 61 | - try { | ||
| 62 | - if (jsonArray == null || jsonArray.size() == 0) | ||
| 63 | - return; | ||
| 64 | - | ||
| 65 | - SchEditInfo sei = SchEditInfo.getInstance(sch); | ||
| 66 | - sei.setRemarks(remarks); | ||
| 67 | - sei.setJsonArray(jsonArray.toJSONString()); | ||
| 68 | - sei.setType(EditType.FCXXWT); | ||
| 69 | - | ||
| 70 | - put(sei); | ||
| 71 | - } catch (Exception e) { | ||
| 72 | - log.error("", e); | ||
| 73 | - } | ||
| 74 | - } | ||
| 75 | - | ||
| 76 | - /** | ||
| 77 | - * 计划烂班 | ||
| 78 | - * | ||
| 79 | - * @param remarks | ||
| 80 | - */ | ||
| 81 | - public static void jhlb(ScheduleRealInfo sch, String remarks) { | ||
| 82 | - try { | ||
| 83 | - SchEditInfo sei = SchEditInfo.getInstance(sch); | ||
| 84 | - sei.setRemarks(remarks); | ||
| 85 | - sei.setType(EditType.JHLB); | ||
| 86 | - | ||
| 87 | - put(sei); | ||
| 88 | - } catch (Exception e) { | ||
| 89 | - log.error("", e); | ||
| 90 | - } | ||
| 91 | - } | ||
| 92 | - | ||
| 93 | - /** | ||
| 94 | - * 实发调整 | ||
| 95 | - * | ||
| 96 | - * @param sch | ||
| 97 | - * @param nowSfsj | ||
| 98 | - * @param remarks | ||
| 99 | - */ | ||
| 100 | - public static void sftz(ScheduleRealInfo sch, String nowSfsj, String remarks) { | ||
| 101 | - try { | ||
| 102 | - SchEditInfo sei = SchEditInfo.getInstance(sch); | ||
| 103 | - sei.setRemarks(remarks); | ||
| 104 | - sei.setType(EditType.SFTZ); | ||
| 105 | - //detail | ||
| 106 | - JSONObject jobj = new JSONObject(); | ||
| 107 | - jobj.put("old", sch.getFcsjActual()); | ||
| 108 | - jobj.put("now", nowSfsj); | ||
| 109 | - | ||
| 110 | - sei.setJsonArray(jobj.toJSONString()); | ||
| 111 | - put(sei); | ||
| 112 | - } catch (Exception e) { | ||
| 113 | - log.error("", e); | ||
| 114 | - } | ||
| 115 | - } | ||
| 116 | - | ||
| 117 | - /** | ||
| 118 | - * 撤销烂班 | ||
| 119 | - * | ||
| 120 | - * @param sch | ||
| 121 | - */ | ||
| 122 | - public static void cxlb(ScheduleRealInfo sch) { | ||
| 123 | - try { | ||
| 124 | - SchEditInfo sei = SchEditInfo.getInstance(sch); | ||
| 125 | - sei.setType(EditType.CXLB); | ||
| 126 | - | ||
| 127 | - put(sei); | ||
| 128 | - } catch (Exception e) { | ||
| 129 | - log.error("", e); | ||
| 130 | - } | ||
| 131 | - } | ||
| 132 | - | ||
| 133 | - /** | ||
| 134 | - * 撤销执行 | ||
| 135 | - * | ||
| 136 | - * @param sch | ||
| 137 | - */ | ||
| 138 | - public static void cxzx(ScheduleRealInfo sch) { | ||
| 139 | - try { | ||
| 140 | - SchEditInfo sei = SchEditInfo.getInstance(sch); | ||
| 141 | - sei.setType(EditType.CXZX); | ||
| 142 | - | ||
| 143 | - //detail | ||
| 144 | - JSONObject obj = new JSONObject(); | ||
| 145 | - if (StringUtils.isNotEmpty(sch.getFcsjActual())) | ||
| 146 | - obj.put("old_sfsj", sch.getFcsjActual()); | ||
| 147 | - | ||
| 148 | - if (StringUtils.isNotEmpty(sch.getZdsjActual())) | ||
| 149 | - obj.put("old_sdsj", sch.getZdsjActual()); | ||
| 150 | - | ||
| 151 | - sei.setJsonArray(obj.toJSONString()); | ||
| 152 | - put(sei); | ||
| 153 | - } catch (Exception e) { | ||
| 154 | - log.error("", e); | ||
| 155 | - } | ||
| 156 | - } | ||
| 157 | - | ||
| 158 | - /** | ||
| 159 | - * 撤销实发 | ||
| 160 | - * | ||
| 161 | - * @param sch | ||
| 162 | - */ | ||
| 163 | - public static void cxsf(ScheduleRealInfo sch) { | ||
| 164 | - try { | ||
| 165 | - SchEditInfo sei = SchEditInfo.getInstance(sch); | ||
| 166 | - sei.setType(EditType.CXSF); | ||
| 167 | - | ||
| 168 | - //detail | ||
| 169 | - JSONObject obj = new JSONObject(); | ||
| 170 | - obj.put("old_sfsj", sch.getFcsjActual()); | ||
| 171 | - | ||
| 172 | - sei.setJsonArray(obj.toJSONString()); | ||
| 173 | - put(sei); | ||
| 174 | - } catch (Exception e) { | ||
| 175 | - log.error("", e); | ||
| 176 | - } | ||
| 177 | - } | ||
| 178 | - | ||
| 179 | - /** | ||
| 180 | - * 调整人车 | ||
| 181 | - * | ||
| 182 | - * @param sch | ||
| 183 | - * @param cpc | ||
| 184 | - */ | ||
| 185 | - public static void tzrc(ScheduleRealInfo sch, ChangePersonCar cpc) { | ||
| 186 | - try { | ||
| 187 | - String newNbbm = cpc.getClZbh(); | ||
| 188 | - String newJsy = cpc.getJsy(); | ||
| 189 | - String oldJsy = sch.getjGh() + "/" + sch.getjName(); | ||
| 190 | - | ||
| 191 | - if (newNbbm == null && newJsy == null) | ||
| 192 | - return; | ||
| 193 | - if (newNbbm != null && newJsy != null | ||
| 194 | - && newNbbm.equals(sch.getClZbh()) && newJsy.equals(oldJsy)) | ||
| 195 | - return; | ||
| 196 | - | ||
| 197 | - | ||
| 198 | - SchEditInfo sei = SchEditInfo.getInstance(sch); | ||
| 199 | - sei.setType(EditType.TZRC); | ||
| 200 | - | ||
| 201 | - //detail | ||
| 202 | - JSONObject jobj = new JSONObject(); | ||
| 203 | - if (StringUtils.isNotEmpty(newNbbm)) { | ||
| 204 | - jobj.put("old_nbbm", sch.getClZbh()); | ||
| 205 | - jobj.put("now_nbbm", newNbbm); | ||
| 206 | - } | ||
| 207 | - | ||
| 208 | - if (StringUtils.isNotEmpty(newJsy)) { | ||
| 209 | - jobj.put("old_jsy", sch.getjGh() + "/" + sch.getjName()); | ||
| 210 | - jobj.put("now_jsy", newJsy); | ||
| 211 | - } | ||
| 212 | - | ||
| 213 | - if (StringUtils.isNotEmpty(cpc.getSpy()) && cpc.getSpy().length() > 3) { | ||
| 214 | - jobj.put("old_spy", sch.getsGh() + "/" + sch.getsName()); | ||
| 215 | - jobj.put("now_spy", cpc.getSpy()); | ||
| 216 | - } | ||
| 217 | - | ||
| 218 | - sei.setJsonArray(jobj.toJSONString()); | ||
| 219 | - put(sei); | ||
| 220 | - } catch (Exception e) { | ||
| 221 | - log.error("", e); | ||
| 222 | - } | ||
| 223 | - } | ||
| 224 | - | ||
| 225 | - public static void put(SchEditInfo sei) { | ||
| 226 | - list.add(sei); | ||
| 227 | - } | ||
| 228 | -} | 1 | +package com.bsth.data.schedule.edit_logs; |
| 2 | + | ||
| 3 | +import com.alibaba.fastjson.JSONArray; | ||
| 4 | +import com.alibaba.fastjson.JSONObject; | ||
| 5 | +import com.bsth.controller.realcontrol.dto.ChangePersonCar; | ||
| 6 | +import com.bsth.data.schedule.edit_logs.entity.EditType; | ||
| 7 | +import com.bsth.data.schedule.edit_logs.entity.SchEditInfo; | ||
| 8 | +import com.bsth.entity.realcontrol.ScheduleRealInfo; | ||
| 9 | +import org.apache.commons.lang3.StringUtils; | ||
| 10 | +import org.slf4j.Logger; | ||
| 11 | +import org.slf4j.LoggerFactory; | ||
| 12 | + | ||
| 13 | +import java.util.LinkedList; | ||
| 14 | + | ||
| 15 | +/** | ||
| 16 | + * 班次修正记录 | ||
| 17 | + * Created by panzhao on 2017/5/16. | ||
| 18 | + */ | ||
| 19 | +public class ScheduleModifyLogger { | ||
| 20 | + | ||
| 21 | + public static LinkedList<SchEditInfo> list; | ||
| 22 | + | ||
| 23 | + static { | ||
| 24 | + list = new LinkedList<>(); | ||
| 25 | + } | ||
| 26 | + | ||
| 27 | + static Logger log = LoggerFactory.getLogger(ScheduleModifyLogger.class); | ||
| 28 | + | ||
| 29 | + /** | ||
| 30 | + * 待发调整 | ||
| 31 | + * opType 0: 双击调整、 1:待发调整、2:批量待发调整、3:间隔调整 | ||
| 32 | + */ | ||
| 33 | + public static void dftz(ScheduleRealInfo sch, String opType, String oldDfsj, String nowDfsj, String remarks) { | ||
| 34 | + try { | ||
| 35 | + if (oldDfsj.equals(nowDfsj)) | ||
| 36 | + return; | ||
| 37 | + | ||
| 38 | + SchEditInfo sei = SchEditInfo.getInstance(sch); | ||
| 39 | + sei.setType(EditType.DFTZ); | ||
| 40 | + sei.setType2(opType); | ||
| 41 | + sei.setRemarks(remarks == null ? "" : remarks); | ||
| 42 | + | ||
| 43 | + //detail | ||
| 44 | + JSONObject jobj = new JSONObject(); | ||
| 45 | + jobj.put("old", oldDfsj); | ||
| 46 | + jobj.put("now", nowDfsj); | ||
| 47 | + | ||
| 48 | + sei.setJsonArray(jobj.toJSONString()); | ||
| 49 | + | ||
| 50 | + put(sei); | ||
| 51 | + } catch (Exception e) { | ||
| 52 | + log.error("", e); | ||
| 53 | + } | ||
| 54 | + } | ||
| 55 | + | ||
| 56 | + /** | ||
| 57 | + * 发车信息微调记录器 | ||
| 58 | + */ | ||
| 59 | + public static void fcxxwt(ScheduleRealInfo sch, String remarks, JSONArray jsonArray) { | ||
| 60 | + | ||
| 61 | + try { | ||
| 62 | + if (jsonArray == null || jsonArray.size() == 0) | ||
| 63 | + return; | ||
| 64 | + | ||
| 65 | + SchEditInfo sei = SchEditInfo.getInstance(sch); | ||
| 66 | + sei.setRemarks(remarks); | ||
| 67 | + sei.setJsonArray(jsonArray.toJSONString()); | ||
| 68 | + sei.setType(EditType.FCXXWT); | ||
| 69 | + | ||
| 70 | + put(sei); | ||
| 71 | + } catch (Exception e) { | ||
| 72 | + log.error("", e); | ||
| 73 | + } | ||
| 74 | + } | ||
| 75 | + | ||
| 76 | + /** | ||
| 77 | + * 计划烂班 | ||
| 78 | + * | ||
| 79 | + * @param remarks | ||
| 80 | + */ | ||
| 81 | + public static void jhlb(ScheduleRealInfo sch, String remarks) { | ||
| 82 | + try { | ||
| 83 | + SchEditInfo sei = SchEditInfo.getInstance(sch); | ||
| 84 | + sei.setRemarks(remarks); | ||
| 85 | + sei.setType(EditType.JHLB); | ||
| 86 | + | ||
| 87 | + put(sei); | ||
| 88 | + } catch (Exception e) { | ||
| 89 | + log.error("", e); | ||
| 90 | + } | ||
| 91 | + } | ||
| 92 | + | ||
| 93 | + /** | ||
| 94 | + * 实发调整 | ||
| 95 | + * | ||
| 96 | + * @param sch | ||
| 97 | + * @param nowSfsj | ||
| 98 | + * @param remarks | ||
| 99 | + */ | ||
| 100 | + public static void sftz(ScheduleRealInfo sch, String nowSfsj, String remarks) { | ||
| 101 | + try { | ||
| 102 | + SchEditInfo sei = SchEditInfo.getInstance(sch); | ||
| 103 | + sei.setRemarks(remarks); | ||
| 104 | + sei.setType(EditType.SFTZ); | ||
| 105 | + //detail | ||
| 106 | + JSONObject jobj = new JSONObject(); | ||
| 107 | + jobj.put("old", sch.getFcsjActual()); | ||
| 108 | + jobj.put("now", nowSfsj); | ||
| 109 | + | ||
| 110 | + sei.setJsonArray(jobj.toJSONString()); | ||
| 111 | + put(sei); | ||
| 112 | + } catch (Exception e) { | ||
| 113 | + log.error("", e); | ||
| 114 | + } | ||
| 115 | + } | ||
| 116 | + | ||
| 117 | + /** | ||
| 118 | + * 撤销烂班 | ||
| 119 | + * | ||
| 120 | + * @param sch | ||
| 121 | + */ | ||
| 122 | + public static void cxlb(ScheduleRealInfo sch) { | ||
| 123 | + try { | ||
| 124 | + SchEditInfo sei = SchEditInfo.getInstance(sch); | ||
| 125 | + sei.setType(EditType.CXLB); | ||
| 126 | + | ||
| 127 | + put(sei); | ||
| 128 | + } catch (Exception e) { | ||
| 129 | + log.error("", e); | ||
| 130 | + } | ||
| 131 | + } | ||
| 132 | + | ||
| 133 | + /** | ||
| 134 | + * 撤销执行 | ||
| 135 | + * | ||
| 136 | + * @param sch | ||
| 137 | + */ | ||
| 138 | + public static void cxzx(ScheduleRealInfo sch) { | ||
| 139 | + try { | ||
| 140 | + SchEditInfo sei = SchEditInfo.getInstance(sch); | ||
| 141 | + sei.setType(EditType.CXZX); | ||
| 142 | + | ||
| 143 | + //detail | ||
| 144 | + JSONObject obj = new JSONObject(); | ||
| 145 | + if (StringUtils.isNotEmpty(sch.getFcsjActual())) | ||
| 146 | + obj.put("old_sfsj", sch.getFcsjActual()); | ||
| 147 | + | ||
| 148 | + if (StringUtils.isNotEmpty(sch.getZdsjActual())) | ||
| 149 | + obj.put("old_sdsj", sch.getZdsjActual()); | ||
| 150 | + | ||
| 151 | + sei.setJsonArray(obj.toJSONString()); | ||
| 152 | + put(sei); | ||
| 153 | + } catch (Exception e) { | ||
| 154 | + log.error("", e); | ||
| 155 | + } | ||
| 156 | + } | ||
| 157 | + | ||
| 158 | + /** | ||
| 159 | + * 撤销实发 | ||
| 160 | + * | ||
| 161 | + * @param sch | ||
| 162 | + */ | ||
| 163 | + public static void cxsf(ScheduleRealInfo sch) { | ||
| 164 | + try { | ||
| 165 | + SchEditInfo sei = SchEditInfo.getInstance(sch); | ||
| 166 | + sei.setType(EditType.CXSF); | ||
| 167 | + | ||
| 168 | + //detail | ||
| 169 | + JSONObject obj = new JSONObject(); | ||
| 170 | + obj.put("old_sfsj", sch.getFcsjActual()); | ||
| 171 | + | ||
| 172 | + sei.setJsonArray(obj.toJSONString()); | ||
| 173 | + put(sei); | ||
| 174 | + } catch (Exception e) { | ||
| 175 | + log.error("", e); | ||
| 176 | + } | ||
| 177 | + } | ||
| 178 | + | ||
| 179 | + /** | ||
| 180 | + * 调整人车 | ||
| 181 | + * | ||
| 182 | + * @param sch | ||
| 183 | + * @param cpc | ||
| 184 | + */ | ||
| 185 | + public static void tzrc(ScheduleRealInfo sch, ChangePersonCar cpc) { | ||
| 186 | + try { | ||
| 187 | + String newNbbm = cpc.getClZbh(); | ||
| 188 | + String newJsy = cpc.getJsy(); | ||
| 189 | + String newSpy = cpc.getSpy(); | ||
| 190 | + //String oldJsy = sch.getjGh() + "/" + sch.getjName(); | ||
| 191 | + | ||
| 192 | + if (newNbbm == null && newJsy == null && newSpy==null) | ||
| 193 | + return; | ||
| 194 | + /*if (newNbbm != null && newJsy != null | ||
| 195 | + && newNbbm.equals(sch.getClZbh()) && newJsy.equals(oldJsy)) | ||
| 196 | + return;*/ | ||
| 197 | + | ||
| 198 | + | ||
| 199 | + SchEditInfo sei = SchEditInfo.getInstance(sch); | ||
| 200 | + sei.setType(EditType.TZRC); | ||
| 201 | + | ||
| 202 | + //detail | ||
| 203 | + JSONObject jobj = new JSONObject(); | ||
| 204 | + if (StringUtils.isNotEmpty(newNbbm) && !newNbbm.equals(sch.getClZbh())) { | ||
| 205 | + jobj.put("old_nbbm", sch.getClZbh()); | ||
| 206 | + jobj.put("now_nbbm", newNbbm); | ||
| 207 | + } | ||
| 208 | + | ||
| 209 | + String oldJsy = sch.getjGh() + "/" + sch.getjName(); | ||
| 210 | + if (StringUtils.isNotEmpty(newJsy) && !newJsy.equals(oldJsy)) { | ||
| 211 | + jobj.put("old_jsy", oldJsy); | ||
| 212 | + jobj.put("now_jsy", newJsy); | ||
| 213 | + } | ||
| 214 | + | ||
| 215 | + String oldSpy = sch.getsGh() + "/" + sch.getsName(); | ||
| 216 | + if (StringUtils.isNotEmpty(newSpy) && !newSpy.equals(oldSpy)) { | ||
| 217 | + jobj.put("old_spy", oldSpy); | ||
| 218 | + jobj.put("now_spy", cpc.getSpy()); | ||
| 219 | + } | ||
| 220 | + | ||
| 221 | + sei.setJsonArray(jobj.toJSONString()); | ||
| 222 | + put(sei); | ||
| 223 | + } catch (Exception e) { | ||
| 224 | + log.error("", e); | ||
| 225 | + } | ||
| 226 | + } | ||
| 227 | + | ||
| 228 | + public static void put(SchEditInfo sei) { | ||
| 229 | + list.add(sei); | ||
| 230 | + } | ||
| 231 | +} |
src/main/java/com/bsth/data/schedule/edit_logs/SeiPstThread.java
| 1 | -package com.bsth.data.schedule.edit_logs; | ||
| 2 | - | ||
| 3 | -import com.bsth.data.schedule.edit_logs.entity.SchEditInfo; | ||
| 4 | -import com.bsth.data.schedule.edit_logs.repository.EditInfoRepository; | ||
| 5 | -import org.slf4j.Logger; | ||
| 6 | -import org.slf4j.LoggerFactory; | ||
| 7 | -import org.springframework.beans.factory.annotation.Autowired; | ||
| 8 | -import org.springframework.stereotype.Component; | ||
| 9 | - | ||
| 10 | -import java.util.ArrayList; | ||
| 11 | -import java.util.LinkedList; | ||
| 12 | -import java.util.List; | ||
| 13 | - | ||
| 14 | -/** | ||
| 15 | - * 班次修正日志入库 | ||
| 16 | - * Created by panzhao on 2017/5/19. | ||
| 17 | - */ | ||
| 18 | -@Component | ||
| 19 | -public class SeiPstThread extends Thread{ | ||
| 20 | - | ||
| 21 | - @Autowired | ||
| 22 | - EditInfoRepository repository; | ||
| 23 | - | ||
| 24 | - Logger log = LoggerFactory.getLogger(this.getClass()); | ||
| 25 | - | ||
| 26 | - @Override | ||
| 27 | - public void run() { | ||
| 28 | - try{ | ||
| 29 | - List<SchEditInfo> pstList = new ArrayList<>(); | ||
| 30 | - LinkedList<SchEditInfo> list = ScheduleModifyLogger.list; | ||
| 31 | - SchEditInfo sei; | ||
| 32 | - for(int i = 0; i < 1000; i ++){ | ||
| 33 | - sei = list.poll(); | ||
| 34 | - if(sei == null) | ||
| 35 | - break; | ||
| 36 | - else{ | ||
| 37 | - //repository.save(sei); | ||
| 38 | - pstList.add(sei); | ||
| 39 | - } | ||
| 40 | - } | ||
| 41 | - | ||
| 42 | - repository.save(pstList); | ||
| 43 | - }catch (Exception e){ | ||
| 44 | - log.error("", e); | ||
| 45 | - } | ||
| 46 | - } | 1 | +package com.bsth.data.schedule.edit_logs; |
| 2 | + | ||
| 3 | +import com.bsth.data.schedule.edit_logs.entity.SchEditInfo; | ||
| 4 | +import com.bsth.data.schedule.edit_logs.repository.EditInfoRepository; | ||
| 5 | +import org.slf4j.Logger; | ||
| 6 | +import org.slf4j.LoggerFactory; | ||
| 7 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 8 | +import org.springframework.stereotype.Component; | ||
| 9 | + | ||
| 10 | +import java.util.ArrayList; | ||
| 11 | +import java.util.LinkedList; | ||
| 12 | +import java.util.List; | ||
| 13 | + | ||
| 14 | +/** | ||
| 15 | + * 班次修正日志入库 | ||
| 16 | + * Created by panzhao on 2017/5/19. | ||
| 17 | + */ | ||
| 18 | +@Component | ||
| 19 | +public class SeiPstThread extends Thread{ | ||
| 20 | + | ||
| 21 | + @Autowired | ||
| 22 | + EditInfoRepository repository; | ||
| 23 | + | ||
| 24 | + Logger log = LoggerFactory.getLogger(this.getClass()); | ||
| 25 | + | ||
| 26 | + @Override | ||
| 27 | + public void run() { | ||
| 28 | + try{ | ||
| 29 | + List<SchEditInfo> pstList = new ArrayList<>(); | ||
| 30 | + LinkedList<SchEditInfo> list = ScheduleModifyLogger.list; | ||
| 31 | + SchEditInfo sei; | ||
| 32 | + for(int i = 0; i < 1000; i ++){ | ||
| 33 | + sei = list.poll(); | ||
| 34 | + if(sei == null) | ||
| 35 | + break; | ||
| 36 | + else{ | ||
| 37 | + //repository.save(sei); | ||
| 38 | + pstList.add(sei); | ||
| 39 | + } | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + repository.save(pstList); | ||
| 43 | + }catch (Exception e){ | ||
| 44 | + log.error("", e); | ||
| 45 | + } | ||
| 46 | + } | ||
| 47 | } | 47 | } |
| 48 | \ No newline at end of file | 48 | \ No newline at end of file |
src/main/java/com/bsth/data/schedule/edit_logs/entity/EditType.java
| 1 | -package com.bsth.data.schedule.edit_logs.entity; | ||
| 2 | - | ||
| 3 | -/** | ||
| 4 | - * Created by panzhao on 2017/5/18. | ||
| 5 | - */ | ||
| 6 | -public enum EditType { | ||
| 7 | - | ||
| 8 | - DFTZ,SFTZ,FCXXWT,TZRC,LPDD,ZRW,JHLB,CXLB, CXSF, CXZX | 1 | +package com.bsth.data.schedule.edit_logs.entity; |
| 2 | + | ||
| 3 | +/** | ||
| 4 | + * Created by panzhao on 2017/5/18. | ||
| 5 | + */ | ||
| 6 | +public enum EditType { | ||
| 7 | + | ||
| 8 | + DFTZ,SFTZ,FCXXWT,TZRC,LPDD,ZRW,JHLB,CXLB, CXSF, CXZX | ||
| 9 | } | 9 | } |
| 10 | \ No newline at end of file | 10 | \ No newline at end of file |
src/main/java/com/bsth/data/schedule/edit_logs/entity/SchEditInfo.java
| 1 | -package com.bsth.data.schedule.edit_logs.entity; | ||
| 2 | - | ||
| 3 | -import com.bsth.entity.realcontrol.ScheduleRealInfo; | ||
| 4 | -import com.bsth.entity.sys.SysUser; | ||
| 5 | -import com.bsth.security.util.SecurityUtils; | ||
| 6 | -import org.joda.time.format.DateTimeFormat; | ||
| 7 | -import org.joda.time.format.DateTimeFormatter; | ||
| 8 | - | ||
| 9 | -import javax.persistence.*; | ||
| 10 | - | ||
| 11 | -/** | ||
| 12 | - * Created by panzhao on 2017/5/18. | ||
| 13 | - */ | ||
| 14 | -@Entity | ||
| 15 | -@Table(name = "logger_sch_modify") | ||
| 16 | -public class SchEditInfo { | ||
| 17 | - | ||
| 18 | - @Id | ||
| 19 | - @GeneratedValue | ||
| 20 | - private long id; | ||
| 21 | - /** | ||
| 22 | - * 日期 yyyy-MM-dd | ||
| 23 | - */ | ||
| 24 | - private String rq; | ||
| 25 | - | ||
| 26 | - /** | ||
| 27 | - * 时间 HH:mm | ||
| 28 | - */ | ||
| 29 | - private String timeStr; | ||
| 30 | - | ||
| 31 | - /** 时间戳 */ | ||
| 32 | - private long ts; | ||
| 33 | - | ||
| 34 | - private String lineCode; | ||
| 35 | - | ||
| 36 | - private String gsbm; | ||
| 37 | - | ||
| 38 | - private String fgsbm; | ||
| 39 | - | ||
| 40 | - /** | ||
| 41 | - * 班次ID | ||
| 42 | - */ | ||
| 43 | - private long schId; | ||
| 44 | - | ||
| 45 | - /** | ||
| 46 | - * 类型 | ||
| 47 | - */ | ||
| 48 | - @Enumerated(EnumType.STRING) | ||
| 49 | - private EditType type; | ||
| 50 | - | ||
| 51 | - private String type2; | ||
| 52 | - /** | ||
| 53 | - * 操作人 @system 系统/用户名 | ||
| 54 | - */ | ||
| 55 | - private String user; | ||
| 56 | - | ||
| 57 | - /** | ||
| 58 | - * 操作明细 | ||
| 59 | - */ | ||
| 60 | - @Column(length = 2000) | ||
| 61 | - private String jsonArray; | ||
| 62 | - | ||
| 63 | - private String remarks; | ||
| 64 | - | ||
| 65 | - public String getRq() { | ||
| 66 | - return rq; | ||
| 67 | - } | ||
| 68 | - | ||
| 69 | - public void setRq(String rq) { | ||
| 70 | - this.rq = rq; | ||
| 71 | - } | ||
| 72 | - | ||
| 73 | - public String getTimeStr() { | ||
| 74 | - return timeStr; | ||
| 75 | - } | ||
| 76 | - | ||
| 77 | - public void setTimeStr(String timeStr) { | ||
| 78 | - this.timeStr = timeStr; | ||
| 79 | - } | ||
| 80 | - | ||
| 81 | - public long getSchId() { | ||
| 82 | - return schId; | ||
| 83 | - } | ||
| 84 | - | ||
| 85 | - public void setSchId(long schId) { | ||
| 86 | - this.schId = schId; | ||
| 87 | - } | ||
| 88 | - | ||
| 89 | - public EditType getType() { | ||
| 90 | - return type; | ||
| 91 | - } | ||
| 92 | - | ||
| 93 | - public void setType(EditType type) { | ||
| 94 | - this.type = type; | ||
| 95 | - } | ||
| 96 | - | ||
| 97 | - public String getUser() { | ||
| 98 | - return user; | ||
| 99 | - } | ||
| 100 | - | ||
| 101 | - public void setUser(String user) { | ||
| 102 | - this.user = user; | ||
| 103 | - } | ||
| 104 | - | ||
| 105 | - public long getId() { | ||
| 106 | - return id; | ||
| 107 | - } | ||
| 108 | - | ||
| 109 | - public void setId(long id) { | ||
| 110 | - this.id = id; | ||
| 111 | - } | ||
| 112 | - | ||
| 113 | - public String getJsonArray() { | ||
| 114 | - return jsonArray; | ||
| 115 | - } | ||
| 116 | - | ||
| 117 | - public void setJsonArray(String jsonArray) { | ||
| 118 | - this.jsonArray = jsonArray; | ||
| 119 | - } | ||
| 120 | - | ||
| 121 | - public String getType2() { | ||
| 122 | - return type2; | ||
| 123 | - } | ||
| 124 | - | ||
| 125 | - public void setType2(String type2) { | ||
| 126 | - this.type2 = type2; | ||
| 127 | - } | ||
| 128 | - | ||
| 129 | - public String getRemarks() { | ||
| 130 | - return remarks; | ||
| 131 | - } | ||
| 132 | - | ||
| 133 | - public void setRemarks(String remarks) { | ||
| 134 | - this.remarks = remarks; | ||
| 135 | - } | ||
| 136 | - | ||
| 137 | - | ||
| 138 | - @Transient | ||
| 139 | - private static DateTimeFormatter fmtHHmm = DateTimeFormat.forPattern("HH:mm"); | ||
| 140 | - /* @Transient | ||
| 141 | - private static DateTimeFormatter fmtyyyyMMdd = DateTimeFormat.forPattern("yyyy-MM-dd");*/ | ||
| 142 | - public static SchEditInfo getInstance(ScheduleRealInfo sch){ | ||
| 143 | - SchEditInfo sei = new SchEditInfo(); | ||
| 144 | - long t = System.currentTimeMillis(); | ||
| 145 | - | ||
| 146 | - sei.setTs(t); | ||
| 147 | - sei.setTimeStr(fmtHHmm.print(t)); | ||
| 148 | - | ||
| 149 | - SysUser user = SecurityUtils.getCurrentUser(); | ||
| 150 | - if(user != null) | ||
| 151 | - sei.setUser(user.getUserName()); | ||
| 152 | - | ||
| 153 | - if(sch != null){ | ||
| 154 | - sei.setRq(sch.getScheduleDateStr()); | ||
| 155 | - sei.setSchId(sch.getId()); | ||
| 156 | - sei.setLineCode(sch.getXlBm()); | ||
| 157 | - sei.setGsbm(sch.getGsBm()); | ||
| 158 | - sei.setFgsbm(sch.getFgsBm()); | ||
| 159 | - } | ||
| 160 | - return sei; | ||
| 161 | - } | ||
| 162 | - | ||
| 163 | - public String getLineCode() { | ||
| 164 | - return lineCode; | ||
| 165 | - } | ||
| 166 | - | ||
| 167 | - public void setLineCode(String lineCode) { | ||
| 168 | - this.lineCode = lineCode; | ||
| 169 | - } | ||
| 170 | - | ||
| 171 | - public String getGsbm() { | ||
| 172 | - return gsbm; | ||
| 173 | - } | ||
| 174 | - | ||
| 175 | - public void setGsbm(String gsbm) { | ||
| 176 | - this.gsbm = gsbm; | ||
| 177 | - } | ||
| 178 | - | ||
| 179 | - public String getFgsbm() { | ||
| 180 | - return fgsbm; | ||
| 181 | - } | ||
| 182 | - | ||
| 183 | - public void setFgsbm(String fgsbm) { | ||
| 184 | - this.fgsbm = fgsbm; | ||
| 185 | - } | ||
| 186 | - | ||
| 187 | - public long getTs() { | ||
| 188 | - return ts; | ||
| 189 | - } | ||
| 190 | - | ||
| 191 | - public void setTs(long ts) { | ||
| 192 | - this.ts = ts; | ||
| 193 | - } | 1 | +package com.bsth.data.schedule.edit_logs.entity; |
| 2 | + | ||
| 3 | +import com.bsth.entity.realcontrol.ScheduleRealInfo; | ||
| 4 | +import com.bsth.entity.sys.SysUser; | ||
| 5 | +import com.bsth.security.util.SecurityUtils; | ||
| 6 | +import org.joda.time.format.DateTimeFormat; | ||
| 7 | +import org.joda.time.format.DateTimeFormatter; | ||
| 8 | + | ||
| 9 | +import javax.persistence.*; | ||
| 10 | + | ||
| 11 | +/** | ||
| 12 | + * Created by panzhao on 2017/5/18. | ||
| 13 | + */ | ||
| 14 | +@Entity | ||
| 15 | +@Table(name = "logger_sch_modify") | ||
| 16 | +public class SchEditInfo { | ||
| 17 | + | ||
| 18 | + @Id | ||
| 19 | + @GeneratedValue | ||
| 20 | + private long id; | ||
| 21 | + /** | ||
| 22 | + * 日期 yyyy-MM-dd | ||
| 23 | + */ | ||
| 24 | + private String rq; | ||
| 25 | + | ||
| 26 | + /** | ||
| 27 | + * 时间 HH:mm | ||
| 28 | + */ | ||
| 29 | + private String timeStr; | ||
| 30 | + | ||
| 31 | + /** 时间戳 */ | ||
| 32 | + private long ts; | ||
| 33 | + | ||
| 34 | + private String lineCode; | ||
| 35 | + | ||
| 36 | + private String gsbm; | ||
| 37 | + | ||
| 38 | + private String fgsbm; | ||
| 39 | + | ||
| 40 | + /** | ||
| 41 | + * 班次ID | ||
| 42 | + */ | ||
| 43 | + private long schId; | ||
| 44 | + | ||
| 45 | + /** | ||
| 46 | + * 类型 | ||
| 47 | + */ | ||
| 48 | + @Enumerated(EnumType.STRING) | ||
| 49 | + private EditType type; | ||
| 50 | + | ||
| 51 | + private String type2; | ||
| 52 | + /** | ||
| 53 | + * 操作人 @system 系统/用户名 | ||
| 54 | + */ | ||
| 55 | + private String user; | ||
| 56 | + | ||
| 57 | + /** | ||
| 58 | + * 操作明细 | ||
| 59 | + */ | ||
| 60 | + @Column(length = 2000) | ||
| 61 | + private String jsonArray; | ||
| 62 | + | ||
| 63 | + private String remarks; | ||
| 64 | + | ||
| 65 | + public String getRq() { | ||
| 66 | + return rq; | ||
| 67 | + } | ||
| 68 | + | ||
| 69 | + public void setRq(String rq) { | ||
| 70 | + this.rq = rq; | ||
| 71 | + } | ||
| 72 | + | ||
| 73 | + public String getTimeStr() { | ||
| 74 | + return timeStr; | ||
| 75 | + } | ||
| 76 | + | ||
| 77 | + public void setTimeStr(String timeStr) { | ||
| 78 | + this.timeStr = timeStr; | ||
| 79 | + } | ||
| 80 | + | ||
| 81 | + public long getSchId() { | ||
| 82 | + return schId; | ||
| 83 | + } | ||
| 84 | + | ||
| 85 | + public void setSchId(long schId) { | ||
| 86 | + this.schId = schId; | ||
| 87 | + } | ||
| 88 | + | ||
| 89 | + public EditType getType() { | ||
| 90 | + return type; | ||
| 91 | + } | ||
| 92 | + | ||
| 93 | + public void setType(EditType type) { | ||
| 94 | + this.type = type; | ||
| 95 | + } | ||
| 96 | + | ||
| 97 | + public String getUser() { | ||
| 98 | + return user; | ||
| 99 | + } | ||
| 100 | + | ||
| 101 | + public void setUser(String user) { | ||
| 102 | + this.user = user; | ||
| 103 | + } | ||
| 104 | + | ||
| 105 | + public long getId() { | ||
| 106 | + return id; | ||
| 107 | + } | ||
| 108 | + | ||
| 109 | + public void setId(long id) { | ||
| 110 | + this.id = id; | ||
| 111 | + } | ||
| 112 | + | ||
| 113 | + public String getJsonArray() { | ||
| 114 | + return jsonArray; | ||
| 115 | + } | ||
| 116 | + | ||
| 117 | + public void setJsonArray(String jsonArray) { | ||
| 118 | + this.jsonArray = jsonArray; | ||
| 119 | + } | ||
| 120 | + | ||
| 121 | + public String getType2() { | ||
| 122 | + return type2; | ||
| 123 | + } | ||
| 124 | + | ||
| 125 | + public void setType2(String type2) { | ||
| 126 | + this.type2 = type2; | ||
| 127 | + } | ||
| 128 | + | ||
| 129 | + public String getRemarks() { | ||
| 130 | + return remarks; | ||
| 131 | + } | ||
| 132 | + | ||
| 133 | + public void setRemarks(String remarks) { | ||
| 134 | + this.remarks = remarks; | ||
| 135 | + } | ||
| 136 | + | ||
| 137 | + | ||
| 138 | + @Transient | ||
| 139 | + private static DateTimeFormatter fmtHHmm = DateTimeFormat.forPattern("HH:mm"); | ||
| 140 | + /* @Transient | ||
| 141 | + private static DateTimeFormatter fmtyyyyMMdd = DateTimeFormat.forPattern("yyyy-MM-dd");*/ | ||
| 142 | + public static SchEditInfo getInstance(ScheduleRealInfo sch){ | ||
| 143 | + SchEditInfo sei = new SchEditInfo(); | ||
| 144 | + long t = System.currentTimeMillis(); | ||
| 145 | + | ||
| 146 | + sei.setTs(t); | ||
| 147 | + sei.setTimeStr(fmtHHmm.print(t)); | ||
| 148 | + | ||
| 149 | + SysUser user = SecurityUtils.getCurrentUser(); | ||
| 150 | + if(user != null) | ||
| 151 | + sei.setUser(user.getUserName()); | ||
| 152 | + | ||
| 153 | + if(sch != null){ | ||
| 154 | + sei.setRq(sch.getScheduleDateStr()); | ||
| 155 | + sei.setSchId(sch.getId()); | ||
| 156 | + sei.setLineCode(sch.getXlBm()); | ||
| 157 | + sei.setGsbm(sch.getGsBm()); | ||
| 158 | + sei.setFgsbm(sch.getFgsBm()); | ||
| 159 | + } | ||
| 160 | + return sei; | ||
| 161 | + } | ||
| 162 | + | ||
| 163 | + public String getLineCode() { | ||
| 164 | + return lineCode; | ||
| 165 | + } | ||
| 166 | + | ||
| 167 | + public void setLineCode(String lineCode) { | ||
| 168 | + this.lineCode = lineCode; | ||
| 169 | + } | ||
| 170 | + | ||
| 171 | + public String getGsbm() { | ||
| 172 | + return gsbm; | ||
| 173 | + } | ||
| 174 | + | ||
| 175 | + public void setGsbm(String gsbm) { | ||
| 176 | + this.gsbm = gsbm; | ||
| 177 | + } | ||
| 178 | + | ||
| 179 | + public String getFgsbm() { | ||
| 180 | + return fgsbm; | ||
| 181 | + } | ||
| 182 | + | ||
| 183 | + public void setFgsbm(String fgsbm) { | ||
| 184 | + this.fgsbm = fgsbm; | ||
| 185 | + } | ||
| 186 | + | ||
| 187 | + public long getTs() { | ||
| 188 | + return ts; | ||
| 189 | + } | ||
| 190 | + | ||
| 191 | + public void setTs(long ts) { | ||
| 192 | + this.ts = ts; | ||
| 193 | + } | ||
| 194 | } | 194 | } |
| 195 | \ No newline at end of file | 195 | \ No newline at end of file |
src/main/java/com/bsth/data/schedule/edit_logs/service/SchEditInfoService.java
| 1 | -package com.bsth.data.schedule.edit_logs.service; | ||
| 2 | - | ||
| 3 | -import com.bsth.data.schedule.edit_logs.entity.SchEditInfo; | ||
| 4 | -import com.bsth.service.BaseService; | ||
| 5 | - | ||
| 6 | -import java.util.Map; | ||
| 7 | - | ||
| 8 | -/** | ||
| 9 | - * Created by panzhao on 2017/5/22. | ||
| 10 | - */ | ||
| 11 | -public interface SchEditInfoService extends BaseService<SchEditInfo, Long> { | ||
| 12 | - | ||
| 13 | - Map<String, Object> _list(String rq, String lineCode, Map<String, String> map); | ||
| 14 | -} | 1 | +package com.bsth.data.schedule.edit_logs.service; |
| 2 | + | ||
| 3 | +import com.bsth.data.schedule.edit_logs.entity.SchEditInfo; | ||
| 4 | +import com.bsth.service.BaseService; | ||
| 5 | + | ||
| 6 | +import java.util.Map; | ||
| 7 | + | ||
| 8 | +/** | ||
| 9 | + * Created by panzhao on 2017/5/22. | ||
| 10 | + */ | ||
| 11 | +public interface SchEditInfoService extends BaseService<SchEditInfo, Long> { | ||
| 12 | + | ||
| 13 | + Map<String, Object> _list(String rq, String lineCode, Map<String, String> map); | ||
| 14 | +} |
src/main/java/com/bsth/data/schedule/edit_logs/service/SchEditInfoServiceImpl.java
| 1 | -package com.bsth.data.schedule.edit_logs.service; | ||
| 2 | - | ||
| 3 | -import com.bsth.common.ResponseCode; | ||
| 4 | -import com.bsth.data.schedule.edit_logs.entity.SchEditInfo; | ||
| 5 | -import com.bsth.data.schedule.edit_logs.service.dto.SchEditInfoDto; | ||
| 6 | -import com.bsth.service.impl.BaseServiceImpl; | ||
| 7 | -import com.bsth.util.BatchSaveUtils; | ||
| 8 | -import org.apache.commons.lang3.StringUtils; | ||
| 9 | -import org.slf4j.Logger; | ||
| 10 | -import org.slf4j.LoggerFactory; | ||
| 11 | -import org.springframework.beans.factory.annotation.Autowired; | ||
| 12 | -import org.springframework.jdbc.core.BeanPropertyRowMapper; | ||
| 13 | -import org.springframework.jdbc.core.JdbcTemplate; | ||
| 14 | -import org.springframework.stereotype.Service; | ||
| 15 | - | ||
| 16 | -import java.util.HashMap; | ||
| 17 | -import java.util.List; | ||
| 18 | -import java.util.Map; | ||
| 19 | -import java.util.Set; | ||
| 20 | - | ||
| 21 | -/** | ||
| 22 | - * Created by panzhao on 2017/5/22. | ||
| 23 | - */ | ||
| 24 | -@Service | ||
| 25 | -public class SchEditInfoServiceImpl extends BaseServiceImpl<SchEditInfo, Long> implements SchEditInfoService{ | ||
| 26 | - | ||
| 27 | - Logger log = LoggerFactory.getLogger(this.getClass()); | ||
| 28 | - | ||
| 29 | - @Autowired | ||
| 30 | - JdbcTemplate jdbcTemplate; | ||
| 31 | - | ||
| 32 | - public Map<String, Object> _list(String rq, String lineCode, Map<String, String> map) { | ||
| 33 | - | ||
| 34 | - Map<String, Object> rs = new HashMap(); | ||
| 35 | - try { | ||
| 36 | - //拼接除rq、lineCode 外的其他where 条件 | ||
| 37 | - map.remove("rq"); | ||
| 38 | - map.remove("lineCode"); | ||
| 39 | - String cont = "", v; | ||
| 40 | - Set<String> ks = map.keySet(); | ||
| 41 | - for(String k : ks){ | ||
| 42 | - v =map.get(k); | ||
| 43 | - if(StringUtils.isNotEmpty(v)) | ||
| 44 | - cont += " and t2." + BatchSaveUtils.propertyToField(k) + "='" + v + "'"; | ||
| 45 | - } | ||
| 46 | - String sql = "select t1.*, t2.fcsj,t2.lp_name,t2.cl_zbh,t2.j_gh,t2.j_name,t2.xl_dir,t2.real_exec_date from (select * from logger_sch_modify where rq=? and line_code=? ) t1 INNER JOIN bsth_c_s_sp_info_real t2 on t1.sch_id=t2.id where 1=1 " + cont; | ||
| 47 | - | ||
| 48 | - List<SchEditInfoDto> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper(SchEditInfoDto.class), rq, lineCode); | ||
| 49 | - | ||
| 50 | - rs.put("status", ResponseCode.SUCCESS); | ||
| 51 | - rs.put("list", list); | ||
| 52 | - }catch (Exception e){ | ||
| 53 | - log.error("", e); | ||
| 54 | - rs.put("status", ResponseCode.ERROR); | ||
| 55 | - rs.put("msg", e.getMessage()); | ||
| 56 | - } | ||
| 57 | - return rs; | ||
| 58 | - } | ||
| 59 | -} | 1 | +package com.bsth.data.schedule.edit_logs.service; |
| 2 | + | ||
| 3 | +import com.bsth.common.ResponseCode; | ||
| 4 | +import com.bsth.data.schedule.edit_logs.entity.SchEditInfo; | ||
| 5 | +import com.bsth.data.schedule.edit_logs.service.dto.SchEditInfoDto; | ||
| 6 | +import com.bsth.service.impl.BaseServiceImpl; | ||
| 7 | +import com.bsth.util.BatchSaveUtils; | ||
| 8 | +import org.apache.commons.lang3.StringUtils; | ||
| 9 | +import org.slf4j.Logger; | ||
| 10 | +import org.slf4j.LoggerFactory; | ||
| 11 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 12 | +import org.springframework.jdbc.core.BeanPropertyRowMapper; | ||
| 13 | +import org.springframework.jdbc.core.JdbcTemplate; | ||
| 14 | +import org.springframework.stereotype.Service; | ||
| 15 | + | ||
| 16 | +import java.util.HashMap; | ||
| 17 | +import java.util.List; | ||
| 18 | +import java.util.Map; | ||
| 19 | +import java.util.Set; | ||
| 20 | + | ||
| 21 | +/** | ||
| 22 | + * Created by panzhao on 2017/5/22. | ||
| 23 | + */ | ||
| 24 | +@Service | ||
| 25 | +public class SchEditInfoServiceImpl extends BaseServiceImpl<SchEditInfo, Long> implements SchEditInfoService{ | ||
| 26 | + | ||
| 27 | + Logger log = LoggerFactory.getLogger(this.getClass()); | ||
| 28 | + | ||
| 29 | + @Autowired | ||
| 30 | + JdbcTemplate jdbcTemplate; | ||
| 31 | + | ||
| 32 | + public Map<String, Object> _list(String rq, String lineCode, Map<String, String> map) { | ||
| 33 | + | ||
| 34 | + Map<String, Object> rs = new HashMap(); | ||
| 35 | + try { | ||
| 36 | + //拼接除rq、lineCode 外的其他where 条件 | ||
| 37 | + map.remove("rq"); | ||
| 38 | + map.remove("lineCode"); | ||
| 39 | + String cont = "", v; | ||
| 40 | + Set<String> ks = map.keySet(); | ||
| 41 | + for(String k : ks){ | ||
| 42 | + v =map.get(k); | ||
| 43 | + if(StringUtils.isNotEmpty(v)) | ||
| 44 | + cont += " and t2." + BatchSaveUtils.propertyToField(k) + "='" + v + "'"; | ||
| 45 | + } | ||
| 46 | + String sql = "select t1.*, t2.fcsj,t2.lp_name,t2.cl_zbh,t2.j_gh,t2.j_name,t2.xl_dir,t2.real_exec_date from (select * from logger_sch_modify where rq=? and line_code=? ) t1 INNER JOIN bsth_c_s_sp_info_real t2 on t1.sch_id=t2.id where 1=1 " + cont; | ||
| 47 | + | ||
| 48 | + List<SchEditInfoDto> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper(SchEditInfoDto.class), rq, lineCode); | ||
| 49 | + | ||
| 50 | + rs.put("status", ResponseCode.SUCCESS); | ||
| 51 | + rs.put("list", list); | ||
| 52 | + }catch (Exception e){ | ||
| 53 | + log.error("", e); | ||
| 54 | + rs.put("status", ResponseCode.ERROR); | ||
| 55 | + rs.put("msg", e.getMessage()); | ||
| 56 | + } | ||
| 57 | + return rs; | ||
| 58 | + } | ||
| 59 | +} |
src/main/java/com/bsth/data/schedule/edit_logs/service/dto/SchEditInfoDto.java
| 1 | -package com.bsth.data.schedule.edit_logs.service.dto; | ||
| 2 | - | ||
| 3 | -/** | ||
| 4 | - * Created by panzhao on 2017/5/22. | ||
| 5 | - */ | ||
| 6 | -public class SchEditInfoDto { | ||
| 7 | - | ||
| 8 | - private long id; | ||
| 9 | - /*** 日期 yyyy-MM-dd*/ | ||
| 10 | - private String rq; | ||
| 11 | - | ||
| 12 | - /*** 时间 HH:mm*/ | ||
| 13 | - private String timeStr; | ||
| 14 | - | ||
| 15 | - private String lineCode; | ||
| 16 | - | ||
| 17 | - private String gsbm; | ||
| 18 | - | ||
| 19 | - private String fgsbm; | ||
| 20 | - | ||
| 21 | - /*** 班次ID*/ | ||
| 22 | - private long schId; | ||
| 23 | - | ||
| 24 | - /*** 类型*/ | ||
| 25 | - private String type; | ||
| 26 | - | ||
| 27 | - private String type2; | ||
| 28 | - /*** 操作人 @system 系统/用户名*/ | ||
| 29 | - private String user; | ||
| 30 | - | ||
| 31 | - /*** 操作明细*/ | ||
| 32 | - private String jsonArray; | ||
| 33 | - | ||
| 34 | - private String remarks; | ||
| 35 | - | ||
| 36 | - /** 路牌 */ | ||
| 37 | - private String lpName; | ||
| 38 | - | ||
| 39 | - /** 驾驶员工号 */ | ||
| 40 | - private String jGh; | ||
| 41 | - | ||
| 42 | - /** 驾驶员姓名 */ | ||
| 43 | - private String jName; | ||
| 44 | - | ||
| 45 | - /** 车辆自编号 */ | ||
| 46 | - private String clZbh; | ||
| 47 | - | ||
| 48 | - /** 计发时间 */ | ||
| 49 | - private String fcsj; | ||
| 50 | - | ||
| 51 | - /** 上下行 */ | ||
| 52 | - private int xlDir; | ||
| 53 | - | ||
| 54 | - /** 实际执行日期 */ | ||
| 55 | - private String realExecDate; | ||
| 56 | - | ||
| 57 | - public long getId() { | ||
| 58 | - return id; | ||
| 59 | - } | ||
| 60 | - | ||
| 61 | - public void setId(long id) { | ||
| 62 | - this.id = id; | ||
| 63 | - } | ||
| 64 | - | ||
| 65 | - public String getRq() { | ||
| 66 | - return rq; | ||
| 67 | - } | ||
| 68 | - | ||
| 69 | - public void setRq(String rq) { | ||
| 70 | - this.rq = rq; | ||
| 71 | - } | ||
| 72 | - | ||
| 73 | - public String getTimeStr() { | ||
| 74 | - return timeStr; | ||
| 75 | - } | ||
| 76 | - | ||
| 77 | - public void setTimeStr(String timeStr) { | ||
| 78 | - this.timeStr = timeStr; | ||
| 79 | - } | ||
| 80 | - | ||
| 81 | - public String getLineCode() { | ||
| 82 | - return lineCode; | ||
| 83 | - } | ||
| 84 | - | ||
| 85 | - public void setLineCode(String lineCode) { | ||
| 86 | - this.lineCode = lineCode; | ||
| 87 | - } | ||
| 88 | - | ||
| 89 | - public String getGsbm() { | ||
| 90 | - return gsbm; | ||
| 91 | - } | ||
| 92 | - | ||
| 93 | - public void setGsbm(String gsbm) { | ||
| 94 | - this.gsbm = gsbm; | ||
| 95 | - } | ||
| 96 | - | ||
| 97 | - public String getFgsbm() { | ||
| 98 | - return fgsbm; | ||
| 99 | - } | ||
| 100 | - | ||
| 101 | - public void setFgsbm(String fgsbm) { | ||
| 102 | - this.fgsbm = fgsbm; | ||
| 103 | - } | ||
| 104 | - | ||
| 105 | - public long getSchId() { | ||
| 106 | - return schId; | ||
| 107 | - } | ||
| 108 | - | ||
| 109 | - public void setSchId(long schId) { | ||
| 110 | - this.schId = schId; | ||
| 111 | - } | ||
| 112 | - | ||
| 113 | - public String getType2() { | ||
| 114 | - return type2; | ||
| 115 | - } | ||
| 116 | - | ||
| 117 | - public void setType2(String type2) { | ||
| 118 | - this.type2 = type2; | ||
| 119 | - } | ||
| 120 | - | ||
| 121 | - public String getUser() { | ||
| 122 | - return user; | ||
| 123 | - } | ||
| 124 | - | ||
| 125 | - public void setUser(String user) { | ||
| 126 | - this.user = user; | ||
| 127 | - } | ||
| 128 | - | ||
| 129 | - public String getJsonArray() { | ||
| 130 | - return jsonArray; | ||
| 131 | - } | ||
| 132 | - | ||
| 133 | - public void setJsonArray(String jsonArray) { | ||
| 134 | - this.jsonArray = jsonArray; | ||
| 135 | - } | ||
| 136 | - | ||
| 137 | - public String getRemarks() { | ||
| 138 | - return remarks; | ||
| 139 | - } | ||
| 140 | - | ||
| 141 | - public void setRemarks(String remarks) { | ||
| 142 | - this.remarks = remarks; | ||
| 143 | - } | ||
| 144 | - | ||
| 145 | - public String getLpName() { | ||
| 146 | - return lpName; | ||
| 147 | - } | ||
| 148 | - | ||
| 149 | - public void setLpName(String lpName) { | ||
| 150 | - this.lpName = lpName; | ||
| 151 | - } | ||
| 152 | - | ||
| 153 | - public String getjGh() { | ||
| 154 | - return jGh; | ||
| 155 | - } | ||
| 156 | - | ||
| 157 | - public void setjGh(String jGh) { | ||
| 158 | - this.jGh = jGh; | ||
| 159 | - } | ||
| 160 | - | ||
| 161 | - public String getjName() { | ||
| 162 | - return jName; | ||
| 163 | - } | ||
| 164 | - | ||
| 165 | - public void setjName(String jName) { | ||
| 166 | - this.jName = jName; | ||
| 167 | - } | ||
| 168 | - | ||
| 169 | - | ||
| 170 | - public String getRealExecDate() { | ||
| 171 | - return realExecDate; | ||
| 172 | - } | ||
| 173 | - | ||
| 174 | - public void setRealExecDate(String realExecDate) { | ||
| 175 | - this.realExecDate = realExecDate; | ||
| 176 | - } | ||
| 177 | - | ||
| 178 | - public String getType() { | ||
| 179 | - return type; | ||
| 180 | - } | ||
| 181 | - | ||
| 182 | - public void setType(String type) { | ||
| 183 | - this.type = type; | ||
| 184 | - } | ||
| 185 | - | ||
| 186 | - public String getClZbh() { | ||
| 187 | - return clZbh; | ||
| 188 | - } | ||
| 189 | - | ||
| 190 | - public void setClZbh(String clZbh) { | ||
| 191 | - this.clZbh = clZbh; | ||
| 192 | - } | ||
| 193 | - | ||
| 194 | - public String getFcsj() { | ||
| 195 | - return fcsj; | ||
| 196 | - } | ||
| 197 | - | ||
| 198 | - public void setFcsj(String fcsj) { | ||
| 199 | - this.fcsj = fcsj; | ||
| 200 | - } | ||
| 201 | - | ||
| 202 | - public int getXlDir() { | ||
| 203 | - return xlDir; | ||
| 204 | - } | ||
| 205 | - | ||
| 206 | - public void setXlDir(int xlDir) { | ||
| 207 | - this.xlDir = xlDir; | ||
| 208 | - } | ||
| 209 | -} | 1 | +package com.bsth.data.schedule.edit_logs.service.dto; |
| 2 | + | ||
| 3 | +/** | ||
| 4 | + * Created by panzhao on 2017/5/22. | ||
| 5 | + */ | ||
| 6 | +public class SchEditInfoDto { | ||
| 7 | + | ||
| 8 | + private long id; | ||
| 9 | + /*** 日期 yyyy-MM-dd*/ | ||
| 10 | + private String rq; | ||
| 11 | + | ||
| 12 | + /*** 时间 HH:mm*/ | ||
| 13 | + private String timeStr; | ||
| 14 | + | ||
| 15 | + private String lineCode; | ||
| 16 | + | ||
| 17 | + private String gsbm; | ||
| 18 | + | ||
| 19 | + private String fgsbm; | ||
| 20 | + | ||
| 21 | + /*** 班次ID*/ | ||
| 22 | + private long schId; | ||
| 23 | + | ||
| 24 | + /*** 类型*/ | ||
| 25 | + private String type; | ||
| 26 | + | ||
| 27 | + private String type2; | ||
| 28 | + /*** 操作人 @system 系统/用户名*/ | ||
| 29 | + private String user; | ||
| 30 | + | ||
| 31 | + /*** 操作明细*/ | ||
| 32 | + private String jsonArray; | ||
| 33 | + | ||
| 34 | + private String remarks; | ||
| 35 | + | ||
| 36 | + /** 路牌 */ | ||
| 37 | + private String lpName; | ||
| 38 | + | ||
| 39 | + /** 驾驶员工号 */ | ||
| 40 | + private String jGh; | ||
| 41 | + | ||
| 42 | + /** 驾驶员姓名 */ | ||
| 43 | + private String jName; | ||
| 44 | + | ||
| 45 | + /** 车辆自编号 */ | ||
| 46 | + private String clZbh; | ||
| 47 | + | ||
| 48 | + /** 计发时间 */ | ||
| 49 | + private String fcsj; | ||
| 50 | + | ||
| 51 | + /** 上下行 */ | ||
| 52 | + private int xlDir; | ||
| 53 | + | ||
| 54 | + /** 实际执行日期 */ | ||
| 55 | + private String realExecDate; | ||
| 56 | + | ||
| 57 | + public long getId() { | ||
| 58 | + return id; | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | + public void setId(long id) { | ||
| 62 | + this.id = id; | ||
| 63 | + } | ||
| 64 | + | ||
| 65 | + public String getRq() { | ||
| 66 | + return rq; | ||
| 67 | + } | ||
| 68 | + | ||
| 69 | + public void setRq(String rq) { | ||
| 70 | + this.rq = rq; | ||
| 71 | + } | ||
| 72 | + | ||
| 73 | + public String getTimeStr() { | ||
| 74 | + return timeStr; | ||
| 75 | + } | ||
| 76 | + | ||
| 77 | + public void setTimeStr(String timeStr) { | ||
| 78 | + this.timeStr = timeStr; | ||
| 79 | + } | ||
| 80 | + | ||
| 81 | + public String getLineCode() { | ||
| 82 | + return lineCode; | ||
| 83 | + } | ||
| 84 | + | ||
| 85 | + public void setLineCode(String lineCode) { | ||
| 86 | + this.lineCode = lineCode; | ||
| 87 | + } | ||
| 88 | + | ||
| 89 | + public String getGsbm() { | ||
| 90 | + return gsbm; | ||
| 91 | + } | ||
| 92 | + | ||
| 93 | + public void setGsbm(String gsbm) { | ||
| 94 | + this.gsbm = gsbm; | ||
| 95 | + } | ||
| 96 | + | ||
| 97 | + public String getFgsbm() { | ||
| 98 | + return fgsbm; | ||
| 99 | + } | ||
| 100 | + | ||
| 101 | + public void setFgsbm(String fgsbm) { | ||
| 102 | + this.fgsbm = fgsbm; | ||
| 103 | + } | ||
| 104 | + | ||
| 105 | + public long getSchId() { | ||
| 106 | + return schId; | ||
| 107 | + } | ||
| 108 | + | ||
| 109 | + public void setSchId(long schId) { | ||
| 110 | + this.schId = schId; | ||
| 111 | + } | ||
| 112 | + | ||
| 113 | + public String getType2() { | ||
| 114 | + return type2; | ||
| 115 | + } | ||
| 116 | + | ||
| 117 | + public void setType2(String type2) { | ||
| 118 | + this.type2 = type2; | ||
| 119 | + } | ||
| 120 | + | ||
| 121 | + public String getUser() { | ||
| 122 | + return user; | ||
| 123 | + } | ||
| 124 | + | ||
| 125 | + public void setUser(String user) { | ||
| 126 | + this.user = user; | ||
| 127 | + } | ||
| 128 | + | ||
| 129 | + public String getJsonArray() { | ||
| 130 | + return jsonArray; | ||
| 131 | + } | ||
| 132 | + | ||
| 133 | + public void setJsonArray(String jsonArray) { | ||
| 134 | + this.jsonArray = jsonArray; | ||
| 135 | + } | ||
| 136 | + | ||
| 137 | + public String getRemarks() { | ||
| 138 | + return remarks; | ||
| 139 | + } | ||
| 140 | + | ||
| 141 | + public void setRemarks(String remarks) { | ||
| 142 | + this.remarks = remarks; | ||
| 143 | + } | ||
| 144 | + | ||
| 145 | + public String getLpName() { | ||
| 146 | + return lpName; | ||
| 147 | + } | ||
| 148 | + | ||
| 149 | + public void setLpName(String lpName) { | ||
| 150 | + this.lpName = lpName; | ||
| 151 | + } | ||
| 152 | + | ||
| 153 | + public String getjGh() { | ||
| 154 | + return jGh; | ||
| 155 | + } | ||
| 156 | + | ||
| 157 | + public void setjGh(String jGh) { | ||
| 158 | + this.jGh = jGh; | ||
| 159 | + } | ||
| 160 | + | ||
| 161 | + public String getjName() { | ||
| 162 | + return jName; | ||
| 163 | + } | ||
| 164 | + | ||
| 165 | + public void setjName(String jName) { | ||
| 166 | + this.jName = jName; | ||
| 167 | + } | ||
| 168 | + | ||
| 169 | + | ||
| 170 | + public String getRealExecDate() { | ||
| 171 | + return realExecDate; | ||
| 172 | + } | ||
| 173 | + | ||
| 174 | + public void setRealExecDate(String realExecDate) { | ||
| 175 | + this.realExecDate = realExecDate; | ||
| 176 | + } | ||
| 177 | + | ||
| 178 | + public String getType() { | ||
| 179 | + return type; | ||
| 180 | + } | ||
| 181 | + | ||
| 182 | + public void setType(String type) { | ||
| 183 | + this.type = type; | ||
| 184 | + } | ||
| 185 | + | ||
| 186 | + public String getClZbh() { | ||
| 187 | + return clZbh; | ||
| 188 | + } | ||
| 189 | + | ||
| 190 | + public void setClZbh(String clZbh) { | ||
| 191 | + this.clZbh = clZbh; | ||
| 192 | + } | ||
| 193 | + | ||
| 194 | + public String getFcsj() { | ||
| 195 | + return fcsj; | ||
| 196 | + } | ||
| 197 | + | ||
| 198 | + public void setFcsj(String fcsj) { | ||
| 199 | + this.fcsj = fcsj; | ||
| 200 | + } | ||
| 201 | + | ||
| 202 | + public int getXlDir() { | ||
| 203 | + return xlDir; | ||
| 204 | + } | ||
| 205 | + | ||
| 206 | + public void setXlDir(int xlDir) { | ||
| 207 | + this.xlDir = xlDir; | ||
| 208 | + } | ||
| 209 | +} |
src/main/java/com/bsth/data/schedule/thread/CalcOilThread.java
| @@ -3,6 +3,8 @@ package com.bsth.data.schedule.thread; | @@ -3,6 +3,8 @@ package com.bsth.data.schedule.thread; | ||
| 3 | import com.bsth.service.oil.DlbService; | 3 | import com.bsth.service.oil.DlbService; |
| 4 | import com.bsth.data.safe_driv.SafeDrivCenter; | 4 | import com.bsth.data.safe_driv.SafeDrivCenter; |
| 5 | import com.bsth.service.oil.YlbService; | 5 | import com.bsth.service.oil.YlbService; |
| 6 | +import com.bsth.service.report.SheetService; | ||
| 7 | + | ||
| 6 | import org.slf4j.Logger; | 8 | import org.slf4j.Logger; |
| 7 | import org.slf4j.LoggerFactory; | 9 | import org.slf4j.LoggerFactory; |
| 8 | import org.springframework.beans.factory.annotation.Autowired; | 10 | import org.springframework.beans.factory.annotation.Autowired; |
| @@ -19,6 +21,9 @@ public class CalcOilThread extends Thread{ | @@ -19,6 +21,9 @@ public class CalcOilThread extends Thread{ | ||
| 19 | YlbService ylbService; | 21 | YlbService ylbService; |
| 20 | @Autowired | 22 | @Autowired |
| 21 | DlbService dlbService; | 23 | DlbService dlbService; |
| 24 | + | ||
| 25 | + @Autowired | ||
| 26 | + SheetService sheetService; | ||
| 22 | Logger logger = LoggerFactory.getLogger(this.getClass()); | 27 | Logger logger = LoggerFactory.getLogger(this.getClass()); |
| 23 | 28 | ||
| 24 | @Override | 29 | @Override |
| @@ -28,7 +33,9 @@ public class CalcOilThread extends Thread{ | @@ -28,7 +33,9 @@ public class CalcOilThread extends Thread{ | ||
| 28 | ylbService.obtainDsq(); | 33 | ylbService.obtainDsq(); |
| 29 | dlbService.obtainDsq(); | 34 | dlbService.obtainDsq(); |
| 30 | logger.info("计算路单里程加注量结束!"); | 35 | logger.info("计算路单里程加注量结束!"); |
| 31 | - | 36 | + logger.info("开始计算班次准点率...."); |
| 37 | + sheetService.saveSheetList(); | ||
| 38 | + logger.info("计算班次准点率结束!"); | ||
| 32 | //清除安全驾驶数据 先临时蹭这个线程 | 39 | //清除安全驾驶数据 先临时蹭这个线程 |
| 33 | SafeDrivCenter.clear(); | 40 | SafeDrivCenter.clear(); |
| 34 | } catch(Exception e){ | 41 | } catch(Exception e){ |
src/main/java/com/bsth/entity/sheet/Sheet.java
0 → 100644
| 1 | +package com.bsth.entity.sheet; | ||
| 2 | + | ||
| 3 | +import java.util.Date; | ||
| 4 | + | ||
| 5 | +import javax.persistence.Entity; | ||
| 6 | +import javax.persistence.GeneratedValue; | ||
| 7 | +import javax.persistence.Id; | ||
| 8 | +import javax.persistence.Table; | ||
| 9 | +import javax.persistence.Transient; | ||
| 10 | +@Entity | ||
| 11 | +@Table(name = "bsth_c_sheet") | ||
| 12 | +public class Sheet { | ||
| 13 | + @Id | ||
| 14 | + @GeneratedValue | ||
| 15 | + private Integer id; | ||
| 16 | + private String gs; | ||
| 17 | + private String fgs; | ||
| 18 | + private String line; | ||
| 19 | + private String date; | ||
| 20 | + private String realDate; | ||
| 21 | + private String jhsj; | ||
| 22 | + private Long jhsjt; | ||
| 23 | + private String sjsj; | ||
| 24 | + private Long sjsjt; | ||
| 25 | + private String xlDir; | ||
| 26 | + private Date createDate; | ||
| 27 | + private String zdname; | ||
| 28 | + | ||
| 29 | + @Transient | ||
| 30 | + private String sfzd; | ||
| 31 | + | ||
| 32 | + public Integer getId() { | ||
| 33 | + return id; | ||
| 34 | + } | ||
| 35 | + public void setId(Integer id) { | ||
| 36 | + this.id = id; | ||
| 37 | + } | ||
| 38 | + public String getGs() { | ||
| 39 | + return gs; | ||
| 40 | + } | ||
| 41 | + public void setGs(String gs) { | ||
| 42 | + this.gs = gs; | ||
| 43 | + } | ||
| 44 | + public String getFgs() { | ||
| 45 | + return fgs; | ||
| 46 | + } | ||
| 47 | + public void setFgs(String fgs) { | ||
| 48 | + this.fgs = fgs; | ||
| 49 | + } | ||
| 50 | + public String getLine() { | ||
| 51 | + return line; | ||
| 52 | + } | ||
| 53 | + public void setLine(String line) { | ||
| 54 | + this.line = line; | ||
| 55 | + } | ||
| 56 | + public String getDate() { | ||
| 57 | + return date; | ||
| 58 | + } | ||
| 59 | + public void setDate(String date) { | ||
| 60 | + this.date = date; | ||
| 61 | + } | ||
| 62 | + public String getRealDate() { | ||
| 63 | + return realDate; | ||
| 64 | + } | ||
| 65 | + public void setRealDate(String realDate) { | ||
| 66 | + this.realDate = realDate; | ||
| 67 | + } | ||
| 68 | + public String getJhsj() { | ||
| 69 | + return jhsj; | ||
| 70 | + } | ||
| 71 | + public void setJhsj(String jhsj) { | ||
| 72 | + this.jhsj = jhsj; | ||
| 73 | + } | ||
| 74 | + public String getSjsj() { | ||
| 75 | + return sjsj; | ||
| 76 | + } | ||
| 77 | + public void setSjsj(String sjsj) { | ||
| 78 | + this.sjsj = sjsj; | ||
| 79 | + } | ||
| 80 | + | ||
| 81 | + public Long getJhsjt() { | ||
| 82 | + return jhsjt; | ||
| 83 | + } | ||
| 84 | + public void setJhsjt(Long jhsjt) { | ||
| 85 | + this.jhsjt = jhsjt; | ||
| 86 | + } | ||
| 87 | + public Long getSjsjt() { | ||
| 88 | + return sjsjt; | ||
| 89 | + } | ||
| 90 | + public void setSjsjt(Long sjsjt) { | ||
| 91 | + this.sjsjt = sjsjt; | ||
| 92 | + } | ||
| 93 | + public String getXlDir() { | ||
| 94 | + return xlDir; | ||
| 95 | + } | ||
| 96 | + public void setXlDir(String xlDir) { | ||
| 97 | + this.xlDir = xlDir; | ||
| 98 | + } | ||
| 99 | + public Date getCreateDate() { | ||
| 100 | + return createDate; | ||
| 101 | + } | ||
| 102 | + public void setCreateDate(Date createDate) { | ||
| 103 | + this.createDate = createDate; | ||
| 104 | + } | ||
| 105 | + | ||
| 106 | + public String getZdname() { | ||
| 107 | + return zdname; | ||
| 108 | + } | ||
| 109 | + public void setZdname(String zdname) { | ||
| 110 | + this.zdname = zdname; | ||
| 111 | + } | ||
| 112 | + public String getSfzd() { | ||
| 113 | + return sfzd; | ||
| 114 | + } | ||
| 115 | + public void setSfzd(String sfzd) { | ||
| 116 | + this.sfzd = sfzd; | ||
| 117 | + } | ||
| 118 | + | ||
| 119 | + | ||
| 120 | + | ||
| 121 | +} |
src/main/java/com/bsth/repository/sheet/SheetRepository.java
0 → 100644
| 1 | +package com.bsth.repository.sheet; | ||
| 2 | + | ||
| 3 | +import com.bsth.entity.sheet.Sheet; | ||
| 4 | +import com.bsth.repository.BaseRepository; | ||
| 5 | +import org.springframework.stereotype.Repository; | ||
| 6 | + | ||
| 7 | +/** | ||
| 8 | + * | ||
| 9 | + */ | ||
| 10 | +@Repository | ||
| 11 | +public interface SheetRepository extends BaseRepository<Sheet, Integer>{ | ||
| 12 | +} |
src/main/java/com/bsth/service/forms/impl/FormsServiceImpl.java
| @@ -28,10 +28,12 @@ import com.bsth.entity.mcy_forms.Singledata; | @@ -28,10 +28,12 @@ import com.bsth.entity.mcy_forms.Singledata; | ||
| 28 | import com.bsth.entity.mcy_forms.Turnoutrate; | 28 | import com.bsth.entity.mcy_forms.Turnoutrate; |
| 29 | import com.bsth.entity.mcy_forms.Vehicleloading; | 29 | import com.bsth.entity.mcy_forms.Vehicleloading; |
| 30 | import com.bsth.entity.mcy_forms.Waybillday; | 30 | import com.bsth.entity.mcy_forms.Waybillday; |
| 31 | +import com.bsth.entity.oil.Dlb; | ||
| 31 | import com.bsth.entity.oil.Ylb; | 32 | import com.bsth.entity.oil.Ylb; |
| 32 | import com.bsth.entity.realcontrol.ScheduleRealInfo; | 33 | import com.bsth.entity.realcontrol.ScheduleRealInfo; |
| 33 | import com.bsth.entity.schedule.SchedulePlanInfo; | 34 | import com.bsth.entity.schedule.SchedulePlanInfo; |
| 34 | import com.bsth.repository.LineRepository; | 35 | import com.bsth.repository.LineRepository; |
| 36 | +import com.bsth.repository.oil.DlbRepository; | ||
| 35 | import com.bsth.repository.oil.YlbRepository; | 37 | import com.bsth.repository.oil.YlbRepository; |
| 36 | import com.bsth.repository.realcontrol.ScheduleRealInfoRepository; | 38 | import com.bsth.repository.realcontrol.ScheduleRealInfoRepository; |
| 37 | import com.bsth.data.BasicData; | 39 | import com.bsth.data.BasicData; |
| @@ -67,6 +69,9 @@ public class FormsServiceImpl implements FormsService { | @@ -67,6 +69,9 @@ public class FormsServiceImpl implements FormsService { | ||
| 67 | YlbRepository ylbRepository; | 69 | YlbRepository ylbRepository; |
| 68 | 70 | ||
| 69 | @Autowired | 71 | @Autowired |
| 72 | + DlbRepository dlbRepository; | ||
| 73 | + | ||
| 74 | + @Autowired | ||
| 70 | LineRepository lineRepository; | 75 | LineRepository lineRepository; |
| 71 | 76 | ||
| 72 | 77 | ||
| @@ -98,6 +103,7 @@ public class FormsServiceImpl implements FormsService { | @@ -98,6 +103,7 @@ public class FormsServiceImpl implements FormsService { | ||
| 98 | }); | 103 | }); |
| 99 | List<ScheduleRealInfo> realList= scheduleRealInfoRepository.scheduleByDateAndLineTjrb(line, date); | 104 | List<ScheduleRealInfo> realList= scheduleRealInfoRepository.scheduleByDateAndLineTjrb(line, date); |
| 100 | List<Ylb> listYlb= ylbRepository.obtainYl(date, "", "", line, "", "xlbm"); | 105 | List<Ylb> listYlb= ylbRepository.obtainYl(date, "", "", line, "", "xlbm"); |
| 106 | + List<Dlb> listDlb= dlbRepository.obtainDl(date, "", "", line, "", "xlbm"); | ||
| 101 | double jzl=0.0,sh=0.0,yh=0.0; | 107 | double jzl=0.0,sh=0.0,yh=0.0; |
| 102 | for (int i = 0; i < list.size(); i++) { | 108 | for (int i = 0; i < list.size(); i++) { |
| 103 | Waybillday w=list.get(i); | 109 | Waybillday w=list.get(i); |
| @@ -132,6 +138,14 @@ public class FormsServiceImpl implements FormsService { | @@ -132,6 +138,14 @@ public class FormsServiceImpl implements FormsService { | ||
| 132 | } | 138 | } |
| 133 | } | 139 | } |
| 134 | 140 | ||
| 141 | + for (int j = 0; j < listDlb.size(); j++) { | ||
| 142 | + Dlb d=listDlb.get(j); | ||
| 143 | + if(w.getNbbm().equals(d.getNbbm()) && w.getJgh().equals(d.getJsy())){ | ||
| 144 | + jzl=Arith.add(jzl, d.getCdl()); | ||
| 145 | + sh=Arith.add(sh, d.getSh()); | ||
| 146 | + yh=Arith.add(yh, d.getHd()); | ||
| 147 | + } | ||
| 148 | + } | ||
| 135 | w.setJzl(String.valueOf(jzl)); | 149 | w.setJzl(String.valueOf(jzl)); |
| 136 | w.setYh(String.valueOf(yh)); | 150 | w.setYh(String.valueOf(yh)); |
| 137 | w.setSh(String.valueOf(sh)); | 151 | w.setSh(String.valueOf(sh)); |
| @@ -1087,7 +1101,10 @@ public class FormsServiceImpl implements FormsService { | @@ -1087,7 +1101,10 @@ public class FormsServiceImpl implements FormsService { | ||
| 1087 | 1101 | ||
| 1088 | @Override | 1102 | @Override |
| 1089 | public List<Daily> daily(Map<String, Object> map) { | 1103 | public List<Daily> daily(Map<String, Object> map) { |
| 1090 | - | 1104 | + String xlbm="";; |
| 1105 | + if(map.get("line")!=null){ | ||
| 1106 | + xlbm=map.get("line").toString().trim(); | ||
| 1107 | + } | ||
| 1091 | String gsbm=""; | 1108 | String gsbm=""; |
| 1092 | if(map.get("gsdmDaily")!=null){ | 1109 | if(map.get("gsdmDaily")!=null){ |
| 1093 | gsbm=map.get("gsdmDaily").toString(); | 1110 | gsbm=map.get("gsdmDaily").toString(); |
| @@ -1098,7 +1115,7 @@ public class FormsServiceImpl implements FormsService { | @@ -1098,7 +1115,7 @@ public class FormsServiceImpl implements FormsService { | ||
| 1098 | fgsbm=map.get("fgsdmDaily").toString(); | 1115 | fgsbm=map.get("fgsdmDaily").toString(); |
| 1099 | } | 1116 | } |
| 1100 | 1117 | ||
| 1101 | - String sql="select t.schedule_date_str," | 1118 | + /*String sql="select t.schedule_date_str," |
| 1102 | + " t.cl_zbh,t.j_gh,t.j_name,x.yh from (select r.schedule_date_str,r.xl_bm," | 1119 | + " t.cl_zbh,t.j_gh,t.j_name,x.yh from (select r.schedule_date_str,r.xl_bm," |
| 1103 | + " r.cl_zbh,r.j_gh,r.j_name from bsth_c_s_sp_info_real r WHERE " | 1120 | + " r.cl_zbh,r.j_gh,r.j_name from bsth_c_s_sp_info_real r WHERE " |
| 1104 | + " r.xl_bm='" + map.get("line").toString() + "' " | 1121 | + " r.xl_bm='" + map.get("line").toString() + "' " |
| @@ -1112,7 +1129,20 @@ public class FormsServiceImpl implements FormsService { | @@ -1112,7 +1129,20 @@ public class FormsServiceImpl implements FormsService { | ||
| 1112 | + " and y.ssgsdm like '%"+gsbm+"%' " | 1129 | + " and y.ssgsdm like '%"+gsbm+"%' " |
| 1113 | + " and y.fgsdm like '%"+fgsbm+"%'" | 1130 | + " and y.fgsdm like '%"+fgsbm+"%'" |
| 1114 | + " ) x" | 1131 | + " ) x" |
| 1115 | - + " on t.cl_zbh = x.nbbm and t.j_gh=x.jsy"; | 1132 | + + " on t.cl_zbh = x.nbbm and t.j_gh=x.jsy";*/ |
| 1133 | + | ||
| 1134 | + String sql="select r.schedule_date_str, " | ||
| 1135 | + + " r.xl_bm,r.cl_zbh,r.j_gh,r.j_name,r.gs_bm,r.fgs_bm" | ||
| 1136 | + + " from bsth_c_s_sp_info_real r where " | ||
| 1137 | + + "r.schedule_date_str = '"+map.get("date").toString()+"'"; | ||
| 1138 | + if(xlbm.equals("")){ | ||
| 1139 | + sql +="and r.gs_bm='"+gsbm+"' " | ||
| 1140 | + + " and r.fgs_bm='"+fgsbm+"'"; | ||
| 1141 | + }else{ | ||
| 1142 | + sql += " and r.xl_bm = '"+xlbm+"'"; | ||
| 1143 | + } | ||
| 1144 | + sql += " group by r.schedule_date_str," | ||
| 1145 | + + " r.xl_bm,r.cl_zbh,r.j_gh,r.j_name,r.gs_bm,r.fgs_bm order by r.xl_bm,r.cl_zbh"; | ||
| 1116 | 1146 | ||
| 1117 | List<Daily> list = jdbcTemplate.query(sql, new RowMapper<Daily>() { | 1147 | List<Daily> list = jdbcTemplate.query(sql, new RowMapper<Daily>() { |
| 1118 | @Override | 1148 | @Override |
| @@ -1122,21 +1152,31 @@ public class FormsServiceImpl implements FormsService { | @@ -1122,21 +1152,31 @@ public class FormsServiceImpl implements FormsService { | ||
| 1122 | daily.setZbh(arg0.getString("cl_zbh")); | 1152 | daily.setZbh(arg0.getString("cl_zbh")); |
| 1123 | daily.setJgh(arg0.getString("j_gh")); | 1153 | daily.setJgh(arg0.getString("j_gh")); |
| 1124 | daily.setjName(arg0.getString("j_name")); | 1154 | daily.setjName(arg0.getString("j_name")); |
| 1125 | - daily.setYh(arg0.getString("yh")); | ||
| 1126 | return daily; | 1155 | return daily; |
| 1127 | } | 1156 | } |
| 1128 | }); | 1157 | }); |
| 1158 | + List<Ylb> listYlb= ylbRepository.obtainYl(map.get("date").toString(), "", "", xlbm, "", "xlbm"); | ||
| 1159 | + List<Dlb> listDlb= dlbRepository.obtainDl(map.get("date").toString(), "", "", xlbm, "", "xlbm"); | ||
| 1129 | List<ScheduleRealInfo> sList; | 1160 | List<ScheduleRealInfo> sList; |
| 1130 | List<ScheduleRealInfo> lists=scheduleRealInfoRepository.scheduleByDateAndLineTjrb(map.get("line").toString(), map.get("date").toString()); | 1161 | List<ScheduleRealInfo> lists=scheduleRealInfoRepository.scheduleByDateAndLineTjrb(map.get("line").toString(), map.get("date").toString()); |
| 1131 | for(int i=0;i<list.size();i++){ | 1162 | for(int i=0;i<list.size();i++){ |
| 1132 | sList =new ArrayList<ScheduleRealInfo>(); | 1163 | sList =new ArrayList<ScheduleRealInfo>(); |
| 1133 | Daily d=list.get(i); | 1164 | Daily d=list.get(i); |
| 1134 | - if(d.getYh()==null){ | ||
| 1135 | - d.setYh("0"); | ||
| 1136 | - }else{ | ||
| 1137 | - if(d.getYh().equals("")) | ||
| 1138 | - d.setYh("0"); | 1165 | + Double yh=0.0; |
| 1166 | + for (int j = 0; j < listYlb.size(); j++) { | ||
| 1167 | + Ylb y=listYlb.get(j); | ||
| 1168 | + if(y.getNbbm().equals(d.getZbh())&& y.getJsy().equals(d.getJgh())){ | ||
| 1169 | + yh=Arith.add(yh, y.getYh()); | ||
| 1170 | + } | ||
| 1171 | + } | ||
| 1172 | + | ||
| 1173 | + for (int j = 0; j < listDlb.size(); j++) { | ||
| 1174 | + Dlb b=listDlb.get(j); | ||
| 1175 | + if(b.getNbbm().equals(d.getZbh())&& b.getJsy().equals(d.getJgh())){ | ||
| 1176 | + yh=Arith.add(yh, b.getHd()); | ||
| 1177 | + } | ||
| 1139 | } | 1178 | } |
| 1179 | + d.setYh(String.valueOf(yh)); | ||
| 1140 | for (int j = 0; j < lists.size(); j++) { | 1180 | for (int j = 0; j < lists.size(); j++) { |
| 1141 | ScheduleRealInfo s=lists.get(j); | 1181 | ScheduleRealInfo s=lists.get(j); |
| 1142 | if(d.getJgh().equals(s.getjGh()) && d.getZbh().equals(s.getClZbh())){ | 1182 | if(d.getJgh().equals(s.getjGh()) && d.getZbh().equals(s.getClZbh())){ |
src/main/java/com/bsth/service/impl/BusIntervalServiceImpl.java
| @@ -11,6 +11,7 @@ import java.util.Collections; | @@ -11,6 +11,7 @@ import java.util.Collections; | ||
| 11 | import java.util.Comparator; | 11 | import java.util.Comparator; |
| 12 | import java.util.Date; | 12 | import java.util.Date; |
| 13 | import java.util.HashMap; | 13 | import java.util.HashMap; |
| 14 | +import java.util.HashSet; | ||
| 14 | import java.util.Iterator; | 15 | import java.util.Iterator; |
| 15 | import java.util.List; | 16 | import java.util.List; |
| 16 | import java.util.Map; | 17 | import java.util.Map; |
| @@ -585,7 +586,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { | @@ -585,7 +586,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { | ||
| 585 | 586 | ||
| 586 | @Override | 587 | @Override |
| 587 | public Map<String, Object> timeAndSpeed(Map<String, Object> map) { | 588 | public Map<String, Object> timeAndSpeed(Map<String, Object> map) { |
| 588 | - List<Long> ttList = new ArrayList<Long>(); | 589 | + List<Map<String, Object>> ttList = new ArrayList<Map<String, Object>>(); |
| 589 | List<ChildTaskPlan> cList = new ArrayList<ChildTaskPlan>(); | 590 | List<ChildTaskPlan> cList = new ArrayList<ChildTaskPlan>(); |
| 590 | List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>(); | 591 | List<ScheduleRealInfo> list = new ArrayList<ScheduleRealInfo>(); |
| 591 | List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>(); | 592 | List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>(); |
| @@ -593,6 +594,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { | @@ -593,6 +594,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { | ||
| 593 | Map<String, List<ScheduleRealInfo>> keyMap = new HashMap<String, List<ScheduleRealInfo>>(); | 594 | Map<String, List<ScheduleRealInfo>> keyMap = new HashMap<String, List<ScheduleRealInfo>>(); |
| 594 | Map<String, List<ChildTaskPlan>> cMap = new HashMap<String, List<ChildTaskPlan>>(); | 595 | Map<String, List<ChildTaskPlan>> cMap = new HashMap<String, List<ChildTaskPlan>>(); |
| 595 | Map<String, Object> modelMap = new HashMap<String, Object>(); | 596 | Map<String, Object> modelMap = new HashMap<String, Object>(); |
| 597 | + Set<Long> tsSet = new HashSet<Long>(); | ||
| 596 | 598 | ||
| 597 | String company = map.get("company").toString(); | 599 | String company = map.get("company").toString(); |
| 598 | String subCompany = map.get("subCompany").toString(); | 600 | String subCompany = map.get("subCompany").toString(); |
| @@ -616,20 +618,23 @@ public class BusIntervalServiceImpl implements BusIntervalService { | @@ -616,20 +618,23 @@ public class BusIntervalServiceImpl implements BusIntervalService { | ||
| 616 | 618 | ||
| 617 | try { | 619 | try { |
| 618 | 620 | ||
| 619 | - String sql = "select * from bsth_c_s_sp_info_real where DATE_FORMAT(schedule_date,'%Y-%m-%d') >= '"+startDate+"' and DATE_FORMAT(schedule_date,'%Y-%m-%d') <= '"+endDate+"'"; | 621 | + String where = ""; |
| 620 | if(line.length() != 0 && statu.equals("1")){ | 622 | if(line.length() != 0 && statu.equals("1")){ |
| 621 | - sql += " and xl_bm = '"+line+"'"; | 623 | + where += " and xl_bm = '"+line+"'"; |
| 622 | } | 624 | } |
| 623 | if(lp.length() != 0 && statu.equals("1")){ | 625 | if(lp.length() != 0 && statu.equals("1")){ |
| 624 | - sql += " and lp_name = '"+lp+"'"; | 626 | + where += " and lp_name = '"+lp+"'"; |
| 625 | } | 627 | } |
| 626 | if(company.length() != 0){ | 628 | if(company.length() != 0){ |
| 627 | - sql += " and gs_bm = '"+company+"' and fgs_bm = '"+subCompany+"'"; | 629 | + where += " and gs_bm = '"+company+"' and fgs_bm = '"+subCompany+"'"; |
| 628 | } | 630 | } |
| 629 | if(sfqr == 1){ | 631 | if(sfqr == 1){ |
| 630 | - sql += " and zdsj >= '"+times1+"' and fcsj <= '"+times2+"'"; | 632 | + where += " and zdsj >= '"+times1+"' and fcsj <= '"+times2+"'"; |
| 631 | } | 633 | } |
| 632 | - sql += " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks' order by fcsj"; | 634 | + where += " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'"; |
| 635 | + | ||
| 636 | + String sql = "select * from bsth_c_s_sp_info_real where DATE_FORMAT(schedule_date,'%Y-%m-%d') >= '"+startDate+"'" | ||
| 637 | + + " and DATE_FORMAT(schedule_date,'%Y-%m-%d') <= '"+endDate+"'"+where+""; | ||
| 633 | 638 | ||
| 634 | list = jdbcTemplate.query(sql, | 639 | list = jdbcTemplate.query(sql, |
| 635 | new RowMapper<ScheduleRealInfo>(){ | 640 | new RowMapper<ScheduleRealInfo>(){ |
| @@ -704,6 +709,65 @@ public class BusIntervalServiceImpl implements BusIntervalService { | @@ -704,6 +709,65 @@ public class BusIntervalServiceImpl implements BusIntervalService { | ||
| 704 | return schedule; | 709 | return schedule; |
| 705 | } | 710 | } |
| 706 | }); | 711 | }); |
| 712 | + | ||
| 713 | + { | ||
| 714 | + List<Map<String, String>> temp1 = new ArrayList<Map<String, String>>(); | ||
| 715 | + List<Map<String, String>> temp2 = new ArrayList<Map<String, String>>(); | ||
| 716 | + sql = "select * from bsth_c_s_sp_info where bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'"; | ||
| 717 | + | ||
| 718 | + if(startDate.equals(endDate)){ | ||
| 719 | + sql += " and schedule_date = '"+startDate+"'"; | ||
| 720 | + } else { | ||
| 721 | + sql += " and schedule_date >= '"+startDate+"' and schedule_date <= '"+endDate+"'"; | ||
| 722 | + } | ||
| 723 | + if(line.length() != 0 && statu.equals("1")){ | ||
| 724 | + sql += " and xl_bm = '"+line+"'"; | ||
| 725 | + } | ||
| 726 | + if(company.length() != 0){ | ||
| 727 | + sql += " and gs_bm = '"+company+"' and fgs_bm = '"+subCompany+"'"; | ||
| 728 | + } | ||
| 729 | + temp1 = jdbcTemplate.query(sql, | ||
| 730 | + new RowMapper<Map<String, String>>(){ | ||
| 731 | + @Override | ||
| 732 | + public Map<String, String> mapRow(ResultSet rs, int rowNum) throws SQLException { | ||
| 733 | + Map<String, String> m = new HashMap<String, String>(); | ||
| 734 | + m.put("id", rs.getString("id")); | ||
| 735 | + m.put("lp", rs.getString("lp")); | ||
| 736 | + m.put("fcsj", rs.getString("fcsj")); | ||
| 737 | + m.put("xl_bm", rs.getString("xl_bm")); | ||
| 738 | + m.put("tt_info", rs.getString("tt_info")); | ||
| 739 | + return m; | ||
| 740 | + } | ||
| 741 | + }); | ||
| 742 | + sql = "select * from bsth_c_s_ttinfo_detail where ists = 1" | ||
| 743 | + + " and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'"; | ||
| 744 | + | ||
| 745 | + if(line.length() != 0 && statu.equals("1")){ | ||
| 746 | + sql += " and xl = '"+line+"'"; | ||
| 747 | + } | ||
| 748 | + temp2 = jdbcTemplate.query(sql, | ||
| 749 | + new RowMapper<Map<String, String>>(){ | ||
| 750 | + @Override | ||
| 751 | + public Map<String, String> mapRow(ResultSet rs, int rowNum) throws SQLException { | ||
| 752 | + Map<String, String> m = new HashMap<String, String>(); | ||
| 753 | + m.put("id", rs.getString("id")); | ||
| 754 | + m.put("lp", rs.getString("lp")); | ||
| 755 | + m.put("xl", rs.getString("xl")); | ||
| 756 | + m.put("fcsj", rs.getString("fcsj")); | ||
| 757 | + m.put("ttinfo", rs.getString("ttinfo")); | ||
| 758 | + return m; | ||
| 759 | + } | ||
| 760 | + }); | ||
| 761 | + | ||
| 762 | + for(Map<String, String> m2 : temp2){ | ||
| 763 | + for(Map<String, String> m1 : temp1){ | ||
| 764 | + if(m2.get("ttinfo").equals(m1.get("tt_info")) && m2.get("xl").equals(m1.get("xl_bm")) | ||
| 765 | + && m2.get("lp").equals(m1.get("lp")) && m2.get("fcsj").equals(m1.get("fcsj"))){ | ||
| 766 | + tsSet.add(Long.valueOf(m1.get("id"))); | ||
| 767 | + } | ||
| 768 | + } | ||
| 769 | + } | ||
| 770 | + } | ||
| 707 | 771 | ||
| 708 | sql = "select * from bsth_c_s_child_task order by start_date"; | 772 | sql = "select * from bsth_c_s_child_task order by start_date"; |
| 709 | 773 | ||
| @@ -723,13 +787,17 @@ public class BusIntervalServiceImpl implements BusIntervalService { | @@ -723,13 +787,17 @@ public class BusIntervalServiceImpl implements BusIntervalService { | ||
| 723 | }); | 787 | }); |
| 724 | 788 | ||
| 725 | if(model.length() != 0){ | 789 | if(model.length() != 0){ |
| 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'"; | 790 | + sql = "select sp.id from bsth_c_s_sp_info sp left join bsth_c_s_ttinfo_detail tt on sp.tt_info = tt.ttinfo and sp.xl_bm = tt.xl and sp.lp = tt.lp and sp.fcsj = tt.fcsj " |
| 791 | + + "where tt_info = '" + model + "' and bc_type != 'in' and bc_type != 'out' and bc_type != 'ldks'"; | ||
| 727 | 792 | ||
| 728 | ttList = jdbcTemplate.query(sql, | 793 | ttList = jdbcTemplate.query(sql, |
| 729 | - new RowMapper<Long>(){ | 794 | + new RowMapper<Map<String, Object>>(){ |
| 730 | @Override | 795 | @Override |
| 731 | - public Long mapRow(ResultSet rs, int rowNum) throws SQLException { | ||
| 732 | - return rs.getLong("id"); | 796 | + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException { |
| 797 | + Map<String, Object> m = new HashMap<String, Object>(); | ||
| 798 | + m.put("id", rs.getString("id")); | ||
| 799 | + m.put("ists", rs.getString("ists")!=null?rs.getString("ists"):"0"); | ||
| 800 | + return m; | ||
| 733 | } | 801 | } |
| 734 | }); | 802 | }); |
| 735 | } | 803 | } |
| @@ -771,13 +839,15 @@ public class BusIntervalServiceImpl implements BusIntervalService { | @@ -771,13 +839,15 @@ public class BusIntervalServiceImpl implements BusIntervalService { | ||
| 771 | if(schedule.getXlName()==null || schedule.getXlName().trim().length()==0) | 839 | if(schedule.getXlName()==null || schedule.getXlName().trim().length()==0) |
| 772 | continue; | 840 | continue; |
| 773 | if(model.length() != 0){ | 841 | if(model.length() != 0){ |
| 774 | - for(Long tt : ttList) | ||
| 775 | - if((long) tt == (long)schedule.getSpId()){ | 842 | + for(Map<String, Object> tt : ttList){ |
| 843 | + long id = Long.valueOf(tt.get("id").toString()); | ||
| 844 | + if(id == (long)schedule.getSpId()){ | ||
| 776 | String key = schedule.getScheduleDateStr() + "/" + schedule.getXlName() + "/" + schedule.getLpName(); | 845 | String key = schedule.getScheduleDateStr() + "/" + schedule.getXlName() + "/" + schedule.getLpName(); |
| 777 | if(!keyMap.containsKey(key)) | 846 | if(!keyMap.containsKey(key)) |
| 778 | keyMap.put(key, new ArrayList<ScheduleRealInfo>()); | 847 | keyMap.put(key, new ArrayList<ScheduleRealInfo>()); |
| 779 | keyMap.get(key).add(schedule); | 848 | keyMap.get(key).add(schedule); |
| 780 | } | 849 | } |
| 850 | + } | ||
| 781 | }else{ | 851 | }else{ |
| 782 | String key = schedule.getScheduleDateStr() + "/" + schedule.getXlName() + "/" + schedule.getLpName(); | 852 | String key = schedule.getScheduleDateStr() + "/" + schedule.getXlName() + "/" + schedule.getLpName(); |
| 783 | if(!keyMap.containsKey(key)) | 853 | if(!keyMap.containsKey(key)) |
| @@ -821,14 +891,16 @@ public class BusIntervalServiceImpl implements BusIntervalService { | @@ -821,14 +891,16 @@ public class BusIntervalServiceImpl implements BusIntervalService { | ||
| 821 | for(int i = 1; i < keyList.size(); i++){ | 891 | for(int i = 1; i < keyList.size(); i++){ |
| 822 | ScheduleRealInfo schedule1 = sortMap.get(keyList.get(i - 1)); | 892 | ScheduleRealInfo schedule1 = sortMap.get(keyList.get(i - 1)); |
| 823 | ScheduleRealInfo schedule2 = sortMap.get(keyList.get(i)); | 893 | ScheduleRealInfo schedule2 = sortMap.get(keyList.get(i)); |
| 824 | - if(sfqr == 1 && time1 > schedule1.getFcsjT()){ | ||
| 825 | - jhyysj += schedule2.getFcsjT() - time1; | ||
| 826 | - }else if(sfqr == 1 && time2 < schedule2.getFcsjT()){ | ||
| 827 | - jhyysj += time2 - schedule1.getFcsjT(); | ||
| 828 | - }else{ | ||
| 829 | - jhyysj += schedule2.getFcsjT() - schedule1.getFcsjT(); | 894 | + if(!tsSet.contains(schedule1.getId())){ |
| 895 | + if(sfqr == 1 && time1 > schedule1.getFcsjT()){ | ||
| 896 | + jhyysj += schedule2.getFcsjT() - time1; | ||
| 897 | + }else if(sfqr == 1 && time2 < schedule2.getFcsjT()){ | ||
| 898 | + jhyysj += time2 - schedule1.getFcsjT(); | ||
| 899 | + }else{ | ||
| 900 | + jhyysj += schedule2.getFcsjT() - schedule1.getFcsjT(); | ||
| 901 | + } | ||
| 902 | + jhyysj1 += schedule2.getFcsjT() - schedule1.getFcsjT(); | ||
| 830 | } | 903 | } |
| 831 | - jhyysj1 += schedule2.getFcsjT() - schedule1.getFcsjT(); | ||
| 832 | long zdsj2 = schedule2.getZdsjT(); | 904 | long zdsj2 = schedule2.getZdsjT(); |
| 833 | long fcsj2 = schedule2.getFcsjT(); | 905 | long fcsj2 = schedule2.getFcsjT(); |
| 834 | if(fcsj2 > zdsj2) | 906 | if(fcsj2 > zdsj2) |
src/main/java/com/bsth/service/report/SheetService.java
0 → 100644
| 1 | +package com.bsth.service.report; | ||
| 2 | + | ||
| 3 | +import java.util.List; | ||
| 4 | +import java.util.Map; | ||
| 5 | + | ||
| 6 | +import com.bsth.entity.sheet.Sheet; | ||
| 7 | +import com.bsth.service.BaseService; | ||
| 8 | + | ||
| 9 | +public interface SheetService extends BaseService<Sheet, Integer>{ | ||
| 10 | + public List<Map<String, Object>> bcPunctual(Map<String, Object> map); | ||
| 11 | + public String saveSheetList() throws Exception; | ||
| 12 | + public List<Map<String, Object>> countList(Map<String, Object> map); | ||
| 13 | + | ||
| 14 | + public List<Sheet> sheetList(Integer id); | ||
| 15 | +} |
src/main/java/com/bsth/service/report/impl/ReportServiceImpl.java
| @@ -375,11 +375,11 @@ public class ReportServiceImpl implements ReportService{ | @@ -375,11 +375,11 @@ public class ReportServiceImpl implements ReportService{ | ||
| 375 | String[] minSjs = minfcsj.split(":"); | 375 | String[] minSjs = minfcsj.split(":"); |
| 376 | int minSj=Integer.parseInt(minSjs[0])*60+Integer.parseInt(minSjs[1]); | 376 | int minSj=Integer.parseInt(minSjs[0])*60+Integer.parseInt(minSjs[1]); |
| 377 | //查询时间里程 | 377 | //查询时间里程 |
| 378 | - String sqlPc=" (SELECT jhlc,fcsj,bc_type,lp,2 as xh FROM bsth_c_s_ttinfo_detail " | 378 | + String sqlPc=" (SELECT jhlc,fcsj,bc_type,lp,2 as xh, ists FROM bsth_c_s_ttinfo_detail " |
| 379 | + " where ttinfo ='"+ttinfo+"' and fcsj <='"+minfcsj+"' ) " | 379 | + " where ttinfo ='"+ttinfo+"' and fcsj <='"+minfcsj+"' ) " |
| 380 | + " union " | 380 | + " union " |
| 381 | - + " (SELECT jhlc,fcsj,bc_type,lp,1 as xh FROM bsth_c_s_ttinfo_detail " | ||
| 382 | - + " where ttinfo ='"+ttinfo+"' and fcsj > '"+minfcsj+"') order by lp,xh,fcsj"; | 381 | + + " (SELECT jhlc,fcsj,bc_type,lp,1 as xh, ists FROM bsth_c_s_ttinfo_detail " |
| 382 | + + " where ttinfo ='"+ttinfo+"' and fcsj > '"+minfcsj+"') order by lp,xh,fcsj"; | ||
| 383 | 383 | ||
| 384 | Map<String, Object> map=new HashMap<String,Object>(); | 384 | Map<String, Object> map=new HashMap<String,Object>(); |
| 385 | List<Map<String, Object>> list= jdbcTemplate.query(sqlPc, | 385 | List<Map<String, Object>> list= jdbcTemplate.query(sqlPc, |
| @@ -391,6 +391,7 @@ public class ReportServiceImpl implements ReportService{ | @@ -391,6 +391,7 @@ public class ReportServiceImpl implements ReportService{ | ||
| 391 | m.put("yygl", rs.getString("jhlc")==null?"0":rs.getString("jhlc")); | 391 | m.put("yygl", rs.getString("jhlc")==null?"0":rs.getString("jhlc")); |
| 392 | m.put("bcType", rs.getString("bc_type")); | 392 | m.put("bcType", rs.getString("bc_type")); |
| 393 | m.put("lp", rs.getString("lp")); | 393 | m.put("lp", rs.getString("lp")); |
| 394 | + m.put("ists", rs.getObject("ists")==null?"0":rs.getString("ists")); | ||
| 394 | return m; | 395 | return m; |
| 395 | } | 396 | } |
| 396 | }); | 397 | }); |
| @@ -451,6 +452,9 @@ public class ReportServiceImpl implements ReportService{ | @@ -451,6 +452,9 @@ public class ReportServiceImpl implements ReportService{ | ||
| 451 | lp=m.get("lp").toString(); | 452 | lp=m.get("lp").toString(); |
| 452 | 453 | ||
| 453 | } | 454 | } |
| 455 | + if(m.containsKey("ists") && m.get("ists").equals("1")){ | ||
| 456 | + sj = 0; | ||
| 457 | + } | ||
| 454 | } | 458 | } |
| 455 | if(yysj>0){ | 459 | if(yysj>0){ |
| 456 | yycs =yygl/(yysj*1.0/60); | 460 | yycs =yygl/(yysj*1.0/60); |
| @@ -662,22 +666,28 @@ public class ReportServiceImpl implements ReportService{ | @@ -662,22 +666,28 @@ public class ReportServiceImpl implements ReportService{ | ||
| 662 | + " (SELECT jhlc,fcsj,bcsj,bc_type,lp,xl_dir,ists,1 as xh FROM " | 666 | + " (SELECT jhlc,fcsj,bcsj,bc_type,lp,xl_dir,ists,1 as xh FROM " |
| 663 | + " bsth_c_s_ttinfo_detail where ttinfo ='"+ttinfo+"' and " | 667 | + " bsth_c_s_ttinfo_detail where ttinfo ='"+ttinfo+"' and " |
| 664 | + " fcsj > '"+minfcsj+"' and bc_type!='in' and bc_type!='out' and bc_type!='ldks') " | 668 | + " fcsj > '"+minfcsj+"' and bc_type!='in' and bc_type!='out' and bc_type!='ldks') " |
| 665 | - + " order by xl_dir, xh,fcsj"; | 669 | + + " order by xl_dir, xh, fcsj"; |
| 666 | Map<String, Object> map=new HashMap<String,Object>(); | 670 | Map<String, Object> map=new HashMap<String,Object>(); |
| 667 | List<Map<String, Object>> list= jdbcTemplate.query(sqlPc, | 671 | List<Map<String, Object>> list= jdbcTemplate.query(sqlPc, |
| 668 | - new RowMapper<Map<String, Object>>(){ | ||
| 669 | - @Override | ||
| 670 | - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException { | ||
| 671 | - Map<String, Object> m=new HashMap<String,Object>(); | ||
| 672 | - m.put("fcsj", rs.getString("fcsj")); | ||
| 673 | - m.put("yygl", rs.getString("jhlc")==null?"0":rs.getString("jhlc")); | ||
| 674 | - m.put("bcsj", rs.getString("bcsj")); | ||
| 675 | - m.put("bcType", rs.getString("bc_type")); | ||
| 676 | - m.put("lp", rs.getString("lp")); | ||
| 677 | - m.put("dir", rs.getString("xl_dir")); | ||
| 678 | - m.put("ists", rs.getString("ists")!=null?rs.getString("ists"):""); | ||
| 679 | - return m; | ||
| 680 | - } | 672 | + new RowMapper<Map<String, Object>>(){ |
| 673 | + @Override | ||
| 674 | + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException { | ||
| 675 | + Map<String, Object> m=new HashMap<String,Object>(); | ||
| 676 | + m.put("fcsj", rs.getString("fcsj")); | ||
| 677 | + m.put("yygl", rs.getString("jhlc")==null?"0":rs.getString("jhlc")); | ||
| 678 | + m.put("bcsj", rs.getString("bcsj")); | ||
| 679 | + m.put("bcType", rs.getString("bc_type")); | ||
| 680 | + m.put("lp", rs.getString("lp")); | ||
| 681 | + m.put("dir", rs.getString("xl_dir")); | ||
| 682 | + m.put("ists", rs.getString("ists")!=null?rs.getString("ists"):""); | ||
| 683 | + | ||
| 684 | + if(rs.getString("xh").equals("2")){ | ||
| 685 | + String[] split = m.get("fcsj").toString().split(":"); | ||
| 686 | + m.put("fcsj", Integer.valueOf(split[0]) + 24 + ":"+split[1]); | ||
| 687 | + } | ||
| 688 | + | ||
| 689 | + return m; | ||
| 690 | + } | ||
| 681 | }); | 691 | }); |
| 682 | 692 | ||
| 683 | List<Map<String, Object>> newList=new ArrayList<Map<String,Object>>(); | 693 | List<Map<String, Object>> newList=new ArrayList<Map<String,Object>>(); |
| @@ -711,6 +721,7 @@ public class ReportServiceImpl implements ReportService{ | @@ -711,6 +721,7 @@ public class ReportServiceImpl implements ReportService{ | ||
| 711 | List<Map<String, Object>> list2 = keyMap.get(key); | 721 | List<Map<String, Object>> list2 = keyMap.get(key); |
| 712 | List<Integer> cjs = new ArrayList<Integer>(); | 722 | List<Integer> cjs = new ArrayList<Integer>(); |
| 713 | int sxsj = 0, xxsj = 0, zcj = 0, tssj = 0; | 723 | int sxsj = 0, xxsj = 0, zcj = 0, tssj = 0; |
| 724 | + int sxbc = 0, xxbc = 0; | ||
| 714 | int temp = 24*60+1; | 725 | int temp = 24*60+1; |
| 715 | boolean ists = false; | 726 | boolean ists = false; |
| 716 | for(Map<String, Object> m : list2){ | 727 | for(Map<String, Object> m : list2){ |
| @@ -720,8 +731,10 @@ public class ReportServiceImpl implements ReportService{ | @@ -720,8 +731,10 @@ public class ReportServiceImpl implements ReportService{ | ||
| 720 | int bcsj = Integer.valueOf(m.get("bcsj").toString()); | 731 | int bcsj = Integer.valueOf(m.get("bcsj").toString()); |
| 721 | if(xlDir == 0){ | 732 | if(xlDir == 0){ |
| 722 | sxsj += bcsj; | 733 | sxsj += bcsj; |
| 734 | + sxbc ++; | ||
| 723 | } else { | 735 | } else { |
| 724 | xxsj += bcsj; | 736 | xxsj += bcsj; |
| 737 | + xxbc ++; | ||
| 725 | } | 738 | } |
| 726 | if(temp >= fcsj){ | 739 | if(temp >= fcsj){ |
| 727 | temp = fcsj; | 740 | temp = fcsj; |
| @@ -744,9 +757,9 @@ public class ReportServiceImpl implements ReportService{ | @@ -744,9 +757,9 @@ public class ReportServiceImpl implements ReportService{ | ||
| 744 | zcj += i; | 757 | zcj += i; |
| 745 | } | 758 | } |
| 746 | tempMap.put("sjd", key); | 759 | tempMap.put("sjd", key); |
| 747 | - tempMap.put("sxsj", sxsj); | ||
| 748 | - tempMap.put("xxsj", xxsj); | ||
| 749 | - tempMap.put("fqsj", sxsj + xxsj); | 760 | + tempMap.put("sxsj", sxsj / sxbc); |
| 761 | + tempMap.put("xxsj", xxsj / xxbc); | ||
| 762 | + tempMap.put("fqsj", (sxsj + xxsj) / list2.size()); | ||
| 750 | tempMap.put("cjqj", cjs.size()>0?cjs.get(0)+"——"+cjs.get(cjs.size()-1):"——"); | 763 | tempMap.put("cjqj", cjs.size()>0?cjs.get(0)+"——"+cjs.get(cjs.size()-1):"——"); |
| 751 | tempMap.put("pjcj", cjs.size()>0?zcj/cjs.size():"/"); | 764 | tempMap.put("pjcj", cjs.size()>0?zcj/cjs.size():"/"); |
| 752 | tempMap.put("tssj", tssj); | 765 | tempMap.put("tssj", tssj); |
src/main/java/com/bsth/service/report/impl/SheetServiceImpl.java
0 → 100644
| 1 | +package com.bsth.service.report.impl; | ||
| 2 | + | ||
| 3 | +import java.sql.ResultSet; | ||
| 4 | +import java.sql.SQLException; | ||
| 5 | +import java.text.DecimalFormat; | ||
| 6 | +import java.text.ParseException; | ||
| 7 | +import java.text.SimpleDateFormat; | ||
| 8 | +import java.util.ArrayList; | ||
| 9 | +import java.util.Calendar; | ||
| 10 | +import java.util.Collections; | ||
| 11 | +import java.util.Comparator; | ||
| 12 | +import java.util.Date; | ||
| 13 | +import java.util.GregorianCalendar; | ||
| 14 | +import java.util.HashMap; | ||
| 15 | +import java.util.Iterator; | ||
| 16 | +import java.util.List; | ||
| 17 | +import java.util.Map; | ||
| 18 | +import java.util.Set; | ||
| 19 | + | ||
| 20 | +import javax.transaction.Transactional; | ||
| 21 | + | ||
| 22 | +import org.apache.poi.hssf.eventusermodel.EventWorkbookBuilder.SheetRecordCollectingListener; | ||
| 23 | +import org.slf4j.Logger; | ||
| 24 | +import org.slf4j.LoggerFactory; | ||
| 25 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 26 | +import org.springframework.jdbc.core.JdbcTemplate; | ||
| 27 | +import org.springframework.jdbc.core.RowMapper; | ||
| 28 | +import org.springframework.scheduling.commonj.ScheduledTimerListener; | ||
| 29 | +import org.springframework.stereotype.Service; | ||
| 30 | + | ||
| 31 | +import com.bsth.data.BasicData; | ||
| 32 | +import com.bsth.entity.Line; | ||
| 33 | +import com.bsth.entity.oil.Ylb; | ||
| 34 | +import com.bsth.entity.realcontrol.ChildTaskPlan; | ||
| 35 | +import com.bsth.entity.realcontrol.ScheduleRealInfo; | ||
| 36 | +import com.bsth.entity.sheet.Sheet; | ||
| 37 | +import com.bsth.repository.LineRepository; | ||
| 38 | +import com.bsth.repository.realcontrol.ScheduleRealInfoRepository; | ||
| 39 | +import com.bsth.repository.sheet.SheetRepository; | ||
| 40 | +import com.bsth.service.impl.BaseServiceImpl; | ||
| 41 | +import com.bsth.service.report.SheetService; | ||
| 42 | +import com.bsth.util.BatchSaveUtils; | ||
| 43 | +import com.bsth.util.ComparableChild; | ||
| 44 | +import com.bsth.util.ComparableReal; | ||
| 45 | +import com.google.common.util.concurrent.AbstractScheduledService.Scheduler; | ||
| 46 | + | ||
| 47 | +@Service | ||
| 48 | +public class SheetServiceImpl extends BaseServiceImpl<Sheet, Integer> implements SheetService { | ||
| 49 | + Logger logger = LoggerFactory.getLogger(this.getClass()); | ||
| 50 | + @Autowired | ||
| 51 | + ScheduleRealInfoRepository scheduleRealInfoRepository; | ||
| 52 | + @Autowired | ||
| 53 | + LineRepository lineRepository; | ||
| 54 | + @Autowired | ||
| 55 | + JdbcTemplate jdbcTemplate; | ||
| 56 | + @Autowired | ||
| 57 | + SheetRepository sheetRepository; | ||
| 58 | + /** | ||
| 59 | + * 班次准点率 | ||
| 60 | + */ | ||
| 61 | + @Override | ||
| 62 | + public List<Map<String, Object>> bcPunctual(Map<String, Object> map) { | ||
| 63 | + // TODO Auto-generated method stub | ||
| 64 | + String line =map.get("line").toString(); | ||
| 65 | + String date =map.get("date").toString(); | ||
| 66 | + List<ScheduleRealInfo> realList=scheduleRealInfoRepository.scheduleByDateAndLineTjrb(line, date); | ||
| 67 | + | ||
| 68 | + return null; | ||
| 69 | + } | ||
| 70 | + public static boolean isInOut(ScheduleRealInfo s){ | ||
| 71 | + boolean fage=false; | ||
| 72 | + if(s.getBcType().equals("in")){ | ||
| 73 | + fage=true; | ||
| 74 | + } | ||
| 75 | + if(s.getBcType().equals("out")){ | ||
| 76 | + fage=true; | ||
| 77 | + } | ||
| 78 | + if(s.getBcType().equals("ldks")){ | ||
| 79 | + fage=true; | ||
| 80 | + } | ||
| 81 | + | ||
| 82 | + return fage; | ||
| 83 | + } | ||
| 84 | + @Override | ||
| 85 | + public String saveSheetList() throws Exception{ | ||
| 86 | + Map<String, Object> map=new HashMap<String,Object>(); | ||
| 87 | + String result = "failure"; | ||
| 88 | + try { | ||
| 89 | + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); | ||
| 90 | + Date dNow = new Date(); //当前时间 | ||
| 91 | + Calendar calendar = Calendar.getInstance(); //得到日历 | ||
| 92 | + calendar.setTime(dNow);//把当前时间赋给日历 | ||
| 93 | + calendar.add(Calendar.DAY_OF_MONTH, -3); //设置为前三天 | ||
| 94 | + | ||
| 95 | + String rq=sdf.format(calendar.getTime()); | ||
| 96 | +// String rq="2017-05-16"; | ||
| 97 | + | ||
| 98 | + List<Line> lineList = (List<Line>) lineRepository.findAll(); | ||
| 99 | + | ||
| 100 | + List<ScheduleRealInfo> lists= scheduleRealInfoRepository.findByDate(rq); | ||
| 101 | + List<Sheet> listAdds=new ArrayList<Sheet>(); | ||
| 102 | + for (int i = 0; i < lineList.size(); i++) { | ||
| 103 | + List<ScheduleRealInfo> list=new ArrayList<ScheduleRealInfo>(); | ||
| 104 | + String line=lineList.get(i).getLineCode(); | ||
| 105 | + for (int j = 0; j < lists.size(); j++) { | ||
| 106 | + ScheduleRealInfo s=lists.get(j); | ||
| 107 | + if(!isInOut(s)){ | ||
| 108 | + if(s.getXlBm().equals(line)){ | ||
| 109 | + list.add(s); | ||
| 110 | + } | ||
| 111 | + } | ||
| 112 | + | ||
| 113 | + } | ||
| 114 | + if(list.size()>0){ | ||
| 115 | + List<Sheet> listAdd=punctualByLine(line,list); | ||
| 116 | + if(listAdd.size()>0){ | ||
| 117 | + listAdds.addAll(listAdd); | ||
| 118 | + } | ||
| 119 | + } | ||
| 120 | + | ||
| 121 | + } | ||
| 122 | + | ||
| 123 | + if(listAdds.size()>0){ | ||
| 124 | + new BatchSaveUtils<Sheet>().saveList(listAdds, Sheet.class); | ||
| 125 | + } | ||
| 126 | + result = "success"; | ||
| 127 | + }catch (Exception e) { | ||
| 128 | + // TODO Auto-generated catch block | ||
| 129 | + throw e; | ||
| 130 | + }finally{ | ||
| 131 | + logger.info("setDDRB:"+result); | ||
| 132 | + } | ||
| 133 | + | ||
| 134 | + return result; | ||
| 135 | + } | ||
| 136 | + | ||
| 137 | + public List<Sheet> punctualByLine(String line,List<ScheduleRealInfo> list){ | ||
| 138 | + List<Sheet> listAdd=new ArrayList<Sheet>(); | ||
| 139 | +// String line =map.get("line").toString(); | ||
| 140 | +// String date =map.get("date").toString(); | ||
| 141 | + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm"); | ||
| 142 | + String sqlMinYysj="select start_opt from bsth_c_line_config where " | ||
| 143 | + + " id = (" | ||
| 144 | + + "select max(id) from bsth_c_line_config where line ='"+BasicData.lineId2CodeMap.inverse().get(line) +"'" | ||
| 145 | + + ")"; | ||
| 146 | + List<String> listMin=jdbcTemplate.query(sqlMinYysj, | ||
| 147 | + new RowMapper<String>(){ | ||
| 148 | + @Override | ||
| 149 | + public String mapRow(ResultSet rs, int rowNum) throws SQLException { | ||
| 150 | + String s=rs.getString("start_opt"); | ||
| 151 | + return s; | ||
| 152 | + } | ||
| 153 | + }); | ||
| 154 | + if(listMin.size()>0){ | ||
| 155 | + String minfcsj=listMin.get(0); | ||
| 156 | + String[] minSjs = minfcsj.split(":"); | ||
| 157 | + //车辆最早发车时间 用了过滤超第二天0点的数据 | ||
| 158 | + Long minSj=Long.parseLong(minSjs[0])*60+Long.parseLong(minSjs[1]); | ||
| 159 | + //0 上行 1下行 | ||
| 160 | + List<ScheduleRealInfo> listJhsj0=new ArrayList<ScheduleRealInfo>(); | ||
| 161 | + | ||
| 162 | + List<ScheduleRealInfo> listJhsj1=new ArrayList<ScheduleRealInfo>(); | ||
| 163 | + | ||
| 164 | + List<ScheduleRealInfo> listReal0=new ArrayList<ScheduleRealInfo>(); | ||
| 165 | + | ||
| 166 | + List<ScheduleRealInfo> listReal1=new ArrayList<ScheduleRealInfo>(); | ||
| 167 | + //排除所有进出场班次 | ||
| 168 | +// List<ScheduleRealInfo> list=scheduleRealInfoRepository.scheduleByDateAndLine2(line, date); | ||
| 169 | + /* for (int i = 0; i < list.size(); i++) { | ||
| 170 | + //排除所有烂班的班次 | ||
| 171 | + ScheduleRealInfo s=list.get(i); | ||
| 172 | + Set<ChildTaskPlan> cts=s.getcTasks(); | ||
| 173 | + if(cts!=null && cts.size() > 0){ | ||
| 174 | + | ||
| 175 | + } | ||
| 176 | + ScheduleRealInfo r=checkBc(s); | ||
| 177 | + String[] fcsj= r.getFcsj().split(":"); | ||
| 178 | + Long fcsjL=Long.parseLong(fcsj[0])*60+Long.parseLong(fcsj[1]); | ||
| 179 | + Long fscjT=0L; | ||
| 180 | + if(fcsjL<minSj){ | ||
| 181 | + Calendar calendar = new GregorianCalendar(); | ||
| 182 | + calendar.setTime(r.getScheduleDate()); | ||
| 183 | + calendar.add(calendar.DATE,1); | ||
| 184 | + r.setScheduleDate(calendar.getTime()); | ||
| 185 | + try { | ||
| 186 | + fscjT = sdf.parse(sdf.format(r.getScheduleDate())+" "+r.getFcsj()).getTime(); | ||
| 187 | + } catch (ParseException e) { | ||
| 188 | + // TODO Auto-generated catch block | ||
| 189 | + e.printStackTrace(); | ||
| 190 | + } | ||
| 191 | + | ||
| 192 | + }else{ | ||
| 193 | + try { | ||
| 194 | + fscjT =sdf.parse(r.getScheduleDateStr()+" "+r.getFcsj()).getTime(); | ||
| 195 | + } catch (ParseException e) { | ||
| 196 | + // TODO Auto-generated catch block | ||
| 197 | + e.printStackTrace(); | ||
| 198 | + }; | ||
| 199 | + } | ||
| 200 | + | ||
| 201 | + Sheet sheet=new Sheet(); | ||
| 202 | + Long fcsjAcual=0L; | ||
| 203 | + if (r.getFcsjActual()!=null) { | ||
| 204 | + if(!r.getFcsjActual().equals("")){ | ||
| 205 | + try { | ||
| 206 | + fcsjAcual =sdf.parse(r.getRealExecDate()+" "+r.getFcsjActual()).getTime(); | ||
| 207 | + } catch (ParseException e) { | ||
| 208 | + // TODO Auto-generated catch block | ||
| 209 | + e.printStackTrace(); | ||
| 210 | + } | ||
| 211 | + | ||
| 212 | + | ||
| 213 | + Long sjc=fscjT-fcsjAcual; | ||
| 214 | + //在快慢五分钟内直接添加 | ||
| 215 | + if(sjc>= 3*60*1000*-1 && sjc <=3*60*1000){ | ||
| 216 | + | ||
| 217 | + sheet.setDate(r.getScheduleDateStr()); | ||
| 218 | + sheet.setRealDate(r.getRealExecDate()); | ||
| 219 | + sheet.setJhsjt(fscjT); | ||
| 220 | + sheet.setJhsj(r.getFcsj()); | ||
| 221 | + sheet.setSjsjt(fcsjAcual); | ||
| 222 | + sheet.setSjsj(r.getFcsjActual()); | ||
| 223 | + sheet.setGs(r.getGsBm()); | ||
| 224 | + sheet.setFgs(r.getFgsBm()); | ||
| 225 | + sheet.setLine(r.getXlBm()); | ||
| 226 | + sheet.setXlDir(r.getXlDir()); | ||
| 227 | + sheet.setZdname(r.getQdzName()); | ||
| 228 | + sheet.setCreateDate(new Date()); | ||
| 229 | + listAdd.add(sheet); | ||
| 230 | + }else{ | ||
| 231 | + r.setFcsjActualTime(fcsjAcual); | ||
| 232 | + r.setFcsjT(fscjT); | ||
| 233 | + if(r.getXlDir().equals("0")){ | ||
| 234 | + listJhsj0.add(r); | ||
| 235 | + listReal0.add(r); | ||
| 236 | + }else{ | ||
| 237 | + listJhsj1.add(r); | ||
| 238 | + listReal1.add(r); | ||
| 239 | + } | ||
| 240 | + } | ||
| 241 | + }else{ | ||
| 242 | + sheet.setDate(r.getScheduleDateStr()); | ||
| 243 | + sheet.setRealDate(r.getRealExecDate()); | ||
| 244 | + sheet.setJhsjt(fscjT); | ||
| 245 | + sheet.setJhsj(r.getFcsj()); | ||
| 246 | + sheet.setSjsjt(0L); | ||
| 247 | + sheet.setSjsj("烂班"); | ||
| 248 | + sheet.setGs(r.getGsBm()); | ||
| 249 | + sheet.setFgs(r.getFgsBm()); | ||
| 250 | + sheet.setLine(r.getXlBm()); | ||
| 251 | + sheet.setXlDir(r.getXlDir()); | ||
| 252 | + sheet.setZdname(r.getQdzName()); | ||
| 253 | + sheet.setCreateDate(new Date()); | ||
| 254 | + listAdd.add(sheet); | ||
| 255 | + } | ||
| 256 | + }else{ | ||
| 257 | + sheet.setDate(r.getScheduleDateStr()); | ||
| 258 | + sheet.setRealDate(r.getRealExecDate()); | ||
| 259 | + sheet.setJhsjt(fscjT); | ||
| 260 | + sheet.setJhsj(r.getFcsj()); | ||
| 261 | + sheet.setSjsjt(0L); | ||
| 262 | + sheet.setSjsj("烂班"); | ||
| 263 | + sheet.setGs(r.getGsBm()); | ||
| 264 | + sheet.setFgs(r.getFgsBm()); | ||
| 265 | + sheet.setLine(r.getXlBm()); | ||
| 266 | + sheet.setXlDir(r.getXlDir()); | ||
| 267 | + sheet.setZdname(r.getQdzName()); | ||
| 268 | + sheet.setCreateDate(new Date()); | ||
| 269 | + listAdd.add(sheet); | ||
| 270 | + } | ||
| 271 | + }*/ | ||
| 272 | + for (int i = 0; i < list.size(); i++) { | ||
| 273 | + ScheduleRealInfo s=list.get(i); | ||
| 274 | + ScheduleRealInfo r=checkBc(s); | ||
| 275 | + String[] fcsj= r.getFcsj().split(":"); | ||
| 276 | + Long fcsjL=Long.parseLong(fcsj[0])*60+Long.parseLong(fcsj[1]); | ||
| 277 | + Long fscjT=0L; | ||
| 278 | + if(fcsjL<minSj){ | ||
| 279 | + Calendar calendar = new GregorianCalendar(); | ||
| 280 | + calendar.setTime(r.getScheduleDate()); | ||
| 281 | + calendar.add(calendar.DATE,1); | ||
| 282 | + r.setScheduleDate(calendar.getTime()); | ||
| 283 | + try { | ||
| 284 | + fscjT = sdf.parse(sdf.format(r.getScheduleDate())+" "+r.getFcsj()).getTime(); | ||
| 285 | + } catch (ParseException e) { | ||
| 286 | + // TODO Auto-generated catch block | ||
| 287 | + e.printStackTrace(); | ||
| 288 | + } | ||
| 289 | + | ||
| 290 | + }else{ | ||
| 291 | + try { | ||
| 292 | + fscjT =sdf.parse(r.getScheduleDateStr()+" "+r.getFcsj()).getTime(); | ||
| 293 | + } catch (ParseException e) { | ||
| 294 | + // TODO Auto-generated catch block | ||
| 295 | + e.printStackTrace(); | ||
| 296 | + }; | ||
| 297 | + } | ||
| 298 | + r.setFcsjT(fscjT); | ||
| 299 | + Sheet sheet=new Sheet(); | ||
| 300 | + if (s.getFcsjActual() != null) { | ||
| 301 | + Long fcsjAcual = 0L; | ||
| 302 | + try { | ||
| 303 | + fcsjAcual = sdf.parse(r.getRealExecDate() + " " + r.getFcsjActual()).getTime(); | ||
| 304 | + r.setFcsjActualTime(fcsjAcual); | ||
| 305 | + r.setFcsjT(fscjT); | ||
| 306 | + } catch (ParseException e) { | ||
| 307 | + // TODO Auto-generated catch block | ||
| 308 | + e.printStackTrace(); | ||
| 309 | + } | ||
| 310 | + if (r.isSflj()) { | ||
| 311 | + if (s.getXlDir().equals("0")) { | ||
| 312 | + listReal0.add(r); | ||
| 313 | + } else { | ||
| 314 | + listReal1.add(r); | ||
| 315 | + } | ||
| 316 | + | ||
| 317 | + } else { | ||
| 318 | + if (s.getFcsjActual() != null) { | ||
| 319 | + Long sjc = fcsjAcual - fscjT; | ||
| 320 | + // 在快慢五分钟内直接添加 | ||
| 321 | + if (sjc >= 1 * 60 * 1000 * -1 && sjc <= 3 * 60 * 1000) { | ||
| 322 | + sheet.setDate(r.getScheduleDateStr()); | ||
| 323 | + sheet.setRealDate(r.getRealExecDate()); | ||
| 324 | + sheet.setJhsjt(fscjT); | ||
| 325 | + sheet.setJhsj(r.getFcsj()); | ||
| 326 | + sheet.setSjsjt(fcsjAcual); | ||
| 327 | + sheet.setSjsj(r.getFcsjActual()); | ||
| 328 | + sheet.setGs(r.getGsBm()); | ||
| 329 | + sheet.setFgs(r.getFgsBm()); | ||
| 330 | + sheet.setLine(r.getXlBm()); | ||
| 331 | + sheet.setXlDir(r.getXlDir()); | ||
| 332 | + sheet.setZdname(r.getQdzName()); | ||
| 333 | + sheet.setCreateDate(new Date()); | ||
| 334 | + listAdd.add(sheet); | ||
| 335 | + } else { | ||
| 336 | + if (r.getXlDir().equals("0")) { | ||
| 337 | + listJhsj0.add(r); | ||
| 338 | + listReal0.add(r); | ||
| 339 | + } else { | ||
| 340 | + listJhsj1.add(r); | ||
| 341 | + listReal1.add(r); | ||
| 342 | + } | ||
| 343 | + } | ||
| 344 | + } | ||
| 345 | + } | ||
| 346 | + } else { | ||
| 347 | + /*sheet.setDate(r.getScheduleDateStr()); | ||
| 348 | + sheet.setRealDate(r.getRealExecDate()); | ||
| 349 | + sheet.setJhsjt(fscjT); | ||
| 350 | + sheet.setJhsj(r.getFcsj()); | ||
| 351 | + sheet.setSjsjt(0L); | ||
| 352 | + sheet.setSjsj("烂班"); | ||
| 353 | + sheet.setGs(r.getGsBm()); | ||
| 354 | + sheet.setFgs(r.getFgsBm()); | ||
| 355 | + sheet.setLine(r.getXlBm()); | ||
| 356 | + sheet.setXlDir(r.getXlDir()); | ||
| 357 | + sheet.setZdname(r.getQdzName()); | ||
| 358 | + sheet.setCreateDate(new Date()); | ||
| 359 | + listAdd.add(sheet);*/ | ||
| 360 | + r.setFcsjActualTime(0L); | ||
| 361 | + r.setFcsjT(fscjT); | ||
| 362 | + r.setFcsjActual("烂班"); | ||
| 363 | + if (r.getXlDir().equals("0")) { | ||
| 364 | + listJhsj0.add(r); | ||
| 365 | + listReal0.add(r); | ||
| 366 | + } else { | ||
| 367 | + listJhsj1.add(r); | ||
| 368 | + listReal1.add(r); | ||
| 369 | + } | ||
| 370 | + | ||
| 371 | + } | ||
| 372 | + | ||
| 373 | + } | ||
| 374 | + //计发排序 | ||
| 375 | + Collections.sort(listJhsj0, new ComparableReal()); | ||
| 376 | + Collections.sort(listJhsj1, new ComparableReal()); | ||
| 377 | + //实发排序 | ||
| 378 | + Collections.sort(listReal0,new ComparableAcual()); | ||
| 379 | + Collections.sort(listReal1,new ComparableAcual()); | ||
| 380 | + | ||
| 381 | + //计划发车时间和实际发车时间比较计算准点率 | ||
| 382 | + | ||
| 383 | + | ||
| 384 | + | ||
| 385 | + int no=listJhsj0.size()*2; | ||
| 386 | + boolean fage=true; | ||
| 387 | +// for (int p = no; p > 0; p--) { | ||
| 388 | + while(fage){ | ||
| 389 | + //查询所有的实发 对应最接近的 计发 | ||
| 390 | + List<Map<String, Object>> list_map=new ArrayList<Map<String,Object>>(); | ||
| 391 | + for (int i = 0; i < listReal0.size(); i++) { | ||
| 392 | + Map<String, Object> m_=new HashMap<String,Object>(); | ||
| 393 | + ScheduleRealInfo s1=listReal0.get(i); | ||
| 394 | + Long sjsj=s1.getFcsjActualTime(); | ||
| 395 | + ScheduleRealInfo absInfo=new ScheduleRealInfo(); | ||
| 396 | + int next_j=listJhsj0.size(); | ||
| 397 | + for (int j = 0; j < listJhsj0.size(); j++) { | ||
| 398 | + ScheduleRealInfo s2=listJhsj0.get(j); | ||
| 399 | + if(j==0){ | ||
| 400 | + absInfo=s2; | ||
| 401 | + }else{ | ||
| 402 | + //计发实发时间绝对值比较 取到最接近的值 | ||
| 403 | + Long abs1 = Math.abs(sjsj - s2.getFcsjT()); | ||
| 404 | + Long abs2 = Math.abs(sjsj -absInfo.getFcsjT()); | ||
| 405 | + if(abs2-abs1>0){ | ||
| 406 | + absInfo=s2; | ||
| 407 | + next_j=j; | ||
| 408 | + } | ||
| 409 | + } | ||
| 410 | + } | ||
| 411 | + if(next_j<=0){ | ||
| 412 | + break; | ||
| 413 | + }else{ | ||
| 414 | + m_.put("s", s1.getId()); | ||
| 415 | + m_.put("j", absInfo.getId()); | ||
| 416 | + m_.put("s_list", s1); | ||
| 417 | + m_.put("j_list", absInfo); | ||
| 418 | + m_.put("abs", Math.abs(sjsj-absInfo.getFcsjT())); | ||
| 419 | + list_map.add(m_); | ||
| 420 | + } | ||
| 421 | + } | ||
| 422 | + Collections.sort(list_map,new ComparableMap()); | ||
| 423 | + Map<String, Object> m_s=new HashMap<String,Object>(); | ||
| 424 | + List<Map<String, Object>> list_m_s=new ArrayList<Map<String,Object>>(); | ||
| 425 | + | ||
| 426 | + for (int i = 0; i < list_map.size(); i++) { | ||
| 427 | + Map<String, Object> m_=list_map.get(i); | ||
| 428 | + Map<String, Object> m_l=new HashMap<String,Object>(); | ||
| 429 | + if(m_s.get(m_.get("j").toString())==null){ | ||
| 430 | + m_s.put(m_.get("s").toString(), m_.get("s")); | ||
| 431 | + m_s.put(m_.get("j").toString(), m_.get("j")); | ||
| 432 | + m_l.put("s", m_.get("s")); | ||
| 433 | + m_l.put("j", m_.get("j")); | ||
| 434 | + m_l.put("s_l",m_.get("s_list")); | ||
| 435 | + m_l.put("j_l",m_.get("j_list")); | ||
| 436 | + list_m_s.add(m_l); | ||
| 437 | + } | ||
| 438 | + } | ||
| 439 | + for (int i = 0; i < list_m_s.size(); i++) { | ||
| 440 | + Map<String, Object> m_l=list_m_s.get(i); | ||
| 441 | + Long s=Long.parseLong(m_l.get("s").toString()); | ||
| 442 | + boolean s_bool=false; | ||
| 443 | + for (int k = 0; k < listReal0.size(); k++) { | ||
| 444 | + ScheduleRealInfo s0=listReal0.get(k); | ||
| 445 | + if(s0.getId()-s==0){ | ||
| 446 | + listReal0.remove(s0); | ||
| 447 | + s_bool=true; | ||
| 448 | + } | ||
| 449 | + } | ||
| 450 | + | ||
| 451 | + Long j=Long.parseLong(m_l.get("j").toString()); | ||
| 452 | + boolean j_bool=false; | ||
| 453 | + for (int j2 = 0; j2 < listJhsj0.size(); j2++) { | ||
| 454 | + ScheduleRealInfo j0=listJhsj0.get(j2); | ||
| 455 | + if(j0.getId()-j==0){ | ||
| 456 | + listJhsj0.remove(j0); | ||
| 457 | + j_bool=true; | ||
| 458 | + } | ||
| 459 | + } | ||
| 460 | + | ||
| 461 | + if(s_bool&&j_bool){ | ||
| 462 | + ScheduleRealInfo sf=(ScheduleRealInfo)m_l.get("s_l"); | ||
| 463 | + ScheduleRealInfo jf=(ScheduleRealInfo)m_l.get("j_l"); | ||
| 464 | + Sheet sheet=new Sheet(); | ||
| 465 | + sheet.setDate(sf.getScheduleDateStr()); | ||
| 466 | + sheet.setRealDate(sf.getRealExecDate()); | ||
| 467 | + sheet.setJhsjt(jf.getFcsjT()); | ||
| 468 | + sheet.setJhsj(jf.getFcsj()); | ||
| 469 | + sheet.setSjsjt(sf.getFcsjActualTime()); | ||
| 470 | + sheet.setSjsj(sf.getFcsjActual()); | ||
| 471 | + sheet.setGs(sf.getGsBm()); | ||
| 472 | + sheet.setFgs(sf.getFgsBm()); | ||
| 473 | + sheet.setLine(sf.getXlBm()); | ||
| 474 | + sheet.setXlDir(sf.getXlDir()); | ||
| 475 | + sheet.setZdname(sf.getQdzName()); | ||
| 476 | + sheet.setCreateDate(new Date()); | ||
| 477 | + listAdd.add(sheet); | ||
| 478 | + } | ||
| 479 | + } | ||
| 480 | + | ||
| 481 | + if(listJhsj0.size()<=0){ | ||
| 482 | + fage=false; | ||
| 483 | + } | ||
| 484 | + no--; | ||
| 485 | + if(no<0){ | ||
| 486 | + fage=false; | ||
| 487 | + } | ||
| 488 | + } | ||
| 489 | + | ||
| 490 | + | ||
| 491 | + int nos=listJhsj1.size()*2; | ||
| 492 | + fage=true; | ||
| 493 | + while(fage){ | ||
| 494 | + //查询所有的实发 对应最接近的 计发 | ||
| 495 | + List<Map<String, Object>> list_map=new ArrayList<Map<String,Object>>(); | ||
| 496 | + for (int i = 0; i < listReal1.size(); i++) { | ||
| 497 | + Map<String, Object> m_=new HashMap<String,Object>(); | ||
| 498 | + ScheduleRealInfo s1=listReal1.get(i); | ||
| 499 | + Long sjsj=s1.getFcsjActualTime(); | ||
| 500 | + ScheduleRealInfo absInfo=new ScheduleRealInfo(); | ||
| 501 | + int next_j=listJhsj1.size(); | ||
| 502 | + for (int j = 0; j < listJhsj1.size(); j++) { | ||
| 503 | + ScheduleRealInfo s2=listJhsj1.get(j); | ||
| 504 | + if(j==0){ | ||
| 505 | + absInfo=s2; | ||
| 506 | + }else{ | ||
| 507 | + //计发实发时间绝对值比较 取到最接近的值 | ||
| 508 | + Long abs1 = Math.abs(sjsj - s2.getFcsjT()); | ||
| 509 | + Long abs2 = Math.abs(sjsj -absInfo.getFcsjT()); | ||
| 510 | + if(abs2-abs1>0){ | ||
| 511 | + absInfo=s2; | ||
| 512 | + next_j=j; | ||
| 513 | + } | ||
| 514 | + } | ||
| 515 | + } | ||
| 516 | + if(next_j<=0){ | ||
| 517 | + break; | ||
| 518 | + }else{ | ||
| 519 | + m_.put("s", s1.getId()); | ||
| 520 | + m_.put("j", absInfo.getId()); | ||
| 521 | + m_.put("s_list", s1); | ||
| 522 | + m_.put("j_list", absInfo); | ||
| 523 | + m_.put("abs", Math.abs(sjsj-absInfo.getFcsjT())); | ||
| 524 | + list_map.add(m_); | ||
| 525 | + } | ||
| 526 | + | ||
| 527 | + } | ||
| 528 | + Collections.sort(list_map,new ComparableMap()); | ||
| 529 | + Map<String, Object> m_s=new HashMap<String,Object>(); | ||
| 530 | + List<Map<String, Object>> list_m_s=new ArrayList<Map<String,Object>>(); | ||
| 531 | + | ||
| 532 | + for (int i = 0; i < list_map.size(); i++) { | ||
| 533 | + Map<String, Object> m_=list_map.get(i); | ||
| 534 | + Map<String, Object> m_l=new HashMap<String,Object>(); | ||
| 535 | + if(m_s.get(m_.get("j").toString())==null){ | ||
| 536 | + m_s.put(m_.get("s").toString(), m_.get("s")); | ||
| 537 | + m_s.put(m_.get("j").toString(), m_.get("j")); | ||
| 538 | + m_l.put("s", m_.get("s")); | ||
| 539 | + m_l.put("j", m_.get("j")); | ||
| 540 | + m_l.put("s_l",m_.get("s_list")); | ||
| 541 | + m_l.put("j_l",m_.get("j_list")); | ||
| 542 | + list_m_s.add(m_l); | ||
| 543 | + } | ||
| 544 | + } | ||
| 545 | + for (int i = 0; i < list_m_s.size(); i++) { | ||
| 546 | + Map<String, Object> m_l=list_m_s.get(i); | ||
| 547 | + Long s=Long.parseLong(m_l.get("s").toString()); | ||
| 548 | + boolean s_bool=false; | ||
| 549 | + for (int k = 0; k < listReal1.size(); k++) { | ||
| 550 | + ScheduleRealInfo s0=listReal1.get(k); | ||
| 551 | + if(s0.getId()-s==0){ | ||
| 552 | + listReal1.remove(s0); | ||
| 553 | + s_bool=true; | ||
| 554 | + } | ||
| 555 | + } | ||
| 556 | + | ||
| 557 | + Long j=Long.parseLong(m_l.get("j").toString()); | ||
| 558 | + boolean j_bool=false; | ||
| 559 | + for (int j2 = 0; j2 < listJhsj1.size(); j2++) { | ||
| 560 | + ScheduleRealInfo j0=listJhsj1.get(j2); | ||
| 561 | + if(j0.getId()-j==0){ | ||
| 562 | + listJhsj1.remove(j0); | ||
| 563 | + j_bool=true; | ||
| 564 | + } | ||
| 565 | + } | ||
| 566 | + | ||
| 567 | + if(s_bool&&j_bool){ | ||
| 568 | + ScheduleRealInfo sf=(ScheduleRealInfo)m_l.get("s_l"); | ||
| 569 | + ScheduleRealInfo jf=(ScheduleRealInfo)m_l.get("j_l"); | ||
| 570 | + Sheet sheet=new Sheet(); | ||
| 571 | + sheet.setDate(sf.getScheduleDateStr()); | ||
| 572 | + sheet.setRealDate(sf.getRealExecDate()); | ||
| 573 | + sheet.setJhsjt(jf.getFcsjT()); | ||
| 574 | + sheet.setJhsj(jf.getFcsj()); | ||
| 575 | + sheet.setSjsjt(sf.getFcsjActualTime()); | ||
| 576 | + sheet.setSjsj(sf.getFcsjActual()); | ||
| 577 | + sheet.setGs(sf.getGsBm()); | ||
| 578 | + sheet.setFgs(sf.getFgsBm()); | ||
| 579 | + sheet.setLine(sf.getXlBm()); | ||
| 580 | + sheet.setXlDir(sf.getXlDir()); | ||
| 581 | + sheet.setZdname(sf.getQdzName()); | ||
| 582 | + sheet.setCreateDate(new Date()); | ||
| 583 | + listAdd.add(sheet); | ||
| 584 | + } | ||
| 585 | + } | ||
| 586 | + | ||
| 587 | + if(listJhsj1.size()<=0){ | ||
| 588 | + fage=false; | ||
| 589 | + } | ||
| 590 | + nos--; | ||
| 591 | + if(nos<0){ | ||
| 592 | + fage=false; | ||
| 593 | + } | ||
| 594 | + } | ||
| 595 | + } | ||
| 596 | + return listAdd; | ||
| 597 | + } | ||
| 598 | + | ||
| 599 | + public ScheduleRealInfo checkBc(ScheduleRealInfo s){ | ||
| 600 | + //如果班次有子任务 且 子任务中有属于营运的。把该子任务的发车时间设置成班次的发车时间 | ||
| 601 | + Set<ChildTaskPlan> childTaskPlans = s.getcTasks(); | ||
| 602 | + if(!childTaskPlans.isEmpty()){ | ||
| 603 | + List<ChildTaskPlan> listit=new ArrayList<ChildTaskPlan>(childTaskPlans); | ||
| 604 | + Collections.sort(listit, new ComparableChild()); | ||
| 605 | + for (int i = 0; i < listit.size(); i++) { | ||
| 606 | + ChildTaskPlan c=listit.get(i); | ||
| 607 | + if(!c.isDestroy()){ | ||
| 608 | + if(c.getMileageType().equals("service")){ | ||
| 609 | + s.setFcsjActual(c.getStartDate()); | ||
| 610 | + break; | ||
| 611 | + } | ||
| 612 | + | ||
| 613 | + } | ||
| 614 | + } | ||
| 615 | + } | ||
| 616 | + return s; | ||
| 617 | + } | ||
| 618 | + | ||
| 619 | + public Long abs_js(List<ScheduleRealInfo> list,ScheduleRealInfo t){ | ||
| 620 | + Long jhsj=t.getFcsjT(); | ||
| 621 | + ScheduleRealInfo absInfo=new ScheduleRealInfo(); | ||
| 622 | + for (int j = 0; j < list.size(); j++) { | ||
| 623 | + ScheduleRealInfo s =list.get(j); | ||
| 624 | + if(j==0){ | ||
| 625 | + absInfo=s; | ||
| 626 | + }else{ | ||
| 627 | + //计发实发时间绝对值比较 取到最接近的值 | ||
| 628 | + Long abs1 = Math.abs(jhsj - s.getFcsjActualTime()); | ||
| 629 | + Long abs2 = Math.abs(absInfo.getFcsjActualTime()); | ||
| 630 | + if(abs2-abs1>0){ | ||
| 631 | + absInfo=s; | ||
| 632 | + } | ||
| 633 | + } | ||
| 634 | + } | ||
| 635 | + return absInfo.getId(); | ||
| 636 | + | ||
| 637 | + } | ||
| 638 | + | ||
| 639 | + @Override | ||
| 640 | + public List<Map<String, Object>> countList(Map<String, Object> map) { | ||
| 641 | + // TODO Auto-generated method stub | ||
| 642 | + List<Map<String, Object>> listmap=new ArrayList<Map<String,Object>>(); | ||
| 643 | + String line=""; | ||
| 644 | + if(map.get("line")!=null){ | ||
| 645 | + line =map.get("line").toString(); | ||
| 646 | + } | ||
| 647 | + String gs=""; | ||
| 648 | + if(map.get("gs")!=null){ | ||
| 649 | + gs=map.get("gs").toString(); | ||
| 650 | + } | ||
| 651 | + String fgs=""; | ||
| 652 | + if(map.get("fgs")!=null){ | ||
| 653 | + fgs=map.get("fgs").toString(); | ||
| 654 | + } | ||
| 655 | + String date=map.get("date").toString(); | ||
| 656 | + String sql="select * from bsth_c_sheet where date='"+date+"'"; | ||
| 657 | + if(line.trim().equals("")){ | ||
| 658 | + sql +=" and gs like '%"+gs+"%' and fgs like '%"+fgs+"%'"; | ||
| 659 | + }else{ | ||
| 660 | + sql +=" and line ='"+line+"'"; | ||
| 661 | + } | ||
| 662 | + sql +=" order by line "; | ||
| 663 | + List<Sheet> list=jdbcTemplate.query(sql, | ||
| 664 | + new RowMapper<Sheet>(){ | ||
| 665 | + @Override | ||
| 666 | + public Sheet mapRow(ResultSet rs, int rowNum) throws SQLException { | ||
| 667 | + Sheet s=new Sheet(); | ||
| 668 | + s.setGs(rs.getString("gs")); | ||
| 669 | + s.setFgs(rs.getString("fgs")); | ||
| 670 | + s.setLine(rs.getString("line")); | ||
| 671 | + s.setDate(rs.getString("date")); | ||
| 672 | + s.setJhsj(rs.getString("jhsj")); | ||
| 673 | + s.setJhsjt(rs.getLong("jhsjt")); | ||
| 674 | + s.setSjsj(rs.getString("sjsj")); | ||
| 675 | + s.setSjsjt(rs.getLong("sjsjt")); | ||
| 676 | + s.setId(rs.getInt("id")); | ||
| 677 | + return s; | ||
| 678 | + } | ||
| 679 | + }); | ||
| 680 | + | ||
| 681 | + String sqlByLine="select line from bsth_c_sheet where date='"+date+"'"; | ||
| 682 | + if(line.trim().equals("")){ | ||
| 683 | + sqlByLine +=" and gs like '%"+gs+"%' and fgs like '%"+fgs+"%'"; | ||
| 684 | + }else{ | ||
| 685 | + sqlByLine +=" and line ='"+line+"'"; | ||
| 686 | + } | ||
| 687 | + sqlByLine +=" group by line "; | ||
| 688 | + List<String> listLine=jdbcTemplate.query(sqlByLine, | ||
| 689 | + new RowMapper<String>(){ | ||
| 690 | + @Override | ||
| 691 | + public String mapRow(ResultSet rs, int rowNum) throws SQLException { | ||
| 692 | + String line=rs.getString("line"); | ||
| 693 | + return line; | ||
| 694 | + } | ||
| 695 | + }); | ||
| 696 | + for (int i = 0; i < listLine.size(); i++) { | ||
| 697 | + String xlbm=listLine.get(i); | ||
| 698 | + List<Sheet> newList=new ArrayList<Sheet>(); | ||
| 699 | + for (int j = 0; j < list.size(); j++) { | ||
| 700 | + if(xlbm.equals(list.get(j).getLine())){ | ||
| 701 | + newList.add(list.get(j)); | ||
| 702 | + } | ||
| 703 | + } | ||
| 704 | + | ||
| 705 | + if(newList.size()>0){ | ||
| 706 | + Map<String, Object> newmap=culateByLine(newList); | ||
| 707 | + listmap.add(newmap); | ||
| 708 | + } | ||
| 709 | + | ||
| 710 | + } | ||
| 711 | + return listmap; | ||
| 712 | + } | ||
| 713 | + | ||
| 714 | + public Map<String, Object> culateByLine(List<Sheet> list){ | ||
| 715 | + Map<String, Object> map=new HashMap<String,Object>(); | ||
| 716 | + String gs=BasicData.businessCodeNameMap.get(list.get(0).getGs()); | ||
| 717 | + String fgs=BasicData.businessFgsCodeNameMap.get(list.get(0).getFgs()+"_"+list.get(0).getGs()); | ||
| 718 | + String line=BasicData.lineCode2NameMap.get(list.get(0).getLine()); | ||
| 719 | + Integer id=list.get(0).getId(); | ||
| 720 | + int bcs=list.size(); | ||
| 721 | + int zdbcs=0; | ||
| 722 | + for (int i = 0; i < list.size(); i++) { | ||
| 723 | + Sheet s=list.get(i); | ||
| 724 | + Long sjc=s.getJhsjt()-s.getSjsjt(); | ||
| 725 | + if(sjc>= 3*60*1000*-1 && sjc <=1*60*1000){ | ||
| 726 | + zdbcs++; | ||
| 727 | + } | ||
| 728 | + } | ||
| 729 | + double zdlv =(zdbcs*1.0/bcs)*100; | ||
| 730 | + DecimalFormat df = new DecimalFormat("0.00"); | ||
| 731 | + map.put("gs", gs); | ||
| 732 | + map.put("fgs", fgs); | ||
| 733 | + map.put("line", line); | ||
| 734 | + map.put("bcs", bcs); | ||
| 735 | + map.put("zdbcs", zdbcs); | ||
| 736 | + map.put("zdlv", df.format(zdlv)+"%"); | ||
| 737 | + map.put("id", id); | ||
| 738 | + return map; | ||
| 739 | + } | ||
| 740 | + @Override | ||
| 741 | + public List<Sheet> sheetList(Integer id) { | ||
| 742 | + // TODO Auto-generated method stub | ||
| 743 | + Sheet sheet=sheetRepository.findOne(id); | ||
| 744 | + String sql="select * from bsth_c_sheet where date='"+sheet.getDate()+"' and line = '"+sheet.getLine()+"'" | ||
| 745 | + + " order by xl_dir,jhsj"; | ||
| 746 | + | ||
| 747 | + List<Sheet> list=jdbcTemplate.query(sql, | ||
| 748 | + new RowMapper<Sheet>(){ | ||
| 749 | + @Override | ||
| 750 | + public Sheet mapRow(ResultSet rs, int rowNum) throws SQLException { | ||
| 751 | + Sheet s=new Sheet(); | ||
| 752 | + s.setId(rs.getInt("id")); | ||
| 753 | + s.setGs(rs.getString("gs")); | ||
| 754 | + s.setFgs(rs.getString("fgs")); | ||
| 755 | + s.setLine(rs.getString("line")); | ||
| 756 | + s.setDate(rs.getString("date")); | ||
| 757 | + s.setJhsj(rs.getString("jhsj")); | ||
| 758 | + s.setJhsjt(rs.getLong("jhsjt")); | ||
| 759 | + s.setSjsj(rs.getString("sjsj")); | ||
| 760 | + s.setSjsjt(rs.getLong("sjsjt")); | ||
| 761 | + s.setZdname(rs.getString("zdname")); | ||
| 762 | + return s; | ||
| 763 | + } | ||
| 764 | + }); | ||
| 765 | + for (int i = 0; i < list.size(); i++) { | ||
| 766 | + Sheet t=list.get(i); | ||
| 767 | + t.setLine(BasicData.lineCode2NameMap.get(t.getLine())); | ||
| 768 | + Long sjc=t.getJhsjt()-t.getSjsjt(); | ||
| 769 | + if(sjc>= 3*60*1000*-1 && sjc <=1*60*1000){ | ||
| 770 | + t.setSfzd("Y"); | ||
| 771 | + }else{ | ||
| 772 | + t.setSfzd("N"); | ||
| 773 | + } | ||
| 774 | + } | ||
| 775 | + | ||
| 776 | + return list; | ||
| 777 | + } | ||
| 778 | + | ||
| 779 | + | ||
| 780 | +} | ||
| 781 | + class ComparableAcual implements Comparator<ScheduleRealInfo>{ | ||
| 782 | + | ||
| 783 | + @Override | ||
| 784 | + public int compare(ScheduleRealInfo o1, ScheduleRealInfo o2) { | ||
| 785 | + // TODO Auto-generated method stub | ||
| 786 | + return o1.getFcsjActualTime().compareTo(o2.getFcsjActualTime()); | ||
| 787 | + } | ||
| 788 | + | ||
| 789 | +} | ||
| 790 | + | ||
| 791 | + class ComparableMap implements Comparator<Map<String, Object>>{ | ||
| 792 | + @Override | ||
| 793 | + public int compare(Map<String, Object> o1, Map<String, Object> o2) { | ||
| 794 | + // TODO Auto-generated method stub | ||
| 795 | + return (int) (Long.parseLong(o1.get("abs").toString())-Long.parseLong((o2.get("abs").toString()))); | ||
| 796 | + } | ||
| 797 | + } |
src/main/java/com/bsth/service/schedule/EmployeeConfigInfoService.java
| @@ -9,5 +9,6 @@ import com.bsth.service.schedule.exception.ScheduleException; | @@ -9,5 +9,6 @@ import com.bsth.service.schedule.exception.ScheduleException; | ||
| 9 | public interface EmployeeConfigInfoService extends BService<EmployeeConfigInfo, Long> { | 9 | public interface EmployeeConfigInfoService extends BService<EmployeeConfigInfo, Long> { |
| 10 | void validate_jsy(EmployeeConfigInfo employeeConfigInfo) throws ScheduleException; | 10 | void validate_jsy(EmployeeConfigInfo employeeConfigInfo) throws ScheduleException; |
| 11 | void validate_spy(EmployeeConfigInfo employeeConfigInfo) throws ScheduleException; | 11 | void validate_spy(EmployeeConfigInfo employeeConfigInfo) throws ScheduleException; |
| 12 | - public void toggleCancel(Long id) throws ScheduleException; | 12 | + void toggleCancel(Long id) throws ScheduleException; |
| 13 | + Long getMaxDbbm(Integer xlId); | ||
| 13 | } | 14 | } |
src/main/java/com/bsth/service/schedule/GuideboardInfoService.java
| @@ -7,8 +7,10 @@ import com.bsth.service.schedule.exception.ScheduleException; | @@ -7,8 +7,10 @@ import com.bsth.service.schedule.exception.ScheduleException; | ||
| 7 | * Created by xu on 16/5/11. | 7 | * Created by xu on 16/5/11. |
| 8 | */ | 8 | */ |
| 9 | public interface GuideboardInfoService extends BService<GuideboardInfo, Long> { | 9 | public interface GuideboardInfoService extends BService<GuideboardInfo, Long> { |
| 10 | - public void validate_lpno(GuideboardInfo guideboardInfo) throws ScheduleException; | ||
| 11 | - public void validate_lpname(GuideboardInfo guideboardInfo) throws ScheduleException; | ||
| 12 | - public void toggleCancel(Long id) throws ScheduleException; | 10 | + void validate_lpno(GuideboardInfo guideboardInfo) throws ScheduleException; |
| 11 | + void validate_lpname(GuideboardInfo guideboardInfo) throws ScheduleException; | ||
| 12 | + void toggleCancel(Long id) throws ScheduleException; | ||
| 13 | + | ||
| 14 | + Long getMaxLpno(Integer xlid); | ||
| 13 | 15 | ||
| 14 | } | 16 | } |
src/main/java/com/bsth/service/schedule/impl/EmployeeConfigInfoServiceImpl.java
| @@ -8,11 +8,16 @@ import com.bsth.service.schedule.exception.ScheduleException; | @@ -8,11 +8,16 @@ import com.bsth.service.schedule.exception.ScheduleException; | ||
| 8 | import com.bsth.service.schedule.utils.DataToolsService; | 8 | import com.bsth.service.schedule.utils.DataToolsService; |
| 9 | import org.springframework.beans.factory.annotation.Autowired; | 9 | import org.springframework.beans.factory.annotation.Autowired; |
| 10 | import org.springframework.beans.factory.annotation.Qualifier; | 10 | import org.springframework.beans.factory.annotation.Qualifier; |
| 11 | +import org.springframework.dao.DataAccessException; | ||
| 12 | +import org.springframework.jdbc.core.JdbcTemplate; | ||
| 13 | +import org.springframework.jdbc.core.ResultSetExtractor; | ||
| 11 | import org.springframework.stereotype.Service; | 14 | import org.springframework.stereotype.Service; |
| 12 | import org.springframework.transaction.annotation.Transactional; | 15 | import org.springframework.transaction.annotation.Transactional; |
| 13 | import org.springframework.util.CollectionUtils; | 16 | import org.springframework.util.CollectionUtils; |
| 14 | 17 | ||
| 15 | import java.io.File; | 18 | import java.io.File; |
| 19 | +import java.sql.ResultSet; | ||
| 20 | +import java.sql.SQLException; | ||
| 16 | import java.util.*; | 21 | import java.util.*; |
| 17 | 22 | ||
| 18 | /** | 23 | /** |
| @@ -27,6 +32,9 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl<EmployeeConfigIn | @@ -27,6 +32,9 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl<EmployeeConfigIn | ||
| 27 | @Qualifier(value = "employeeConfig_dataTool") | 32 | @Qualifier(value = "employeeConfig_dataTool") |
| 28 | private DataToolsService dataToolsService; | 33 | private DataToolsService dataToolsService; |
| 29 | 34 | ||
| 35 | + @Autowired | ||
| 36 | + private JdbcTemplate jdbcTemplate; | ||
| 37 | + | ||
| 30 | @Override | 38 | @Override |
| 31 | public File uploadFile(String filename, byte[] filedata) throws ScheduleException { | 39 | public File uploadFile(String filename, byte[] filedata) throws ScheduleException { |
| 32 | return dataToolsService.uploadFile(filename, filedata); | 40 | return dataToolsService.uploadFile(filename, filedata); |
| @@ -42,6 +50,25 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl<EmployeeConfigIn | @@ -42,6 +50,25 @@ public class EmployeeConfigInfoServiceImpl extends BServiceImpl<EmployeeConfigIn | ||
| 42 | return dataToolsService.exportData(params); | 50 | return dataToolsService.exportData(params); |
| 43 | } | 51 | } |
| 44 | 52 | ||
| 53 | + @Override | ||
| 54 | + public Long getMaxDbbm(Integer xlId) { | ||
| 55 | + String sql = "select max(dbbm + 0) as maxdbbm from bsth_c_s_ecinfo where xl = ?"; | ||
| 56 | + | ||
| 57 | + Long maxBM = jdbcTemplate.query(sql, new ResultSetExtractor<Long>() { | ||
| 58 | + @Override | ||
| 59 | + public Long extractData(ResultSet rs) throws SQLException, DataAccessException { | ||
| 60 | + if (rs.next()) { | ||
| 61 | + return rs.getLong("maxdbbm"); | ||
| 62 | + } else { | ||
| 63 | + return 0L; | ||
| 64 | + } | ||
| 65 | + | ||
| 66 | + } | ||
| 67 | + }, xlId); | ||
| 68 | + | ||
| 69 | + return maxBM + 1; | ||
| 70 | + } | ||
| 71 | + | ||
| 45 | @Transactional | 72 | @Transactional |
| 46 | @Override | 73 | @Override |
| 47 | public void validate_jsy(EmployeeConfigInfo employeeConfigInfo) throws ScheduleException { | 74 | public void validate_jsy(EmployeeConfigInfo employeeConfigInfo) throws ScheduleException { |
src/main/java/com/bsth/service/schedule/impl/GuideboardInfoServiceImpl.java
| @@ -8,11 +8,16 @@ import com.bsth.service.schedule.exception.ScheduleException; | @@ -8,11 +8,16 @@ import com.bsth.service.schedule.exception.ScheduleException; | ||
| 8 | import com.bsth.service.schedule.utils.DataToolsService; | 8 | import com.bsth.service.schedule.utils.DataToolsService; |
| 9 | import org.springframework.beans.factory.annotation.Autowired; | 9 | import org.springframework.beans.factory.annotation.Autowired; |
| 10 | import org.springframework.beans.factory.annotation.Qualifier; | 10 | import org.springframework.beans.factory.annotation.Qualifier; |
| 11 | +import org.springframework.dao.DataAccessException; | ||
| 12 | +import org.springframework.jdbc.core.JdbcTemplate; | ||
| 13 | +import org.springframework.jdbc.core.ResultSetExtractor; | ||
| 11 | import org.springframework.stereotype.Service; | 14 | import org.springframework.stereotype.Service; |
| 12 | import org.springframework.util.CollectionUtils; | 15 | import org.springframework.util.CollectionUtils; |
| 13 | 16 | ||
| 14 | import javax.transaction.Transactional; | 17 | import javax.transaction.Transactional; |
| 15 | import java.io.File; | 18 | import java.io.File; |
| 19 | +import java.sql.ResultSet; | ||
| 20 | +import java.sql.SQLException; | ||
| 16 | import java.util.HashMap; | 21 | import java.util.HashMap; |
| 17 | import java.util.List; | 22 | import java.util.List; |
| 18 | import java.util.Map; | 23 | import java.util.Map; |
| @@ -29,6 +34,27 @@ public class GuideboardInfoServiceImpl extends BServiceImpl<GuideboardInfo, Long | @@ -29,6 +34,27 @@ public class GuideboardInfoServiceImpl extends BServiceImpl<GuideboardInfo, Long | ||
| 29 | @Autowired | 34 | @Autowired |
| 30 | private TTInfoDetailService ttInfoDetailService; | 35 | private TTInfoDetailService ttInfoDetailService; |
| 31 | 36 | ||
| 37 | + @Autowired | ||
| 38 | + private JdbcTemplate jdbcTemplate; | ||
| 39 | + | ||
| 40 | + @Override | ||
| 41 | + public Long getMaxLpno(Integer xlid) { | ||
| 42 | + String sql = "select max(lp_no) as maxno from bsth_c_s_gbi where xl = ?"; | ||
| 43 | + | ||
| 44 | + Long maxNo = jdbcTemplate.query(sql, new ResultSetExtractor<Long>() { | ||
| 45 | + @Override | ||
| 46 | + public Long extractData(ResultSet rs) throws SQLException, DataAccessException { | ||
| 47 | + if (rs.next()) { | ||
| 48 | + return rs.getLong("maxno"); | ||
| 49 | + } else { | ||
| 50 | + return 0L; | ||
| 51 | + } | ||
| 52 | + } | ||
| 53 | + }, xlid); | ||
| 54 | + | ||
| 55 | + return maxNo + 1; | ||
| 56 | + } | ||
| 57 | + | ||
| 32 | @Override | 58 | @Override |
| 33 | public void validate_lpno(GuideboardInfo guideboardInfo) throws ScheduleException { | 59 | public void validate_lpno(GuideboardInfo guideboardInfo) throws ScheduleException { |
| 34 | // 查询条件 | 60 | // 查询条件 |
src/main/java/com/bsth/service/schedule/impl/SchedulePlanServiceImpl.java
| @@ -249,6 +249,8 @@ public class SchedulePlanServiceImpl extends BServiceImpl<SchedulePlan, Long> im | @@ -249,6 +249,8 @@ public class SchedulePlanServiceImpl extends BServiceImpl<SchedulePlan, Long> im | ||
| 249 | end2.getTime() - start2.getTime(), | 249 | end2.getTime() - start2.getTime(), |
| 250 | end3.getTime() - start3.getTime()); | 250 | end3.getTime() - start3.getTime()); |
| 251 | 251 | ||
| 252 | + // TODO:将lpInfoResults_output 也要返回 | ||
| 253 | + | ||
| 252 | return planResult; | 254 | return planResult; |
| 253 | } | 255 | } |
| 254 | 256 |