From 8e16903f4b9d8430852ebf58ed0d6b8dacf6ac75 Mon Sep 17 00:00:00 2001
From: cuijian <cuijian@xalxzn.com>
Date: 星期二, 29 八月 2023 17:34:23 +0800
Subject: [PATCH] 备件库存消息预警

---
 lxzn-module-eam/src/main/java/org/jeecg/modules/spare/service/impl/SparePartOutboundDetailServiceImpl.java          |   68 +++++++++++
 lxzn-module-system/lxzn-system-api/lxzn-system-local-api/src/main/java/org/jeecg/common/system/api/ISysBaseAPI.java |    9 +
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java              |    8 +
 lxzn-module-eam/src/main/java/org/jeecg/modules/spare/service/impl/SparePartPurchaseStorageDetailServiceImpl.java   |   80 +++++++++++++
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java      |    6 +
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/message/websocket/WebSocket.java                 |   13 ++
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java                 |    9 +
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml              |    5 
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java          |   40 ++++++
 lxzn-module-eam/src/main/java/org/jeecg/modules/spare/service/impl/SparePartCancellingStocksDetailServiceImpl.java  |   77 ++++++++++++
 10 files changed, 308 insertions(+), 7 deletions(-)

diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/spare/service/impl/SparePartCancellingStocksDetailServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/spare/service/impl/SparePartCancellingStocksDetailServiceImpl.java
index 7681900..ec9b129 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/spare/service/impl/SparePartCancellingStocksDetailServiceImpl.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/spare/service/impl/SparePartCancellingStocksDetailServiceImpl.java
@@ -1,20 +1,31 @@
 package org.jeecg.modules.spare.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.system.api.ISysBaseAPI;
+import org.jeecg.common.system.vo.DictModel;
 import org.jeecg.modules.spare.entity.*;
 import org.jeecg.modules.spare.mapper.SparePartCancellingStocksDetailMapper;
-import org.jeecg.modules.spare.service.ISparePartCancellingStocksDetailService;
-import org.jeecg.modules.spare.service.ISparePartCancellingStocksService;
-import org.jeecg.modules.spare.service.ISparePartService;
-import org.jeecg.modules.spare.service.ISparesPartInventoryService;
+import org.jeecg.modules.spare.service.*;
+import org.jeecg.modules.system.entity.SysRole;
+import org.jeecg.modules.system.entity.SysUser;
+import org.jeecg.modules.system.service.ISysDictService;
+import org.jeecg.modules.system.service.ISysRoleService;
+import org.jeecg.modules.system.service.ISysUserService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -39,6 +50,26 @@
 
     @Autowired
     private ISparePartService sparePartService;
+
+    @Autowired
+    @Lazy
+    private ISparePartOutboundService sparePartOutboundService;
+
+    @Autowired
+    @Lazy
+    private ISysDictService sysDictService;
+
+    @Autowired
+    @Lazy
+    private ISysRoleService sysRoleService;
+
+    @Autowired
+    @Lazy
+    private ISysUserService sysUserService;
+
+    @Autowired
+    @Lazy
+    private ISysBaseAPI sysBaseAPI;
 
 
     @Override
@@ -115,6 +146,44 @@
             sparePartCancellingStocks.setStatus("4");
             sparePartCancellingStocksService.updateById(sparePartCancellingStocks);
         }
