Commit 8dfecfaef9ebf31bd313fc8f10c1ea70f4697875

Authored by 廖磊
2 parents e38a4bf2 a917eba4

Merge branch 'pudong' of http://222.66.0.204:8090/panzhaov5/bsth_control

into pudong
Showing 28 changed files with 143 additions and 58 deletions
src/main/java/com/bsth/controller/realcontrol/anomalyCheckController.java renamed to src/main/java/com/bsth/controller/realcontrol/AdminUtilsController.java
1 package com.bsth.controller.realcontrol; 1 package com.bsth.controller.realcontrol;
2 2
  3 +import com.bsth.data.directive.DayOfDirectives;
3 import com.bsth.data.gpsdata_v2.cache.GeoCacheData; 4 import com.bsth.data.gpsdata_v2.cache.GeoCacheData;
4 import com.bsth.data.gpsdata_v2.thread.GpsDataLoaderThread; 5 import com.bsth.data.gpsdata_v2.thread.GpsDataLoaderThread;
5 import com.bsth.data.msg_queue.DirectivePushQueue; 6 import com.bsth.data.msg_queue.DirectivePushQueue;
6 import com.bsth.data.msg_queue.WebSocketPushQueue; 7 import com.bsth.data.msg_queue.WebSocketPushQueue;
7 import com.bsth.data.schedule.DayOfSchedule; 8 import com.bsth.data.schedule.DayOfSchedule;
8 import com.bsth.entity.realcontrol.ScheduleRealInfo; 9 import com.bsth.entity.realcontrol.ScheduleRealInfo;
  10 +import com.bsth.websocket.handler.SendUtils;
