Commit b27fab8ec7e0096ff0e2bf0491fa56e7a16136a7

Authored by 廖磊
2 parents 31f784ee 7e127528

Merge branch 'minhang' of 192.168.168.201:panzhaov5/bsth_control into

minhang

# Conflicts:
#	src/main/java/com/bsth/service/realcontrol/ScheduleRealInfoService.java
Showing 75 changed files with 2993 additions and 400 deletions

Too many changes to show.

To preserve performance only 75 of 272 files are displayed.

README.md
@@ -17,6 +17,7 @@ @@ -17,6 +17,7 @@
17 * [掉线](#掉线) 17 * [掉线](#掉线)
18 * [调度消息下发接口HTTP](#调度消息下发接口) 18 * [调度消息下发接口HTTP](#调度消息下发接口)
19 * [调度消息上传接口HTTP](#调度消息上传接口) 19 * [调度消息上传接口HTTP](#调度消息上传接口)
  20 + * [车辆历史GPS数据](#车辆历史GPS)
20 21
21 ---------- 22 ----------
22 23
@@ -299,6 +300,91 @@ @@ -299,6 +300,91 @@
299 | data.operCode | short | 二级协议 | 300 | data.operCode | short | 二级协议 |
300 | data.requestAck | short | 请求应答字 0x06同意 0x15不同意| 301 | data.requestAck | short | 请求应答字 0x06同意 0x15不同意|
301 302
  303 +```json
  304 +{
  305 + "deviceId":12345,
  306 + "timestamp":44324,
  307 + "operCode":0xC0,
  308 + "data":{
  309 + "operCode":0xa3,
  310 + "deviceId":12345,
  311 + "ipAddress":222.66.0.204,
  312 + "port":8899,
  313 + "reportMode":0,
  314 + "interval":0,
  315 + "distance":0,
  316 + "speedingThreshold":0,
  317 + "alarmThreshold":0,
  318 + "posIpAddress":0,
  319 + "posPort":0,
  320 + "delay":0,
  321 + "speedThreshold1":0,
  322 + "speedThreshold2":0,
  323 + "contrast":0,
  324 + "brightness":0,
  325 + "saturation":0
  326 + }
  327 +}
  328 +```
  329 +| .. | .. | .. |
  330 +| ---- | ---- | ---- |
  331 +| deviceId | string | 设备编号 |
  332 +| timestamp | long | 时间戳(ms) |
  333 +| operCode | short | 一级协议 |
  334 +| data.operCode | short | 二级协议 |
  335 +| data.deviceId | string | 设备编号|
  336 +| data.ipAddress | string | 网关IP地址|
  337 +| data.port | string | 网关端口|
  338 +| data.reportMode | short | 定时定距上报模式|
  339 +| data.interval | int | 定时上报时间间隔|
  340 +| data.distance | string | 定距上报距离间隔|
  341 +| data.speedingThreshold | short | 非线路状态超速阀门|
  342 +| data.alarmThreshold | short | 预警阀门|
  343 +| data.posIpAddress | string | pos机IP地址|
  344 +| data.posPort | string | pos机端口|
  345 +| data.delay | int | 延迟机关时间|
  346 +| data.deviceId | short | 中门视频切换到码表界面速度阀门 默认45|
  347 +| data.deviceId | short | 码表界面切换到中门视频速度阀门 默认35|
  348 +| data.deviceId | short | 对比度|
  349 +| data.deviceId | short | 亮度|
  350 +| data.deviceId | short | 饱和度|
  351 +
  352 +```json
  353 +{
  354 + "deviceId":12345,
  355 + "timestamp":44324,
  356 + "operCode":0xC0,
  357 + "data":{
  358 + "operCode":0xa4
  359 + }
  360 +}
  361 +```
  362 +| .. | .. | .. |
  363 +| ---- | ---- | ---- |
  364 +| deviceId | string | 设备编号 |
  365 +| timestamp | long | 时间戳(ms) |
  366 +| operCode | short | 一级协议 |
  367 +| data.operCode | short | 二级协议 |
  368 +
  369 +```json
  370 +{
  371 + "deviceId":12345,
  372 + "timestamp":44324,
  373 + "operCode":0xC0,
  374 + "data":{
  375 + "operCode":0xa5
  376 + "programVersion":2
  377 + }
  378 +}
  379 +```
  380 +| .. | .. | .. |
  381 +| ---- | ---- | ---- |
  382 +| deviceId | string | 设备编号 |
  383 +| timestamp | long | 时间戳(ms) |
  384 +| operCode | short | 一级协议 |
  385 +| data.operCode | short | 二级协议 |
  386 +| data.programVersion | short | 程序版本 |
  387 +
302 <span style="color: red">Response</span>: 388 <span style="color: red">Response</span>:
303 ```json 389 ```json
304 { 390 {
@@ -306,7 +392,6 @@ @@ -306,7 +392,6 @@
306 } 392 }
307 ``` 393 ```
308 394
309 -  
310 ### 调度消息上传接口 395 ### 调度消息上传接口
311 ---------- 396 ----------
312 上行POST地址:[http://192.168.168.120:9088/control/upstream](http://192.168.168.120:9088/control/upstream) 397 上行POST地址:[http://192.168.168.120:9088/control/upstream](http://192.168.168.120:9088/control/upstream)
@@ -337,3 +422,34 @@ @@ -337,3 +422,34 @@
337 "errCode":0 422 "errCode":0
338 } 423 }
339 ``` 424 ```
  425 +
  426 +### 车辆历史GPS
  427 +----------
  428 +表名:BSTH_C_GPS_INFO
  429 +
  430 +| .. | .. | .. |
  431 +| ---- | ---- | ---- |
  432 +| cityCode | int | 城市代码 |
  433 +| industryCode | int | 行业代码 |
  434 +| companyCode | int | 企业代码 |
  435 +| lineId | int | 线路编号 |
  436 +| deviceId | string | 设备编号 |
  437 +| driverNo | int | 驾驶员工号 |
  438 +| carparkSerialNo | int | 停车场序列号 |
  439 +| carparkNo | string | 停车场编号 |
  440 +| stopSerialNo | int | 站点序列号 |
  441 +| stopNo | string | 停车场编号 |
  442 +| lon | float | 经度 |
  443 +| lat | float | 维度 |
  444 +| ts | long | 时间戳 |
  445 +| speedSensor | float | 发动机速度 |
  446 +| speedGps | float | gps速度 |
  447 +| direction | float | 角度0-359 |
  448 +| inTemp | int | 车内温度 |
  449 +| serviceState | long | 设备状态字 |
  450 +<<<<<<< HEAD
  451 +| daysYear | int | 对应年中的天数 为分区字段 查询一定要用此字段过滤 |
  452 +=======
  453 +| daysYear | int | 对应年中的天数 为分区字段 查询一定要用此字段过滤 |
  454 +
  455 +>>>>>>> af8ec3bedc8644f5813e9adab12a163e93cc7f50
src/main/java/com/bsth/Application.java
@@ -16,7 +16,7 @@ import org.springframework.context.annotation.Primary; @@ -16,7 +16,7 @@ import org.springframework.context.annotation.Primary;
16 @SpringBootApplication 16 @SpringBootApplication
17 public class Application extends SpringBootServletInitializer { 17 public class Application extends SpringBootServletInitializer {
18 18
19 - public static ScheduledExecutorService mainServices = Executors.newScheduledThreadPool(11); 19 + public static ScheduledExecutorService mainServices = Executors.newScheduledThreadPool(12);
20 20
21 @Override 21 @Override
22 protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 22 protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
src/main/java/com/bsth/StartCommand.java
@@ -23,37 +23,6 @@ public class StartCommand implements CommandLineRunner{ @@ -23,37 +23,6 @@ public class StartCommand implements CommandLineRunner{
23 @Autowired 23 @Autowired
24 SecurityMetadataSourceService invocationSecurityMetadataSourceService; 24 SecurityMetadataSourceService invocationSecurityMetadataSourceService;
25 25
26 - //public static ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(8);  
27 -  
28 - /*@Autowired  
29 - GpsRealDataRefreshThread gpsRefreshThread;  
30 - @Autowired  
31 - GetSchedulePlanThread getSchedulePlanThread;  
32 - @Autowired  
33 - CommonRefreshThread commonRefreshThread;  
34 - @Autowired  
35 - DirectivePersistenceThread directivePersistenceThread;  
36 - @Autowired  
37 - SchedulePersistenceThread SchedulePersistenceThread;  
38 - @Autowired  
39 - ArrivalThread gpsArrivalStationThread;  
40 - @Autowired  
41 - FirstScheduleIssuedThread firstScheduleIssuedThread;  
42 -  
43 - @Autowired  
44 - DirectiveService directiveService;  
45 - @Autowired  
46 - DirectiveBuffer directiveBuffer;  
47 - @Autowired  
48 - CarConfigInfoRepository carConfigInfoRepository;  
49 -  
50 - @Autowired  
51 - GpsOfflineMonitorThread gpsOfflineMonitorThread;*/  
52 -  
53 - /*final static Long HOUR_TIME = 1000 * 60 * 60L;  
54 -  
55 - final static int HOUR_SECOND = 60 * 60;*/  
56 -  
57 @Override 26 @Override
58 public void run(String... arg0){ 27 public void run(String... arg0){
59 28
@@ -61,91 +30,6 @@ public class StartCommand implements CommandLineRunner{ @@ -61,91 +30,6 @@ public class StartCommand implements CommandLineRunner{
61 //启动时加载所有资源 30 //启动时加载所有资源
62 invocationSecurityMetadataSourceService.loadResourceDefine(); 31 invocationSecurityMetadataSourceService.loadResourceDefine();
63 32
64 - /**  
65 - * 车辆,设备,公司等常用的映射数据,每两小时刷新一次  
66 - *//*  
67 - commonRefreshThread.start();  
68 - scheduler.scheduleWithFixedDelay(commonRefreshThread, HOUR_SECOND * 2 , HOUR_SECOND * 2, TimeUnit.SECONDS);  
69 - //等映射数据加载完......睡一会吧  
70 - Thread.sleep(4000);  
71 -  
72 - *//**  
73 - * GPS实时数据更新 线程  
74 - * 每8秒和网关HTTP接口同步一次  
75 - *//*  
76 - scheduler.scheduleWithFixedDelay(gpsRefreshThread, 0, 8, TimeUnit.SECONDS);  
77 -  
78 - *//**  
79 - * GPS 监控设备掉线行为  
80 - * 每分钟检测一次  
81 - *//*  
82 - scheduler.scheduleWithFixedDelay(gpsOfflineMonitorThread, 60, 60, TimeUnit.SECONDS);  
83 -  
84 -  
85 - *//**  
86 - * 每天 凌晨 2 点 抓取当天实际排班  
87 - *//*  
88 - //启动时先run一次  
89 - getSchedulePlanThread.start();  
90 - scheduler.scheduleAtFixedRate(getSchedulePlanThread  
91 - , ((DateUtils.getTimesnight2() + HOUR_TIME * 2) - System.currentTimeMillis()) / 1000  
92 - , 60 * 60 * 24, TimeUnit.SECONDS);  
93 -  
94 - *//**  
95 - * 调度指令两分钟入库一次  
96 - * 指令会缓存在内存,直到收到所有响应再入库  
97 - *//*  
98 - //从数据库恢复初始数据  
99 - directiveBuffer.recovery();  
100 - scheduler.scheduleWithFixedDelay(directivePersistenceThread, 20, 60 * 2, TimeUnit.SECONDS);  
101 -  
102 - *//**  
103 - * 每分钟将有变更的班次入库(不包括子任务)  
104 - * 单纯为了提高 线调操作 的响应速度  
105 - *//*  
106 - scheduler.scheduleWithFixedDelay(SchedulePersistenceThread, 60 * 1, 60 * 1, TimeUnit.SECONDS);  
107 -  
108 - *//**  
109 - * 每15秒从数据库抓取到离站信息和班次匹配  
110 - * (网关生成的到离站数据也是延迟批量入库,所以缩短该线程执行周期并不会提高 “实际到离站” 的实时性)  
111 - *//*  
112 - scheduler.scheduleWithFixedDelay(gpsArrivalStationThread, 35, 15, TimeUnit.SECONDS);  
113 -  
114 - *//**  
115 - * 首个调度指令下发(2分钟运行一次)  
116 - * 每辆车的第一个调度指令由该线程下发  
117 - * 后续班次由 “实际终点到达” 事件触发指令下发  
118 - *//*  
119 - scheduler.scheduleWithFixedDelay(firstScheduleIssuedThread, 60 , 60 * 2, TimeUnit.SECONDS);  
120 - */  
121 -  
122 -/* new Timer().schedule(new TimerTask() {  
123 -  
124 - @Override  
125 - public void run() {  
126 - List<CarConfigInfo> ccis = carConfigInfoRepository.findAll();  
127 - Cars car;  
128 - Line line;  
129 - String lineCode;  
130 - System.out.println("ccis size: " + ccis.size());  
131 - for(CarConfigInfo cci : ccis){  
132 - car = cci.getCl();  
133 - line = cci.getXl();  
134 - lineCode = line.getLineCode();  
135 -  
136 - String data = directiveService.createDeviceRefreshData(CommonMapped.vehicDeviceBiMap.inverse().get(car.getInsideCode())  
137 - , Integer.parseInt(lineCode));  
138 - System.out.println(data);  
139 - int code = HttpUtils.postJson(data);  
140 - System.out.println("车辆:" + car.getInsideCode() + "刷新线路:" + line.getLineCode());  
141 - code = directiveService.lineChange(car.getInsideCode(), Integer.parseInt(lineCode));  
142 - //directiveService.send60Phrase(car.getInsideCode(), "");  
143 - System.out.println("返回值:" + code);  
144 - }  
145 -  
146 - }  
147 - }, 1000 * 10);*/  
148 -  
149 } catch (Exception e) { 33 } catch (Exception e) {
150 e.printStackTrace(); 34 e.printStackTrace();
151 } 35 }
src/main/java/com/bsth/WebAppConfiguration.java
@@ -2,18 +2,21 @@ package com.bsth; @@ -2,18 +2,21 @@ package com.bsth;
2 2
3 import javax.servlet.Filter; 3 import javax.servlet.Filter;
4 4
  5 +import org.springframework.beans.factory.annotation.Autowired;
5 import org.springframework.boot.context.embedded.FilterRegistrationBean; 6 import org.springframework.boot.context.embedded.FilterRegistrationBean;
6 import org.springframework.context.annotation.Bean; 7 import org.springframework.context.annotation.Bean;
7 import org.springframework.context.annotation.ComponentScan; 8 import org.springframework.context.annotation.ComponentScan;
8 import org.springframework.context.annotation.Configuration; 9 import org.springframework.context.annotation.Configuration;
9 import org.springframework.web.filter.CharacterEncodingFilter; 10 import org.springframework.web.filter.CharacterEncodingFilter;
10 import org.springframework.web.filter.HttpPutFormContentFilter; 11 import org.springframework.web.filter.HttpPutFormContentFilter;
  12 +import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
11 import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 13 import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
12 import org.springframework.web.socket.config.annotation.EnableWebSocket; 14 import org.springframework.web.socket.config.annotation.EnableWebSocket;
13 import org.springframework.web.socket.config.annotation.WebSocketConfigurer; 15 import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
14 import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry; 16 import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
15 17
16 import com.bsth.filter.ResourceFilter; 18 import com.bsth.filter.ResourceFilter;
  19 +import com.bsth.oplog.http.HttpOpLogInterceptor;
17 import com.bsth.websocket.WebSocketHandshakeInterceptor; 20 import com.bsth.websocket.WebSocketHandshakeInterceptor;
18 import com.bsth.websocket.handler.RealControlSocketHandler; 21 import com.bsth.websocket.handler.RealControlSocketHandler;
19 22
@@ -22,12 +25,12 @@ import com.bsth.websocket.handler.RealControlSocketHandler; @@ -22,12 +25,12 @@ import com.bsth.websocket.handler.RealControlSocketHandler;
22 @ComponentScan 25 @ComponentScan
23 public class WebAppConfiguration extends WebMvcConfigurerAdapter implements WebSocketConfigurer{ 26 public class WebAppConfiguration extends WebMvcConfigurerAdapter implements WebSocketConfigurer{
24 27
  28 +// @Autowired
  29 +// HttpOpLogInterceptor httpOpLogInterceptor;
  30 +
25 /** 31 /**
26 - *  
27 * @Title: httpPutFormContentFilter 32 * @Title: httpPutFormContentFilter
28 * @Description: TODO(弥补浏览器不支持PUT/DELETE,对携带 _method 参数的请求进行转换) 33 * @Description: TODO(弥补浏览器不支持PUT/DELETE,对携带 _method 参数的请求进行转换)
29 - * @return Filter 返回类型  
30 - * @throws  
31 */ 34 */
32 @Bean 35 @Bean
33 public Filter httpPutFormContentFilter() { 36 public Filter httpPutFormContentFilter() {
@@ -35,11 +38,8 @@ public class WebAppConfiguration extends WebMvcConfigurerAdapter implements WebS @@ -35,11 +38,8 @@ public class WebAppConfiguration extends WebMvcConfigurerAdapter implements WebS
35 } 38 }
36 39
37 /** 40 /**
38 - *  
39 * @Title: characterEncodingFilter 41 * @Title: characterEncodingFilter
40 * @Description: TODO(编码过滤器) 42 * @Description: TODO(编码过滤器)
41 - * @return Filter 返回类型  
42 - * @throws  
43 */ 43 */
44 @Bean 44 @Bean
45 public Filter characterEncodingFilter(){ 45 public Filter characterEncodingFilter(){
@@ -50,8 +50,6 @@ public class WebAppConfiguration extends WebMvcConfigurerAdapter implements WebS @@ -50,8 +50,6 @@ public class WebAppConfiguration extends WebMvcConfigurerAdapter implements WebS
50 * 50 *
51 * @Title: resourceFilterRegistration 51 * @Title: resourceFilterRegistration
52 * @Description: TODO(静态资源过滤器, 只处理 /pages 目录下的片段请求 ) 52 * @Description: TODO(静态资源过滤器, 只处理 /pages 目录下的片段请求 )
53 - * @return FilterRegistrationBean 返回类型  
54 - * @throws  
55 */ 53 */
56 @Bean 54 @Bean
57 public FilterRegistrationBean resourceFilterRegistration(){ 55 public FilterRegistrationBean resourceFilterRegistration(){
@@ -59,8 +57,18 @@ public class WebAppConfiguration extends WebMvcConfigurerAdapter implements WebS @@ -59,8 +57,18 @@ public class WebAppConfiguration extends WebMvcConfigurerAdapter implements WebS
59 registration.setFilter(new ResourceFilter()); 57 registration.setFilter(new ResourceFilter());
60 registration.addUrlPatterns("/pages/*"); 58 registration.addUrlPatterns("/pages/*");
61 return registration; 59 return registration;
62 - }  
63 - 60 + }
  61 +
  62 + /**
  63 + *
  64 + * @Title: addInterceptors
  65 + * @Description: TODO(HTTP结构化访问日志记录 )
  66 +
  67 + @Override
  68 + public void addInterceptors(InterceptorRegistry registry) {
  69 + registry.addInterceptor(httpOpLogInterceptor);
  70 + }*/
  71 +
64 @Override 72 @Override
65 public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { 73 public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
66 //线调webSocket 74 //线调webSocket
src/main/java/com/bsth/common/Constants.java
@@ -24,7 +24,7 @@ public class Constants { @@ -24,7 +24,7 @@ public class Constants {
24 /** 24 /**
25 * 线调部分子页面不做拦截,便于浏览器缓存 25 * 线调部分子页面不做拦截,便于浏览器缓存
26 */ 26 */
27 - public static final String XD_CHILD_PAGES = "/pages/control/line/child_pages/**"; 27 + public static final String XD_CHILD_PAGES = "/real_control_v2/**";
28 public static final String XD_TEMPS = "/pages/control/line/temps/**"; 28 public static final String XD_TEMPS = "/pages/control/line/temps/**";
29 29
30 //车载网关上行接口 30 //车载网关上行接口
src/main/java/com/bsth/controller/BaseController.java
@@ -17,6 +17,7 @@ import org.springframework.web.multipart.MultipartFile; @@ -17,6 +17,7 @@ import org.springframework.web.multipart.MultipartFile;
17 17
18 import javax.servlet.http.HttpServletResponse; 18 import javax.servlet.http.HttpServletResponse;
19 import java.io.*; 19 import java.io.*;
  20 +import java.util.ArrayList;
20 import java.util.HashMap; 21 import java.util.HashMap;
21 import java.util.List; 22 import java.util.List;
22 import java.util.Map; 23 import java.util.Map;
@@ -54,18 +55,31 @@ public class BaseController&lt;T, ID extends Serializable&gt; { @@ -54,18 +55,31 @@ public class BaseController&lt;T, ID extends Serializable&gt; {
54 @RequestParam(defaultValue = "id") String order, 55 @RequestParam(defaultValue = "id") String order,
55 @RequestParam(defaultValue = "DESC") String direction){ 56 @RequestParam(defaultValue = "DESC") String direction){
56 57
57 - Direction d;  
58 -  
59 - if(null != direction && direction.equals("ASC"))  
60 - d = Direction.ASC;  
61 - else  
62 - d = Direction.DESC;  
63 -  
64 // 允许多个字段排序,order可以写单个字段,也可以写多个字段 58 // 允许多个字段排序,order可以写单个字段,也可以写多个字段
65 // 多个字段格式:{col1},{col2},{col3},....,{coln} 59 // 多个字段格式:{col1},{col2},{col3},....,{coln}
66 - // 每个字段的排序方向都是一致,这个以后再看要不要改  
67 - List<String> list = Splitter.on(",").trimResults().splitToList(order);  
68 - return baseService.list(map, new PageRequest(page, size, new Sort(d, list))); 60 + List<String> order_columns = Splitter.on(",").trimResults().splitToList(order);
  61 + // 多字段排序:DESC,ASC...
  62 + List<String> order_dirs = Splitter.on(",").trimResults().splitToList(direction);
  63 +
  64 + if (order_dirs.size() == 1) { // 所有字段采用一种排序
  65 + if (null != order_dirs.get(0) && order_dirs.get(0).equals("ASC")) {
  66 + return baseService.list(map, new PageRequest(page, size, new Sort(Direction.ASC, order_columns)));
  67 + } else {
  68 + return baseService.list(map, new PageRequest(page, size, new Sort(Direction.DESC, order_columns)));
  69 + }
  70 + } else if (order_columns.size() == order_dirs.size()) {
  71 + List<Sort.Order> orderList = new ArrayList<>();
  72 + for (int i = 0; i < order_columns.size(); i++) {
  73 + if (null != order_dirs.get(i) && order_dirs.get(i).equals("ASC")) {
  74 + orderList.add(new Sort.Order(Direction.ASC, order_columns.get(i)));
  75 + } else {
  76 + orderList.add(new Sort.Order(Direction.DESC, order_columns.get(i)));
  77 + }
  78 + }
  79 + return baseService.list(map, new PageRequest(page, size, new Sort(orderList)));
  80 + } else {
  81 + throw new RuntimeException("多字段排序参数格式问题,排序顺序和字段数不一致");
  82 + }
69 } 83 }
70 84
71 /** 85 /**
src/main/java/com/bsth/controller/CarDeviceController.java
1 package com.bsth.controller; 1 package com.bsth.controller;
2 2
  3 +import com.bsth.common.ResponseCode;
3 import com.bsth.entity.CarDevice; 4 import com.bsth.entity.CarDevice;
  5 +import com.bsth.service.CarDeviceService;
  6 +import org.joda.time.DateTime;
  7 +import org.springframework.beans.factory.annotation.Autowired;
4 import org.springframework.web.bind.annotation.RequestBody; 8 import org.springframework.web.bind.annotation.RequestBody;
5 import org.springframework.web.bind.annotation.RequestMapping; 9 import org.springframework.web.bind.annotation.RequestMapping;
6 import org.springframework.web.bind.annotation.RequestMethod; 10 import org.springframework.web.bind.annotation.RequestMethod;
7 import org.springframework.web.bind.annotation.RestController; 11 import org.springframework.web.bind.annotation.RestController;
8 12
  13 +import java.util.HashMap;
  14 +import java.util.Iterator;
9 import java.util.Map; 15 import java.util.Map;
10 16
11 /** 17 /**
12 * Created by xu on 16/6/15. 18 * Created by xu on 16/6/15.
13 */ 19 */
14 @RestController 20 @RestController
15 -@RequestMapping("carDevice") 21 +@RequestMapping("cde")
16 public class CarDeviceController extends BaseController<CarDevice, Long> { 22 public class CarDeviceController extends BaseController<CarDevice, Long> {
17 - 23 + @Autowired
  24 + private CarDeviceService carDeviceService;
18 /** 25 /**
19 * 覆写方法,因为form提交的方式参数不全,改用 json形式提交 @RequestBody 26 * 覆写方法,因为form提交的方式参数不全,改用 json形式提交 @RequestBody
20 * @Title: save 27 * @Title: save
@@ -28,4 +35,22 @@ public class CarDeviceController extends BaseController&lt;CarDevice, Long&gt; { @@ -28,4 +35,22 @@ public class CarDeviceController extends BaseController&lt;CarDevice, Long&gt; {
28 public Map<String, Object> save(@RequestBody CarDevice t){ 35 public Map<String, Object> save(@RequestBody CarDevice t){
29 return baseService.save(t); 36 return baseService.save(t);
30 } 37 }
  38 +
  39 + @RequestMapping(value = "/validate/qyrq", method = RequestMethod.GET)
  40 + public Map<String, Object> validateQyrq(String qyrq, Integer xl, Integer cl) {
  41 + // 验证启用日期,必须是最大的日期,就是最晚的日期
  42 + Map<String, Object> obj = new HashMap<>();
  43 + obj.put("xl_eq", xl);
  44 + obj.put("cl_eq", cl);
  45 + obj.put("qyrq_ge", new DateTime(qyrq).toDate());
  46 + Iterator<CarDevice> iterator = carDeviceService.list(obj).iterator();
  47 + if (iterator.hasNext()) {
  48 + obj.clear();
  49 + obj.put("status", ResponseCode.ERROR);
  50 + } else {
  51 + obj.clear();
  52 + obj.put("status", ResponseCode.SUCCESS);
  53 + }
  54 + return obj;
  55 + }
31 } 56 }
src/main/java/com/bsth/controller/SectionSpeedController.java 0 → 100644
  1 +package com.bsth.controller;
  2 +
  3 +import java.util.List;
  4 +import java.util.Map;
  5 +
  6 +import com.bsth.entity.SectionSpeed;
  7 +import com.bsth.service.SectionSpeedService;
  8 +
  9 +import org.springframework.beans.factory.annotation.Autowired;
  10 +import org.springframework.web.bind.annotation.*;
  11 +
  12 +
  13 +@RestController
  14 +@RequestMapping("sectionspeed")
  15 +public class SectionSpeedController extends BaseController<SectionSpeed, Integer> {
  16 +
  17 + @Autowired
  18 + private SectionSpeedService sectionSpeedService;
  19 +
  20 + /**@description TODO(新增路段限速) */
  21 + @RequestMapping(value="add" , method = RequestMethod.POST)
  22 + public Map<String, Object> collectionSave(@RequestParam Map<String, Object> map) {
  23 + return sectionSpeedService.add(map);
  24 + }
  25 +
  26 + /**@description TODO(修改路段) */
  27 + @RequestMapping(value="roadUpd" , method = RequestMethod.POST)
  28 + public Map<String, Object> roadUpd(@RequestParam Map<String, Object> map) {
  29 + return sectionSpeedService.roadUpd(map);
  30 + }
  31 +
  32 + /** @description TODO(根据线路ID与编码及方向查询路段限速信息) */
  33 + @RequestMapping(value="getSectionSpeedInfoList",method=RequestMethod.GET)
  34 + public List<Map<String, Object>> getSectionSpeedInfoList(@RequestParam Map<String, Object> map){
  35 + return sectionSpeedService.getSectionSpeedInfo(map);
  36 + }
  37 +
  38 + /**
  39 + * @Description :TODO(查询路段信息)
  40 + *
  41 + * @param map <line.id_eq:线路ID; directions_eq:方向>
  42 + *
  43 + * @return Map<String, Object>
  44 + */
  45 + @RequestMapping(value = "/analyticSection" , method = RequestMethod.GET)
  46 + public List<Map<String, Object>> findPoints(@RequestParam Map<String, Object> map) {
  47 + return sectionSpeedService.analyticSection(map);
  48 + }
  49 +
  50 +}
src/main/java/com/bsth/controller/directive/DirectiveController.java
@@ -3,13 +3,17 @@ package com.bsth.controller.directive; @@ -3,13 +3,17 @@ package com.bsth.controller.directive;
3 import java.util.List; 3 import java.util.List;
4 import java.util.Map; 4 import java.util.Map;
5 5
  6 +import org.apache.commons.lang3.StringEscapeUtils;
6 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.web.bind.annotation.RequestMapping; 8 import org.springframework.web.bind.annotation.RequestMapping;
8 import org.springframework.web.bind.annotation.RequestMethod; 9 import org.springframework.web.bind.annotation.RequestMethod;
9 import org.springframework.web.bind.annotation.RequestParam; 10 import org.springframework.web.bind.annotation.RequestParam;
10 import org.springframework.web.bind.annotation.RestController; 11 import org.springframework.web.bind.annotation.RestController;
11 12
  13 +import com.alibaba.fastjson.JSON;
  14 +import com.alibaba.fastjson.JSONObject;
12 import com.bsth.entity.directive.D80; 15 import com.bsth.entity.directive.D80;
  16 +import com.bsth.entity.directive.DC0_A3;
13 import com.bsth.entity.sys.SysUser; 17 import com.bsth.entity.sys.SysUser;
14 import com.bsth.security.util.SecurityUtils; 18 import com.bsth.security.util.SecurityUtils;
15 import com.bsth.service.directive.DirectiveService; 19 import com.bsth.service.directive.DirectiveService;
@@ -130,4 +134,28 @@ public class DirectiveController { @@ -130,4 +134,28 @@ public class DirectiveController {
130 134
131 return directiveService.findDirective(nbbm, dType, page, size); 135 return directiveService.findDirective(nbbm, dType, page, size);
132 } 136 }
  137 +
  138 + @RequestMapping(value = "/c0a4", method = RequestMethod.POST)
  139 + public int c0a4(@RequestParam String nbbm){
  140 + return directiveService.sendC0A4(nbbm);
  141 + }
  142 +
  143 +// @RequestMapping(value = "/c0a3", method = RequestMethod.POST)
  144 +// public int c0a3(@RequestParam DC0_A4 c0a4){
  145 +// return directiveService.sendC0A3(c0a4);
  146 +// }
  147 +
  148 + @RequestMapping(value = "/c0a3", method = RequestMethod.POST)
  149 + public int c0a3(String json){
  150 + json = StringEscapeUtils.unescapeHtml4(json);
  151 + DC0_A3 c0a3 = JSON.toJavaObject(JSONObject.parseObject(json), DC0_A3.class);
  152 + return directiveService.sendC0A3(c0a3);
  153 + }
  154 +
  155 + @RequestMapping(value = "/c0a5", method = RequestMethod.POST)
  156 + public int c0a5(String json){
  157 + json = StringEscapeUtils.unescapeHtml4(json);
  158 + //DC0_A3 c0a3 = JSON.toJavaObject(JSONObject.parseObject(json), DC0_A3.class);
  159 + return directiveService.sendC0A5(json);
  160 + }
133 } 161 }
src/main/java/com/bsth/controller/directive/UpstreamEntrance.java
@@ -13,6 +13,7 @@ import com.alibaba.fastjson.JSONObject; @@ -13,6 +13,7 @@ import com.alibaba.fastjson.JSONObject;
13 import com.bsth.data.directive.DayOfDirectives; 13 import com.bsth.data.directive.DayOfDirectives;
14 import com.bsth.data.pilot80.PilotReport; 14 import com.bsth.data.pilot80.PilotReport;
15 import com.bsth.entity.directive.D80; 15 import com.bsth.entity.directive.D80;
  16 +import com.bsth.entity.directive.DC0_A4;
16 import com.bsth.entity.directive.DirectiveReponse; 17 import com.bsth.entity.directive.DirectiveReponse;
17 18
18 /** 19 /**
@@ -53,10 +54,25 @@ public class UpstreamEntrance { @@ -53,10 +54,25 @@ public class UpstreamEntrance {
53 // 80协议上报 54 // 80协议上报
54 else if (jsonParam.getInteger("operCode") == 0X80) { 55 else if (jsonParam.getInteger("operCode") == 0X80) {
55 try { 56 try {
56 - D80 d80 = JSON.toJavaObject(jsonParam, D80.class);  
57 - // 驾驶员上报  
58 - if (d80.getData().getOperCode2() == 0x26) 57 + JSONObject data = jsonParam.getJSONObject("data");
  58 + switch (data.getShort("operCode2")) {
  59 + case 0x26:
  60 + // 驾驶员上报
  61 + D80 d80 = JSON.toJavaObject(jsonParam, D80.class);
59 pilotReport.report(d80); 62 pilotReport.report(d80);
  63 + break;
  64 +
  65 + case 0xA4:
  66 + data.put("port", data.getString("port").trim());
  67 + data.put("posPort", data.getString("posPort").trim());
  68 + data.put("posIpAddress", data.getString("posIpAddress").trim());
  69 + data.put("ipAddress", data.getString("ipAddress").trim());
  70 +
  71 + DC0_A4 c0a4 = JSON.toJavaObject(jsonParam, DC0_A4.class);
  72 + System.out.println(c0a4);
  73 + break;
  74 + }
  75 +
60 } catch (Exception e) { 76 } catch (Exception e) {
61 logger.error("", e); 77 logger.error("", e);
62 } 78 }
src/main/java/com/bsth/controller/oil/YlbController.java
@@ -2,7 +2,9 @@ package com.bsth.controller.oil; @@ -2,7 +2,9 @@ package com.bsth.controller.oil;
2 2
3 import java.text.ParseException; 3 import java.text.ParseException;
4 import java.text.SimpleDateFormat; 4 import java.text.SimpleDateFormat;
  5 +import java.util.ArrayList;
5 import java.util.Date; 6 import java.util.Date;
  7 +import java.util.Iterator;
6 import java.util.List; 8 import java.util.List;
7 import java.util.Map; 9 import java.util.Map;
8 10
@@ -44,14 +46,47 @@ public class YlbController extends BaseController&lt;Ylb, Integer&gt;{ @@ -44,14 +46,47 @@ public class YlbController extends BaseController&lt;Ylb, Integer&gt;{
44 * @return 46 * @return
45 */ 47 */
46 @RequestMapping(value = "/obtain",method = RequestMethod.GET) 48 @RequestMapping(value = "/obtain",method = RequestMethod.GET)
47 - public List<Map<String, Object>> obtain(@RequestParam Map<String, Object> map){ 49 + public Map<String, Object> obtain(@RequestParam Map<String, Object> map){
48 String rq=map.get("rq").toString(); 50 String rq=map.get("rq").toString();
49 - List<Map<String, Object>> list=yblService.obtain(rq); 51 + Map<String, Object> list=yblService.obtain(rq);
50 System.out.println(); 52 System.out.println();
51 return list; 53 return list;
52 } 54 }
53 55
54 /** 56 /**
  57 + * 拆分油量
  58 + * @param map
  59 + * @return
  60 + */
  61 + @RequestMapping(value = "/sort",method = RequestMethod.GET)
  62 + public Map<String, Object> sort(@RequestParam Map<String, Object> map){
  63 + Map<String, Object> list=yblService.sort(map);
  64 + return list;
  65 + }
  66 +
  67 + /**
  68 + * 进场油量等于出场油量
  69 + * @param map
  70 + * @return
  71 + */
  72 + @RequestMapping(value = "/outAndIn",method = RequestMethod.GET)
  73 + public Map<String, Object> outAndIn(@RequestParam Map<String, Object> map){
  74 + Map<String, Object> list=yblService.outAndIn(map);
  75 + return list;
  76 + }
  77 +
  78 + /**
  79 + * 核对油量(有加油没里程)
  80 + * @param map
  81 + * @return
  82 + */
  83 + @RequestMapping(value = "/checkYl",method = RequestMethod.GET)
  84 + public Map<String, Object> checkYl(@RequestParam Map<String, Object> map){
  85 + Map<String, Object> list=yblService.checkYl(map);
  86 + return list;
  87 + }
  88 +
  89 + /**
55 * 90 *
56 * @Title: list 91 * @Title: list
57 * @Description: TODO(多条件分页查询) 92 * @Description: TODO(多条件分页查询)
src/main/java/com/bsth/controller/oil/YlxxbController.java
1 package com.bsth.controller.oil; 1 package com.bsth.controller.oil;
2 2
  3 +import java.util.Map;
  4 +
  5 +import org.springframework.beans.factory.annotation.Autowired;
3 import org.springframework.web.bind.annotation.RequestMapping; 6 import org.springframework.web.bind.annotation.RequestMapping;
  7 +import org.springframework.web.bind.annotation.RequestMethod;
  8 +import org.springframework.web.bind.annotation.RequestParam;
4 import org.springframework.web.bind.annotation.RestController; 9 import org.springframework.web.bind.annotation.RestController;
5 10
6 import com.bsth.controller.BaseController; 11 import com.bsth.controller.BaseController;
7 import com.bsth.entity.oil.Ylxxb; 12 import com.bsth.entity.oil.Ylxxb;
  13 +import com.bsth.service.oil.YlxxbService;
  14 +import com.bsth.util.PageObject;
8 15
9 @RestController 16 @RestController
10 @RequestMapping("ylxxb") 17 @RequestMapping("ylxxb")
11 public class YlxxbController extends BaseController<Ylxxb, Integer>{ 18 public class YlxxbController extends BaseController<Ylxxb, Integer>{
12 - 19 + @Autowired
  20 + private YlxxbService service;
  21 + @RequestMapping(value = "/pagequery",method = RequestMethod.GET)
  22 + public PageObject<Ylxxb> pagequery(@RequestParam Map<String, Object> map){
  23 + PageObject<Ylxxb> pagequery=null;
  24 + map.put("curPage", map.get("page").toString());
  25 + map.put("pageData","10");
  26 + pagequery=service.Pagequery(map);
  27 + return pagequery;
  28 + }
  29 +
  30 +
  31 + /**
  32 + * 核对油量(有加油没里程)
  33 + * @param map
  34 + * @return
  35 + */
  36 + @RequestMapping(value = "/check",method = RequestMethod.GET)
  37 + public Map<String, Object> check(@RequestParam Map<String, Object> map){
  38 + Map<String, Object> list=service.checkJsy(map);
  39 + return list;
  40 + }
13 } 41 }
src/main/java/com/bsth/controller/realcontrol/BasicDataController.java
1 package com.bsth.controller.realcontrol; 1 package com.bsth.controller.realcontrol;
2 2
  3 +import java.util.HashMap;
  4 +import java.util.List;
3 import java.util.Map; 5 import java.util.Map;
4 6
5 import org.springframework.web.bind.annotation.RequestMapping; 7 import org.springframework.web.bind.annotation.RequestMapping;
6 import org.springframework.web.bind.annotation.RestController; 8 import org.springframework.web.bind.annotation.RestController;
7 9
  10 +import com.alibaba.fastjson.JSON;
  11 +import com.alibaba.fastjson.serializer.PropertyFilter;
8 import com.bsth.data.BasicData; 12 import com.bsth.data.BasicData;
9 13
10 @RestController 14 @RestController
@@ -21,4 +25,49 @@ public class BasicDataController { @@ -21,4 +25,49 @@ public class BasicDataController {
21 public Map<String, String> findLineCodeMap(){ 25 public Map<String, String> findLineCodeMap(){
22 return BasicData.lineCode2NameMap; 26 return BasicData.lineCode2NameMap;
23 } 27 }
  28 +
  29 + @RequestMapping("/parks")
  30 + public Map<String, String> findParks(){
  31 + Map<String, String> rs = new HashMap<>();
  32 + List<String> codes = BasicData.parkCodeList;
  33 + for(String code : codes){
  34 + rs.put(code, BasicData.stationCode2NameMap.get(code));
  35 + }
  36 + return rs;
  37 + }
  38 +
  39 + @RequestMapping("/personnel")
  40 + public Map<String, Object> findPersonnelInfo(){
  41 + Map<String, Object> rs = new HashMap<>();
  42 + PersonnelFieldFilter filter=new PersonnelFieldFilter();
  43 + //驾驶员
  44 + rs.put("jsy", JSON.parse(JSON.toJSONString(BasicData.jsyMap.values(), filter)));
  45 + //售票员
  46 + rs.put("spy", JSON.parse(JSON.toJSONString(BasicData.spyMap.values(), filter)));
  47 + return rs;
  48 + }
  49 +
  50 + @RequestMapping("/all_personnel")
  51 + public Map<String, String> all_personnel(){
  52 + //Map<String, Object> rs = new HashMap<>();
  53 + //PersonnelFieldFilter filter=new PersonnelFieldFilter();
  54 +
  55 + //rs.put("list", JSON.parse(JSON.toJSONString(BasicData.jsyMap.values(), filter)));
  56 + return BasicData.allPerson;
  57 + }
  58 +
  59 +
  60 + public class PersonnelFieldFilter implements PropertyFilter{
  61 +
  62 + String[] whiteList=new String[]{"jobCode", "personnelName", "brancheCompany"};
  63 + @Override
  64 + public boolean apply(Object object, String name, Object value) {
  65 + for(String f : whiteList){
  66 + if(name.equals(f))
  67 + return true;
  68 + }
  69 + return false;
  70 + }
  71 +
  72 + }
24 } 73 }
src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
@@ -7,6 +7,7 @@ import java.util.List; @@ -7,6 +7,7 @@ import java.util.List;
7 import java.util.Map; 7 import java.util.Map;
8 8
9 import org.apache.commons.lang3.StringEscapeUtils; 9 import org.apache.commons.lang3.StringEscapeUtils;
  10 +import org.drools.core.runtime.help.impl.XStreamJSon.JSonAbortWorkItemConverter;
10 import org.springframework.beans.factory.annotation.Autowired; 11 import org.springframework.beans.factory.annotation.Autowired;
11 import org.springframework.web.bind.annotation.PathVariable; 12 import org.springframework.web.bind.annotation.PathVariable;
12 import org.springframework.web.bind.annotation.RequestMapping; 13 import org.springframework.web.bind.annotation.RequestMapping;
@@ -14,7 +15,11 @@ import org.springframework.web.bind.annotation.RequestMethod; @@ -14,7 +15,11 @@ import org.springframework.web.bind.annotation.RequestMethod;
14 import org.springframework.web.bind.annotation.RequestParam; 15 import org.springframework.web.bind.annotation.RequestParam;
15 import org.springframework.web.bind.annotation.RestController; 16 import org.springframework.web.bind.annotation.RestController;
16 17
  18 +import com.alibaba.fastjson.JSON;
  19 +import com.alibaba.fastjson.JSONArray;
17 import com.bsth.controller.BaseController; 20 import com.bsth.controller.BaseController;
  21 +import com.bsth.controller.realcontrol.dto.ChangePersonCar;
  22 +import com.bsth.controller.realcontrol.dto.DfsjChange;
18 import com.bsth.data.BasicData; 23 import com.bsth.data.BasicData;
19 import com.bsth.data.schedule.DayOfSchedule; 24 import com.bsth.data.schedule.DayOfSchedule;
20 import com.bsth.entity.realcontrol.ScheduleRealInfo; 25 import com.bsth.entity.realcontrol.ScheduleRealInfo;
@@ -42,10 +47,12 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo, @@ -42,10 +47,12 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
42 47
43 /** 48 /**
44 * 49 *
  50 + * 改由通过 websocket 注册监听!!!
  51 + *
45 * @Title: registerLine @Description: TODO(注册线路,后续才能收到数据推送) @param @param 52 * @Title: registerLine @Description: TODO(注册线路,后续才能收到数据推送) @param @param
46 * lineCodes @throws 53 * lineCodes @throws
47 * 用GET 防止监控模式下被拦截 54 * 用GET 防止监控模式下被拦截
48 - */ 55 +
49 @RequestMapping(value = "/registerLine", method = RequestMethod.GET) 56 @RequestMapping(value = "/registerLine", method = RequestMethod.GET)
50 public int registerLine(@RequestParam String lineCodes) { 57 public int registerLine(@RequestParam String lineCodes) {
51 List<String> list = Splitter.on(",").trimResults().omitEmptyStrings().splitToList(lineCodes); 58 List<String> list = Splitter.on(",").trimResults().omitEmptyStrings().splitToList(lineCodes);
@@ -58,7 +65,7 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo, @@ -58,7 +65,7 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
58 BasicData.lineCode2SocketUserMap.put(line, userName); 65 BasicData.lineCode2SocketUserMap.put(line, userName);
59 66
60 return 0; 67 return 0;
61 - } 68 + }*/
62 69
63 /** 70 /**
64 * 71 *
@@ -67,20 +74,19 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo, @@ -67,20 +74,19 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
67 */ 74 */
68 @RequestMapping(value = "/outgoAdjust", method = RequestMethod.POST) 75 @RequestMapping(value = "/outgoAdjust", method = RequestMethod.POST)
69 public Map<String, Object> outgoAdjust(@RequestParam Long id, @RequestParam String remarks, 76 public Map<String, Object> outgoAdjust(@RequestParam Long id, @RequestParam String remarks,
70 - @RequestParam String dfsj, String clZbh, String jsy, String spy) {  
71 - return scheduleRealInfoService.outgoAdjust(id, remarks, dfsj, clZbh, jsy, spy); 77 + @RequestParam String dfsj/*, String clZbh, String jsy, String spy*/) {
  78 + return scheduleRealInfoService.outgoAdjust(id, remarks, dfsj/*, clZbh, jsy, spy*/);
72 } 79 }
73 80
74 /** 81 /**
75 * 82 *
76 - * @Title: destroy @Description: TODO(销毁,烂班) @param @param idsStr 要烂掉的班次ID  
77 - * ,分隔 @param @param spaceAdjust 自动调整后续间隔(1 是 -1 否) @param @param remarks  
78 - * 备注 @param @param reason 理由 @param @param spaceNum 间隔(分钟) @throws 83 + * @Title: destroy @Description: TODO(销毁,烂班) @param @param idsStr 要烂掉的班次ID ,分隔
79 */ 84 */
80 @RequestMapping(value = "/destroy", method = RequestMethod.POST) 85 @RequestMapping(value = "/destroy", method = RequestMethod.POST)
81 - public Map<String, Object> destroy(@RequestParam String idsStr, @RequestParam(defaultValue = "-1") int spaceAdjust,  
82 - @RequestParam String remarks, @RequestParam String reason, @RequestParam(defaultValue = "0") int spaceNum) {  
83 - return scheduleRealInfoService.destroy(idsStr, spaceAdjust, remarks, reason, spaceNum); 86 + public Map<String, Object> destroy(@RequestParam String idsStr
  87 + /*, @RequestParam(defaultValue = "-1") int spaceAdjust*/,
  88 + @RequestParam String remarks/*, @RequestParam String reason, @RequestParam(defaultValue = "0") int spaceNum*/) {
  89 + return scheduleRealInfoService.destroy(idsStr/*, spaceAdjust*/, remarks/*, reason, spaceNum*/);
84 } 90 }
85 91
86 /** 92 /**
@@ -380,4 +386,18 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo, @@ -380,4 +386,18 @@ public class ScheduleRealInfoController extends BaseController&lt;ScheduleRealInfo,
380 public List<ScheduleRealInfo> realScheduleList(@RequestParam String line,@RequestParam String date){ 386 public List<ScheduleRealInfo> realScheduleList(@RequestParam String line,@RequestParam String date){
381 return scheduleRealInfoService.realScheduleList(line,date); 387 return scheduleRealInfoService.realScheduleList(line,date);
382 } 388 }
  389 +
  390 + @RequestMapping(value="/multi_tzrc", method=RequestMethod.POST)
  391 + public Map<String, Object> multi_tzrc(@RequestParam String cpcsJson){
  392 + cpcsJson = StringEscapeUtils.unescapeHtml4(cpcsJson);
  393 + List<ChangePersonCar> cpcs = JSONArray.parseArray(cpcsJson, ChangePersonCar.class);
  394 + return scheduleRealInfoService.multi_tzrc(cpcs);
  395 + }
  396 +
  397 + @RequestMapping(value="/multi_dftz", method=RequestMethod.POST)
  398 + public Map<String, Object> multi_dftz(@RequestParam String dcsJson){
  399 + dcsJson = StringEscapeUtils.unescapeHtml4(dcsJson);
  400 + List<DfsjChange> dfsjcs = JSONArray.parseArray(dcsJson, DfsjChange.class);
  401 + return scheduleRealInfoService.multi_dftz(dfsjcs);
  402 + }
383 } 403 }
src/main/java/com/bsth/controller/realcontrol/dto/ChangePersonCar.java 0 → 100644
  1 +package com.bsth.controller.realcontrol.dto;
  2 +
  3 +/**
  4 + *
  5 + * @ClassName: ChangePersonCar
  6 + * @Description: TODO(换人换车)
  7 + * @author PanZhao
  8 + * @date 2016年10月30日 下午10:06:54
  9 + *
  10 + */
  11 +public class ChangePersonCar {
  12 +
  13 + /** 班次ID */
  14 + private Long schId;
  15 +
  16 + /** 要更换的车辆自编号 */
  17 + private String clZbh;
  18 +
  19 + /** 驾驶员 工号/姓名 */
  20 + private String jsy;
  21 +
  22 + /** 售票员 工号/姓名 */
  23 + private String spy;
  24 +
  25 + public Long getSchId() {
  26 + return schId;
  27 + }
  28 +
  29 + public void setSchId(Long schId) {
  30 + this.schId = schId;
  31 + }
  32 +
  33 + public String getJsy() {
  34 + return jsy;
  35 + }
  36 +
  37 + public void setJsy(String jsy) {
  38 + this.jsy = jsy;
  39 + }
  40 +
  41 + public String getSpy() {
  42 + return spy;
  43 + }
  44 +
  45 + public void setSpy(String spy) {
  46 + this.spy = spy;
  47 + }
  48 +
  49 + public String getClZbh() {
  50 + return clZbh;
  51 + }
  52 +
  53 + public void setClZbh(String clZbh) {
  54 + this.clZbh = clZbh;
  55 + }
  56 +
  57 +}
src/main/java/com/bsth/controller/realcontrol/dto/DfsjChange.java 0 → 100644
  1 +package com.bsth.controller.realcontrol.dto;
  2 +
  3 +/**
  4 + *
  5 + * @ClassName: DfsjChange
  6 + * @Description: TODO(待发调整)
  7 + * @author PanZhao
  8 + * @date 2016年10月31日 上午1:00:11
  9 + *
  10 + */
  11 +public class DfsjChange {
  12 +
  13 + private Long schId;
  14 +
  15 + private String old_dfsj;
  16 +
  17 + private String new_dfsj;
  18 +
  19 + public Long getSchId() {
  20 + return schId;
  21 + }
  22 +
  23 + public void setSchId(Long schId) {
  24 + this.schId = schId;
  25 + }
  26 +
  27 + public String getOld_dfsj() {
  28 + return old_dfsj;
  29 + }
  30 +
  31 + public void setOld_dfsj(String old_dfsj) {
  32 + this.old_dfsj = old_dfsj;
  33 + }
  34 +
  35 + public String getNew_dfsj() {
  36 + return new_dfsj;
  37 + }
  38 +
  39 + public void setNew_dfsj(String new_dfsj) {
  40 + this.new_dfsj = new_dfsj;
  41 + }
  42 +
  43 +}
src/main/java/com/bsth/controller/schedule/GuideboardInfoController.java
@@ -8,8 +8,12 @@ import org.springframework.beans.factory.annotation.Autowired; @@ -8,8 +8,12 @@ import org.springframework.beans.factory.annotation.Autowired;
8 import org.springframework.boot.context.properties.EnableConfigurationProperties; 8 import org.springframework.boot.context.properties.EnableConfigurationProperties;
9 import org.springframework.web.bind.annotation.PathVariable; 9 import org.springframework.web.bind.annotation.PathVariable;
10 import org.springframework.web.bind.annotation.RequestMapping; 10 import org.springframework.web.bind.annotation.RequestMapping;
  11 +import org.springframework.web.bind.annotation.RequestMethod;
11 import org.springframework.web.bind.annotation.RestController; 12 import org.springframework.web.bind.annotation.RestController;
12 13
  14 +import java.util.List;
  15 +import java.util.Map;
  16 +
13 /** 17 /**
14 * Created by xu on 16/5/11. 18 * Created by xu on 16/5/11.
15 */ 19 */
@@ -31,4 +35,10 @@ public class GuideboardInfoController extends BaseController&lt;GuideboardInfo, Lon @@ -31,4 +35,10 @@ public class GuideboardInfoController extends BaseController&lt;GuideboardInfo, Lon
31 public GuideboardInfo findById(@PathVariable("id") Long aLong) { 35 public GuideboardInfo findById(@PathVariable("id") Long aLong) {
32 return guideboardInfoRepository.findOneExtend(aLong); 36 return guideboardInfoRepository.findOneExtend(aLong);
33 } 37 }
  38 +
  39 +
  40 + @RequestMapping(value = "/ttlpnames", method = RequestMethod.GET)
  41 + public List<Map<String, Object>> findLpName(Long ttid) {
  42 + return guideboardInfoRepository.findLpName(ttid);
  43 + }
34 } 44 }
src/main/java/com/bsth/controller/schedule/RerunController.java 0 → 100644
  1 +package com.bsth.controller.schedule;
  2 +
  3 +import com.bsth.controller.BaseController;
  4 +import com.bsth.entity.schedule.rule.RerunRule;
  5 +import com.bsth.repository.schedule.RerunRuleRepository;
  6 +import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.web.bind.annotation.*;
  8 +
  9 +import java.util.Map;
  10 +
  11 +/**
  12 + * Created by xu on 16/10/20.
  13 + */
  14 +@RestController
  15 +@RequestMapping("rms")
  16 +public class RerunController extends BaseController<RerunRule, Long> {
  17 +
  18 + @Autowired
  19 + private RerunRuleRepository rerunRuleRepository;
  20 +
  21 + @Override
  22 + public RerunRule findById(@PathVariable("id") Long aLong) {
  23 + return rerunRuleRepository.findOneExtend(aLong);
  24 + }
  25 +
  26 + /**
  27 + * 覆写方法,因为form提交的方式参数不全,改用 json形式提交 @RequestBody
  28 + * @Title: save
  29 + * @Description: TODO(持久化对象)
  30 + * @param @param t
  31 + * @param @return 设定文件
  32 + * @return Map<String,Object> {status: 1(成功),-1(失败)}
  33 + * @throws
  34 + */
  35 + @RequestMapping(method = RequestMethod.POST)
  36 + public Map<String, Object> save(@RequestBody RerunRule t){
  37 + return baseService.save(t);
  38 + }
  39 +
  40 +
  41 +}
src/main/java/com/bsth/controller/schedule/TTInfoDetailController.java
@@ -16,6 +16,7 @@ import org.springframework.web.multipart.MultipartFile; @@ -16,6 +16,7 @@ import org.springframework.web.multipart.MultipartFile;
16 16
17 import java.util.HashMap; 17 import java.util.HashMap;
18 import java.util.Iterator; 18 import java.util.Iterator;
  19 +import java.util.List;
19 import java.util.Map; 20 import java.util.Map;
20 21
21 /** 22 /**
@@ -111,4 +112,9 @@ public class TTInfoDetailController extends BaseController&lt;TTInfoDetail, Long&gt; { @@ -111,4 +112,9 @@ public class TTInfoDetailController extends BaseController&lt;TTInfoDetail, Long&gt; {
111 public TTInfoDetail findById(@PathVariable("id") Long aLong) { 112 public TTInfoDetail findById(@PathVariable("id") Long aLong) {
112 return ttInfoDetailRepository.findOneExtend(aLong); 113 return ttInfoDetailRepository.findOneExtend(aLong);
113 } 114 }
  115 +
  116 + @RequestMapping(value = "/bcdetail", method = RequestMethod.GET)
  117 + public List<TTInfoDetail> findBcdetails(Integer xlId, Long ttinfoId, Long lpId) {
  118 + return ttInfoDetailRepository.findBcdetails(xlId, ttinfoId, lpId);
  119 + }
114 } 120 }
src/main/java/com/bsth/controller/schedule/TrafficManageController.java
@@ -3,8 +3,10 @@ package com.bsth.controller.schedule; @@ -3,8 +3,10 @@ package com.bsth.controller.schedule;
3 import com.bsth.service.TrafficManageService; 3 import com.bsth.service.TrafficManageService;
4 4
5 import org.springframework.beans.factory.annotation.Autowired; 5 import org.springframework.beans.factory.annotation.Autowired;
  6 +import org.springframework.web.bind.annotation.PathVariable;
6 import org.springframework.web.bind.annotation.RequestMapping; 7 import org.springframework.web.bind.annotation.RequestMapping;
7 import org.springframework.web.bind.annotation.RequestMethod; 8 import org.springframework.web.bind.annotation.RequestMethod;
  9 +import org.springframework.web.bind.annotation.RequestParam;
8 import org.springframework.web.bind.annotation.RestController; 10 import org.springframework.web.bind.annotation.RestController;
9 11
10 /** 12 /**
@@ -28,4 +30,58 @@ public class TrafficManageController { @@ -28,4 +30,58 @@ public class TrafficManageController {
28 throw new Exception(exp.getCause()); 30 throw new Exception(exp.getCause());
29 } 31 }
30 } 32 }
  33 +
  34 + @RequestMapping(value = "/setCL", method = RequestMethod.GET)
  35 + public String setCL() throws Exception {
  36 + try {
  37 + return trManageService.setCL();
  38 + } catch (Exception exp) {
  39 + throw new Exception(exp.getCause());
  40 + }
  41 + }
  42 +
  43 + @RequestMapping(value = "/setSJ", method = RequestMethod.GET)
  44 + public String setSJ() throws Exception {
  45 + try {
  46 + return trManageService.setSJ();
  47 + } catch (Exception exp) {
  48 + throw new Exception(exp.getCause());
  49 + }
  50 + }
  51 +
  52 + @RequestMapping(value = "/setCS", method = RequestMethod.GET)
  53 + public String setCS() throws Exception {
  54 + try {
  55 + return trManageService.setCS();
  56 + } catch (Exception exp) {
  57 + throw new Exception(exp.getCause());
  58 + }
  59 + }
  60 +
  61 + @RequestMapping(value = "/setSKB", method = RequestMethod.GET)
  62 + public String setSKB(@RequestParam("ids") String ids) throws Exception {
  63 + try {
  64 + return trManageService.setSKB(ids);
  65 + } catch (Exception exp) {
  66 + throw new Exception(exp.getCause());
  67 + }
  68 + }
  69 +
  70 + @RequestMapping(value = "/setXLPC", method = RequestMethod.GET)
  71 + public String setXLPC() throws Exception {
  72 + try {
  73 + return trManageService.setXLPC();
  74 + } catch (Exception exp) {
  75 + throw new Exception(exp.getCause());
  76 + }
  77 + }
  78 +
  79 + @RequestMapping(value = "/setJHBC", method = RequestMethod.GET)
  80 + public String setJHBC() throws Exception {
  81 + try {
  82 + return trManageService.setDDRB();
  83 + } catch (Exception exp) {
  84 + throw new Exception(exp.getCause());
  85 + }
  86 + }
31 } 87 }
src/main/java/com/bsth/data/BasicData.java
@@ -17,12 +17,14 @@ import com.bsth.Application; @@ -17,12 +17,14 @@ import com.bsth.Application;
17 import com.bsth.entity.CarPark; 17 import com.bsth.entity.CarPark;
18 import com.bsth.entity.Cars; 18 import com.bsth.entity.Cars;
19 import com.bsth.entity.Line; 19 import com.bsth.entity.Line;
  20 +import com.bsth.entity.Personnel;
20 import com.bsth.entity.Station; 21 import com.bsth.entity.Station;
21 import com.bsth.entity.StationRoute; 22 import com.bsth.entity.StationRoute;
22 import com.bsth.entity.schedule.CarConfigInfo; 23 import com.bsth.entity.schedule.CarConfigInfo;
23 import com.bsth.repository.CarParkRepository; 24 import com.bsth.repository.CarParkRepository;
24 import com.bsth.repository.CarsRepository; 25 import com.bsth.repository.CarsRepository;
25 import com.bsth.repository.LineRepository; 26 import com.bsth.repository.LineRepository;
  27 +import com.bsth.repository.PersonnelRepository;
26 import com.bsth.repository.StationRepository; 28 import com.bsth.repository.StationRepository;
27 import com.bsth.repository.StationRouteRepository; 29 import com.bsth.repository.StationRouteRepository;
28 import com.bsth.repository.schedule.CarConfigInfoRepository; 30 import com.bsth.repository.schedule.CarConfigInfoRepository;
@@ -68,6 +70,20 @@ public class BasicData implements CommandLineRunner{ @@ -68,6 +70,20 @@ public class BasicData implements CommandLineRunner{
68 //停车场 70 //停车场
69 public static List<String> parkCodeList; 71 public static List<String> parkCodeList;
70 72
  73 + //线路ID和shangHaiLinecode 对照
  74 + public static Map<Integer, String> lineId2ShangHaiCodeMap;
  75 +
  76 + //线路Code和shangHaiLinecode 对照
  77 + public static Map<String, String> lineCode2ShangHaiCodeMap;
  78 +
  79 + //驾驶员工号 和 personnel 对象映射
  80 + public static Map<String, Personnel> jsyMap;
  81 + //售票员工号 和 personnel 对象映射
  82 + public static Map<String, Personnel> spyMap;
  83 + //全量员工 工号和姓名对照
  84 + public static Map<String, String> allPerson;
  85 +
  86 +
71 static Logger logger = LoggerFactory.getLogger(BasicData.class); 87 static Logger logger = LoggerFactory.getLogger(BasicData.class);
72 88
73 @Autowired 89 @Autowired
@@ -100,6 +116,9 @@ public class BasicData implements CommandLineRunner{ @@ -100,6 +116,9 @@ public class BasicData implements CommandLineRunner{
100 @Autowired 116 @Autowired
101 StationRouteRepository stationRouteRepository; 117 StationRouteRepository stationRouteRepository;
102 118
  119 + @Autowired
  120 + PersonnelRepository personnelRepository;
  121 +
103 122
104 @Override 123 @Override
105 public void run() { 124 public void run() {
@@ -112,12 +131,18 @@ public class BasicData implements CommandLineRunner{ @@ -112,12 +131,18 @@ public class BasicData implements CommandLineRunner{
112 */ 131 */
113 public int loadAllData(){ 132 public int loadAllData(){
114 try{ 133 try{
  134 + //设备信息
115 loadDeviceInfo(); 135 loadDeviceInfo();
  136 + //站点信息
116 loadStationInfo(); 137 loadStationInfo();
  138 + //线路信息
117 loadLineInfo(); 139 loadLineInfo();
  140 + //车辆和线路映射信息
118 loadNbbm2LineInfo(); 141 loadNbbm2LineInfo();
119 - 142 + //站点路由信息
120 loadStationRouteInfo(); 143 loadStationRouteInfo();
  144 + //人员信息
  145 + loadPersonnelInfo();
121 logger.info("加载基础数据成功!," ); 146 logger.info("加载基础数据成功!," );
122 }catch(Exception e){ 147 }catch(Exception e){
123 logger.error("加载基础数据时出现异常," , e); 148 logger.error("加载基础数据时出现异常," , e);
@@ -213,15 +238,53 @@ public class BasicData implements CommandLineRunner{ @@ -213,15 +238,53 @@ public class BasicData implements CommandLineRunner{
213 Line line; 238 Line line;
214 BiMap<Integer, String> biMap = HashBiMap.create(); 239 BiMap<Integer, String> biMap = HashBiMap.create();
215 Map<String, String> code2name = new HashMap<>(); 240 Map<String, String> code2name = new HashMap<>();
  241 + Map<Integer, String> id2SHcode = new HashMap<Integer, String>();
  242 + Map<String, String> code2SHcode = new HashMap<String, String>();
216 243
217 while(iterator.hasNext()){ 244 while(iterator.hasNext()){
218 line = iterator.next(); 245 line = iterator.next();
219 biMap.put(line.getId(), line.getLineCode()); 246 biMap.put(line.getId(), line.getLineCode());
220 code2name.put(line.getLineCode(), line.getName()); 247 code2name.put(line.getLineCode(), line.getName());
  248 + id2SHcode.put(line.getId(),line.getShanghaiLinecode());
  249 + code2SHcode.put(line.getLineCode(), line.getShanghaiLinecode());
221 } 250 }
222 251
223 lineId2CodeMap = biMap; 252 lineId2CodeMap = biMap;
224 lineCode2NameMap = code2name; 253 lineCode2NameMap = code2name;
  254 + lineId2ShangHaiCodeMap = id2SHcode;
  255 + lineCode2ShangHaiCodeMap = code2SHcode;
  256 + }
  257 +
  258 + /**
  259 + *
  260 + * @Title: loadPersonnelInfo
  261 + * @Description: TODO(加载人员信息)
  262 + */
  263 + public void loadPersonnelInfo() {
  264 + Iterator<Personnel> iterator = personnelRepository.findAll().iterator();
  265 +
  266 + Map<String, Personnel> jsyTempMap=new HashMap<>()
  267 + , spyTempMap=new HashMap<>();
  268 + Map<String, String> allPersonMap=new HashMap<>();
  269 +
  270 + Personnel p;
  271 +
  272 + while(iterator.hasNext()){
  273 + p = iterator.next();
  274 +
  275 + if(p.getPosts() != null){
  276 + if(p.getPosts().equals("1"))
  277 + jsyTempMap.put(p.getJobCode(), p);
  278 + else if(p.getPosts().equals("2"))
  279 + spyTempMap.put(p.getJobCode(), p);
  280 + }
  281 +
  282 + allPersonMap.put(p.getJobCode(), p.getPersonnelName());
  283 + }
  284 +
  285 + jsyMap=jsyTempMap;
  286 + spyMap=spyTempMap;
  287 + allPerson=allPersonMap;
225 } 288 }
226 } 289 }
227 } 290 }
src/main/java/com/bsth/data/LineConfigData.java
@@ -15,6 +15,7 @@ import org.springframework.stereotype.Component; @@ -15,6 +15,7 @@ import org.springframework.stereotype.Component;
15 import com.bsth.entity.Line; 15 import com.bsth.entity.Line;
16 import com.bsth.entity.realcontrol.D80ReplyTemp; 16 import com.bsth.entity.realcontrol.D80ReplyTemp;
17 import com.bsth.entity.realcontrol.LineConfig; 17 import com.bsth.entity.realcontrol.LineConfig;
  18 +import com.bsth.oplog.normal.OpLogger;
18 import com.bsth.service.LineService; 19 import com.bsth.service.LineService;
19 import com.bsth.service.realcontrol.LineConfigService; 20 import com.bsth.service.realcontrol.LineConfigService;
20 21
@@ -39,6 +40,9 @@ public class LineConfigData implements CommandLineRunner { @@ -39,6 +40,9 @@ public class LineConfigData implements CommandLineRunner {
39 40
40 @Autowired 41 @Autowired
41 LineService lineService; 42 LineService lineService;
  43 +
  44 + @Autowired
  45 + OpLogger opLog;
42 46
43 @Override 47 @Override
44 public void run(String... arg0) throws Exception { 48 public void run(String... arg0) throws Exception {
@@ -47,6 +51,8 @@ public class LineConfigData implements CommandLineRunner { @@ -47,6 +51,8 @@ public class LineConfigData implements CommandLineRunner {
47 Iterator<LineConfig> itr = lineConfigService.findAll().iterator(); 51 Iterator<LineConfig> itr = lineConfigService.findAll().iterator();
48 while (itr.hasNext()) 52 while (itr.hasNext())
49 setBuffer(itr.next()); 53 setBuffer(itr.next());
  54 +
  55 + opLog.info("Line_config_data");
50 } 56 }
51 57
52 public LineConfig get(String lineCode){ 58 public LineConfig get(String lineCode){
src/main/java/com/bsth/data/arrival/AnalyseArrivalData.java renamed to src/main/java/com/bsth/data/arrival/AnalyseData.java
@@ -20,9 +20,9 @@ import com.bsth.data.BasicData; @@ -20,9 +20,9 @@ import com.bsth.data.BasicData;
20 * 20 *
21 */ 21 */
22 @Component 22 @Component
23 -public class AnalyseArrivalData { 23 +public class AnalyseData {
24 24
25 - Logger logger = LoggerFactory.getLogger(AnalyseArrivalData.class); 25 + Logger logger = LoggerFactory.getLogger(AnalyseData.class);
26 26
27 public void analyse(Set<String> cars){ 27 public void analyse(Set<String> cars){
28 try{ 28 try{
src/main/java/com/bsth/data/arrival/ArrivalData_GPS.java
@@ -64,7 +64,7 @@ public class ArrivalData_GPS implements CommandLineRunner{ @@ -64,7 +64,7 @@ public class ArrivalData_GPS implements CommandLineRunner{
64 DayOfSchedule dayOfSchedule; 64 DayOfSchedule dayOfSchedule;
65 65
66 @Autowired 66 @Autowired
67 - AnalyseArrivalData analyseData; 67 + AnalyseData analyseData;
68 68
69 @Override 69 @Override
70 public void run() { 70 public void run() {
@@ -144,4 +144,4 @@ public class ArrivalData_GPS implements CommandLineRunner{ @@ -144,4 +144,4 @@ public class ArrivalData_GPS implements CommandLineRunner{
144 carIndexMap.put(nbbm, size); 144 carIndexMap.put(nbbm, size);
145 return rs; 145 return rs;
146 } 146 }
147 -} 147 +}
148 \ No newline at end of file 148 \ No newline at end of file
src/main/java/com/bsth/data/directive/FirstScheduleCheckThread.java
@@ -43,6 +43,7 @@ public class FirstScheduleCheckThread extends Thread{ @@ -43,6 +43,7 @@ public class FirstScheduleCheckThread extends Thread{
43 List<ScheduleRealInfo> schList; 43 List<ScheduleRealInfo> schList;
44 ScheduleRealInfo first; 44 ScheduleRealInfo first;
45 for(String car : cars){ 45 for(String car : cars){
  46 +
46 schList = dayOfSchedule.findByNbbm(car); 47 schList = dayOfSchedule.findByNbbm(car);
47 48
48 if(null == schList || schList.size() == 0) 49 if(null == schList || schList.size() == 0)
@@ -54,7 +55,7 @@ public class FirstScheduleCheckThread extends Thread{ @@ -54,7 +55,7 @@ public class FirstScheduleCheckThread extends Thread{
54 && first.getBcType().equals("out")){ 55 && first.getBcType().equals("out")){
55 56
56 //没有计划里程的出场班次,出场既是首发站,发送下一班次的营运指令 57 //没有计划里程的出场班次,出场既是首发站,发送下一班次的营运指令
57 - if(first.getJhlc() == null) 58 + if(first.getJhlc() == null && first.getXlDir().equals(schList.get(1).getXlDir()))
58 first = schList.get(1); 59 first = schList.get(1);
59 60
60 //为首班补发指令 61 //为首班补发指令
src/main/java/com/bsth/data/forecast/ForecastRealServer.java
@@ -61,7 +61,7 @@ public class ForecastRealServer implements CommandLineRunner { @@ -61,7 +61,7 @@ public class ForecastRealServer implements CommandLineRunner {
61 @Override 61 @Override
62 public void run(String... arg0) throws Exception { 62 public void run(String... arg0) throws Exception {
63 //2小时更新一次站点间耗时数据 63 //2小时更新一次站点间耗时数据
64 - Application.mainServices.scheduleWithFixedDelay(dataLoader, 12, 120 * 60, TimeUnit.SECONDS); 64 + //Application.mainServices.scheduleWithFixedDelay(dataLoader, 12, 120 * 60, TimeUnit.SECONDS);
65 } 65 }
66 66
67 /** 67 /**
src/main/java/com/bsth/data/gpsdata/GpsRealData.java
@@ -72,7 +72,8 @@ public class GpsRealData implements CommandLineRunner{ @@ -72,7 +72,8 @@ public class GpsRealData implements CommandLineRunner{
72 72
73 @Override 73 @Override
74 public void run(String... arg0) throws Exception { 74 public void run(String... arg0) throws Exception {
75 - Application.mainServices.scheduleWithFixedDelay(gpsDataLoader, 20, 7, TimeUnit.SECONDS); 75 + logger.info("gpsDataLoader,20,6");
  76 + Application.mainServices.scheduleWithFixedDelay(gpsDataLoader, 20, 6, TimeUnit.SECONDS);
76 } 77 }
77 78
78 public GpsEntity add(GpsEntity gps) { 79 public GpsEntity add(GpsEntity gps) {
@@ -188,6 +189,7 @@ public class GpsRealData implements CommandLineRunner{ @@ -188,6 +189,7 @@ public class GpsRealData implements CommandLineRunner{
188 189
189 String nbbm; 190 String nbbm;
190 //附加车辆内部编码 191 //附加车辆内部编码
  192 + Integer updown;
191 for(GpsEntity gps : list){ 193 for(GpsEntity gps : list){
192 nbbm = BasicData.deviceId2NbbmMap.get(gps.getDeviceId()); 194 nbbm = BasicData.deviceId2NbbmMap.get(gps.getDeviceId());
193 if(StringUtils.isBlank(nbbm)) 195 if(StringUtils.isBlank(nbbm))
@@ -196,11 +198,20 @@ public class GpsRealData implements CommandLineRunner{ @@ -196,11 +198,20 @@ public class GpsRealData implements CommandLineRunner{
196 gps.setNbbm(nbbm); 198 gps.setNbbm(nbbm);
197 199
198 gps.setStationName(BasicData.stationCode2NameMap.get(gps.getStopNo())); 200 gps.setStationName(BasicData.stationCode2NameMap.get(gps.getStopNo()));
  201 + if(gps.getUpDown() == -1){
  202 + //如果走向未知,尝试根据站点纠正走向
  203 + updown=BasicData.lineStationUpDownMap.get(gps.getLineId()+"_"+gps.getStopNo());
  204 + if(updown != null)
  205 + gps.setUpDown(updown);
  206 + }
199 gpsRealData.add(gps); 207 gpsRealData.add(gps);
200 } 208 }
201 } else 209 } else
202 logger.error("result is null"); 210 logger.error("result is null");
203 - } finally { 211 + } catch(Exception e){
  212 + logger.error("", e);
  213 + }
  214 + finally {
204 if (null != httpClient) 215 if (null != httpClient)
205 httpClient.close(); 216 httpClient.close();
206 if(null != response) 217 if(null != response)
src/main/java/com/bsth/data/match/Arrival2Schedule.java
@@ -3,7 +3,9 @@ package com.bsth.data.match; @@ -3,7 +3,9 @@ package com.bsth.data.match;
3 import java.text.SimpleDateFormat; 3 import java.text.SimpleDateFormat;
4 import java.util.ArrayList; 4 import java.util.ArrayList;
5 import java.util.Collections; 5 import java.util.Collections;
  6 +import java.util.HashMap;
6 import java.util.List; 7 import java.util.List;
  8 +import java.util.Map;
7 import java.util.Set; 9 import java.util.Set;
8 10
9 import org.slf4j.Logger; 11 import org.slf4j.Logger;
@@ -42,6 +44,8 @@ public class Arrival2Schedule implements ApplicationContextAware { @@ -42,6 +44,8 @@ public class Arrival2Schedule implements ApplicationContextAware {
42 44
43 private static Logger logger = LoggerFactory.getLogger(Arrival2Schedule.class); 45 private static Logger logger = LoggerFactory.getLogger(Arrival2Schedule.class);
44 46
  47 + private static Map<String, ExpectArrivalEnd> expectMap = new HashMap<>();
  48 +
45 /** 49 /**
46 * 50 *
47 * @Title: start 51 * @Title: start
@@ -69,6 +73,7 @@ public class Arrival2Schedule implements ApplicationContextAware { @@ -69,6 +73,7 @@ public class Arrival2Schedule implements ApplicationContextAware {
69 73
70 @Override 74 @Override
71 public void run() { 75 public void run() {
  76 +
72 //班次列表 77 //班次列表
73 List<ScheduleRealInfo> schList = dayOfSchedule.findByNbbm(nbbm); 78 List<ScheduleRealInfo> schList = dayOfSchedule.findByNbbm(nbbm);
74 //进出起终点数据 79 //进出起终点数据
@@ -209,14 +214,25 @@ public class Arrival2Schedule implements ApplicationContextAware { @@ -209,14 +214,25 @@ public class Arrival2Schedule implements ApplicationContextAware {
209 * @Description: TODO(车辆发出) 214 * @Description: TODO(车辆发出)
210 */ 215 */
211 public void carOut(MatchResult mr){ 216 public void carOut(MatchResult mr){
  217 + ScheduleRealInfo sch = mr.sch;
  218 +
  219 + if(expectMap.containsKey(nbbm)){
  220 + ExpectArrivalEnd ead = expectMap.get(nbbm);
  221 + if(mr.ts < ead.getEndTime())
  222 + return;
  223 + else
  224 + expectMap.remove(nbbm);
  225 + }
212 //设置发车时间 226 //设置发车时间
213 - mr.sch.setFcsjActualAll(mr.ts); 227 + sch.setFcsjActualAll(mr.ts);
214 //通知客户端 228 //通知客户端
215 - sendUtils.sendFcsj(mr.sch); 229 + sendUtils.sendFcsj(sch);
216 //持久化 230 //持久化
217 - dayOfSchedule.save(mr.sch); 231 + dayOfSchedule.save(sch);
218 //车辆当前执行班次 232 //车辆当前执行班次
219 - dayOfSchedule.addExecPlan(mr.sch); 233 + dayOfSchedule.addExecPlan(sch);
  234 + //期望车辆到达的终点
  235 + expectMap.put(nbbm, ExpectArrivalEnd.getEndInstance(sch, mr.ts));
220 } 236 }
221 237
222 /** 238 /**
@@ -225,12 +241,30 @@ public class Arrival2Schedule implements ApplicationContextAware { @@ -225,12 +241,30 @@ public class Arrival2Schedule implements ApplicationContextAware {
225 * @Description: TODO(车辆进入终点站) 241 * @Description: TODO(车辆进入终点站)
226 */ 242 */
227 public void carInStop(MatchResult mr){ 243 public void carInStop(MatchResult mr){
228 - mr.sch.setZdsjActualAll(mr.ts); 244 + ScheduleRealInfo sch = mr.sch;
  245 + String nbbm=sch.getClZbh();
  246 + if(expectMap.containsKey(nbbm)){
  247 + ExpectArrivalEnd ead = expectMap.get(nbbm);
  248 + if(mr.ts < ead.getEndTime()
  249 + && !mr.sch.getZdzCode().equals(ead.getEndStation())){
  250 + return;
  251 + }
  252 + else
  253 + expectMap.remove(nbbm);
  254 + }
229 255
230 - int doneSum = dayOfSchedule.doneSum(mr.sch.getClZbh());  
231 - ScheduleRealInfo next = dayOfSchedule.next(mr.sch); 256 + //如果是进停车场,并且实达时间差值大于 30 分钟,并且之前还有未完成班次。
  257 + if(sch.getBcType().equals("in") && Math.abs(mr.diff) > (1000 * 60 * 30)){
  258 + int prve_nen = dayOfSchedule.prveNotExecNum(sch);
  259 + if(prve_nen > 0)
  260 + return;
  261 + }
  262 +
  263 + sch.setZdsjActualAll(mr.ts);
  264 + int doneSum = dayOfSchedule.doneSum(nbbm);
  265 + ScheduleRealInfo next = dayOfSchedule.next(sch);
232 if(null != next){ 266 if(null != next){
233 - next.setQdzArrDateSJ(mr.sch.getZdsjActual()); 267 + next.setQdzArrDateSJ(sch.getZdsjActual());
234 //下发调度指令 268 //下发调度指令
235 directiveService.send60Dispatch(next, doneSum, "到站@系统"); 269 directiveService.send60Dispatch(next, doneSum, "到站@系统");
236 270
@@ -239,18 +273,18 @@ public class Arrival2Schedule implements ApplicationContextAware { @@ -239,18 +273,18 @@ public class Arrival2Schedule implements ApplicationContextAware {
239 next.setFcsjActualAll(mr.ts); 273 next.setFcsjActualAll(mr.ts);
240 274
241 //套跑 -下发线路切换指令 275 //套跑 -下发线路切换指令
242 - if(!next.getXlBm().equals(mr.sch.getXlBm()))  
243 - directiveService.lineChange(next.getClZbh(), next.getXlBm(), "套跑@系统"); 276 + if(!next.getXlBm().equals(sch.getXlBm()))
  277 + directiveService.lineChange(nbbm, next.getXlBm(), "套跑@系统");
244 } 278 }
245 else//下发文本指令(已结束运营) 279 else//下发文本指令(已结束运营)
246 - directiveService.send60Phrase(nbbm, "到达终点 " + mr.sch.getZdzName() + ",已完成当日所有排班。", "系统"); 280 + directiveService.send60Phrase(nbbm, "到达终点 " + sch.getZdzName() + ",已完成当日所有排班。", "系统");
247 //通知客户端 281 //通知客户端
248 - sendUtils.sendZdsj(mr.sch, next, doneSum); 282 + sendUtils.sendZdsj(sch, next, doneSum);
249 //持久化 283 //持久化
250 - dayOfSchedule.save(mr.sch);  
251 - logger.info(mr.sch.getClZbh() + "移除正在执行班次," + mr.sch.getFcsj()); 284 + dayOfSchedule.save(sch);
  285 + logger.info(sch.getClZbh() + "移除正在执行班次," + sch.getFcsj());
252 //移除车辆正在执行班次索引 286 //移除车辆正在执行班次索引
253 - dayOfSchedule.removeExecPlan(mr.sch.getClZbh()); 287 + dayOfSchedule.removeExecPlan(nbbm);
254 } 288 }
255 289
256 /** 290 /**
@@ -334,4 +368,14 @@ public class Arrival2Schedule implements ApplicationContextAware { @@ -334,4 +368,14 @@ public class Arrival2Schedule implements ApplicationContextAware {
334 dayOfSchedule = arg0.getBean(DayOfSchedule.class); 368 dayOfSchedule = arg0.getBean(DayOfSchedule.class);
335 directiveService = arg0.getBean(DirectiveService.class); 369 directiveService = arg0.getBean(DirectiveService.class);
336 } 370 }
  371 +
  372 + /**
  373 + *
  374 + * @Title: removeExpect
  375 + * @Description: TODO(清除预期站点)
  376 + * @param @param nbbm
  377 + */
  378 + public void removeExpect(String nbbm){
  379 + expectMap.remove(nbbm);
  380 + }
337 } 381 }
src/main/java/com/bsth/data/match/ExpectArrivalEnd.java 0 → 100644
  1 +package com.bsth.data.match;
  2 +
  3 +import com.bsth.entity.realcontrol.ScheduleRealInfo;
  4 +
  5 +/**
  6 + *
  7 + * @ClassName: ExpectArrivalEnd
  8 + * @Description: TODO(期望车辆在某个时间段到达某个终点........)
  9 + * @author PanZhao
  10 + * @date 2016年11月2日 下午8:04:43
  11 + *
  12 + */
  13 +public class ExpectArrivalEnd {
  14 +
  15 + private String nbbm;
  16 +
  17 + private String endStation;
  18 +
  19 + private Long endTime;
  20 +
  21 + public static ExpectArrivalEnd getEndInstance(ScheduleRealInfo sch, long t){
  22 + ExpectArrivalEnd ead = new ExpectArrivalEnd();
  23 + ead.setNbbm(sch.getClZbh());
  24 + ead.setEndStation(sch.getZdzCode());
  25 + if(sch.getBcType().equals("out"))
  26 + ead.setEndTime(sch.getZdsjT());
  27 + else{
  28 + ead.setEndTime(sch.getZdsjT() - (sch.getDfsjT() - t));
  29 + }
  30 + return ead;
  31 + }
  32 +
  33 + public String getNbbm() {
  34 + return nbbm;
  35 + }
  36 +
  37 + public void setNbbm(String nbbm) {
  38 + this.nbbm = nbbm;
  39 + }
  40 +
  41 + public String getEndStation() {
  42 + return endStation;
  43 + }
  44 +
  45 + public void setEndStation(String endStation) {
  46 + this.endStation = endStation;
  47 + }
  48 +
  49 + public Long getEndTime() {
  50 + return endTime;
  51 + }
  52 +
  53 + public void setEndTime(Long endTime) {
  54 + this.endTime = endTime;
  55 + }
  56 +}
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
@@ -24,10 +24,8 @@ import org.springframework.stereotype.Component; @@ -24,10 +24,8 @@ import org.springframework.stereotype.Component;
24 import com.alibaba.fastjson.JSON; 24 import com.alibaba.fastjson.JSON;
25 import com.alibaba.fastjson.JSONArray; 25 import com.alibaba.fastjson.JSONArray;
26 import com.bsth.Application; 26 import com.bsth.Application;
27 -import com.bsth.data.BasicData;  
28 import com.bsth.data.LineConfigData; 27 import com.bsth.data.LineConfigData;
29 import com.bsth.data.directive.FirstScheduleCheckThread; 28 import com.bsth.data.directive.FirstScheduleCheckThread;
30 -import com.bsth.data.gpsdata.GpsEntity;  
31 import com.bsth.data.gpsdata.GpsRealData; 29 import com.bsth.data.gpsdata.GpsRealData;
32 import com.bsth.data.schedule.thread.ScheduleLateThread; 30 import com.bsth.data.schedule.thread.ScheduleLateThread;
33 import com.bsth.data.schedule.thread.SchedulePstThread; 31 import com.bsth.data.schedule.thread.SchedulePstThread;
@@ -120,13 +118,13 @@ public class DayOfSchedule implements CommandLineRunner { @@ -120,13 +118,13 @@ public class DayOfSchedule implements CommandLineRunner {
120 @Override 118 @Override
121 public void run(String... arg0) throws Exception { 119 public void run(String... arg0) throws Exception {
122 //翻班线程 120 //翻班线程
123 - Application.mainServices.scheduleWithFixedDelay(scheduleRefreshThread, 20, 120, TimeUnit.SECONDS); 121 + Application.mainServices.scheduleWithFixedDelay(scheduleRefreshThread, 20, 240, TimeUnit.SECONDS);
124 //入库 122 //入库
125 - Application.mainServices.scheduleWithFixedDelay(schedulePstThread, 60, 60, TimeUnit.SECONDS); 123 + //Application.mainServices.scheduleWithFixedDelay(schedulePstThread, 60, 60, TimeUnit.SECONDS);
126 //首班出场指令补发器 124 //首班出场指令补发器
127 - Application.mainServices.scheduleWithFixedDelay(firstScheduleCheckThread, 60, 60, TimeUnit.SECONDS); 125 + //Application.mainServices.scheduleWithFixedDelay(firstScheduleCheckThread, 10, 120, TimeUnit.SECONDS);
128 //班次误点扫描 126 //班次误点扫描
129 - Application.mainServices.scheduleWithFixedDelay(scheduleLateThread, 60, 60, TimeUnit.SECONDS); 127 + //Application.mainServices.scheduleWithFixedDelay(scheduleLateThread, 60, 60, TimeUnit.SECONDS);
130 } 128 }
131 129
132 public Map<String, String> getCurrSchDate() { 130 public Map<String, String> getCurrSchDate() {
@@ -262,6 +260,7 @@ public class DayOfSchedule implements CommandLineRunner { @@ -262,6 +260,7 @@ public class DayOfSchedule implements CommandLineRunner {
262 for(ScheduleRealInfo sch : remList){ 260 for(ScheduleRealInfo sch : remList){
263 if(null != sch){ 261 if(null != sch){
264 nbbmScheduleMap.remove(sch.getClZbh(), sch); 262 nbbmScheduleMap.remove(sch.getClZbh(), sch);
  263 + id2SchedulMap.remove(sch.getId());
265 count ++; 264 count ++;
266 } 265 }
267 } 266 }
@@ -467,9 +466,23 @@ public class DayOfSchedule implements CommandLineRunner { @@ -467,9 +466,23 @@ public class DayOfSchedule implements CommandLineRunner {
467 id2SchedulMap.put(sch.getId(), sch); 466 id2SchedulMap.put(sch.getId(), sch);
468 } 467 }
469 468
  469 + public void delete(ScheduleRealInfo sch) {
  470 + //ScheduleRealInfo sch = id2SchedulMap.get(id);
  471 + if(!sch.isSflj())
  472 + return;
  473 +
  474 + nbbmScheduleMap.remove(sch.getClZbh(), sch);
  475 + id2SchedulMap.remove(sch.getId());
  476 + //return sch;
  477 + }
  478 +
470 public void calcQdzTimePlan(String nbbm){ 479 public void calcQdzTimePlan(String nbbm){
471 schAttrCalculator.calcQdzTimePlan(nbbmScheduleMap.get(nbbm)); 480 schAttrCalculator.calcQdzTimePlan(nbbmScheduleMap.get(nbbm));
472 } 481 }
  482 +
  483 + public List<ScheduleRealInfo> updateQdzTimePlan(String nbbm){
  484 + return schAttrCalculator.updateQdzTimePlan(nbbmScheduleMap.get(nbbm));
  485 + }
473 486
474 /** 487 /**
475 * 488 *
@@ -507,6 +520,24 @@ public class DayOfSchedule implements CommandLineRunner { @@ -507,6 +520,24 @@ public class DayOfSchedule implements CommandLineRunner {
507 } 520 }
508 return rs; 521 return rs;
509 } 522 }
  523 +
  524 + /**
  525 + *
  526 + * @Title: prveNotExecNum
  527 + * @Description: TODO(班次之前未执行班次数量)
  528 + */
  529 + public int prveNotExecNum(ScheduleRealInfo sch){
  530 + int n = 0;
  531 + List<ScheduleRealInfo> list = nbbmScheduleMap.get(sch.getClZbh());
  532 + for(ScheduleRealInfo s : list){
  533 + if(s.getFcsjActual() == null && !s.isDestroy())
  534 + n ++;
  535 +
  536 + if(s.getId().equals(sch.getId()))
  537 + break;
  538 + }
  539 + return n;
  540 + }
510 541
511 /** 542 /**
512 * 543 *
@@ -564,7 +595,7 @@ public class DayOfSchedule implements CommandLineRunner { @@ -564,7 +595,7 @@ public class DayOfSchedule implements CommandLineRunner {
564 595
565 public void save(ScheduleRealInfo sch){ 596 public void save(ScheduleRealInfo sch){
566 //schRepository.save(sch); 597 //schRepository.save(sch);
567 - pstBuffer.add(sch); 598 + //pstBuffer.add(sch);
568 } 599 }
569 600
570 601
@@ -596,15 +627,6 @@ public class DayOfSchedule implements CommandLineRunner { @@ -596,15 +627,6 @@ public class DayOfSchedule implements CommandLineRunner {
596 } 627 }
597 return outList; 628 return outList;
598 } 629 }
599 -  
600 - public ScheduleRealInfo delete(Long id) {  
601 - ScheduleRealInfo sch = id2SchedulMap.get(id);  
602 - if(!sch.isSflj())  
603 - return null;  
604 -  
605 - nbbmScheduleMap.remove(sch.getClZbh(), sch);  
606 - return sch;  
607 - }  
608 630
609 public Set<String> allCar(){ 631 public Set<String> allCar(){
610 return nbbmScheduleMap.keySet(); 632 return nbbmScheduleMap.keySet();
@@ -625,6 +647,33 @@ public class DayOfSchedule implements CommandLineRunner { @@ -625,6 +647,33 @@ public class DayOfSchedule implements CommandLineRunner {
625 public Map<String, ScheduleRealInfo> execPlamMap(){ 647 public Map<String, ScheduleRealInfo> execPlamMap(){
626 return carExecutePlanMap; 648 return carExecutePlanMap;
627 } 649 }
  650 +
  651 + /**
  652 + * @Title: changeCar
  653 + * @Description: TODO(班次换车) 返回有更新的班次
  654 + * @param @param sch
  655 + * @param @param newClZbh 新的车辆自编号
  656 + */
  657 + public List<ScheduleRealInfo> changeCar(ScheduleRealInfo sch , String newClZbh){
  658 + List<ScheduleRealInfo> ups = new ArrayList<>();
  659 + String oldClzbh = sch.getClZbh();
  660 + if(oldClzbh.equals(newClZbh))
  661 + return ups;
  662 +
  663 +
  664 + //变更相关映射信息
  665 + nbbmScheduleMap.remove(sch.getClZbh(), sch);
  666 +
  667 + sch.setClZbh(newClZbh);
  668 + nbbmScheduleMap.put(newClZbh, sch);
  669 + nbbm2SEStationMap.put(newClZbh, sch.getQdzCode());
  670 + nbbm2SEStationMap.put(newClZbh, sch.getZdzCode());
  671 +
  672 + //重新计算班次应到时间
  673 + ups.addAll(updateQdzTimePlan(oldClzbh));
  674 + ups.addAll(updateQdzTimePlan(newClZbh));
  675 + return ups;
  676 + }
628 677
629 /** 678 /**
630 * 679 *
src/main/java/com/bsth/data/schedule/SchAttrCalculator.java
@@ -2,6 +2,7 @@ package com.bsth.data.schedule; @@ -2,6 +2,7 @@ package com.bsth.data.schedule;
2 2
3 import java.text.ParseException; 3 import java.text.ParseException;
4 import java.text.SimpleDateFormat; 4 import java.text.SimpleDateFormat;
  5 +import java.util.ArrayList;
5 import java.util.Collections; 6 import java.util.Collections;
6 import java.util.Date; 7 import java.util.Date;
7 import java.util.List; 8 import java.util.List;
@@ -44,15 +45,20 @@ public class SchAttrCalculator { @@ -44,15 +45,20 @@ public class SchAttrCalculator {
44 if (null == sch.getFcsjT()) 45 if (null == sch.getFcsjT())
45 calcFcsjTime(sch); 46 calcFcsjTime(sch);
46 47
  48 + SimpleDateFormat sdfyyyyMMdd = new SimpleDateFormat("yyyy-MM-dd");
47 /* 49 /*
48 * 早于线路开始运营时间的,加一天 50 * 早于线路开始运营时间的,加一天
49 * 如该线路 2点开始运营,2016-08-23的班次,则 2016-08-23 0:25 的班次应该调整成 2016-08-24 0:25 51 * 如该线路 2点开始运营,2016-08-23的班次,则 2016-08-23 0:25 的班次应该调整成 2016-08-24 0:25
50 - */  
51 - SimpleDateFormat sdfyyyyMMddHHmm = new SimpleDateFormat("yyyy-MM-ddHH:mm") 52 +
  53 +
52 ,sdfyyyyMMdd = new SimpleDateFormat("yyyy-MM-dd"); 54 ,sdfyyyyMMdd = new SimpleDateFormat("yyyy-MM-dd");
53 long st = sdfyyyyMMddHHmm.parse(sch.getScheduleDateStr() + conf.getStartOpt()).getTime(); 55 long st = sdfyyyyMMddHHmm.parse(sch.getScheduleDateStr() + conf.getStartOpt()).getTime();
54 if (st > sch.getFcsjT()) 56 if (st > sch.getFcsjT())
  57 + sch.setFcsjAll(sch.getFcsjT() + DAY_TIME);*/
  58 +
  59 + if(sch.getFcsj().compareTo(conf.getStartOpt()) < 0){
55 sch.setFcsjAll(sch.getFcsjT() + DAY_TIME); 60 sch.setFcsjAll(sch.getFcsjT() + DAY_TIME);
  61 + }
56 62
57 sch.setRealExecDate(sdfyyyyMMdd.format(new Date(sch.getFcsjT()))); 63 sch.setRealExecDate(sdfyyyyMMdd.format(new Date(sch.getFcsjT())));
58 } catch (Exception e) { 64 } catch (Exception e) {
@@ -108,6 +114,43 @@ public class SchAttrCalculator { @@ -108,6 +114,43 @@ public class SchAttrCalculator {
108 114
109 /** 115 /**
110 * 116 *
  117 + * @Title: updateQdzTimePlan
  118 + * @Description: TODO(更新班次的起点应到时间,list 必须是同一辆车的班次) 并返回被更新的班次
  119 + */
  120 + public List<ScheduleRealInfo> updateQdzTimePlan(List<ScheduleRealInfo> list){
  121 + Collections.sort(list, new ScheduleComparator.FCSJ());
  122 +
  123 + List<ScheduleRealInfo> updateList = new ArrayList<>();
  124 + int len = list.size();
  125 + if(len == 0)
  126 + return updateList;
  127 +
  128 + ScheduleRealInfo prve = list.get(0), curr;
  129 + for(int i = 1; i < len; i ++){
  130 + curr = list.get(i);
  131 +
  132 + if(prve.getZdzName().equals(curr.getQdzName())){
  133 +
  134 + if(curr.getQdzArrDateJH() != null && prve.getZdsj().equals(curr.getQdzArrDateJH())){
  135 + prve = curr;
  136 + continue;
  137 + }
  138 +
  139 + curr.setQdzArrDateJH(prve.getZdsj());
  140 + updateList.add(curr);
  141 + }
  142 + else{
  143 + curr.setQdzArrDateJH(null);
  144 + updateList.add(curr);
  145 + }
  146 + prve = curr;
  147 + }
  148 +
  149 + return updateList;
  150 + }
  151 +
  152 + /**
  153 + *
111 * @Title: connectOutSchedule 154 * @Title: connectOutSchedule
112 * @Description: TODO(关联出场班次) 155 * @Description: TODO(关联出场班次)
113 */ 156 */
src/main/java/com/bsth/entity/CarDevice.java
1 package com.bsth.entity; 1 package com.bsth.entity;
2 2
  3 +import com.bsth.entity.sys.SysUser;
  4 +
3 import javax.persistence.*; 5 import javax.persistence.*;
4 import java.util.Date; 6 import java.util.Date;
5 7
@@ -15,17 +17,32 @@ public class CarDevice { @@ -15,17 +17,32 @@ public class CarDevice {
15 @GeneratedValue 17 @GeneratedValue
16 private Long id; 18 private Long id;
17 19
18 - /** 公司名称 */  
19 - @Column(nullable = false) 20 + /** 公司名称(留着,暂时不用) */
  21 + @Column
20 private String gsName; 22 private String gsName;
  23 +
  24 + /** 车辆id,关联bsth_c_cars */
  25 + @Column(nullable = false)
  26 + private Integer cl;
21 /** 内部编号(自编号) */ 27 /** 内部编号(自编号) */
  28 + @Column(nullable = false)
22 private String clZbh; 29 private String clZbh;
  30 +
  31 + /** 关联 bsth_c_line 主键,不做mapping */
  32 + @Column(nullable = false)
  33 + private Integer xl;
23 /** 线路名称 */ 34 /** 线路名称 */
  35 + @Column(nullable = false)
24 private String xlName; 36 private String xlName;
  37 + /** 线路编码 */
  38 + @Column(nullable = false)
  39 + private String xlBm;
25 40
26 /** 旧终端号 */ 41 /** 旧终端号 */
  42 + @Column(nullable = false)
27 private String oldDeviceNo; 43 private String oldDeviceNo;
28 /** 新终端号 */ 44 /** 新终端号 */
  45 + @Column(nullable = false)
29 private String newDeviceNo; 46 private String newDeviceNo;
30 /** 旧SIM卡号 */ 47 /** 旧SIM卡号 */
31 private String oldSimNo; 48 private String oldSimNo;
@@ -37,11 +54,24 @@ public class CarDevice { @@ -37,11 +54,24 @@ public class CarDevice {
37 /** 保修描述 */ 54 /** 保修描述 */
38 private String guaranteeDesc; 55 private String guaranteeDesc;
39 56
40 - // 创建日期 57 + /** 启用日期 */
  58 + @Column(nullable = false)
  59 + private Date qyrq;
  60 +
  61 + /** 是否删除(标记) */
  62 + @Column(nullable = false)
  63 + private Boolean isCancel = false;
  64 +
  65 + /** 创建人 */
  66 + @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  67 + private SysUser createBy;
  68 + /** 修改人 */
  69 + @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  70 + private SysUser updateBy;
  71 + /** 创建日期 */
41 @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP") 72 @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
42 private Date createDate; 73 private Date createDate;
43 -  
44 - // 修改日期 74 + /** 修改日期 */
45 @Column(name = "update_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP") 75 @Column(name = "update_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
46 private Date updateDate; 76 private Date updateDate;
47 77
@@ -61,6 +91,14 @@ public class CarDevice { @@ -61,6 +91,14 @@ public class CarDevice {
61 this.gsName = gsName; 91 this.gsName = gsName;
62 } 92 }
63 93
  94 + public Integer getCl() {
  95 + return cl;
  96 + }
  97 +
  98 + public void setCl(Integer cl) {
  99 + this.cl = cl;
  100 + }
  101 +
64 public String getClZbh() { 102 public String getClZbh() {
65 return clZbh; 103 return clZbh;
66 } 104 }
@@ -69,6 +107,14 @@ public class CarDevice { @@ -69,6 +107,14 @@ public class CarDevice {
69 this.clZbh = clZbh; 107 this.clZbh = clZbh;
70 } 108 }
71 109
  110 + public Integer getXl() {
  111 + return xl;
  112 + }
  113 +
  114 + public void setXl(Integer xl) {
  115 + this.xl = xl;
  116 + }
  117 +
72 public String getXlName() { 118 public String getXlName() {
73 return xlName; 119 return xlName;
74 } 120 }
@@ -77,6 +123,14 @@ public class CarDevice { @@ -77,6 +123,14 @@ public class CarDevice {
77 this.xlName = xlName; 123 this.xlName = xlName;
78 } 124 }
79 125
  126 + public String getXlBm() {
  127 + return xlBm;
  128 + }
  129 +
  130 + public void setXlBm(String xlBm) {
  131 + this.xlBm = xlBm;
  132 + }
  133 +
80 public String getOldDeviceNo() { 134 public String getOldDeviceNo() {
81 return oldDeviceNo; 135 return oldDeviceNo;
82 } 136 }
@@ -125,6 +179,22 @@ public class CarDevice { @@ -125,6 +179,22 @@ public class CarDevice {
125 this.guaranteeDesc = guaranteeDesc; 179 this.guaranteeDesc = guaranteeDesc;
126 } 180 }
127 181
  182 + public SysUser getCreateBy() {
  183 + return createBy;
  184 + }
  185 +
  186 + public void setCreateBy(SysUser createBy) {
  187 + this.createBy = createBy;
  188 + }
  189 +
  190 + public SysUser getUpdateBy() {
  191 + return updateBy;
  192 + }
  193 +
  194 + public void setUpdateBy(SysUser updateBy) {
  195 + this.updateBy = updateBy;
  196 + }
  197 +
128 public Date getCreateDate() { 198 public Date getCreateDate() {
129 return createDate; 199 return createDate;
130 } 200 }
@@ -140,4 +210,20 @@ public class CarDevice { @@ -140,4 +210,20 @@ public class CarDevice {
140 public void setUpdateDate(Date updateDate) { 210 public void setUpdateDate(Date updateDate) {
141 this.updateDate = updateDate; 211 this.updateDate = updateDate;
142 } 212 }
  213 +
  214 + public Date getQyrq() {
  215 + return qyrq;
  216 + }
  217 +
  218 + public void setQyrq(Date qyrq) {
  219 + this.qyrq = qyrq;
  220 + }
  221 +
  222 + public Boolean getIsCancel() {
  223 + return isCancel;
  224 + }
  225 +
  226 + public void setIsCancel(Boolean isCancel) {
  227 + this.isCancel = isCancel;
  228 + }
143 } 229 }
src/main/java/com/bsth/entity/Line.java
@@ -25,116 +25,117 @@ import java.util.Date; @@ -25,116 +25,117 @@ import java.util.Date;
25 @Table(name = "bsth_c_line") 25 @Table(name = "bsth_c_line")
26 public class Line implements Serializable { 26 public class Line implements Serializable {
27 27
28 - // 线路ID  
29 @Id 28 @Id
30 - /*@GeneratedValue(strategy = GenerationType.IDENTITY)*/ 29 + /** 线路ID 主键(唯一标识符) int length(11) */
31 private Integer id; 30 private Integer id;
32 31
33 - // 线路名称 32 + /** 线路名称 varchar length(50) 不能为空 */
34 private String name; 33 private String name;
35 34
36 - // 线路代码 35 + /** 线路编码 varchar length(50) 不能为空 */
37 private String lineCode; 36 private String lineCode;
38 37
39 - // 英文名 38 + /** 英文名 varchar length(50) */
40 private String es; 39 private String es;
41 40
42 - // 简称 41 + /** 简称 varchar length(50) */
43 private String shortName; 42 private String shortName;
44 43
45 - // 起始站名称 44 + /** 起始站名称 varchar length(50) 不能为空
  45 + * 该字段值会在规划线路站点操作时会去验证是否有值。如果为空,则用线路规划站点的起点站。默认使用该字段填写值 */
46 private String startStationName; 46 private String startStationName;
47 47
48 - // 起始站首班车时间 00:00 48 + /** 终点站名称 varchar length(50) 不能为空
  49 + * 该字段值会在规划线路站点操作时会去验证是否有值。如果为空,则用线路规划站点的起点站。默认使用该字段填写值 */
  50 + private String endStationName;
  51 +
  52 + /** 起始站首班车时间 00:00 上海公交APP中某个接口所需要的字段值 varchar length(50) 不能为空 */
49 private String startStationFirstTime; 53 private String startStationFirstTime;
50 54
51 - // 起始站末班车时间 00:00 55 + /** 起始站末班车时间 00:00 上海公交APP中某个接口所需要的字段值 varchar length(50) 不能为空 */
52 private String startStationEndTime; 56 private String startStationEndTime;
53 57
54 - // 终点站名称  
55 - private String endStationName;  
56 -  
57 - // 终点站首班时间 00:00 58 + /** 终点站首班时间 00:00 上海公交APP中某个接口所需要的字段值 varchar length(50) 不能为空*/
58 private String endStationFirstTime; 59 private String endStationFirstTime;
59 60
60 - // 终点站末班时间 00:00 61 + /** 终点站末班时间 00:00 上海公交APP中某个接口所需要的字段值 */
61 private String endStationEndTime; 62 private String endStationEndTime;
62 63
63 - // 所属公司 64 + /** 所属公司 varchar length(50) */
64 private String company; 65 private String company;
65 66
66 - // 分公司 67 + /** 分公司 varchar length(50)*/
67 private String brancheCompany; 68 private String brancheCompany;
68 69
69 - // 性质(线路类型) 70 + /** 性质(线路类型) varchar length(50) */
70 private String nature; 71 private String nature;
71 72
72 - // 线路等级 73 + /** 线路等级 varchar length(50) */
73 private String level; 74 private String level;
74 75
75 - // 线路长度 76 + /** 线路长度 */
76 private double length; 77 private double length;
77 78
78 - // 线路负责人 79 + /** 线路负责人 varchar length(50) */
79 private String chargeName; 80 private String chargeName;
80 81
81 - // 负责人电话 82 + /** 负责人电话 varchar length(50) */
82 private String telephone; 83 private String telephone;
83 84
84 - // 是否撤销 85 + /** 是否撤销 <1:是;0:否> bit length(50) */
85 private Integer destroy; 86 private Integer destroy;
86 87
87 - // 是否夜宵线 88 + /** 是否夜宵线 <1:是;0:否> bit length(50)*/
88 private Integer supperLine; 89 private Integer supperLine;
89 90
90 - // 起始调度电话 91 + /** 起始调度电话 varchar length(50) */
91 private String startPhone; 92 private String startPhone;
92 93
93 - // 终点调度电话 94 + /** 终点调度电话 varchar length(50) */
94 private String endPhone; 95 private String endPhone;
95 96
96 - // 开辟日期 97 + /** 开辟日期 date*/
97 @DateTimeFormat(pattern ="yyyy-MM-dd") 98 @DateTimeFormat(pattern ="yyyy-MM-dd")
98 private Date openDate; 99 private Date openDate;
99 100
100 - // 线路沿革 101 + /** 线路沿革 varchar length(50) */
101 private String history; 102 private String history;
102 103
103 - // 上海市线路编码 104 + /** 上海市线路编码 varchar length(50) */
104 private String shanghaiLinecode; 105 private String shanghaiLinecode;
105 106
106 - // 设备线路编码 107 + /** 设备线路编码 varchar length(50) */
107 private String eqLinecode; 108 private String eqLinecode;
108 109
109 - /** 配置车辆总数 老版本系统字段, 新版本系统业务需求暂时没用到该字段 ,这里暂时留着 */ 110 + /** 配置车辆总数 老版本系统字段, 新版本系统业务需求暂时没用到该字段 ,这里暂时留着 int length(11)*/
110 private Integer carSumNumber; 111 private Integer carSumNumber;
111 112
112 - /** 空调车辆数量 老版本系统字段, 新版本系统业务需求暂时没用到该字段 ,这里暂时留着 */ 113 + /** 空调车辆数量 老版本系统字段, 新版本系统业务需求暂时没用到该字段 ,这里暂时留着 int length(11) */
113 private Integer hvacCarNumber; 114 private Integer hvacCarNumber;
114 115
115 - /** 普通车辆数量 老版本系统字段, 新版本系统业务需求暂时没用到该字段 ,这里暂时留着 */ 116 + /** 普通车辆数量 老版本系统字段, 新版本系统业务需求暂时没用到该字段 ,这里暂时留着 int length(11) */
116 private Integer ordCarNumber; 117 private Integer ordCarNumber;
117 118
118 - /** 停车场编码 老版本系统字段, 新版本系统业务需求暂时没用到该字段 ,这里暂时留着 */ 119 + /** 停车场编码 老版本系统字段, 新版本系统业务需求暂时没用到该字段 ,这里暂时留着 int length(11) */
119 private String carParkCode; 120 private String carParkCode;
120 121
121 - /** 线路规划类型 <0:双向;1:环线> */ 122 + /** 线路规划类型 <0:双向;1:环线> int length(11) 运管处接口需要的字段 不能为空 */
122 private Integer linePlayType; 123 private Integer linePlayType;
123 124
124 - // 描述 125 + /** 描述 varchar length(255) */
125 private String descriptions; 126 private String descriptions;
126 127
127 - // 创建人 128 + /** 创建人 int length(11) */
128 private Integer createBy; 129 private Integer createBy;
129 130
130 - // 修改人 131 + /** 修改人 int length(11) */
131 private Integer updateBy; 132 private Integer updateBy;
132 133
133 - // 创建日期 134 + /** 创建日期 timestamp */
134 @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP") 135 @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
135 private Date createDate; 136 private Date createDate;
136 137
137 - // 修改日期 138 + /** 修改日期 timestamp */
138 @Column(name = "update_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP") 139 @Column(name = "update_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
139 private Date updateDate; 140 private Date updateDate;
140 141
src/main/java/com/bsth/entity/Road.java 0 → 100644
  1 +package com.bsth.entity;
  2 +
  3 +import javax.persistence.Entity;
  4 +import javax.persistence.Id;
  5 +import javax.persistence.Table;
  6 +
  7 +@Entity
  8 +@Table(name = "bsth_c_road")
  9 +public class Road {
  10 +
  11 + @Id
  12 + /*@GeneratedValue(strategy = GenerationType.IDENTITY)*/
  13 + private Integer id;
  14 +
  15 + // 路段编码
  16 + private String roadCode;
  17 +
  18 + // 路段名称
  19 + private String roadName;
  20 +
  21 + // 路段矢量(空间坐标点集合)--百度原始坐标坐标点
  22 + private String broadVector;
  23 +
  24 + // 路段矢量(空间坐标点集合)--GPS坐标点
  25 + private String groadVector;
  26 +
  27 + // 限速
  28 + private Double speed;
  29 +
  30 + public Integer getId() {
  31 + return id;
  32 + }
  33 +
  34 + public void setId(Integer id) {
  35 + this.id = id;
  36 + }
  37 +
  38 + public String getRoadCode() {
  39 + return roadCode;
  40 + }
  41 +
  42 + public void setRoadCode(String roadCode) {
  43 + this.roadCode = roadCode;
  44 + }
  45 +
  46 + public String getRoadName() {
  47 + return roadName;
  48 + }
  49 +
  50 + public void setRoadName(String roadName) {
  51 + this.roadName = roadName;
  52 + }
  53 +
  54 + public String getBroadVector() {
  55 + return broadVector;
  56 + }
  57 +
  58 + public void setBroadVector(String broadVector) {
  59 + this.broadVector = broadVector;
  60 + }
  61 +
  62 + public String getGroadVector() {
  63 + return groadVector;
  64 + }
  65 +
  66 + public void setGroadVector(String groadVector) {
  67 + this.groadVector = groadVector;
  68 + }
  69 +
  70 + public Double getSpeed() {
  71 + return speed;
  72 + }
  73 +
  74 + public void setSpeed(Double speed) {
  75 + this.speed = speed;
  76 + }
  77 +}
src/main/java/com/bsth/entity/SectionRoute.java
@@ -52,6 +52,9 @@ public class SectionRoute { @@ -52,6 +52,9 @@ public class SectionRoute {
52 // 是否撤销 52 // 是否撤销
53 private Integer destroy; 53 private Integer destroy;
54 54
  55 + /** 是否有路段限速数据 <0:无;1:有>*/
  56 + private Integer isRoadeSpeed;
  57 +
55 // 描述 58 // 描述
56 private String descriptions; 59 private String descriptions;
57 60
@@ -76,6 +79,14 @@ public class SectionRoute { @@ -76,6 +79,14 @@ public class SectionRoute {
76 // 线路信息 79 // 线路信息
77 @ManyToOne 80 @ManyToOne
78 private Line line; 81 private Line line;
  82 +
  83 + public Integer getIsRoadeSpeed() {
  84 + return isRoadeSpeed;
  85 + }
  86 +
  87 + public void setIsRoadeSpeed(Integer isRoadeSpeed) {
  88 + this.isRoadeSpeed = isRoadeSpeed;
  89 + }
79 90
80 public Integer getId() { 91 public Integer getId() {
81 return id; 92 return id;
src/main/java/com/bsth/entity/SectionSpeed.java 0 → 100644
  1 +package com.bsth.entity;
  2 +
  3 +import javax.persistence.Entity;
  4 +import javax.persistence.GeneratedValue;
  5 +import javax.persistence.GenerationType;
  6 +import javax.persistence.Id;
  7 +import javax.persistence.ManyToOne;
  8 +import javax.persistence.Table;
  9 +
  10 +/**
  11 + * @description TODO(路段限速)
  12 + *
  13 + * @author bsth@lq
  14 + *
  15 + * @date 2016年9月14日 14:15:42
  16 + */
  17 +
  18 +
  19 +@Entity
  20 +@Table(name = "bsth_c_sectionspeed")
  21 +public class SectionSpeed {
  22 +
  23 + @Id
  24 + @GeneratedValue(strategy = GenerationType.IDENTITY)
  25 + private Integer id;
  26 +
  27 + // 线路信息
  28 + @ManyToOne
  29 + private Line line;
  30 +
  31 + @ManyToOne
  32 + private Road road;
  33 +
  34 + /** 线路编码 */
  35 + private String lineCode;
  36 +
  37 + private String roadCode;
  38 +
  39 + /** 方向*/
  40 + private Integer directions;
  41 +
  42 + /** 序号*/
  43 + private Integer code;
  44 +
  45 + /** 路段名称 */
  46 + private String sName;
  47 +
  48 + public String getRoadCode() {
  49 + return roadCode;
  50 + }
  51 +
  52 + public void setRoadCode(String roadCode) {
  53 + this.roadCode = roadCode;
  54 + }
  55 +
  56 + public Road getRoad() {
  57 + return road;
  58 + }
  59 +
  60 + public void setRoad(Road road) {
  61 + this.road = road;
  62 + }
  63 +
  64 + public Integer getDirections() {
  65 + return directions;
  66 + }
  67 +
  68 + public void setDirections(Integer directions) {
  69 + this.directions = directions;
  70 + }
  71 +
  72 + public Integer getCode() {
  73 + return code;
  74 + }
  75 +
  76 + public void setCode(Integer code) {
  77 + this.code = code;
  78 + }
  79 +
  80 + public Integer getId() {
  81 + return id;
  82 + }
  83 +
  84 + public void setId(Integer id) {
  85 + this.id = id;
  86 + }
  87 +
  88 + public Line getLine() {
  89 + return line;
  90 + }
  91 +
  92 + public void setLine(Line line) {
  93 + this.line = line;
  94 + }
  95 +
  96 + public String getLineCode() {
  97 + return lineCode;
  98 + }
  99 +
  100 + public void setLineCode(String lineCode) {
  101 + this.lineCode = lineCode;
  102 + }
  103 +
  104 + public String getsName() {
  105 + return sName;
  106 + }
  107 +
  108 + public void setsName(String sName) {
  109 + this.sName = sName;
  110 + }
  111 +
  112 +}
src/main/java/com/bsth/entity/directive/DC0_A3.java 0 → 100644
  1 +package com.bsth.entity.directive;
  2 +
  3 +import javax.persistence.Embeddable;
  4 +import javax.persistence.Entity;
  5 +import javax.persistence.GeneratedValue;
  6 +import javax.persistence.Id;
  7 +import javax.persistence.Table;
  8 +import javax.persistence.Transient;
  9 +
  10 +/**
  11 + *
  12 + * @ClassName: DC0_A4
  13 + * @Description: TODO(设备参数)
  14 + * @author PanZhao
  15 + * @date 2016年10月18日 下午5:22:36
  16 + *
  17 + */
  18 +@Entity
  19 +@Table(name = "bsth_v_C0_A3")
  20 +public class DC0_A3 extends Directive{
  21 +
  22 + @Id
  23 + @GeneratedValue
  24 + private Integer id;
  25 +
  26 + private DC0_A3Data data;
  27 +
  28 + @Embeddable
  29 + public static class DC0_A3Data {
  30 + /**
  31 + * 二级协议
  32 + */
  33 + private Short operCode2 = 0xA3;
  34 + /** 设备编号 */
  35 + @Transient
  36 + private String deviceId;
  37 + /** 网关IP地址 */
  38 + private String ipAddress;
  39 + /** 网关端口 */
  40 + private int port;
  41 + /** 定时定距上报模式 */
  42 + private short reportMode;
  43 + /** 定时上报时间间隔 */
  44 + private int interval;
  45 + /** 定距上报距离间隔 */
  46 + private String distance;
  47 + /** 非线路状态超速阀门 */
  48 + private short speedingThreshold;
  49 + /** 预警阀门 */
  50 + private short alarmThreshold;
  51 + /** pos机IP地址 */
  52 + private String posIpAddress;
  53 + /** pos机端口 */
  54 + private String posPort;
  55 + /** 延迟机关时间 */
  56 + private int delay;
  57 + /** 中门视频切换到码表界面速度阀门 默认45 */
  58 + private short speedThreshold1;
  59 + /** 码表界面切换到中门视频速度阀门 默认35 */
  60 + private short speedThreshold2;
  61 + /** 对比度 */
  62 + private short contrast;
  63 + /** 亮度 */
  64 + private short brightness;
  65 + /** 饱和度 */
  66 + private short saturation;
  67 + public Short getOperCode2() {
  68 + return operCode2;
  69 + }
  70 + public void setOperCode2(Short operCode2) {
  71 + this.operCode2 = operCode2;
  72 + }
  73 + public String getDeviceId() {
  74 + return deviceId;
  75 + }
  76 + public void setDeviceId(String deviceId) {
  77 + this.deviceId = deviceId;
  78 + }
  79 + public String getIpAddress() {
  80 + return ipAddress;
  81 + }
  82 + public void setIpAddress(String ipAddress) {
  83 + this.ipAddress = ipAddress;
  84 + }
  85 + public int getPort() {
  86 + return port;
  87 + }
  88 + public void setPort(int port) {
  89 + this.port = port;
  90 + }
  91 + public short getReportMode() {
  92 + return reportMode;
  93 + }
  94 + public void setReportMode(short reportMode) {
  95 + this.reportMode = reportMode;
  96 + }
  97 + public int getInterval() {
  98 + return interval;
  99 + }
  100 + public void setInterval(int interval) {
  101 + this.interval = interval;
  102 + }
  103 + public String getDistance() {
  104 + return distance;
  105 + }
  106 + public void setDistance(String distance) {
  107 + this.distance = distance;
  108 + }
  109 + public short getSpeedingThreshold() {
  110 + return speedingThreshold;
  111 + }
  112 + public void setSpeedingThreshold(short speedingThreshold) {
  113 + this.speedingThreshold = speedingThreshold;
  114 + }
  115 + public short getAlarmThreshold() {
  116 + return alarmThreshold;
  117 + }
  118 + public void setAlarmThreshold(short alarmThreshold) {
  119 + this.alarmThreshold = alarmThreshold;
  120 + }
  121 + public String getPosIpAddress() {
  122 + return posIpAddress;
  123 + }
  124 + public void setPosIpAddress(String posIpAddress) {
  125 + this.posIpAddress = posIpAddress;
  126 + }
  127 + public String getPosPort() {
  128 + return posPort;
  129 + }
  130 + public void setPosPort(String posPort) {
  131 + this.posPort = posPort;
  132 + }
  133 + public int getDelay() {
  134 + return delay;
  135 + }
  136 + public void setDelay(int delay) {
  137 + this.delay = delay;
  138 + }
  139 + public short getSpeedThreshold1() {
  140 + return speedThreshold1;
  141 + }
  142 + public void setSpeedThreshold1(short speedThreshold1) {
  143 + this.speedThreshold1 = speedThreshold1;
  144 + }
  145 + public short getSpeedThreshold2() {
  146 + return speedThreshold2;
  147 + }
  148 + public void setSpeedThreshold2(short speedThreshold2) {
  149 + this.speedThreshold2 = speedThreshold2;
  150 + }
  151 + public short getContrast() {
  152 + return contrast;
  153 + }
  154 + public void setContrast(short contrast) {
  155 + this.contrast = contrast;
  156 + }
  157 + public short getBrightness() {
  158 + return brightness;
  159 + }
  160 + public void setBrightness(short brightness) {
  161 + this.brightness = brightness;
  162 + }
  163 + public short getSaturation() {
  164 + return saturation;
  165 + }
  166 + public void setSaturation(short saturation) {
  167 + this.saturation = saturation;
  168 + }
  169 + }
  170 +
  171 + public Integer getId() {
  172 + return id;
  173 + }
  174 +
  175 + public void setId(Integer id) {
  176 + this.id = id;
  177 + }
  178 +
  179 + public DC0_A3Data getData() {
  180 + return data;
  181 + }
  182 +
  183 + public void setData(DC0_A3Data data) {
  184 + this.data = data;
  185 + }
  186 +
  187 +}
src/main/java/com/bsth/entity/directive/DC0_A4.java
1 package com.bsth.entity.directive; 1 package com.bsth.entity.directive;
2 2
3 import javax.persistence.Embeddable; 3 import javax.persistence.Embeddable;
  4 +import javax.persistence.Entity;
4 import javax.persistence.GeneratedValue; 5 import javax.persistence.GeneratedValue;
5 import javax.persistence.Id; 6 import javax.persistence.Id;
  7 +import javax.persistence.Table;
  8 +import javax.persistence.Transient;
6 9
7 /** 10 /**
8 * 11 *
9 - * @ClassName: DC0_A4  
10 - * @Description: TODO(参数查询) 12 + * @ClassName: DC0_A4
  13 + * @Description: TODO(设备参数)
11 * @author PanZhao 14 * @author PanZhao
12 * @date 2016年10月18日 下午5:22:36 15 * @date 2016年10月18日 下午5:22:36
13 * 16 *
14 */ 17 */
  18 +@Entity
  19 +@Table(name = "bsth_v_C0_A4")
15 public class DC0_A4 extends Directive{ 20 public class DC0_A4 extends Directive{
16 21
17 @Id 22 @Id
18 @GeneratedValue 23 @GeneratedValue
19 private Integer id; 24 private Integer id;
20 25
  26 + private DC0A4Data data;
21 27
22 @Embeddable 28 @Embeddable
23 public static class DC0A4Data { 29 public static class DC0A4Data {
@@ -26,6 +32,7 @@ public class DC0_A4 extends Directive{ @@ -26,6 +32,7 @@ public class DC0_A4 extends Directive{
26 */ 32 */
27 private Short operCode2; 33 private Short operCode2;
28 /** 设备编号 */ 34 /** 设备编号 */
  35 + @Transient
29 private String deviceId; 36 private String deviceId;
30 /** 网关IP地址 */ 37 /** 网关IP地址 */
31 private String ipAddress; 38 private String ipAddress;
@@ -43,5 +50,137 @@ public class DC0_A4 extends Directive{ @@ -43,5 +50,137 @@ public class DC0_A4 extends Directive{
43 private short alarmThreshold; 50 private short alarmThreshold;
44 /** pos机IP地址 */ 51 /** pos机IP地址 */
45 private String posIpAddress; 52 private String posIpAddress;
  53 + /** pos机端口 */
  54 + private String posPort;
  55 + /** 延迟机关时间 */
  56 + private int delay;
  57 + /** 中门视频切换到码表界面速度阀门 默认45 */
  58 + private short speedThreshold1;
  59 + /** 码表界面切换到中门视频速度阀门 默认35 */
  60 + private short speedThreshold2;
  61 + /** 对比度 */
  62 + private short contrast;
  63 + /** 亮度 */
  64 + private short brightness;
  65 + /** 饱和度 */
  66 + private short saturation;
  67 + public Short getOperCode2() {
  68 + return operCode2;
  69 + }
  70 + public void setOperCode2(Short operCode2) {
  71 + this.operCode2 = operCode2;
  72 + }
  73 + public String getDeviceId() {
  74 + return deviceId;
  75 + }
  76 + public void setDeviceId(String deviceId) {
  77 + this.deviceId = deviceId;
  78 + }
  79 + public String getIpAddress() {
  80 + return ipAddress;
  81 + }
  82 + public void setIpAddress(String ipAddress) {
  83 + this.ipAddress = ipAddress;
  84 + }
  85 + public int getPort() {
  86 + return port;
  87 + }
  88 + public void setPort(int port) {
  89 + this.port = port;
  90 + }
  91 + public short getReportMode() {
  92 + return reportMode;
  93 + }
  94 + public void setReportMode(short reportMode) {
  95 + this.reportMode = reportMode;
  96 + }
  97 + public int getInterval() {
  98 + return interval;
  99 + }
  100 + public void setInterval(int interval) {
  101 + this.interval = interval;
  102 + }
  103 + public String getDistance() {
  104 + return distance;
  105 + }
  106 + public void setDistance(String distance) {
  107 + this.distance = distance;
  108 + }
  109 + public short getSpeedingThreshold() {
  110 + return speedingThreshold;
  111 + }
  112 + public void setSpeedingThreshold(short speedingThreshold) {
  113 + this.speedingThreshold = speedingThreshold;
  114 + }
  115 + public short getAlarmThreshold() {
  116 + return alarmThreshold;
  117 + }
  118 + public void setAlarmThreshold(short alarmThreshold) {
  119 + this.alarmThreshold = alarmThreshold;
  120 + }
  121 + public String getPosIpAddress() {
  122 + return posIpAddress;
  123 + }
  124 + public void setPosIpAddress(String posIpAddress) {
  125 + this.posIpAddress = posIpAddress;
  126 + }
  127 + public String getPosPort() {
  128 + return posPort;
  129 + }
  130 + public void setPosPort(String posPort) {
  131 + this.posPort = posPort;
  132 + }
  133 + public int getDelay() {
  134 + return delay;
  135 + }
  136 + public void setDelay(int delay) {
  137 + this.delay = delay;
  138 + }
  139 + public short getSpeedThreshold1() {
  140 + return speedThreshold1;
  141 + }
  142 + public void setSpeedThreshold1(short speedThreshold1) {
  143 + this.speedThreshold1 = speedThreshold1;
  144 + }
  145 + public short getSpeedThreshold2() {
  146 + return speedThreshold2;
  147 + }
  148 + public void setSpeedThreshold2(short speedThreshold2) {
  149 + this.speedThreshold2 = speedThreshold2;
  150 + }
  151 + public short getContrast() {
  152 + return contrast;
  153 + }
  154 + public void setContrast(short contrast) {
  155 + this.contrast = contrast;
  156 + }
  157 + public short getBrightness() {
  158 + return brightness;
  159 + }
  160 + public void setBrightness(short brightness) {
  161 + this.brightness = brightness;
  162 + }
  163 + public short getSaturation() {
  164 + return saturation;
  165 + }
  166 + public void setSaturation(short saturation) {
  167 + this.saturation = saturation;
  168 + }
  169 + }
  170 +
  171 + public Integer getId() {
  172 + return id;
  173 + }
  174 +
  175 + public void setId(Integer id) {
  176 + this.id = id;
  177 + }
  178 +
  179 + public DC0A4Data getData() {
  180 + return data;
  181 + }
  182 +
  183 + public void setData(DC0A4Data data) {
  184 + this.data = data;
46 } 185 }
47 } 186 }
src/main/java/com/bsth/entity/oil/Ylb.java
1 package com.bsth.entity.oil; 1 package com.bsth.entity.oil;
2 2
  3 +import java.text.DecimalFormat;
3 import java.util.Date; 4 import java.util.Date;
4 5
5 import javax.persistence.Entity; 6 import javax.persistence.Entity;
6 import javax.persistence.GeneratedValue; 7 import javax.persistence.GeneratedValue;
7 import javax.persistence.Id; 8 import javax.persistence.Id;
8 import javax.persistence.Table; 9 import javax.persistence.Table;
  10 +import javax.persistence.Transient;
9 11
10 import org.springframework.format.annotation.DateTimeFormat; 12 import org.springframework.format.annotation.DateTimeFormat;
11 13
  14 +import com.bsth.data.BasicData;
  15 +
12 @Entity 16 @Entity
13 @Table(name = "bsth_c_ylb") 17 @Table(name = "bsth_c_ylb")
14 public class Ylb { 18 public class Ylb {
@@ -22,23 +26,23 @@ public class Ylb { @@ -22,23 +26,23 @@ public class Ylb {
22 private String fgsdm; 26 private String fgsdm;
23 private String nbbm; 27 private String nbbm;
24 private String jsy; 28 private String jsy;
25 - private Double czlc;  
26 - private Double jzlc;  
27 - private Double czyl;  
28 - private Double jzyl; 29 + private Double czlc=0.0;
  30 + private Double jzlc=0.0;
  31 + private Double czyl=0.0;
  32 + private Double jzyl=0.0;
29 private Double jzl; 33 private Double jzl;
30 private int sfkt; 34 private int sfkt;
31 private String jhsj; 35 private String jhsj;
32 - private Double yh;  
33 - private Double sh; 36 + private Double yh=0.0;
  37 + private Double sh=0.0;
34 private String shyy; 38 private String shyy;
35 - private Double zlc; 39 + private Double zlc=0.0;
36 private int yhlx; 40 private int yhlx;
37 private String rylx; 41 private String rylx;
38 - private Double ns;  
39 - private Double fyylc;  
40 - private Double jhzlc;  
41 - private Double jhfyylc; 42 + private Double ns=0.0;
  43 + private Double fyylc=0.0;
  44 + private Double jhzlc=0.0;
  45 + private Double jhfyylc=0.0;
42 private int jhzbc; 46 private int jhzbc;
43 private int jhbc; 47 private int jhbc;
44 private int sjzbc; 48 private int sjzbc;
@@ -49,6 +53,16 @@ public class Ylb { @@ -49,6 +53,16 @@ public class Ylb {
49 private int nylx; 53 private int nylx;
50 //进场顺序(根据最先出场和最后进场来关联车辆的存油量) 54 //进场顺序(根据最先出场和最后进场来关联车辆的存油量)
51 private int jcsx; 55 private int jcsx;
  56 +
  57 + @Transient
  58 + private String bglyh;
  59 +
  60 + @Transient
  61 + private String xlname;
  62 +
  63 + @Transient
  64 + private String gsname;
  65 +
52 66
53 public Integer getId() { 67 public Integer getId() {
54 return id; 68 return id;
@@ -254,5 +268,38 @@ public class Ylb { @@ -254,5 +268,38 @@ public class Ylb {
254 public void setJcsx(int jcsx){ 268 public void setJcsx(int jcsx){
255 this.jcsx=jcsx; 269 this.jcsx=jcsx;
256 } 270 }
  271 +
  272 + public String getBglyh() {
  273 + if(this.getZlc()==0){
  274 + return "0.00";
  275 + }else{
  276 + DecimalFormat df = new DecimalFormat("0.00");
  277 + return df.format(this.getYh()/this.getZlc()*100);
  278 + }
  279 + }
  280 +
  281 + public void setBglyh(String bglyh) {
  282 + this.bglyh = bglyh;
  283 + }
  284 +
  285 + public String getXlname() {
  286 + return BasicData.lineCode2NameMap.get(this.xlbm);
  287 + }
  288 +
  289 + public void setXlname(String xlname) {
  290 + this.xlname = xlname;
  291 + }
  292 +
  293 + public String getGsname() {
  294 + return BasicData.nbbm2CompanyCodeMap.get(this.nbbm);
  295 + }
  296 +
  297 + public void setGsname(String gsname) {
  298 + this.gsname = gsname;
  299 + }
  300 +
  301 +
  302 +
  303 +
257 304
258 } 305 }
src/main/java/com/bsth/entity/oil/Ylxxb.java
@@ -6,6 +6,9 @@ import javax.persistence.Entity; @@ -6,6 +6,9 @@ import javax.persistence.Entity;
6 import javax.persistence.GeneratedValue; 6 import javax.persistence.GeneratedValue;
7 import javax.persistence.Id; 7 import javax.persistence.Id;
8 import javax.persistence.Table; 8 import javax.persistence.Table;
  9 +import javax.persistence.Transient;
  10 +
  11 +import org.springframework.format.annotation.DateTimeFormat;
9 12
10 @Entity 13 @Entity
11 @Table(name = "bsth_c_ylxxb") 14 @Table(name = "bsth_c_ylxxb")
@@ -13,6 +16,7 @@ public class Ylxxb { @@ -13,6 +16,7 @@ public class Ylxxb {
13 @Id 16 @Id
14 @GeneratedValue 17 @GeneratedValue
15 private Integer id; 18 private Integer id;
  19 + @DateTimeFormat(pattern="yyyy-MM-dd")
16 private Date yyrq; 20 private Date yyrq;
17 private Date jlrq; 21 private Date jlrq;
18 private String nbbm; 22 private String nbbm;
@@ -29,6 +33,12 @@ public class Ylxxb { @@ -29,6 +33,12 @@ public class Ylxxb {
29 private String xgr; 33 private String xgr;
30 private String fromgsdm; 34 private String fromgsdm;
31 private int nylx; 35 private int nylx;
  36 + @Transient
  37 + private String ldgh;
  38 + //0为接口数据,1为手工输入
  39 + private int jylx=0;
  40 +
  41 +
32 public Integer getId() { 42 public Integer getId() {
33 return id; 43 return id;
34 } 44 }
@@ -131,6 +141,18 @@ public class Ylxxb { @@ -131,6 +141,18 @@ public class Ylxxb {
131 public void setNylx(int nylx) { 141 public void setNylx(int nylx) {
132 this.nylx = nylx; 142 this.nylx = nylx;
133 } 143 }
  144 + public String getLdgh() {
  145 + return ldgh;
  146 + }
  147 + public void setLdgh(String ldgh) {
  148 + this.ldgh = ldgh;
  149 + }
  150 + public int getJylx() {
  151 + return jylx;
  152 + }
  153 + public void setJylx(int jylx) {
  154 + this.jylx = jylx;
  155 + }
134 156
135 157
136 158
src/main/java/com/bsth/entity/realcontrol/LineConfig.java
@@ -49,9 +49,9 @@ public class LineConfig { @@ -49,9 +49,9 @@ public class LineConfig {
49 /** 开始运营时间 HH:mm */ 49 /** 开始运营时间 HH:mm */
50 private String startOpt; 50 private String startOpt;
51 51
52 - /** 当天开始营运时间戳 */ 52 + /** 当天开始营运时间戳
53 @Transient 53 @Transient
54 - private long currStartTime; 54 + private long currStartTime;*/
55 55
56 /** 托管状态 */ 56 /** 托管状态 */
57 private boolean trust; 57 private boolean trust;
src/main/java/com/bsth/entity/schedule/CarConfigInfo.java
@@ -53,6 +53,10 @@ public class CarConfigInfo implements Serializable { @@ -53,6 +53,10 @@ public class CarConfigInfo implements Serializable {
53 @Column(nullable = false) 53 @Column(nullable = false)
54 private int isSwitch; 54 private int isSwitch;
55 55
  56 + /** 是否删除(标记) */
  57 + @Column(nullable = false)
  58 + private Boolean isCancel = false;
  59 +
56 /** 创建人 */ 60 /** 创建人 */
57 @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST) 61 @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
58 private SysUser createBy; 62 private SysUser createBy;
@@ -170,4 +174,12 @@ public class CarConfigInfo implements Serializable { @@ -170,4 +174,12 @@ public class CarConfigInfo implements Serializable {
170 public void setUpdateDate(Date updateDate) { 174 public void setUpdateDate(Date updateDate) {
171 this.updateDate = updateDate; 175 this.updateDate = updateDate;
172 } 176 }
  177 +
  178 + public Boolean getIsCancel() {
  179 + return isCancel;
  180 + }
  181 +
  182 + public void setIsCancel(Boolean isCancel) {
  183 + this.isCancel = isCancel;
  184 + }
173 } 185 }
src/main/java/com/bsth/entity/schedule/EmployeeConfigInfo.java
@@ -49,6 +49,9 @@ public class EmployeeConfigInfo { @@ -49,6 +49,9 @@ public class EmployeeConfigInfo {
49 @Formula(" dbbm + 0 ") 49 @Formula(" dbbm + 0 ")
50 private Integer dbbmFormula; 50 private Integer dbbmFormula;
51 51
  52 + /** 是否删除(标记) */
  53 + @Column(nullable = false)
  54 + private Boolean isCancel = false;
52 55
53 /** 创建人 */ 56 /** 创建人 */
54 @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST) 57 @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
@@ -96,6 +99,22 @@ public class EmployeeConfigInfo { @@ -96,6 +99,22 @@ public class EmployeeConfigInfo {
96 this.jsy = jsy; 99 this.jsy = jsy;
97 } 100 }
98 101
  102 + public Personnel getSpy() {
  103 + return spy;
  104 + }
  105 +
  106 + public void setSpy(Personnel spy) {
  107 + this.spy = spy;
  108 + }
  109 +
  110 + public String getDbbm() {
  111 + return dbbm;
  112 + }
  113 +
  114 + public void setDbbm(String dbbm) {
  115 + this.dbbm = dbbm;
  116 + }
  117 +
99 public Integer getDbbmFormula() { 118 public Integer getDbbmFormula() {
100 return dbbmFormula; 119 return dbbmFormula;
101 } 120 }
@@ -104,6 +123,14 @@ public class EmployeeConfigInfo { @@ -104,6 +123,14 @@ public class EmployeeConfigInfo {
104 this.dbbmFormula = dbbmFormula; 123 this.dbbmFormula = dbbmFormula;
105 } 124 }
106 125
  126 + public Boolean getIsCancel() {
  127 + return isCancel;
  128 + }
  129 +
  130 + public void setIsCancel(Boolean isCancel) {
  131 + this.isCancel = isCancel;
  132 + }
  133 +
107 public SysUser getCreateBy() { 134 public SysUser getCreateBy() {
108 return createBy; 135 return createBy;
109 } 136 }
@@ -120,22 +147,6 @@ public class EmployeeConfigInfo { @@ -120,22 +147,6 @@ public class EmployeeConfigInfo {
120 this.updateBy = updateBy; 147 this.updateBy = updateBy;
121 } 148 }
122 149
123 - public Personnel getSpy() {  
124 - return spy;  
125 - }  
126 -  
127 - public void setSpy(Personnel spy) {  
128 - this.spy = spy;  
129 - }  
130 -  
131 - public String getDbbm() {  
132 - return dbbm;  
133 - }  
134 -  
135 - public void setDbbm(String dbbm) {  
136 - this.dbbm = dbbm;  
137 - }  
138 -  
139 public Date getCreateDate() { 150 public Date getCreateDate() {
140 return createDate; 151 return createDate;
141 } 152 }
src/main/java/com/bsth/entity/schedule/rule/RerunRule.java 0 → 100644
  1 +package com.bsth.entity.schedule.rule;
  2 +
  3 +import com.bsth.entity.Line;
  4 +import com.bsth.entity.schedule.CarConfigInfo;
  5 +import com.bsth.entity.schedule.EmployeeConfigInfo;
  6 +import com.bsth.entity.schedule.GuideboardInfo;
  7 +import com.bsth.entity.schedule.TTInfo;
  8 +import com.bsth.entity.sys.SysUser;
  9 +
  10 +import javax.persistence.*;
  11 +import java.util.Date;
  12 +
  13 +/**
  14 + * 套跑规则。
  15 + */
  16 +@Entity
  17 +@Table(name = "bsth_c_s_rerun_rule")
  18 +@NamedEntityGraphs({
  19 + @NamedEntityGraph(name = "dylp", attributeNodes = {
  20 + @NamedAttributeNode("rerunXl"),
  21 + @NamedAttributeNode("rerunTtinfo"),
  22 + @NamedAttributeNode("rerunLp"),
  23 + @NamedAttributeNode("useXl"),
  24 + @NamedAttributeNode("useLp"),
  25 + @NamedAttributeNode("useCarConfig"),
  26 + @NamedAttributeNode("useEmployeeConfig")
  27 +
  28 + // TODO:subgraph貌似没有用,再议
  29 +// subgraphs = {
  30 +// @NamedSubgraph(name = "useCarConfig", attributeNodes = {
  31 +// @NamedAttributeNode("xl"),
  32 +// @NamedAttributeNode("cl")
  33 +// }),
  34 +// @NamedSubgraph(name = "useEmployeeConfig", attributeNodes = {
  35 +// @NamedAttributeNode("jsy"),
  36 +// @NamedAttributeNode("spy"),
  37 +// @NamedAttributeNode("xl")
  38 +// })
  39 +// }
  40 + })
  41 +})
  42 +
  43 +
  44 +public class RerunRule {
  45 + /** 主键Id */
  46 + @Id
  47 + @GeneratedValue
  48 + private Long id;
  49 +
  50 + /** 套跑线路 */
  51 + @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
  52 + private Line rerunXl;
  53 + /** 套跑时刻表 */
  54 + @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
  55 + private TTInfo rerunTtinfo;
  56 + /** 套跑路牌 */
  57 + @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
  58 + private GuideboardInfo rerunLp;
  59 + /** 套跑班次(时刻表明细ids,使用逗号连接) */
  60 + private String rerunTtinfodetailIds;
  61 +
  62 +
  63 + /** 套跑类型(dylp;对应路牌,dybc:对应班车) */
  64 + @Column(nullable = false)
  65 + private String rerunType;
  66 +
  67 + //--------- 对应路牌 ----------/
  68 + /** 使用线路 */
  69 + @ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
  70 + private Line useXl;
  71 + /** 使用路牌 */
  72 + @ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
  73 + private GuideboardInfo useLp;
  74 +
  75 + //--------- 对应班车 ----------/
  76 + /** 车辆配置 */
  77 + @ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
  78 + private CarConfigInfo useCarConfig;
  79 + /** 人员配置 */
  80 + @ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
  81 + private EmployeeConfigInfo useEmployeeConfig;
  82 +
  83 + /** 是否删除(标记) */
  84 + @Column(nullable = false)
  85 + private Boolean isCancel = false;
  86 +
  87 + /** 创建人 */
  88 + @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  89 + private SysUser createBy;
  90 + /** 修改人 */
  91 + @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
  92 + private SysUser updateBy;
  93 + /** 创建日期 */
  94 + @Column(updatable = false, name = "create_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
  95 + private Date createDate;
  96 + /** 修改日期 */
  97 + @Column(name = "update_date", columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
  98 + private Date updateDate;
  99 +
  100 + public Long getId() {
  101 + return id;
  102 + }
  103 +
  104 + public void setId(Long id) {
  105 + this.id = id;
  106 + }
  107 +
  108 + public Line getRerunXl() {
  109 + return rerunXl;
  110 + }
  111 +
  112 + public void setRerunXl(Line rerunXl) {
  113 + this.rerunXl = rerunXl;
  114 + }
  115 +
  116 + public TTInfo getRerunTtinfo() {
  117 + return rerunTtinfo;
  118 + }
  119 +
  120 + public void setRerunTtinfo(TTInfo rerunTtinfo) {
  121 + this.rerunTtinfo = rerunTtinfo;
  122 + }
  123 +
  124 + public GuideboardInfo getRerunLp() {
  125 + return rerunLp;
  126 + }
  127 +
  128 + public void setRerunLp(GuideboardInfo rerunLp) {
  129 + this.rerunLp = rerunLp;
  130 + }
  131 +
  132 + public String getRerunTtinfodetailIds() {
  133 + return rerunTtinfodetailIds;
  134 + }
  135 +
  136 + public void setRerunTtinfodetailIds(String rerunTtinfodetailIds) {
  137 + this.rerunTtinfodetailIds = rerunTtinfodetailIds;
  138 + }
  139 +
  140 + public String getRerunType() {
  141 + return rerunType;
  142 + }
  143 +
  144 + public void setRerunType(String rerunType) {
  145 + this.rerunType = rerunType;
  146 + }
  147 +
  148 + public Line getUseXl() {
  149 + return useXl;
  150 + }
  151 +
  152 + public void setUseXl(Line useXl) {
  153 + this.useXl = useXl;
  154 + }
  155 +
  156 + public GuideboardInfo getUseLp() {
  157 + return useLp;
  158 + }
  159 +
  160 + public void setUseLp(GuideboardInfo useLp) {
  161 + this.useLp = useLp;
  162 + }
  163 +
  164 + public CarConfigInfo getUseCarConfig() {
  165 + return useCarConfig;
  166 + }
  167 +
  168 + public void setUseCarConfig(CarConfigInfo useCarConfig) {
  169 + this.useCarConfig = useCarConfig;
  170 + }
  171 +
  172 + public EmployeeConfigInfo getUseEmployeeConfig() {
  173 + return useEmployeeConfig;
  174 + }
  175 +
  176 + public void setUseEmployeeConfig(EmployeeConfigInfo useEmployeeConfig) {
  177 + this.useEmployeeConfig = useEmployeeConfig;
  178 + }
  179 +
  180 + public SysUser getCreateBy() {
  181 + return createBy;
  182 + }
  183 +
  184 + public void setCreateBy(SysUser createBy) {
  185 + this.createBy = createBy;
  186 + }
  187 +
  188 + public SysUser getUpdateBy() {
  189 + return updateBy;
  190 + }
  191 +
  192 + public void setUpdateBy(SysUser updateBy) {
  193 + this.updateBy = updateBy;
  194 + }
  195 +
  196 + public Date getCreateDate() {
  197 + return createDate;
  198 + }
  199 +
  200 + public void setCreateDate(Date createDate) {
  201 + this.createDate = createDate;
  202 + }
  203 +
  204 + public Date getUpdateDate() {
  205 + return updateDate;
  206 + }
  207 +
  208 + public Boolean getIsCancel() {
  209 + return isCancel;
  210 + }
  211 +
  212 + public void setIsCancel(Boolean isCancel) {
  213 + this.isCancel = isCancel;
  214 + }
  215 +
  216 + public void setUpdateDate(Date updateDate) {
  217 + this.updateDate = updateDate;
  218 + }
  219 +}
src/main/java/com/bsth/entity/search/CustomerSpecs.java
1 package com.bsth.entity.search; 1 package com.bsth.entity.search;
2 2
3 -import java.lang.reflect.Method;  
4 -import java.util.ArrayList;  
5 -import java.util.List;  
6 -import java.util.Map;  
7 -import java.util.Set;  
8 -import java.util.TreeSet;  
9 -  
10 -import javax.persistence.criteria.CriteriaBuilder;  
11 -import javax.persistence.criteria.CriteriaQuery;  
12 -import javax.persistence.criteria.Path;  
13 -import javax.persistence.criteria.Predicate;  
14 -import javax.persistence.criteria.Root;  
15 - 3 +import com.bsth.entity.search.exception.UnrecognizableSearchSymbolException;
16 import org.apache.commons.lang3.StringUtils; 4 import org.apache.commons.lang3.StringUtils;
17 import org.slf4j.Logger; 5 import org.slf4j.Logger;
18 import org.slf4j.LoggerFactory; 6 import org.slf4j.LoggerFactory;
19 import org.springframework.data.jpa.domain.Specification; 7 import org.springframework.data.jpa.domain.Specification;
20 8
21 -import com.bsth.entity.search.exception.UnrecognizableSearchSymbolException; 9 +import javax.persistence.criteria.*;
  10 +import java.lang.reflect.Method;
  11 +import java.util.*;
22 12
23 /** 13 /**
24 * 14 *
@@ -74,6 +64,14 @@ public class CustomerSpecs&lt;T&gt; implements Specification&lt;T&gt; { @@ -74,6 +64,14 @@ public class CustomerSpecs&lt;T&gt; implements Specification&lt;T&gt; {
74 // 值为空的不参与查询 64 // 值为空的不参与查询
75 if (value == null || (value instanceof String && value.equals(""))) 65 if (value == null || (value instanceof String && value.equals("")))
76 continue; 66 continue;
  67 +
  68 + // 如果是布尔值,转换,限定 'true','false' 字符串
  69 + if ("true".equals(value)) {
  70 + value = Boolean.TRUE;
  71 + }
  72 + if ("false".equals(value)) {
  73 + value = Boolean.FALSE;
  74 + }
77 75
78 try { 76 try {
79 if(!eSet.contains(searchs[1])) 77 if(!eSet.contains(searchs[1]))
src/main/java/com/bsth/entity/search/PredicatesBuilder.java
1 package com.bsth.entity.search; 1 package com.bsth.entity.search;
2 2
  3 +import javax.persistence.criteria.CriteriaBuilder;
  4 +import javax.persistence.criteria.Path;
  5 +import javax.persistence.criteria.Predicate;
3 import java.text.NumberFormat; 6 import java.text.NumberFormat;
4 import java.text.ParseException; 7 import java.text.ParseException;
5 import java.text.SimpleDateFormat; 8 import java.text.SimpleDateFormat;
6 import java.util.Date; 9 import java.util.Date;
7 10
8 -import javax.persistence.criteria.CriteriaBuilder;  
9 -import javax.persistence.criteria.Path;  
10 -import javax.persistence.criteria.Predicate;  
11 -  
12 /** 11 /**
13 * 12 *
14 * @ClassName: PredicatesBuilder 13 * @ClassName: PredicatesBuilder
@@ -44,13 +43,22 @@ public class PredicatesBuilder { @@ -44,13 +43,22 @@ public class PredicatesBuilder {
44 } 43 }
45 } 44 }
46 45
47 - public static Predicate ge(CriteriaBuilder cb,Path<Number> expression, Object object){  
48 - try {  
49 - return cb.ge(expression, nf.parse(object.toString()));  
50 - } catch (ParseException e) {  
51 - e.printStackTrace();  
52 - return null;  
53 - } 46 + public static Predicate ge(CriteriaBuilder cb,Path<?> expression, Object object){
  47 + Class<?> leftType = expression.getJavaType();
  48 + Class<?> rightType = object.getClass();
  49 +
  50 + if (leftType.isAssignableFrom(Number.class) &&
  51 + rightType.isAssignableFrom(Number.class)) { // 判定是否是Number类型的子类
  52 + return cb.ge((Path<Number>) expression, (Number) object);
  53 + } else if (leftType.isAssignableFrom(String.class) &&
  54 + rightType.isAssignableFrom(String.class)) { // 判定是否是String类型的子类
  55 + return cb.greaterThanOrEqualTo((Path<String>) expression, (String) object);
  56 + } else if (leftType.isAssignableFrom(Date.class) &&
  57 + rightType.isAssignableFrom(Date.class)) { // 判定是否是Date类型的子类
  58 + return cb.greaterThanOrEqualTo((Path<Date>) expression, (Date) object);
  59 + } else {
  60 + throw new RuntimeException("ge 不支持类型组合:" + expression.getJavaType() + ">=" + object.getClass());
  61 + }
54 } 62 }
55 63
56 public static Predicate lt(CriteriaBuilder cb,Path<Number> expression, Object object){ 64 public static Predicate lt(CriteriaBuilder cb,Path<Number> expression, Object object){
@@ -62,13 +70,22 @@ public class PredicatesBuilder { @@ -62,13 +70,22 @@ public class PredicatesBuilder {
62 } 70 }
63 } 71 }
64 72
65 - public static Predicate le(CriteriaBuilder cb,Path<Number> expression, Object object){  
66 - try {  
67 - return cb.le(expression, nf.parse(object.toString()));  
68 - } catch (ParseException e) {  
69 - e.printStackTrace();  
70 - return null;  
71 - } 73 + public static Predicate le(CriteriaBuilder cb,Path<?> expression, Object object){
  74 + Class<?> leftType = expression.getJavaType();
  75 + Class<?> rightType = object.getClass();
  76 +
  77 + if (leftType.isAssignableFrom(Number.class) &&
  78 + rightType.isAssignableFrom(Number.class)) { // 判定是否是Number类型的子类
  79 + return cb.le((Path<Number>) expression, (Number) object);
  80 + } else if (leftType.isAssignableFrom(String.class) &&
  81 + rightType.isAssignableFrom(String.class)) { // 判定是否是String类型的子类
  82 + return cb.lessThanOrEqualTo((Path<String>) expression, (String) object);
  83 + } else if (leftType.isAssignableFrom(Date.class) &&
  84 + rightType.isAssignableFrom(Date.class)) { // 判定是否是Date类型的子类
  85 + return cb.lessThanOrEqualTo((Path<Date>) expression, (Date) object);
  86 + } else {
  87 + throw new RuntimeException("ge 不支持类型组合:" + expression.getJavaType() + ">=" + object.getClass());
  88 + }
72 } 89 }
73 90
74 public static Predicate prefixLike(CriteriaBuilder cb,Path<String> expression, Object object){ 91 public static Predicate prefixLike(CriteriaBuilder cb,Path<String> expression, Object object){
src/main/java/com/bsth/filter/ResourceFilter.java
1 -package com.bsth.filter;  
2 -  
3 -import java.io.File;  
4 -import java.io.IOException;  
5 -  
6 -import javax.servlet.FilterChain;  
7 -import javax.servlet.ServletException;  
8 -import javax.servlet.http.HttpServletRequest;  
9 -import javax.servlet.http.HttpServletResponse;  
10 -  
11 -import org.apache.commons.lang3.StringUtils;  
12 -  
13 -import com.bsth.util.RequestUtils;  
14 -  
15 -/**  
16 - *  
17 - * @ClassName: ResourceFilter  
18 - * @Description: TODO(HTML片段过滤器)  
19 - * @author PanZhao  
20 - * @date 2016年3月19日 下午10:10:11  
21 - *  
22 - */  
23 -public class ResourceFilter extends BaseFilter {  
24 -  
25 - String[] params = new String[]{"no"};  
26 -  
27 - @Override  
28 - public void doFilter(HttpServletRequest request,  
29 - HttpServletResponse response, FilterChain chain)  
30 - throws IOException, ServletException {  
31 -  
32 - String uri = request.getRequestURI();  
33 - int len = uri.length();  
34 - if (RequestUtils.isAjaxRequest(request) ||  
35 - !uri.substring(len - 5, len).equals(".html")) {  
36 - super.doFilter(request, response, chain);  
37 - } else {  
38 -  
39 - String fPath = this.getClass().getResource("/").getPath()  
40 - + "static/" + uri;  
41 -  
42 - File f = new File(fPath);  
43 -  
44 -  
45 - if (f.exists() && f.isFile() ){  
46 - request.getRequestDispatcher("/?initFragment=" + joinParam(request)).forward(request, response);;  
47 - }else  
48 - response.sendRedirect("/");  
49 - }  
50 - }  
51 -  
52 - /**  
53 - * 拼接参数  
54 - * @param request  
55 - * @return  
56 - */  
57 - public String joinParam(HttpServletRequest request){  
58 -  
59 - StringBuilder sb = new StringBuilder();  
60 -  
61 - String v  
62 - ,url = request.getRequestURI();  
63 - for(String p : params){  
64 - v = request.getParameter(p);  
65 - if(!StringUtils.isEmpty(v))  
66 - sb.append("&" + p + "=" + v);  
67 - }  
68 -  
69 - if(sb.length() > 0)  
70 - url += "?" + sb.substring(1, sb.length());  
71 - return url;  
72 - }  
73 -} 1 +package com.bsth.filter;
  2 +
  3 +import java.io.File;
  4 +import java.io.IOException;
  5 +
  6 +import javax.servlet.FilterChain;
  7 +import javax.servlet.ServletException;
  8 +import javax.servlet.http.HttpServletRequest;
  9 +import javax.servlet.http.HttpServletResponse;
  10 +
  11 +import org.apache.commons.lang3.StringUtils;
  12 +
  13 +import com.bsth.util.RequestUtils;
  14 +
  15 +/**
  16 + *
  17 + * @ClassName: ResourceFilter
  18 + * @Description: TODO(HTML片段过滤器)
  19 + * @author PanZhao
  20 + * @date 2016年3月19日 下午10:10:11
  21 + *
  22 + */
  23 +public class ResourceFilter extends BaseFilter {
  24 +
  25 + String[] params = new String[]{"no"};
  26 +
  27 + @Override
  28 + public void doFilter(HttpServletRequest request,
  29 + HttpServletResponse response, FilterChain chain)
  30 + throws IOException, ServletException {
  31 +
  32 + String uri = request.getRequestURI();
  33 + int len = uri.length();
  34 + if (RequestUtils.isAjaxRequest(request) ||
  35 + !uri.substring(len - 5, len).equals(".html")) {
  36 + super.doFilter(request, response, chain);
  37 + } else {
  38 +
  39 + String fPath = this.getClass().getResource("/").getPath()
  40 + + "static/" + uri;
  41 +
  42 + File f = new File(fPath);
  43 +
  44 +
  45 + if (f.exists() && f.isFile() ){
  46 + request.getRequestDispatcher("/?initFragment=" + joinParam(request)).forward(request, response);;
  47 + }else
  48 + response.sendRedirect("/");
  49 + }
  50 + }
  51 +
  52 + /**
  53 + * 拼接参数
  54 + * @param request
  55 + * @return
  56 + */
  57 + public String joinParam(HttpServletRequest request){
  58 +
  59 + StringBuilder sb = new StringBuilder();
  60 +
  61 + String v
  62 + ,url = request.getRequestURI();
  63 + for(String p : params){
  64 + v = request.getParameter(p);
  65 + if(!StringUtils.isEmpty(v))
  66 + sb.append("&" + p + "=" + v);
  67 + }
  68 +
  69 + if(sb.length() > 0)
  70 + url += "?" + sb.substring(1, sb.length());
  71 + return url;
  72 + }
  73 +}
src/main/java/com/bsth/oplog/Level.java 0 → 100644
  1 +package com.bsth.oplog;
  2 +
  3 +public enum Level {
  4 +
  5 + ERROR,WARN,INFO,ACCESS;
  6 +}
src/main/java/com/bsth/oplog/Log.java 0 → 100644
  1 +package com.bsth.oplog;
  2 +
  3 +import java.util.Date;
  4 +
  5 +public class Log {
  6 +
  7 + private String userName;
  8 +
  9 + private Long timestamp;
  10 +
  11 + private String type;
  12 +
  13 + private String level;
  14 +
  15 + private String path;
  16 +
  17 + private String serverIp;
  18 +
  19 + private String clientIp;
  20 +
  21 + private String httpData;
  22 +
  23 + private Date month;
  24 +
  25 + private String callerClass;
  26 +
  27 + private String callerMethod;
  28 +
  29 + private Integer lineNumber;
  30 +
  31 + public String getPath() {
  32 + return path;
  33 + }
  34 +
  35 + public void setPath(String path) {
  36 + this.path = path;
  37 + }
  38 +
  39 + public String getServerIp() {
  40 + return serverIp;
  41 + }
  42 +
  43 + public void setServerIp(String serverIp) {
  44 + this.serverIp = serverIp;
  45 + }
  46 +
  47 + public String getHttpData() {
  48 + return httpData;
  49 + }
  50 +
  51 + public void setHttpData(String httpData) {
  52 + this.httpData = httpData;
  53 + }
  54 +
  55 + public Date getMonth() {
  56 + return month;
  57 + }
  58 +
  59 + public void setMonth(Date month) {
  60 + this.month = month;
  61 + }
  62 +
  63 + public String getType() {
  64 + return type;
  65 + }
  66 +
  67 + public void setType(String type) {
  68 + this.type = type;
  69 + }
  70 +
  71 + public String getLevel() {
  72 + return level;
  73 + }
  74 +
  75 + public void setLevel(String level) {
  76 + this.level = level;
  77 + }
  78 +
  79 + public String getCallerClass() {
  80 + return callerClass;
  81 + }
  82 +
  83 + public void setCallerClass(String callerClass) {
  84 + this.callerClass = callerClass;
  85 + }
  86 +
  87 + public String getCallerMethod() {
  88 + return callerMethod;
  89 + }
  90 +
  91 + public void setCallerMethod(String callerMethod) {
  92 + this.callerMethod = callerMethod;
  93 + }
  94 +
  95 + public String getClientIp() {
  96 + return clientIp;
  97 + }
  98 +
  99 + public void setClientIp(String clientIp) {
  100 + this.clientIp = clientIp;
  101 + }
  102 +
  103 + public String getUserName() {
  104 + return userName;
  105 + }
  106 +
  107 + public void setUserName(String userName) {
  108 + this.userName = userName;
  109 + }
  110 +
  111 + public Long getTimestamp() {
  112 + return timestamp;
  113 + }
  114 +
  115 + public void setTimestamp(Long timestamp) {
  116 + this.timestamp = timestamp;
  117 + }
  118 +
  119 + public Integer getLineNumber() {
  120 + return lineNumber;
  121 + }
  122 +
  123 + public void setLineNumber(Integer lineNumber) {
  124 + this.lineNumber = lineNumber;
  125 + }
  126 +}
src/main/java/com/bsth/oplog/db/DBHelper.java 0 → 100644
  1 +package com.bsth.oplog.db;
  2 +
  3 +import java.util.LinkedList;
  4 +import java.util.concurrent.TimeUnit;
  5 +
  6 +import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.boot.CommandLineRunner;
  8 +import org.springframework.stereotype.Component;
  9 +
  10 +import com.bsth.Application;
  11 +import com.bsth.oplog.Log;
  12 +import com.bsth.oplog.db.mysql.DBPersistence;
  13 +
  14 +@Component
  15 +public class DBHelper implements CommandLineRunner{
  16 +
  17 + private final static int maxBufSize = 1000;
  18 + private final static int fixedMinute = 10;
  19 +
  20 + private static LinkedList<Log> buffer = new LinkedList<>();
  21 +
  22 + @Autowired
  23 + private FixedTimePersistenceThread fixedTimeThread;
  24 +
  25 + public void save(Log log){
  26 + buffer.add(log);
  27 +
  28 + if(buffer.size() >= maxBufSize)
  29 + fixedTimeThread.start();
  30 + }
  31 +
  32 + @Component
  33 + public static class FixedTimePersistenceThread extends Thread{
  34 +
  35 + @Autowired
  36 + DBPersistence persistence;
  37 +
  38 + @Override
  39 + public void run() {
  40 + persistence.batchSave(buffer);
  41 + }
  42 + }
  43 +
  44 + @Override
  45 + public void run(String... arg0) throws Exception {
  46 + Application.mainServices.scheduleWithFixedDelay(fixedTimeThread, fixedMinute, fixedMinute, TimeUnit.MINUTES);
  47 + }
  48 +}
src/main/java/com/bsth/oplog/db/mysql/DBPersistence.java 0 → 100644
  1 +package com.bsth.oplog.db.mysql;
  2 +
  3 +import java.sql.Date;
  4 +import java.sql.PreparedStatement;
  5 +import java.sql.SQLException;
  6 +import java.util.ArrayList;
  7 +import java.util.LinkedList;
  8 +import java.util.List;
  9 +
  10 +import org.slf4j.Logger;
  11 +import org.slf4j.LoggerFactory;
  12 +import org.springframework.beans.factory.annotation.Autowired;
  13 +import org.springframework.jdbc.core.BatchPreparedStatementSetter;
  14 +import org.springframework.jdbc.core.JdbcTemplate;
  15 +import org.springframework.stereotype.Component;
  16 +
  17 +import com.bsth.oplog.Log;
  18 +
  19 +/**
  20 + *
  21 + * @ClassName: DBPersistence
  22 + * @Description: TODO(mysql 批量入库)
  23 + * @author PanZhao
  24 + * @date 2016年10月20日 上午9:44:00
  25 + *
  26 + */
  27 +@Component
  28 +public class DBPersistence {
  29 +
  30 + @Autowired
  31 + JdbcTemplate jdbcTemplate;
  32 +
  33 + Logger logger = LoggerFactory.getLogger(DBPersistence.class);
  34 +
  35 + public void batchSave(LinkedList<Log> list){
  36 + String sql = "insert into bsth_c_sys_op_log"
  37 + + "(timestamp, path, type,level, caller_class, caller_method, user_name, client_ip, server_ip, month, http_data, line_number)"
  38 + + " values(?,?,?,?,?,?,?,?,?,?,?,?)";
  39 +
  40 +
  41 + List<Log> saveList = new ArrayList<>(list.size());
  42 + Log log;
  43 + while(true){
  44 + log = list.poll();
  45 + if(log != null)
  46 + saveList.add(log);
  47 + else
  48 + break;
  49 + }
  50 +
  51 + Date month = new Date(System.currentTimeMillis());
  52 +
  53 + try {
  54 + jdbcTemplate.batchUpdate(sql, new LogBatchPreparedStatementSetter(saveList, month));
  55 + } catch (Exception e) {
  56 + logger.error("操作日志入库失败", e);
  57 + }
  58 + }
  59 +
  60 + private class LogBatchPreparedStatementSetter implements BatchPreparedStatementSetter{
  61 +
  62 + List<Log> temList;
  63 + Date month;
  64 +
  65 + public LogBatchPreparedStatementSetter(final List<Log> list, Date month){
  66 + this.temList = list;
  67 + this.month = month;
  68 + }
  69 +
  70 + @Override
  71 + public void setValues(PreparedStatement ps, int i) throws SQLException {
  72 + Log log = temList.get(i);
  73 + ps.setLong(1, log.getTimestamp());
  74 + ps.setString(2, log.getPath());
  75 + ps.setString(3, log.getType());
  76 + ps.setString(4, log.getLevel());
  77 + ps.setString(5, log.getCallerClass());
  78 + ps.setString(6, log.getCallerMethod());
  79 + ps.setString(7, log.getUserName());
  80 + ps.setString(8, log.getClientIp());
  81 + ps.setString(9, log.getServerIp());
  82 + ps.setDate(10, month);
  83 + ps.setString(11, log.getHttpData());
  84 + ps.setObject(12, log.getLineNumber());
  85 + }
  86 +
  87 + @Override
  88 + public int getBatchSize() {
  89 + return temList.size();
  90 + }
  91 + }
  92 +}
src/main/java/com/bsth/oplog/db/mysql/db.sql 0 → 100644
  1 +CREATE TABLE `bsth_c_sys_op_log` (
  2 +`timestamp` bigint(20) NOT NULL ,
  3 +`user_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
  4 +`caller_class` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
  5 +`caller_method` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
  6 +`client_ip` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
  7 +`http_data` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,
  8 +`level` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
  9 +`month` date NOT NULL ,
  10 +`path` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
  11 +`server_ip` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
  12 +`type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  13 +`line_number` int(11) NULL DEFAULT NULL
  14 +)
  15 +ENGINE=InnoDB
  16 +DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
  17 +ROW_FORMAT=DYNAMIC
  18 +
  19 +PARTITION BY RANGE(TO_DAYS (month))
  20 +(
  21 +PARTITION p201610 VALUES LESS THAN (TO_DAYS('2016-11-01')),
  22 +PARTITION p201611 VALUES LESS THAN (TO_DAYS('2016-12-01')),
  23 +PARTITION p201612 VALUES LESS THAN (TO_DAYS('2017-01-01')),
  24 +
  25 +PARTITION p201701 VALUES LESS THAN (TO_DAYS('2017-02-01')),
  26 +PARTITION p201702 VALUES LESS THAN (TO_DAYS('2017-03-01')),
  27 +PARTITION p201703 VALUES LESS THAN (TO_DAYS('2017-04-01')),
  28 +PARTITION p201704 VALUES LESS THAN (TO_DAYS('2017-05-01')),
  29 +PARTITION p201705 VALUES LESS THAN (TO_DAYS('2017-06-01')),
  30 +PARTITION p201706 VALUES LESS THAN (TO_DAYS('2017-07-01')),
  31 +PARTITION p201707 VALUES LESS THAN (TO_DAYS('2017-08-01')),
  32 +PARTITION p201708 VALUES LESS THAN (TO_DAYS('2017-09-01')),
  33 +PARTITION p201709 VALUES LESS THAN (TO_DAYS('2017-10-01')),
  34 +PARTITION p201710 VALUES LESS THAN (TO_DAYS('2017-11-01')),
  35 +PARTITION p201711 VALUES LESS THAN (TO_DAYS('2017-12-01')),
  36 +PARTITION p201712 VALUES LESS THAN (TO_DAYS('2018-01-01')),
  37 +
  38 +
  39 +PARTITION p201801 VALUES LESS THAN (TO_DAYS('2018-02-01')),
  40 +PARTITION p201802 VALUES LESS THAN (TO_DAYS('2018-03-01')),
  41 +PARTITION p201803 VALUES LESS THAN (TO_DAYS('2018-04-01')),
  42 +PARTITION p201804 VALUES LESS THAN (TO_DAYS('2018-05-01')),
  43 +PARTITION p201805 VALUES LESS THAN (TO_DAYS('2018-06-01')),
  44 +PARTITION p201806 VALUES LESS THAN (TO_DAYS('2018-07-01')),
  45 +PARTITION p201807 VALUES LESS THAN (TO_DAYS('2018-08-01')),
  46 +PARTITION p201808 VALUES LESS THAN (TO_DAYS('2018-09-01')),
  47 +PARTITION p201809 VALUES LESS THAN (TO_DAYS('2018-10-01')),
  48 +PARTITION p201810 VALUES LESS THAN (TO_DAYS('2018-11-01')),
  49 +PARTITION p201811 VALUES LESS THAN (TO_DAYS('2018-12-01')),
  50 +PARTITION p201812 VALUES LESS THAN (TO_DAYS('2019-01-01')),
  51 +
  52 +PARTITION p201901 VALUES LESS THAN (TO_DAYS('2019-02-01')),
  53 +PARTITION p201902 VALUES LESS THAN (TO_DAYS('2019-03-01')),
  54 +PARTITION p201903 VALUES LESS THAN (TO_DAYS('2019-04-01')),
  55 +PARTITION p201904 VALUES LESS THAN (TO_DAYS('2019-05-01')),
  56 +PARTITION p201905 VALUES LESS THAN (TO_DAYS('2019-06-01')),
  57 +PARTITION p201906 VALUES LESS THAN (TO_DAYS('2019-07-01')),
  58 +PARTITION p201907 VALUES LESS THAN (TO_DAYS('2019-08-01')),
  59 +PARTITION p201908 VALUES LESS THAN (TO_DAYS('2019-09-01')),
  60 +PARTITION p201909 VALUES LESS THAN (TO_DAYS('2019-10-01')),
  61 +PARTITION p201910 VALUES LESS THAN (TO_DAYS('2019-11-01')),
  62 +PARTITION p201911 VALUES LESS THAN (TO_DAYS('2019-12-01')),
  63 +PARTITION p201912 VALUES LESS THAN (TO_DAYS('2020-01-01'))
  64 +
  65 +
  66 +);
  67 +
src/main/java/com/bsth/oplog/http/HttpOpLogInterceptor.java 0 → 100644
  1 +package com.bsth.oplog.http;
  2 +
  3 +import javax.servlet.http.HttpServletRequest;
  4 +import javax.servlet.http.HttpServletResponse;
  5 +
  6 +import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.stereotype.Component;
  8 +import org.springframework.util.AntPathMatcher;
  9 +import org.springframework.util.PathMatcher;
  10 +import org.springframework.web.method.HandlerMethod;
  11 +import org.springframework.web.servlet.HandlerInterceptor;
  12 +import org.springframework.web.servlet.ModelAndView;
  13 +
  14 +/**
  15 + *
  16 + * @ClassName: HttpOpLogger
  17 + * @Description: TODO(HTTP 接口日志拦截器)
  18 + * @author PanZhao
  19 + * @date 2016年10月20日 上午12:03:11
  20 + *
  21 + */
  22 +//@Component
  23 +public class HttpOpLogInterceptor implements HandlerInterceptor {
  24 +
  25 + private final PathMatcher pathMatcher = new AntPathMatcher();
  26 +
  27 + // GET 白名单
  28 + private String[] httpGetWhiteList = { "/user/login/**", "/user/currentUser","/dictionary/**", "/module/findByCurrentUser", "/gps/**", "/error/**" };
  29 +
  30 + // POST 白名单
  31 + private String[] httpPostWhiteList = {
  32 + "/control/upstream"
  33 + };
  34 +
  35 + @Autowired
  36 + HttpRecorder httpRecorder;
  37 +
  38 + @Override
  39 + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object arg2, Exception arg3)
  40 + throws Exception {
  41 +
  42 + }
  43 +
  44 + @Override
  45 + public void postHandle(HttpServletRequest request, HttpServletResponse response, Object arg2, ModelAndView arg3)
  46 + throws Exception {
  47 +
  48 + String method = request.getMethod(), path = request.getRequestURI();
  49 + // white list
  50 + String[] whiteList = method == "GET" ? httpGetWhiteList : httpPostWhiteList;
  51 +
  52 + if (!isWhiteURL(whiteList, path))
  53 + httpRecorder.record(request, (HandlerMethod)arg2);
  54 + }
  55 +
  56 + @Override
  57 + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
  58 +
  59 + return true;
  60 + }
  61 +
  62 + private boolean isWhiteURL(String[] whiteList, String currentURL) {
  63 + for (String whiteURL : whiteList) {
  64 + if (pathMatcher.match(whiteURL, currentURL)) {
  65 + return true;
  66 + }
  67 + }
  68 + return false;
  69 + }
  70 +}
src/main/java/com/bsth/oplog/http/HttpRecorder.java 0 → 100644
  1 +package com.bsth.oplog.http;
  2 +
  3 +import java.lang.reflect.Method;
  4 +import java.net.InetAddress;
  5 +import java.net.UnknownHostException;
  6 +
  7 +import javax.servlet.http.HttpServletRequest;
  8 +
  9 +import org.slf4j.Logger;
  10 +import org.slf4j.LoggerFactory;
  11 +import org.springframework.beans.factory.annotation.Autowired;
  12 +import org.springframework.stereotype.Component;
  13 +import org.springframework.web.method.HandlerMethod;
  14 +
  15 +import com.alibaba.fastjson.JSON;
  16 +import com.bsth.entity.sys.SysUser;
  17 +import com.bsth.oplog.Level;
  18 +import com.bsth.oplog.Log;
  19 +import com.bsth.oplog.db.DBHelper;
  20 +import com.bsth.security.util.SecurityUtils;
  21 +import com.bsth.util.IpUtils;
  22 +
  23 +/**
  24 + *
  25 + * @ClassName: HttpRecorder
  26 + * @Description: TODO(HTTP 日志记录器)
  27 + * @author PanZhao
  28 + * @date 2016年10月20日 下午12:56:56
  29 + *
  30 + */
  31 +@Component
  32 +public class HttpRecorder {
  33 +
  34 + Logger logger = LoggerFactory.getLogger(HttpRecorder.class);
  35 +
  36 + private final static int httpDataMaxLen = 500;
  37 +
  38 + @Autowired
  39 + DBHelper persistenceBuff;
  40 +
  41 + public void record(HttpServletRequest request, HandlerMethod method){
  42 + Log log = new Log();
  43 +
  44 + log.setType(request.getMethod().toUpperCase());
  45 + log.setLevel(Level.INFO.toString());
  46 + try {
  47 + log.setServerIp(InetAddress.getLocalHost().getHostAddress());
  48 + } catch (UnknownHostException e) {
  49 + e.printStackTrace();
  50 + }
  51 +
  52 + log.setPath(request.getRequestURI());
  53 + //Caller
  54 + Method refMethod = method.getMethod();
  55 + log.setCallerClass(refMethod.getDeclaringClass().getName());
  56 + log.setCallerMethod(refMethod.getName());
  57 +
  58 + //Primary Key
  59 + log.setTimestamp(System.currentTimeMillis());
  60 +
  61 + SysUser user = SecurityUtils.getCurrentUser();
  62 + if(user != null)
  63 + log.setUserName(user.getUserName());
  64 + //request
  65 + log.setClientIp(IpUtils.getIpAddr(request));
  66 + log.setHttpData(httpData(request));
  67 +
  68 + //save
  69 + persistenceBuff.save(log);
  70 + }
  71 +
  72 + private String httpData(HttpServletRequest request){
  73 + String rs = JSON.toJSONString(request.getParameterMap());
  74 +
  75 + if(rs.length() > httpDataMaxLen)
  76 + rs = rs.substring(0, httpDataMaxLen);
  77 +
  78 + return rs.replaceAll("\"", "‘");
  79 + }
  80 +}
src/main/java/com/bsth/oplog/normal/OpLogger.java 0 → 100644
  1 +package com.bsth.oplog.normal;
  2 +
  3 +import java.net.InetAddress;
  4 +import java.net.UnknownHostException;
  5 +
  6 +import javax.servlet.http.HttpServletRequest;
  7 +
  8 +import org.springframework.beans.factory.annotation.Autowired;
  9 +import org.springframework.stereotype.Component;
  10 +
  11 +import com.bsth.entity.sys.SysUser;
  12 +import com.bsth.oplog.Log;
  13 +import com.bsth.oplog.db.DBHelper;
  14 +import com.bsth.security.util.SecurityUtils;
  15 +import com.bsth.util.IpUtils;
  16 +
  17 +/**
  18 + *
  19 + * @ClassName: OpLogger
  20 + * @Description: TODO(常规的操作日志记录器)
  21 + * @author PanZhao
  22 + * @date 2016年10月21日 上午12:52:30
  23 + *
  24 + */
  25 +@Component
  26 +public class OpLogger {
  27 +
  28 + @Autowired
  29 + DBHelper dbHelper;
  30 +
  31 + public void info(String path){
  32 + save(getInitLog(path));
  33 + }
  34 +
  35 + public void info(String path, HttpServletRequest request){
  36 + Log log = getInitLog(path);
  37 +
  38 + if(request != null){
  39 + SysUser user = SecurityUtils.getCurrentUser();
  40 + if(user != null)
  41 + log.setUserName(user.getUserName());
  42 +
  43 + log.setClientIp(IpUtils.getIpAddr(request));
  44 + }
  45 +
  46 + save(log);
  47 + }
  48 +
  49 + public void info(String path, HttpServletRequest request, String description){
  50 +
  51 + }
  52 +
  53 + public static Log getInitLog(String path){
  54 + Log log = new Log();
  55 + log.setTimestamp(System.currentTimeMillis());
  56 + log.setPath(path);
  57 + log.setType("NORMAL");
  58 +
  59 + //get caller
  60 + StackTraceElement[] stack = (new Throwable()).getStackTrace();
  61 + //注意调用链的顺序,此时2为实际调用者
  62 + StackTraceElement caller = stack[2];
  63 +
  64 + log.setCallerClass(caller.getClassName());
  65 + log.setCallerMethod(caller.getMethodName());
  66 + log.setLineNumber(caller.getLineNumber());
  67 +
  68 + try {
  69 + log.setServerIp(InetAddress.getLocalHost().getHostAddress());
  70 + } catch (UnknownHostException e) {
  71 + e.printStackTrace();
  72 + }
  73 +
  74 + return log;
  75 + }
  76 +
  77 + public void save(Log log){
  78 + dbHelper.save(log);
  79 + }
  80 +}
src/main/java/com/bsth/repository/CarsRepository.java
1 package com.bsth.repository; 1 package com.bsth.repository;
2 2
  3 +import java.util.List;
  4 +
  5 +import org.springframework.data.jpa.repository.Query;
3 import org.springframework.stereotype.Repository; 6 import org.springframework.stereotype.Repository;
4 7
5 import com.bsth.entity.Cars; 8 import com.bsth.entity.Cars;
@@ -7,4 +10,6 @@ import com.bsth.entity.Cars; @@ -7,4 +10,6 @@ import com.bsth.entity.Cars;
7 @Repository 10 @Repository
8 public interface CarsRepository extends BaseRepository<Cars, Integer>{ 11 public interface CarsRepository extends BaseRepository<Cars, Integer>{
9 12
  13 + @Query(value="select s from Cars s where s.id in(select e.cl.id from CarConfigInfo e where e.xl.id = ?1) ")
  14 + List<Cars> findCarsByLineId(Integer lineId);
10 } 15 }
src/main/java/com/bsth/repository/PersonnelRepository.java
1 package com.bsth.repository; 1 package com.bsth.repository;
2 2
3 -import com.bsth.entity.Personnel;  
4 -  
5 import java.util.List; 3 import java.util.List;
6 4
  5 +import com.bsth.entity.Personnel;
7 import org.springframework.data.jpa.repository.Query; 6 import org.springframework.data.jpa.repository.Query;
8 import org.springframework.stereotype.Repository; 7 import org.springframework.stereotype.Repository;
9 8
@@ -12,4 +11,10 @@ import org.springframework.stereotype.Repository; @@ -12,4 +11,10 @@ import org.springframework.stereotype.Repository;
12 */ 11 */
13 @Repository 12 @Repository
14 public interface PersonnelRepository extends BaseRepository<Personnel, Integer> { 13 public interface PersonnelRepository extends BaseRepository<Personnel, Integer> {
  14 +
  15 + @Query(value="select s from Personnel s where s.id in(select e.jsy.id from EmployeeConfigInfo e where e.xl.id = ?1) ")
  16 + List<Personnel> findJsysByLineId(Integer lineId);
  17 +
  18 + @Query(value="select s from Personnel s where s.id in(select e.spy.id from EmployeeConfigInfo e where e.xl.id = ?1) ")
  19 + List<Personnel> findSpysByLineId(Integer lineId);
15 } 20 }
src/main/java/com/bsth/repository/SectionRepository.java
@@ -58,7 +58,7 @@ public interface SectionRepository extends BaseRepository&lt;Section, Integer&gt; { @@ -58,7 +58,7 @@ public interface SectionRepository extends BaseRepository&lt;Section, Integer&gt; {
58 58
59 "VALUES (?1 , ?2 , ?3 , ?4 , ?5 , "+ 59 "VALUES (?1 , ?2 , ?3 , ?4 , ?5 , "+
60 60
61 - "?6 , GEOMFROMTEXT(?7) , GEOMFROMTEXT(?8) , ?9 , ?10 ,"+ 61 + "?6 , ST_GeomFromText(?7) , ST_GeomFromText(?8) , ?9 , ?10 ,"+
62 62
63 "?11 , ?12 , ?13 , ?14 , ?15 ,"+ 63 "?11 , ?12 , ?13 , ?14 , ?15 ,"+
64 64
@@ -83,8 +83,8 @@ public interface SectionRepository extends BaseRepository&lt;Section, Integer&gt; { @@ -83,8 +83,8 @@ public interface SectionRepository extends BaseRepository&lt;Section, Integer&gt; {
83 @Transactional 83 @Transactional
84 @Modifying 84 @Modifying
85 @Query(value="UPDATE bsth_c_section SET " + 85 @Query(value="UPDATE bsth_c_section SET " +
86 - "gsection_vector = GEOMFROMTEXT(?2) , " +  
87 - "bsection_vector = GEOMFROMTEXT(?3)," + 86 + "gsection_vector = ST_GeomFromText(?2) , " +
  87 + "bsection_vector = ST_GeomFromText(?3)," +
88 "section_code = ?4," + 88 "section_code = ?4," +
89 "section_name = ?5," + 89 "section_name = ?5," +
90 "croses_road = ?6," + 90 "croses_road = ?6," +
src/main/java/com/bsth/repository/SectionRouteRepository.java
@@ -157,4 +157,9 @@ public interface SectionRouteRepository extends BaseRepository&lt;SectionRoute, Int @@ -157,4 +157,9 @@ public interface SectionRouteRepository extends BaseRepository&lt;SectionRoute, Int
157 " FROM bsth_c_sectionroute c " + 157 " FROM bsth_c_sectionroute c " +
158 " LEFT JOIN bsth_c_section s on c.section = s.id where c.line = ?1 and c.directions = ?2", nativeQuery=true) 158 " LEFT JOIN bsth_c_section s on c.section = s.id where c.line = ?1 and c.directions = ?2", nativeQuery=true)
159 List<Object[]> sectionRouteVector(Integer lineId,Integer directions); 159 List<Object[]> sectionRouteVector(Integer lineId,Integer directions);
  160 +
  161 + @Transactional
  162 + @Modifying
  163 + @Query(value="UPDATE bsth_c_sectionroute set is_roade_speed = ?1 where line= ?2 and directions=?3 ",nativeQuery = true)
  164 + void isRoadSpeedUpd(Integer isR,Integer line,Integer directions);
160 } 165 }
src/main/java/com/bsth/repository/SectionSpeedRepository.java 0 → 100644
  1 +package com.bsth.repository;
  2 +
  3 +import java.util.List;
  4 +
  5 +import org.springframework.data.jpa.repository.Modifying;
  6 +import org.springframework.data.jpa.repository.Query;
  7 +import org.springframework.stereotype.Repository;
  8 +import org.springframework.transaction.annotation.Transactional;
  9 +
  10 +import com.bsth.entity.SectionSpeed;
  11 +
  12 +/**
  13 + * @description TODO(路段限速持久层)
  14 + *
  15 + * @author Administrator
  16 + *
  17 + * @date 2016年9月21日 13:31:25
  18 + */
  19 +@Repository
  20 +public interface SectionSpeedRepository extends BaseRepository<SectionSpeed, Integer>{
  21 +
  22 +
  23 + @Transactional
  24 + @Modifying
  25 + @Query(value="INSERT INTO bsth_c_sectionspeed (" +
  26 + "line , line_code , directions , `code` , s_name,road,road_code ) " +
  27 + " VALUES (" +
  28 + "?1 , ?2 , ?3 , ?4 , ?5,?6,?7)", nativeQuery=true)
  29 + /** @description TODO(路段限速保存) @param (<line:线路ID;versions:版本号;destroy:是否撤销;directions:方向;sValue:限速;code:路段序号> )*/
  30 + /** @param (<lineCode:线路编码;sName:路段名称;sType:路段类型;bLineStr:路段矢量百度坐标;gLineStr:路段矢量WGS坐标;descriptions:说明>)*/
  31 + void add(Integer line,String lineCode,Integer directions,Integer code,String sName,Integer road,String road_code);
  32 +
  33 + @Transactional
  34 + @Modifying
  35 + @Query(value="INSERT INTO bsth_c_road("+
  36 + "broad_vector,groad_vector,road_code,road_name,speed,id)"+
  37 + " VALUES(" +
  38 + "ST_GeomFromText(?1),ST_GeomFromText(?2),?3,?4,?5,?6)", nativeQuery=true)
  39 + void insertRoad(String broad_vector,String groad_vector,String road_code,String road_name,Double speed,Integer id);
  40 +
  41 + @Query(value="SELECT b.`name` as linename, a.speedid, a.bLineStr ,a.line_code,a.s_name,a.speed ,a.line,a.codenumb,a.road,a.directions FROM ("+
  42 + " SELECT p.id AS speedid,p.line,p.line_code,p.road,p.directions,p.`code` AS codenumb,p.s_name,ST_AsText(r.broad_vector) AS bLineStr,r.speed FROM ("+
  43 + " SELECT s.id,s.line,s.line_code,s.road,s.directions,s.`code`,s.s_name FROM bsth_c_sectionspeed s where s.line =?1 and s.line_code=?2 and s.directions=?3) p LEFT JOIN bsth_c_road r ON p.road = r.id) a "+
  44 + " LEFT JOIN bsth_c_line b ON a.line = b.id ORDER BY codenumb asc",nativeQuery = true)
  45 + List<Object[]> getSectionSpeedInfo(int lineId, String lineCode, int directions);
  46 +
  47 + /** 获取路网数据 */
  48 + @Query(value="SELECT ST_AsText(g.bdjw) as SHAPE , id as id ,ldbh,mc FROM jjwgps_t_gjldb g where g.bdjw is not null ",nativeQuery = true)
  49 + List<Object[]> getroadNet();
  50 +
  51 + /** */
  52 + @Query(value="SELECT ST_Contains(ST_Buffer(ST_GeomFromText(?1),0.0005),ST_GeomFromText(?2)) AS result",nativeQuery = true)
  53 + int ST_Contains(String g1,String g2);
  54 +
  55 +
  56 + @Query(value="SELECT id FROM bsth_c_road r where r.road_code = ?1",nativeQuery = true)
  57 + Integer validateRoade(String raodCode);
  58 +
  59 + @Transactional
  60 + @Modifying
  61 + @Query(value="UPDATE bsth_c_sectionspeed set `code` =?1 where id=?2",nativeQuery = true)
  62 + void roadUpdCode(Integer code,Integer sSpeedId);
  63 +
  64 + @Transactional
  65 + @Modifying
  66 + @Query(value="UPDATE bsth_c_road set road_name = ?1 ,speed =?2 where id= ?3",nativeQuery = true)
  67 + void sSpeedUpd(String roadName,Double speed ,Integer id);
  68 +
  69 +}
src/main/java/com/bsth/repository/StationRepository.java
@@ -61,7 +61,7 @@ public interface StationRepository extends BaseRepository&lt;Station, Integer&gt; { @@ -61,7 +61,7 @@ public interface StationRepository extends BaseRepository&lt;Station, Integer&gt; {
61 "create_by,update_by,id) " + 61 "create_by,update_by,id) " +
62 " VALUES(" + 62 " VALUES(" +
63 "?1 , ?2 , ?3 , ?4 , ?5," + 63 "?1 , ?2 , ?3 , ?4 , ?5," +
64 - "?6 , ?7 , ?8 , ?9 , GeomFromText(?10),GeomFromText(?11)," + 64 + "?6 , ?7 , ?8 , ?9 , ST_GeomFromText(?10),ST_GeomFromText(?11)," +
65 "?12 ,?13, ?14, ?15, ?16," + 65 "?12 ,?13, ?14, ?15, ?16," +
66 "?17,?18,?19)", nativeQuery=true) 66 "?17,?18,?19)", nativeQuery=true)
67 public void stationSave(String stationCode,String stationName,String roadCoding,String dbType,String bJwpoints, 67 public void stationSave(String stationCode,String stationName,String roadCoding,String dbType,String bJwpoints,
@@ -93,8 +93,8 @@ public interface StationRepository extends BaseRepository&lt;Station, Integer&gt; { @@ -93,8 +93,8 @@ public interface StationRepository extends BaseRepository&lt;Station, Integer&gt; {
93 "g_laty = ?7 , " + 93 "g_laty = ?7 , " +
94 "x = ?8 , " + 94 "x = ?8 , " +
95 "y = ?9 , " + 95 "y = ?9 , " +
96 - "b_polygon_grid = GeomFromText(?10) , " +  
97 - "g_polygon_grid = GeomFromText(?11) , " + 96 + "b_polygon_grid = ST_GeomFromText(?10) , " +
  97 + "g_polygon_grid = ST_GeomFromText(?11) , " +
98 "destroy = ?12 , " + 98 "destroy = ?12 , " +
99 "radius = ?13 , " + 99 "radius = ?13 , " +
100 "shapes_type = ?14 , " + 100 "shapes_type = ?14 , " +
src/main/java/com/bsth/repository/oil/YlbRepository.java
1 package com.bsth.repository.oil; 1 package com.bsth.repository.oil;
2 2
  3 +import java.util.Date;
3 import java.util.List; 4 import java.util.List;
  5 +import java.util.Map;
4 6
5 import org.springframework.data.jpa.repository.Modifying; 7 import org.springframework.data.jpa.repository.Modifying;
6 import org.springframework.data.jpa.repository.Query; 8 import org.springframework.data.jpa.repository.Query;
@@ -19,7 +21,9 @@ public interface YlbRepository extends BaseRepository&lt;Ylb, Integer&gt;{ @@ -19,7 +21,9 @@ public interface YlbRepository extends BaseRepository&lt;Ylb, Integer&gt;{
19 */ 21 */
20 @Transactional 22 @Transactional
21 @Modifying 23 @Modifying
22 - @Query(value="SELECT * FROM bsth_c_ylb where to_days(?)-to_days(rq)=1",nativeQuery=true) 24 + @Query(value="SELECT a.* FROM bsth_c_ylb a where to_days(?1)-to_days(a.rq)=1"
  25 + + " and jcsx=(select max(b.jcsx) from bsth_c_ylb b where a.nbbm=b.nbbm and "
  26 + + " to_days(?1)-to_days(b.rq)=1 ) group by nbbm",nativeQuery=true)
23 List<Ylb> obtainYlbefore(String rq); 27 List<Ylb> obtainYlbefore(String rq);
24 28
25 /** 29 /**
@@ -31,4 +35,15 @@ public interface YlbRepository extends BaseRepository&lt;Ylb, Integer&gt;{ @@ -31,4 +35,15 @@ public interface YlbRepository extends BaseRepository&lt;Ylb, Integer&gt;{
31 @Modifying 35 @Modifying
32 @Query(value="SELECT * FROM bsth_c_ylb where to_days(?)=to_days(rq)",nativeQuery=true) 36 @Query(value="SELECT * FROM bsth_c_ylb where to_days(?)=to_days(rq)",nativeQuery=true)
33 List<Ylb> obtainYl(String rq); 37 List<Ylb> obtainYl(String rq);
  38 +
  39 +
  40 + /**
  41 + * 查询当天总的加注量和总里程
  42 + * @param rq
  43 + * @return
  44 + */
  45 + @Transactional
  46 + @Modifying
  47 + @Query(value="select sum(jzl) as jzl,sum(zlc) as zlc from bsth_c_ylb where nbbm=?1 and rq=?2",nativeQuery=true)
  48 + List<Object[]> sumLcYl(String nbbm,Date rq);
34 } 49 }
src/main/java/com/bsth/repository/oil/YlxxbRepository.java
@@ -21,4 +21,10 @@ public interface YlxxbRepository extends BaseRepository&lt;Ylxxb, Integer&gt;{ @@ -21,4 +21,10 @@ public interface YlxxbRepository extends BaseRepository&lt;Ylxxb, Integer&gt;{
21 @Modifying 21 @Modifying
22 @Query(value="SELECT * FROM bsth_c_ylxxb where to_days(?)=to_days(yyrq)",nativeQuery=true) 22 @Query(value="SELECT * FROM bsth_c_ylxxb where to_days(?)=to_days(yyrq)",nativeQuery=true)
23 List<Ylxxb> obtainYlxx(String rq); 23 List<Ylxxb> obtainYlxx(String rq);
  24 +
  25 + @Transactional
  26 + @Modifying
  27 + @Query(value="SELECT * FROM bsth_c_ylxxb where to_days(?1)=to_days(yyrq) and nbbm =?2 and jylx=1",nativeQuery=true)
  28 + List<Ylxxb> obtainYlxx2(String rq,String nbbm);
  29 +
24 } 30 }
src/main/java/com/bsth/repository/realcontrol/ScheduleRealInfoRepository.java
@@ -20,7 +20,7 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI @@ -20,7 +20,7 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI
20 List<ScheduleRealInfo> findByLines(List<String> lines); 20 List<ScheduleRealInfo> findByLines(List<String> lines);
21 21
22 22
23 - @Query(value="select s from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 GROUP BY s.jGh,s.clZbh,s.lpName order by (lpName+1)") 23 + @Query(value="select s from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 GROUP BY s.id,s.jGh,s.clZbh,s.lpName order by (lpName+1)")
24 List<ScheduleRealInfo> queryUserInfo(String line,String date); 24 List<ScheduleRealInfo> queryUserInfo(String line,String date);
25 25
26 @Query(value="select min(s.id), s.jGh,s.clZbh,s.lpName,s.jName from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 GROUP BY s.jGh,s.clZbh,s.lpName ,s.jName order by (lpName+1)") 26 @Query(value="select min(s.id), s.jGh,s.clZbh,s.lpName,s.jName from ScheduleRealInfo s where s.xlBm = ?1 and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 GROUP BY s.jGh,s.clZbh,s.lpName ,s.jName order by (lpName+1)")
@@ -83,4 +83,16 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI @@ -83,4 +83,16 @@ public interface ScheduleRealInfoRepository extends BaseRepository&lt;ScheduleRealI
83 83
84 @Query(value="select new map(s.scheduleDate as scheduleDate,s.xlBm as xlBm,s.clZbh as clZbh,s.jGh as jGh) from ScheduleRealInfo s where (s.xlBm = ?1 or s.xlBm is not null) and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 GROUP BY xlBm,clZbh,jGh ORDER BY xlBm,clZbh,realExecDate,fcsjActual") 84 @Query(value="select new map(s.scheduleDate as scheduleDate,s.xlBm as xlBm,s.clZbh as clZbh,s.jGh as jGh) from ScheduleRealInfo s where (s.xlBm = ?1 or s.xlBm is not null) and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 GROUP BY xlBm,clZbh,jGh ORDER BY xlBm,clZbh,realExecDate,fcsjActual")
85 List<Map<String,Object>> yesterdayDataList(String line,String date); 85 List<Map<String,Object>> yesterdayDataList(String line,String date);
  86 +
  87 + @Query(value="select s from ScheduleRealInfo s where DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?1 ORDER BY xlBm,lpName,clZbh,xlDir")
  88 + List<ScheduleRealInfo> setLD(String date);
  89 +
  90 + @Query(value="select s from ScheduleRealInfo s where DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?1 GROUP BY xlBm,lpName,clZbh ORDER BY xlBm,lpName,clZbh")
  91 + List<ScheduleRealInfo> setLDGroup(String date);
  92 +
  93 + @Query(value="select s from ScheduleRealInfo s where DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?1 GROUP BY xlBm,clZbh ORDER BY xlBm,clZbh")
  94 + List<ScheduleRealInfo> setLCYHGroup(String date);
  95 +
  96 + @Query(value="select s from ScheduleRealInfo s where DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?1 GROUP BY xlBm ORDER BY xlBm")
  97 + List<ScheduleRealInfo> setDDRBGroup(String date);
86 } 98 }
src/main/java/com/bsth/repository/schedule/GuideboardInfoRepository.java
1 package com.bsth.repository.schedule; 1 package com.bsth.repository.schedule;
2 2
3 import java.util.List; 3 import java.util.List;
  4 +import java.util.Map;
4 5
5 import com.bsth.entity.schedule.EmployeeConfigInfo; 6 import com.bsth.entity.schedule.EmployeeConfigInfo;
6 import com.bsth.entity.schedule.GuideboardInfo; 7 import com.bsth.entity.schedule.GuideboardInfo;
@@ -29,4 +30,11 @@ public interface GuideboardInfoRepository extends BaseRepository&lt;GuideboardInfo, @@ -29,4 +30,11 @@ public interface GuideboardInfoRepository extends BaseRepository&lt;GuideboardInfo,
29 30
30 @Query(value = " SELECT g FROM GuideboardInfo g where g.lpName like ?1") 31 @Query(value = " SELECT g FROM GuideboardInfo g where g.lpName like ?1")
31 List<GuideboardInfo> findLpName(String lpName); 32 List<GuideboardInfo> findLpName(String lpName);
  33 +
  34 + @Query(value = "" +
  35 + "select new map(td.lp.id as lpId, td.lp.lpName as lpName) " +
  36 + "from TTInfoDetail td " +
  37 + "where td.ttinfo.id=?1 " +
  38 + "group by td.ttinfo.id, td.lp.id, td.lp.lpName")
  39 + List<Map<String, Object>> findLpName(Long ttid);
32 } 40 }
src/main/java/com/bsth/repository/schedule/RerunRuleRepository.java 0 → 100644
  1 +package com.bsth.repository.schedule;
  2 +
  3 +import com.bsth.entity.schedule.rule.RerunRule;
  4 +import com.bsth.entity.schedule.rule.ScheduleRule1Flat;
  5 +import com.bsth.repository.BaseRepository;
  6 +import org.springframework.data.domain.Page;
  7 +import org.springframework.data.domain.Pageable;
  8 +import org.springframework.data.jpa.domain.Specification;
  9 +import org.springframework.data.jpa.repository.EntityGraph;
  10 +import org.springframework.data.jpa.repository.Query;
  11 +import org.springframework.stereotype.Repository;
  12 +
  13 +/**
  14 + * Created by xu on 16/10/18.
  15 + */
  16 +@Repository
  17 +public interface RerunRuleRepository extends BaseRepository<RerunRule, Long> {
  18 + @EntityGraph(value = "dylp", type = EntityGraph.EntityGraphType.FETCH)
  19 + @Override
  20 + Page<RerunRule> findAll(Specification<RerunRule> spec, Pageable pageable);
  21 +
  22 + @EntityGraph(value = "dylp", type = EntityGraph.EntityGraphType.FETCH)
  23 + @Query("select cc from RerunRule cc where cc.id=?1")
  24 + RerunRule findOneExtend(Long aLong);
  25 +}
src/main/java/com/bsth/repository/schedule/SchedulePlanInfoRepository.java
1 package com.bsth.repository.schedule; 1 package com.bsth.repository.schedule;
2 2
  3 +import com.bsth.entity.Cars;
3 import com.bsth.entity.schedule.SchedulePlanInfo; 4 import com.bsth.entity.schedule.SchedulePlanInfo;
4 import com.bsth.repository.BaseRepository; 5 import com.bsth.repository.BaseRepository;
5 6
@@ -24,8 +25,7 @@ public interface SchedulePlanInfoRepository extends BaseRepository&lt;SchedulePlanI @@ -24,8 +25,7 @@ public interface SchedulePlanInfoRepository extends BaseRepository&lt;SchedulePlanI
24 List<SchedulePlanInfo> findByDate(Date date); 25 List<SchedulePlanInfo> findByDate(Date date);
25 26
26 Long deleteByXlAndScheduleDateGreaterThanEqualAndScheduleDateLessThanEqual(Integer xlid, Date startDate, Date endDate); 27 Long deleteByXlAndScheduleDateGreaterThanEqualAndScheduleDateLessThanEqual(Integer xlid, Date startDate, Date endDate);
27 -  
28 - 28 +
29 @Query(value = " select " + 29 @Query(value = " select " +
30 "xl as xlId, " + 30 "xl as xlId, " +
31 "xl_name as xlName, " + 31 "xl_name as xlName, " +
@@ -45,7 +45,7 @@ public interface SchedulePlanInfoRepository extends BaseRepository&lt;SchedulePlanI @@ -45,7 +45,7 @@ public interface SchedulePlanInfoRepository extends BaseRepository&lt;SchedulePlanI
45 "where bc_type = 'out' and " + 45 "where bc_type = 'out' and " +
46 "xl = ?1 and " + 46 "xl = ?1 and " +
47 "schedule_date = ?2 " + 47 "schedule_date = ?2 " +
48 - "group by xl_name, schedule_date, lp_name " + 48 + "group by xl_name, schedule_date, lp, lp_name, cl, cl_zbh " +
49 "order by xl_name, schedule_date, lp ", nativeQuery = true) 49 "order by xl_name, schedule_date, lp ", nativeQuery = true)
50 List<Object[]> findGroupInfo(Integer xlid, Date scheduleDate); 50 List<Object[]> findGroupInfo(Integer xlid, Date scheduleDate);
51 51
@@ -117,5 +117,8 @@ public interface SchedulePlanInfoRepository extends BaseRepository&lt;SchedulePlanI @@ -117,5 +117,8 @@ public interface SchedulePlanInfoRepository extends BaseRepository&lt;SchedulePlanI
117 @Param("p5") Date scheduleDate, 117 @Param("p5") Date scheduleDate,
118 @Param("p6") String lpName, 118 @Param("p6") String lpName,
119 @Param("p7") Integer spyId_src); 119 @Param("p7") Integer spyId_src);
  120 +
  121 + @Query(value="select s from SchedulePlanInfo s where DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?1 order by s.xlBm,clZbh,lp,xlDir")
  122 + List<SchedulePlanInfo> findLineScheduleBc(String scheduleDate);
120 123
121 } 124 }
src/main/java/com/bsth/repository/schedule/TTInfoDetailRepository.java
@@ -35,4 +35,7 @@ public interface TTInfoDetailRepository extends BaseRepository&lt;TTInfoDetail, Lon @@ -35,4 +35,7 @@ public interface TTInfoDetailRepository extends BaseRepository&lt;TTInfoDetail, Lon
35 @Query(value = "select max(tt.fcno) as mx from bsth_c_s_ttinfo_detail tt where tt.xl =?1 and tt.ttinfo =?2", nativeQuery = true) 35 @Query(value = "select max(tt.fcno) as mx from bsth_c_s_ttinfo_detail tt where tt.xl =?1 and tt.ttinfo =?2", nativeQuery = true)
36 Long findMaxFcno(Integer xlid, Long ttinfoid); 36 Long findMaxFcno(Integer xlid, Long ttinfoid);
37 37
  38 + @Query(value = "select tt from TTInfoDetail tt where tt.xl.id = ?1 and tt.ttinfo.id = ?2 and tt.lp.id = ?3 order by tt.fcno asc")
  39 + List<TTInfoDetail> findBcdetails(Integer xlId, Long ttinfoId, Long lpId);
  40 +
38 } 41 }
src/main/java/com/bsth/security/SecurityMetadataSourceService.java
@@ -66,8 +66,6 @@ public class SecurityMetadataSourceService implements @@ -66,8 +66,6 @@ public class SecurityMetadataSourceService implements
66 String method = invocation.getRequest().getMethod(); 66 String method = invocation.getRequest().getMethod();
67 String url = method.toLowerCase() + "#" + invocation.getRequestUrl(); 67 String url = method.toLowerCase() + "#" + invocation.getRequestUrl();
68 68
69 - System.out.println(url);  
70 -  
71 int symIndex = url.indexOf("?"); 69 int symIndex = url.indexOf("?");
72 if(symIndex != -1){ 70 if(symIndex != -1){
73 url = url.substring(0, symIndex); 71 url = url.substring(0, symIndex);
src/main/java/com/bsth/service/SectionSpeedService.java 0 → 100644
  1 +package com.bsth.service;
  2 +
  3 +import java.util.List;
  4 +import java.util.Map;
  5 +
  6 +import com.bsth.entity.SectionSpeed;
  7 +
  8 +/**
  9 + * Created by xu on 16/5/31.
  10 + */
  11 +public interface SectionSpeedService extends BaseService<SectionSpeed, Integer> {
  12 +
  13 + /** @description TODO(新增路段限速) @return map ({status:SUCCESS}成功 或者 {status:ERROR}失败) @param map (路段限速信息)*/
  14 + Map<String, Object> add(Map<String, Object> map);
  15 +
  16 + /** @description TODO(修改路段) @return map ({status:SUCCESS}成功 或者 {status:ERROR}失败) @param map (路段限速信息)*/
  17 + Map<String, Object> roadUpd(Map<String, Object> map);
  18 +
  19 + List<Map<String, Object>> getSectionSpeedInfo(Map<String, Object> map);
  20 +
  21 + /** 解析路段 */
  22 + List<Map<String, Object>> analyticSection(Map<String,Object> map);
  23 +
  24 +}
src/main/java/com/bsth/service/TrafficManageService.java
@@ -20,10 +20,54 @@ import com.bsth.entity.Line; @@ -20,10 +20,54 @@ import com.bsth.entity.Line;
20 public interface TrafficManageService { 20 public interface TrafficManageService {
21 21
22 /** 22 /**
23 - * 获取线路编码 23 + * 上传线路信息
24 * 24 *
25 - * @return long <lineCode:线路编码> 25 + * @return 调用接口返回信息
26 */ 26 */
27 String setXL(); 27 String setXL();
28 28
  29 + /**
  30 + * 上传车辆信息
  31 + *
  32 + * @return 调用接口返回信息
  33 + */
  34 + String setCL();
  35 +
  36 + /**
  37 + * 上传司机信息
  38 + * @return 调用接口返回信息
  39 + */
  40 + String setSJ();
  41 +
  42 + /**
  43 + * 上传超速数据
  44 + *
  45 + * @return 调用接口返回信息
  46 + */
  47 + String setCS();
  48 +
  49 + /**
  50 + * 上传线路班次时刻表数据
  51 + *
  52 + * @return 调用接口返回信息
  53 + */
  54 + String setSKB(String ids);
  55 +
  56 + /**
  57 + * 线路人员车辆配置信息
  58 + * @return 调用接口返回信息
  59 + */
  60 + String setXLPC();
  61 +
  62 + /**
  63 + * 线路计划班次表
  64 + * @return 调用接口返回信息
  65 + */
  66 + String setJHBC();
  67 +
  68 + String setLD();
  69 +
  70 + String setLCYH();
  71 +
  72 + String setDDRB();
29 } 73 }
src/main/java/com/bsth/service/directive/DirectiveService.java
@@ -7,6 +7,7 @@ import java.util.Map; @@ -7,6 +7,7 @@ import java.util.Map;
7 import com.bsth.entity.directive.D60; 7 import com.bsth.entity.directive.D60;
8 import com.bsth.entity.directive.D64; 8 import com.bsth.entity.directive.D64;
9 import com.bsth.entity.directive.D80; 9 import com.bsth.entity.directive.D80;
  10 +import com.bsth.entity.directive.DC0_A3;
10 import com.bsth.entity.realcontrol.ScheduleRealInfo; 11 import com.bsth.entity.realcontrol.ScheduleRealInfo;
11 import com.bsth.service.BaseService; 12 import com.bsth.service.BaseService;
12 13
@@ -82,4 +83,10 @@ public interface DirectiveService extends BaseService&lt;D60, Integer&gt;{ @@ -82,4 +83,10 @@ public interface DirectiveService extends BaseService&lt;D60, Integer&gt;{
82 Map<String, Object> findAll80(Map<String, Object> map, int page, int size); 83 Map<String, Object> findAll80(Map<String, Object> map, int page, int size);
83 84
84 D64 save64(D64 d64); 85 D64 save64(D64 d64);
  86 +
  87 + int sendC0A4(String nbbm);
  88 +
  89 + int sendC0A3(DC0_A3 c0a4);
  90 +
  91 + int sendC0A5(String json);
85 } 92 }
src/main/java/com/bsth/service/directive/DirectiveServiceImpl.java
@@ -30,6 +30,7 @@ import com.bsth.data.schedule.DayOfSchedule; @@ -30,6 +30,7 @@ import com.bsth.data.schedule.DayOfSchedule;
30 import com.bsth.entity.directive.D60; 30 import com.bsth.entity.directive.D60;
31 import com.bsth.entity.directive.D64; 31 import com.bsth.entity.directive.D64;
32 import com.bsth.entity.directive.D80; 32 import com.bsth.entity.directive.D80;
  33 +import com.bsth.entity.directive.DC0_A3;
33 import com.bsth.entity.directive.Directive; 34 import com.bsth.entity.directive.Directive;
34 import com.bsth.entity.realcontrol.ScheduleRealInfo; 35 import com.bsth.entity.realcontrol.ScheduleRealInfo;
35 import com.bsth.entity.sys.SysUser; 36 import com.bsth.entity.sys.SysUser;
@@ -273,8 +274,10 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;D60, Integer&gt; implemen @@ -273,8 +274,10 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;D60, Integer&gt; implemen
273 return null; 274 return null;
274 } 275 }
275 } 276 }
276 - upDown = gpsData.getUpDown();  
277 - state = gpsData.getState(); 277 + else{
  278 + upDown = gpsData.getUpDown();
  279 + state = gpsData.getState();
  280 + }
278 } else { 281 } else {
279 upDown = Integer.parseInt(sch.getXlDir()); 282 upDown = Integer.parseInt(sch.getXlDir());
280 state = 0; 283 state = 0;
@@ -470,4 +473,32 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;D60, Integer&gt; implemen @@ -470,4 +473,32 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;D60, Integer&gt; implemen
470 public D64 save64(D64 d64) { 473 public D64 save64(D64 d64) {
471 return d64Repository.save(d64); 474 return d64Repository.save(d64);
472 } 475 }
  476 +
  477 + @Override
  478 + public int sendC0A4(String nbbm) {
  479 + String deviceId = BasicData.deviceId2NbbmMap.inverse().get(nbbm);
  480 +
  481 + Map<String, Object> c0a4 = new HashMap<>();
  482 + c0a4.put("deviceId", deviceId);
  483 + c0a4.put("timestamp", System.currentTimeMillis());
  484 + c0a4.put("operCode", (short)0xC0);
  485 +
  486 + Map<String, Object> data = new HashMap<>();
  487 + data.put("deviceId", deviceId);
  488 + data.put("operCode2", (short)0xA4);
  489 + c0a4.put("data", data);
  490 +
  491 + return GatewayHttpUtils.postJson(JSON.toJSONString(c0a4));
  492 + }
  493 +
  494 + @Override
  495 + public int sendC0A3(DC0_A3 c0a3) {
  496 + GatewayHttpUtils.postJson(JSON.toJSONString(c0a3));
  497 + return 0;
  498 + }
  499 +
  500 + @Override
  501 + public int sendC0A5(String json) {
  502 + return GatewayHttpUtils.postJson(json);
  503 + }
473 } 504 }
src/main/java/com/bsth/service/impl/CarDeviceServiceImpl.java
1 package com.bsth.service.impl; 1 package com.bsth.service.impl;
2 2
  3 +import com.bsth.common.ResponseCode;
3 import com.bsth.entity.CarDevice; 4 import com.bsth.entity.CarDevice;
  5 +import com.bsth.entity.Cars;
  6 +import com.bsth.entity.schedule.rule.RerunRule;
  7 +import com.bsth.repository.CarDeviceRepository;
  8 +import com.bsth.repository.CarsRepository;
4 import com.bsth.service.CarDeviceService; 9 import com.bsth.service.CarDeviceService;
  10 +import org.springframework.beans.factory.annotation.Autowired;
5 import org.springframework.stereotype.Service; 11 import org.springframework.stereotype.Service;
6 12
  13 +import javax.transaction.Transactional;
  14 +import java.util.HashMap;
  15 +import java.util.Map;
  16 +
7 /** 17 /**
8 * Created by xu on 16/6/15. 18 * Created by xu on 16/6/15.
9 */ 19 */
10 @Service 20 @Service
11 public class CarDeviceServiceImpl extends BaseServiceImpl<CarDevice, Long> implements CarDeviceService { 21 public class CarDeviceServiceImpl extends BaseServiceImpl<CarDevice, Long> implements CarDeviceService {
  22 + @Autowired
  23 + private CarDeviceRepository carDeviceRepository;
  24 + @Autowired
  25 + private CarsRepository carsRepository;
  26 +
  27 + @Transactional
  28 + @Override
  29 + public Map<String, Object> save(CarDevice carDevice) {
  30 + Map<String, Object> map = new HashMap<>();
  31 +
  32 + try {
  33 + // 查找对应的车辆基础信息,更新设备编号数据
  34 + Cars cars = carsRepository.findOne(carDevice.getCl());
  35 + cars.setEquipmentCode(carDevice.getNewDeviceNo());
  36 + // 保存车辆设备信息
  37 + carDeviceRepository.save(carDevice);
  38 + map.put("status", ResponseCode.SUCCESS);
  39 + map.put("t", carDevice);
  40 + } catch(Exception e) {
  41 + map.put("status", ResponseCode.ERROR);
  42 + logger.error("save erro.", e);
  43 + }
  44 +
  45 + return map;
  46 + }
  47 +
  48 + @Transactional
  49 + @Override
  50 + public Map<String, Object> delete(Long aLong) {
  51 + // 获取作废数据
  52 + CarDevice carDevice = carDeviceRepository.findOne(aLong);
  53 +
  54 + toogleIsCancel(carDevice);
  55 +
  56 + Map<String, Object> map = new HashMap<>();
  57 + map.put("status", ResponseCode.SUCCESS);
  58 +
  59 + return map;
  60 + }
  61 +
  62 + /**
  63 + * 撤销/作废切换。
  64 + * @param rerunRule
  65 + */
  66 + private void toogleIsCancel(CarDevice carDevice) {
  67 + boolean isCancel = carDevice.getIsCancel();
  68 + if (isCancel) {
  69 + carDevice.setIsCancel(false);
  70 + } else {
  71 + carDevice.setIsCancel(true);
  72 + }
  73 + }
12 } 74 }
src/main/java/com/bsth/service/impl/SectionServiceImpl.java
@@ -181,10 +181,14 @@ public class SectionServiceImpl extends BaseServiceImpl&lt;Section, Integer&gt; implem @@ -181,10 +181,14 @@ public class SectionServiceImpl extends BaseServiceImpl&lt;Section, Integer&gt; implem
181 Integer version = map.get("versions").equals("") ? null : Integer.valueOf(map.get("versions").toString()); 181 Integer version = map.get("versions").equals("") ? null : Integer.valueOf(map.get("versions").toString());
182 182
183 // WGS坐标点集合 183 // WGS坐标点集合
184 - String gsectionVector = "LINESTRING(" + sectionsWJPpoints +")"; 184 + String gsectionVector = null;
  185 + if(!sectionsWJPpoints.equals(""))
  186 + gsectionVector = "LINESTRING(" + sectionsWJPpoints +")";
185 187
186 // 原坐标点集合 188 // 原坐标点集合
187 - String bsectionVectorS = "LINESTRING(" + sectionsBpoints + ")"; 189 + String bsectionVectorS = null;
  190 + if(!sectionsBpoints.equals(""))
  191 + bsectionVectorS = "LINESTRING(" + sectionsBpoints + ")";
188 192
189 Integer createBy = map.get("createBy").equals("") ? null : Integer.valueOf(map.get("createBy").toString()); 193 Integer createBy = map.get("createBy").equals("") ? null : Integer.valueOf(map.get("createBy").toString());
190 194