From 1dfb91db022f6cfa4bcb9d953ca9aa8a503e1ca5 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期六, 12 七月 2025 11:47:32 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-system/src/main/java/com/ruoyi/system/model/TLocation.java                    |    3 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ReportController.java        |  322 ++++++++++++++++---------------
 ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TIndexController.java       |   17 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTaskController.java         |   37 +++
 ruoyi-system/src/main/resources/mapper/system/TTaskMapper.xml                       |   29 ++
 ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java        |  105 +++++++--
 ruoyi-system/src/main/java/com/ruoyi/system/model/TTask.java                        |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/service/TTaskCleanService.java          |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTaskCleanServiceImpl.java |    6 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java               |    8 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/TTaskMapper.java                 |    3 
 ruoyi-common/src/main/java/com/ruoyi/common/utils/CodeGenerateUtils.java            |    7 
 ruoyi-system/src/main/java/com/ruoyi/system/applet/dto/IndexDTO.java                |    2 
 13 files changed, 353 insertions(+), 194 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 663930e..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,6 +227,7 @@
         progressListVOPageInfo.setRecords(records);
         return R.ok(progressListVOPageInfo);
     }
+
     @ApiOperation(value = "任务进度导出")
     @Log(title = "任务进度导出", businessType = BusinessType.OTHER)
     @PostMapping(value = "/taskProgressExport")
@@ -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);
@@ -445,7 +446,7 @@
                     locationTypeListByProjectVOS1.add(temp);
                 }
                 List<TTask> taskList = tasks.stream().filter(e -> e.getProjectId().equals(projectDeptDetailsChildVO.getProjectId())
-                        ).collect(Collectors.toList());
+                ).collect(Collectors.toList());
                 int total = taskList.size();
                 int num1 = 0;
                 int num2 = 0;
@@ -456,7 +457,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&&(tTask.getStatus()==5||tTask.getStatus()==6)){
+                    if (tTaskDetail != null && (tTask.getStatus() == 5 || tTask.getStatus() == 6)) {
                         switch (tTaskDetail.getClearStatus()) {
                             case 1:
                                 num1++;
@@ -502,9 +503,10 @@
         }
         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<>();
@@ -556,7 +558,7 @@
                     LocationTypeListByProjectVO temp = new LocationTypeListByProjectVO();
                     BeanUtils.copyProperties(locationTypeListByProjectVO, temp);
                     List<String> locationIds = locations.stream().filter(e ->
-                                    e.getProjectId().equals(projectDeptDetailsChildVO.getProjectId())&&
+                                    e.getProjectId().equals(projectDeptDetailsChildVO.getProjectId()) &&
                                             e.getLocationType().equals(locationTypeListByProjectVO.getId()))
                             .map(TLocation::getId).collect(Collectors.toList());
                     if (locationIds.isEmpty()) {
@@ -582,7 +584,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&&(tTask.getStatus()==5||tTask.getStatus()==6)){
+                    if (tTaskDetail != null && (tTask.getStatus() == 5 || tTask.getStatus() == 6)) {
                         switch (tTaskDetail.getClearStatus()) {
                             case 1:
                                 num1++;
@@ -640,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);
@@ -719,89 +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<>());
             }
             query.setDeptIds(projectIds);
-            if (StringUtils.hasLength(query.getPhonenumber())){
+            if (StringUtils.hasLength(query.getPhonenumber())) {
                 List<Long> patrolInspectorIds = sysUsers.stream().filter(sysUser ->
                         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())){
+            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()){
+                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().contains(query.getPhonenumber())
             ).map(SysUser::getUserId).collect(Collectors.toList());
-            if (query.getPatrolInspectorIds()!=null&&!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())){
+        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()){
+            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 (query.getDeptIds()!=null&&!query.getDeptIds().isEmpty()){
+        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()){
+            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<>());
             }
         }
         List<PatrolInspectorVO> res = new ArrayList<>();
         LambdaQueryWrapper<TTask> tTaskLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        if (StringUtils.hasLength(query.getStartTime())){
-            tTaskLambdaQueryWrapper.ge(TTask::getImplementTime, query.getStartTime()+" :00:00:00");
-            tTaskLambdaQueryWrapper.le(TTask::getImplementTime, 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&& !query.getPatrolInspectorIds().isEmpty()){
+        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());
         }
@@ -813,39 +815,39 @@
 
             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)
