Newer
Older
sink / src / main / java / org / flume / alarm / manager / AlarmRuleManager.java
zhout on 2 Mar 2022 3 KB first commit
package org.flume.alarm.manager;


import org.flume.alarm.base.DeviceTypeEnum;
import org.flume.alarm.core.hibernate.HibernateEntityDao;
import org.flume.alarm.domain.AlarmRule;
import org.flume.alarm.domain.Device;
import org.flume.alarm.domain.SensorType;
import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service
public class AlarmRuleManager extends HibernateEntityDao<AlarmRule> {


    @Resource
    private SensorTypeManager sensorTypeManager;

    public Criteria getCriteria() {
        return getSession().createCriteria(AlarmRule.class);
    }


    public AlarmRule findRuleByDevAndSensor(String devCode, SensorType sensorType) {

        Criteria criteria = getCriteria();
        criteria.createAlias("device", "device");
        criteria.add(Restrictions.eq("device.devCode", devCode));
        criteria.add(Restrictions.eq("sensorType", sensorType));
        AlarmRule alarmRule = (AlarmRule) criteria.uniqueResult();
        return alarmRule;
    }

    public String getRuleStr(String devCode, String devTypeName) {
        String ruleStr = "";
        AlarmRule alarmRule = new AlarmRule();
        AlarmRule alarmRule2 = new AlarmRule();
        AlarmRule alarmRule3 = new AlarmRule();
        if (DeviceTypeEnum.Liquid.toString().equals(devTypeName)) {
            SensorType sensorType = sensorTypeManager.get("000034");
            alarmRule = findRuleByDevAndSensor(devCode, sensorType);
            if (null != alarmRule) {
                ruleStr = String.valueOf(alarmRule.getHighValue());
            }
        } else if (DeviceTypeEnum.Noise.toString().equals(devTypeName)) {
            SensorType sensorType = sensorTypeManager.get("000032");
            alarmRule = findRuleByDevAndSensor(devCode, sensorType);
            if (null != alarmRule) {
                ruleStr = String.valueOf(alarmRule.getHighValue());
            }
        } else if (DeviceTypeEnum.MultiLeak.toString().equals(devTypeName)) {
            SensorType sensorType = sensorTypeManager.get("000031");
            SensorType sensorType2 = sensorTypeManager.get("000032");
            SensorType sensorType3 = sensorTypeManager.get("000033");
            alarmRule = findRuleByDevAndSensor(devCode, sensorType);
            alarmRule2 = findRuleByDevAndSensor(devCode, sensorType2);
            alarmRule3 = findRuleByDevAndSensor(devCode, sensorType3);
            ruleStr += (null != alarmRule ? (String.valueOf(alarmRule.getHighValue()) + ",") : ",");
            ruleStr += (null != alarmRule2 ? (String.valueOf(alarmRule2.getHighValue()) + ",") : ",");
            ruleStr += (null != alarmRule3 ? (String.valueOf(alarmRule3.getHighValue()) +
                    "^"+String.valueOf(alarmRule.getLowValue())) : "");
        } else if (DeviceTypeEnum.Methane.toString().equals(devTypeName)) {
            ruleStr += "50,25";
        } else if (DeviceTypeEnum.WasteGas.toString().equals(devTypeName)) {
            ruleStr += "50,10,2,18:23";//CO,H2S,CH4,O2(18~23)
        }/* else if (devTypeName.indexOf("燃气泄漏形变光纤") > -1) {
            ruleStr += "突变范围:5℃以上";
        } else if (devTypeName.indexOf("形变光纤") > -1) {
            ruleStr = "200(Mpa)";
        } else if (devTypeName.indexOf("保温层下腐蚀速率监测仪") > -1) {
            ruleStr = "0.025(mm/y)";
        } else if (devTypeName.indexOf("保温层下腐蚀环境参数监测仪") > -1) {
            ruleStr = "内外温差值>40℃,电位≤-0.3V";
        } */
        return ruleStr;
    }

}