From dfc3e4b2dd3b648032d0a57688766bf9404cdda3 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期二, 01 七月 2025 14:45:36 +0800
Subject: [PATCH] 工作台

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/WorkbenchesController.java    |  800 ++++++++++++++++++++++++
 ruoyi-system/src/main/java/com/ruoyi/system/model/TTask.java                         |    3 
 ruoyi-system/src/main/java/com/ruoyi/system/vo/system/TaskSituationVO.java           |   26 
 ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml                      |    3 
 ruoyi-system/src/main/java/com/ruoyi/system/vo/system/TaskSituationDayVO.java        |   22 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DataStatisticsController.java |  922 ++++++++++++++++++++---------
 ruoyi-system/src/main/java/com/ruoyi/system/query/TaskSituationQuery.java            |   26 
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java          |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/model/TProjectDept.java                  |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/query/DataStatisticsRankQuery.java       |    4 
 10 files changed, 1,500 insertions(+), 312 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DataStatisticsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DataStatisticsController.java
index f05a930..bee8d01 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DataStatisticsController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DataStatisticsController.java
@@ -19,6 +19,7 @@
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.util.CollectionUtils;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -67,16 +68,29 @@
     public R<List<TProjectDept>> queryProject() {
         Integer deptType = tokenService.getLoginUser().getUser().getDeptType();
         String deptId = tokenService.getLoginUser().getUser().getDeptId();
+        Long userId = tokenService.getLoginUser().getUserId();
         List<TProjectDept> projectDeptList = new ArrayList<>();
-        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(userId != 1L){
+            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);
+            }else {
+                projectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
+                        .eq(TProjectDept::getStatus,1)
+                        .eq(TProjectDept::getParentId,0));
+                // 查询片区
+                projectDeptList.forEach(projectDept -> {
+                    List<TProjectDept> children = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
+                            .eq(TProjectDept::getParentId, projectDept.getId()));
+                    projectDept.setChildren(children);
+                });
+            }
         }else {
             projectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
                     .eq(TProjectDept::getStatus,1)
@@ -85,7 +99,7 @@
             projectDeptList.forEach(projectDept -> {
                 List<TProjectDept> children = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
                         .eq(TProjectDept::getParentId, projectDept.getId()));
-//                projectDept.setChildren(children);
+                projectDept.setChildren(children);
             });
         }
         return R.ok(projectDeptList);
@@ -115,34 +129,78 @@
         String deptId = tokenService.getLoginUser().getUser().getDeptId();
         Long userId = tokenService.getLoginUser().getUserId();
 
-        String startTime = LocalDate.now() + " 00:00:00";
-        String endTime = LocalDate.now() + " 23:59:59";
-
         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);
-
-        // 查询点位类型
-        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);
+        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);
+                }
             }
-        }
-        List<TTask> taskList = new ArrayList<>();
-        if (deptType == 1) {
-            // 项目部人员
-            List<String> projectIds = new ArrayList<>();
-            projectIds.add(deptId);
-            query.setProjectId(projectIds);
+            List<TTask> taskList = new ArrayList<>();
+            if (deptType == 1) {
+                // 项目部人员
+                List<String> projectIds = new ArrayList<>();
+                projectIds.add(deptId);
+                query.setProjectId(projectIds);
+            }else {
+                // 公司人员
+                // 查询自己的任务列表
+                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));
+                    if(!CollectionUtils.isEmpty(tProjectDeptList)){
+                        List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
+                        wrapper.in(TTask::getProjectId, projectIds);
+                    }
+                }
+            }
+
+            // 查询片区
+            if(!CollectionUtils.isEmpty(query.getProjectId())){
+                wrapper.in(TTask::getProjectId, query.getProjectId());
+            }
+
+            List<TTask> list = taskCleanService.list(wrapper);
+            if(CollectionUtils.isEmpty(list)){
+                return R.ok(map);
+            }
+
+            if(!CollectionUtils.isEmpty(taskList)){
+                list.addAll(taskList);
+            }
+
+            map.put("taskCount", list.size());
+            map.put("taskUnExecutedCount", list.stream().filter(task -> task.getStatus() == 1).count());
+            map.put("taskPendingCount", list.stream().filter(task -> task.getStatus() == 3).count());
+            map.put("taskFinishCount", list.stream().filter(task -> task.getStatus() == 6).count());
         }else {
-            // 公司人员
-            // 查询自己的任务列表
-            taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class)
-                    .eq(TTask::getPatrolInspector, userId)
+            // 超级管理员
+            // 查询点位类型
+            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);
+                }
+            }
+            // 超级管理员 查询所有任务列表
+            List<TTask> taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class)
                     .between(TTask::getImplementTime, startTime, endTime));
             if(CollectionUtils.isEmpty(query.getProjectId())){
                 // 查询所有项目部的任务列表
@@ -154,26 +212,26 @@
                     wrapper.in(TTask::getProjectId, projectIds);
                 }
             }
-        }
 
-        // 查询片区
-        if(!CollectionUtils.isEmpty(query.getProjectId())){
-            wrapper.in(TTask::getProjectId, query.getProjectId());
-        }
+            // 查询片区
+            if(!CollectionUtils.isEmpty(query.getProjectId())){
+                wrapper.in(TTask::getProjectId, query.getProjectId());
+            }
 
-        List<TTask> list = taskCleanService.list(wrapper);
-        if(CollectionUtils.isEmpty(list)){
-            return R.ok(map);
-        }
+            List<TTask> list = taskCleanService.list(wrapper);
+            if(CollectionUtils.isEmpty(list)){
+                return R.ok(map);
+            }
 
-        if(!CollectionUtils.isEmpty(taskList)){
-            list.addAll(taskList);
-        }
+            if(!CollectionUtils.isEmpty(taskList)){
+                list.addAll(taskList);
+            }
 
-        map.put("taskCount", list.size());
-        map.put("taskUnExecutedCount", list.stream().filter(task -> task.getStatus() == 1).count());
-        map.put("taskPendingCount", list.stream().filter(task -> task.getStatus() == 3).count());
-        map.put("taskFinishCount", list.stream().filter(task -> task.getStatus() == 6).count());
+            map.put("taskCount", list.size());
+            map.put("taskUnExecutedCount", list.stream().filter(task -> task.getStatus() == 1).count());
+            map.put("taskPendingCount", list.stream().filter(task -> task.getStatus() == 3).count());
+            map.put("taskFinishCount", list.stream().filter(task -> task.getStatus() == 6).count());
+        }
 
         return R.ok(map);
     }
@@ -184,23 +242,71 @@
         Map<String, Object> map = new HashMap<>();
         Integer deptType = tokenService.getLoginUser().getUser().getDeptType();
         String deptId = tokenService.getLoginUser().getUser().getDeptId();
+        Long userId = tokenService.getLoginUser().getUserId();
 
