无关风月
14 小时以前 02bb94e413f6950b9786c5ee86c0937bc20f8ae8
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/WorkbenchesController.java
@@ -5,11 +5,13 @@
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.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.web.service.TokenService;
import com.ruoyi.system.dto.WorkBenchesDTO;
import com.ruoyi.system.model.*;
import com.ruoyi.system.query.DataStatisticsQuery;
import com.ruoyi.system.query.TaskSituationQuery;
import com.ruoyi.system.service.*;
import com.ruoyi.system.vo.system.*;
import com.ruoyi.web.util.OssUploadUtil;
@@ -20,7 +22,12 @@
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.stream.Collectors;
@@ -47,25 +54,19 @@
    @Resource
    private TTaskDetailService tTaskDetailService;
    @Resource
    private TDeptService deptService;
    @Resource
    private ISysUserService sysUserService;
    @Resource
    private TokenService tokenService;
    @Resource
    private TAppealService appealService;
    @Resource
    private TDictDataService dictDataService;
    @PostMapping("/data")
    @ApiOperation(value = "工作台", tags = "工作台")
    public R<WorkBenchesVO> data(@RequestBody WorkBenchesDTO dto) {
        return R.ok();
    }
    @Resource
    private TCleanerService cleanerService;
    @Resource
    private TLeaveService leaveService;
    @Resource
    private TEarlyWarningService earlyWarningService;
    @ApiOperation(value = "查询部门 项目部列表 不分页")
    @GetMapping(value = "/listDepts")
    public R<List<DeptNoLimitVO>> listDepts() {
@@ -115,12 +116,21 @@
            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("0".equals(projectDept.getParentId())){
                    // 查询项目部
                    List<TProjectDept> childProjectDept = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
                            .eq(TProjectDept::getStatus,1)
                            .eq(TProjectDept::getParentId,projectDept.getId()));
                    projectDept.setChildren(childProjectDept);
                    projectDeptList.add(projectDept);
                }else {
                    // 查询项目部
                    TProjectDept parent = projectDeptService.getById(projectDept.getParentId());
                    List<TProjectDept> children = new ArrayList<>();
                    children.add(projectDept);
                    parent.setChildren(children);
                    projectDeptList.add(parent);
                }
            }else {
                projectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
                        .eq(TProjectDept::getStatus,1)
@@ -148,32 +158,219 @@
    @ApiOperation(value = "通过片区id查询点位类型")
    @GetMapping(value = "/queryLocationByProjectId")
    public R<List<TLocationType>> queryLocationByProjectId(@RequestParam(value = "projectId") String projectId) {
        List<TLocationType> locationTypes = new ArrayList<>();
        // 通过片区id查询点位
        List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class)
                .eq(TLocation::getProjectId, projectId));
        if(CollectionUtils.isEmpty(locationList)){
            return R.ok(locationTypes);
        }
        List<String> typeIds = locationList.stream().map(TLocation::getLocationType).collect(Collectors.toList());
        locationTypes = locationTypeService.list(Wrappers.lambdaQuery(TLocationType.class)
                .in(TLocationType::getId, typeIds));
    public R<List<TLocationType>> queryLocationByProjectId() {
        List<TLocationType> locationTypes = locationTypeService.list();
        return R.ok(locationTypes);
    }
    @ApiOperation(value = "顶部数量统计")
    @PostMapping(value = "/topQuantityStatistics")
    public R<Map<String, Object>> topQuantityStatistics(@RequestBody DataStatisticsQuery query) {
        Map<String, Object> map = new HashMap<>();
        Integer deptType = tokenService.getLoginUser().getUser().getDeptType();
        String deptId = tokenService.getLoginUser().getUser().getDeptId();
        Long userId = tokenService.getLoginUser().getUserId();
        LambdaQueryWrapper<TTask> wrapper = new LambdaQueryWrapper<>();
        List<TTask> list;
        if (userId != 1L) {
            // 查询点位类型
            if(StringUtils.isNotEmpty(query.getLocationTypeId())){
                // 查询点位
                List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class)
                        .in(TLocation::getLocationType, query.getLocationTypeId()));
                if(!CollectionUtils.isEmpty(locationList)){
                    List<String> locationIds = locationList.stream().map(TLocation::getId).collect(Collectors.toList());
                    wrapper.in(TTask::getLocationId, locationIds);
                }
                map.put("totalLocationNum", locationList.size());
            }
            List<TTask> taskList = new ArrayList<>();
            if (deptType == 1) {
                // 项目部人员
                if(CollectionUtils.isEmpty(query.getProjectId())){
                    TProjectDept projectDept = projectDeptService.getById(deptId);
                    List<String> projectIds = new ArrayList<>();
                    if("0".equals(projectDept.getParentId())){
                        List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
                                .eq(TProjectDept::getStatus, 1)
                                .eq(TProjectDept::getParentId, projectDept.getId()));
                        List<String> ids = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
                        projectIds.add(projectDept.getId());
                        projectIds.addAll(ids);
                    }else {
                        projectIds.add(deptId);
                    }
                    query.setProjectId(projectIds);
                }
                // 巡检员数
                Integer totalEmployeeNum = sysUserService.selectUserCount(query.getProjectId(),deptType);
                map.put("totalEmployeeNum", totalEmployeeNum);
            }else {
                // 公司人员
                // 查询自己的任务列表
                taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class)
                        .eq(TTask::getPatrolInspector, userId));
                if(CollectionUtils.isEmpty(query.getProjectId())){
                    // 查询所有项目部的任务列表
                    List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
                            .eq(TProjectDept::getStatus, 1));
                    if(!CollectionUtils.isEmpty(tProjectDeptList)){
                        List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
                        query.setProjectId(projectIds);
                    }
                }
                // 巡检员数
                Integer totalEmployeeNum = sysUserService.selectUserCount(query.getProjectId(),1);
                map.put("totalEmployeeNum", totalEmployeeNum+1);
            }
            // 查询片区
            if(!CollectionUtils.isEmpty(query.getProjectId())){
                query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList()));
                wrapper.in(TTask::getProjectId, query.getProjectId());
                // 查询点位数
                List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class)
                        .in(TLocation::getProjectId, query.getProjectId()));
                map.put("totalLocationNum", locationList.size());
            }
            list = taskCleanService.list(wrapper);
            if(CollectionUtils.isEmpty(list)){
                return R.ok();
            }
            if(!CollectionUtils.isEmpty(taskList)){
                list.addAll(taskList);
            }
            list = list.stream().distinct().collect(Collectors.toList());
        }else {
            // 超级管理员
            // 查询点位类型
            if(StringUtils.isNotEmpty(query.getLocationTypeId())){
                // 查询点位
                List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class)
                        .in(TLocation::getLocationType, query.getLocationTypeId()));
                if(!CollectionUtils.isEmpty(locationList)){
                    List<String> locationIds = locationList.stream().map(TLocation::getId).collect(Collectors.toList());
                    wrapper.in(TTask::getLocationId, locationIds);
                }
                map.put("totalLocationNum", locationList.size());
            }
            // 超级管理员 查询所有的任务列表
            List<TTask> taskList = new ArrayList<>();
            if(CollectionUtils.isEmpty(query.getProjectId())){
                taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class));
                // 查询所有项目部的任务列表
                List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
                        .eq(TProjectDept::getStatus, 1));
                if(!CollectionUtils.isEmpty(tProjectDeptList)){
                    List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
                    query.setProjectId(projectIds);
                }
            }
            // 查询片区
            if(!CollectionUtils.isEmpty(query.getProjectId())){
                query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList()));
                wrapper.in(TTask::getProjectId, query.getProjectId());
                List<TLocation> locationList = locationService.list(Wrappers.lambdaQuery(TLocation.class)
                        .in(TLocation::getProjectId, query.getProjectId()));
                map.put("totalLocationNum", locationList.size());
            }
            list = taskCleanService.list(wrapper);
            if(CollectionUtils.isEmpty(list)){
                return R.ok();
            }
            if(!CollectionUtils.isEmpty(taskList)){
                list.addAll(taskList);
            }
            list = list.stream().distinct().collect(Collectors.toList());
            // 巡检员数
            if(CollectionUtils.isEmpty(query.getProjectId())){
                Integer totalEmployeeNum = sysUserService.selectUserCount(query.getProjectId(),deptType);
                Integer totalEmployeeNum1 = sysUserService.selectUserCount(query.getProjectId(),1);
                map.put("totalEmployeeNum", totalEmployeeNum+totalEmployeeNum1);
            }else {
                Integer totalEmployeeNum = sysUserService.selectUserCount(query.getProjectId(),1);
                map.put("totalEmployeeNum", totalEmployeeNum);
            }
        }
        // 查询任务相关数据
        // 总计任务数
        map.put("totalTaskNum", list.size());
        // 今日任务数
        map.put("todayTaskNum", list.stream().filter(tTask -> tTask.getImplementTime().toLocalDate().isEqual(LocalDate.now())).count());
        // 待执行任务数
        map.put("waitTaskNum", list.stream().filter(tTask -> tTask.getStatus() == 1).count());
        // 总计员工数