+
+        //6.鍒ゆ柇鍑哄簱鍚庡簱瀛樻槸鍚︿綆浜庡畨鍏ㄥ簱瀛樻垨鍑虹幇绉帇鎯呭喌
+        List roleList = new ArrayList<>();
+        List<DictModel> dictModelList = sysDictService.getDictItems("warehouse_message");
+        for(DictModel dictModel : dictModelList){
+            roleList.add(dictModel.getText());
+        }
+        QueryWrapper<SysRole> queryWrapper = Wrappers.query();
+        queryWrapper.in("role_code", roleList);
+        List<SysRole> sysRoleList = sysRoleService.list(queryWrapper);
+        List<SysUser> sysUsers = new ArrayList<>();
+        for (SysRole sysRole : sysRoleList) {
+            sysUsers.addAll(sysUserService.getAllUsersByRoleId(sysRole.getId()));
+        }
+        double quantity = 0.0;
+        List<SparesPartInventory> sparesPartInventoryList = sparesPartInventoryService.lambdaQuery().eq(SparesPartInventory::getSparePartId,sparesPartInventory.getSparePartId()).eq(SparesPartInventory::getDelFlag, CommonConstant.DEL_FLAG_0).list();
+        for(SparesPartInventory sparesPartInventory1 : sparesPartInventoryList){
+            quantity = quantity + sparesPartInventory1.getMainQuantity();
+        }
+        if(quantity < sparePart.getInventoryLowerLimit()){
+            String messageTitle;
+            String messageContent;
+            String sysTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+            messageTitle = "绯荤粺娑堟伅锛氬浠剁紪鐮佷负 " + sparePart.getNum() + " 鐨勫浠跺簱瀛橀噺涓嶈冻锛岃鍙婃椂澶勭悊!";
+            messageContent = "绯荤粺娑堟伅锛氬浠剁紪鐮侊細" + sparePart.getNum()  + " 鐨勫浠跺簱瀛橀噺宸蹭綆浜庡畨鍏ㄥ簱瀛�!" + "\n" + "娑堟伅鏃堕棿:" + sysTime + "\n";
+            for (SysUser sysUser : sysUsers) {
+                sysBaseAPI.sendAnnouncement("admin", sysUser.getUsername(), messageTitle, messageContent);
+            }
+        }else if(quantity > sparePart.getInventoryUpperLimit()){
+            String messageTitle;
+            String messageContent;
+            String sysTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+            messageTitle = "绯荤粺娑堟伅锛氬浠剁紪鐮佷负 " + sparePart.getNum() + " 鐨勫浠跺嚭鐜扮Н鍘嬫儏鍐碉紝璇峰強鏃跺鐞�!";
+            messageContent = "绯荤粺娑堟伅锛氬浠剁紪鐮佷负 " + sparePart.getNum() + " 鐨勫浠跺簱瀛橀噺宸查珮浜庡簱瀛樹笂闄愬�硷紝鍑虹幇绉帇鎯呭喌!" + "\n" + "娑堟伅鏃堕棿:" + sysTime + "\n";
+            for (SysUser sysUser : sysUsers) {
+                sysBaseAPI.sendAnnouncement("admin", sysUser.getUsername(), messageTitle, messageContent);
+            }
+        }
         return true;
     }
 
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/spare/service/impl/SparePartOutboundDetailServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/spare/service/impl/SparePartOutboundDetailServiceImpl.java
index 09c1260..8ec89cf 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/spare/service/impl/SparePartOutboundDetailServiceImpl.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/spare/service/impl/SparePartOutboundDetailServiceImpl.java
@@ -1,14 +1,24 @@
 package org.jeecg.modules.spare.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.system.api.ISysBaseAPI;
+import org.jeecg.common.system.vo.DictModel;
 import org.jeecg.modules.spare.entity.*;
 import org.jeecg.modules.spare.mapper.SparePartOutboundDetailMapper;
 import org.jeecg.modules.spare.service.ISparePartOutboundDetailService;
 import org.jeecg.modules.spare.service.ISparePartOutboundService;
 import org.jeecg.modules.spare.service.ISparePartService;
 import org.jeecg.modules.spare.service.ISparesPartInventoryService;
+import org.jeecg.modules.system.entity.SysRole;
+import org.jeecg.modules.system.entity.SysUser;
+import org.jeecg.modules.system.service.ISysDictService;
+import org.jeecg.modules.system.service.ISysRoleService;
+import org.jeecg.modules.system.service.ISysUserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
@@ -17,6 +27,9 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -40,6 +53,22 @@
     @Autowired
     @Lazy
     private ISparePartOutboundService sparePartOutboundService;
+
+    @Autowired
+    @Lazy
+    private ISysDictService sysDictService;
+
+    @Autowired
+    @Lazy
+    private ISysRoleService sysRoleService;
+
+    @Autowired
+    @Lazy
+    private ISysUserService sysUserService;
+
+    @Autowired
+    @Lazy
+    private ISysBaseAPI sysBaseAPI;
 
     @Override
     public List<Map<String, Object>> getSparePartOutboundDeatilList(String sparePartOutboundId) {
@@ -107,8 +136,45 @@
             sparePartOutbound.setStatus("4");
             sparePartOutboundService.updateById(sparePartOutbound);
         }
