From 4b8477f30194cf6dea7f1cecf405e29efb0f7bed Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期六, 12 七月 2025 14:51:19 +0800
Subject: [PATCH] 保洁巡检本周代码

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/WorkbenchesController.java |  419 ++++++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 297 insertions(+), 122 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/WorkbenchesController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/WorkbenchesController.java
index 931929f..5501de8 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/WorkbenchesController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/WorkbenchesController.java
@@ -65,7 +65,8 @@
     private TCleanerService cleanerService;
     @Resource
     private TLeaveService leaveService;
-
+    @Resource
+    private TEarlyWarningService earlyWarningService;
     @ApiOperation(value = "查询部门 项目部列表 不分页")
     @GetMapping(value = "/listDepts")
     public R<List<DeptNoLimitVO>> listDepts() {
@@ -196,12 +197,17 @@
                                 .eq(TProjectDept::getStatus, 1)
                                 .eq(TProjectDept::getParentId, projectDept.getId()));
                         List<String> ids = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
+                        projectIds.add(projectDept.getId());
                         projectIds.addAll(ids);
                     }else {
                         projectIds.add(deptId);
                     }
                     query.setProjectId(projectIds);
                 }
+
+                // 巡检员数
+                Integer totalEmployeeNum = sysUserService.selectUserCount(query.getProjectId(),deptType);
+                map.put("totalEmployeeNum", totalEmployeeNum);
             }else {
                 // 公司人员
                 // 查询自己的任务列表
@@ -210,17 +216,20 @@
                 if(CollectionUtils.isEmpty(query.getProjectId())){
                     // 查询所有项目部的任务列表
                     List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
-                            .eq(TProjectDept::getStatus, 1)
-                            .ne(TProjectDept::getParentId, 0));
+                            .eq(TProjectDept::getStatus, 1));
                     if(!CollectionUtils.isEmpty(tProjectDeptList)){
                         List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
                         query.setProjectId(projectIds);
                     }
                 }
+                // 巡检员数
+                Integer totalEmployeeNum = sysUserService.selectUserCount(query.getProjectId(),1);
+                map.put("totalEmployeeNum", totalEmployeeNum+1);
             }
 
             // 查询片区
             if(!CollectionUtils.isEmpty(query.getProjectId())){
+                query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList()));
                 wrapper.in(TTask::getProjectId, query.getProjectId());
                 // 查询点位数
                 List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class)
@@ -236,6 +245,7 @@
             if(!CollectionUtils.isEmpty(taskList)){
                 list.addAll(taskList);
             }
+            list = list.stream().distinct().collect(Collectors.toList());
         }else {
             // 超级管理员
             // 查询点位类型
@@ -250,12 +260,12 @@
                 map.put("totalLocationNum", locationList.size());
             }
             // 超级管理员 查询所有的任务列表
-            List<TTask> taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class));
+            List<TTask> taskList = new ArrayList<>();
             if(CollectionUtils.isEmpty(query.getProjectId())){
+                taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class));
                 // 查询所有项目部的任务列表
                 List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
-                        .eq(TProjectDept::getStatus, 1)
-                        .ne(TProjectDept::getParentId, 0));
+                        .eq(TProjectDept::getStatus, 1));
                 if(!CollectionUtils.isEmpty(tProjectDeptList)){
                     List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
                     query.setProjectId(projectIds);
@@ -264,6 +274,7 @@
 
             // 查询片区
             if(!CollectionUtils.isEmpty(query.getProjectId())){
+                query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList()));
                 wrapper.in(TTask::getProjectId, query.getProjectId());
                 List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class)
                         .in(TLocation::getProjectId, query.getProjectId()));
@@ -278,6 +289,17 @@
             if(!CollectionUtils.isEmpty(taskList)){
                 list.addAll(taskList);
             }
+            list = list.stream().distinct().collect(Collectors.toList());
+
+            // 巡检员数
+            if(CollectionUtils.isEmpty(query.getProjectId())){
+                Integer totalEmployeeNum = sysUserService.selectUserCount(query.getProjectId(),deptType);
+                Integer totalEmployeeNum1 = sysUserService.selectUserCount(query.getProjectId(),1);
+                map.put("totalEmployeeNum", totalEmployeeNum+totalEmployeeNum1);
+            }else {
+                Integer totalEmployeeNum = sysUserService.selectUserCount(query.getProjectId(),1);
+                map.put("totalEmployeeNum", totalEmployeeNum);
+            }
         }
 
         // 查询任务相关数据
@@ -289,11 +311,11 @@
         map.put("waitTaskNum", list.stream().filter(tTask -> tTask.getStatus() == 1).count());
 
         // 总计员工数
