Przeglądaj źródła

pms 瑞鹰 钻井 修井 日报 导出

zhangcl 3 dni temu
rodzic
commit
0faa52e0f7

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

@@ -1,6 +1,8 @@
 package cn.iocoder.yudao.module.pms.controller.admin.iotrhdailyreport;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.LocalDateTimeUtil;
 import cn.hutool.core.util.ObjUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
@@ -185,7 +187,7 @@ public class IotRhDailyReportController {
             }
         }
         PageResult<IotRhDailyReportDO> pageResult = iotRhDailyReportService.getIotRhDailyReportPage(pageReqVO);
-        return success(new PageResult<>(buildRhDailyReports(pageResult.getList(), pageReqVO), pageResult.getTotal()));
+        return success(new PageResult<>(buildRhDailyReports(pageResult.getList(), pageReqVO, "list"), pageResult.getTotal()));
     }
 
     @GetMapping("/teamReports")
@@ -520,7 +522,7 @@ public class IotRhDailyReportController {
         PageResult<IotRhDailyReportDO> pageResult = iotRhDailyReportService.dailyReportSummary(pageReqVO);
 
         // List<IotRhDailyReportRespVO> rhDailyReports = IotRhDailyReportConvert.INSTANCE.convertList(pageResult.getList(), deptMap);
-        return success(new PageResult<>(buildRhDailyReports(pageResult.getList(), pageReqVO), pageResult.getTotal()));
+        return success(new PageResult<>(buildRhDailyReports(pageResult.getList(), pageReqVO, "list"), pageResult.getTotal()));
         // return success(new PageResult<>(rhDailyReports, pageResult.getTotal()));
     }
 
