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