Commit 278c7ef62cf3f24a8adc96130c6187cea34223d5

Authored by 王通
2 parents e7c4fc40 8be72ebe

Merge branch 'pudong' into jiading

# Conflicts:
#	src/main/java/com/bsth/XDApplication.java
#	src/main/java/com/bsth/data/schedule/thread/CalcOilThread.java
#	src/main/java/com/bsth/entity/Cars.java
#	src/main/java/com/bsth/service/impl/BusIntervalServiceImpl.java
#	src/main/java/com/bsth/service/oil/impl/YlbServiceImpl.java
#	src/main/java/com/bsth/service/report/impl/ReportServiceImpl.java
#	src/main/resources/application-prod.properties
#	src/main/resources/static/pages/scheduleApp/module/basicInfo/busInfoManage/edit.html
#	src/main/resources/static/pages/scheduleApp/module/basicInfo/busInfoManage/form.html
Showing 54 changed files with 3002 additions and 531 deletions

Too many changes to show.

To preserve performance only 54 of 545 files are displayed.

README.md
@@ -447,9 +447,5 @@ @@ -447,9 +447,5 @@
447 | direction | float | 角度0-359 | 447 | direction | float | 角度0-359 |
448 | inTemp | int | 车内温度 | 448 | inTemp | int | 车内温度 |
449 | serviceState | long | 设备状态字 | 449 | serviceState | long | 设备状态字 |
450 -<<<<<<< HEAD  
451 -| daysYear | int | 对应年中的天数 为分区字段 查询一定要用此字段过滤 |  
452 -=======  
453 | daysYear | int | 对应年中的天数 为分区字段 查询一定要用此字段过滤 | 450 | daysYear | int | 对应年中的天数 为分区字段 查询一定要用此字段过滤 |
454 451
455 ->>>>>>> af8ec3bedc8644f5813e9adab12a163e93cc7f50  
@@ -295,6 +295,13 @@ @@ -295,6 +295,13 @@
295 <artifactId>jpinyin</artifactId> 295 <artifactId>jpinyin</artifactId>
296 <version>1.1.8</version> 296 <version>1.1.8</version>
297 </dependency> 297 </dependency>
  298 +
  299 + <!-- plan common工程依赖 -->
  300 + <dependency>
  301 + <groupId>com.bsth.control_v2</groupId>
  302 + <artifactId>plan_module-common</artifactId>
  303 + <version>1.0-SNAPSHOT</version>
  304 + </dependency>
298 </dependencies> 305 </dependencies>
299 306
300 <dependencyManagement> 307 <dependencyManagement>
src/main/java/com/bsth/WebAppConfiguration.java
@@ -76,17 +76,4 @@ public class WebAppConfiguration extends WebMvcConfigurerAdapter implements WebS @@ -76,17 +76,4 @@ public class WebAppConfiguration extends WebMvcConfigurerAdapter implements WebS
76 registry.addHandler(new RealControlSocketHandler(), "/sockjs/realcontrol","/freeLogin/sockjs/realcontrol").addInterceptors(new WebSocketHandshakeInterceptor()) 76 registry.addHandler(new RealControlSocketHandler(), "/sockjs/realcontrol","/freeLogin/sockjs/realcontrol").addInterceptors(new WebSocketHandshakeInterceptor())
77 .withSockJS(); 77 .withSockJS();
78 } 78 }
79 -  
80 - /**  
81 - * 增加websocket的输出缓冲区  
82 - * @return  
83 - */  
84 - @Bean  
85 - public ServletServerContainerFactoryBean createServletServerContainerFactoryBean() {  
86 - ServletServerContainerFactoryBean container = new ServletServerContainerFactoryBean();  
87 - container.setMaxTextMessageBufferSize(52768);  
88 - container.setMaxBinaryMessageBufferSize(52768);  
89 - logger.info("Websocket factory returned");  
90 - return container;  
91 - }  
92 } 79 }
src/main/java/com/bsth/XDApplication.java
@@ -14,6 +14,7 @@ import com.bsth.data.msg_queue.WebSocketPushQueue; @@ -14,6 +14,7 @@ import com.bsth.data.msg_queue.WebSocketPushQueue;
14 import com.bsth.data.safe_driv.SafeDrivDataLoadThread; 14 import com.bsth.data.safe_driv.SafeDrivDataLoadThread;
15 import com.bsth.data.schedule.DayOfSchedule; 15 import com.bsth.data.schedule.DayOfSchedule;
16 import com.bsth.data.schedule.auto_exec.AutoExecScanThread; 16 import com.bsth.data.schedule.auto_exec.AutoExecScanThread;
  17 +import com.bsth.data.schedule.e_state_check.thread.FixedCheckStationCodeThread;
