From 3a740faa161ec976986c0735ba18837f570a525f Mon Sep 17 00:00:00 2001
From: hyingbo <1363390067@qq.com>
Date: 星期二, 27 五月 2025 19:04:07 +0800
Subject: [PATCH] 消息类型拆分并按类型推送至不同角色

---
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcMessageApprovalController.java               |    3 +
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningEquipmentStatusJob.java                         |    4 +
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/EquipmentWarrantyEndDateAlertJob.java                  |    2 
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java |    8 ++
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java            |    2 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/TechnologyStatusAlart.java                             |    2 
 lxzn-boot-base-core/src/main/java/org/jeecg/common/api/dto/message/MessageDTO.java                             |    9 +++
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java         |    2 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/ThirdMaintenaceAlart.java                              |    2 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningMonitoringSpeedJob.java                         |    2 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java                  |    2 
 lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/enums/MessageSplitTypeEnum.java                    |  102 ++++++++++++++++++++++++++++++++++
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml         |   13 ++++
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java     |   22 +++++++
 14 files changed, 175 insertions(+), 0 deletions(-)

diff --git a/lxzn-boot-base-core/src/main/java/org/jeecg/common/api/dto/message/MessageDTO.java b/lxzn-boot-base-core/src/main/java/org/jeecg/common/api/dto/message/MessageDTO.java
index 6253639..8c62b01 100644
--- a/lxzn-boot-base-core/src/main/java/org/jeecg/common/api/dto/message/MessageDTO.java
+++ b/lxzn-boot-base-core/src/main/java/org/jeecg/common/api/dto/message/MessageDTO.java
@@ -64,6 +64,15 @@
      * 鏄惁鍙戦�丮arkdown鏍煎紡鐨勬秷鎭�
      */
     protected boolean isMarkdown;
