Explorar o código

pms 瑞都 平台井 修改时删除逻辑

zhangcl hai 4 días
pai
achega
1d77add5bf

+ 8 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotrddailyreport/IotRdDailyReportDO.java

@@ -44,6 +44,14 @@ public class IotRdDailyReportDO extends BaseDO {
      * 项目id
      */
     private Long projectId;
+    /**
+     * 平台井标识 2非平台井 1平台井 0默认值
+     */
+    private Integer platformWell;
+    /**
+     * 平台井组
+     */
+    private String platformGroup;
     /**
      * 任务id
      */

+ 30 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotprojecttask/IotProjectTaskServiceImpl.java

@@ -101,7 +101,14 @@ public class IotProjectTaskServiceImpl implements IotProjectTaskService {
                 platformGroup.set(task.getPlatformGroup());
             }
         });
+        // 查询系统中已有的关联平台井 保存时入参集合中没有的平台井 需要删除掉
+        List<Long> existTaskIds = new ArrayList<>();
+
         List<IotProjectTaskDO> tobeAddedTasks = new ArrayList<>();
+        List<IotProjectTaskDO> tobeDeletedTasks = new ArrayList<>();
+        List<Long> deletedTaskIds = new ArrayList<>();
+        // 本次保存中包含的任务id集合
+        List<Long> currentTaskIds = new ArrayList<>();
         for (IotProjectTaskSaveReqVO saveReqVO:list) {
             IotProjectTaskDO updateObj = BeanUtils.toBean(saveReqVO, IotProjectTaskDO.class);
             // 校验施工区域 下拉列表数据字典 是否包含在 已有的数据字典值集合中
@@ -114,6 +121,25 @@ public class IotProjectTaskServiceImpl implements IotProjectTaskService {
             } else {
                 taskDOS.add(updateObj);
             }
+            if (ObjUtil.isNotEmpty(saveReqVO.getId())) {
+                currentTaskIds.add(saveReqVO.getId());
+            }
+        }
+        // 找到需要删除的 平台井任务
+        if (StrUtil.isNotBlank(platformGroup.get())) {
+            IotProjectTaskPageReqVO reqVO = new IotProjectTaskPageReqVO();
+            reqVO.setPlatformGroup(platformGroup.get());
+            List<IotProjectTaskDO> groupedTasks = iotProjectTaskMapper.selectList(reqVO);
+            if (CollUtil.isNotEmpty(groupedTasks)) {
+                groupedTasks.forEach(task -> {
+                    existTaskIds.add(task.getId());
+                    if (!currentTaskIds.contains(task.getId())) {
+                        // 本次保存的任务中没有在已有任务集合中的需要删除
+                        tobeDeletedTasks.add(task);
+                        deletedTaskIds.add(task.getId());
+                    }
+                });
+            }
         }
         if (CollUtil.isNotEmpty(taskDOS)) {
             // 需要更新的任务
@@ -123,6 +149,10 @@ public class IotProjectTaskServiceImpl implements IotProjectTaskService {
             // 瑞都平台井 需要新增的任务
             iotProjectTaskMapper.insertBatch(tobeAddedTasks);
         }
+        if (CollUtil.isNotEmpty(tobeDeletedTasks)) {
+            // 本次保存的任务中没有在已有任务集合中的需要删除
+            iotProjectTaskMapper.deleteByIds(deletedTaskIds);
+        }
     }
 
     @Override