+
+        //6.鍒ゆ柇鍑哄簱鍚庡簱瀛樻槸鍚︿綆浜庡畨鍏ㄥ簱瀛樻垨鍑虹幇绉帇鎯呭喌
+        List roleList = new ArrayList<>();
+        List<DictModel> dictModelList = sysDictService.getDictItems("warehouse_message");
+        for(DictModel dictModel : dictModelList){
+            roleList.add(dictModel.getText());
+        }
+        QueryWrapper<SysRole> queryWrapper = Wrappers.query();
+        queryWrapper.in("role_code", roleList);
+        List<SysRole> sysRoleList = sysRoleService.list(queryWrapper);
+        List<SysUser> sysUsers = new ArrayList<>();
+        for (SysRole sysRole : sysRoleList) {
+            sysUsers.addAll(sysUserService.getAllUsersByRoleId(sysRole.getId()));
+        }
+        double quantity = 0.0;
+        List<SparesPartInventory> sparesPartInventoryList = sparesPartInventoryService.lambdaQuery().eq(SparesPartInventory::getSparePartId,sparesPartInventory.getSparePartId()).eq(SparesPartInventory::getDelFlag, CommonConstant.DEL_FLAG_0).list();
+        for(SparesPartInventory sparesPartInventory1 : sparesPartInventoryList){
+            quantity = quantity + sparesPartInventory1.getMainQuantity();
+        }
+        if(quantity < sparePart.getInventoryLowerLimit()){
+            String messageTitle;
+            String messageContent;
+            String sysTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+            messageTitle = "绯荤粺娑堟伅锛氬浠剁紪鐮佷负 " + sparePart.getNum() + " 鐨勫浠跺簱瀛橀噺涓嶈冻锛岃鍙婃椂澶勭悊!";
+            messageContent = "绯荤粺娑堟伅锛氬浠剁紪鐮侊細" + sparePart.getNum()  + " 鐨勫浠跺簱瀛橀噺宸蹭綆浜庡畨鍏ㄥ簱瀛�!" + "\n" + "娑堟伅鏃堕棿:" + sysTime + "\n";
+            for (SysUser sysUser : sysUsers) {
+                sysBaseAPI.sendAnnouncement("admin", sysUser.getUsername(), messageTitle, messageContent);
+            }
+        }else if(quantity > sparePart.getInventoryUpperLimit()){
+            String messageTitle;
+            String messageContent;
+            String sysTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+            messageTitle = "绯荤粺娑堟伅锛氬浠剁紪鐮佷负 " + sparePart.getNum() + " 鐨勫浠跺嚭鐜扮Н鍘嬫儏鍐碉紝璇峰強鏃跺鐞�!";
+            messageContent = "绯荤粺娑堟伅锛氬浠剁紪鐮佷负 " + sparePart.getNum() + " 鐨勫浠跺簱瀛橀噺宸查珮浜庡簱瀛樹笂闄愬�硷紝鍑虹幇绉帇鎯呭喌!" + "\n" + "娑堟伅鏃堕棿:" + sysTime + "\n";
+            for (SysUser sysUser : sysUsers) {
+                sysBaseAPI.sendAnnouncement("admin", sysUser.getUsername(), messageTitle, messageContent);
+            }
+        }
         return true;
     }
-
 
 }
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/spare/service/impl/SparePartPurchaseStorageDetailServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/spare/service/impl/SparePartPurchaseStorageDetailServiceImpl.java
index 54844b7..a266bfe 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/spare/service/impl/SparePartPurchaseStorageDetailServiceImpl.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/spare/service/impl/SparePartPurchaseStorageDetailServiceImpl.java
@@ -1,23 +1,40 @@
 package org.jeecg.modules.spare.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.system.api.ISysBaseAPI;
+import org.jeecg.common.system.vo.DictModel;
+import org.jeecg.modules.spare.entity.SparePart;
 import org.jeecg.modules.spare.entity.SparePartPurchaseStorage;
 import org.jeecg.modules.spare.entity.SparePartPurchaseStorageDetail;
 import org.jeecg.modules.spare.entity.SparesPartInventory;
 import org.jeecg.modules.spare.mapper.SparePartPurchaseStorageDetailMapper;
 import org.jeecg.modules.spare.service.ISparePartPurchaseStorageDetailService;
 import org.jeecg.modules.spare.service.ISparePartPurchaseStorageService;
+import org.jeecg.modules.spare.service.ISparePartService;
 import org.jeecg.modules.spare.service.ISparesPartInventoryService;
 import org.jeecg.modules.spare.vo.SupplierVo;
 import org.jeecg.modules.spare.vo.WarehouseAreaVo;
 import org.jeecg.modules.spare.vo.WarehouseLocationVo;
+import org.jeecg.modules.system.entity.SysRole;
+import org.jeecg.modules.system.entity.SysUser;
+import org.jeecg.modules.system.service.ISysDictService;
+import org.jeecg.modules.system.service.ISysRoleService;
+import org.jeecg.modules.system.service.ISysUserService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.List;
 import java.util.Map;
 