-        Integer totalEmployeeNum = sysUserService.selectUserCount(query.getProjectId(),deptType);
-        if (deptType != 1) {
-            totalEmployeeNum = totalEmployeeNum + 1;
-        }
-        map.put("totalEmployeeNum", totalEmployeeNum);
+//        Integer totalEmployeeNum = sysUserService.selectUserCount(null,deptType);
+//        if (deptType != 1) {
+//            totalEmployeeNum = totalEmployeeNum + 1;
+//        }
+//        map.put("totalEmployeeNum", totalEmployeeNum);
 
         // 今日请假员工数量
         List<TLeave> leaves = leaveService.list(Wrappers.lambdaQuery(TLeave.class)
@@ -338,6 +360,16 @@
 
         wrapper.between(TTask::getImplementTime, query.getStartTime(), query.getEndTime());
 
+        // 过滤每天的任务
+        LocalDateTime start = DateUtils.stringToLocalDateTime(query.getStartTime());
+        LocalDateTime end = DateUtils.stringToLocalDateTime(query.getEndTime());
+
+        long daysBetween = ChronoUnit.DAYS.between(start, end);
+        List<TaskSituationDayVO> taskSituationDayVOList = new ArrayList<>();
+
+        LocalDateTime localDateTime = DateUtils.stringToLocalDateTime(query.getStartTime());
+        String format = null;
+
         List<TTask> list;
         if (userId != 1L) {
             // 查询点位类型
@@ -361,6 +393,7 @@
                                 .eq(TProjectDept::getStatus, 1)
                                 .eq(TProjectDept::getParentId, projectDept.getId()));
                         List<String> ids = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
+                        projectIds.add(projectDept.getId());
                         projectIds.addAll(ids);
                     }else {
                         projectIds.add(deptId);
@@ -376,8 +409,7 @@
                 if(CollectionUtils.isEmpty(query.getProjectId())){
                     // 查询所有项目部的任务列表
                     List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
-                            .eq(TProjectDept::getStatus, 1)
-                            .ne(TProjectDept::getParentId, 0));
+                            .eq(TProjectDept::getStatus, 1));
                     if(!CollectionUtils.isEmpty(tProjectDeptList)){
                         List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
                         query.setProjectId(projectIds);
@@ -387,17 +419,35 @@
 
             // 查询片区
             if(!CollectionUtils.isEmpty(query.getProjectId())){
+                query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList()));
                 wrapper.in(TTask::getProjectId, query.getProjectId());
             }
 
             list = taskCleanService.list(wrapper);
             if(CollectionUtils.isEmpty(list)){
-                return R.ok();
+                for (long i = 0; i <= daysBetween; i++) {
+                    TaskSituationDayVO taskSituationDayVO = new TaskSituationDayVO();
+                    if(i == 0){
+                        format = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                    }else {
+                        format = DateUtils.stringToLocalDate(format).plusDays(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                    }
+                    taskSituationDayVO.setTaskTime(format);
+                    // 任务数
+                    taskSituationDayVO.setTaskNum(0);
+                    // 完成数
+                    taskSituationDayVO.setCompletedNum(0);
+                    taskSituationDayVO.setCompleteRate(BigDecimal.ZERO);
+                    taskSituationDayVOList.add(taskSituationDayVO);
+                }
+                taskSituationVO.setTaskSituationDayVO(taskSituationDayVOList);
+                return R.ok(taskSituationVO);
             }
 
             if(!CollectionUtils.isEmpty(taskList)){
                 list.addAll(taskList);
             }
+            list = list.stream().distinct().collect(Collectors.toList());
         }else {
             // 超级管理员
             // 查询点位类型
@@ -411,13 +461,13 @@
                 }
             }
             // 超级管理员 查询所有的任务列表
-            List<TTask> taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class)
-                    .between(TTask::getImplementTime, query.getStartTime(), query.getEndTime()));
+            List<TTask> taskList = new ArrayList<>();
             if(CollectionUtils.isEmpty(query.getProjectId())){
+                taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class)
+                        .between(TTask::getImplementTime, query.getStartTime(), query.getEndTime()));
                 // 查询所有项目部的任务列表
                 List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
-                        .eq(TProjectDept::getStatus, 1)
-                        .ne(TProjectDept::getParentId, 0));
+                        .eq(TProjectDept::getStatus, 1));
                 if(!CollectionUtils.isEmpty(tProjectDeptList)){
                     List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
                     query.setProjectId(projectIds);
@@ -426,27 +476,62 @@
 
             // 查询片区
             if(!CollectionUtils.isEmpty(query.getProjectId())){
+                query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList()));
                 wrapper.in(TTask::getProjectId, query.getProjectId());
             }
 
             list = taskCleanService.list(wrapper);
             if(CollectionUtils.isEmpty(list)){
-                return R.ok();
+                for (long i = 0; i <= daysBetween; i++) {
+                    TaskSituationDayVO taskSituationDayVO = new TaskSituationDayVO();
+                    if(i == 0){
+                        format = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                    }else {
+                        format = DateUtils.stringToLocalDate(format).plusDays(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                    }
+                    taskSituationDayVO.setTaskTime(format);
+                    // 任务数
+                    taskSituationDayVO.setTaskNum(0);
+                    // 完成数
+                    taskSituationDayVO.setCompletedNum(0);
+                    taskSituationDayVO.setCompleteRate(BigDecimal.ZERO);
+                    taskSituationDayVOList.add(taskSituationDayVO);
+                }
+                taskSituationVO.setTaskSituationDayVO(taskSituationDayVOList);
+                return R.ok(taskSituationVO);
             }
 
             if(!CollectionUtils.isEmpty(taskList)){
                 list.addAll(taskList);
             }
+            list = list.stream().distinct().collect(Collectors.toList());
         }
         // 任务总数
         taskSituationVO.setTotalTaskNum(list.size());