@@ -536,9 +538,10 @@ public class IotRhDailyReportController {
     /**
      * 瑞恒日报分页 设置关联查询信息
      * @param reports
+     * @param type list列表展示  export导出列表数据
      * @return
      */
-    private List<IotRhDailyReportRespVO> buildRhDailyReports(List<IotRhDailyReportDO> reports, IotRhDailyReportPageReqVO pageReqVO) {
+    private List<IotRhDailyReportRespVO> buildRhDailyReports(List<IotRhDailyReportDO> reports, IotRhDailyReportPageReqVO pageReqVO, String type) {
         if (CollUtil.isEmpty(reports)) {
             return Collections.emptyList();
         }
@@ -735,6 +738,10 @@ public class IotRhDailyReportController {
                 // 赋值
                 reportVO.setTransitTimeRate(transitTimeRate);
             }
+            // 导出列表时 格式化时间为 yyyy-MM-dd
+            if (ObjUtil.isNotEmpty(reportVO.getCreateTime())) {
+                reportVO.setCreateTimeStr(LocalDateTimeUtil.format(reportVO.getCreateTime(), DatePattern.NORM_DATE_PATTERN));
+            }
             // 2.1 拼接部门信息
             findAndThen(deptMap, reportVO.getDeptId(), dept -> reportVO.setDeptName(dept.getName()));
             // 队伍当年累计注气量
@@ -1386,7 +1393,7 @@ public class IotRhDailyReportController {
         List<IotRhDailyReportDO> list = iotRhDailyReportService.getIotRhDailyReportPage(pageReqVO).getList();
         // 导出 Excel
         ExcelUtils.write(response, "瑞恒日报.xls", "数据", IotRhDailyReportRespVO.class,
-                buildRhDailyReports(list, pageReqVO));
+                buildRhDailyReports(list, pageReqVO, "export"));
     }
 
     @GetMapping("/exportStatistics")

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

@@ -16,9 +16,12 @@ import java.util.List;
 public class IotRhDailyReportRespVO {
 
     @Schema(description = "创建时间")
-    @ExcelProperty("日报生成日期")
     private LocalDateTime createTime;
 
+    @Schema(description = "创建时间")
+    @ExcelProperty("创建时间")
+    private String createTimeStr;
+
     @Schema(description = "部门名称")
     @ExcelProperty("施工队伍")
     private String deptName;

+ 87 - 4
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrydailyreport/IotRyDailyReportController.java

@@ -1,6 +1,8 @@
 package cn.iocoder.yudao.module.pms.controller.admin.iotrydailyreport;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.LocalDateTimeUtil;
 import cn.hutool.core.util.ObjUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
@@ -23,7 +25,9 @@ import cn.iocoder.yudao.module.pms.service.iotprojectinfo.IotProjectInfoService;
 import cn.iocoder.yudao.module.pms.service.iotprojecttask.IotProjectTaskService;
 import cn.iocoder.yudao.module.pms.service.iotrydailyreport.IotRyDailyReportService;
 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO;
 import cn.iocoder.yudao.module.system.service.dept.DeptService;
+import cn.iocoder.yudao.module.system.service.dict.DictDataService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -65,6 +69,8 @@ public class IotRyDailyReportController {
     private IotProjectTaskService iotProjectTaskService;
     @Resource
     private IotRyDailyReportMapper iotRyDailyReportMapper;
+    @Resource
+    private DictDataService dictDataService;
 
     @PostMapping("/create")
     @Operation(summary = "创建瑞鹰日报")
@@ -190,7 +196,7 @@ public class IotRyDailyReportController {
 
         PageResult<IotRyDailyReportDO> pageResult = iotRyDailyReportService.getIotRyDailyReportPage(pageReqVO);
 
-        return success(new PageResult<>(buildRyDailyReports(pageResult.getList(), pageReqVO), pageResult.getTotal()));
+        return success(new PageResult<>(buildRyDailyReports(pageResult.getList(), pageReqVO, "list"), pageResult.getTotal()));
     }
 
     @GetMapping("/teamReports")
@@ -302,7 +308,7 @@ public class IotRyDailyReportController {
      * @param reports
      * @return
      */
-    private List<IotRyDailyReportRespVO> buildRyDailyReports(List<IotRyDailyReportDO> reports, IotRyDailyReportPageReqVO pageReqVO) {
+    private List<IotRyDailyReportRespVO> buildRyDailyReports(List<IotRyDailyReportDO> reports, IotRyDailyReportPageReqVO pageReqVO, String type) {
         if (CollUtil.isEmpty(reports)) {
             return Collections.emptyList();
         }
@@ -334,6 +340,36 @@ public class IotRyDailyReportController {
         Map<Long, Integer> totalTasksPair = new HashMap<>();
         // key施工队伍id    value完工井数量
         Map<Long, Integer> completedTasksPair = new HashMap<>();
+        // key非生产时间原因数据字典value   value非生产时间原因数据字典label
+        Map<String, String> nptReasonPair = new HashMap<>();
+        // key施工状态数据字典value   value施工状态数据字典label
+        Map<String, String> constructStatusPair = new HashMap<>();
+
+        // 钻井 施工状态 字典数据
+        List<DictDataDO> rigStatusDictData = dictDataService.getDictDataListByDictType("rigStatus");
+        // 修井 施工状态 字典数据
+        List<DictDataDO> repairStatusDictData = dictDataService.getDictDataListByDictType("repairStatus");
+        // 非生产时间原因 字典数据
+        List<DictDataDO> nptReasonDictData = dictDataService.getDictDataListByDictType("ryNptReason");
+
+        if (CollUtil.isNotEmpty(nptReasonDictData)) {
+            nptReasonDictData.forEach(data -> {
+                nptReasonPair.put(data.getValue(), data.getLabel());
+            });
+        }
+        // 钻井施工状态
+        if ("1".equals(pageReqVO.getProjectClassification()) && CollUtil.isNotEmpty(rigStatusDictData)) {
+            rigStatusDictData.forEach(data -> {
+                constructStatusPair.put(data.getValue(), data.getLabel());
+            });
+        }
+        // 修井施工状态
+        if ("2".equals(pageReqVO.getProjectClassification()) && CollUtil.isNotEmpty(repairStatusDictData)) {
+            repairStatusDictData.forEach(data -> {
+                constructStatusPair.put(data.getValue(), data.getLabel());
+            });
+        }
+
         DataPermissionUtils.executeIgnore(() -> {
             // 查询日报关联的项目信息
             IotProjectInfoPageReqVO reqVO = new IotProjectInfoPageReqVO();
@@ -416,6 +452,14 @@ public class IotRyDailyReportController {
                         .divide(BigDecimal.valueOf(1), 2, RoundingMode.HALF_UP);
                 reportVO.setDailyFuel(fuel);
             }
+            // 日报生成日期 格式化时间为 yyyy-MM-dd
+            if (ObjUtil.isNotEmpty(reportVO.getCreateTime())) {
+                reportVO.setCreateTimeStr(LocalDateTimeUtil.format(reportVO.getCreateTime(), DatePattern.NORM_DATE_PATTERN));
+            }
+            // 上井次完井时间 格式化时间为 yyyy-MM-dd
+            if (ObjUtil.isNotEmpty(reportVO.getLatestWellDoneTime())) {
+                reportVO.setLatestWellDoneTimeStr(LocalDateTimeUtil.format(reportVO.getLatestWellDoneTime(), DatePattern.NORM_DATE_PATTERN));
+            }
             // 2.1 拼接部门信息
             findAndThen(deptMap, reportVO.getDeptId(), dept -> reportVO.setDeptName(dept.getName()));
             // 2.2 日报关联的项目信息
@@ -443,6 +487,20 @@ public class IotRyDailyReportController {
             // 2.8 总施工井数 完工井数
             findAndThen(totalTasksPair, reportVO.getDeptId(), totalTaskCount -> reportVO.setTotalConstructionWells(totalTaskCount));
             findAndThen(completedTasksPair, reportVO.getDeptId(), completedTaskCount -> reportVO.setCompletedWells(completedTaskCount));
+            // 钻井 施工状态 数据字典
+            findAndThen(constructStatusPair, reportVO.getRigStatus(), statusLabel -> {
+                if ("1".equals(pageReqVO.getProjectClassification())) {
+                    reportVO.setConstructionStatusName(statusLabel);
+                }
+            });
+            // 修井 施工状态 数据字典
+            findAndThen(constructStatusPair, reportVO.getRepairStatus(), statusLabel -> {
+                if ("2".equals(pageReqVO.getProjectClassification())) {
+                    reportVO.setConstructionStatusName(statusLabel);
+                }
+            });
+            // 非生产时间原因 数据字典
+            findAndThen(nptReasonPair, reportVO.getRyNptReason(), statusLabel -> reportVO.setRyNptReason(statusLabel));
         });
     }
 
@@ -1354,16 +1412,41 @@ public class IotRyDailyReportController {
     }
 
     @GetMapping("/export-excel")
-    @Operation(summary = "导出瑞鹰日报 Excel")
+    @Operation(summary = "导出瑞鹰 钻井 修井 日报 Excel")
     @PreAuthorize("@ss.hasPermission('pms:iot-ry-daily-report:export')")
     @ApiAccessLog(operateType = EXPORT)
     public void exportIotRyDailyReportExcel(@Valid IotRyDailyReportPageReqVO pageReqVO,
               HttpServletResponse response) throws IOException {
         pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        // 根据查询参数筛选出 符合条件 的记录id 再传入 分页查询
+        Set<Long> projectIds = new HashSet<>();
+        Set<Long> taskIds = new HashSet<>();
+        if (StrUtil.isNotBlank(pageReqVO.getContractName())) {
+            IotProjectInfoPageReqVO reqVO = new IotProjectInfoPageReqVO();
+            reqVO.setContractName(pageReqVO.getContractName());
+            List<IotProjectInfoDO> projects = iotProjectInfoService.getIotProjectInfos(reqVO);
+            if (CollUtil.isNotEmpty(projects)) {
+                projects.forEach(project -> {
+                    projectIds.add(project.getId());
+                });
+                pageReqVO.setProjectIds(projectIds);
+            }
+        }
+        if (StrUtil.isNotBlank(pageReqVO.getTaskName())) {
+            IotProjectTaskPageReqVO reqVO = new IotProjectTaskPageReqVO();
+            reqVO.setSearchKey(pageReqVO.getTaskName());
+            List<IotProjectTaskDO> tasks = iotProjectTaskService.projectTasks(reqVO);
+            if (CollUtil.isNotEmpty(tasks)) {
+                tasks.forEach(task -> {
+                    taskIds.add(task.getId());
+                });
+                pageReqVO.setTaskIds(taskIds);
+            }
+        }
         List<IotRyDailyReportDO> list = iotRyDailyReportService.getIotRyDailyReportPage(pageReqVO).getList();
         // 导出 Excel
         ExcelUtils.write(response, "瑞鹰日报.xls", "数据", IotRyDailyReportRespVO.class,
-                        BeanUtils.toBean(list, IotRyDailyReportRespVO.class));
+                buildRyDailyReports(list, pageReqVO, "export"));
     }
 
     @GetMapping("/exportStatistics")

+ 30 - 34
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrydailyreport/vo/IotRyDailyReportRespVO.java

@@ -13,24 +13,38 @@ import java.time.LocalDateTime;
 @ExcelIgnoreUnannotated
 public class IotRyDailyReportRespVO {
 
+    @Schema(description = "创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "创建时间")
+    @ExcelProperty("创建时间")
+    private String createTimeStr;
+
+    @Schema(description = "部门名称")
+    @ExcelProperty("施工队伍")
+    private String deptName;
+
+    @Schema(description = "项目/合同名称")
+    @ExcelProperty("项目")
+    private String contractName;
+
+    @Schema(description = "任务 井号-施工地点")
+    @ExcelProperty("任务")
+    private String taskName;
+
     @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "25152")
-    @ExcelProperty("主键id")
     private Long id;
 
     @Schema(description = "施工队伍id", example = "29285")
-    @ExcelProperty("施工队伍id")
     private Long deptId;
 
     @Schema(description = "项目id", example = "23929")
-    @ExcelProperty("项目id")
     private Long projectId;
 
     @Schema(description = "任务id", example = "1515")
-    @ExcelProperty("任务id")
     private Long taskId;
 
     @Schema(description = "项目类别(钻井 修井 注氮 酸化压裂... )")
-    @ExcelProperty("项目类别(钻井 修井 注氮 酸化压裂... )")
     private String projectClassification;
 
     @Schema(description = "搬迁安装天数(D)")
@@ -38,9 +52,12 @@ public class IotRyDailyReportRespVO {
     private BigDecimal relocationDays;
 
     @Schema(description = "上井次完井时间")
-    @ExcelProperty("上井次完井时间")
     private LocalDateTime latestWellDoneTime;
 
+    @Schema(description = "上井次完井时间")
+    @ExcelProperty("上井次完井时间")
+    private String latestWellDoneTimeStr;
+
     @Schema(description = "当前井深(m)")
     @ExcelProperty("当前井深(m)")
     private BigDecimal currentDepth;
@@ -62,7 +79,6 @@ public class IotRyDailyReportRespVO {
     private BigDecimal dailyPowerUsage;
 
     @Schema(description = "当月用电量(kWh)")
-    @ExcelProperty("当月用电量(kWh)")
     private BigDecimal monthlyPowerUsage;
 
     @Schema(description = "当日油耗(吨)")
@@ -70,15 +86,12 @@ public class IotRyDailyReportRespVO {
     private BigDecimal dailyFuel;
 
     @Schema(description = "当月油耗(吨)")
-    @ExcelProperty("当月油耗(吨)")
     private BigDecimal monthlyFuel;
 
     @Schema(description = "当日上油数量(吨)")
-    @ExcelProperty("当日上油数量(吨)")
     private BigDecimal dailyOilVolume;
 
     @Schema(description = "柴油剩余数量(吨)")
-    @ExcelProperty("柴油剩余数量(吨)")
     private BigDecimal remainDieselVolume;
 
     @Schema(description = "生产时间(H)")
@@ -93,7 +106,6 @@ public class IotRyDailyReportRespVO {
     @ExcelProperty("非生产时间原因")
     private String ryNptReason;
 
-
     @Schema(description = "进尺工作时间(H)")
     @ExcelProperty("进尺工作时间(H)")
     private BigDecimal drillingWorkingTime;
@@ -147,6 +159,10 @@ public class IotRyDailyReportRespVO {
     @ExcelProperty("当日生产情况生产动态")
     private String productionStatus;
 
+    @Schema(description = "施工状态 对应的数据字典 label")
+    @ExcelProperty("施工状态")
+    private String constructionStatusName;
+
     @Schema(description = "目前工序")
     @ExcelProperty("目前工序")
     private String currentOperation;
@@ -156,11 +172,9 @@ public class IotRyDailyReportRespVO {
     private String nextPlan;
 
     @Schema(description = "施工状态(动迁 准备 施工 完工)", example = "1")
-    @ExcelProperty("施工状态(动迁 准备 施工 完工)")
     private String rigStatus;
 
     @Schema(description = "瑞鹰修井 施工状态(动迁 准备 施工 完工)", example = "1")
-    @ExcelProperty("瑞鹰修井 施工状态(动迁 准备 施工 完工)")
     private String repairStatus;
 
     @Schema(description = "人员情况")
@@ -176,15 +190,15 @@ public class IotRyDailyReportRespVO {
     private BigDecimal leaveStaffNum;
 
     @Schema(description = "泥浆性能-密度(g/cm³)")
-    @ExcelProperty("泥浆性能-密度(g/cm³)")
+    @ExcelProperty("泥浆密度(g/cm³)")
     private BigDecimal mudDensity;
 
     @Schema(description = "泥浆性能-粘度(S)")
-    @ExcelProperty("泥浆性能-粘度(S)")
+    @ExcelProperty("泥浆粘度(S)")
     private BigDecimal mudViscosity;
 
     @Schema(description = "水平段长度(m) 适用于水平井")
-    @ExcelProperty("水平段长度(m) 适用于水平井")
+    @ExcelProperty("水平段长度(m)")
     private BigDecimal lateralLength;
 
     @Schema(description = "井斜(°)")
@@ -196,11 +210,9 @@ public class IotRyDailyReportRespVO {
     private BigDecimal azimuth;
 
     @Schema(description = "不同专业公司的扩展属性值")
-    @ExcelProperty("不同专业公司的扩展属性值")
     private String extProperty;
 
     @Schema(description = "排序值")
-    @ExcelProperty("排序值")
     private Integer sort;
 
     @Schema(description = "备注", example = "随便")
@@ -208,36 +220,20 @@ public class IotRyDailyReportRespVO {
     private String remark;
 
     @Schema(description = "状态(0启用 1禁用)", example = "2")
-    @ExcelProperty("状态(0启用 1禁用)")
     private Integer status;
 
     @Schema(description = "流程实例id", example = "7723")
-    @ExcelProperty("流程实例id")
     private String processInstanceId;
 
     @Schema(description = "审批状态 未提交、审批中、审批通过、审批不通过、已取消", example = "2")
-    @ExcelProperty("审批状态 未提交、审批中、审批通过、审批不通过、已取消")
     private Integer auditStatus;
 
     @Schema(description = "审批意见", example = "同意")
     private String opinion;
 
-    @Schema(description = "创建时间")
-    @ExcelProperty("创建时间")
-    private LocalDateTime createTime;
-
     /**
      * 扩展字段
      */
-    @Schema(description = "部门名称")
-    private String deptName;
-
-    @Schema(description = "项目/合同名称")
-    private String contractName;
-
-    @Schema(description = "任务 井号-施工地点")
-    private String taskName;
-
     @Schema(description = "设计井深(m)")
     private BigDecimal designWellDepth;