+    
+    /**
+     * 娑堟伅绫诲瀷
+     *    鍒颁繚鍏绘湡
+     *    璁惧杩愯寮傚父
+     *    鐘舵�侀暱鏈熸棤鍙樺寲
+     *    缃戠粶鏁呴殰
+     */
+    protected String messageType;
 
     /**
      * 瑙f瀽妯℃澘鍐呭 瀵瑰簲鐨勬暟鎹�
diff --git a/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/enums/MessageSplitTypeEnum.java b/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/enums/MessageSplitTypeEnum.java
new file mode 100644
index 0000000..a8b1b45
--- /dev/null
+++ b/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/enums/MessageSplitTypeEnum.java
@@ -0,0 +1,102 @@
+package org.jeecg.common.constant.enums;
+
+import org.jeecg.common.system.annotation.EnumDict;
+import org.jeecg.common.system.vo.DictModel;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 娑堟伅绫诲瀷
+ * @author: jeecg-boot
+ */
+@EnumDict("messageType")
+public enum MessageSplitTypeEnum {
+
+    /** 鍒颁繚鍏绘湡 */
+    untilMaintenancePeriod("untilMaintenancePeriod",  "鍒颁繚鍏绘湡", "until_maintenance_period"),
+    /** 璁惧杩愯寮傚父 */
+    deviceRunError("deviceRunError", "璁惧杩愯寮傚父",  "device_run_error"),
+    /** 閽夌姸鎬侀暱鏈熸棤鍙樺寲 */
+    statusPermanentlyNoChange("statusPermanentlyNoChange", "閽夌姸鎬侀暱鏈熸棤鍙樺寲", "status_permanently_no_change"),
+    /** 缃戠粶鏁呴殰 */
+    networkFault("networkFault", "缃戠粶鏁呴殰", "network_fault");
+
+    MessageSplitTypeEnum(String type, String note, String dictCode){
+        this.type = type;
+        this.note = note;
+        this.dictCode = dictCode;
+    }
+
+    /**
+     * 娑堟伅绫诲瀷
+     */
+    String type;
+
+    /**
+     * 绫诲瀷璇存槑
+     */
+    String note;
+
+    /**
+     * 瀛楀吀鍚嶇О
+     */
+    String dictCode;
+
+    public String getDictCode() {
+        return dictCode;
+    }
+
+    public void setDictCode(String dictCode) {
+        this.dictCode = dictCode;
+    }
+
+    public String getNote() {
+        return note;
+    }
+
+    public void setNote(String note) {
+        this.note = note;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+
+    /**
+     * 鑾峰彇瀛楀吀鏁版嵁
+     * @return
+     */
+    public static List<DictModel> getDictList(){
+        List<DictModel> list = new ArrayList<>();
+        DictModel dictModel = null;
+        for(MessageSplitTypeEnum e: MessageSplitTypeEnum.values()){
+            dictModel = new DictModel();
+            dictModel.setValue(e.getType());
+            dictModel.setText(e.getNote());
+            list.add(dictModel);
+        }
+        return list;
+    }
+
+    /**
+     * 鏍规嵁type鑾峰彇鏋氫妇
+     *
+     * @param type
+     * @return
+     */
+    public static MessageSplitTypeEnum valueOfType(String type) {
+        for (MessageSplitTypeEnum e : MessageSplitTypeEnum.values()) {
+            if (e.getType().equals(type)) {
+                return e;
+            }
+        }
+        return null;
+    }
+
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/EquipmentWarrantyEndDateAlertJob.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/EquipmentWarrantyEndDateAlertJob.java
index 5a9e7d1..53f23bf 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/EquipmentWarrantyEndDateAlertJob.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/EquipmentWarrantyEndDateAlertJob.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.dto.message.MessageDTO;
+import org.jeecg.common.constant.enums.MessageSplitTypeEnum;
 import org.jeecg.common.system.api.ISysBaseAPI;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.modules.eam.entity.Equipment;
@@ -42,6 +43,7 @@
         MessageDTO messageDTO = new MessageDTO();
         messageDTO.setTitle(title);
         messageDTO.setContent(msg);
+        messageDTO.setMessageType(MessageSplitTypeEnum.untilMaintenancePeriod.getType());
         messageDTO.setCategory("绯荤粺娑堟伅");
         messageDTO.setFromUser("鍒版湡鎻愰啋灏忓姪鎵�-灏忛啋");
         messageDTO.setToUser("admin");
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/TechnologyStatusAlart.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/TechnologyStatusAlart.java
index fc51b15..51cf992 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/TechnologyStatusAlart.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/TechnologyStatusAlart.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.jeecg.common.api.dto.message.MessageDTO;
+import org.jeecg.common.constant.enums.MessageSplitTypeEnum;
 import org.jeecg.common.system.api.ISysBaseAPI;
 import org.jeecg.modules.eam.entity.Equipment;
 import org.jeecg.modules.eam.service.IEamEquipmentService;
@@ -62,6 +63,7 @@
             msg = msg+"鐨勮澶囨妧鏈姸鎬侀壌瀹氱殑鏃ユ湡涓嶈冻涓や釜鏈堬紝璇峰強鏃跺鐞�";
             MessageDTO messageDTO = new MessageDTO();
             messageDTO.setTitle(title);
+            messageDTO.setMessageType(MessageSplitTypeEnum.untilMaintenancePeriod.getType());
             messageDTO.setContent(msg);
             messageDTO.setCategory("鎶�鏈姸鎬侀壌瀹氭秷鎭�");
             messageDTO.setFromUser("admin");
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/ThirdMaintenaceAlart.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/ThirdMaintenaceAlart.java
index 574b718..6841726 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/ThirdMaintenaceAlart.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/ThirdMaintenaceAlart.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.hibernate.annotations.Source;
 import org.jeecg.common.api.dto.message.MessageDTO;
+import org.jeecg.common.constant.enums.MessageSplitTypeEnum;
 import org.jeecg.common.system.api.ISysBaseAPI;
 import org.jeecg.common.system.vo.DictModel;
 import org.jeecg.modules.eam.entity.Equipment;
@@ -66,6 +67,7 @@
             msg = msg+"鐨勮澶囩涓嬫涓変繚鐨勬棩鏈熶笉瓒充袱涓湀锛岃鍙婃椂澶勭悊";
             MessageDTO messageDTO = new MessageDTO();
             messageDTO.setTitle(title);
+            messageDTO.setMessageType(MessageSplitTypeEnum.untilMaintenancePeriod.getType());
             messageDTO.setContent(msg);
             messageDTO.setCategory("涓変繚娑堟伅");
             messageDTO.setFromUser("admin");
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcMessageApprovalController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcMessageApprovalController.java
index 9d74bd8..17090b6 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcMessageApprovalController.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcMessageApprovalController.java
@@ -10,6 +10,7 @@
 import org.jeecg.common.api.dto.message.MessageDTO;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.constant.enums.MessageSplitTypeEnum;
 import org.jeecg.common.system.api.ISysBaseAPI;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.common.system.vo.LoginUser;
@@ -179,6 +180,7 @@
             //涓婃姤鍘熷洜鍙戦�佹秷鎭粰纭浜�
             MessageDTO messageDTO = new MessageDTO();
             messageDTO.setTitle("璁惧鐘舵�侀暱鏃堕棿鏈彉鍖栧師鍥犱笂鎶ョ‘璁わ紒");
+            messageDTO.setMessageType(MessageSplitTypeEnum.statusPermanentlyNoChange.getType());
             messageDTO.setCategory("娑堟伅");
             LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
             messageDTO.setFromUser(user.getUsername());
@@ -205,6 +207,7 @@
             messageDTO.setTitle("璁惧鐘舵�佹秷鎭紒");
             messageDTO.setCategory("娑堟伅");
             messageDTO.setFromUser("admin");
+            messageDTO.setMessageType(MessageSplitTypeEnum.statusPermanentlyNoChange.getType());
             messageDTO.setToUser(mdcMessageApproval.getUpdateBy());
             messageDTO.setContent("鎮ㄧ殑璁惧缂栧彿涓� [" + mdcMessageApproval.getEquipmentId() + "] 鐨勮澶囩姸鎬侀暱鏃堕棿鏈彉鍖栦笂鎶ュ凡琚澶囪秴绾х鐞嗗憳鎷掔粷锛岃閲嶆柊濉啓涓婃姤鍘熷洜锛�");
             sysBaseApi.sendSysAnnouncement(messageDTO);
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningEquipmentStatusJob.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningEquipmentStatusJob.java
index ef28617..fc04271 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningEquipmentStatusJob.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningEquipmentStatusJob.java
@@ -3,6 +3,7 @@
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.api.dto.message.MessageDTO;
 import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.constant.enums.MessageSplitTypeEnum;
 import org.jeecg.common.system.api.ISysBaseAPI;
 import org.jeecg.common.system.vo.DictModel;
 import org.jeecg.modules.mdc.constant.MdcConstant;
@@ -135,6 +136,7 @@
                             MessageDTO messageDTO = new MessageDTO();
                             messageDTO.setTitle("銆愯澶囧紓甯告彁閱掋��" + productionName + "杞﹂棿璁惧缂栧彿涓� [" + mdcEquipment.getEquipmentId() + "] 鐨勮澶囧埄鐢ㄧ巼浣庝簬姝e父鍊硷紒");
                             messageDTO.setCategory(CommonConstant.MSG_CATEGORY_2);
+                            messageDTO.setMessageType(MessageSplitTypeEnum.deviceRunError.getType());
                             messageDTO.setFromUser("admin");
                             messageDTO.setToUser("admin");
                             messageDTO.setContent("銆愯澶囧紓甯告彁閱掋��" + productionName + "杞﹂棿璁惧缂栧彿涓� [" + mdcEquipment.getEquipmentId() + "] 鐨勮澶囧埄鐢ㄧ巼浣庝簬姝e父鍊硷紒");
@@ -175,6 +177,7 @@
                                 MessageDTO messageDTO = new MessageDTO();
                                 messageDTO.setTitle("銆愯澶囧紓甯告彁閱掋��" + productionName + "杞﹂棿璁惧缂栧彿涓� [" + mdcEquipment.getEquipmentId() + "] 鐨勮澶囩姸鎬侀暱鏈熸棤鍙樺寲锛�");
                                 messageDTO.setCategory(CommonConstant.MSG_CATEGORY_2);
+                                messageDTO.setMessageType(MessageSplitTypeEnum.deviceRunError.getType());
                                 messageDTO.setFromUser("admin");
                                 messageDTO.setToUser(sysUser.getUsername());
                                 messageDTO.setContent("銆愯澶囧紓甯告彁閱掋��" + productionName + "杞﹂棿璁惧缂栧彿涓� [" + mdcEquipment.getEquipmentId() + "] 鐨勮澶囩姸鎬侀暱鏈熸棤鍙樺寲锛�");
@@ -184,6 +187,7 @@
                             MessageDTO messageDTO = new MessageDTO();
                             messageDTO.setTitle("銆愯澶囧紓甯告彁閱掋��" + productionName + "杞﹂棿璁惧缂栧彿涓� [" + mdcEquipment.getEquipmentId() + "] 鐨勮澶囩姸鎬侀暱鏈熸棤鍙樺寲锛�");
                             messageDTO.setCategory(CommonConstant.MSG_CATEGORY_2);
+                            messageDTO.setMessageType(MessageSplitTypeEnum.deviceRunError.getType());
                             messageDTO.setFromUser("admin");
                             messageDTO.setToUser("admin");
                             messageDTO.setContent("銆愯澶囧紓甯告彁閱掋��" + productionName + "杞﹂棿璁惧缂栧彿涓� [" + mdcEquipment.getEquipmentId() + "] 鐨勮澶囩姸鎬侀暱鏈熸棤鍙樺寲锛�");
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningMonitoringSpeedJob.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningMonitoringSpeedJob.java
index 91adf06..8c6a9fc 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningMonitoringSpeedJob.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningMonitoringSpeedJob.java
@@ -5,6 +5,7 @@
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.api.dto.message.MessageDTO;
 import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.constant.enums.MessageSplitTypeEnum;
 import org.jeecg.common.system.api.ISysBaseAPI;
 import org.jeecg.common.system.vo.DictModel;
 import org.jeecg.common.util.DateUtils;
@@ -92,6 +93,7 @@
                     MessageDTO messageDTO = new MessageDTO();
                     messageDTO.setTitle("銆愯澶囧紓甯告彁閱掋��" + productionName + "杞﹂棿璁惧 [" + mdcEquipment.getEquipmentId() + "] 杩愯杞�燂紒");
                     messageDTO.setCategory(CommonConstant.MSG_CATEGORY_2);
+                    messageDTO.setMessageType(MessageSplitTypeEnum.deviceRunError.getType());
                     messageDTO.setFromUser("admin");
                     messageDTO.setToUser("admin");
                     //璁惧畾
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java
index e6ba463..91b6923 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java
@@ -8,6 +8,7 @@
 import org.apache.commons.lang3.StringUtils;
 import org.jeecg.common.api.dto.message.MessageDTO;
 import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.constant.enums.MessageSplitTypeEnum;
 import org.jeecg.common.system.api.ISysBaseAPI;
 import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.mdc.dto.MdcEquDepDto;
@@ -798,6 +799,7 @@
                         MessageDTO messageDTO = new MessageDTO();
                         messageDTO.setTitle("銆愯澶囧紓甯告彁閱掋��" + productionName + "杞﹂棿璁惧缂栧彿涓� [" + mdcEquipment.getEquipmentId() + "] 鐨勮澶�" + mdcEquipmentThreshold.getChineseName() + "鎶ヨ锛�");
                         messageDTO.setCategory(CommonConstant.MSG_CATEGORY_2);
+                        messageDTO.setMessageType(MessageSplitTypeEnum.deviceRunError.getType());
                         messageDTO.setFromUser("admin");
                         messageDTO.setToUser("admin");
                         MdcOverrunAlarm mdcOverrunAlarm = new MdcOverrunAlarm();
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java
index 7966336..8b2cb6f 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java
@@ -183,4 +183,6 @@
 	 * 鏍规嵁瑙掕壊缂栫爜鍜岃澶囩紪鍙锋煡璇㈢敤鎴�
 	 */
     List<SysUser> getEquipmentAdmin(@Param("roleCode") String roleCode, @Param("equipmentId") String equipmentId);
+
+	List<SysUser> getUserByRoleCodeList(@Param("roleCodeList") List<String> roleCodeList);
 }
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml
index 3e751a9..b40648b 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml
@@ -217,4 +217,17 @@
 		WHERE
 			t3.role_code = #{roleCode} AND equipment_ids LIKE concat(concat('%',#{equipmentId}),'%')
 	</select>
+    <select id="getUserByRoleCodeList" resultType="org.jeecg.modules.system.entity.SysUser">
+		SELECT
+			su.*
+		FROM
+			sys_user su
+				LEFT JOIN sys_user_role sur ON su.id = sur.user_id
+				LEFT JOIN sys_role sr ON sur.role_id = sr.id
+		WHERE
+		su.del_flag = '0' and sr.role_code in
+		<foreach collection="roleCodeList" index="index" item="roleCode" open="(" separator="," close=")">
+			#{roleCode}
+		</foreach>
+	</select>
 </mapper>
\ No newline at end of file
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java
index 751395e..e44b1a4 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java
@@ -319,5 +319,7 @@
 
 	List<String> getUserByRoleCode(String roleCode);
 
+	List<SysUser> getUserByRoleCodeList(List<String> roleCodeList);
+
 	List<SysUser> getEquipmentAdmin(String roleCode, String equipmentId);
 }
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java
index 7e75089..fe2ecce 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java
@@ -7,7 +7,9 @@
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.google.common.base.Joiner;
 import lombok.extern.slf4j.Slf4j;