+                    .eq(TTaskDetail::getHandleType, 1)
                     .isNotNull(TTaskDetail::getClearStatus).orderByDesc(BaseModel::getCreateTime)
-                    .in(!taskIds.isEmpty(), TTaskDetail::getTaskId,taskIdsFinish).list();
+                    .in(!taskIds.isEmpty(), TTaskDetail::getTaskId, taskIdsFinish).list();
             list = new ArrayList<>(list.stream()
                     .collect(Collectors.groupingBy(
                             TTaskDetail::getTaskId,
@@ -864,8 +866,8 @@
             patrolInspectorVO.setNum2(clearStatus2.size());
             patrolInspectorVO.setNum3(!clearStatus1.isEmpty() ?
                     (new BigDecimal(clearStatus1.size()))
-                            .divide(new BigDecimal(clearStatus1.size()+clearStatus2.size()), 2, RoundingMode.HALF_DOWN)
-                            .multiply(new BigDecimal(100)):BigDecimal.ZERO);
+                            .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());
@@ -878,106 +880,107 @@
             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.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()+" :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()) {
                 projectIds.add("-1");
             }
             query.setDeptIds(projectIds);
-            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.getNickName())){
+            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()){
+                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()!=null&&!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())){
+        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()){
+            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 (query.getDeptIds()!=null&&!query.getDeptIds().isEmpty()){
+        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()){
+            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);
             }
         }
         List<PatrolInspectorVO> res = new ArrayList<>();
         LambdaQueryWrapper<TTask> tTaskLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        if (StringUtils.hasLength(query.getStartTime())){
-            tTaskLambdaQueryWrapper.ge(TTask::getImplementTime, query.getStartTime()+" :00:00:00");
-            tTaskLambdaQueryWrapper.le(TTask::getImplementTime, 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&& !query.getPatrolInspectorIds().isEmpty()){
+        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());
         }
@@ -989,39 +992,39 @@
 
             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)
+                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)
+                    .eq(TTaskDetail::getHandleType, 1)
                     .isNotNull(TTaskDetail::getClearStatus).orderByDesc(BaseModel::getCreateTime)
-                    .in(!taskIds.isEmpty(), TTaskDetail::getTaskId,taskIdsFinish).list();
+                    .in(!taskIds.isEmpty(), TTaskDetail::getTaskId, taskIdsFinish).list();
             list = new ArrayList<>(list.stream()
                     .collect(Collectors.groupingBy(
                             TTaskDetail::getTaskId,
@@ -1040,8 +1043,8 @@
             patrolInspectorVO.setNum2(clearStatus2.size());
             patrolInspectorVO.setNum3(!clearStatus1.isEmpty() ?
                     (new BigDecimal(clearStatus1.size()))
-                            .divide(new BigDecimal(clearStatus1.size()+clearStatus2.size()), 2, RoundingMode.HALF_DOWN)
-                            .multiply(new BigDecimal(100)):BigDecimal.ZERO);
+                            .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());
@@ -1054,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);
         }
@@ -1091,48 +1094,48 @@
         List<SysUser> sysUsers = sysUserService.selectAllList();
         List<TTask> listAll = taskCleanerService.list();
         List<String> listAllTaskIds = listAll.stream().map(TTask::getId).collect(Collectors.toList());