@@ -36,6 +53,26 @@
 
     @Autowired
     private ISparesPartInventoryService sparesPartInventoryService;
+
+    @Autowired
+    @Lazy
+    private ISparePartService sparePartService;
+
+    @Autowired
+    @Lazy
+    private ISysDictService sysDictService;
+
+    @Autowired
+    @Lazy
+    private ISysRoleService sysRoleService;
+
+    @Autowired
+    @Lazy
+    private ISysUserService sysUserService;
+
+    @Autowired
+    @Lazy
+    private ISysBaseAPI sysBaseAPI;
 
     @Override
     public List<Map<String, Object>> getSparePartPurchaseStorageDeatilList(String sparePartPurchaseStorageId) {
@@ -102,6 +139,45 @@
             sparePartPurchaseStorage.setStatus("4");
             sparePartPurchaseStorageService.updateById(sparePartPurchaseStorage);
         }
+
+        //4.鍒ゆ柇鍏ュ簱鍚庡簱瀛樻槸鍚︿綆浜庡畨鍏ㄥ簱瀛樻垨鍑虹幇绉帇鎯呭喌
+        List roleList = new ArrayList<>();
+        List<DictModel> dictModelList = sysDictService.getDictItems("warehouse_message");
+        for(DictModel dictModel : dictModelList){
+            roleList.add(dictModel.getText());
+        }
+        QueryWrapper<SysRole> queryWrapper = Wrappers.query();
+        queryWrapper.in("role_code", roleList);
+        List<SysRole> sysRoleList = sysRoleService.list(queryWrapper);
+        List<SysUser> sysUsers = new ArrayList<>();
+        for (SysRole sysRole : sysRoleList) {
+            sysUsers.addAll(sysUserService.getAllUsersByRoleId(sysRole.getId()));
+        }
+        double quantity = 0.0;
+        SparePart sparePart = sparePartService.getById(sparesPartInventory.getSparePartId());
+        List<SparesPartInventory> sparesPartInventoryList = sparesPartInventoryService.lambdaQuery().eq(SparesPartInventory::getSparePartId,sparesPartInventory.getSparePartId()).eq(SparesPartInventory::getDelFlag, CommonConstant.DEL_FLAG_0).list();
+        for(SparesPartInventory sparesPartInventory1 : sparesPartInventoryList){
+            quantity = quantity + sparesPartInventory1.getMainQuantity();
+        }
+        if(quantity < sparePart.getInventoryLowerLimit()){
+            String messageTitle;
+            String messageContent;
+            String sysTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+            messageTitle = "绯荤粺娑堟伅锛氬浠剁紪鐮佷负 " + sparePart.getNum() + " 鐨勫浠跺簱瀛橀噺涓嶈冻锛岃鍙婃椂澶勭悊!";
+            messageContent = "绯荤粺娑堟伅锛氬浠剁紪鐮侊細" + sparePart.getNum()  + " 鐨勫浠跺簱瀛橀噺宸蹭綆浜庡畨鍏ㄥ簱瀛�!" + "\n" + "娑堟伅鏃堕棿:" + sysTime + "\n";
+            for (SysUser sysUser : sysUsers) {
+                sysBaseAPI.sendAnnouncement("admin", sysUser.getUsername(), messageTitle, messageContent);
+            }
+        }else if(quantity > sparePart.getInventoryUpperLimit()){
+            String messageTitle;
+            String messageContent;
+            String sysTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+            messageTitle = "绯荤粺娑堟伅锛氬浠剁紪鐮佷负 " + sparePart.getNum() + " 鐨勫浠跺嚭鐜扮Н鍘嬫儏鍐碉紝璇峰強鏃跺鐞�!";
+            messageContent = "绯荤粺娑堟伅锛氬浠剁紪鐮佷负 " + sparePart.getNum() + " 鐨勫浠跺簱瀛橀噺宸查珮浜庡簱瀛樹笂闄愬�硷紝鍑虹幇绉帇鎯呭喌!" + "\n" + "娑堟伅鏃堕棿:" + sysTime + "\n";
+            for (SysUser sysUser : sysUsers) {
+                sysBaseAPI.sendAnnouncement("admin", sysUser.getUsername(), messageTitle, messageContent);
+            }
+        }
         return true;
     }
 
