From 54b54315510eed85fb81211cd4f4df25414bdf9a Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期五, 11 七月 2025 20:44:48 +0800
Subject: [PATCH] bug修改

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/WorkbenchesController.java |  761 ++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 584 insertions(+), 177 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 055e4c1..26d0285 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
@@ -5,11 +5,13 @@
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.framework.web.service.TokenService;
 import com.ruoyi.system.dto.WorkBenchesDTO;
 import com.ruoyi.system.model.*;
 import com.ruoyi.system.query.DataStatisticsQuery;
+import com.ruoyi.system.query.TaskSituationQuery;
 import com.ruoyi.system.service.*;
 import com.ruoyi.system.vo.system.*;
 import com.ruoyi.web.util.OssUploadUtil;
@@ -20,7 +22,12 @@
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -47,25 +54,19 @@
     @Resource
     private TTaskDetailService tTaskDetailService;
     @Resource
-    private TDeptService deptService;
-    @Resource
     private ISysUserService sysUserService;
 
     @Resource
     private TokenService tokenService;
 
     @Resource
-    private TAppealService appealService;
-    @Resource
     private TDictDataService dictDataService;
-
-    @PostMapping("/data")
-    @ApiOperation(value = "工作台", tags = "工作台")
-    public R<WorkBenchesVO> data(@RequestBody WorkBenchesDTO dto) {
-
-        return R.ok();
-    }
-
+    @Resource
+    private TCleanerService cleanerService;
+    @Resource
+    private TLeaveService leaveService;
+    @Resource
+    private TEarlyWarningService earlyWarningService;
     @ApiOperation(value = "查询部门 项目部列表 不分页")
     @GetMapping(value = "/listDepts")
     public R<List<DeptNoLimitVO>> listDepts() {
@@ -115,12 +116,21 @@
             if (deptType == 1) {
                 // 查询片区
                 TProjectDept projectDept = projectDeptService.getById(deptId);
-                // 查询项目部
-                TProjectDept parent = projectDeptService.getById(projectDept.getParentId());
-                List<TProjectDept> children = new ArrayList<>();
-                children.add(projectDept);
-                parent.setChildren(children);
-                projectDeptList.add(parent);
+                if("0".equals(projectDept.getParentId())){
+                    // 查询项目部
+                    List<TProjectDept> childProjectDept = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
+                            .eq(TProjectDept::getStatus,1)
+                            .eq(TProjectDept::getParentId,projectDept.getId()));
+                    projectDept.setChildren(childProjectDept);
+                    projectDeptList.add(projectDept);
+                }else {
+                    // 查询项目部
+                    TProjectDept parent = projectDeptService.getById(projectDept.getParentId());
+                    List<TProjectDept> children = new ArrayList<>();
+                    children.add(projectDept);
+                    parent.setChildren(children);
+                    projectDeptList.add(parent);
+                }
             }else {
                 projectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
                         .eq(TProjectDept::getStatus,1)
@@ -148,32 +158,202 @@
 
     @ApiOperation(value = "通过片区id查询点位类型")
     @GetMapping(value = "/queryLocationByProjectId")
-    public R<List<TLocationType>> queryLocationByProjectId(@RequestParam(value = "projectId") String projectId) {
-        List<TLocationType> locationTypes = new ArrayList<>();
-        // 通过片区id查询点位
-        List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class)
-                .eq(TLocation::getProjectId, projectId));
-        if(CollectionUtils.isEmpty(locationList)){
-            return R.ok(locationTypes);
-        }
-        List<String> typeIds = locationList.stream().map(TLocation::getLocationType).collect(Collectors.toList());
-        locationTypes = locationTypeService.list(Wrappers.lambdaQuery(TLocationType.class)
-                .in(TLocationType::getId, typeIds));
+    public R<List<TLocationType>> queryLocationByProjectId() {
+        List<TLocationType> locationTypes = locationTypeService.list();
         return R.ok(locationTypes);
+    }
+
+    @ApiOperation(value = "顶部数量统计")
+    @PostMapping(value = "/topQuantityStatistics")
+    public R<Map<String, Object>> topQuantityStatistics(@RequestBody DataStatisticsQuery query) {
+        Map<String, Object> map = new HashMap<>();
+        Integer deptType = tokenService.getLoginUser().getUser().getDeptType();
+        String deptId = tokenService.getLoginUser().getUser().getDeptId();
+        Long userId = tokenService.getLoginUser().getUserId();
+
+        LambdaQueryWrapper<TTask> wrapper = new LambdaQueryWrapper<>();
+
+        List<TTask> list;
+        if (userId != 1L) {
+            // 查询点位类型
+            if(StringUtils.isNotEmpty(query.getLocationTypeId())){
+                // 查询点位
+                List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class)
+                        .in(TLocation::getLocationType, query.getLocationTypeId()));
+                if(!CollectionUtils.isEmpty(locationList)){
+                    List<String> locationIds = locationList.stream().map(TLocation::getId).collect(Collectors.toList());
+                    wrapper.in(TTask::getLocationId, locationIds);
+                }
+                map.put("totalLocationNum", locationList.size());
+            }
+            List<TTask> taskList = new ArrayList<>();
+            if (deptType == 1) {
+                // 项目部人员
+                if(CollectionUtils.isEmpty(query.getProjectId())){
+                    TProjectDept projectDept = projectDeptService.getById(deptId);
+                    List<String> projectIds = new ArrayList<>();
+                    if("0".equals(projectDept.getParentId())){
+                        List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
+                                .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);
+                }
+            }else {
+                // 公司人员
+                // 查询自己的任务列表
+                taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class)
+                        .eq(TTask::getPatrolInspector, userId));
+                if(CollectionUtils.isEmpty(query.getProjectId())){
+                    // 查询所有项目部的任务列表
+                    List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
+                            .eq(TProjectDept::getStatus, 1));
+                    if(!CollectionUtils.isEmpty(tProjectDeptList)){
+                        List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
+                        query.setProjectId(projectIds);
+                    }
+                }
+            }
+
+            // 查询片区
+            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()));
+                map.put("totalLocationNum", locationList.size());
+            }
+
+            list = taskCleanService.list(wrapper);
+            if(CollectionUtils.isEmpty(list)){
+                return R.ok();
+            }
+
+            if(!CollectionUtils.isEmpty(taskList)){
+                list.addAll(taskList);
+            }
+            list = list.stream().distinct().collect(Collectors.toList());
+        }else {
+            // 超级管理员
+            // 查询点位类型
+            if(StringUtils.isNotEmpty(query.getLocationTypeId())){
+                // 查询点位
+                List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class)
+                        .in(TLocation::getLocationType, query.getLocationTypeId()));
+                if(!CollectionUtils.isEmpty(locationList)){
+                    List<String> locationIds = locationList.stream().map(TLocation::getId).collect(Collectors.toList());
+                    wrapper.in(TTask::getLocationId, locationIds);
+                }
+                map.put("totalLocationNum", locationList.size());
+            }
+            // 超级管理员 查询所有的任务列表
+            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));
+                if(!CollectionUtils.isEmpty(tProjectDeptList)){
+                    List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
+                    query.setProjectId(projectIds);
+                }
+            }
+
+            // 查询片区
+            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()));
+                map.put("totalLocationNum", locationList.size());
+            }
+
+            list = taskCleanService.list(wrapper);
+            if(CollectionUtils.isEmpty(list)){
+                return R.ok();
+            }
+
+            if(!CollectionUtils.isEmpty(taskList)){
+                list.addAll(taskList);
+            }
+            list = list.stream().distinct().collect(Collectors.toList());
+        }
+
+        // 查询任务相关数据
+        // 总计任务数
+        map.put("totalTaskNum", list.size());
+        // 今日任务数
+        map.put("todayTaskNum", list.stream().filter(tTask -> tTask.getImplementTime().toLocalDate().isEqual(LocalDate.now())).count());
+        // 待执行任务数
+        map.put("waitTaskNum", list.stream().filter(tTask -> tTask.getStatus() == 1).count());
+
+        // 总计员工数
+        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)
+                .le(TLeave::getStartTime, LocalDate.now())
+                .ge(TLeave::getEndTime, LocalDate.now())
+                .eq(TLeave::getAuditStatus, 2));
+        if(!CollectionUtils.isEmpty(leaves)){
+            map.put("todayLeaveNum", leaves.size());
+        }else {
+            map.put("todayLeaveNum", 0);
+        }
+
+        // 总计保洁员数
+        long totalCleanerNum = cleanerService.count(Wrappers.lambdaQuery(TCleaner.class)
+                .in(TCleaner::getProjectId, query.getProjectId()));
+        map.put("totalCleanerNum", totalCleanerNum);
+
+        return R.ok(map);
     }
 
 
     @ApiOperation(value = "任务情况")
     @PostMapping(value = "/taskSituation")