//        Integer totalEmployeeNum = sysUserService.selectUserCount(null,deptType);
//        if (deptType != 1) {
//            totalEmployeeNum = totalEmployeeNum + 1;
//        }
//        map.put("totalEmployeeNum", totalEmployeeNum);
        // 今日请假员工数量
        List<TLeave> leaves = leaveService.list(Wrappers.lambdaQuery(TLeave.class)
                .le(TLeave::getStartTime, LocalDate.now())
                .ge(TLeave::getEndTime, LocalDate.now())
                .eq(TLeave::getAuditStatus, 2));
        if(!CollectionUtils.isEmpty(leaves)){
            map.put("todayLeaveNum", leaves.size());
        }else {
            map.put("todayLeaveNum", 0);
        }
        // 总计保洁员数
        long totalCleanerNum = cleanerService.count(Wrappers.lambdaQuery(TCleaner.class)
                .in(TCleaner::getProjectId, query.getProjectId()));
        map.put("totalCleanerNum", totalCleanerNum);
        return R.ok(map);
    }
    @ApiOperation(value = "任务情况")
    @PostMapping(value = "/taskSituation")
    public R<List<TTask>> taskSituation(@RequestBody DataStatisticsQuery query) {
    public R<TaskSituationVO> taskSituation(@RequestBody TaskSituationQuery query) {
        Integer deptType = tokenService.getLoginUser().getUser().getDeptType();
        String deptId = tokenService.getLoginUser().getUser().getDeptId();
        Long userId = tokenService.getLoginUser().getUserId();
        // 查询所有点位
        List<TLocation> locations = locationService.list();
        TaskSituationVO taskSituationVO = new TaskSituationVO();
        LambdaQueryWrapper<TTask> wrapper = new LambdaQueryWrapper<>();
        if(StringUtils.isEmpty(query.getStartTime()) || StringUtils.isEmpty(query.getEndTime())){
            LocalDate now = LocalDate.now();
            String startTime = now.minusDays(6) + " 00:00:00";
            String endTime = now + " 23:59:59";
            query.setStartTime(startTime);
            query.setEndTime(endTime);
        }else {
            query.setStartTime(query.getStartTime() + " 00:00:00");
            query.setEndTime(query.getEndTime() + " 23:59:59");
        }
        wrapper.between(TTask::getImplementTime, query.getStartTime(), query.getEndTime());
        // 过滤每天的任务
        LocalDateTime start = DateUtils.stringToLocalDateTime(query.getStartTime());
        LocalDateTime end = DateUtils.stringToLocalDateTime(query.getEndTime());
        long daysBetween = ChronoUnit.DAYS.between(start, end);
        List<TaskSituationDayVO> taskSituationDayVOList = new ArrayList<>();
        LocalDateTime localDateTime = DateUtils.stringToLocalDateTime(query.getStartTime());
        String format = null;
        List<TTask> list;
        if (userId != 1L) {
            // 查询点位类型
            if(StringUtils.isNotEmpty(query.getLocationTypeId())){
@@ -188,47 +385,69 @@
            List<TTask> taskList = new ArrayList<>();
            if (deptType == 1) {
                // 项目部人员
                List<String> projectIds = new ArrayList<>();
                projectIds.add(deptId);
                query.setProjectId(projectIds);
                if(CollectionUtils.isEmpty(query.getProjectId())){
                    TProjectDept projectDept = projectDeptService.getById(deptId);
                    List<String> projectIds = new ArrayList<>();
                    if("0".equals(projectDept.getParentId())){
                        List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
                                .eq(TProjectDept::getStatus, 1)
                                .eq(TProjectDept::getParentId, projectDept.getId()));
                        List<String> ids = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
                        projectIds.add(projectDept.getId());
                        projectIds.addAll(ids);
                    }else {
                        projectIds.add(deptId);
                    }
                    query.setProjectId(projectIds);
                }
            }else {
                // 公司人员
                // 查询自己的任务列表
                taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class)
                        .eq(TTask::getPatrolInspector, userId));
                        .eq(TTask::getPatrolInspector, userId)
                        .between(TTask::getImplementTime, query.getStartTime(), query.getEndTime()));
                if(CollectionUtils.isEmpty(query.getProjectId())){
                    // 查询所有项目部的任务列表
                    List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
                            .eq(TProjectDept::getStatus, 1)
                            .ne(TProjectDept::getParentId, 0));
                            .eq(TProjectDept::getStatus, 1));
                    if(!CollectionUtils.isEmpty(tProjectDeptList)){
                        List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
                        wrapper.in(TTask::getProjectId, projectIds);
                        query.setProjectId(projectIds);
                    }
                }
            }
            // 查询片区
            if(!CollectionUtils.isEmpty(query.getProjectId())){
                query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList()));
                wrapper.in(TTask::getProjectId, query.getProjectId());
            }
            List<TTask> list = taskCleanService.list(wrapper);
            list = taskCleanService.list(wrapper);
            if(CollectionUtils.isEmpty(list)){
                return R.ok();
                for (long i = 0; i <= daysBetween; i++) {
                    TaskSituationDayVO taskSituationDayVO = new TaskSituationDayVO();
                    if(i == 0){
                        format = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
                    }else {
                        format = DateUtils.stringToLocalDate(format).plusDays(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
                    }
                    taskSituationDayVO.setTaskTime(format);
                    // 任务数
                    taskSituationDayVO.setTaskNum(0);
                    // 完成数
                    taskSituationDayVO.setCompletedNum(0);
                    taskSituationDayVO.setCompleteRate(BigDecimal.ZERO);
                    taskSituationDayVOList.add(taskSituationDayVO);
                }
                taskSituationVO.setTaskSituationDayVO(taskSituationDayVOList);
                return R.ok(taskSituationVO);
            }
            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);
            list = list.stream().distinct().collect(Collectors.toList());
        }else {
            // 超级管理员
            // 查询点位类型
@@ -242,40 +461,125 @@
                }
            }
            // 超级管理员 查询所有的任务列表
            List<TTask> taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class));
            List<TTask> taskList = new ArrayList<>();
            if(CollectionUtils.isEmpty(query.getProjectId())){
                taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class)
                        .between(TTask::getImplementTime, query.getStartTime(), query.getEndTime()));
                // 查询所有项目部的任务列表
                List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
                        .eq(TProjectDept::getStatus, 1)
                        .ne(TProjectDept::getParentId, 0));
                        .eq(TProjectDept::getStatus, 1));
                if(!CollectionUtils.isEmpty(tProjectDeptList)){
                    List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
                    wrapper.in(TTask::getProjectId, projectIds);
                    query.setProjectId(projectIds);
                }
            }
            // 查询片区
            if(!CollectionUtils.isEmpty(query.getProjectId())){
                query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList()));
                wrapper.in(TTask::getProjectId, query.getProjectId());
            }
            List<TTask> list = taskCleanService.list(wrapper);
            list = taskCleanService.list(wrapper);
            if(CollectionUtils.isEmpty(list)){
                return R.ok();
                for (long i = 0; i <= daysBetween; i++) {
                    TaskSituationDayVO taskSituationDayVO = new TaskSituationDayVO();
                    if(i == 0){
                        format = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
                    }else {
                        format = DateUtils.stringToLocalDate(format).plusDays(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
                    }
                    taskSituationDayVO.setTaskTime(format);
                    // 任务数
                    taskSituationDayVO.setTaskNum(0);
                    // 完成数
                    taskSituationDayVO.setCompletedNum(0);
                    taskSituationDayVO.setCompleteRate(BigDecimal.ZERO);
                    taskSituationDayVOList.add(taskSituationDayVO);
                }
                taskSituationVO.setTaskSituationDayVO(taskSituationDayVOList);
                return R.ok(taskSituationVO);
            }
            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());
            list = list.stream().distinct().collect(Collectors.toList());
        }
        // 任务总数
        taskSituationVO.setTotalTaskNum(list.size());
        List<TTask> result = list.stream().filter(task -> task.getStatus() == 6 || task.getStatus() == 5).collect(Collectors.toList());
        // 已完成任务数
        taskSituationVO.setCompletedTaskNum(result.size());
        // 匹配任务详情查看合格数量
        List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2
                && task.getStatus() != 3 && task.getStatus() != 4).collect(Collectors.toList());
        if(CollectionUtils.isEmpty(tasks)){
            taskSituationVO.setPassRate(BigDecimal.ZERO);
            for (long i = 0; i <= daysBetween; i++) {
                TaskSituationDayVO taskSituationDayVO = new TaskSituationDayVO();
                if(i == 0){
                    format = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
                }else {
                    format = DateUtils.stringToLocalDate(format).plusDays(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
                }
                taskSituationDayVO.setTaskTime(format);
                // 任务数
                taskSituationDayVO.setTaskNum(0);
                // 完成数
                taskSituationDayVO.setCompletedNum(0);
                taskSituationDayVO.setCompleteRate(BigDecimal.ZERO);
                taskSituationDayVOList.add(taskSituationDayVO);
            }
            taskSituationVO.setTaskSituationDayVO(taskSituationDayVOList);
            return R.ok(taskSituationVO);
        }
        List<String> taskIds = tasks.stream().map(TTask::getId).collect(Collectors.toList());
        List<TTaskDetail> taskDetails = tTaskDetailService.list(Wrappers.lambdaQuery(TTaskDetail.class)
                .in(TTaskDetail::getTaskId, taskIds)
                .orderByDesc(TTaskDetail::getCreateTime));
        int qualifiedWarn = 0;
        for (TTask task : list) {
            TTaskDetail tTaskDetail = taskDetails.stream().filter(taskDetail -> taskDetail.getTaskId().equals(task.getId())).findFirst().orElse(null);
            if(Objects.nonNull(tTaskDetail)){
                if(Objects.nonNull(tTaskDetail.getClearStatus()) && tTaskDetail.getClearStatus() == 1){
                    qualifiedWarn++;
                }
            }
            return R.ok(result);
        }
        taskSituationVO.setPassRate(new BigDecimal(qualifiedWarn).divide(new BigDecimal(tasks.size()), 2, RoundingMode.HALF_DOWN));
        for (long i = 0; i <= daysBetween; i++) {
            TaskSituationDayVO taskSituationDayVO = new TaskSituationDayVO();
            if(i == 0){
                format = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
            }else {
                format = DateUtils.stringToLocalDate(format).plusDays(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
            }
            taskSituationDayVO.setTaskTime(format);
            String finalFormat = format;
            List<TTask> tTasks = list.stream().filter(task -> DateUtils.localDateTimeToString(task.getImplementTime()).contains(finalFormat)).collect(Collectors.toList());
            // 任务数
            taskSituationDayVO.setTaskNum(tTasks.size());
            // 完成数
            taskSituationDayVO.setCompletedNum(tTasks.stream().filter(task -> task.getStatus() == 6 || task.getStatus() == 5).collect(Collectors.toList()).size());
            int qualifiedWarnChild = 0;
            for (TTask task : tTasks) {
                TTaskDetail tTaskDetail = taskDetails.stream().filter(taskDetail -> taskDetail.getTaskId().equals(task.getId())).findFirst().orElse(null);
                if(Objects.nonNull(tTaskDetail)){
                    if(Objects.nonNull(tTaskDetail.getClearStatus()) && tTaskDetail.getClearStatus() == 1){
                        qualifiedWarnChild++;
                    }
                }
            }
            if(tTasks.isEmpty()){
                taskSituationDayVO.setCompleteRate(BigDecimal.ZERO);
            }else {
                taskSituationDayVO.setCompleteRate(new BigDecimal(qualifiedWarnChild).divide(new BigDecimal(taskSituationDayVO.getCompletedNum()), 2, RoundingMode.HALF_DOWN));
            }
            taskSituationDayVOList.add(taskSituationDayVO);
        }
        taskSituationVO.setTaskSituationDayVO(taskSituationDayVOList);
        return R.ok(taskSituationVO);
    }
    @ApiOperation(value = "今日预警")
@@ -291,7 +595,7 @@
        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);