-        List<TTask> result = list.stream().filter(task -> task.getStatus() == 6).collect(Collectors.toList());
+        List<TTask> result = list.stream().filter(task -> task.getStatus() == 6 || task.getStatus() == 5).collect(Collectors.toList());
         // 已完成任务数
         taskSituationVO.setCompletedTaskNum(result.size());
         // 匹配任务详情查看合格数量
-        List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2).collect(Collectors.toList());
+        List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2
+                && task.getStatus() != 3 && task.getStatus() != 4).collect(Collectors.toList());
         if(CollectionUtils.isEmpty(tasks)){
             taskSituationVO.setPassRate(BigDecimal.ZERO);
+            for (long i = 0; i <= daysBetween; i++) {
+                TaskSituationDayVO taskSituationDayVO = new TaskSituationDayVO();
+                if(i == 0){
+                    format = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                }else {
+                    format = DateUtils.stringToLocalDate(format).plusDays(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                }
+                taskSituationDayVO.setTaskTime(format);
+                // 任务数
+                taskSituationDayVO.setTaskNum(0);
+                // 完成数
+                taskSituationDayVO.setCompletedNum(0);
+                taskSituationDayVO.setCompleteRate(BigDecimal.ZERO);
+                taskSituationDayVOList.add(taskSituationDayVO);
+            }
+            taskSituationVO.setTaskSituationDayVO(taskSituationDayVOList);
             return R.ok(taskSituationVO);
         }
         List<String> taskIds = tasks.stream().map(TTask::getId).collect(Collectors.toList());
@@ -462,18 +547,7 @@
                 }
             }
         }
-        taskSituationVO.setPassRate(new BigDecimal(qualifiedWarn).divide(new BigDecimal(tasks.size()), 2, RoundingMode.HALF_UP));
-
-        // 过滤每天的任务
-        LocalDateTime start = DateUtils.stringToLocalDateTime(query.getStartTime());
-        LocalDateTime end = DateUtils.stringToLocalDateTime(query.getEndTime());
-
-        long daysBetween = ChronoUnit.DAYS.between(start, end);
-
-        List<TaskSituationDayVO> taskSituationDayVOList = new ArrayList<>();
-
-        LocalDateTime localDateTime = DateUtils.stringToLocalDateTime(query.getStartTime());
-        String format = null;
+        taskSituationVO.setPassRate(new BigDecimal(qualifiedWarn).divide(new BigDecimal(tasks.size()), 2, RoundingMode.HALF_DOWN));
         for (long i = 0; i <= daysBetween; i++) {
             TaskSituationDayVO taskSituationDayVO = new TaskSituationDayVO();
             if(i == 0){
@@ -487,7 +561,7 @@
             // 任务数
             taskSituationDayVO.setTaskNum(tTasks.size());
             // 完成数
-            taskSituationDayVO.setCompletedNum(tTasks.stream().filter(task -> task.getStatus() == 6).collect(Collectors.toList()).size());
+            taskSituationDayVO.setCompletedNum(tTasks.stream().filter(task -> task.getStatus() == 6 || task.getStatus() == 5).collect(Collectors.toList()).size());
             int qualifiedWarnChild = 0;
             for (TTask task : tTasks) {
                 TTaskDetail tTaskDetail = taskDetails.stream().filter(taskDetail -> taskDetail.getTaskId().equals(task.getId())).findFirst().orElse(null);
@@ -500,7 +574,7 @@
             if(tTasks.isEmpty()){
                 taskSituationDayVO.setCompleteRate(BigDecimal.ZERO);
             }else {
-                taskSituationDayVO.setCompleteRate(new BigDecimal(qualifiedWarnChild).divide(new BigDecimal(tTasks.size()), 2, RoundingMode.HALF_UP));
+                taskSituationDayVO.setCompleteRate(new BigDecimal(qualifiedWarnChild).divide(new BigDecimal(taskSituationDayVO.getCompletedNum()), 2, RoundingMode.HALF_DOWN));
             }
             taskSituationDayVOList.add(taskSituationDayVO);
         }
@@ -521,7 +595,7 @@
         LambdaQueryWrapper<TTask> wrapper = new LambdaQueryWrapper<>();
         String startTime = LocalDate.now() + " 00:00:00";
         String endTime = LocalDate.now() + " 23:59:59";
-        wrapper.between(TTask::getImplementTime, startTime, endTime);
+//        wrapper.between(TTask::getImplementTime, startTime, endTime);
         if (userId != 1L) {
             // 查询点位类型
             if(StringUtils.isNotEmpty(query.getLocationTypeId())){
@@ -544,6 +618,7 @@
                                 .eq(TProjectDept::getStatus, 1)
                                 .eq(TProjectDept::getParentId, projectDept.getId()));
                         List<String> ids = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
+                        projectIds.add(projectDept.getId());
                         projectIds.addAll(ids);
                     }else {
                         projectIds.add(deptId);
@@ -554,13 +629,14 @@
                 // 公司人员
                 // 查询自己的任务列表
                 taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class)
-                        .eq(TTask::getPatrolInspector, userId)
-                        .between(TTask::getImplementTime, startTime, endTime));
+                        .eq(TTask::getPatrolInspector, userId));
+//                taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class)
+//                        .eq(TTask::getPatrolInspector, userId)
+//                        .between(TTask::getImplementTime, startTime, endTime));
                 if(CollectionUtils.isEmpty(query.getProjectId())){
                     // 查询所有项目部的任务列表
                     List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
-                            .eq(TProjectDept::getStatus, 1)
-                            .ne(TProjectDept::getParentId, 0));
+                            .eq(TProjectDept::getStatus, 1));
                     if(!CollectionUtils.isEmpty(tProjectDeptList)){
                         List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
                         query.setProjectId(projectIds);
@@ -570,47 +646,68 @@
 
             // 查询片区
             if(!CollectionUtils.isEmpty(query.getProjectId())){
+                query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList()));
                 wrapper.in(TTask::getProjectId, query.getProjectId());
             }
 
             List<TTask> list = taskCleanService.list(wrapper);
             if(CollectionUtils.isEmpty(list)){
-                return R.ok();
+                return R.ok(new ArrayList<>());
             }
 
             if(!CollectionUtils.isEmpty(taskList)){
                 list.addAll(taskList);
             }