-    public R<List<TTask>> taskSituation(@RequestBody DataStatisticsQuery query) {
+    public R<TaskSituationVO> taskSituation(@RequestBody TaskSituationQuery query) {
         Integer deptType = tokenService.getLoginUser().getUser().getDeptType();
         String deptId = tokenService.getLoginUser().getUser().getDeptId();
         Long userId = tokenService.getLoginUser().getUserId();
 
-        // 查询所有点位
-        List<TLocation> locations = locationService.list();
-
+        TaskSituationVO taskSituationVO = new TaskSituationVO();
         LambdaQueryWrapper<TTask> wrapper = new LambdaQueryWrapper<>();
+
+        if(StringUtils.isEmpty(query.getStartTime()) || StringUtils.isEmpty(query.getEndTime())){
+            LocalDate now = LocalDate.now();
+            String startTime = now.minusDays(6) + " 00:00:00";
+            String endTime = now + " 23:59:59";
+            query.setStartTime(startTime);
+            query.setEndTime(endTime);
+        }else {
+            query.setStartTime(query.getStartTime() + " 00:00:00");
+            query.setEndTime(query.getEndTime() + " 23:59:59");
+        }
+
+        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) {
             // 查询点位类型
             if(StringUtils.isNotEmpty(query.getLocationTypeId())){
@@ -188,47 +368,69 @@
             List<TTask> taskList = new ArrayList<>();
             if (deptType == 1) {
                 // 项目部人员
-                List<String> projectIds = new ArrayList<>();
-                projectIds.add(deptId);
-                query.setProjectId(projectIds);
+                if(CollectionUtils.isEmpty(query.getProjectId())){
+                    TProjectDept projectDept = projectDeptService.getById(deptId);
+                    List<String> projectIds = new ArrayList<>();
+                    if("0".equals(projectDept.getParentId())){
+                        List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
+                                .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);
+                }
             }else {
                 // 公司人员
                 // 查询自己的任务列表
                 taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class)
-                        .eq(TTask::getPatrolInspector, userId));
+                        .eq(TTask::getPatrolInspector, userId)
+                        .between(TTask::getImplementTime, query.getStartTime(), query.getEndTime()));
                 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());