//        wrapper.between(TTask::getImplementTime, startTime, endTime);
        if (userId != 1L) {
            // 查询点位类型
            if(StringUtils.isNotEmpty(query.getLocationTypeId())){
@@ -306,69 +610,104 @@
            List<TTask> taskList = new ArrayList<>();
            if (deptType == 1) {
                // 项目部人员
                List<String> projectIds = new ArrayList<>();
                projectIds.add(deptId);
                query.setProjectId(projectIds);
                if(CollectionUtils.isEmpty(query.getProjectId())){
                    TProjectDept projectDept = projectDeptService.getById(deptId);
                    List<String> projectIds = new ArrayList<>();
                    if("0".equals(projectDept.getParentId())){
                        List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
                                .eq(TProjectDept::getStatus, 1)
                                .eq(TProjectDept::getParentId, projectDept.getId()));
                        List<String> ids = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
                        projectIds.add(projectDept.getId());
                        projectIds.addAll(ids);
                    }else {
                        projectIds.add(deptId);
                    }
                    query.setProjectId(projectIds);
                }
            }else {
                // 公司人员
                // 查询自己的任务列表
                taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class)
                        .eq(TTask::getPatrolInspector, userId));
//                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));
                            .eq(TProjectDept::getStatus, 1));
                    if(!CollectionUtils.isEmpty(tProjectDeptList)){
                        List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
                        wrapper.in(TTask::getProjectId, projectIds);
                        query.setProjectId(projectIds);
                    }
                }
            }
            // 查询片区
            if(!CollectionUtils.isEmpty(query.getProjectId())){
                query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList()));
                wrapper.in(TTask::getProjectId, query.getProjectId());
            }
            List<TTask> list = taskCleanService.list(wrapper);
            if(CollectionUtils.isEmpty(list)){
                return R.ok();
                return R.ok(new ArrayList<>());
            }
            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 = list.stream().distinct().collect(Collectors.toList());
            // 查询预警数据
            List<TEarlyWarning> earlyWarnings = earlyWarningService.list(Wrappers.lambdaQuery(TEarlyWarning.class)
                    .between(TEarlyWarning::getCreateTime, startTime, endTime));
            if(CollectionUtils.isEmpty(earlyWarnings)){
                return R.ok(new ArrayList<>());
            }
            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);
                    }
            String taskIds = earlyWarnings.stream().map(TEarlyWarning::getTaskId).collect(Collectors.joining(","));
            Iterator<TTask> iterator = list.iterator();
            while (iterator.hasNext()) {
                TTask task = iterator.next();
                if(!taskIds.contains(task.getId())){
                    iterator.remove();
                }
            }
            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<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(Objects.nonNull(tTaskDetail.getClearStatus()) && 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(list);
        }else {
            // 超级管理员
            // 查询点位类型
@@ -382,61 +721,82 @@
                }
            }
            // 超级管理员 查询所有的任务列表
            List<TTask> taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class));
            List<TTask> taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class)
                    .between(TTask::getImplementTime, startTime, endTime));
            if(CollectionUtils.isEmpty(query.getProjectId())){
                // 查询所有项目部的任务列表
                List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
                        .eq(TProjectDept::getStatus, 1)
                        .ne(TProjectDept::getParentId, 0));
                        .eq(TProjectDept::getStatus, 1));
                if(!CollectionUtils.isEmpty(tProjectDeptList)){
                    List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
                    wrapper.in(TTask::getProjectId, projectIds);
                    query.setProjectId(projectIds);
                }
            }
            // 查询片区
            if(!CollectionUtils.isEmpty(query.getProjectId())){
                query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList()));
                wrapper.in(TTask::getProjectId, query.getProjectId());
            }
            List<TTask> list = taskCleanService.list(wrapper);
            if(CollectionUtils.isEmpty(list)){
                return R.ok();
                return R.ok(new ArrayList<>());
            }
            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 = list.stream().distinct().collect(Collectors.toList());
            // 查询预警数据
            List<TEarlyWarning> earlyWarnings = earlyWarningService.list(Wrappers.lambdaQuery(TEarlyWarning.class)
                    .between(TEarlyWarning::getCreateTime, startTime, endTime));
            if(CollectionUtils.isEmpty(earlyWarnings)){
                return R.ok(new ArrayList<>());
            }
            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);
                    }
            String taskIds = earlyWarnings.stream().map(TEarlyWarning::getTaskId).collect(Collectors.joining(","));
            Iterator<TTask> iterator = list.iterator();
            while (iterator.hasNext()) {
                TTask task = iterator.next();
                if(!taskIds.contains(task.getId())){
                    iterator.remove();
                }
            }
            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<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(Objects.nonNull(tTaskDetail.getClearStatus()) && 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(list);
        }
    }
