Pārlūkot izejas kodu

设备故障消息推送,根据系统编码扩展配置调整逻辑

谭斌 2 gadi atpakaļ
vecāks
revīzija
6f172d6989

+ 37 - 15
device-api-service/src/main/java/com/xy/consumer/device/push/msg/DevicePushMsgConsumer.java

@@ -20,6 +20,7 @@ import com.xy.entity.DeviceInfo;
 import com.xy.entity.SysCodeConfigureRedis;
 import com.xy.enums.ChannelType;
 import com.xy.enums.MsgType;
+import com.xy.enums.SysCodeConfigureEnum;
 import com.xy.service.*;
 import com.xy.service.be.MercFeignService;
 import com.xy.utils.R;
@@ -63,7 +64,23 @@ public class DevicePushMsgConsumer implements MqttConsumer {
             Long mercId = deviceEventMsg.getMercId();
             LocalDateTime createTime = deviceEventMsg.getCreateTime();
             String msg = deviceEventMsg.getMsg();
-            SysCodeConfigureRedis sysCodeConfigureRedis = SysCodeConfigureUtils.get(deviceEventMsg.getCode());
+            String code = deviceEventMsg.getCode();
+            SysCodeConfigureRedis sysCodeConfigureRedis = SysCodeConfigureUtils.get(code);
+            String expand = sysCodeConfigureRedis.getExpand();
+            if (StrUtil.isEmpty(expand)) {
+                return true;
+            }
+            String paterCode = sysCodeConfigureRedis.getPaterCode();
+            SysCodeConfigureEnum sysCodeConfigureEnum = SysCodeConfigureEnum.valueOf(paterCode);
+            String eventType = sysCodeConfigureEnum.getMsg();
+            String title = sysCodeConfigureRedis.getTitle();
+            //是否展示给商户
+            boolean expShow2Merc = SysCodeConfigureUtils.getExpShow2Merc(expand);
+            //是否推送给商户
+            boolean expPush2Merc = SysCodeConfigureUtils.getExpPush2Merc(expand);
+            //是否推送时间段
+            boolean expCanPush = SysCodeConfigureUtils.getExpCanPush(expand);
+
             Long configId = 12L;
             MsgConfigDto.Vo msgConfig = R.feignCheckData(msgSendApiService.getMsgConfig(new MsgConfigDto.Vo().setId(configId)));
             List<MsgConfigTestDto.BizParam> bizParams = R.feignCheckData(msgSendApiService.getBizParamByMsgConfig(new MsgConfigTestDto.MsgConfig().setConfigId(configId)));
@@ -106,19 +123,23 @@ public class DevicePushMsgConsumer implements MqttConsumer {
                         .append(DateUtil.format(createTime, DatePattern.NORM_DATETIME_PATTERN));
                 //查询userinfo表的mpOpenId
                 List<UserInfoDto.Vo> userInfoList = R.feignCheckData(userInfoService.list(new UserInfoDto.SelectListDto().setUserIds(userInfoIdList)));
-                userInfoList.forEach(u -> {
-                    String name = u.getName();
-                    //系统消息
-                    MsgSysMonitorNoticeDto.Save msgSys = new MsgSysMonitorNoticeDto.Save();
-                    msgSys.setUserId(u.getAuthorizeUserId());
-                    msgSys.setMsgType(MsgType.TYPE6.getCode()).setContent(sbMsg.toString())
-                            .setPubTime(LocalDateTime.now()).setPubState(2)
-                            .setSendTargets(name)
-                            .setPriority(msgConfig.getPriority())
-                            .setTitle(msgConfig.getTitle())
-                            .setPubUserId(-1).setTitle(MsgType.TYPE6.getDescription());
-                    msgSysMonitorNoticeService.save(msgSys);
-                });
+                //配置了展示给商户才生成数据
+                if (expShow2Merc) {
+                    userInfoList.forEach(u -> {
+                        String name = u.getName();
+                        //系统消息
+                        MsgSysMonitorNoticeDto.Save msgSys = new MsgSysMonitorNoticeDto.Save();
+                        msgSys.setUserId(u.getAuthorizeUserId());
+                        msgSys.setMsgType(MsgType.TYPE6.getCode()).setContent(sbMsg.toString())
+                                .setPubTime(LocalDateTime.now()).setPubState(2)
+                                .setSendTargets(name)
+                                .setPriority(msgConfig.getPriority())
+                                .setTitle(eventType + "-" + title)
+                                .setPubUserId(-1).setTitle(MsgType.TYPE6.getDescription());
+                        msgSysMonitorNoticeService.save(msgSys);
+                    });
+                }
+
 
                 for (MsgConfigTestDto.BizData b : bizDataList) {
                     String channelType = b.getChannelType();
@@ -154,7 +175,8 @@ public class DevicePushMsgConsumer implements MqttConsumer {
                         sendList.add(b);
                     }
                 }
-                if (CollUtil.isNotEmpty(sendList)) {
+                //是否可推送条件
+                if (CollUtil.isNotEmpty(sendList) && expPush2Merc && expCanPush) {
                     msgSendApiService.sendByMsgConfig(new MsgConfigTestDto.SendByMsgConfig().setConfigId(configId).setBizDataList(sendList));
                 }
 

+ 19 - 1
device-api-service/src/main/java/com/xy/service/factory/device/impl/open/OpenDeviceFactoryImpl.java

@@ -1,5 +1,6 @@
 package com.xy.service.factory.device.impl.open;
 
+import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -246,13 +247,30 @@ public class OpenDeviceFactoryImpl implements DeviceFactory {
                             .setFaultLevel(Integer.valueOf(sysCodeConfigureRedis.getExpand()));
                     deviceInfoService.updateById(updateDeviceInfo);
                     //设备故障消息推送
-                    devicePushMsgProducer.sendToMqtt(JSONUtil.toJsonStr(deviceEventMsg), DevicePushMsgMqttConfiguration.TOPIC, 1);
+                    sendMsg(deviceEventMsg);
                 }
             }
+            if (sysCodeConfigureRedis.getPaterCode().equals(SysCodeConfigureEnum.M01.getCode())) {
+                //设备消息消息推送
+                sendMsg(deviceEventMsg);
+            }
         }
         return R.ok();
     }
 
+    /**
+     * 设备事件推送
+     *
+     * @param deviceEventMsg 设备事件味精
+     */
+    private void sendMsg(DeviceEventMsg deviceEventMsg) {
+        String code = deviceEventMsg.getCode();
+        if (StrUtil.isEmpty(code)) {
+            return;
+        }
+        devicePushMsgProducer.sendToMqtt(JSONUtil.toJsonStr(deviceEventMsg), DevicePushMsgMqttConfiguration.TOPIC, 1);
+    }
+
     @Override
     public R busyStatus(MercMiniDeviceDto.BusySate busySate) {
         DeviceInfo updateDeviceInfo = new DeviceInfo()