Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

lipenghui 4 часов назад
Родитель
Сommit
106d91b334

+ 3 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrddailyreport/vo/IotRdDailyReportSaveReqVO.java

@@ -142,4 +142,7 @@ public class IotRdDailyReportSaveReqVO {
      */
     @Schema(description = "附件列表")
     private List<IotAttachmentSaveReqVO> attachments;
+
+    @Schema(description = "平台井标识 1平台井 0非平台井")
+    private Integer platformWell;
 }

+ 57 - 2
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotrddailyreport/IotRdDailyReportServiceImpl.java

@@ -127,22 +127,77 @@ public class IotRdDailyReportServiceImpl implements IotRdDailyReportService {
         // 校验存在
         IotRdDailyReportDO dailyReport = validateIotRdDailyReportExists(updateReqVO.getId());
         dailyReport.setAuditStatus(updateReqVO.getAuditStatus());
+        // 平台井的关联井 同步更新审核状态
+        List<IotRdDailyReportDO> relatedPlatformWellReports = new ArrayList<>();
+        // 平台井需要更新任务施工状态的关联井
+        List<IotProjectTaskDO> relatedPlatformTasks = new ArrayList<>();
         if (SupplierAuditStatusEnum.REJECT.getStatus().equals(updateReqVO.getAuditStatus())) {
             dailyReport.setStatus(0);
         } else {
             // 审核通过 更新关联任务状态
+            // 判断如果当前井为平台井 且 关联井也设置了 施工状态 也要同步更新关联井任务的施工状态
+            Integer platformWell = updateReqVO.getPlatformWell();
             Long taskId = updateReqVO.getTaskId();
             if (ObjUtil.isNotEmpty(taskId)) {
-                // 查找关联的任务
+                // 查找关联的任务 更新任务的 施工状态
                 IotProjectTaskDO task = iotProjectTaskMapper.selectById(taskId);
                 task.setStatus(updateReqVO.getRdStatus());
                 task.setRdStatus(updateReqVO.getRdStatus());
                 iotProjectTaskMapper.updateById(task);
+                // 如果是平台井 且 关联井也设置了 施工状态 也要同步更新关联井任务的施工状态
+                if (1 == platformWell) {
+                    // key平台井关联井的任务taskId   value平台井关联井的任务施工状态数据字典value
+                    Map<Long, String> relatedPlatformTaskPair = new HashMap<>();
+                    // 查询当前日报关联平台井日报
+                    String platformGroup = dailyReport.getPlatformGroup();
+                    if (StrUtil.isNotBlank(platformGroup)) {
+                        IotRdDailyReportPageReqVO reqVO = new IotRdDailyReportPageReqVO();
+                        reqVO.setPlatformGroup(platformGroup);
+                        // 查询平台井关联的所有井
+                        List<IotRdDailyReportDO> platformRelatedReports = iotRdDailyReportMapper.dailyReports(reqVO);
+                        if (CollUtil.isNotEmpty(platformRelatedReports)) {
+                            List<Long> relatedPlatformTaskIds = new ArrayList<>();
+                            platformRelatedReports.forEach(report -> {
+                                if (2 == report.getPlatformWell()) {
+                                    if (StrUtil.isNotBlank(report.getRdStatus())) {
+                                        // 记录每个平台关联井的 施工状态
+                                        relatedPlatformTaskPair.put(report.getTaskId(), report.getRdStatus());
+                                        relatedPlatformTaskIds.add(report.getTaskId());
+                                    }
+                                    // 设置平台关联井的审核状态为 同意
+                                    report.setAuditStatus(SupplierAuditStatusEnum.APPROVE.getStatus());
+                                    relatedPlatformWellReports.add(report);
+                                }
+                            });
+                            // 查询平台关联井列表
+                            IotProjectTaskPageReqVO taskReqVO = new IotProjectTaskPageReqVO();
+                            taskReqVO.setTaskIds(relatedPlatformTaskIds);
+                            List<IotProjectTaskDO> relatedTasks = iotProjectTaskMapper.selectList(taskReqVO);
+                            if (CollUtil.isNotEmpty(relatedTasks)) {
+                                relatedTasks.forEach(relatedTask -> {
+                                    if (relatedPlatformTaskPair.containsKey(relatedTask.getId())) {
+                                        relatedTask.setStatus(relatedPlatformTaskPair.get(relatedTask.getId()));
+                                        relatedTask.setRdStatus(relatedPlatformTaskPair.get(relatedTask.getId()));
+                                        relatedPlatformTasks.add(relatedTask);
+                                    }
+                                });
+                            }
+                        }
+                    }
+                }
             }
         }
         dailyReport.setOpinion(updateReqVO.getOpinion());
+        // 更新平台井 主井信息
         iotRdDailyReportMapper.updateById(dailyReport);
-
+        // 更新平台井 关联井信息 审核状态
+        if (CollUtil.isNotEmpty(relatedPlatformWellReports)) {
+            iotRdDailyReportMapper.updateBatch(relatedPlatformWellReports);
+        }
+        // 更新平台井 关联井任务 施工状态
+        if (CollUtil.isNotEmpty(relatedPlatformTasks)) {
+            iotProjectTaskMapper.updateBatch(relatedPlatformTasks);
+        }
     }
 
     @Override