diff --git a/lxzn-module-system/lxzn-system-api/lxzn-system-local-api/src/main/java/org/jeecg/common/system/api/ISysBaseAPI.java b/lxzn-module-system/lxzn-system-api/lxzn-system-local-api/src/main/java/org/jeecg/common/system/api/ISysBaseAPI.java
index 9cd01e6..c9594c9 100644
--- a/lxzn-module-system/lxzn-system-api/lxzn-system-local-api/src/main/java/org/jeecg/common/system/api/ISysBaseAPI.java
+++ b/lxzn-module-system/lxzn-system-api/lxzn-system-local-api/src/main/java/org/jeecg/common/system/api/ISysBaseAPI.java
@@ -440,4 +440,13 @@
 
 
     void closeJobByClassName(String className);
+
+    /**
+     * 鍙戦�佺郴缁熸秷鎭�
+     * @param fromUser 鍙戦�佷汉(鐢ㄦ埛鐧诲綍璐︽埛)
+     * @param toUser  鍙戦�佺粰(鐢ㄦ埛鐧诲綍璐︽埛)
+     * @param title  娑堟伅涓婚
+     * @param msgContent  娑堟伅鍐呭
+     */
+    public void sendAnnouncement(String fromUser, String toUser, String title, String msgContent);
 }
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/message/websocket/WebSocket.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/message/websocket/WebSocket.java
index c45d9fa..b2ccf23 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/message/websocket/WebSocket.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/message/websocket/WebSocket.java
@@ -173,6 +173,19 @@
             sendMessage(userId, message);
         }
     }
+
+    // 姝や负鍗曠偣娑堟伅
+    public void sendOneMessage(String userId, String message) {
+        Session session = sessionPool.get(userId);
+        if (session != null&&session.isOpen()) {
+            try {
+                log.info("銆恮ebsocket娑堟伅銆� 鍗曠偣娑堟伅:"+message);
+                session.getAsyncRemote().sendText(message);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+    }
     //=======銆愰噰鐢╮edis鍙戝竷璁㈤槄妯″紡鈥斺�旀帹閫佹秷鎭��==========================================================================================
     
 }
\ No newline at end of file
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 4bbaf0a..f146b04 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
@@ -163,4 +163,13 @@
 	 * 鏍规嵁鐢ㄦ埛Ids,鏌ヨ鐢ㄦ埛鎵�灞炰骇绾垮悕绉颁俊鎭�
 	 */
 	List<MdcUserProVo> getProNamesByUserIds(@Param("userIds") List<String> userIds);
+
+	/**
+	 * 鏍规嵁瑙掕壊Id鏌ヨ璇ヨ鑹蹭笅鐨勬墍鏈夌敤鎴蜂俊鎭�
+	 *
+	 * @param
+	 * @return
+	 */
+	List<SysUser> getAllUsersByRoleId(@Param("roleId") String roleId);
+
 }
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 1480980..3a100ad 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
@@ -190,4 +190,9 @@
 			#{id}
 		</foreach>
 	</select>
+
+	<!-- 鏍规嵁瑙掕壊Id鏌ヨ璇ヨ鑹蹭笅鐨勬墍鏈夌敤鎴蜂俊鎭� -->
+	<select id="getAllUsersByRoleId" resultType="org.jeecg.modules.system.entity.SysUser">
+		select * from sys_user where del_flag = '0' and id in (select user_id from sys_user_role where role_id=#{roleId})
+	</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 7632e37..76ad818 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
@@ -308,4 +308,12 @@
 	 * 鏍规嵁 userIds鏌ヨ锛屾煡璇㈢敤鎴锋墍灞炰骇绾跨殑鍚嶇О锛堝涓骇绾垮悕閫楀彿闅斿紑锛�
 	 */
 	Map<String, String> getProNamesByUserIds(List<String> userIds);
+
+	/**
+	 * 鏍规嵁瑙掕壊Id鏌ヨ璇ヨ鑹蹭笅鐨勬墍鏈夌敤鎴蜂俊鎭�,涓嶅垎椤�
+	 *
+	 * @param
+	 * @return
+	 */
+	public List<SysUser> getAllUsersByRoleId(String roleId);
 }
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 9892504..7e75089 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
@@ -1459,4 +1459,44 @@
             quartzJobService.deleteAndStopJob(quartzJob);
         }
     }
+
+    @Override
+    public void sendAnnouncement(String fromUser, String toUser, String title, String msgContent) {
+        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(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
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 be754a9..5e8f1fe 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
@@ -652,4 +652,10 @@
 		});
 		return res;
 	}
+
+	// 鏍规嵁瑙掕壊Id鏌ヨ璇ヨ鑹蹭笅鐨勬墍鏈夌敤鎴蜂俊鎭�
+	@Override
+	public List<SysUser> getAllUsersByRoleId(String roleId) {
+		return userMapper.getAllUsersByRoleId(roleId);
+	}
 }

--
Gitblit v1.9.3