WebNoticePushServiceExt.java 4.1 KB
package com.skua.modules.system.service;

import com.alibaba.fastjson.JSONObject;
import com.skua.core.context.SpringContextUtils;
import com.skua.core.service.ISequenceService;
import com.skua.core.util.ConvertUtils;
import com.skua.core.util.DateUtils;
import com.skua.core.util.push.IWebSocketPushService;
import com.skua.core.util.push.MessageEntity;
import com.skua.core.util.push.impl.WebNoticePushServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

/**
 * @auther kangwei
 * @create 2025-03-04-18:43
 */
@Service("WebNoticePushServiceExt")
public class WebNoticePushServiceExt {

    private static final Logger log = LoggerFactory.getLogger(WebNoticePushServiceImpl.class);
    @Autowired
    private ISequenceService sequenceService;

    public WebNoticePushServiceExt() {
    }

    public void pushMessage(MessageEntity messageEntity,String msgCategory) {
        JdbcTemplate masterDB = (JdbcTemplate) SpringContextUtils.getBean("master");
        List<String> userIds = messageEntity.getReceiveUser();
        String sendUser = messageEntity.getSendUser();
        String title = messageEntity.getMessageTitle();
        String message = messageEntity.getMessageBody();
        String tzId = String.valueOf(this.sequenceService.nextId());
        String forwardTag = messageEntity.getForwardTag();
        List<Map<String, Object>> extMapList = messageEntity.getExtMapList();
        String userIdStr = "";
        Object webSocketPushServiceObject = SpringContextUtils.getBean("webSocketPushService");
        Iterator var12 = userIds.iterator();

        String alarmType;
        while(var12.hasNext()) {
            String userId = (String)var12.next();
            userIdStr = userIdStr + userId + ",";
            alarmType = "insert into sys_announcement_send (id,annt_id,user_id,read_flag) values('" + this.sequenceService.nextId() + "','" + tzId + "','" + userId + "','0')";
            masterDB.update(alarmType);
        }

        String insertTzSql = "INSERT INTO sys_announcement (id,titile,msg_content,sender,msg_category,msg_type,send_status,send_time,del_flag,create_by,create_time,user_ids,depart_id)VALUES('" + tzId + "','" + title + "','" + message + "','" + sendUser + "','"+msgCategory+"','USER','1','" + DateUtils.now() + "','0','" + sendUser + "','" + DateUtils.now() + "','" + userIdStr + "','A01')";
        if (extMapList != null && extMapList.size() > 0) {
            System.out.println("报警业务逻辑插入");
            Map<String, String> extMap = new HashMap();
            extMapList.forEach((map) -> {
                extMap.put(ConvertUtils.getString(map.get("key"), ""), ConvertUtils.getString(map.get("value"), ""));
            });
            alarmType = (String)extMap.get("alarmType");
            String id = (String)extMap.get("id");
            if (StringUtils.isNotEmpty(alarmType) && StringUtils.isNotEmpty(id)) {
                insertTzSql = "INSERT INTO sys_announcement (id,titile,msg_content,sender,msg_category,msg_type,send_status,send_time,del_flag,create_by,create_time,user_ids,depart_id,alarm_type,alarm_record_id)VALUES('" + tzId + "','" + title + "','" + message + "','" + sendUser + "','3','ALARM','1','" + DateUtils.now() + "','0','" + sendUser + "','" + DateUtils.now() + "','" + userIdStr + "','A01','" + alarmType + "','" + id + "')";
            }
        }

        masterDB.update(insertTzSql);
        if (webSocketPushServiceObject != null) {
            IWebSocketPushService webSocketPushService = (IWebSocketPushService)webSocketPushServiceObject;
            JSONObject obj = new JSONObject();
            obj.put("cmd", forwardTag);
            obj.put("msgPriority", "M");
            obj.put("msgId", tzId);
            obj.put("msgTxt", message);
            obj.put("msgExt", extMapList);

            webSocketPushService.webSocketPush((String[])userIds.toArray(new String[userIds.size()]), obj);
        }

    }
}