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; } 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; } } 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; } 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); } 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("【websocket消息】 单点消息:"+message); session.getAsyncRemote().sendText(message); } catch (Exception e) { e.printStackTrace(); } } } //=======【采用redis发布订阅模式——推送消息】========================================================================================== } 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); } 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> 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); } 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()); } } } } 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); } }