Ver Fonte

pms 瑞鹰看板 钻井完成情况

zhangcl há 6 dias atrás
pai
commit
1d8c0ba92b

+ 86 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/stat/IotStaticController.java

@@ -1335,5 +1335,91 @@ public class IotStaticController {
 
 
     }
+
+    /**
+     * 按队伍 统计 瑞鹰 158 的 钻井 完井情况
+     * @return
+     */
+    @GetMapping("/ry/dailyReport/rigFinished")
+    @PermitAll
+    public CommonResult<Map<String, Object>> getRyDailyReportRigFinished() {
+        // 查询瑞鹰所有 队伍 项目部
+        Set<Long> rdChildDeptIds = deptService.getChildDeptIdListFromCache(158l);
+        List<DeptDO> depts =deptService.getDeptList(rdChildDeptIds);
+        // key队伍id      value队伍所属项目部id      包含队伍的项目部
+        Map<Long, Long> teamProjectPair = new HashMap<>();
+        // key队伍id      value队伍名称
+        Map<Long, String> teamPair = new HashMap<>();
+        // 项目部id集合
+        Set<Long> projectDeptIds = new HashSet<>();
+        // key项目部id     value项目部名称
+        Map<Long, String> projectDeptPair = new HashMap<>();
+        if (CollUtil.isNotEmpty(depts)) {
+            depts.forEach(dept -> {
+                if (dept.getName().contains("项目部")) {
+                    projectDeptIds.add(dept.getId());
+                    projectDeptPair.put(dept.getId(), dept.getName());
+                } else {
+                    teamProjectPair.put(dept.getId(), dept.getParentId());
+                    teamPair.put(dept.getId(), dept.getName());
+                }
+            });
+        }
+        IotRyDailyReportPageReqVO reqVO = new IotRyDailyReportPageReqVO();
+        // 钻井
+        reqVO.setProjectClassification("2");
+        // 钻井 日报统计 月完井数 年完井数
+        List<IotRyDailyReportTaskCountVO> repairReports = iotRyDailyReportService.countDateRigTasksByDepartment();
+        Map<String, Integer> deptDailyPair = new HashMap<>();
+        Map<String, Integer> deptMonthlyPair = new HashMap<>();
+        Map<String, Integer> deptAnnualPair = new HashMap<>();
+        // 遍历集合 repairReports 找到对应的队伍
+        if (CollUtil.isNotEmpty(repairReports)) {
+            repairReports.forEach(report -> {
+                if (teamPair.containsKey(report.getDeptId())) {
+                    String deptName = teamPair.get(report.getDeptId());
+                    // 设置日完井数
+                    deptDailyPair.put(deptName, report.getCompletedTaskCount());
+                    // 设置月完井数
+                    deptMonthlyPair.put(deptName, report.getMonthCompletedTaskCount());
+                    deptAnnualPair.put(deptName, report.getYearCompletedTaskCount());
+                }
+            });
+        }
+        // 遍历所有队伍 没有产生运行数据的队伍 赋值 0
+        teamPair.forEach((deptId, deptName) -> {
+            if (!deptDailyPair.containsKey(deptName)) {
+                deptDailyPair.put(deptName, 0);
+            }
+            if (!deptMonthlyPair.containsKey(deptName)) {
+                deptMonthlyPair.put(deptName, 0);
+            }
+            if (!deptAnnualPair.containsKey(deptName)) {
+                deptAnnualPair.put(deptName, 0);
+            }
+        });
+
+        LinkedList<Object> xAxis = new LinkedList<>();
+        LinkedList<Object> dailyData = new LinkedList<>();
+        LinkedList<Object> monthData = new LinkedList<>();
+        LinkedList<Object> yearData = new LinkedList<>();
+
+        deptDailyPair.forEach( (k,v)->{
+            xAxis.add(k);
+            dailyData.add(v);
+            if (deptMonthlyPair.containsKey(k)) {
+                Integer monthCount = deptMonthlyPair.get(k);
+                monthData.add(monthCount);
+            }
+            if (deptAnnualPair.containsKey(k)) {
+                Integer yearCount = deptAnnualPair.get(k);
+                yearData.add(yearCount);
+            }
+        });
+        ImmutableMap<String, Serializable> dailyResult = ImmutableMap.of("name", "日累完成井数~~en**dailyFinished", "data", dailyData);
+        ImmutableMap<String, Serializable> monthResult = ImmutableMap.of("name", "月累完成井数~~en**monthlyFinished", "data", monthData);
+        ImmutableMap<String, Serializable> yearResult = ImmutableMap.of("name", "年累完井数~~en**annualFinished", "data", yearData);
+        return success(ImmutableMap.of("xAxis", xAxis, "series", ImmutableList.of(dailyResult, monthResult, yearResult)));
+    }
 }
 