@@ -18,6 +20,7 @@
 import org.jeecg.common.api.dto.message.*;
 import org.jeecg.common.aspect.UrlMatchEnum;
 import org.jeecg.common.constant.*;
+import org.jeecg.common.constant.enums.MessageSplitTypeEnum;
 import org.jeecg.common.constant.enums.MessageTypeEnum;
 import org.jeecg.common.desensitization.util.SensitiveInfoUtil;
 import org.jeecg.common.exception.JeecgBootException;
@@ -59,6 +62,7 @@
 import java.sql.DatabaseMetaData;
 import java.sql.SQLException;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 搴曞眰鍏遍�氫笟鍔PI锛屾彁渚涘叾浠栫嫭绔嬫ā鍧楄皟鐢�
@@ -134,6 +138,8 @@
 
     @Autowired
     private IQuartzJobService quartzJobService;
+    @Autowired
+    private ISysDictItemService sysDictItemService;
 
     @Override
     //@SensitiveDecode
@@ -355,6 +361,22 @@
 
     @Override
     public void sendSysAnnouncement(MessageDTO message) {
+
+        if (StringUtils.isNotBlank(message.getMessageType())) {
+            //鑾峰彇娑堟伅绫诲瀷瀵瑰簲瑙掕壊鐢ㄦ埛
+            MessageSplitTypeEnum messageSplitTypeEnum = MessageSplitTypeEnum.valueOfType(message.getMessageType());
+            SysDict sysDict = sysDictService.getOne(new LambdaQueryWrapper<SysDict>().eq(SysDict::getDictCode, messageSplitTypeEnum.getDictCode()));
+            List<SysDictItem> sysDictItemList = sysDictItemService.list(new QueryWrapper<SysDictItem>().eq("dict_id",sysDict.getId()));
+            if (CollectionUtils.isNotEmpty(sysDictItemList)) {
+                List<SysUser> sysUserList = sysUserService.getUserByRoleCodeList(sysDictItemList.stream().map(SysDictItem::getItemValue).collect(Collectors.toList()));
+                if (CollectionUtils.isNotEmpty(sysUserList)) {
+                    Set<String> userIdList = new HashSet<>(Arrays.asList(message.getToUser().split(StringPool.COMMA)));
+                    userIdList.addAll(sysUserList.stream().map(SysUser::getUsername).collect(Collectors.toList()));
+                    message.setToUser(StringUtils.join(userIdList, StringPool.COMMA));
+                }
+            }
+        }
+
         this.sendSysAnnouncement(message.getFromUser(), message.getToUser(), message.getTitle(), message.getContent(), message.getCategory());
         try {
             // 鍚屾鍙戦�佺涓夋柟APP娑堟伅
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
index 106de85..f19edce 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
@@ -707,6 +707,14 @@
 	}
 
 	/**
+	 * 鏍规嵁瑙掕壊缂栫爜鍒楄〃鏌ヨ鐢ㄦ埛id闆嗗悎
+	 */
+	@Override
+	public List<SysUser> getUserByRoleCodeList(List<String> roleCodeList) {
+		return this.baseMapper.getUserByRoleCodeList(roleCodeList);
+	}
+
+	/**
 	 * 鏍规嵁瑙掕壊缂栫爜鍜岃澶囩紪鍙锋煡璇㈢敤鎴�
 	 */
 	@Override

--
Gitblit v1.9.3