From 269d0db0c285fa05ecc093b7d0579b3bd8057273 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期三, 10 十二月 2025 10:53:51 +0800
Subject: [PATCH] 处理设备消息推送

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java |  128 +++++++++++++++++++++++++++++++++++++++---
 1 files changed, 117 insertions(+), 11 deletions(-)

diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java
index a14b88a..29b9403 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java
@@ -64,6 +64,12 @@
     private WarningEventMapper warningEventMapper;
 
     @Autowired
+    private DeviceMapper deviceMapper;
+
+    @Autowired
+    private InterfaceLogMapper interfaceLogMapper;
+
+    @Autowired
     private MemberMapper memberMapper;
 
     @Autowired
@@ -698,27 +704,43 @@
                         warningPush.setMemberNames(StringUtils.join(memberList.stream().map(i->i.getName()).collect(Collectors.toList()),",")
                         );
                         //todo 鏆傛椂鍏抽棴 閽夐拤閫氱煡
-
-                        //            Boolean noticeFlag = dingTalk.workInfoOANotice(Long.valueOf(systemDictDataBiz.queryByCode(Constants.DD_TALK,Constants.AGENT_ID).getCode()),
-                        //                    StringUtils.join(memberList.stream().filter(i->StringUtils.isNotBlank(i.getDdId())).map(i->i.getDdId()).collect(Collectors.toList()),","),
-                        //                dingTalk.getAlarmNoticeMsg(warningPush.getRegion(),DateUtil.getCurrDateTime(),content));
-                        //            warningPush.setStatus(noticeFlag?Constants.ONE:Constants.TWO);
+                        if(Constants.equalsInteger(warningRule.getMemberNotice(),Constants.ONE)){
+                            //            Boolean noticeFlag = dingTalk.workInfoOANotice(Long.valueOf(systemDictDataBiz.queryByCode(Constants.DD_TALK,Constants.AGENT_ID).getCode()),
+                            //                    StringUtils.join(memberList.stream().filter(i->StringUtils.isNotBlank(i.getDdId())).map(i->i.getDdId()).collect(Collectors.toList()),","),
+                            //                      dingTalk.getAlarmNoticeMsg(warningPush.getRegion(),DateUtil.getCurrDateTime(),content));
+                            //            warningPush.setStatus(noticeFlag?Constants.ONE:Constants.TWO);
+                        }
                         warningPushMapper.insert(warningPush);
                         warningEvent.setStatus(Constants.ONE);
                         warningEventMapper.updateById(warningEvent);
+                        this.sendDeviceNotice(warningRule);
                     }catch (Exception e){
                         warningEvent.setStatus(Constants.TWO);
                         warningEventMapper.updateById(warningEvent);
                     }
-
                 }
+            }
+        }
+    }
 
+    public void sendDeviceNotice(WarningRule warningRule){
+        if(Constants.equalsInteger(warningRule.getDeviceNotice(),Constants.ONE)&&StringUtils.isNotBlank(warningRule.getDeviceIds())&&StringUtils.isNotBlank(warningRule.getDeviceNoticeContent())){
+            List<Device> deviceList = deviceMapper.selectList(new QueryWrapper<Device>()
+                    .lambda()
+                    .eq(Device::getStatus,Constants.ZERO)
+                    .eq(Device::getId,Arrays.asList(warningRule.getDeviceIds().split(",")))
+            );
+            if(CollectionUtils.isNotEmpty(deviceList)){
+                for (Device device:deviceList) {
+                    device.setSendInfo(warningRule.getDeviceNoticeContent());
+                    DeviceServiceImpl.sendBroadcaseBobaoHttpBiz(device,interfaceLogMapper);
+                }
             }
         }
     }
 
 
