From 54b54315510eed85fb81211cd4f4df25414bdf9a Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期五, 11 七月 2025 20:44:48 +0800 Subject: [PATCH] bug修改 --- ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DataStatisticsController.java | 1455 +++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 1,145 insertions(+), 310 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DataStatisticsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DataStatisticsController.java index f05a930..e32ef7d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DataStatisticsController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/DataStatisticsController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.utils.DateUtils; @@ -12,16 +13,19 @@ import com.ruoyi.system.query.DataStatisticsQuery; import com.ruoyi.system.query.DataStatisticsRankQuery; import com.ruoyi.system.query.InsepectorListQuery; +import com.ruoyi.system.query.PointDetailQuery; import com.ruoyi.system.service.*; -import com.ruoyi.system.vo.system.AnalysisUnqualifiedCleaningDetailVO; -import com.ruoyi.system.vo.system.AnalysisUnqualifiedCleaningVO; -import com.ruoyi.system.vo.system.DataStatisticsRankVO; +import com.ruoyi.system.vo.system.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.springframework.beans.BeanUtils; import org.springframework.util.CollectionUtils; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.util.*; @@ -61,22 +65,46 @@ private TAppealService appealService; @Resource private TDictDataService dictDataService; + @Resource + private TEarlyWarningService earlyWarningService; @ApiOperation(value = "查询片区") @GetMapping(value = "/queryProject") public R<List<TProjectDept>> queryProject() { Integer deptType = tokenService.getLoginUser().getUser().getDeptType(); String deptId = tokenService.getLoginUser().getUser().getDeptId(); + Long userId = tokenService.getLoginUser().getUserId(); List<TProjectDept> projectDeptList = new ArrayList<>(); - if (deptType == 1) { - // 查询片区 - TProjectDept projectDept = projectDeptService.getById(deptId); - // 查询项目部 - TProjectDept parent = projectDeptService.getById(projectDept.getParentId()); - List<TProjectDept> children = new ArrayList<>(); - children.add(projectDept); -// parent.setChildren(children); - projectDeptList.add(parent); + if(userId != 1L){ + if (deptType == 1) { + // 查询片区 + TProjectDept projectDept = projectDeptService.getById(deptId); + if("0".equals(projectDept.getParentId())){ + // 查询项目部 + List<TProjectDept> childProjectDept = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) + .eq(TProjectDept::getStatus,1) + .eq(TProjectDept::getParentId,projectDept.getId())); + projectDept.setChildren(childProjectDept); + projectDeptList.add(projectDept); + }else { + // 查询项目部 + TProjectDept parent = projectDeptService.getById(projectDept.getParentId()); + List<TProjectDept> children = new ArrayList<>(); + children.add(projectDept); + parent.setChildren(children); + projectDeptList.add(parent); + } + }else { + projectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) + .eq(TProjectDept::getStatus,1) + .eq(TProjectDept::getParentId,0)); + // 查询片区 + projectDeptList.forEach(projectDept -> { + List<TProjectDept> children = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) + .eq(TProjectDept::getParentId, projectDept.getId())); + projectDept.setChildren(children); + }); + } }else { projectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) .eq(TProjectDept::getStatus,1) @@ -85,7 +113,7 @@ projectDeptList.forEach(projectDept -> { List<TProjectDept> children = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) .eq(TProjectDept::getParentId, projectDept.getId())); -// projectDept.setChildren(children); + projectDept.setChildren(children); }); } return R.ok(projectDeptList); @@ -93,17 +121,18 @@ @ApiOperation(value = "通过片区id查询点位类型") @GetMapping(value = "/queryLocationByProjectId") - public R<List<TLocationType>> queryLocationByProjectId(@RequestParam(value = "projectId") String projectId) { - List<TLocationType> locationTypes = new ArrayList<>(); - // 通过片区id查询点位 - List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) - .eq(TLocation::getProjectId, projectId)); - if(CollectionUtils.isEmpty(locationList)){ - return R.ok(locationTypes); - } - List<String> typeIds = locationList.stream().map(TLocation::getLocationType).collect(Collectors.toList()); - locationTypes = locationTypeService.list(Wrappers.lambdaQuery(TLocationType.class) - .in(TLocationType::getId, typeIds)); + public R<List<TLocationType>> queryLocationByProjectId() { +// List<TLocationType> locationTypes = new ArrayList<>(); +// // 通过片区id查询点位 +// List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) +// .eq(TLocation::getProjectId, projectId)); +// if(CollectionUtils.isEmpty(locationList)){ +// return R.ok(locationTypes); +// } +// List<String> typeIds = locationList.stream().map(TLocation::getLocationType).collect(Collectors.toList()); +// locationTypes = locationTypeService.list(Wrappers.lambdaQuery(TLocationType.class) +// .in(TLocationType::getId, typeIds)); + List<TLocationType> locationTypes = locationTypeService.list(); return R.ok(locationTypes); } @@ -115,65 +144,126 @@ String deptId = tokenService.getLoginUser().getUser().getDeptId(); Long userId = tokenService.getLoginUser().getUserId(); - String startTime = LocalDate.now() + " 00:00:00"; - String endTime = LocalDate.now() + " 23:59:59"; - LambdaQueryWrapper<TTask> wrapper = new LambdaQueryWrapper<>(); + String startTime = LocalDate.now() + " 00:00:00"; + String endTime = LocalDate.now() + " 23:59:59"; wrapper.between(TTask::getImplementTime, startTime, endTime); - - // 查询点位类型 - if(StringUtils.isNotEmpty(query.getLocationTypeId())){ - // 查询点位 - List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) - .in(TLocation::getLocationType, query.getLocationTypeId())); - if(!CollectionUtils.isEmpty(locationList)){ - List<String> locationIds = locationList.stream().map(TLocation::getId).collect(Collectors.toList()); - wrapper.in(TTask::getLocationId, locationIds); + if(userId != 1L){ + // 查询点位类型 + if(StringUtils.isNotEmpty(query.getLocationTypeId())){ + // 查询点位 + List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) + .in(TLocation::getLocationType, query.getLocationTypeId())); + if(!CollectionUtils.isEmpty(locationList)){ + List<String> locationIds = locationList.stream().map(TLocation::getId).collect(Collectors.toList()); + wrapper.in(TTask::getLocationId, locationIds); + } } - } - List<TTask> taskList = new ArrayList<>(); - if (deptType == 1) { - // 项目部人员 - List<String> projectIds = new ArrayList<>(); - projectIds.add(deptId); - query.setProjectId(projectIds); + List<TTask> taskList = new ArrayList<>(); + if (deptType == 1) { + // 项目部人员 + if(CollectionUtils.isEmpty(query.getProjectId())){ + TProjectDept projectDept = projectDeptService.getById(deptId); + List<String> projectIds = new ArrayList<>(); + if("0".equals(projectDept.getParentId())){ + List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) + .eq(TProjectDept::getStatus, 1) + .eq(TProjectDept::getParentId, projectDept.getId())); + List<String> ids = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList()); + projectIds.add(projectDept.getId()); + projectIds.addAll(ids); + }else { + projectIds.add(deptId); + } + query.setProjectId(projectIds); + } + }else { + // 公司人员 + // 查询自己的任务列表 + taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) + .eq(TTask::getPatrolInspector, userId) + .between(TTask::getImplementTime, startTime, endTime)); + if(CollectionUtils.isEmpty(query.getProjectId())){ + // 查询所有项目部的任务列表 + List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) + .eq(TProjectDept::getStatus, 1)); + if(!CollectionUtils.isEmpty(tProjectDeptList)){ + List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList()); + query.setProjectId(projectIds); + } + } + } + + // 查询片区 + if(!CollectionUtils.isEmpty(query.getProjectId())){ + query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList())); + wrapper.in(TTask::getProjectId, query.getProjectId()); + } + + List<TTask> list = taskCleanService.list(wrapper); + if(CollectionUtils.isEmpty(list)){ + return R.ok(map); + } + + if(!CollectionUtils.isEmpty(taskList)){ + list.addAll(taskList); + } + list = list.stream().distinct().collect(Collectors.toList()); + + map.put("taskCount", list.size()); + map.put("taskUnExecutedCount", list.stream().filter(task -> task.getStatus() == 1 || task.getStatus() == 2).count()); + map.put("taskPendingCount", list.stream().filter(task -> task.getStatus() == 3).count()); + map.put("taskFinishCount", list.stream().filter(task -> task.getStatus() == 5 || task.getStatus() == 6).count()); }else { - // 公司人员 - // 查询自己的任务列表 - taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) - .eq(TTask::getPatrolInspector, userId) + // 超级管理员 + // 查询点位类型 + if(StringUtils.isNotEmpty(query.getLocationTypeId())){ + // 查询点位 + List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) + .in(TLocation::getLocationType, query.getLocationTypeId())); + if(!CollectionUtils.isEmpty(locationList)){ + List<String> locationIds = locationList.stream().map(TLocation::getId).collect(Collectors.toList()); + wrapper.in(TTask::getLocationId, locationIds); + } + } + // 超级管理员 查询所有任务列表 + List<TTask> taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) .between(TTask::getImplementTime, startTime, endTime)); if(CollectionUtils.isEmpty(query.getProjectId())){ // 查询所有项目部的任务列表 List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) - .eq(TProjectDept::getStatus, 1) - .ne(TProjectDept::getParentId, 0)); + .eq(TProjectDept::getStatus, 1)); if(!CollectionUtils.isEmpty(tProjectDeptList)){ List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList()); - wrapper.in(TTask::getProjectId, projectIds); + query.setProjectId(projectIds); } } - } - // 查询片区 - if(!CollectionUtils.isEmpty(query.getProjectId())){ - wrapper.in(TTask::getProjectId, query.getProjectId()); - } + // 查询片区 + if(!CollectionUtils.isEmpty(query.getProjectId())){ + query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList())); + wrapper.in(TTask::getProjectId, query.getProjectId()); + taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) + .in(TTask::getProjectId, query.getProjectId()) + .between(TTask::getImplementTime, startTime, endTime)); + } - List<TTask> list = taskCleanService.list(wrapper); - if(CollectionUtils.isEmpty(list)){ - return R.ok(map); - } + List<TTask> list = taskCleanService.list(wrapper); + if(CollectionUtils.isEmpty(list)){ + return R.ok(map); + } - if(!CollectionUtils.isEmpty(taskList)){ - list.addAll(taskList); - } + if(!CollectionUtils.isEmpty(taskList)){ + list.addAll(taskList); + } + list = list.stream().distinct().collect(Collectors.toList()); - map.put("taskCount", list.size()); - map.put("taskUnExecutedCount", list.stream().filter(task -> task.getStatus() == 1).count()); - map.put("taskPendingCount", list.stream().filter(task -> task.getStatus() == 3).count()); - map.put("taskFinishCount", list.stream().filter(task -> task.getStatus() == 6).count()); + map.put("taskCount", list.size()); + map.put("taskUnExecutedCount", list.stream().filter(task -> task.getStatus() == 1 || task.getStatus() == 2).count()); + map.put("taskPendingCount", list.stream().filter(task -> task.getStatus() == 3).count()); + map.put("taskFinishCount", list.stream().filter(task -> task.getStatus() == 5 || task.getStatus() == 6).count()); + } return R.ok(map); } @@ -184,28 +274,87 @@ Map<String, Object> map = new HashMap<>(); Integer deptType = tokenService.getLoginUser().getUser().getDeptType(); String deptId = tokenService.getLoginUser().getUser().getDeptId(); + Long userId = tokenService.getLoginUser().getUserId(); - // 查询点位类型 - if(StringUtils.isNotEmpty(query.getLocationTypeId())){ - // 查询点位 - List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) - .in(TLocation::getLocationType, query.getLocationTypeId())); - // 查询类型 - TLocationType locationType = locationTypeService.getById(query.getLocationTypeId()); - map.put(locationType.getLocationName(), locationList.size()); - return R.ok(map); - } - if (deptType == 1) { - // 项目部人员 - List<String> projectIds = new ArrayList<>(); - projectIds.add(deptId); - query.setProjectId(projectIds); + if(userId != 1L){ + // 查询点位类型 + if(StringUtils.isNotEmpty(query.getLocationTypeId())){ + // 查询点位 + List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) + .in(TLocation::getLocationType, query.getLocationTypeId())); + // 查询类型 + TLocationType locationType = locationTypeService.getById(query.getLocationTypeId()); + map.put(locationType.getLocationName(), locationList.size()); + return R.ok(map); + } + if (deptType == 1) { + // 项目部人员 + if(CollectionUtils.isEmpty(query.getProjectId())){ + TProjectDept projectDept = projectDeptService.getById(deptId); + List<String> projectIds = new ArrayList<>(); + if("0".equals(projectDept.getParentId())){ + List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) + .eq(TProjectDept::getStatus, 1) + .eq(TProjectDept::getParentId, projectDept.getId())); + List<String> ids = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList()); + projectIds.add(projectDept.getId()); + projectIds.addAll(ids); + }else { + projectIds.add(deptId); + } + query.setProjectId(projectIds); + } + }else { + if(CollectionUtils.isEmpty(query.getProjectId())) { + // 查询所有项目部的任务列表 + List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) + .eq(TProjectDept::getStatus, 1)); + if (!CollectionUtils.isEmpty(tProjectDeptList)) { + List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList()); + List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) + .in(TLocation::getProjectId, projectIds)); + List<String> locationTypeList = locationList.stream().map(TLocation::getLocationType).distinct().collect(Collectors.toList()); + List<TLocationType> locationTypes = locationTypeService.list(Wrappers.lambdaQuery(TLocationType.class) + .in(TLocationType::getId, locationTypeList)); + for (TLocationType locationType : locationTypes) { + List<TLocation> locationList1 = locationList.stream().filter(location -> location.getLocationType().equals(locationType.getId())).collect(Collectors.toList()); + map.put(locationType.getLocationName(), locationList1.size()); + } + return R.ok(map); + } + } + } + + // 查询片区 + if(!CollectionUtils.isEmpty(query.getProjectId())){ + query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList())); + List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) + .in(TLocation::getProjectId, query.getProjectId())); + List<String> locationTypeList = locationList.stream().map(TLocation::getLocationType).distinct().collect(Collectors.toList()); + List<TLocationType> locationTypes = locationTypeService.list(Wrappers.lambdaQuery(TLocationType.class) + .in(TLocationType::getId, locationTypeList)); + for (TLocationType locationType : locationTypes) { + List<TLocation> locationList1 = locationList.stream().filter(location -> location.getLocationType().equals(locationType.getId())).collect(Collectors.toList()); + map.put(locationType.getLocationName(), locationList1.size()); + } + return R.ok(map); + } }else { + // 超级管理员 + // 查询点位类型 + if(StringUtils.isNotEmpty(query.getLocationTypeId())){ + // 查询点位 + List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) + .in(TLocation::getLocationType, query.getLocationTypeId())); + // 查询类型 + TLocationType locationType = locationTypeService.getById(query.getLocationTypeId()); + map.put(locationType.getLocationName(), locationList.size()); + return R.ok(map); + } if(CollectionUtils.isEmpty(query.getProjectId())) { // 查询所有项目部的任务列表 List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) - .eq(TProjectDept::getStatus, 1) - .ne(TProjectDept::getParentId, 0)); + .eq(TProjectDept::getStatus, 1)); if (!CollectionUtils.isEmpty(tProjectDeptList)) { List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList()); List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) @@ -219,22 +368,24 @@ } return R.ok(map); } + }else { + // 查询片区 + List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) + .in(TLocation::getProjectId, query.getProjectId())); + if (locationList.isEmpty()){ + return R.ok(map); + } + List<String> locationTypeList = locationList.stream().map(TLocation::getLocationType).distinct().collect(Collectors.toList()); + List<TLocationType> locationTypes = locationTypeService.list(Wrappers.lambdaQuery(TLocationType.class) + .in(TLocationType::getId, locationTypeList)); + for (TLocationType locationType : locationTypes) { + List<TLocation> locationList1 = locationList.stream().filter(location -> location.getLocationType().equals(locationType.getId())).collect(Collectors.toList()); + map.put(locationType.getLocationName(), locationList1.size()); + } + return R.ok(map); } } - // 查询片区 - if(!CollectionUtils.isEmpty(query.getProjectId())){ - List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) - .eq(TLocation::getProjectId, query.getProjectId())); - List<String> locationTypeList = locationList.stream().map(TLocation::getLocationType).distinct().collect(Collectors.toList()); - List<TLocationType> locationTypes = locationTypeService.list(Wrappers.lambdaQuery(TLocationType.class) - .in(TLocationType::getId, locationTypeList)); - for (TLocationType locationType : locationTypes) { - List<TLocation> locationList1 = locationList.stream().filter(location -> location.getLocationType().equals(locationType.getId())).collect(Collectors.toList()); - map.put(locationType.getLocationName(), locationList1.size()); - } - return R.ok(map); - } return R.ok(map); } @@ -242,76 +393,143 @@ @PostMapping(value = "/warningSummary") public R<Map<String, Object>> warningSummary(@RequestBody DataStatisticsQuery query) { Map<String, Object> map = new HashMap<>(); + map.put("timeoutWarn", 0); + map.put("unqualifiedWarn", 0); Integer deptType = tokenService.getLoginUser().getUser().getDeptType(); String deptId = tokenService.getLoginUser().getUser().getDeptId(); Long userId = tokenService.getLoginUser().getUserId(); LambdaQueryWrapper<TTask> wrapper = new LambdaQueryWrapper<>(); - // 查询点位类型 - if(StringUtils.isNotEmpty(query.getLocationTypeId())){ - // 查询点位 - List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) - .in(TLocation::getLocationType, query.getLocationTypeId())); - if(!CollectionUtils.isEmpty(locationList)){ - List<String> locationIds = locationList.stream().map(TLocation::getId).collect(Collectors.toList()); - wrapper.in(TTask::getLocationId, locationIds); + if (userId != 1L) { + // 查询点位类型 + if(StringUtils.isNotEmpty(query.getLocationTypeId())){ + // 查询点位 + List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) + .in(TLocation::getLocationType, query.getLocationTypeId())); + if(!CollectionUtils.isEmpty(locationList)){ + List<String> locationIds = locationList.stream().map(TLocation::getId).collect(Collectors.toList()); + wrapper.in(TTask::getLocationId, locationIds); + } } - } - List<TTask> taskList = new ArrayList<>(); - if (deptType == 1) { - // 项目部人员 - List<String> projectIds = new ArrayList<>(); - projectIds.add(deptId); - query.setProjectId(projectIds); + List<TTask> taskList = new ArrayList<>(); + if (deptType == 1) { + // 项目部人员 + if(CollectionUtils.isEmpty(query.getProjectId())){ + TProjectDept projectDept = projectDeptService.getById(deptId); + List<String> projectIds = new ArrayList<>(); + if("0".equals(projectDept.getParentId())){ + List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) + .eq(TProjectDept::getStatus, 1) + .eq(TProjectDept::getParentId, projectDept.getId())); + List<String> ids = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList()); + projectIds.add(projectDept.getId()); + projectIds.addAll(ids); + }else { + projectIds.add(deptId); + } + query.setProjectId(projectIds); + } + }else { + // 公司人员 + // 查询自己的任务列表 + taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) + .eq(TTask::getPatrolInspector, userId)); + if(CollectionUtils.isEmpty(query.getProjectId())){ + // 查询所有项目部的任务列表 + List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) + .eq(TProjectDept::getStatus, 1)); + if(!CollectionUtils.isEmpty(tProjectDeptList)){ + List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList()); + query.setProjectId(projectIds); + } + } + } + + // 查询片区 + if(!CollectionUtils.isEmpty(query.getProjectId())){ + query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList())); + wrapper.in(TTask::getProjectId, query.getProjectId()); + } + + List<TTask> list = taskCleanService.list(wrapper); + if(CollectionUtils.isEmpty(list)){ + return R.ok(map); + } + + if(!CollectionUtils.isEmpty(taskList)){ + list.addAll(taskList); + } + list = list.stream().distinct().collect(Collectors.toList()); + map.put("timeoutWarn", list.stream().filter(task -> task.getStatus() == 2).count()); + int unqualifiedWarn = 0; + List<TEarlyWarning> earlyWarnings = earlyWarningService.list(Wrappers.lambdaQuery(TEarlyWarning.class)); + if(CollectionUtils.isEmpty(earlyWarnings)){ + map.put("unqualifiedWarn", unqualifiedWarn); + }else { + // 将earlyWarnings列表的taskId用逗号拼接 + String taskIds = earlyWarnings.stream().map(TEarlyWarning::getTaskId).collect(Collectors.joining(",")); + for (TTask task : list) { + if(taskIds.contains(task.getId())){ + unqualifiedWarn++; + } + } + map.put("unqualifiedWarn", unqualifiedWarn); + } }else { - // 公司人员 - // 查询自己的任务列表 - taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) - .eq(TTask::getPatrolInspector, userId)); + // 超级管理员 + // 查询点位类型 + if(StringUtils.isNotEmpty(query.getLocationTypeId())){ + // 查询点位 + List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) + .in(TLocation::getLocationType, query.getLocationTypeId())); + if(!CollectionUtils.isEmpty(locationList)){ + List<String> locationIds = locationList.stream().map(TLocation::getId).collect(Collectors.toList()); + wrapper.in(TTask::getLocationId, locationIds); + } + } + // 超级管理员 查询所有的任务列表 + List<TTask> taskList = new ArrayList<>(); if(CollectionUtils.isEmpty(query.getProjectId())){ + taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class)); // 查询所有项目部的任务列表 List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) - .eq(TProjectDept::getStatus, 1) - .ne(TProjectDept::getParentId, 0)); + .eq(TProjectDept::getStatus, 1)); if(!CollectionUtils.isEmpty(tProjectDeptList)){ List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList()); - wrapper.in(TTask::getProjectId, projectIds); + query.setProjectId(projectIds); } } - } - // 查询片区 - if(!CollectionUtils.isEmpty(query.getProjectId())){ - wrapper.in(TTask::getProjectId, query.getProjectId()); - } + // 查询片区 + if(!CollectionUtils.isEmpty(query.getProjectId())){ + query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList())); + wrapper.in(TTask::getProjectId, query.getProjectId()); + } - List<TTask> list = taskCleanService.list(wrapper); - if(CollectionUtils.isEmpty(list)){ - return R.ok(map); - } + List<TTask> list = taskCleanService.list(wrapper); + if(CollectionUtils.isEmpty(list)){ + return R.ok(map); + } - if(!CollectionUtils.isEmpty(taskList)){ - list.addAll(taskList); - } - map.put("timeoutWarn", list.stream().filter(task -> task.getStatus() == 2).count()); - List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2).collect(Collectors.toList()); - if(CollectionUtils.isEmpty(tasks)){ - map.put("unqualifiedWarn", 0); - return R.ok(map); - } - List<String> taskIds = tasks.stream().map(TTask::getId).collect(Collectors.toList()); - List<TTaskDetail> taskDetails = tTaskDetailService.list(Wrappers.lambdaQuery(TTaskDetail.class) - .in(TTaskDetail::getTaskId, taskIds) - .orderByDesc(TTaskDetail::getCreateTime)); - int unqualifiedWarn = 0; - for (TTask task : list) { - TTaskDetail tTaskDetail = taskDetails.stream().filter(taskDetail -> taskDetail.getTaskId().equals(task.getId())).findFirst().orElse(null); - if(Objects.nonNull(tTaskDetail)){ - if(tTaskDetail.getClearStatus() == 2){ - unqualifiedWarn++; + if(!CollectionUtils.isEmpty(taskList)){ + list.addAll(taskList); + } + list = list.stream().distinct().collect(Collectors.toList()); + map.put("timeoutWarn", list.stream().filter(task -> task.getStatus() == 2).count()); + int unqualifiedWarn = 0; + List<TEarlyWarning> earlyWarnings = earlyWarningService.list(Wrappers.lambdaQuery(TEarlyWarning.class)); + if(CollectionUtils.isEmpty(earlyWarnings)){ + map.put("unqualifiedWarn", unqualifiedWarn); + }else { + // 将earlyWarnings列表的taskId用逗号拼接 + String taskIds = earlyWarnings.stream().map(TEarlyWarning::getTaskId).collect(Collectors.joining(",")); + for (TTask task : list) { + if(taskIds.contains(task.getId())){ + unqualifiedWarn++; + } } + map.put("unqualifiedWarn", unqualifiedWarn); } } - map.put("unqualifiedWarn", unqualifiedWarn); return R.ok(map); } @@ -321,92 +539,182 @@ Integer deptType = tokenService.getLoginUser().getUser().getDeptType(); String deptId = tokenService.getLoginUser().getUser().getDeptId(); Long userId = tokenService.getLoginUser().getUserId(); + AnalysisUnqualifiedCleaningVO analysisUnqualifiedCleaningVO = new AnalysisUnqualifiedCleaningVO(); LambdaQueryWrapper<TTask> wrapper = new LambdaQueryWrapper<>(); - // 查询点位类型 - if(StringUtils.isNotEmpty(query.getLocationTypeId())){ - // 查询点位 - List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) - .in(TLocation::getLocationType, query.getLocationTypeId())); - if(!CollectionUtils.isEmpty(locationList)){ - List<String> locationIds = locationList.stream().map(TLocation::getId).collect(Collectors.toList()); - wrapper.in(TTask::getLocationId, locationIds); - } - } - List<TTask> taskList = new ArrayList<>(); - if (deptType == 1) { - // 项目部人员 - List<String> projectIds = new ArrayList<>(); - projectIds.add(deptId); - query.setProjectId(projectIds); - }else { - // 公司人员 - // 查询自己的任务列表 - taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) - .eq(TTask::getPatrolInspector, userId)); - if(CollectionUtils.isEmpty(query.getProjectId())){ - // 查询所有项目部的任务列表 - List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) - .eq(TProjectDept::getStatus, 1) - .ne(TProjectDept::getParentId, 0)); - if(!CollectionUtils.isEmpty(tProjectDeptList)){ - List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList()); - wrapper.in(TTask::getProjectId, projectIds); + if(userId != 1L){ + // 查询点位类型 + if(StringUtils.isNotEmpty(query.getLocationTypeId())){ + // 查询点位 + List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) + .in(TLocation::getLocationType, query.getLocationTypeId())); + if(!CollectionUtils.isEmpty(locationList)){ + List<String> locationIds = locationList.stream().map(TLocation::getId).collect(Collectors.toList()); + wrapper.in(TTask::getLocationId, locationIds); } } - } - - // 查询片区 - if(!CollectionUtils.isEmpty(query.getProjectId())){ - wrapper.in(TTask::getProjectId, query.getProjectId()); - } - - List<TTask> list = taskCleanService.list(wrapper); - if(CollectionUtils.isEmpty(list)){ - return R.ok(); - } - - if(!CollectionUtils.isEmpty(taskList)){ - list.addAll(taskList); - } - - List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2).collect(Collectors.toList()); - if(CollectionUtils.isEmpty(tasks)){ - return R.ok(); - } - List<String> taskIds = tasks.stream().map(TTask::getId).collect(Collectors.toList()); - List<TTaskDetail> taskDetails = tTaskDetailService.list(Wrappers.lambdaQuery(TTaskDetail.class) - .in(TTaskDetail::getTaskId, taskIds) - .eq(TTaskDetail::getClearStatus, 2) - .orderByDesc(TTaskDetail::getCreateTime)); - List<TTaskDetail> taskDetailList = new ArrayList<>(); - for (TTask task : list) { - TTaskDetail tTaskDetail = taskDetails.stream().filter(taskDetail -> taskDetail.getTaskId().equals(task.getId())).findFirst().orElse(null); - if(Objects.nonNull(tTaskDetail)){ - taskDetailList.add(tTaskDetail); + List<TTask> taskList = new ArrayList<>(); + if (deptType == 1) { + // 项目部人员 + if(CollectionUtils.isEmpty(query.getProjectId())){ + TProjectDept projectDept = projectDeptService.getById(deptId); + List<String> projectIds = new ArrayList<>(); + if("0".equals(projectDept.getParentId())){ + List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) + .eq(TProjectDept::getStatus, 1) + .eq(TProjectDept::getParentId, projectDept.getId())); + List<String> ids = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList()); + projectIds.add(projectDept.getId()); + projectIds.addAll(ids); + }else { + projectIds.add(deptId); + } + query.setProjectId(projectIds); + } + }else { + // 公司人员 + // 查询自己的任务列表 + taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) + .eq(TTask::getPatrolInspector, userId)); + if(CollectionUtils.isEmpty(query.getProjectId())){ + // 查询所有项目部的任务列表 + List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) + .eq(TProjectDept::getStatus, 1)); + if(!CollectionUtils.isEmpty(tProjectDeptList)){ + List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList()); + query.setProjectId(projectIds); + } + } } + + // 查询片区 + if(!CollectionUtils.isEmpty(query.getProjectId())){ + query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList())); + wrapper.in(TTask::getProjectId, query.getProjectId()); + } + + List<TTask> list = taskCleanService.list(wrapper); + if(CollectionUtils.isEmpty(list)){ + return R.ok(); + } + + if(!CollectionUtils.isEmpty(taskList)){ + list.addAll(taskList); + } + list = list.stream().distinct().collect(Collectors.toList()); + + List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2 + && task.getStatus() != 3 && task.getStatus() != 4).collect(Collectors.toList()); + if(CollectionUtils.isEmpty(tasks)){ + return R.ok(); + } + List<String> taskIds = tasks.stream().map(TTask::getId).collect(Collectors.toList()); + List<TTaskDetail> taskDetails = tTaskDetailService.list(Wrappers.lambdaQuery(TTaskDetail.class) + .in(TTaskDetail::getTaskId, taskIds) + .eq(TTaskDetail::getClearStatus, 2) + .eq(TTaskDetail::getHandleType,1) + .orderByDesc(TTaskDetail::getCreateTime)); + List<TTaskDetail> taskDetailList = new ArrayList<>(); + for (TTask task : list) { + TTaskDetail tTaskDetail = taskDetails.stream().filter(taskDetail -> taskDetail.getTaskId().equals(task.getId())).findFirst().orElse(null); + if(Objects.nonNull(tTaskDetail)){ + taskDetailList.add(tTaskDetail); + } + } + analysisUnqualifiedCleaningVO.setTotal(taskDetailList.size()); + + // 查询所有的不合格原因 + List<TDictData> dictDataList = dictDataService.list(Wrappers.lambdaQuery(TDictData.class) + .eq(TDictData::getDataType, 2)); + List<AnalysisUnqualifiedCleaningDetailVO> analysisUnqualifiedCleaningDetailVOS = new ArrayList<>(); + for (TDictData tDictData : dictDataList) { + List<TTaskDetail> tTaskDetails = taskDetailList.stream().filter(taskDetail -> StringUtils.isNotEmpty(taskDetail.getUnqualified())&&taskDetail.getUnqualified().equals(tDictData.getId())).collect(Collectors.toList()); + AnalysisUnqualifiedCleaningDetailVO analysisUnqualifiedCleaningDetailVO = new AnalysisUnqualifiedCleaningDetailVO(); + analysisUnqualifiedCleaningDetailVO.setUnqualifiedName(tDictData.getDataContent()); + analysisUnqualifiedCleaningDetailVO.setCount(tTaskDetails.size()); + analysisUnqualifiedCleaningDetailVOS.add(analysisUnqualifiedCleaningDetailVO); + } + analysisUnqualifiedCleaningVO.setAnalysisUnqualifiedCleaningDetailVOS(analysisUnqualifiedCleaningDetailVOS); + }else { + // 超级管理员 + // 查询点位类型 + if(StringUtils.isNotEmpty(query.getLocationTypeId())){ + // 查询点位 + List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) + .in(TLocation::getLocationType, query.getLocationTypeId())); + if(!CollectionUtils.isEmpty(locationList)){ + List<String> locationIds = locationList.stream().map(TLocation::getId).collect(Collectors.toList()); + wrapper.in(TTask::getLocationId, locationIds); + } + } + // 超级管理员 查询所有的任务列表 + List<TTask> taskList = new ArrayList<>(); + if(CollectionUtils.isEmpty(query.getProjectId())){ + taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class)); + // 查询所有项目部的任务列表 + List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) + .eq(TProjectDept::getStatus, 1)); + if(!CollectionUtils.isEmpty(tProjectDeptList)){ + List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList()); + query.setProjectId(projectIds); + } + } + + // 查询片区 + if(!CollectionUtils.isEmpty(query.getProjectId())){ + query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList())); + wrapper.in(TTask::getProjectId, query.getProjectId()); + } + + List<TTask> list = taskCleanService.list(wrapper); + if(CollectionUtils.isEmpty(list)){ + return R.ok(); + } + + if(!CollectionUtils.isEmpty(taskList)){ + list.addAll(taskList); + } + list = list.stream().distinct().collect(Collectors.toList()); + + List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2 + && task.getStatus() != 3 && task.getStatus() != 4).collect(Collectors.toList()); + if(CollectionUtils.isEmpty(tasks)){ + return R.ok(); + } + List<String> taskIds = tasks.stream().map(TTask::getId).collect(Collectors.toList()); + List<TTaskDetail> taskDetails = tTaskDetailService.list(Wrappers.lambdaQuery(TTaskDetail.class) + .in(TTaskDetail::getTaskId, taskIds) + .eq(TTaskDetail::getHandleType,1) + .eq(TTaskDetail::getClearStatus, 2) + .orderByDesc(TTaskDetail::getCreateTime)); + List<TTaskDetail> taskDetailList = new ArrayList<>(); + for (TTask task : list) { + TTaskDetail tTaskDetail = taskDetails.stream().filter(taskDetail -> taskDetail.getTaskId().equals(task.getId())).findFirst().orElse(null); + if(Objects.nonNull(tTaskDetail)){ + taskDetailList.add(tTaskDetail); + } + } + analysisUnqualifiedCleaningVO.setTotal(taskDetailList.size()); + + // 查询所有的不合格原因 + List<TDictData> dictDataList = dictDataService.list(Wrappers.lambdaQuery(TDictData.class) + .eq(TDictData::getDataType, 2)); + List<AnalysisUnqualifiedCleaningDetailVO> analysisUnqualifiedCleaningDetailVOS = new ArrayList<>(); + for (TDictData tDictData : dictDataList) { + List<TTaskDetail> tTaskDetails = taskDetailList.stream().filter(taskDetail -> StringUtils.isNotEmpty(taskDetail.getUnqualified())&& taskDetail.getUnqualified().equals(tDictData.getId())).collect(Collectors.toList()); + AnalysisUnqualifiedCleaningDetailVO analysisUnqualifiedCleaningDetailVO = new AnalysisUnqualifiedCleaningDetailVO(); + analysisUnqualifiedCleaningDetailVO.setUnqualifiedName(tDictData.getDataContent()); + analysisUnqualifiedCleaningDetailVO.setCount(tTaskDetails.size()); + analysisUnqualifiedCleaningDetailVOS.add(analysisUnqualifiedCleaningDetailVO); + } + analysisUnqualifiedCleaningVO.setAnalysisUnqualifiedCleaningDetailVOS(analysisUnqualifiedCleaningDetailVOS); } - AnalysisUnqualifiedCleaningVO analysisUnqualifiedCleaningVO = new AnalysisUnqualifiedCleaningVO(); - analysisUnqualifiedCleaningVO.setTotal(taskDetailList.size()); - - // 查询所有的不合格原因 - List<TDictData> dictDataList = dictDataService.list(Wrappers.lambdaQuery(TDictData.class) - .eq(TDictData::getDataType, 2)); - List<AnalysisUnqualifiedCleaningDetailVO> analysisUnqualifiedCleaningDetailVOS = new ArrayList<>(); - for (TDictData tDictData : dictDataList) { - List<TTaskDetail> tTaskDetails = taskDetailList.stream().filter(taskDetail -> taskDetail.getUnqualified().equals(tDictData.getId())).collect(Collectors.toList()); - AnalysisUnqualifiedCleaningDetailVO analysisUnqualifiedCleaningDetailVO = new AnalysisUnqualifiedCleaningDetailVO(); - analysisUnqualifiedCleaningDetailVO.setUnqualifiedName(tDictData.getDataContent()); - analysisUnqualifiedCleaningDetailVO.setCount(tTaskDetails.size()); - analysisUnqualifiedCleaningDetailVOS.add(analysisUnqualifiedCleaningDetailVO); - } - analysisUnqualifiedCleaningVO.setAnalysisUnqualifiedCleaningDetailVOS(analysisUnqualifiedCleaningDetailVOS); return R.ok(analysisUnqualifiedCleaningVO); } @ApiOperation(value = "巡检排行榜") @PostMapping(value = "/inspectionRankingList") - public R<List<DataStatisticsRankVO>> inspectionRankingList(@RequestBody DataStatisticsRankQuery query) { + public R<List<DataStatisticsRankVO>> inspectionRankingList(@Validated @RequestBody DataStatisticsRankQuery query) { Integer deptType = tokenService.getLoginUser().getUser().getDeptType(); String deptId = tokenService.getLoginUser().getUser().getDeptId(); Long userId = tokenService.getLoginUser().getUserId(); @@ -434,32 +742,199 @@ } wrapper.between(TTask::getCreateTime, startTime, endTime); - - // 查询点位类型 - if(StringUtils.isNotEmpty(query.getLocationTypeId())){ - // 查询点位 - List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) - .in(TLocation::getLocationType, query.getLocationTypeId())); - if(!CollectionUtils.isEmpty(locationList)){ - List<String> locationIds = locationList.stream().map(TLocation::getId).collect(Collectors.toList()); - wrapper.in(TTask::getLocationId, locationIds); + List<DataStatisticsRankVO> result = new ArrayList<>(); + if(userId != 1L){ + // 查询点位类型 + if(StringUtils.isNotEmpty(query.getLocationTypeId())){ + // 查询点位 + List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) + .in(TLocation::getLocationType, query.getLocationTypeId())); + if(!CollectionUtils.isEmpty(locationList)){ + List<String> locationIds = locationList.stream().map(TLocation::getId).collect(Collectors.toList()); + wrapper.in(TTask::getLocationId, locationIds); + } } - } - List<TTask> taskList = new ArrayList<>(); - List<SysUser> sysUsers = new ArrayList<>(); - if(query.getRankType() == 1){ - sysUsers = sysUserService.selectListByDeptId(deptId); - } - if (deptType == 1) { - // 项目部人员 - List<String> projectIds = new ArrayList<>(); - projectIds.add(deptId); - query.setProjectId(projectIds); + List<TTask> taskList = new ArrayList<>(); + List<SysUser> sysUsers = new ArrayList<>(); + if(query.getRankType() == 1){ + sysUsers = sysUserService.selectListByDeptId(deptId); + } + if (deptType == 1) { + // 项目部人员 + if(CollectionUtils.isEmpty(query.getProjectId())){ + TProjectDept projectDept = projectDeptService.getById(deptId); + List<String> projectIds = new ArrayList<>(); + if("0".equals(projectDept.getParentId())){ + List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) + .eq(TProjectDept::getStatus, 1) + .eq(TProjectDept::getParentId, projectDept.getId())); + List<String> ids = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList()); + projectIds.add(projectDept.getId()); + projectIds.addAll(ids); + }else { + projectIds.add(deptId); + } + query.setProjectId(projectIds); + } + }else { + // 公司人员 + // 查询自己的任务列表 + taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) + .eq(TTask::getPatrolInspector, userId) + .between(TTask::getCreateTime, startTime, endTime)); + if(CollectionUtils.isEmpty(query.getProjectId())){ + // 查询所有项目部的任务列表 + List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) + .eq(TProjectDept::getStatus, 1)); + if(!CollectionUtils.isEmpty(tProjectDeptList)){ + List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList()); + query.setProjectId(projectIds); + } + if(query.getRankType() == 1){ + // 查询所有项目部的人员 + List<SysUser> sysUserList = sysUserService.selectListByDeptType(1); + if(!CollectionUtils.isEmpty(sysUserList)){ + sysUsers.addAll(sysUserList); + } + } + }else { + if(query.getRankType() == 1){ + // 查询所有片区 + List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) + .eq(TProjectDept::getStatus, 1) + .in(TProjectDept::getId, query.getProjectId())); + if(!CollectionUtils.isEmpty(tProjectDeptList)){ + List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).distinct().collect(Collectors.toList()); + List<SysUser> sysUserList = sysUserService.selectListByDeptIds(projectIds); + sysUsers.addAll(sysUserList); + } + } + } + } + + // 查询片区 + if(!CollectionUtils.isEmpty(query.getProjectId())){ + query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList())); + wrapper.in(TTask::getProjectId, query.getProjectId()); + } + + List<TTask> list = taskCleanService.list(wrapper); + if(CollectionUtils.isEmpty(list)){ + return R.ok(); + } + + if(!CollectionUtils.isEmpty(taskList)){ + list.addAll(taskList); + } + list = list.stream().distinct().collect(Collectors.toList()); + + List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2 + && task.getStatus() != 3 && task.getStatus() != 4).collect(Collectors.toList()); + if(CollectionUtils.isEmpty(tasks)){ + return R.ok(); + } + List<String> taskIds = tasks.stream().map(TTask::getId).collect(Collectors.toList()); + List<TTaskDetail> taskDetails = tTaskDetailService.list(Wrappers.lambdaQuery(TTaskDetail.class) + .in(TTaskDetail::getTaskId, taskIds) + .eq(TTaskDetail::getHandleType,1) + .orderByDesc(TTaskDetail::getCreateTime)); + + // 使用 stream 去重,保留每个 taskId 最新的一条 + taskDetails = new ArrayList<>(taskDetails.stream() + .collect(Collectors.groupingBy( + TTaskDetail::getTaskId, + Collectors.collectingAndThen( + Collectors.toList(), + list1 -> list1.get(0) + ) + )) + .values()); + + if(query.getRankType() == 1){ + // 用户排名 + for (SysUser sysUser : sysUsers) { + DataStatisticsRankVO dataStatisticsRankVO = new DataStatisticsRankVO(); + dataStatisticsRankVO.setName(sysUser.getNickName()); + List<String> taskIdList = tasks.stream().filter(task -> task.getPatrolInspector().equals(String.valueOf(sysUser.getUserId()))).map(TTask::getId).collect(Collectors.toList()); + dataStatisticsRankVO.setTaskCount(taskIdList.size()); + long count = taskDetails.stream().filter(taskDetail -> taskIdList.contains(taskDetail.getTaskId()) + && taskDetail.getClearStatus() == 1).count(); + dataStatisticsRankVO.setQualifiedCount(count); + result.add(dataStatisticsRankVO); + } + }else { + // 查询项目部 + List<TProjectDept> projectDepts; + if(deptType == 1){ + projectDepts = new ArrayList<>(); + // 当前项目部 + TProjectDept projectDept = projectDeptService.getById(deptId); + if(Objects.nonNull(projectDept) && !"0".equals(projectDept.getParentId())){ + projectDept = projectDeptService.getById(projectDept.getParentId()); + } + projectDepts.add(projectDept); + }else { + if (CollectionUtils.isEmpty(query.getProjectId())){ + projectDepts = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) + .eq(TProjectDept::getStatus, 1) + .eq(TProjectDept::getParentId, 0)); + }else { + List<TProjectDept> projectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) + .eq(TProjectDept::getStatus, 1) + .in(TProjectDept::getId, query.getProjectId())); + List<String> parentIds = projectDeptList.stream().map(TProjectDept::getParentId).collect(Collectors.toList()); + projectDepts = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) + .eq(TProjectDept::getStatus, 1) + .in(TProjectDept::getId, parentIds)); + } + } + if(CollectionUtils.isEmpty(projectDepts)){ + return R.ok(); + } + // 查询所有片区 + List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) + .eq(TProjectDept::getStatus, 1) + .ne(TProjectDept::getParentId, 0)); + for (TProjectDept projectDept : projectDepts) { + DataStatisticsRankVO dataStatisticsRankVO = new DataStatisticsRankVO(); + dataStatisticsRankVO.setName(projectDept.getProjectName()); + List<String> taskIdList; + if(!CollectionUtils.isEmpty(tProjectDeptList)){ + List<String> projectIds = tProjectDeptList.stream().filter(e -> e.getParentId().equals(projectDept.getId())).map(TProjectDept::getId).collect(Collectors.toList()); + taskIdList = tasks.stream().filter(task -> projectIds.contains(task.getProjectId())).map(TTask::getId).collect(Collectors.toList()); + } else { + taskIdList = new ArrayList<>(); + } + dataStatisticsRankVO.setTaskCount(taskIdList.size()); + if(CollectionUtils.isEmpty(taskIdList)){ + dataStatisticsRankVO.setQualifiedCount(0L); + continue; + } + long count = taskDetails.stream().filter(taskDetail -> taskIdList.contains(taskDetail.getTaskId()) + && taskDetail.getClearStatus() == 1).count(); + dataStatisticsRankVO.setQualifiedCount(count); + result.add(dataStatisticsRankVO); + } + } }else { - // 公司人员 - // 查询自己的任务列表 - taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) - .eq(TTask::getPatrolInspector, userId)); + // 超级管理员 + // 查询点位类型 + if(StringUtils.isNotEmpty(query.getLocationTypeId())){ + // 查询点位 + List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) + .in(TLocation::getLocationType, query.getLocationTypeId())); + if(!CollectionUtils.isEmpty(locationList)){ + List<String> locationIds = locationList.stream().map(TLocation::getId).collect(Collectors.toList()); + wrapper.in(TTask::getLocationId, locationIds); + } + } + List<SysUser> sysUsers = new ArrayList<>(); + if(query.getRankType() == 1){ + sysUsers = sysUserService.selectListByDeptId(deptId); + } + // 超级管理员 查询所有的任务列表 + List<TTask> taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) + .between(TTask::getImplementTime, startTime, endTime)); if(CollectionUtils.isEmpty(query.getProjectId())){ // 查询所有项目部的任务列表 List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) @@ -467,7 +942,7 @@ .ne(TProjectDept::getParentId, 0)); if(!CollectionUtils.isEmpty(tProjectDeptList)){ List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList()); - wrapper.in(TTask::getProjectId, projectIds); + query.setProjectId(projectIds); } if(query.getRankType() == 1){ // 查询所有项目部的人员 @@ -489,53 +964,60 @@ } } } - } - // 查询片区 - if(!CollectionUtils.isEmpty(query.getProjectId())){ - wrapper.in(TTask::getProjectId, query.getProjectId()); - } - - List<TTask> list = taskCleanService.list(wrapper); - if(CollectionUtils.isEmpty(list)){ - return R.ok(); - } - - if(!CollectionUtils.isEmpty(taskList)){ - list.addAll(taskList); - } - - List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2).collect(Collectors.toList()); - if(CollectionUtils.isEmpty(tasks)){ - return R.ok(); - } - List<String> taskIds = tasks.stream().map(TTask::getId).collect(Collectors.toList()); - List<TTaskDetail> taskDetails = tTaskDetailService.list(Wrappers.lambdaQuery(TTaskDetail.class) - .in(TTaskDetail::getTaskId, taskIds) - .eq(TTaskDetail::getClearStatus, 1) - .orderByDesc(TTaskDetail::getCreateTime)); - - - List<DataStatisticsRankVO> result = new ArrayList<>(); - if(query.getRankType() == 1){ - // 用户排名 - for (SysUser sysUser : sysUsers) { - DataStatisticsRankVO dataStatisticsRankVO = new DataStatisticsRankVO(); - dataStatisticsRankVO.setName(sysUser.getNickName()); - List<String> taskIdList = tasks.stream().filter(task -> task.getPatrolInspector().equals(String.valueOf(sysUser.getUserId()))).map(TTask::getId).collect(Collectors.toList()); - dataStatisticsRankVO.setTaskCount(taskIdList.size()); - long count = taskDetails.stream().filter(taskDetail -> taskIdList.contains(taskDetail.getTaskId())).count(); - dataStatisticsRankVO.setQualifiedCount(count); + // 查询片区 + if(!CollectionUtils.isEmpty(query.getProjectId())){ + query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList())); + wrapper.in(TTask::getProjectId, query.getProjectId()); } - }else { - // 查询项目部 - List<TProjectDept> projectDepts; - if(deptType == 1){ - projectDepts = new ArrayList<>(); - // 当前项目部 - TProjectDept projectDept = projectDeptService.getById(deptId); - projectDepts.add(projectDept); + + List<TTask> list = taskCleanService.list(wrapper); + if(CollectionUtils.isEmpty(list)){ + return R.ok(); + } + + if(!CollectionUtils.isEmpty(taskList)){ + list.addAll(taskList); + } + list = list.stream().distinct().collect(Collectors.toList()); + + List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2 + && task.getStatus() != 3 && task.getStatus() != 4).collect(Collectors.toList()); + if(CollectionUtils.isEmpty(tasks)){ + return R.ok(); + } + List<String> taskIds = tasks.stream().map(TTask::getId).collect(Collectors.toList()); + List<TTaskDetail> taskDetails = tTaskDetailService.list(Wrappers.lambdaQuery(TTaskDetail.class) + .in(TTaskDetail::getTaskId, taskIds) + .eq(TTaskDetail::getHandleType,1) + .orderByDesc(TTaskDetail::getCreateTime)); + + // 使用 stream 去重,保留每个 taskId 最新的一条 + taskDetails = new ArrayList<>(taskDetails.stream() + .collect(Collectors.groupingBy( + TTaskDetail::getTaskId, + Collectors.collectingAndThen( + Collectors.toList(), + list1 -> list1.get(0) + ) + )) + .values()); + + if(query.getRankType() == 1){ + // 用户排名 + for (SysUser sysUser : sysUsers) { + DataStatisticsRankVO dataStatisticsRankVO = new DataStatisticsRankVO(); + dataStatisticsRankVO.setName(sysUser.getNickName()); + List<String> taskIdList = tasks.stream().filter(task -> task.getPatrolInspector().equals(String.valueOf(sysUser.getUserId()))).map(TTask::getId).collect(Collectors.toList()); + dataStatisticsRankVO.setTaskCount(taskIdList.size()); + long count = taskDetails.stream().filter(taskDetail -> taskIdList.contains(taskDetail.getTaskId()) + && taskDetail.getClearStatus() == 1).count(); + dataStatisticsRankVO.setQualifiedCount(count); + result.add(dataStatisticsRankVO); + } }else { + // 超级管理员 查询所有项目部 + List<TProjectDept> projectDepts; if (CollectionUtils.isEmpty(query.getProjectId())){ projectDepts = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) .eq(TProjectDept::getStatus, 1) @@ -549,35 +1031,388 @@ .eq(TProjectDept::getStatus, 1) .in(TProjectDept::getId, parentIds)); } + if(CollectionUtils.isEmpty(projectDepts)){ + return R.ok(); + } + // 查询所有片区 + List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) + .eq(TProjectDept::getStatus, 1) + .ne(TProjectDept::getParentId, 0)); + for (TProjectDept projectDept : projectDepts) { + DataStatisticsRankVO dataStatisticsRankVO = new DataStatisticsRankVO(); + dataStatisticsRankVO.setName(projectDept.getProjectName()); + List<String> taskIdList; + if(!CollectionUtils.isEmpty(tProjectDeptList)){ + List<String> projectIds = tProjectDeptList.stream().filter(e -> e.getParentId().equals(projectDept.getId())).map(TProjectDept::getId).collect(Collectors.toList()); + taskIdList = tasks.stream().filter(task -> projectIds.contains(task.getProjectId())).map(TTask::getId).collect(Collectors.toList()); + } else { + taskIdList = new ArrayList<>(); + } + dataStatisticsRankVO.setTaskCount(taskIdList.size()); + if(CollectionUtils.isEmpty(taskIdList)){ + dataStatisticsRankVO.setQualifiedCount(0L); + continue; + } + long count = taskDetails.stream().filter(taskDetail -> taskIdList.contains(taskDetail.getTaskId()) + && taskDetail.getClearStatus() == 1).count(); + dataStatisticsRankVO.setQualifiedCount(count); + result.add(dataStatisticsRankVO); + } } - if(CollectionUtils.isEmpty(projectDepts)){ + } + // 先根据任务总数排序,再根据合格数进行排序 + result.sort((o1, o2) -> { + if (o1.getTaskCount().equals(o2.getTaskCount())) { + return o2.getQualifiedCount().compareTo(o1.getQualifiedCount()); + }else{ + return o2.getTaskCount().compareTo(o1.getTaskCount()); + } + }); + return R.ok(result); + } + + + @ApiOperation(value = "点位巡检热力图-数量统计") + @PostMapping(value = "/pointInspectionHeatStatistics") + public R<Map<String, Object>> pointInspectionHeatStatistics(@RequestBody DataStatisticsQuery query) { + Map<String, Object> map = new HashMap<>(); + Integer deptType = tokenService.getLoginUser().getUser().getDeptType(); + String deptId = tokenService.getLoginUser().getUser().getDeptId(); + Long userId = tokenService.getLoginUser().getUserId(); + + LambdaQueryWrapper<TTask> wrapper = new LambdaQueryWrapper<>(); + + Map<String, Date> yearDate = DateUtils.getYearDate(new Date()); + String startTime = new SimpleDateFormat("yyyy-MM-dd").format(yearDate.get("first")); + String endTime = new SimpleDateFormat("yyyy-MM-dd").format(yearDate.get("last")); + wrapper.between(TTask::getImplementTime, startTime, endTime); + + List<TTask> list; + if (userId != 1L) { + // 查询点位类型 + if(StringUtils.isNotEmpty(query.getLocationTypeId())){ + // 查询点位 + List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) + .in(TLocation::getLocationType, query.getLocationTypeId())); + if(!CollectionUtils.isEmpty(locationList)){ + List<String> locationIds = locationList.stream().map(TLocation::getId).collect(Collectors.toList()); + wrapper.in(TTask::getLocationId, locationIds); + } + map.put("totalLocationNum", locationList.size()); + } + List<TTask> taskList = new ArrayList<>(); + if (deptType == 1) { + // 项目部人员 + if(CollectionUtils.isEmpty(query.getProjectId())){ + TProjectDept projectDept = projectDeptService.getById(deptId); + List<String> projectIds = new ArrayList<>(); + if("0".equals(projectDept.getParentId())){ + List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) + .eq(TProjectDept::getStatus, 1) + .eq(TProjectDept::getParentId, projectDept.getId())); + List<String> ids = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList()); + projectIds.add(projectDept.getId()); + projectIds.addAll(ids); + }else { + projectIds.add(deptId); + } + query.setProjectId(projectIds); + } + // 巡检员数 + Integer totalEmployeeNum = sysUserService.selectUserCount(query.getProjectId(),deptType); + map.put("totalEmployeeNum", totalEmployeeNum); + }else { + // 公司人员 + // 查询自己的任务列表 + taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) + .eq(TTask::getPatrolInspector, userId) + .between(TTask::getImplementTime, startTime, endTime)); + if(CollectionUtils.isEmpty(query.getProjectId())){ + // 查询所有项目部的任务列表 + List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) + .eq(TProjectDept::getStatus, 1)); + if(!CollectionUtils.isEmpty(tProjectDeptList)){ + List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList()); + query.setProjectId(projectIds); + } + }else { + + } + // 巡检员数 + Integer totalEmployeeNum = sysUserService.selectUserCount(query.getProjectId(),1); + map.put("totalEmployeeNum", totalEmployeeNum+1); + } + + // 查询片区 + if(!CollectionUtils.isEmpty(query.getProjectId())){ + query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList())); + wrapper.in(TTask::getProjectId, query.getProjectId()); + // 查询点位数 + List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) + .in(TLocation::getProjectId, query.getProjectId())); + map.put("totalLocationNum", locationList.size()); + } + + list = taskCleanService.list(wrapper); + if(CollectionUtils.isEmpty(list)){ return R.ok(); } - // 查询所有片区 - List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) - .eq(TProjectDept::getStatus, 1) - .ne(TProjectDept::getParentId, 0)); - for (TProjectDept projectDept : projectDepts) { - DataStatisticsRankVO dataStatisticsRankVO = new DataStatisticsRankVO(); - dataStatisticsRankVO.setName(projectDept.getProjectName()); - List<String> taskIdList; + + if(!CollectionUtils.isEmpty(taskList)){ + list.addAll(taskList); + } + list = list.stream().distinct().collect(Collectors.toList()); + + }else { + // 超级管理员 + // 查询点位类型 + if(StringUtils.isNotEmpty(query.getLocationTypeId())){ + // 查询点位 + List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) + .in(TLocation::getLocationType, query.getLocationTypeId())); + if(!CollectionUtils.isEmpty(locationList)){ + List<String> locationIds = locationList.stream().map(TLocation::getId).collect(Collectors.toList()); + wrapper.in(TTask::getLocationId, locationIds); + } + map.put("totalLocationNum", locationList.size()); + } + // 超级管理员 查询所有的任务列表 + List<TTask> taskList = new ArrayList<>(); + if(CollectionUtils.isEmpty(query.getProjectId())){ + taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) + .between(TTask::getImplementTime, startTime, endTime)); + // 查询所有项目部的任务列表 + List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) + .eq(TProjectDept::getStatus, 1)); if(!CollectionUtils.isEmpty(tProjectDeptList)){ List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList()); - taskIdList = tasks.stream().filter(task -> projectIds.contains(task.getProjectId())).map(TTask::getId).collect(Collectors.toList()); - } else { - taskIdList = new ArrayList<>(); + query.setProjectId(projectIds); } - dataStatisticsRankVO.setTaskCount(taskIdList.size()); - if(CollectionUtils.isEmpty(taskIdList)){ - dataStatisticsRankVO.setQualifiedCount(0L); - continue; + } + + // 查询片区 + if(!CollectionUtils.isEmpty(query.getProjectId())){ + query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList())); + wrapper.in(TTask::getProjectId, query.getProjectId()); + List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class) + .in(TLocation::getProjectId, query.getProjectId())); + map.put("totalLocationNum", locationList.size()); + taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) + .in(TTask::getProjectId, query.getProjectId()) + .between(TTask::getImplementTime, startTime, endTime)); + } + + list = taskCleanService.list(wrapper); + if(CollectionUtils.isEmpty(list)){ + return R.ok(); + } + + if(!CollectionUtils.isEmpty(taskList)){ + list.addAll(taskList); + } + list = list.stream().distinct().collect(Collectors.toList()); + + // 巡检员数 + if(CollectionUtils.isEmpty(query.getProjectId())){ + Integer totalEmployeeNum = sysUserService.selectUserCount(query.getProjectId(),deptType); + Integer totalEmployeeNum1 = sysUserService.selectUserCount(query.getProjectId(),1); + map.put("totalEmployeeNum", totalEmployeeNum+totalEmployeeNum1); + }else { + Integer totalEmployeeNum = sysUserService.selectUserCount(query.getProjectId(),1); + map.put("totalEmployeeNum", totalEmployeeNum); + } + + } + + // 查询任务相关数据 + // 总计任务数 + map.put("totalTaskNum", list.size()); + // 片区数量 + map.put("totalProjectNum", query.getProjectId().size()); + + // 合格率 + // 匹配任务详情查看合格数量 + List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2 + && task.getStatus() != 3 && task.getStatus() != 4).collect(Collectors.toList()); + if(CollectionUtils.isEmpty(tasks)){ + map.put("qualifiedRate",BigDecimal.ZERO); + return R.ok(map); + } + List<String> taskIds = tasks.stream().map(TTask::getId).collect(Collectors.toList()); + List<TTaskDetail> taskDetails = tTaskDetailService.list(Wrappers.lambdaQuery(TTaskDetail.class) + .in(TTaskDetail::getTaskId, taskIds) + .orderByDesc(TTaskDetail::getCreateTime)); + int qualifiedWarn = 0; + for (TTask task : list) { + TTaskDetail tTaskDetail = taskDetails.stream().filter(taskDetail -> taskDetail.getTaskId().equals(task.getId())).findFirst().orElse(null); + if(Objects.nonNull(tTaskDetail)){ + if(Objects.nonNull(tTaskDetail.getClearStatus()) && tTaskDetail.getClearStatus() == 1){ + qualifiedWarn++; } - long count = taskDetails.stream().filter(taskDetail -> taskIdList.contains(taskDetail.getTaskId())).count(); - dataStatisticsRankVO.setQualifiedCount(count); + } + } + map.put("qualifiedRate", new BigDecimal(qualifiedWarn).divide(new BigDecimal(tasks.size()), 2, RoundingMode.HALF_DOWN)); + + return R.ok(map); + } + + @ApiOperation(value = "点位巡检热力图-点位地图") + @PostMapping(value = "/pointInspectionHeatMap") + public R<List<TLocation>> pointInspectionHeatMap(@RequestBody DataStatisticsQuery query) { + Integer deptType = tokenService.getLoginUser().getUser().getDeptType(); + String deptId = tokenService.getLoginUser().getUser().getDeptId(); + Long userId = tokenService.getLoginUser().getUserId(); + + LambdaQueryWrapper<TLocation> wrapper = new LambdaQueryWrapper<>(); + + Map<String, Date> yearDate = DateUtils.getYearDate(new Date()); + String startTime = new SimpleDateFormat("yyyy-MM-dd").format(yearDate.get("first")); + String endTime = new SimpleDateFormat("yyyy-MM-dd").format(yearDate.get("last")); + wrapper.between(TLocation::getCreateTime, startTime, endTime); + + // 查询点位类型 + if(StringUtils.isNotEmpty(query.getLocationTypeId())){ + // 查询点位 + wrapper.in(TLocation::getLocationType, query.getLocationTypeId()); + } + if(StringUtils.isNotEmpty(query.getLocationNameOrCode())){ + wrapper.and(e->e.like(TLocation::getLocationName, query.getLocationNameOrCode()).or() + .like(TLocation::getLocationCode, query.getLocationNameOrCode())); + } + if (userId != 1L) { + if (deptType == 1) { + // 项目部人员 + if(CollectionUtils.isEmpty(query.getProjectId())){ + TProjectDept projectDept = projectDeptService.getById(deptId); + List<String> projectIds = new ArrayList<>(); + if("0".equals(projectDept.getParentId())){ + List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) + .eq(TProjectDept::getStatus, 1) + .eq(TProjectDept::getParentId, projectDept.getId())); + List<String> ids = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList()); + projectIds.add(projectDept.getId()); + projectIds.addAll(ids); + }else { + projectIds.add(deptId); + } + query.setProjectId(projectIds); + } + }else { + // 公司人员 + if(CollectionUtils.isEmpty(query.getProjectId())){ + // 查询所有项目部的任务列表 + List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) + .eq(TProjectDept::getStatus, 1)); + if(!CollectionUtils.isEmpty(tProjectDeptList)){ + List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList()); + query.setProjectId(projectIds); + } + } + } + }else { + // 超级管理员 + if(CollectionUtils.isEmpty(query.getProjectId())){ + // 查询所有项目部的任务列表 + List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) + .eq(TProjectDept::getStatus, 1)); + if(!CollectionUtils.isEmpty(tProjectDeptList)){ + List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList()); + query.setProjectId(projectIds); + } } } - return R.ok(result); + // 查询片区 + if(!CollectionUtils.isEmpty(query.getProjectId())){ + query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList())); + wrapper.in(TLocation::getProjectId, query.getProjectId()); + } + + // 查询点位 + List<TLocation> locationList = locationService.list(wrapper); + + if(CollectionUtils.isEmpty(locationList)){ + return R.ok(locationList); + } + + List<String> locationIds = locationList.stream().map(TLocation::getId).collect(Collectors.toList()); + + // 查询任务 + List<TTask> tasks = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) + .in(TTask::getLocationId, locationIds)); + + for (TLocation tLocation : locationList) { + long count = tasks.stream().filter(task -> task.getLocationId().equals(tLocation.getId())).count(); + tLocation.setTaskNum(count); + } + return R.ok(locationList); + } + + + @ApiOperation(value = "点位巡检热力图-点位详情和统计") + @PostMapping(value = "/pointInspectionHeatDetailStatistics") + public R<TLocationStatisticsVO> pointInspectionHeatDetailStatistics(@Validated @RequestBody PointDetailQuery query) { + + TLocation location = locationService.getById(query.getLocationId()); + TLocationStatisticsVO locationStatisticsVO = new TLocationStatisticsVO(); + BeanUtils.copyProperties(location, locationStatisticsVO); + + List<TTask> list = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) + .eq(TTask::getLocationId, query.getLocationId())); + // 总数 + locationStatisticsVO.setTotalInspection(list.size()); + + // 完成数 + long completeInspection = list.stream().filter(task -> task.getStatus() == 6 || task.getStatus() == 5).count(); + locationStatisticsVO.setCompleteInspection(completeInspection); + + // 合格率 + List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2 + && task.getStatus() != 3 && task.getStatus() != 4).collect(Collectors.toList()); + if(CollectionUtils.isEmpty(tasks)){ + locationStatisticsVO.setPassRate(new BigDecimal(0)); + return R.ok(locationStatisticsVO); + } + List<String> taskIds = tasks.stream().map(TTask::getId).collect(Collectors.toList()); + List<TTaskDetail> taskDetails = tTaskDetailService.list(Wrappers.lambdaQuery(TTaskDetail.class) + .in(TTaskDetail::getTaskId, taskIds) + .orderByDesc(TTaskDetail::getCreateTime)); + int qualifiedWarn = 0; + for (TTask task : list) { + TTaskDetail tTaskDetail = taskDetails.stream().filter(taskDetail -> taskDetail.getTaskId().equals(task.getId())).findFirst().orElse(null); + if(Objects.nonNull(tTaskDetail)){ + if(Objects.nonNull(tTaskDetail.getClearStatus()) && tTaskDetail.getClearStatus() == 1){ + qualifiedWarn++; + } + } + } + locationStatisticsVO.setPassRate(new BigDecimal(qualifiedWarn).divide(new BigDecimal(tasks.size()), 2, RoundingMode.HALF_DOWN)); + return R.ok(locationStatisticsVO); + } + + @ApiOperation(value = "点位巡检热力图-点位详情任务列表") + @PostMapping(value = "/pointInspectionHeatDetailTaskList") + public R<PageInfo<TLocationTaskListVO>> pointInspectionHeatDetailTaskList(@Validated @RequestBody PointDetailQuery query) { + + if(StringUtils.isNotBlank(query.getDeptName())){ + + List<TProjectDept> projectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) + .like(TProjectDept::getProjectName, query.getDeptName())); + List<String> projectIds = projectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList()); + + List<TDept> deptList = deptService.list(Wrappers.lambdaQuery(TDept.class) + .like(TDept::getDeptName, query.getDeptName())); + List<String> deptIds = deptList.stream().map(TDept::getId).collect(Collectors.toList()); + + projectIds.addAll(deptIds); + if (projectIds.isEmpty()){ + projectIds.add("-1"); + } + query.setProjectIds(projectIds); + } + + PageInfo<TLocationTaskListVO> pageInfo = taskCleanService.pointInspectionHeatDetailTaskList(query); + return R.ok(pageInfo); } } -- Gitblit v1.7.1