-                        wrapper.in(TTask::getProjectId, projectIds);
+                        query.setProjectId(projectIds);
                     }
                 }
             }
 
             // 查询片区
             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);
+            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<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);
-                if(Objects.nonNull(tLocation)) {
-                    task.setLocationName(tLocation.getLocationName());
-                }
-            }
-            return R.ok(result);
+            list = list.stream().distinct().collect(Collectors.toList());
         }else {
             // 超级管理员
             // 查询点位类型
@@ -242,40 +444,109 @@
                 }
             }
             // 超级管理员 查询所有的任务列表
-            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)
+                        .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());
-                    wrapper.in(TTask::getProjectId, projectIds);
+                    query.setProjectId(projectIds);
                 }
             }
 
             // 查询片区
             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);
+            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<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);
-                if(Objects.nonNull(tLocation)) {
-                    task.setLocationName(tLocation.getLocationName());
+            list = list.stream().distinct().collect(Collectors.toList());
+        }
+        // 任务总数
+        taskSituationVO.setTotalTaskNum(list.size());
+        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
+                && task.getStatus() != 3 && task.getStatus() != 4).collect(Collectors.toList());
+        if(CollectionUtils.isEmpty(tasks)){
+            taskSituationVO.setPassRate(BigDecimal.ZERO);
+            return R.ok(taskSituationVO);
+        }
+        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));
+        int qualifiedWarn = 0;
+        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() == 1){
+                    qualifiedWarn++;
                 }
             }