-        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())){
+            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().isEmpty()){
+        if (query.getPatrolInspectorIds() != null) {
+            if (query.getPatrolInspectorIds().isEmpty()) {
                 List<Long> patrolInspectorIds = query.getPatrolInspectorIds();
                 patrolInspectorIds.add(0L);
                 query.setPatrolInspectorIds(patrolInspectorIds);
@@ -1147,21 +1150,22 @@
             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());
             }
-            List<TInspector> collect = inspectors.stream().filter(e -> listAllTaskIds.contains(e.getTaskId())).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());
@@ -1171,62 +1175,66 @@
 
             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.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().isEmpty()){
+        if (query.getPatrolInspectorIds() != null) {
+            if (query.getPatrolInspectorIds().isEmpty()) {
                 List<Long> patrolInspectorIds = query.getPatrolInspectorIds();
                 patrolInspectorIds.add(0L);
                 query.setPatrolInspectorIds(patrolInspectorIds);
@@ -1241,34 +1249,36 @@
             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);
         }
         //1.获取excel模板
@@ -1296,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<>();
@@ -1363,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++;
@@ -1423,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);
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTaskController.java
index 70b9816..b7d84a6 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTaskController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTaskController.java
@@ -36,6 +36,7 @@
 import org.springframework.util.StringUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
+import oshi.driver.mac.net.NetStat;
 
 import javax.annotation.Resource;
 import javax.servlet.ServletOutputStream;
@@ -63,6 +64,8 @@
     private TNoticeService noticeService;
     @Resource
     private TNoticeSetService noticeSetService;
+    @Resource
+    private TEarlyWarningService earlyWarningService;
     @Resource
     private TTaskDetailService taskDetailService;
 
@@ -206,6 +209,21 @@
         tNotice.setDataId(task.getId());
         tNotice.setNoticeSetType(noticeSet.getNoticeType());
         if (dto.getAuditStatus()==2){
+            if (StringUtils.hasLength(location.getUnqualifiedTaskId())){
+                if (location.getUnqualifiedTaskId().split(",").length==2){
+                    // 已经两条不合格了 生成点位不合格预警记录
+                    location.setUnqualifiedTaskId(location.getUnqualifiedTaskId()+","+dto.getTaskId());
+                    TEarlyWarning tEarlyWarning = new TEarlyWarning();
+                    tEarlyWarning.setWarningType(2);
+                    tEarlyWarning.setTaskId(location.getUnqualifiedTaskId());
+                    earlyWarningService.save(tEarlyWarning);
+                    location.setUnqualifiedTaskId("");
+                    locationService.updateById(location);
+                }
+            }else{
+                location.setUnqualifiedTaskId(dto.getTaskId());
+                locationService.updateById(location);
+            }
             dto.setHandleType(3);
             // 将任务修改为待整改
             task.setStatus(4);
@@ -213,9 +231,24 @@
             // 增加消息
             tNotice.setNoticeType(1);
             tNotice.setNoticeContent("【"+location.getLocationName()+"】任务不合格,请重新上传!");
-
         }else{
-
+            if (dto.getClearStatus()==2){
+                if (StringUtils.hasLength(location.getUnqualifiedTaskId())){
+                    if (location.getUnqualifiedTaskId().split(",").length==2){
+                        // 已经两条不合格了 生成点位不合格预警记录
+                        location.setUnqualifiedTaskId(location.getUnqualifiedTaskId()+","+dto.getTaskId());
+                        TEarlyWarning tEarlyWarning = new TEarlyWarning();
+                        tEarlyWarning.setWarningType(2);
+                        tEarlyWarning.setTaskId(location.getUnqualifiedTaskId());
+                        earlyWarningService.save(tEarlyWarning);
+                        location.setUnqualifiedTaskId("");
+                        locationService.updateById(location);
+                    }
+                }else{
+                    location.setUnqualifiedTaskId(dto.getTaskId());
+                    locationService.updateById(location);
+                }
+            }
             dto.setHandleType(2);
             // 如果是初次审核就通过 将状态设置为已完成
             List<TTaskDetail> list = tTaskDetailService.lambdaQuery()
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java
index ed09dd1..79c63b8 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java
@@ -111,6 +111,14 @@
         }
     }
 
