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

pms 瑞都日报 折线图统计 代码初始化

zhangcl пре 1 дан
родитељ
комит
ad53c84923

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

@@ -425,8 +425,39 @@ public class IotRdDailyReportController {
             }
         }
         List<IotRdDailyReportStatisticsRespVO> result = iotRdDailyReportService.statistics(pageReqVO);
-        // 瑞都日报 按照项目部统计
-        List<IotRdDailyReportStatisticsRespVO> projectReports = new ArrayList<>();
+        return success(result);
+    }
+
+    @GetMapping("/polylineStatistics")
+    @Operation(summary = "瑞都日报 统计")
+    @PreAuthorize("@ss.hasPermission('pms:iot-rd-daily-report:query')")
+    public CommonResult<List<IotRdDailyReportStatisticsRespVO>> polylineStatistics(@Valid IotRdDailyReportPageReqVO pageReqVO) {
+        // 根据查询参数筛选出 符合条件 的记录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<IotRdDailyReportStatisticsRespVO> result = iotRdDailyReportService.statistics(pageReqVO);
         return success(result);
     }
 

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

@@ -0,0 +1,55 @@
+package cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Schema(description = "管理后台 - 瑞都日报 工作量 折线图 统计 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class IotRdDailyReportPolylineVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "13853")
+    @ExcelProperty("主键id")
+    private Long id;
+
+    @Schema(description = "项目部id", example = "125")
+    @ExcelProperty("项目部id")
+    private Long deptId;
+
+    @Schema(description = "项目部名称", example = "西南压裂项目部")
+    @ExcelProperty("项目部名称")
+    private String projectDeptName;
+
+    @Schema(description = "队伍名称", example = "压裂二队")
+    @ExcelProperty("队伍名称")
+    private String deptName;
+
+    @Schema(description = "工作量 压裂井数")
+    @ExcelProperty("工作量 压裂井数")
+    private BigDecimal fracWellCount;
+
+    @Schema(description = "工作量 压裂层数")
+    @ExcelProperty("工作量 压裂层数")
+    private BigDecimal fracLayerCount;
+
+    @Schema(description = "工作量 泵车台次")
+    @ExcelProperty("工作量 泵车台次")
+    private BigDecimal pumpTrips;
+
+    @Schema(description = "工作量 连油井数")
+    @ExcelProperty("工作量 连油井数")
+    private BigDecimal contWellCount;
+
+    @Schema(description = "发生工作量所在年份")
+    @ExcelProperty("发生工作量所在年份")
+    private String workloadYear;
+
+    @Schema(description = "发生工作量所在月份")
+    @ExcelProperty("发生工作量所在月份")
+    private String workloadMonth;
+
+}

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

@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.pms.service.iotrddailyreport;
 
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.vo.IotRdDailyReportPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.vo.IotRdDailyReportPolylineVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.vo.IotRdDailyReportSaveReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.vo.IotRdDailyReportStatisticsRespVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotrddailyreport.IotRdDailyReportDO;
@@ -83,6 +84,13 @@ public interface IotRdDailyReportService {
      */
     List<IotRdDailyReportStatisticsRespVO> statistics(IotRdDailyReportPageReqVO pageReqVO);
 
+    /**
+     * 瑞都 日报 按项目部统计 工作量折线图
+     *
+     * @param
+     */
+    List<IotRdDailyReportPolylineVO> polylineStatistics(IotRdDailyReportPageReqVO pageReqVO);
+
     /**
      * 批量更新瑞都日报 平台井
      *

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

@@ -52,8 +52,7 @@ import java.util.stream.Collectors;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
-import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.IOT_PROJECT_TASK_NOT_EXISTS;
-import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.IOT_RD_DAILY_REPORT_NOT_EXISTS;
+import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.*;
 import static cn.iocoder.yudao.module.pms.framework.config.MultiThreadConfiguration.PMS_THREAD_POOL_TASK_EXECUTOR;
 
 /**
@@ -717,6 +716,33 @@ public class IotRdDailyReportServiceImpl implements IotRdDailyReportService {
         return result;
     }
 
+    @Override
+    public List<IotRdDailyReportPolylineVO> polylineStatistics(IotRdDailyReportPageReqVO pageReqVO) {
+        List<IotRdDailyReportPolylineVO> result = new ArrayList<>();
+        // 默认查询当年工作量
+        if (ObjUtil.isEmpty(pageReqVO.getCreateTime())) {
+            throw exception(IOT_DAILY_REPORT_TIME_NOT_EXISTS);
+        }
+        // 筛选审核通过的数据
+        pageReqVO.setAuditStatus(20);
+        List<IotRdDailyReportDO> dailyReports = iotRdDailyReportMapper.dailyReports(pageReqVO);
+        if (CollUtil.isNotEmpty(dailyReports)) {
+            // 设置 小队 任务已经完成的工作量集合 (按照不同的单位统计任务的不同工作量)
+            // key任务井id      value队伍工作量数据
+            Map<Long, BigDecimal> bridgePlugPair = new HashMap<>();
+            Map<Long, BigDecimal> runCountPair = new HashMap<>();
+            Map<Long, BigDecimal> cumulativeWorkingWellPair = new HashMap<>();
+            Map<Long, BigDecimal> hourCountPair = new HashMap<>();
+            Map<Long, BigDecimal> waterVolumePair = new HashMap<>();
+            Map<Long, BigDecimal> pumpTripsPair = new HashMap<>();
+            Map<Long, BigDecimal> cumulativeWorkingLayersPair = new HashMap<>();
+            Map<Long, BigDecimal> mixSandPair = new HashMap<>();
+
+            dailyReports.forEach(report -> {});
+        }
+        return result;
+    }
+
     @Override
     public void saveBatch(List<IotRdDailyReportSaveReqVO> reports) {
         if (CollUtil.isEmpty(reports)) {