-        // 查询点位类型
-        if(StringUtils.isNotEmpty(query.getLocationTypeId())){
-            // 查询点位
-            List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class)
-                    .in(TLocation::getLocationType, query.getLocationTypeId()));
-            // 查询类型
-            TLocationType locationType = locationTypeService.getById(query.getLocationTypeId());
-            map.put(locationType.getLocationName(), locationList.size());
-            return R.ok(map);
-        }
-        if (deptType == 1) {
-            // 项目部人员
-            List<String> projectIds = new ArrayList<>();
-            projectIds.add(deptId);
-            query.setProjectId(projectIds);
+        if(userId != 1L){
+            // 查询点位类型
+            if(StringUtils.isNotEmpty(query.getLocationTypeId())){
+                // 查询点位
+                List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class)
+                        .in(TLocation::getLocationType, query.getLocationTypeId()));
+                // 查询类型
+                TLocationType locationType = locationTypeService.getById(query.getLocationTypeId());
+                map.put(locationType.getLocationName(), locationList.size());
+                return R.ok(map);
+            }
+            if (deptType == 1) {
+                // 项目部人员
+                List<String> projectIds = new ArrayList<>();
+                projectIds.add(deptId);
+                query.setProjectId(projectIds);
+            }else {
+                if(CollectionUtils.isEmpty(query.getProjectId())) {
+                    // 查询所有项目部的任务列表
+                    List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
+                            .eq(TProjectDept::getStatus, 1)
+                            .ne(TProjectDept::getParentId, 0));
+                    if (!CollectionUtils.isEmpty(tProjectDeptList)) {
+                        List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
+                        List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class)
+                                .in(TLocation::getProjectId, projectIds));
+                        List<String> locationTypeList = locationList.stream().map(TLocation::getLocationType).distinct().collect(Collectors.toList());
+                        List<TLocationType> locationTypes = locationTypeService.list(Wrappers.lambdaQuery(TLocationType.class)
+                                .in(TLocationType::getId, locationTypeList));
+                        for (TLocationType locationType : locationTypes) {
+                            List<TLocation> locationList1 = locationList.stream().filter(location -> location.getLocationType().equals(locationType.getId())).collect(Collectors.toList());
+                            map.put(locationType.getLocationName(), locationList1.size());
+                        }
+                        return R.ok(map);
+                    }
+                }
+            }
+
+            // 查询片区
+            if(!CollectionUtils.isEmpty(query.getProjectId())){
+                List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class)
+                        .in(TLocation::getProjectId, query.getProjectId()));
+                List<String> locationTypeList = locationList.stream().map(TLocation::getLocationType).distinct().collect(Collectors.toList());
+                List<TLocationType> locationTypes = locationTypeService.list(Wrappers.lambdaQuery(TLocationType.class)
+                        .in(TLocationType::getId, locationTypeList));
+                for (TLocationType locationType : locationTypes) {
+                    List<TLocation> locationList1 = locationList.stream().filter(location -> location.getLocationType().equals(locationType.getId())).collect(Collectors.toList());
+                    map.put(locationType.getLocationName(), locationList1.size());
+                }
+                return R.ok(map);
+            }
         }else {
+            // 超级管理员
+            // 查询点位类型
+            if(StringUtils.isNotEmpty(query.getLocationTypeId())){
+                // 查询点位
+                List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class)
+                        .in(TLocation::getLocationType, query.getLocationTypeId()));
+                // 查询类型
+                TLocationType locationType = locationTypeService.getById(query.getLocationTypeId());
+                map.put(locationType.getLocationName(), locationList.size());
+                return R.ok(map);
+            }
             if(CollectionUtils.isEmpty(query.getProjectId())) {
                 // 查询所有项目部的任务列表
                 List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
@@ -219,22 +325,21 @@
                     }
                     return R.ok(map);
                 }
+            }else {
+                // 查询片区
+                List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class)
+                        .in(TLocation::getProjectId, query.getProjectId()));
+                List<String> locationTypeList = locationList.stream().map(TLocation::getLocationType).distinct().collect(Collectors.toList());
+                List<TLocationType> locationTypes = locationTypeService.list(Wrappers.lambdaQuery(TLocationType.class)
+                        .in(TLocationType::getId, locationTypeList));
+                for (TLocationType locationType : locationTypes) {
+                    List<TLocation> locationList1 = locationList.stream().filter(location -> location.getLocationType().equals(locationType.getId())).collect(Collectors.toList());
+                    map.put(locationType.getLocationName(), locationList1.size());
+                }
+                return R.ok(map);
             }
         }
 
-        // 查询片区
-        if(!CollectionUtils.isEmpty(query.getProjectId())){
-            List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class)
-                    .eq(TLocation::getProjectId, query.getProjectId()));
-            List<String> locationTypeList = locationList.stream().map(TLocation::getLocationType).distinct().collect(Collectors.toList());
-            List<TLocationType> locationTypes = locationTypeService.list(Wrappers.lambdaQuery(TLocationType.class)
-                    .in(TLocationType::getId, locationTypeList));
-            for (TLocationType locationType : locationTypes) {
-                List<TLocation> locationList1 = locationList.stream().filter(location -> location.getLocationType().equals(locationType.getId())).collect(Collectors.toList());
-                map.put(locationType.getLocationName(), locationList1.size());
-            }
-            return R.ok(map);
-        }
         return R.ok(map);
     }
 
@@ -242,31 +347,93 @@
     @PostMapping(value = "/warningSummary")
     public R<Map<String, Object>> warningSummary(@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();
         LambdaQueryWrapper<TTask> wrapper = new LambdaQueryWrapper<>();
-        // 查询点位类型
-        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);
+        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);
+                }
             }
-        }
-        List<TTask> taskList = new ArrayList<>();
-        if (deptType == 1) {
-            // 项目部人员
-            List<String> projectIds = new ArrayList<>();
-            projectIds.add(deptId);
-            query.setProjectId(projectIds);
+            List<TTask> taskList = new ArrayList<>();
+            if (deptType == 1) {
+                // 项目部人员
+                List<String> projectIds = new ArrayList<>();
+                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)
+                            .ne(TProjectDept::getParentId, 0));
+                    if(!CollectionUtils.isEmpty(tProjectDeptList)){
+                        List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
+                        wrapper.in(TTask::getProjectId, projectIds);
+                    }
+                }
+            }
+
+            // 查询片区
+            if(!CollectionUtils.isEmpty(query.getProjectId())){
+                wrapper.in(TTask::getProjectId, query.getProjectId());
+            }
+
+            List<TTask> list = taskCleanService.list(wrapper);
+            if(CollectionUtils.isEmpty(list)){
+                return R.ok(map);
+            }
+
+            if(!CollectionUtils.isEmpty(taskList)){
+                list.addAll(taskList);
+            }
+            map.put("timeoutWarn", list.stream().filter(task -> task.getStatus() == 2).count());
+            List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2).collect(Collectors.toList());
+            if(CollectionUtils.isEmpty(tasks)){
+                map.put("unqualifiedWarn", 0);
+                return R.ok(map);
+            }
+            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 unqualifiedWarn = 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++;
+                    }
+                }
+            }
+            map.put("unqualifiedWarn", unqualifiedWarn);
         }else {
-            // 公司人员
-            // 查询自己的任务列表
-            taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class)
-                    .eq(TTask::getPatrolInspector, userId));
+            // 超级管理员
+            // 查询点位类型
+            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);
+                }
+            }
+            // 超级管理员 查询所有的任务列表
+            List<TTask> taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class));
             if(CollectionUtils.isEmpty(query.getProjectId())){
                 // 查询所有项目部的任务列表
                 List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
@@ -277,41 +444,41 @@
                     wrapper.in(TTask::getProjectId, projectIds);
                 }
             }
-        }
 
-        // 查询片区
-        if(!CollectionUtils.isEmpty(query.getProjectId())){
-            wrapper.in(TTask::getProjectId, query.getProjectId());
-        }
+            // 查询片区
+            if(!CollectionUtils.isEmpty(query.getProjectId())){
+                wrapper.in(TTask::getProjectId, query.getProjectId());
+            }
 
-        List<TTask> list = taskCleanService.list(wrapper);
-        if(CollectionUtils.isEmpty(list)){
-            return R.ok(map);
-        }
+            List<TTask> list = taskCleanService.list(wrapper);
+            if(CollectionUtils.isEmpty(list)){
+                return R.ok(map);
+            }
 
