瀏覽代碼

Merge remote-tracking branch 'origin/mode-min-unit' into mode-min-unit

xiahan 11 月之前
父節點
當前提交
01461bc18d

+ 6 - 0
cx-safe-check/cx-save-check-common/src/main/java/com/rongwei/sfcommon/sys/dao/AspSpecialEquipmentCertificateDao.java

@@ -2,12 +2,18 @@ package com.rongwei.sfcommon.sys.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.rongwe.scentity.domian.AspSpecialEquipmentCertificateDo;
+import com.rongwe.scentity.vo.SysNoticeVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * @Entity com.rongwei.training.domain.AspSpecialEquipmentCertificate
  */
 public interface AspSpecialEquipmentCertificateDao extends BaseMapper<AspSpecialEquipmentCertificateDo> {
 
+    List<SysNoticeVo> selectMyNoticeByType(@Param("typeList") List<String> typeList);
+
 }
 
 

+ 21 - 3
cx-safe-check/cx-save-check-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/AspSafeAttachmentsServiceImpl.java

@@ -9,6 +9,7 @@ import com.rongwe.scentity.domian.AspSafeAttachmentsDo;
 import com.rongwe.scentity.domian.CheckItemsDo;
 import com.rongwe.scentity.vo.CheckAreaVo;
 import com.rongwe.scentity.vo.ImportAspSafeAttachmentsVo;
+import com.rongwe.scentity.vo.SysNoticeVo;
 import com.rongwe.scentity.vo.UserMailOrgVo;
 import com.rongwei.rwadmincommon.system.domain.SysDictDo;
 import com.rongwei.rwadmincommon.system.domain.SysOrganizationDo;
@@ -22,6 +23,7 @@ import com.rongwei.rwcommon.vo.MailDo;
 import com.rongwei.rwcommonentity.commonservers.domain.SysFileItemDo;
 import com.rongwei.safecommon.utils.CXCommonUtils;
 import com.rongwei.sfcommon.sys.dao.AspSafeAttachmentsDao;
+import com.rongwei.sfcommon.sys.dao.AspSpecialEquipmentCertificateDao;
 import com.rongwei.sfcommon.sys.dao.SaveCheckCommonDao;
 import com.rongwei.sfcommon.sys.service.AspSafeAttachmentsService;
 import com.rongwei.sfcommon.utils.ClassExcelVerifyHandler;
@@ -43,9 +45,11 @@ import java.util.*;
 import java.util.stream.Collectors;
 
 import static com.rongwei.safecommon.utils.SaveConstans.*;
+import static com.rongwei.safecommon.utils.SaveConstans.NotifyContent.EQUIPMENT_CHECK_CONTENT;
 import static com.rongwei.safecommon.utils.SaveConstans.NotifyContent.SAFETY_ATTACHMENT_VERIFICATION_CONTENT;
 import static com.rongwei.safecommon.utils.SaveConstans.NotifyTitle.SAFETY_ATTACHMENT_VERIFICATION_TITLE;
 import static com.rongwei.safecommon.utils.SaveConstans.NotifyType.SAFETY_ATTACHMENT_VERIFICATION;
