Commit fbb5769ff1f7ec707ac809095d59591f795bed62
1 parent
39ac8765
up
Showing
1 changed file
with
48 additions
and
6 deletions
src/main/java/com/bsth/service/realcontrol/buffer/ScheduleBuffer.java
| 1 | package com.bsth.service.realcontrol.buffer; | 1 | package com.bsth.service.realcontrol.buffer; |
| 2 | 2 | ||
| 3 | +import java.util.ArrayList; | ||
| 3 | import java.util.Collections; | 4 | import java.util.Collections; |
| 4 | import java.util.Comparator; | 5 | import java.util.Comparator; |
| 5 | import java.util.HashMap; | 6 | import java.util.HashMap; |
| @@ -28,8 +29,7 @@ public class ScheduleBuffer { | @@ -28,8 +29,7 @@ public class ScheduleBuffer { | ||
| 28 | static Logger logger = LoggerFactory.getLogger(ScheduleBuffer.class); | 29 | static Logger logger = LoggerFactory.getLogger(ScheduleBuffer.class); |
| 29 | 30 | ||
| 30 | /** | 31 | /** |
| 31 | - * 当天实际排班 | ||
| 32 | - * K 线路编码 V 按时间升序的班次 | 32 | + * 当天实际排班 K 线路编码 V 按时间升序的班次 |
| 33 | */ | 33 | */ |
| 34 | public static ArrayListMultimap<String, ScheduleRealInfo> schedulListMap; | 34 | public static ArrayListMultimap<String, ScheduleRealInfo> schedulListMap; |
| 35 | 35 | ||
| @@ -55,22 +55,26 @@ public class ScheduleBuffer { | @@ -55,22 +55,26 @@ public class ScheduleBuffer { | ||
| 55 | */ | 55 | */ |
| 56 | public static LinkedList<ScheduleRealInfo> persistentList; | 56 | public static LinkedList<ScheduleRealInfo> persistentList; |
| 57 | 57 | ||
| 58 | + /** K: 线路编码_上下行 V: 班次平均间隔时间 */ | ||
| 59 | + public static Map<String , Long> schSpaceMap; | ||
| 60 | + | ||
| 58 | /** | 61 | /** |
| 59 | - * 线路是否托管 | ||
| 60 | - * K:线路编码 V:0 托管 1 非托管 | 62 | + * 线路是否托管 K:线路编码 V:0 托管 1 非托管 |
| 61 | */ | 63 | */ |
| 62 | public static Map<Integer, Integer> trustMap; | 64 | public static Map<Integer, Integer> trustMap; |
| 63 | 65 | ||
| 64 | static ScheduleComparator scheduleComparator = new ScheduleComparator(); | 66 | static ScheduleComparator scheduleComparator = new ScheduleComparator(); |
| 65 | 67 | ||
| 66 | static{ | 68 | static{ |
| 69 | + clear(); | ||
| 70 | + } | ||
| 71 | + | ||
| 72 | + public static void clear(){ | ||
| 67 | schedulListMap = ArrayListMultimap.create(); | 73 | schedulListMap = ArrayListMultimap.create(); |
| 68 | pkSchedulMap = new HashMap<>(); | 74 | pkSchedulMap = new HashMap<>(); |
| 69 | persistentList = new LinkedList<>(); | 75 | persistentList = new LinkedList<>(); |
| 70 | vehLinkedMap = new HashMap<>(); | 76 | vehLinkedMap = new HashMap<>(); |
| 71 | - | ||
| 72 | finishLinkedMap = LinkedListMultimap.create(); | 77 | finishLinkedMap = LinkedListMultimap.create(); |
| 73 | - | ||
| 74 | trustMap = new HashMap<>(); | 78 | trustMap = new HashMap<>(); |
| 75 | } | 79 | } |
| 76 | 80 | ||
| @@ -102,6 +106,9 @@ public class ScheduleBuffer { | @@ -102,6 +106,9 @@ public class ScheduleBuffer { | ||
| 102 | Set<String> codes = schedulListMap.keySet(); | 106 | Set<String> codes = schedulListMap.keySet(); |
| 103 | for(String code : codes) | 107 | for(String code : codes) |
| 104 | calcArrDateQd(code); | 108 | calcArrDateQd(code); |
| 109 | + | ||
| 110 | + //计算班次平均间隔 | ||
| 111 | + //calcAvgSpace(); | ||
| 105 | }catch(Exception e){ | 112 | }catch(Exception e){ |
| 106 | logger.error("缓存排班数据失败...", e); | 113 | logger.error("缓存排班数据失败...", e); |
| 107 | return -1; | 114 | return -1; |
| @@ -109,6 +116,41 @@ public class ScheduleBuffer { | @@ -109,6 +116,41 @@ public class ScheduleBuffer { | ||
| 109 | return 0; | 116 | return 0; |
| 110 | } | 117 | } |
| 111 | 118 | ||
| 119 | + //计算平均间隔 | ||
| 120 | + public static void calcAvgSpace(){ | ||
| 121 | + schSpaceMap = new HashMap<>(); | ||
| 122 | + Set<String> set = schedulListMap.keySet(); | ||
| 123 | + | ||
| 124 | + List<ScheduleRealInfo> list = null | ||
| 125 | + ,upList = null | ||
| 126 | + ,downList = null; | ||
| 127 | + for(String lineCode : set){ | ||
| 128 | + list = schedulListMap.get(lineCode); | ||
| 129 | + Long sumUp = 0L, sumDown = 0L; | ||
| 130 | + | ||
| 131 | + upList = new ArrayList<>(); | ||
| 132 | + downList = new ArrayList<>(); | ||
| 133 | + //按上下行分组 | ||
| 134 | + for(ScheduleRealInfo sch : list){ | ||
| 135 | + if(sch.getXlDir().equals("0")) | ||
| 136 | + upList.add(sch); | ||
| 137 | + else | ||
| 138 | + downList.add(sch); | ||
| 139 | + } | ||
| 140 | + for(int i = 1; i < upList.size(); i ++){ | ||
| 141 | + sumUp += (upList.get(i).getFcsjT() - upList.get(i - 1).getFcsjT()); | ||
| 142 | + } | ||
| 143 | + | ||
| 144 | + for(int i = 1; i < downList.size(); i ++){ | ||
| 145 | + sumDown += (downList.get(i).getFcsjT() - downList.get(i - 1).getFcsjT()); | ||
| 146 | + } | ||
| 147 | + | ||
| 148 | + schSpaceMap.put(lineCode + "_0", sumUp / upList.size()); | ||
| 149 | + schSpaceMap.put(lineCode + "_1", sumDown / downList.size()); | ||
| 150 | + } | ||
| 151 | + System.out.println(schSpaceMap); | ||
| 152 | + } | ||
| 153 | + | ||
| 112 | public static int put(ScheduleRealInfo sch){ | 154 | public static int put(ScheduleRealInfo sch){ |
| 113 | schedulListMap.put(sch.getXlBm(), sch); | 155 | schedulListMap.put(sch.getXlBm(), sch); |
| 114 | pkSchedulMap.put(sch.getId(), sch); | 156 | pkSchedulMap.put(sch.getId(), sch); |