@@ -465,9 +825,21 @@
            List<TTask> taskList = new ArrayList<>();
            if (deptType == 1) {
                // 项目部人员
                List<String> projectIds = new ArrayList<>();
                projectIds.add(deptId);
                query.setProjectId(projectIds);
                if(CollectionUtils.isEmpty(query.getProjectId())){
                    TProjectDept projectDept = projectDeptService.getById(deptId);
                    List<String> projectIds = new ArrayList<>();
                    if("0".equals(projectDept.getParentId())){
                        List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
                                .eq(TProjectDept::getStatus, 1)
                                .eq(TProjectDept::getParentId, projectDept.getId()));
                        List<String> ids = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
                        projectIds.add(projectDept.getId());
                        projectIds.addAll(ids);
                    }else {
                        projectIds.add(deptId);
                    }
                    query.setProjectId(projectIds);
                }
            }else {
                // 公司人员
                // 查询自己的任务列表
@@ -476,17 +848,17 @@
                if(CollectionUtils.isEmpty(query.getProjectId())){
                    // 查询所有项目部的任务列表
                    List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
                            .eq(TProjectDept::getStatus, 1)
                            .ne(TProjectDept::getParentId, 0));
                            .eq(TProjectDept::getStatus, 1));
                    if(!CollectionUtils.isEmpty(tProjectDeptList)){
                        List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
                        wrapper.in(TTask::getProjectId, projectIds);
                        query.setProjectId(projectIds);
                    }
                }
            }
            // 查询片区
            if(!CollectionUtils.isEmpty(query.getProjectId())){
                query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList()));
                wrapper.in(TTask::getProjectId, query.getProjectId());
            }