-        if(!CollectionUtils.isEmpty(taskList)){
-            list.addAll(taskList);
-        }
-        map.put("timeoutWarn", list.stream().filter(task -> task.getStatus() == 2).count());
-        List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2).collect(Collectors.toList());
-        if(CollectionUtils.isEmpty(tasks)){
-            map.put("unqualifiedWarn", 0);
-            return R.ok(map);
-        }
-        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 unqualifiedWarn = 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(!CollectionUtils.isEmpty(taskList)){
+                list.addAll(taskList);
+            }
+            map.put("timeoutWarn", list.stream().filter(task -> task.getStatus() == 2).count());
+            List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2).collect(Collectors.toList());
+            if(CollectionUtils.isEmpty(tasks)){
+                map.put("unqualifiedWarn", 0);
+                return R.ok(map);
+            }
+            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 unqualifiedWarn = 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++;
+                    }
                 }
             }
+            map.put("unqualifiedWarn", unqualifiedWarn);
         }
-        map.put("unqualifiedWarn", unqualifiedWarn);
         return R.ok(map);
     }
 
@@ -321,28 +488,100 @@
         Integer deptType = tokenService.getLoginUser().getUser().getDeptType();
         String deptId = tokenService.getLoginUser().getUser().getDeptId();
         Long userId = tokenService.getLoginUser().getUserId();
+        AnalysisUnqualifiedCleaningVO analysisUnqualifiedCleaningVO = new AnalysisUnqualifiedCleaningVO();
         LambdaQueryWrapper<TTask> wrapper = new LambdaQueryWrapper<>();
-        // 查询点位类型
-        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);
+        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);
+                }
             }
-        }
-        List<TTask> taskList = new ArrayList<>();
-        if (deptType == 1) {
-            // 项目部人员
-            List<String> projectIds = new ArrayList<>();
-            projectIds.add(deptId);
-            query.setProjectId(projectIds);
+            List<TTask> taskList = new ArrayList<>();
+            if (deptType == 1) {
+                // 项目部人员
+                List<String> projectIds = new ArrayList<>();
+                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)
+                            .ne(TProjectDept::getParentId, 0));
+                    if(!CollectionUtils.isEmpty(tProjectDeptList)){
+                        List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
+                        wrapper.in(TTask::getProjectId, projectIds);
+                    }
+                }
+            }
+
+            // 查询片区
+            if(!CollectionUtils.isEmpty(query.getProjectId())){
+                wrapper.in(TTask::getProjectId, query.getProjectId());
+            }
+
+            List<TTask> list = taskCleanService.list(wrapper);
+            if(CollectionUtils.isEmpty(list)){
+                return R.ok();
+            }
+
+            if(!CollectionUtils.isEmpty(taskList)){
+                list.addAll(taskList);
+            }
+
+            List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2).collect(Collectors.toList());
+            if(CollectionUtils.isEmpty(tasks)){
+                return R.ok();
+            }
+            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)
+                    .orderByDesc(TTaskDetail::getCreateTime));
+            List<TTaskDetail> taskDetailList = new ArrayList<>();
+            for (TTask task : list) {
+                TTaskDetail tTaskDetail = taskDetails.stream().filter(taskDetail -> taskDetail.getTaskId().equals(task.getId())).findFirst().orElse(null);
+                if(Objects.nonNull(tTaskDetail)){
+                    taskDetailList.add(tTaskDetail);
+                }
+            }
+            analysisUnqualifiedCleaningVO.setTotal(taskDetailList.size());
+
+            // 查询所有的不合格原因
+            List<TDictData> dictDataList = dictDataService.list(Wrappers.lambdaQuery(TDictData.class)
+                    .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());
+                AnalysisUnqualifiedCleaningDetailVO analysisUnqualifiedCleaningDetailVO = new AnalysisUnqualifiedCleaningDetailVO();
+                analysisUnqualifiedCleaningDetailVO.setUnqualifiedName(tDictData.getDataContent());
+                analysisUnqualifiedCleaningDetailVO.setCount(tTaskDetails.size());
+                analysisUnqualifiedCleaningDetailVOS.add(analysisUnqualifiedCleaningDetailVO);
+            }
+            analysisUnqualifiedCleaningVO.setAnalysisUnqualifiedCleaningDetailVOS(analysisUnqualifiedCleaningDetailVOS);
         }else {
-            // 公司人员
-            // 查询自己的任务列表
-            taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class)
-                    .eq(TTask::getPatrolInspector, userId));
+            // 超级管理员
+            // 查询点位类型
+            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);
+                }
+            }
+            // 超级管理员 查询所有的任务列表
+            List<TTask> taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class));
             if(CollectionUtils.isEmpty(query.getProjectId())){
                 // 查询所有项目部的任务列表
                 List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
@@ -353,60 +592,59 @@
                     wrapper.in(TTask::getProjectId, projectIds);
                 }
             }
-        }
 
-        // 查询片区
-        if(!CollectionUtils.isEmpty(query.getProjectId())){
-            wrapper.in(TTask::getProjectId, query.getProjectId());
-        }
-
-        List<TTask> list = taskCleanService.list(wrapper);
-        if(CollectionUtils.isEmpty(list)){
-            return R.ok();
-        }
-
-        if(!CollectionUtils.isEmpty(taskList)){
-            list.addAll(taskList);
-        }
-
-        List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2).collect(Collectors.toList());
-        if(CollectionUtils.isEmpty(tasks)){
-            return R.ok();
-        }
-        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)
-                .orderByDesc(TTaskDetail::getCreateTime));
-        List<TTaskDetail> taskDetailList = new ArrayList<>();
-        for (TTask task : list) {
-            TTaskDetail tTaskDetail = taskDetails.stream().filter(taskDetail -> taskDetail.getTaskId().equals(task.getId())).findFirst().orElse(null);
-            if(Objects.nonNull(tTaskDetail)){
-                taskDetailList.add(tTaskDetail);
+            // 查询片区
+            if(!CollectionUtils.isEmpty(query.getProjectId())){
+                wrapper.in(TTask::getProjectId, query.getProjectId());
             }
+
+            List<TTask> list = taskCleanService.list(wrapper);
+            if(CollectionUtils.isEmpty(list)){
+                return R.ok();
+            }
+
+            if(!CollectionUtils.isEmpty(taskList)){
+                list.addAll(taskList);
+            }
+
+            List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2).collect(Collectors.toList());
+            if(CollectionUtils.isEmpty(tasks)){
+                return R.ok();
+            }
+            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)
+                    .orderByDesc(TTaskDetail::getCreateTime));
+            List<TTaskDetail> taskDetailList = new ArrayList<>();
+            for (TTask task : list) {
+                TTaskDetail tTaskDetail = taskDetails.stream().filter(taskDetail -> taskDetail.getTaskId().equals(task.getId())).findFirst().orElse(null);
+                if(Objects.nonNull(tTaskDetail)){
+                    taskDetailList.add(tTaskDetail);
+                }
+            }
+            analysisUnqualifiedCleaningVO.setTotal(taskDetailList.size());
+
+            // 查询所有的不合格原因
+            List<TDictData> dictDataList = dictDataService.list(Wrappers.lambdaQuery(TDictData.class)
+                    .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());
+                AnalysisUnqualifiedCleaningDetailVO analysisUnqualifiedCleaningDetailVO = new AnalysisUnqualifiedCleaningDetailVO();
+                analysisUnqualifiedCleaningDetailVO.setUnqualifiedName(tDictData.getDataContent());
+                analysisUnqualifiedCleaningDetailVO.setCount(tTaskDetails.size());
+                analysisUnqualifiedCleaningDetailVOS.add(analysisUnqualifiedCleaningDetailVO);
+            }
+            analysisUnqualifiedCleaningVO.setAnalysisUnqualifiedCleaningDetailVOS(analysisUnqualifiedCleaningDetailVOS);
         }
 
