From a858d0f96cd50b7587cd0ac7291e0432e48ac759 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期六, 12 七月 2025 10:19:26 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ReportController.java |  637 ++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 381 insertions(+), 256 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ReportController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ReportController.java
index f6d0d24..a835e8a 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ReportController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ReportController.java
@@ -169,11 +169,11 @@
             }
             TTemplate tTemplate = templates.stream().filter(e -> e.getId().equals(record.getTemplateId())).findFirst().orElse(null);
             record.setNum1(1);
-            if(Objects.nonNull(tTemplate)){
+            if (Objects.nonNull(tTemplate)) {
                 TTemplateCount templateCount = templateCountService.lambdaQuery().eq(TTemplateCount::getUserId, record.getUserId())
                         .eq(TTemplateCount::getTemplateId, tTemplate.getId())
                         .orderByDesc(TTemplateCount::getCreateTime).last("limit 1").one();
-                if (templateCount!=null){
+                if (templateCount != null) {
                     record.setNum1(templateCount.getTaskCount());
                 }
                 // todo 应生成计划数
@@ -206,7 +206,7 @@
                                 break;
                         }
                     }
-                    LocalDateTime localDateTime = tTemplate.getCreateTime().plusDays(temp-1);
+                    LocalDateTime localDateTime = tTemplate.getCreateTime().plusDays(temp - 1);
                     stringBuilder.append(localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
                     record.setTemplateDate(stringBuilder.toString());
                 }
@@ -227,8 +227,9 @@
         progressListVOPageInfo.setRecords(records);
         return R.ok(progressListVOPageInfo);
     }
+
     @ApiOperation(value = "任务进度导出")
-    @Log(title = "任务进度导出", businessType = BusinessType.EXPORT)
+    @Log(title = "任务进度导出", businessType = BusinessType.OTHER)
     @PostMapping(value = "/taskProgressExport")
     public void taskProgressExport(@RequestBody TaskProgressQuery query) {
         List<SysUser> sysUsers = sysUserService.selectAllList();
@@ -385,7 +386,7 @@
         }
         List<ProjectDeptDetailsVO> res = new ArrayList<>();
         List<TTask> tasks = taskCleanerService.list(tTaskLambdaQueryWrapper);
-        if(CollectionUtils.isEmpty(tasks)){
+        if (CollectionUtils.isEmpty(tasks)) {
             return R.ok(res);
         }
         List<TTaskDetail> taskDetails = taskDetailService.lambdaQuery().orderByDesc(BaseModel::getCreateTime).list();
@@ -430,8 +431,8 @@
                     LocationTypeListByProjectVO temp = new LocationTypeListByProjectVO();
                     BeanUtils.copyProperties(locationTypeListByProjectVO, temp);
                     List<String> locationIds = locations.stream().filter(e ->
-                            e.getProjectId().equals(projectDeptDetailsChildVO.getProjectId())&&
-                            e.getLocationType().equals(locationTypeListByProjectVO.getId()))
+                                    e.getProjectId().equals(projectDeptDetailsChildVO.getProjectId()) &&
+                                            e.getLocationType().equals(locationTypeListByProjectVO.getId()))
                             .map(TLocation::getId).collect(Collectors.toList());
                     if (locationIds.isEmpty()) {
                         locationTypeListByProjectVO.setLocationNum(0);
@@ -440,70 +441,72 @@
                                 && locationIds.contains(e.getLocationId())).collect(Collectors.toList());
                         Integer count = taskList.size();
                         temp.setLocationNum(count);
-                        int total = taskList.size();
-                        int num1 = 0;
-                        int num2 = 0;
-                        int num3 = 0;
-                        int num4 = 0;
-                        int num5 = 0;
-                        int num6 = 0;
-                        int num7 = 0;
-                        for (TTask tTask : taskList) {
-                            TTaskDetail tTaskDetail = taskDetails.stream().filter(e -> e.getTaskId().equals(tTask.getId()) && e.getClearStatus() != null).findFirst().orElse(null);
-                            if (tTaskDetail!=null){
-                                switch (tTaskDetail.getClearStatus()) {
-                                    case 1:
-                                        num1++;
-                                        break;
-                                    case 2:
-                                        num2++;
-                                        break;
-                                }
-                            }
-                            // 任务状态:1未执行、2超时、3待确认、4待整改、5整改完成、6已完成
-                            switch (tTask.getStatus()) {
-                                case 1:
-                                    if (tTaskDetail == null) {
-                                        num3++;
-                                    }
-                                    break;
-                                case 2:
-                                    num6++;
-                                    break;
-                                case 3:
-                                    break;
-                                case 4:
-                                    num4++;
-                                    break;
-                                case 5:
-                                    num7++;
-                                    break;
-                                case 6:
-                                    num5++;
-                                    break;
-                            }
-                        }
-                        projectDeptDetailsChildVO.setTotal(total);
-                        projectDeptDetailsChildVO.setNum1(num1);
-                        projectDeptDetailsChildVO.setNum2(num2);
-                        projectDeptDetailsChildVO.setNum3(num3);
-                        projectDeptDetailsChildVO.setNum4(num4);
-                        projectDeptDetailsChildVO.setNum5(num5);
-                        projectDeptDetailsChildVO.setNum6(num6);
-                        projectDeptDetailsChildVO.setNum7(num7);
+
                     }
                     locationTypeListByProjectVOS1.add(temp);
                 }
+                List<TTask> taskList = tasks.stream().filter(e -> e.getProjectId().equals(projectDeptDetailsChildVO.getProjectId())
+                ).collect(Collectors.toList());
+                int total = taskList.size();
+                int num1 = 0;
+                int num2 = 0;
+                int num3 = 0;
+                int num4 = 0;
+                int num5 = 0;
+                int num6 = 0;
+                int num7 = 0;
+                for (TTask tTask : taskList) {
+                    TTaskDetail tTaskDetail = taskDetails.stream().filter(e -> e.getTaskId().equals(tTask.getId()) && e.getClearStatus() != null).findFirst().orElse(null);
+                    if (tTaskDetail != null && (tTask.getStatus() == 5 || tTask.getStatus() == 6)) {
+                        switch (tTaskDetail.getClearStatus()) {
+                            case 1:
+                                num1++;
+                                break;
+                            case 2:
+                                num2++;
+                                break;
+                        }
+                    }
+                    // 任务状态:1未执行、2超时、3待确认、4待整改、5整改完成、6已完成
+                    switch (tTask.getStatus()) {
+                        case 1:
+                            if (tTaskDetail == null) {
+                                num3++;
+                            }
+                            break;
+                        case 2:
+                            num6++;
+                            break;
+                        case 3:
+                            break;
+                        case 4:
+                            num4++;
+                            break;
+                        case 5:
+                            num7++;
+                            break;
+                        case 6:
+                            num5++;
+                            break;
+                    }
+                }
+                projectDeptDetailsChildVO.setTotal(total);
+                projectDeptDetailsChildVO.setNum1(num1);
+                projectDeptDetailsChildVO.setNum2(num2);
+                projectDeptDetailsChildVO.setNum3(num3);
+                projectDeptDetailsChildVO.setNum4(num4);
+                projectDeptDetailsChildVO.setNum5(num5);
+                projectDeptDetailsChildVO.setNum6(num6);
+                projectDeptDetailsChildVO.setNum7(num7);
                 projectDeptDetailsChildVO.setLocationTypeList(locationTypeListByProjectVOS1);
-
             }
-
         }
         return R.ok(res);
     }
+
     @ApiOperation(value = "任务报表导出")
     @PostMapping(value = "/taskDetailsExport")