9 import org.slf4j.Logger; 11 import org.slf4j.Logger;
10 import org.slf4j.LoggerFactory; 12 import org.slf4j.LoggerFactory;
11 import org.springframework.beans.factory.annotation.Autowired; 13 import org.springframework.beans.factory.annotation.Autowired;
12 import org.springframework.web.bind.annotation.RequestMapping; 14 import org.springframework.web.bind.annotation.RequestMapping;
13 -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
@@ -22,8 +23,8 @@ import java.util.Map; @@ -22,8 +23,8 @@ import java.util.Map;
22 * Created by panzhao on 2017/4/14. 23 * Created by panzhao on 2017/4/14.
23 */ 24 */
24 @RestController 25 @RestController
25 -@RequestMapping("anomalyCheck")  
26 -public class anomalyCheckController { 26 +@RequestMapping("adminUtils")
  27 +public class AdminUtilsController {
27 28
28 29
29 Logger logger = LoggerFactory.getLogger(this.getClass()); 30 Logger logger = LoggerFactory.getLogger(this.getClass());
@@ -34,10 +35,16 @@ public class anomalyCheckController { @@ -34,10 +35,16 @@ public class anomalyCheckController {
34 @Autowired 35 @Autowired
35 GeoCacheData geoCacheData; 36 GeoCacheData geoCacheData;
36 37
  38 + @Autowired
  39 + DayOfDirectives dayOfDirectives;
  40 +
  41 + @Autowired
  42 + SendUtils sendUtils;
  43 +
37 /** 44 /**
38 * 出现重复班次的车辆 45 * 出现重复班次的车辆
39 - * @param nbbm  
40 - */ 46 + * @param
  47 +
41 @RequestMapping(value = "/schRepeat", method = RequestMethod.POST) 48 @RequestMapping(value = "/schRepeat", method = RequestMethod.POST)
42 public void schRepeat(@RequestParam String nbbm){ 49 public void schRepeat(@RequestParam String nbbm){
43 logger.info("前端通知,车辆 " + nbbm + "出现重复班次,开始检测..."); 50 logger.info("前端通知,车辆 " + nbbm + "出现重复班次,开始检测...");
@@ -56,22 +63,22 @@ public class anomalyCheckController { @@ -56,22 +63,22 @@ public class anomalyCheckController {
56 if(map.values().size() > 0){ 63 if(map.values().size() > 0){
57 dayOfSchedule.replaceByNbbm(nbbm, map.values()); 64 dayOfSchedule.replaceByNbbm(nbbm, map.values());
58 } 65 }
59 - } 66 + }*/
60 67
61 - @RequestMapping(value = "/directivePushQueue") 68 +/* @RequestMapping(value = "/directivePushQueue")
62 public void directivePushQueue(){ 69 public void directivePushQueue(){
63 DirectivePushQueue.start(); 70 DirectivePushQueue.start();
64 - } 71 + }*/
65 72
66 @RequestMapping(value = "/directiveQueueSize") 73 @RequestMapping(value = "/directiveQueueSize")
67 public void directiveQueueSize(){ 74 public void directiveQueueSize(){
68 DirectivePushQueue.size(); 75 DirectivePushQueue.size();
69 } 76 }
70 77
71 - @RequestMapping(value = "/webSocketPushQueue") 78 + /*@RequestMapping(value = "/webSocketPushQueue")
72 public void webSocketPushQueue(){ 79 public void webSocketPushQueue(){
73 WebSocketPushQueue.start(); 80 WebSocketPushQueue.start();
74 - } 81 + }*/
75 82
76 @RequestMapping(value = "/webSocketQueueSize") 83 @RequestMapping(value = "/webSocketQueueSize")
77 public void webSocketQueueSize(){ 84 public void webSocketQueueSize(){
@@ -120,4 +127,21 @@ public class anomalyCheckController { @@ -120,4 +127,21 @@ public class anomalyCheckController {
120 public String schSizeString(){ 127 public String schSizeString(){
121 return dayOfSchedule.sizeString(); 128 return dayOfSchedule.sizeString();
122 } 129 }
  130 +
  131 + @RequestMapping(value = "/containerSize")
  132 + public Map<String, Integer> containerSize(){
  133 + Map<String, Integer> rs = new HashMap<>();
  134 + rs.put("60_size", dayOfDirectives.all60().size());
  135 + rs.put("nbbm_sch_size", dayOfSchedule.findAll().size());
  136 + rs.put("lp_sch_size", dayOfSchedule.findAllByLpContainer().size());
  137 + rs.put("id_sch_size", dayOfSchedule.findAllByIdContainer().size());
  138 + rs.put("pst_sch_size", dayOfSchedule.getPstSize());
  139 + return rs;
  140 + }
  141 +
  142 + @RequestMapping(value = "/websocketRadioText")
  143 + public int radioText(String t, String lineCode){
  144 + sendUtils.sendRadioText(t, lineCode);
  145 + return 0;
  146 + }
123 } 147 }
src/main/java/com/bsth/data/directive/GatewayHttpUtils.java
@@ -48,9 +48,9 @@ public class GatewayHttpUtils { @@ -48,9 +48,9 @@ public class GatewayHttpUtils {
48 48
49 int statusCode = response.getStatusLine().getStatusCode(); 49 int statusCode = response.getStatusLine().getStatusCode();
50 if(statusCode != 200){ 50 if(statusCode != 200){
51 - post.abort(); 51 + //post.abort();
52 logger.error("http client status code: " + statusCode); 52 logger.error("http client status code: " + statusCode);
53 - return code; 53 + //return code;
54 } 54 }
55 55
56 JSONObject json = JSONObject.parseObject(EntityUtils.toString(response.getEntity())); 56 JSONObject json = JSONObject.parseObject(EntityUtils.toString(response.getEntity()));
src/main/java/com/bsth/data/gpsdata_v2/handlers/OutStationProcess.java
@@ -39,7 +39,7 @@ public class OutStationProcess { @@ -39,7 +39,7 @@ public class OutStationProcess {
39 39
40 @Autowired 40 @Autowired
41 GpsStatusManager gpsStatusManager; 41 GpsStatusManager gpsStatusManager;
42 - private final static int MAX_BEFORE_TIME = 1000 * 60 * 120; 42 + private final static int MAX_BEFORE_TIME = 1000 * 60 * 60 * 3;
43 43
44 public void process(GpsEntity gps) { 44 public void process(GpsEntity gps) {
45 //自动执行的线路,滚蛋 45 //自动执行的线路,滚蛋
@@ -86,8 +86,8 @@ public class OutStationProcess { @@ -86,8 +86,8 @@ public class OutStationProcess {
86 } 86 }
87 87
88 int diff = (int) (sch.getDfsjT() - gps.getTimestamp()); 88 int diff = (int) (sch.getDfsjT() - gps.getTimestamp());
89 - //首班出场最多提前2小时  
90 - if ((dayOfSchedule.isFirstOut(sch) && diff > MAX_BEFORE_TIME) || diff > MAX_BEFORE_TIME / 2) 89 + //首班出场最多提前3小时
  90 + if (dayOfSchedule.isFirstOut(sch) && diff > MAX_BEFORE_TIME)
91 return; 91 return;
92 92
93 gps.setPremiseCode(null);//清除前置围栏标记 93 gps.setPremiseCode(null);//清除前置围栏标记
src/main/java/com/bsth/data/gpsdata_v2/utils/GpsDataRecovery.java
@@ -84,7 +84,7 @@ public class GpsDataRecovery implements ApplicationContextAware { @@ -84,7 +84,7 @@ public class GpsDataRecovery implements ApplicationContextAware {
84 Calendar calendar = Calendar.getInstance(); 84 Calendar calendar = Calendar.getInstance();
85 int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR); 85 int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);
86 86
87 - String sql = "select DEVICE_ID,LAT,LON,TS,SPEED_GPS,LINE_ID,SERVICE_STATE,SERVER_TS from bsth_c_gps_info where days_year=346"; //+ dayOfYear; 87 + String sql = "select DEVICE_ID,LAT,LON,TS,SPEED_GPS,LINE_ID,SERVICE_STATE,SERVER_TS from bsth_c_gps_info where days_year=39"; //+ dayOfYear;
88 JdbcTemplate jdbcTemplate = new JdbcTemplate(DBUtils_MS.getDataSource()); 88 JdbcTemplate jdbcTemplate = new JdbcTemplate(DBUtils_MS.getDataSource());
89 89
90 List<GpsEntity> list = 90 List<GpsEntity> list =
@@ -102,6 +102,7 @@ public class GpsDataRecovery implements ApplicationContextAware { @@ -102,6 +102,7 @@ public class GpsDataRecovery implements ApplicationContextAware {
102 gps.setTimestamp(rs.getLong("TS")); 102 gps.setTimestamp(rs.getLong("TS"));
103 gps.setUpDown((byte) getUpOrDown(rs.getLong("SERVICE_STATE"))); 103 gps.setUpDown((byte) getUpOrDown(rs.getLong("SERVICE_STATE")));
104 gps.setServerTimestamp(rs.getLong("SERVER_TS")); 104 gps.setServerTimestamp(rs.getLong("SERVER_TS"));
  105 + gps.setState((int) getService(rs.getLong("SERVICE_STATE")));
105 return gps; 106 return gps;
106 } 107 }
107 }); 108 });
@@ -109,6 +110,17 @@ public class GpsDataRecovery implements ApplicationContextAware { @@ -109,6 +110,17 @@ public class GpsDataRecovery implements ApplicationContextAware {
109 } 110 }
110 111
111 /** 112 /**
  113 + * 获取运营状态
  114 + *
  115 + * @return -1无效 0运营 1未运营
  116 + */
  117 + public static byte getService(long serviceState) {
  118 + if ((serviceState & 0x00020000) == 0x00020000 || (serviceState & 0x80000000) == 0x80000000)
  119 + return -1;
  120 + return (byte) (((serviceState & 0x02000000) == 0x02000000) ? 1 : 0);
  121 + }
  122 +
  123 + /**
112 * 王通 2016/6/29 9:23:24 获取车辆线路上下行 124 * 王通 2016/6/29 9:23:24 获取车辆线路上下行
113 * 125 *
114 * @return -1无效 0上行 1下行 126 * @return -1无效 0上行 1下行
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
@@ -861,6 +861,18 @@ public class DayOfSchedule { @@ -861,6 +861,18 @@ public class DayOfSchedule {
861 return nbbmScheduleMap.values(); 861 return nbbmScheduleMap.values();
862 } 862 }
863 863
  864 + public Collection<ScheduleRealInfo> findAllByLpContainer() {
  865 + return lpScheduleMap.values();
  866 + }
  867 +
  868 + public Collection<ScheduleRealInfo> findAllByIdContainer() {
  869 + return id2SchedulMap.values();
  870 + }
  871 +
  872 + public int getPstSize() {
  873 + return pstBuffer.size();
  874 + }
  875 +
864 public boolean addExecPlan(ScheduleRealInfo sch) { 876 public boolean addExecPlan(ScheduleRealInfo sch) {
865 ScheduleRealInfo oldExec = executeCurr(sch.getClZbh()); 877 ScheduleRealInfo oldExec = executeCurr(sch.getClZbh());
866 if (sch != null){ 878 if (sch != null){
src/main/java/com/bsth/service/gps/GpsServiceImpl.java
@@ -231,16 +231,10 @@ public class GpsServiceImpl implements GpsService { @@ -231,16 +231,10 @@ public class GpsServiceImpl implements GpsService {
231 Map<String, Object> map = null; 231 Map<String, Object> map = null;
232 for(Map<String, Object> rs : dataList){ 232 for(Map<String, Object> rs : dataList){
233 serviceState = map_get_long(rs, "SERVICE_STATE"); 233 serviceState = map_get_long(rs, "SERVICE_STATE");
234 -  
235 - if(getGpsValid(serviceState) == 1)  
236 - continue;  
237 -  
238 - map = new HashMap<>();  
239 if(getGpsValid(serviceState) == 1) 234 if(getGpsValid(serviceState) == 1)
240 continue; 235 continue;
241 236
242 map = new HashMap<>(); 237 map = new HashMap<>();
243 -  
244 lon = map_get_float(rs, "LON"); 238 lon = map_get_float(rs, "LON");
245 lat = map_get_float(rs, "LAT"); 239 lat = map_get_float(rs, "LAT");
246 // 高德坐标 240 // 高德坐标
@@ -273,7 +267,7 @@ public class GpsServiceImpl implements GpsService { @@ -273,7 +267,7 @@ public class GpsServiceImpl implements GpsService {
273 map.put("inout_stop", arrival.getInOut()); 267 map.put("inout_stop", arrival.getInOut());
274 } 268 }
275 269
276 - map.put("nbbm", BasicData.deviceId2NbbmMap.get(map_get_str(rs,"DEVICE_ID"))); 270 + //map.put("nbbm", nbbm);
277 map.put("state", getService(serviceState)); 271 map.put("state", getService(serviceState));
278 // 上下行 272 // 上下行
279 map.put("upDown", getUpOrDown(serviceState)); 273 map.put("upDown", getUpOrDown(serviceState));
@@ -387,7 +381,7 @@ public class GpsServiceImpl implements GpsService { @@ -387,7 +381,7 @@ public class GpsServiceImpl implements GpsService {
387 dc = dcs.get(i); 381 dc = dcs.get(i);
388 if(dc.getSt() > st) 382 if(dc.getSt() > st)
389 t1 = dc.getSt(); 383 t1 = dc.getSt();
390 - if(dc.getEt() < et) 384 + if(dc.getEt() < et && dc.getEt() != 0)
391 t2 = dc.getEt(); 385 t2 = dc.getEt();
392 386
393 sql.append("SELECT DEVICE_ID,LINE_ID as LINE_CODE,STOP_NO,TS,UP_DOWN,IN_OUT,WEEKS_YEAR,CREATE_DATE FROM " + tableName + 387 sql.append("SELECT DEVICE_ID,LINE_ID as LINE_CODE,STOP_NO,TS,UP_DOWN,IN_OUT,WEEKS_YEAR,CREATE_DATE FROM " + tableName +
src/main/java/com/bsth/service/impl/BusIntervalServiceImpl.java
@@ -1735,7 +1735,7 @@ public class BusIntervalServiceImpl implements BusIntervalService { @@ -1735,7 +1735,7 @@ public class BusIntervalServiceImpl implements BusIntervalService {
1735 long id = schedule.getId(); 1735 long id = schedule.getId();
1736 if(schedule1 == 0l || schedule1 > id) 1736 if(schedule1 == 0l || schedule1 > id)
1737 schedule1 = id; 1737 schedule1 = id;
1738 - if(schedule2 == 0l || schedule1 < id) 1738 + if(schedule2 == 0l || schedule2 < id)
1739 schedule2 = id; 1739 schedule2 = id;
1740 } 1740 }
1741 Map<Long, Set<ChildTaskPlan>> cts = getChildTaskPlans(schedule1, schedule2); 1741 Map<Long, Set<ChildTaskPlan>> cts = getChildTaskPlans(schedule1, schedule2);
src/main/java/com/bsth/service/realcontrol/impl/ChildTaskPlanServiceImpl.java
1 package com.bsth.service.realcontrol.impl; 1 package com.bsth.service.realcontrol.impl;
2 2
  3 +import com.alibaba.fastjson.JSON;
3 import com.bsth.common.ResponseCode; 4 import com.bsth.common.ResponseCode;
4 import com.bsth.data.BasicData; 5 import com.bsth.data.BasicData;
5 import com.bsth.data.Station2ParkBuffer; 6 import com.bsth.data.Station2ParkBuffer;
@@ -137,6 +138,8 @@ public class ChildTaskPlanServiceImpl extends BaseServiceImpl&lt;ChildTaskPlan, Lon @@ -137,6 +138,8 @@ public class ChildTaskPlanServiceImpl extends BaseServiceImpl&lt;ChildTaskPlan, Lon
137 Map<String, Object> rs = new HashMap(); 138 Map<String, Object> rs = new HashMap();
138 try { 139 try {
139 ScheduleRealInfo sch = dayOfSchedule.get(t.getSchedule().getId()); 140 ScheduleRealInfo sch = dayOfSchedule.get(t.getSchedule().getId());
  141 + logger.info("cts: " + JSON.toJSONString(t));
  142 + logger.info("sch: " + JSON.toJSONString(sch));
140 //保存起终点名称 143 //保存起终点名称
141 if(StringUtils.isEmpty(t.getStartStationName())) 144 if(StringUtils.isEmpty(t.getStartStationName()))
142 t.setStartStationName(getStationName(sch.getXlBm(), t.getStartStation())); 145 t.setStartStationName(getStationName(sch.getXlBm(), t.getStartStation()));
@@ -151,7 +154,7 @@ public class ChildTaskPlanServiceImpl extends BaseServiceImpl&lt;ChildTaskPlan, Lon @@ -151,7 +154,7 @@ public class ChildTaskPlanServiceImpl extends BaseServiceImpl&lt;ChildTaskPlan, Lon
151 ChildTaskPlan task = null; 154 ChildTaskPlan task = null;
152 Set<ChildTaskPlan> set = sch.getcTasks(); 155 Set<ChildTaskPlan> set = sch.getcTasks();
153 for(ChildTaskPlan obj : set){ 156 for(ChildTaskPlan obj : set){
154 - if(obj.getId() == t.getId()){ 157 + if(obj.getId().intValue() == t.getId().intValue()){
155 task = obj; 158 task = obj;
156 break; 159 break;
157 } 160 }
src/main/java/com/bsth/service/schedule/impl/PeopleCarPlanServiceImpl.java
@@ -1633,7 +1633,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -1633,7 +1633,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1633 temp.put("sjfcLast0", s4.getFcsjActual()); 1633 temp.put("sjfcLast0", s4.getFcsjActual());
1634 temp.put("delayLast0", delayLast0>0?"+"+delayLast0:delayLast0); 1634 temp.put("delayLast0", delayLast0>0?"+"+delayLast0:delayLast0);
1635 jhbc += 2; 1635 jhbc += 2;
1636 - if(delayFirst0 <= 1l && delayFirst0 >= -3l){ 1636 + if(delayFirst0 <= 1l && delayFirst0 >= -2l){
1637 sjbc++; 1637 sjbc++;
1638 } else { 1638 } else {
1639 Map<String, Object> m = new HashMap<String, Object>(); 1639 Map<String, Object> m = new HashMap<String, Object>();
@@ -1649,7 +1649,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -1649,7 +1649,7 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1649 m.put("remarks", s1.getRemarks() + s2.getRemarks()); 1649 m.put("remarks", s1.getRemarks() + s2.getRemarks());
1650 mapList.add(m); 1650 mapList.add(m);
1651 } 1651 }
1652 - if(delayLast0 <= 1l && delayLast0 >= -3l){ 1652 + if(delayLast0 <= 1l && delayLast0 >= -2l){
1653 sjbc++; 1653 sjbc++;
1654 } else { 1654 } else {
1655 Map<String, Object> m = new HashMap<String, Object>(); 1655 Map<String, Object> m = new HashMap<String, Object>();
@@ -1737,6 +1737,8 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { @@ -1737,6 +1737,8 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService {
1737 temp.put("sjfcLast1", "/"); 1737 temp.put("sjfcLast1", "/");
1738 temp.put("delayLast1", "/"); 1738 temp.put("delayLast1", "/");
1739 } 1739 }
  1740 + if((up1.size() == 0 || up2.size() == 0) && (dn1.size() == 0 || dn2.size() == 0))
  1741 + continue;
1740 tempList.add(temp); 1742 tempList.add(temp);
1741 } 1743 }
1742 tempMap.put("map", tempList); 1744 tempMap.put("map", tempList);
src/main/java/com/bsth/service/traffic/impl/VehicleInoutStopServiceImpl.java
@@ -82,7 +82,7 @@ public class VehicleInoutStopServiceImpl extends BaseServiceImpl&lt;VehicleInoutSto @@ -82,7 +82,7 @@ public class VehicleInoutStopServiceImpl extends BaseServiceImpl&lt;VehicleInoutSto
82 "if( up_down= 0,'上行','下行') as up_down ," + 82 "if( up_down= 0,'上行','下行') as up_down ," +
83 "if( in_out_stop= 0,'站内','站外') as in_out_stop , " + 83 "if( in_out_stop= 0,'站内','站外') as in_out_stop , " +
84 "stop,report_date FROM bsth_c_shreal " + packageParam(map,"") ; 84 "stop,report_date FROM bsth_c_shreal " + packageParam(map,"") ;
85 - logger.info("车载上报停靠站查询sql:",sql); 85 + logger.info("车载上报停靠站查询sql:"+sql);
86 List<Map<String, Object>> result = jdbcTemp.queryForList(sql); 86 List<Map<String, Object>> result = jdbcTemp.queryForList(sql);
87 return result; 87 return result;
88 } 88 }
@@ -96,6 +96,7 @@ public class VehicleInoutStopServiceImpl extends BaseServiceImpl&lt;VehicleInoutSto @@ -96,6 +96,7 @@ public class VehicleInoutStopServiceImpl extends BaseServiceImpl&lt;VehicleInoutSto
96 JdbcTemplate jdbcTemp = new JdbcTemplate(DBUtils_MS.getDataSource()); 96 JdbcTemplate jdbcTemp = new JdbcTemplate(DBUtils_MS.getDataSource());
97 String sql = "SELECT count(1) COUNT FROM bsth_c_shreal" + packageParam(map,"count"); 97 String sql = "SELECT count(1) COUNT FROM bsth_c_shreal" + packageParam(map,"count");
98 long result = Long.valueOf(jdbcTemp.queryForMap(sql).get("COUNT")+""); 98 long result = Long.valueOf(jdbcTemp.queryForMap(sql).get("COUNT")+"");
  99 + logger.info("车载上报停靠站查询count-sql:"+sql);
99 return result; 100 return result;
100 } 101 }
101 } 102 }
src/main/java/com/bsth/websocket/handler/SendUtils.java
@@ -10,6 +10,7 @@ import com.bsth.entity.realcontrol.ScheduleRealInfo; @@ -10,6 +10,7 @@ import com.bsth.entity.realcontrol.ScheduleRealInfo;
10 import com.bsth.websocket.dto.WsScheduleRealInfo; 10 import com.bsth.websocket.dto.WsScheduleRealInfo;
11 import com.fasterxml.jackson.core.JsonProcessingException; 11 import com.fasterxml.jackson.core.JsonProcessingException;
12 import com.fasterxml.jackson.databind.ObjectMapper; 12 import com.fasterxml.jackson.databind.ObjectMapper;
  13 +import org.apache.commons.lang3.StringUtils;
13 import org.slf4j.Logger; 14 import org.slf4j.Logger;
14 import org.slf4j.LoggerFactory; 15 import org.slf4j.LoggerFactory;
15 import org.springframework.beans.factory.annotation.Autowired; 16 import org.springframework.beans.factory.annotation.Autowired;
@@ -195,4 +196,24 @@ public class SendUtils{ @@ -195,4 +196,24 @@ public class SendUtils{
195 logger.error("", e); 196 logger.error("", e);
196 } 197 }
197 } 198 }
  199 +
  200 + /**
  201 + * 对所有线调用户进行广播
  202 + * @param t
  203 + */
  204 + public void sendRadioText(String t, String lineCode){
  205 + Map<String, Object> map = new HashMap<>();
  206 + map.put("fn", "admin_radio_text");
  207 + map.put("t", t);
  208 + ObjectMapper mapper = new ObjectMapper();
  209 +
  210 + try {
  211 + if(StringUtils.isNotEmpty(lineCode))
  212 + socketHandler.sendMessageToLine(lineCode, mapper.writeValueAsString(map));
  213 + else
  214 + socketHandler.sendMessage(mapper.writeValueAsString(map));
  215 + } catch (JsonProcessingException e) {
  216 + logger.error("", e);
  217 + }
  218 + }
198 } 219 }
src/main/resources/fatso/start.js
@@ -16,7 +16,7 @@ var platform = process.platform; @@ -16,7 +16,7 @@ var platform = process.platform;
16 var iswin = platform=='win32'; 16 var iswin = platform=='win32';
17 var sp = platform=='win32'?'\\':'/'; 17 var sp = platform=='win32'?'\\':'/';
18 //不参与的目录 18 //不参与的目录
19 -var excludes = ['scheduleApp', 'trafficManage', 'control', 'permission'+sp+'authorize_all', 'summary', 'history_sch' ,'report'+sp+'oil','base'+sp+'geo_data_edit', 'forms', 'report'] 19 +var excludes = ['scheduleApp', 'trafficManage', 'control', 'permission'+sp+'authorize_all', 'summary', 'history_sch' ,'report'+sp+'oil','base'+sp+'geo_data_edit', 'forms','mforms', 'report', 'punctual']
20 ,ep = new EventProxy() 20 ,ep = new EventProxy()
21 ,pName = 'bsth_control' 21 ,pName = 'bsth_control'
22 ,path = process.cwd() 22 ,path = process.cwd()
src/main/resources/static/pages/forms/statement/firstAndLastBus_delay.html
@@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
19 19
20 <div class="page-head"> 20 <div class="page-head">
21 <div class="page-title"> 21 <div class="page-title">
22 - <h1>线路首末班准点率</h1> 22 + <h1>线路首末班误点班次</h1>
23 </div> 23 </div>
24 </div> 24 </div>
25 25
src/main/resources/static/pages/history_sch/edit/history_sch_maintain.html
@@ -495,22 +495,27 @@ @@ -495,22 +495,27 @@
495 $(that).prepend('<i class="uk-icon-spinner uk-icon-spin"></i>'); 495 $(that).prepend('<i class="uk-icon-spinner uk-icon-spin"></i>');
496 496
497 497
498 - var reCountEp = EventProxy.create('ylbUpdate', function () { 498 + var reCountEp = EventProxy.create('ylbUpdate', 'calcWaybill', 'scheduleDetail', function () {
499 $('i.uk-icon-spin', that).remove(); 499 $('i.uk-icon-spin', that).remove();
500 $(that).removeAttr('disabled'); 500 $(that).removeAttr('disabled');
501 notify_succ('重新统计成功!'); 501 notify_succ('重新统计成功!');
502 }); 502 });
503 503
504 //统计路单 -娄高峰 504 //统计路单 -娄高峰
505 - /*gb_common.$get('/calcWaybill/generateNew', {date:rq, line: lineCode}, function () {  
506 - reCountEp.emitLater('calcWaybill');  
507 - });*/ 505 + gb_common.$get('/calcWaybill/generateNew', {date:rq, line: lineCode}, function () {
  506 + reCountEp.emitLater('calcWaybill');
  507 + });
508 508
509 //统计油 -廖磊 509 //统计油 -廖磊
510 gb_common.$post('/ylb/updateHistory', {date:rq, line: lineCode}, function () { 510 gb_common.$post('/ylb/updateHistory', {date:rq, line: lineCode}, function () {
511 reCountEp.emitLater('ylbUpdate'); 511 reCountEp.emitLater('ylbUpdate');
512 }); 512 });
513 513
  514 + //重新统计班次明细
  515 + gb_common.$post('/sch/reCalc/scheduleDetail', {date:rq, line: lineCode}, function () {
  516 + reCountEp.emitLater('scheduleDetail');
  517 + });
  518 +
514 }, '我确定'); 519 }, '我确定');
515 }); 520 });
516 })(); 521 })();
src/main/resources/static/pages/home.html
@@ -59,7 +59,7 @@ @@ -59,7 +59,7 @@
59 } 59 }
60 </style> 60 </style>
61 <div class="system_change_log"> 61 <div class="system_change_log">
62 - <h2 style="text-indent: 35px;margin: 10px 0 5px;">2018-??-?? 更新说明 Changelog</h2> 62 + <h2 style="text-indent: 35px;margin: 10px 0 5px;">2018-02-06 更新说明 Changelog</h2>
63 <ul > 63 <ul >
64 <li class="sub_title"><h6>基础信息</h6></li> 64 <li class="sub_title"><h6>基础信息</h6></li>
65 <li><span class="label s_c_add">新增</span>1、新增站点间双路段生成功能。</li> 65 <li><span class="label s_c_add">新增</span>1、新增站点间双路段生成功能。</li>
src/main/resources/static/pages/punctual/list.html
@@ -39,9 +39,9 @@ @@ -39,9 +39,9 @@
39 <td>路牌</td> 39 <td>路牌</td>
40 <td>计划发车</td> 40 <td>计划发车</td>
41 <td>实际发车</td> 41 <td>实际发车</td>
  42 + <td>发车准点</td>
