Bläddra i källkod

pms 瑞恒日报 累计工作量统计

zhangcl 3 dagar sedan
förälder
incheckning
099d616ace

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

@@ -135,6 +135,59 @@ public class IotRhDailyReportController {
         return success(new PageResult<>(buildRhDailyReports(pageResult.getList()), pageResult.getTotal()));
     }
 
+    @GetMapping("/totalWorkload")
+    @Operation(summary = "累计工作量统计")
+    @PreAuthorize("@ss.hasPermission('pms:iot-rh-daily-report:query')")
+    public CommonResult<Map<String, BigDecimal>> totalWorkload(@Valid IotRhDailyReportPageReqVO pageReqVO) {
+        // 查询所有数据不分页
+        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<IotRhDailyReportDO> list = iotRhDailyReportService.getIotRhDailyReportPage(pageReqVO).getList();
+        Map<String, BigDecimal> result = new HashMap<>();
+        BigDecimal totalGasInjection = BigDecimal.ZERO;
+        BigDecimal totalWaterInjection = BigDecimal.ZERO;
+        if (CollUtil.isNotEmpty(list)) {
+            for (IotRhDailyReportDO report : list) {
+                BigDecimal dailyGasInjection = report.getDailyGasInjection();
+                BigDecimal dailyWaterInjection = report.getDailyWaterInjection();
+                if (ObjUtil.isNotEmpty(dailyGasInjection)) {
+                    totalGasInjection = totalGasInjection.add(dailyGasInjection);
+                }
+                if (ObjUtil.isNotEmpty(dailyWaterInjection)) {
+                    totalWaterInjection = totalWaterInjection.add(dailyWaterInjection);
+                }
+            }
+            // 汇总 指定搜索时间段内的 累计注气量 累计注水量
+            result.put("totalGasInjection", totalGasInjection);
+            result.put("totalWaterInjection", totalWaterInjection);
+        }
+        return success(result);
+    }
+
     @GetMapping("/rhDailyReportStatistics")
     @Operation(summary = "按照日期查询瑞恒日报统计数据 已填报 未填报 数量")
     @PreAuthorize("@ss.hasPermission('pms:iot-rh-daily-report:query')")