+    /**
+     * 生成点位预警
+     */
+    // 每分钟执行一次
+    public void earning() {
+
+    }
+
     public void createInspection(TTemplate template) {
         // 查询所有的模板详情
         List<TTemplateDetail> list = templateDetailService.list(Wrappers.lambdaQuery(TTemplateDetail.class)
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TIndexController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TIndexController.java
index 4d1bc33..1409ea0 100644
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TIndexController.java
+++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TIndexController.java
@@ -330,7 +330,9 @@
 
         List<TLocation> locationList = locationService.list();
         List<TLocationType> locationTypeList = locationTypeService.list();
-        List<TTask> taskAll = taskCleanerService.lambdaQuery().eq(TTask::getPatrolInspector, userId).list();
+        dto.setUserId(userId);
+        List<TTask> taskAll = taskCleanerService.indexTask(dto);
+//        List<TTask> taskAll = taskCleanerService.lambdaQuery().eq(TTask::getPatrolInspector, userId).list();
         // 获取今天凌晨00:00:00 和今天23:59:59 类型为LocalDateTime
         LocalDateTime startOfToday = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
         LocalDateTime endOfToday = LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
@@ -470,12 +472,13 @@
                 taskTodayVO.setLocationLat(tLocation.getLocationLat());
                 taskTodayVO.setLocationName(tLocation.getLocationName());
                 if(StringUtils.hasLength(dto.getLon())){
-                    Map<String, String> distance = amapApiClient.getDistance(dto.getLon() + "," + dto.getLat(), tLocation.getLocationLon() + "," + tLocation.getLocationLat(), 1);
-                    if (distance != null) {
-                        taskTodayVO.setDistance(new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000)).setScale(2, BigDecimal.ROUND_HALF_EVEN));
-                    } else {
-                        taskTodayVO.setDistance(new BigDecimal("0"));
-                    }
+                    taskTodayVO.setDistance(tTask.getDistance().divide(new BigDecimal(1000),2, RoundingMode.HALF_DOWN));
+//                    Map<String, String> distance = amapApiClient.getDistance(dto.getLon() + "," + dto.getLat(), tLocation.getLocationLon() + "," + tLocation.getLocationLat(), 1);
+//                    if (distance != null) {
+//                        taskTodayVO.setDistance(new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000)).setScale(2, BigDecimal.ROUND_HALF_EVEN));
+//                    } else {
+//                        taskTodayVO.setDistance(new BigDecimal("0"));
+//                    }
                 }else {
                     taskTodayVO.setDistance(new BigDecimal("0"));
                 }
diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java
index d5284d1..4360667 100644
--- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java
+++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TUserController.java
@@ -562,16 +562,37 @@
                 for (SysUser sysUser : collect) {
                     Long userRole1 = sysUserService.getUserRole(sysUser.getUserId());
                     SysRole sysRole1 = roleService.selectRoleById(userRole1);
-
+//                    if (sysRole1 != null && sysRole1.getRoleName().equals("项目部负责人")) {
+//                        if (userDept.getId().equals(sysUser.getDeptId())){
+//                            LeaveAuditVO tLeaveAudit = new LeaveAuditVO();
+//                            tLeaveAudit.setAvatar(sysUser.getAvatar());
+//                            tLeaveAudit.setNickName(sysUser.getNickName());
+//                            res.setAuditPerson(tLeaveAudit);
+//                            res.setAuditPersonId(sysUser.getUserId() + "");
+//                            break;
+//                        }
+//                    }
                     if (sysRole1 != null && sysRole1.getRoleName().equals("项目部负责人")) {
-                        if (userDept.getParentId().equals(sysUser.getDeptId())){
-                            LeaveAuditVO tLeaveAudit = new LeaveAuditVO();
-                            tLeaveAudit.setAvatar(sysUser.getAvatar());
-                            tLeaveAudit.setNickName(sysUser.getNickName());
-                            res.setAuditPerson(tLeaveAudit);
-                            res.setAuditPersonId(sysUser.getUserId() + "");
-                            break;
+                        if (!sysRole.getRoleName().contains("项目部助理")){
+                            if (userDept.getParentId().equals(sysUser.getDeptId())){
+                                LeaveAuditVO tLeaveAudit = new LeaveAuditVO();
+                                tLeaveAudit.setAvatar(sysUser.getAvatar());
+                                tLeaveAudit.setNickName(sysUser.getNickName());
+                                res.setAuditPerson(tLeaveAudit);
+                                res.setAuditPersonId(sysUser.getUserId() + "");
+                                break;
+                            }
+                        }else{
+                            if (userDept.getId().equals(sysUser.getDeptId())){
+                                LeaveAuditVO tLeaveAudit = new LeaveAuditVO();
+                                tLeaveAudit.setAvatar(sysUser.getAvatar());
+                                tLeaveAudit.setNickName(sysUser.getNickName());
+                                res.setAuditPerson(tLeaveAudit);
+                                res.setAuditPersonId(sysUser.getUserId() + "");
+                                break;
+                            }
                         }
+
                     }
                 }
             }
