Ver código fonte

Merge branch 'fu-dev' of uskycloud/usky-modules into master

gez 8 meses atrás
pai
commit
4f62641072

+ 0 - 7
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/PmProjectController.java

@@ -125,13 +125,6 @@ public class PmProjectController {
     public ApiResult<List<Map<LocalDate, BigDecimal>>> projectIdName(@RequestParam(value = "projectId") Integer projectId,
                                                                       @RequestParam(value = "startDate", required = false) String startDate,
                                                                       @RequestParam(value = "endDate", required = false) String endDate) {
-        LocalDate now = LocalDate.now();
-        if (StringUtils.isBlank(endDate)) {
-            endDate = now.toString();
-        }
-        if (StringUtils.isBlank(startDate)) {
-            startDate = now.minusDays(29).toString();;
-        }
         return ApiResult.success(pmProjectService.projectWorkTime(projectId, startDate, endDate));
     }
 

+ 10 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/PmWorkReportController.java

@@ -72,4 +72,14 @@ public class PmWorkReportController {
         LocalDateTime now = LocalDateTime.now();
         pmWorkReportService.timedSending(now);
     }
+
+    /**
+     * 删除工作报告
+     *
+     * @param reportId 报告id
+     */
+    @DeleteMapping("/del/{reportId}")
+    public void del(@PathVariable("reportId") Integer reportId) {
+        pmWorkReportService.deleteContent(reportId);
+    }
 }

+ 6 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/PmWorkReportService.java

@@ -35,7 +35,6 @@ public interface PmWorkReportService extends CrudService<PmWorkReport> {
      */
     void addReport(PmWorkReport pmWorkReport)  throws ClientException;
 
-
     /**
      * 工时计算
      * @return
@@ -47,4 +46,10 @@ public interface PmWorkReportService extends CrudService<PmWorkReport> {
      */
     void timedSending(LocalDateTime time);
 
+    /**
+     * 删除报告
+     * @param reportId 报告id
+     */
+    void deleteContent(Integer reportId);
+
 }

+ 7 - 5
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/config/DingTalkAndMessage.java

@@ -143,7 +143,7 @@ public class DingTalkAndMessage {
                 JsonNode resultNode = rootNode.get("result");
                 dingTalkId = resultNode.get("userid").asText();
             } catch (Exception e) {
-                log.error("获取userid:userId 的钉钉ID失败", e);
+                log.error("获取userid:" + userId + "的钉钉ID失败", e);
             }
 
             // 钉钉userid存入注册表
@@ -238,16 +238,18 @@ public class DingTalkAndMessage {
             req.setCreateReportParam(obj1);
             OapiReportCreateResponse rsp = client.execute(req, getDingTalkToken());
             if (rsp.isSuccess()) {
-                log.info("钉钉报告发送成功");
+                log.info(userName + "钉钉报告发送成功");
                 workReport.setReportStatus(1);
-                pmWorkReportMapper.updateById(workReport);
             } else {
-                log.error("钉钉报告发送失败: " + rsp.getErrmsg());
+                workReport.setSendDingTalk(0);
+                log.error(userName + "的钉钉报告发送失败: " + rsp.getErrmsg());
             }
         } catch (Exception e) {
-            log.error("钉钉报告发送消息时发生异常", e);
+            workReport.setSendDingTalk(0);
+            log.error(userName + "的钉钉报告发送消息时发生异常", e);
         }
         log.info(userName + "的工作报告发送钉钉结束-----------------------------------");
+        pmWorkReportMapper.updateById(workReport);
     }
 
 

+ 66 - 53
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/PmProjectServiceImpl.java

