Bladeren bron

pms 瑞都 平台井 同时保存平台井关联任务井

zhangcl 3 dagen geleden
bovenliggende
commit
1a6eebfca9
10 gewijzigde bestanden met toevoegingen van 149 en 4 verwijderingen
  1. 3 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojecttask/vo/IotProjectTaskPageReqVO.java
  2. 4 1
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojecttask/vo/IotProjectTaskPlatformVO.java
  3. 39 1
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrddailyreport/IotRdDailyReportController.java
  4. 3 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrddailyreport/vo/IotRdDailyReportPageReqVO.java
  5. 13 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrddailyreport/vo/IotRdDailyReportRespVO.java
  6. 6 1
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotprojecttask/IotProjectTaskMapper.java
  7. 59 1
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotrddailyreport/IotRdDailyReportMapper.java
  8. 5 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/dailyreport/CreateRdDailyReportOrderJob.java
  9. 7 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotrddailyreport/IotRdDailyReportService.java
  10. 10 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotrddailyreport/IotRdDailyReportServiceImpl.java

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

@@ -94,4 +94,7 @@ public class IotProjectTaskPageReqVO extends PageParam {
     @Schema(description = "公司id")
     private Long companyId;
 
+    @Schema(description = "定时任务标识 Y")
+    private String jobFlag;
+
 }

+ 4 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojecttask/vo/IotProjectTaskPlatformVO.java

@@ -9,7 +9,7 @@ import lombok.Data;
 @ExcelIgnoreUnannotated
 public class IotProjectTaskPlatformVO {
 
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "31284")
+    @Schema(description = "主键id", example = "284")
     private Long id;
 
     @Schema(description = "井号", example = "#2988")
@@ -17,4 +17,7 @@ public class IotProjectTaskPlatformVO {
 
     @Schema(description = "设计工作量", example = "123")
     private String workloadDesign;
+
+    @Schema(description = "日报id", example = "314")
+    private Long reportId;
 }

+ 39 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrddailyreport/IotRdDailyReportController.java

@@ -14,6 +14,7 @@ import cn.iocoder.yudao.module.pms.controller.admin.iotattachment.vo.IotAttachme
 import cn.iocoder.yudao.module.pms.controller.admin.iotdailyreportattrs.vo.IotDailyReportAttrsPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotprojectinfo.vo.IotProjectInfoPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo.IotProjectTaskPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo.IotProjectTaskPlatformVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.vo.IotRdDailyReportPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.vo.IotRdDailyReportRespVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.vo.IotRdDailyReportSaveReqVO;
@@ -105,6 +106,14 @@ public class IotRdDailyReportController {
         return success(true);
     }
 
+    @PostMapping("/saveBatch")
+    @Operation(summary = "批量更新瑞都日报 平台井")
+    @PreAuthorize("@ss.hasPermission('pms:iot-rd-daily-report:update')")
+    public CommonResult<Boolean> saveBatch(@Valid @RequestBody List<IotRdDailyReportSaveReqVO> reports) {
+        iotRdDailyReportService.saveBatch(reports);
+        return success(true);
+    }
+
     @PutMapping("/approval")
     @Operation(summary = "审批日报")
     @PreAuthorize("@ss.hasPermission('pms:iot-rd-daily-report:update')")
@@ -204,7 +213,36 @@ public class IotRdDailyReportController {
             DeptDO dept = deptService.getDept(dailyReport.getDeptId());
             dailyReportVO.setDeptName(dept.getName());
         }
-
+        // 日报任务对应的平台井列表
+        if (1 == dailyReport.getPlatformWell()) {
+            IotProjectTaskPageReqVO pageReqVO = new IotProjectTaskPageReqVO();
+            pageReqVO.setPlatformGroup(dailyReport.getPlatformGroup());
+            List<IotProjectTaskDO> tasks = iotProjectTaskService.projectTasks(pageReqVO);
+            // 查询相同平台井组关联的 日报
+            IotRdDailyReportPageReqVO reportReqVO  = new IotRdDailyReportPageReqVO();
+            reportReqVO.setPlatformGroup(dailyReport.getPlatformGroup());
+            List<IotRdDailyReportDO> reports = iotRdDailyReportService.dailyReports(reportReqVO);
+            Map<Long, Long> reportPair = new HashMap<>();
+            if (CollUtil.isNotEmpty(reports)) {
+                reports.forEach(report -> {
+                    reportPair.put(report.getTaskId(), report.getId());
+                });
+            }
+            List<IotProjectTaskPlatformVO> platforms = new ArrayList<>();
+            if (CollUtil.isNotEmpty(tasks)) {
+                tasks.forEach(task -> {
+                    IotProjectTaskPlatformVO platform = new IotProjectTaskPlatformVO();
+                    platform.setId(task.getId());
+                    platform.setWellName(task.getWellName());
+                    platform.setWorkloadDesign(task.getWorkloadDesign());
+                    if (reportPair.containsKey(task.getId())) {
+                        platform.setReportId(reportPair.get(task.getId()));
+                    }
+                    platforms.add(platform);
+                });
+                dailyReportVO.setPlatforms(platforms);
+            }
+        }
         return dailyReportVO;
     }
 

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

