Commit 2d3c0cc01579bfd6bdba237cf7607b15d500bfbd
1 parent
a917eba4
update...
Showing
7 changed files
with
81 additions
and
24 deletions
src/main/java/com/bsth/controller/realcontrol/AdminUtilsController.java
| ... | ... | @@ -5,6 +5,7 @@ import com.bsth.data.gpsdata_v2.cache.GeoCacheData; |
| 5 | 5 | import com.bsth.data.gpsdata_v2.thread.GpsDataLoaderThread; |
| 6 | 6 | import com.bsth.data.msg_queue.DirectivePushQueue; |
| 7 | 7 | import com.bsth.data.msg_queue.WebSocketPushQueue; |
| 8 | +import com.bsth.data.pilot80.PilotReport; | |
| 8 | 9 | import com.bsth.data.schedule.DayOfSchedule; |
| 9 | 10 | import com.bsth.entity.realcontrol.ScheduleRealInfo; |
| 10 | 11 | import com.bsth.websocket.handler.SendUtils; |
| ... | ... | @@ -41,6 +42,9 @@ public class AdminUtilsController { |
| 41 | 42 | @Autowired |
| 42 | 43 | SendUtils sendUtils; |
| 43 | 44 | |
| 45 | + @Autowired | |
| 46 | + PilotReport pilotReport; | |
| 47 | + | |
| 44 | 48 | /** |
| 45 | 49 | * 出现重复班次的车辆 |
| 46 | 50 | * @param |
| ... | ... | @@ -132,6 +136,7 @@ public class AdminUtilsController { |
| 132 | 136 | public Map<String, Integer> containerSize(){ |
| 133 | 137 | Map<String, Integer> rs = new HashMap<>(); |
| 134 | 138 | rs.put("60_size", dayOfDirectives.all60().size()); |
| 139 | + rs.put("80_size", pilotReport.findAll().size()); | |
| 135 | 140 | rs.put("nbbm_sch_size", dayOfSchedule.findAll().size()); |
| 136 | 141 | rs.put("lp_sch_size", dayOfSchedule.findAllByLpContainer().size()); |
| 137 | 142 | rs.put("id_sch_size", dayOfSchedule.findAllByIdContainer().size()); | ... | ... |
src/main/java/com/bsth/data/directive/DayOfDirectives.java
| ... | ... | @@ -16,6 +16,7 @@ import org.springframework.stereotype.Component; |
| 16 | 16 | |
| 17 | 17 | import java.util.*; |
| 18 | 18 | import java.util.concurrent.ConcurrentHashMap; |
| 19 | +import java.util.concurrent.ConcurrentMap; | |
| 19 | 20 | |
| 20 | 21 | /** |
| 21 | 22 | * |
| ... | ... | @@ -29,13 +30,10 @@ import java.util.concurrent.ConcurrentHashMap; |
| 29 | 30 | public class DayOfDirectives { |
| 30 | 31 | |
| 31 | 32 | // 当日60指令缓存 |
| 32 | - private static Map<Integer, D60> d60Map; | |
| 33 | + private static ConcurrentMap<Integer, D60> d60Map; | |
| 33 | 34 | |
| 34 | 35 | // 线路切换指令 64 |
| 35 | - public static Map<String, D64> d64Map; | |
| 36 | - | |
| 37 | - //等待C0_A4回复的用户 | |
| 38 | - //public static Map<K, V> | |
| 36 | + public static ConcurrentMap<String, D64> d64Map; | |
| 39 | 37 | |
| 40 | 38 | //等待入库的指令 |
| 41 | 39 | public static LinkedList<Directive> pstDirectives; |
| ... | ... | @@ -149,9 +147,53 @@ public class DayOfDirectives { |
| 149 | 147 | return; |
| 150 | 148 | |
| 151 | 149 | directiveService.save(d60); |
| 150 | + } | |
| 151 | + | |
| 152 | + public void clear(String lineCode){ | |
| 153 | + int c60 = 0, c64 = 0; | |
| 154 | + | |
| 155 | + Collection<D60> d60s = d60Map.values(); | |
| 156 | + List<D60> rem60List = new ArrayList<>(); | |
| 157 | + for(D60 d60 : d60s){ | |
| 158 | + if(d60.getLineCode().equals(lineCode)) | |
| 159 | + rem60List.add(d60); | |
| 160 | + } | |
| 161 | + | |
| 162 | + //清除60数据 | |
| 163 | + for(D60 d60 : rem60List){ | |
| 164 | + if(d60.getReply47() == null) | |
| 165 | + directiveService.save(d60); | |
| 166 | + if(null != d60Map.remove(d60.getMsgId())) | |
| 167 | + c60 ++; | |
| 168 | + } | |
| 169 | + | |
| 170 | + rem60List.clear(); | |
| 171 | + if(c60 > 0) | |
| 172 | + logger.info("清除60数据 ," + c60); | |
| 173 | + | |
| 174 | + //找到该设备的64数据 | |
| 175 | + Collection<D64> d64s = d64Map.values(); | |
| 176 | + List<D64> rem64List = new ArrayList<>(); | |
| 177 | + for(D64 d64 : d64s){ | |
| 178 | + if(d64.get) | |
| 179 | + rem64List.add(d64); | |
| 180 | + } | |
| 181 | + | |
| 182 | + //清除64数据 | |
| 183 | + for(D64 d64 : rem64List){ | |
| 184 | + if(d64.getRespAck() == null) | |
| 185 | + directiveService.save64(d64); | |
| 186 | + | |
| 187 | + if(null != d64Map.remove(d64.getKey())) | |
| 188 | + c64 ++; | |
| 189 | + } | |
| 190 | + | |
| 191 | + rem64List.clear(); | |
| 192 | + if(c64 > 0) | |
| 193 | + logger.info("清除64数据 ," + c64); | |
| 152 | 194 | }*/ |
| 153 | - | |
| 154 | - public void clear(String device){ | |
| 195 | + | |
| 196 | +/* public void clear(String device){ | |
| 155 | 197 | int c60 = 0, c64 = 0; |
| 156 | 198 | |
| 157 | 199 | Collection<D60> d60s = d60Map.values(); |
| ... | ... | @@ -193,6 +235,12 @@ public class DayOfDirectives { |
| 193 | 235 | rem64List.clear(); |
| 194 | 236 | if(c64 > 0) |
| 195 | 237 | logger.info("清除64数据 ," + c64); |
| 238 | + }*/ | |
| 239 | + | |
| 240 | + public void clearAll(){ | |
| 241 | + d60Map = new ConcurrentHashMap<>(); | |
| 242 | + d64Map = new ConcurrentHashMap<>(); | |
| 243 | + logger.info("清除指令数据 ,,,"); | |
| 196 | 244 | } |
| 197 | 245 | |
| 198 | 246 | public Collection<D60> all60(){ | ... | ... |
src/main/java/com/bsth/data/gpsdata_v2/handlers/overspeed/OverspeedProcess.java
| ... | ... | @@ -43,7 +43,7 @@ public class OverspeedProcess { |
| 43 | 43 | */ |
| 44 | 44 | private static Map<String, Integer> contSpeedMap; |
| 45 | 45 | |
| 46 | - Logger logger = LoggerFactory.getLogger(this.getClass()); | |
| 46 | + static Logger logger = LoggerFactory.getLogger(OverspeedProcess.class); | |
| 47 | 47 | |
| 48 | 48 | static{ |
| 49 | 49 | multimap = ArrayListMultimap.create(); |
| ... | ... | @@ -60,6 +60,8 @@ public class OverspeedProcess { |
| 60 | 60 | |
| 61 | 61 | realOverspeedMap = null; |
| 62 | 62 | realOverspeedMap = new HashMap(); |
| 63 | + | |
| 64 | + logger.info("清理超速缓存数据,,,"); | |
| 63 | 65 | } |
| 64 | 66 | |
| 65 | 67 | public boolean process(GpsEntity gps){ | ... | ... |
src/main/java/com/bsth/data/safe_driv/SafeDrivCenter.java
| ... | ... | @@ -3,6 +3,8 @@ package com.bsth.data.safe_driv; |
| 3 | 3 | import com.bsth.websocket.handler.SendUtils; |
| 4 | 4 | import org.joda.time.format.DateTimeFormat; |
| 5 | 5 | import org.joda.time.format.DateTimeFormatter; |
| 6 | +import org.slf4j.Logger; | |
| 7 | +import org.slf4j.LoggerFactory; | |
| 6 | 8 | import org.springframework.beans.BeansException; |
| 7 | 9 | import org.springframework.beans.factory.annotation.Autowired; |
| 8 | 10 | import org.springframework.context.ApplicationContext; |
| ... | ... | @@ -33,6 +35,8 @@ public class SafeDrivCenter implements ApplicationContextAware { |
| 33 | 35 | */ |
| 34 | 36 | private static Map<String, SafeDriv> safeMap; |
| 35 | 37 | |
| 38 | + static Logger logger = LoggerFactory.getLogger(SafeDrivCenter.class); | |
| 39 | + | |
| 36 | 40 | static { |
| 37 | 41 | data = new HashSet<>(); |
| 38 | 42 | safeMap = new HashMap<>(); |
| ... | ... | @@ -61,6 +65,7 @@ public class SafeDrivCenter implements ApplicationContextAware { |
| 61 | 65 | public static void clear(){ |
| 62 | 66 | data = new HashSet<>(); |
| 63 | 67 | safeMap = new HashMap<>(); |
| 68 | + logger.info("清除安全驾驶数据,,,"); | |
| 64 | 69 | } |
| 65 | 70 | |
| 66 | 71 | @Override | ... | ... |
src/main/java/com/bsth/data/schedule/thread/CalcOilThread.java
| 1 | 1 | package com.bsth.data.schedule.thread; |
| 2 | 2 | |
| 3 | +import com.bsth.data.directive.DayOfDirectives; | |
| 3 | 4 | import com.bsth.data.gpsdata_v2.handlers.overspeed.OverspeedProcess; |
| 4 | 5 | import com.bsth.service.oil.DlbService; |
| 5 | 6 | import com.bsth.data.safe_driv.SafeDrivCenter; |
| ... | ... | @@ -27,6 +28,9 @@ public class CalcOilThread extends Thread{ |
| 27 | 28 | SheetService sheetService; |
| 28 | 29 | Logger logger = LoggerFactory.getLogger(this.getClass()); |
| 29 | 30 | |
| 31 | + @Autowired | |
| 32 | + DayOfDirectives dayOfDirectives; | |
| 33 | + | |
| 30 | 34 | @Override |
| 31 | 35 | public void run() { |
| 32 | 36 | try{ |
| ... | ... | @@ -37,12 +41,15 @@ public class CalcOilThread extends Thread{ |
| 37 | 41 | logger.info("开始计算班次准点率...."); |
| 38 | 42 | sheetService.saveSheetList(""); |
| 39 | 43 | logger.info("计算班次准点率结束!"); |
| 40 | - //清除安全驾驶数据 先临时蹭这个线程 | |
| 41 | - SafeDrivCenter.clear(); | |
| 42 | - //清除超速缓存数据 | |
| 43 | - OverspeedProcess.clear(); | |
| 44 | 44 | } catch(Exception e){ |
| 45 | 45 | logger.error("计算路单里程加注量失败",e); |
| 46 | 46 | } |
| 47 | + | |
| 48 | + //清除指令数据 | |
| 49 | + dayOfDirectives.clearAll(); | |
| 50 | + //清除安全驾驶数据 | |
| 51 | + SafeDrivCenter.clear(); | |
| 52 | + //清除超速缓存数据 | |
| 53 | + OverspeedProcess.clear(); | |
| 47 | 54 | } |
| 48 | 55 | } | ... | ... |
src/main/java/com/bsth/data/schedule/thread/ScheduleRefreshThread.java
| 1 | 1 | package com.bsth.data.schedule.thread; |
| 2 | 2 | |
| 3 | -import com.bsth.data.BasicData; | |
| 4 | 3 | import com.bsth.data.LineConfigData; |
| 5 | 4 | import com.bsth.data.directive.DayOfDirectives; |
| 6 | 5 | import com.bsth.data.gpsdata_v2.cache.GpsCacheData; |
| ... | ... | @@ -56,17 +55,15 @@ public class ScheduleRefreshThread extends Thread{ |
| 56 | 55 | |
| 57 | 56 | if(oldSchDate == null || !oldSchDate.equals(currSchDate)){ |
| 58 | 57 | |
| 59 | - //logger.info(lineCode + "开始翻班, " + currSchDate); | |
| 60 | - | |
| 61 | 58 | try{ |
| 62 | - //清除指令数据 | |
| 63 | 59 | Set<String> cars = dayOfSchedule.findCarByLineCode(lineCode); |
| 64 | 60 | for(String car : cars){ |
| 65 | - dayOfDirectives.clear(BasicData.deviceId2NbbmMap.inverse().get(car)); | |
| 66 | 61 | GpsCacheData.remove(car); |
| 67 | 62 | } |
| 68 | 63 | //清除驾驶员上报数据 |
| 69 | 64 | pilotReport.clear(lineCode); |
| 65 | + //清除指令数据 指令数据,直接定时全部清空 | |
| 66 | + //dayOfDirectives.clear(lineCode); | |
| 70 | 67 | }catch (Exception e){ |
| 71 | 68 | logger.error("清理 60 和 80出现问题", e); |
| 72 | 69 | } | ... | ... |
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
| ... | ... | @@ -698,13 +698,6 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 698 | 698 | //数据库删除 |
| 699 | 699 | rs = super.delete(id); |
| 700 | 700 | if(rs.get("status").equals(ResponseCode.SUCCESS)){ |
| 701 | - /*ScheduleRealInfo temp = super.findById(id); | |
| 702 | - if(temp != null){ | |
| 703 | - rs.put("status", ResponseCode.ERROR); | |
| 704 | - rs.put("msg", "删除失败,请重试!"); | |
| 705 | - return rs; | |
| 706 | - }*/ | |
| 707 | - | |
| 708 | 701 | dayOfSchedule.delete(sch); |
| 709 | 702 | //更新起点应到时间 |
| 710 | 703 | List<ScheduleRealInfo> ts = dayOfSchedule.updateQdzTimePlan(sch); | ... | ... |