-            return R.ok(result);
         }
+        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){
+                format = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+            }else {
+                format = DateUtils.stringToLocalDate(format).plusDays(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+            }
+            taskSituationDayVO.setTaskTime(format);
+            String finalFormat = format;
+            List<TTask> tTasks = list.stream().filter(task -> DateUtils.localDateTimeToString(task.getImplementTime()).contains(finalFormat)).collect(Collectors.toList());
+            // 任务数
+            taskSituationDayVO.setTaskNum(tTasks.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);
+                if(Objects.nonNull(tTaskDetail)){
+                    if(Objects.nonNull(tTaskDetail.getClearStatus()) && tTaskDetail.getClearStatus() == 1){
+                        qualifiedWarnChild++;
+                    }
+                }
+            }
+            if(tTasks.isEmpty()){
+                taskSituationDayVO.setCompleteRate(BigDecimal.ZERO);
+            }else {
+                taskSituationDayVO.setCompleteRate(new BigDecimal(qualifiedWarnChild).divide(new BigDecimal(tTasks.size()), 2, RoundingMode.HALF_DOWN));
+            }
+            taskSituationDayVOList.add(taskSituationDayVO);
+        }
+        taskSituationVO.setTaskSituationDayVO(taskSituationDayVOList);
+        return R.ok(taskSituationVO);
     }
 
     @ApiOperation(value = "今日预警")
@@ -291,7 +562,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())){
@@ -306,69 +577,104 @@
             List<TTask> taskList = new ArrayList<>();
             if (deptType == 1) {
                 // 项目部人员
-                List<String> projectIds = new ArrayList<>();
-                projectIds.add(deptId);
-                query.setProjectId(projectIds);
+                if(CollectionUtils.isEmpty(query.getProjectId())){
+                    TProjectDept projectDept = projectDeptService.getById(deptId);
+                    List<String> projectIds = new ArrayList<>();
+                    if("0".equals(projectDept.getParentId())){
+                        List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
+                                .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);
+                }
             }else {
                 // 公司人员
                 // 查询自己的任务列表
                 taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class)
                         .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());
-                        wrapper.in(TTask::getProjectId, projectIds);
+                        query.setProjectId(projectIds);
                     }
                 }
             }
 
             // 查询片区
             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(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 {
             // 超级管理员
             // 查询点位类型
@@ -382,61 +688,82 @@
                 }
             }
             // 超级管理员 查询所有的任务列表
-            List<TTask> taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class));
+            List<TTask> taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class)
+                    .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());
-                    wrapper.in(TTask::getProjectId, projectIds);
+                    query.setProjectId(projectIds);
                 }
             }
 
             // 查询片区
             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(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);
         }
     }
 
@@ -465,9 +792,21 @@
             List<TTask> taskList = new ArrayList<>();
             if (deptType == 1) {
                 // 项目部人员
-                List<String> projectIds = new ArrayList<>();
-                projectIds.add(deptId);
-                query.setProjectId(projectIds);
+                if(CollectionUtils.isEmpty(query.getProjectId())){
+                    TProjectDept projectDept = projectDeptService.getById(deptId);
+                    List<String> projectIds = new ArrayList<>();
+                    if("0".equals(projectDept.getParentId())){
+                        List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
+                                .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);
+                }
             }else {
                 // 公司人员
                 // 查询自己的任务列表
@@ -476,17 +815,17 @@
                 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());
-                        wrapper.in(TTask::getProjectId, projectIds);
+                        query.setProjectId(projectIds);
                     }
                 }
             }
 
             // 查询片区
             if(!CollectionUtils.isEmpty(query.getProjectId())){
+                query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList()));
                 wrapper.in(TTask::getProjectId, query.getProjectId());
             }
 
@@ -498,6 +837,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);
@@ -519,20 +859,21 @@
                 }
             }
             // 超级管理员 查询所有的任务列表