@@ -645,6 +666,13 @@
             tLeaveAudit1.setAuditId(auditPerson.getUserId() + "");
             tLeaveAudit1.setAuditType(1);
             leaveAuditService.save(tLeaveAudit1);
+            TLeaveAudit tLeaveAudit2 = new TLeaveAudit();
+            tLeaveAudit2.setLeaveId(leaveDTO.getId());
+            tLeaveAudit2.setAuditStatus(2);
+            tLeaveAudit2.setAuditId(user.getUserId() + "," + auditPerson.getUserId());
+            tLeaveAudit2.setAuditType(2);
+            tLeaveAudit2.setAuditTime(LocalDateTime.now());
+            leaveAuditService.save(tLeaveAudit2);
         } else if (!sysRole.getRoleName().equals("部门助理")) {
             // 审批人根据当前角色类型来
             if (sysRole.getRoleName().contains("片区负责人") || sysRole.getRoleName().contains("组长")|| sysRole.getRoleName().contains("队长")
@@ -657,25 +685,48 @@
                     SysRole sysRole1 = roleService.selectRoleById(userRole1);
 
                     if (sysRole1 != null && sysRole1.getRoleName().equals("项目部负责人")) {
-                        if (userDept.getParentId().equals(sysUser.getDeptId())){
-                            LeaveAuditVO tLeaveAudit = new LeaveAuditVO();
-                            tLeaveAudit.setAvatar(sysUser.getAvatar());
-                            tLeaveAudit.setNickName(sysUser.getNickName());
-                            TLeaveAudit tLeaveAudit1 = new TLeaveAudit();
-                            tLeaveAudit1.setLeaveId(leaveDTO.getId());
-                            tLeaveAudit1.setAuditStatus(1);
-                            tLeaveAudit1.setAuditId(sysUser.getUserId() + "");
-                            tLeaveAudit1.setAuditType(1);
-                            leaveAuditService.save(tLeaveAudit1);
-                            TLeaveAudit tLeaveAudit2 = new TLeaveAudit();
-                            tLeaveAudit2.setLeaveId(leaveDTO.getId());
-                            tLeaveAudit2.setAuditStatus(2);
-                            tLeaveAudit2.setAuditId(user.getUserId() + "," + sysUser.getUserId());
-                            tLeaveAudit2.setAuditType(2);
-                            tLeaveAudit2.setAuditTime(LocalDateTime.now());
-                            leaveAuditService.save(tLeaveAudit2);
-                            break;
-                        }
+                       if (!sysRole.getRoleName().contains("项目部助理")){
+                           if (userDept.getParentId().equals(sysUser.getDeptId())){
+                               LeaveAuditVO tLeaveAudit = new LeaveAuditVO();
+                               tLeaveAudit.setAvatar(sysUser.getAvatar());
+                               tLeaveAudit.setNickName(sysUser.getNickName());
+                               TLeaveAudit tLeaveAudit1 = new TLeaveAudit();
+                               tLeaveAudit1.setLeaveId(leaveDTO.getId());
+                               tLeaveAudit1.setAuditStatus(1);
+                               tLeaveAudit1.setAuditId(sysUser.getUserId() + "");
+                               tLeaveAudit1.setAuditType(1);
+                               leaveAuditService.save(tLeaveAudit1);
+                               TLeaveAudit tLeaveAudit2 = new TLeaveAudit();
+                               tLeaveAudit2.setLeaveId(leaveDTO.getId());
+                               tLeaveAudit2.setAuditStatus(2);
+                               tLeaveAudit2.setAuditId(user.getUserId() + "," + sysUser.getUserId());
+                               tLeaveAudit2.setAuditType(2);
+                               tLeaveAudit2.setAuditTime(LocalDateTime.now());
+                               leaveAuditService.save(tLeaveAudit2);
+                               break;
+                           }
+                       }else{
+                           if (userDept.getId().equals(sysUser.getDeptId())){
+                               LeaveAuditVO tLeaveAudit = new LeaveAuditVO();
+                               tLeaveAudit.setAvatar(sysUser.getAvatar());
+                               tLeaveAudit.setNickName(sysUser.getNickName());
+                               TLeaveAudit tLeaveAudit1 = new TLeaveAudit();
+                               tLeaveAudit1.setLeaveId(leaveDTO.getId());
+                               tLeaveAudit1.setAuditStatus(1);
+                               tLeaveAudit1.setAuditId(sysUser.getUserId() + "");
+                               tLeaveAudit1.setAuditType(1);
+                               leaveAuditService.save(tLeaveAudit1);
+                               TLeaveAudit tLeaveAudit2 = new TLeaveAudit();
+                               tLeaveAudit2.setLeaveId(leaveDTO.getId());
+                               tLeaveAudit2.setAuditStatus(2);
+                               tLeaveAudit2.setAuditId(user.getUserId() + "," + sysUser.getUserId());
+                               tLeaveAudit2.setAuditType(2);
+                               tLeaveAudit2.setAuditTime(LocalDateTime.now());
+                               leaveAuditService.save(tLeaveAudit2);
+                               break;
+                           }
+                       }
+
                     }
                 }
             }
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/CodeGenerateUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/CodeGenerateUtils.java
index 43fdfb0..fe7d2df 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/CodeGenerateUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/CodeGenerateUtils.java
@@ -69,7 +69,7 @@
         dateTime = dateTime.substring(0);
         String timestampPart = "" + (Math.random() * 10000) * (System.currentTimeMillis() / 10000);
         timestampPart = timestampPart.replace(".", "").replace("E", "");