-        AnalysisUnqualifiedCleaningVO analysisUnqualifiedCleaningVO = new AnalysisUnqualifiedCleaningVO();
-        analysisUnqualifiedCleaningVO.setTotal(taskDetailList.size());
-
-        // 查询所有的不合格原因
-        List<TDictData> dictDataList = dictDataService.list(Wrappers.lambdaQuery(TDictData.class)
-                .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());
-            AnalysisUnqualifiedCleaningDetailVO analysisUnqualifiedCleaningDetailVO = new AnalysisUnqualifiedCleaningDetailVO();
-            analysisUnqualifiedCleaningDetailVO.setUnqualifiedName(tDictData.getDataContent());
-            analysisUnqualifiedCleaningDetailVO.setCount(tTaskDetails.size());
-            analysisUnqualifiedCleaningDetailVOS.add(analysisUnqualifiedCleaningDetailVO);
-        }
-        analysisUnqualifiedCleaningVO.setAnalysisUnqualifiedCleaningDetailVOS(analysisUnqualifiedCleaningDetailVOS);
         return R.ok(analysisUnqualifiedCleaningVO);
     }
 
     @ApiOperation(value = "巡检排行榜")
     @PostMapping(value = "/inspectionRankingList")
-    public R<List<DataStatisticsRankVO>> inspectionRankingList(@RequestBody DataStatisticsRankQuery query) {
+    public R<List<DataStatisticsRankVO>> inspectionRankingList(@Validated @RequestBody DataStatisticsRankQuery query) {
         Integer deptType = tokenService.getLoginUser().getUser().getDeptType();
         String deptId = tokenService.getLoginUser().getUser().getDeptId();
         Long userId = tokenService.getLoginUser().getUserId();
@@ -434,32 +672,165 @@
         }
 
         wrapper.between(TTask::getCreateTime, startTime, endTime);
-
-        // 查询点位类型
-        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);
+        List<DataStatisticsRankVO> result = new ArrayList<>();
+        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);
+                }
             }
-        }
-        List<TTask> taskList = new ArrayList<>();
-        List<SysUser> sysUsers = new ArrayList<>();
-        if(query.getRankType() == 1){
-            sysUsers = sysUserService.selectListByDeptId(deptId);
-        }
-        if (deptType == 1) {
-            // 项目部人员
-            List<String> projectIds = new ArrayList<>();
-            projectIds.add(deptId);
-            query.setProjectId(projectIds);
+            List<TTask> taskList = new ArrayList<>();
+            List<SysUser> sysUsers = new ArrayList<>();
+            if(query.getRankType() == 1){
+                sysUsers = sysUserService.selectListByDeptId(deptId);
+            }
+            if (deptType == 1) {
+                // 项目部人员
+                List<String> projectIds = new ArrayList<>();
+                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)
+                            .ne(TProjectDept::getParentId, 0));
+                    if(!CollectionUtils.isEmpty(tProjectDeptList)){
+                        List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
+                        wrapper.in(TTask::getProjectId, projectIds);
+                    }
+                    if(query.getRankType() == 1){
+                        // 查询所有项目部的人员
+                        List<SysUser> sysUserList = sysUserService.selectListByDeptType(1);
+                        if(!CollectionUtils.isEmpty(sysUserList)){
+                            sysUsers.addAll(sysUserList);
+                        }
+                    }
+                }else {
+                    if(query.getRankType() == 1){
+                        // 查询所有片区
+                        List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
+                                .eq(TProjectDept::getStatus, 1)
+                                .in(TProjectDept::getId, query.getProjectId()));
+                        if(!CollectionUtils.isEmpty(tProjectDeptList)){
+                            List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).distinct().collect(Collectors.toList());
+                            List<SysUser> sysUserList = sysUserService.selectListByDeptIds(projectIds);
+                            sysUsers.addAll(sysUserList);
+                        }
+                    }
+                }
+            }
+
+            // 查询片区
+            if(!CollectionUtils.isEmpty(query.getProjectId())){
+                wrapper.in(TTask::getProjectId, query.getProjectId());
+            }
+
+            List<TTask> list = taskCleanService.list(wrapper);
+            if(CollectionUtils.isEmpty(list)){
+                return R.ok();
+            }
+
+            if(!CollectionUtils.isEmpty(taskList)){
+                list.addAll(taskList);
+            }
+
+            List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2).collect(Collectors.toList());
+            if(CollectionUtils.isEmpty(tasks)){
+                return R.ok();
+            }
+            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, 1)
+                    .orderByDesc(TTaskDetail::getCreateTime));
+
+            if(query.getRankType() == 1){
+                // 用户排名
+                for (SysUser sysUser : sysUsers) {
+                    DataStatisticsRankVO dataStatisticsRankVO = new DataStatisticsRankVO();
+                    dataStatisticsRankVO.setName(sysUser.getNickName());
+                    List<String> taskIdList = tasks.stream().filter(task -> task.getPatrolInspector().equals(String.valueOf(sysUser.getUserId()))).map(TTask::getId).collect(Collectors.toList());
+                    dataStatisticsRankVO.setTaskCount(taskIdList.size());
+                    long count = taskDetails.stream().filter(taskDetail -> taskIdList.contains(taskDetail.getTaskId())).count();
+                    dataStatisticsRankVO.setQualifiedCount(count);
+                }
+            }else {
+                // 查询项目部
+                List<TProjectDept> projectDepts;
+                if(deptType == 1){
+                    projectDepts = new ArrayList<>();
+                    // 当前项目部
+                    TProjectDept projectDept = projectDeptService.getById(deptId);
+                    projectDepts.add(projectDept);
+                }else {
+                    if (CollectionUtils.isEmpty(query.getProjectId())){
+                        projectDepts = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
+                                .eq(TProjectDept::getStatus, 1)
+                                .eq(TProjectDept::getParentId, 0));
+                    }else {
+                        List<TProjectDept> projectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
+                                .eq(TProjectDept::getStatus, 1)
+                                .in(TProjectDept::getId, query.getProjectId()));
+                        List<String> parentIds = projectDeptList.stream().map(TProjectDept::getParentId).collect(Collectors.toList());
+                        projectDepts = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
+                                .eq(TProjectDept::getStatus, 1)
+                                .in(TProjectDept::getId, parentIds));
+                    }
+                }
+                if(CollectionUtils.isEmpty(projectDepts)){
+                    return R.ok();
+                }
+                // 查询所有片区
+                List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
+                        .eq(TProjectDept::getStatus, 1)
+                        .ne(TProjectDept::getParentId, 0));
+                for (TProjectDept projectDept : projectDepts) {
+                    DataStatisticsRankVO dataStatisticsRankVO = new DataStatisticsRankVO();
+                    dataStatisticsRankVO.setName(projectDept.getProjectName());
+                    List<String> taskIdList;
+                    if(!CollectionUtils.isEmpty(tProjectDeptList)){
+                        List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
+                        taskIdList = tasks.stream().filter(task -> projectIds.contains(task.getProjectId())).map(TTask::getId).collect(Collectors.toList());
+                    } else {
+                        taskIdList = new ArrayList<>();
+                    }
+                    dataStatisticsRankVO.setTaskCount(taskIdList.size());
+                    if(CollectionUtils.isEmpty(taskIdList)){
+                        dataStatisticsRankVO.setQualifiedCount(0L);
+                        continue;
+                    }
+                    long count = taskDetails.stream().filter(taskDetail -> taskIdList.contains(taskDetail.getTaskId())).count();
+                    dataStatisticsRankVO.setQualifiedCount(count);
+                }
+            }
         }else {
-            // 公司人员
-            // 查询自己的任务列表
-            taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class)
-                    .eq(TTask::getPatrolInspector, userId));
+            // 超级管理员
+            // 查询点位类型
+            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);
+                }
+            }
+            List<SysUser> sysUsers = new ArrayList<>();
+            if(query.getRankType() == 1){
+                sysUsers = sysUserService.selectListByDeptId(deptId);
+            }
+            // 超级管理员 查询所有的任务列表
+            List<TTask> taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class));
             if(CollectionUtils.isEmpty(query.getProjectId())){
                 // 查询所有项目部的任务列表
                 List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
@@ -489,53 +860,44 @@
                     }
                 }
             }