-            List<TTask> result = list.stream().filter(task -> task.getStatus() == 2).collect(Collectors.toList());
-            List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2).collect(Collectors.toList());
-            if(CollectionUtils.isEmpty(tasks)){
-                for (TTask task : result) {
-                    TLocation tLocation = locations.stream().filter(location -> location.getId().equals(task.getLocationId())).findFirst().orElse(null);
-                    if(Objects.nonNull(tLocation)) {
-                        task.setLocationName(tLocation.getLocationName());
-                    }
-                }
-                return R.ok(result);
+            list = list.stream().distinct().collect(Collectors.toList());
+
+            // 查询预警数据
+            List<TEarlyWarning> earlyWarnings = earlyWarningService.list(Wrappers.lambdaQuery(TEarlyWarning.class)
+                    .between(TEarlyWarning::getCreateTime, startTime, endTime));
+
+            if(CollectionUtils.isEmpty(earlyWarnings)){
+                return R.ok(new ArrayList<>());
             }
-            List<String> taskIds = tasks.stream().map(TTask::getId).collect(Collectors.toList());
-            List<TTaskDetail> taskDetails = tTaskDetailService.list(Wrappers.lambdaQuery(TTaskDetail.class)
-                    .in(TTaskDetail::getTaskId, taskIds)
-                    .orderByDesc(TTaskDetail::getCreateTime));
-            for (TTask task : list) {
-                TTaskDetail tTaskDetail = taskDetails.stream().filter(taskDetail -> taskDetail.getTaskId().equals(task.getId())).findFirst().orElse(null);
-                if(Objects.nonNull(tTaskDetail)){
-                    if(Objects.nonNull(tTaskDetail.getClearStatus()) && tTaskDetail.getClearStatus() == 2){
-                        result.add(task);
-                    }
+
+            String taskIds = earlyWarnings.stream().map(TEarlyWarning::getTaskId).collect(Collectors.joining(","));
+
+            Iterator<TTask> iterator = list.iterator();
+            while (iterator.hasNext()) {
+                TTask task = iterator.next();
+                if(!taskIds.contains(task.getId())){
+                    iterator.remove();
                 }
             }
-            for (TTask task : result) {
-                TLocation tLocation = locations.stream().filter(location -> location.getId().equals(task.getLocationId())).findFirst().orElse(null);
-                if(Objects.nonNull(tLocation)) {
-                    task.setLocationName(tLocation.getLocationName());
-                }
-            }
-            return R.ok(result);
+
+//            List<TTask> result = list.stream().filter(task -> task.getStatus() == 2).collect(Collectors.toList());
+//            List<TTask> tasks = list.stream().filter(task -> task.getStatus() == 1 || task.getStatus() == 2).collect(Collectors.toList());
+//            if(CollectionUtils.isEmpty(tasks)){
+//                for (TTask task : result) {
+//                    TLocation tLocation = locations.stream().filter(location -> location.getId().equals(task.getLocationId())).findFirst().orElse(null);
+//                    if(Objects.nonNull(tLocation)) {
+//                        task.setLocationName(tLocation.getLocationName());
+//                    }
+//                }
+//                return R.ok(result);
+//            }
+//            List<String> taskIds = tasks.stream().map(TTask::getId).collect(Collectors.toList());
+//            List<TTaskDetail> taskDetails = tTaskDetailService.list(Wrappers.lambdaQuery(TTaskDetail.class)
+//                    .in(TTaskDetail::getTaskId, taskIds)
+//                    .orderByDesc(TTaskDetail::getCreateTime));
+//            for (TTask task : list) {
+//                TTaskDetail tTaskDetail = taskDetails.stream().filter(taskDetail -> taskDetail.getTaskId().equals(task.getId())).findFirst().orElse(null);
+//                if(Objects.nonNull(tTaskDetail)){
+//                    if(Objects.nonNull(tTaskDetail.getClearStatus()) && tTaskDetail.getClearStatus() == 2){
+//                        result.add(task);
+//                    }
+//                }
+//            }
+//            for (TTask task : result) {
+//                TLocation tLocation = locations.stream().filter(location -> location.getId().equals(task.getLocationId())).findFirst().orElse(null);
+//                if(Objects.nonNull(tLocation)) {
+//                    task.setLocationName(tLocation.getLocationName());
+//                }
+//            }
+            return R.ok(list);
         }else {
             // 超级管理员
             // 查询点位类型
@@ -629,8 +726,7 @@
             if(CollectionUtils.isEmpty(query.getProjectId())){
                 // 查询所有项目部的任务列表
                 List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
-                        .eq(TProjectDept::getStatus, 1)
-                        .ne(TProjectDept::getParentId, 0));
+                        .eq(TProjectDept::getStatus, 1));
                 if(!CollectionUtils.isEmpty(tProjectDeptList)){
                     List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
                     query.setProjectId(projectIds);
@@ -639,47 +735,68 @@
 
             // 查询片区
             if(!CollectionUtils.isEmpty(query.getProjectId())){
+                query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList()));
                 wrapper.in(TTask::getProjectId, query.getProjectId());
             }
 
             List<TTask> list = taskCleanService.list(wrapper);
             if(CollectionUtils.isEmpty(list)){
-                return R.ok();
+                return R.ok(new ArrayList<>());
             }
 
             if(!CollectionUtils.isEmpty(taskList)){
                 list.addAll(taskList);
             }
-            List<TTask> result = list.stream().filter(task -> task.getStatus() == 2).collect(Collectors.toList());
-            List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2).collect(Collectors.toList());
-            if(CollectionUtils.isEmpty(tasks)){
-                for (TTask task : result) {
-                    TLocation tLocation = locations.stream().filter(location -> location.getId().equals(task.getLocationId())).findFirst().orElse(null);
-                    if(Objects.nonNull(tLocation)) {
-                        task.setLocationName(tLocation.getLocationName());
-                    }
-                }
-                return R.ok(result);
+            list = list.stream().distinct().collect(Collectors.toList());
+
+            // 查询预警数据
+            List<TEarlyWarning> earlyWarnings = earlyWarningService.list(Wrappers.lambdaQuery(TEarlyWarning.class)
+                    .between(TEarlyWarning::getCreateTime, startTime, endTime));
+
+            if(CollectionUtils.isEmpty(earlyWarnings)){
+                return R.ok(new ArrayList<>());
             }
-            List<String> taskIds = tasks.stream().map(TTask::getId).collect(Collectors.toList());
-            List<TTaskDetail> taskDetails = tTaskDetailService.list(Wrappers.lambdaQuery(TTaskDetail.class)
-                    .in(TTaskDetail::getTaskId, taskIds)
-                    .orderByDesc(TTaskDetail::getCreateTime));
-            for (TTask task : list) {
-                TTaskDetail tTaskDetail = taskDetails.stream().filter(taskDetail -> taskDetail.getTaskId().equals(task.getId())).findFirst().orElse(null);
-                if(Objects.nonNull(tTaskDetail)){
-                    if(Objects.nonNull(tTaskDetail.getClearStatus()) && tTaskDetail.getClearStatus() == 2){
-                        result.add(task);
-                    }
+
+            String taskIds = earlyWarnings.stream().map(TEarlyWarning::getTaskId).collect(Collectors.joining(","));
+
+            Iterator<TTask> iterator = list.iterator();
+            while (iterator.hasNext()) {
+                TTask task = iterator.next();
+                if(!taskIds.contains(task.getId())){
+                    iterator.remove();
                 }
             }
-            for (TTask task : result) {
-                TLocation tLocation = locations.stream().filter(location -> location.getId().equals(task.getLocationId())).findFirst().orElse(null);
-                if(Objects.nonNull(tLocation)) {
-                    task.setLocationName(tLocation.getLocationName());
-                }
-            }
-            return R.ok(result);
+
+//            List<TTask> result = list.stream().filter(task -> task.getStatus() == 2).collect(Collectors.toList());
+//            List<TTask> tasks = list.stream().filter(task -> task.getStatus() == 1 || task.getStatus() == 2).collect(Collectors.toList());
+//            if(CollectionUtils.isEmpty(tasks)){
+//                for (TTask task : result) {
+//                    TLocation tLocation = locations.stream().filter(location -> location.getId().equals(task.getLocationId())).findFirst().orElse(null);
+//                    if(Objects.nonNull(tLocation)) {
+//                        task.setLocationName(tLocation.getLocationName());
+//                    }
+//                }
+//                return R.ok(result);
+//            }
+//            List<String> taskIds = tasks.stream().map(TTask::getId).collect(Collectors.toList());
+//            List<TTaskDetail> taskDetails = tTaskDetailService.list(Wrappers.lambdaQuery(TTaskDetail.class)
+//                    .in(TTaskDetail::getTaskId, taskIds)
+//                    .orderByDesc(TTaskDetail::getCreateTime));
+//            for (TTask task : list) {
+//                TTaskDetail tTaskDetail = taskDetails.stream().filter(taskDetail -> taskDetail.getTaskId().equals(task.getId())).findFirst().orElse(null);
+//                if(Objects.nonNull(tTaskDetail)){
+//                    if(Objects.nonNull(tTaskDetail.getClearStatus()) && tTaskDetail.getClearStatus() == 2){
+//                        result.add(task);
+//                    }
+//                }
+//            }
+//            for (TTask task : result) {
+//                TLocation tLocation = locations.stream().filter(location -> location.getId().equals(task.getLocationId())).findFirst().orElse(null);
+//                if(Objects.nonNull(tLocation)) {
+//                    task.setLocationName(tLocation.getLocationName());
+//                }
+//            }
+            return R.ok(list);
         }
     }
 
@@ -716,6 +833,7 @@
                                 .eq(TProjectDept::getStatus, 1)
                                 .eq(TProjectDept::getParentId, projectDept.getId()));
                         List<String> ids = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