17 import com.bsth.data.schedule.edit_logs.SeiPstThread; 18 import com.bsth.data.schedule.edit_logs.SeiPstThread;
18 import com.bsth.data.schedule.late_adjust.ScheduleLateThread; 19 import com.bsth.data.schedule.late_adjust.ScheduleLateThread;
19 import com.bsth.data.schedule.signal.SchSiginUpdateDBThread; 20 import com.bsth.data.schedule.signal.SchSiginUpdateDBThread;
@@ -83,6 +84,9 @@ public class XDApplication implements CommandLineRunner { @@ -83,6 +84,9 @@ public class XDApplication implements CommandLineRunner {
83 @Autowired 84 @Autowired
84 SafeDrivDataLoadThread safeDrivDataLoadThread; 85 SafeDrivDataLoadThread safeDrivDataLoadThread;
85 86
  87 + @Autowired
  88 + FixedCheckStationCodeThread fixedCheckStationCodeThread;
  89 +
86 private static long timeDiff; 90 private static long timeDiff;
87 private static long timeDiffTraffic; 91 private static long timeDiffTraffic;
88 92
@@ -129,8 +133,11 @@ public class XDApplication implements CommandLineRunner { @@ -129,8 +133,11 @@ public class XDApplication implements CommandLineRunner {
129 //sexec.scheduleWithFixedDelay(gpsDataLoader, 60, 4, TimeUnit.SECONDS); 133 //sexec.scheduleWithFixedDelay(gpsDataLoader, 60, 4, TimeUnit.SECONDS);
130 //实际排班更新线程 134 //实际排班更新线程
131 //sexec.scheduleWithFixedDelay(scheduleRefreshThread, 15, 240, TimeUnit.SECONDS); 135 //sexec.scheduleWithFixedDelay(scheduleRefreshThread, 15, 240, TimeUnit.SECONDS);
  136 + //sexec.scheduleWithFixedDelay(scheduleLateThread, 140, 30, TimeUnit.SECONDS);//检查班次误点
132 //sexec.scheduleWithFixedDelay(autoExecScanThread, 100, 50, TimeUnit.SECONDS);//班次自动执行 137 //sexec.scheduleWithFixedDelay(autoExecScanThread, 100, 50, TimeUnit.SECONDS);//班次自动执行
133 //WebSocketPushQueue.start();//消息队列 -webSocket ,推送至线调web页面的 138 //WebSocketPushQueue.start();//消息队列 -webSocket ,推送至线调web页面的
  139 +
  140 + //sexec.scheduleWithFixedDelay(fixedCheckStationCodeThread, 50, 60 * 5, TimeUnit.SECONDS);//检查班次站点编码
134 //实际排班延迟入库线程 141 //实际排班延迟入库线程
135 //sexec.scheduleWithFixedDelay(schedulePstThread, 60, 15, TimeUnit.SECONDS); 142 //sexec.scheduleWithFixedDelay(schedulePstThread, 60, 15, TimeUnit.SECONDS);
136 //班次修正日志延迟入库 143 //班次修正日志延迟入库
@@ -154,9 +161,10 @@ public class XDApplication implements CommandLineRunner { @@ -154,9 +161,10 @@ public class XDApplication implements CommandLineRunner {
154 161
155 /** 线调业务 */ 162 /** 线调业务 */
156 sexec.scheduleWithFixedDelay(scheduleRefreshThread, 10, 120, TimeUnit.SECONDS);//班次更新线程 163 sexec.scheduleWithFixedDelay(scheduleRefreshThread, 10, 120, TimeUnit.SECONDS);//班次更新线程
157 - sexec.scheduleWithFixedDelay(scheduleLateThread, 140, 30, TimeUnit.SECONDS);//检查班次误点  
158 - gpsDataLoader.setFlag(-1);  
159 - sexec.scheduleWithFixedDelay(gpsDataLoader, 100, 3, TimeUnit.SECONDS);//抓取GPS数据 164 + sexec.scheduleWithFixedDelay(scheduleLateThread, 140, 20, TimeUnit.SECONDS);//检查班次误点
  165 + gpsDataLoader.setFlag(-1);
  166 + sexec.scheduleWithFixedDelay(gpsDataLoader, 100, 2, TimeUnit.SECONDS);//抓取GPS数据
  167 + sexec.scheduleWithFixedDelay(fixedCheckStationCodeThread, 60, 60 * 5, TimeUnit.SECONDS);//检查班次站点编码
160 168
161 sexec.scheduleWithFixedDelay(offlineMonitorThread, 120, 60, TimeUnit.SECONDS);//GPS设备掉离线 169 sexec.scheduleWithFixedDelay(offlineMonitorThread, 120, 60, TimeUnit.SECONDS);//GPS设备掉离线
162 sexec.scheduleWithFixedDelay(schedulePstThread, 180, 10, TimeUnit.SECONDS);//班次延迟入库线程 170 sexec.scheduleWithFixedDelay(schedulePstThread, 180, 10, TimeUnit.SECONDS);//班次延迟入库线程
@@ -164,7 +172,7 @@ public class XDApplication implements CommandLineRunner { @@ -164,7 +172,7 @@ public class XDApplication implements CommandLineRunner {
164 sexec.scheduleWithFixedDelay(directivesPstThread, 120, 60, TimeUnit.SECONDS);//调度指令延迟入库 172 sexec.scheduleWithFixedDelay(directivesPstThread, 120, 60, TimeUnit.SECONDS);//调度指令延迟入库
165 sexec.scheduleWithFixedDelay(threadMonotor, 240, 60, TimeUnit.SECONDS);//线程监听(防止重要的线程阻塞、异常结束。以及部分主备切换工作) 173 sexec.scheduleWithFixedDelay(threadMonotor, 240, 60, TimeUnit.SECONDS);//线程监听(防止重要的线程阻塞、异常结束。以及部分主备切换工作)
166 sexec.scheduleWithFixedDelay(sampleTimeDataLoader, 140, 120 * 60, TimeUnit.SECONDS);//到离站预测需要的站点间耗时数据 174 sexec.scheduleWithFixedDelay(sampleTimeDataLoader, 140, 120 * 60, TimeUnit.SECONDS);//到离站预测需要的站点间耗时数据
167 - sexec.scheduleWithFixedDelay(basicDataLoader, 2, 2, TimeUnit.HOURS);//基础数据更新 175 + sexec.scheduleWithFixedDelay(basicDataLoader, 1, 1, TimeUnit.HOURS);//基础数据更新
168 sexec.scheduleWithFixedDelay(autoExecScanThread, 180, 50, TimeUnit.SECONDS);//班次自动执行 176 sexec.scheduleWithFixedDelay(autoExecScanThread, 180, 50, TimeUnit.SECONDS);//班次自动执行
169 DirectivePushQueue.start();//消息队列 -指令,系统下发的 177 DirectivePushQueue.start();//消息队列 -指令,系统下发的
170 WebSocketPushQueue.start();//消息队列 -webSocket ,推送至线调web页面的 178 WebSocketPushQueue.start();//消息队列 -webSocket ,推送至线调web页面的
src/main/java/com/bsth/controller/LineVersionsController.java
1 package com.bsth.controller; 1 package com.bsth.controller;
2 2
3 -import java.util.List;  
4 -import java.util.Map;  
5 - 3 +import com.bsth.entity.LineVersions;
  4 +import com.bsth.repository.LineRepository;
  5 +import com.bsth.service.LineVersionsService;
6 import org.springframework.beans.factory.annotation.Autowired; 6 import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.web.bind.annotation.RequestMapping; 7 import org.springframework.web.bind.annotation.RequestMapping;
8 import org.springframework.web.bind.annotation.RequestMethod; 8 import org.springframework.web.bind.annotation.RequestMethod;
9 import org.springframework.web.bind.annotation.RequestParam; 9 import org.springframework.web.bind.annotation.RequestParam;
10 import org.springframework.web.bind.annotation.RestController; 10 import org.springframework.web.bind.annotation.RestController;
11 11
12 -import com.bsth.entity.LineVersions;  
13 -import com.bsth.repository.LineRepository;  
14 -import com.bsth.service.LineVersionsService; 12 +import java.util.List;
  13 +import java.util.Map;
15 14
16 /** 15 /**
17 * 16 *
@@ -75,7 +74,11 @@ public class LineVersionsController extends BaseController&lt;LineVersions, Integer @@ -75,7 +74,11 @@ public class LineVersionsController extends BaseController&lt;LineVersions, Integer
75 public Map<String, Object> add(@RequestParam Map<String, Object> map) { 74 public Map<String, Object> add(@RequestParam Map<String, Object> map) {
76 return service.add(map); 75 return service.add(map);
77 } 76 }
78 - 77 + @RequestMapping(value = "delete", method = RequestMethod.POST)
  78 + public Map<String, Object> delete(@RequestParam (defaultValue = "id") int id) {
  79 + return service.delete(id);
  80 + }
  81 +
79 /** 82 /**
80 * 根据线路id获取当前版本号 83 * 根据线路id获取当前版本号
81 * 84 *
src/main/java/com/bsth/controller/SectionController.java
@@ -142,7 +142,7 @@ public class SectionController extends BaseController&lt;Section, Integer&gt; { @@ -142,7 +142,7 @@ public class SectionController extends BaseController&lt;Section, Integer&gt; {
142 * 142 *
143 * @return int <sectionCode路段编码> 143 * @return int <sectionCode路段编码>
144 */ 144 */
145 - @RequestMapping(value="doubleName" , method = RequestMethod.GET) 145 + @RequestMapping(value="doubleName" , method = RequestMethod.POST)
146 public Map<String, Object> doubleName(@RequestParam Map<String, Object> map) { 146 public Map<String, Object> doubleName(@RequestParam Map<String, Object> map) {
147 return service.doubleName(map); 147 return service.doubleName(map);
148 } 148 }
src/main/java/com/bsth/controller/StationController.java
1 package com.bsth.controller; 1 package com.bsth.controller;
2 2
3 -import java.util.Map;  
4 - 3 +import com.bsth.entity.Station;
  4 +import com.bsth.service.StationService;
  5 +import com.bsth.util.GetUIDAndCode;
  6 +import org.slf4j.Logger;
  7 +import org.slf4j.LoggerFactory;
5 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.beans.factory.annotation.Autowired;
6 import org.springframework.web.bind.annotation.RequestMapping; 9 import org.springframework.web.bind.annotation.RequestMapping;
7 import org.springframework.web.bind.annotation.RequestMethod; 10 import org.springframework.web.bind.annotation.RequestMethod;
8 import org.springframework.web.bind.annotation.RequestParam; 11 import org.springframework.web.bind.annotation.RequestParam;
9 import org.springframework.web.bind.annotation.RestController; 12 import org.springframework.web.bind.annotation.RestController;
10 13
11 -import com.bsth.entity.Station;  
12 -import com.bsth.service.StationService;  
13 -import com.bsth.util.GetUIDAndCode; 14 +import java.util.Map;
14 15
15 /** 16 /**
16 * 17 *
@@ -34,6 +35,9 @@ public class StationController extends BaseController&lt;Station, Integer&gt; { @@ -34,6 +35,9 @@ public class StationController extends BaseController&lt;Station, Integer&gt; {
34 35
35 @Autowired 36 @Autowired
36 private StationService service; 37 private StationService service;
  38 +
  39 + /** 日志记录器 */
  40 + private static final Logger LOGGER = LoggerFactory.getLogger(StationController.class);
37 41
38 /** 42 /**
39 * @Description :TODO(根据坐标点匹配数据库中的站点) 43 * @Description :TODO(根据坐标点匹配数据库中的站点)
@@ -153,10 +157,13 @@ public class StationController extends BaseController&lt;Station, Integer&gt; { @@ -153,10 +157,13 @@ public class StationController extends BaseController&lt;Station, Integer&gt; {
153 */ 157 */
154 @RequestMapping(value="updateStationAndSectionCode" , method = RequestMethod.GET) 158 @RequestMapping(value="updateStationAndSectionCode" , method = RequestMethod.GET)
155 public int updateStationAndSectionCode(@RequestParam Integer stationCount, Integer sectionCount) { 159 public int updateStationAndSectionCode(@RequestParam Integer stationCount, Integer sectionCount) {
  160 + System.out.println(stationCount+" _ "+ sectionCount );
156 for(int i = 0; i < stationCount; i++) { 161 for(int i = 0; i < stationCount; i++) {
  162 + System.out.println(i);
157 GetUIDAndCode.getStationId(); 163 GetUIDAndCode.getStationId();
158 } 164 }
159 - for(int i = 0; i < sectionCount; i++) { 165 + for(int j = 0; j < sectionCount; j++) {
  166 + System.out.println(j);
160 GetUIDAndCode.getSectionId(); 167 GetUIDAndCode.getSectionId();
161 } 168 }
162 return 1; 169 return 1;
src/main/java/com/bsth/controller/StationRouteController.java
1 package com.bsth.controller; 1 package com.bsth.controller;
2 2
3 -import com.bsth.entity.Station;  
4 import com.bsth.entity.StationRoute; 3 import com.bsth.entity.StationRoute;
5 import com.bsth.entity.StationRouteCache; 4 import com.bsth.entity.StationRouteCache;
6 import com.bsth.repository.StationRouteCacheRepository; 5 import com.bsth.repository.StationRouteCacheRepository;
@@ -12,11 +11,10 @@ import org.springframework.web.bind.annotation.RequestMethod; @@ -12,11 +11,10 @@ import org.springframework.web.bind.annotation.RequestMethod;
12 import org.springframework.web.bind.annotation.RequestParam; 11 import org.springframework.web.bind.annotation.RequestParam;
13 import org.springframework.web.bind.annotation.RestController; 12 import org.springframework.web.bind.annotation.RestController;
14 13
  14 +import javax.servlet.http.HttpServletResponse;
15 import java.util.List; 15 import java.util.List;
16 import java.util.Map; 16 import java.util.Map;
17 17
18 -import javax.servlet.http.HttpServletResponse;  
19 -  
20 /** 18 /**
21 * 19 *
22 * @ClassName: StationRouteController(站点路由控制器) 20 * @ClassName: StationRouteController(站点路由控制器)
@@ -72,11 +70,11 @@ public class StationRouteController extends BaseController&lt;StationRoute, Integer @@ -72,11 +70,11 @@ public class StationRouteController extends BaseController&lt;StationRoute, Integer
72 } 70 }
73 71
74 /** 72 /**
75 - * @param String 73 + * @param map
76 * @throws 74 * @throws
77 * @Description: TODO(批量撤销站点) 75 * @Description: TODO(批量撤销站点)
78 */ 76 */
79 - @RequestMapping(value = "/batchDestroy", method = RequestMethod.GET) 77 + @RequestMapping(value = "/batchDestroy", method = RequestMethod.POST)
80 public Map<String, Object> updateBatch(@RequestParam Map<String, Object> map) { 78 public Map<String, Object> updateBatch(@RequestParam Map<String, Object> map) {
81 return service.updateStationRouteInfoFormId(map); 79 return service.updateStationRouteInfoFormId(map);
82 } 80 }
src/main/java/com/bsth/controller/calc/CalcExportController.java 0 → 100644
  1 +package com.bsth.controller.calc;
  2 +
  3 +import java.text.SimpleDateFormat;
  4 +import java.util.ArrayList;
  5 +import java.util.HashMap;
  6 +import java.util.Iterator;
  7 +import java.util.List;
  8 +import java.util.Map;
  9 +
  10 +import org.springframework.beans.factory.annotation.Autowired;
  11 +import org.springframework.web.bind.annotation.RequestMapping;
  12 +import org.springframework.web.bind.annotation.RequestMethod;
  13 +import org.springframework.web.bind.annotation.RequestParam;
  14 +import org.springframework.web.bind.annotation.RestController;
  15 +
  16 +import com.bsth.common.ResponseCode;
  17 +import com.bsth.entity.calc.CalcWaybill;
  18 +import com.bsth.entity.mcy_forms.Waybillday;
  19 +import com.bsth.service.calc.CalcLbStatuAnalyService;
  20 +import com.bsth.service.calc.CalcMixService;
  21 +import com.bsth.service.calc.CalcWaybillService;
  22 +import com.bsth.util.ReportUtils;
  23 +
  24 +@RestController
  25 +@RequestMapping("calc_export")
  26 +public class CalcExportController {
  27 +
  28 + @Autowired
  29 + CalcWaybillService service;
  30 +
  31 + @Autowired
  32 + CalcLbStatuAnalyService lbService;
  33 +
  34 + @Autowired
  35 + CalcMixService clacMixService;
  36 +
  37 + @RequestMapping(value = "/waybilldayExport", method = RequestMethod.GET)
  38 + public Map<String, Object> calcjsyspyExport(@RequestParam Map<String, Object> map) {
  39 +
  40 + String line="";
  41 + if(map.get("line")!=null){
  42 + line=map.get("line").toString().trim();
  43 + }
  44 + String lineName="";
  45 + if(map.get("lineName")!=null){
  46 + lineName=map.get("lineName").toString().trim();
  47 + }
  48 + String startDate="";
  49 + if(map.get("startDate")!=null){
  50 + startDate=map.get("startDate").toString().trim();
  51 + }
  52 + String endDate="";
  53 + if(map.get("endDate")!=null){
  54 + endDate=map.get("endDate").toString().trim();
  55 + }
  56 + String cont="";
  57 + if(map.get("cont")!=null){
  58 + cont=map.get("cont").toString().trim();
  59 + }
  60 + String empnames="";
  61 + if(map.get("empnames")!=null){
  62 + empnames=map.get("empnames").toString().trim();
  63 + }
  64 + String gsdmManth="";
  65 + if(map.get("gsdmManth")!=null){
  66 + gsdmManth=map.get("gsdmManth").toString().trim();
  67 + }
  68 + String fgsdmManth="";
  69 + if(map.get("fgsdmManth")!=null){
  70 + fgsdmManth=map.get("fgsdmManth").toString().trim();
  71 + }
  72 +
  73 + Map<String, Object> resMap = new HashMap<String, Object>();
  74 + List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>();
  75 + List<Map<String, Object>> list = clacMixService.calcjsyspy(line, startDate, endDate, empnames, cont, gsdmManth, fgsdmManth);
  76 +
  77 + Map<String, Object> temp = new HashMap<String, Object>();
  78 + temp.put("i", "序号");
  79 + temp.put("jName", empnames);
  80 + temp.put("jhyybc", "计划营运班次");
  81 + temp.put("jhfyybc", "计划空驶班次");
  82 + temp.put("sjyybc", "实际营运班次");
  83 + temp.put("sjfyybc", "实际空驶班次");
  84 + temp.put("lbbc", "烂班班次");
  85 + temp.put("ljbc", "临加班次");
  86 + temp.put("jhzlc", "计划总里程");
  87 + temp.put("jhyylc", "计划营运里程");
  88 + temp.put("jhfyylc", "计划空驶里程");
  89 + temp.put("sjzlc", "实际总里程");
  90 + temp.put("sjyylc", "实际营运里程");
  91 + temp.put("sjfyylc", "实际空驶里程");
  92 + temp.put("lblc", "烂班里程");
  93 + temp.put("ljyylc", "临加营运里程");
  94 + temp.put("ljfyylc", "临加空驶里程");
  95 + resList.add(temp);
  96 + for(int i = 0; i < list.size(); i++){
  97 + temp = list.get(i);
  98 + temp.put("i", i+1);
  99 + resList.add(temp);
  100 + }
  101 +
  102 + String date = startDate.replaceAll("-", "");
  103 + if(!startDate.equals(endDate)){
  104 + date = startDate.replaceAll("-", "") + "-" + endDate.replaceAll("-", "");
  105 + }
  106 +
  107 + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
  108 + sdfSimple = new SimpleDateFormat("yyyyMMdd");
  109 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  110 + Map<String,Object> mm = new HashMap<String, Object>();
  111 + ReportUtils ee = new ReportUtils();
  112 +
  113 + try {
  114 + listI.add(resList.iterator());
  115 + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
  116 + ee.excelReplace(listI, new Object[] { mm }, path+"mould/calcjsyspy.xls",
  117 + path+"export/"+date+"-"+lineName+"-人车班次公里统计.xls");
  118 + resMap.put("status", ResponseCode.SUCCESS);
  119 + } catch (Exception e) {
  120 + e.printStackTrace();
  121 + resMap.put("status", ResponseCode.ERROR);
  122 + }
  123 + return resMap;
  124 + }
  125 +
  126 + @RequestMapping(value = "/singledataExportTj", method = RequestMethod.GET)
  127 + public Map<String, Object> singledataExportTj(@RequestParam Map<String, Object> map) {
  128 +
  129 + String line="";
  130 + if(map.get("line")!=null){
  131 + line=map.get("line").toString().trim();
  132 + }
  133 + String lineName="";
  134 + if(map.get("lineName")!=null){
  135 + lineName=map.get("lineName").toString().trim();
  136 + }
  137 + String startDate="";
  138 + if(map.get("startDate")!=null){
  139 + startDate=map.get("startDate").toString().trim();
  140 + }
  141 + String endDate="";
  142 + if(map.get("endDate")!=null){
  143 + endDate=map.get("endDate").toString().trim();
  144 + }
  145 + String tjtype="";
  146 + if(map.get("tjtype")!=null){
  147 + tjtype=map.get("tjtype").toString().trim();
  148 + }
  149 + String cont="";
  150 + if(map.get("cont")!=null){
  151 + cont=map.get("cont").toString().trim();
  152 + }
  153 + String gsdmSing="";
  154 + if(map.get("gsdmSing")!=null){
  155 + gsdmSing=map.get("gsdmSing").toString().trim();
  156 + }
  157 + String fgsdmSing="";
  158 + if(map.get("fgsdmSing")!=null){
  159 + fgsdmSing=map.get("fgsdmSing").toString().trim();
  160 + }
  161 +
  162 + Map<String, Object> resMap = new HashMap<String, Object>();
  163 + List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>();
  164 + List<Map<String, Object>> list = clacMixService.singledatatj(line, startDate, endDate, tjtype, cont, gsdmSing, fgsdmSing);
  165 +
  166 + Map<String, Object> temp = new HashMap<String, Object>();
  167 + temp.put("i", "序号");
  168 + temp.put("gS", "所属公司");
  169 + temp.put("xlName", "线路");
  170 + temp.put("jName", tjtype);
  171 + temp.put("jhzlc", "计划公里");
  172 + temp.put("sjzlc", "行驶里程(包括空放)");
  173 + temp.put("sjfyylc", "空驶里程");
  174 + temp.put("hyl", "耗油量");
  175 + temp.put("jzl", "加注量");
  176 + temp.put("sh", "非营业用油");
  177 +
  178 + resList.add(temp);
  179 + for(int i = 0; i < list.size(); i++){
  180 + temp = list.get(i);
  181 + temp.put("i", i+1);
  182 + if(temp.get("xlName") == null){
  183 + temp.put("xlName", "");
  184 + }
  185 + resList.add(temp);
  186 + }
  187 +
  188 + String date = startDate.replaceAll("-", "");
  189 + if(!startDate.equals(endDate)){
  190 + date = startDate.replaceAll("-", "") + "-" + endDate.replaceAll("-", "");
  191 + }
  192 +
  193 + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
  194 + sdfSimple = new SimpleDateFormat("yyyyMMdd");
  195 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  196 + Map<String,Object> mm = new HashMap<String, Object>();
  197 + ReportUtils ee = new ReportUtils();
  198 +
  199 + try {
  200 + listI.add(resList.iterator());
  201 + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
  202 + ee.excelReplace(listI, new Object[] { mm }, path+"mould/calcsingledata.xls",
  203 + path+"export/"+date+"-"+lineName+"-路单数据(统计).xls");
  204 + resMap.put("status", ResponseCode.SUCCESS);
  205 + } catch (Exception e) {
  206 + e.printStackTrace();
  207 + resMap.put("status", ResponseCode.ERROR);
  208 + }
  209 + return resMap;
  210 + }
  211 +
  212 + @RequestMapping(value = "/lbStatuAnalyExport", method = RequestMethod.GET)
  213 + public Map<String, Object> lbStatuAnalyExport(@RequestParam Map<String, Object> map) {
  214 +
  215 + String gsdm="";
  216 + if(map.get("company")!=null){
  217 + gsdm=map.get("company").toString().trim();
  218 + }
  219 + String fgsdm="";
  220 + if(map.get("subCompany")!=null){
  221 + fgsdm=map.get("subCompany").toString().trim();
  222 + }
  223 + String line="";
  224 + if(map.get("line")!=null){
  225 + line=map.get("line").toString().trim();
  226 + }
  227 + String lineName="";
  228 + if(map.get("lineName")!=null){
  229 + lineName=map.get("lineName").toString().trim();
  230 + }
  231 + String date="";
  232 + if(map.get("startDate")!=null){
  233 + date=map.get("startDate").toString().trim();
  234 + }
  235 + String date2="";
  236 + if(map.get("endDate")!=null){
  237 + date2=map.get("endDate").toString().trim();
  238 + }
  239 + String sfyy="";
  240 + if(map.get("sfyy")!=null){
  241 + sfyy=map.get("sfyy").toString().trim();
  242 + }
  243 + String type="";
  244 + if(map.get("type")!=null){
  245 + type=map.get("type").toString().trim();
  246 + }
  247 +
  248 + Map<String, Object> resMap = new HashMap<String, Object>();
  249 + List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>();
  250 + List<Map<String, Object>> list = lbService.lbStatuAnaly(gsdm, fgsdm, line, date, date2, sfyy, type);
  251 +
  252 + for(int i = 0; i < list.size(); i++){
  253 + Map<String, Object> temp = list.get(i);
  254 + temp.put("i", i+1);
  255 + if(!temp.containsKey("date") || temp.get("date") == null){
  256 + temp.put("date", "");
  257 + }
  258 + if(!temp.containsKey("company") || temp.get("company") == null){
  259 + temp.put("company", "");
  260 + }
  261 + if(!temp.containsKey("subCompany") || temp.get("subCompany") == null){
  262 + temp.put("subCompany", "");
  263 + }
  264 + resList.add(temp);
  265 + }
  266 +
  267 + String Data = date.replaceAll("-", "");
  268 + if(!date.equals(date2)){
  269 + Data = date.replaceAll("-", "") + "-" + date2.replaceAll("-", "");
  270 + }
  271 +
  272 + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
  273 + sdfSimple = new SimpleDateFormat("yyyyMMdd");
  274 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  275 + Map<String,Object> mm = new HashMap<String, Object>();
  276 + ReportUtils ee = new ReportUtils();
  277 +
  278 + try {
  279 + listI.add(resList.iterator());
  280 + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
  281 + ee.excelReplace(listI, new Object[] { mm }, path+"mould/calcLbStatuAnaly.xls",
  282 + path+"export/"+Data+"-"+lineName+"-烂班情况分析表(统计).xls");
  283 + resMap.put("status", ResponseCode.SUCCESS);
  284 + } catch (Exception e) {
  285 + e.printStackTrace();
  286 + resMap.put("status", ResponseCode.ERROR);
  287 + }
  288 + return resMap;
  289 + }
  290 +
  291 +}
src/main/java/com/bsth/controller/calc/CalcLbStatuAnalyController.java 0 → 100644
  1 +package com.bsth.controller.calc;
  2 +
  3 +import java.util.List;
  4 +import java.util.Map;
  5 +
  6 +import com.bsth.controller.BaseController;
  7 +import com.bsth.entity.calc.CalcLbStatuAnaly;
  8 +import com.bsth.service.calc.CalcLbStatuAnalyService;
  9 +import org.springframework.beans.factory.annotation.Autowired;
  10 +import org.springframework.web.bind.annotation.RequestMapping;
  11 +import org.springframework.web.bind.annotation.RequestParam;
  12 +import org.springframework.web.bind.annotation.RestController;
  13 +
  14 +/**
  15 + * Created by 19/03/18.
  16 + */
  17 +@RestController
  18 +@RequestMapping("calcLbStatuAnaly")
  19 +public class CalcLbStatuAnalyController extends BaseController<CalcLbStatuAnaly, Integer> {
  20 +
  21 + @Autowired
  22 + private CalcLbStatuAnalyService service;
  23 +
  24 +
  25 + @RequestMapping(value="/lbStatuAnaly")
  26 + public List<Map<String,Object>> lbStatuAnaly(@RequestParam Map<String, Object> map){
  27 + String gsdm="";
  28 + if(map.get("company")!=null){
  29 + gsdm=map.get("company").toString().trim();
  30 + }
  31 + String fgsdm="";
  32 + if(map.get("subCompany")!=null){
  33 + fgsdm=map.get("subCompany").toString().trim();
  34 + }
  35 + String line="";
  36 + if(map.get("line")!=null){
  37 + line=map.get("line").toString().trim();
  38 + }
  39 + String date="";
  40 + if(map.get("startDate")!=null){
  41 + date=map.get("startDate").toString().trim();
  42 + }
  43 + String date2="";
  44 + if(map.get("endDate")!=null){
  45 + date2=map.get("endDate").toString().trim();
  46 + }
  47 + String sfyy="";
  48 + if(map.get("sfyy")!=null){
  49 + sfyy=map.get("sfyy").toString().trim();
  50 + }
  51 + String type="";
  52 + if(map.get("type")!=null){
  53 + type=map.get("type").toString().trim();
  54 + }
  55 + return service.lbStatuAnaly(gsdm,fgsdm,line,date,date2,sfyy,type);
  56 + }
  57 +
  58 +}
src/main/java/com/bsth/controller/calc/CalcMixController.java 0 → 100644
  1 +package com.bsth.controller.calc;
  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.service.calc.CalcMixService;
  13 +
  14 +@RestController
  15 +@RequestMapping("calc_mix")
  16 +public class CalcMixController {
  17 +
  18 + @Autowired
  19 + CalcMixService service;
  20 +
  21 + @RequestMapping(value="/calcjsyspy")
  22 + public List<Map<String, Object>> calcjsyspy(@RequestParam Map<String, Object> map){
  23 + String line="";
  24 + if(map.get("line")!=null){
  25 + line=map.get("line").toString().trim();
  26 + }
  27 + String startDate="";
  28 + if(map.get("startDate")!=null){
  29 + startDate=map.get("startDate").toString().trim();
  30 + }
  31 + String endDate="";
  32 + if(map.get("endDate")!=null){
  33 + endDate=map.get("endDate").toString().trim();
  34 + }
  35 + String empnames="";
  36 + if(map.get("empnames")!=null){
  37 + empnames=map.get("empnames").toString().trim();
  38 + }
  39 + String cont="";
  40 + if(map.get("cont")!=null){
  41 + cont=map.get("cont").toString().trim();
  42 + }
  43 + String gsdmManth="";
  44 + if(map.get("gsdmManth")!=null){
  45 + gsdmManth=map.get("gsdmManth").toString().trim();
  46 + }
  47 + String fgsdmManth="";
  48 + if(map.get("fgsdmManth")!=null){
  49 + fgsdmManth=map.get("fgsdmManth").toString().trim();
  50 + }
  51 + return service.calcjsyspy(line, startDate, endDate, empnames, cont, gsdmManth, fgsdmManth);
  52 + }
  53 +
  54 + @RequestMapping(value = "/singledatatj", method = RequestMethod.GET)
  55 + public List<Map<String, Object>> singledatatj(@RequestParam Map<String, Object> map) {
  56 + String line="";
  57 + if(map.get("line")!=null){
  58 + line=map.get("line").toString().trim();
  59 + }
  60 + String startDate="";
  61 + if(map.get("startDate")!=null){
  62 + startDate=map.get("startDate").toString().trim();
  63 + }
  64 + String endDate="";
  65 + if(map.get("endDate")!=null){
  66 + endDate=map.get("endDate").toString().trim();
  67 + }
  68 + String tjtype="";
  69 + if(map.get("tjtype")!=null){
  70 + tjtype=map.get("tjtype").toString().trim();
  71 + }
  72 + String cont="";
  73 + if(map.get("cont")!=null){
  74 + cont=map.get("cont").toString().trim();
  75 + }
  76 + String gsdmSing="";
  77 + if(map.get("gsdmSing")!=null){
  78 + gsdmSing=map.get("gsdmSing").toString().trim();
  79 + }
  80 + String fgsdmSing="";
  81 + if(map.get("fgsdmSing")!=null){
  82 + fgsdmSing=map.get("fgsdmSing").toString().trim();
  83 + }
  84 + return service.singledatatj(line, startDate, endDate, tjtype, cont, gsdmSing, fgsdmSing);
  85 + }
  86 +
  87 +}
src/main/java/com/bsth/controller/calc/CalcWaybillController.java
1 package com.bsth.controller.calc; 1 package com.bsth.controller.calc;
2 2
3 -import java.util.HashMap;  
4 -import java.util.List;  
5 -import java.util.Map;  
6 -  
7 import com.bsth.common.ResponseCode; 3 import com.bsth.common.ResponseCode;
8 import com.bsth.controller.BaseController; 4 import com.bsth.controller.BaseController;
  5 +import com.bsth.entity.calc.CalcStatistics;
9 import com.bsth.entity.calc.CalcWaybill; 6 import com.bsth.entity.calc.CalcWaybill;
10 import com.bsth.service.calc.CalcWaybillService; 7 import com.bsth.service.calc.CalcWaybillService;
11 -  
12 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.beans.factory.annotation.Autowired;
13 import org.springframework.web.bind.annotation.RequestMapping; 9 import org.springframework.web.bind.annotation.RequestMapping;
14 import org.springframework.web.bind.annotation.RequestParam; 10 import org.springframework.web.bind.annotation.RequestParam;
15 import org.springframework.web.bind.annotation.RestController; 11 import org.springframework.web.bind.annotation.RestController;
16 12
  13 +import java.util.HashMap;
  14 +import java.util.List;
  15 +import java.util.Map;
  16 +
17 /** 17 /**
18 * Created by 17/10/23. 18 * Created by 17/10/23.
19 */ 19 */
@@ -26,26 +26,35 @@ public class CalcWaybillController extends BaseController&lt;CalcWaybill, Integer&gt; @@ -26,26 +26,35 @@ public class CalcWaybillController extends BaseController&lt;CalcWaybill, Integer&gt;
26 26
27 @RequestMapping(value="/generateNew") 27 @RequestMapping(value="/generateNew")
28 public Map<String, Object> generateNews(@RequestParam Map<String, Object> map) throws Exception{ 28 public Map<String, Object> generateNews(@RequestParam Map<String, Object> map) throws Exception{
29 - String date = "", line = ""; 29 + String date = "", line = "", key="";
30 if(map.get("date")!=null){ 30 if(map.get("date")!=null){
31 date=map.get("date").toString().trim(); 31 date=map.get("date").toString().trim();
32 } 32 }
33 if(map.get("line")!=null){ 33 if(map.get("line")!=null){
34 line=map.get("line").toString().trim(); 34 line=map.get("line").toString().trim();
35 } 35 }
  36 + if(map.get("key")!=null){
  37 + key=map.get("key").toString().trim();
  38 + }
36 39
37 Map<String, Object> m = new HashMap<String, Object>(); 40 Map<String, Object> m = new HashMap<String, Object>();
  41 + m.put("date", date);
  42 + m.put("line", line);
  43 + m.put("key", key);
38 try { 44 try {
39 45
40 m = calcWaybillService.generateNew(date, line); 46 m = calcWaybillService.generateNew(date, line);
41 47
  48 + if(key.length() == 0){
  49 + m.put("status", calcWaybillService.calcDaily(date, line));
  50 + }
  51 +
42 } catch (Exception e) { 52 } catch (Exception e) {
43 // TODO: handle exception 53 // TODO: handle exception
44 e.printStackTrace(); 54 e.printStackTrace();
45 m.put("status", ResponseCode.ERROR); 55 m.put("status", ResponseCode.ERROR);
46 return m; 56 return m;
47 } 57 }
48 -  
49 return m; 58 return m;
50 } 59 }
51 60
@@ -82,4 +91,230 @@ public class CalcWaybillController extends BaseController&lt;CalcWaybill, Integer&gt; @@ -82,4 +91,230 @@ public class CalcWaybillController extends BaseController&lt;CalcWaybill, Integer&gt;
82 return calcWaybillService.statisticsDailyTj(gsdm,fgsdm,line,date,date2,xlName,type); 91 return calcWaybillService.statisticsDailyTj(gsdm,fgsdm,line,date,date2,xlName,type);
83 } 92 }
84 93
  94 + @RequestMapping(value="/generateDaliy")
  95 + public Map<String, Object> generateDaliy(@RequestParam Map<String, Object> map) throws Exception{
  96 + String date = "", line = "";
  97 + if(map.containsKey("date") && map.get("date")!=null){
  98 + date=map.get("date").toString().trim();
  99 + }
  100 + if(map.containsKey("line") && map.get("line")!=null){
  101 + line=map.get("line").toString().trim();
  102 + }
  103 +
  104 + Map<String, Object> m = new HashMap<String, Object>();
  105 + m.put("date", date);
  106 + m.put("line", line);
  107 + try {
  108 +
  109 + m.put("status", calcWaybillService.calcDaily(date, line));
  110 +
  111 + } catch (Exception e) {
  112 + // TODO: handle exception
  113 + e.printStackTrace();
  114 + m.put("status", ResponseCode.ERROR);
  115 + return m;
  116 + }
  117 + return m;
  118 + }
  119 +
  120 + @RequestMapping(value="/calcStatisticsDaily")
  121 + public List<CalcStatistics> calcStatisticsDaily(@RequestParam Map<String, Object> map){
  122 + String gsdm="";
  123 + if(map.get("gsdm")!=null){
  124 + gsdm=map.get("gsdm").toString().trim();
  125 + }
  126 + String fgsdm="";
  127 + if(map.get("fgsdm")!=null){
  128 + fgsdm=map.get("fgsdm").toString().trim();
  129 + }
  130 + String line="";
  131 + if(map.get("line")!=null){
  132 + line=map.get("line").toString().trim();
  133 + }
  134 + String date="";
  135 + if(map.get("date")!=null){
  136 + date=map.get("date").toString().trim();
  137 + }
  138 + String date2="";
  139 + if(map.get("date2")!=null){
  140 + date2=map.get("date2").toString().trim();
  141 + }
  142 + String xlName="";
  143 + if(map.get("xlName")!=null){
  144 + xlName=map.get("xlName").toString().trim();
  145 + }
  146 + String type="";
  147 + if(map.get("type")!=null){
  148 + type=map.get("type").toString().trim();
  149 + }
  150 + String nature="0";
  151 + if(map.get("nature")!=null){
  152 + nature=map.get("nature").toString();
  153 + }
  154 + return calcWaybillService.calcStatisticsDaily(gsdm,fgsdm,line,date,date2,xlName,type,nature);
  155 + }
  156 +
  157 + @RequestMapping(value="/calcStatisticsDaily2")
  158 + public List<Map<String, Object>> calcStatisticsDaily2(@RequestParam Map<String, Object> map){
  159 + String gsdm="";
  160 + if(map.get("gsdm")!=null){
  161 + gsdm=map.get("gsdm").toString().trim();
  162 + }
  163 + String fgsdm="";
  164 + if(map.get("fgsdm")!=null){
  165 + fgsdm=map.get("fgsdm").toString().trim();
  166 + }
  167 + String line="";
  168 + if(map.get("line")!=null){
  169 + line=map.get("line").toString().trim();
  170 + }
  171 + String date="";
  172 + if(map.get("date")!=null){
  173 + date=map.get("date").toString().trim();
  174 + }
  175 + String date2="";
  176 + if(map.get("date2")!=null){
  177 + date2=map.get("date2").toString().trim();
  178 + }
  179 + String xlName="";
  180 + if(map.get("xlName")!=null){
  181 + xlName=map.get("xlName").toString().trim();
  182 + }
  183 + String type="";
  184 + if(map.get("type")!=null){
  185 + type=map.get("type").toString().trim();
  186 + }
  187 + String nature="0";
  188 + if(map.get("nature")!=null){
  189 + nature=map.get("nature").toString();
  190 + }
  191 + return calcWaybillService.calcStatisticsDaily2(gsdm,fgsdm,line,date,date2,xlName,type,nature);
  192 + }
  193 +
  194 + @RequestMapping(value="/generateLineMileage")
  195 + public Map<String, Object> generateLineMileage(@RequestParam Map<String, Object> map) throws Exception{
  196 + Map<String, Object> m = new HashMap<String, Object>();
  197 + String date = "", line = "";
  198 + try {
  199 +
  200 + if(map.containsKey("date") && map.get("date")!=null){
  201 + date=map.get("date").toString().trim();
  202 + }
  203 + if(map.containsKey("line") && map.get("line")!=null){
  204 + line=map.get("line").toString().trim();
  205 + }
  206 +
  207 +
  208 + return calcWaybillService.calcLineMileage(date, line);
  209 +
  210 + } catch (Exception e) {
  211 + // TODO: handle exception
  212 + e.printStackTrace();
  213 + m.put("status", ResponseCode.ERROR);
  214 + m.put("date", date);
  215 + m.put("line", line);
  216 + return m;
  217 + }
  218 + }
  219 +
  220 + @RequestMapping(value="/generateBusMileage")
  221 + public Map<String, Object> generateBusMileage(@RequestParam Map<String, Object> map) throws Exception{
  222 + Map<String, Object> m = new HashMap<String, Object>();
  223 + String date = "", line = "";
  224 + try {
  225 +
  226 + if(map.containsKey("date") && map.get("date")!=null){
  227 + date=map.get("date").toString().trim();
  228 + }
  229 + if(map.containsKey("line") && map.get("line")!=null){
  230 + line=map.get("line").toString().trim();
  231 + }
  232 +
  233 +
  234 + return calcWaybillService.calcBusMileage(date, line);
  235 +
  236 + } catch (Exception e) {
  237 + // TODO: handle exception
  238 + e.printStackTrace();
  239 + m.put("status", ResponseCode.ERROR);
  240 + m.put("date", date);
  241 + m.put("line", line);
  242 + return m;
  243 + }
  244 + }
  245 +
  246 + @RequestMapping(value="/getLineMileage")
  247 + public List<Map<String, Object>> getLineMileage(@RequestParam Map<String, Object> map){
  248 + String gsdm="";
  249 + if(map.get("gsdm")!=null){
  250 + gsdm=map.get("gsdm").toString().trim();
  251 + }
  252 + String fgsdm="";
  253 + if(map.get("fgsdm")!=null){
  254 + fgsdm=map.get("fgsdm").toString().trim();
  255 + }
  256 + String line="";
  257 + if(map.get("line")!=null){
  258 + line=map.get("line").toString().trim();
  259 + }
  260 + String date="";
  261 + if(map.get("date")!=null){
  262 + date=map.get("date").toString().trim();
  263 + }
  264 + String date2="";
  265 + if(map.get("date2")!=null){
  266 + date2=map.get("date2").toString().trim();
  267 + }
  268 + String xlName="";
  269 + if(map.get("xlName")!=null){
  270 + xlName=map.get("xlName").toString().trim();
  271 + }
  272 + String zt="";
  273 + if(map.get("zt")!=null){
  274 + zt=map.get("zt").toString();
  275 + }
  276 + String by="";
  277 + if(map.get("by")!=null){
  278 + by=map.get("by").toString();
  279 + }
  280 + String type="";
  281 + if(map.get("type")!=null){
  282 + type=map.get("type").toString().trim();
  283 + }
  284 + return calcWaybillService.getLineMileage(gsdm, fgsdm, line, date, date2, xlName, zt, by, type);
  285 + }
  286 +
  287 + @RequestMapping(value="/getBusMileage")
  288 + public List<Map<String, Object>> getBusMileage(@RequestParam Map<String, Object> map){
  289 + String line="";
  290 + if(map.get("line")!=null){
  291 + line=map.get("line").toString().trim();
  292 + }
  293 + String date="";
  294 + if(map.get("date")!=null){
  295 + date=map.get("date").toString().trim();
  296 + }
  297 + String date2="";
  298 + if(map.get("date2")!=null){
  299 + date2=map.get("date2").toString().trim();
  300 + }
  301 + String xlName="";
  302 + if(map.get("xlName")!=null){
  303 + xlName=map.get("xlName").toString().trim();
  304 + }
  305 + String zt="";
  306 + if(map.get("zt")!=null){
  307 + zt=map.get("zt").toString();
  308 + }
  309 + String by="";
  310 + if(map.get("by")!=null){
  311 + by=map.get("by").toString();
  312 + }
  313 + String type="";
  314 + if(map.get("type")!=null){
  315 + type=map.get("type").toString().trim();
  316 + }
  317 + return calcWaybillService.getBusMileage(line, date, date2, xlName, zt, by, type);
  318 + }
  319 +
85 } 320 }
src/main/java/com/bsth/controller/forms/ExportController.java
@@ -46,7 +46,8 @@ public class ExportController { @@ -46,7 +46,8 @@ public class ExportController {
46 @RequestMapping(value = "/waybilldayExport", method = RequestMethod.POST) 46 @RequestMapping(value = "/waybilldayExport", method = RequestMethod.POST)
47 public List<Waybillday> waybilldayExport(@RequestParam Map<String, Object> map) { 47 public List<Waybillday> waybilldayExport(@RequestParam Map<String, Object> map) {
48 List<Waybillday> waybillday = formsService.waybillday(map); 48 List<Waybillday> waybillday = formsService.waybillday(map);
49 - exportService.waybillday(map.get("date").toString(), waybillday); 49 + exportService.waybillday(map.get("date").toString(),
  50 + map.get("lineName").toString(), waybillday);
50 return waybillday; 51 return waybillday;
51 } 52 }
52 53
@@ -85,7 +86,8 @@ public class ExportController { @@ -85,7 +86,8 @@ public class ExportController {
85 // 班次车辆人员日统计 86 // 班次车辆人员日统计
86 @RequestMapping(value = "/shifdayExport", method = RequestMethod.GET) 87 @RequestMapping(value = "/shifdayExport", method = RequestMethod.GET)
87 public List<Map<String, Object>> shifdayExport(@RequestParam Map<String, Object> map) { 88 public List<Map<String, Object>> shifdayExport(@RequestParam Map<String, Object> map) {
88 - SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), sdfSimple = new SimpleDateFormat("yyyyMMdd"); 89 + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
  90 + sdfSimple = new SimpleDateFormat("yyyyMMdd");
89 List<Iterator<?>> listI = new ArrayList<Iterator<?>>(); 91 List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
90 Map<String, Object> map2 = new HashMap<String, Object>(); 92 Map<String, Object> map2 = new HashMap<String, Object>();
91 ReportUtils ee = new ReportUtils(); 93 ReportUtils ee = new ReportUtils();
@@ -117,10 +119,14 @@ public class ExportController { @@ -117,10 +119,14 @@ public class ExportController {
117 } 119 }
118 120
119 try { 121 try {
  122 + String lineName = "";
  123 + if(map.containsKey("lineName"))
  124 + lineName = map.get("lineName").toString();
120 listI.add(resList.iterator()); 125 listI.add(resList.iterator());
121 String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; 126 String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
122 ee.excelReplace(listI, new Object[] { map2 }, path + "mould/shifday.xls", 127 ee.excelReplace(listI, new Object[] { map2 }, path + "mould/shifday.xls",
123 - path + "export/班次车辆人员日报表" + sdfSimple.format(sdfMonth.parse(map.get("date").toString())) + ".xls"); 128 + path + "export/" + sdfSimple.format(sdfMonth.parse(map.get("date").toString()))
  129 + + "-" + lineName + "-班次车辆人员日报表.xls");
124 } catch (Exception e) { 130 } catch (Exception e) {
125 e.printStackTrace(); 131 e.printStackTrace();
126 } 132 }
@@ -130,7 +136,8 @@ public class ExportController { @@ -130,7 +136,8 @@ public class ExportController {
130 // 班次车辆人员月统计 136 // 班次车辆人员月统计
131 @RequestMapping(value = "/shiftuehiclemanthExport", method = RequestMethod.GET) 137 @RequestMapping(value = "/shiftuehiclemanthExport", method = RequestMethod.GET)
132 public List<Map<String, Object>> shiftuehiclemanthExport(@RequestParam Map<String, Object> map) { 138 public List<Map<String, Object>> shiftuehiclemanthExport(@RequestParam Map<String, Object> map) {
133 - SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), sdfSimple = new SimpleDateFormat("yyyyMMdd"); 139 + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
  140 + sdfSimple = new SimpleDateFormat("yyyyMMdd");
134 List<Iterator<?>> listI = new ArrayList<Iterator<?>>(); 141 List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
135 ReportUtils ee = new ReportUtils(); 142 ReportUtils ee = new ReportUtils();
136 List<Shiftuehiclemanth> shiftuehiclemanth = formsService.shiftuehiclemanth(map); 143 List<Shiftuehiclemanth> shiftuehiclemanth = formsService.shiftuehiclemanth(map);
@@ -153,7 +160,20 @@ public class ExportController { @@ -153,7 +160,20 @@ public class ExportController {
153 } 160 }
154 161
155 try { 162 try {
156 - String mouldurl = null; 163 + String mouldurl = null, lineName = "", dateTime = ""
  164 + , startDate = "", endDate = "";
  165 + if(map.containsKey("lineName"))
  166 + lineName = map.get("lineName").toString();
  167 + if(map.containsKey("startDate"))
  168 + startDate = map.get("startDate").toString();
  169 + if(map.containsKey("endDate"))
  170 + endDate = map.get("endDate").toString();
  171 + if(startDate.equals(endDate)){
  172 + dateTime = sdfSimple.format(sdfMonth.parse(startDate));
  173 + } else {
  174 + dateTime = sdfSimple.format(sdfMonth.parse(startDate))
  175 + +"-"+sdfSimple.format(sdfMonth.parse(endDate));
  176 + }
157 if(map.get("empnames").equals("驾驶员")){ 177 if(map.get("empnames").equals("驾驶员")){
158 mouldurl="mould/shiftuehiclemanth.xls"; 178 mouldurl="mould/shiftuehiclemanth.xls";
159 }else if(map.get("empnames").equals("售票员")){ 179 }else if(map.get("empnames").equals("售票员")){
@@ -164,7 +184,7 @@ public class ExportController { @@ -164,7 +184,7 @@ public class ExportController {
164 listI.add(resList.iterator()); 184 listI.add(resList.iterator());
165 String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; 185 String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
166 ee.excelReplace(listI, new Object[] { map }, path +mouldurl, 186 ee.excelReplace(listI, new Object[] { map }, path +mouldurl,
167 - path + "export/班次车辆人员月报表" + sdfSimple.format(sdfMonth.parse(map.get("startDate").toString())) + ".xls"); 187 + path + "export/" + dateTime + "-" + lineName + "-班次车辆人员月报表.xls");
168 } catch (Exception e) { 188 } catch (Exception e) {
169 e.printStackTrace(); 189 e.printStackTrace();
170 } 190 }
@@ -304,7 +324,8 @@ public class ExportController { @@ -304,7 +324,8 @@ public class ExportController {
304 } 324 }
305 @RequestMapping(value = "/singledataExportTj", method = RequestMethod.GET) 325 @RequestMapping(value = "/singledataExportTj", method = RequestMethod.GET)
306 public List<Map<String, Object>> singledataExportTj(@RequestParam Map<String, Object> map) { 326 public List<Map<String, Object>> singledataExportTj(@RequestParam Map<String, Object> map) {
307 - SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), sdfSimple = new SimpleDateFormat("yyyyMMdd"); 327 + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
  328 + sdfSimple = new SimpleDateFormat("yyyyMMdd");
308 List<Iterator<?>> listI = new ArrayList<Iterator<?>>(); 329 List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
309 ReportUtils ee = new ReportUtils(); 330 ReportUtils ee = new ReportUtils();
310 List<Singledata> singledata = formsService.singledatatj(map); 331 List<Singledata> singledata = formsService.singledatatj(map);
@@ -333,10 +354,16 @@ public class ExportController { @@ -333,10 +354,16 @@ public class ExportController {
333 } 354 }
334 355
335 try { 356 try {
  357 + String startDate = "", lineName = "";
  358 + if(map.containsKey("startDate"))
  359 + startDate = map.get("startDate").toString();
  360 + if(map.containsKey("lineName"))
  361 + lineName = map.get("lineName").toString();
336 listI.add(resList.iterator()); 362 listI.add(resList.iterator());
337 String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; 363 String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
338 ee.excelReplace(listI, new Object[] { map }, path + "mould/singledata.xls", 364 ee.excelReplace(listI, new Object[] { map }, path + "mould/singledata.xls",
339 - path + "export/路单数据" + sdfSimple.format(sdfMonth.parse(map.get("startDate").toString())) + ".xls"); 365 + path + "export/" + sdfSimple.format(sdfMonth.parse(startDate))
  366 + + "-" + lineName + "-路单数据.xls");
340 } catch (Exception e) { 367 } catch (Exception e) {
341 e.printStackTrace(); 368 e.printStackTrace();
342 } 369 }
@@ -388,7 +415,8 @@ public class ExportController { @@ -388,7 +415,8 @@ public class ExportController {
388 // 车辆加注 415 // 车辆加注
389 @RequestMapping(value = "/vehicleloadingExport", method = RequestMethod.GET) 416 @RequestMapping(value = "/vehicleloadingExport", method = RequestMethod.GET)
390 public List<Map<String, Object>> vehicleloadingExport(@RequestParam Map<String, Object> map) { 417 public List<Map<String, Object>> vehicleloadingExport(@RequestParam Map<String, Object> map) {
391 - SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), sdfSimple = new SimpleDateFormat("yyyyMMdd"); 418 + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
  419 + sdfSimple = new SimpleDateFormat("yyyyMMdd");
392 List<Iterator<?>> listI = new ArrayList<Iterator<?>>(); 420 List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
393 ReportUtils ee = new ReportUtils(); 421 ReportUtils ee = new ReportUtils();
394 List<Vehicleloading> vehicleloading = formsService.vehicleloading(map.get("line").toString(), 422 List<Vehicleloading> vehicleloading = formsService.vehicleloading(map.get("line").toString(),
@@ -414,10 +442,15 @@ public class ExportController { @@ -414,10 +442,15 @@ public class ExportController {
414 } 442 }
415 443
416 try { 444 try {
  445 + String date = "", lineName = "";
  446 + if(map.containsKey("data"))
  447 + date = map.get("data").toString();
  448 + if(map.containsKey("lineName"))
  449 + lineName = map.get("lineName").toString();
417 listI.add(resList.iterator()); 450 listI.add(resList.iterator());
418 String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; 451 String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
419 ee.excelReplace(listI, new Object[] { map }, path + "mould/vehicleloading.xls", 452 ee.excelReplace(listI, new Object[] { map }, path + "mould/vehicleloading.xls",
420 - path + "export/车辆加注" + sdfSimple.format(sdfMonth.parse(map.get("data").toString())) + ".xls"); 453 + path + "export/" + sdfSimple.format(sdfMonth.parse(date)) + "-" + lineName + "-车辆加注.xls");
421 } catch (Exception e) { 454 } catch (Exception e) {
422 e.printStackTrace(); 455 e.printStackTrace();
423 } 456 }
@@ -436,21 +469,35 @@ public class ExportController { @@ -436,21 +469,35 @@ public class ExportController {
436 for (Operationservice l : operationservice) { 469 for (Operationservice l : operationservice) {
437 Map<String, Object> m = new HashMap<String, Object>(); 470 Map<String, Object> m = new HashMap<String, Object>();
438 m.put("i", i); 471 m.put("i", i);
439 - m.put("xlName", l.getXlName());  
440 - m.put("jzl", l.getJzl());  
441 - m.put("xhl", l.getXhl());  
442 - m.put("xsgl", l.getXsgl());  
443 - m.put("emptMileage", l.getEmptMileage());  
444 - m.put("sjbc", l.getSjbc()); 472 + m.put("fgs", l.getFgs()!=null?l.getFgs():"");
  473 + m.put("xlName", l.getXlName()!=null?l.getXlName():"");
  474 + m.put("jzl", l.getJzl()!=null?l.getJzl():"");
  475 + m.put("xhl", l.getXhl()!=null?l.getXhl():"");
  476 + m.put("xsgl", l.getXsgl()!=null?l.getXsgl():"");
  477 + m.put("emptMileage", l.getEmptMileage()!=null?l.getEmptMileage():"");
  478 + m.put("sjbc", l.getSjbc()!=null?l.getSjbc():"");
445 resList.add(m); 479 resList.add(m);
446 i++; 480 i++;
447 } 481 }
448 482
449 try { 483 try {
  484 + String dateTime = "", startDate = "", endDate = "", lineName = "";
  485 + if(map.containsKey("startDate"))
  486 + startDate = map.get("startDate").toString();
  487 + if(map.containsKey("endDate"))
  488 + endDate = map.get("endDate").toString();
  489 + if(map.containsKey("lineName"))
  490 + lineName = map.get("lineName").toString();
  491 + if(startDate.equals(endDate)){
  492 + dateTime = sdfSimple.format(sdfMonth.parse(startDate));
  493 + } else {
  494 + dateTime = sdfSimple.format(sdfMonth.parse(startDate))
  495 + +"-"+sdfSimple.format(sdfMonth.parse(endDate));
  496 + }
450 listI.add(resList.iterator()); 497 listI.add(resList.iterator());
451 String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; 498 String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
452 - ee.excelReplace(listI, new Object[] { map }, path + "mould/operationservice.xls", path + "export/运营服务阶段报表"  
453 - + sdfSimple.format(sdfMonth.parse(map.get("startDate").toString())) + ".xls"); 499 + ee.excelReplace(listI, new Object[] { map }, path + "mould/operationservice.xls", path + "export/"
  500 + + dateTime + "-" + lineName + "-运营服务阶段报表.xls");
454 } catch (Exception e) { 501 } catch (Exception e) {
455 e.printStackTrace(); 502 e.printStackTrace();
456 } 503 }
@@ -460,7 +507,8 @@ public class ExportController { @@ -460,7 +507,8 @@ public class ExportController {
460 // 换人换车情况日统计 507 // 换人换车情况日统计
461 @RequestMapping(value = "/changetochangeExport", method = RequestMethod.POST) 508 @RequestMapping(value = "/changetochangeExport", method = RequestMethod.POST)
462 public List<Map<String, Object>> changetochangeExport(@RequestParam Map<String, Object> map) { 509 public List<Map<String, Object>> changetochangeExport(@RequestParam Map<String, Object> map) {
463 - SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), sdfSimple = new SimpleDateFormat("yyyyMMdd"); 510 + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
  511 + sdfSimple = new SimpleDateFormat("yyyyMMdd");
464 List<Iterator<?>> listI = new ArrayList<Iterator<?>>(); 512 List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
465 ReportUtils ee = new ReportUtils(); 513 ReportUtils ee = new ReportUtils();
466 List<Changetochange> changetochange = formsService.changetochange(map); 514 List<Changetochange> changetochange = formsService.changetochange(map);
@@ -484,10 +532,23 @@ public class ExportController { @@ -484,10 +532,23 @@ public class ExportController {
484 } 532 }
485 533
486 try { 534 try {
  535 + String dateTime = "", startDate = "", endDate = "", lineName = "";
  536 + if(map.containsKey("startDate"))
  537 + startDate = map.get("startDate").toString();
  538 + if(map.containsKey("endDate"))
  539 + endDate = map.get("endDate").toString();
  540 + if(map.containsKey("lineName"))
  541 + lineName = map.get("lineName").toString();
  542 + if(startDate.equals(endDate)){
  543 + dateTime = sdfSimple.format(sdfMonth.parse(startDate));
  544 + } else {
  545 + dateTime = sdfSimple.format(sdfMonth.parse(startDate))
  546 + +"-"+sdfSimple.format(sdfMonth.parse(endDate));
  547 + }
487 listI.add(resList.iterator()); 548 listI.add(resList.iterator());
488 String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; 549 String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
489 - ee.excelReplace(listI, new Object[] { map }, path + "mould/changetochange.xls", path + "export/换人换车情况日统计"  
490 - + sdfSimple.format(sdfMonth.parse(map.get("startDate").toString())) + ".xls"); 550 + ee.excelReplace(listI, new Object[] { map }, path + "mould/changetochange.xls", path + "export/"
  551 + + dateTime + "-" + lineName + "-换人换车情况日统计.xls");
491 } catch (Exception e) { 552 } catch (Exception e) {
492 e.printStackTrace(); 553 e.printStackTrace();
493 } 554 }
@@ -497,7 +558,8 @@ public class ExportController { @@ -497,7 +558,8 @@ public class ExportController {
497 // 营运线路出车率统计表 558 // 营运线路出车率统计表
498 @RequestMapping(value = "/turnoutrateExport", method = RequestMethod.POST) 559 @RequestMapping(value = "/turnoutrateExport", method = RequestMethod.POST)
499 public List<Map<String, Object>> turnoutrateExport(@RequestParam Map<String, Object> map) { 560 public List<Map<String, Object>> turnoutrateExport(@RequestParam Map<String, Object> map) {
500 - SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), sdfSimple = new SimpleDateFormat("yyyyMMdd"); 561 + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
  562 + sdfSimple = new SimpleDateFormat("yyyyMMdd");
501 List<Iterator<?>> listI = new ArrayList<Iterator<?>>(); 563 List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
502 ReportUtils ee = new ReportUtils(); 564 ReportUtils ee = new ReportUtils();
503 Map<String, Object> map1 = new HashMap<String, Object>(); 565 Map<String, Object> map1 = new HashMap<String, Object>();
@@ -517,10 +579,23 @@ public class ExportController { @@ -517,10 +579,23 @@ public class ExportController {
517 resList.remove(m); 579 resList.remove(m);
518 580
519 try { 581 try {
  582 + String dateTime = "", startDate = "", endDate = "", lineName = "";
  583 + if(map.containsKey("startDate"))
  584 + startDate = map.get("startDate").toString();
  585 + if(map.containsKey("endDate"))
  586 + endDate = map.get("endDate").toString();
  587 + if(map.containsKey("lineName"))
  588 + lineName = map.get("lineName").toString();
  589 + if(startDate.equals(endDate)){
  590 + dateTime = sdfSimple.format(sdfMonth.parse(startDate));
  591 + } else {
  592 + dateTime = sdfSimple.format(sdfMonth.parse(startDate))
  593 + +"-"+sdfSimple.format(sdfMonth.parse(endDate));
  594 + }
520 listI.add(resList.iterator()); 595 listI.add(resList.iterator());
521 String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; 596 String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
522 - ee.excelReplace(listI, new Object[] { map1 }, path + "mould/turnoutrate.xls", path + "export/营运线路出车率统计表"  
523 - + sdfSimple.format(sdfMonth.parse(map.get("startDate").toString())) + ".xls"); 597 + ee.excelReplace(listI, new Object[] { map1 }, path + "mould/turnoutrate.xls", path + "export/"
  598 + + dateTime + "-" + lineName + "-营运线路出车率统计表.xls");
524 } catch (Exception e) { 599 } catch (Exception e) {
525 e.printStackTrace(); 600 e.printStackTrace();
526 } 601 }
@@ -713,10 +788,13 @@ public class ExportController { @@ -713,10 +788,13 @@ public class ExportController {
713 m.put("line", BasicData.lineCode2NameMap.get(map.get("line").toString())); 788 m.put("line", BasicData.lineCode2NameMap.get(map.get("line").toString()));
714 m.put("date", map.get("date").toString()); 789 m.put("date", map.get("date").toString());
715 try { 790 try {
  791 + String lineName = map.get("lineName").toString();
  792 + String date = map.get("date").toString();
716 listI.add(resList.iterator()); 793 listI.add(resList.iterator());
717 String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; 794 String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
718 - ee.excelReplace(listI, new Object[] { m }, path + "mould/daily.xls", path + "export/班次日报表"  
719 - + sdfSimple.format(sdfMonth.parse(map.get("date").toString())) + ".xls"); 795 + ee.excelReplace(listI, new Object[] { m }, path + "mould/daily.xls",
  796 + path + "export/" + sdfSimple.format(sdfMonth.parse(date))
  797 + + "-" + lineName + "-班次日报表.xls");
720 } catch (Exception e) { 798 } catch (Exception e) {
721 e.printStackTrace(); 799 e.printStackTrace();
722 } 800 }
src/main/java/com/bsth/controller/gps/GpsController.java
@@ -5,6 +5,8 @@ import com.bsth.data.gpsdata_v2.GpsRealData; @@ -5,6 +5,8 @@ import com.bsth.data.gpsdata_v2.GpsRealData;
5 import com.bsth.data.gpsdata_v2.entity.GpsEntity; 5 import com.bsth.data.gpsdata_v2.entity.GpsEntity;
6 import com.bsth.data.gpsdata_v2.handlers.overspeed.GpsOverspeed; 6 import com.bsth.data.gpsdata_v2.handlers.overspeed.GpsOverspeed;
7 import com.bsth.data.gpsdata_v2.handlers.overspeed.OverspeedProcess; 7 import com.bsth.data.gpsdata_v2.handlers.overspeed.OverspeedProcess;
  8 +import com.bsth.data.schedule.e_state_check.ScheduleStationCodeChecker;
  9 +import com.bsth.data.schedule.e_state_check.entity.SCodeInfo;
8 import com.bsth.service.gps.GpsService; 10 import com.bsth.service.gps.GpsService;
9 import com.bsth.service.gps.entity.GpsSpeed; 11 import com.bsth.service.gps.entity.GpsSpeed;
10 import com.google.common.base.Splitter; 12 import com.google.common.base.Splitter;
@@ -56,8 +58,13 @@ public class GpsController { @@ -56,8 +58,13 @@ public class GpsController {
56 58
57 //超速信息 59 //超速信息
58 List<GpsOverspeed> overspeedList = overspeedProcess.findByLines(lineArray); 60 List<GpsOverspeed> overspeedList = overspeedProcess.findByLines(lineArray);
  61 +
  62 + //班次站点检查信息
  63 + List<SCodeInfo> scis = ScheduleStationCodeChecker.findByLineIdx(lineArray);
  64 +
59 rs.put("gpsList", gpsList); 65 rs.put("gpsList", gpsList);
60 rs.put("overspeedList", overspeedList); 66 rs.put("overspeedList", overspeedList);
  67 + rs.put("scis", scis);
61 return rs; 68 return rs;
62 } 69 }
63 70
src/main/java/com/bsth/controller/oil/DlbController.java
@@ -164,7 +164,11 @@ public class DlbController extends BaseController&lt;Dlb, Integer&gt;{ @@ -164,7 +164,11 @@ public class DlbController extends BaseController&lt;Dlb, Integer&gt;{
164 m.put("rq", y.getRq()); 164 m.put("rq", y.getRq());
165 m.put("gsname",y.getGsname() ); 165 m.put("gsname",y.getGsname() );
166 m.put("fgsname", y.getFgsname()); 166 m.put("fgsname", y.getFgsname());
167 - m.put("xlname", y.getXlname()); 167 + if(y.getLinename()==null){
  168 + m.put("xlname", y.getXlname()==null?"":y.getXlname());
  169 + }else{
  170 + m.put("xlname", y.getLinename());
  171 + }
168 m.put("nbbm", y.getNbbm()); 172 m.put("nbbm", y.getNbbm());
169 m.put("jsy", y.getJsy()); 173 m.put("jsy", y.getJsy());
170 m.put("name", y.getName()); 174 m.put("name", y.getName());
src/main/java/com/bsth/controller/oil/LsylbController.java 0 → 100644
  1 +package com.bsth.controller.oil;
  2 +
  3 +import java.text.SimpleDateFormat;
  4 +import java.util.ArrayList;
  5 +import java.util.HashMap;
  6 +import java.util.Iterator;
  7 +import java.util.List;
  8 +import java.util.Map;
  9 +
  10 +import org.springframework.beans.factory.annotation.Autowired;
  11 +import org.springframework.web.bind.annotation.RequestMapping;
  12 +import org.springframework.web.bind.annotation.RequestMethod;
  13 +import org.springframework.web.bind.annotation.RequestParam;
  14 +import org.springframework.web.bind.annotation.RestController;
  15 +
  16 +import com.bsth.controller.BaseController;
  17 +import com.bsth.entity.oil.Lsylb;
  18 +import com.bsth.entity.oil.Ylb;
  19 +import com.bsth.service.oil.LsylbService;
  20 +import com.bsth.util.Arith;
  21 +import com.bsth.util.ReportUtils;
  22 +
  23 +@RestController
  24 +@RequestMapping("lsylb")
  25 +public class LsylbController extends BaseController<Ylb, Integer>{
  26 + @Autowired
  27 + LsylbService lsylbService;
  28 +
  29 + @RequestMapping(value = "/lsylbList",method = RequestMethod.GET)
  30 + public List<Lsylb> lsylbList(@RequestParam Map<String, Object> map){
  31 + List<Lsylb> ylbList=lsylbService.listYlb(map);
  32 + return ylbList;
  33 + }
  34 +
  35 + @RequestMapping(value = "/sumLsylb",method = RequestMethod.GET)
  36 + public Map<String, Object> sumLsylb(@RequestParam Map<String, Object> map){
  37 + Map<String, Object> list=lsylbService.sumYlb(map);
  38 + return list;
  39 + }
  40 +
  41 + @RequestMapping(value = "/listExport",method = RequestMethod.POST)
  42 + public List<Map<String, Object>> listExport(@RequestParam Map<String, Object> map){
  43 + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
  44 + sdfSimple = new SimpleDateFormat("yyyyMMdd");
  45 + List<Iterator<?>> listI = new ArrayList<Iterator<?>>();
  46 + ReportUtils ee = new ReportUtils();
  47 + List<Lsylb> lsylb= lsylbService.listYlb(map);
  48 + String nylx=map.get("nylx").toString();
  49 +// (new CustomerSpecs<Ylb>(map)).iterator();
  50 + List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>();
  51 + for (Lsylb y : lsylb) {
  52 + Map<String, Object> m = new HashMap<String, Object>();
  53 + m.put("rq", sdfMonth.format(y.getRq()));
  54 + m.put("gsname",y.getGsname() );
  55 + m.put("fgsname", y.getFgsname());
  56 + m.put("xlname", y.getXlname()==null?"":y.getXlname());
  57 + m.put("nbbm", y.getNbbm());
  58 + m.put("jsy", y.getJsy());
  59 + m.put("name", y.getName());
  60 + m.put("czlc", "0");
  61 + m.put("jzlc", "0");
  62 + m.put("sh", y.getSh()==null?"0":y.getSh());
  63 +
  64 + String shyy ="无";
  65 +
  66 + if(nylx.equals("0")){
  67 + m.put("jzl", y.getJzl()==null?"0":y.getJzl());
  68 + m.put("czyl", y.getCzyl()==null?"0":y.getCzyl());
  69 + m.put("jzyl", y.getJzyl()==null?"0":y.getJzyl());
  70 + m.put("yh", y.getYh()==null?"0":y.getYh());
  71 +
  72 + if(y.getShyy()!=null){
  73 + shyy=y.getShyy();
  74 + if(shyy.equals("1")){shyy="票务用油";}
  75 + else if(shyy.equals("2")){shyy="保养用油";}
  76 + else if(shyy.equals("3")){shyy="报废车用油";}
  77 + else if(shyy.equals("4")){shyy="其它用油";}
  78 + else if(shyy.equals("5")){shyy="人保部";}
  79 + else if(shyy.equals("6")){shyy="车队";}
  80 + else if(shyy.equals("7")){shyy="车间(高保)";}
  81 + else if(shyy.equals("8")){shyy="车间(小修)";}
  82 + else{shyy ="无";}
  83 + }
  84 + m.put("zyh", Arith.add(m.get("sh"), m.get("yh")));
  85 +
  86 + String rylx="";
  87 + if(y.getRylx()!=null){
  88 + if(y.getRylx().equals("0")){rylx="0号柴油";}
  89 + if(y.getRylx().equals("1")){rylx="负10号柴油";}
  90 + }
  91 + m.put("rylx", rylx);
  92 + }else{
  93 + m.put("cdl", y.getJzl()==null?"0":y.getJzl());
  94 + m.put("czcd", y.getCzyl()==null?"0":y.getCzyl());
  95 + m.put("jzcd", y.getJzyl()==null?"0":y.getJzyl());
  96 + m.put("hd", y.getYh()==null?"0":y.getYh());
  97 + if(y.getShyy()!=null){
  98 + shyy=y.getShyy();
  99 + if(shyy.equals("1")){shyy="票务用电";}
  100 + else if(shyy.equals("2")){shyy="保养用电";}
  101 + else if(shyy.equals("3")){shyy="报废车用电";}
  102 + else if(shyy.equals("4")){shyy="其它用电";}
  103 + else if(shyy.equals("5")){shyy="人保部";}
  104 + else if(shyy.equals("6")){shyy="车队";}
  105 + else if(shyy.equals("7")){shyy="车间(高保)";}
  106 + else if(shyy.equals("8")){shyy="车间(小修)";}
  107 + else{shyy ="无";}
  108 + }
  109 + m.put("zyh", Arith.add(m.get("sh"), m.get("hd")));
  110 + m.put("rdlx", "");
  111 +
  112 + }
  113 + m.put("shyy", shyy);
  114 + m.put("ns", y.getNs()==null?"0":y.getNs());
  115 + m.put("zlc", y.getZlc()==null?"0":y.getZlc());
  116 + m.put("bglyh", y.getBglyh());
  117 + resList.add(m);
  118 + }
  119 + try {
  120 + map.put("sheetName", map.get("rq"));
  121 + listI.add(resList.iterator());
  122 + String xls="";
  123 + String name="";
  124 +
  125 + if(nylx.equals("0")){
  126 + xls="list.xls";
  127 + name="进出场存油量.xls";
  128 + }else{
  129 + xls="listDl.xls";
  130 + name="进出场存电量.xls";
  131 + }
  132 + String path = this.getClass().getResource("/").getPath()+"static/pages/forms/";
  133 + ee.excelReplace(listI, new Object[] { map }, path+"mould/"+xls,
  134 + path+"export/"+map.get("rq").toString()+ name);
  135 + } catch (Exception e) {
  136 + e.printStackTrace();
  137 + }
  138 +
  139 + return resList;
  140 +
  141 + }
  142 +}
src/main/java/com/bsth/controller/oil/YlbController.java
@@ -268,7 +268,11 @@ public class YlbController extends BaseController&lt;Ylb, Integer&gt;{ @@ -268,7 +268,11 @@ public class YlbController extends BaseController&lt;Ylb, Integer&gt;{
268 m.put("rq", sdfMonth.format(y.getRq())); 268 m.put("rq", sdfMonth.format(y.getRq()));
269 m.put("gsname",y.getGsname() ); 269 m.put("gsname",y.getGsname() );
270 m.put("fgsname", y.getFgsname()); 270 m.put("fgsname", y.getFgsname());
271 - m.put("xlname", y.getXlname()==null?"":y.getXlname()); 271 + if(y.getLinename()==null){
  272 + m.put("xlname", y.getXlname()==null?"":y.getXlname());
  273 + }else{
  274 + m.put("xlname", y.getLinename());
  275 + }
272 m.put("nbbm", y.getNbbm()); 276 m.put("nbbm", y.getNbbm());
273 m.put("jsy", y.getJsy()); 277 m.put("jsy", y.getJsy());
274 m.put("name", y.getName()); 278 m.put("name", y.getName());
src/main/java/com/bsth/controller/realcontrol/AdminUtilsController.java
1 -package com.bsth.controller.realcontrol;  
2 -  
3 -import com.bsth.data.directive.DayOfDirectives;  
4 -import com.bsth.data.directive.DirectivesPstThread;  
5 -import com.bsth.data.gpsdata_v2.cache.GeoCacheData;  
6 -import com.bsth.data.gpsdata_v2.handlers.overspeed.OverspeedProcess;  
7 -import com.bsth.data.gpsdata_v2.thread.GpsDataLoaderThread;  
8 -import com.bsth.data.msg_queue.DirectivePushQueue;  
9 -import com.bsth.data.msg_queue.WebSocketPushQueue;  
10 -import com.bsth.data.pilot80.PilotReport;  
11 -import com.bsth.data.schedule.DayOfSchedule;  
12 -import com.bsth.entity.realcontrol.ScheduleRealInfo;  
13 -import com.bsth.websocket.handler.SendUtils;  
14 -import org.slf4j.Logger;  
15 -import org.slf4j.LoggerFactory;  
16 -import org.springframework.beans.factory.annotation.Autowired;  
17 -import org.springframework.web.bind.annotation.RequestMapping;  
18 -import org.springframework.web.bind.annotation.RequestParam;  
19 -import org.springframework.web.bind.annotation.RestController;  
20 -  
21 -import java.util.HashMap;  
22 -import java.util.List;  
23 -import java.util.Map;  
24 -  
25 -/**  
26 - * Created by panzhao on 2017/4/14.  
27 - */  
28 -@RestController  
29 -@RequestMapping("adminUtils")  
30 -public class AdminUtilsController {  
31 -  
32 -  
33 - Logger logger = LoggerFactory.getLogger(this.getClass());  
34 -  
35 - @Autowired  
36 - DayOfSchedule dayOfSchedule;  
37 -  
38 - @Autowired  
39 - GeoCacheData geoCacheData;  
40 -  
41 - @Autowired  
42 - DayOfDirectives dayOfDirectives;  
43 -  
44 - @Autowired  
45 - SendUtils sendUtils;  
46 -  
47 - @Autowired  
48 - PilotReport pilotReport;  
49 -  
50 - /**  
51 - * 出现重复班次的车辆  
52 - * @param  
53 -  
54 - @RequestMapping(value = "/schRepeat", method = RequestMethod.POST)  
55 - public void schRepeat(@RequestParam String nbbm){  
56 - logger.info("前端通知,车辆 " + nbbm + "出现重复班次,开始检测...");  
57 - List<ScheduleRealInfo> list = dayOfSchedule.findByNbbm(nbbm);  
58 - logger.info("检测前,车辆班次数量:" + list.size());  
59 -  
60 - Map<Long, ScheduleRealInfo> map = new HashMap<>();  
61 - for(ScheduleRealInfo sch : list){  
62 - if(map.containsKey(sch.getId())){  
63 - logger.info("检测到重复ID: " + sch.getId());  
64 - }  
65 - map.put(sch.getId(), sch);  
66 - }  
67 -  
68 - logger.info("检测后,车辆班次数量:" + list.size());  
69 - if(map.values().size() > 0){  
70 - dayOfSchedule.replaceByNbbm(nbbm, map.values());  
71 - }  
72 - }*/  
73 -  
74 -/* @RequestMapping(value = "/directivePushQueue")  
75 - public void directivePushQueue(){  
76 - DirectivePushQueue.start();  
77 - }*/  
78 -  
79 - @RequestMapping(value = "/directiveQueueSize")  
80 - public void directiveQueueSize(){  
81 - DirectivePushQueue.size();  
82 - }  
83 -  
84 - /*@RequestMapping(value = "/webSocketPushQueue")  
85 - public void webSocketPushQueue(){  
86 - WebSocketPushQueue.start();  
87 - }*/  
88 -  
89 - @RequestMapping(value = "/webSocketQueueSize")  
90 - public void webSocketQueueSize(){  
91 - WebSocketPushQueue.size();  
92 - }  
93 -  
94 - @RequestMapping(value = "/setHttpFlag")  
95 - public void setHttpFlag(@RequestParam int flag){  
96 - if(flag != 0 && flag != -1)  
97 - return;  
98 - GpsDataLoaderThread.setFlag(flag);  
99 - }  
100 -  
101 - @RequestMapping(value = "/updateCacheBuff")  
102 - public void updateCacheBuff(){  
103 - geoCacheData.loadData();  
104 - }  
105 -  
106 - @RequestMapping(value = "/reCalcLpSch")  
107 - public void reCalcLpSch(){  
108 - dayOfSchedule._test_reCalcLpSch();  
109 - }  
110 -  
111 - @RequestMapping(value = "/findSchByLpName")  
112 - public List<ScheduleRealInfo> findSchByLpName(@RequestParam String lpName){  
113 - return dayOfSchedule.getLpScheduleMap().get(lpName);  
114 - }  
115 -  
116 - @RequestMapping(value = "/findSchByNbbm")  
117 - public List<ScheduleRealInfo> findSchByNbbm(@RequestParam String nbbm){  
118 - return dayOfSchedule.findByNbbm(nbbm);  
119 - }  
120 -  
121 - @RequestMapping(value = "/removeExecPlan")  
122 - public int removeExecPlan(@RequestParam String nbbm){  
123 - dayOfSchedule.removeExecPlan(nbbm);  
124 - return 1;  
125 - }  
126 -  
127 - @RequestMapping(value = "/sch_re_calc_id_maps")  
128 - public int reCalcIdMaps(){  
129 - return dayOfSchedule.reCalcIdMaps();  
130 - }  
131 -  
132 - @RequestMapping(value = "/sch_size_string")  
133 - public String schSizeString(){  
134 - return dayOfSchedule.sizeString();  
135 - }  
136 -  
137 - @RequestMapping(value = "/containerSize")  
138 - public Map<String, Integer> containerSize(){  
139 - Map<String, Integer> rs = new HashMap<>();  
140 - rs.put("60_size", dayOfDirectives.all60().size());  
141 - rs.put("80_size", pilotReport.findAll().size());  
142 - rs.put("nbbm_sch_size", dayOfSchedule.findAll().size());  
143 - rs.put("lp_sch_size", dayOfSchedule.findAllByLpContainer().size());  
144 - rs.put("id_sch_size", dayOfSchedule.findAllByIdContainer().size());  
145 - rs.put("pst_sch_size", dayOfSchedule.getPstSize());  
146 - rs.put("speeds_size", OverspeedProcess.size());  
147 - return rs;  
148 - }  
149 -  
150 - @RequestMapping(value = "/websocketRadioText")  
151 - public int radioText(String t, String lineCode){  
152 - sendUtils.sendRadioText(t, lineCode);  
153 - return 0;  
154 - }  
155 -  
156 - @Autowired  
157 - DirectivesPstThread directivesPstThread;  
158 -  
159 - @RequestMapping(value = "/_sd_60_pst")  
160 - public void sd_60_pst(){  
161 - logger.info("手动入库指令....");  
162 - directivesPstThread.run();  
163 - } 1 +package com.bsth.controller.realcontrol;
  2 +
  3 +import java.text.SimpleDateFormat;
  4 +import java.util.Date;
  5 +import java.util.HashMap;
  6 +import java.util.List;
  7 +import java.util.Map;
  8 +
  9 +import org.slf4j.Logger;
  10 +import org.slf4j.LoggerFactory;
  11 +import org.springframework.beans.factory.annotation.Autowired;
  12 +import org.springframework.web.bind.annotation.RequestMapping;
  13 +import org.springframework.web.bind.annotation.RequestParam;
  14 +import org.springframework.web.bind.annotation.RestController;
  15 +
  16 +import com.bsth.common.ResponseCode;
  17 +import com.bsth.data.directive.DayOfDirectives;
  18 +import com.bsth.data.directive.DirectivesPstThread;
  19 +import com.bsth.data.gpsdata_v2.cache.GeoCacheData;
  20 +import com.bsth.data.gpsdata_v2.handlers.overspeed.OverspeedProcess;
  21 +import com.bsth.data.gpsdata_v2.thread.GpsDataLoaderThread;
  22 +import com.bsth.data.msg_queue.DirectivePushQueue;
  23 +import com.bsth.data.msg_queue.WebSocketPushQueue;
  24 +import com.bsth.data.pilot80.PilotReport;
  25 +import com.bsth.data.schedule.DayOfSchedule;
  26 +import com.bsth.entity.realcontrol.ScheduleRealInfo;
  27 +import com.bsth.websocket.handler.SendUtils;
  28 +
  29 +import ch.qos.logback.classic.Level;
  30 +import ch.qos.logback.classic.LoggerContext;
  31 +
  32 +/**
  33 + * Created by panzhao on 2017/4/14.
  34 + */
  35 +@RestController
  36 +@RequestMapping("adminUtils")
  37 +public class AdminUtilsController {
  38 +
  39 +
  40 + Logger logger = LoggerFactory.getLogger(this.getClass());
  41 +
  42 + @Autowired
  43 + DayOfSchedule dayOfSchedule;
  44 +
  45 + @Autowired
  46 + GeoCacheData geoCacheData;
  47 +
  48 + @Autowired
  49 + DayOfDirectives dayOfDirectives;
  50 +
  51 + @Autowired
  52 + SendUtils sendUtils;
  53 +
  54 + @Autowired
  55 + PilotReport pilotReport;
  56 +
  57 + /**
  58 + * 出现重复班次的车辆
  59 + *
  60 + * @param
  61 + * @RequestMapping(value = "/schRepeat", method = RequestMethod.POST)
  62 + * public void schRepeat(@RequestParam String nbbm){
  63 + * logger.info("前端通知,车辆 " + nbbm + "出现重复班次,开始检测...");
  64 + * List<ScheduleRealInfo> list = dayOfSchedule.findByNbbm(nbbm);
  65 + * logger.info("检测前,车辆班次数量:" + list.size());
  66 + * <p>
  67 + * Map<Long, ScheduleRealInfo> map = new HashMap<>();
  68 + * for(ScheduleRealInfo sch : list){
  69 + * if(map.containsKey(sch.getId())){
  70 + * logger.info("检测到重复ID: " + sch.getId());
  71 + * }
  72 + * map.put(sch.getId(), sch);
  73 + * }
  74 + * <p>
  75 + * logger.info("检测后,车辆班次数量:" + list.size());
  76 + * if(map.values().size() > 0){
  77 + * dayOfSchedule.replaceByNbbm(nbbm, map.values());
  78 + * }
  79 + * }
  80 + */
  81 +
  82 +/* @RequestMapping(value = "/directivePushQueue")
  83 + public void directivePushQueue(){
  84 + DirectivePushQueue.start();
  85 + }*/
  86 + @RequestMapping(value = "/directiveQueueSize")
  87 + public void directiveQueueSize() {
  88 + DirectivePushQueue.size();
  89 + }
  90 +
  91 + /*@RequestMapping(value = "/webSocketPushQueue")
  92 + public void webSocketPushQueue(){
  93 + WebSocketPushQueue.start();
  94 + }*/
  95 +
  96 + @RequestMapping(value = "/webSocketQueueSize")
  97 + public void webSocketQueueSize() {
  98 + WebSocketPushQueue.size();
  99 + }
  100 +
  101 + @RequestMapping(value = "/setHttpFlag")
  102 + public void setHttpFlag(@RequestParam int flag) {
  103 + if (flag != 0 && flag != -1)
  104 + return;
  105 + GpsDataLoaderThread.setFlag(flag);
  106 + }
  107 +
  108 + @RequestMapping(value = "/updateCacheBuff")
  109 + public void updateCacheBuff() {
  110 + geoCacheData.loadData();
  111 + }
  112 +
  113 + @RequestMapping(value = "/reCalcLpSch")
  114 + public void reCalcLpSch() {
  115 + dayOfSchedule._test_reCalcLpSch();
  116 + }
  117 +
  118 + @RequestMapping(value = "/findSchByLpName")
  119 + public List<ScheduleRealInfo> findSchByLpName(@RequestParam String lpName) {
  120 + return dayOfSchedule.getLpScheduleMap().get(lpName);
  121 + }
  122 +
  123 + @RequestMapping(value = "/findSchByNbbm")
  124 + public List<ScheduleRealInfo> findSchByNbbm(@RequestParam String nbbm) {
  125 + return dayOfSchedule.findByNbbm(nbbm);
  126 + }
  127 +
  128 + @RequestMapping(value = "/removeExecPlan")
  129 + public int removeExecPlan(@RequestParam String nbbm) {
  130 + dayOfSchedule.removeExecPlan(nbbm);
  131 + return 1;
  132 + }
  133 +
  134 + @RequestMapping(value = "/sch_re_calc_id_maps")
  135 + public int reCalcIdMaps() {
  136 + return dayOfSchedule.reCalcIdMaps();
  137 + }
  138 +
  139 + @RequestMapping(value = "/sch_size_string")
  140 + public String schSizeString() {
  141 + return dayOfSchedule.sizeString();
  142 + }
  143 +
  144 + @RequestMapping(value = "/containerSize")
  145 + public Map<String, Integer> containerSize() {
  146 + Map<String, Integer> rs = new HashMap<>();
  147 + rs.put("60_size", dayOfDirectives.all60().size());
  148 + rs.put("80_size", pilotReport.findAll().size());
  149 + rs.put("nbbm_sch_size", dayOfSchedule.findAll().size());
  150 + rs.put("lp_sch_size", dayOfSchedule.findAllByLpContainer().size());
  151 + rs.put("id_sch_size", dayOfSchedule.findAllByIdContainer().size());
  152 + rs.put("pst_sch_size", dayOfSchedule.getPstSize());
  153 + rs.put("speeds_size", OverspeedProcess.size());
  154 + return rs;
  155 + }
  156 +
  157 + @RequestMapping(value = "/websocketRadioText")
  158 + public int radioText(String t, String lineCode) {
  159 + sendUtils.sendRadioText(t, lineCode);
  160 + return 0;
  161 + }
  162 +
  163 + @Autowired
  164 + DirectivesPstThread directivesPstThread;
  165 +
  166 + @RequestMapping(value = "/_sd_60_pst")
  167 + public void sd_60_pst() {
  168 + logger.info("手动入库指令....");
  169 + directivesPstThread.run();
  170 + }
  171 +
  172 + /**
  173 + * 删除班次,删除内存中未清理掉的非当天的班次
  174 + * @createDate 2019.05.13
  175 + * @author zhangxianzhou
  176 + * @param id 线路id
  177 + * @return 被删除的班次信息
  178 + */
  179 + @RequestMapping("/deleteSchduleBC")
  180 + public Map deleteSchduleBC(Long id) {
  181 + Map<String, Object> rs = new HashMap<>();
  182 + rs.put("status", ResponseCode.ERROR);
  183 + ScheduleRealInfo sch = null;
  184 + try {
  185 + sch = dayOfSchedule.get(id);
  186 + if (sch == null) {
  187 + rs.put("msg", "无效的id号");
  188 + return rs;
  189 + }
  190 + Date date=new Date();
  191 + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
  192 + String dateStr=sdf.format(date);
  193 + if (sch.getScheduleDateStr().equals(dateStr)){
  194 + rs.put("msg", "不能删除当日排班");
  195 + return rs;
  196 + }
  197 + //内存中删除
  198 + dayOfSchedule.deleteBC(sch);
  199 + rs.put("delete", sch);
  200 + rs.put("status", ResponseCode.SUCCESS);
  201 +
  202 + } catch (Exception e) {
  203 + logger.error("", e);
  204 + rs.put("msg", e.getMessage());
  205 + sch.setDeleted(false);
  206 + }
  207 +
  208 + return rs;
  209 + }
  210 +
  211 + @RequestMapping("/changeLogLevel")
  212 + public Map<String, Object> changeLogLevel(@RequestParam String level) {
  213 + Map<String, Object> rs = new HashMap<>();
  214 + rs.put("errCode", 1);
  215 + LoggerContext context = (LoggerContext)LoggerFactory.getILoggerFactory();
  216 + context.getLogger("root").setLevel(Level.toLevel(level));
  217 + rs.put("errCode", 0);
  218 + rs.put("errMsg", "成功");
  219 +
  220 + return rs;
  221 + }
164 } 222 }
165 \ No newline at end of file 223 \ No newline at end of file
src/main/java/com/bsth/controller/realcontrol/RealMapController.java
@@ -49,6 +49,12 @@ public class RealMapController { @@ -49,6 +49,12 @@ public class RealMapController {
49 return realMapService.findRouteByLine(idx); 49 return realMapService.findRouteByLine(idx);
50 } 50 }
51 51
  52 +
  53 + @RequestMapping(value = "/findRouteAndVersionByLine")
  54 + public Map<String, Object> findRouteByLineAndVersion(@RequestParam String idx) {
  55 + return realMapService.findRouteAndVersionByLine(idx);
  56 + }
  57 +
52 @RequestMapping(value = "/multiRouteByLine") 58 @RequestMapping(value = "/multiRouteByLine")
53 public Map<String, Object> multiRouteByLine(@RequestParam String codeStr) { 59 public Map<String, Object> multiRouteByLine(@RequestParam String codeStr) {
54 return realMapService.multiRouteByLine(codeStr); 60 return realMapService.multiRouteByLine(codeStr);
src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
1 package com.bsth.controller.realcontrol; 1 package com.bsth.controller.realcontrol;
2 2
  3 +import java.io.ByteArrayOutputStream;
  4 +import java.io.IOException;
  5 +import java.io.InputStream;
  6 +import java.io.OutputStream;
  7 +import java.net.HttpURLConnection;
  8 +import java.net.URL;
  9 +import java.util.ArrayList;
  10 +import java.util.Collection;
  11 +import java.util.HashMap;
  12 +import java.util.List;
  13 +import java.util.Map;
  14 +
  15 +import org.apache.commons.io.IOUtils;
  16 +import org.apache.commons.lang3.StringEscapeUtils;
  17 +import org.joda.time.format.DateTimeFormat;
  18 +import org.joda.time.format.DateTimeFormatter;
  19 +import org.springframework.beans.factory.annotation.Autowired;
  20 +import org.springframework.web.bind.annotation.PathVariable;
  21 +import org.springframework.web.bind.annotation.RequestMapping;
  22 +import org.springframework.web.bind.annotation.RequestMethod;
  23 +import org.springframework.web.bind.annotation.RequestParam;
  24 +import org.springframework.web.bind.annotation.RestController;
  25 +
3 import com.alibaba.fastjson.JSONArray; 26 import com.alibaba.fastjson.JSONArray;
4 import com.bsth.common.ResponseCode; 27 import com.bsth.common.ResponseCode;
5 import com.bsth.controller.BaseController; 28 import com.bsth.controller.BaseController;
@@ -10,14 +33,11 @@ import com.bsth.data.schedule.DayOfSchedule; @@ -10,14 +33,11 @@ import com.bsth.data.schedule.DayOfSchedule;
10 import com.bsth.data.schedule.edit_logs.service.dto.SchEditInfoDto; 33 import com.bsth.data.schedule.edit_logs.service.dto.SchEditInfoDto;
11 import com.bsth.entity.realcontrol.ScheduleRealInfo; 34 import com.bsth.entity.realcontrol.ScheduleRealInfo;
12 import com.bsth.entity.schedule.SchedulePlanInfo; 35 import com.bsth.entity.schedule.SchedulePlanInfo;
  36 +import com.bsth.entity.sys.SysUser;
  37 +import com.bsth.security.util.SecurityUtils;
13 import com.bsth.service.realcontrol.ScheduleRealInfoService; 38 import com.bsth.service.realcontrol.ScheduleRealInfoService;
14 -import org.apache.commons.lang3.StringEscapeUtils;  
15 -import org.joda.time.format.DateTimeFormat;  
16 -import org.joda.time.format.DateTimeFormatter;  
17 -import org.springframework.beans.factory.annotation.Autowired;  
18 -import org.springframework.web.bind.annotation.*;  
19 -  
20 -import java.util.*; 39 +import com.bsth.util.ConfigUtil;
  40 +import com.fasterxml.jackson.databind.ObjectMapper;
21 41
22 @RestController 42 @RestController
23 @RequestMapping("/realSchedule") 43 @RequestMapping("/realSchedule")
@@ -29,6 +49,11 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo, @@ -29,6 +49,11 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
29 @Autowired 49 @Autowired
30 DayOfSchedule dayOfSchedule; 50 DayOfSchedule dayOfSchedule;
31 51
  52 + @RequestMapping(value = "check_fgs_ascription", method = RequestMethod.POST)
  53 + public Map<String, Object> checkPCFgsAscription(@RequestParam Long schId, String jGh, String sGh, String nbbm){
  54 + return scheduleRealInfoService.checkPCFgsAscription(schId, jGh, sGh, nbbm);
  55 + }
  56 +
32 @RequestMapping(value = "/lines") 57 @RequestMapping(value = "/lines")
33 public Map<String, Collection<ScheduleRealInfo>> findByLines(@RequestParam String lines) { 58 public Map<String, Collection<ScheduleRealInfo>> findByLines(@RequestParam String lines) {
34 return scheduleRealInfoService.findByLines(lines); 59 return scheduleRealInfoService.findByLines(lines);
@@ -48,7 +73,7 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo, @@ -48,7 +73,7 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
48 public Map<String, Object> outgoAdjust(@RequestParam Long id, @RequestParam String remarks, 73 public Map<String, Object> outgoAdjust(@RequestParam Long id, @RequestParam String remarks,
49 @RequestParam String dfsj,String bcType, 74 @RequestParam String dfsj,String bcType,
50 @RequestParam(defaultValue = "") String opType) { 75 @RequestParam(defaultValue = "") String opType) {
51 - return scheduleRealInfoService.outgoAdjust(id, remarks, dfsj, bcType, opType); 76 + return scheduleRealInfoService.outgoAdjust(id, remarks, dfsj, bcType, opType, null);
52 } 77 }
53 78
54 /** 79 /**
@@ -59,7 +84,7 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo, @@ -59,7 +84,7 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
59 public Map<String, Object> destroy(@RequestParam String idsStr 84 public Map<String, Object> destroy(@RequestParam String idsStr
60 /*, @RequestParam(defaultValue = "-1") int spaceAdjust*/, 85 /*, @RequestParam(defaultValue = "-1") int spaceAdjust*/,
61 @RequestParam String remarks, @RequestParam String adjustExps/*, @RequestParam(defaultValue = "0") int spaceNum*/) { 86 @RequestParam String remarks, @RequestParam String adjustExps/*, @RequestParam(defaultValue = "0") int spaceNum*/) {
62 - return scheduleRealInfoService.destroy(idsStr/*, spaceAdjust*/, remarks, adjustExps/*, spaceNum*/); 87 + return scheduleRealInfoService.destroy(idsStr, remarks, adjustExps, null);
63 } 88 }
64 89
65 /** 90 /**
@@ -412,7 +437,11 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo, @@ -412,7 +437,11 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
412 if(map.get("type")!=null){ 437 if(map.get("type")!=null){
413 type=map.get("type").toString(); 438 type=map.get("type").toString();
414 } 439 }
415 - return scheduleRealInfoService.statisticsDailyTj(gsdm,fgsdm,line, date,date2, xlName, type); 440 + String nature="0";
  441 + if(map.get("nature")!=null){
  442 + nature=map.get("nature").toString();
  443 + }
  444 + return scheduleRealInfoService.statisticsDailyTj(gsdm,fgsdm,line, date,date2, xlName, type,nature);
416 } 445 }
417 446
418 /* 447 /*
@@ -506,6 +535,11 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo, @@ -506,6 +535,11 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
506 return scheduleRealInfoService.realScheduleList(line,date); 535 return scheduleRealInfoService.realScheduleList(line,date);
507 } 536 }
508 537
  538 + @RequestMapping(value="/realScheduleList_zrw")
  539 + public List<ScheduleRealInfo> realScheduleList_zrw(@RequestParam String line,@RequestParam String date){
  540 + return scheduleRealInfoService.realScheduleList_zrw(line,date);
  541 + }
  542 +
509 @RequestMapping(value="/realScheduleList_mh_2") 543 @RequestMapping(value="/realScheduleList_mh_2")
510 public List<ScheduleRealInfo> realScheduleList_mh_2(@RequestParam String line,@RequestParam String date){ 544 public List<ScheduleRealInfo> realScheduleList_mh_2(@RequestParam String line,@RequestParam String date){
511 return scheduleRealInfoService.realScheduleList_mh_2(line,date); 545 return scheduleRealInfoService.realScheduleList_mh_2(line,date);
@@ -520,7 +554,7 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo, @@ -520,7 +554,7 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
520 public Map<String, Object> multi_tzrc(@RequestParam String cpcsJson){ 554 public Map<String, Object> multi_tzrc(@RequestParam String cpcsJson){
521 cpcsJson = StringEscapeUtils.unescapeHtml4(cpcsJson); 555 cpcsJson = StringEscapeUtils.unescapeHtml4(cpcsJson);
522 List<ChangePersonCar> cpcs = JSONArray.parseArray(cpcsJson, ChangePersonCar.class); 556 List<ChangePersonCar> cpcs = JSONArray.parseArray(cpcsJson, ChangePersonCar.class);
523 - return scheduleRealInfoService.multi_tzrc(cpcs); 557 + return scheduleRealInfoService.multi_tzrc(cpcs, null);
524 } 558 }
525 559
526 @RequestMapping(value="/multi_dftz", method=RequestMethod.POST) 560 @RequestMapping(value="/multi_dftz", method=RequestMethod.POST)
@@ -630,6 +664,9 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo, @@ -630,6 +664,9 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
630 } 664 }
631 665
632 int code = dayOfSchedule.reloadSch(lineCode); 666 int code = dayOfSchedule.reloadSch(lineCode);
  667 +
  668 + //重新按公司编码索引数据
  669 + dayOfSchedule.groupByGsbm();
633 rs.put("status", code==0? ResponseCode.SUCCESS: ResponseCode.ERROR); 670 rs.put("status", code==0? ResponseCode.SUCCESS: ResponseCode.ERROR);
634 return rs; 671 return rs;
635 } 672 }
@@ -674,4 +711,81 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo, @@ -674,4 +711,81 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
674 public Map<String, Object> deleteToHistory(@PathVariable("id") Long id){ 711 public Map<String, Object> deleteToHistory(@PathVariable("id") Long id){
675 return scheduleRealInfoService.deleteToHistory(id); 712 return scheduleRealInfoService.deleteToHistory(id);
676 } 713 }
  714 +
  715 + @RequestMapping(value = "isCircleQdz", method = RequestMethod.POST)
  716 + public Map<String, Object> isCircleQdz(@RequestParam String line, String nbbm, String ts, String qdzCode){
  717 + Map<String, Object> map =new HashMap<>();
  718 + map.put("isExist",scheduleRealInfoService.isCircleQdz(nbbm, ts, line, qdzCode));
  719 + return map;
  720 + }
  721 +
  722 + /**
  723 + * 从历史库里删除临加班次
  724 + * @param sch
  725 + * @return
  726 + */
  727 + @RequestMapping(value = "wxsb", method = RequestMethod.POST)
  728 + public Map<String, Object> deleteToHistory(@RequestParam Map<String, Object> param){
  729 + SysUser user = SecurityUtils.getCurrentUser();
  730 + String uname = user.getUserName();
  731 + StringBuilder url = new StringBuilder(ConfigUtil.get("http.report.url"));
  732 + url.append("?nbbm=").append(param.get("nbbm")).append("&bxy=").append(uname).append("&bxbm=").append(param.get("bxType"));
  733 + // 分公司保存格式 分公司编码_公司编码
  734 + String val = BasicData.nbbm2FgsCompanyCodeMap.get(param.get("nbbm"));
  735 + String[] arr = val.split("_");
  736 + if (!"22".equals(arr[1])) {
  737 + Map<String, Object> res = new HashMap<String, Object>();
  738 + res.put("status", ResponseCode.ERROR);
  739 + res.put("msg", "除金高公司外暂未开通此功能");
  740 +
  741 + return res;
  742 + }
  743 + url.append("&fgs=").append(arr[0]);
  744 +
  745 + return request(url.toString());
  746 + }
  747 +
  748 + @SuppressWarnings("unchecked")
  749 + private static Map<String, Object> request(String url) {
  750 + Map<String, Object> res = new HashMap<String, Object>();
  751 + res.put("status", ResponseCode.SUCCESS);
  752 + InputStream in = null;
  753 + HttpURLConnection con = null;
  754 + try {
  755 + con = (HttpURLConnection)new URL(url).openConnection();
  756 + con.setRequestMethod("POST");
  757 + con.setRequestProperty("keep-alive", "true");
  758 + con.setRequestProperty("accept", "application/json");
  759 + con.setRequestProperty("content-type", "application/json");
  760 + con.setDoInput(true);
  761 + con.setReadTimeout(2500);
  762 + con.setConnectTimeout(2500);
  763 +
  764 + con.connect();
  765 + if (con.getResponseCode() == 200) {
  766 + in = con.getInputStream();
  767 + ByteArrayOutputStream bout = new ByteArrayOutputStream();
  768 + IOUtils.copy(in, bout); bout.close();
  769 + Map<String, Object> response = new ObjectMapper().readValue(bout.toByteArray(), Map.class);
  770 + if (!"报修成功".equals(response.get("msg"))) {
  771 + res.put("status", ResponseCode.ERROR);
  772 + res.putAll(response);
  773 + }
  774 + }
  775 + } catch (IOException e) {
  776 + // TODO Auto-generated catch block
  777 + res.put("status", ResponseCode.ERROR);
  778 + res.put("msg", "调用上报接口异常");
  779 + } finally {
  780 + try {
  781 + if (in != null) in.close();
  782 + if (con != null) con.disconnect();
  783 + } catch (IOException e) {
  784 + // TODO Auto-generated catch block
  785 + e.printStackTrace();
  786 + }
  787 + }
  788 +
  789 + return res;
  790 + }
677 } 791 }
src/main/java/com/bsth/controller/realcontrol/ServiceDataInterface.java
1 package com.bsth.controller.realcontrol; 1 package com.bsth.controller.realcontrol;
2 2
3 import com.alibaba.fastjson.JSON; 3 import com.alibaba.fastjson.JSON;
  4 +import com.alibaba.fastjson.JSONArray;
  5 +import com.alibaba.fastjson.JSONObject;
  6 +import com.bsth.controller.realcontrol.dto.ChangePersonCar;
  7 +import com.bsth.controller.realcontrol.dto.DftzAndDestroy;
4 import com.bsth.data.BasicData; 8 import com.bsth.data.BasicData;
5 import com.bsth.data.directive.DayOfDirectives; 9 import com.bsth.data.directive.DayOfDirectives;
6 import com.bsth.data.directive.DirectiveCreator; 10 import com.bsth.data.directive.DirectiveCreator;
@@ -8,10 +12,12 @@ import com.bsth.data.directive.GatewayHttpUtils; @@ -8,10 +12,12 @@ import com.bsth.data.directive.GatewayHttpUtils;
8 import com.bsth.data.gpsdata_v2.GpsRealData; 12 import com.bsth.data.gpsdata_v2.GpsRealData;
9 import com.bsth.data.gpsdata_v2.entity.GpsEntity; 13 import com.bsth.data.gpsdata_v2.entity.GpsEntity;
10 import com.bsth.data.schedule.DayOfSchedule; 14 import com.bsth.data.schedule.DayOfSchedule;
  15 +import com.bsth.data.schedule.external.TccExternalService;
11 import com.bsth.entity.directive.D60; 16 import com.bsth.entity.directive.D60;
12 import com.bsth.entity.realcontrol.ScheduleRealInfo; 17 import com.bsth.entity.realcontrol.ScheduleRealInfo;
13 import com.bsth.repository.directive.D60Repository; 18 import com.bsth.repository.directive.D60Repository;
14 import com.google.common.base.Splitter; 19 import com.google.common.base.Splitter;
  20 +import org.apache.commons.lang3.StringEscapeUtils;
15 import org.apache.commons.lang3.StringUtils; 21 import org.apache.commons.lang3.StringUtils;
16 import org.slf4j.Logger; 22 import org.slf4j.Logger;
17 import org.slf4j.LoggerFactory; 23 import org.slf4j.LoggerFactory;
@@ -44,12 +50,16 @@ public class ServiceDataInterface { @@ -44,12 +50,16 @@ public class ServiceDataInterface {
44 @Autowired 50 @Autowired
45 GpsRealData gpsRealData; 51 GpsRealData gpsRealData;
46 52
  53 + @Autowired
  54 + TccExternalService tccExternalService;
  55 +
47 /** 56 /**
48 * 获取车辆 和 当前执行班次对照信息 57 * 获取车辆 和 当前执行班次对照信息
  58 + *
49 * @return 59 * @return
50 */ 60 */
51 @RequestMapping("/execSchList") 61 @RequestMapping("/execSchList")
52 - public List<Map<String, Object>> execSchList(@RequestParam String secretKey){ 62 + public List<Map<String, Object>> execSchList(@RequestParam String secretKey) {
53 if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY)) 63 if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY))
54 return null; 64 return null;
55 65
@@ -57,15 +67,15 @@ public class ServiceDataInterface { @@ -57,15 +67,15 @@ public class ServiceDataInterface {
57 Collection<ScheduleRealInfo> list = dayOfSchedule.execPlanMap().values(); 67 Collection<ScheduleRealInfo> list = dayOfSchedule.execPlanMap().values();
58 68
59 Map<String, Object> map; 69 Map<String, Object> map;
60 - for(ScheduleRealInfo sch : list){  
61 - if(null == sch) 70 + for (ScheduleRealInfo sch : list) {
  71 + if (null == sch)
62 continue; 72 continue;
63 map = new HashMap<>(); 73 map = new HashMap<>();
64 map.put("clZbh", sch.getClZbh()); 74 map.put("clZbh", sch.getClZbh());
65 map.put("jGh", sch.getjGh()); 75 map.put("jGh", sch.getjGh());
66 map.put("jName", sch.getjName()); 76 map.put("jName", sch.getjName());
67 map.put("sGh", sch.getsGh()); 77 map.put("sGh", sch.getsGh());
68 - map.put("sName", sch.getsGh()); 78 + map.put("sName", sch.getsName());
69 map.put("lpName", sch.getLpName()); 79 map.put("lpName", sch.getLpName());
70 map.put("xlBm", sch.getXlBm()); 80 map.put("xlBm", sch.getXlBm());
71 map.put("xlName", sch.getXlName()); 81 map.put("xlName", sch.getXlName());
@@ -79,6 +89,8 @@ public class ServiceDataInterface { @@ -79,6 +89,8 @@ public class ServiceDataInterface {
79 map.put("remarks", sch.getRemark()); 89 map.put("remarks", sch.getRemark());
80 map.put("status", sch.getStatus()); 90 map.put("status", sch.getStatus());
81 91
  92 + //放站班次,放到的站点
  93 + map.put("majorStationName", sch.getMajorStationName());
82 rs.add(map); 94 rs.add(map);
83 } 95 }
84 return rs; 96 return rs;
@@ -93,7 +105,7 @@ public class ServiceDataInterface { @@ -93,7 +105,7 @@ public class ServiceDataInterface {
93 if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY)) 105 if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY))
94 return null; 106 return null;
95 107
96 - List<ScheduleRealInfo> all = new ArrayList<>(dayOfSchedule.findAll()), rs = new ArrayList<>(); 108 + List<ScheduleRealInfo> all = new ArrayList<>(dayOfSchedule.findByGsbm(companyId)), rs = new ArrayList<>();
97 for (ScheduleRealInfo sch : all) { 109 for (ScheduleRealInfo sch : all) {
98 if (sch.getGsBm() != null 110 if (sch.getGsBm() != null
99 && sch.getGsBm().equals(companyId) 111 && sch.getGsBm().equals(companyId)
@@ -105,7 +117,7 @@ public class ServiceDataInterface { @@ -105,7 +117,7 @@ public class ServiceDataInterface {
105 } 117 }
106 118
107 @RequestMapping("/returnCCInfo") 119 @RequestMapping("/returnCCInfo")
108 - public List<ScheduleRealInfo> returnCCInfo(@RequestParam String companyId, @RequestParam String secretKey){ 120 + public List<ScheduleRealInfo> returnCCInfo(@RequestParam String companyId, @RequestParam String secretKey) {
109 if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY)) 121 if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY))
110 return null; 122 return null;
111 123
@@ -123,7 +135,7 @@ public class ServiceDataInterface { @@ -123,7 +135,7 @@ public class ServiceDataInterface {
123 } 135 }
124 136
125 @RequestMapping("/returnJCInfo") 137 @RequestMapping("/returnJCInfo")
126 - public List<ScheduleRealInfo> returnJCInfo(@RequestParam String companyId, @RequestParam String secretKey){ 138 + public List<ScheduleRealInfo> returnJCInfo(@RequestParam String companyId, @RequestParam String secretKey) {
127 if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY)) 139 if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY))
128 return null; 140 return null;
129 141
@@ -141,10 +153,11 @@ public class ServiceDataInterface { @@ -141,10 +153,11 @@ public class ServiceDataInterface {
141 153
142 /** 154 /**
143 * 获取全量的进出场数据, 仅供接口项目调用。 由接口项目负责对外所有场站输出 155 * 获取全量的进出场数据, 仅供接口项目调用。 由接口项目负责对外所有场站输出
  156 + *
144 * @return 157 * @return
145 */ 158 */
146 @RequestMapping("/findCurrInAndOut") 159 @RequestMapping("/findCurrInAndOut")
147 - public List<ScheduleRealInfo> findCurrInAndOut(@RequestParam String secretKey){ 160 + public List<ScheduleRealInfo> findCurrInAndOut(@RequestParam String secretKey) {
148 if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY)) 161 if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY))
149 return null; 162 return null;
150 163
@@ -161,30 +174,29 @@ public class ServiceDataInterface { @@ -161,30 +174,29 @@ public class ServiceDataInterface {
161 174
162 /** 175 /**
163 * 向指定的车辆下发消息短语 176 * 向指定的车辆下发消息短语
164 - * @param nbbm  
165 - * @param txt 177 + *
166 * @return 178 * @return
167 */ 179 */
168 @RequestMapping(value = "/send60Phrase", method = RequestMethod.POST) 180 @RequestMapping(value = "/send60Phrase", method = RequestMethod.POST)
169 - public int send60Phrase(@RequestBody Map<String, String> map,@RequestParam String secretKey){  
170 - try{ 181 + public int send60Phrase(@RequestBody Map<String, String> map, @RequestParam String secretKey) {
  182 + try {
171 String nbbm = map.get("nbbm"); 183 String nbbm = map.get("nbbm");
172 String txt = map.get("txt"); 184 String txt = map.get("txt");
173 String sender = map.get("sender"); 185 String sender = map.get("sender");
174 - if(txt.length() > 50) 186 + if (txt.length() > 50)
175 txt = txt.substring(0, 50); 187 txt = txt.substring(0, 50);
176 if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY)) 188 if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY))
177 return -500; 189 return -500;
178 190
179 //车辆和设备号对照 191 //车辆和设备号对照
180 String deviceId = BasicData.deviceId2NbbmMap.inverse().get(nbbm); 192 String deviceId = BasicData.deviceId2NbbmMap.inverse().get(nbbm);
181 - if(StringUtils.isEmpty(deviceId)) 193 + if (StringUtils.isEmpty(deviceId))
182 return -404; 194 return -404;
183 195
184 //检查设备是否在线 196 //检查设备是否在线
185 long t = System.currentTimeMillis(); 197 long t = System.currentTimeMillis();
186 GpsEntity gps = gpsRealData.get(deviceId); 198 GpsEntity gps = gpsRealData.get(deviceId);
187 - if(null == gps || (t - gps.getServerTimestamp()) > 1000 * 60 * 5) 199 + if (null == gps || (t - gps.getServerTimestamp()) > 1000 * 60 * 5)
188 return -405; 200 return -405;
189 201
190 Short dispatchInstruct = 0;//消息短语 202 Short dispatchInstruct = 0;//消息短语
@@ -199,7 +211,7 @@ public class ServiceDataInterface { @@ -199,7 +211,7 @@ public class ServiceDataInterface {
199 211
200 dayOfDirectives.put60(d60); 212 dayOfDirectives.put60(d60);
201 return d60.getMsgId(); 213 return d60.getMsgId();
202 - }catch (Exception e){ 214 + } catch (Exception e) {
203 logger.error("", e); 215 logger.error("", e);
204 return -500; 216 return -500;
205 } 217 }
@@ -207,23 +219,24 @@ public class ServiceDataInterface { @@ -207,23 +219,24 @@ public class ServiceDataInterface {
207 219
208 /** 220 /**
209 * 根据msg id 查询指令响应情况 221 * 根据msg id 查询指令响应情况
210 - * @param msgIDs 222 + *
  223 + * @param msgIds
211 * @return 224 * @return
212 */ 225 */
213 @RequestMapping("/findD60Reply") 226 @RequestMapping("/findD60Reply")
214 - public List<Map<String, Object>> findD60Reply(@RequestParam String msgIds){ 227 + public List<Map<String, Object>> findD60Reply(@RequestParam String msgIds) {
215 List<Map<String, Object>> rs = new ArrayList<>(); 228 List<Map<String, Object>> rs = new ArrayList<>();
216 - try{ 229 + try {
217 Map<String, Object> map = new HashMap(); 230 Map<String, Object> map = new HashMap();
218 231
219 List<String> ids = Splitter.on(",").splitToList(msgIds); 232 List<String> ids = Splitter.on(",").splitToList(msgIds);
220 D60 d60; 233 D60 d60;
221 - for(String id : ids){  
222 - if(StringUtils.isEmpty(id)) 234 + for (String id : ids) {
  235 + if (StringUtils.isEmpty(id))
223 continue; 236 continue;
224 237
225 d60 = dayOfDirectives.get(Integer.parseInt(id)); 238 d60 = dayOfDirectives.get(Integer.parseInt(id));
226 - if(null == d60) 239 + if (null == d60)
227 continue; 240 continue;
228 241
229 map.put("msgId", d60.getMsgId()); 242 map.put("msgId", d60.getMsgId());
@@ -231,9 +244,60 @@ public class ServiceDataInterface { @@ -231,9 +244,60 @@ public class ServiceDataInterface {
231 map.put("jsyReplyTime", d60.getReply47Time()); 244 map.put("jsyReplyTime", d60.getReply47Time());
232 rs.add(map); 245 rs.add(map);
233 } 246 }
234 - }catch (Exception e){ 247 + } catch (Exception e) {
235 logger.error("", e); 248 logger.error("", e);
236 } 249 }
237 return rs; 250 return rs;
238 } 251 }
  252 +
  253 + /**
  254 + * 获取路牌下所有班次
  255 + *
  256 + * @param lineCode
  257 + * @param lpName
  258 + * @return
  259 + */
  260 + @RequestMapping("/findByLpName")
  261 + public List<ScheduleRealInfo> findByLpName(@RequestParam String lineCode, @RequestParam String lpName, @RequestParam String secretKey) {
  262 + try {
  263 + if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY))
  264 + return null;
  265 +
  266 + List<ScheduleRealInfo> list = dayOfSchedule.getLpScheduleMap().get(lineCode + "_" + lpName);
  267 + return list;
  268 + } catch (Exception e) {
  269 + logger.error("", e);
  270 + }
  271 + return null;
  272 + }
  273 +
  274 + /**
  275 + * 调整出场班次待发,并烂掉后续班次(调派用)
  276 + *
  277 + * @param dad
  278 + * @return
  279 + */
  280 + @RequestMapping(value = "/dftzAndDestroy", method = RequestMethod.POST)
  281 + public Map<String, Object> dftzAndDestroy(@RequestBody DftzAndDestroy dad, @RequestParam String secretKey) {
  282 + if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY))
  283 + return null;
  284 + return tccExternalService.dftz(dad);
  285 + }
  286 +
  287 + /**
  288 + * 换人换车,(调派用)
  289 + * @return
  290 + */
  291 + @RequestMapping(value = "/tccHrhc", method = RequestMethod.POST)
  292 + public Map<String, Object> hrhc(@RequestBody String jsonStr, @RequestParam String secretKey){
  293 +
  294 + if (StringUtils.isEmpty(secretKey) || !secretKey.equals(SECRE_KEY))
  295 + return null;
  296 +
  297 + jsonStr = StringEscapeUtils.unescapeHtml4(jsonStr);
  298 + JSONObject rootObj = JSON.parseObject(jsonStr);
  299 +
  300 + List<ChangePersonCar> cpcs = JSONArray.parseArray(rootObj.getString("cpcs"), ChangePersonCar.class);
  301 + return tccExternalService.hrhc(cpcs, rootObj.getString("tccCode"), rootObj.getString("userId"));
  302 + }
239 } 303 }
src/main/java/com/bsth/controller/realcontrol/dto/DftzAndDestroy.java 0 → 100644
  1 +package com.bsth.controller.realcontrol.dto;
  2 +
  3 +/**
  4 + * Created by panzhao on 2018/3/22.
  5 + */
  6 +public class DftzAndDestroy {
  7 +
  8 + /**
  9 + * 要调整待发的出场班次ID
  10 + */
  11 + private Long dftzId;
  12 +
  13 + /**
  14 + * 要设置的待发时间
  15 + */
  16 + private String newTimeStr;
  17 +
  18 + /**
  19 + * 要烂掉的班次的 班次id ,号分割多个
  20 + */
  21 + private String destroyIdx;
  22 +
  23 + /**
  24 + * 备注
  25 + */
  26 + private String remarks;
  27 +
  28 + private String reason;
  29 +
  30 + /**
  31 + * 调派工号
  32 + */
  33 + private String userId;
  34 +
  35 + public String getNewTimeStr() {
  36 + return newTimeStr;
  37 + }
  38 +
  39 + public void setNewTimeStr(String newTimeStr) {
  40 + this.newTimeStr = newTimeStr;
  41 + }
  42 +
  43 + public String getDestroyIdx() {
  44 + return destroyIdx;
  45 + }
  46 +
  47 + public void setDestroyIdx(String destroyIdx) {
  48 + this.destroyIdx = destroyIdx;
  49 + }
  50 +
  51 + public String getRemarks() {
  52 + return remarks;
  53 + }
  54 +
  55 + public void setRemarks(String remarks) {
  56 + this.remarks = remarks;
  57 + }
  58 +
  59 + public Long getDftzId() {
  60 + return dftzId;
  61 + }
  62 +
  63 + public void setDftzId(Long dftzId) {
  64 + this.dftzId = dftzId;
  65 + }
  66 +
  67 + public String getReason() {
  68 + return reason;
  69 + }
  70 +
  71 + public void setReason(String reason) {
  72 + this.reason = reason;
  73 + }
  74 +
  75 + public String getUserId() {
  76 + return userId;
  77 + }
  78 +
  79 + public void setUserId(String userId) {
  80 + this.userId = userId;
  81 + }
  82 +}
src/main/java/com/bsth/controller/report/CalcSheetController.java 0 → 100644
  1 +package com.bsth.controller.report;
  2 +import java.util.List;
  3 +import java.util.Map;
  4 +
  5 +import org.springframework.beans.factory.annotation.Autowired;
  6 +import org.springframework.web.bind.annotation.RequestMapping;
  7 +import org.springframework.web.bind.annotation.RequestMethod;
  8 +import org.springframework.web.bind.annotation.RequestParam;
  9 +import org.springframework.web.bind.annotation.RestController;
  10 +import com.bsth.controller.BaseController;
  11 +import com.bsth.entity.sheet.CalcSheet;
  12 +import com.bsth.entity.sheet.Sheet;
  13 +import com.bsth.service.report.CalcSheetService;
  14 +
  15 +@RestController
  16 +@RequestMapping("calcSheet")
  17 +public class CalcSheetController extends BaseController<CalcSheet, Integer>{
  18 + @Autowired
  19 + CalcSheetService calcSheetService;
  20 + //发车到站准点率统计
  21 + @RequestMapping(value = "/countList",method = RequestMethod.GET)
  22 + public List<CalcSheet> countList(@RequestParam Map<String, Object> map){
  23 + List<CalcSheet> list=calcSheetService.countListCalcSheet(map);
  24 + return list;
  25 + }
  26 + //发车到站准点率列表
  27 + @RequestMapping(value = "/calcListSheet",method = RequestMethod.GET)
  28 + public List<CalcSheet> calcListSheet(@RequestParam Map<String, Object> map){
  29 + List<CalcSheet> list=calcSheetService.calcListSheet(map);
  30 + return list;
  31 + }
  32 + //发车站点准点率详细
  33 + @RequestMapping(value = "/calcSheet",method = RequestMethod.GET)
  34 + public List<Sheet> calcSheet(@RequestParam Map<String, Object> map){
  35 + List<Sheet> list=calcSheetService.calcSheet(map);
  36 + return list;
  37 + }
  38 +
  39 + //营运线路出车率统计
  40 + @RequestMapping(value = "/calcTurnoutrate",method = RequestMethod.GET)
  41 + public List<Map<String, Object>> calcTurnoutrate(@RequestParam Map<String, Object> map){
  42 + List<Map<String, Object>> list=calcSheetService.calcTurnoutrate(map);
  43 + return list;
  44 + }
  45 +
  46 +
  47 + @RequestMapping(value = "/calcTurnoutrateZgf",method = RequestMethod.GET)
  48 + public List<Map<String, Object>> calcTurnoutrateZgf(@RequestParam Map<String, Object> map){
  49 + List<Map<String, Object>> list=calcSheetService.calcTurnoutrateZgf(map);
  50 + return list;
  51 + }
  52 +}
src/main/java/com/bsth/controller/report/ReportController.java
1 package com.bsth.controller.report; 1 package com.bsth.controller.report;
2 2
  3 +import java.text.SimpleDateFormat;
3 import java.util.ArrayList; 4 import java.util.ArrayList;
4 import java.util.HashMap; 5 import java.util.HashMap;
5 import java.util.Iterator; 6 import java.util.Iterator;
@@ -15,8 +16,10 @@ import org.springframework.web.bind.annotation.RestController; @@ -15,8 +16,10 @@ import org.springframework.web.bind.annotation.RestController;
15 16
16 import com.alibaba.fastjson.JSONArray; 17 import com.alibaba.fastjson.JSONArray;
17 import com.alibaba.fastjson.JSONObject; 18 import com.alibaba.fastjson.JSONObject;
  19 +import com.bsth.data.BasicData;
18 import com.bsth.entity.StationRoute; 20 import com.bsth.entity.StationRoute;
19 import com.bsth.entity.excep.ArrivalInfo; 21 import com.bsth.entity.excep.ArrivalInfo;
  22 +import com.bsth.entity.mcy_forms.Singledata;
20 import com.bsth.entity.realcontrol.ScheduleRealInfo; 23 import com.bsth.entity.realcontrol.ScheduleRealInfo;
21 import com.bsth.service.report.ReportService; 24 import com.bsth.service.report.ReportService;
22 import com.bsth.util.ReportUtils; 25 import com.bsth.util.ReportUtils;
@@ -51,6 +54,7 @@ public class ReportController { @@ -51,6 +54,7 @@ public class ReportController {
51 Map<String, Object> m = new HashMap<String, Object>(); 54 Map<String, Object> m = new HashMap<String, Object>();
52 m.put("i", i); 55 m.put("i", i);
53 m.put("nbbm", a.getNbbm()); 56 m.put("nbbm", a.getNbbm());
  57 + m.put("pzh", a.getPzh());
54 m.put("stopName", a.getStopName()); 58 m.put("stopName", a.getStopName());
55 m.put("jzsj", a.getJzsj()); 59 m.put("jzsj", a.getJzsj());
56 m.put("czsj", a.getCzsj()); 60 m.put("czsj", a.getCzsj());
@@ -65,13 +69,15 @@ public class ReportController { @@ -65,13 +69,15 @@ public class ReportController {
65 resList.add(m); 69 resList.add(m);
66 i++; 70 i++;
67 } 71 }
68 -  
69 try { 72 try {
  73 + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
  74 + sdfSimple = new SimpleDateFormat("yyyyMMdd");
70 Map<String, Object> map=new HashMap<String, Object>(); 75 Map<String, Object> map=new HashMap<String, Object>();
71 listI.add(resList.iterator()); 76 listI.add(resList.iterator());
72 String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; 77 String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
73 ee.excelReplace(listI, new Object[] { map }, path + "mould/inoutstation.xls", 78 ee.excelReplace(listI, new Object[] { map }, path + "mould/inoutstation.xls",
74 - path + "export/班次到离站.xls"); 79 + path + "export/"+sdfSimple.format(sdfMonth.parse(date))
  80 + +"-"+clzbh+"-班次到离站.xls");
75 } catch (Exception e) { 81 } catch (Exception e) {
76 e.printStackTrace(); 82 e.printStackTrace();
77 } 83 }
@@ -138,11 +144,23 @@ public class ReportController { @@ -138,11 +144,23 @@ public class ReportController {
138 } 144 }
139 145
140 try { 146 try {
  147 + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
  148 + sdfSimple = new SimpleDateFormat("yyyyMMdd");
  149 + String lineName = BasicData.lineCode2NameMap.get(line);
  150 + String dateTime = "", startDate = "", endDate = "";
  151 + startDate = fcsj.substring(0, 10);
  152 + endDate = ddsj.substring(0, 10);
  153 + if(startDate.equals(endDate)){
  154 + dateTime = sdfSimple.format(sdfMonth.parse(startDate));
  155 + } else {
  156 + dateTime = sdfSimple.format(sdfMonth.parse(startDate))
  157 + +"-"+sdfSimple.format(sdfMonth.parse(endDate));
  158 + }
141 Map<String, Object> map=new HashMap<String, Object>(); 159 Map<String, Object> map=new HashMap<String, Object>();
142 listI.add(resList.iterator()); 160 listI.add(resList.iterator());
143 String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; 161 String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
144 ee.excelReplace(listI, new Object[] { map }, path + "mould/inoutstation.xls", 162 ee.excelReplace(listI, new Object[] { map }, path + "mould/inoutstation.xls",
145 - path + "export/班次到离站.xls"); 163 + path + "export/"+dateTime+"-"+lineName+"-班次到离站.xls");
146 } catch (Exception e) { 164 } catch (Exception e) {
147 e.printStackTrace(); 165 e.printStackTrace();
148 } 166 }
@@ -186,11 +204,14 @@ public class ReportController { @@ -186,11 +204,14 @@ public class ReportController {
186 lgqlList.add(newMap); 204 lgqlList.add(newMap);
187 } 205 }
188 try { 206 try {
  207 + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"),
  208 + sdfSimple = new SimpleDateFormat("yyyyMMdd");
189 listI.add(fwqlList.iterator()); 209 listI.add(fwqlList.iterator());
190 listI.add(lgqlList.iterator()); 210 listI.add(lgqlList.iterator());
191 String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; 211 String path = this.getClass().getResource("/").getPath() + "static/pages/forms/";
192 ee.excelReplace(listI, new Object[] { map }, path + "mould/jobSummary.xls", 212 ee.excelReplace(listI, new Object[] { map }, path + "mould/jobSummary.xls",
193 - path + "export/调度员工作汇总日报.xls"); 213 + path + "export/"+sdfSimple.format(sdfMonth.parse(date))
  214 + +"-"+lineName+"-调度员工作汇总日报.xls");
194 } catch (Exception e) { 215 } catch (Exception e) {
195 e.printStackTrace(); 216 e.printStackTrace();
196 } 217 }
@@ -337,10 +358,17 @@ public class ReportController { @@ -337,10 +358,17 @@ public class ReportController {
337 358
338 return lMap; 359 return lMap;
339 } 360 }
340 -  
341 -  
342 @RequestMapping(value="/online") 361 @RequestMapping(value="/online")
343 public Map<String, Object> online(@RequestParam Map<String, Object> map){ 362 public Map<String, Object> online(@RequestParam Map<String, Object> map){
344 return service.online(map); 363 return service.online(map);
345 } 364 }
  365 +
  366 +
  367 +
  368 + @RequestMapping(value = "/singledatatj", method = RequestMethod.GET)
  369 + public List<Singledata> singledatatj(@RequestParam Map<String, Object> map) {
  370 +
  371 + return service.singledatatj(map);
  372 + }
  373 +
346 } 374 }
src/main/java/com/bsth/controller/schedule/core/CarConfigInfoController.java
1 package com.bsth.controller.schedule.core; 1 package com.bsth.controller.schedule.core;
2 2
  3 +import com.bsth.common.Constants;
3 import com.bsth.common.ResponseCode; 4 import com.bsth.common.ResponseCode;
4 import com.bsth.controller.schedule.BController; 5 import com.bsth.controller.schedule.BController;
5 import com.bsth.entity.schedule.CarConfigInfo; 6 import com.bsth.entity.schedule.CarConfigInfo;
  7 +import com.bsth.entity.sys.CompanyAuthority;
6 import com.bsth.repository.schedule.CarConfigInfoRepository; 8 import com.bsth.repository.schedule.CarConfigInfoRepository;
7 import com.bsth.service.schedule.CarConfigInfoService; 9 import com.bsth.service.schedule.CarConfigInfoService;
8 import com.bsth.service.schedule.exception.ScheduleException; 10 import com.bsth.service.schedule.exception.ScheduleException;
@@ -12,6 +14,8 @@ import org.springframework.web.bind.annotation.RequestMethod; @@ -12,6 +14,8 @@ import org.springframework.web.bind.annotation.RequestMethod;
12 import org.springframework.web.bind.annotation.RequestParam; 14 import org.springframework.web.bind.annotation.RequestParam;
13 import org.springframework.web.bind.annotation.RestController; 15 import org.springframework.web.bind.annotation.RestController;
14 16
  17 +import javax.servlet.http.HttpServletRequest;
  18 +import javax.servlet.http.HttpSession;
15 import java.util.HashMap; 19 import java.util.HashMap;
16 import java.util.List; 20 import java.util.List;
17 import java.util.Map; 21 import java.util.Map;
@@ -58,4 +62,84 @@ public class CarConfigInfoController extends BController&lt;CarConfigInfo, Long&gt; { @@ -58,4 +62,84 @@ public class CarConfigInfoController extends BController&lt;CarConfigInfo, Long&gt; {
58 62
59 return rtn; 63 return rtn;
60 } 64 }
  65 +
  66 + @RequestMapping(value = "/validate_cars_2", method = RequestMethod.GET)
  67 + public Map<String, Object> validate_cars(@RequestParam Integer xlId, @RequestParam Integer clId) {
  68 + Map<String, Object> rtn = new HashMap<>();
  69 + try {
  70 + carConfigInfoService.validate_cars(xlId, clId);
  71 + rtn.put("status", ResponseCode.SUCCESS);
  72 + } catch (ScheduleException exp) {
  73 + rtn.put("status", ResponseCode.ERROR);
  74 + rtn.put("msg", exp.getMessage());
  75 + }
  76 +
  77 + return rtn;
  78 + }
  79 +
  80 + @RequestMapping(value = "/validate_cars_gs", method = RequestMethod.GET)
  81 + public Map<String, Object> validate_cars_gs(HttpServletRequest request, @RequestParam Map<String, Object> param) {
  82 + HttpSession session = request.getSession();
  83 + List<CompanyAuthority> cmyAuths = (List<CompanyAuthority>) session.getAttribute(Constants.COMPANY_AUTHORITYS);
  84 +
  85 + Map<String, Object> rtn = new HashMap<>();
  86 + try {
  87 + CarConfigInfo carConfigInfo = new CarConfigInfo(
  88 + null,
  89 + param.get("xl.id_eq"),
  90 + param.get("xl.name_eq"),
  91 + param.get("cl.id_eq")
  92 + );
  93 + carConfigInfoService.validate_cars_gs(carConfigInfo, cmyAuths);
  94 + rtn.put("status", ResponseCode.SUCCESS);
  95 + } catch (ScheduleException exp) {
  96 + rtn.put("status", ResponseCode.ERROR);
  97 + rtn.put("msg", exp.getMessage());
  98 + }
  99 +
  100 + return rtn;
  101 + }
  102 +
  103 + @RequestMapping(value = "/validate_cars_fgs", method = RequestMethod.GET)
  104 + public Map<String, Object> validate_cars_fgs(HttpServletRequest request, @RequestParam Map<String, Object> param) {
  105 + HttpSession session = request.getSession();
  106 + List<CompanyAuthority> cmyAuths = (List<CompanyAuthority>) session.getAttribute(Constants.COMPANY_AUTHORITYS);
  107 +
  108 + Map<String, Object> rtn = new HashMap<>();
  109 + try {
  110 + CarConfigInfo carConfigInfo = new CarConfigInfo(
  111 + null,
  112 + param.get("xl.id_eq"),
  113 + param.get("xl.name_eq"),
  114 + param.get("cl.id_eq")
  115 + );
  116 + carConfigInfoService.validate_cars_fgs(carConfigInfo, cmyAuths);
  117 + rtn.put("status", ResponseCode.SUCCESS);
  118 + } catch (ScheduleException exp) {
  119 + rtn.put("status", ResponseCode.ERROR);
  120 + rtn.put("msg", exp.getMessage());
  121 + }
  122 +
  123 + return rtn;
  124 + }
  125 +
  126 + @RequestMapping(value = "/validate_cars_config", method = RequestMethod.GET)
  127 + public Map<String, Object> validate_cars_config(@RequestParam Map<String, Object> param) {
  128 + Map<String, Object> rtn = new HashMap<>();
  129 + try {
  130 + CarConfigInfo carConfigInfo = new CarConfigInfo(
  131 + null,
  132 + param.get("xl.id_eq"),
  133 + param.get("xl.name_eq"),
  134 + param.get("cl.id_eq")
  135 + );
  136 + carConfigInfoService.validate_cars_config(carConfigInfo);
  137 + rtn.put("status", ResponseCode.SUCCESS);
  138 + } catch (ScheduleException exp) {
  139 + rtn.put("status", ResponseCode.ERROR);
  140 + rtn.put("msg", exp.getMessage());
  141 + }
  142 +
  143 + return rtn;
  144 + }
61 } 145 }
src/main/java/com/bsth/controller/schedule/core/EmployeeConfigInfoController.java
1 package com.bsth.controller.schedule.core; 1 package com.bsth.controller.schedule.core;
2 2
  3 +import com.bsth.common.Constants;
3 import com.bsth.common.ResponseCode; 4 import com.bsth.common.ResponseCode;
4 import com.bsth.controller.schedule.BController; 5 import com.bsth.controller.schedule.BController;
5 import com.bsth.entity.schedule.EmployeeConfigInfo; 6 import com.bsth.entity.schedule.EmployeeConfigInfo;
  7 +import com.bsth.entity.sys.CompanyAuthority;
6 import com.bsth.repository.schedule.EmployeeConfigInfoRepository; 8 import com.bsth.repository.schedule.EmployeeConfigInfoRepository;
7 import com.bsth.service.schedule.EmployeeConfigInfoService; 9 import com.bsth.service.schedule.EmployeeConfigInfoService;
8 import com.bsth.service.schedule.exception.ScheduleException; 10 import com.bsth.service.schedule.exception.ScheduleException;
9 import org.springframework.beans.factory.annotation.Autowired; 11 import org.springframework.beans.factory.annotation.Autowired;
10 import org.springframework.web.bind.annotation.*; 12 import org.springframework.web.bind.annotation.*;
11 13
  14 +import javax.servlet.http.HttpServletRequest;
  15 +import javax.servlet.http.HttpSession;
12 import java.util.HashMap; 16 import java.util.HashMap;
13 import java.util.List; 17 import java.util.List;
14 import java.util.Map; 18 import java.util.Map;
@@ -70,6 +74,75 @@ public class EmployeeConfigInfoController extends BController&lt;EmployeeConfigInfo @@ -70,6 +74,75 @@ public class EmployeeConfigInfoController extends BController&lt;EmployeeConfigInfo
70 return rtn; 74 return rtn;
71 } 75 }
72 76
  77 + @RequestMapping(value = "/validate_jsy_config", method = RequestMethod.GET)
  78 + public Map<String, Object> validate_jsy_config(@RequestParam Map<String, Object> param) {
  79 + Map<String, Object> rtn = new HashMap<>();
  80 + try {
  81 + EmployeeConfigInfo employeeConfigInfo = new EmployeeConfigInfo(
  82 + null,
  83 + param.get("xl.id_eq"),
  84 + param.get("xl.name_eq"),
  85 + param.get("jsy.id_eq"),
  86 + null
  87 + );
  88 + employeeConfigInfoService.validate_jsy_config(employeeConfigInfo);
  89 + rtn.put("status", ResponseCode.SUCCESS);
  90 + } catch (ScheduleException exp) {
  91 + rtn.put("status", ResponseCode.ERROR);
  92 + rtn.put("msg", exp.getMessage());
  93 + }
  94 +
  95 + return rtn;
  96 + }
  97 +
  98 + @RequestMapping(value = "/validate_jsy_gs", method = RequestMethod.GET)
  99 + public Map<String, Object> validate_jsy_gs(HttpServletRequest request, @RequestParam Map<String, Object> param) {
  100 + HttpSession session = request.getSession();
  101 + List<CompanyAuthority> cmyAuths = (List<CompanyAuthority>) session.getAttribute(Constants.COMPANY_AUTHORITYS);
  102 +
  103 + Map<String, Object> rtn = new HashMap<>();
  104 + try {
  105 + EmployeeConfigInfo employeeConfigInfo = new EmployeeConfigInfo(
  106 + null,
  107 + param.get("xl.id_eq"),
  108 + param.get("xl.name_eq"),
  109 + param.get("jsy.id_eq"),
  110 + null
  111 + );
  112 + employeeConfigInfoService.validate_jsy_gs(employeeConfigInfo, cmyAuths);
  113 + rtn.put("status", ResponseCode.SUCCESS);
  114 + } catch (ScheduleException exp) {
  115 + rtn.put("status", ResponseCode.ERROR);
  116 + rtn.put("msg", exp.getMessage());
  117 + }
  118 +
  119 + return rtn;
  120 + }
  121 +
  122 + @RequestMapping(value = "/validate_jsy_fgs", method = RequestMethod.GET)
  123 + public Map<String, Object> validate_jsy_fgs(HttpServletRequest request, @RequestParam Map<String, Object> param) {
  124 + HttpSession session = request.getSession();
  125 + List<CompanyAuthority> cmyAuths = (List<CompanyAuthority>) session.getAttribute(Constants.COMPANY_AUTHORITYS);
  126 +
  127 + Map<String, Object> rtn = new HashMap<>();
  128 + try {
  129 + EmployeeConfigInfo employeeConfigInfo = new EmployeeConfigInfo(
  130 + null,
  131 + param.get("xl.id_eq"),
  132 + param.get("xl.name_eq"),
  133 + param.get("jsy.id_eq"),
  134 + null
  135 + );
  136 + employeeConfigInfoService.validate_jsy_fgs(employeeConfigInfo, cmyAuths);
  137 + rtn.put("status", ResponseCode.SUCCESS);
  138 + } catch (ScheduleException exp) {
  139 + rtn.put("status", ResponseCode.ERROR);
  140 + rtn.put("msg", exp.getMessage());
  141 + }
  142 +
  143 + return rtn;
  144 + }
  145 +
73 @RequestMapping(value = "/validate_spy", method = RequestMethod.GET) 146 @RequestMapping(value = "/validate_spy", method = RequestMethod.GET)
74 public Map<String, Object> validate_spy(@RequestParam Map<String, Object> param) { 147 public Map<String, Object> validate_spy(@RequestParam Map<String, Object> param) {
75 Map<String, Object> rtn = new HashMap<>(); 148 Map<String, Object> rtn = new HashMap<>();
@@ -89,4 +162,70 @@ public class EmployeeConfigInfoController extends BController&lt;EmployeeConfigInfo @@ -89,4 +162,70 @@ public class EmployeeConfigInfoController extends BController&lt;EmployeeConfigInfo
89 } 162 }
90 return rtn; 163 return rtn;
91 } 164 }
  165 +
  166 + @RequestMapping(value = "/validate_spy_config", method = RequestMethod.GET)
  167 + public Map<String, Object> validate_spy_config(@RequestParam Map<String, Object> param) {
  168 + Map<String, Object> rtn = new HashMap<>();
  169 + try {
  170 + EmployeeConfigInfo employeeConfigInfo = new EmployeeConfigInfo(
  171 + null,
  172 + param.get("xl.id_eq"),
  173 + param.get("xl.name_eq"),
  174 + null,
  175 + param.get("spy.id_eq")
  176 + );
  177 + employeeConfigInfoService.validate_spy_config(employeeConfigInfo);
  178 + rtn.put("status", ResponseCode.SUCCESS);
  179 + } catch (ScheduleException exp) {
  180 + rtn.put("status", ResponseCode.ERROR);
  181 + rtn.put("msg", exp.getMessage());
  182 + }
  183 + return rtn;
  184 + }
  185 +
  186 + @RequestMapping(value = "/validate_spy_gs", method = RequestMethod.GET)
  187 + public Map<String, Object> validate_spy_gs(HttpServletRequest request, @RequestParam Map<String, Object> param) {
  188 + HttpSession session = request.getSession();
  189 + List<CompanyAuthority> cmyAuths = (List<CompanyAuthority>) session.getAttribute(Constants.COMPANY_AUTHORITYS);
  190 +
  191 + Map<String, Object> rtn = new HashMap<>();
  192 + try {
  193 + EmployeeConfigInfo employeeConfigInfo = new EmployeeConfigInfo(
  194 + null,
  195 + param.get("xl.id_eq"),
  196 + param.get("xl.name_eq"),
  197 + null,
  198 + param.get("spy.id_eq")
  199 + );
  200 + employeeConfigInfoService.validate_spy_gs(employeeConfigInfo, cmyAuths);
  201 + rtn.put("status", ResponseCode.SUCCESS);
  202 + } catch (ScheduleException exp) {
  203 + rtn.put("status", ResponseCode.ERROR);
  204 + rtn.put("msg", exp.getMessage());
  205 + }
  206 + return rtn;
  207 + }
  208 +
  209 + @RequestMapping(value = "/validate_spy_fgs", method = RequestMethod.GET)
  210 + public Map<String, Object> validate_spy_fgs(HttpServletRequest request, @RequestParam Map<String, Object> param) {
  211 + HttpSession session = request.getSession();
  212 + List<CompanyAuthority> cmyAuths = (List<CompanyAuthority>) session.getAttribute(Constants.COMPANY_AUTHORITYS);
  213 +
  214 + Map<String, Object> rtn = new HashMap<>();
  215 + try {
  216 + EmployeeConfigInfo employeeConfigInfo = new EmployeeConfigInfo(
  217 + null,
  218 + param.get("xl.id_eq"),
  219 + param.get("xl.name_eq"),
  220 + null,
  221 + param.get("spy.id_eq")
  222 + );
  223 + employeeConfigInfoService.validate_spy_fgs(employeeConfigInfo, cmyAuths);
  224 + rtn.put("status", ResponseCode.SUCCESS);
  225 + } catch (ScheduleException exp) {
  226 + rtn.put("status", ResponseCode.ERROR);
  227 + rtn.put("msg", exp.getMessage());
  228 + }
  229 + return rtn;
  230 + }
92 } 231 }
src/main/java/com/bsth/controller/schedule/core/SchedulePlanController.java
@@ -57,4 +57,21 @@ public class SchedulePlanController extends BController&lt;SchedulePlan, Long&gt; { @@ -57,4 +57,21 @@ public class SchedulePlanController extends BController&lt;SchedulePlan, Long&gt; {
57 return rtn; 57 return rtn;
58 } 58 }
59 59
  60 + /**
  61 + * 验证排班计划时间范围内规则的正确性。
  62 + * @return
  63 + * @throws Exception
  64 + */
  65 + @RequestMapping(value = "/valttrule/{xlid}/{from}/{to}", method = RequestMethod.GET)
  66 + public Map<String, Object> validateRule(
  67 + @PathVariable(value = "xlid") Integer xlid,
  68 + @PathVariable(value = "from") Date from,
  69 + @PathVariable(value = "to") Date to
  70 + ) throws Exception {
  71 + Map<String, Object> rtn = new HashMap<>();
  72 + rtn.put("status", ResponseCode.SUCCESS);
  73 + rtn.put("data", schedulePlanService.validateRule(xlid, from, to));
  74 + return rtn;
  75 + }
  76 +
60 } 77 }
src/main/java/com/bsth/controller/schedule/core/TTInfoDetailController.java
@@ -6,7 +6,9 @@ import com.bsth.entity.schedule.TTInfoDetail; @@ -6,7 +6,9 @@ import com.bsth.entity.schedule.TTInfoDetail;
6 import com.bsth.service.schedule.TTInfoDetailService; 6 import com.bsth.service.schedule.TTInfoDetailService;
7 import com.bsth.service.schedule.datatools.TTInfoDetailForEdit; 7 import com.bsth.service.schedule.datatools.TTInfoDetailForEdit;
8 import com.bsth.service.schedule.datatools.TTinfoDetailDynamicData; 8 import com.bsth.service.schedule.datatools.TTinfoDetailDynamicData;
  9 +import com.bsth.service.schedule.timetable.ExcelFormatType;
9 import com.bsth.service.schedule.utils.DataToolsFile; 10 import com.bsth.service.schedule.utils.DataToolsFile;
  11 +import com.bsth.service.schedule.utils.DataToolsFileType;
10 import org.springframework.beans.factory.annotation.Autowired; 12 import org.springframework.beans.factory.annotation.Autowired;
11 import org.springframework.web.bind.annotation.*; 13 import org.springframework.web.bind.annotation.*;
12 14
@@ -41,13 +43,14 @@ public class TTInfoDetailController extends BController&lt;TTInfoDetail, Long&gt; { @@ -41,13 +43,14 @@ public class TTInfoDetailController extends BController&lt;TTInfoDetail, Long&gt; {
41 */ 43 */
42 @RequestMapping(value = "/validate/sheet", method = RequestMethod.POST) 44 @RequestMapping(value = "/validate/sheet", method = RequestMethod.POST)
43 public Map<String, Object> validate_sheet( 45 public Map<String, Object> validate_sheet(
44 - String filename, String sheetname, Integer lineid, String linename, Integer lineversion) { 46 + String filename, String sheetname, Integer lineid, String linename, Integer lineversion, String excelFormatType) {
45 Map<String, Object> rtn = new HashMap<>(); 47 Map<String, Object> rtn = new HashMap<>();
46 try { 48 try {
47 if (lineversion == null) { 49 if (lineversion == null) {
48 throw new Exception("线路版本未知"); 50 throw new Exception("线路版本未知");
49 } 51 }
50 - ttInfoDetailService.validateExcelSheet(filename, sheetname, lineid, linename, lineversion); 52 + ttInfoDetailService.validateExcelSheet(filename, sheetname, lineid, linename, lineversion,
  53 + ExcelFormatType.getEnum(excelFormatType));
51 rtn.put("status", ResponseCode.SUCCESS); 54 rtn.put("status", ResponseCode.SUCCESS);
52 } catch (Exception exp) { 55 } catch (Exception exp) {
53 rtn.put("status", ResponseCode.ERROR); 56 rtn.put("status", ResponseCode.ERROR);
@@ -126,11 +129,19 @@ public class TTInfoDetailController extends BController&lt;TTInfoDetail, Long&gt; { @@ -126,11 +129,19 @@ public class TTInfoDetailController extends BController&lt;TTInfoDetail, Long&gt; {
126 } 129 }
127 130
128 131
129 - @RequestMapping(value = "/exportDTDFile", method = RequestMethod.POST) 132 + @RequestMapping(value = "/exportDTDFile/{type}", method = RequestMethod.POST)
130 public void exportFile( 133 public void exportFile(
131 - @RequestBody TTinfoDetailDynamicData.DTInfos dtInfos, 134 + @RequestBody TTinfoDetailDynamicData.DTInfos dtInfos, @PathVariable("type") String type,
132 HttpServletResponse response) throws Exception { 135 HttpServletResponse response) throws Exception {
133 - DataToolsFile dataToolsFile = ttInfoDetailService.exportDynamicTTinfo(dtInfos); 136 + DataToolsFile dataToolsFile = null;
  137 + if ("xls".equals(type)) {
  138 + dataToolsFile = ttInfoDetailService.exportDynamicTTinfo(dtInfos, DataToolsFileType.XLS);
  139 + } else if ("xlsx".equals(type)) {
  140 + dataToolsFile = ttInfoDetailService.exportDynamicTTinfo(dtInfos, DataToolsFileType.XLSX);
  141 + } else {
  142 + throw new Exception("未知的导出格式==>" + type);
  143 + }
  144 +
134 // 流输出导出文件 145 // 流输出导出文件
135 response.setHeader("content-type", "application/octet-stream"); 146 response.setHeader("content-type", "application/octet-stream");
136 response.setHeader("Content-Disposition", "attachment; filename=" + dataToolsFile.getFile().getName()); 147 response.setHeader("Content-Disposition", "attachment; filename=" + dataToolsFile.getFile().getName());
src/main/java/com/bsth/data/BasicData.java
@@ -28,7 +28,7 @@ public class BasicData { @@ -28,7 +28,7 @@ public class BasicData {
28 //公司代码和公司名对照(K: 公司编码,V:公司名) 28 //公司代码和公司名对照(K: 公司编码,V:公司名)
29 public static Map<String, String> businessCodeNameMap; 29 public static Map<String, String> businessCodeNameMap;
30 30
31 - //分公司公司代码和分公司公司名对照(K: 公司编码_分公司编码,V:分公司公司名) 31 + //分公司公司代码和分公司公司名对照(K: 分公司编码_公司编码,V:分公司公司名)
32 public static Map<String, String> businessFgsCodeNameMap; 32 public static Map<String, String> businessFgsCodeNameMap;
33 33
34 //设备号和车辆自编号 (K: 设备编码 ,V:车辆自编号) 34 //设备号和车辆自编号 (K: 设备编码 ,V:车辆自编号)
@@ -36,6 +36,9 @@ public class BasicData { @@ -36,6 +36,9 @@ public class BasicData {
36 36
37 //车辆自编号和公司代码对照 (K: 车辆自编号 ,V:公司代码) 37 //车辆自编号和公司代码对照 (K: 车辆自编号 ,V:公司代码)
38 public static Map<String, String> nbbm2CompanyCodeMap; 38 public static Map<String, String> nbbm2CompanyCodeMap;
  39 +
  40 + //车辆自编号和分公司代码对照 (K: 车辆自编号 ,V:分公司编码_公司编码)
  41 + public static Map<String, String> nbbm2FgsCompanyCodeMap;
39 42
40 //车辆自编号和牌照号对照 (K: 车辆自编号 ,V:牌照号) 43 //车辆自编号和牌照号对照 (K: 车辆自编号 ,V:牌照号)
41 public static Map<String, String> nbbmCompanyPlateMap; 44 public static Map<String, String> nbbmCompanyPlateMap;
@@ -52,6 +55,7 @@ public class BasicData { @@ -52,6 +55,7 @@ public class BasicData {
52 //线路编码和名称对照 55 //线路编码和名称对照
53 public static Map<String, String> lineCode2NameMap; 56 public static Map<String, String> lineCode2NameMap;
54 57
  58 + public static Map<String, String> lineCodeAllNameMap;
55 //停车场 59 //停车场
56 public static List<String> parkCodeList; 60 public static List<String> parkCodeList;
57 61
@@ -141,6 +145,7 @@ public class BasicData { @@ -141,6 +145,7 @@ public class BasicData {
141 */ 145 */
142 public int loadAllData() { 146 public int loadAllData() {
143 try { 147 try {
  148 + logger.info("开始加载基础数据..,");
144 //设备信息 149 //设备信息
145 loadDeviceInfo(); 150 loadDeviceInfo();
146 //站点信息 151 //站点信息
@@ -154,6 +159,7 @@ public class BasicData { @@ -154,6 +159,7 @@ public class BasicData {
154 //公司信息 159 //公司信息
155 loadBusinessInfo(); 160 loadBusinessInfo();
156 161
  162 + logger.info("load geo cache..,");
157 geoCacheData.loadData(); 163 geoCacheData.loadData();
158 station2ParkBuffer.saveAll(); 164 station2ParkBuffer.saveAll();
159 logger.info("加载基础数据成功!,"); 165 logger.info("加载基础数据成功!,");
@@ -189,6 +195,8 @@ public class BasicData { @@ -189,6 +195,8 @@ public class BasicData {
189 BiMap<String, String> deviceId2Nbbm = HashBiMap.create(); 195 BiMap<String, String> deviceId2Nbbm = HashBiMap.create();
190 //车辆和公司代码对照 196 //车辆和公司代码对照
191 Map<String, String> nbbm2CompanyCode = new HashMap<>(); 197 Map<String, String> nbbm2CompanyCode = new HashMap<>();
  198 + //车辆和分公司代码对照
  199 + Map<String, String> nbbm2FgsCompanyCode = new HashMap<>();
192 200
193 //车辆自编号和拍照号对照 201 //车辆自编号和拍照号对照
194 Map<String, String> nbbmCompanyPlate = new HashMap<>(); 202 Map<String, String> nbbmCompanyPlate = new HashMap<>();
@@ -199,11 +207,13 @@ public class BasicData { @@ -199,11 +207,13 @@ public class BasicData {
199 car = carIterator.next(); 207 car = carIterator.next();
200 deviceId2Nbbm.put(car.getEquipmentCode(), car.getInsideCode()); 208 deviceId2Nbbm.put(car.getEquipmentCode(), car.getInsideCode());
201 nbbm2CompanyCode.put(car.getInsideCode(), car.getBusinessCode()); 209 nbbm2CompanyCode.put(car.getInsideCode(), car.getBusinessCode());
  210 + nbbm2FgsCompanyCode.put(car.getInsideCode(), car.getBrancheCompanyCode() + "_" + car.getBusinessCode() );
202 nbbmCompanyPlate.put(car.getInsideCode(), car.getCarPlate()); 211 nbbmCompanyPlate.put(car.getInsideCode(), car.getCarPlate());
203 } 212 }
204 213
205 deviceId2NbbmMap = deviceId2Nbbm; 214 deviceId2NbbmMap = deviceId2Nbbm;
206 nbbm2CompanyCodeMap = nbbm2CompanyCode; 215 nbbm2CompanyCodeMap = nbbm2CompanyCode;
  216 + nbbm2FgsCompanyCodeMap = nbbm2FgsCompanyCode;
207 nbbmCompanyPlateMap =nbbmCompanyPlate; 217 nbbmCompanyPlateMap =nbbmCompanyPlate;
208 } 218 }
209 219
@@ -247,6 +257,8 @@ public class BasicData { @@ -247,6 +257,8 @@ public class BasicData {
247 CarConfigInfo cci; 257 CarConfigInfo cci;
248 while (allIterator.hasNext()) { 258 while (allIterator.hasNext()) {
249 cci = allIterator.next(); 259 cci = allIterator.next();
  260 + if(cci.getIsCancel())
  261 + continue;//排除已经报废的
250 ccMap.put(cci.getCl().getInsideCode(), cci.getXl()); 262 ccMap.put(cci.getCl().getInsideCode(), cci.getXl());
251 } 263 }
252 nbbm2LineMap = ccMap; 264 nbbm2LineMap = ccMap;
@@ -304,6 +316,14 @@ public class BasicData { @@ -304,6 +316,14 @@ public class BasicData {
304 lineId2ShangHaiCodeMap = id2SHcode; 316 lineId2ShangHaiCodeMap = id2SHcode;
305 lineCode2ShangHaiCodeMap = code2SHcode; 317 lineCode2ShangHaiCodeMap = code2SHcode;
306 stationName2YgcNumber = tempStationName2YgcNumber; 318 stationName2YgcNumber = tempStationName2YgcNumber;
  319 +
  320 + Map<String, String> code2nameAll = new HashMap<>();
  321 + Iterator<Line> iteratorAll = lineRepository.findAll().iterator();
  322 + while (iteratorAll.hasNext()) {
  323 + line = iteratorAll.next();
  324 + code2nameAll.put(line.getLineCode(), line.getName());
  325 + }
  326 + lineCodeAllNameMap=code2nameAll;
307 } 327 }
308 328
309 /** 329 /**
src/main/java/com/bsth/data/Station2ParkBuffer.java
@@ -50,6 +50,8 @@ public class Station2ParkBuffer implements CommandLineRunner { @@ -50,6 +50,8 @@ public class Station2ParkBuffer implements CommandLineRunner {
50 50
51 public static StationToPark get(String lineCode, String sName, String eName) { 51 public static StationToPark get(String lineCode, String sName, String eName) {
52 List<StationToPark> list = get(lineCode); 52 List<StationToPark> list = get(lineCode);
  53 + if(null == list)
  54 + return null;
53 StationToPark stp = null; 55 StationToPark stp = null;
54 for (StationToPark s : list) { 56 for (StationToPark s : list) {
55 if (s.getStationName().equals(sName) && s.getParkName().equals(eName)) { 57 if (s.getStationName().equals(sName) && s.getParkName().equals(eName)) {
src/main/java/com/bsth/data/car_out_info/CarOutInfoHandler.java
@@ -74,7 +74,6 @@ public class CarOutInfoHandler { @@ -74,7 +74,6 @@ public class CarOutInfoHandler {
74 save(pstList); 74 save(pstList);
75 pstList.clear(); 75 pstList.clear();
76 xlMaps.clear(); 76 xlMaps.clear();
77 - //logger.info("更新发车信息表!!");  
78 }catch (Exception e){ 77 }catch (Exception e){
79 logger.error("", e); 78 logger.error("", e);
80 } 79 }
src/main/java/com/bsth/data/directive/DirectivesPstThread.java
@@ -142,7 +142,7 @@ public class DirectivesPstThread extends Thread { @@ -142,7 +142,7 @@ public class DirectivesPstThread extends Thread {
142 142
143 tran.commit(status); 143 tran.commit(status);
144 144
145 - logger.info("64 入库成功: " + d64s.size()); 145 + //logger.info("64 入库成功: " + d64s.size());
146 }catch (Exception e){ 146 }catch (Exception e){
147 tran.rollback(status); 147 tran.rollback(status);
148 logger.error("", e); 148 logger.error("", e);
src/main/java/com/bsth/data/gpsdata_v2/GpsRealData.java
@@ -129,8 +129,11 @@ public class GpsRealData { @@ -129,8 +129,11 @@ public class GpsRealData {
129 Set<String> nbbmSet = dayOfSchedule.findCarByLineCode(lineCode);//计划用车 129 Set<String> nbbmSet = dayOfSchedule.findCarByLineCode(lineCode);//计划用车
130 130
131 Map<String, String> nbbm2deviceMap = BasicData.deviceId2NbbmMap.inverse(); 131 Map<String, String> nbbm2deviceMap = BasicData.deviceId2NbbmMap.inverse();
  132 + String deviceId;
132 for(String nbbm : nbbmSet){ 133 for(String nbbm : nbbmSet){
133 - set.add(nbbm2deviceMap.get(nbbm)); 134 + deviceId = nbbm2deviceMap.get(nbbm);
  135 + if(StringUtils.isNotEmpty(deviceId))
  136 + set.add(deviceId);
134 } 137 }
135 138
136 List<GpsEntity> rs = new ArrayList<>(); 139 List<GpsEntity> rs = new ArrayList<>();
src/main/java/com/bsth/data/gpsdata_v2/cache/GeoCacheData.java
@@ -21,6 +21,8 @@ import org.springframework.stereotype.Component; @@ -21,6 +21,8 @@ import org.springframework.stereotype.Component;
21 import java.sql.ResultSet; 21 import java.sql.ResultSet;
22 import java.sql.SQLException; 22 import java.sql.SQLException;
23 import java.util.*; 23 import java.util.*;
  24 +import java.util.concurrent.ConcurrentHashMap;
  25 +import java.util.concurrent.ConcurrentMap;
24 26
25 /** 27 /**
26 * 空间数据缓存 28 * 空间数据缓存
@@ -38,7 +40,7 @@ public class GeoCacheData { @@ -38,7 +40,7 @@ public class GeoCacheData {
38 /** 40 /**
39 * 路段编码和名称对照 41 * 路段编码和名称对照
40 */ 42 */
41 - private static Map<String, String> sectionCode2Name; 43 + private static ConcurrentMap<String, String> sectionCode2Name;
42 /** 44 /**
43 * 线路站点路由 45 * 线路站点路由
44 */ 46 */
@@ -50,15 +52,15 @@ public class GeoCacheData { @@ -50,15 +52,15 @@ public class GeoCacheData {
50 /** 52 /**
51 * 线路_上下行_站点编码 ——> 站点 53 * 线路_上下行_站点编码 ——> 站点
52 */ 54 */
53 - private static Map<String, StationRoute> routeCodeMap; 55 + private static ConcurrentMap<String, StationRoute> routeCodeMap;
54 /** 56 /**
55 * 停车场 57 * 停车场
56 */ 58 */
57 - public static Map<String, Polygon> tccMap; 59 + public static ConcurrentMap<String, Polygon> tccMap;
58 /** 60 /**
59 * 线路限速信息 61 * 线路限速信息
60 */ 62 */
61 - private static Map<String, Double> speedLimitMap; 63 + private static ConcurrentMap<String, Double> speedLimitMap;
62 64
63 @Autowired 65 @Autowired
64 JdbcTemplate jdbcTemplate; 66 JdbcTemplate jdbcTemplate;
@@ -118,7 +120,7 @@ public class GeoCacheData { @@ -118,7 +120,7 @@ public class GeoCacheData {
118 //按线路和走向分组 120 //按线路和走向分组
119 if (routeList.size() > 0) { 121 if (routeList.size() > 0) {
120 ArrayListMultimap<String, StationRoute> tempMap = ArrayListMultimap.create(); 122 ArrayListMultimap<String, StationRoute> tempMap = ArrayListMultimap.create();
121 - Map<String, StationRoute> codeMap = new HashMap<>(routeList.size()); 123 + ConcurrentMap<String, StationRoute> codeMap = new ConcurrentHashMap<>(routeList.size());
122 for (StationRoute sr : routeList) { 124 for (StationRoute sr : routeList) {
123 tempMap.put(sr.getLineCode() + "_" + sr.getDirections(), sr); 125 tempMap.put(sr.getLineCode() + "_" + sr.getDirections(), sr);
124 //站点编码 ——> 和路由顺序对照 126 //站点编码 ——> 和路由顺序对照
@@ -141,7 +143,7 @@ public class GeoCacheData { @@ -141,7 +143,7 @@ public class GeoCacheData {
141 //加载停车场数据 143 //加载停车场数据
142 String sql = "select PARK_CODE, ST_AsText(G_PARK_POINT) as G_PARK_POINT from bsth_c_car_park where park_code is not null and b_park_point is not null and destroy=0"; 144 String sql = "select PARK_CODE, ST_AsText(G_PARK_POINT) as G_PARK_POINT from bsth_c_car_park where park_code is not null and b_park_point is not null and destroy=0";
143 List<Map<String, Object>> tccList = jdbcTemplate.queryForList(sql); 145 List<Map<String, Object>> tccList = jdbcTemplate.queryForList(sql);
144 - Map<String, Polygon> tccTempMap = new HashMap<>(); 146 + ConcurrentMap<String, Polygon> tccTempMap = new ConcurrentHashMap<>();
145 147
146 Polygon polygon; 148 Polygon polygon;
147 for (Map<String, Object> tMap : tccList) { 149 for (Map<String, Object> tMap : tccList) {
@@ -163,7 +165,7 @@ public class GeoCacheData { @@ -163,7 +165,7 @@ public class GeoCacheData {
163 //加载线路限速信息 165 //加载线路限速信息
164 String sql = "select l.LINE_CODE,i.SPEEDING from bsth_c_line_information i left join bsth_c_line l on i.line=l.id where i.speed_limit is not null"; 166 String sql = "select l.LINE_CODE,i.SPEEDING from bsth_c_line_information i left join bsth_c_line l on i.line=l.id where i.speed_limit is not null";
165 List<Map<String, Object>> speedMap = jdbcTemplate.queryForList(sql); 167 List<Map<String, Object>> speedMap = jdbcTemplate.queryForList(sql);
166 - Map<String, Double> speedTempMap = new HashMap<>(); 168 + ConcurrentMap<String, Double> speedTempMap = new ConcurrentHashMap();
167 for (Map<String, Object> tMap : speedMap) { 169 for (Map<String, Object> tMap : speedMap) {
168 try { 170 try {
169 speedTempMap.put(tMap.get("LINE_CODE").toString(), Double.parseDouble(tMap.get("SPEEDING").toString())); 171 speedTempMap.put(tMap.get("LINE_CODE").toString(), Double.parseDouble(tMap.get("SPEEDING").toString()));
@@ -208,7 +210,7 @@ public class GeoCacheData { @@ -208,7 +210,7 @@ public class GeoCacheData {
208 if(sectionCacheTempMap.size() > 0) 210 if(sectionCacheTempMap.size() > 0)
209 sectionCacheMap = sectionCacheTempMap; 211 sectionCacheMap = sectionCacheTempMap;
210 212
211 - Map<String, String> sectionCode2NameTemp = new HashMap<>(); 213 + ConcurrentMap<String, String> sectionCode2NameTemp = new ConcurrentHashMap<>();
212 214
213 //加载全量路段编码和名称对照 215 //加载全量路段编码和名称对照
214 sql = "select SECTION_CODE,SECTION_NAME,CROSES_ROAD from bsth_c_section"; 216 sql = "select SECTION_CODE,SECTION_NAME,CROSES_ROAD from bsth_c_section";
src/main/java/com/bsth/data/gpsdata_v2/handlers/InStationProcess.java
@@ -81,10 +81,15 @@ public class InStationProcess { @@ -81,10 +81,15 @@ public class InStationProcess {
81 * @param prev 81 * @param prev
82 */ 82 */
83 private void inStation(GpsEntity gps, GpsEntity prev) { 83 private void inStation(GpsEntity gps, GpsEntity prev) {
  84 + logger.info("进站记录(到达时间:" + gps.getArrTime() + " 进出站状态:" + gps.getInstation() + " 站点编号:" + gps.getStopNo() + " deviceId:" + gps.getDeviceId() + " nbbm:" + gps.getNbbm() + ")");
84 ScheduleRealInfo sch = dayOfSchedule.executeCurr(gps.getNbbm()); 85 ScheduleRealInfo sch = dayOfSchedule.executeCurr(gps.getNbbm());
85 boolean flow = true; 86 boolean flow = true;
86 //要经过2个中途站才能进 87 //要经过2个中途站才能进
87 int count = GpsCacheData.lastInTrailsSize(gps); 88 int count = GpsCacheData.lastInTrailsSize(gps);
  89 + if (null != sch)
  90 + logger.info("班次id: -" + sch.getId() + " count:" + count+" sch.getZdzCode(): "+sch.getZdzCode()+" sch.getZdzCode(): "+sch.getZdzCode()+" gps.getCarparkNo() :"+gps.getCarparkNo());
  91 + else
  92 + logger.info("sch is null....");
88 List<StationRoute> routes = GeoCacheData.getStationRoute(gps.getLineId(), gps.getUpDown()); 93 List<StationRoute> routes = GeoCacheData.getStationRoute(gps.getLineId(), gps.getUpDown());
89 if (null != sch && isNormalSch(sch) && gps.getInstation() == 1 && routes.size() > 4 94 if (null != sch && isNormalSch(sch) && gps.getInstation() == 1 && routes.size() > 4
90 && count < 2) { 95 && count < 2) {
@@ -120,7 +125,7 @@ public class InStationProcess { @@ -120,7 +125,7 @@ public class InStationProcess {
120 private void inEndStation(ScheduleRealInfo sch, GpsEntity gps) { 125 private void inEndStation(ScheduleRealInfo sch, GpsEntity gps) {
121 String nbbm = sch.getClZbh(); 126 String nbbm = sch.getClZbh();
122 //校验进站前置约束 127 //校验进站前置约束
123 - if (!validInPremise(gps)) 128 + if (!validInPremise(gps) && isNormalSch(sch))
124 return; 129 return;
125 130
126 //实达时间不覆盖 131 //实达时间不覆盖
@@ -132,8 +137,6 @@ public class InStationProcess { @@ -132,8 +137,6 @@ public class InStationProcess {
132 137
133 sch.setZdsjActualAll(rsT); 138 sch.setZdsjActualAll(rsT);
134 sch.setSiginCompate(2); 139 sch.setSiginCompate(2);
135 - //通知误点停靠程序,有车辆到站  
136 - LateAdjustHandle.carArrive(gps);  
137 140
138 //持久化 141 //持久化
139 dayOfSchedule.save(sch); 142 dayOfSchedule.save(sch);
@@ -147,6 +150,10 @@ public class InStationProcess { @@ -147,6 +150,10 @@ public class InStationProcess {
147 else 150 else
148 dayOfSchedule.removeExecPlan(nbbm); 151 dayOfSchedule.removeExecPlan(nbbm);
149 152
  153 + //通知误点停靠程序,有车辆到站
  154 + LateAdjustHandle.carArrive(gps, next);
  155 + //LateAdjustHandle.carArrive(gps);
  156 +
150 //路牌的下一个班次,页面显示起点实际到达时间 157 //路牌的下一个班次,页面显示起点实际到达时间
151 ScheduleRealInfo lpNext = dayOfSchedule.nextByLp(sch); 158 ScheduleRealInfo lpNext = dayOfSchedule.nextByLp(sch);
152 if (lpNext != null) { 159 if (lpNext != null) {
@@ -158,7 +165,7 @@ public class InStationProcess { @@ -158,7 +165,7 @@ public class InStationProcess {
158 //webSocket 165 //webSocket
159 sendUtils.sendZdsj(sch, lpNext, doneSum); 166 sendUtils.sendZdsj(sch, lpNext, doneSum);
160 167
161 - logger.info("车辆:" + nbbm + " 班次:" + sch.getDfsj() + "到终点, 时间:" + sch.getZdsjActual()); 168 + logger.info("车辆:" + nbbm + " 班次:" + sch.getDfsj() + "到终点, 时间:" + sch.getZdsjActual() + " -stopNo: " + gps.getStopNo());
162 169
163 //清除车辆误点调整监听 170 //清除车辆误点调整监听
164 LateAdjustHandle.remove(sch); 171 LateAdjustHandle.remove(sch);
@@ -220,12 +227,12 @@ public class InStationProcess { @@ -220,12 +227,12 @@ public class InStationProcess {
220 private void inStationAndInPark(ScheduleRealInfo sch, ScheduleRealInfo next) { 227 private void inStationAndInPark(ScheduleRealInfo sch, ScheduleRealInfo next) {
221 LineConfig config = lineConfigData.get(sch.getXlBm()); 228 LineConfig config = lineConfigData.get(sch.getXlBm());
222 //限定出站既出场的停车场 229 //限定出站既出场的停车场
223 - String park = config.getTwinsPark();  
224 - boolean limitPark = StringUtils.isNotEmpty(park); 230 + List<String> parks = config.findTwinsParkList();
  231 + boolean limitPark = null != parks && parks.size() > 0;
225 232
226 233
227 if (next.getBcType().equals("in") && config.getOutConfig() == 2 && isEmptyMileage(next) 234 if (next.getBcType().equals("in") && config.getOutConfig() == 2 && isEmptyMileage(next)
228 - && (!limitPark || park.equals(next.getZdzCode()))) { 235 + && (!limitPark || parks.contains(next.getZdzCode()))) {
229 236
230 endSch(next, sch.getZdsjActualTime()); 237 endSch(next, sch.getZdsjActualTime());
231 238
src/main/java/com/bsth/data/gpsdata_v2/handlers/OutStationProcess.java
@@ -16,6 +16,8 @@ import org.slf4j.LoggerFactory; @@ -16,6 +16,8 @@ import org.slf4j.LoggerFactory;
16 import org.springframework.beans.factory.annotation.Autowired; 16 import org.springframework.beans.factory.annotation.Autowired;
17 import org.springframework.stereotype.Component; 17 import org.springframework.stereotype.Component;
18 18
  19 +import java.util.List;
  20 +
19 /** 21 /**
20 * 车辆出站处理程序 22 * 车辆出站处理程序
21 * Created by panzhao on 2017/11/16. 23 * Created by panzhao on 2017/11/16.
@@ -72,8 +74,13 @@ public class OutStationProcess { @@ -72,8 +74,13 @@ public class OutStationProcess {
72 * @param gps 74 * @param gps
73 */ 75 */
74 private void outStation(GpsEntity gps, GpsEntity prev) { 76 private void outStation(GpsEntity gps, GpsEntity prev) {
  77 + logger.info("出站记录(到达时间:" + gps.getArrTime() + " 进出站状态:" + gps.getInstation() + " 站点编号:" + gps.getStopNo() + " deviceId:" + gps.getDeviceId() + " nbbm:" + gps.getNbbm() + ")");
75 ScheduleRealInfo sch = dayOfSchedule.executeCurr(gps.getNbbm()); 78 ScheduleRealInfo sch = dayOfSchedule.executeCurr(gps.getNbbm());
76 79
  80 + if (null != sch)
  81 + logger.info("班次id: " + sch.getId() + " sch.getQdzCode():" + sch.getQdzCode() + " prev.getStopNo():" + prev.getStopNo() + " prev.getStopNo():" + prev.getStopNo() + " sch.getQdzCode():" + sch.getQdzCode() +" prev.getCarparkNo() :"+prev.getCarparkNo()+" diff :"+((int) (sch.getDfsjT() - gps.getTimestamp()))+" dayOfSchedule.isFirstOut(sch) && diff"+(dayOfSchedule.isFirstOut(sch))+" sch.getFcsjActual():"+sch.getFcsjActual()+" StringUtils.isNotEmpty(sch.getFcsjActual())&& !outManyFit(gps, sch) :"+(StringUtils.isNotEmpty(sch.getFcsjActual())&& !outManyFit(gps, sch))+ ")");
  82 + else
  83 + logger.info("sch is null....");
77 //起点发车 84 //起点发车
78 if (null != sch && 85 if (null != sch &&
79 ((sch.getQdzCode().equals(prev.getStopNo()) 86 ((sch.getQdzCode().equals(prev.getStopNo())
@@ -159,14 +166,14 @@ public class OutStationProcess { @@ -159,14 +166,14 @@ public class OutStationProcess {
159 try { 166 try {
160 LineConfig config = lineConfigData.get(sch.getXlBm()); 167 LineConfig config = lineConfigData.get(sch.getXlBm());
161 //限定出站既出场的停车场 168 //限定出站既出场的停车场
162 - String park = config.getTwinsPark();  
163 - boolean limitPark = StringUtils.isNotEmpty(park); 169 + List<String> parks = config.findTwinsParkList();
  170 + boolean limitPark = null != parks && parks.size() > 0;
164 171
165 if (config != null && config.getOutConfig() == 2) { 172 if (config != null && config.getOutConfig() == 2) {
166 //出站既出场 173 //出站既出场
167 ScheduleRealInfo schPrev = dayOfSchedule.prev(sch); 174 ScheduleRealInfo schPrev = dayOfSchedule.prev(sch);
168 if (isOut(schPrev) && isEmptyMileage(schPrev) 175 if (isOut(schPrev) && isEmptyMileage(schPrev)
169 - && (!limitPark || park.equals(schPrev.getQdzCode()))) { 176 + && (!limitPark || parks.contains(schPrev.getQdzCode()))) {
170 177
171 endSch(schPrev, sch.getFcsjActualTime()); 178 endSch(schPrev, sch.getFcsjActualTime());
172 179
src/main/java/com/bsth/data/safe_driv/SafeDrivDataLoadThread.java
@@ -20,12 +20,12 @@ import java.util.List; @@ -20,12 +20,12 @@ import java.util.List;
20 * Created by panzhao on 2017/4/6. 20 * Created by panzhao on 2017/4/6.
21 */ 21 */
22 @Component 22 @Component
23 -public class SafeDrivDataLoadThread extends Thread{ 23 +public class SafeDrivDataLoadThread extends Thread {
24 24
25 Logger logger = LoggerFactory.getLogger(this.getClass()); 25 Logger logger = LoggerFactory.getLogger(this.getClass());
26 26
27 static String url; 27 static String url;
28 - static CloseableHttpClient httpClient = null; 28 + static CloseableHttpClient httpClient;
29 static HttpGet get; 29 static HttpGet get;
30 static RequestConfig requestConfig; 30 static RequestConfig requestConfig;
31 static CloseableHttpResponse response; 31 static CloseableHttpResponse response;
@@ -33,12 +33,12 @@ public class SafeDrivDataLoadThread extends Thread{ @@ -33,12 +33,12 @@ public class SafeDrivDataLoadThread extends Thread{
33 static BufferedReader br; 33 static BufferedReader br;
34 34
35 static { 35 static {
36 - url = "http://180.166.5.82:9007/bsth-safedriving/Crlcxb/realtimeInterface.do"; 36 + url = "http://211.95.61.66:9007/bsth-safedriving/Crlcxb/realtimeInterface.do";
37 httpClient = HttpClients.createDefault(); 37 httpClient = HttpClients.createDefault();
38 get = new HttpGet(url); 38 get = new HttpGet(url);
39 requestConfig = RequestConfig.custom() 39 requestConfig = RequestConfig.custom()
40 - .setConnectTimeout(2500).setConnectionRequestTimeout(2000)  
41 - .setSocketTimeout(2500).build(); 40 + .setConnectTimeout(5500).setConnectionRequestTimeout(5000)
  41 + .setSocketTimeout(5500).build();
42 get.setConfig(requestConfig); 42 get.setConfig(requestConfig);
43 } 43 }
44 44
@@ -51,9 +51,7 @@ public class SafeDrivDataLoadThread extends Thread{ @@ -51,9 +51,7 @@ public class SafeDrivDataLoadThread extends Thread{
51 51
52 int statusCode = response.getStatusLine().getStatusCode(); 52 int statusCode = response.getStatusLine().getStatusCode();
53 if(statusCode != 200){ 53 if(statusCode != 200){
54 - get.abort();  
55 logger.error("http client status code: " + statusCode); 54 logger.error("http client status code: " + statusCode);
56 - return;  
57 } 55 }
58 56
59 entity = response.getEntity(); 57 entity = response.getEntity();
@@ -67,7 +65,7 @@ public class SafeDrivDataLoadThread extends Thread{ @@ -67,7 +65,7 @@ public class SafeDrivDataLoadThread extends Thread{
67 65
68 list = JSON.parseArray(stringBuffer.toString(), SafeDriv.class); 66 list = JSON.parseArray(stringBuffer.toString(), SafeDriv.class);
69 67
70 - for(SafeDriv sd : list){ 68 + for (SafeDriv sd : list) {
71 SafeDrivCenter.put(sd); 69 SafeDrivCenter.put(sd);
72 } 70 }
73 } 71 }
@@ -75,7 +73,7 @@ public class SafeDrivDataLoadThread extends Thread{ @@ -75,7 +73,7 @@ public class SafeDrivDataLoadThread extends Thread{
75 if (null != response) 73 if (null != response)
76 response.close(); 74 response.close();
77 } catch (Exception e) { 75 } catch (Exception e) {
78 - logger.error("安全驾驶接口报错了" , e.getMessage()); 76 + logger.error("安全驾驶接口报错了", e);
79 } 77 }
80 } 78 }
81 } 79 }
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
@@ -16,6 +16,8 @@ import com.bsth.service.schedule.SchedulePlanInfoService; @@ -16,6 +16,8 @@ import com.bsth.service.schedule.SchedulePlanInfoService;
16 import com.bsth.websocket.handler.SendUtils; 16 import com.bsth.websocket.handler.SendUtils;
17 import com.google.common.collect.ArrayListMultimap; 17 import com.google.common.collect.ArrayListMultimap;
18 import com.google.common.collect.HashMultimap; 18 import com.google.common.collect.HashMultimap;
  19 +import com.google.common.collect.ListMultimap;
  20 +import com.google.common.collect.Multimaps;
19 import org.apache.commons.lang3.StringUtils; 21 import org.apache.commons.lang3.StringUtils;
20 import org.joda.time.format.DateTimeFormat; 22 import org.joda.time.format.DateTimeFormat;
21 import org.joda.time.format.DateTimeFormatter; 23 import org.joda.time.format.DateTimeFormatter;
@@ -38,6 +40,7 @@ import java.text.SimpleDateFormat; @@ -38,6 +40,7 @@ import java.text.SimpleDateFormat;
38 import java.util.*; 40 import java.util.*;
39 import java.util.concurrent.ConcurrentHashMap; 41 import java.util.concurrent.ConcurrentHashMap;
40 import java.util.concurrent.ConcurrentLinkedQueue; 42 import java.util.concurrent.ConcurrentLinkedQueue;
  43 +import java.util.concurrent.ConcurrentMap;
41 44
42 /** 45 /**
43 * @author PanZhao 46 * @author PanZhao
@@ -53,20 +56,23 @@ public class DayOfSchedule { @@ -53,20 +56,23 @@ public class DayOfSchedule {
53 //按线路分组的 “原始计划” 排班数据 56 //按线路分组的 “原始计划” 排班数据
54 public static Map<String, List<SchedulePlanInfo>> schedulePlanMap; 57 public static Map<String, List<SchedulePlanInfo>> schedulePlanMap;
55 58
56 - // 按车辆分组的班次数据  
57 - private static ArrayListMultimap<String, ScheduleRealInfo> nbbmScheduleMap; 59 + // 按车辆索引的班次数据
  60 + private static ListMultimap<String, ScheduleRealInfo> nbbmScheduleMap;
58 61
59 - //按线路分组计划用车 62 + // 按营运公司索引的班次数据
  63 + private static ListMultimap<String, ScheduleRealInfo> gsBmScheduleMap;
  64 +
  65 + //按线路索引计划用车
60 private static HashMultimap<String, String> lineNbbmsMap; 66 private static HashMultimap<String, String> lineNbbmsMap;
61 67
62 - //按路牌分组的班次数据 线路编码_路牌名称 ——> 班次list 68 + //按路牌索引班次数据 线路编码_路牌名称 ——> 班次list
63 private static ArrayListMultimap<String, ScheduleRealInfo> lpScheduleMap; 69 private static ArrayListMultimap<String, ScheduleRealInfo> lpScheduleMap;
64 70
65 // 班次主键映射 71 // 班次主键映射
66 - private static Map<Long, ScheduleRealInfo> id2SchedulMap; 72 + private static ConcurrentMap<Long, ScheduleRealInfo> id2SchedulMap;
67 73
68 //车辆 ——> 当前执行班次 74 //车辆 ——> 当前执行班次
69 - private static Map<String, ScheduleRealInfo> carExecutePlanMap; 75 + private static ConcurrentMap<String, ScheduleRealInfo> carExecutePlanMap;
70 76
71 // 持久化 77 // 持久化
72 public static ConcurrentLinkedQueue<ScheduleRealInfo> pstBuffer; 78 public static ConcurrentLinkedQueue<ScheduleRealInfo> pstBuffer;
@@ -103,6 +109,9 @@ public class DayOfSchedule { @@ -103,6 +109,9 @@ public class DayOfSchedule {
103 109
104 static { 110 static {
105 nbbmScheduleMap = ArrayListMultimap.create(); 111 nbbmScheduleMap = ArrayListMultimap.create();
  112 + nbbmScheduleMap = Multimaps.synchronizedListMultimap(nbbmScheduleMap);
  113 +
  114 + gsBmScheduleMap = ArrayListMultimap.create();
106 lpScheduleMap = ArrayListMultimap.create(); 115 lpScheduleMap = ArrayListMultimap.create();
107 lineNbbmsMap = HashMultimap.create(); 116 lineNbbmsMap = HashMultimap.create();
108 117
@@ -324,7 +333,7 @@ public class DayOfSchedule { @@ -324,7 +333,7 @@ public class DayOfSchedule {
324 * @Description: TODO(从计划排班表加载数据) 333 * @Description: TODO(从计划排班表加载数据)
325 */ 334 */
326 public List<ScheduleRealInfo> loadPlanSch(String lineCode, String schDate) { 335 public List<ScheduleRealInfo> loadPlanSch(String lineCode, String schDate) {
327 - logger.info("从计划排班表恢复排班,lineCode: " + lineCode + ", schDate: " + schDate); 336 + //logger.info("从计划排班表恢复排班,lineCode: " + lineCode + ", schDate: " + schDate);
328 List<ScheduleRealInfo> realList = new ArrayList<>(); 337 List<ScheduleRealInfo> realList = new ArrayList<>();
329 338
330 try { 339 try {
@@ -340,6 +349,7 @@ public class DayOfSchedule { @@ -340,6 +349,7 @@ public class DayOfSchedule {
340 349
341 // 转换为实际排班 350 // 转换为实际排班
342 realList = JSONArray.parseArray(JSON.toJSONString(planItr), ScheduleRealInfo.class); 351 realList = JSONArray.parseArray(JSON.toJSONString(planItr), ScheduleRealInfo.class);
  352 + logger.info("从计划排班表恢复排班,lineCode: " + lineCode + ", schDate: " + schDate + ", size:" + realList.size());
343 353
344 Date d = new Date(); 354 Date d = new Date();
345 SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); 355 SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
@@ -610,8 +620,8 @@ public class DayOfSchedule { @@ -610,8 +620,8 @@ public class DayOfSchedule {
610 outConfig = config.getOutConfig(); 620 outConfig = config.getOutConfig();
611 621
612 //限定出站既出场的停车场 622 //限定出站既出场的停车场
613 - String park = config.getTwinsPark();  
614 - boolean limitPark = StringUtils.isNotEmpty(park); 623 + List<String> parks = config.findTwinsParkList();
  624 + boolean limitPark = null != parks && parks.size() > 0;
615 boolean flag = false; 625 boolean flag = false;
616 ScheduleRealInfo next = null; 626 ScheduleRealInfo next = null;
617 for (ScheduleRealInfo temp : list) { 627 for (ScheduleRealInfo temp : list) {
@@ -624,8 +634,8 @@ public class DayOfSchedule { @@ -624,8 +634,8 @@ public class DayOfSchedule {
624 continue; 634 continue;
625 635
626 //出站既出场,忽略出场班次 636 //出站既出场,忽略出场班次
627 - if (outConfig == 2 && temp.getBcType().equals("out") && (temp.getBcsj()==0 || temp.getJhlcOrig().equals(0))  
628 - && (!limitPark || park.equals(temp.getQdzCode()))) 637 + if (outConfig == 2 && temp.getBcType().equals("out") && isEmptyMileage(temp)
  638 + && (!limitPark || parks.contains(temp.getQdzCode())))
629 continue; 639 continue;
630 640
631 if (flag) { 641 if (flag) {
@@ -636,6 +646,10 @@ public class DayOfSchedule { @@ -636,6 +646,10 @@ public class DayOfSchedule {
636 return next; 646 return next;
637 } 647 }
638 648
  649 + private boolean isEmptyMileage(ScheduleRealInfo sch) {
  650 + return sch.getBcsj() == 0 || sch.getJhlcOrig().intValue() == 0;
  651 + }
  652 +
639 /** 653 /**
640 * 下一个班次 654 * 下一个班次
641 * 655 *
@@ -672,8 +686,8 @@ public class DayOfSchedule { @@ -672,8 +686,8 @@ public class DayOfSchedule {
672 outConfig = config.getOutConfig(); 686 outConfig = config.getOutConfig();
673 687
674 //限定出站既出场的停车场 688 //限定出站既出场的停车场
675 - String park = config.getTwinsPark();  
676 - boolean limitPark = StringUtils.isNotEmpty(park); 689 + List<String> parks = config.findTwinsParkList();
  690 + boolean limitPark = null != parks && parks.size() > 0;
677 boolean flag = false; 691 boolean flag = false;
678 ScheduleRealInfo next = null; 692 ScheduleRealInfo next = null;
679 for (ScheduleRealInfo temp : list) { 693 for (ScheduleRealInfo temp : list) {
@@ -683,8 +697,8 @@ public class DayOfSchedule { @@ -683,8 +697,8 @@ public class DayOfSchedule {
683 } 697 }
684 698
685 //出站既出场,忽略出场班次 699 //出站既出场,忽略出场班次
686 - if (outConfig == 2 && temp.getBcType().equals("out") && (temp.getBcsj()==0 || temp.getJhlcOrig().equals(0))  
687 - && (!limitPark || park.equals(temp.getQdzCode()))) 700 + if (outConfig == 2 && temp.getBcType().equals("out") && isEmptyMileage(temp)
  701 + && (!limitPark || parks.contains(temp.getQdzCode())))
688 continue; 702 continue;
689 703
690 if (flag) { 704 if (flag) {
@@ -979,18 +993,21 @@ public class DayOfSchedule { @@ -979,18 +993,21 @@ public class DayOfSchedule {
979 String rq = currSchDateMap.get(lineCode); 993 String rq = currSchDateMap.get(lineCode);
980 if (StringUtils.isNotEmpty(rq)) { 994 if (StringUtils.isNotEmpty(rq)) {
981 List<ScheduleRealInfo> all = findByLineCode(lineCode); 995 List<ScheduleRealInfo> all = findByLineCode(lineCode);
982 - //解除gps 和班次之间的关联  
983 - List<ScheduleRealInfo> unions = calcUnion(all, carExecutePlanMap.values());  
984 - for (ScheduleRealInfo sch : unions) {  
985 - removeExecPlan(sch.getClZbh());  
986 - }  
987 - //解除调度指令和班次的外键约束  
988 - StringBuilder inStr = new StringBuilder("(");  
989 - for (ScheduleRealInfo sch : all) {  
990 - inStr.append(sch.getId() + ","); 996 +
  997 + if(null != all && all.size() > 0){
  998 + //解除gps 和班次之间的关联
  999 + List<ScheduleRealInfo> unions = calcUnion(all, carExecutePlanMap.values());
  1000 + for (ScheduleRealInfo sch : unions) {
  1001 + removeExecPlan(sch.getClZbh());
  1002 + }
  1003 + //解除调度指令和班次的外键约束
  1004 + StringBuilder inStr = new StringBuilder("(");
  1005 + for (ScheduleRealInfo sch : all) {
  1006 + inStr.append(sch.getId() + ",");
  1007 + }
  1008 + inStr.deleteCharAt(inStr.length() - 1).append(")");
  1009 + jdbcTemplate.update(Constants.MULTI_REMOVE_DIRECTIVE_SCH_FK + " " + inStr.toString());
991 } 1010 }
992 - inStr.deleteCharAt(inStr.length() - 1).append(")");  
993 - jdbcTemplate.update(Constants.MULTI_REMOVE_DIRECTIVE_SCH_FK + " " + inStr.toString());  
994 1011
995 //删除班次数据 1012 //删除班次数据
996 removeRealSch(lineCode, rq); 1013 removeRealSch(lineCode, rq);
@@ -1095,7 +1112,7 @@ public class DayOfSchedule { @@ -1095,7 +1112,7 @@ public class DayOfSchedule {
1095 */ 1112 */
1096 public int reCalcIdMaps(){ 1113 public int reCalcIdMaps(){
1097 Collection<ScheduleRealInfo> all = findAll(); 1114 Collection<ScheduleRealInfo> all = findAll();
1098 - Map<Long, ScheduleRealInfo> id2SchedulMapCopy = new ConcurrentHashMap<>(); 1115 + ConcurrentMap<Long, ScheduleRealInfo> id2SchedulMapCopy = new ConcurrentHashMap<>();
1099 1116
1100 for(ScheduleRealInfo sch : all){ 1117 for(ScheduleRealInfo sch : all){
1101 id2SchedulMapCopy.put(sch.getId(), sch); 1118 id2SchedulMapCopy.put(sch.getId(), sch);
@@ -1123,4 +1140,42 @@ public class DayOfSchedule { @@ -1123,4 +1140,42 @@ public class DayOfSchedule {
1123 public String sizeString(){ 1140 public String sizeString(){
1124 return id2SchedulMap.size() + "/" + nbbmScheduleMap.size(); 1141 return id2SchedulMap.size() + "/" + nbbmScheduleMap.size();
1125 } 1142 }
  1143 +
  1144 +
  1145 + /**
  1146 + * 按公司编码分组数据
  1147 + */
  1148 + public void groupByGsbm(){
  1149 + Collection<ScheduleRealInfo> all = findAll();
  1150 + ListMultimap<String, ScheduleRealInfo> gsBmMaps = ArrayListMultimap.create();
  1151 +
  1152 + for(ScheduleRealInfo sch : all){
  1153 + gsBmMaps.put(sch.getGsBm(), sch);
  1154 + }
  1155 +
  1156 + if(gsBmMaps.size() > 0){
  1157 + gsBmScheduleMap = null;
  1158 + gsBmScheduleMap = gsBmMaps;
  1159 + }
  1160 + }
  1161 +
  1162 + public Collection<ScheduleRealInfo> findByGsbm(String gsbm){
  1163 + return gsBmScheduleMap.get(gsbm);
  1164 + }
  1165 + /**
  1166 + * 删除班次,删除内存中未清理掉的非当天的班次
  1167 + * @createDate 2019.05.13
  1168 + * @author zhangxianzhou
  1169 + * @param sch
  1170 + */
  1171 + public void deleteBC(ScheduleRealInfo sch) {
  1172 + nbbmScheduleMap.remove(sch.getClZbh(), sch);
  1173 + id2SchedulMap.remove(sch.getId());
  1174 + lpScheduleMap.remove(sch.getXlBm() + "_" + sch.getLpName(), sch);
  1175 + //如果正在执行该班次
  1176 + if (carExecutePlanMap.get(sch.getClZbh()) == sch) {
  1177 + //重新计算车辆当前执行班次
  1178 + reCalcExecPlan(sch.getClZbh());
  1179 + }
  1180 + }
1126 } 1181 }
1127 \ No newline at end of file 1182 \ No newline at end of file
src/main/java/com/bsth/data/schedule/SchAttrCalculator.java
@@ -213,12 +213,12 @@ public class SchAttrCalculator { @@ -213,12 +213,12 @@ public class SchAttrCalculator {
213 213
214 int outConfig = -1; 214 int outConfig = -1;
215 //限定出站既出场的停车场 215 //限定出站既出场的停车场
216 - String park = null; 216 + List<String> parks = null;
217 if (conf != null) { 217 if (conf != null) {
218 outConfig = conf.getOutConfig(); 218 outConfig = conf.getOutConfig();
219 - park = conf.getTwinsPark(); 219 + parks = conf.findTwinsParkList();
220 } 220 }
221 - boolean limitPark = StringUtils.isNotEmpty(park); 221 + boolean limitPark = null != parks && parks.size() > 0;
222 222
223 ScheduleRealInfo sch, prev = null; 223 ScheduleRealInfo sch, prev = null;
224 for(int i = list.size() - 1; i >= 0; i --){ 224 for(int i = list.size() - 1; i >= 0; i --){
@@ -226,7 +226,7 @@ public class SchAttrCalculator { @@ -226,7 +226,7 @@ public class SchAttrCalculator {
226 226
227 //如果是出站既出场,忽略出场班次 227 //如果是出站既出场,忽略出场班次
228 if (outConfig == 2 && sch.getBcType().equals("out") 228 if (outConfig == 2 && sch.getBcType().equals("out")
229 - && (!limitPark || park.equals(sch.getQdzCode())) 229 + && (!limitPark || parks.contains(sch.getQdzCode()))
230 && (sch.getBcsj()==0 || sch.getJhlcOrig().intValue()==0)) 230 && (sch.getBcsj()==0 || sch.getJhlcOrig().intValue()==0))
231 continue; 231 continue;
232 232
src/main/java/com/bsth/data/schedule/ScheduleComparator.java
@@ -9,12 +9,10 @@ import java.util.HashMap; @@ -9,12 +9,10 @@ import java.util.HashMap;
9 import java.util.Map; 9 import java.util.Map;
10 10
11 /** 11 /**
12 - *  
13 - * @ClassName: ScheduleComparator  
14 - * @Description: TODO(实际班次排序器)  
15 * @author PanZhao 12 * @author PanZhao
16 - * @date 2016年8月15日 下午1:53:28  
17 - * 13 + * @ClassName: ScheduleComparator
  14 + * @Description: TODO(实际班次排序器)
  15 + * @date 2016年8月15日 下午1:53:28
18 */ 16 */
19 public class ScheduleComparator { 17 public class ScheduleComparator {
20 18
@@ -26,71 +24,62 @@ public class ScheduleComparator { @@ -26,71 +24,62 @@ public class ScheduleComparator {
26 }*/ 24 }*/
27 25
28 26
29 - static Map<String, Integer> bcTypeOrderMap = new HashMap<>(); 27 + static Map<String, Integer> bcTypeOrderMap = new HashMap<>();
30 28
31 - static{  
32 - bcTypeOrderMap.put("out", 0);  
33 - bcTypeOrderMap.put("normal", 1);  
34 - bcTypeOrderMap.put("region", 2);  
35 - bcTypeOrderMap.put("major", 3);  
36 - bcTypeOrderMap.put("venting", 4);  
37 - bcTypeOrderMap.put("ldks", 5);  
38 - bcTypeOrderMap.put("in", 6);  
39 - }  
40 -  
41 - public static class FCSJ implements Comparator<ScheduleRealInfo>{ 29 + static {
  30 + bcTypeOrderMap.put("out", 0);
  31 + bcTypeOrderMap.put("normal", 1);
  32 + bcTypeOrderMap.put("region", 2);
  33 + bcTypeOrderMap.put("major", 3);
  34 + bcTypeOrderMap.put("venting", 4);
  35 + bcTypeOrderMap.put("ldks", 5);
  36 + bcTypeOrderMap.put("in", 6);
  37 + }
42 38
43 - @Override  
44 - public int compare(ScheduleRealInfo s1, ScheduleRealInfo s2) {  
45 - int diff = (int) (s1.getFcsjT() - s2.getFcsjT());  
46 - return diff!=0?diff:typeOrder(s1.getBcType()) - typeOrder(s2.getBcType());  
47 - }  
48 - } 39 + public static class FCSJ implements Comparator<ScheduleRealInfo> {
49 40
50 - private static int typeOrder(String bcType){  
51 - return bcTypeOrderMap.get(bcType)!=null?bcTypeOrderMap.get(bcType):0;  
52 - } 41 + @Override
  42 + public int compare(ScheduleRealInfo s1, ScheduleRealInfo s2) {
  43 + int diff = (int) (s1.getFcsjT() - s2.getFcsjT());
  44 + return diff != 0 ? diff : typeOrder(s1.getBcType()) - typeOrder(s2.getBcType());
  45 + }
  46 + }
  47 +
  48 + private static int typeOrder(String bcType) {
  49 + return bcTypeOrderMap.get(bcType) != null ? bcTypeOrderMap.get(bcType) : 0;
  50 + }
53 51
54 - public static class DFSJ implements Comparator<ScheduleRealInfo>{ 52 + public static class DFSJ implements Comparator<ScheduleRealInfo> {
55 53
56 static Logger logger = LoggerFactory.getLogger(DFSJ.class); 54 static Logger logger = LoggerFactory.getLogger(DFSJ.class);
57 55
58 - @Override  
59 - public int compare(ScheduleRealInfo s1, ScheduleRealInfo s2) {  
60 - try{ 56 + @Override
  57 + public int compare(ScheduleRealInfo s1, ScheduleRealInfo s2) {
  58 + try {
  59 + int diff;
  60 + if (!s2.isSflj() && !s1.isSflj()) {
  61 + diff = (int) (s1.getFcsjT() - s2.getFcsjT());
61 62
62 - if(!s1.getXlBm().equals(s2.getXlBm()) || !s1.getLpName().equals(s2.getLpName())){  
63 - int diff = (int) (s1.getDfsjT() - s2.getDfsjT());  
64 - return diff!=0?diff:typeOrder(s1.getBcType()) - typeOrder(s2.getBcType());  
65 - }  
66 - else{  
67 - /**  
68 - * 按时刻表发车顺序号  
69 - */  
70 - Integer fc1 = s1.getFcno();  
71 - Integer fc2 = s2.getFcno();  
72 - if(null != fc1 && null != fc2){  
73 - return fc1.intValue()==fc2.intValue()?0:fc1.intValue()-fc2.intValue();  
74 - }  
75 - else{  
76 - int diff = (int) (s1.getDfsjT() - s2.getDfsjT());  
77 - return diff!=0?diff:typeOrder(s1.getBcType()) - typeOrder(s2.getBcType());  
78 - } 63 + } else {
  64 + diff = (int) (s1.getDfsjT() - s2.getDfsjT());
79 } 65 }
80 - }catch (Exception e){ 66 +
  67 + return diff != 0 ? diff : typeOrder(s1.getBcType()) - typeOrder(s2.getBcType());
  68 +
  69 + } catch (Exception e) {
81 logger.error("排序异常", e); 70 logger.error("排序异常", e);
82 - return s1.getDfsjT() - s2.getDfsjT() > 0?1:-1; 71 + return s1.getDfsjT() - s2.getDfsjT() > 0 ? 1 : -1;
83 } 72 }
84 - }  
85 - } 73 + }
  74 + }
86 75
87 - public static class DFSJ2 implements Comparator<ScheduleRealInfo>{ 76 + public static class DFSJ2 implements Comparator<ScheduleRealInfo> {
88 77
89 78
90 @Override 79 @Override
91 public int compare(ScheduleRealInfo s1, ScheduleRealInfo s2) { 80 public int compare(ScheduleRealInfo s1, ScheduleRealInfo s2) {
92 int diff = (int) (s1.getDfsjT() - s2.getDfsjT()); 81 int diff = (int) (s1.getDfsjT() - s2.getDfsjT());
93 - return diff!=0?diff:typeOrder(s1.getBcType()) - typeOrder(s2.getBcType()); 82 + return diff != 0 ? diff : typeOrder(s1.getBcType()) - typeOrder(s2.getBcType());
94 } 83 }
95 } 84 }
96 } 85 }
src/main/java/com/bsth/data/schedule/e_state_check/ScheduleStationCodeChecker.java 0 → 100644
  1 +package com.bsth.data.schedule.e_state_check;
  2 +
  3 +import com.alibaba.fastjson.JSON;
  4 +import com.bsth.data.schedule.DayOfSchedule;
  5 +import com.bsth.data.schedule.e_state_check.entity.SCodeInfo;
  6 +import com.bsth.entity.realcontrol.ScheduleRealInfo;
  7 +import com.google.common.collect.ArrayListMultimap;
  8 +import org.slf4j.Logger;
  9 +import org.slf4j.LoggerFactory;
  10 +import org.springframework.beans.factory.annotation.Autowired;
  11 +import org.springframework.jdbc.core.BeanPropertyRowMapper;
  12 +import org.springframework.jdbc.core.JdbcTemplate;
  13 +import org.springframework.stereotype.Component;
  14 +
  15 +import java.util.*;
  16 +
  17 +/**
  18 + * 检查班次站点编码和路由编码是否相符合
  19 + * Created by panzhao on 2018/4/2.
  20 + */
  21 +@Component
  22 +public class ScheduleStationCodeChecker {
  23 +
  24 + @Autowired
  25 + DayOfSchedule dayOfSchedule;
  26 +
  27 + private static ArrayListMultimap<String, SCodeInfo> multimap;
  28 +
  29 + static {
  30 + multimap = ArrayListMultimap.create();
  31 + }
  32 +
  33 + @Autowired
  34 + JdbcTemplate jdbcTemplate;
  35 +
  36 + static Logger logger = LoggerFactory.getLogger(ScheduleStationCodeChecker.class);
  37 +
  38 + public static List<SCodeInfo> findByLineIdx(List<String> lineArray){
  39 + List<SCodeInfo> rs = new ArrayList<>();
  40 +
  41 + try{
  42 + for(String coed : lineArray){
  43 + rs.addAll(multimap.get(coed));
  44 + }
  45 + }catch (Exception e){
  46 + logger.error("", e);
  47 + }
  48 + return rs;
  49 + }
  50 +
  51 + public void checkAll() {
  52 + try {
  53 + logger.info("start....");
  54 + List<ScheduleRealInfo> all = new ArrayList(dayOfSchedule.findAll());
  55 +
  56 + //按线路站点分组数据(上行)
  57 + Map<String, ScheduleRealInfo> ups = new HashMap<>();
  58 + //按线路站点分组数据(下行)
  59 + Map<String, ScheduleRealInfo> downs = new HashMap();
  60 +
  61 + String key;
  62 + for (ScheduleRealInfo sch : all) {
  63 + if (sch.getBcType().equals("out")
  64 + || sch.getBcType().equals("in"))
  65 + continue;
  66 +
  67 + key = sch.getXlBm() + "_" + sch.getXlDir() + "_";
  68 +
  69 + ups.put(key + sch.getQdzCode(), sch);
  70 + downs.put(key + sch.getZdzCode(), sch);
  71 + }
  72 +
  73 + //获取全部实际的站点编码
  74 + Map<String, SCodeInfo> realMap = allRealCodeInfo();
  75 +
  76 + List<SCodeInfo> rs = new ArrayList<>();
  77 + rs.addAll(checkCode(ups.values(), realMap, "qd"));
  78 + rs.addAll(checkCode(downs.values(), realMap, "zd"));
  79 +
  80 + //按线路分组
  81 + ArrayListMultimap<String, SCodeInfo> mList = ArrayListMultimap.create();
  82 + for (SCodeInfo sci : rs) {
  83 + mList.put(sci.getLineCode(), sci);
  84 + }
  85 +
  86 + multimap = mList;
  87 + logger.info("站点检查 end.... idx: " + (multimap.keySet().size() > 0 ? JSON.toJSONString(multimap.keySet()):"无"));
  88 + } catch (Exception e) {
  89 + logger.error("", e);
  90 + }
  91 + }
  92 +
  93 + private List<SCodeInfo> checkCode(Collection<ScheduleRealInfo> list, Map<String, SCodeInfo> realMap, String qdOrZd) {
  94 + List<SCodeInfo> rs = new ArrayList<>();
  95 + String k;
  96 + SCodeInfo sci;
  97 + for(ScheduleRealInfo sch : list){
  98 + k = sch.getXlBm() + "_" + sch.getXlDir() + "_";
  99 +
  100 + sci = realMap.get(k + getName(sch, qdOrZd));//名称和编码都不存在
  101 + if(null == sci && !realMap.containsKey(k + getCode(sch, qdOrZd))){
  102 + sci = SCodeInfo.getInstance(sch, qdOrZd);
  103 + rs.add(sci);
  104 + continue;
  105 + }
  106 + else if(null != sci && !codeEq(sci, getCode(sch, qdOrZd))){//名称一致的站点,编码不一致
  107 + sci.setStationCode(getCode(sch, qdOrZd));
  108 + rs.add(sci);
  109 + continue;
  110 + }
  111 + }
  112 + return rs;
  113 + }
  114 +
  115 + private boolean codeEq(SCodeInfo sci, String code){
  116 + return sci.getRealStationCode().equals(code) || sci.getRealStationCode().indexOf(code + "^") != -1;
  117 + }
  118 +
  119 + private String getName(ScheduleRealInfo sch, String qdOrZd) {
  120 + return qdOrZd.equals("qd")?sch.getQdzName():sch.getZdzName();
  121 + }
  122 +
  123 + private String getCode(ScheduleRealInfo sch, String qdOrZd) {
  124 + return qdOrZd.equals("qd")?sch.getQdzCode():sch.getZdzCode();
  125 + }
  126 +
  127 +
  128 + private Map<String, SCodeInfo> allRealCodeInfo() {
  129 + String sql = "select line_code,directions as up_down,station_code as real_station_code,station_name from bsth_c_stationroute where line in (select id from bsth_c_line where destroy=0) and destroy=0";
  130 + List<SCodeInfo> realList = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(SCodeInfo.class));
  131 + Map<String, SCodeInfo> realMap = new HashMap<>();
  132 +
  133 + String kName;
  134 + SCodeInfo old;
  135 + for (SCodeInfo sci : realList) {
  136 + kName = sci.getLineCode() + "_" + sci.getUpDown() + "_" + sci.getStationName();
  137 +
  138 + if(realMap.containsKey(kName)){
  139 + //环线可能存在同名的站点
  140 + old = realMap.get(kName);
  141 + old.setRealStationCode(old.getRealStationCode() + "^" + sci.getRealStationCode() + "^");
  142 + continue;
  143 + }
  144 +
  145 + realMap.put(kName, sci);
  146 + realMap.put(sci.getLineCode() + "_" + sci.getUpDown() + "_" + sci.getRealStationCode(), sci);
  147 + }
  148 +
  149 + return realMap;
  150 + }
  151 +}
0 \ No newline at end of file 152 \ No newline at end of file
src/main/java/com/bsth/data/schedule/e_state_check/entity/SCodeInfo.java 0 → 100644
  1 +package com.bsth.data.schedule.e_state_check.entity;
  2 +
  3 +import com.bsth.entity.realcontrol.ScheduleRealInfo;
  4 +
  5 +/**
  6 + * Created by panzhao on 2018/4/2.
  7 + */
  8 +public class SCodeInfo {
  9 +
  10 + /**
  11 + * 线路编码
  12 + */
  13 + private String lineCode;
  14 +
  15 + /**
  16 + * 上下行
  17 + */
  18 + private int upDown;
  19 +
  20 + /**
  21 + * 站点编码
  22 + */
  23 + private String stationCode;
  24 +
  25 + /**
  26 + * 站点名称
  27 + */
  28 + private String stationName;
  29 +
  30 + /**
  31 + * 实际站点编码
  32 + */
  33 + private String realStationCode;
  34 +
  35 + public String getLineCode() {
  36 + return lineCode;
  37 + }
  38 +
  39 + public void setLineCode(String lineCode) {
  40 + this.lineCode = lineCode;
  41 + }
  42 +
  43 + public int getUpDown() {
  44 + return upDown;
  45 + }
  46 +
  47 + public void setUpDown(int upDown) {
  48 + this.upDown = upDown;
  49 + }
  50 +
  51 + public String getStationCode() {
  52 + return stationCode;
  53 + }
  54 +
  55 + public void setStationCode(String stationCode) {
  56 + this.stationCode = stationCode;
  57 + }
  58 +
  59 + public String getStationName() {
  60 + return stationName;
  61 + }
  62 +
  63 + public void setStationName(String stationName) {
  64 + this.stationName = stationName;
  65 + }
  66 +
  67 + public String getRealStationCode() {
  68 + return realStationCode;
  69 + }
  70 +
  71 + public void setRealStationCode(String realStationCode) {
  72 + this.realStationCode = realStationCode;
  73 + }
  74 +
  75 + public static SCodeInfo getUpInstance(ScheduleRealInfo sch) {
  76 + SCodeInfo sci = new SCodeInfo();
  77 + sci.setLineCode(sch.getXlBm());
  78 + sci.setUpDown(Integer.parseInt(sch.getXlDir()));
  79 + sci.setStationName(sch.getQdzName());
  80 + sci.setStationCode(sch.getQdzCode());
  81 + return sci;
  82 + }
  83 +
  84 + public static SCodeInfo geDownInstance(ScheduleRealInfo sch) {
  85 + SCodeInfo sci = new SCodeInfo();
  86 + sci.setLineCode(sch.getXlBm());
  87 + sci.setUpDown(Integer.parseInt(sch.getXlDir()));
  88 + sci.setStationName(sch.getZdzName());
  89 + sci.setStationCode(sch.getZdzCode());
  90 + return sci;
  91 + }
  92 +
  93 + public static SCodeInfo getInstance(ScheduleRealInfo sch, String qdOrZd) {
  94 + return qdOrZd.equals("qd")?getUpInstance(sch):geDownInstance(sch);
  95 + }
  96 +}
src/main/java/com/bsth/data/schedule/e_state_check/thread/FixedCheckStationCodeThread.java 0 → 100644
  1 +package com.bsth.data.schedule.e_state_check.thread;
  2 +
  3 +import com.bsth.data.schedule.e_state_check.ScheduleStationCodeChecker;
  4 +import org.slf4j.Logger;
  5 +import org.slf4j.LoggerFactory;
  6 +import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.stereotype.Component;
  8 +
  9 +/**
  10 + * 定时检查班次站点编码线程
  11 + * Created by panzhao on 2018/4/2.
  12 + */
  13 +@Component
  14 +public class FixedCheckStationCodeThread extends Thread {
  15 +
  16 + @Autowired
  17 + ScheduleStationCodeChecker scheduleStationCodeChecker;
  18 +
  19 + Logger logger = LoggerFactory.getLogger(this.getClass());
  20 +
  21 + @Override
  22 + public void run() {
  23 + try {
  24 + scheduleStationCodeChecker.checkAll();
  25 + } catch (Exception e) {
  26 + logger.error("", e);
  27 + }
  28 + }
  29 +}
src/main/java/com/bsth/data/schedule/edit_logs/FormLogger.java
@@ -37,7 +37,7 @@ public class FormLogger { @@ -37,7 +37,7 @@ public class FormLogger {
37 /** 37 /**
38 * 换人换车情况表 38 * 换人换车情况表
39 */ 39 */
40 - public void saveChangetochange(ScheduleRealInfo sch, ChangePersonCar cpc){ 40 + public void saveChangetochange(ScheduleRealInfo sch, ChangePersonCar cpc, String userId){
41 try { 41 try {
42 String newNbbm = cpc.getClZbh(); 42 String newNbbm = cpc.getClZbh();
43 String newJsy = cpc.getJsy(); 43 String newJsy = cpc.getJsy();
@@ -51,7 +51,6 @@ public class FormLogger { @@ -51,7 +51,6 @@ public class FormLogger {
51 return; 51 return;
52 52
53 Date d = new Date(); 53 Date d = new Date();
54 - SysUser user = SecurityUtils.getCurrentUser();  
55 Changetochange cc = new Changetochange(); 54 Changetochange cc = new Changetochange();
56 cc.setRq(sch.getScheduleDateStr()); 55 cc.setRq(sch.getScheduleDateStr());
57 cc.setGs(sch.getGsBm()); 56 cc.setGs(sch.getGsBm());
@@ -61,8 +60,13 @@ public class FormLogger { @@ -61,8 +60,13 @@ public class FormLogger {
61 cc.setFssj(sch.getFcsj()); 60 cc.setFssj(sch.getFcsj());
62 cc.setXgsj(fmtHHmm.print(d.getTime())); 61 cc.setXgsj(fmtHHmm.print(d.getTime()));
63 cc.setsId(sch.getId()); 62 cc.setsId(sch.getId());
64 - if(user != null) 63 +
  64 + if(StringUtils.isEmpty(userId)){
  65 + SysUser user = SecurityUtils.getCurrentUser();
65 cc.setXgr(user.getUserName()); 66 cc.setXgr(user.getUserName());
  67 + }
  68 + else
  69 + cc.setXgr(userId);
66 70
67 cc.setPcch(sch.getClZbh()); 71 cc.setPcch(sch.getClZbh());
68 cc.setPcry(oldJsy); 72 cc.setPcry(oldJsy);
@@ -86,7 +90,7 @@ public class FormLogger { @@ -86,7 +90,7 @@ public class FormLogger {
86 ChangePersonCar cpc = new ChangePersonCar(); 90 ChangePersonCar cpc = new ChangePersonCar();
87 cpc.setClZbh(nbbm); 91 cpc.setClZbh(nbbm);
88 cpc.setJsy(jsy); 92 cpc.setJsy(jsy);
89 - saveChangetochange(sch, cpc); 93 + saveChangetochange(sch, cpc, null);
90 } 94 }
91 95
92 public void saveDb(){ 96 public void saveDb(){
src/main/java/com/bsth/data/schedule/edit_logs/ScheduleModifyLogger.java
@@ -28,14 +28,14 @@ public class ScheduleModifyLogger { @@ -28,14 +28,14 @@ public class ScheduleModifyLogger {
28 28
29 /** 29 /**
30 * 待发调整 30 * 待发调整
31 - * opType 0: 双击调整、 1:待发调整、2:批量待发调整、3:间隔调整 31 + * opType 0: 双击调整、 1:待发调整、2:批量待发调整、3:间隔调整、4:调派系统调整
32 */ 32 */
33 - public static void dftz(ScheduleRealInfo sch, String opType, String oldDfsj, String nowDfsj, String remarks) { 33 + public static void dftz(ScheduleRealInfo sch, String opType, String oldDfsj, String nowDfsj, String remarks, String userId) {
34 try { 34 try {
35 if (oldDfsj.equals(nowDfsj)) 35 if (oldDfsj.equals(nowDfsj))
36 return; 36 return;
37 37
38 - SchEditInfo sei = SchEditInfo.getInstance(sch); 38 + SchEditInfo sei = SchEditInfo.getInstance(sch, userId);
39 sei.setType(EditType.DFTZ); 39 sei.setType(EditType.DFTZ);
40 sei.setType2(opType); 40 sei.setType2(opType);
41 sei.setRemarks(remarks == null ? "" : remarks); 41 sei.setRemarks(remarks == null ? "" : remarks);
@@ -78,9 +78,9 @@ public class ScheduleModifyLogger { @@ -78,9 +78,9 @@ public class ScheduleModifyLogger {
78 * 78 *
79 * @param remarks 79 * @param remarks
80 */ 80 */
81 - public static void jhlb(ScheduleRealInfo sch, String remarks) { 81 + public static void jhlb(ScheduleRealInfo sch, String remarks, String userId) {
82 try { 82 try {
83 - SchEditInfo sei = SchEditInfo.getInstance(sch); 83 + SchEditInfo sei = SchEditInfo.getInstance(sch, userId);
84 sei.setRemarks(remarks); 84 sei.setRemarks(remarks);
85 sei.setType(EditType.JHLB); 85 sei.setType(EditType.JHLB);
86 86
@@ -182,7 +182,7 @@ public class ScheduleModifyLogger { @@ -182,7 +182,7 @@ public class ScheduleModifyLogger {
182 * @param sch 182 * @param sch
183 * @param cpc 183 * @param cpc
184 */ 184 */
185 - public static void tzrc(ScheduleRealInfo sch, ChangePersonCar cpc) { 185 + public static void tzrc(ScheduleRealInfo sch, ChangePersonCar cpc, String userId) {
186 try { 186 try {
187 String newNbbm = cpc.getClZbh(); 187 String newNbbm = cpc.getClZbh();
188 String newJsy = cpc.getJsy(); 188 String newJsy = cpc.getJsy();
@@ -218,7 +218,7 @@ public class ScheduleModifyLogger { @@ -218,7 +218,7 @@ public class ScheduleModifyLogger {
218 if(jobj.size() == 0) 218 if(jobj.size() == 0)
219 return; 219 return;
220 220
221 - SchEditInfo sei = SchEditInfo.getInstance(sch); 221 + SchEditInfo sei = SchEditInfo.getInstance(sch, userId);
222 sei.setType(EditType.TZRC); 222 sei.setType(EditType.TZRC);
223 223
224 sei.setJsonArray(jobj.toJSONString()); 224 sei.setJsonArray(jobj.toJSONString());
src/main/java/com/bsth/data/schedule/edit_logs/entity/SchEditInfo.java
@@ -160,6 +160,26 @@ public class SchEditInfo { @@ -160,6 +160,26 @@ public class SchEditInfo {
160 return sei; 160 return sei;
161 } 161 }
162 162
  163 + public static SchEditInfo getInstance(ScheduleRealInfo sch, String userId){
  164 + SchEditInfo sei = new SchEditInfo();
  165 + long t = System.currentTimeMillis();
  166 + sei.setTs(t);
  167 + sei.setTimeStr(fmtHHmm.print(t));
  168 + if(null != userId)
  169 + sei.setUser(userId);
  170 + else{
  171 + SysUser user = SecurityUtils.getCurrentUser();
  172 + if(user != null)
  173 + sei.setUser(user.getUserName());
  174 + }
  175 + sei.setRq(sch.getScheduleDateStr());
  176 + sei.setSchId(sch.getId());
  177 + sei.setLineCode(sch.getXlBm());
  178 + sei.setGsbm(sch.getGsBm());
  179 + sei.setFgsbm(sch.getFgsBm());
  180 + return sei;
  181 + }
  182 +
163 public String getLineCode() { 183 public String getLineCode() {
164 return lineCode; 184 return lineCode;
165 } 185 }
src/main/java/com/bsth/data/schedule/external/TccExternalService.java 0 → 100644
  1 +package com.bsth.data.schedule.external;
  2 +
  3 +import com.bsth.common.ResponseCode;
  4 +import com.bsth.controller.realcontrol.dto.ChangePersonCar;
  5 +import com.bsth.controller.realcontrol.dto.DftzAndDestroy;
  6 +import com.bsth.data.schedule.DayOfSchedule;
  7 +import com.bsth.entity.realcontrol.ScheduleRealInfo;
  8 +import com.bsth.service.realcontrol.ScheduleRealInfoService;
  9 +import com.bsth.websocket.handler.SendUtils;
  10 +import org.apache.commons.lang3.StringUtils;
  11 +import org.slf4j.Logger;
  12 +import org.slf4j.LoggerFactory;
  13 +import org.springframework.beans.factory.annotation.Autowired;
  14 +import org.springframework.stereotype.Component;
  15 +
  16 +import java.util.*;
  17 +
  18 +/**
  19 + * 对停车场开放的班次调度服务
  20 + * Created by panzhao on 2018/3/22.
  21 + */
  22 +@Component
  23 +public class TccExternalService {
  24 +
  25 + Logger logger = LoggerFactory.getLogger(TccExternalService.class);
  26 +
  27 + @Autowired
  28 + DayOfSchedule dayOfSchedule;
  29 +
  30 + @Autowired
  31 + ScheduleRealInfoService scheduleRealInfoService;
  32 +
  33 + @Autowired
  34 + SendUtils sendUtils;
  35 +
  36 + /**
  37 + * 待发调整
  38 + *
  39 + * @param dad
  40 + * @return
  41 + */
  42 + public Map<String, Object> dftz(DftzAndDestroy dad) {
  43 + Map<String, Object> rs = new HashMap();
  44 + rs.put("status", ResponseCode.ERROR);
  45 + try {
  46 + List<ScheduleRealInfo> updateList = new ArrayList<>();//要刷新的班次
  47 + ScheduleRealInfo sch = dayOfSchedule.get(dad.getDftzId());
  48 + if (null == sch) {
  49 + rs.put("msg", "班次已经不存在了!");
  50 + return rs;
  51 + }
  52 +
  53 + if (!sch.getBcType().equals("out")) {
  54 + rs.put("msg", "只能操作出场班次!");
  55 + return rs;
  56 + }
  57 +
  58 + //调整待发时间
  59 + scheduleRealInfoService.outgoAdjust(sch.getId(), dad.getRemarks(), dad.getNewTimeStr(), sch.getBcType(), "4", dad.getUserId());
  60 + updateList.add(sch);
  61 +
  62 + //需要烂班的班次
  63 + if (StringUtils.isNotEmpty(dad.getDestroyIdx())) {
  64 + Map<String, Object> dMap =
  65 + scheduleRealInfoService.destroy(dad.getDestroyIdx(), dad.getRemarks(), dad.getReason(), dad.getUserId());
  66 +
  67 +
  68 + updateList.addAll((Collection<? extends ScheduleRealInfo>) dMap.get("ts"));
  69 + }
  70 +
  71 + //通知调度客户端更新班次信息
  72 + sendUpdate2Page(updateList);
  73 +
  74 + rs.put("status", ResponseCode.SUCCESS);
  75 + rs.put("t", sch);
  76 + } catch (Exception e) {
  77 + rs.put("msg", "内部调度服务接口出现异常!");
  78 + logger.error("", e);
  79 + }
  80 + return rs;
  81 + }
  82 +
  83 + /**
  84 + * 换人换车
  85 + *
  86 + * @param cpcs
  87 + * @return
  88 + */
  89 + public Map<String, Object> hrhc(List<ChangePersonCar> cpcs,String tccCode, String userId) {
  90 + Map<String, Object> rs = new HashMap();
  91 + rs.put("status", ResponseCode.ERROR);
  92 + try {
  93 + rs = scheduleRealInfoService.multi_tzrc(cpcs, userId);
  94 +
  95 + //通知调度客户端更新班次信息
  96 + sendUpdate2Page(new ArrayList<ScheduleRealInfo>((Set)rs.get("ts")));
  97 +
  98 + //返回更新结果集中指定停车场的进出场班次
  99 + Set<ScheduleRealInfo> ts = (Set<ScheduleRealInfo>) rs.get("ts");
  100 + List<ScheduleRealInfo> list = new ArrayList<>();
  101 + for(ScheduleRealInfo sch : ts){
  102 + if((sch.getBcType().equals("out") && sch.getQdzCode().equals(tccCode))
  103 + || (sch.getBcType().equals("in") && sch.getZdzCode().equals(tccCode)))
  104 + list.add(sch);
  105 + }
  106 + rs.put("list", list);
  107 + rs.remove("ts");
  108 + } catch (Exception e) {
  109 + rs.put("msg", "服务器出现异常!");
  110 + logger.error("", e);
  111 + }
  112 + return rs;
  113 + }
  114 +
  115 +
  116 + public void sendUpdate2Page(List<ScheduleRealInfo> list) {
  117 + sendUtils.refreshSch(list);
  118 + }
  119 +}
src/main/java/com/bsth/data/schedule/late_adjust/LateAdjustHandle.java
1 1
2 package com.bsth.data.schedule.late_adjust; 2 package com.bsth.data.schedule.late_adjust;
3 3
4 -import com.bsth.data.BasicData;  
5 import com.bsth.data.LineConfigData; 4 import com.bsth.data.LineConfigData;
6 import com.bsth.data.gpsdata_v2.entity.GpsEntity; 5 import com.bsth.data.gpsdata_v2.entity.GpsEntity;
7 import com.bsth.entity.realcontrol.LineConfig; 6 import com.bsth.entity.realcontrol.LineConfig;
@@ -16,17 +15,17 @@ import org.springframework.context.ApplicationContextAware; @@ -16,17 +15,17 @@ import org.springframework.context.ApplicationContextAware;
16 import org.springframework.stereotype.Component; 15 import org.springframework.stereotype.Component;
17 16
18 import java.util.Collection; 17 import java.util.Collection;
19 -import java.util.HashMap;  
20 -import java.util.Map; 18 +import java.util.concurrent.ConcurrentHashMap;
  19 +import java.util.concurrent.ConcurrentMap;
21 20
22 /** 21 /**
23 * 误点自动调整待发 处理程序 22 * 误点自动调整待发 处理程序
24 - * 23 + * <p>
25 * 注意 :这里的误点是指应发未到 24 * 注意 :这里的误点是指应发未到
26 * Created by panzhao on 2017/4/16. 25 * Created by panzhao on 2017/4/16.
27 */ 26 */
28 @Component 27 @Component
29 -public class LateAdjustHandle implements ApplicationContextAware{ 28 +public class LateAdjustHandle implements ApplicationContextAware {
30 29
31 static LineConfigData lineConfigData; 30 static LineConfigData lineConfigData;
32 static SendUtils sendUtils; 31 static SendUtils sendUtils;
@@ -34,61 +33,42 @@ public class LateAdjustHandle implements ApplicationContextAware{ @@ -34,61 +33,42 @@ public class LateAdjustHandle implements ApplicationContextAware{
34 static Logger logger = LoggerFactory.getLogger(LateAdjustHandle.class); 33 static Logger logger = LoggerFactory.getLogger(LateAdjustHandle.class);
35 34
36 /** 35 /**
37 - * 应发未到车辆 和 班次 36 + * 应发未到的班次 key : id
38 */ 37 */
39 - private static Map<String, ScheduleRealInfo> lateSchMap; 38 + private static ConcurrentMap<Long, ScheduleRealInfo> lateSchMap = new ConcurrentHashMap<>();
40 39
41 40
42 - static {  
43 - lateSchMap = new HashMap<>();  
44 - }  
45 -  
46 /** 41 /**
47 * 新增一个误点班次 42 * 新增一个误点班次
  43 + *
48 * @param sch 44 * @param sch
49 */ 45 */
50 - public static void putLate(ScheduleRealInfo sch){ 46 + public static void putLate(ScheduleRealInfo sch) {
51 try { 47 try {
52 - //出场班次不需要  
53 - if(sch.getBcType().equals("out"))  
54 - return;  
55 //线路配置 48 //线路配置
56 LineConfig config = lineConfigData.get(sch.getXlBm()); 49 LineConfig config = lineConfigData.get(sch.getXlBm());
57 - if(sch.getLateMinute() == 0){  
58 - if(config.isEnableYjtk()){  
59 - sch.setLateMinute(sch.getXlDir().equals("0")?config.getUpStopMinute():config.getDownStopMinute());  
60 - }  
61 - else 50 + if (sch.getLateMinute() == 0) {
  51 + if (!config.isEnableYjtk())
62 return; 52 return;
63 - }  
64 53
65 - if(sch.getDfsj().compareTo(config.getYjtkStart()) > 0  
66 - && sch.getDfsj().compareTo(config.getYjtkEnd()) <= 0){ 54 + sch.setLateMinute(sch.getXlDir().equals("0") ? config.getUpStopMinute() : config.getDownStopMinute());
  55 + }
67 56
68 - ScheduleRealInfo cancel = null;  
69 - //之前存在误点班次没有发出  
70 - ScheduleRealInfo old = lateSchMap.get(sch.getClZbh()); 57 + if (sch.getDfsj().compareTo(config.getYjtkStart()) > 0
  58 + && sch.getDfsj().compareTo(config.getYjtkEnd()) <= 0) {
71 59
72 - if(old != null && old.getDfsjT() < sch.getDfsjT()){  
73 - //如果之前班次的 待发应到时间已经过了 3 分钟  
74 - long t = System.currentTimeMillis();  
75 - long dfEndTime = old.getDfsjT() + (old.getBcsj() * 60 * 1000);  
76 - if((t - dfEndTime) > 1000 * 60 * 3){ 60 + //班次压入
  61 + if (!lateSchMap.containsKey(sch.getId())) {
  62 + logger.info("29【应发未到 班次 " + sch.getClZbh() + " -" + sch.getDfsj() + " -id: " + sch.getId() + " -加入误点调整!");
77 63
78 - remove(old);  
79 - cancel = old;  
80 - logger.info("【应发未到】old 班次 " + old.getId() + " -被覆盖!");  
81 - } 64 + sch.setLate2(true);
  65 + lateSchMap.put(sch.getId(), sch);
  66 + //通知客户端
  67 + sendUtils.sendAutoWdtz(sch, null);
82 } 68 }
83 -  
84 - lateSchMap.put(sch.getClZbh(), sch);  
85 - //通知客户端  
86 - sch.setLate2(true);  
87 - sendUtils.sendAutoWdtz(sch, cancel);  
88 -  
89 - logger.info("【应发未到】班次 " + sch.getClZbh() + " -" + sch.getDfsj() + " -id: " + sch.getId() + " -加入误点调整!");  
90 } 69 }
91 - }catch (Exception e){ 70 +
  71 + } catch (Exception e) {
92 logger.error("", e); 72 logger.error("", e);
93 } 73 }
94 } 74 }
@@ -96,85 +76,78 @@ public class LateAdjustHandle implements ApplicationContextAware{ @@ -96,85 +76,78 @@ public class LateAdjustHandle implements ApplicationContextAware{
96 76
97 /** 77 /**
98 * 获取所有应发未到的班次 78 * 获取所有应发未到的班次
  79 + *
99 * @return 80 * @return
100 */ 81 */
101 - public static Collection<ScheduleRealInfo> allLateSch(){ 82 + public static Collection<ScheduleRealInfo> allLateSch() {
102 return lateSchMap.values(); 83 return lateSchMap.values();
103 } 84 }
104 85
105 - public static void remove(ScheduleRealInfo sch){ 86 + public static void remove(ScheduleRealInfo sch) {
106 try { 87 try {
107 - if(lateSchMap.get(sch.getClZbh()) == sch){  
108 - lateSchMap.remove(sch.getClZbh()); 88 + if (lateSchMap.containsKey(sch.getId())) {
  89 + lateSchMap.remove(sch.getId());
  90 +
109 sch.setLate2(false); 91 sch.setLate2(false);
110 sch.setLateMinute(0); 92 sch.setLateMinute(0);
111 sch.setDfAuto(false); 93 sch.setDfAuto(false);
112 94
113 - logger.info("移除误点调整 -" + sch.getClZbh()); 95 + logger.info("移除误点调整 -" + sch.getClZbh() + " -time: " + sch.getDfsj() + " -id: " + sch.getId());
114 } 96 }
115 - }catch (Exception e){ 97 + } catch (Exception e) {
116 logger.error("", e); 98 logger.error("", e);
117 } 99 }
118 } 100 }
119 101
120 -/* public static void remove(String nbbm){  
121 - if(lateSchMap.containsKey(nbbm)){  
122 - ScheduleRealInfo sch = lateSchMap.get(nbbm);  
123 - sch.setLate2(false);  
124 - sch.setLateMinute(0);  
125 - sch.setDfAuto(false);  
126 -  
127 - lateSchMap.remove(nbbm);  
128 - logger.info("移除误点调整 nbbm -" + nbbm);  
129 - }  
130 - }*/  
131 -  
132 /** 102 /**
133 - * 车辆到站 103 + * 车辆到站 进站 进 的哪个班次,就调该车辆的下一个班次
  104 + *
134 * @param gps 105 * @param gps
135 */ 106 */
136 - public static void carArrive(GpsEntity gps){  
137 - try{  
138 - if(gps.getInstation() != 1) 107 + public static void carArrive(GpsEntity gps, ScheduleRealInfo sch) {
  108 + try {
  109 + if (gps.getInstation() <= 0 || null == sch)
139 return; 110 return;
140 111
141 - ScheduleRealInfo sch = lateSchMap.get(gps.getNbbm());  
142 - if(sch == null)  
143 - return; 112 + if (!lateSchMap.containsKey(sch.getId())) {
  113 + //班次是否误点(可能处于误点线程扫描的空隙,所以再判定一次)
  114 + if (sch.getDfsjT() <= gps.getTimestamp()) {
  115 + putLate(sch);
  116 +
  117 + if (!lateSchMap.containsKey(sch.getId()))
  118 + return;
  119 +
  120 + logger.info("线程空隙漏掉的误点,id: " + sch.getId());
  121 + } else
  122 + return;
  123 + }
  124 +
144 125
145 //可能是延迟信号,gps时间没有误点 126 //可能是延迟信号,gps时间没有误点
146 - if(gps.getTimestamp() <= sch.getDfsjT()){ 127 + if (gps.getTimestamp() <= sch.getDfsjT()) {
147 sch.setLate2(false); 128 sch.setLate2(false);
148 - lateSchMap.remove(sch.getClZbh()); 129 + lateSchMap.remove(sch.getId());
149 return; 130 return;
150 } 131 }
151 - //进的是班次起点(名称一样即可)  
152 - gps.setStationName(BasicData.stationCode2NameMap.get(gps.getLineId() + "_" + gps.getUpDown() + "_" + gps.getStopNo()));  
153 - if(gps.getStationName().equals(sch.getQdzName())  
154 - /*&& sch.getLateMinute() > 0*/){  
155 - //自动调整待发 到达时间 + 停靠时间  
156 - long dt = Arith.addLong(gps.getTimestamp(), (sch.getLateMinute() * 60 * 1000));  
157 -  
158 - //超过2小时最大阈值,放弃 -临时代码,待删除  
159 - if(Math.abs(dt - sch.getDfsjT()) > 1000 * 60 * 60 * 2){  
160 - logger.info(sch.getClZbh() + " 超过误点调整阈值,放弃");  
161 - }  
162 - else{  
163 - sch.setDfsjAll(dt);  
164 - sch.setDfAuto(true);  
165 - //取消应发未到标记  
166 - sch.setLate2(false);  
167 - }  
168 132
169 - lateSchMap.remove(sch.getClZbh());  
170 - logger.info("【应发未到】车辆到站 " + sch.getClZbh() + " -" + sch.getDfsj() + " -到站时间:" + gps.getTimestamp() + " -停靠时间:" + sch.getLateMinute() + " -自动设置的待发时间:" + dt);  
171 - }  
172 - }catch (Exception e){ 133 +
  134 + //自动调整待发 到达时间 + 停靠时间
  135 + long dt = Arith.addLong(gps.getTimestamp(), (sch.getLateMinute() * 60 * 1000));
  136 +
  137 + sch.setDfsjAll(dt);
  138 + sch.setDfAuto(true);
  139 + //取消应发未到标记
  140 + sch.setLate2(false);
  141 +
  142 + lateSchMap.remove(sch.getId());
  143 + logger.info("【应发未到】车辆到站 " + sch.getClZbh() + " -" + sch.getDfsj() + " -到站时间:" + gps.getTimestamp() + " -停靠时间:" + sch.getLateMinute() + " -自动设置的待发时间:" + dt + " -id:" + sch.getId());
  144 + } catch (Exception e) {
173 e.printStackTrace(); 145 e.printStackTrace();
174 logger.error("late2 car arrive", e); 146 logger.error("late2 car arrive", e);
175 } 147 }
176 } 148 }
177 149
  150 +
178 @Override 151 @Override
179 public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { 152 public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
180 lineConfigData = applicationContext.getBean(LineConfigData.class); 153 lineConfigData = applicationContext.getBean(LineConfigData.class);
src/main/java/com/bsth/data/schedule/taopao/TaoPaoDataBuffer.java 0 → 100644
  1 +package com.bsth.data.schedule.taopao;
  2 +
  3 +import com.bsth.data.schedule.DayOfSchedule;
  4 +import com.bsth.data.schedule.taopao.entity.CLTaoPaoInfo;
  5 +import com.google.common.collect.ArrayListMultimap;
  6 +import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.stereotype.Component;
  8 +
  9 +/**
  10 + * 实际班次套跑信息
  11 + */
  12 +@Component
  13 +public class TaoPaoDataBuffer {
  14 +
  15 + /**
  16 + * 线路编码 ——> 套跑信息
  17 + */
  18 + private static ArrayListMultimap<String, CLTaoPaoInfo> multimap;
  19 +
  20 + static {
  21 + multimap = ArrayListMultimap.create();
  22 + }
  23 +
  24 + @Autowired
  25 + DayOfSchedule dayOfSchedule;
  26 +}
src/main/java/com/bsth/data/schedule/taopao/entity/CLTaoPaoInfo.java 0 → 100644
  1 +package com.bsth.data.schedule.taopao.entity;
  2 +
  3 +/**
  4 + * 车辆套跑 信息
  5 + */
  6 +public class CLTaoPaoInfo {
  7 +
  8 + private String lineCode;
  9 +
  10 + private String nbbm;
  11 +
  12 + /**
  13 + * 班次ID , 号分割多个
  14 + */
  15 + private String schIdx;
  16 +
  17 + public String getLineCode() {
  18 + return lineCode;
  19 + }
  20 +
  21 + public void setLineCode(String lineCode) {
  22 + this.lineCode = lineCode;
  23 + }
  24 +
  25 + public String getNbbm() {
  26 + return nbbm;
  27 + }
  28 +
  29 + public void setNbbm(String nbbm) {
  30 + this.nbbm = nbbm;
  31 + }
  32 +
  33 + public String getSchIdx() {
  34 + return schIdx;
  35 + }
  36 +
  37 + public void setSchIdx(String schIdx) {
  38 + this.schIdx = schIdx;
  39 + }
  40 +}
src/main/java/com/bsth/data/schedule/taopao/entity/TPCutRealSchedule.java 0 → 100644
  1 +package com.bsth.data.schedule.taopao.entity;
  2 +
  3 +import javax.persistence.Transient;
  4 +
  5 +/**
  6 + * 精简的班次信息(展示套跑信息用)
  7 + */
  8 +public class TPCutRealSchedule {
  9 +
  10 + /** 主键Id */
  11 + private Long id;
  12 +
  13 + /** 排班日期字符串 YYYY-MM-DD */
  14 + private String scheduleDateStr;
  15 +
  16 + /** 路牌名称 */
  17 + private String lpName;
  18 +
  19 + /** 车辆自编号 */
  20 + private String clZbh;
  21 +
  22 + /** 驾驶员工号 */
  23 + private String jGh;
  24 + /** 驾驶员名字 */
  25 + private String jName;
  26 + /** 售票员工号 */
  27 + private String sGh;
  28 + /** 售票员名字 */
  29 + private String sName;
  30 +
  31 + /** 线路方向 */
  32 + private String xlDir;
  33 + /** 起点站名字 */
  34 + private String qdzName;
  35 +
  36 + /** 终点站名字 */
  37 + private String zdzName;
  38 +
  39 + /** 计划发车时间(格式 HH:mm) */
  40 + private String fcsj;
  41 + /** 计划发车时间戳*/
  42 + @Transient
  43 + private Long fcsjT;
  44 +
  45 + /** 计划终点时间(格式 HH:mm) */
  46 + private String zdsj;
  47 + /** 计划终点时间戳*/
  48 + @Transient
  49 + private Long zdsjT;
  50 +
  51 + /** 计划里程 */
  52 + private Double jhlc;
  53 +
  54 + /** 班次历时 */
  55 + private Integer bcsj;
  56 +
  57 + /**
  58 + * 班次类型 TODO:正常班次、出场、进场、加油、区间班次、放空班次、放大站班次、两点间空驶
  59 + */
  60 + private String bcType;
  61 +
  62 + //放站班次 站点名称
  63 + private String majorStationName;
  64 +
  65 + /** 实际发车时间*/
  66 + private String fcsjActual;
  67 + /**实际终点时间 */
  68 + private String zdsjActual;
  69 +
  70 + /**班次状态 0 未执行 1 正在执行 2 已执行 -1 已烂班 */
  71 + private int status;
  72 +
  73 + private String adjustExps;
  74 +
  75 + /** 是否是临加班次 */
  76 + private boolean sflj;
  77 +
  78 + /** 备注*/
  79 + private String remarks;
  80 +
  81 + /**待发时间(格式 HH:mm) */
  82 + private String dfsj;
  83 +
  84 + /**待发时间戳 */
  85 + @Transient
  86 + private Long dfsjT;
  87 +
  88 + /** 指令下发状态 60: 已发送, 100: 设备确认收到, 200:驾驶员确认 0:失败 */
  89 + private Integer directiveState = -1;
  90 +
  91 + /** 起点站计划到达时间 */
  92 + @Transient
  93 + private String qdzArrDatejh;
  94 +
  95 + /** 起点站实际到达时间 */
  96 + @Transient
  97 + private String qdzArrDatesj;
  98 +
  99 + public Long getId() {
  100 + return id;
  101 + }
  102 +
  103 + public void setId(Long id) {
  104 + this.id = id;
  105 + }
  106 +
  107 + public String getScheduleDateStr() {
  108 + return scheduleDateStr;
  109 + }
  110 +
  111 + public void setScheduleDateStr(String scheduleDateStr) {
  112 + this.scheduleDateStr = scheduleDateStr;
  113 + }
  114 +
  115 + public String getLpName() {
  116 + return lpName;
  117 + }
  118 +
  119 + public void setLpName(String lpName) {
  120 + this.lpName = lpName;
  121 + }
  122 +
  123 + public String getClZbh() {
  124 + return clZbh;
  125 + }
  126 +
  127 + public void setClZbh(String clZbh) {
  128 + this.clZbh = clZbh;
  129 + }
  130 +
  131 + public String getjGh() {
  132 + return jGh;
  133 + }
  134 +
  135 + public void setjGh(String jGh) {
  136 + this.jGh = jGh;
  137 + }
  138 +
  139 + public String getjName() {
  140 + return jName;
  141 + }
  142 +
  143 + public void setjName(String jName) {
  144 + this.jName = jName;
  145 + }
  146 +
  147 + public String getsGh() {
  148 + return sGh;
  149 + }
  150 +
  151 + public void setsGh(String sGh) {
  152 + this.sGh = sGh;
  153 + }
  154 +
  155 + public String getsName() {
  156 + return sName;
  157 + }
  158 +
  159 + public void setsName(String sName) {
  160 + this.sName = sName;
  161 + }
  162 +
  163 + public String getXlDir() {
  164 + return xlDir;
  165 + }
  166 +
  167 + public void setXlDir(String xlDir) {
  168 + this.xlDir = xlDir;
  169 + }
  170 +
  171 + public String getQdzName() {
  172 + return qdzName;
  173 + }
  174 +
  175 + public void setQdzName(String qdzName) {
  176 + this.qdzName = qdzName;
  177 + }
  178 +
  179 + public String getZdzName() {
  180 + return zdzName;
  181 + }
  182 +
  183 + public void setZdzName(String zdzName) {
  184 + this.zdzName = zdzName;
  185 + }
  186 +
  187 + public String getFcsj() {
  188 + return fcsj;
  189 + }
  190 +
  191 + public void setFcsj(String fcsj) {
  192 + this.fcsj = fcsj;
  193 + }
  194 +
  195 + public Long getFcsjT() {
  196 + return fcsjT;
  197 + }
  198 +
  199 + public void setFcsjT(Long fcsjT) {
  200 + this.fcsjT = fcsjT;
  201 + }
  202 +
  203 + public String getZdsj() {
  204 + return zdsj;
  205 + }
  206 +
  207 + public void setZdsj(String zdsj) {
  208 + this.zdsj = zdsj;
  209 + }
  210 +
  211 + public Long getZdsjT() {
  212 + return zdsjT;
  213 + }
  214 +
  215 + public void setZdsjT(Long zdsjT) {
  216 + this.zdsjT = zdsjT;
  217 + }
  218 +
  219 + public Double getJhlc() {
  220 + return jhlc;
  221 + }
  222 +
  223 + public void setJhlc(Double jhlc) {
  224 + this.jhlc = jhlc;
  225 + }
  226 +
  227 + public Integer getBcsj() {
  228 + return bcsj;
  229 + }
  230 +
  231 + public void setBcsj(Integer bcsj) {
  232 + this.bcsj = bcsj;
  233 + }
  234 +
  235 + public String getBcType() {
  236 + return bcType;
  237 + }
  238 +
  239 + public void setBcType(String bcType) {
  240 + this.bcType = bcType;
  241 + }
  242 +
  243 + public String getMajorStationName() {
  244 + return majorStationName;
  245 + }
  246 +
  247 + public void setMajorStationName(String majorStationName) {
  248 + this.majorStationName = majorStationName;
  249 + }
  250 +
  251 + public String getFcsjActual() {
  252 + return fcsjActual;
  253 + }
  254 +
  255 + public void setFcsjActual(String fcsjActual) {
  256 + this.fcsjActual = fcsjActual;
  257 + }
  258 +
  259 + public String getZdsjActual() {
  260 + return zdsjActual;
  261 + }
  262 +
  263 + public void setZdsjActual(String zdsjActual) {
  264 + this.zdsjActual = zdsjActual;
  265 + }
  266 +
  267 + public int getStatus() {
  268 + return status;
  269 + }
  270 +
  271 + public void setStatus(int status) {
  272 + this.status = status;
  273 + }
  274 +
  275 + public String getAdjustExps() {
  276 + return adjustExps;
  277 + }
  278 +
  279 + public void setAdjustExps(String adjustExps) {
  280 + this.adjustExps = adjustExps;
  281 + }
  282 +
  283 + public boolean isSflj() {
  284 + return sflj;
  285 + }
  286 +
  287 + public void setSflj(boolean sflj) {
  288 + this.sflj = sflj;
  289 + }
  290 +
  291 + public String getRemarks() {
  292 + return remarks;
  293 + }
  294 +
  295 + public void setRemarks(String remarks) {
  296 + this.remarks = remarks;
  297 + }
  298 +
  299 + public String getDfsj() {
  300 + return dfsj;
  301 + }
  302 +
  303 + public void setDfsj(String dfsj) {
  304 + this.dfsj = dfsj;
  305 + }
  306 +
  307 + public Long getDfsjT() {
  308 + return dfsjT;
  309 + }
  310 +
  311 + public void setDfsjT(Long dfsjT) {
  312 + this.dfsjT = dfsjT;
  313 + }
  314 +
  315 + public Integer getDirectiveState() {
  316 + return directiveState;
  317 + }
  318 +
  319 + public void setDirectiveState(Integer directiveState) {
  320 + this.directiveState = directiveState;
  321 + }
  322 +
  323 + public String getQdzArrDatejh() {
  324 + return qdzArrDatejh;
  325 + }
  326 +
  327 + public void setQdzArrDatejh(String qdzArrDatejh) {
  328 + this.qdzArrDatejh = qdzArrDatejh;
  329 + }
  330 +
  331 + public String getQdzArrDatesj() {
  332 + return qdzArrDatesj;
  333 + }
  334 +
  335 + public void setQdzArrDatesj(String qdzArrDatesj) {
  336 + this.qdzArrDatesj = qdzArrDatesj;
  337 + }
  338 +}
src/main/java/com/bsth/data/schedule/thread/CalcOilThread.java
@@ -2,8 +2,9 @@ package com.bsth.data.schedule.thread; @@ -2,8 +2,9 @@ package com.bsth.data.schedule.thread;
2 2
3 import com.bsth.data.directive.DayOfDirectives; 3 import com.bsth.data.directive.DayOfDirectives;
4 import com.bsth.data.gpsdata_v2.handlers.overspeed.OverspeedProcess; 4 import com.bsth.data.gpsdata_v2.handlers.overspeed.OverspeedProcess;
5 -import com.bsth.data.safe_driv.SafeDrivCenter; 5 +import com.bsth.service.calc.CalcWaybillService;
6 import com.bsth.service.oil.DlbService; 6 import com.bsth.service.oil.DlbService;
  7 +import com.bsth.data.safe_driv.SafeDrivCenter;
7 import com.bsth.service.oil.YlbService; 8 import com.bsth.service.oil.YlbService;
8 import com.bsth.service.report.SheetService; 9 import com.bsth.service.report.SheetService;
9 import org.slf4j.Logger; 10 import org.slf4j.Logger;
@@ -29,6 +30,9 @@ public class CalcOilThread extends Thread{ @@ -29,6 +30,9 @@ public class CalcOilThread extends Thread{
29 30
30 @Autowired 31 @Autowired
31 DayOfDirectives dayOfDirectives; 32 DayOfDirectives dayOfDirectives;
  33 +
  34 + @Autowired
  35 + CalcWaybillService calcWaybillService;
32 36
33 @Override 37 @Override
34 public void run() { 38 public void run() {
@@ -38,8 +42,15 @@ public class CalcOilThread extends Thread{ @@ -38,8 +42,15 @@ public class CalcOilThread extends Thread{
38 dlbService.obtainDsq(); 42 dlbService.obtainDsq();
39 logger.info("计算路单里程加注量结束!"); 43 logger.info("计算路单里程加注量结束!");
40 logger.info("开始计算班次准点率...."); 44 logger.info("开始计算班次准点率....");
41 - sheetService.saveSheetList(""); 45 + //sheetService.saveSheetList("");
42 logger.info("计算班次准点率结束!"); 46 logger.info("计算班次准点率结束!");
  47 +
  48 + logger.info("开始保存重新统计数据....");
  49 + calcWaybillService.autoGenerate("", "");
  50 + logger.info("重新统计保存结束!");
  51 + logger.info("开始保存统计日报....");
  52 + calcWaybillService.calcDaily("", "");
  53 + logger.info("统计日报保存结束!");
43 } catch(Exception e){ 54 } catch(Exception e){
44 logger.error("计算路单里程加注量失败",e); 55 logger.error("计算路单里程加注量失败",e);
45 } 56 }
src/main/java/com/bsth/data/schedule/thread/ScheduleRefreshThread.java
@@ -77,6 +77,9 @@ public class ScheduleRefreshThread extends Thread{ @@ -77,6 +77,9 @@ public class ScheduleRefreshThread extends Thread{
77 } 77 }
78 } 78 }
79 79
  80 + //按公司编码索引数据
  81 + dayOfSchedule.groupByGsbm();
  82 +
80 //首末班入库(给网关用的数据) 83 //首末班入库(给网关用的数据)
81 FirstAndLastHandler.saveAll(); 84 FirstAndLastHandler.saveAll();
82 } catch (Exception e) { 85 } catch (Exception e) {
src/main/java/com/bsth/data/schedule/thread/SubmitToTrafficManage.java
@@ -25,36 +25,48 @@ public class SubmitToTrafficManage extends Thread{ @@ -25,36 +25,48 @@ public class SubmitToTrafficManage extends Thread{
25 @Override 25 @Override
26 public void run() { 26 public void run() {
27 logger.info("开始提交数据到运管处..."); 27 logger.info("开始提交数据到运管处...");
28 -  
29 - try {  
30 - //路单  
31 - trafficManageService.setLD();  
32 - } catch (Exception e) {  
33 - logger.error("提交路单到运管处失败", e); 28 + boolean isContinue = true;
  29 + // 上传路单,如果接口异常,会自动重传
  30 + while (isContinue){
  31 + try {
  32 + //路单
  33 + trafficManageService.setLD();
  34 + isContinue = false;
  35 + } catch (Exception e) {
  36 + logger.error("提交路单到运管处失败", e);
  37 + try {
  38 + // 如果出现异常,程序暂停60分钟后再重新执行
  39 + Thread.sleep(60 * 60 * 1000);
  40 + } catch (Exception ex) { }
  41 + }
34 } 42 }
35 - try {  
36 - //车辆里程、油耗  
37 - trafficManageService.setLCYH();  
38 - } catch (Exception e) {  
39 - logger.error("提交车辆里程、油耗到运管处失败", e);  
40 - }  
41 - try {  
42 - //线路调度日报  
43 - trafficManageService.setDDRB();  
44 - } catch (Exception e) {  
45 - logger.error("提交线路调度日报到运管处失败", e);  
46 - }  
47 - try {  
48 - //线路计划班次表  
49 - trafficManageService.setJHBC();  
50 - } catch (Exception e) {  
51 - logger.error("提交线路计划班次表到运管处失败", e);  
52 - }  
53 - try {  
54 - // 运管处基础数据更新  
55 - ygcBasicDataService.updateYgcBasicData();  
56 - } catch (Exception e) {  
57 - logger.error("运管处基础数据更新失败", e); 43 +
  44 + // 路单上传成功后,再上传其他数据
  45 + if(!isContinue){
  46 + try {
  47 + //车辆里程、油耗
  48 + trafficManageService.setLCYH();
  49 + } catch (Exception e) {
  50 + logger.error("提交车辆里程、油耗到运管处失败", e);
  51 + }
  52 + try {
  53 + //线路调度日报
  54 + trafficManageService.setDDRB();
  55 + } catch (Exception e) {
  56 + logger.error("提交线路调度日报到运管处失败", e);
  57 + }
  58 + try {
  59 + //线路计划班次表
  60 + trafficManageService.setJHBC();
  61 + } catch (Exception e) {
  62 + logger.error("提交线路计划班次表到运管处失败", e);
  63 + }
  64 + try {
  65 + // 运管处基础数据更新
  66 + ygcBasicDataService.updateYgcBasicData();
  67 + } catch (Exception e) {
  68 + logger.error("运管处基础数据更新失败", e);
  69 + }
58 } 70 }
59 logger.info("提交数据到运管处结束!"); 71 logger.info("提交数据到运管处结束!");
60 } 72 }