Commit 0fba032af1e92b50e9d42cc2d50513c047d8517b
1 parent
7048bf45
松青线 路牌 松2 特殊出来,原因:分班+共营线路,无法打卡两次
Showing
2 changed files
with
33 additions
and
2 deletions
Bsth-admin/src/main/java/com/ruoyi/job/DriverJob.java
| @@ -343,6 +343,7 @@ public class DriverJob implements InitializingBean { | @@ -343,6 +343,7 @@ public class DriverJob implements InitializingBean { | ||
| 343 | null, | 343 | null, |
| 344 | new ParameterizedTypeReference<List<ResponseSchedulingDto>>() { | 344 | new ParameterizedTypeReference<List<ResponseSchedulingDto>>() { |
| 345 | }).getBody(); | 345 | }).getBody(); |
| 346 | + | ||
| 346 | Map<String, List<ResponseSchedulingDto>> driverSchedulingMap = new HashMap<>(200); | 347 | Map<String, List<ResponseSchedulingDto>> driverSchedulingMap = new HashMap<>(200); |
| 347 | // 以员工号为key存入排班集合 | 348 | // 以员工号为key存入排班集合 |
| 348 | originSchedulingList.stream().forEach(item -> { | 349 | originSchedulingList.stream().forEach(item -> { |
Bsth-admin/src/main/java/com/ruoyi/service/ThreadJobService.java
| @@ -584,11 +584,28 @@ public class ThreadJobService { | @@ -584,11 +584,28 @@ public class ThreadJobService { | ||
| 584 | return scheduling; | 584 | return scheduling; |
| 585 | } | 585 | } |
| 586 | 586 | ||
| 587 | + /** | ||
| 588 | + * 从原始调度地图中获取符合特定条件的调度列表 | ||
| 589 | + * 该方法主要关注于筛选出与边界类型相关的调度信息,并进行一系列的处理和排序 | ||
| 590 | + * | ||
| 591 | + * @param originSchedulingMap 包含原始调度信息的映射,键为标识字符串,值为调度DTO列表 | ||
| 592 | + * @return 返回一个DriverScheduling对象列表,包含了经过处理的调度信息 | ||
| 593 | + */ | ||
| 587 | private List<DriverScheduling> getBcList(Map<String, List<ResponseSchedulingDto>> originSchedulingMap) { | 594 | private List<DriverScheduling> getBcList(Map<String, List<ResponseSchedulingDto>> originSchedulingMap) { |
| 595 | + // 初始化列表以存储最终的边界调度信息 | ||
| 588 | List<DriverScheduling> bcList = new ArrayList<>(1000); | 596 | List<DriverScheduling> bcList = new ArrayList<>(1000); |
| 597 | + | ||
| 598 | + // 获取线路配置信息,用于后续的配置处理 | ||
| 589 | Map<String, LineConfig> configMap = lineConfigService.selectLineConfigList(null).stream().collect(Collectors.toMap(item -> item.getLineName() + item.getLpName(), item -> item)); | 599 | Map<String, LineConfig> configMap = lineConfigService.selectLineConfigList(null).stream().collect(Collectors.toMap(item -> item.getLineName() + item.getLpName(), item -> item)); |
| 600 | + | ||
| 601 | + // 遍历原始调度地图,处理每一个调度列表 | ||
| 590 | for (String key : originSchedulingMap.keySet()) { | 602 | for (String key : originSchedulingMap.keySet()) { |
| 603 | + if(key.equals("724329")){ | ||
| 604 | + System.out.println(1); | ||
| 605 | + } | ||
| 591 | List<ResponseSchedulingDto> schedulingList = originSchedulingMap.get(key); | 606 | List<ResponseSchedulingDto> schedulingList = originSchedulingMap.get(key); |
| 607 | + | ||
| 608 | + // 筛选边界类型调度信息,进行属性复制、排序 | ||
| 592 | List<DriverScheduling> nowScheduling = schedulingList.stream() | 609 | List<DriverScheduling> nowScheduling = schedulingList.stream() |
| 593 | .filter(item -> BC_TYPE_IN.equals(item.getBcType()) || BC_TYPE_OUT.equals(item.getBcType())) | 610 | .filter(item -> BC_TYPE_IN.equals(item.getBcType()) || BC_TYPE_OUT.equals(item.getBcType())) |
| 594 | .map(item -> { | 611 | .map(item -> { |
| @@ -598,10 +615,19 @@ public class ThreadJobService { | @@ -598,10 +615,19 @@ public class ThreadJobService { | ||
| 598 | }) | 615 | }) |
| 599 | .sorted(Comparator.comparing(DriverScheduling::getFcsjT)) | 616 | .sorted(Comparator.comparing(DriverScheduling::getFcsjT)) |
| 600 | .collect(Collectors.toList()); | 617 | .collect(Collectors.toList()); |
| 601 | - | 618 | + //松青线 路牌 松2 特殊出来,原因:分班+共营线路,无法打卡两次 |
| 619 | + if(nowScheduling.get(0).getLineName().equals("松青线") && nowScheduling.get(0).getLpName().equals("松2")){ | ||
| 620 | + List<DriverScheduling> nowSchedulingTemp = new ArrayList<>(); | ||
| 621 | + nowSchedulingTemp.add(nowScheduling.get(0)); | ||
| 622 | + nowSchedulingTemp.add(nowScheduling.get(1)); | ||
| 623 | + nowScheduling.clear(); | ||
| 624 | + nowScheduling.addAll(nowSchedulingTemp); | ||
| 625 | + } | ||
| 626 | + // 如果筛选出的调度信息非空,则进行进一步处理 | ||
| 602 | if (CollectionUtil.isNotEmpty(nowScheduling)) { | 627 | if (CollectionUtil.isNotEmpty(nowScheduling)) { |
| 603 | // 配置处理 | 628 | // 配置处理 |
| 604 | nowScheduling = handlerScheduler(configMap, schedulingList, nowScheduling); | 629 | nowScheduling = handlerScheduler(configMap, schedulingList, nowScheduling); |
| 630 | + | ||
| 605 | // ------|特殊处理|------ | 631 | // ------|特殊处理|------ |
| 606 | try { | 632 | try { |
| 607 | DriverScheduling scheduling = nowScheduling.get(nowScheduling.size() - 1); | 633 | DriverScheduling scheduling = nowScheduling.get(nowScheduling.size() - 1); |
| @@ -609,17 +635,21 @@ public class ThreadJobService { | @@ -609,17 +635,21 @@ public class ThreadJobService { | ||
| 609 | } catch (Exception e) { | 635 | } catch (Exception e) { |
| 610 | log.error("特殊处理失败:{}", e.getMessage()); | 636 | log.error("特殊处理失败:{}", e.getMessage()); |
| 611 | } | 637 | } |
| 612 | - // 处理青蒸线区间 区间删除注意特殊情况放到最后可能没有全部都是区间倒是nowScheduling 为0 然后get报错 | 638 | + |
| 639 | + // 处理青蒸线区间,针对特定线路的特殊情况处理 | ||
| 613 | if (CollectionUtil.isNotEmpty(nowScheduling) && nowScheduling.get(0).getLineName().startsWith("青蒸线")) { | 640 | if (CollectionUtil.isNotEmpty(nowScheduling) && nowScheduling.get(0).getLineName().startsWith("青蒸线")) { |
| 614 | nowScheduling = handleQinZhengLine(nowScheduling); | 641 | nowScheduling = handleQinZhengLine(nowScheduling); |
| 615 | } | 642 | } |
| 643 | + | ||
| 616 | // ------|结束处理|------ | 644 | // ------|结束处理|------ |
| 645 | + // 将处理后的调度信息添加到最终列表中 | ||
| 617 | bcList.addAll(nowScheduling); | 646 | bcList.addAll(nowScheduling); |
| 618 | } else { | 647 | } else { |
| 619 | // 处理无进出场 | 648 | // 处理无进出场 |
| 620 | log.error("无进出场驾驶员工号:{}", schedulingList.get(0).getJobCode()); | 649 | log.error("无进出场驾驶员工号:{}", schedulingList.get(0).getJobCode()); |
| 621 | } | 650 | } |
| 622 | } | 651 | } |
| 652 | + // 返回最终的边界调度信息列表 | ||
| 623 | return bcList; | 653 | return bcList; |
| 624 | } | 654 | } |
| 625 | 655 |