@@ -28,6 +28,9 @@ public class IotRdDailyReportPageReqVO extends PageParam {
     @Schema(description = "项目id", example = "32587")
     private Long projectId;
 
+    @Schema(description = "平台井组", example = "463e3996-be48-4758-8229-c1351cbf3e37")
+    private String platformGroup;
+
     @Schema(description = "任务id", example = "15678")
     private Long taskId;
 

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

@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.vo;
 
+import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo.IotProjectTaskPlatformVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceSimpleRespVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotattachment.IotAttachmentDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotdailyreportattrs.IotDailyReportAttrsDO;
@@ -28,6 +29,14 @@ public class IotRdDailyReportRespVO {
     @ExcelProperty("施工队伍id")
     private Long deptId;
 
+    @Schema(description = "平台井标识 2非平台井 1平台井 0默认值", example = "1")
+    @ExcelProperty("平台井标识 2非平台井 1平台井 0默认值")
+    private Integer platformWell;
+
+    @Schema(description = "平台井组", example = "463e3996-be48-4758-8229-c1351cbf3e37")
+    @ExcelProperty("平台井组")
+    private String platformGroup;
+
     @Schema(description = "日报名称", example = "西南压裂项目部/2025-10-17日报填报")
     @ExcelProperty("日报名称")
     private String reportName;
@@ -277,4 +286,8 @@ public class IotRdDailyReportRespVO {
     @Schema(description = "施工设备列表", example = "https://aims.deepoil.cc/admin-api/infra/file/29/get/人力资源.png")
     @ExcelProperty("施工设备列表")
     private List<IotDeviceSimpleRespVO> selectedDevices;
+
+    @Schema(description = "平台井列表", example = "[]")
+    @ExcelProperty("平台井列表")
+    private List<IotProjectTaskPlatformVO> platforms;
 }

+ 6 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotprojecttask/IotProjectTaskMapper.java

@@ -89,7 +89,12 @@ public interface IotProjectTaskMapper extends BaseMapperX<IotProjectTaskDO> {
                     .or()
                     .like(IotProjectTaskDO::getLocation, reqVO.getSearchKey()));
         }
-
+        // 定时任务 如果是平台井 只生成主井号任务
+        if (ObjUtil.isNotEmpty(reqVO.getJobFlag())) {
+            wrapper.and(wq -> wq.eq(IotProjectTaskDO::getPlatformWell, 0)
+                    .or()
+                    .eq(IotProjectTaskDO::getPlatformWell, 1));
+        }
         return selectList(wrapper);
     }
 

+ 59 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotrddailyreport/IotRdDailyReportMapper.java