@@ -498,6 +870,7 @@
            if(!CollectionUtils.isEmpty(taskList)){
                list.addAll(taskList);
            }
            list = list.stream().distinct().collect(Collectors.toList());
            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);
@@ -519,20 +892,21 @@
                }
            }
            // 超级管理员 查询所有的任务列表
            List<TTask> taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class));
            List<TTask> taskList = new ArrayList<>();
            if(CollectionUtils.isEmpty(query.getProjectId())){
                taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class));
                // 查询所有项目部的任务列表
                List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
                        .eq(TProjectDept::getStatus, 1)
                        .ne(TProjectDept::getParentId, 0));
                        .eq(TProjectDept::getStatus, 1));
                if(!CollectionUtils.isEmpty(tProjectDeptList)){
                    List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
                    wrapper.in(TTask::getProjectId, projectIds);
                    query.setProjectId(projectIds);
                }
            }
            // 查询片区
            if(!CollectionUtils.isEmpty(query.getProjectId())){
                query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList()));
                wrapper.in(TTask::getProjectId, query.getProjectId());
            }
@@ -544,6 +918,7 @@
            if(!CollectionUtils.isEmpty(taskList)){
                list.addAll(taskList);
            }
            list = list.stream().distinct().collect(Collectors.toList());
            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);