+                        projectIds.add(projectDept.getId());
                         projectIds.addAll(ids);
                     }else {
                         projectIds.add(deptId);
@@ -730,8 +848,7 @@
                 if(CollectionUtils.isEmpty(query.getProjectId())){
                     // 查询所有项目部的任务列表
                     List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
-                            .eq(TProjectDept::getStatus, 1)
-                            .ne(TProjectDept::getParentId, 0));
+                            .eq(TProjectDept::getStatus, 1));
                     if(!CollectionUtils.isEmpty(tProjectDeptList)){
                         List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
                         query.setProjectId(projectIds);
@@ -741,6 +858,7 @@
 
             // 查询片区
             if(!CollectionUtils.isEmpty(query.getProjectId())){
+                query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList()));
                 wrapper.in(TTask::getProjectId, query.getProjectId());
             }
 
@@ -752,6 +870,7 @@
             if(!CollectionUtils.isEmpty(taskList)){
                 list.addAll(taskList);
             }
+            list = list.stream().distinct().collect(Collectors.toList());
             List<TTask> result = list.stream().filter(task -> task.getStatus() == 3).collect(Collectors.toList());
             for (TTask task : result) {
                 TLocation tLocation = locations.stream().filter(location -> location.getId().equals(task.getLocationId())).findFirst().orElse(null);
@@ -773,12 +892,12 @@
                 }
             }
             // 超级管理员 查询所有的任务列表
