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