From 2578d8ab90ee81344437e0720931d7af3a3a8e7c Mon Sep 17 00:00:00 2001
From: lius <Lius2225@163.com>
Date: 星期三, 16 八月 2023 16:16:38 +0800
Subject: [PATCH] 定时任务执行失败发送系统消息

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

diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysAnnouncementServiceImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysAnnouncementServiceImpl.java
index 0934d2e..783aa0c 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysAnnouncementServiceImpl.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysAnnouncementServiceImpl.java
@@ -1,18 +1,25 @@
 package org.jeecg.modules.system.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.constant.CommonSendStatus;
+import org.jeecg.common.constant.WebsocketConst;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.message.websocket.WebSocket;
 import org.jeecg.modules.system.entity.SysAnnouncement;
 import org.jeecg.modules.system.entity.SysAnnouncementSend;
 import org.jeecg.modules.system.mapper.SysAnnouncementMapper;
 import org.jeecg.modules.system.mapper.SysAnnouncementSendMapper;
 import org.jeecg.modules.system.service.ISysAnnouncementService;
+import org.jeecg.modules.system.service.ISysDictService;
+import org.jeecg.modules.system.service.ISysUserService;
+import org.jeecg.modules.system.util.XssUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -37,6 +44,15 @@
 	
 	@Resource
 	private SysAnnouncementSendMapper sysAnnouncementSendMapper;
+
+	@Resource
+	private ISysDictService sysDictService;
+
+	@Resource
+	private ISysUserService sysUserService;
+
+	@Resource
+	private WebSocket webSocket;
 	
 	@Transactional(rollbackFor = Exception.class)
 	@Override
@@ -185,4 +201,54 @@
 		sysAnnouncementSendMapper.updateReaded(sysUser.getId(), annoceIdList);
 	}
 
+	@Override
+	public void jobSendMessage(String jobDescription, String exceptionDetail) {
+		SysAnnouncement sysAnnouncement = new SysAnnouncement();
+		String title = XssUtils.scriptXss(jobDescription + "澶辫触锛�");
+		// 鏍囬
+		sysAnnouncement.setTitile(title);
+		// 娑堟伅绫诲瀷
+		sysAnnouncement.setMsgCategory(CommonConstant.MSG_CATEGORY_2);
+		// 浼樺厛绾�
+		sysAnnouncement.setPriority(CommonConstant.PRIORITY_H);
+		// 閫氬憡瀵硅薄绫诲瀷
+		sysAnnouncement.setMsgType(CommonConstant.MSG_TYPE_UESR);
+		// 鍒犻櫎鐘舵��
+		sysAnnouncement.setDelFlag(CommonConstant.DEL_FLAG_0.toString());
+		// 鍙戝竷鐘舵��
+		sysAnnouncement.setSendStatus(CommonSendStatus.PUBLISHED_STATUS_1);
+		// 鍙戝竷鏃堕棿
+		sysAnnouncement.setSendTime(new Date());
+		// 鍙戝竷浜�
+		sysAnnouncement.setSender("admin");
+		// 娑堟伅鍐呭
+		sysAnnouncement.setMsgContent(exceptionDetail);
+		// 鑾峰彇鐢ㄦ埛
+		// step1. 浠庡瓧鍏告暟鎹腑鏌ヨ闇�瑕佸彂閫佺殑瑙掕壊缂栫爜
+		String roleCode = sysDictService.queryDictTextByKey(CommonConstant.JOB_SEND_MSG, CommonConstant.STATUS_NORMAL.toString());
+		// step2. 鏍规嵁瑙掕壊缂栫爜鏌ヨ鐢ㄦ埛id闆嗗悎
+		List<String> userIds = sysUserService.getUserByRoleCode(roleCode);
+		if (userIds != null && !userIds.isEmpty()) {
+			sysAnnouncement.setUserIds(String.join(",", userIds));
+			sysAnnouncementMapper.insert(sysAnnouncement);
+			String anntId = sysAnnouncement.getId();
+			Date refDate = new Date();
+			for (String userId : userIds) {
+				SysAnnouncementSend announcementSend = new SysAnnouncementSend();
+				announcementSend.setAnntId(anntId);
+				announcementSend.setUserId(userId);
+				announcementSend.setReadFlag(CommonConstant.NO_READ_FLAG);
+				announcementSend.setReadTime(refDate);
+				sysAnnouncementSendMapper.insert(announcementSend);
+			}
+			// 鍙戦�佹秷鎭�
+			JSONObject obj = new JSONObject();
+			obj.put(WebsocketConst.MSG_CMD, WebsocketConst.CMD_USER);
+			obj.put(WebsocketConst.MSG_ID, sysAnnouncement.getId());
+			obj.put(WebsocketConst.MSG_TXT, sysAnnouncement.getTitile());
+			webSocket.sendMessage(sysAnnouncement.getUserIds().split(","), obj.toJSONString());
+		}
+
+	}
+
 }

--
Gitblit v1.9.3