-            List<TTask> taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class));
+            List<TTask> taskList = new ArrayList<>();
             if(CollectionUtils.isEmpty(query.getProjectId())){
+                taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class));
                 // 查询所有项目部的任务列表
                 List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
-                        .eq(TProjectDept::getStatus, 1)
-                        .ne(TProjectDept::getParentId, 0));
+                        .eq(TProjectDept::getStatus, 1));
                 if(!CollectionUtils.isEmpty(tProjectDeptList)){
                     List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
                     query.setProjectId(projectIds);
@@ -787,6 +906,7 @@
 
             // 查询片区
             if(!CollectionUtils.isEmpty(query.getProjectId())){
+                query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList()));
                 wrapper.in(TTask::getProjectId, query.getProjectId());
             }
 
@@ -798,6 +918,7 @@
             if(!CollectionUtils.isEmpty(taskList)){
                 list.addAll(taskList);
             }
+            list = list.stream().distinct().collect(Collectors.toList());
             List<TTask> result = list.stream().filter(task -> task.getStatus() == 3).collect(Collectors.toList());
             for (TTask task : result) {
                 TLocation tLocation = locations.stream().filter(location -> location.getId().equals(task.getLocationId())).findFirst().orElse(null);
@@ -839,6 +960,7 @@
                                 .eq(TProjectDept::getStatus, 1)
                                 .eq(TProjectDept::getParentId, projectDept.getId()));
                         List<String> ids = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
+                        projectIds.add(projectDept.getId());
                         projectIds.addAll(ids);
                     }else {
                         projectIds.add(deptId);
@@ -853,8 +975,7 @@
                 if(CollectionUtils.isEmpty(query.getProjectId())){
                     // 查询所有项目部的任务列表
                     List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
-                            .eq(TProjectDept::getStatus, 1)
-                            .ne(TProjectDept::getParentId, 0));
+                            .eq(TProjectDept::getStatus, 1));
                     if(!CollectionUtils.isEmpty(tProjectDeptList)){
                         List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
                         query.setProjectId(projectIds);
@@ -864,6 +985,7 @@
 
             // 查询片区
             if(!CollectionUtils.isEmpty(query.getProjectId())){
+                query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList()));
                 wrapper.in(TTask::getProjectId, query.getProjectId());
             }
 
