rk
17 小时以前 269d0db0c285fa05ecc093b7d0579b3bd8057273
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);