@@ -17,7 +17,7 @@ import java.util.List;
 @Mapper
 public interface IotRdDailyReportMapper extends BaseMapperX<IotRdDailyReportDO> {
 
-    default PageResult<IotRdDailyReportDO> selectPage(IotRdDailyReportPageReqVO reqVO) {
+    /* default PageResult<IotRdDailyReportDO> selectPage(IotRdDailyReportPageReqVO reqVO) {
         return selectPage(reqVO, new LambdaQueryWrapperX<IotRdDailyReportDO>()
                 .eqIfPresent(IotRdDailyReportDO::getDeptId, reqVO.getDeptId())
                 .eqIfPresent(IotRdDailyReportDO::getProjectId, reqVO.getProjectId())
@@ -59,12 +59,23 @@ public interface IotRdDailyReportMapper extends BaseMapperX<IotRdDailyReportDO>
                 .eqIfPresent(IotRdDailyReportDO::getAuditStatus, reqVO.getAuditStatus())
                 .betweenIfPresent(IotRdDailyReportDO::getCreateTime, reqVO.getCreateTime())
                 .orderByDesc(IotRdDailyReportDO::getId));
+    } */
+
+    default PageResult<IotRdDailyReportDO> selectPage(IotRdDailyReportPageReqVO reqVO) {
+        LambdaQueryWrapperX<IotRdDailyReportDO> wrapper = buildCommonQuery(reqVO)
+                .eqIfPresent(IotRdDailyReportDO::getDeptId, reqVO.getDeptId());
+
+        wrapper.and(wq -> wq.eq(IotRdDailyReportDO::getPlatformWell, 0)
+                .or()
+                .eq(IotRdDailyReportDO::getPlatformWell, 1));
+        return selectPage(reqVO, wrapper);
     }
 
     default List<IotRdDailyReportDO> dailyReports(IotRdDailyReportPageReqVO reqVO) {
         return selectList(new LambdaQueryWrapperX<IotRdDailyReportDO>()
                 .eqIfPresent(IotRdDailyReportDO::getDeptId, reqVO.getDeptId())
                 .eqIfPresent(IotRdDailyReportDO::getProjectId, reqVO.getProjectId())
+                .eqIfPresent(IotRdDailyReportDO::getPlatformGroup, reqVO.getPlatformGroup())
                 .eqIfPresent(IotRdDailyReportDO::getTaskId, reqVO.getTaskId())
                 .eqIfPresent(IotRdDailyReportDO::getProjectClassification, reqVO.getProjectClassification())
                 .eqIfPresent(IotRdDailyReportDO::getTechniqueIds, reqVO.getTechniqueIds())
@@ -103,4 +114,51 @@ public interface IotRdDailyReportMapper extends BaseMapperX<IotRdDailyReportDO>
                 .eqIfPresent(IotRdDailyReportDO::getAuditStatus, reqVO.getAuditStatus())
                 .betweenIfPresent(IotRdDailyReportDO::getCreateTime, reqVO.getCreateTime()));
     }
+
+    /**
+     * 构建 瑞都日报 公共查询条件
+     * @param reqVO 查询条件
+     */
+    default LambdaQueryWrapperX<IotRdDailyReportDO> buildCommonQuery(IotRdDailyReportPageReqVO reqVO) {
+        return new LambdaQueryWrapperX<IotRdDailyReportDO>()
+                .eqIfPresent(IotRdDailyReportDO::getProjectId, reqVO.getProjectId())
+                .eqIfPresent(IotRdDailyReportDO::getTaskId, reqVO.getTaskId())
+                .eqIfPresent(IotRdDailyReportDO::getProjectClassification, reqVO.getProjectClassification())
+                .eqIfPresent(IotRdDailyReportDO::getTechniqueIds, reqVO.getTechniqueIds())
+                .eqIfPresent(IotRdDailyReportDO::getDeviceIds, reqVO.getDeviceIds())
+                .betweenIfPresent(IotRdDailyReportDO::getStartTime, reqVO.getStartTime())
+                .betweenIfPresent(IotRdDailyReportDO::getEndTime, reqVO.getEndTime())
+                .eqIfPresent(IotRdDailyReportDO::getCumulativeWorkingWell, reqVO.getCumulativeWorkingWell())
+                .eqIfPresent(IotRdDailyReportDO::getCumulativeWorkingLayers, reqVO.getCumulativeWorkingLayers())
+                .eqIfPresent(IotRdDailyReportDO::getDailyPumpTrips, reqVO.getDailyPumpTrips())
+                .eqIfPresent(IotRdDailyReportDO::getDailyToolsSand, reqVO.getDailyToolsSand())
+                .eqIfPresent(IotRdDailyReportDO::getRunCount, reqVO.getRunCount())
+                .eqIfPresent(IotRdDailyReportDO::getBridgePlug, reqVO.getBridgePlug())
+                .eqIfPresent(IotRdDailyReportDO::getWaterVolume, reqVO.getWaterVolume())
+                .eqIfPresent(IotRdDailyReportDO::getHourCount, reqVO.getHourCount())
+                .eqIfPresent(IotRdDailyReportDO::getDailyFuel, reqVO.getDailyFuel())
+                .eqIfPresent(IotRdDailyReportDO::getDailyPowerUsage, reqVO.getDailyPowerUsage())
+                .betweenIfPresent(IotRdDailyReportDO::getProductionTime, reqVO.getProductionTime())
+                .betweenIfPresent(IotRdDailyReportDO::getNonProductionTime, reqVO.getNonProductionTime())
+                .eqIfPresent(IotRdDailyReportDO::getRdNptReason, reqVO.getRdNptReason())
+                .betweenIfPresent(IotRdDailyReportDO::getConstructionStartDate, reqVO.getConstructionStartDate())
+                .betweenIfPresent(IotRdDailyReportDO::getConstructionEndDate, reqVO.getConstructionEndDate())
+                .eqIfPresent(IotRdDailyReportDO::getProductionStatus, reqVO.getProductionStatus())
+                .eqIfPresent(IotRdDailyReportDO::getExternalRental, reqVO.getExternalRental())
+                .eqIfPresent(IotRdDailyReportDO::getNextPlan, reqVO.getNextPlan())
+                .eqIfPresent(IotRdDailyReportDO::getRdStatus, reqVO.getRdStatus())
+                .eqIfPresent(IotRdDailyReportDO::getMalfunction, reqVO.getMalfunction())
+                .betweenIfPresent(IotRdDailyReportDO::getFaultDowntime, reqVO.getFaultDowntime())
+                .eqIfPresent(IotRdDailyReportDO::getPersonnel, reqVO.getPersonnel())
+                .eqIfPresent(IotRdDailyReportDO::getTotalStaffNum, reqVO.getTotalStaffNum())
+                .eqIfPresent(IotRdDailyReportDO::getLeaveStaffNum, reqVO.getLeaveStaffNum())
+                .eqIfPresent(IotRdDailyReportDO::getExtProperty, reqVO.getExtProperty())
+                .eqIfPresent(IotRdDailyReportDO::getSort, reqVO.getSort())
+                .eqIfPresent(IotRdDailyReportDO::getRemark, reqVO.getRemark())
+                .eqIfPresent(IotRdDailyReportDO::getStatus, reqVO.getStatus())
+                .eqIfPresent(IotRdDailyReportDO::getProcessInstanceId, reqVO.getProcessInstanceId())
+                .eqIfPresent(IotRdDailyReportDO::getAuditStatus, reqVO.getAuditStatus())
+                .betweenIfPresent(IotRdDailyReportDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(IotRdDailyReportDO::getId);
+    }
 }

+ 5 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/dailyreport/CreateRdDailyReportOrderJob.java

@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.pms.job.dailyreport;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.LocalDateTimeUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.iocoder.yudao.framework.dict.core.DictFrameworkUtils;
 import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler;
 import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
@@ -82,8 +83,10 @@ public class CreateRdDailyReportOrderJob implements JobHandler {
             });
         }
         // 查询瑞都相关的项目任务 根据每个任务的填报人进行工单生成和推送
