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; } }