@@ -559,8 +934,6 @@
    @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();
@@ -579,9 +952,21 @@
            List<TTask> taskList = new ArrayList<>();
            if (deptType == 1) {
                // 项目部人员
                List<String> projectIds = new ArrayList<>();
                projectIds.add(deptId);
                query.setProjectId(projectIds);
                if(CollectionUtils.isEmpty(query.getProjectId())){
                    TProjectDept projectDept = projectDeptService.getById(deptId);
                    List<String> projectIds = new ArrayList<>();
                    if("0".equals(projectDept.getParentId())){
                        List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
                                .eq(TProjectDept::getStatus, 1)
                                .eq(TProjectDept::getParentId, projectDept.getId()));
                        List<String> ids = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
                        projectIds.add(projectDept.getId());
                        projectIds.addAll(ids);
                    }else {
                        projectIds.add(deptId);
                    }
                    query.setProjectId(projectIds);
                }
            }else {
                // 公司人员
                // 查询自己的任务列表
@@ -590,17 +975,17 @@
                if(CollectionUtils.isEmpty(query.getProjectId())){
                    // 查询所有项目部的任务列表
                    List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
                            .eq(TProjectDept::getStatus, 1)
                            .ne(TProjectDept::getParentId, 0));
                            .eq(TProjectDept::getStatus, 1));
                    if(!CollectionUtils.isEmpty(tProjectDeptList)){
                        List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
                        wrapper.in(TTask::getProjectId, projectIds);
                        query.setProjectId(projectIds);
                    }
                }
            }
            // 查询片区
            if(!CollectionUtils.isEmpty(query.getProjectId())){
                query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList()));
                wrapper.in(TTask::getProjectId, query.getProjectId());
            }
@@ -612,7 +997,9 @@
            if(!CollectionUtils.isEmpty(taskList)){
                list.addAll(taskList);
            }
            List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2).collect(Collectors.toList());
            list = list.stream().distinct().collect(Collectors.toList());
            List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2
                    && task.getStatus() != 3 && task.getStatus() != 4).collect(Collectors.toList());
            if(CollectionUtils.isEmpty(tasks)){
                map.put("unqualifiedWarn", 0);
                map.put("qualifiedWarn", 0);
@@ -621,16 +1008,32 @@
            List<String> taskIds = tasks.stream().map(TTask::getId).collect(Collectors.toList());
            List<TTaskDetail> taskDetails = tTaskDetailService.list(Wrappers.lambdaQuery(TTaskDetail.class)
                    .in(TTaskDetail::getTaskId, taskIds)
                    .eq(TTaskDetail::getHandleType, 1)
                    .orderByDesc(TTaskDetail::getCreateTime));
            taskDetails = new ArrayList<>(taskDetails.stream()
                    .collect(Collectors.groupingBy(
                            TTaskDetail::getTaskId,
                            Collectors.collectingAndThen(
                                    Collectors.toList(),
                                    list1 -> list1.get(0)
                            )
                    ))
                    .values());
            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++;
                    if(Objects.nonNull(tTaskDetail.getClearStatus())){
                        if(tTaskDetail.getClearStatus() == 2){
                            unqualifiedWarn++;
                        }else {
                            qualifiedWarn++;
                        }
                    }else {
                        qualifiedWarn++;
                        unqualifiedWarn++;
                    }
                }
            }