+ 18 - 3
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotrydailyreport/IotRyDailyReportMapper.java

@@ -407,12 +407,27 @@ public interface IotRyDailyReportMapper extends BaseMapperX<IotRyDailyReportDO>
      */
     @Select("SELECT " +
             "dept_id as deptId, " +
-            "SUM(IF(DATE(construction_start_date) = CURDATE(), daily_footage, 0)) as dailyFootage," +
-            "SUM(IF(YEAR(construction_start_date) = YEAR(CURDATE()) AND MONTH(construction_start_date) = MONTH(CURDATE()), daily_footage, 0)) as monthlyFootage," +
-            "SUM(IF(YEAR(construction_start_date) = YEAR(CURDATE()), daily_footage, 0)) as annualFootage " +
+            "SUM(IF(DATE(create_time) = CURDATE(), daily_footage, 0)) as dailyFootage," +
+            "SUM(IF(YEAR(create_time) = YEAR(CURDATE()) AND MONTH(create_time) = MONTH(CURDATE()), daily_footage, 0)) as monthlyFootage," +
+            "SUM(IF(YEAR(create_time) = YEAR(CURDATE()), daily_footage, 0)) as annualFootage " +
             "FROM rq_iot_ry_daily_report " +
             "WHERE deleted = 0 " +
             "AND (project_classification = 1 OR project_classification = '')  " +
             "GROUP BY dept_id")
     List<IotRyDailyReportTaskCountVO> countDateDrillTasksByDept();
+
+    /**
+     * 按部门/任务 统计 钻井 完工任务数量 当前日期所属的 日 月 年
+     * @return 部门 任务 统计列表
+     */
+    @Select("SELECT " +
+            "dept_id as deptId, " +
+            "COUNT(DISTINCT CASE WHEN rig_status = 'wg' AND task_id IS NOT NULL AND DATE(create_time) = CURDATE() THEN task_id END) as completedTaskCount," +
+            "COUNT(DISTINCT CASE WHEN rig_status = 'wg' AND task_id IS NOT NULL AND YEAR(create_time) = YEAR(CURDATE()) AND MONTH(create_time) = MONTH(CURDATE()) THEN task_id END) as monthCompletedTaskCount," +
+            "COUNT(DISTINCT CASE WHEN rig_status = 'wg' AND task_id IS NOT NULL AND YEAR(create_time) = YEAR(CURDATE()) THEN task_id END) as yearCompletedTaskCount " +
+            "FROM rq_iot_ry_daily_report " +
+            "WHERE deleted = 0 " +
+            "AND (project_classification = 1 OR project_classification = '') " +
+            "GROUP BY dept_id")
+    List<IotRyDailyReportTaskCountVO> countDateRigTasksByDepartment();
 }

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

@@ -105,4 +105,11 @@ public interface IotRyDailyReportService {
      * @return 按部门统计任务数量
      */
     List<IotRyDailyReportTaskCountVO> countDateDrillTasksByDept();
+
+    /**
+     * 按部门/任务 统计 钻井 完工任务数量 当前日期所属的 日 月 年
+     *
+     * @return 按部门统计任务数量
+     */
+    List<IotRyDailyReportTaskCountVO> countDateRigTasksByDepartment();
 }

+ 5 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotrydailyreport/IotRyDailyReportServiceImpl.java

@@ -283,4 +283,9 @@ public class IotRyDailyReportServiceImpl implements IotRyDailyReportService {
         return iotRyDailyReportMapper.countDateDrillTasksByDept();
     }
 
+    @Override
+    public List<IotRyDailyReportTaskCountVO> countDateRigTasksByDepartment() {
+        return iotRyDailyReportMapper.countDateRigTasksByDepartment();
+    }
+
 }