@@ -875,7 +997,9 @@
             if(!CollectionUtils.isEmpty(taskList)){
                 list.addAll(taskList);
             }
-            List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2).collect(Collectors.toList());
+            list = list.stream().distinct().collect(Collectors.toList());
+            List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2
+                    && task.getStatus() != 3 && task.getStatus() != 4).collect(Collectors.toList());
             if(CollectionUtils.isEmpty(tasks)){
                 map.put("unqualifiedWarn", 0);
                 map.put("qualifiedWarn", 0);
@@ -884,7 +1008,19 @@
             List<String> taskIds = tasks.stream().map(TTask::getId).collect(Collectors.toList());
             List<TTaskDetail> taskDetails = tTaskDetailService.list(Wrappers.lambdaQuery(TTaskDetail.class)
                     .in(TTaskDetail::getTaskId, taskIds)
+                    .eq(TTaskDetail::getHandleType, 1)
                     .orderByDesc(TTaskDetail::getCreateTime));
+
+            taskDetails = new ArrayList<>(taskDetails.stream()
+                    .collect(Collectors.groupingBy(
+                            TTaskDetail::getTaskId,
+                            Collectors.collectingAndThen(
+                                    Collectors.toList(),
+                                    list1 -> list1.get(0)
+                            )
+                    ))
+                    .values());
+
             int unqualifiedWarn = 0;
             int qualifiedWarn = 0;
             for (TTask task : list) {
@@ -916,12 +1052,12 @@
                 }
             }
             // 超级管理员 查询所有的任务列表
-            List<TTask> taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class));
+            List<TTask> taskList = new ArrayList<>();
             if(CollectionUtils.isEmpty(query.getProjectId())){
+                taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class));
                 // 查询所有项目部的任务列表
                 List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
-                        .eq(TProjectDept::getStatus, 1)
-                        .ne(TProjectDept::getParentId, 0));
+                        .eq(TProjectDept::getStatus, 1));
                 if(!CollectionUtils.isEmpty(tProjectDeptList)){
                     List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
                     query.setProjectId(projectIds);
@@ -930,6 +1066,7 @@
 
             // 查询片区
             if(!CollectionUtils.isEmpty(query.getProjectId())){
+                query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList()));
                 wrapper.in(TTask::getProjectId, query.getProjectId());
             }
 
@@ -941,7 +1078,9 @@
             if(!CollectionUtils.isEmpty(taskList)){
                 list.addAll(taskList);
             }
-            List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2).collect(Collectors.toList());
+            list = list.stream().distinct().collect(Collectors.toList());
+            List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2
+                    && task.getStatus() != 3 && task.getStatus() != 4).collect(Collectors.toList());
             if(CollectionUtils.isEmpty(tasks)){
                 map.put("unqualifiedWarn", 0);
                 map.put("qualifiedWarn", 0);
@@ -951,6 +1090,15 @@
             List<TTaskDetail> taskDetails = tTaskDetailService.list(Wrappers.lambdaQuery(TTaskDetail.class)
                     .in(TTaskDetail::getTaskId, taskIds)
                     .orderByDesc(TTaskDetail::getCreateTime));
+            taskDetails = new ArrayList<>(taskDetails.stream()
+                    .collect(Collectors.groupingBy(
+                            TTaskDetail::getTaskId,
+                            Collectors.collectingAndThen(
+                                    Collectors.toList(),
+                                    list1 -> list1.get(0)
+                            )
+                    ))
+                    .values());
             int unqualifiedWarn = 0;
             int qualifiedWarn = 0;
             for (TTask task : list) {
@@ -1003,6 +1151,7 @@
                                 .eq(TProjectDept::getStatus, 1)
                                 .eq(TProjectDept::getParentId, projectDept.getId()));
                         List<String> ids = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
+                        projectIds.add(projectDept.getId());
                         projectIds.addAll(ids);
                     }else {
                         projectIds.add(deptId);
@@ -1017,8 +1166,7 @@
                 if(CollectionUtils.isEmpty(query.getProjectId())){
                     // 查询所有项目部的任务列表
                     List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
-                            .eq(TProjectDept::getStatus, 1)
-                            .ne(TProjectDept::getParentId, 0));
+                            .eq(TProjectDept::getStatus, 1));
                     if(!CollectionUtils.isEmpty(tProjectDeptList)){
                         List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
                         query.setProjectId(projectIds);
@@ -1028,6 +1176,7 @@
 
             // 查询片区
             if(!CollectionUtils.isEmpty(query.getProjectId())){
+                query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList()));
                 wrapper.in(TTask::getProjectId, query.getProjectId());
             }
 