-        }
 
-        // 查询片区
-        if(!CollectionUtils.isEmpty(query.getProjectId())){
-            wrapper.in(TTask::getProjectId, query.getProjectId());
-        }
-
-        List<TTask> list = taskCleanService.list(wrapper);
-        if(CollectionUtils.isEmpty(list)){
-            return R.ok();
-        }
-
-        if(!CollectionUtils.isEmpty(taskList)){
-            list.addAll(taskList);
-        }
-
-        List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2).collect(Collectors.toList());
-        if(CollectionUtils.isEmpty(tasks)){
-            return R.ok();
-        }
-        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, 1)
-                .orderByDesc(TTaskDetail::getCreateTime));
-
-
-        List<DataStatisticsRankVO> result = new ArrayList<>();
-        if(query.getRankType() == 1){
-            // 用户排名
-            for (SysUser sysUser : sysUsers) {
-                DataStatisticsRankVO dataStatisticsRankVO = new DataStatisticsRankVO();
-                dataStatisticsRankVO.setName(sysUser.getNickName());
-                List<String> taskIdList = tasks.stream().filter(task -> task.getPatrolInspector().equals(String.valueOf(sysUser.getUserId()))).map(TTask::getId).collect(Collectors.toList());
-                dataStatisticsRankVO.setTaskCount(taskIdList.size());
-                long count = taskDetails.stream().filter(taskDetail -> taskIdList.contains(taskDetail.getTaskId())).count();
-                dataStatisticsRankVO.setQualifiedCount(count);
+            // 查询片区
+            if(!CollectionUtils.isEmpty(query.getProjectId())){
+                wrapper.in(TTask::getProjectId, query.getProjectId());
             }
-        }else {
-            // 查询项目部
-            List<TProjectDept> projectDepts;
-            if(deptType == 1){
-                projectDepts = new ArrayList<>();
-                // 当前项目部
-                TProjectDept projectDept = projectDeptService.getById(deptId);
-                projectDepts.add(projectDept);
+
+            List<TTask> list = taskCleanService.list(wrapper);
+            if(CollectionUtils.isEmpty(list)){
+                return R.ok();
+            }
+
+            if(!CollectionUtils.isEmpty(taskList)){
+                list.addAll(taskList);
+            }
+
+            List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2).collect(Collectors.toList());
+            if(CollectionUtils.isEmpty(tasks)){
+                return R.ok();
+            }
+            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, 1)
+                    .orderByDesc(TTaskDetail::getCreateTime));
+
+            if(query.getRankType() == 1){
+                // 用户排名
+                for (SysUser sysUser : sysUsers) {
+                    DataStatisticsRankVO dataStatisticsRankVO = new DataStatisticsRankVO();
+                    dataStatisticsRankVO.setName(sysUser.getNickName());
+                    List<String> taskIdList = tasks.stream().filter(task -> task.getPatrolInspector().equals(String.valueOf(sysUser.getUserId()))).map(TTask::getId).collect(Collectors.toList());
+                    dataStatisticsRankVO.setTaskCount(taskIdList.size());
+                    long count = taskDetails.stream().filter(taskDetail -> taskIdList.contains(taskDetail.getTaskId())).count();
+                    dataStatisticsRankVO.setQualifiedCount(count);
+                }
             }else {
+                // 超级管理员 查询所有项目部
+                List<TProjectDept> projectDepts;
                 if (CollectionUtils.isEmpty(query.getProjectId())){
                     projectDepts = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
                             .eq(TProjectDept::getStatus, 1)
@@ -549,31 +911,31 @@
                             .eq(TProjectDept::getStatus, 1)
                             .in(TProjectDept::getId, parentIds));
                 }
-            }
-            if(CollectionUtils.isEmpty(projectDepts)){
-                return R.ok();
-            }
-            // 查询所有片区
-            List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
-                    .eq(TProjectDept::getStatus, 1)
-                    .ne(TProjectDept::getParentId, 0));
-            for (TProjectDept projectDept : projectDepts) {
-                DataStatisticsRankVO dataStatisticsRankVO = new DataStatisticsRankVO();
-                dataStatisticsRankVO.setName(projectDept.getProjectName());
-                List<String> taskIdList;
-                if(!CollectionUtils.isEmpty(tProjectDeptList)){
-                    List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
-                    taskIdList = tasks.stream().filter(task -> projectIds.contains(task.getProjectId())).map(TTask::getId).collect(Collectors.toList());
-                } else {
-                    taskIdList = new ArrayList<>();
+                if(CollectionUtils.isEmpty(projectDepts)){
+                    return R.ok();
                 }
-                dataStatisticsRankVO.setTaskCount(taskIdList.size());
-                if(CollectionUtils.isEmpty(taskIdList)){
-                    dataStatisticsRankVO.setQualifiedCount(0L);
-                    continue;
+                // 查询所有片区
+                List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
+                        .eq(TProjectDept::getStatus, 1)
+                        .ne(TProjectDept::getParentId, 0));
+                for (TProjectDept projectDept : projectDepts) {
+                    DataStatisticsRankVO dataStatisticsRankVO = new DataStatisticsRankVO();
+                    dataStatisticsRankVO.setName(projectDept.getProjectName());
+                    List<String> taskIdList;
+                    if(!CollectionUtils.isEmpty(tProjectDeptList)){
+                        List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
+                        taskIdList = tasks.stream().filter(task -> projectIds.contains(task.getProjectId())).map(TTask::getId).collect(Collectors.toList());
+                    } else {
+                        taskIdList = new ArrayList<>();
+                    }
+                    dataStatisticsRankVO.setTaskCount(taskIdList.size());
+                    if(CollectionUtils.isEmpty(taskIdList)){
+                        dataStatisticsRankVO.setQualifiedCount(0L);
+                        continue;
+                    }
+                    long count = taskDetails.stream().filter(taskDetail -> taskIdList.contains(taskDetail.getTaskId())).count();
+                    dataStatisticsRankVO.setQualifiedCount(count);
                 }
-                long count = taskDetails.stream().filter(taskDetail -> taskIdList.contains(taskDetail.getTaskId())).count();
-                dataStatisticsRankVO.setQualifiedCount(count);
             }
         }
 
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 ee5b112..055e4c1 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
@@ -1,26 +1,27 @@
 package com.ruoyi.web.controller.api;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+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.StringUtils;
 import com.ruoyi.framework.web.service.TokenService;
 import com.ruoyi.system.dto.WorkBenchesDTO;
-import com.ruoyi.system.model.TDept;
-import com.ruoyi.system.model.TProjectDept;
+import com.ruoyi.system.model.*;
+import com.ruoyi.system.query.DataStatisticsQuery;
 import com.ruoyi.system.service.*;
-import com.ruoyi.system.vo.system.DeptNoLimitChildVO;
-import com.ruoyi.system.vo.system.DeptNoLimitParentVO;
-import com.ruoyi.system.vo.system.DeptNoLimitVO;
-import com.ruoyi.system.vo.system.WorkBenchesVO;
+import com.ruoyi.system.vo.system.*;
 import com.ruoyi.web.util.OssUploadUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.List;
