Commit 0fba032af1e92b50e9d42cc2d50513c047d8517b

Authored by 2c2c2c
1 parent 7048bf45

松青线 路牌 松2 特殊出来,原因:分班+共营线路,无法打卡两次

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  
... ...