Commit 7dcdcad88e38d9f27b96bdd2b4a66dfb4ee5421c

Authored by ljq
1 parent be45452c

驾驶员匹配修改

src/main/java/com/bsth/data/zndd/ZnddThread.java
... ... @@ -12,9 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired;
12 12 import org.springframework.stereotype.Component;
13 13  
14 14 import java.text.SimpleDateFormat;
15   -import java.util.HashMap;
16 15 import java.util.List;
17   -import java.util.Map;
18 16  
19 17 /**
20 18 * 调度预案 发车间隔、误点、大间隔、满载、大客流
... ... @@ -23,8 +21,6 @@ import java.util.Map;
23 21 public class ZnddThread extends Thread{
24 22  
25 23 Logger logger = LoggerFactory.getLogger(this.getClass());
26   - /*@Autowired
27   - StationPeopleLoggerRepository stationPeopleLoggerRepository;*/
28 24 @Autowired
29 25 DayOfSchedule dayOfSchedule;
30 26 @Autowired
... ... @@ -35,28 +31,15 @@ public class ZnddThread extends Thread{
35 31 StationRouteRepository stationRouteRepository;
36 32 @Autowired
37 33 AutomaticSch automaticSch;
38   -
39 34 @Autowired
40 35 ZnddStatusRepository znddStatusRepository;
41 36  
42   - static Map<String,List> ZNDDTYPEMAP = new HashMap<>(); //已经推送过的检测
43   -
44   -
45   -
46   -
47 37 private static SimpleDateFormat sdfHHmm = new SimpleDateFormat("HH:mm");
48 38 private static SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd");
49 39 private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
50 40 @Override
51 41 public void run() {
52   - try {
53   - List<znddStatus> znddStatusList = (List<znddStatus>) znddStatusRepository.findAll();
54   -
55   - //GPSDJG();//大间隔
56   - // MZ(); //满载
57   - //DKL(); //大客流 以接口方式
58   - //automaticSch.mz();
59   - //automaticSch.dfTz();//大间隔
  42 + try {List<znddStatus> znddStatusList = (List<znddStatus>) znddStatusRepository.findAll();
60 43 for (znddStatus zs : znddStatusList) {
61 44 if (zs.getOpenStatus() != null && zs.getOpenStatus().equals("0")) {
62 45 if (zs.getType().equals("sftz")) {
... ... @@ -76,13 +59,6 @@ public class ZnddThread extends Thread{
76 59 }catch (Throwable e){
77 60 logger.info("智能调度线程——————",e);
78 61 }
79   -
80   -
81   -
82 62 }
83   -
84   -
85   -
86   -
87 63 }
88 64  
... ...
src/main/java/com/bsth/data/zndd/ZnddTwoThread.java
... ... @@ -12,9 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired;
12 12 import org.springframework.stereotype.Component;
13 13  
14 14 import java.text.SimpleDateFormat;
15   -import java.util.HashMap;
16 15 import java.util.List;
17   -import java.util.Map;
18 16  
19 17 /**
20 18 * 调度预案 发车间隔、误点、大间隔、满载、大客流
... ... @@ -23,8 +21,6 @@ import java.util.Map;
23 21 public class ZnddTwoThread extends Thread{
24 22  
25 23 Logger logger = LoggerFactory.getLogger(this.getClass());
26   - /*@Autowired
27   - StationPeopleLoggerRepository stationPeopleLoggerRepository;*/
28 24 @Autowired
29 25 DayOfSchedule dayOfSchedule;
30 26 @Autowired
... ... @@ -39,11 +35,6 @@ public class ZnddTwoThread extends Thread{
39 35 @Autowired
40 36 ZnddStatusRepository znddStatusRepository;
41 37  
42   - static Map<String,List> ZNDDTYPEMAP = new HashMap<>(); //已经推送过的检测
43   -
44   -
45   -
46   -
47 38 private static SimpleDateFormat sdfHHmm = new SimpleDateFormat("HH:mm");
48 39 private static SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd");
49 40 private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
... ... @@ -81,7 +72,6 @@ public class ZnddTwoThread extends Thread{
81 72 logger.info("行车大间隔执行完毕");
82 73 }
83 74 }.start();//启动线程
84   -
85 75 }
86 76 if (zs.getType().equals("mz")) {
87 77 new Thread() {
... ... @@ -113,8 +103,6 @@ public class ZnddTwoThread extends Thread{
113 103 }
114 104 }
115 105 }
116   -
117   -
118 106 } catch (Exception e) {
119 107 logger.info("智能调度线程——————", e);
120 108 }
... ...
src/main/java/com/bsth/data/zndd/outer_car/OrderListThread.java
... ... @@ -153,20 +153,21 @@ public class OrderListThread extends Thread{
153 153 //如果有套跑 分割班次作用
154 154 if (!clsc.getXlBm().equals(m.get("lineCode").toString())){
155 155 Long FcsjT = clsc.getFcsjT();
156   - //判断 在上一班次结束和下一个班次开始时的空档期是否有别线路
  156 + //判断 在上一订单结束和下一个订单开始时的空档期是否有别线路
157 157 //11:00 13:00 12> 11 ** 12 < 13
158 158 if (FcsjT > coleTime && FcsjT < dospathTime){
159 159 lsmap.put("startDate",sdf.parse(orXlList.get(is).get("DispatchTime").toString()).getTime()); //派单时间
160 160 lsmap.put("endDate", sdf.parse(m.get("CloseTime").toString()).getTime()); //行程结束时间
161 161 lsmap.put("CheckTime", sdf.parse(m.get("CheckTime").toString()).getTime()); //核销时间
162 162 lsmap.put("car_plate", clzbh); //车牌号
163   - lsmap.put("jName", m.get("DriverName")); //驾驶员
  163 + lsmap.put("jName", m.get("DriverNumber")); //驾驶员
164 164 lsmap.put("xl", m.get("AreaName"));//区域名称
165 165 lsmap.put("remark", "公交随心订闲时响应班次("+(i + 1 -is)+"个)");//区域名称
166 166 lsmap.put("num", (i + 1 -is));//区域名称
167 167 SchMap.add(lsmap);
168 168 is = i + 1;
169 169 lsmap = new HashMap();
  170 + break;
170 171 }
171 172 }
172 173 }
... ... @@ -175,7 +176,7 @@ public class OrderListThread extends Thread{
175 176 lsmap.put("endDate",sdf.parse(m.get("CloseTime").toString()).getTime()); //行程结束时间
176 177 lsmap.put("CheckTime", sdf.parse(m.get("CheckTime").toString()).getTime()); //核销时间
177 178 lsmap.put("car_plate", clzbh); //车牌号
178   - lsmap.put("jName", m.get("DriverName")); //驾驶员
  179 + lsmap.put("jName", m.get("DriverNumber")); //驾驶员
179 180 lsmap.put("xl", m.get("AreaName"));//区域名称
180 181 lsmap.put("remark", "公交随心订闲时响应班次("+(i + 1 -is)+"个)");//区域名称
181 182 lsmap.put("num", (i + 1 -is));//区域名称
... ... @@ -184,7 +185,7 @@ public class OrderListThread extends Thread{
184 185 }
185 186  
186 187 //根据业务部提出新需求单独加一个方法,保证因各种因素导致的行程都能算上
187   - //1.起点站终点站和上下班次对应
  188 + //1.起点站终点站和上下班次对应 --对应不上 起点站到起点站
188 189 //2.订单-班次数量 同一起终点 派单时间3分钟以内合并成一个订单。
189 190 //3.实到时间改成下一班次的发车时间前10分钟。
190 191 //4.实发时间改成上一个班次发车后10分
... ... @@ -224,13 +225,7 @@ public class OrderListThread extends Thread{
224 225 lmp.put("endDate",sc2.getFcsjT() - (10* 60 *1000));
225 226 break;
226 227 }
227   - //有可能没有直接添加
228   - if (sc1.getZdsjT() > CheckTime && sc2.getFcsjT() < endDate){
229   - lmp.put("startDate",sc1.getZdsjT() + (10* 60 *1000));
230   - lmp.put("endDate",sc2.getFcsjT() - (10* 60 *1000));
231   - break;
232   - }
233   -
  228 + //有可能没有直接添加 直接使用默认的
234 229 }
235 230 }
236 231  
... ... @@ -247,7 +242,7 @@ public class OrderListThread extends Thread{
247 242 String LpName = null;
248 243 for (ScheduleRealInfo sr : schList) {
249 244 //范围内有已添加班次 -- 合并
250   - //同一车辆,备注里响应式公交班次数相同 发车时间在这个班次的前后分钟
  245 + //同一车辆,备注里响应式公交班次数相同 发车时间在这个班次的前后10分钟
251 246 if (cl.equals(sr.getClZbh()) && startTime <= sr.getFcsjT() && startTime1 >= sr.getFcsjT() && sr.getStatus() != -1
252 247 && sr.getRemarks() !=null && sr.getRemarks().contains("随心订")){
253 248 //不管有没有相同的班次数 重新计算一下里程
... ... @@ -276,7 +271,7 @@ public class OrderListThread extends Thread{
276 271 List<TrackPoint> points = getTrackPoints(device, sc.getFcsjActualTime(), sc.getZdsjActualTime());
277 272 // 计算总里程
278 273 double totalMileage = Double.valueOf(String.format("%.1f", calculateTotalMileage(points)));
279   - if (totalMileage != 0)
  274 + if (totalMileage != 0 && !sc.getRemarks().contains("调整"))
280 275 sc.setJhlc(totalMileage);
281 276 //里程没问题添加班次
282 277 if (sc.getId() == null) {
... ... @@ -314,24 +309,24 @@ public class OrderListThread extends Thread{
314 309 Line line = lineService.findByLineCode(lineCode);
315 310 Long dispatchTime = Long.valueOf(map.get("startDate").toString());
316 311 Long closeTime = Long.valueOf(map.get("endDate").toString());
  312 + int direction = 1;
  313 + //单独设置响应式公交103 105的班次
  314 + if (line.getName().contains("103区域")){
  315 + direction = 0;
  316 + }
317 317  
318   - List<StationRoute> list = GeoCacheData.getStationRoute(lineCode, 0);
  318 +
  319 + List<StationRoute> list = GeoCacheData.getStationRoute(lineCode, direction);
319 320  
320 321 String clzbh = map.get("car_plate").toString();
321   - String jName = map.get("jName").toString();
322   - String jGh = null;
323   - Map<String, String> allpersion = BasicData.allPerson; //所有人员
324   - for (String key : allpersion.keySet()) {
325   - if (jName.equals(allpersion.get(key))) {
326   - //加上判断临港公交 避免另外公司重名
327   - jGh = key.split("-")[1];
328   - }
329   - }
  322 + String jName = map.get("jName").toString(); //05 -000000
  323 + String jGh = "77"+"-"+jName.split("-")[1];
  324 + jName = BasicData.allPerson.get("77"+"-"+jName.split("-")[1]);
330 325  
331 326 //公司 和 分公司名称
332 327 sch.setGsBm(line.getCompany());
333 328 sch.setFgsBm(line.getBrancheCompany());
334   - sch.setBcType("normal");
  329 + sch.setBcType("region");
335 330 sch.setXlBm(lineCode);
336 331 sch.setXlName(line.getName());
337 332 sch.setLpName(LpName !=null ? LpName : "临1");//临加路牌
... ... @@ -360,6 +355,10 @@ public class OrderListThread extends Thread{
360 355 public ScheduleRealInfo SetSch (Map map,ScheduleRealInfo sch) {
361 356  
362 357 try {
  358 + //人工在备注中输入调整二字后不再调整这个班次
  359 + if (sch.getRemarks() != null && sch.getRemarks().contains("调整")){
  360 + return sch;
  361 + }
363 362 //初始到站时间直接到下一班次10分钟之前了 不用在修改班次了
364 363 /*Long closeTime = Long.parseLong(map.get("endDate").toString());
365 364 sch.setZdsj(hhmm.print(closeTime));
... ... @@ -396,6 +395,8 @@ public class OrderListThread extends Thread{
396 395 rs = ps.executeQuery();
397 396 //GPS84坐标
398 397 while (rs.next()) {
  398 + if (getService(rs.getLong("SERVICE_STATE")) == 0)
  399 + continue;
399 400 double lat = rs.getDouble("LAT");
400 401 double lon = rs.getDouble("LON");
401 402 Long timestamp = rs.getLong("TS");
... ... @@ -410,6 +411,19 @@ public class OrderListThread extends Thread{
410 411 }
411 412  
412 413  
  414 +
  415 + /**
  416 + * 获取GPS信号状态
  417 + *
  418 + * @return 0有效 1无效
  419 + */
  420 + public static byte getService(long serviceState) {
  421 + /*if ((serviceState & 0x00020000) == 0x00020000 || (serviceState & 0x80000000) == 0x80000000)
  422 + return -1;*/
  423 + return (byte) (((serviceState & 0x00100000) == 0x00100000) ? 0 : 1);
  424 + }
  425 +
  426 +
413 427 public static class Orderfcsj implements Comparator<Map> {
414 428 @Override
415 429 public int compare(Map o1, Map o2) {
... ...