Jelajahi Sumber

补扣系统消息

谭斌 2 tahun lalu
induk
melakukan
f35fdd4ab4

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

@@ -67,65 +67,73 @@ public class DevicePushMsgConsumer implements MqttConsumer {
             if (CollUtil.isNotEmpty(bizParams)) {
                 List<MsgConfigTestDto.BizData> bizDataList = BeanUtil.copyToList(bizParams, MsgConfigTestDto.BizData.class);
                 List<MsgConfigTestDto.BizData> sendList = new ArrayList<>();
+                /**
+                 * {{first.DATA}}
+                 * 设备名称:{{keyword1.DATA}}
+                 * 告警内容:{{keyword2.DATA}}
+                 * 发生时间:{{keyword3.DATA}}
+                 * {{remark.DATA}}
+                 *
+                 */
+                DeviceInfo deviceInfo = deviceInfoService.getById(deviceId);
+                String deviceName = deviceInfo.getDeviceName();
+                if (StrUtil.isEmpty(deviceName)) {
+                    deviceName = deviceId + "";
+                } else {
+                    deviceName = deviceName + "(" + deviceId + ")";
+                }
+
+                MercDto.Vo merc = R.feignCheckData(mercFeignService.obj(new MercDto.ListDTO().setId(mercId)));
+                Long userInfoId = merc.getUserInfoId();
+                List<Long> userInfoIdList = new ArrayList<>();
+                userInfoIdList.add(userInfoId);
+                List<MercUserDeviceDto.Vo> mercUserDevices = R.feignCheckData(mercFeignService.mercDeviceUsers(
+                        new MercUserDeviceDto.Vo().setMercId(mercId).setDeviceId(deviceId)));
+                if (CollUtil.isNotEmpty(mercUserDevices)) {
+                    List<Long> uids = mercUserDevices.stream().map(MercUserDeviceDto.Vo::getUserId).collect(Collectors.toList());
+                    if (CollUtil.isNotEmpty(uids)) {
+                        userInfoIdList.addAll(uids);
+                    }
+                }
+                StringBuilder sbMsg = StrUtil.builder().append("设备")
+                        .append("【")
+                        .append(deviceName)
+                        .append("】")
+                        .append("发生故障:").append(msg).append(",发生时间:")
+                        .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.setMsgType(MsgType.TYPE6.getCode()).setContent(sbMsg.toString())
+                            .setPubTime(LocalDateTime.now()).setPubState(2)
+                            .setSendTargets(name)
+                            .setPriority(1)
+                            .setPubUserId(-1).setTitle(MsgType.TYPE6.getDescription());
+                    msgSysMonitorNoticeService.save(msgSys);
+                    MsgUserMessageDto.Save mum = new MsgUserMessageDto.Save();
+                    mum.setMsgId(msgSys.getMsgId());
+                    mum.setMsgType(msgSys.getMsgType());
+                    mum.setPriority(msgSys.getPriority());
+                    mum.setUserId(u.getAuthorizeUserId());
+                    msgUserMessageService.save(mum);
+                });
+
                 for (MsgConfigTestDto.BizData b : bizDataList) {
                     String channelType = b.getChannelType();
                     if (Integer.valueOf(channelType).intValue() == ChannelType.OFFICIAL_ACCOUNT.getCode().intValue()) {
                         //TODO: 暂无订阅功能。给商户管理员、以及有此设备权限的人推送消息,  查询微信公众号openID
-                        MercDto.Vo merc = R.feignCheckData(mercFeignService.obj(new MercDto.ListDTO().setId(mercId)));
-                        Long userInfoId = merc.getUserInfoId();
-                        List<Long> userInfoIdList = new ArrayList<>();
-                        userInfoIdList.add(userInfoId);
-                        List<MercUserDeviceDto.Vo> mercUserDevices = R.feignCheckData(mercFeignService.mercDeviceUsers(
-                                new MercUserDeviceDto.Vo().setMercId(mercId).setDeviceId(deviceId)));
-                        if (CollUtil.isNotEmpty(mercUserDevices)) {
-                            List<Long> uids = mercUserDevices.stream().map(MercUserDeviceDto.Vo::getUserId).collect(Collectors.toList());
-                            if (CollUtil.isNotEmpty(uids)) {
-                                userInfoIdList.addAll(uids);
-                            }
-                        }
-                        //查询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.setMsgType(MsgType.TYPE6.getCode()).setContent(msg)
-                                    .setPubTime(LocalDateTime.now()).setPubState(2)
-                                    .setSendTargets(name)
-                                    .setPriority(1)
-                                    .setPubUserId(-1).setTitle(MsgType.TYPE6.getDescription());
-                            msgSysMonitorNoticeService.save(msgSys);
-                            MsgUserMessageDto.Save mum = new MsgUserMessageDto.Save();
-                            mum.setMsgId(msgSys.getMsgId());
-                            mum.setMsgType(msgSys.getMsgType());
-                            mum.setPriority(msgSys.getPriority());
-                            mum.setUserId(u.getAuthorizeUserId());
-                            msgUserMessageService.save(mum);
-                        });
 
-                        Set<String> mpOpenIds = userInfoList.stream().filter(Objects::nonNull)
+                        Set<String> mpOpenIds = userInfoList.stream().filter(u -> ObjectUtil.isNotEmpty(u.getMpOpenid()))
                                 .map(UserInfoDto.Vo::getMpOpenid)
                                 .collect(Collectors.toSet());
+
                         if (CollUtil.isEmpty(mpOpenIds)) {
                             continue;
                         }
 
-                        /**
-                         * {{first.DATA}}
-                         * 设备名称:{{keyword1.DATA}}
-                         * 告警内容:{{keyword2.DATA}}
-                         * 发生时间:{{keyword3.DATA}}
-                         * {{remark.DATA}}
-                         *
-                         */
-                        DeviceInfo deviceInfo = deviceInfoService.getById(deviceId);
-                        String deviceName = deviceInfo.getDeviceName();
-                        if (StrUtil.isEmpty(deviceName)) {
-                            deviceName = deviceId + "";
-                        } else {
-                            deviceName = deviceName + "(" + deviceId + ")";
-                        }
-
                         //微信公众号
                         //扩展参数
                         MsgConfigTestDto.BizExtraParam bizExtraParam = new MsgConfigTestDto.BizExtraParam();