@@ -57,16 +57,20 @@ public class PmProjectServiceImpl extends AbstractCrudService<PmProjectMapper, P
 
     @Override
     public void addProject(PmProject project) {
+        Long deptId = SecurityUtils.getLoginUser().getSysUser().getDeptId();
+        String userName = SecurityUtils.getUsername();
+        Integer tenantId = SecurityUtils.getTenantId();
+        LocalDateTime now = LocalDateTime.now();
         if (Objects.isNull(project.getProjectWorkload())) {
             if (Objects.isNull(project.getId())) {
-                project.setCreateBy(SecurityUtils.getUsername());
-                project.setCreateTime(LocalDateTime.now());
-                project.setTenantId(SecurityUtils.getTenantId());
-                project.setDeptId(SecurityUtils.getLoginUser().getSysUser().getDeptId());
+                project.setCreateBy(userName);
+                project.setCreateTime(now);
+                project.setTenantId(tenantId);
+                project.setDeptId(deptId);
                 this.save(project);
             } else {
-                project.setUpdateBy(SecurityUtils.getUsername());
-                project.setUpdateTime(LocalDateTime.now());
+                project.setUpdateBy(userName);
+                project.setUpdateTime(now);
                 this.updateById(project);
             }
         } else {
@@ -76,14 +80,13 @@ public class PmProjectServiceImpl extends AbstractCrudService<PmProjectMapper, P
                 throw new BusinessException("计划人/天整数位超出长度请重新输入");
             } else {
                 if (Objects.isNull(project.getId())) {
-                    project.setCreateBy(SecurityUtils.getUsername());
-                    project.setCreateTime(LocalDateTime.now());
-                    project.setTenantId(SecurityUtils.getTenantId());
-                    project.setDeptId(SecurityUtils.getLoginUser().getSysUser().getDeptId());
+                    project.setCreateBy(userName);
+                    project.setCreateTime(now);
+                    project.setDeptId(deptId);
                     this.save(project);
                 } else {
-                    project.setUpdateBy(SecurityUtils.getUsername());
-                    project.setUpdateTime(LocalDateTime.now());
+                    project.setUpdateBy(userName);
+                    project.setUpdateTime(now);
                     this.updateById(project);
                 }
             }
@@ -96,7 +99,7 @@ public class PmProjectServiceImpl extends AbstractCrudService<PmProjectMapper, P
         queryWrapper.eq(PmWorkContent::getProjectId, projectId);
         List<PmWorkContent> pmWorkContent = pmWorkContentMapper.selectList(queryWrapper);
         if (pmWorkContent.size() != 0) {
-            throw new BusinessException("该项目下存在日报,无法删除!");
+            throw new BusinessException("该项目下存在日报,无法删除!若有疑问请联系管理员");
         } else {
             LambdaQueryWrapper<PmProject> query = Wrappers.lambdaQuery();
             query.eq(PmProject::getId, projectId);
@@ -144,6 +147,10 @@ public class PmProjectServiceImpl extends AbstractCrudService<PmProjectMapper, P
     @Override
     public CommonPage<PmProject> projectList(String projectName, Integer projectType, Integer projectStatus, Integer projectAscription, Integer pageNum, Integer pageSize, Integer projectId) {
         IPage<PmProject> page = new Page<>(pageNum, pageSize);
+        Long userId = SecurityUtils.getUserId();
+        String username = SecurityUtils.getUsername();
+        String nickName = SecurityUtils.getLoginUser().getSysUser().getNickName();
+        Integer tenantId = SecurityUtils.getTenantId();
         LambdaQueryWrapper<PmProject> lambdaQuery = Wrappers.lambdaQuery();
         lambdaQuery.eq(PmProject::getTenantId, SecurityUtils.getTenantId()).eq(PmProject::getDelFlag, 0);
         if (projectId != null && projectId != 0) {
@@ -152,13 +159,13 @@ public class PmProjectServiceImpl extends AbstractCrudService<PmProjectMapper, P
             return new CommonPage<>(page.getRecords(), page.getTotal(), pageSize, pageNum);
         }
         if (projectAscription == 0) {
-            lambdaQuery.and(q -> q.eq(PmProject::getProjectHead, SecurityUtils.getUserId())
-                    .or().apply("FIND_IN_SET('" + SecurityUtils.getUserId() + "', project_member) > 0")
-                    .or().eq(PmProject::getCreateBy, SecurityUtils.getUsername()));
+            lambdaQuery.and(q -> q.eq(PmProject::getProjectHead, userId)
+                    .or().apply("FIND_IN_SET('" + userId + "', project_member) > 0")
+                    .or().eq(PmProject::getCreateBy, username));
         } else if (projectAscription == 1) {
-            lambdaQuery.eq(PmProject::getProjectHead, SecurityUtils.getUserId());
+            lambdaQuery.eq(PmProject::getProjectHead, userId);
         } else if (projectAscription == 2) {
-            lambdaQuery.apply("FIND_IN_SET('" + SecurityUtils.getUserId() + "', project_member) > 0");
+            lambdaQuery.apply("FIND_IN_SET('" + userId + "', project_member) > 0");
         }
         if (!projectName.isEmpty()) {
             lambdaQuery.like(PmProject::getProjectName, projectName);
@@ -174,7 +181,7 @@ public class PmProjectServiceImpl extends AbstractCrudService<PmProjectMapper, P
         // 替换创建人和更新人名字(username→nickname)
         LambdaQueryWrapper<SysUser> query = Wrappers.lambdaQuery();
         query.select(SysUser::getUserName, SysUser::getNickName)
-                .eq(SysUser::getTenantId, SecurityUtils.getTenantId())
+                .eq(SysUser::getTenantId, tenantId)
                 .eq(SysUser::getDelFlag, 0)
                 .eq(SysUser::getStatus, "0");
         List<SysUser> sysUsers = sysUserMapper.selectList(query);
@@ -182,7 +189,7 @@ public class PmProjectServiceImpl extends AbstractCrudService<PmProjectMapper, P
         Map<String, String> userNameToNickName = new HashMap<>();
         for (SysUser sysUser : sysUsers) {
             if (sysUser != null && sysUser.getUserName() != null) {
-                userNameToNickName.put(sysUser.getUserName(), sysUser.getNickName());
+                userNameToNickName.put(sysUser.getUserName(), nickName);
             }
         }
 
@@ -369,44 +376,50 @@ public class PmProjectServiceImpl extends AbstractCrudService<PmProjectMapper, P
      */
     @Override
     public List<Map<LocalDate, BigDecimal>> projectWorkTime(Integer projectId, String startDate, String endDate) {
+
+        if (projectId == null || projectId == 0) {
+            throw new BusinessException("查询项目工时项目id有误!");
+        }
+
         List<Map<LocalDate, BigDecimal>> workTimeCount = new ArrayList<>();
-        if (projectId != null) {
-            LambdaQueryWrapper<PmWorkContent> wrapper = Wrappers.lambdaQuery();
-            wrapper.select(PmWorkContent::getReportId, PmWorkContent::getSubmitterId, PmWorkContent::getWorkTime)
-                    .eq(PmWorkContent::getProjectId, projectId)
-                    .eq(PmWorkContent::getTenantId, SecurityUtils.getTenantId());
 
-            if (StringUtils.isNotBlank(startDate) || StringUtils.isNotBlank(endDate)) {
-                LambdaQueryWrapper<PmWorkReport> wrapper2 = Wrappers.lambdaQuery();
-                wrapper2.select(PmWorkReport::getId, PmWorkReport::getReportDate)
-                        .eq(PmWorkReport::getTenantId, SecurityUtils.getTenantId())
-                        .between(PmWorkReport::getReportDate, startDate, endDate);
-                List<PmWorkReport> pmWorkReports = pmWorkReportMapper.selectList(wrapper2);
+        LocalDate now = LocalDate.now();
+        if (StringUtils.isBlank(endDate)) {
+            endDate = now.toString();
+        }
+        if (StringUtils.isBlank(startDate)) {
+            startDate = now.minusDays(29).toString();
+        }
 
-                List<Integer> reportIds = pmWorkReports.stream().map(PmWorkReport::getId).collect(Collectors.toList());
-                if (reportIds.isEmpty()) {
-                    return workTimeCount;
-                }
-                wrapper.in(PmWorkContent::getReportId, reportIds);
-                List<PmWorkContent> pmWorkContents = pmWorkContentMapper.selectList(wrapper);
-
-                for (PmWorkContent pmWorkContent : pmWorkContents) {
-                    Integer reportId = pmWorkContent.getReportId();
-                    for (PmWorkReport pmWorkReport : pmWorkReports) {
-                        if (reportId.equals(pmWorkReport.getId())) {
-                            LocalDate reportDate = pmWorkReport.getReportDate();
-                            BigDecimal workTime = pmWorkContent.getWorkTime();
-                            Map<LocalDate, BigDecimal> map = new HashMap<>();
-                            map.put(reportDate, workTime);
-                            workTimeCount.add(map);
-                        }
-                    }
+        LambdaQueryWrapper<PmWorkReport> wrapper2 = Wrappers.lambdaQuery();
+        wrapper2.select(PmWorkReport::getId, PmWorkReport::getReportDate)
+                .eq(PmWorkReport::getTenantId, SecurityUtils.getTenantId())
+                .between(PmWorkReport::getReportDate, startDate, endDate);
+        List<PmWorkReport> pmWorkReports = pmWorkReportMapper.selectList(wrapper2);
+
+        List<Integer> reportIds = pmWorkReports.stream().map(PmWorkReport::getId).collect(Collectors.toList());
+        if (reportIds.isEmpty()) {
+            return workTimeCount;
+        }
+
+        LambdaQueryWrapper<PmWorkContent> wrapper = Wrappers.lambdaQuery();
+        wrapper.select(PmWorkContent::getReportId, PmWorkContent::getSubmitterId, PmWorkContent::getWorkTime)
+                .eq(PmWorkContent::getProjectId, projectId)
+                .eq(PmWorkContent::getTenantId, SecurityUtils.getTenantId())
+                .in(PmWorkContent::getReportId, reportIds);
+        List<PmWorkContent> pmWorkContents = pmWorkContentMapper.selectList(wrapper);
+
+        for (PmWorkContent pmWorkContent : pmWorkContents) {
+            Integer reportId = pmWorkContent.getReportId();
+            for (PmWorkReport pmWorkReport : pmWorkReports) {
+                if (reportId.equals(pmWorkReport.getId())) {
+                    LocalDate reportDate = pmWorkReport.getReportDate();
+                    BigDecimal workTime = pmWorkContent.getWorkTime();
+                    Map<LocalDate, BigDecimal> map = new HashMap<>();
+                    map.put(reportDate, workTime);
+                    workTimeCount.add(map);
                 }
-            } else {
-                throw new BusinessException("查询项目工时统计时间范围不能为空!");
             }
-        } else {
-            throw new BusinessException("查询项目工时项目id不能为空!");
         }
         return workTimeCount;
     }

+ 96 - 92
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/PmWorkContentServiceImpl.java

@@ -103,16 +103,13 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
      * @param: []
      * @return: java.util.List<java.lang.Integer>
      **/
-    private List<Integer> receive(LocalDate startDate, LocalDate endDate) {
+    private List<Integer> receive() {
         Long userId = SecurityUtils.getUserId();
         Integer tenantId = SecurityUtils.getTenantId();
         LambdaQueryWrapper<PmWorkReport> reportQuery = Wrappers.lambdaQuery();
         reportQuery.select(PmWorkReport::getId)
                 .eq(PmWorkReport::getTenantId, tenantId)
                 .apply("FIND_IN_SET(" + userId + ", cc_to) > 0");
-        if (startDate != null && endDate != null) {
-            reportQuery.between(PmWorkReport::getReportDate, startDate, endDate);
-        }
         List<PmWorkReport> reportIds = pmWorkReportMapper.selectList(reportQuery);
         return reportIds.stream().map(PmWorkReport::getId).collect(Collectors.toList());
     }
@@ -124,16 +121,13 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
      * @param: []
      * @return: java.util.List<java.lang.Integer>
      **/
-    private List<Integer> sentOut(LocalDate startDate, LocalDate endDate) {
+    private List<Integer> sentOut() {
         Long userid = SecurityUtils.getUserId();
         Integer tenantId = SecurityUtils.getTenantId();
         LambdaQueryWrapper<PmWorkReport> reportQuery = Wrappers.lambdaQuery();
         reportQuery.select(PmWorkReport::getId)
                 .eq(PmWorkReport::getTenantId, tenantId)
                 .eq(PmWorkReport::getSubmitterId, userid);
-        if (startDate != null && endDate != null) {
-            reportQuery.between(PmWorkReport::getReportDate, startDate, endDate);
-        }
         List<PmWorkReport> reportIds = pmWorkReportMapper.selectList(reportQuery);
         List<Integer> rIds = new ArrayList<>();
         for (PmWorkReport report : reportIds) {
@@ -198,6 +192,7 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
         LocalDateTime endDateTime = null;
         LocalDate start = null;
         LocalDate end = null;
+        List<Integer> reportIds = new ArrayList<>();
         if (StringUtils.isNotBlank(startDate) && StringUtils.isNotBlank(endDate)) {
             DateTimeFormatter formatter = null;
             try {
@@ -207,51 +202,52 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
             }
             start = LocalDate.parse(startDate, formatter);
             end = LocalDate.parse(endDate, formatter);
-            startDateTime = start.atStartOfDay();
-            endDateTime = end.atTime(23, 59, 59);
+            // startDateTime = start.atStartOfDay();
+            // endDateTime = end.atTime(23, 59, 59);
+            LambdaQueryWrapper<PmWorkReport> reportQuery = Wrappers.lambdaQuery();
+            reportQuery.select(PmWorkReport::getId)
+                    .between(PmWorkReport::getReportDate, start, end);
+            reportIds = pmWorkReportMapper.selectList(reportQuery).stream().map(PmWorkReport::getId).collect(Collectors.toList());
         }
 
         List<PmWorkContent> workContentList = new ArrayList<>();
-        List<Integer> reportIds = new ArrayList<>();
-        if (StringUtils.isBlank(startDate) && StringUtils.isBlank(endDate)) {
-            reportIds = reportDateQuery(startDate, endDate);
-        }
-
-        if (projectAscription != 1 && projectAscription != 2 && projectAscription != 3) {
-            throw new BusinessException("查询标识有误");
-        }
-        List<Integer> receiveList = receive(start, end);
-        if (projectAscription == 2 && receiveList.isEmpty()) {
-            return workContentList;
-        }
-        List<Integer> sentOutList = sentOut(start, end);
-        if (projectAscription == 3 && sentOutList.isEmpty()) {
-            return workContentList;
-        }
-        List<Integer> headProjects = head();
-        if (projectAscription == 1 && headProjects.isEmpty()) {
-            return workContentList;
-        }
 
         LambdaQueryWrapper<PmWorkContent> contentLambdaQuery = Wrappers.lambdaQuery();
         contentLambdaQuery.select(PmWorkContent::getProjectId, PmWorkContent::getProjectName);
-        if (!reportIds.isEmpty()) {
-            contentLambdaQuery.in(PmWorkContent::getReportId, reportIds);
+        switch (projectAscription) {
+            case 1:
+                List<Integer> headProjects = head();
+                if (headProjects.isEmpty()) {
+                    return workContentList;
+                }
+                contentLambdaQuery.in(PmWorkContent::getProjectId, headProjects);
+                break;
+            case 2:
+                List<Integer> receiveList = receive();
+                if (receiveList.isEmpty()) {
+                    return workContentList;
+                }
+                contentLambdaQuery.in(PmWorkContent::getReportId, receiveList);
+                break;
+            case 3:
+                List<Integer> sentOutList = sentOut();
+                if (sentOutList.isEmpty()) {
+                    return workContentList;
+                }
+                contentLambdaQuery.in(PmWorkContent::getReportId, sentOutList);
+                break;
+            default:
+                throw new BusinessException("查询标识有误");
         }
         if (StringUtils.isNotBlank(projectName)) {
             contentLambdaQuery.like(PmWorkContent::getProjectName, projectName);
         }
-        if (projectAscription == 1) {
-            contentLambdaQuery.in(PmWorkContent::getProjectId, headProjects)
-                    .between(PmWorkContent::getCreateTime, startDateTime, endDateTime);
-        } else if (projectAscription == 2) {
-            contentLambdaQuery.in(PmWorkContent::getReportId, receiveList);
-        } else {
-            contentLambdaQuery.in(PmWorkContent::getReportId, sentOutList);
+        if (!reportIds.isEmpty()) {
+            contentLambdaQuery.in(PmWorkContent::getReportId, reportIds);
         }
         contentLambdaQuery.groupBy(PmWorkContent::getProjectId)
                 .groupBy(PmWorkContent::getProjectName);
-        workContentList = this.list(contentLambdaQuery);
+        workContentList = pmWorkContentMapper.selectList(contentLambdaQuery);
 
         return workContentList;
     }
@@ -304,11 +300,11 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
             if (projectAscription != 1 && projectAscription != 2 && projectAscription != 3) {
                 throw new BusinessException("查询标识有误");
             }
-            List<Integer> receiveList2 = receive(start, end);
+            List<Integer> receiveList2 = receive();
             if (projectAscription == 2 && receiveList2.isEmpty()) {
                 return reportList2;
             }
-            List<Integer> sentOutList = sentOut(start, end);
+            List<Integer> sentOutList = sentOut();
             if (projectAscription == 3 && sentOutList.isEmpty()) {
                 return reportList2;
             }
@@ -423,8 +419,10 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
         usersQuery.select(SysUser::getUserId, SysUser::getNickName, SysUser::getUserName, SysUser::getPhonenumber, SysUser::getAvatar,
                         SysUser::getSex, SysUser::getDeptId)
                 .eq(SysUser::getTenantId, SecurityUtils.getTenantId())
-                .eq(SysUser::getDelFlag, 0)
-                .in(SysUser::getUserId, userIds);
+                .eq(SysUser::getDelFlag, 0);
+        if (!userIds.isEmpty()) {
+            usersQuery.in(SysUser::getUserId, userIds);
+        }
         return sysUserMapper.selectList(usersQuery);
     }
 
@@ -450,6 +448,7 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
         LocalDateTime endDateTime = null;
         LocalDate start = null;
         LocalDate end = null;
+        List<Integer> reportIds = new ArrayList<>();
         if (StringUtils.isNotBlank(startDate) && StringUtils.isNotBlank(endDate)) {
             DateTimeFormatter formatter = null;
             try {
@@ -459,94 +458,95 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
             }
             start = LocalDate.parse(startDate, formatter);
             end = LocalDate.parse(endDate, formatter);
-            startDateTime = start.atStartOfDay();
-            endDateTime = end.atTime(23, 59, 59);
+            // startDateTime = start.atStartOfDay();
+            // endDateTime = end.atTime(23, 59, 59);
+            LambdaQueryWrapper<PmWorkReport> reportQuery = Wrappers.lambdaQuery();
+            reportQuery.select(PmWorkReport::getId)
+                    .between(PmWorkReport::getReportDate, start, end);
+            reportIds = pmWorkReportMapper.selectList(reportQuery).stream().map(PmWorkReport::getId).collect(Collectors.toList());
+        }
+
+        if (projectId != null && projectId > 0) {
+            LambdaQueryWrapper<PmWorkContent> contentLambdaQuery = Wrappers.lambdaQuery();
+            contentLambdaQuery.select(PmWorkContent::getReportId)
+                    .eq(PmWorkContent::getProjectId, projectId);
+            reportIds.addAll(pmWorkContentMapper.selectList(contentLambdaQuery).stream().map(PmWorkContent::getReportId).collect(Collectors.toList()));
         }
 
         CommonPage<PmWorkReport> returnPage = new CommonPage<>(new ArrayList<>(), 0, pageSize, pageNum);
         Integer tenantId = SecurityUtils.getTenantId();
         Long userId = SecurityUtils.getUserId();
-        Long deptId = SecurityUtils.getLoginUser().getSysUser().getDeptId();
-
-        if (projectAscription != 1 && projectAscription != 2 && projectAscription != 3) {
-            throw new BusinessException("查询标识有误");
-        }
-        List<Integer> headProjects = head();
-        if (projectAscription == 1 && headProjects.isEmpty()) {
-            return returnPage;
-        }
-        List<Integer> receiveList2 = receive(start, end);
-        if (projectAscription == 2 && receiveList2.isEmpty()) {
-            return returnPage;
-        }
-        List<Integer> sentOutList = sentOut(start, end);
-        if (projectAscription == 3 && sentOutList.isEmpty()) {
+        List<Long> userIds = new ArrayList<>();
+        List<Integer> receiveList = receive();
+        if (receiveList.isEmpty()) {
             return returnPage;
         }
 
-        List<Long> userIds = new ArrayList<>();
         LambdaQueryWrapper<PmWorkContent> contentLambdaQuery = Wrappers.lambdaQuery();
         contentLambdaQuery.select(PmWorkContent::getReportId, PmWorkContent::getWorkContent, PmWorkContent::getWorkTime, PmWorkContent::getProjectName);
-        if (reportId != null && reportId != 0) {
+        if (reportId != null && reportId > 0) {
             contentLambdaQuery.eq(PmWorkContent::getReportId, reportId);
         } else {
-            contentLambdaQuery.eq(PmWorkContent::getTenantId, tenantId).eq(PmWorkContent::getDeptId, deptId);
-
-            if (projectId != null && projectId != 0) {
-                contentLambdaQuery.eq(PmWorkContent::getProjectId, projectId);
-            }
-
-            if (startDateTime != null) {
-                contentLambdaQuery.between(PmWorkContent::getCreateTime, startDateTime, endDateTime);
-            }
-
             switch (projectAscription) {
                 case 1:
-                    contentLambdaQuery.in(PmWorkContent::getReportId, headProjects);
+                    List<Integer> headProjects = head();
+                    if (headProjects.isEmpty()) {
+                        return returnPage;
+                    }
+                    contentLambdaQuery.in(PmWorkContent::getProjectId, headProjects);
                     break;
                 case 2:
-                    contentLambdaQuery.in(PmWorkContent::getReportId, receiveList2);
+                    contentLambdaQuery.in(PmWorkContent::getReportId, receiveList);
                     break;
                 case 3:
+                    List<Integer> sentOutList = sentOut();
+                    if (sentOutList.isEmpty()) {
+                        return returnPage;
+                    }
                     contentLambdaQuery.in(PmWorkContent::getReportId, sentOutList);
                     break;
+                default:
+                    throw new BusinessException("查询标识有误!");
+            }
+            if (!reportIds.isEmpty()) {
+                contentLambdaQuery.in(PmWorkContent::getReportId, reportIds);
             }
         }
         List<PmWorkContent> pmWorkContentList = pmWorkContentMapper.selectList(contentLambdaQuery);
-
-        if (receiveList2.isEmpty()) {
+        if (pmWorkContentList.isEmpty()) {
+            if (reportId != null && reportId > 0) {
+                throw new BusinessException("该报告已被删除!");
+            }
             return returnPage;
         }
+        List<Integer> reportIds2 = pmWorkContentList.stream().distinct().map(PmWorkContent::getReportId).collect(Collectors.toList());
 
         LambdaQueryWrapper<PmWorkReport> reportQuery = Wrappers.lambdaQuery();
         reportQuery.select(PmWorkReport::getId, PmWorkReport::getCoordinateWork, PmWorkReport::getTomorrowPlan, PmWorkReport::getCcTo, PmWorkReport::getSubmitterId,
-                PmWorkReport::getSubmitDate, PmWorkReport::getReportDate, PmWorkReport::getCreateBy);
+                        PmWorkReport::getSubmitDate, PmWorkReport::getReportDate, PmWorkReport::getCreateBy)
+                .eq(PmWorkReport::getReportStatus, 1);
         if (reportId != null && reportId != 0) {
             reportQuery.eq(PmWorkReport::getId, reportId);
         } else {
-            reportQuery.in(PmWorkReport::getId, receiveList2)
+            reportQuery.in(PmWorkReport::getId, reportIds2)
                     .orderByDesc(PmWorkReport::getCreateTime);
         }
-        reportQuery.eq(PmWorkReport::getReportStatus, 1);
         IPage<PmWorkReport> reportPage = pmWorkReportMapper.selectPage(new Page<>(pageNum, pageSize), reportQuery);
-        if (reportPage.getRecords() == null || reportPage.getRecords().isEmpty()) {
-            return returnPage;
-        }
         List<PmWorkReport> reportList = reportPage.getRecords();
 
-
+        // 查询已读状态
         LambdaQueryWrapper<PmReceive> statusQuery = Wrappers.lambdaQuery();
         statusQuery.select(PmReceive::getReportId, PmReceive::getReadFlag)
                 .eq(PmReceive::getReceiverId, userId);
         if (reportId != null && reportId != 0) {
             statusQuery.eq(PmReceive::getReportId, reportId);
-        } else if (!receiveList2.isEmpty()) {
-            statusQuery.in(PmReceive::getReportId, receiveList2);
+        } else if (!receiveList.isEmpty()) {
+            statusQuery.in(PmReceive::getReportId, receiveList);
         }
-        List<PmReceive> receiveList = pmReceiveMapper.selectList(statusQuery);
+        List<PmReceive> receiveList2 = pmReceiveMapper.selectList(statusQuery);
 
         Map<Integer, Integer> reportReadFlags = new HashMap<>();
-        for (PmReceive pmReceive : receiveList) {
+        for (PmReceive pmReceive : receiveList2) {
             Integer reportId2 = pmReceive.getReportId();
             reportReadFlags.put(reportId2, pmReceive.getReadFlag());
         }
@@ -571,18 +571,22 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
         }
 
 
-        // 已读未读查询
-        List<PmReceive> receives = receives(receiveList2);
+        // 已读未读数量查询
+        List<PmReceive> receives = receives(receiveList);
         List<Long> uId = new ArrayList<>();
         for (PmReceive pmReceive : receives) {
             Long receiverId = pmReceive.getReceiverId();
             uId.add(receiverId);
         }
 
-        List<Long> userIdList = new ArrayList<>();
+
+        Set<Long> userIdSet = new HashSet<>();
         for (PmWorkReport report : reportList) {
-            userIdList.add(report.getSubmitterId());
+            Long submitterId = report.getSubmitterId();
+            userIdSet.add(submitterId);
         }
+        List<Long> userIdList = new ArrayList<>(userIdSet);
+
         List<SysUser> sysUsers = nickNames(userIdList);
 
         Map<Integer, List<PmReceive>> reportReceivesMap = receives.stream()

+ 36 - 4
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/PmWorkReportServiceImpl.java

@@ -323,12 +323,10 @@ public class PmWorkReportServiceImpl extends AbstractCrudService<PmWorkReportMap
                 }
                 // 是否同步钉钉
                 if (pmWorkReport.getSendDingTalk().equals(1)) {
-
-                    String dingTalkUserId = dingTalkAndMessage.getDingTalkUserId(userId);
+/*                    String dingTalkUserId = dingTalkAndMessage.getDingTalkUserId(userId);
                     if (StringUtils.isBlank(dingTalkUserId)){
                         throw new BusinessException("注册手机号与钉钉手机号不一致,无法抄送钉钉");
-                    }
-
+                    }*/
                     dingTalkAndMessage.sendDingTalkDailyReport(newReport, pmWorkContents);
                 }
 
@@ -588,5 +586,39 @@ public class PmWorkReportServiceImpl extends AbstractCrudService<PmWorkReportMap
         log.info("定时报告任务结束---------------------------");
     }
 
+    /**
+     * @description: 删除报告
+     * @author: fu
+     * @date: 2024/8/7 20:17
+     * @param: [reportId]
+     * @return: void
+     **/
+    @Transactional
+    @Override
+    public void deleteContent(Integer reportId) {
+        if (reportId == null || reportId < 0){
+            throw new BusinessException("报告id不正确,删除报告失败!");
+        }
+
+        Long userId = SecurityUtils.getUserId();
+        LambdaQueryWrapper<PmWorkReport> report = Wrappers.lambdaQuery();
+        report.select(PmWorkReport::getId)
+                .eq(PmWorkReport::getSubmitterId, userId);
+        if (!report.getSqlSegment().contains(reportId.toString())) {
+            throw new BusinessException("您没有删除该报告权限!");
+        }
+
+        LambdaQueryWrapper<PmWorkContent> reportContents = Wrappers.lambdaQuery();
+        reportContents.eq(PmWorkContent::getReportId, reportId);
+        pmWorkContentMapper.delete(reportContents);
+
+        try {
+            pmWorkReportMapper.deleteById(reportId);
+        } catch (Exception e) {
+            log.error("删除报告失败!" + e);
+            throw new BusinessException("删除报告失败请联系管理员");
+        }
+    }
+
 
 }