Преглед изворни кода

pms 瑞恒填报日报时可以修改井号

zhangcl пре 15 часа
родитељ
комит
c77fa2d70e

+ 20 - 4
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrhdailyreport/IotRhDailyReportController.java

@@ -138,14 +138,29 @@ public class IotRhDailyReportController {
         if (ObjUtil.isEmpty(iotRhDailyReport)) {
             return success(null);
         }
+        Long deptId = iotRhDailyReport.getDeptId();
         // 查询当前日报关联的 部门下 增压机 的产能
-        BigDecimal capacity = iotRhDailyReportService.queryCapacity(iotRhDailyReport.getDeptId());
         IotRhDailyReportRespVO result = BeanUtils.toBean(iotRhDailyReport, IotRhDailyReportRespVO.class);
-        if (ObjUtil.isNotEmpty(iotRhDailyReport.getDeptId())) {
-            DeptDO dept = deptService.getDept(iotRhDailyReport.getDeptId());
+        if (ObjUtil.isNotEmpty(deptId)) {
+            DeptDO dept = deptService.getDept(deptId);
             result.setDeptName(dept.getName());
+            BigDecimal capacity = iotRhDailyReportService.queryCapacity(deptId);
+            result.setCapacity(capacity);
+
+            // 查询当前日报所属部门关联的任务井列表
+            Map<Long, String> deptWellNames = new HashMap<>();
+            IotProjectTaskPageReqVO taskReqVO = new IotProjectTaskPageReqVO();
+            taskReqVO.setCompanyId(157l);
+            taskReqVO.setJobFlag("Y");
+            taskReqVO.setDeptId(deptId);
+            List<IotProjectTaskDO> tasks = iotProjectTaskService.projectTasks(taskReqVO);
+            if (CollUtil.isNotEmpty(tasks)) {
+                tasks.forEach(task -> {
+                    deptWellNames.put(task.getId(), task.getWellName());
+                });
+                result.setRelatedTasks(deptWellNames);
+            }
         }
-        result.setCapacity(capacity);
         // 查询日报关联的项目 任务信息
         Long projectId = result.getProjectId();
         Long taskId = result.getTaskId();
@@ -158,6 +173,7 @@ public class IotRhDailyReportController {
             result.setTaskName(task.getWellName());
             result.setLocation(task.getLocation());
         }
+
         // 查询日报关联油耗记录
         IotDailyReportFuelPageReqVO reqVO = new IotDailyReportFuelPageReqVO();
         reqVO.setReportId(result.getId());

+ 4 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrhdailyreport/vo/IotRhDailyReportRespVO.java

@@ -9,6 +9,7 @@ import lombok.Data;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.List;
+import java.util.Map;
 
 @Schema(description = "管理后台 - 瑞恒日报 Response VO")
 @Data
@@ -298,4 +299,7 @@ public class IotRhDailyReportRespVO {
 
     @Schema(description = "队伍下增压机 的设备型号")
     private String deviceNo;
+
+    @Schema(description = "当前日报所属部门关联的未完工任务井列表")
+    private Map<Long, String> relatedTasks;
 }

+ 45 - 32
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotrhdailyreport/IotRhDailyReportServiceImpl.java

@@ -177,8 +177,8 @@ public class IotRhDailyReportServiceImpl implements IotRhDailyReportService {
 
         // 根据日报的 施工队伍 deptId 查询队伍所在的 项目 任务
         // 根据日报的施工状态 更新 对应任务的 状态
-        Long taskId = Long.MIN_VALUE;
         Set<Long> deviceIds = new HashSet<>();
+
         IotProjectTaskPageReqVO reqVO = new IotProjectTaskPageReqVO();
         reqVO.setDeptId(createReqVO.getDeptId());
         // 只筛选未施工完成的任务
@@ -193,22 +193,49 @@ public class IotRhDailyReportServiceImpl implements IotRhDailyReportService {
         Set<String> zhbdCarIds = new HashSet<>();
         // 井号
         String wellName;
-        if (CollUtil.isNotEmpty(tasks)) {
-            // 只查询 未施工完成 的任务 随机获取1个 最好是保持 1个施工队伍只存在于1个任务中
-            IotProjectTaskDO task = tasks.get(0);
+
+        // 根据传参赋值 taskId 如果 createReqVO 传参对象中设置了 taskId 说明 填报人已经选择了 任务井 直接保存
+        Long existTaskId = createReqVO.getTaskId();
+        IotProjectTaskDO commonTask = null;
+        if (ObjUtil.isNotEmpty(existTaskId)) {
+            commonTask = iotProjectTaskMapper.selectById(existTaskId);
+        } else {
+            if (CollUtil.isNotEmpty(tasks)) {
+                // 只查询 未施工完成 的任务 随机获取1个 最好是保持 1个施工队伍只存在于1个任务中
+                commonTask = tasks.get(0);
+            } else {
+                // 当前队伍没有关联任务 查询当前部门关联的最新的完工任务 关联上 有可能是已经完工的空日报任务
+                reqVO.setDeptId(createReqVO.getDeptId());
+                // 只筛选未施工完成的任务
+                reqVO.setJobFlag(StrUtil.EMPTY);
+                reqVO.setFinishFlag("Y");
+                // 查询包含当前日报施工队伍的任务
+                List<IotProjectTaskDO> finishedTasks = iotProjectTaskMapper.selectList(reqVO);
+                if (CollUtil.isNotEmpty(finishedTasks)) {
+                    // 最新完工的任务位于列表第1个元素
+                    IotProjectTaskDO latestTask = finishedTasks.get(0);
+                    iotRhDailyReport.setProjectId(latestTask.getProjectId());
+                    iotRhDailyReport.setTaskId(latestTask.getId());
+                    wellName = latestTask.getWellName();
+                } else {
+                    wellName = StrUtil.EMPTY;
+                }
+            }
+        }
+
+        if (ObjUtil.isNotEmpty(commonTask)) {
             // 暂时只考虑1个施工队伍只属于1个任务
-            iotRhDailyReport.setProjectId(task.getProjectId());
-            iotRhDailyReport.setTaskId(task.getId());
-            taskId = task.getId();
-            wellName = task.getWellName();
+            iotRhDailyReport.setProjectId(commonTask.getProjectId());
+            iotRhDailyReport.setTaskId(commonTask.getId());
+            wellName = commonTask.getWellName();
             // 根据日报状态 查询 日报所属任务的状态
             if (ObjUtil.isNotEmpty(createReqVO.getConstructionStatus())) {
-                task.setStatus(createReqVO.getConstructionStatus());
+                commonTask.setStatus(createReqVO.getConstructionStatus());
                 // 更新任务状态
-                iotProjectTaskMapper.updateById(task);
+                iotProjectTaskMapper.updateById(commonTask);
             }
             // 查询任务的设备列表
-            deviceIds = task.getDeviceIds();
+            deviceIds = commonTask.getDeviceIds();
             IotDevicePageReqVO deviceReqVO = new IotDevicePageReqVO();
             deviceReqVO.setDeviceIds(new ArrayList<>(deviceIds));
             List<IotDeviceDO> carDevices = iotDeviceMapper.selectListAlone(deviceReqVO);
@@ -256,22 +283,7 @@ public class IotRhDailyReportServiceImpl implements IotRhDailyReportService {
                         ));
             }
         } else {
-            // 当前队伍没有关联任务 查询当前部门关联的最新的完工任务 关联上 有可能是已经完工的空日报任务
-            reqVO.setDeptId(createReqVO.getDeptId());
-            // 只筛选未施工完成的任务
-            reqVO.setJobFlag(StrUtil.EMPTY);
-            reqVO.setFinishFlag("Y");
-            // 查询包含当前日报施工队伍的任务
-            List<IotProjectTaskDO> finishedTasks = iotProjectTaskMapper.selectList(reqVO);
-            if (CollUtil.isNotEmpty(finishedTasks)) {
-                // 最新完工的任务位于列表第1个元素
-                IotProjectTaskDO latestTask = finishedTasks.get(0);
-                iotRhDailyReport.setProjectId(latestTask.getProjectId());
-                iotRhDailyReport.setTaskId(latestTask.getId());
-                wellName = latestTask.getWellName();
-            } else {
-                wellName = StrUtil.EMPTY;
-            }
+            wellName = StrUtil.EMPTY;
         }
 
         // 查询当前队伍的运行记录 找到注水量 注水时间 赋值到日报的 注水时间
@@ -370,9 +382,9 @@ public class IotRhDailyReportServiceImpl implements IotRhDailyReportService {
         if (ObjUtil.isEmpty(existReport)) {
             // 新增日报记录 如果是 无施工设备的队伍 status auditStatus 需要单独处理
             if (CollUtil.isNotEmpty(teamStatusL)) {
-                // 自动生成的日报 设置 填报完成 审批通过
-                iotRhDailyReport.setStatus(1);
-                iotRhDailyReport.setAuditStatus(20);
+                // 20260731 修改成 生成的空日报需要再次填报 确认并审核
+                iotRhDailyReport.setStatus(0);
+                iotRhDailyReport.setAuditStatus(0);
                 // 如果是自动生成的日报 需要根据规则设备 非生产时间
                 // 设备状态为 "动迁" 时,系统生成的日报里面,非生产时间内的 "生产配合"(relocation_time) 时间为24小时;
                 // 设备状态为 "完工" 时,系统生成的日报里面,非生产时间内的 "待命"(winter_break_time) 时间为24小时
@@ -511,6 +523,7 @@ public class IotRhDailyReportServiceImpl implements IotRhDailyReportService {
             Long parentId = currentDept[0].getParentId();
             if (ObjUtil.isNotEmpty(parentId)) {
                 AtomicReference<DeptDO> projectDept = new AtomicReference<>();
+                String finalWellName = wellName;
                 DataPermissionUtils.executeIgnore(() -> {
                     projectDept.set(deptService.getDept(parentId));
                     if (ObjUtil.isNotEmpty(projectDept) && "2".equals(projectDept.get().getType())) {
@@ -545,8 +558,8 @@ public class IotRhDailyReportServiceImpl implements IotRhDailyReportService {
                                         if (CollUtil.isNotEmpty(users)) {
                                             // 生成消息提醒标题 部门名称-井号
                                             String msgTitle = currentDept[0].getName();
-                                            if (StrUtil.isNotBlank(wellName)) {
-                                                msgTitle = StrUtil.join("-", msgTitle, wellName);
+                                            if (StrUtil.isNotBlank(finalWellName)) {
+                                                msgTitle = StrUtil.join("-", msgTitle, finalWellName);
                                             }
                                             CountDownLatch latch = new CountDownLatch(users.size());
                                             String finalMsgTitle = msgTitle;