+import java.time.LocalDate;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -36,43 +37,27 @@
 @RequestMapping("/workbenches")
 public class WorkbenchesController {
     @Resource
-    private TTaskCleanService taskCleanerService;
-
-    @Resource
-    private TTaskDetailService taskDetailService;
-
-
+    private TTaskCleanService taskCleanService;
     @Resource
     private TLocationTypeService locationTypeService;
     @Resource
     private TLocationService locationService;
     @Resource
     private TProjectDeptService projectDeptService;
-
     @Resource
     private TTaskDetailService tTaskDetailService;
     @Resource
     private TDeptService deptService;
     @Resource
     private ISysUserService sysUserService;
-    @Resource
-    private ISysRoleService roleService;
-    @Resource
-    private TDictDataService dictDataService;
-    @Resource
-    private TLeaveService leaveService;
-    @Resource
-    private TLeaveAuditService leaveAuditService;
+
     @Resource
     private TokenService tokenService;
+
     @Resource
     private TAppealService appealService;
     @Resource
-    private TInspectorService inspectorService;
-    @Resource
-    private TFeedbackService feedbackService;
-    @Resource
-    private TProblemEscalationService problemEscalationService;
+    private TDictDataService dictDataService;
 
     @PostMapping("/data")
     @ApiOperation(value = "工作台", tags = "工作台")
@@ -118,5 +103,764 @@
         }
         return R.ok(res);
     }