-            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());
-                    wrapper.in(TTask::getProjectId, projectIds);
+                    query.setProjectId(projectIds);
                 }
             }
 
             // 查询片区
             if(!CollectionUtils.isEmpty(query.getProjectId())){
+                query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList()));
                 wrapper.in(TTask::getProjectId, query.getProjectId());
             }
 
@@ -544,6 +885,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);
@@ -559,8 +901,6 @@
     @PostMapping(value = "/cleaningQualitySummary")
     public R<Map<String, Object>> cleaningQualitySummary(@RequestBody DataStatisticsQuery query) {
         Map<String, Object> map = new HashMap<>();
-        map.put("timeoutWarn", 0);
-        map.put("unqualifiedWarn", 0);
         Integer deptType = tokenService.getLoginUser().getUser().getDeptType();
         String deptId = tokenService.getLoginUser().getUser().getDeptId();
         Long userId = tokenService.getLoginUser().getUserId();
@@ -579,9 +919,21 @@
             List<TTask> taskList = new ArrayList<>();
             if (deptType == 1) {
                 // 项目部人员
-                List<String> projectIds = new ArrayList<>();
-                projectIds.add(deptId);
-                query.setProjectId(projectIds);
+                if(CollectionUtils.isEmpty(query.getProjectId())){
+                    TProjectDept projectDept = projectDeptService.getById(deptId);
+                    List<String> projectIds = new ArrayList<>();
+                    if("0".equals(projectDept.getParentId())){
+                        List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
+                                .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);
+                }
             }else {
                 // 公司人员
                 // 查询自己的任务列表
@@ -590,17 +942,17 @@
                 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());
-                        wrapper.in(TTask::getProjectId, projectIds);
+                        query.setProjectId(projectIds);
                     }
                 }
             }
 
             // 查询片区
             if(!CollectionUtils.isEmpty(query.getProjectId())){
+                query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList()));
                 wrapper.in(TTask::getProjectId, query.getProjectId());
             }
 
@@ -612,7 +964,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);
@@ -621,16 +975,32 @@
             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) {
                 TTaskDetail tTaskDetail = taskDetails.stream().filter(taskDetail -> taskDetail.getTaskId().equals(task.getId())).findFirst().orElse(null);
                 if(Objects.nonNull(tTaskDetail)){
-                    if(tTaskDetail.getClearStatus() == 2){
-                        unqualifiedWarn++;
+                    if(Objects.nonNull(tTaskDetail.getClearStatus())){
+                        if(tTaskDetail.getClearStatus() == 2){
+                            unqualifiedWarn++;
+                        }else {
+                            qualifiedWarn++;
+                        }
                     }else {
-                        qualifiedWarn++;
+                        unqualifiedWarn++;
                     }
                 }
             }
@@ -649,20 +1019,21 @@
                 }
             }
             // 超级管理员 查询所有的任务列表
-            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());
-                    wrapper.in(TTask::getProjectId, projectIds);
+                    query.setProjectId(projectIds);
                 }
             }
 
             // 查询片区
             if(!CollectionUtils.isEmpty(query.getProjectId())){
+                query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList()));
                 wrapper.in(TTask::getProjectId, query.getProjectId());
             }
 
@@ -674,7 +1045,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);
@@ -684,15 +1057,28 @@
             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) {
                 TTaskDetail tTaskDetail = taskDetails.stream().filter(taskDetail -> taskDetail.getTaskId().equals(task.getId())).findFirst().orElse(null);
                 if(Objects.nonNull(tTaskDetail)){
-                    if(tTaskDetail.getClearStatus() == 2){
-                        unqualifiedWarn++;
+                    if(Objects.nonNull(tTaskDetail.getClearStatus())){
+                        if(tTaskDetail.getClearStatus() == 2){
+                            unqualifiedWarn++;
+                        }else {
+                            qualifiedWarn++;
+                        }
                     }else {
-                        qualifiedWarn++;
+                        unqualifiedWarn++;
                     }
                 }
             }
@@ -724,9 +1110,21 @@
             List<TTask> taskList = new ArrayList<>();
             if (deptType == 1) {
                 // 项目部人员
-                List<String> projectIds = new ArrayList<>();
-                projectIds.add(deptId);
-                query.setProjectId(projectIds);
+                if(CollectionUtils.isEmpty(query.getProjectId())){
+                    TProjectDept projectDept = projectDeptService.getById(deptId);
+                    List<String> projectIds = new ArrayList<>();
+                    if("0".equals(projectDept.getParentId())){
+                        List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
+                                .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);
+                }
             }else {
                 // 公司人员
                 // 查询自己的任务列表
@@ -735,17 +1133,17 @@
                 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());
-                        wrapper.in(TTask::getProjectId, projectIds);
+                        query.setProjectId(projectIds);
                     }
                 }
             }
 
             // 查询片区
             if(!CollectionUtils.isEmpty(query.getProjectId())){
+                query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList()));
                 wrapper.in(TTask::getProjectId, query.getProjectId());
             }
 