-    public void taskDetailsExport(@RequestBody TaskDetailsQuery query,HttpServletResponse response) throws IOException {
+    public void taskDetailsExport(@RequestBody TaskDetailsQuery query, HttpServletResponse response) throws IOException {
         List<TLocationType> locationTypeList = locationTypeService.list();
         List<TLocation> locations = locationService.list();
         LambdaQueryWrapper<TTask> tTaskLambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -547,73 +550,82 @@
             locationTypeListByProjectVOS.add(locationTypeListByProjectVO);
         }
         for (ProjectDeptDetailsVO re : res) {
-            List<ProjectDeptDetailsChildVO> projectChild = re.getProjectChild();
-            for (ProjectDeptDetailsChildVO projectDeptDetailsChildVO : projectChild) {
+            for (ProjectDeptDetailsChildVO projectDeptDetailsChildVO : re.getProjectChild()) {
                 int cleanerCount = cleanerService.lambdaQuery().eq(TCleaner::getProjectId, projectDeptDetailsChildVO.getProjectId()).list().size();
                 projectDeptDetailsChildVO.setCleanerCount(cleanerCount);
+                List<LocationTypeListByProjectVO> locationTypeListByProjectVOS1 = new ArrayList<>();
                 for (LocationTypeListByProjectVO locationTypeListByProjectVO : locationTypeListByProjectVOS) {
-                    List<String> locationIds = locations.stream().filter(e -> e.getLocationType().equals(locationTypeListByProjectVO.getId())).map(TLocation::getId).collect(Collectors.toList());
+                    LocationTypeListByProjectVO temp = new LocationTypeListByProjectVO();
+                    BeanUtils.copyProperties(locationTypeListByProjectVO, temp);
+                    List<String> locationIds = locations.stream().filter(e ->
+                                    e.getProjectId().equals(projectDeptDetailsChildVO.getProjectId()) &&
+                                            e.getLocationType().equals(locationTypeListByProjectVO.getId()))
+                            .map(TLocation::getId).collect(Collectors.toList());
                     if (locationIds.isEmpty()) {
                         locationTypeListByProjectVO.setLocationNum(0);
                     } else {
                         List<TTask> taskList = tasks.stream().filter(e -> e.getProjectId().equals(projectDeptDetailsChildVO.getProjectId())
                                 && locationIds.contains(e.getLocationId())).collect(Collectors.toList());
                         Integer count = taskList.size();
-                        locationTypeListByProjectVO.setLocationNum(count);
-                        int total = taskList.size();
-                        int num1 = 0;
-                        int num2 = 0;
-                        int num3 = 0;
-                        int num4 = 0;
-                        int num5 = 0;
-                        int num6 = 0;
-                        int num7 = 0;
-                        for (TTask tTask : taskList) {
-                            TTaskDetail tTaskDetail = taskDetails.stream().filter(e -> e.getTaskId().equals(tTask.getId()) && e.getClearStatus() != null).findFirst().orElse(null);
-                            if (tTaskDetail!=null){
-                                switch (tTaskDetail.getClearStatus()) {
-                                    case 1:
-                                        num1++;
-                                        break;
-                                    case 2:
-                                        num2++;
-                                        break;
-                                }
-                            }
-                            // 任务状态:1未执行、2超时、3待确认、4待整改、5整改完成、6已完成
-                            switch (tTask.getStatus()) {
-                                case 1:
-                                    if (tTaskDetail == null) {
-                                        num3++;
-                                    }
-                                    break;
-                                case 2:
-                                    num6++;
-                                    break;
-                                case 3:
-                                    break;
-                                case 4:
-                                    num4++;
-                                    break;
-                                case 5:
-                                    num7++;
-                                    break;
-                                case 6:
-                                    num5++;
-                                    break;
-                            }
+                        temp.setLocationNum(count);
+
+                    }
+                    locationTypeListByProjectVOS1.add(temp);
+                }
+                List<TTask> taskList = tasks.stream().filter(e -> e.getProjectId().equals(projectDeptDetailsChildVO.getProjectId())
+                ).collect(Collectors.toList());
+                int total = taskList.size();
+                int num1 = 0;
+                int num2 = 0;
+                int num3 = 0;
+                int num4 = 0;
+                int num5 = 0;
+                int num6 = 0;
+                int num7 = 0;
+                for (TTask tTask : taskList) {
+                    TTaskDetail tTaskDetail = taskDetails.stream().filter(e -> e.getTaskId().equals(tTask.getId()) && e.getClearStatus() != null).findFirst().orElse(null);
+                    if (tTaskDetail != null && (tTask.getStatus() == 5 || tTask.getStatus() == 6)) {
+                        switch (tTaskDetail.getClearStatus()) {
+                            case 1:
+                                num1++;
+                                break;
+                            case 2:
+                                num2++;
+                                break;
                         }
-                        projectDeptDetailsChildVO.setTotal(total);
-                        projectDeptDetailsChildVO.setNum1(num1);
-                        projectDeptDetailsChildVO.setNum2(num2);
-                        projectDeptDetailsChildVO.setNum3(num3);
-                        projectDeptDetailsChildVO.setNum4(num4);
-                        projectDeptDetailsChildVO.setNum5(num5);
-                        projectDeptDetailsChildVO.setNum6(num6);
-                        projectDeptDetailsChildVO.setNum7(num7);
+                    }
+                    // 任务状态:1未执行、2超时、3待确认、4待整改、5整改完成、6已完成
+                    switch (tTask.getStatus()) {
+                        case 1:
+                            if (tTaskDetail == null) {
+                                num3++;
+                            }
+                            break;
+                        case 2:
+                            num6++;
+                            break;
+                        case 3:
+                            break;
+                        case 4:
+                            num4++;
+                            break;
+                        case 5:
+                            num7++;
+                            break;
+                        case 6:
+                            num5++;
+                            break;
                     }
                 }
-                projectDeptDetailsChildVO.setLocationTypeList(locationTypeListByProjectVOS);
+                projectDeptDetailsChildVO.setTotal(total);
+                projectDeptDetailsChildVO.setNum1(num1);
+                projectDeptDetailsChildVO.setNum2(num2);
+                projectDeptDetailsChildVO.setNum3(num3);
+                projectDeptDetailsChildVO.setNum4(num4);
+                projectDeptDetailsChildVO.setNum5(num5);
+                projectDeptDetailsChildVO.setNum6(num6);
+                projectDeptDetailsChildVO.setNum7(num7);
+                projectDeptDetailsChildVO.setLocationTypeList(locationTypeListByProjectVOS1);
             }
         }
 
@@ -630,8 +642,8 @@
         ExcelExportEntity excelExportEntity = new ExcelExportEntity("项目", "projectName", 15);
         excelExportEntity.setMergeVertical(true);
         entityList.add(excelExportEntity);
-        entityList.add(new ExcelExportEntity("片区名称", "areaName",15));
-        entityList.add(new ExcelExportEntity("巡检保洁员数", "inspectorCount",15));
+        entityList.add(new ExcelExportEntity("片区名称", "areaName", 15));
+        entityList.add(new ExcelExportEntity("巡检保洁员数", "inspectorCount", 15));
 
         // 动态添加作业类型分类
         List<String> list = new ArrayList<>(allTypeNames);
@@ -709,52 +721,89 @@
     public R<List<PatrolInspectorVO>> patrolInspectorList(@RequestBody PatrolInspectorQuery query) {
         List<SysUser> sysUsers = sysUserService.selectAllList();
         LambdaQueryWrapper<TLeave> tLeaveLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        if (StringUtils.hasLength(query.getStartTime())){
-            tLeaveLambdaQueryWrapper.ge(TLeave::getCreateTime, query.getStartTime()+" :00:00:00");
-            tLeaveLambdaQueryWrapper.le(TLeave::getCreateTime, query.getEndTime()+" :23:59:59");
+        if (StringUtils.hasLength(query.getStartTime())) {
+            tLeaveLambdaQueryWrapper.ge(TLeave::getCreateTime, query.getStartTime() + " :00:00:00");
+            tLeaveLambdaQueryWrapper.le(TLeave::getCreateTime, query.getEndTime() + " :23:59:59");
         }
-        tLeaveLambdaQueryWrapper.eq(TLeave::getAuditStatus,2);
+        tLeaveLambdaQueryWrapper.eq(TLeave::getAuditStatus, 2);
         List<TLeave> leaves = leaveService.list(tLeaveLambdaQueryWrapper);
-        if (StringUtils.hasLength(query.getDeptName())){
+        if (StringUtils.hasLength(query.getDeptName())) {
             List<String> projectIds = projectDeptService.lambdaQuery().like(TProjectDept::getProjectName, query.getDeptName()).list()
                     .stream().map(TProjectDept::getId).collect(Collectors.toList());
             List<String> deptIds = deptService.lambdaQuery().like(TDept::getDeptName, query.getDeptName()).list()
                     .stream().map(TDept::getId).collect(Collectors.toList());
             projectIds.addAll(deptIds);
-            if (projectIds.isEmpty()){
+            if (projectIds.isEmpty()) {
                 return R.ok(new ArrayList<>());
             }
-            if (StringUtils.hasLength(query.getPhonenumber())){
+            query.setDeptIds(projectIds);
+            if (StringUtils.hasLength(query.getPhonenumber())) {
                 List<Long> patrolInspectorIds = sysUsers.stream().filter(sysUser ->
-                        sysUser.getPhonenumber().equals(query.getPhonenumber())
+                        sysUser.getPhonenumber().contains(query.getPhonenumber())
                                 && projectIds.contains(sysUser.getDeptId())
                 ).map(SysUser::getUserId).collect(Collectors.toList());
-                if (patrolInspectorIds.isEmpty()){
+                if (patrolInspectorIds.isEmpty()) {
+                    return R.ok(new ArrayList<>());
+                }
+                query.setPatrolInspectorIds(patrolInspectorIds);
+            }
+            if (StringUtils.hasLength(query.getNickName())) {
+                List<Long> patrolInspectorIds = sysUsers.stream().filter(sysUser ->
+                        sysUser.getNickName().contains(query.getNickName())
+                                && projectIds.contains(sysUser.getDeptId())
+                ).map(SysUser::getUserId).collect(Collectors.toList());
+                if (patrolInspectorIds.isEmpty()) {
                     return R.ok(new ArrayList<>());
                 }
                 query.setPatrolInspectorIds(patrolInspectorIds);
             }
         }
-        if (StringUtils.hasLength(query.getPhonenumber())){
+        if (StringUtils.hasLength(query.getPhonenumber())) {
             List<Long> patrolInspectorIds = sysUsers.stream().filter(sysUser ->
-                    sysUser.getPhonenumber().equals(query.getPhonenumber())
+                    sysUser.getPhonenumber().contains(query.getPhonenumber())
             ).map(SysUser::getUserId).collect(Collectors.toList());
-            if (!query.getPatrolInspectorIds().isEmpty()){
+            if (query.getPatrolInspectorIds() != null && !query.getPatrolInspectorIds().isEmpty()) {
                 // 取交集
                 patrolInspectorIds = patrolInspectorIds.stream().filter(query.getPatrolInspectorIds()::contains).collect(Collectors.toList());
             }
             query.setPatrolInspectorIds(patrolInspectorIds);
-            if (patrolInspectorIds.isEmpty()){
+            if (patrolInspectorIds.isEmpty()) {
+                return R.ok(new ArrayList<>());
+            }
+        }
+        if (StringUtils.hasLength(query.getNickName())) {
+            List<Long> patrolInspectorIds = sysUsers.stream().filter(sysUser ->
+                    sysUser.getNickName().contains(query.getNickName())
+            ).map(SysUser::getUserId).collect(Collectors.toList());
+            if (query.getPatrolInspectorIds() != null && !query.getPatrolInspectorIds().isEmpty()) {
+                // 取交集
+                patrolInspectorIds = patrolInspectorIds.stream().filter(query.getPatrolInspectorIds()::contains).collect(Collectors.toList());
+            }
+            query.setPatrolInspectorIds(patrolInspectorIds);
+            if (patrolInspectorIds.isEmpty()) {
+                return R.ok(new ArrayList<>());
+            }
+        }
+        if (query.getDeptIds() != null && !query.getDeptIds().isEmpty()) {
+            List<Long> patrolInspectorIds = sysUsers.stream().filter(sysUser ->
+                    query.getDeptIds().contains(sysUser.getDeptId())
+            ).map(SysUser::getUserId).collect(Collectors.toList());
+            if (query.getPatrolInspectorIds() != null && !query.getPatrolInspectorIds().isEmpty()) {
+                // 取交集
+                patrolInspectorIds = patrolInspectorIds.stream().filter(query.getPatrolInspectorIds()::contains).collect(Collectors.toList());
+            }
+            query.setPatrolInspectorIds(patrolInspectorIds);
+            if (patrolInspectorIds.isEmpty()) {
                 return R.ok(new ArrayList<>());
             }
         }
         List<PatrolInspectorVO> res = new ArrayList<>();
         LambdaQueryWrapper<TTask> tTaskLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        if (StringUtils.hasLength(query.getStartTime())){
-            tTaskLambdaQueryWrapper.ge(TTask::getCreateTime, query.getStartTime()+" :00:00:00");
-            tTaskLambdaQueryWrapper.le(TTask::getCreateTime, query.getEndTime()+" :23:59:59");
+        if (StringUtils.hasLength(query.getStartTime())) {
+            tTaskLambdaQueryWrapper.ge(TTask::getImplementTime, query.getStartTime() + " :00:00:00");
+            tTaskLambdaQueryWrapper.le(TTask::getImplementTime, query.getEndTime() + " :23:59:59");
         }
-        if(query.getPatrolInspectorIds()!=null){
+        if (query.getPatrolInspectorIds() != null && !query.getPatrolInspectorIds().isEmpty()) {
             tTaskLambdaQueryWrapper.in(TTask::getPatrolInspector, query.getPatrolInspectorIds());
             sysUsers = sysUsers.stream().filter(sysUser -> query.getPatrolInspectorIds().contains(sysUser.getUserId())).collect(Collectors.toList());
         }
@@ -766,38 +815,48 @@
 
             patrolInspectorVO.setNickName(sysUser.getNickName());
             patrolInspectorVO.setPhonenumber(sysUser.getPhonenumber());
-            if (sysUser.getDeptType() == 1){
+            if (sysUser.getDeptType() == 1) {
                 TProjectDept tProjectDept = projectDeptService.getById(sysUser.getDeptId());
-                if (tProjectDept!=null&&!tProjectDept.getParentId().equals("0")){
+                if (tProjectDept != null && !tProjectDept.getParentId().equals("0")) {
                     TProjectDept tProjectDept1 = projectDeptService.getById(tProjectDept.getParentId());
-                    if (tProjectDept1!=null)
-                    patrolInspectorVO.setDeptName(tProjectDept1.getProjectName()+">"+tProjectDept.getProjectName());
-                }else{
+                    if (tProjectDept1 != null)
+                        patrolInspectorVO.setDeptName(tProjectDept1.getProjectName() + ">" + tProjectDept.getProjectName());
+                } else {
                     patrolInspectorVO.setDeptName(tProjectDept.getProjectName());
                 }
-            }else{
+            } else {
                 TDept tDept = deptService.getById(sysUser.getDeptId());
-                if (tDept!=null)
-                patrolInspectorVO.setDeptName(tDept.getDeptName());
+                if (tDept != null)
+                    patrolInspectorVO.setDeptName(tDept.getDeptName());
             }
             // 查询巡检员任务ids
-            List<String> taskIds = tasks.stream().filter(e->e.getPatrolInspector().equals(sysUser.getUserId()+"")).map(TTask::getId).collect(Collectors.toList());
-            if (taskIds.isEmpty()){
+            List<String> taskIds = tasks.stream().filter(e -> e.getPatrolInspector().equals(sysUser.getUserId() + "")).map(TTask::getId).collect(Collectors.toList());
+            if (taskIds.isEmpty()) {
                 taskIds.add("-1");
             }
             // 完成的任务
-            List<String> taskIdsFinish = tasks.stream().filter(e->
-                    (e.getStatus()==5 || e.getStatus()==6)
-                    &&
-                    e.getPatrolInspector().equals(sysUser.getUserId()+"")).map(TTask::getId).collect(Collectors.toList());
+            List<String> taskIdsFinish = tasks.stream().filter(e ->
+                    (e.getStatus() == 5 || e.getStatus() == 6)
+                            &&
+                            e.getPatrolInspector().equals(sysUser.getUserId() + "")).map(TTask::getId).collect(Collectors.toList());
 
-            if (taskIdsFinish.isEmpty()){
+            if (taskIdsFinish.isEmpty()) {
                 taskIdsFinish.add("-1");
             }
             List<TTaskDetail> list = taskDetailService.lambdaQuery()
                     .eq(TTaskDetail::getAuditStatus, 1)
+                    .eq(TTaskDetail::getHandleType, 1)
                     .isNotNull(TTaskDetail::getClearStatus).orderByDesc(BaseModel::getCreateTime)
-                    .in(!taskIds.isEmpty(), TTaskDetail::getTaskId,taskIdsFinish).groupBy(TTaskDetail::getTaskId).list();
+                    .in(!taskIds.isEmpty(), TTaskDetail::getTaskId, taskIdsFinish).list();
+            list = new ArrayList<>(list.stream()
+                    .collect(Collectors.groupingBy(
+                            TTaskDetail::getTaskId,
+                            Collectors.collectingAndThen(
+                                    Collectors.toList(),
+                                    listAll -> listAll.get(0)
+                            )
+                    ))
+                    .values());
             // 查询clearStatus为1的数量
             List<TTaskDetail> clearStatus1 = list.stream().filter(e -> e.getClearStatus().equals(1)).collect(Collectors.toList());
             List<TTaskDetail> clearStatus2 = list.stream().filter(e -> e.getClearStatus().equals(2)).collect(Collectors.toList());
@@ -806,9 +865,9 @@
             patrolInspectorVO.setNum1(clearStatus1.size());
             patrolInspectorVO.setNum2(clearStatus2.size());
             patrolInspectorVO.setNum3(!clearStatus1.isEmpty() ?
-                    (new BigDecimal(clearStatus1.size()).add(new BigDecimal(clearStatus2.size())))
-                            .divide(new BigDecimal(clearStatus1.size()), 2, RoundingMode.HALF_DOWN)
-                            .multiply(new BigDecimal(100)):BigDecimal.ZERO);
+                    (new BigDecimal(clearStatus1.size()))
+                            .divide(new BigDecimal(clearStatus1.size() + clearStatus2.size()), 2, RoundingMode.HALF_DOWN)
+                            .multiply(new BigDecimal(100)) : BigDecimal.ZERO);
             // 未执行
             List<TTask> status1 = taskList.stream().filter(e -> e.getStatus() == 1).collect(Collectors.toList());
             List<TTask> status2 = taskList.stream().filter(e -> e.getStatus() == 3).collect(Collectors.toList());
@@ -821,113 +880,160 @@
             patrolInspectorVO.setNum6(status3.size());
             patrolInspectorVO.setNum7(status4.size());
             patrolInspectorVO.setNum8(status5.size());
-            patrolInspectorVO.setNum9(!status5.isEmpty()||!status4.isEmpty()?new BigDecimal(status5.size())
-                    .divide(new BigDecimal(status4.size()).add(new BigDecimal(status5.size())),2,RoundingMode.HALF_DOWN)
-                    .multiply(new BigDecimal(100)):BigDecimal.ZERO);
+            patrolInspectorVO.setNum9(!status5.isEmpty() || !status4.isEmpty() ? new BigDecimal(status5.size())
+                    .divide(new BigDecimal(status4.size()).add(new BigDecimal(status5.size())), 2, RoundingMode.HALF_DOWN)
+                    .multiply(new BigDecimal(100)) : BigDecimal.ZERO);
             patrolInspectorVO.setNum10(status6.size());
-            patrolInspectorVO.setNum11(!taskList.isEmpty()?new BigDecimal(status6.size()).divide(new BigDecimal(taskList.size()),2,RoundingMode.HALF_DOWN):BigDecimal.ZERO);
-            List<TLeave> collect1 = leaves.stream().filter(e -> e.getLeavePerson().equals(sysUser.getUserId()+"")).collect(Collectors.toList());
+            patrolInspectorVO.setNum11(!taskList.isEmpty() ? new BigDecimal(status6.size()).divide(new BigDecimal(taskList.size()), 2, RoundingMode.HALF_DOWN) : BigDecimal.ZERO);
+            List<TLeave> collect1 = leaves.stream().filter(e -> e.getLeavePerson().equals(sysUser.getUserId() + "")).collect(Collectors.toList());
             patrolInspectorVO.setNum12(collect1.size());
             res.add(patrolInspectorVO);
         }
         return R.ok(res);
     }
+
     @ApiOperation(value = "巡检人员报表导出")
     @PostMapping(value = "/patrolInspectorListExport")
-    @Log(title = "巡检人员报表导出", businessType = BusinessType.EXPORT)
+    @Log(title = "巡检人员报表导出", businessType = BusinessType.OTHER)
     public void patrolInspectorListExport(@RequestBody PatrolInspectorQuery query) {
         List<SysUser> sysUsers = sysUserService.selectAllList();
         LambdaQueryWrapper<TLeave> tLeaveLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        if (StringUtils.hasLength(query.getStartTime())){
-            tLeaveLambdaQueryWrapper.ge(TLeave::getCreateTime, query.getStartTime());
-            tLeaveLambdaQueryWrapper.le(TLeave::getCreateTime, query.getEndTime());
+        if (StringUtils.hasLength(query.getStartTime())) {
+            tLeaveLambdaQueryWrapper.ge(TLeave::getCreateTime, query.getStartTime() + " :00:00:00");
+            tLeaveLambdaQueryWrapper.le(TLeave::getCreateTime, query.getEndTime() + " :23:59:59");
         }
-        tLeaveLambdaQueryWrapper.eq(TLeave::getAuditStatus,2);
+        tLeaveLambdaQueryWrapper.eq(TLeave::getAuditStatus, 2);
         List<TLeave> leaves = leaveService.list(tLeaveLambdaQueryWrapper);
-        if (StringUtils.hasLength(query.getDeptName())){
+        if (StringUtils.hasLength(query.getDeptName())) {
             List<String> projectIds = projectDeptService.lambdaQuery().like(TProjectDept::getProjectName, query.getDeptName()).list()
                     .stream().map(TProjectDept::getId).collect(Collectors.toList());
             List<String> deptIds = deptService.lambdaQuery().like(TDept::getDeptName, query.getDeptName()).list()
                     .stream().map(TDept::getId).collect(Collectors.toList());
             projectIds.addAll(deptIds);
-            if (projectIds.isEmpty()){
-                projectIds.add("0");
+            if (projectIds.isEmpty()) {
+                projectIds.add("-1");
             }
-            if (StringUtils.hasLength(query.getPhonenumber())){
+            query.setDeptIds(projectIds);
+            if (StringUtils.hasLength(query.getPhonenumber())) {
                 List<Long> patrolInspectorIds = sysUsers.stream().filter(sysUser ->
                         sysUser.getPhonenumber().equals(query.getPhonenumber())
                                 && projectIds.contains(sysUser.getDeptId())
                 ).map(SysUser::getUserId).collect(Collectors.toList());
-                if (patrolInspectorIds.isEmpty()){
+                if (patrolInspectorIds.isEmpty()) {
+                    patrolInspectorIds.add(0L);
+                }
+                query.setPatrolInspectorIds(patrolInspectorIds);
+            }
+            if (StringUtils.hasLength(query.getNickName())) {
+                List<Long> patrolInspectorIds = sysUsers.stream().filter(sysUser ->
+                        sysUser.getNickName().contains(query.getNickName())
+                                && projectIds.contains(sysUser.getDeptId())
+                ).map(SysUser::getUserId).collect(Collectors.toList());
+                if (patrolInspectorIds.isEmpty()) {
                     patrolInspectorIds.add(0L);
                 }
                 query.setPatrolInspectorIds(patrolInspectorIds);
             }
         }
-        if (StringUtils.hasLength(query.getPhonenumber())){
+        if (StringUtils.hasLength(query.getPhonenumber())) {
             List<Long> patrolInspectorIds = sysUsers.stream().filter(sysUser ->
                     sysUser.getPhonenumber().equals(query.getPhonenumber())
             ).map(SysUser::getUserId).collect(Collectors.toList());
-            if (!query.getPatrolInspectorIds().isEmpty()){
+            if (query.getPatrolInspectorIds() != null && !query.getPatrolInspectorIds().isEmpty()) {
                 // 取交集
                 patrolInspectorIds = patrolInspectorIds.stream().filter(query.getPatrolInspectorIds()::contains).collect(Collectors.toList());
             }
             query.setPatrolInspectorIds(patrolInspectorIds);
-            if (patrolInspectorIds.isEmpty()){
+            if (patrolInspectorIds.isEmpty()) {
+                patrolInspectorIds.add(0L);
+            }
+        }
+        if (StringUtils.hasLength(query.getNickName())) {
+            List<Long> patrolInspectorIds = sysUsers.stream().filter(sysUser ->
+                    sysUser.getNickName().contains(query.getNickName())
+            ).map(SysUser::getUserId).collect(Collectors.toList());
+            if (query.getPatrolInspectorIds() != null && !query.getPatrolInspectorIds().isEmpty()) {
+                // 取交集
+                patrolInspectorIds = patrolInspectorIds.stream().filter(query.getPatrolInspectorIds()::contains).collect(Collectors.toList());
+            }
+            query.setPatrolInspectorIds(patrolInspectorIds);
+            if (patrolInspectorIds.isEmpty()) {
+                patrolInspectorIds.add(0L);
+            }
+        }
+        if (query.getDeptIds() != null && !query.getDeptIds().isEmpty()) {
+            List<Long> patrolInspectorIds = sysUsers.stream().filter(sysUser ->
+                    query.getDeptIds().contains(sysUser.getDeptId())
+            ).map(SysUser::getUserId).collect(Collectors.toList());
+            if (query.getPatrolInspectorIds() != null && !query.getPatrolInspectorIds().isEmpty()) {
+                // 取交集
+                patrolInspectorIds = patrolInspectorIds.stream().filter(query.getPatrolInspectorIds()::contains).collect(Collectors.toList());
+            }
+            query.setPatrolInspectorIds(patrolInspectorIds);
+            if (patrolInspectorIds.isEmpty()) {
                 patrolInspectorIds.add(0L);
             }
         }
         List<PatrolInspectorVO> res = new ArrayList<>();
         LambdaQueryWrapper<TTask> tTaskLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        if (StringUtils.hasLength(query.getStartTime())){
-            tTaskLambdaQueryWrapper.ge(TTask::getCreateTime, query.getStartTime());
-            tTaskLambdaQueryWrapper.le(TTask::getCreateTime, query.getEndTime());
+        if (StringUtils.hasLength(query.getStartTime())) {
+            tTaskLambdaQueryWrapper.ge(TTask::getImplementTime, query.getStartTime() + " :00:00:00");
+            tTaskLambdaQueryWrapper.le(TTask::getImplementTime, query.getEndTime() + " :23:59:59");
         }
-        if(query.getPatrolInspectorIds()!=null){
+        if (query.getPatrolInspectorIds() != null && !query.getPatrolInspectorIds().isEmpty()) {
             tTaskLambdaQueryWrapper.in(TTask::getPatrolInspector, query.getPatrolInspectorIds());
             sysUsers = sysUsers.stream().filter(sysUser -> query.getPatrolInspectorIds().contains(sysUser.getUserId())).collect(Collectors.toList());
         }
         List<TTask> tasks = taskCleanerService.list(tTaskLambdaQueryWrapper);
         sysUsers = sysUsers.stream().filter(e -> e.getUserId() != 1).collect(Collectors.toList());
-
         for (SysUser sysUser : sysUsers) {
 
             PatrolInspectorVO patrolInspectorVO = new PatrolInspectorVO();
 
             patrolInspectorVO.setNickName(sysUser.getNickName());
             patrolInspectorVO.setPhonenumber(sysUser.getPhonenumber());
-            if (sysUser.getDeptType() == 1){
+            if (sysUser.getDeptType() == 1) {
                 TProjectDept tProjectDept = projectDeptService.getById(sysUser.getDeptId());
-                if (tProjectDept!=null&&!tProjectDept.getParentId().equals("0")){
+                if (tProjectDept != null && !tProjectDept.getParentId().equals("0")) {
                     TProjectDept tProjectDept1 = projectDeptService.getById(tProjectDept.getParentId());
-                    if (tProjectDept1!=null)
-                    patrolInspectorVO.setDeptName(tProjectDept1.getProjectName()+">"+tProjectDept.getProjectName());
-                }else{
+                    if (tProjectDept1 != null)
+                        patrolInspectorVO.setDeptName(tProjectDept1.getProjectName() + ">" + tProjectDept.getProjectName());
+                } else {
                     patrolInspectorVO.setDeptName(tProjectDept.getProjectName());
                 }
-            }else{
+            } else {
                 TDept tDept = deptService.getById(sysUser.getDeptId());
-                if (tDept!=null)
-                patrolInspectorVO.setDeptName(tDept.getDeptName());
+                if (tDept != null)
+                    patrolInspectorVO.setDeptName(tDept.getDeptName());
             }
             // 查询巡检员任务ids
-            List<String> taskIds = tasks.stream().filter(e->e.getPatrolInspector().equals(sysUser.getUserId()+"")).map(TTask::getId).collect(Collectors.toList());
-            if (taskIds.isEmpty()){
+            List<String> taskIds = tasks.stream().filter(e -> e.getPatrolInspector().equals(sysUser.getUserId() + "")).map(TTask::getId).collect(Collectors.toList());
+            if (taskIds.isEmpty()) {
                 taskIds.add("-1");
             }
             // 完成的任务
-            List<String> taskIdsFinish = tasks.stream().filter(e->
-                    (e.getStatus()==5 || e.getStatus()==6)
+            List<String> taskIdsFinish = tasks.stream().filter(e ->
+                    (e.getStatus() == 5 || e.getStatus() == 6)
                             &&
-                            e.getPatrolInspector().equals(sysUser.getUserId()+"")).map(TTask::getId).collect(Collectors.toList());
+                            e.getPatrolInspector().equals(sysUser.getUserId() + "")).map(TTask::getId).collect(Collectors.toList());
 
-            if (taskIdsFinish.isEmpty()){
+            if (taskIdsFinish.isEmpty()) {
                 taskIdsFinish.add("-1");
             }
             List<TTaskDetail> list = taskDetailService.lambdaQuery()
                     .eq(TTaskDetail::getAuditStatus, 1)
+                    .eq(TTaskDetail::getHandleType, 1)
                     .isNotNull(TTaskDetail::getClearStatus).orderByDesc(BaseModel::getCreateTime)
-                    .in(!taskIds.isEmpty(), TTaskDetail::getTaskId,taskIdsFinish).groupBy(TTaskDetail::getTaskId).list();
+                    .in(!taskIds.isEmpty(), TTaskDetail::getTaskId, taskIdsFinish).list();
+            list = new ArrayList<>(list.stream()
+                    .collect(Collectors.groupingBy(
+                            TTaskDetail::getTaskId,
+                            Collectors.collectingAndThen(
+                                    Collectors.toList(),
+                                    listAll -> listAll.get(0)
+                            )
+                    ))
+                    .values());
             // 查询clearStatus为1的数量
             List<TTaskDetail> clearStatus1 = list.stream().filter(e -> e.getClearStatus().equals(1)).collect(Collectors.toList());
             List<TTaskDetail> clearStatus2 = list.stream().filter(e -> e.getClearStatus().equals(2)).collect(Collectors.toList());
@@ -936,9 +1042,9 @@
             patrolInspectorVO.setNum1(clearStatus1.size());
             patrolInspectorVO.setNum2(clearStatus2.size());
             patrolInspectorVO.setNum3(!clearStatus1.isEmpty() ?
-                    (new BigDecimal(clearStatus1.size()).add(new BigDecimal(clearStatus2.size())))
-                            .divide(new BigDecimal(clearStatus1.size()), 2, RoundingMode.HALF_DOWN)
-                            .multiply(new BigDecimal(100)):BigDecimal.ZERO);
+                    (new BigDecimal(clearStatus1.size()))
+                            .divide(new BigDecimal(clearStatus1.size() + clearStatus2.size()), 2, RoundingMode.HALF_DOWN)
+                            .multiply(new BigDecimal(100)) : BigDecimal.ZERO);
             // 未执行
             List<TTask> status1 = taskList.stream().filter(e -> e.getStatus() == 1).collect(Collectors.toList());
             List<TTask> status2 = taskList.stream().filter(e -> e.getStatus() == 3).collect(Collectors.toList());
@@ -951,12 +1057,12 @@
             patrolInspectorVO.setNum6(status3.size());
             patrolInspectorVO.setNum7(status4.size());
             patrolInspectorVO.setNum8(status5.size());
-            patrolInspectorVO.setNum9(!status5.isEmpty()||!status4.isEmpty()?new BigDecimal(status5.size())
-                    .divide(new BigDecimal(status4.size()).add(new BigDecimal(status5.size())),2,RoundingMode.HALF_DOWN)
-                    .multiply(new BigDecimal(100)):BigDecimal.ZERO);
+            patrolInspectorVO.setNum9(!status5.isEmpty() || !status4.isEmpty() ? new BigDecimal(status5.size())
+                    .divide(new BigDecimal(status4.size()).add(new BigDecimal(status5.size())), 2, RoundingMode.HALF_DOWN)
+                    .multiply(new BigDecimal(100)) : BigDecimal.ZERO);
             patrolInspectorVO.setNum10(status6.size());
-            patrolInspectorVO.setNum11(!taskList.isEmpty()?new BigDecimal(status6.size()).divide(new BigDecimal(taskList.size()),2,RoundingMode.HALF_DOWN):BigDecimal.ZERO);
-            List<TLeave> collect1 = leaves.stream().filter(e -> e.getLeavePerson().equals(sysUser.getUserId()+"")).collect(Collectors.toList());
+            patrolInspectorVO.setNum11(!taskList.isEmpty() ? new BigDecimal(status6.size()).divide(new BigDecimal(taskList.size()), 2, RoundingMode.HALF_DOWN) : BigDecimal.ZERO);
+            List<TLeave> collect1 = leaves.stream().filter(e -> e.getLeavePerson().equals(sysUser.getUserId() + "")).collect(Collectors.toList());
             patrolInspectorVO.setNum12(collect1.size());
             res.add(patrolInspectorVO);
         }
@@ -986,47 +1092,54 @@
     @PostMapping(value = "/inspectorList")
     public R<List<InspectorVO>> inspectorList(@RequestBody InspectorQuery query) {
         List<SysUser> sysUsers = sysUserService.selectAllList();
-        if (StringUtils.hasLength(query.getDeptName())){
+        List<TTask> listAll = taskCleanerService.list();
+        List<String> listAllTaskIds = listAll.stream().map(TTask::getId).collect(Collectors.toList());
+        if (StringUtils.hasLength(query.getDeptName())) {
             List<String> projectIds = projectDeptService.lambdaQuery().like(TProjectDept::getProjectName, query.getDeptName()).list()
                     .stream().map(TProjectDept::getId).collect(Collectors.toList());
             List<String> deptIds = deptService.lambdaQuery().like(TDept::getDeptName, query.getDeptName()).list()
                     .stream().map(TDept::getId).collect(Collectors.toList());
             projectIds.addAll(deptIds);
-            if (projectIds.isEmpty()){
+            if (projectIds.isEmpty()) {
                 return R.ok(new ArrayList<>());
             }
-            if (StringUtils.hasLength(query.getPhonenumber())){
+            if (StringUtils.hasLength(query.getPhonenumber())) {
                 List<Long> patrolInspectorIds = sysUsers.stream().filter(sysUser ->
                         sysUser.getPhonenumber().equals(query.getPhonenumber())
                                 && projectIds.contains(sysUser.getDeptId())
                 ).map(SysUser::getUserId).collect(Collectors.toList());
-                if (patrolInspectorIds.isEmpty()){
+                if (patrolInspectorIds.isEmpty()) {
                     return R.ok(new ArrayList<>());
                 }
                 query.setPatrolInspectorIds(patrolInspectorIds);
             }
         }
-        if (StringUtils.hasLength(query.getPhonenumber())){
+        if (StringUtils.hasLength(query.getPhonenumber())) {
             List<Long> patrolInspectorIds = sysUsers.stream().filter(sysUser ->
                     sysUser.getPhonenumber().equals(query.getPhonenumber())
             ).map(SysUser::getUserId).collect(Collectors.toList());
-            if (!query.getPatrolInspectorIds().isEmpty()){
+            if (!query.getPatrolInspectorIds().isEmpty()) {
                 // 取交集
                 patrolInspectorIds = patrolInspectorIds.stream().filter(query.getPatrolInspectorIds()::contains).collect(Collectors.toList());
             }
             query.setPatrolInspectorIds(patrolInspectorIds);
-            if (patrolInspectorIds.isEmpty()){
+            if (patrolInspectorIds.isEmpty()) {
                 return R.ok(new ArrayList<>());
             }
         }
         LambdaQueryWrapper<TInspector> tTaskLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        tTaskLambdaQueryWrapper.eq(TInspector::getAuditStatus,1);
+        tTaskLambdaQueryWrapper.eq(TInspector::getAuditStatus, 1);
         tTaskLambdaQueryWrapper.isNotNull(TInspector::getClearStatus);
-        if (StringUtils.hasLength(query.getStartTime())){
+        if (StringUtils.hasLength(query.getStartTime())) {
             tTaskLambdaQueryWrapper.ge(TInspector::getCreateTime, query.getStartTime());
             tTaskLambdaQueryWrapper.le(TInspector::getCreateTime, query.getEndTime());
         }
-        if(query.getPatrolInspectorIds()!=null){
+        if (query.getPatrolInspectorIds() != null) {
+            if (query.getPatrolInspectorIds().isEmpty()) {
+                List<Long> patrolInspectorIds = query.getPatrolInspectorIds();
+                patrolInspectorIds.add(0L);
+                query.setPatrolInspectorIds(patrolInspectorIds);
+            }
             tTaskLambdaQueryWrapper.in(TInspector::getCommitPerson, query.getPatrolInspectorIds());
             sysUsers = sysUsers.stream().filter(sysUser -> query.getPatrolInspectorIds().contains(sysUser.getUserId())).collect(Collectors.toList());
         }
@@ -1037,123 +1150,135 @@
             InspectorVO inspectorVO = new InspectorVO();
             inspectorVO.setNickName(sysUser.getNickName());
             inspectorVO.setPhonenumber(sysUser.getPhonenumber());
-            if (sysUser.getDeptType() == 1){
+            if (sysUser.getDeptType() == 1) {
                 TProjectDept tProjectDept = projectDeptService.getById(sysUser.getDeptId());
-                if (tProjectDept!=null&&!tProjectDept.getParentId().equals("0")){
+                if (tProjectDept != null && !tProjectDept.getParentId().equals("0")) {
                     TProjectDept tProjectDept1 = projectDeptService.getById(tProjectDept.getParentId());
-                    if (tProjectDept1!=null)
-                        inspectorVO.setDeptName(tProjectDept1.getProjectName()+">"+tProjectDept.getProjectName());
-                }else{
+                    if (tProjectDept1 != null)
+                        inspectorVO.setDeptName(tProjectDept1.getProjectName() + ">" + tProjectDept.getProjectName());
+                } else {
                     inspectorVO.setDeptName(tProjectDept.getProjectName());
                 }
-            }else{
+            } else {
                 TDept tDept = deptService.getById(sysUser.getDeptId());
-                if (tDept!=null)
+                if (tDept != null)
                     inspectorVO.setDeptName(tDept.getDeptName());
             }
-            inspectorVO.setTotal(inspectors.size());
-            List<TInspector> status1 = inspectors.stream().filter(e -> e.getClearStatus() == 1).collect(Collectors.toList());
-            List<TInspector> status2 = inspectors.stream().filter(e -> e.getClearStatus() == 2).collect(Collectors.toList());
-            List<TInspector> status4 = inspectors.stream().filter(e -> e.getStatus() == 1).collect(Collectors.toList());
-            List<TInspector> status5 = inspectors.stream().filter(e -> e.getStatus() == 2).collect(Collectors.toList());
-            List<TInspector> status6 = inspectors.stream().filter(e -> e.getStatus() == 3).collect(Collectors.toList());
+            List<String> collect1 = listAll.stream().filter(e -> e.getPatrolInspector().equals(sysUser.getUserId() + "")).map(TTask::getId).collect(Collectors.toList());
+            List<TInspector> collect = inspectors.stream().filter(e -> collect1.contains(e.getTaskId())).collect(Collectors.toList());
+            inspectorVO.setTotal(collect.size());
+            List<TInspector> status1 = collect.stream().filter(e -> e.getClearStatus() == 1).collect(Collectors.toList());
+            List<TInspector> status2 = collect.stream().filter(e -> e.getClearStatus() == 2).collect(Collectors.toList());
+            List<TInspector> status4 = collect.stream().filter(e -> e.getStatus() == 1).collect(Collectors.toList());
+            List<TInspector> status5 = collect.stream().filter(e -> e.getStatus() == 2).collect(Collectors.toList());
+            List<TInspector> status6 = collect.stream().filter(e -> e.getStatus() == 3).collect(Collectors.toList());
 
             inspectorVO.setNum1(status1.size());
             inspectorVO.setNum2(status2.size());
-            inspectorVO.setNum3(!status1.isEmpty()||!status2.isEmpty()?new BigDecimal(status1.size()).divide(new BigDecimal(status2.size()+status1.size()),2,RoundingMode.HALF_DOWN).multiply(new BigDecimal(100)):BigDecimal.ZERO);
+            inspectorVO.setNum3(!status1.isEmpty() || !status2.isEmpty() ? new BigDecimal(status1.size()).divide(new BigDecimal(status2.size() + status1.size()), 2, RoundingMode.HALF_DOWN).multiply(new BigDecimal(100)) : BigDecimal.ZERO);
             inspectorVO.setNum4(status4.size());
             inspectorVO.setNum5(status5.size());
             inspectorVO.setNum6(status6.size());
-            inspectorVO.setNum7(!status6.isEmpty()||!status5.isEmpty()?new BigDecimal(status6.size()).divide(new BigDecimal(status5.size()+status6.size()),2,RoundingMode.HALF_DOWN).multiply(new BigDecimal(100)):new BigDecimal(0));
+            inspectorVO.setNum7(!status6.isEmpty() || !status5.isEmpty() ? new BigDecimal(status6.size()).divide(new BigDecimal(status5.size() + status6.size()), 2, RoundingMode.HALF_DOWN).multiply(new BigDecimal(100)) : new BigDecimal(0));
             res.add(inspectorVO);
         }
         return R.ok(res);
     }
+
     @ApiOperation(value = "随机督察报表导出")
     @PostMapping(value = "/inspectorListExport")
-    @Log(title = "随机督察报表导出", businessType = BusinessType.EXPORT)
+    @Log(title = "随机督察报表导出", businessType = BusinessType.OTHER)
     public void inspectorListExport(@RequestBody InspectorQuery query) {
+        query.setPatrolInspectorIds(null);
         List<SysUser> sysUsers = sysUserService.selectAllList();
-        if (StringUtils.hasLength(query.getDeptName())){
+        List<TTask> listAll = taskCleanerService.list();
+        List<String> listAllTaskIds = listAll.stream().map(TTask::getId).collect(Collectors.toList());
+        if (StringUtils.hasLength(query.getDeptName())) {
             List<String> projectIds = projectDeptService.lambdaQuery().like(TProjectDept::getProjectName, query.getDeptName()).list()
                     .stream().map(TProjectDept::getId).collect(Collectors.toList());
             List<String> deptIds = deptService.lambdaQuery().like(TDept::getDeptName, query.getDeptName()).list()
                     .stream().map(TDept::getId).collect(Collectors.toList());
             projectIds.addAll(deptIds);
-            if (projectIds.isEmpty()){
+            if (projectIds.isEmpty()) {
                 projectIds.add("-1");
             }
-            if (StringUtils.hasLength(query.getPhonenumber())){
+            if (StringUtils.hasLength(query.getPhonenumber())) {
                 List<Long> patrolInspectorIds = sysUsers.stream().filter(sysUser ->
                         sysUser.getPhonenumber().equals(query.getPhonenumber())
                                 && projectIds.contains(sysUser.getDeptId())
                 ).map(SysUser::getUserId).collect(Collectors.toList());
-                if (patrolInspectorIds.isEmpty()){
+                if (patrolInspectorIds.isEmpty()) {
                     patrolInspectorIds.add(0L);
                 }
                 query.setPatrolInspectorIds(patrolInspectorIds);
             }
         }
-        if (StringUtils.hasLength(query.getPhonenumber())){
+        if (StringUtils.hasLength(query.getPhonenumber())) {
             List<Long> patrolInspectorIds = sysUsers.stream().filter(sysUser ->
                     sysUser.getPhonenumber().equals(query.getPhonenumber())
             ).map(SysUser::getUserId).collect(Collectors.toList());
-            if (!query.getPatrolInspectorIds().isEmpty()){
+            if (!query.getPatrolInspectorIds().isEmpty()) {
                 // 取交集
                 patrolInspectorIds = patrolInspectorIds.stream().filter(query.getPatrolInspectorIds()::contains).collect(Collectors.toList());
             }
             query.setPatrolInspectorIds(patrolInspectorIds);
-            if (patrolInspectorIds.isEmpty()){
+            if (patrolInspectorIds.isEmpty()) {
                 patrolInspectorIds.add(0L);
             }
         }
         LambdaQueryWrapper<TInspector> tTaskLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        tTaskLambdaQueryWrapper.eq(TInspector::getAuditStatus,1);
+        tTaskLambdaQueryWrapper.eq(TInspector::getAuditStatus, 1);
         tTaskLambdaQueryWrapper.isNotNull(TInspector::getClearStatus);
-        if (StringUtils.hasLength(query.getStartTime())){
+        if (StringUtils.hasLength(query.getStartTime())) {
             tTaskLambdaQueryWrapper.ge(TInspector::getCreateTime, query.getStartTime());
             tTaskLambdaQueryWrapper.le(TInspector::getCreateTime, query.getEndTime());
         }
-        if(query.getPatrolInspectorIds()!=null){
+        if (query.getPatrolInspectorIds() != null) {
+            if (query.getPatrolInspectorIds().isEmpty()) {
+                List<Long> patrolInspectorIds = query.getPatrolInspectorIds();
+                patrolInspectorIds.add(0L);
+                query.setPatrolInspectorIds(patrolInspectorIds);
+            }
             tTaskLambdaQueryWrapper.in(TInspector::getCommitPerson, query.getPatrolInspectorIds());
             sysUsers = sysUsers.stream().filter(sysUser -> query.getPatrolInspectorIds().contains(sysUser.getUserId())).collect(Collectors.toList());
         }
         List<InspectorVO> res = new ArrayList<>();
         List<TInspector> inspectors = inspectorService.list(tTaskLambdaQueryWrapper);
         sysUsers = sysUsers.stream().filter(e -> e.getUserId() != 1).collect(Collectors.toList());
-
         for (SysUser sysUser : sysUsers) {
             InspectorVO inspectorVO = new InspectorVO();
             inspectorVO.setNickName(sysUser.getNickName());
             inspectorVO.setPhonenumber(sysUser.getPhonenumber());
-            if (sysUser.getDeptType() == 1){
+            if (sysUser.getDeptType() == 1) {
                 TProjectDept tProjectDept = projectDeptService.getById(sysUser.getDeptId());
-                if (tProjectDept!=null&&!tProjectDept.getParentId().equals("0")){
+                if (tProjectDept != null && !tProjectDept.getParentId().equals("0")) {
                     TProjectDept tProjectDept1 = projectDeptService.getById(tProjectDept.getParentId());
-                    if (tProjectDept1!=null)
-                        inspectorVO.setDeptName(tProjectDept1.getProjectName()+">"+tProjectDept.getProjectName());
-                }else{
+                    if (tProjectDept1 != null)
+                        inspectorVO.setDeptName(tProjectDept1.getProjectName() + ">" + tProjectDept.getProjectName());
+                } else {
                     inspectorVO.setDeptName(tProjectDept.getProjectName());
                 }
-            }else{
+            } else {
                 TDept tDept = deptService.getById(sysUser.getDeptId());
-                if (tDept!=null)
+                if (tDept != null)
                     inspectorVO.setDeptName(tDept.getDeptName());
             }
-            inspectorVO.setTotal(inspectors.size());
-            List<TInspector> status1 = inspectors.stream().filter(e -> e.getClearStatus() == 1).collect(Collectors.toList());
-            List<TInspector> status2 = inspectors.stream().filter(e -> e.getClearStatus() == 2).collect(Collectors.toList());
-            List<TInspector> status4 = inspectors.stream().filter(e -> e.getStatus() == 1).collect(Collectors.toList());
-            List<TInspector> status5 = inspectors.stream().filter(e -> e.getStatus() == 2).collect(Collectors.toList());
-            List<TInspector> status6 = inspectors.stream().filter(e -> e.getStatus() == 3).collect(Collectors.toList());
+            List<String> collect1 = listAll.stream().filter(e -> e.getPatrolInspector().equals(sysUser.getUserId() + "")).map(TTask::getId).collect(Collectors.toList());
+            List<TInspector> collect = inspectors.stream().filter(e -> collect1.contains(e.getTaskId())).collect(Collectors.toList());
+            inspectorVO.setTotal(collect.size());
+            List<TInspector> status1 = collect.stream().filter(e -> e.getClearStatus() == 1).collect(Collectors.toList());
+            List<TInspector> status2 = collect.stream().filter(e -> e.getClearStatus() == 2).collect(Collectors.toList());
+            List<TInspector> status4 = collect.stream().filter(e -> e.getStatus() == 1).collect(Collectors.toList());
+            List<TInspector> status5 = collect.stream().filter(e -> e.getStatus() == 2).collect(Collectors.toList());
+            List<TInspector> status6 = collect.stream().filter(e -> e.getStatus() == 3).collect(Collectors.toList());
 
             inspectorVO.setNum1(status1.size());
             inspectorVO.setNum2(status2.size());
-            inspectorVO.setNum3(!status1.isEmpty()?new BigDecimal(status1.size()).divide(new BigDecimal(status2.size()+status1.size()),2,RoundingMode.HALF_DOWN).multiply(new BigDecimal(100)):BigDecimal.ZERO);
+            inspectorVO.setNum3(!status1.isEmpty() || !status2.isEmpty() ? new BigDecimal(status1.size()).divide(new BigDecimal(status2.size() + status1.size()), 2, RoundingMode.HALF_DOWN).multiply(new BigDecimal(100)) : BigDecimal.ZERO);
             inspectorVO.setNum4(status4.size());
             inspectorVO.setNum5(status5.size());
             inspectorVO.setNum6(status6.size());
-            inspectorVO.setNum7(!status6.isEmpty()?new BigDecimal(status6.size()).divide(new BigDecimal(status5.size()+status6.size()),2,RoundingMode.HALF_DOWN).multiply(new BigDecimal(100)):new BigDecimal(0));
+            inspectorVO.setNum7(!status6.isEmpty() || !status5.isEmpty() ? new BigDecimal(status6.size()).divide(new BigDecimal(status5.size() + status6.size()), 2, RoundingMode.HALF_DOWN).multiply(new BigDecimal(100)) : new BigDecimal(0));
             res.add(inspectorVO);
         }
         //1.获取excel模板
@@ -1181,7 +1306,7 @@
 
     @ApiOperation(value = "任务报表导出模板")
     @PostMapping(value = "/exportExcel")
-    public void exportExcel(@RequestBody TaskDetailsQuery query,HttpServletResponse response) throws Exception{
+    public void exportExcel(@RequestBody TaskDetailsQuery query, HttpServletResponse response) throws Exception {
         List<TLocationType> locationTypeList = locationTypeService.list();
         List<TLocation> locations = locationService.list();
         LambdaQueryWrapper<TTask> tTaskLambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -1248,7 +1373,7 @@
                         int num7 = 0;
                         for (TTask tTask : taskList) {
                             TTaskDetail tTaskDetail = taskDetails.stream().filter(e -> e.getTaskId().equals(tTask.getId()) && e.getClearStatus() != null).findFirst().orElse(null);
-                            if (tTaskDetail!=null){
+                            if (tTaskDetail != null) {
                                 switch (tTaskDetail.getClearStatus()) {
                                     case 1:
                                         num1++;
@@ -1308,8 +1433,8 @@
         ExcelExportEntity excelExportEntity = new ExcelExportEntity("项目", "projectName", 15);
         excelExportEntity.setMergeVertical(true);
         entityList.add(excelExportEntity);
-        entityList.add(new ExcelExportEntity("片区名称", "areaName",15));
-        entityList.add(new ExcelExportEntity("巡检保洁员数", "inspectorCount",15));
+        entityList.add(new ExcelExportEntity("片区名称", "areaName", 15));
+        entityList.add(new ExcelExportEntity("巡检保洁员数", "inspectorCount", 15));
 
         // 动态添加作业类型分类
         List<String> list = new ArrayList<>(allTypeNames);

--
Gitblit v1.7.1