+
+    @ApiOperation(value = "查询片区")
+    @GetMapping(value = "/queryProject")
+    public R<List<TProjectDept>> queryProject() {
+        Integer deptType = tokenService.getLoginUser().getUser().getDeptType();
+        String deptId = tokenService.getLoginUser().getUser().getDeptId();
+        Long userId = tokenService.getLoginUser().getUserId();
+        List<TProjectDept> projectDeptList = new ArrayList<>();
+        if(userId != 1L){
+            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);
+            }else {
+                projectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
+                        .eq(TProjectDept::getStatus,1)
+                        .eq(TProjectDept::getParentId,0));
+                // 查询片区
+                projectDeptList.forEach(projectDept -> {
+                    List<TProjectDept> children = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
+                            .eq(TProjectDept::getParentId, projectDept.getId()));
+                    projectDept.setChildren(children);
+                });
+            }
+        }else {
+            projectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
+                    .eq(TProjectDept::getStatus,1)
+                    .eq(TProjectDept::getParentId,0));
+            // 查询片区
+            projectDeptList.forEach(projectDept -> {
+                List<TProjectDept> children = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
+                        .eq(TProjectDept::getParentId, projectDept.getId()));
+                projectDept.setChildren(children);
+            });
+        }
+        return R.ok(projectDeptList);
+    }
+
+    @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));
+        return R.ok(locationTypes);
+    }
+
+
+    @ApiOperation(value = "任务情况")
+    @PostMapping(value = "/taskSituation")
+    public R<List<TTask>> taskSituation(@RequestBody DataStatisticsQuery query) {
+        Integer deptType = tokenService.getLoginUser().getUser().getDeptType();
+        String deptId = tokenService.getLoginUser().getUser().getDeptId();
+        Long userId = tokenService.getLoginUser().getUserId();
+
+        // 查询所有点位
+        List<TLocation> locations = locationService.list();
+
+        LambdaQueryWrapper<TTask> wrapper = new LambdaQueryWrapper<>();
+        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);
+                }
+            }
+            List<TTask> taskList = new ArrayList<>();
+            if (deptType == 1) {
+                // 项目部人员
+                List<String> projectIds = new ArrayList<>();
+                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)
+                            .ne(TProjectDept::getParentId, 0));
+                    if(!CollectionUtils.isEmpty(tProjectDeptList)){
+                        List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
+                        wrapper.in(TTask::getProjectId, projectIds);
+                    }
+                }
+            }
+
+            // 查询片区
+            if(!CollectionUtils.isEmpty(query.getProjectId())){
+                wrapper.in(TTask::getProjectId, query.getProjectId());
+            }
+
+            List<TTask> list = taskCleanService.list(wrapper);
+            if(CollectionUtils.isEmpty(list)){
+                return R.ok();
+            }
+
+            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);
+        }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);
+                }
+            }
+            // 超级管理员 查询所有的任务列表
+            List<TTask> taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class));
+            if(CollectionUtils.isEmpty(query.getProjectId())){
+                // 查询所有项目部的任务列表
+                List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
+                        .eq(TProjectDept::getStatus, 1)
+                        .ne(TProjectDept::getParentId, 0));
+                if(!CollectionUtils.isEmpty(tProjectDeptList)){
+                    List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
+                    wrapper.in(TTask::getProjectId, projectIds);
+                }
+            }
+
+            // 查询片区
+            if(!CollectionUtils.isEmpty(query.getProjectId())){
+                wrapper.in(TTask::getProjectId, query.getProjectId());
+            }
+
+            List<TTask> list = taskCleanService.list(wrapper);
+            if(CollectionUtils.isEmpty(list)){
+                return R.ok();
+            }
+
+            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);
+        }
+    }
+
+    @ApiOperation(value = "今日预警")
+    @PostMapping(value = "/todayWarning")
+    public R<List<TTask>> todayWarning(@RequestBody DataStatisticsQuery query) {
+        Integer deptType = tokenService.getLoginUser().getUser().getDeptType();
+        String deptId = tokenService.getLoginUser().getUser().getDeptId();
+        Long userId = tokenService.getLoginUser().getUserId();
+
+        // 查询所有点位
+        List<TLocation> locations = locationService.list();
+
+        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);
+        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);
+                }
+            }
+            List<TTask> taskList = new ArrayList<>();
+            if (deptType == 1) {
+                // 项目部人员
+                List<String> projectIds = new ArrayList<>();
+                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)
+                            .ne(TProjectDept::getParentId, 0));
+                    if(!CollectionUtils.isEmpty(tProjectDeptList)){
+                        List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
+                        wrapper.in(TTask::getProjectId, projectIds);
+                    }
+                }
+            }
+
+            // 查询片区
+            if(!CollectionUtils.isEmpty(query.getProjectId())){
+                wrapper.in(TTask::getProjectId, query.getProjectId());
+            }
+
+            List<TTask> list = taskCleanService.list(wrapper);
+            if(CollectionUtils.isEmpty(list)){
+                return R.ok();
+            }
+
+            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<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);
+                    }
+                }
+            }
+            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);
+        }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);
+                }
+            }
+            // 超级管理员 查询所有的任务列表
+            List<TTask> taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class));
+            if(CollectionUtils.isEmpty(query.getProjectId())){
+                // 查询所有项目部的任务列表
+                List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
+                        .eq(TProjectDept::getStatus, 1)
+                        .ne(TProjectDept::getParentId, 0));
+                if(!CollectionUtils.isEmpty(tProjectDeptList)){
+                    List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
+                    wrapper.in(TTask::getProjectId, projectIds);
+                }
+            }
+
+            // 查询片区
+            if(!CollectionUtils.isEmpty(query.getProjectId())){
+                wrapper.in(TTask::getProjectId, query.getProjectId());
+            }
+
+            List<TTask> list = taskCleanService.list(wrapper);
+            if(CollectionUtils.isEmpty(list)){
+                return R.ok();
+            }
+
+            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<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);
+                    }
+                }
+            }
+            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);
+        }
+    }
+
+    @ApiOperation(value = "待审核任务")
+    @PostMapping(value = "/pendingAuditTasks")
+    public R<List<TTask>> pendingAuditTasks(@RequestBody DataStatisticsQuery query) {
+        Integer deptType = tokenService.getLoginUser().getUser().getDeptType();
+        String deptId = tokenService.getLoginUser().getUser().getDeptId();
+        Long userId = tokenService.getLoginUser().getUserId();
+
+        // 查询所有点位
+        List<TLocation> locations = locationService.list();
+
+        LambdaQueryWrapper<TTask> wrapper = new LambdaQueryWrapper<>();
+        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);
+                }
+            }
+            List<TTask> taskList = new ArrayList<>();
+            if (deptType == 1) {
+                // 项目部人员
+                List<String> projectIds = new ArrayList<>();
+                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)
+                            .ne(TProjectDept::getParentId, 0));
+                    if(!CollectionUtils.isEmpty(tProjectDeptList)){
+                        List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
+                        wrapper.in(TTask::getProjectId, projectIds);
+                    }
+                }
+            }
+
+            // 查询片区
+            if(!CollectionUtils.isEmpty(query.getProjectId())){
+                wrapper.in(TTask::getProjectId, query.getProjectId());
+            }
+
+            List<TTask> list = taskCleanService.list(wrapper);
+            if(CollectionUtils.isEmpty(list)){
+                return R.ok();
+            }
+
+            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);
+        }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);
+                }
+            }
+            // 超级管理员 查询所有的任务列表
+            List<TTask> taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class));
+            if(CollectionUtils.isEmpty(query.getProjectId())){
+                // 查询所有项目部的任务列表
+                List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
+                        .eq(TProjectDept::getStatus, 1)
+                        .ne(TProjectDept::getParentId, 0));
+                if(!CollectionUtils.isEmpty(tProjectDeptList)){
+                    List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
+                    wrapper.in(TTask::getProjectId, projectIds);
+                }
+            }
+
+            // 查询片区
+            if(!CollectionUtils.isEmpty(query.getProjectId())){
+                wrapper.in(TTask::getProjectId, query.getProjectId());
+            }
+
+            List<TTask> list = taskCleanService.list(wrapper);
+            if(CollectionUtils.isEmpty(list)){
+                return R.ok();
+            }
+
+            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);
+        }
+    }
+
+    @ApiOperation(value = "保洁质量汇总")
+    @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();
+        LambdaQueryWrapper<TTask> wrapper = new LambdaQueryWrapper<>();
+        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);
+                }
+            }
+            List<TTask> taskList = new ArrayList<>();
+            if (deptType == 1) {
+                // 项目部人员
+                List<String> projectIds = new ArrayList<>();
+                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)
+                            .ne(TProjectDept::getParentId, 0));
+                    if(!CollectionUtils.isEmpty(tProjectDeptList)){
+                        List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
+                        wrapper.in(TTask::getProjectId, projectIds);
+                    }
+                }
+            }
+
+            // 查询片区
+            if(!CollectionUtils.isEmpty(query.getProjectId())){
+                wrapper.in(TTask::getProjectId, query.getProjectId());
+            }
+
+            List<TTask> list = taskCleanService.list(wrapper);
+            if(CollectionUtils.isEmpty(list)){
+                return R.ok(map);
+            }
+
+            if(!CollectionUtils.isEmpty(taskList)){
+                list.addAll(taskList);
+            }
+            List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2).collect(Collectors.toList());
+            if(CollectionUtils.isEmpty(tasks)){
+                map.put("unqualifiedWarn", 0);
+                map.put("qualifiedWarn", 0);
+                return R.ok(map);
+            }
+            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 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++;
+                    }else {
+                        qualifiedWarn++;
+                    }
+                }
+            }
+            map.put("qualifiedWarn", qualifiedWarn);
+            map.put("unqualifiedWarn", unqualifiedWarn);
+        }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);
+                }
+            }
+            // 超级管理员 查询所有的任务列表
+            List<TTask> taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class));
+            if(CollectionUtils.isEmpty(query.getProjectId())){
+                // 查询所有项目部的任务列表
+                List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
+                        .eq(TProjectDept::getStatus, 1)
+                        .ne(TProjectDept::getParentId, 0));
+                if(!CollectionUtils.isEmpty(tProjectDeptList)){
+                    List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
+                    wrapper.in(TTask::getProjectId, projectIds);
+                }
+            }
+
+            // 查询片区
+            if(!CollectionUtils.isEmpty(query.getProjectId())){
+                wrapper.in(TTask::getProjectId, query.getProjectId());
+            }
+
+            List<TTask> list = taskCleanService.list(wrapper);
+            if(CollectionUtils.isEmpty(list)){
+                return R.ok(map);
+            }
+
+            if(!CollectionUtils.isEmpty(taskList)){
+                list.addAll(taskList);
+            }
+            List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2).collect(Collectors.toList());
+            if(CollectionUtils.isEmpty(tasks)){
+                map.put("unqualifiedWarn", 0);
+                map.put("qualifiedWarn", 0);
+                return R.ok(map);
+            }
+            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 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++;
+                    }else {
+                        qualifiedWarn++;
+                    }
+                }
+            }
+            map.put("unqualifiedWarn", unqualifiedWarn);
+            map.put("qualifiedWarn", qualifiedWarn);
+        }
+        return R.ok(map);
+    }
+
+    @ApiOperation(value = "清洁不合格分析")
+    @PostMapping(value = "/analysisUnqualifiedCleaning")
+    public R<AnalysisUnqualifiedCleaningVO> analysisUnqualifiedCleaning(@RequestBody DataStatisticsQuery query) {
+        Integer deptType = tokenService.getLoginUser().getUser().getDeptType();
+        String deptId = tokenService.getLoginUser().getUser().getDeptId();
+        Long userId = tokenService.getLoginUser().getUserId();
+        AnalysisUnqualifiedCleaningVO analysisUnqualifiedCleaningVO = new AnalysisUnqualifiedCleaningVO();
+        LambdaQueryWrapper<TTask> wrapper = new LambdaQueryWrapper<>();
+        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);
+                }
+            }
+            List<TTask> taskList = new ArrayList<>();
+            if (deptType == 1) {
+                // 项目部人员
+                List<String> projectIds = new ArrayList<>();
+                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)
+                            .ne(TProjectDept::getParentId, 0));
+                    if(!CollectionUtils.isEmpty(tProjectDeptList)){
+                        List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
+                        wrapper.in(TTask::getProjectId, projectIds);
+                    }
+                }
+            }
+
+            // 查询片区
+            if(!CollectionUtils.isEmpty(query.getProjectId())){
+                wrapper.in(TTask::getProjectId, query.getProjectId());
+            }
+
+            List<TTask> list = taskCleanService.list(wrapper);
+            if(CollectionUtils.isEmpty(list)){
+                return R.ok();
+            }
+
+            if(!CollectionUtils.isEmpty(taskList)){
+                list.addAll(taskList);
+            }
+
+            List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2).collect(Collectors.toList());
+            if(CollectionUtils.isEmpty(tasks)){
+                return R.ok();
+            }
+            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)
+                    .orderByDesc(TTaskDetail::getCreateTime));
+            List<TTaskDetail> taskDetailList = new ArrayList<>();
+            for (TTask task : list) {
+                TTaskDetail tTaskDetail = taskDetails.stream().filter(taskDetail -> taskDetail.getTaskId().equals(task.getId())).findFirst().orElse(null);
+                if(Objects.nonNull(tTaskDetail)){
+                    taskDetailList.add(tTaskDetail);
+                }
+            }
+            analysisUnqualifiedCleaningVO.setTotal(taskDetailList.size());
+
+            // 查询所有的不合格原因
+            List<TDictData> dictDataList = dictDataService.list(Wrappers.lambdaQuery(TDictData.class)
+                    .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());
+                AnalysisUnqualifiedCleaningDetailVO analysisUnqualifiedCleaningDetailVO = new AnalysisUnqualifiedCleaningDetailVO();
+                analysisUnqualifiedCleaningDetailVO.setUnqualifiedName(tDictData.getDataContent());
+                analysisUnqualifiedCleaningDetailVO.setCount(tTaskDetails.size());
+                analysisUnqualifiedCleaningDetailVOS.add(analysisUnqualifiedCleaningDetailVO);
+            }
+            analysisUnqualifiedCleaningVO.setAnalysisUnqualifiedCleaningDetailVOS(analysisUnqualifiedCleaningDetailVOS);
+        }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);
+                }
+            }
+            // 超级管理员 查询所有的任务列表
+            List<TTask> taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class));
+            if(CollectionUtils.isEmpty(query.getProjectId())){
+                // 查询所有项目部的任务列表
+                List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
+                        .eq(TProjectDept::getStatus, 1)
+                        .ne(TProjectDept::getParentId, 0));
+                if(!CollectionUtils.isEmpty(tProjectDeptList)){
+                    List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
+                    wrapper.in(TTask::getProjectId, projectIds);
+                }
+            }
+
+            // 查询片区
+            if(!CollectionUtils.isEmpty(query.getProjectId())){
+                wrapper.in(TTask::getProjectId, query.getProjectId());
+            }
+
+            List<TTask> list = taskCleanService.list(wrapper);
+            if(CollectionUtils.isEmpty(list)){
+                return R.ok();
+            }
+
+            if(!CollectionUtils.isEmpty(taskList)){
+                list.addAll(taskList);
+            }
+
+            List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2).collect(Collectors.toList());
+            if(CollectionUtils.isEmpty(tasks)){
+                return R.ok();
+            }
+            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)
+                    .orderByDesc(TTaskDetail::getCreateTime));
+            List<TTaskDetail> taskDetailList = new ArrayList<>();
+            for (TTask task : list) {
+                TTaskDetail tTaskDetail = taskDetails.stream().filter(taskDetail -> taskDetail.getTaskId().equals(task.getId())).findFirst().orElse(null);
+                if(Objects.nonNull(tTaskDetail)){
+                    taskDetailList.add(tTaskDetail);
+                }
+            }
+            analysisUnqualifiedCleaningVO.setTotal(taskDetailList.size());
+
+            // 查询所有的不合格原因
+            List<TDictData> dictDataList = dictDataService.list(Wrappers.lambdaQuery(TDictData.class)
+                    .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());
+                AnalysisUnqualifiedCleaningDetailVO analysisUnqualifiedCleaningDetailVO = new AnalysisUnqualifiedCleaningDetailVO();
+                analysisUnqualifiedCleaningDetailVO.setUnqualifiedName(tDictData.getDataContent());
+                analysisUnqualifiedCleaningDetailVO.setCount(tTaskDetails.size());
+                analysisUnqualifiedCleaningDetailVOS.add(analysisUnqualifiedCleaningDetailVO);
+            }
+            analysisUnqualifiedCleaningVO.setAnalysisUnqualifiedCleaningDetailVOS(analysisUnqualifiedCleaningDetailVOS);
+        }
+
+        return R.ok(analysisUnqualifiedCleaningVO);
+    }
+
 }
 
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
index c79ac48..449b5a2 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
@@ -40,8 +40,8 @@
     //@Excel(name = "登录名称")
     @ApiModelProperty(value = "登录名称")
     private String userName;
