zxl
2025-11-10 cb415813de667096290d6bd0f924f5b523104117
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -874,6 +874,43 @@
                }
            });
        }
        //加上报备信息
        if (!CollectionUtils.isEmpty(page.getRecords())) {
            List<String> serialNumberList = page.getRecords().stream()
                    .map(WorkOrderVO::getSerialNumber).collect(Collectors.toList());
            List<Report> reports = new LambdaQueryChainWrapper<>(reportMapper)
                    .in(Report::getSerialNumber, serialNumberList)
                    .eq(Report::getStatus,1)
                    .eq(Report::getDeleted,Boolean.FALSE).list();
            Map<String, List<Report>> reportMap = reports.stream()
                    .collect(Collectors.groupingBy(Report::getSerialNumber));
            for (WorkOrderVO workOrder : page.getRecords()) {
                workOrder.setHasReport(false);
                List<Report> reportsByWorkOrder = reportMap.get(workOrder.getSerialNumber());
                if (CollectionUtils.isEmpty(reportsByWorkOrder)) {
                    continue; // 无报告,直接跳过
                }
                Date distributeTime = workOrder.getDistributeTime();
                for (Report report : reportsByWorkOrder) {
                    Date beginTime = report.getBeginCreateTime();
                    Date endTime = report.getEndCreateTime();
                    // 空指针防护
                    if (distributeTime == null || beginTime == null || endTime == null) {
                        continue;
                    }
                    // 时间区间判断:distributeTime 在 [beginTime, endTime] 内
                    boolean isInRange = distributeTime.compareTo(beginTime) >= 0
                            && distributeTime.compareTo(endTime) <= 0;
                    if (isInRange) {
                        workOrder.setHasReport(true);
                        break; // 找到一个即退出循环
                    }
                }
            }
        }
        return Result.ok().data(page.getRecords()).total(page.getTotal());
    }
@@ -1088,8 +1125,10 @@
    @Override
    public WorkOrderTotalVO workOrderTotal(DashboardQuery dashboardQuery) {
        //todo大屏工单未处理工单数量有点问题
        return baseMapper.workOrderTotal(dashboardQuery);
    }
    @Override
    public List<WorkOrderRegionVO> workOrderRegion(DashboardQuery dashboardQuery) {
@@ -1303,23 +1342,30 @@
        }
        // 是否报备
        Date target = workOrder.getCreateTime();
        Report reports = new LambdaQueryChainWrapper<>(reportMapper)
                .eq(Report::getSerialNumber,workOrder.getWorkOrderNo())
        List<Report> reports = new LambdaQueryChainWrapper<>(reportMapper)
                .eq(Report::getSerialNumber,workOrder.getSerialNumber())
                .eq(Report::getStatus,1)
                .orderByDesc(Report::getCreateTime)
                .last("LIMIT 1")
                .one();
        boolean isInRange = false;
        if (reports != null){
            Date start = reports.getBeginCreateTime();
            Date end = reports.getEndCreateTime();
            isInRange = target.after(start) || target.equals(start)  // target >= start
                    && target.before(end) || target.equals(end);
                .list();
        log.info("报备记录:{}",reports);
        Date distributeTime = workOrder.getDistributeTime();
        workOrder.setHasReport(false);
        for (Report report : reports) {
            Date beginTime = report.getBeginCreateTime();
            Date endTime = report.getEndCreateTime();
            // 空指针防护
            if (distributeTime == null || beginTime == null || endTime == null) {
                continue;
            }
            // 时间区间判断:distributeTime 在 [beginTime, endTime] 内
            boolean isInRange = distributeTime.compareTo(beginTime) >= 0
                    && distributeTime.compareTo(endTime) <= 0;
            if (isInRange) {
                workOrder.setHasReport(true);
                break; // 找到一个即退出循环
            }
        }
        workOrder.setHasReport(isInRange);
        // 故障类型
        List<SysDictData> errorList = workOrderErrorTypeService.getBaseMapper().getErrorList(workOrder.getWorkOrderNo());
        List<String> errList = errorList.stream().map(SysDictData::getDictLabel).collect(Collectors.toList());