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 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 772 insertions(+), 28 deletions(-) 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); + } + } -- Gitblit v1.7.1