Commit 4413865ab3e3320e15ca07fb4021b5fc3531b8f4

Authored by 廖磊
2 parents 3f8436ce 95465573

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

into pudong
src/main/java/com/bsth/controller/realcontrol/LineConfigController.java
... ... @@ -121,4 +121,9 @@ public class LineConfigController extends BaseController<LineConfig, Integer>{
121 121 public Map<String, Object> setAutoExec(@RequestParam Map<String, String> map){
122 122 return lineConfigService.setAutoExec(map);
123 123 }
  124 +
  125 + @RequestMapping(value = "/setReadReverse")
  126 + public Map<String, Object> setReadReverse(@RequestParam int status,@RequestParam String lineCode){
  127 + return lineConfigService.setReadReverse(status, lineCode);
  128 + }
124 129 }
... ...
src/main/java/com/bsth/data/LineConfigData.java
... ... @@ -131,6 +131,7 @@ public class LineConfigData implements CommandLineRunner {
131 131 if (null == line)
132 132 throw new NullPointerException("异常的lineCode");
133 133  
  134 + conf.setReadReverse(true);
134 135 conf.setLine(line);
135 136 //开始运营时间
136 137 conf.setStartOpt("02:00");
... ...
src/main/java/com/bsth/data/gpsdata_v2/cache/GpsCacheData.java
... ... @@ -152,11 +152,11 @@ public class GpsCacheData {
152 152  
153 153 private static List<StationRoute> searchLinked(LinkedList<GpsEntity> list, int upDown){
154 154 List<StationRoute> rs = new ArrayList<>();
155   - Iterator<GpsEntity> iterator = list.iterator();
  155 +
156 156 GpsEntity gps;
157 157 int prevCode=0;
158   - while (iterator.hasNext()){
159   - gps = iterator.next();
  158 + for(int i = list.size() - 1; i > 0; i --){
  159 + gps = list.get(i);
160 160 if(gps.getInstation()!=1)
161 161 continue;
162 162  
... ...
src/main/java/com/bsth/data/gpsdata_v2/handlers/InStationProcess.java
... ... @@ -43,6 +43,11 @@ public class InStationProcess {
43 43 Logger logger = LoggerFactory.getLogger(this.getClass());
44 44  
45 45 public void process(GpsEntity gps) {
  46 + //自动执行的班次信号,滚蛋
  47 + LineConfig config = lineConfigData.get(gps.getLineId());
  48 + if(null != config && config.isAutoExec())
  49 + return;
  50 +
46 51 GpsEntity prev = GpsCacheData.getPrev(gps);
47 52  
48 53 if(null == prev)
... ... @@ -81,7 +86,7 @@ public class InStationProcess {
81 86 //要经过2个中途站才能进
82 87 int count = GpsCacheData.lastInTrailsSize(gps);
83 88 List<StationRoute> routes = GeoCacheData.getStationRoute(gps.getLineId(), gps.getUpDown());
84   - if (isNotInOut(sch) && gps.getInstation() == 1 && routes.size() > 4
  89 + if (null != sch && isNormalSch(sch) && gps.getInstation() == 1 && routes.size() > 4
85 90 && count < 2) {
86 91 logger.info("没有进中途站,拒绝进站... -" + gps.getNbbm() + " -time:" + gps.getTimestamp());
87 92 flow = false;
... ... @@ -90,7 +95,8 @@ public class InStationProcess {
90 95 boolean isEnd = false;
91 96  
92 97 //进终点
93   - if (flow && null != sch && sch.getZdzCode().equals(gps.getStopNo())) {
  98 + if (flow && null != sch &&
  99 + ((sch.getZdzCode().equals(gps.getStopNo()) && gps.getInstation()>0) || sch.getZdzCode().equals(gps.getCarparkNo()))) {
94 100 inEndStation(sch, gps);
95 101 isEnd = true;
96 102 }
... ... @@ -98,6 +104,10 @@ public class InStationProcess {
98 104 GpsCacheData.in(gps, isEnd);
99 105 }
100 106  
  107 + private boolean isNormalSch(ScheduleRealInfo sch) {
  108 + return sch.getBcType().equals("normal");
  109 + }
  110 +
101 111 private boolean isNotInOut(ScheduleRealInfo sch) {
102 112 return !sch.getBcType().equals("in") && !sch.getBcType().equals("out");
103 113 }
... ...
src/main/java/com/bsth/data/gpsdata_v2/handlers/OutStationProcess.java
... ... @@ -41,28 +41,34 @@ public class OutStationProcess {
41 41 GpsStatusManager gpsStatusManager;
42 42 private final static int MAX_BEFORE_TIME = 1000 * 60 * 120;
43 43  
44   - public void process(GpsEntity gps){
  44 + public void process(GpsEntity gps) {
  45 + //自动执行的班次信号,滚蛋
  46 + LineConfig config = lineConfigData.get(gps.getLineId());
  47 + if (null != config && config.isAutoExec())
  48 + return;
  49 +
45 50 GpsEntity prev = GpsCacheData.getPrev(gps);
46 51  
47   - if(null == prev)
  52 + if (null == prev)
48 53 return;
49 54  
50 55 //从站内到站外
51   - if(prev.getInstation() > 0 && gps.getInstation() == 0)
  56 + if (prev.getInstation() > 0 && gps.getInstation() == 0)
52 57 outStation(gps, prev);
53 58  
54 59 //从站内到另一个站内
55   - if(prev.getInstation() > 0 && gps.getInstation() > 0
  60 + if (prev.getInstation() > 0 && gps.getInstation() > 0
56 61 && !prev.getStopNo().equals(gps.getStopNo()))
57 62 outStation(gps, prev);
58 63  
59 64 //在被起点站覆盖的情况下出场
60   - if(isOutPark(gps, prev))
  65 + if (isOutPark(gps, prev))
61 66 outStation(gps, prev);
62 67 }
63 68  
64 69 /**
65 70 * 出站
  71 + *
66 72 * @param gps
67 73 */
68 74 private void outStation(GpsEntity gps, GpsEntity prev) {
... ... @@ -70,22 +76,24 @@ public class OutStationProcess {
70 76  
71 77 //起点发车
72 78 if (null != sch &&
73   - (sch.getQdzCode().equals(prev.getStopNo()) || sch.getQdzCode().equals(prev.getCarparkNo()))){
  79 + ((sch.getQdzCode().equals(prev.getStopNo())
  80 + && (gps.getInstation() == 0 || !gps.getStopNo().equals(prev.getStopNo())))
  81 + || sch.getQdzCode().equals(prev.getCarparkNo()))) {
74 82 //发车班次匹配
75   - if(!signalSchPlanMatcher.outMatch(gps, sch)){
  83 + if (!signalSchPlanMatcher.outMatch(gps, sch)) {
76 84 outStation(gps, prev);
77 85 return;
78 86 }
79 87  
80 88 int diff = (int) (sch.getDfsjT() - gps.getTimestamp());
81 89 //首班出场最多提前2小时
82   - if((dayOfSchedule.isFirstOut(sch) && diff > MAX_BEFORE_TIME) || diff > MAX_BEFORE_TIME / 2)
  90 + if ((dayOfSchedule.isFirstOut(sch) && diff > MAX_BEFORE_TIME) || diff > MAX_BEFORE_TIME / 2)
83 91 return;
84 92  
85 93 gps.setPremiseCode(null);//清除前置围栏标记
86 94  
87   - if(StringUtils.isNotEmpty(sch.getFcsjActual())
88   - && !outManyFit(gps, sch)){
  95 + if (StringUtils.isNotEmpty(sch.getFcsjActual())
  96 + && !outManyFit(gps, sch)) {
89 97 return;//班次已经实发
90 98 }
91 99  
... ... @@ -108,7 +116,7 @@ public class OutStationProcess {
108 116 LateAdjustHandle.remove(sch.getClZbh());
109 117  
110 118 //发车的时候,同步一下状态
111   - if(!gps.isService() && !dayOfSchedule.emptyService(sch))
  119 + if (!gps.isService() && !dayOfSchedule.emptyService(sch))
112 120 gpsStatusManager.changeServiceState(sch.getClZbh(), sch.getXlDir(), 0, "发车@系统");
113 121  
114 122 logger.info("车辆:" + sch.getClZbh() + " 班次:" + sch.getDfsj() + "发车, 时间:" + sch.getFcsjActual());
... ... @@ -119,16 +127,17 @@ public class OutStationProcess {
119 127  
120 128 /**
121 129 * 是否是一个更合适的发车信号
  130 + *
122 131 * @param gps
123 132 * @param sch
124 133 * @return
125 134 */
126 135 private boolean outManyFit(GpsEntity gps, ScheduleRealInfo sch) {
127 136 LineConfig conf = lineConfigData.get(sch.getXlBm());
128   - if(null != conf && conf.isLockFirstOutTime())
  137 + if (null != conf && conf.isLockFirstOutTime())
129 138 return false;
130 139  
131   - if(StringUtils.isNotEmpty(sch.getZdsjActual()))
  140 + if (StringUtils.isNotEmpty(sch.getZdsjActual()))
132 141 return false;
133 142  
134 143 long t1 = sch.getFcsjActualTime();
... ... @@ -136,18 +145,18 @@ public class OutStationProcess {
136 145 long c = sch.getDfsjT();
137 146  
138 147 int threshold = 1000 * 60 * 5;
139   - if(Math.abs(t2 - c) < threshold && c - t1 > threshold){
  148 + if (Math.abs(t2 - c) < threshold && c - t1 > threshold) {
140 149 return true;
141 150 }
142 151  
143   - if(c - t1 > 1000 * 60 * 60 * 2 && Math.abs(t2 - c) < c - t1){
  152 + if (c - t1 > 1000 * 60 * 60 * 2 && Math.abs(t2 - c) < c - t1) {
144 153 return true;
145 154 }
146 155 return false;
147 156 }
148 157  
149   - private void outStationAndOutPark(ScheduleRealInfo sch){
150   - try{
  158 + private void outStationAndOutPark(ScheduleRealInfo sch) {
  159 + try {
151 160 LineConfig config = lineConfigData.get(sch.getXlBm());
152 161 //限定出站既出场的停车场
153 162 String park = config.getTwinsPark();
... ... @@ -168,26 +177,26 @@ public class OutStationProcess {
168 177 dayOfSchedule.save(schPrev);
169 178 }
170 179 }
171   - }catch (Exception e){
  180 + } catch (Exception e) {
172 181 logger.error("", e);
173 182 }
174 183 }
175 184  
176   - private boolean isEmptyMileage(ScheduleRealInfo sch){
177   - return sch.getBcsj()==0 || sch.getJhlcOrig().intValue()==0;
  185 + private boolean isEmptyMileage(ScheduleRealInfo sch) {
  186 + return sch.getBcsj() == 0 || sch.getJhlcOrig().intValue() == 0;
178 187 }
179 188  
180   - private boolean isOut(ScheduleRealInfo sch){
  189 + private boolean isOut(ScheduleRealInfo sch) {
181 190 return sch != null && sch.getBcType().equals("out");
182 191 }
183 192  
184   - private void endSch(ScheduleRealInfo sch, Long t){
  193 + private void endSch(ScheduleRealInfo sch, Long t) {
185 194 sch.setFcsjActualAll(t);
186 195 sch.setZdsjActualAll(t);
187 196 }
188 197  
189   - private boolean isOutPark(GpsEntity gps, GpsEntity prve){
190   - if(StringUtils.isNotEmpty(prve.getCarparkNo()) && StringUtils.isEmpty(gps.getCarparkNo()))
  198 + private boolean isOutPark(GpsEntity gps, GpsEntity prve) {
  199 + if (StringUtils.isNotEmpty(prve.getCarparkNo()) && StringUtils.isEmpty(gps.getCarparkNo()))
191 200 return true;
192 201 return false;
193 202 }
... ...
src/main/java/com/bsth/data/gpsdata_v2/handlers/ReverseRouteProcess.java
1 1 package com.bsth.data.gpsdata_v2.handlers;
2 2  
  3 +import com.bsth.data.LineConfigData;
3 4 import com.bsth.data.gpsdata_v2.cache.GeoCacheData;
4 5 import com.bsth.data.gpsdata_v2.cache.GpsCacheData;
5 6 import com.bsth.data.gpsdata_v2.entity.GpsEntity;
6 7 import com.bsth.data.gpsdata_v2.entity.StationRoute;
7 8 import com.bsth.data.schedule.DayOfSchedule;
  9 +import com.bsth.entity.realcontrol.LineConfig;
8 10 import com.bsth.entity.realcontrol.ScheduleRealInfo;
9 11 import org.springframework.beans.factory.annotation.Autowired;
10 12 import org.springframework.stereotype.Component;
... ... @@ -18,15 +20,22 @@ import java.util.List;
18 20 @Component
19 21 public class ReverseRouteProcess {
20 22  
21   - private static final int REVER_THRESHOLD = 3;
  23 + private static final int REVER_THRESHOLD = 6;
22 24  
23   - private static final long TIME_THRESHOLD = 1000 * 60 * 120;
  25 + private static final long TIME_THRESHOLD = 1000 * 60 * 30;
24 26  
25 27 @Autowired
26 28 DayOfSchedule dayOfSchedule;
27 29  
  30 + @Autowired
  31 + LineConfigData lineConfigData;
  32 +
28 33 public void process(GpsEntity gps){
29   - if(reversRoute(gps) && !GeoCacheData.isLoopLine(gps.getLineId())){
  34 +
  35 + LineConfig config = lineConfigData.get(gps.getLineId());
  36 + if(null != config && config.isReadReverse() &&
  37 + reversRoute(gps) && !GeoCacheData.isLoopLine(gps.getLineId())){
  38 +
30 39 ScheduleRealInfo sch = dayOfSchedule.executeCurr(gps.getNbbm());
31 40 if(isInOut(sch) || !sch.getXlBm().equals(gps.getLineId()))
32 41 return;
... ...
src/main/java/com/bsth/data/gpsdata_v2/utils/GpsDataRecovery.java
... ... @@ -60,7 +60,7 @@ public class GpsDataRecovery implements ApplicationContextAware {
60 60 for (String nbbm : keys) {
61 61 Collections.sort(listMap.get(nbbm), comp);
62 62 threadPool.submit(new RecoveryThread(listMap.get(nbbm), count));
63   - /*if(nbbm.equals("W7C-035"))
  63 + /*if(nbbm.equals("W1E-169"))
64 64 new RecoveryThread(listMap.get(nbbm), count).run();*/
65 65 /*if(lineId.equals("60028"))
66 66 new RecoveryThread(listMap.get(lineId), count).run();*/
... ... @@ -84,7 +84,7 @@ public class GpsDataRecovery implements ApplicationContextAware {
84 84 Calendar calendar = Calendar.getInstance();
85 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=327"; //+ 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=329"; //+ dayOfYear;
88 88 JdbcTemplate jdbcTemplate = new JdbcTemplate(DBUtils_MS.getDataSource());
89 89  
90 90 List<GpsEntity> list =
... ... @@ -154,7 +154,7 @@ public class GpsDataRecovery implements ApplicationContextAware {
154 154 for (GpsEntity gps : list) {
155 155 try {
156 156  
157   - /*if(gps.getTimestamp() >= 1511396220000L)
  157 + /*if(gps.getTimestamp() >= 1511569544000L)
158 158 System.out.println("aaa");*/
159 159  
160 160 if(Math.abs(gps.getTimestamp() - gps.getServerTimestamp()) > 1000 * 60 * 20)
... ...
src/main/java/com/bsth/data/gpsdata_v2/utils/GpsDataUtils.java
... ... @@ -25,7 +25,7 @@ public class GpsDataUtils {
25 25  
26 26 try {
27 27 for (GpsEntity gps : list) {
28   - if (gps.getValid() == 0 && Math.abs(gps.getTimestamp() - gps.getServerTimestamp()) > 1000 * 60 * 20)
  28 + if (gps.getValid() == 0 && Math.abs(gps.getTimestamp() - gps.getServerTimestamp()) < 1000 * 60 * 20)
29 29 rs.add(gps);
30 30 }
31 31  
... ...
src/main/java/com/bsth/data/gpsdata_v2/utils/SignalSchPlanMatcher.java
... ... @@ -41,11 +41,15 @@ public class SignalSchPlanMatcher {
41 41 try{
42 42 //晚于待发时间 10 分钟 ,匹配一下最佳的班次
43 43 if(t - sch.getDfsjT() > 1000 * 60 * 10){
44   - ScheduleRealInfo near = searchNearOut(gps);
  44 + ScheduleRealInfo near = searchNearSch(gps, sch.getQdzCode());
45 45  
46 46 if(null != near && !near.getId().equals(sch.getId())){
47   - dayOfSchedule.addExecPlan(near);
48   - return false;
  47 +
  48 + if(Math.abs(t - near.getDfsjT()) < Math.abs((t - sch.getDfsjT()))){
  49 +
  50 + dayOfSchedule.addExecPlan(near);
  51 + return false;
  52 + }
49 53 }
50 54 }
51 55  
... ... @@ -101,7 +105,7 @@ public class SignalSchPlanMatcher {
101 105 * @param gps
102 106 * @return
103 107 */
104   - private ScheduleRealInfo searchNearOut(GpsEntity gps) {
  108 + private ScheduleRealInfo searchNearSch(GpsEntity gps, String qdzCode) {
105 109 List<ScheduleRealInfo> list = dayOfSchedule.findByNbbm(gps.getNbbm());
106 110 //排序
107 111 Collections.sort(list, schComp);
... ... @@ -109,6 +113,8 @@ public class SignalSchPlanMatcher {
109 113 ScheduleRealInfo near = null;
110 114 int diff, minDiff=-1;
111 115 for(ScheduleRealInfo sch : list){
  116 + if(!sch.getQdzCode().equals(qdzCode))
  117 + continue;
112 118  
113 119 if(StringUtils.isNotEmpty(sch.getFcsjActual()))
114 120 continue;
... ...
src/main/java/com/bsth/data/schedule/SchAttrCalculator.java
... ... @@ -98,7 +98,7 @@ public class SchAttrCalculator {
98 98  
99 99 // 计划终点时间
100 100 if (sch.getBcsj() != null) {
101   - sch.setZdsjT(sch.getDfsjT() + (sch.getBcsj() * 60 * 1000));
  101 + sch.setZdsjT(sch.getFcsjT() + (sch.getBcsj() * 60 * 1000));
102 102 sch.setZdsj(fmtHHmm.print(sch.getZdsjT()));
103 103 }
104 104 } catch (ParseException e) {
... ...
src/main/java/com/bsth/data/schedule/auto_exec/RealScheduleAutoExecHandler.java
... ... @@ -37,6 +37,7 @@ public class RealScheduleAutoExecHandler {
37 37  
38 38 if (StringUtils.isEmpty(sch.getZdsjActual()) && sch.getZdsjT() < t) {
39 39 sch.setZdsjActualAll(sch.getZdsjT());
  40 + flag = true;
40 41  
41 42 //准备执行下一个班次
42 43 ScheduleRealInfo next = dayOfSchedule.next(sch);
... ... @@ -48,11 +49,13 @@ public class RealScheduleAutoExecHandler {
48 49 }
49 50 }
50 51  
51   - //路牌下一个班次,线调页面显示
  52 + //路牌下一个班次,线调页面显示
52 53 ScheduleRealInfo nextLp = dayOfSchedule.nextByLp(sch);
53 54 if (null != nextLp) {
54   - nextLp.setQdzArrDatesj(sch.getZdsjActual());
  55 + //入库
  56 + dayOfSchedule.save(sch);
55 57  
  58 + nextLp.setQdzArrDatesj(sch.getZdsjActual());
56 59 List<ScheduleRealInfo> refs = new ArrayList<>();
57 60 refs.add(sch);
58 61 refs.add(nextLp);
... ...
src/main/java/com/bsth/security/WebSecurityConfig.java
... ... @@ -36,7 +36,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
36 36 public void configure(WebSecurity web) throws Exception {
37 37 // 白名单
38 38 web.ignoring().antMatchers(Constants.LOGIN_PAGE, Constants.LOGIN, Constants.ASSETS_URL, Constants.FAVICON_URL, Constants.CAPTCHA,
39   - Constants.SERVICE_INTERFACE, Constants.METRONIC_URL, Constants.LOGIN_FAILURE, Constants.UPSTREAM_URL, Constants.XD_CHILD_PAGES);
  39 + Constants.SERVICE_INTERFACE, Constants.METRONIC_URL, Constants.LOGIN_FAILURE, Constants.UPSTREAM_URL, Constants.XD_CHILD_PAGES, Constants.UP_RFID_URL);
40 40 }
41 41  
42 42 @Override
... ...
src/main/java/com/bsth/service/realcontrol/LineConfigService.java
... ... @@ -28,4 +28,6 @@ public interface LineConfigService extends BaseService&lt;LineConfig, Integer&gt;{
28 28 Map<String,Object> findByIdx(String idx);
29 29  
30 30 Map<String,Object> setAutoExec(Map<String, String> map);
  31 +
  32 + Map<String,Object> setReadReverse(int status, String lineCode);
31 33 }
... ...
src/main/java/com/bsth/service/realcontrol/impl/LineConfigServiceImpl.java
... ... @@ -245,4 +245,22 @@ public class LineConfigServiceImpl extends BaseServiceImpl&lt;LineConfig, Integer&gt;
245 245 }
246 246 return rs;
247 247 }
  248 +
  249 + @Override
  250 + public Map<String, Object> setReadReverse(int status, String lineCode) {
  251 + Map<String, Object> rs = new HashMap<>();
  252 + try {
  253 + LineConfig conf = lineConfigData.get(lineCode);
  254 + conf.setReadReverse(status==1?true:false);
  255 +
  256 + lineConfigData.set(conf);
  257 + rs.put("status", ResponseCode.SUCCESS);
  258 + rs.put("conf", conf);
  259 + } catch (Exception e) {
  260 + rs.put("status", ResponseCode.ERROR);
  261 + rs.put("msg", e.getMessage());
  262 + logger.error("", e);
  263 + }
  264 + return rs;
  265 + }
248 266 }
... ...
src/main/java/com/bsth/websocket/entity/WsScheduleRealInfo.java deleted 100644 → 0
1   -package com.bsth.websocket.entity;
2   -
3   -import com.bsth.entity.realcontrol.ChildTaskPlan;
4   -import com.bsth.entity.realcontrol.ScheduleRealInfo;
5   -
6   -import javax.persistence.FetchType;
7   -import javax.persistence.OneToMany;
8   -import javax.persistence.Transient;
9   -import java.util.ArrayList;
10   -import java.util.HashSet;
11   -import java.util.List;
12   -import java.util.Set;
13   -
14   -/**
15   - * 精简字段的实际排班 entity
16   - * webSocket 传输用,去掉了页面不需要的一些字段
17   - * Created by panzhao on 2017/11/14.
18   - */
19   -public class WsScheduleRealInfo {
20   -
21   - public static WsScheduleRealInfo getInstance(ScheduleRealInfo sch){
22   - if(null == sch)
23   - return null;
24   - WsScheduleRealInfo wss = new WsScheduleRealInfo();
25   - wss.id = sch.getId();
26   - wss.scheduleDateStr = sch.getScheduleDateStr();
27   - wss.realExecDate = sch.getRealExecDate();
28   - wss.xlName = sch.getXlName();
29   - wss.xlBm = sch.getXlBm();
30   - wss.lpName = sch.getLpName();
31   - wss.clZbh = sch.getClZbh();
32   - wss.jGh = sch.getjGh();
33   - wss.jName = sch.getjName();
34   - wss.sGh = sch.getsGh();
35   - wss.sName = sch.getsName();
36   - wss.xlDir = sch.getXlDir();
37   - wss.qdzCode = sch.getQdzCode();
38   - wss.qdzName = sch.getQdzName();
39   - wss.zdzCode = sch.getZdzCode();
40   - wss.zdzName = sch.getZdzName();
41   - wss.fcsj = sch.getFcsj();
42   - wss.fcsjT = sch.getFcsjT();
43   - wss.zdsj = sch.getZdsj();
44   - wss.zdsjT = sch.getZdsjT();
45   - wss.jhlc = sch.getJhlc();
46   - wss.jhlcOrig = sch.getJhlcOrig();
47   - wss.bcsj = sch.getBcsj();
48   - wss.bcType = sch.getBcType();
49   - wss.majorStationName = sch.getMajorStationName();
50   - wss.fcsjActual = sch.getFcsjActual();
51   - wss.fcsjActualTime = sch.getFcsjActualTime();
52   - wss.zdsjActual = sch.getZdsjActual();
53   - wss.zdsjActualTime = sch.getZdsjActualTime();
54   - wss.status = sch.getStatus();
55   - wss.adjustExps = sch.getAdjustExps();
56   - wss.sflj = sch.isSflj();
57   - wss.late = sch.isLate();
58   - wss.late2 = sch.isLate2();
59   - wss.lateMinute = sch.getLateMinute();
60   - wss.remarks = sch.getRemarks();
61   - wss.dfsj = sch.getDfsj();
62   - wss.dfsjT = sch.getDfsjT();
63   - wss.directiveState = sch.getDirectiveState();
64   - wss.qdzArrDatejh = sch.getQdzArrDatejh();
65   - wss.qdzArrDatesj = sch.getQdzArrDatesj();
66   - wss.cTasks = sch.getcTasks();
67   - wss.gsName = sch.getGsName();
68   - wss.gsBm = sch.getGsBm();
69   - wss.fgsName = sch.getFgsName();
70   - wss.fgsBm = sch.getFgsBm();
71   - wss.dfAuto = sch.isDfAuto();
72   - wss.online = sch.isOnline();
73   - wss.reissue = sch.isReissue();
74   - wss.driftStatus = sch.getDriftStatus();
75   - wss.ccService = sch.isCcService();
76   - return wss;
77   - }
78   -
79   -
80   - public static List<WsScheduleRealInfo> getMultiInstance(List<ScheduleRealInfo> list){
81   - List<WsScheduleRealInfo> rs = new ArrayList<>();
82   - for(ScheduleRealInfo sch : list){
83   - rs.add(getInstance(sch));
84   - }
85   - return rs;
86   - }
87   -
88   - /** 主键Id */
89   - private Long id;
90   -
91   - /** 排班日期字符串 YYYY-MM-DD */
92   - private String scheduleDateStr;
93   -
94   - /** 真实执行时间 yyyy-MM-dd */
95   - private String realExecDate;
96   -
97   - /** 线路名称 */
98   - private String xlName;
99   - /** 线路编码 */
100   - private String xlBm;
101   -
102   - /** 路牌名称 */
103   - private String lpName;
104   -
105   - /** 车辆自编号 */
106   - private String clZbh;
107   -
108   - /** 驾驶员工号 */
109   - private String jGh;
110   - /** 驾驶员名字 */
111   - private String jName;
112   - /** 售票员工号 */
113   - private String sGh;
114   - /** 售票员名字 */
115   - private String sName;
116   -
117   - /** 线路方向 */
118   - private String xlDir;
119   - /** 起点站code*/
120   - private String qdzCode;
121   - /** 起点站名字 */
122   - private String qdzName;
123   -
124   - /** 终点站code*/
125   - private String zdzCode;
126   - /** 终点站名字 */
127   - private String zdzName;
128   -
129   - /** 计划发车时间(格式 HH:mm) */
130   - private String fcsj;
131   - /** 计划发车时间戳*/
132   - @Transient
133   - private Long fcsjT;
134   -
135   - /** 计划终点时间(格式 HH:mm) */
136   - private String zdsj;
137   - /** 计划终点时间戳*/
138   - @Transient
139   - private Long zdsjT;
140   -
141   - /** 计划里程 */
142   - private Double jhlc;
143   -
144   - /** 原始计划里程 (原计调的数据) */
145   - private Double jhlcOrig;
146   - /** 班次历时 */
147   - private Integer bcsj;
148   -
149   - /**
150   - * 班次类型 TODO:正常班次、出场、进场、加油、区间班次、放空班次、放大站班次、两点间空驶
151   - */
152   - private String bcType;
153   -
154   - //放站班次 站点名称
155   - private String majorStationName;
156   -
157   - /** 实际发车时间*/
158   - private String fcsjActual;
159   - /** 实际发车时间戳*/
160   - @Transient
161   - private Long fcsjActualTime;
162   - /**实际终点时间 */
163   - private String zdsjActual;
164   - /** 实际终点时间戳*/
165   - @Transient
166   - private Long zdsjActualTime;
167   -
168   - /**班次状态 0 未执行 1 正在执行 2 已执行 -1 已烂班 */
169   - private int status;
170   -
171   - private String adjustExps;
172   -
173   - /** 是否是临加班次 */
174   - private boolean sflj;
175   -
176   - /** 是否误点 (应发未发)*/
177   - @Transient
178   - private boolean late;
179   -
180   - /** 是否误点 (应发未到) */
181   - @Transient
182   - private boolean late2;
183   - /** 误点停靠时间 */
184   - @Transient
185   - private float lateMinute;
186   -
187   - /** 备注*/
188   - private String remarks;
189   -
190   - /**待发时间(格式 HH:mm) */
191   - private String dfsj;
192   -
193   - /**待发时间戳 */
194   - @Transient
195   - private Long dfsjT;
196   -
197   - /** 指令下发状态 60: 已发送, 100: 设备确认收到, 200:驾驶员确认 0:失败 */
198   - private Integer directiveState = -1;
199   -
200   - /** 起点站计划到达时间 */
201   - @Transient
202   - private String qdzArrDatejh;
203   -
204   - /** 起点站实际到达时间 */
205   - @Transient
206   - private String qdzArrDatesj;
207   -
208   - /** 子任务 */
209   - @OneToMany(fetch = FetchType.LAZY, mappedBy = "schedule")
210   - private Set<ChildTaskPlan> cTasks = new HashSet<>();
211   -
212   - /** 关联的公司名称 */
213   - private String gsName;
214   - /** 关联的公司编码 */
215   - private String gsBm;
216   - /** 关联的分公司名称 */
217   - private String fgsName;
218   - /** 关联的分公司编码 */
219   - private String fgsBm;
220   -
221   - //待发调试(是否自动调整)
222   - private boolean dfAuto;
223   - //是否有GPS信号
224   - private boolean online;
225   -
226   - /** 是否有补发GPS信号 */
227   - private boolean reissue;
228   -
229   - /**
230   - * 漂移状态
231   - * 1: 发车漂移
232   - * 2:到站漂移
233   - * 3:中途漂移
234   - */
235   - private Integer driftStatus = 0;
236   -
237   - /**
238   - * 换车营运标记 true 表示该主任务由 【中途换车子任务】 级联生成
239   - */
240   - private boolean ccService;
241   -
242   - public Long getId() {
243   - return id;
244   - }
245   -
246   - public void setId(Long id) {
247   - this.id = id;
248   - }
249   -
250   - public String getScheduleDateStr() {
251   - return scheduleDateStr;
252   - }
253   -
254   - public void setScheduleDateStr(String scheduleDateStr) {
255   - this.scheduleDateStr = scheduleDateStr;
256   - }
257   -
258   - public String getRealExecDate() {
259   - return realExecDate;
260   - }
261   -
262   - public void setRealExecDate(String realExecDate) {
263   - this.realExecDate = realExecDate;
264   - }
265   -
266   - public String getXlName() {
267   - return xlName;
268   - }
269   -
270   - public void setXlName(String xlName) {
271   - this.xlName = xlName;
272   - }
273   -
274   - public String getXlBm() {
275   - return xlBm;
276   - }
277   -
278   - public void setXlBm(String xlBm) {
279   - this.xlBm = xlBm;
280   - }
281   -
282   - public String getLpName() {
283   - return lpName;
284   - }
285   -
286   - public void setLpName(String lpName) {
287   - this.lpName = lpName;
288   - }
289   -
290   - public String getClZbh() {
291   - return clZbh;
292   - }
293   -
294   - public void setClZbh(String clZbh) {
295   - this.clZbh = clZbh;
296   - }
297   -
298   - public String getjGh() {
299   - return jGh;
300   - }
301   -
302   - public void setjGh(String jGh) {
303   - this.jGh = jGh;
304   - }
305   -
306   - public String getjName() {
307   - return jName;
308   - }
309   -
310   - public void setjName(String jName) {
311   - this.jName = jName;
312   - }
313   -
314   - public String getsGh() {
315   - return sGh;
316   - }
317   -
318   - public void setsGh(String sGh) {
319   - this.sGh = sGh;
320   - }
321   -
322   - public String getsName() {
323   - return sName;
324   - }
325   -
326   - public void setsName(String sName) {
327   - this.sName = sName;
328   - }
329   -
330   - public String getXlDir() {
331   - return xlDir;
332   - }
333   -
334   - public void setXlDir(String xlDir) {
335   - this.xlDir = xlDir;
336   - }
337   -
338   - public String getQdzCode() {
339   - return qdzCode;
340   - }
341   -
342   - public void setQdzCode(String qdzCode) {
343   - this.qdzCode = qdzCode;
344   - }
345   -
346   - public String getQdzName() {
347   - return qdzName;
348   - }
349   -
350   - public void setQdzName(String qdzName) {
351   - this.qdzName = qdzName;
352   - }
353   -
354   - public String getZdzCode() {
355   - return zdzCode;
356   - }
357   -
358   - public void setZdzCode(String zdzCode) {
359   - this.zdzCode = zdzCode;
360   - }
361   -
362   - public String getZdzName() {
363   - return zdzName;
364   - }
365   -
366   - public void setZdzName(String zdzName) {
367   - this.zdzName = zdzName;
368   - }
369   -
370   - public String getFcsj() {
371   - return fcsj;
372   - }
373   -
374   - public void setFcsj(String fcsj) {
375   - this.fcsj = fcsj;
376   - }
377   -
378   - public Long getFcsjT() {
379   - return fcsjT;
380   - }
381   -
382   - public void setFcsjT(Long fcsjT) {
383   - this.fcsjT = fcsjT;
384   - }
385   -
386   - public String getZdsj() {
387   - return zdsj;
388   - }
389   -
390   - public void setZdsj(String zdsj) {
391   - this.zdsj = zdsj;
392   - }
393   -
394   - public Long getZdsjT() {
395   - return zdsjT;
396   - }
397   -
398   - public void setZdsjT(Long zdsjT) {
399   - this.zdsjT = zdsjT;
400   - }
401   -
402   - public Double getJhlc() {
403   - return jhlc;
404   - }
405   -
406   - public void setJhlc(Double jhlc) {
407   - this.jhlc = jhlc;
408   - }
409   -
410   - public Double getJhlcOrig() {
411   - return jhlcOrig;
412   - }
413   -
414   - public void setJhlcOrig(Double jhlcOrig) {
415   - this.jhlcOrig = jhlcOrig;
416   - }
417   -
418   - public Integer getBcsj() {
419   - return bcsj;
420   - }
421   -
422   - public void setBcsj(Integer bcsj) {
423   - this.bcsj = bcsj;
424   - }
425   -
426   - public String getBcType() {
427   - return bcType;
428   - }
429   -
430   - public void setBcType(String bcType) {
431   - this.bcType = bcType;
432   - }
433   -
434   - public String getMajorStationName() {
435   - return majorStationName;
436   - }
437   -
438   - public void setMajorStationName(String majorStationName) {
439   - this.majorStationName = majorStationName;
440   - }
441   -
442   - public String getFcsjActual() {
443   - return fcsjActual;
444   - }
445   -
446   - public void setFcsjActual(String fcsjActual) {
447   - this.fcsjActual = fcsjActual;
448   - }
449   -
450   - public Long getFcsjActualTime() {
451   - return fcsjActualTime;
452   - }
453   -
454   - public void setFcsjActualTime(Long fcsjActualTime) {
455   - this.fcsjActualTime = fcsjActualTime;
456   - }
457   -
458   - public String getZdsjActual() {
459   - return zdsjActual;
460   - }
461   -
462   - public void setZdsjActual(String zdsjActual) {
463   - this.zdsjActual = zdsjActual;
464   - }
465   -
466   - public Long getZdsjActualTime() {
467   - return zdsjActualTime;
468   - }
469   -
470   - public void setZdsjActualTime(Long zdsjActualTime) {
471   - this.zdsjActualTime = zdsjActualTime;
472   - }
473   -
474   - public int getStatus() {
475   - return status;
476   - }
477   -
478   - public void setStatus(int status) {
479   - this.status = status;
480   - }
481   -
482   - public String getAdjustExps() {
483   - return adjustExps;
484   - }
485   -
486   - public void setAdjustExps(String adjustExps) {
487   - this.adjustExps = adjustExps;
488   - }
489   -
490   - public boolean isSflj() {
491   - return sflj;
492   - }
493   -
494   - public void setSflj(boolean sflj) {
495   - this.sflj = sflj;
496   - }
497   -
498   - public boolean isLate() {
499   - return late;
500   - }
501   -
502   - public void setLate(boolean late) {
503   - this.late = late;
504   - }
505   -
506   - public boolean isLate2() {
507   - return late2;
508   - }
509   -
510   - public void setLate2(boolean late2) {
511   - this.late2 = late2;
512   - }
513   -
514   - public float getLateMinute() {
515   - return lateMinute;
516   - }
517   -
518   - public void setLateMinute(float lateMinute) {
519   - this.lateMinute = lateMinute;
520   - }
521   -
522   - public String getRemarks() {
523   - return remarks;
524   - }
525   -
526   - public void setRemarks(String remarks) {
527   - this.remarks = remarks;
528   - }
529   -
530   - public String getDfsj() {
531   - return dfsj;
532   - }
533   -
534   - public void setDfsj(String dfsj) {
535   - this.dfsj = dfsj;
536   - }
537   -
538   - public Long getDfsjT() {
539   - return dfsjT;
540   - }
541   -
542   - public void setDfsjT(Long dfsjT) {
543   - this.dfsjT = dfsjT;
544   - }
545   -
546   - public Integer getDirectiveState() {
547   - return directiveState;
548   - }
549   -
550   - public void setDirectiveState(Integer directiveState) {
551   - this.directiveState = directiveState;
552   - }
553   -
554   - public String getQdzArrDatejh() {
555   - return qdzArrDatejh;
556   - }
557   -
558   - public void setQdzArrDatejh(String qdzArrDatejh) {
559   - this.qdzArrDatejh = qdzArrDatejh;
560   - }
561   -
562   - public String getQdzArrDatesj() {
563   - return qdzArrDatesj;
564   - }
565   -
566   - public void setQdzArrDatesj(String qdzArrDatesj) {
567   - this.qdzArrDatesj = qdzArrDatesj;
568   - }
569   -
570   - public Set<ChildTaskPlan> getcTasks() {
571   - return cTasks;
572   - }
573   -
574   - public void setcTasks(Set<ChildTaskPlan> cTasks) {
575   - this.cTasks = cTasks;
576   - }
577   -
578   - public String getGsName() {
579   - return gsName;
580   - }
581   -
582   - public void setGsName(String gsName) {
583   - this.gsName = gsName;
584   - }
585   -
586   - public String getGsBm() {
587   - return gsBm;
588   - }
589   -
590   - public void setGsBm(String gsBm) {
591   - this.gsBm = gsBm;
592   - }
593   -
594   - public String getFgsName() {
595   - return fgsName;
596   - }
597   -
598   - public void setFgsName(String fgsName) {
599   - this.fgsName = fgsName;
600   - }
601   -
602   - public String getFgsBm() {
603   - return fgsBm;
604   - }
605   -
606   - public void setFgsBm(String fgsBm) {
607   - this.fgsBm = fgsBm;
608   - }
609   -
610   - public boolean isDfAuto() {
611   - return dfAuto;
612   - }
613   -
614   - public void setDfAuto(boolean dfAuto) {
615   - this.dfAuto = dfAuto;
616   - }
617   -
618   - public boolean isOnline() {
619   - return online;
620   - }
621   -
622   - public void setOnline(boolean online) {
623   - this.online = online;
624   - }
625   -
626   - public boolean isReissue() {
627   - return reissue;
628   - }
629   -
630   - public void setReissue(boolean reissue) {
631   - this.reissue = reissue;
632   - }
633   -
634   - public Integer getDriftStatus() {
635   - return driftStatus;
636   - }
637   -
638   - public void setDriftStatus(Integer driftStatus) {
639   - this.driftStatus = driftStatus;
640   - }
641   -
642   - public boolean isCcService() {
643   - return ccService;
644   - }
645   -
646   - public void setCcService(boolean ccService) {
647   - this.ccService = ccService;
648   - }
649   -}
src/main/java/com/bsth/websocket/handler/SendUtils.java
... ... @@ -7,7 +7,6 @@ import com.bsth.data.gpsdata_v2.entity.GpsEntity;
7 7 import com.bsth.data.safe_driv.SafeDriv;
8 8 import com.bsth.entity.directive.D80;
9 9 import com.bsth.entity.realcontrol.ScheduleRealInfo;
10   -import com.bsth.websocket.entity.WsScheduleRealInfo;
11 10 import com.fasterxml.jackson.core.JsonProcessingException;
12 11 import com.fasterxml.jackson.databind.ObjectMapper;
13 12 import org.slf4j.Logger;
... ... @@ -39,7 +38,7 @@ public class SendUtils{
39 38  
40 39 Map<String, Object> map = new HashMap<>();
41 40 map.put("fn", "faChe");
42   - map.put("t", WsScheduleRealInfo.getInstance(sch));
  41 + map.put("t", sch);
43 42 map.put("dataStr", sdf.format(new Date()));
44 43  
45 44 ObjectMapper mapper = new ObjectMapper();
... ... @@ -63,7 +62,7 @@ public class SendUtils{
63 62  
64 63 Map<String, Object> map = new HashMap<>();
65 64 map.put("fn", "refreshSch");
66   - map.put("ts", WsScheduleRealInfo.getMultiInstance(list));
  65 + map.put("ts", list);
67 66  
68 67 ObjectMapper mapper = new ObjectMapper();
69 68  
... ... @@ -83,8 +82,8 @@ public class SendUtils{
83 82  
84 83 Map<String, Object> map = new HashMap<>();
85 84 map.put("fn", "zhongDian");
86   - map.put("t", WsScheduleRealInfo.getInstance(sch));
87   - map.put("nt", WsScheduleRealInfo.getInstance(nextSch));
  85 + map.put("t", sch);
  86 + map.put("nt", nextSch);
88 87 map.put("finish", finish);
89 88 map.put("dataStr", sdf.format(new Date()));
90 89  
... ... @@ -124,7 +123,7 @@ public class SendUtils{
124 123  
125 124 Map<String, Object> map = new HashMap<>();
126 125 map.put("fn", "directive");
127   - map.put("t", WsScheduleRealInfo.getInstance(sch));;
  126 + map.put("t", sch);;
128 127  
129 128 ObjectMapper mapper = new ObjectMapper();
130 129  
... ...
src/main/resources/static/real_control_v2/fragments/north/nav/all_devices.html
... ... @@ -43,10 +43,10 @@
43 43 </select>
44 44 </div>
45 45 <button class="uk-button search-btn" title="只支持后模糊">检索</button>
46   - <label class="auto-refresh" >
  46 + <!--<label class="auto-refresh" >
47 47 <input type="checkbox" value="1" name="schCBox" class="i-cbox">
48 48 自动刷新
49   - </label>
  49 + </label>-->
50 50 </fieldset>
51 51 </form>
52 52 </div>
... ...
src/main/resources/static/real_control_v2/js/main.js
... ... @@ -168,8 +168,8 @@ var disabled_submit_btn = function (form) {
168 168 function showUpdateDescription() {
169 169 //更新说明
170 170 var updateDescription = {
171   - date: '2017-11-24',
172   - text: '<h5>1、修复23号下午更新后出现的部分线路班次执行问题。</h5><h5>2、尝试接入成山路停车场的RFID信号,以弥补成山路停车场高峰时GPS信号弱的问题。</h5><h5>3、报表管理里加入 “班次车辆人员日统计”</h5><h5>4、现在“历史班次调整”里可以修改烂班原因和售票员</h5>'
  171 + date: '2017-11-25_中午',
  172 + text: '<h5>1、修复这个版本的一个问题,这个问题导致首站和第二站重叠的时候无法发车。</h5><h5>2、修复455路因 昌邑路民生路 和 昌邑路苗圃路 站点顺序颠倒引发的上下行跳动问题。</h5><h5>3、放宽对中途站的检测机制,如果仍然有线路出现上下行乱跳的问题,及时上报管理员。</h5>'
173 173 };
174 174  
175 175 var storage = window.localStorage
... ...