+        // 平台井任务只生成主井号任务 关联井在日报中聚合处理
         IotProjectTaskPageReqVO taskReqVO = new IotProjectTaskPageReqVO();
         taskReqVO.setCompanyId(163l);
+        taskReqVO.setJobFlag(StrUtil.EMPTY);
         List<IotProjectTaskDO> tasks = iotProjectTaskService.projectTasks(taskReqVO);
         Set<Long> userIds = new HashSet<>();
         List<IotRdDailyReportDO> reports = new ArrayList<>();
@@ -129,6 +132,8 @@ public class CreateRdDailyReportOrderJob implements JobHandler {
                     }
                     report.setProjectId(task.getProjectId());
                     report.setTaskId(task.getId());
+                    report.setPlatformWell(task.getPlatformWell());
+                    report.setPlatformGroup(task.getPlatformGroup());
                     report.setDeviceIds(task.getDeviceIds());
                     report.setStartTime(LocalTime.of(8, 0, 0));
                     report.setEndTime(LocalTime.of(8, 0, 0));

+ 7 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotrddailyreport/IotRdDailyReportService.java

@@ -82,4 +82,11 @@ public interface IotRdDailyReportService {
      * @param
      */
     List<IotRdDailyReportStatisticsRespVO> statistics(IotRdDailyReportPageReqVO pageReqVO);
+
+    /**
+     * 批量更新瑞都日报 平台井
+     *
+     * @param
+     */
+    void saveBatch(List<IotRdDailyReportSaveReqVO> reports);
 }

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

@@ -504,4 +504,14 @@ public class IotRdDailyReportServiceImpl implements IotRdDailyReportService {
         return result;
     }
 
+    @Override
+    public void saveBatch(List<IotRdDailyReportSaveReqVO> reports) {
+        if (CollUtil.isEmpty(reports)) {
+            throw exception(IOT_RD_DAILY_REPORT_NOT_EXISTS);
+        }
+        reports.forEach(report -> {
+            updateIotRdDailyReport(report);
+        });
+    }
+
 }