+import static com.rongwei.safecommon.utils.SaveConstans.NotifyType.SPECIALEQUIPMENT;
 
 /**
  *
@@ -81,6 +85,8 @@ public class AspSafeAttachmentsServiceImpl extends ServiceImpl<AspSafeAttachment
     private ClassExcelVerifyHandler verifyHandler;
     @Resource
     private SysConfigFeignService sysConfigFeignService;
+    @Resource
+    private AspSpecialEquipmentCertificateDao aspSpecialEquipmentCertificateDao;
 
     @Override
     public R stateUpdateScheduledTasks() {
@@ -130,8 +136,8 @@ public class AspSafeAttachmentsServiceImpl extends ServiceImpl<AspSafeAttachment
                     }
                 } else if (daysBetween <= 90) {
                     alertUser = userInfO.stream().filter(user -> SPECIAL_EQUIPMENT_ADMINISTRATOR.equals(user.getRoleCode())).map(UserMailOrgVo::getId).collect(Collectors.toList());
-                    sendNotifyMap.put(data, alertUser);
                     data.setReminderstate(MIDDLE);
+                    sendNotifyMap.put(data, alertUser);
                     for (String userId : alertUser) {
                         if (sendMailMap.containsKey(userId)) {
                             List<String> dataIdList = sendMailMap.get(userId).stream().map(AspSafeAttachmentsDo::getId).collect(Collectors.toList());
@@ -207,11 +213,23 @@ public class AspSafeAttachmentsServiceImpl extends ServiceImpl<AspSafeAttachment
      * @param sendNotifyMap
      */
     public void sendNotify(Map<AspSafeAttachmentsDo, List<String>> sendNotifyMap) {
+        //查询所有该类型的、未读的 消息通知
+        List<SysNoticeVo> sysNoticeVo = aspSpecialEquipmentCertificateDao.selectMyNoticeByType(Arrays.asList(SAFETY_ATTACHMENT_VERIFICATION));
+
+
         sendNotifyMap.forEach((k, v) -> {
+
+            String content = String.format(SAFETY_ATTACHMENT_VERIFICATION_CONTENT, k.getName() == null ? "" : k.getName(), k.getNumber() == null ? "" : k.getNumber(), k.getInspectiondate() == null ? "" : k.getInspectiondate(),
+                    k.getNextinspectiondate() == null ? "" : k.getNextinspectiondate(), k.getResponsible() == null ? "" : k.getResponsible());
+            List<String> userIdList = v.stream().distinct().collect(Collectors.toList());
+            SysNoticeVo oldNoticeVo = sysNoticeVo.stream().filter(item -> item.getNotifycontent().equals(content) && item.getRoption().equals(k.getId())).distinct().findFirst().orElse(null);
+            if (ObjectUtil.isNotEmpty(oldNoticeVo) && ObjectUtil.isNotEmpty(oldNoticeVo.getUserIds())) {
+                userIdList.removeAll(oldNoticeVo.getUserIds());
+            }
+
             // 发送消息提醒
             CXCommonUtils.sendNotify(SAFETY_ATTACHMENT_VERIFICATION_TITLE,
-                    String.format(SAFETY_ATTACHMENT_VERIFICATION_CONTENT, k.getName(), k.getNumber(), k.getInspectiondate(),
-                            k.getNextinspectiondate(), k.getResponsible()), null, v.stream().distinct().collect(Collectors.toList()),
+                    content, null, userIdList,
                     k.getId(), SAFETY_ATTACHMENT_VERIFICATION, false);
         });
     }

+ 15 - 3
cx-safe-check/cx-save-check-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/AspSpecialEquipmentCertificateServiceImpl.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.rongwe.scentity.domian.AspSafeAttachmentsDo;
 import com.rongwe.scentity.domian.AspSpecialEquipmentCertificateDo;
 import com.rongwe.scentity.domian.CheckItemsDo;
+import com.rongwe.scentity.vo.SysNoticeVo;
 import com.rongwe.scentity.vo.UserMailOrgVo;
 import com.rongwei.rwadmincommon.system.domain.SysDictDo;
 import com.rongwei.rwadmincommon.system.service.SysConfigFeignService;
@@ -26,6 +27,7 @@ import java.time.LocalDate;
 import java.time.ZoneId;
 import java.time.temporal.ChronoUnit;
 import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
 
 import static com.rongwei.safecommon.utils.SaveConstans.*;