@@ -757,15 +1155,17 @@
             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)
                     .orderByDesc(TTaskDetail::getCreateTime));
             List<TTaskDetail> taskDetailList = new ArrayList<>();
             for (TTask task : list) {
@@ -781,7 +1181,7 @@
                     .eq(TDictData::getDataType, 2));
             List<AnalysisUnqualifiedCleaningDetailVO> analysisUnqualifiedCleaningDetailVOS = new ArrayList<>();
             for (TDictData tDictData : dictDataList) {
-                List<TTaskDetail> tTaskDetails = taskDetailList.stream().filter(taskDetail -> taskDetail.getUnqualified().equals(tDictData.getId())).collect(Collectors.toList());
+                List<TTaskDetail> tTaskDetails = taskDetailList.stream().filter(taskDetail -> StringUtils.isNotEmpty(taskDetail.getUnqualified())&&taskDetail.getUnqualified().equals(tDictData.getId())).collect(Collectors.toList());
                 AnalysisUnqualifiedCleaningDetailVO analysisUnqualifiedCleaningDetailVO = new AnalysisUnqualifiedCleaningDetailVO();
                 analysisUnqualifiedCleaningDetailVO.setUnqualifiedName(tDictData.getDataContent());
                 analysisUnqualifiedCleaningDetailVO.setCount(tTaskDetails.size());
@@ -801,39 +1201,44 @@
                 }
             }
             // 超级管理员 查询所有的任务列表
-            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());
-                    wrapper.in(TTask::getProjectId, projectIds);
+                    query.setProjectId(projectIds);
                 }
             }
 
             // 查询片区
             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));
             List<TTaskDetail> taskDetailList = new ArrayList<>();
@@ -850,12 +1255,14 @@
                     .eq(TDictData::getDataType, 2));
             List<AnalysisUnqualifiedCleaningDetailVO> analysisUnqualifiedCleaningDetailVOS = new ArrayList<>();
             for (TDictData tDictData : dictDataList) {
-                List<TTaskDetail> tTaskDetails = taskDetailList.stream().filter(taskDetail -> taskDetail.getUnqualified().equals(tDictData.getId())).collect(Collectors.toList());
+                List<TTaskDetail> tTaskDetails = taskDetailList.stream().filter(taskDetail -> StringUtils.isNotEmpty(taskDetail.getUnqualified())&&taskDetail.getUnqualified().equals(tDictData.getId())).collect(Collectors.toList());
                 AnalysisUnqualifiedCleaningDetailVO analysisUnqualifiedCleaningDetailVO = new AnalysisUnqualifiedCleaningDetailVO();
                 analysisUnqualifiedCleaningDetailVO.setUnqualifiedName(tDictData.getDataContent());
                 analysisUnqualifiedCleaningDetailVO.setCount(tTaskDetails.size());
                 analysisUnqualifiedCleaningDetailVOS.add(analysisUnqualifiedCleaningDetailVO);
             }
+            // 按照数量倒序排序
+            analysisUnqualifiedCleaningDetailVOS.sort(Comparator.comparingInt(AnalysisUnqualifiedCleaningDetailVO::getCount).reversed());
             analysisUnqualifiedCleaningVO.setAnalysisUnqualifiedCleaningDetailVOS(analysisUnqualifiedCleaningDetailVOS);
         }
 

--
Gitblit v1.7.1