zxl
2025-10-29 fea22e82e7e49691f6e0c20a29b228d0ab3173e9
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -119,7 +119,14 @@
        WorkOrderServiceImpl self = applicationContext.getBean(WorkOrderServiceImpl.class);
        return self.batchAddWorkOrder(workOrderList);
    }
    private boolean isSameDay(Date date1, Date date2) {
        if (date1 == null || date2 == null) {
            return false;
        }
        LocalDate localDate1 = date1.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
        LocalDate localDate2 = date2.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
        return localDate1.isEqual(localDate2);
    }
    @Transactional(rollbackFor = Exception.class)
    public Boolean batchAddWorkOrder(List<WorkOrder> workOrderList) {
        int total = workOrderList.size();
@@ -164,6 +171,15 @@
        for (WorkOrder workOrder : workOrderList) {
            WorkOrder databaseWorkOrder = mapping.get(workOrder.getSerialNumber());
            if (Objects.nonNull(databaseWorkOrder)) {
                //判断是否是今天的工单
                if (!isSameDay(databaseWorkOrder.getCreateTime(), now)) {
                    // 若为前一天的工单,不更新,直接当作新工单新增
                    workOrder.setCreateTime(now);
                    workOrder.setUpdateTime(now);
                    waitAddList.add(workOrder);
                    continue; // 跳过后续的更新逻辑
                }
                List<String> errorNameList = databaseWorkOrder.getErrorTypeList();
                List<String> errorTypes = workOrder.getErrorTypeList();
                if (errorNameList.containsAll(errorTypes)) {
@@ -1287,10 +1303,23 @@
        }
        // 是否报备
        boolean hasReport = new LambdaQueryChainWrapper<>(reportMapper)
                .eq(Report::getSerialNumber, workOrder.getSerialNumber())
                .exists();
        workOrder.setHasReport(hasReport);
        Date target = workOrder.getCreateTime();
        Report reports = new LambdaQueryChainWrapper<>(reportMapper)
                .eq(Report::getSerialNumber,workOrder.getWorkOrderNo())
                .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);
        }
        workOrder.setHasReport(isInRange);
        // 故障类型
        List<SysDictData> errorList = workOrderErrorTypeService.getBaseMapper().getErrorList(workOrder.getWorkOrderNo());
        List<String> errList = errorList.stream().map(SysDictData::getDictLabel).collect(Collectors.toList());