@@ -1039,17 +1188,27 @@
             if(!CollectionUtils.isEmpty(taskList)){
                 list.addAll(taskList);
             }
-
-            List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2).collect(Collectors.toList());
+            list = list.stream().distinct().collect(Collectors.toList());
+            List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2
+                    && task.getStatus() != 3 && task.getStatus() != 4).collect(Collectors.toList());
             if(CollectionUtils.isEmpty(tasks)){
-                return R.ok();
+                return R.ok(analysisUnqualifiedCleaningVO);
             }
             List<String> taskIds = tasks.stream().map(TTask::getId).collect(Collectors.toList());
             List<TTaskDetail> taskDetails = tTaskDetailService.list(Wrappers.lambdaQuery(TTaskDetail.class)
                     .in(TTaskDetail::getTaskId, taskIds)
                     .eq(TTaskDetail::getClearStatus, 2)
-                            .eq(TTaskDetail::getHandleType,1)
+                    .eq(TTaskDetail::getHandleType,1)
                     .orderByDesc(TTaskDetail::getCreateTime));
+            taskDetails = new ArrayList<>(taskDetails.stream()
+                    .collect(Collectors.groupingBy(
+                            TTaskDetail::getTaskId,
+                            Collectors.collectingAndThen(
+                                    Collectors.toList(),
+                                    listAll -> listAll.get(0)
+                            )
+                    ))
+                    .values());
             List<TTaskDetail> taskDetailList = new ArrayList<>();
             for (TTask task : list) {
                 TTaskDetail tTaskDetail = taskDetails.stream().filter(taskDetail -> taskDetail.getTaskId().equals(task.getId())).findFirst().orElse(null);
@@ -1084,12 +1243,12 @@
                 }
             }
             // 超级管理员 查询所有的任务列表
-            List<TTask> taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class));
+            List<TTask> taskList = new ArrayList<>();
             if(CollectionUtils.isEmpty(query.getProjectId())){
+                taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class));
                 // 查询所有项目部的任务列表
                 List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
-                        .eq(TProjectDept::getStatus, 1)
-                        .ne(TProjectDept::getParentId, 0));
+                        .eq(TProjectDept::getStatus, 1));
                 if(!CollectionUtils.isEmpty(tProjectDeptList)){
                     List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
                     query.setProjectId(projectIds);
@@ -1098,27 +1257,41 @@
 
             // 查询片区
             if(!CollectionUtils.isEmpty(query.getProjectId())){
+                query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList()));
                 wrapper.in(TTask::getProjectId, query.getProjectId());
             }
 
             List<TTask> list = taskCleanService.list(wrapper);
             if(CollectionUtils.isEmpty(list)){
-                return R.ok();
+                return R.ok(analysisUnqualifiedCleaningVO);
             }
 
             if(!CollectionUtils.isEmpty(taskList)){
                 list.addAll(taskList);
             }
 
-            List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2).collect(Collectors.toList());
+            list = list.stream().distinct().collect(Collectors.toList());
+
+            List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2
+                    && task.getStatus() != 3 && task.getStatus() != 4).collect(Collectors.toList());
             if(CollectionUtils.isEmpty(tasks)){
-                return R.ok();
+                return R.ok(analysisUnqualifiedCleaningVO);
             }
             List<String> taskIds = tasks.stream().map(TTask::getId).collect(Collectors.toList());
             List<TTaskDetail> taskDetails = tTaskDetailService.list(Wrappers.lambdaQuery(TTaskDetail.class)
                     .in(TTaskDetail::getTaskId, taskIds)
+                    .eq(TTaskDetail::getHandleType,1)
                     .eq(TTaskDetail::getClearStatus, 2)
                     .orderByDesc(TTaskDetail::getCreateTime));
+            taskDetails = new ArrayList<>(taskDetails.stream()
+                    .collect(Collectors.groupingBy(
+                            TTaskDetail::getTaskId,
+                            Collectors.collectingAndThen(
+                                    Collectors.toList(),
+                                    listAll -> listAll.get(0)
+                            )
+                    ))
+                    .values());
             List<TTaskDetail> taskDetailList = new ArrayList<>();
             for (TTask task : list) {
                 TTaskDetail tTaskDetail = taskDetails.stream().filter(taskDetail -> taskDetail.getTaskId().equals(task.getId())).findFirst().orElse(null);
@@ -1139,6 +1312,8 @@
                 analysisUnqualifiedCleaningDetailVO.setCount(tTaskDetails.size());
                 analysisUnqualifiedCleaningDetailVOS.add(analysisUnqualifiedCleaningDetailVO);
             }
+            // 按照数量倒序排序
+            analysisUnqualifiedCleaningDetailVOS.sort(Comparator.comparingInt(AnalysisUnqualifiedCleaningDetailVO::getCount).reversed());
             analysisUnqualifiedCleaningVO.setAnalysisUnqualifiedCleaningDetailVOS(analysisUnqualifiedCleaningDetailVOS);
         }
 

--
Gitblit v1.7.1