Commit 7dcdcad88e38d9f27b96bdd2b4a66dfb4ee5421c
1 parent
be45452c
驾驶员匹配修改
Showing
3 changed files
with
39 additions
and
61 deletions
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) { | ... | ... |