-    @TableField("dept_type")
     @ApiModelProperty(value = "部门类型 1项目部 2部门")
+    @TableField("deptType")
     private Integer deptType;
     @TableField("code")
     @ApiModelProperty(value = "编号")
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TProjectDept.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TProjectDept.java
index 379a39c..e8c7ba7 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TProjectDept.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TProjectDept.java
@@ -45,7 +45,7 @@
     @TableField("status")
     private Integer status;
 
-//    @TableField(exist = false)
-//    private List<TProjectDept> children;
+    @TableField(exist = false)
+    private List<TProjectDept> children;
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TTask.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TTask.java
index cc251e8..641564a 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TTask.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TTask.java
@@ -80,4 +80,7 @@
     @ApiModelProperty(value = "模板id 日常任务存储")
     @TableField("user_id")
     private Long userId;
+    @ApiModelProperty(value = "点位名称")
+    @TableField(exist = false)
+    private String locationName;
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/DataStatisticsRankQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/DataStatisticsRankQuery.java
index cb84041..98b3f17 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/query/DataStatisticsRankQuery.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/DataStatisticsRankQuery.java
@@ -4,6 +4,7 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.util.List;
 
@@ -17,12 +18,15 @@
     @ApiModelProperty(value = "点位类型id")
     private String locationTypeId;
 
+    @NotNull(message = "排名类型不能为空")
     @ApiModelProperty(value = "排名类型 1=人员排名 2=项目部排名")
     private Integer rankType;
 
+    @NotNull(message = "时间类型不能为空")
     @ApiModelProperty(value = "时间类型 1=月排行 2=季度排行 3=年度排行")
     private Integer timeType;
 
+    @NotNull(message = "排序类型不能为空")
     @ApiModelProperty(value = "排序类型 1=升序 2=降序")
     private Integer sortType;
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/TaskSituationQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/TaskSituationQuery.java
new file mode 100644
index 0000000..577ea56
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/TaskSituationQuery.java
@@ -0,0 +1,26 @@
+package com.ruoyi.system.query;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+@ApiModel(value = "任务情况查询参数Query")
+public class TaskSituationQuery implements Serializable {
+
+    @ApiModelProperty(value = "片区id")
+    private List<String> projectId;
+
+    @ApiModelProperty(value = "点位类型id")
+    private String locationTypeId;
+
+    @ApiModelProperty(value = "开始时间")
+    private String startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    private String endTime;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/system/TaskSituationDayVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/system/TaskSituationDayVO.java
new file mode 100644
index 0000000..dc9464a
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/system/TaskSituationDayVO.java
@@ -0,0 +1,22 @@
+package com.ruoyi.system.vo.system;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@ApiModel(value = "任务情况每日VO")
+public class TaskSituationDayVO implements Serializable {
+
+    @ApiModelProperty(value = "任务数")
+    private Integer taskNum;
+
+    @ApiModelProperty(value = "完成数")
+    private Integer completedNum;
+
+    @ApiModelProperty(value = "完成率")
+    private String completeRate;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/system/TaskSituationVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/system/TaskSituationVO.java
new file mode 100644
index 0000000..de580f7
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/system/TaskSituationVO.java
@@ -0,0 +1,26 @@
+package com.ruoyi.system.vo.system;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+@ApiModel(value = "任务情况VO")
+public class TaskSituationVO implements Serializable {
+
+    @ApiModelProperty(value = "总计任务数")
+    private Integer totalTaskNum;
+
+    @ApiModelProperty(value = "已完成任务数")
+    private Integer completedTaskNum;
+
+    @ApiModelProperty(value = "合格率")
+    private String passRate;
+
+    @ApiModelProperty(value = "任务情况每日VO")
+    private List<TaskSituationDayVO> taskSituationDayVO;
+
+}
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
index 032f1dc..7c7fee5 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -28,6 +28,7 @@
         <result property="businessDeptId"       column="business_dept_id"       />
         <result property="roleName"       column="role_name"       />
         <result property="code"       column="code"       />
+        <result property="deptType"       column="deptType"       />
         <association property="dept"    javaType="SysDept"         resultMap="deptResult" />
         <collection  property="roles"   javaType="java.util.List"  resultMap="RoleResult" />
     </resultMap>
@@ -53,7 +54,7 @@
 	
 	<sql id="selectUserVo">
         select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, u.business_dept_id,
-        d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
+        d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,u.deptType as deptType,
         r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status,u.code
         from sys_user u
 		    left join sys_dept d on u.dept_id = d.dept_id

--
Gitblit v1.7.1