Commit be7e31bf078ce33f261224f5b469df4ceeae1e97
1 parent
c3956eea
1.加入获取不在岗的出场班次接口
Showing
2 changed files
with
104 additions
and
74 deletions
src/main/java/com/bsth/server_rs/schedule/real/SchRealDataBuffer.java
| 1 | -package com.bsth.server_rs.schedule.real; | |
| 2 | - | |
| 3 | -import com.alibaba.fastjson.JSONObject; | |
| 4 | -import com.bsth.entity.ScheduleRealInfo; | |
| 5 | -import com.google.common.collect.ArrayListMultimap; | |
| 6 | -import org.apache.commons.lang3.StringUtils; | |
| 7 | -import org.springframework.stereotype.Component; | |
| 8 | - | |
| 9 | -import java.util.Collection; | |
| 10 | -import java.util.List; | |
| 11 | -import java.util.Map; | |
| 12 | - | |
| 13 | -/** | |
| 14 | - * 实际排班缓存 | |
| 15 | - * Created by panzhao on 2017/9/27. | |
| 16 | - */ | |
| 17 | -@Component | |
| 18 | -public class SchRealDataBuffer { | |
| 19 | - | |
| 20 | - /** | |
| 21 | - * 进出场班次数据,定时从调度系统获取。 对各场站输出 | |
| 22 | - */ | |
| 23 | - private static ArrayListMultimap<String, ScheduleRealInfo> inOutMap; | |
| 24 | - | |
| 25 | - /** | |
| 26 | - * 车辆 和 当前正在执行班次对照 | |
| 27 | - */ | |
| 28 | - private static Map<String, JSONObject> execMap; | |
| 29 | - | |
| 30 | - public void putInOutData(List<ScheduleRealInfo> list) { | |
| 31 | - ArrayListMultimap<String, ScheduleRealInfo> inOutMapCopy = ArrayListMultimap.create(); | |
| 32 | - | |
| 33 | - String type; | |
| 34 | - for (ScheduleRealInfo sch : list) { | |
| 35 | - type = sch.getBcType(); | |
| 36 | - if (StringUtils.isEmpty(type)) | |
| 37 | - continue; | |
| 38 | - | |
| 39 | - if (type.equals("in")) | |
| 40 | - inOutMapCopy.put(sch.getZdzCode(), sch); | |
| 41 | - else if (type.equals("out")) | |
| 42 | - inOutMapCopy.put(sch.getQdzCode(), sch); | |
| 43 | - } | |
| 44 | - | |
| 45 | - inOutMap = inOutMapCopy; | |
| 46 | - } | |
| 47 | - | |
| 48 | - | |
| 49 | - public void setExecMap(Map<String, JSONObject> map) { | |
| 50 | - if (map.size() > 0) | |
| 51 | - execMap = map; | |
| 52 | - } | |
| 53 | - | |
| 54 | - public List<ScheduleRealInfo> findByParkCode(String parkCode) { | |
| 55 | - return inOutMap.get(parkCode); | |
| 56 | - } | |
| 57 | - | |
| 58 | - /* public List<JSONObject> findExec(List<String> cars){ | |
| 59 | - List<JSONObject> rs = new ArrayList<>(cars.size()); | |
| 60 | - | |
| 61 | - for(String nbbm : cars){ | |
| 62 | - rs.add(execMap.get(nbbm)); | |
| 63 | - } | |
| 64 | - return rs; | |
| 65 | - }*/ | |
| 66 | - | |
| 67 | - public JSONObject getExecPlan(String nbbm) { | |
| 68 | - return execMap.get(nbbm); | |
| 69 | - } | |
| 70 | - | |
| 71 | - public Collection<JSONObject> execs() { | |
| 72 | - return execMap.values(); | |
| 73 | - } | |
| 74 | -} | |
| 1 | +package com.bsth.server_rs.schedule.real; | |
| 2 | + | |
| 3 | +import com.alibaba.fastjson.JSONObject; | |
| 4 | +import com.bsth.entity.ScheduleRealInfo; | |
| 5 | +import com.google.common.collect.ArrayListMultimap; | |
| 6 | +import org.apache.commons.lang3.StringUtils; | |
| 7 | +import org.springframework.stereotype.Component; | |
| 8 | + | |
| 9 | +import java.util.Collection; | |
| 10 | +import java.util.List; | |
| 11 | +import java.util.Map; | |
| 12 | + | |
| 13 | +/** | |
| 14 | + * 实际排班缓存 | |
| 15 | + * Created by panzhao on 2017/9/27. | |
| 16 | + */ | |
| 17 | +@Component | |
| 18 | +public class SchRealDataBuffer { | |
| 19 | + | |
| 20 | + /** | |
| 21 | + * 进出场班次数据,定时从调度系统获取。 对各场站输出 | |
| 22 | + */ | |
| 23 | + private static ArrayListMultimap<String, ScheduleRealInfo> inOutMap; | |
| 24 | + | |
| 25 | + /** | |
| 26 | + * 车辆 和 当前正在执行班次对照 | |
| 27 | + */ | |
| 28 | + private static Map<String, JSONObject> execMap; | |
| 29 | + | |
| 30 | + public void putInOutData(List<ScheduleRealInfo> list) { | |
| 31 | + ArrayListMultimap<String, ScheduleRealInfo> inOutMapCopy = ArrayListMultimap.create(); | |
| 32 | + | |
| 33 | + String type; | |
| 34 | + for (ScheduleRealInfo sch : list) { | |
| 35 | + type = sch.getBcType(); | |
| 36 | + if (StringUtils.isEmpty(type)) | |
| 37 | + continue; | |
| 38 | + | |
| 39 | + if (type.equals("in")) | |
| 40 | + inOutMapCopy.put(sch.getZdzCode(), sch); | |
| 41 | + else if (type.equals("out")) | |
| 42 | + inOutMapCopy.put(sch.getQdzCode(), sch); | |
| 43 | + } | |
| 44 | + | |
| 45 | + inOutMap = inOutMapCopy; | |
| 46 | + } | |
| 47 | + | |
| 48 | + public Collection<ScheduleRealInfo> getInOutData() { | |
| 49 | + return inOutMap.values(); | |
| 50 | + } | |
| 51 | + | |
| 52 | + public void setExecMap(Map<String, JSONObject> map) { | |
| 53 | + if (map.size() > 0) | |
| 54 | + execMap = map; | |
| 55 | + } | |
| 56 | + | |
| 57 | + public List<ScheduleRealInfo> findByParkCode(String parkCode) { | |
| 58 | + return inOutMap.get(parkCode); | |
| 59 | + } | |
| 60 | + | |
| 61 | + /* public List<JSONObject> findExec(List<String> cars){ | |
| 62 | + List<JSONObject> rs = new ArrayList<>(cars.size()); | |
| 63 | + | |
| 64 | + for(String nbbm : cars){ | |
| 65 | + rs.add(execMap.get(nbbm)); | |
| 66 | + } | |
| 67 | + return rs; | |
| 68 | + }*/ | |
| 69 | + | |
| 70 | + public JSONObject getExecPlan(String nbbm) { | |
| 71 | + return execMap.get(nbbm); | |
| 72 | + } | |
| 73 | + | |
| 74 | + public Collection<JSONObject> execs() { | |
| 75 | + return execMap.values(); | |
| 76 | + } | |
| 77 | +} | ... | ... |
src/main/java/com/bsth/server_rs/schedule/real/ScheduleRealService.java
| ... | ... | @@ -14,6 +14,8 @@ import com.bsth.server_rs.base_info.car.Car; |
| 14 | 14 | import com.bsth.server_rs.base_info.car.buffer.CarBufferData; |
| 15 | 15 | import com.bsth.server_rs.base_info.line.Line; |
| 16 | 16 | import com.bsth.server_rs.base_info.line.buffer.LineBufferData; |
| 17 | +import com.bsth.server_rs.gps.buffer.GpsRealDataBuffer; | |
| 18 | +import com.bsth.server_rs.gps.entity.GpsEntity; | |
| 17 | 19 | import com.bsth.server_rs.schedule.dto.ScheduleCcInfoConfig; |
| 18 | 20 | import com.bsth.server_rs.schedule.dto.ScheduleInOut; |
| 19 | 21 | import com.bsth.server_rs.schedule.dto.ScheduleRealInfoDTO_JK; |
| ... | ... | @@ -303,6 +305,31 @@ public class ScheduleRealService implements InitializingBean { |
| 303 | 305 | return rs; |
| 304 | 306 | } |
| 305 | 307 | |
| 308 | + /** | |
| 309 | + * 获取不在岗的班次信息 | |
| 310 | + */ | |
| 311 | + @GET | |
| 312 | + @Path("/notOnDuty") | |
| 313 | + public List<ScheduleRealInfo> notOnDuty() { | |
| 314 | + List<ScheduleRealInfo> result = new ArrayList<>(); | |
| 315 | + Collection<ScheduleRealInfo> collection = schRealDataBuffer.getInOutData(); | |
| 316 | + long now = System.currentTimeMillis(); | |
| 317 | + for (ScheduleRealInfo sch : collection) { | |
| 318 | + if ("in".equals(sch.getBcType())) { | |
| 319 | + continue; | |
| 320 | + } | |
| 321 | + GpsEntity gpsEntity = GpsRealDataBuffer.get(CarBufferData.findOne(sch.getClZbh()).getEquipmentCode()); | |
| 322 | + long schIntervalMillis = sch.getDfsjT() - now, gpsIntervalMillis = sch.getDfsjT() - (gpsEntity == null ? 0 : gpsEntity.getTimestamp()); | |
| 323 | + boolean isSchMatch = schIntervalMillis > 0 && schIntervalMillis < 1200000, isGpsMatch = gpsIntervalMillis > 1200000; | |
| 324 | + // 当前时间往后20分钟内的出场班次 且相应车辆在待发时间20分钟内无GPS数据 | |
| 325 | + if (isSchMatch && isGpsMatch) { | |
| 326 | + result.add(sch); | |
| 327 | + } | |
| 328 | + } | |
| 329 | + | |
| 330 | + return result; | |
| 331 | + } | |
| 332 | + | |
| 306 | 333 | @Override |
| 307 | 334 | public void afterPropertiesSet() throws Exception { |
| 308 | 335 | /*Application.mainServices.scheduleWithFixedDelay(new Runnable() { | ... | ... |