hyingbo
2025-05-27 3a740faa161ec976986c0735ba18837f570a525f
消息类型拆分并按类型推送至不同角色
已添加1个文件
已修改13个文件
175 ■■■■■ 文件已修改
lxzn-boot-base-core/src/main/java/org/jeecg/common/api/dto/message/MessageDTO.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/enums/MessageSplitTypeEnum.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/EquipmentWarrantyEndDateAlertJob.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/TechnologyStatusAlart.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/ThirdMaintenaceAlart.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcMessageApprovalController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningEquipmentStatusJob.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningMonitoringSpeedJob.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-boot-base-core/src/main/java/org/jeecg/common/api/dto/message/MessageDTO.java
@@ -64,6 +64,15 @@
     * æ˜¯å¦å‘送Markdown格式的消息
     */
    protected boolean isMarkdown;
    /**
     * æ¶ˆæ¯ç±»åž‹
     *    åˆ°ä¿å…»æœŸ
     *    è®¾å¤‡è¿è¡Œå¼‚常
     *    çŠ¶æ€é•¿æœŸæ— å˜åŒ–
     *    ç½‘络故障
     */
    protected String messageType;
    /**
     * è§£æžæ¨¡æ¿å†…容 å¯¹åº”的数据
lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/enums/MessageSplitTypeEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,102 @@
package org.jeecg.common.constant.enums;
import org.jeecg.common.system.annotation.EnumDict;
import org.jeecg.common.system.vo.DictModel;
import java.util.ArrayList;
import java.util.List;
/**
 * æ¶ˆæ¯ç±»åž‹
 * @author: jeecg-boot
 */
