From a3cb768d958e64625786857e0db69335875f5d8e Mon Sep 17 00:00:00 2001
From: hyingbo <1363390067@qq.com>
Date: 星期五, 06 六月 2025 13:43:55 +0800
Subject: [PATCH] 消息类型更新

---
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java |   67 +++++++++++++++++++++++++++++++++
 1 files changed, 66 insertions(+), 1 deletions(-)

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 79de6f4..0b4395b 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娑堟伅
@@ -1384,7 +1406,10 @@
     @Override
     public String getUnitNameById(String unitId) {
         Unit unit = unitService.getById(unitId);
-        String unitName = unit.getName();
+        String unitName = "";
+        if(unit != null){
+            unitName = unit.getName();
+        }
         return unitName;
     }
 
@@ -1456,4 +1481,44 @@
             quartzJobService.deleteAndStopJob(quartzJob);
         }
     }
+
+    @Override
+    public void sendAnnouncement(String fromUser, String toUser, String title, String msgContent, String category) {
+        SysAnnouncement announcement = new SysAnnouncement();
+        announcement.setTitile(title);
+        announcement.setMsgContent(msgContent);
+        announcement.setSender(fromUser);
+        announcement.setPriority(CommonConstant.PRIORITY_M);
+        announcement.setMsgType(CommonConstant.MSG_TYPE_UESR);
+        announcement.setSendStatus(CommonConstant.HAS_SEND);
+        announcement.setSendTime(new Date());
+        announcement.setMsgCategory(org.apache.commons.lang3.StringUtils.isNotBlank(category) ? category : CommonConstant.MSG_CATEGORY_2);
+        announcement.setDelFlag(String.valueOf(CommonConstant.DEL_FLAG_0));
+        sysAnnouncementMapper.insert(announcement);
+        // 2.鎻掑叆鐢ㄦ埛閫氬憡闃呰鏍囪琛ㄨ褰�
+        String userId = toUser;
+        String[] userIds = userId.split(",");
+        String anntId = announcement.getId();
+        for (int i = 0; i < userIds.length; i++) {
+            if (oConvertUtils.isNotEmpty(userIds[i])) {
+                SysUser sysUser = userMapper.getUserByName(userIds[i]);
+                if (sysUser == null) {
+                    continue;
+                }
+                SysAnnouncementSend announcementSend = new SysAnnouncementSend();
+                announcementSend.setAnntId(anntId);
+                announcementSend.setUserId(sysUser.getId());
+                announcementSend.setReadFlag(CommonConstant.NO_READ_FLAG);
+                sysAnnouncementSendMapper.insert(announcementSend);
+                JSONObject obj = new JSONObject();
+                obj.put("cmd", "user");
+                obj.put("userId", sysUser.getId());
+                obj.put("msgId", announcement.getId());
+                obj.put("msgTxt", announcement.getTitile());
+                webSocket.sendOneMessage(sysUser.getId(), obj.toJSONString());
+            }
+        }
+
+    }
+
 }
\ No newline at end of file

--
Gitblit v1.9.3