Commit fbb5769ff1f7ec707ac809095d59591f795bed62

Authored by 潘钊
1 parent 39ac8765

up

src/main/java/com/bsth/service/realcontrol/buffer/ScheduleBuffer.java
1 1 package com.bsth.service.realcontrol.buffer;
2 2  
  3 +import java.util.ArrayList;
3 4 import java.util.Collections;
4 5 import java.util.Comparator;
5 6 import java.util.HashMap;
... ... @@ -28,8 +29,7 @@ public class ScheduleBuffer {
28 29 static Logger logger = LoggerFactory.getLogger(ScheduleBuffer.class);
29 30  
30 31 /**
31   - * 当天实际排班
32   - * K 线路编码 V 按时间升序的班次
  32 + * 当天实际排班 K 线路编码 V 按时间升序的班次
33 33 */
34 34 public static ArrayListMultimap<String, ScheduleRealInfo> schedulListMap;
35 35  
... ... @@ -55,22 +55,26 @@ public class ScheduleBuffer {
55 55 */
56 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 64 public static Map<Integer, Integer> trustMap;
63 65  
64 66 static ScheduleComparator scheduleComparator = new ScheduleComparator();
65 67  
66 68 static{
  69 + clear();
  70 + }
  71 +
  72 + public static void clear(){
67 73 schedulListMap = ArrayListMultimap.create();
68 74 pkSchedulMap = new HashMap<>();
69 75 persistentList = new LinkedList<>();
70 76 vehLinkedMap = new HashMap<>();
71   -
72 77 finishLinkedMap = LinkedListMultimap.create();
73   -
74 78 trustMap = new HashMap<>();
75 79 }
76 80  
... ... @@ -102,6 +106,9 @@ public class ScheduleBuffer {
102 106 Set<String> codes = schedulListMap.keySet();
103 107 for(String code : codes)
104 108 calcArrDateQd(code);
  109 +
  110 + //计算班次平均间隔
  111 + //calcAvgSpace();
105 112 }catch(Exception e){
106 113 logger.error("缓存排班数据失败...", e);
107 114 return -1;
... ... @@ -109,6 +116,41 @@ public class ScheduleBuffer {
109 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 154 public static int put(ScheduleRealInfo sch){
113 155 schedulListMap.put(sch.getXlBm(), sch);
114 156 pkSchedulMap.put(sch.getId(), sch);
... ...