@@ -108,8 +110,8 @@ public class AspSpecialEquipmentCertificateServiceImpl extends ServiceImpl<AspSp
                     }
                 } else if (daysBetween <= 90) {
                     alertUser = userInfO.stream().filter(user -> SPECIAL_EQUIPMENT_ADMINISTRATOR.equals(user.getRoleCode())).map(UserMailOrgVo::getId).collect(Collectors.toList());
-                    sendNotifyMap.put(data, alertUser);
                     data.setReminderstate(MIDDLE);
+                    sendNotifyMap.put(data, alertUser);
                     for (String userId : alertUser) {
                         if (sendMailMap.containsKey(userId)) {
                             List<String> dataIdList = sendMailMap.get(userId).stream().map(AspSpecialEquipmentCertificateDo::getId).collect(Collectors.toList());
@@ -186,16 +188,26 @@ public class AspSpecialEquipmentCertificateServiceImpl extends ServiceImpl<AspSp
     }
 
     public void sendNotify(Map<AspSpecialEquipmentCertificateDo, List<String>> sendNotifyMap) {
+        //查询所有该类型的、未读的 消息通知
+        List<SysNoticeVo> sysNoticeVo = this.baseMapper.selectMyNoticeByType(Arrays.asList(PERSONNEL_CERTIFICATES));
+
         // 获取数据字典
         List<SysDictDo> aspCheckItemType = sysDictService.getDictsByType("asp_check_item_type");
         sendNotifyMap.forEach((k, v) -> {
             SysDictDo sysDictDo = aspCheckItemType.stream()
                     .filter(info -> info.getValue().equals(k.getCertificatesort()))
                     .findFirst().orElse(null);
+            String content = String.format(PERSONNEL_CERTIFICATES_CONTENT, k.getName() == null ? "" : k.getName(), k.getOrgname() == null ? "" : k.getOrgname(), sysDictDo == null ? "" : sysDictDo.getName(),
+                    k.getReviewdate() == null ? "" : k.getReviewdate());
+            List<String> userIdList = v.stream().distinct().collect(Collectors.toList());
+            SysNoticeVo oldNoticeVo = sysNoticeVo.stream().filter(item -> item.getNotifycontent().equals(content) && item.getRoption().equals(k.getId())).distinct().findFirst().orElse(null);
+            if (ObjectUtil.isNotEmpty(oldNoticeVo) && ObjectUtil.isNotEmpty(oldNoticeVo.getUserIds())) {
+                userIdList.removeAll(oldNoticeVo.getUserIds());
+            }
+
             // 发送消息提醒
             CXCommonUtils.sendNotify(PERSONNEL_CERTIFICATES_TITLE,
-                    String.format(PERSONNEL_CERTIFICATES_CONTENT, k.getName(), k.getOrgname(), sysDictDo == null ? "" : sysDictDo.getName(),
-                            k.getReviewdate()), null, v.stream().distinct().collect(Collectors.toList()),
+                    content, null, userIdList,
                     k.getId(), PERSONNEL_CERTIFICATES, false);
         });
     }

+ 18 - 7
cx-safe-check/cx-save-check-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/CheckItemsServiceImpl.java

@@ -10,10 +10,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.rongwe.scentity.domian.CheckItemsDo;
 import com.rongwe.scentity.domian.PointCheckDo;
-import com.rongwe.scentity.vo.CheckAreaVo;
-import com.rongwe.scentity.vo.CheckItemsTypeVo;
-import com.rongwe.scentity.vo.ImportCheckItemsVo;
-import com.rongwe.scentity.vo.UserMailOrgVo;
+import com.rongwe.scentity.vo.*;
 import com.rongwei.rwadmincommon.system.domain.SysDictDo;
 import com.rongwei.rwadmincommon.system.service.SysConfigFeignService;
 import com.rongwei.rwadmincommon.system.service.impl.SysDictServiceImpl;
@@ -24,6 +21,7 @@ import com.rongwei.rwcommon.utils.SecurityUtil;
 import com.rongwei.rwcommon.vo.MailDo;
 import com.rongwei.rwcommonentity.commonservers.domain.SysFileItemDo;
 import com.rongwei.safecommon.utils.CXCommonUtils;
+import com.rongwei.sfcommon.sys.dao.AspSpecialEquipmentCertificateDao;
 import com.rongwei.sfcommon.sys.dao.CheckItemsDao;
 import com.rongwei.sfcommon.sys.dao.SaveCheckCommonDao;
 import com.rongwei.sfcommon.sys.service.CheckItemsService;
@@ -97,6 +95,8 @@ public class CheckItemsServiceImpl extends ServiceImpl<CheckItemsDao, CheckItems
     private ClassExcelVerifyHandler verifyHandler;
     @Resource
     private SysConfigFeignService sysConfigFeignService;
+    @Resource
+    private AspSpecialEquipmentCertificateDao aspSpecialEquipmentCertificateDao;
 
     /**
      * 设备列表删除验证是否存在点检记录
@@ -234,8 +234,8 @@ public class CheckItemsServiceImpl extends ServiceImpl<CheckItemsDao, CheckItems
                     }
                 } else if (daysBetween <= 90) {
                     alertUser = userInfO.stream().filter(user -> SPECIAL_EQUIPMENT_ADMINISTRATOR.equals(user.getRoleCode())).map(UserMailOrgVo::getId).collect(Collectors.toList());
-                    sendNotifyMap.put(data, alertUser);
                     data.setReminderstate(MIDDLE);
+                    sendNotifyMap.put(data, alertUser);
                     for (String userId : alertUser) {
                         if (sendMailMap.containsKey(userId)) {
                             List<String> dataIdList = sendMailMap.get(userId).stream().map(CheckItemsDo::getId).collect(Collectors.toList());
@@ -312,15 +312,26 @@ public class CheckItemsServiceImpl extends ServiceImpl<CheckItemsDao, CheckItems
         if (sendNotifyMap.isEmpty()) {
             return;
         }
+        //查询所有该类型的、未读的 消息通知
+        List<SysNoticeVo> sysNoticeVo = aspSpecialEquipmentCertificateDao.selectMyNoticeByType(Arrays.asList(SPECIALEQUIPMENT));
+
+
         // 获取数据字典
         List<SysDictDo> aspCheckItemType = sysDictService.getDictsByType("asp_check_item_type");
         sendNotifyMap.forEach((k, v) -> {
             SysDictDo sysDictDo = aspCheckItemType.stream().filter(info -> info.getValue().equals(k.getCheckitemtype())).findFirst().orElse(null);
 
+            String content = String.format(EQUIPMENT_CHECK_CONTENT, sysDictDo == null ? "" : sysDictDo.getName(), k.getDeviceoutcode() == null ? "" : k.getDeviceoutcode(), k.getCheckitemname() == null ? "" : k.getCheckitemname(),
+                    k.getNextcheckdate() == null ? "" : k.getNextcheckdate());
+            List<String> userIdList = v.stream().distinct().collect(Collectors.toList());
+            SysNoticeVo oldNoticeVo = sysNoticeVo.stream().filter(item -> item.getNotifycontent().equals(content) && item.getRoption().equals(k.getId())).distinct().findFirst().orElse(null);
+            if (ObjectUtil.isNotEmpty(oldNoticeVo) && ObjectUtil.isNotEmpty(oldNoticeVo.getUserIds())) {
+                userIdList.removeAll(oldNoticeVo.getUserIds());
+            }
+
             // 发送消息提醒
             CXCommonUtils.sendNotify(EQUIPMENT_CHECK_TITLE,
-                    String.format(EQUIPMENT_CHECK_CONTENT, sysDictDo == null ? "" : sysDictDo.getName(), k.getDeviceoutcode(), k.getCheckitemname(),
-                            k.getNextcheckdate()), null, v.stream().distinct().collect(Collectors.toList()),
+                    content, null, userIdList,
                     k.getId(), SPECIALEQUIPMENT, false);
         });
     }

+ 15 - 0
cx-safe-check/cx-save-check-common/src/main/resources/mybatis/AspSpecialEquipmentCertificateDao.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.rongwei.sfcommon.sys.dao.AspSpecialEquipmentCertificateDao">
+
+    <select id="selectMyNoticeByType" resultType="com.rongwe.scentity.vo.SysNoticeVo">
+        select *,GROUP_CONCAT(snau.RECIPIENTID) AS 'userIds'
+         from sys_notify_announce sna
+         LEFT JOIN sys_notify_announce_user snau ON snau.DELETED = 0 AND READSTATE = 2 AND sna.ID = snau.ANNOUNCEID
+         where sna.DELETED = 0 AND sna.NOTIFYTYPE IN
+         <foreach collection="typeList" separator="," open="(" close=")" item="item">
+             #{item}
+         </foreach>
+         GROUP BY sna.NOTIFYCONTENT,sna.ROPTION
+    </select>
+</mapper>

+ 26 - 0
cx-safe-check/cx-save-check-entity/src/main/java/com/rongwe/scentity/vo/SysNoticeVo.java

@@ -0,0 +1,26 @@
+package com.rongwe.scentity.vo;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.rongwei.rwcommonentity.commonservers.domain.SysNotifyAnnounceDo;
+import lombok.Data;
+
+import java.sql.Array;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @author :sc
+ * @since :2024/9/12
+ */
+@Data
+public class SysNoticeVo extends SysNotifyAnnounceDo {
+//    private String userIds;
+
+    private List<String> userIds;
+
+    public void setUserIds(String userIds){
+        if(ObjectUtil.isNotEmpty(userIds)){
+            this.userIds = Arrays.asList(userIds.split(","));
+        }
+    }
+}