@EnumDict("messageType")
public enum MessageSplitTypeEnum {
    /** åˆ°ä¿å…»æœŸ */
    untilMaintenancePeriod("untilMaintenancePeriod",  "到保养期", "until_maintenance_period"),
    /** è®¾å¤‡è¿è¡Œå¼‚常 */
    deviceRunError("deviceRunError", "设备运行异常",  "device_run_error"),
    /** é’‰çŠ¶æ€é•¿æœŸæ— å˜åŒ– */
    statusPermanentlyNoChange("statusPermanentlyNoChange", "钉状态长期无变化", "status_permanently_no_change"),
    /** ç½‘络故障 */
    networkFault("networkFault", "网络故障", "network_fault");
    MessageSplitTypeEnum(String type, String note, String dictCode){
        this.type = type;
        this.note = note;
        this.dictCode = dictCode;
    }
    /**
     * æ¶ˆæ¯ç±»åž‹
     */
    String type;
    /**
     * ç±»åž‹è¯´æ˜Ž
     */
    String note;
    /**
     * å­—典名称
     */
    String dictCode;
    public String getDictCode() {
        return dictCode;
    }
    public void setDictCode(String dictCode) {
        this.dictCode = dictCode;
    }
    public String getNote() {
        return note;
    }
    public void setNote(String note) {
        this.note = note;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    /**
     * èŽ·å–å­—å…¸æ•°æ®
     * @return
     */
    public static List<DictModel> getDictList(){
        List<DictModel> list = new ArrayList<>();
        DictModel dictModel = null;
        for(MessageSplitTypeEnum e: MessageSplitTypeEnum.values()){
            dictModel = new DictModel();
            dictModel.setValue(e.getType());
            dictModel.setText(e.getNote());
            list.add(dictModel);
        }
        return list;
    }
    /**
     * æ ¹æ®type获取枚举
     *
     * @param type
     * @return
     */
    public static MessageSplitTypeEnum valueOfType(String type) {
        for (MessageSplitTypeEnum e : MessageSplitTypeEnum.values()) {
            if (e.getType().equals(type)) {
                return e;
            }
        }
        return null;
    }
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/EquipmentWarrantyEndDateAlertJob.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.dto.message.MessageDTO;
import org.jeecg.common.constant.enums.MessageSplitTypeEnum;
import org.jeecg.common.system.api.ISysBaseAPI;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.modules.eam.entity.Equipment;
@@ -42,6 +43,7 @@
        MessageDTO messageDTO = new MessageDTO();
        messageDTO.setTitle(title);
        messageDTO.setContent(msg);
        messageDTO.setMessageType(MessageSplitTypeEnum.untilMaintenancePeriod.getType());
        messageDTO.setCategory("系统消息");
        messageDTO.setFromUser("到期提醒小助手-小醒");
        messageDTO.setToUser("admin");
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/TechnologyStatusAlart.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.jeecg.common.api.dto.message.MessageDTO;
import org.jeecg.common.constant.enums.MessageSplitTypeEnum;
import org.jeecg.common.system.api.ISysBaseAPI;
import org.jeecg.modules.eam.entity.Equipment;
import org.jeecg.modules.eam.service.IEamEquipmentService;
@@ -62,6 +63,7 @@
            msg = msg+"的设备技术状态鉴定的日期不足两个月,请及时处理";
            MessageDTO messageDTO = new MessageDTO();
            messageDTO.setTitle(title);
            messageDTO.setMessageType(MessageSplitTypeEnum.untilMaintenancePeriod.getType());
            messageDTO.setContent(msg);
            messageDTO.setCategory("技术状态鉴定消息");
            messageDTO.setFromUser("admin");
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/ThirdMaintenaceAlart.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.hibernate.annotations.Source;
import org.jeecg.common.api.dto.message.MessageDTO;
import org.jeecg.common.constant.enums.MessageSplitTypeEnum;
import org.jeecg.common.system.api.ISysBaseAPI;
import org.jeecg.common.system.vo.DictModel;
import org.jeecg.modules.eam.entity.Equipment;
@@ -66,6 +67,7 @@
            msg = msg+"的设备离下次三保的日期不足两个月,请及时处理";
            MessageDTO messageDTO = new MessageDTO();
            messageDTO.setTitle(title);
            messageDTO.setMessageType(MessageSplitTypeEnum.untilMaintenancePeriod.getType());
            messageDTO.setContent(msg);
            messageDTO.setCategory("三保消息");
            messageDTO.setFromUser("admin");
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcMessageApprovalController.java
@@ -10,6 +10,7 @@
import org.jeecg.common.api.dto.message.MessageDTO;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.constant.enums.MessageSplitTypeEnum;
import org.jeecg.common.system.api.ISysBaseAPI;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.system.vo.LoginUser;
@@ -179,6 +180,7 @@
            //上报原因发送消息给确认人
            MessageDTO messageDTO = new MessageDTO();
            messageDTO.setTitle("设备状态长时间未变化原因上报确认!");
            messageDTO.setMessageType(MessageSplitTypeEnum.statusPermanentlyNoChange.getType());
            messageDTO.setCategory("消息");
            LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
            messageDTO.setFromUser(user.getUsername());
@@ -205,6 +207,7 @@
            messageDTO.setTitle("设备状态消息!");
            messageDTO.setCategory("消息");
            messageDTO.setFromUser("admin");
            messageDTO.setMessageType(MessageSplitTypeEnum.statusPermanentlyNoChange.getType());
            messageDTO.setToUser(mdcMessageApproval.getUpdateBy());
            messageDTO.setContent("您的设备编号为 [" + mdcMessageApproval.getEquipmentId() + "] çš„设备状态长时间未变化上报已被设备超级管理员拒绝,请重新填写上报原因!");
            sysBaseApi.sendSysAnnouncement(messageDTO);
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningEquipmentStatusJob.java
@@ -3,6 +3,7 @@
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.dto.message.MessageDTO;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.constant.enums.MessageSplitTypeEnum;
import org.jeecg.common.system.api.ISysBaseAPI;
import org.jeecg.common.system.vo.DictModel;
import org.jeecg.modules.mdc.constant.MdcConstant;
@@ -135,6 +136,7 @@
                            MessageDTO messageDTO = new MessageDTO();
                            messageDTO.setTitle("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] çš„设备利用率低于正常值!");
                            messageDTO.setCategory(CommonConstant.MSG_CATEGORY_2);
                            messageDTO.setMessageType(MessageSplitTypeEnum.deviceRunError.getType());
                            messageDTO.setFromUser("admin");
                            messageDTO.setToUser("admin");
                            messageDTO.setContent("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] çš„设备利用率低于正常值!");
@@ -175,6 +177,7 @@
                                MessageDTO messageDTO = new MessageDTO();
                                messageDTO.setTitle("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] çš„设备状态长期无变化!");
                                messageDTO.setCategory(CommonConstant.MSG_CATEGORY_2);
                                messageDTO.setMessageType(MessageSplitTypeEnum.deviceRunError.getType());
                                messageDTO.setFromUser("admin");
                                messageDTO.setToUser(sysUser.getUsername());
                                messageDTO.setContent("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] çš„设备状态长期无变化!");
@@ -184,6 +187,7 @@
                            MessageDTO messageDTO = new MessageDTO();
                            messageDTO.setTitle("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] çš„设备状态长期无变化!");
                            messageDTO.setCategory(CommonConstant.MSG_CATEGORY_2);
                            messageDTO.setMessageType(MessageSplitTypeEnum.deviceRunError.getType());
                            messageDTO.setFromUser("admin");
                            messageDTO.setToUser("admin");
                            messageDTO.setContent("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] çš„设备状态长期无变化!");
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningMonitoringSpeedJob.java
@@ -5,6 +5,7 @@
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.dto.message.MessageDTO;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.constant.enums.MessageSplitTypeEnum;
import org.jeecg.common.system.api.ISysBaseAPI;
import org.jeecg.common.system.vo.DictModel;
import org.jeecg.common.util.DateUtils;
@@ -92,6 +93,7 @@
                    MessageDTO messageDTO = new MessageDTO();
                    messageDTO.setTitle("【设备异常提醒】" + productionName + "车间设备 [" + mdcEquipment.getEquipmentId() + "] è¿è¡Œè½¬é€Ÿï¼");
                    messageDTO.setCategory(CommonConstant.MSG_CATEGORY_2);
                    messageDTO.setMessageType(MessageSplitTypeEnum.deviceRunError.getType());
                    messageDTO.setFromUser("admin");
                    messageDTO.setToUser("admin");
                    //设定
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java
@@ -8,6 +8,7 @@
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.api.dto.message.MessageDTO;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.constant.enums.MessageSplitTypeEnum;
import org.jeecg.common.system.api.ISysBaseAPI;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.mdc.dto.MdcEquDepDto;
@@ -798,6 +799,7 @@
                        MessageDTO messageDTO = new MessageDTO();
                        messageDTO.setTitle("【设备异常提醒】" + productionName + "车间设备编号为 [" + mdcEquipment.getEquipmentId() + "] çš„设备" + mdcEquipmentThreshold.getChineseName() + "报警!");
                        messageDTO.setCategory(CommonConstant.MSG_CATEGORY_2);
                        messageDTO.setMessageType(MessageSplitTypeEnum.deviceRunError.getType());
                        messageDTO.setFromUser("admin");
                        messageDTO.setToUser("admin");
                        MdcOverrunAlarm mdcOverrunAlarm = new MdcOverrunAlarm();
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java
@@ -183,4 +183,6 @@
     * æ ¹æ®è§’色编码和设备编号查询用户
     */
    List<SysUser> getEquipmentAdmin(@Param("roleCode") String roleCode, @Param("equipmentId") String equipmentId);
    List<SysUser> getUserByRoleCodeList(@Param("roleCodeList") List<String> roleCodeList);
}
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml
@@ -217,4 +217,17 @@
        WHERE
            t3.role_code = #{roleCode} AND equipment_ids LIKE concat(concat('%',#{equipmentId}),'%')
    </select>
    <select id="getUserByRoleCodeList" resultType="org.jeecg.modules.system.entity.SysUser">
        SELECT
            su.*
        FROM
            sys_user su
                LEFT JOIN sys_user_role sur ON su.id = sur.user_id
                LEFT JOIN sys_role sr ON sur.role_id = sr.id
        WHERE
        su.del_flag = '0' and sr.role_code in
        <foreach collection="roleCodeList" index="index" item="roleCode" open="(" separator="," close=")">
            #{roleCode}
        </foreach>
    </select>
</mapper>
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java
@@ -319,5 +319,7 @@
    List<String> getUserByRoleCode(String roleCode);
    List<SysUser> getUserByRoleCodeList(List<String> roleCodeList);
    List<SysUser> getEquipmentAdmin(String roleCode, String equipmentId);
}
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java
@@ -7,7 +7,9 @@
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.base.Joiner;
import lombok.extern.slf4j.Slf4j;
@@ -18,6 +20,7 @@
import org.jeecg.common.api.dto.message.*;
import org.jeecg.common.aspect.UrlMatchEnum;
import org.jeecg.common.constant.*;
import org.jeecg.common.constant.enums.MessageSplitTypeEnum;
import org.jeecg.common.constant.enums.MessageTypeEnum;
import org.jeecg.common.desensitization.util.SensitiveInfoUtil;
import org.jeecg.common.exception.JeecgBootException;
@@ -59,6 +62,7 @@
import java.sql.DatabaseMetaData;
import java.sql.SQLException;
import java.util.*;
import java.util.stream.Collectors;
/**
 * @Description: åº•层共通业务API,提供其他独立模块调用
@@ -134,6 +138,8 @@
    @Autowired
    private IQuartzJobService quartzJobService;
    @Autowired
    private ISysDictItemService sysDictItemService;
    @Override
    //@SensitiveDecode
@@ -355,6 +361,22 @@
    @Override
    public void sendSysAnnouncement(MessageDTO message) {
        if (StringUtils.isNotBlank(message.getMessageType())) {
            //获取消息类型对应角色用户
            MessageSplitTypeEnum messageSplitTypeEnum = MessageSplitTypeEnum.valueOfType(message.getMessageType());
            SysDict sysDict = sysDictService.getOne(new LambdaQueryWrapper<SysDict>().eq(SysDict::getDictCode, messageSplitTypeEnum.getDictCode()));
            List<SysDictItem> sysDictItemList = sysDictItemService.list(new QueryWrapper<SysDictItem>().eq("dict_id",sysDict.getId()));
            if (CollectionUtils.isNotEmpty(sysDictItemList)) {
                List<SysUser> sysUserList = sysUserService.getUserByRoleCodeList(sysDictItemList.stream().map(SysDictItem::getItemValue).collect(Collectors.toList()));
                if (CollectionUtils.isNotEmpty(sysUserList)) {
                    Set<String> userIdList = new HashSet<>(Arrays.asList(message.getToUser().split(StringPool.COMMA)));
                    userIdList.addAll(sysUserList.stream().map(SysUser::getUsername).collect(Collectors.toList()));
                    message.setToUser(StringUtils.join(userIdList, StringPool.COMMA));
                }
            }
        }
        this.sendSysAnnouncement(message.getFromUser(), message.getToUser(), message.getTitle(), message.getContent(), message.getCategory());
        try {
            // åŒæ­¥å‘送第三方APP消息
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
@@ -707,6 +707,14 @@
    }
    /**
     * æ ¹æ®è§’色编码列表查询用户id集合
     */
    @Override
    public List<SysUser> getUserByRoleCodeList(List<String> roleCodeList) {
        return this.baseMapper.getUserByRoleCodeList(roleCodeList);
    }
    /**
     * æ ¹æ®è§’色编码和设备编号查询用户
     */
    @Override