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