Bläddra i källkod

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

fuyuchuan 9 månader sedan
förälder
incheckning
7c69b31c65

+ 9 - 4
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/PmWorkContentController.java

@@ -34,16 +34,21 @@ public class PmWorkContentController {
     @Autowired
     private PmWorkContentService pmWorkContentService;
 
+    /**
+     * 项目名
+     *
+     * @param startDate
+     * @param endDate
+     * @param projectName
+     * @param reportId
+     * @return
+     */
     @GetMapping("/projectName")
     public ApiResult<List<PmWorkContent>> pageList(@RequestParam(value = "startDate", required = false) String startDate,
                                                    @RequestParam(value = "endDate", required = false) String endDate,
                                                    @RequestParam(value = "projectName", required = false) String projectName,
                                                    @RequestParam(value = "reportId", required = false) Integer reportId,
                                                    @RequestParam(value = "projectAscription", required = false, defaultValue = "1") Integer projectAscription) {
-        if (StringUtils.isBlank(startDate) || StringUtils.isBlank(endDate)) {
-            startDate = LocalDate.now().minusDays(2).toString();
-            endDate = LocalDate.now().toString();
-        }
         return ApiResult.success(pmWorkContentService.projectQuery(startDate, endDate, projectName, projectAscription, reportId));
     }
 

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

@@ -54,7 +54,7 @@ public interface PmWorkContentService extends CrudService<PmWorkContent> {
     List<SysUser> allNickName();
 
     /**
-     * APP报告详情分页列表
+     * 报告详情分页列表
      * @param projectAscription 1:我负责;2:我收到;3:我发出
      * @param pageNum 页数
      * @param pageSize 页大小

+ 24 - 14
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/config/DingTalkAndMessage.java

@@ -114,6 +114,9 @@ public class DingTalkAndMessage {
      */
     public String getDingTalkUserId(Long userId) {
         String dingTalkId = "";
+        if (userId == null) {
+            return dingTalkId;
+        }
         LambdaQueryWrapper<MceMbuser> dingTalkQuery = Wrappers.lambdaQuery();
         dingTalkQuery.select(MceMbuser::getDingTalkId, MceMbuser::getUserId)
                 .eq(MceMbuser::getUserId, userId);
@@ -159,27 +162,30 @@ public class DingTalkAndMessage {
         return dingTalkId;
     }
 
-    @Async("asyncServiceExecutor")//异步发送
+    @Async("asyncServiceExecutor")// 异步发送
     public void sendDingTalkDailyReport(PmWorkReport workReport, List<PmWorkContent> workContents) {
         String userName = workReport.getCreateBy();
+        try {
         log.info(userName + "的工作报告开始发送钉钉-----------------------------------");
         String ccToStr = workReport.getCcTo();
-        String[] items = ccToStr.split(",");
-        try {
-            List<Long> userIds = new ArrayList<>();
-            for (String item : items) {
-                long number = Long.parseLong(item.trim());
-                userIds.add(number);
-            }
-            List<String> ccTo = new ArrayList<>();
-            for (Long userId : userIds) {
-                String dingTalkUserId = getDingTalkUserId(userId);
-                ccTo.add(dingTalkUserId);
+        List<String> ccTo = new ArrayList<>();
+            if (StringUtils.isNotBlank(ccToStr)) {
+                String[] items = ccToStr.split(",");
+                List<Long> userIds = new ArrayList<>();
+                for (String item : items) {
+                    long number = Long.parseLong(item.trim());
+                    userIds.add(number);
+                }
+                for (Long userId : userIds) {
+                    String dingTalkUserId = getDingTalkUserId(userId);
+                    ccTo.add(dingTalkUserId);
+                }
             }
             String reportCoordinateWork = workReport.getCoordinateWork();
             String reportTomorrowPlan = workReport.getTomorrowPlan();
             String coordinateWork1 = "-";
             String tomorrowPlan1 = "-";
+
             if (reportCoordinateWork != null && reportCoordinateWork != "") {
                 coordinateWork1 = reportCoordinateWork;
             }
@@ -224,12 +230,15 @@ public class DingTalkAndMessage {
             coordinateWork.setKey(dingTalkConstant.DING_TALK_DAILY_REPORT_COORDINATE_WORK);
             list3.add(coordinateWork);
             obj1.setContents(list3);
-            obj1.setToUserids(ccTo);
+            if (!ccTo.isEmpty()) {
+                obj1.setToUserids(ccTo);
+            }
             obj1.setTemplateId(dingTalkConstant.DING_TALK_DAILY_REPORT_TEMPLATE_ID);
             obj1.setToChat(dingTalkConstant.DING_TALK_DAILY_REPORT_TO_CHAT);
             obj1.setDdFrom(dingTalkConstant.DING_TALK_CORP_ID);
             obj1.setUserid(getDingTalkUserId(workReport.getSubmitterId()));
-            //obj1.setToCids(dingTalkConstant.DING_TALK_DAILY_REPORT_TO_CIDS);//发送到群,群id
+            // obj1.setToChat(true);
+            // obj1.setToCids(dingTalkConstant.DING_TALK_DAILY_REPORT_TO_CIDS);//发送到群,群id
             req.setCreateReportParam(obj1);
             OapiReportCreateResponse rsp = client.execute(req, getDingTalkToken());
             if (rsp.isSuccess()) {
@@ -242,6 +251,7 @@ public class DingTalkAndMessage {
         } catch (Exception e) {
             log.error("钉钉报告发送消息时发生异常", e);
         }
+
         log.info(userName + "的工作报告发送钉钉结束-----------------------------------");
     }
 

+ 56 - 26
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/PmWorkContentServiceImpl.java

@@ -65,6 +65,13 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
         baseMapper.delete(deleteWrapper);
     }
 
+    /**
+     * @description: 查询报告时间段
+     * @author: fu
+     * @date: 2024/8/7 17:48
+     * @param: [startDate, endDate]
+     * @return: java.util.List<java.lang.Integer>
+     **/
     private List<Integer> reportDateQuery(String startDate, String endDate) {
         Long deptId = SecurityUtils.getLoginUser().getSysUser().getDeptId();
         Integer tenantId = SecurityUtils.getTenantId();
@@ -103,13 +110,20 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
         return reportIds.stream().map(PmWorkReport::getId).collect(Collectors.toList());
     }
 
+    /**
+     * @description: 查询我发出的报告
+     * @author: fu
+     * @date: 2024/8/7 17:48
+     * @param: []
+     * @return: java.util.List<java.lang.Integer>
+     **/
     private List<Integer> sentOut() {
-        String username = SecurityUtils.getUsername();
+        Long usernid = SecurityUtils.getUserId();
         Integer tenantId = SecurityUtils.getTenantId();
         LambdaQueryWrapper<PmWorkReport> reportQuery = Wrappers.lambdaQuery();
         reportQuery.select(PmWorkReport::getId)
                 .eq(PmWorkReport::getTenantId, tenantId)
-                .eq(PmWorkReport::getCreateBy, username);
+                .eq(PmWorkReport::getSubmitterId, usernid);
         List<PmWorkReport> reportIds = pmWorkReportMapper.selectList(reportQuery);
         List<Integer> rIds = new ArrayList<>();
         for (PmWorkReport report : reportIds) {
@@ -140,6 +154,13 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
         return rIds;
     }
 
+    /**
+     * @description: 查询项目id
+     * @author: fu
+     * @date: 2024/8/7 17:14
+     * @param: []
+     * @return: java.util.List<java.lang.Integer>
+     **/
     private List<Integer> reportList(String projectName) {
         Integer tenantId = SecurityUtils.getTenantId();
         LambdaQueryWrapper<PmWorkContent> projectQuery = Wrappers.lambdaQuery();
@@ -154,6 +175,13 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
         return rIds;
     }
 
+    /**
+     * @description: 查询项目
+     * @author: fu
+     * @date: 2024/8/7 17:14
+     * @param: [projectIds]
+     * @return: java.util.List<com.usky.iot.domain.PmProject>
+     **/
     @Override
     public List<PmWorkContent> projectQuery(String startDate, String endDate, String projectName, Integer projectAscription, Integer reportId) {
         if (reportId != null && reportId != 0) {
@@ -164,22 +192,18 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
             List<PmWorkContent> pmWorkContentList = this.list(contentLambdaQuery);
             return pmWorkContentList;
         }
-        List<Integer> reportIds = reportDateQuery(startDate, endDate);
+        List<Integer> reportIds = new ArrayList<>();
+        if (StringUtils.isBlank(startDate) && StringUtils.isBlank(endDate)) {
+            reportIds = reportDateQuery(startDate, endDate);
+        }
         List<Integer> receiveList = receive();
         List<Integer> sentOutList = sentOut();
         List<Integer> headProjects = head();
-        // LocalDate start = LocalDate.parse(startDate);
-        // LocalDate end = LocalDate.parse(endDate);
-        // String subQueryReports = "SELECT id FROM pm_work_report WHERE report_date BETWEEN '" + start + "' AND '" + end + "' AND tenant_id = " + SecurityUtils.getTenantId();
-        // String subQueryReport = "SELECT id FROM pm_work_report WHERE FIND_IN_SET('" + SecurityUtils.getUserId() + "', cc_to) > 0 AND tenant_id = " + SecurityUtils.getTenantId();
-        // String sentOut = "SELECT id FROM pm_work_report WHERE create_by = '" + SecurityUtils.getUsername() + "' AND tenant_id = " + SecurityUtils.getTenantId();
-        // String subQueryProjects = "SELECT id FROM pm_project WHERE project_head = '" + SecurityUtils.getUserId() + "' AND tenant_id = " + SecurityUtils.getTenantId();
         LambdaQueryWrapper<PmWorkContent> contentLambdaQuery = Wrappers.lambdaQuery();
         contentLambdaQuery.select(PmWorkContent::getProjectId, PmWorkContent::getProjectName);
         if (!reportIds.isEmpty()) {
             contentLambdaQuery.in(PmWorkContent::getReportId, reportIds);
         }
-        //.inSql(PmWorkContent::getReportId, subQueryReports);
         if (StringUtils.isNotBlank(projectName)) {
             contentLambdaQuery.like(PmWorkContent::getProjectName, projectName);
         }
@@ -188,15 +212,12 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
                 return new ArrayList<PmWorkContent>();
             }
             contentLambdaQuery.in(PmWorkContent::getProjectId, headProjects);
-            // contentLambdaQuery.inSql(PmWorkContent::getProjectId, subQueryProjects);
         } else if (projectAscription == 2) {
-            // contentLambdaQuery.inSql(PmWorkContent::getReportId, subQueryReport);
             if (receiveList.isEmpty()) {
                 return new ArrayList<PmWorkContent>();
             }
             contentLambdaQuery.in(PmWorkContent::getReportId, receiveList);
         } else if (projectAscription == 3) {
-            // contentLambdaQuery.in(PmWorkContent::getReportId, sentOutList);
             if (sentOutList.isEmpty()) {
                 return new ArrayList<PmWorkContent>();
             }
@@ -231,11 +252,6 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
             List<Integer> receiveList2 = receive();
             List<Integer> sentOutList = sentOut();
             List<Integer> headProjects = head();
-            // String subQueryReports = "SELECT id FROM pm_work_report WHERE report_date BETWEEN '" + start + "' AND '" + end + "' AND tenant_id = " + SecurityUtils.getTenantId();
-            // String subQueryReport = "SELECT id FROM pm_work_report WHERE FIND_IN_SET('" + SecurityUtils.getUserId() + "', cc_to) > 0 AND tenant_id = " + SecurityUtils.getTenantId();
-            // String subQueryProjects = "SELECT id FROM pm_project WHERE project_head = '" + SecurityUtils.getUserId() + "' AND tenant_id = " + SecurityUtils.getTenantId();
-            // String sentOut = "SELECT id FROM pm_work_report WHERE create_by = '" + SecurityUtils.getUsername() + "' AND tenant_id = " + SecurityUtils.getTenantId();
-            // String reportIdList = "SELECT report_id FROM pm_work_content WHERE project_name = '" + projectName + "' AND tenant_id = " + SecurityUtils.getTenantId();
             LambdaQueryWrapper<PmWorkContent> contentLambdaQuery = Wrappers.lambdaQuery();
             contentLambdaQuery.select(PmWorkContent::getReportId, PmWorkContent::getWorkContent, PmWorkContent::getWorkTime, PmWorkContent::getProjectName);
             if (StringUtils.isNotBlank(startDate) && StringUtils.isNotBlank(endDate)) {
@@ -247,18 +263,12 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
                 contentLambdaQuery.between(PmWorkContent::getCreateTime, startDateTime, endDateTime);
             }
             if (projectAscription == 1) {
-                //.inSql(PmWorkContent::getReportId, subQueryReports);
                 contentLambdaQuery.in(PmWorkContent::getProjectId, headProjects);
             } else if (projectAscription == 2) {
-                // contentLambdaQuery.inSql(PmWorkContent::getReportId, subQueryReport);
                 contentLambdaQuery.in(PmWorkContent::getReportId, receiveList2);
             } else if (projectAscription == 3) {
-                // contentLambdaQuery.inSql(PmWorkContent::getReportId, sentOut);
                 contentLambdaQuery.in(PmWorkContent::getReportId, sentOutList);
             }
-//            if (StringUtils.isNotBlank(projectName)) {
-//                contentLambdaQuery.inSql(PmWorkContent::getReportId, reportIdList);
-//            }
             if (StringUtils.isNotBlank(projectName)) {
                 List<Integer> list = reportList(projectName);
                 contentLambdaQuery.in(PmWorkContent::getReportId, list);
@@ -427,12 +437,14 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
             reportQuery.in(PmWorkReport::getId, reportIds)
                     .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)
@@ -443,7 +455,7 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
             statusQuery.in(PmReceive::getReportId, reportIds);
         }
         List<PmReceive> receiveList = pmReceiveMapper.selectList(statusQuery);
-        Map<Integer, Integer> reportReadFlags = receiveList.stream()
+/*        Map<Integer, Integer> reportReadFlags = receiveList.stream()
                 .collect(Collectors.toMap(PmReceive::getReportId, PmReceive::getReadFlag));
         reportList.forEach(report -> {
             List<PmWorkContent> contents = pmWorkContentList.stream()
@@ -454,7 +466,25 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
             if (reportReadFlags.containsKey(report.getId())) {
                 report.setReadFlag(reportReadFlags.get(report.getId()));
             }
-        });
+        });*/
+
+
+        Map<Integer, Integer> reportReadFlags = new HashMap<>();
+
+        for (PmReceive pmReceive : receiveList) {
+            Integer reportId2 = pmReceive.getReportId();
+            reportReadFlags.put(reportId2, pmReceive.getReadFlag());
+        }
+
+        for (PmWorkReport report : reportList) {
+            List<PmWorkContent> contents = pmWorkContentList.stream()
+                    .filter(content -> content.getReportId().equals(report.getId()))
+                    .collect(Collectors.toList());
+            report.setWorkContents(contents);
+            userIds.add(report.getSubmitterId());
+
+            report.setReadFlag(reportReadFlags.getOrDefault(report.getId(), 0));
+        }
 
         if (!userIds.isEmpty()) {
             List<SysUser> nickNames = nickNames(userIds);

+ 9 - 5
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/PmWorkReportServiceImpl.java

@@ -298,10 +298,11 @@ public class PmWorkReportServiceImpl extends AbstractCrudService<PmWorkReportMap
             }
 
             // 抄送人不为空、非定时发送
-            if (StringUtils.isNotEmpty(ccTo) && timingTime == null) {
-                // 推送消息中心
-                dingTalkAndMessage.sendAsyncMessage(newReport);
-
+            if (timingTime == null) {
+                if (StringUtils.isNotEmpty(ccTo)) {
+                    // 推送消息中心
+                    dingTalkAndMessage.sendAsyncMessage(newReport);
+                }
                 // 是否同步钉钉
                 if (pmWorkReport.getSendDingTalk().equals(1)) {
                     dingTalkAndMessage.sendDingTalkDailyReport(newReport, pmWorkContents);
@@ -359,7 +360,7 @@ public class PmWorkReportServiceImpl extends AbstractCrudService<PmWorkReportMap
                 pmWorkContentMapper.insert(e);
                 contentsList.add(e);
             }
-            if (pmWorkReport.getSendDingTalk() ==1 && pmWorkReport.getTimingTime() != null && pmWorkReport.getIsRegularlySend() == 1) {
+            if (pmWorkReport.getSendDingTalk().equals(1) && pmWorkReport.getIsRegularlySend() == 0) {
                 dingTalkAndMessage.sendDingTalkDailyReport(rp, contentsList);
             }
             if (pmWorkReport.getIsRegularlySend() == 0){
@@ -372,6 +373,9 @@ public class PmWorkReportServiceImpl extends AbstractCrudService<PmWorkReportMap
     }
 
     private void receiveMessages(String ids, Integer reportId) {
+        if (StringUtils.isBlank(ids)){
+            return;
+        }
         List<Long> longList = Arrays.stream(ids.split(","))
                 .map(Long::parseLong)
                 .collect(Collectors.toList());