42 <td>计划到站</td> 43 <td>计划到站</td>
43 <td>实际到站</td> 44 <td>实际到站</td>
44 - <td>发车准点</td>  
45 <td>到站准点</td> 45 <td>到站准点</td>
46 </tr> 46 </tr>
47 </thead> 47 </thead>
src/main/resources/static/pages/scheduleApp/module/basicInfo/deviceInfoManage/form.html
@@ -171,7 +171,7 @@ @@ -171,7 +171,7 @@
171 <div class="col-md-3"> 171 <div class="col-md-3">
172 <div class="input-group"> 172 <div class="input-group">
173 <input type="datetime-local" class="form-control" name="qyrq" 173 <input type="datetime-local" class="form-control" name="qyrq"
174 - ng-model="ctrl.deviceInfoForSave.qyrq" 174 + ng-model="ctrl.deviceInfoForSave.qyrq" required
175 remote-Validation 175 remote-Validation
176 remotevtype="cde1" 176 remotevtype="cde1"
177 remotevparam="{{ {'qyrq_eq': ctrl.deviceInfoForSave.qyrq, 'xl_eq': ctrl.deviceInfoForSave.xl, 'cl_eq': ctrl.deviceInfoForSave.cl} | json}}" /> 177 remotevparam="{{ {'qyrq_eq': ctrl.deviceInfoForSave.qyrq, 'xl_eq': ctrl.deviceInfoForSave.xl, 'cl_eq': ctrl.deviceInfoForSave.cl} | json}}" />
@@ -180,7 +180,7 @@ @@ -180,7 +180,7 @@
180 </div> 180 </div>
181 <!-- 隐藏块,显示验证信息 --> 181 <!-- 隐藏块,显示验证信息 -->
182 <div class="alert alert-danger well-sm" ng-show="myForm.qyrq.$error.required"> 182 <div class="alert alert-danger well-sm" ng-show="myForm.qyrq.$error.required">
183 - 启用日期必须选择 183 + 启用日期必须选择,精确到具体时间
184 </div> 184 </div>
185 <div class="alert alert-danger well-sm" ng-show="myForm.qyrq.$error.remote"> 185 <div class="alert alert-danger well-sm" ng-show="myForm.qyrq.$error.remote">
186 {{$remote_msg}} 186 {{$remote_msg}}
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/detailedit/edit-detail.html
@@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
19 <i class="fa fa-circle"></i> 19 <i class="fa fa-circle"></i>
20 </li> 20 </li>
21 <li> 21 <li>
22 - <a ui-sref="ttInfoDetailManage_edit3({xlid: ctrl.xlid, ttid : ctrl.ttid, xlname: ctrl.xlname, ttname : ctrl.ttname})"><span ng-bind="ctrl.title1"></span></a> 22 + <a ui-sref="ttInfoDetailManage_edit3({xlid: ctrl.xlid, ttid: ctrl.ttid, xlname: ctrl.xlname, ttname: ctrl.ttname, lineversion: ctrl.lineversion})"><span ng-bind="ctrl.title1"></span></a>
23 <i class="fa fa-circle"></i> 23 <i class="fa fa-circle"></i>
24 </li> 24 </li>
25 <li> 25 <li>
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/detailedit/edit-detail2.html
@@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
19 <i class="fa fa-circle"></i> 19 <i class="fa fa-circle"></i>
20 </li> 20 </li>
21 <li> 21 <li>
22 - <a ui-sref="ttInfoDetailManage_edit3({xlid: ctrl.xlid, ttid : ctrl.ttid, xlname: ctrl.xlname, ttname : ctrl.ttname})"><span ng-bind="ctrl.title1"></span></a> 22 + <a ui-sref="ttInfoDetailManage_edit3({xlid: ctrl.xlid, ttid: ctrl.ttid, xlname: ctrl.xlname, ttname: ctrl.ttname, lineversion: ctrl.lineversion})"><span ng-bind="ctrl.title1"></span></a>
23 <i class="fa fa-circle"></i> 23 <i class="fa fa-circle"></i>
24 </li> 24 </li>
25 <li> 25 <li>
src/main/resources/static/real_control_v2/alone_page/home/alone_data_gps.js
@@ -41,7 +41,7 @@ var gb_data_gps = (function () { @@ -41,7 +41,7 @@ var gb_data_gps = (function () {
41 upDownChange = []; 41 upDownChange = [];
42 42
43 var schArray; 43 var schArray;
44 - $.each(rs, function () { 44 + $.each(rs.gpsList, function () {
45 old = realData[this.deviceId]; 45 old = realData[this.deviceId];
46 if (old) { 46 if (old) {
47 if (this.timestamp > old.timestamp) { 47 if (this.timestamp > old.timestamp) {
src/main/resources/static/real_control_v2/alone_page/map/alone_data_gps.js
@@ -55,11 +55,11 @@ var gb_data_gps = (function () { @@ -55,11 +55,11 @@ var gb_data_gps = (function () {
55 addArr.push(this); 55 addArr.push(this);
56 56
57 //班次信息 57 //班次信息
58 - if (this.schId) {  
59 - schArray = gb_schedule_table.findScheduleByLine(this.lineId);  
60 - if (schArray)  
61 - this.sch = schArray[this.schId];  
62 - } 58 + /*if (this.schId) {
  59 + //schArray = gb_schedule_table.findScheduleByLine(this.lineId);
  60 + ///if (schArray)
  61 + // this.sch = schArray[this.schId];
  62 + }*/
63 63
64 //时间格式化 64 //时间格式化
65 this.dateStr = moment(this.timestamp).format('YYYY-MM-DD HH:mm:ss'); 65 this.dateStr = moment(this.timestamp).format('YYYY-MM-DD HH:mm:ss');
src/main/resources/static/real_control_v2/css/line_schedule.css
@@ -553,7 +553,7 @@ dl.relevance-active.intimity dd:nth-child(n+2) { @@ -553,7 +553,7 @@ dl.relevance-active.intimity dd:nth-child(n+2) {
553 dl.relevance-active.intimity dd:nth-child(n+2) a { 553 dl.relevance-active.intimity dd:nth-child(n+2) a {
554 color: white !important; 554 color: white !important;
555 } 555 }
556 -/* 556 +
557 dl.relevance-active dd.tl-qrlb, 557 dl.relevance-active dd.tl-qrlb,
558 dl.relevance-active.intimity dd.tl-qrlb{ 558 dl.relevance-active.intimity dd.tl-qrlb{
559 background: linear-gradient(to right, #a9a911, #808000, #8baabf) !important; 559 background: linear-gradient(to right, #a9a911, #808000, #8baabf) !important;
@@ -595,7 +595,7 @@ dl.relevance-active.intimity dd.tl-xxrd { @@ -595,7 +595,7 @@ dl.relevance-active.intimity dd.tl-xxrd {
595 dl.relevance-active dd.tl-xxfc, 595 dl.relevance-active dd.tl-xxfc,
596 dl.relevance-active.intimity dd.tl-xxfc { 596 dl.relevance-active.intimity dd.tl-xxfc {
597 background: linear-gradient(to right, #8baabf, rgb(43, 185, 185), rgb(0,255,255)) !important; 597 background: linear-gradient(to right, #8baabf, rgb(43, 185, 185), rgb(0,255,255)) !important;
598 -}*/ 598 +}
599 599
600 dl.relevance-active.intimity dd span.fcsj-diff { 600 dl.relevance-active.intimity dd span.fcsj-diff {
601 color: #616060; 601 color: #616060;
src/main/resources/static/real_control_v2/css/main.css
@@ -1147,7 +1147,7 @@ dl.intimity span.late-badge { @@ -1147,7 +1147,7 @@ dl.intimity span.late-badge {
1147 } 1147 }
1148 1148
1149 .tip_task_list dl dt:nth-of-type(6), .tip_task_list dl dd:nth-of-type(6) { 1149 .tip_task_list dl dt:nth-of-type(6), .tip_task_list dl dd:nth-of-type(6) {
1150 - 1150 + width: 12%;
1151 } 1151 }
1152 1152
1153 .tip_task_list dl dd:nth-of-type(1) a { 1153 .tip_task_list dl dd:nth-of-type(1) a {
src/main/resources/static/real_control_v2/fragments/line_schedule/context_menu/lj_zrw.html
@@ -275,8 +275,10 @@ @@ -275,8 +275,10 @@
275 //检查子任务营运里程 275 //检查子任务营运里程
276 $('#childTaskTitle .child-task-status', modal).remove(); 276 $('#childTaskTitle .child-task-status', modal).remove();
277 //var i = 0; 277 //var i = 0;
278 - if (sch.cTasks.length == 0) 278 + if (sch.cTasks.length == 0){
  279 + $('.uk-panel-box-secondary', modal).removeClass('c_task_mileage_abnormal');
279 return; 280 return;
  281 + }
280 var sum = 0, calcs = ' '; 282 var sum = 0, calcs = ' ';
281 $.each(sch.cTasks, function () { 283 $.each(sch.cTasks, function () {
282 if (this.mileageType == 'service') { 284 if (this.mileageType == 'service') {
src/main/resources/static/real_control_v2/js/forms/wrap.html
@@ -193,7 +193,11 @@ @@ -193,7 +193,11 @@
193 193
194 cb && cb($(selector)); 194 cb && cb($(selector));
195 195
196 - $('#line', '.form-page-content').trigger('change'); 196 + if(selector === '#line') {
  197 + setTimeout(function () {
  198 + $('#line', '.form-page-content').trigger('change');
  199 + }, 500);
  200 + }
197 }); 201 });
198 202
199 return $(selector); 203 return $(selector);
src/main/resources/static/real_control_v2/js/line_schedule/sch_table.js
@@ -352,9 +352,10 @@ var gb_schedule_table = (function () { @@ -352,9 +352,10 @@ var gb_schedule_table = (function () {
352 $(dds[1]).find('a').text(sch.lpName); 352 $(dds[1]).find('a').text(sch.lpName);
353 353
354 //车辆自编号 354 //车辆自编号
355 - $(dds[2]).replaceWith(temps['line-schedule-nbbm-temp'](sch)); 355 + var $newDds2 = $(temps['line-schedule-nbbm-temp'](sch));
  356 + $(dds[2]).replaceWith($newDds2);
356 //车辆双击 357 //车辆双击
357 - gb_schedule_table_dbclick.carCellClick($(dds[2])); 358 + gb_schedule_table_dbclick.carCellClick($newDds2);
358 $(dds[3]).text(sch.qdzArrDatejh ? sch.qdzArrDatejh : ''); 359 $(dds[3]).text(sch.qdzArrDatejh ? sch.qdzArrDatejh : '');
359 $(dds[4]).text(sch.qdzArrDatesj ? sch.qdzArrDatesj : ''); 360 $(dds[4]).text(sch.qdzArrDatesj ? sch.qdzArrDatesj : '');
360 361
@@ -475,10 +476,12 @@ var gb_schedule_table = (function () { @@ -475,10 +476,12 @@ var gb_schedule_table = (function () {
475 476
476 if (nextSch) { 477 if (nextSch) {
477 $('dl[data-id=' + nextSch.id + ']', contWrap).addClass('intimity'); 478 $('dl[data-id=' + nextSch.id + ']', contWrap).addClass('intimity');
478 - if (nextSch.xlDir == sch.xlDir)  
479 - return; 479 + /*if (nextSch.xlDir == sch.xlDir)
  480 + return;*/
480 //滚动到下一个班次 481 //滚动到下一个班次
481 - scroToDl(nextSch); 482 + if(nextSch.xlDir != sch.xlDir)
  483 + scroToDl(nextSch);
  484 +
482 } 485 }
483 486
484 //如果有打开轨迹回放 487 //如果有打开轨迹回放
src/main/resources/static/real_control_v2/main.html
@@ -237,9 +237,10 @@ @@ -237,9 +237,10 @@
237 <script src="/real_control_v2/js/safe_driv/safeDriv.js" merge="custom_js"></script> 237 <script src="/real_control_v2/js/safe_driv/safeDriv.js" merge="custom_js"></script>
238 <!-- #### 安全驾驶 end ### --> 238 <!-- #### 安全驾驶 end ### -->
239 239
240 -<!-- 打电话 --> 240 +<!-- 打电话
241 <script src="http://180.168.57.114:4244/Scripts/CallCenter.js" ></script> 241 <script src="http://180.168.57.114:4244/Scripts/CallCenter.js" ></script>
242 <script src="/real_control_v2/js/safe_driv/call_phone.js" ></script> 242 <script src="/real_control_v2/js/safe_driv/call_phone.js" ></script>
  243 +-->
243 </body> 244 </body>
244 245
245 </html> 246 </html>
src/main/resources/static/real_control_v2/mapmonitor/fragments/playback_v3/left.html
@@ -209,6 +209,7 @@ @@ -209,6 +209,7 @@
209 var code2Name = gb_data_basic.lineCode2NameAll(); 209 var code2Name = gb_data_basic.lineCode2NameAll();
210 $.each(rs.list, function () { 210 $.each(rs.list, function () {
211 this.lineName = code2Name[this.lineId]; 211 this.lineName = code2Name[this.lineId];
  212 + this.nbbm = data.nbbm;
212 }); 213 });
213 //排序 214 //排序
214 rs.list.sort(function (a, b) { 215 rs.list.sort(function (a, b) {