java告警处理插入忽略上下限

处理上下限插入更小的

    @Override
    public int handleDealAlerm(FunAlerm funAlerm) {
        AlermHandleHistory handleRecord = new AlermHandleHistory();
        handleRecord.setAlermId(funAlerm.getId());
        handleRecord.setIgnoreTime(funAlerm.getIgnoreTime());
        handleRecord.setContent(funAlerm.getDealDescription());
        handleRecord.setCreateTime(new Date());

        Long deviceparamId = funAlerm.getDeviceparamId();
        if(ObjectUtils.isEmpty(deviceparamId)){
            //厂掉线告警
            handleRecord.setIgnoreLimit(new BigDecimal(Double.MAX_VALUE));
            handleRecord.setIgnoreType(1);
        }
        else{
            handleRecord.setIgnoreLimit(new BigDecimal(funAlerm.getIgnoreLimit()));
            //获取参数不同告警级别的上下限
            //需要判断是数值型还是状态型参数
            //数值型告警需要判断设置的是上限还是下限忽略值
            List<SysDeviceParamLimit> sysDeviceParamLimits = deviceParamLimitMapper.selectByDeviceParamId(deviceparamId);
            //没有设置过上下限,直接以当前设置的忽略值和时长为准,直接保存;如果有设置过上下限,则判断上面的内容
            if(sysDeviceParamLimits != null &&sysDeviceParamLimits.size() > 0){
                SysDeviceParamLimit paramLimit = sysDeviceParamLimits.get(0);
                if(paramLimit.getLowLimit() == paramLimit.getUpLimit() &&
                        (paramLimit.getUpLimit() == 0 || paramLimit.getUpLimit() == 1)){
                    //这是状态性告警

                }
                else{
                    //这是数值型告警
                    Float value;
                    Set<Float> upLimitList = new HashSet<>();
                    Set<Float> lowLimitList = new HashSet<>();
                    for (SysDeviceParamLimit limit: sysDeviceParamLimits) {
                        value = limit.getUpLimit();
                        if(value != null){
                            upLimitList.add(value);
                        }
                        value = limit.getLowLimit();
                        if(value != null){
                            lowLimitList.add(value);
                        }
                    }
                    Double ignoreLimit = funAlerm.getIgnoreLimit();
                    double upMin = Collections.min(upLimitList);
                    double lowMax = Collections.min(lowLimitList);
                    if(upLimitList.size() > 0 && ignoreLimit > upMin){
                        //大于上限的最小值
                        handleRecord.setIgnoreType(1);
                    }
                    else if(lowLimitList.size() > 0 && ignoreLimit < lowMax){
                        //小于下限的最大值
                        handleRecord.setIgnoreType(0);
                    }
                    else{
                        //设置的值不符合要求,返回
                        return -1;
                    }
                }
            }
        }
        alermHandleHistoryMapper.insertAlermHandleHistory(handleRecord);

        funAlerm.setStatus(3L);
        return funAlermMapper.updateFunAlerm(funAlerm);
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值