Commit 39ac8765819dfd3cd2af2778b5066391eeb85996

Authored by 潘钊
1 parent bf72abb6

update

src/main/java/com/bsth/entity/schedule/SchedulePlanInfo.java
... ... @@ -135,11 +135,11 @@ public class SchedulePlanInfo {
135 135  
136 136  
137 137 @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
138   -/* @JoinTable(
  138 + @JoinTable(
139 139 name = "bsth_c_s_sp_r_info",
140 140 joinColumns = @JoinColumn(name = "sp_info_id"),
141 141 inverseJoinColumns = @JoinColumn(name = "sp_id")
142   - )*/
  142 + )
143 143 private SchedulePlan schedulePlan;
144 144  
145 145 public SchedulePlanInfo() {}
... ...
src/main/java/com/bsth/service/realcontrol/buffer/GetSchedulePlanThread.java
... ... @@ -41,8 +41,10 @@ public class GetSchedulePlanThread extends Thread{
41 41 @Override
42 42 public void run() {
43 43 try{
  44 + ScheduleBuffer.clear();
  45 +
44 46 List<ScheduleRealInfo> realList = null;
45   - String dateStr = /*sdf.format(new Date())*/"2016-06-01";
  47 + String dateStr = sdfyyyyMMdd.format(new Date());
46 48 Date cDate = sdfyyyyMMdd.parse(dateStr);
47 49 //查询数据库是否有今日排班
48 50 int size = scheduleRealInfoRepository.countByDate(cDate);
... ...
src/main/java/com/bsth/vehicle/directive/service/DirectiveServiceImpl.java
... ... @@ -110,7 +110,6 @@ public class DirectiveServiceImpl extends BaseServiceImpl&lt;Directive60, Integer&gt;
110 110 directive.setDispatch(true);
111 111 directive.setSch(sch);
112 112 DirectiveBuffer.put(directive);
113   -
114 113 //通知页面,消息已发出
115 114 sendDirectiveState(sch);
116 115 }else{
... ...
src/main/java/com/bsth/vehicle/directive/thread/FirstScheduleIssuedThread.java
... ... @@ -35,7 +35,9 @@ public class FirstScheduleIssuedThread extends Thread{
35 35  
36 36 sch = linkedList.getFirst();
37 37  
38   - if(sch.getFcsjActual() == null)
  38 + //没有完成班次,且头班车没有发车时间
  39 + if(!ScheduleBuffer.finishLinkedMap.containsKey(nbbm)
  40 + && sch.getFcsjActual() == null)
39 41 directiveService.send60Dispatch(sch, 0);
40 42 }
41 43 }
... ...
src/main/java/com/bsth/vehicle/gpsdata/GpsArrivalStationThread.java
... ... @@ -8,7 +8,9 @@ import java.text.SimpleDateFormat;
8 8 import java.util.ArrayList;
9 9 import java.util.Calendar;
10 10 import java.util.Date;
  11 +import java.util.HashSet;
11 12 import java.util.Iterator;
  13 +import java.util.LinkedList;
12 14 import java.util.List;
13 15 import java.util.Set;
14 16  
... ... @@ -22,6 +24,7 @@ import com.bsth.entity.realcontrol.ScheduleRealInfo;
22 24 import com.bsth.service.realcontrol.buffer.ScheduleBuffer;
23 25 import com.bsth.util.DateUtils;
24 26 import com.bsth.util.db.DBUtils_MS;
  27 +import com.bsth.vehicle.common.CommonMapped;
25 28 import com.bsth.vehicle.directive.service.DirectiveService;
26 29 import com.bsth.vehicle.gpsdata.buffer.GpsArrivalDataBuffer;
27 30 import com.bsth.vehicle.gpsdata.entity.ArrivalInfo;
... ... @@ -57,7 +60,33 @@ public class GpsArrivalStationThread extends Thread{
57 60 } catch (ParseException e) {
58 61 e.printStackTrace();
59 62 }
  63 + //缓存
60 64 GpsArrivalDataBuffer.putAll(list);
  65 +
  66 + //车辆
  67 + Set<String> set = new HashSet<>();
  68 + for(ArrivalInfo arr : list)
  69 + set.add(CommonMapped.vehicDeviceBiMap.get(arr.getDeviceId()));
  70 +
  71 + List<ArrivalInfo> rsList = null;
  72 + LinkedList<ScheduleRealInfo> linked = null;
  73 + int[] status;
  74 + ScheduleRealInfo sch;
  75 + for(String nbbm : set){
  76 + rsList = GpsArrivalDataBuffer.pops(nbbm);
  77 + //和该车辆未执行班次进行匹配
  78 + linked = ScheduleBuffer.vehLinkedMap.get(nbbm);
  79 +
  80 + if(null == linked || linked.size() == 0)
  81 + continue;
  82 + //第一个未执行班次
  83 + sch = linked.getFirst();
  84 +
  85 + //匹配结果
  86 + status = match(rsList, sch);
  87 + }
  88 + //
  89 + /*GpsArrivalDataBuffer.putAll(list);
61 90 //实际到离站和计划排班相匹配
62 91  
63 92 Set<String> keySet = GpsArrivalDataBuffer.allMap.keySet();
... ... @@ -68,7 +97,42 @@ public class GpsArrivalStationThread extends Thread{
68 97 if(null != schList)
69 98 match(GpsArrivalDataBuffer.allMap.get(key), schList);
70 99 }
71   - System.out.println("结束...");
  100 + System.out.println("结束...");*/
  101 + }
  102 +
  103 + public int[] match(List<ArrivalInfo> arrList, ScheduleRealInfo sch){
  104 + //进出分组
  105 + List<ArrivalInfo> in = new ArrayList<>(), out = new ArrayList<>();
  106 + for(ArrivalInfo arr : arrList){
  107 + if(arr.getInOut() == 0)
  108 + in.add(arr);
  109 + else
  110 + out.add(arr);
  111 + }
  112 + int s1 = 0, s2 = 0;
  113 + //匹配发车时间
  114 + if(sch.getFcsjActual() == null)
  115 + s1 = matchOut(arrList, sch);
  116 +
  117 + //匹配终点时间
  118 + if(sch.getZdsjActual() == null)
  119 + s2 = matchIn(arrList, sch);
  120 +
  121 + return new int[]{s1,s2};
  122 + }
  123 +
  124 + public int matchOut(List<ArrivalInfo> arrList, ScheduleRealInfo sch){
  125 +
  126 + for(ArrivalInfo arr : arrList){
  127 + if(arr.getStopNo().equals(sch.getQdzCode())){
  128 +
  129 + }
  130 + }
  131 + return 0;
  132 + }
  133 +
  134 + public int matchIn(List<ArrivalInfo> arrList, ScheduleRealInfo sch){
  135 + return 0;
72 136 }
73 137  
74 138  
... ... @@ -80,21 +144,21 @@ public class GpsArrivalStationThread extends Thread{
80 144 * @param @param schList 计划排班链表
81 145 * @throws
82 146 */
83   - public void match(List<ArrivalInfo> arrList, List<ScheduleRealInfo> schList){
  147 + /*public void match(List<ArrivalInfo> arrList, List<ScheduleRealInfo> schList){
84 148 Iterator<ScheduleRealInfo> schIterator = schList.iterator();
85 149  
86 150 while(schIterator.hasNext())
87 151 match(schIterator.next(), arrList);
88   - }
  152 + }*/
89 153  
90 154  
91   - public void match(ScheduleRealInfo scInfo, List<ArrivalInfo> arrList){
  155 + /*public void match(ScheduleRealInfo scInfo, List<ArrivalInfo> arrList){
92 156 for(ArrivalInfo arr : arrList){
93 157 match(scInfo, arr);
94 158 }
95   - }
  159 + }*/
96 160  
97   - public void match(ScheduleRealInfo scInfo, ArrivalInfo arr){
  161 +/* public void match(ScheduleRealInfo scInfo, ArrivalInfo arr){
98 162 try{
99 163 //匹配起点
100 164 matchStart(scInfo, arr);
... ... @@ -104,7 +168,7 @@ public class GpsArrivalStationThread extends Thread{
104 168 }catch(Exception e){
105 169 e.printStackTrace();
106 170 }
107   - }
  171 + }*/
108 172  
109 173 /**
110 174 *
... ...
src/main/java/com/bsth/vehicle/gpsdata/buffer/GpsArrivalDataBuffer.java
... ... @@ -2,7 +2,9 @@ package com.bsth.vehicle.gpsdata.buffer;
2 2  
3 3 import java.util.Collections;
4 4 import java.util.Comparator;
  5 +import java.util.HashMap;
5 6 import java.util.List;
  7 +import java.util.Map;
6 8  
7 9 import com.bsth.vehicle.common.CommonMapped;
8 10 import com.bsth.vehicle.gpsdata.entity.ArrivalInfo;
... ... @@ -10,54 +12,74 @@ import com.google.common.collect.LinkedListMultimap;
10 12  
11 13 /**
12 14 *
13   - * @ClassName: GpsArrivalDataBuffer
14   - * @Description: TODO(GPS到离站数据缓存)
  15 + * @ClassName: GpsArrivalDataBuffer
  16 + * @Description: TODO(GPS到离站数据缓存)
15 17 * @author PanZhao
16   - * @date 2016年6月27日 下午1:08:35
  18 + * @date 2016年6月27日 下午1:08:35
17 19 *
18 20 */
19 21 public class GpsArrivalDataBuffer {
20 22  
21 23 /**
22   - * 车辆 时间戳排序的进出站链表
  24 + * 车辆 时间戳排序的进出站链表
23 25 */
24 26 public static LinkedListMultimap<String, ArrivalInfo> allMap;
25   -
  27 +
  28 + /**
  29 + * 车辆 和 进出站链表索引
  30 + */
  31 + public static Map<String, Integer> markMap;
  32 +
26 33 /**
27 34 * 时间戳标记,从数据库增量查询时起始时间
28 35 */
29 36 public static Long markTime;
30   -
31   -
32   - static{
  37 +
  38 + public static List<ArrivalInfo> pops(String nbbm) {
  39 + Integer mark = null;
  40 + if (!markMap.containsKey(nbbm))
  41 + mark = 0;
  42 + else
  43 + mark = markMap.get(nbbm);
  44 +
  45 + List<ArrivalInfo> all = allMap.get(nbbm);
  46 + int size = all.size();
  47 + if(size == 0)
  48 + return null;
  49 +
  50 + List<ArrivalInfo> rs = all.subList(mark, size);
  51 +
  52 + markMap.put(nbbm, size);
  53 + return rs;
  54 + }
  55 +
  56 + static {
33 57 allMap = LinkedListMultimap.create();
  58 + markMap = new HashMap<>();
34 59 }
35   -
  60 +
36 61 /**
37 62 *
38   - * @Title: putAll
39   - * @Description: TODO(将增量数据添加到缓存)
40   - * @param @param list 设定文件
41   - * @return void 返回类型
42   - * @throws
  63 + * @Title: putAll @Description: TODO(将增量数据添加到缓存) @param @param list
  64 + * 设定文件 @return void 返回类型 @throws
43 65 */
44   - public static void putAll(List<ArrivalInfo> list){
45   - //按时间戳排序
  66 + public static void putAll(List<ArrivalInfo> list) {
  67 + // 按时间戳排序
46 68 Collections.sort(list, new Comparator<ArrivalInfo>() {
47 69 @Override
48 70 public int compare(ArrivalInfo o1, ArrivalInfo o2) {
49 71 return (int) (o1.getTs() - o2.getTs());
50 72 }
51 73 });
52   -
  74 +
53 75 int len = list.size();
54 76 ArrivalInfo arrival;
55 77 String nbbm;
56   - for(int i = 0; i < len; i ++){
  78 + for (int i = 0; i < len; i++) {
57 79 arrival = list.get(i);
58 80 nbbm = CommonMapped.vehicDeviceBiMap.get(arrival.getDeviceId());
59   -
60   - if(null != nbbm)
  81 +
  82 + if (null != nbbm)
61 83 allMap.put(nbbm, arrival);
62 84 }
63 85 }
... ...
src/main/resources/static/pages/control/line/index.html
... ... @@ -176,6 +176,11 @@
176 176 </button>
177 177 </li>
178 178 <li class="menu-separator"></li>
  179 + <li class="menu-item" >
  180 + <button type="button" class="menu-btn" data-method="showState">
  181 + <span class="menu-text">车辆状态查看</span>
  182 + </button>
  183 + </li>
179 184 <li class="menu-item submenu">
180 185 <button type="button" class="menu-btn">
181 186 <span class="menu-text">车辆状态发送</span>
... ...
src/main/resources/static/pages/control/line/js/homeMenu.js
... ... @@ -74,6 +74,18 @@ var _home_menu = (function(){
74 74 else
75 75 layer.alert('发送指令失败!', {icon: 2, title: '操作失败'});
76 76 });
  77 + },
  78 + //车辆状态查看
  79 + showState: function(nbbm){
  80 + /*var index = layer.open({
  81 + type: 1,
  82 + area: '370px',
  83 + maxmin: true,
  84 + content: template('', data),
  85 + shift: 5,
  86 + title: '---' + nbbm + '---',
  87 + success: function(){}
  88 + });*/
77 89 }
78 90 }
79 91 })();
... ...
src/main/resources/static/pages/control/line/temps/home_tp.html
... ... @@ -121,7 +121,7 @@
121 121  
122 122 <script id="home_table_temp" type="text/html">
123 123 {{each list as obj i}}
124   -<tr data-nbbm="{{obj.nbbm}}">
  124 +<tr data-nbbm="{{obj.nbbm}}" data-device="{{obj.deviceId}}">
125 125 <td style="width: 22%;"> {{obj.nbbm}} </td>
126 126 <td style="width: 17%;">
127 127 {{if obj.currSch != null}}
... ...