@@ -649,20 +1052,21 @@
                }
            }
            // 超级管理员 查询所有的任务列表
            List<TTask> taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class));
            List<TTask> taskList = new ArrayList<>();
            if(CollectionUtils.isEmpty(query.getProjectId())){
                taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class));
                // 查询所有项目部的任务列表
                List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
                        .eq(TProjectDept::getStatus, 1)
                        .ne(TProjectDept::getParentId, 0));
                        .eq(TProjectDept::getStatus, 1));
                if(!CollectionUtils.isEmpty(tProjectDeptList)){
                    List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
                    wrapper.in(TTask::getProjectId, projectIds);
                    query.setProjectId(projectIds);
                }
            }
            // 查询片区
            if(!CollectionUtils.isEmpty(query.getProjectId())){
                query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList()));
                wrapper.in(TTask::getProjectId, query.getProjectId());
            }
@@ -674,7 +1078,9 @@
            if(!CollectionUtils.isEmpty(taskList)){
                list.addAll(taskList);
            }
            List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2).collect(Collectors.toList());
            list = list.stream().distinct().collect(Collectors.toList());
            List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2
                    && task.getStatus() != 3 && task.getStatus() != 4).collect(Collectors.toList());
            if(CollectionUtils.isEmpty(tasks)){
                map.put("unqualifiedWarn", 0);
                map.put("qualifiedWarn", 0);
@@ -684,15 +1090,28 @@
            List<TTaskDetail> taskDetails = tTaskDetailService.list(Wrappers.lambdaQuery(TTaskDetail.class)
                    .in(TTaskDetail::getTaskId, taskIds)
                    .orderByDesc(TTaskDetail::getCreateTime));
            taskDetails = new ArrayList<>(taskDetails.stream()
                    .collect(Collectors.groupingBy(
                            TTaskDetail::getTaskId,
                            Collectors.collectingAndThen(
                                    Collectors.toList(),
                                    list1 -> list1.get(0)
                            )
                    ))
                    .values());
            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++;
                    if(Objects.nonNull(tTaskDetail.getClearStatus())){
                        if(tTaskDetail.getClearStatus() == 2){
                            unqualifiedWarn++;
                        }else {
                            qualifiedWarn++;
                        }
                    }else {
                        qualifiedWarn++;
                        unqualifiedWarn++;
                    }
                }
            }
@@ -724,9 +1143,21 @@
            List<TTask> taskList = new ArrayList<>();
            if (deptType == 1) {
                // 项目部人员
                List<String> projectIds = new ArrayList<>();
                projectIds.add(deptId);
                query.setProjectId(projectIds);
                if(CollectionUtils.isEmpty(query.getProjectId())){
                    TProjectDept projectDept = projectDeptService.getById(deptId);
                    List<String> projectIds = new ArrayList<>();
                    if("0".equals(projectDept.getParentId())){
                        List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
                                .eq(TProjectDept::getStatus, 1)
                                .eq(TProjectDept::getParentId, projectDept.getId()));
                        List<String> ids = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
                        projectIds.add(projectDept.getId());
                        projectIds.addAll(ids);
                    }else {
                        projectIds.add(deptId);
                    }
                    query.setProjectId(projectIds);
                }
            }else {
                // 公司人员
                // 查询自己的任务列表
@@ -735,17 +1166,17 @@
                if(CollectionUtils.isEmpty(query.getProjectId())){
                    // 查询所有项目部的任务列表
                    List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
                            .eq(TProjectDept::getStatus, 1)
                            .ne(TProjectDept::getParentId, 0));
                            .eq(TProjectDept::getStatus, 1));
                    if(!CollectionUtils.isEmpty(tProjectDeptList)){
                        List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
                        wrapper.in(TTask::getProjectId, projectIds);
                        query.setProjectId(projectIds);
                    }
                }
            }
            // 查询片区
            if(!CollectionUtils.isEmpty(query.getProjectId())){
                query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList()));
                wrapper.in(TTask::getProjectId, query.getProjectId());
            }