-        timestampPart = timestampPart.substring(0, 0);
+        timestampPart = timestampPart.substring(0, 6);
         return dateTime + timestampPart;
     }
     /**
@@ -89,7 +89,10 @@
     }
 
     public static void main(String[] args) {
-        System.err.println(generateVolumeSn("2"));
+        for (int i = 0; i < 5; i++) {
+            System.err.println(generateVolumeSn());
+
+        }
     }
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/applet/dto/IndexDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/applet/dto/IndexDTO.java
index d77b697..978c0e0 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/applet/dto/IndexDTO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/applet/dto/IndexDTO.java
@@ -13,4 +13,6 @@
     private String lon;
     @ApiModelProperty(value = "纬度")
     private String lat;
+    @ApiModelProperty(value = "用户id 前端忽略")
+    private Long userId;
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TTaskMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TTaskMapper.java
index 25c5c91..7580118 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TTaskMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TTaskMapper.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.common.basic.PageInfo;
+import com.ruoyi.system.applet.dto.IndexDTO;
 import com.ruoyi.system.applet.query.TaskUserListQuery;
 import com.ruoyi.system.applet.vo.TaskUserListVO;
 import com.ruoyi.system.model.TTask;
@@ -43,4 +44,6 @@
     List<ProgressListVO> taskProgressExport(@Param("query")TaskProgressQuery query);
 
     List<TLocationTaskListVO> pointInspectionHeatDetailTaskList(@Param("query")PointDetailQuery query, @Param("pageInfo")PageInfo<TLocationTaskListVO> pageInfo);
+
+    List<TTask> indexTask(@Param("query") IndexDTO dto);
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TLocation.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TLocation.java
index 8c314db..96c9c17 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TLocation.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TLocation.java
@@ -76,6 +76,9 @@
     @ApiModelProperty(value = "点位纬度 终点")
     @TableField("location_lat_end")
     private String locationLatEnd;
+    @ApiModelProperty(value = "不合格任务id 用于生成点位不合格预警,多个逗号拼接")
+    @TableField("unqualified_task_id")
+    private String unqualifiedTaskId;
 
     @ApiModelProperty(value = "任务数量")
     @TableField(exist = false)
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 641564a..9b437ee 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
@@ -10,6 +10,7 @@
 import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 
 /**
@@ -47,6 +48,9 @@
     @ApiModelProperty(value = "点位id")
     @TableField("location_id")
     private String locationId;
+    @ApiModelProperty(value = "距离 米")
+    @TableField(exist = false)
+    private BigDecimal distance;
 
     @ApiModelProperty(value = "巡检员id 对应sys_user表")
     @TableField("patrol_inspector")
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TTaskCleanService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TTaskCleanService.java
index b8542f2..b47279d 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TTaskCleanService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TTaskCleanService.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.basic.PageInfo;
+import com.ruoyi.system.applet.dto.IndexDTO;
 import com.ruoyi.system.applet.query.TaskUserListQuery;
 import com.ruoyi.system.applet.vo.TaskUserListVO;
 import com.ruoyi.system.model.TTask;
@@ -47,4 +48,7 @@
      * @return
      */
     PageInfo<TLocationTaskListVO> pointInspectionHeatDetailTaskList(PointDetailQuery query);
