Commit fbb5769ff1f7ec707ac809095d59591f795bed62

Authored by 潘钊
1 parent 39ac8765

up

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);