Browse Source

修复报告记录列表”我发出的“与”我负责的“数据异常问题

fuyuchuan 8 months ago
parent
commit
3e47bff6f1

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

@@ -72,4 +72,9 @@ public class PmWorkReportController {
         LocalDateTime now = LocalDateTime.now();
         pmWorkReportService.timedSending(now);
     }
+
+    @GetMapping("/del")
+    public void del(@RequestParam 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);
     }
 
 

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

@@ -96,7 +96,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);

+ 86 - 88
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;
             }
@@ -450,6 +446,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 +456,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,8 +569,8 @@ 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();

+ 24 - 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,27 @@ 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) {
+        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("删除报告失败请联系管理员");
+        }
+    }
+
 
 }