-    public List<Integer> processWarnFront(Constants.WarningConfig warningConfig){
+   /* public List<Integer> processWarnFront(Constants.WarningConfig warningConfig){
         List<WarningRuleDetail> warningRuleDetailList = warningRuleDetailMapper.selectJoinList(WarningRuleDetail.class,new MPJLambdaWrapper<WarningRuleDetail>()
                 .selectAll(WarningRuleDetail.class)
                 .leftJoin(Warning.class,Warning::getId,WarningRuleDetail::getWarningId)
@@ -737,6 +759,9 @@
             List<Integer> resultList = new ArrayList<>();
             for (Integer ruleId:ruleIdSet) {
                 WarningRule warningRule = warningRuleMapper.selectById(ruleId);
+                if(Constants.equalsInteger(warningRule.getMemberNotice(),Constants.ZERO)&&Constants.equalsInteger(warningRule.getDeviceNotice(),Constants.ZERO)){
+                    continue;
+                }
                 //鏌ヨ鍏朵粬瑙勫垯淇℃伅
                 List<WarningRuleDetail> warningRuleDetails = warningRuleDetailMapper.selectJoinList(WarningRuleDetail.class,new MPJLambdaWrapper<WarningRuleDetail>()
                         .selectAll(WarningRuleDetail.class)
@@ -787,6 +812,84 @@
             return resultList;
         }
         return new ArrayList<>();
+
+
+    }*/
+
+    public List<Integer> processWarnFront(Constants.WarningConfig warningConfig){
+
+        List<WarningRuleDetail> warningRuleDetailList = warningRuleDetailMapper.selectJoinList(WarningRuleDetail.class,new MPJLambdaWrapper<WarningRuleDetail>()
+                .selectAll(WarningRuleDetail.class)
+                .leftJoin(Warning.class,Warning::getId,WarningRuleDetail::getWarningId)
+                .eq(WarningRuleDetail::getIsdeleted,Constants.ZERO)
+                .eq(Warning::getIsdeleted,Constants.ZERO)
+                .eq(Warning::getStatus,Constants.ONE)
+                .eq(Warning::getCode,warningConfig.getKey())
+        );
+            if(CollectionUtils.isEmpty(warningRuleDetailList)){
+            return new ArrayList<>();
+        }
+        //鎵�鏈夋姤璀﹁鍒欓厤缃俊鎭�
+        List<Integer> ruleIdList = warningRuleDetailList.stream().map(i->i.getRuleId()).collect(Collectors.toList());;
+        Set<Integer> ruleIdSet = new HashSet<>(ruleIdList);
+            if(CollectionUtils.isNotEmpty(ruleIdSet)){
+            List<Integer> resultList = new ArrayList<>();
+            for (Integer ruleId:ruleIdSet) {
+                WarningRule warningRule = warningRuleMapper.selectById(ruleId);
+                //鏌ヨ鍏朵粬瑙勫垯淇℃伅
+                List<WarningRuleDetail> warningRuleDetails = warningRuleDetailMapper.selectJoinList(WarningRuleDetail.class,new MPJLambdaWrapper<WarningRuleDetail>()
+                        .selectAll(WarningRuleDetail.class)
+                        .selectAs(Warning::getCode,WarningRuleDetail::getCode)
+                        .leftJoin(Warning.class,Warning::getId,WarningRuleDetail::getWarningId)
+                        .eq(WarningRuleDetail::getIsdeleted,Constants.ZERO)
+                        .eq(Warning::getIsdeleted,Constants.ZERO)
+                        .eq(Warning::getStatus,Constants.ONE)
+                        .eq(WarningRuleDetail::getRuleId,ruleId)
+//                        .in(Warning::getCode,Constants.WarningConfig.ALARM_TEST.getKey(),
+//                                Constants.WarningConfig.GRID_TIME_OUT_INFO.getKey(),
+//                                Constants.WarningConfig.KEY_TIME_OUT_BACK.getKey()
+//                        )
+                );
+                //鏃犱换浣曡鍒� 鐩存帴璺宠繃
+                if(CollectionUtils.isEmpty(warningRuleDetails)){
+                    return resultList;
+                }else if(!Constants.equalsInteger(warningRuleDetails.stream().filter(i->!i.getCode().equals(warningConfig.getKey()+"")).collect(Collectors.toList()).size(),Constants.ZERO)){
+                    List<WarningRuleDetail> wList = warningRuleDetails.stream().filter(i->!i.getCode().equals(warningConfig.getKey()+"")).collect(Collectors.toList());
+                    //鑾峰彇鎵�鏈夊叾浠栨墍鏈変簨浠朵富閿俊鎭�
+                    List<Integer> warningIdList = wList.stream().map(i->i.getWarningId()).collect(Collectors.toList());
+                    Set<Integer> setWarningIdList = new HashSet<>(warningIdList);
+                    //鑾峰彇鏃堕棿鍐呮墍鏈変簨浠朵俊鎭�
+                    List<WarningEvent> warningEventList = warningEventMapper.selectList(new QueryWrapper<WarningEvent>().lambda()
+                            .eq(WarningEvent::getIsdeleted,Constants.ZERO)
+                            .in(WarningEvent::getWarningId,setWarningIdList)
+                            .apply(Objects.nonNull(warningRule.getIntervalSec())," DATE_ADD(CREATE_DATE , INTERVAL "+warningRule.getIntervalSec()+" SECOND) > now() ")
+                    );
+                    if(this.processWarnFlag(wList,warningEventList)){
+                        resultList.add(ruleId);
+                    };
+                }else{
+                    List<WarningRuleDetail> wList = warningRuleDetails.stream().filter(i->i.getCode().equals(warningConfig.getKey()+"")).collect(Collectors.toList());
+                    //鑾峰彇鏈浜嬩欢涓婚敭淇℃伅
+                    List<Integer> warningIdList = wList.stream().map(i->i.getWarningId()).collect(Collectors.toList());
+                    Set<Integer> setWarningIdList = new HashSet<>(warningIdList);
+                    if(Objects.isNull(warningRule.getIntervalSec())){
+                        resultList.add(ruleId);
+                    }else{
+                        //鑾峰彇鏃堕棿鍐呮墍鏈変簨浠朵俊鎭�
+                        List<WarningEvent> warningEventList = warningEventMapper.selectList(new QueryWrapper<WarningEvent>().lambda()
+                                .eq(WarningEvent::getIsdeleted,Constants.ZERO)
+                                .in(WarningEvent::getWarningId,setWarningIdList)
+                                .apply(Objects.nonNull(warningRule.getIntervalSec())," DATE_ADD(CREATE_DATE , INTERVAL "+warningRule.getIntervalSec()+" SECOND) > now() ")
+                        );
+                        if(this.processWarnFlag(wList,warningEventList)){
+                            resultList.add(ruleId);
+                        }
+                    }
+                }
+            }
+            return resultList;
+        }
+            return new ArrayList<>();
 
 
     }
@@ -907,13 +1010,16 @@
                     warningPush.setMemberNames(StringUtils.join(memberList.stream().map(i->i.getName()).collect(Collectors.toList()),",")
                     );
                     //todo 鏆傛椂鍏抽棴 閽夐拤閫氱煡
-        //            Boolean noticeFlag = dingTalk.workInfoOANotice(Long.valueOf(systemDictDataBiz.queryByCode(Constants.DD_TALK,Constants.AGENT_ID).getCode()),
-        //                    StringUtils.join(memberList.stream().filter(i->StringUtils.isNotBlank(i.getDdId())).map(i->i.getDdId()).collect(Collectors.toList()),","),
-        //                dingTalk.getAlarmNoticeMsg(warningPush.getRegion(),DateUtil.getCurrDateTime(),warningConfig.getInfo()));
-        //            warningPush.setStatus(noticeFlag?Constants.ONE:Constants.TWO);
+                    if(Constants.equalsInteger(warningRule.getMemberNotice(),Constants.ONE)){
+                        //            Boolean noticeFlag = dingTalk.workInfoOANotice(Long.valueOf(systemDictDataBiz.queryByCode(Constants.DD_TALK,Constants.AGENT_ID).getCode()),
+                        //                    StringUtils.join(memberList.stream().filter(i->StringUtils.isNotBlank(i.getDdId())).map(i->i.getDdId()).collect(Collectors.toList()),","),
+                        //                dingTalk.getAlarmNoticeMsg(warningPush.getRegion(),DateUtil.getCurrDateTime(),warningConfig.getInfo()));
+//                    warningPush.setStatus(noticeFlag?Constants.ONE:Constants.TWO);
+                    }
                     warningPushMapper.insert(warningPush);
                     warningEvent.setStatus(Constants.ONE);
                     warningEventMapper.updateById(warningEvent);
+                    this.sendDeviceNotice(warningRule);
                 }catch (Exception e){
                     warningEvent.setStatus(Constants.TWO);
                     warningEventMapper.updateById(warningEvent);

--
Gitblit v1.9.3