@@ -757,16 +1188,27 @@
            if(!CollectionUtils.isEmpty(taskList)){
                list.addAll(taskList);
            }
            List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2).collect(Collectors.toList());
            list = list.stream().distinct().collect(Collectors.toList());
            List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2
                    && task.getStatus() != 3 && task.getStatus() != 4).collect(Collectors.toList());
            if(CollectionUtils.isEmpty(tasks)){
                return R.ok();
                return R.ok(analysisUnqualifiedCleaningVO);
            }
            List<String> taskIds = tasks.stream().map(TTask::getId).collect(Collectors.toList());
            List<TTaskDetail> taskDetails = tTaskDetailService.list(Wrappers.lambdaQuery(TTaskDetail.class)
                    .in(TTaskDetail::getTaskId, taskIds)
                    .eq(TTaskDetail::getClearStatus, 2)
                    .eq(TTaskDetail::getHandleType,1)
                    .orderByDesc(TTaskDetail::getCreateTime));
            taskDetails = new ArrayList<>(taskDetails.stream()
                    .collect(Collectors.groupingBy(
                            TTaskDetail::getTaskId,
                            Collectors.collectingAndThen(
                                    Collectors.toList(),
                                    listAll -> listAll.get(0)
                            )
                    ))
                    .values());
            List<TTaskDetail> taskDetailList = new ArrayList<>();
            for (TTask task : list) {
                TTaskDetail tTaskDetail = taskDetails.stream().filter(taskDetail -> taskDetail.getTaskId().equals(task.getId())).findFirst().orElse(null);
@@ -781,7 +1223,7 @@
                    .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());
                List<TTaskDetail> tTaskDetails = taskDetailList.stream().filter(taskDetail -> StringUtils.isNotEmpty(taskDetail.getUnqualified())&&taskDetail.getUnqualified().equals(tDictData.getId())).collect(Collectors.toList());
                AnalysisUnqualifiedCleaningDetailVO analysisUnqualifiedCleaningDetailVO = new AnalysisUnqualifiedCleaningDetailVO();
                analysisUnqualifiedCleaningDetailVO.setUnqualifiedName(tDictData.getDataContent());
                analysisUnqualifiedCleaningDetailVO.setCount(tTaskDetails.size());
@@ -801,41 +1243,55 @@
                }
            }
            // 超级管理员 查询所有的任务列表
            List<TTask> taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class));
            List<TTask> taskList = new ArrayList<>();
            if(CollectionUtils.isEmpty(query.getProjectId())){
                taskList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class));
                // 查询所有项目部的任务列表
                List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)
                        .eq(TProjectDept::getStatus, 1)
                        .ne(TProjectDept::getParentId, 0));
                        .eq(TProjectDept::getStatus, 1));
                if(!CollectionUtils.isEmpty(tProjectDeptList)){
                    List<String> projectIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList());
                    wrapper.in(TTask::getProjectId, projectIds);
                    query.setProjectId(projectIds);
                }
            }
            // 查询片区
            if(!CollectionUtils.isEmpty(query.getProjectId())){
                query.setProjectId(query.getProjectId().stream().distinct().collect(Collectors.toList()));
                wrapper.in(TTask::getProjectId, query.getProjectId());
            }
            List<TTask> list = taskCleanService.list(wrapper);
            if(CollectionUtils.isEmpty(list)){
                return R.ok();
                return R.ok(analysisUnqualifiedCleaningVO);
            }
            if(!CollectionUtils.isEmpty(taskList)){
                list.addAll(taskList);
            }
            List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2).collect(Collectors.toList());
            list = list.stream().distinct().collect(Collectors.toList());
            List<TTask> tasks = list.stream().filter(task -> task.getStatus() != 1 && task.getStatus() != 2
                    && task.getStatus() != 3 && task.getStatus() != 4).collect(Collectors.toList());
            if(CollectionUtils.isEmpty(tasks)){
                return R.ok();
                return R.ok(analysisUnqualifiedCleaningVO);
            }
            List<String> taskIds = tasks.stream().map(TTask::getId).collect(Collectors.toList());
            List<TTaskDetail> taskDetails = tTaskDetailService.list(Wrappers.lambdaQuery(TTaskDetail.class)
                    .in(TTaskDetail::getTaskId, taskIds)
                    .eq(TTaskDetail::getHandleType,1)
                    .eq(TTaskDetail::getClearStatus, 2)
                    .orderByDesc(TTaskDetail::getCreateTime));
            taskDetails = new ArrayList<>(taskDetails.stream()
                    .collect(Collectors.groupingBy(
                            TTaskDetail::getTaskId,
                            Collectors.collectingAndThen(
                                    Collectors.toList(),
                                    listAll -> listAll.get(0)
                            )
                    ))
                    .values());
            List<TTaskDetail> taskDetailList = new ArrayList<>();
            for (TTask task : list) {
                TTaskDetail tTaskDetail = taskDetails.stream().filter(taskDetail -> taskDetail.getTaskId().equals(task.getId())).findFirst().orElse(null);
@@ -850,12 +1306,14 @@
                    .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());
                List<TTaskDetail> tTaskDetails = taskDetailList.stream().filter(taskDetail -> StringUtils.isNotEmpty(taskDetail.getUnqualified())&&taskDetail.getUnqualified().equals(tDictData.getId())).collect(Collectors.toList());
                AnalysisUnqualifiedCleaningDetailVO analysisUnqualifiedCleaningDetailVO = new AnalysisUnqualifiedCleaningDetailVO();
                analysisUnqualifiedCleaningDetailVO.setUnqualifiedName(tDictData.getDataContent());
                analysisUnqualifiedCleaningDetailVO.setCount(tTaskDetails.size());
                analysisUnqualifiedCleaningDetailVOS.add(analysisUnqualifiedCleaningDetailVO);
            }
            // 按照数量倒序排序
            analysisUnqualifiedCleaningDetailVOS.sort(Comparator.comparingInt(AnalysisUnqualifiedCleaningDetailVO::getCount).reversed());
            analysisUnqualifiedCleaningVO.setAnalysisUnqualifiedCleaningDetailVOS(analysisUnqualifiedCleaningDetailVOS);
        }