+
+    List<TTask> indexTask(IndexDTO dto);
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTaskCleanServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTaskCleanServiceImpl.java
index bd54a6d..3e8c4ab 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTaskCleanServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTaskCleanServiceImpl.java
@@ -7,6 +7,7 @@
 import com.ruoyi.common.core.domain.BaseModel;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.system.applet.dto.IndexDTO;
 import com.ruoyi.system.applet.query.TaskUserListQuery;
 import com.ruoyi.system.applet.vo.TaskUserListVO;
 import com.ruoyi.system.mapper.*;
@@ -198,5 +199,10 @@
         return pageInfo;
     }
 
+    @Override
+    public List<TTask> indexTask(IndexDTO dto) {
+        return this.baseMapper.indexTask(dto);
+    }
+
 
 }
diff --git a/ruoyi-system/src/main/resources/mapper/system/TTaskMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TTaskMapper.xml
index cbedca2..9443e27 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TTaskMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TTaskMapper.xml
@@ -242,5 +242,34 @@
         </where>
          order by t1.implement_time desc
     </select>
+    <select id="indexTask" resultType="com.ruoyi.system.model.TTask">
+        select t1.*,
+               ROUND(
+                       6378.138 * 2 * ASIN(
+                               SQRT(
+                                       POW(
+                                               SIN(
+                                                       (
+                                                           #{query.lat} * PI() / 180 - t2.location_lat * PI() / 180
+                                                           ) / 2
+                                               ),
+                                               2
+                                       ) + COS(#{query.lat} * PI() / 180) * COS(t2.location_lat * PI() / 180) * POW(
+                                               SIN(
+                                                       (
+                                                           #{query.lon} * PI() / 180 - t2.location_lon * PI() / 180
+                                                           ) / 2
+                                               ),
+                                               2
+                                                                                                                )
+                               )
+                                      ) * 1000
+               ) AS distance
+        from t_task t1
+        left join t_location t2 on t1.location_id = t2.id
+        where t1.`disabled` = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+
+       and t1.patrol_inspector = #{query.userId}
+    </select>
 
 </mapper>

--
Gitblit v1.7.1