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