public float getLastData(SlNoiseInfo slNoiseInfo) { using (OracleConnection conn = new OracleConnection(OracleHelper.ConnectionStringOrderDistributedTransaction)) { String SQL = " SELECT DENSEDATA " + " FROM " + " (SELECT * " + " FROM AD_SL_NOISE " + " WHERE DEVCODE = :devCode " + " and UPTIME < :uptime " + " order by UPTIME desc) " + " where rownum=1 "; OracleParameter[] oraParams = new OracleParameter[] { new OracleParameter(":devCode",slNoiseInfo.SRCID), new OracleParameter(":uptime",slNoiseInfo.UPTIME) }; DataTable dt = OracleHelper.ExecuteDataset(conn,CommandType.Text,SQL,oraParams).Tables[0]; if (dt.Rows.Count > 0) { float lastData = float.Parse(dt.Rows[0]["DENSEDATA"].ToString()); return(lastData); } } return(-100); }
static void testZZSLNoise() { List <SensorHub.Model.SlNoiseInfo> djs = new List <SensorHub.Model.SlNoiseInfo>(); SlNoiseInfo slNoiseInfo = new SlNoiseInfo(); slNoiseInfo.CELL = "1.1"; slNoiseInfo.LOGTIME = System.DateTime.Now; slNoiseInfo.UPTIME = System.DateTime.Now; slNoiseInfo.SRCID = "212016090004"; slNoiseInfo.DSTID = "FFFF"; slNoiseInfo.DENSEDATA = "15"; SlNoiseInfo slNoiseInfo0 = new SlNoiseInfo(); slNoiseInfo0.CELL = "1.1"; slNoiseInfo0.LOGTIME = System.DateTime.Now; slNoiseInfo0.UPTIME = System.DateTime.Now; slNoiseInfo0.SRCID = "212016090004"; slNoiseInfo0.DSTID = "FFFF"; slNoiseInfo0.DENSEDATA = "7"; djs.Add(slNoiseInfo); djs.Add(slNoiseInfo0); new SensorHub.BLL.SlNoise().SaveZZAlarmInfo(djs); }
public AlarmRecordInfo getAlarmRecordByTime(AlarmRuleInfo alarmRuleInfo, SlNoiseInfo slNoiseInfo) { if (alarmRuleInfo != null) { string days = System.Configuration.ConfigurationSettings.AppSettings["SL_ALARM_DAYS"]; int num_days = Convert.ToInt32(days); float curValue = float.Parse(slNoiseInfo.DENSEDATA); if (alarmRuleInfo.HighValue != 0 && curValue > alarmRuleInfo.HighValue) { IDevice deviceDal = SensorHub.DALFactory.Device.Create(); AlarmRecordInfo alarmRecordInfo = new AlarmRecordInfo(); alarmRecordInfo.ACTIVE = true; alarmRecordInfo.DEVICE_CODE = slNoiseInfo.SRCID; alarmRecordInfo.DEVICE_ID = alarmRuleInfo.DeviceId; alarmRecordInfo.DEVICE_TYPE_NAME = deviceDal.getDevTypeByCode(slNoiseInfo.SRCID); alarmRecordInfo.ITEMNAME = "噪声值"; alarmRecordInfo.ITEMVALUE = curValue.ToString(); alarmRecordInfo.MESSAGE_STATUS = 0; alarmRecordInfo.RECORDCODE = ""; alarmRecordInfo.RECORDDATE = System.DateTime.Now; alarmRecordInfo.MESSAGE = "管线泄漏"; return(alarmRecordInfo); //TODO LIST:查询过去7天的报警记录 /* * DateTime endTime = slNoiseInfo.UPTIME; * DateTime startTime = endTime.AddDays(-num_days); * * ISlNoise slNoiseDal = SensorHub.DALFactory.SlNoise.Create(); * * int nums = slNoiseDal.getAlarmNumsByArrange(alarmRuleInfo.HighValue, * startTime, endTime, slNoiseInfo.SRCID); * if (nums == num_days) * { * IDevice deviceDal = SensorHub.DALFactory.Device.Create(); * * AlarmRecordInfo alarmRecordInfo = new AlarmRecordInfo(); * alarmRecordInfo.ACTIVE = true; * alarmRecordInfo.DEVICE_CODE = slNoiseInfo.SRCID; * alarmRecordInfo.DEVICE_ID = alarmRuleInfo.DeviceId; * alarmRecordInfo.DEVICE_TYPE_NAME = deviceDal.getDevTypeByCode(slNoiseInfo.SRCID); * alarmRecordInfo.ITEMNAME = "噪声值"; * alarmRecordInfo.ITEMVALUE = curValue.ToString(); * alarmRecordInfo.MESSAGE_STATUS = false; * alarmRecordInfo.RECORDCODE = ""; * alarmRecordInfo.RECORDDATE = System.DateTime.Now; * alarmRecordInfo.MESSAGE = "管线泄漏"; * return alarmRecordInfo; * } * */ } } return(null); }
static void testSlNoise() { List <SensorHub.Model.SlNoiseInfo> djs = new List <SensorHub.Model.SlNoiseInfo>(); SlNoiseInfo slNoiseInfo = new SlNoiseInfo(); slNoiseInfo.CELL = "1.1"; slNoiseInfo.LOGTIME = System.DateTime.Now; slNoiseInfo.UPTIME = System.DateTime.Now; slNoiseInfo.SRCID = "JS_S3_001"; slNoiseInfo.DSTID = "FFFF"; slNoiseInfo.DENSEDATA = "8"; djs.Add(slNoiseInfo); new SensorHub.BLL.SlNoise().saveAlarmInfo(djs); new SensorHub.BLL.SlNoise().updateDevStatus(djs); }
private AlarmRecordInfo getAlarmRecord(AlarmRuleInfo alarmRuleInfo, SlNoiseInfo slNoiseInfo) { if (null != alarmRuleInfo) { float curValue = float.Parse(slNoiseInfo.DENSEDATA); IDevice deviceDal = SensorHub.DALFactory.Device.Create(); ISlNoise slNoiseDal = SensorHub.DALFactory.SlNoise.Create(); AlarmRecordInfo alarmRecordInfo = new AlarmRecordInfo(); alarmRecordInfo.ACTIVE = true; alarmRecordInfo.DEVICE_CODE = slNoiseInfo.SRCID; alarmRecordInfo.DEVICE_ID = alarmRuleInfo.DeviceId; alarmRecordInfo.DEVICE_TYPE_NAME = deviceDal.getDevTypeByCode(slNoiseInfo.SRCID); alarmRecordInfo.ITEMNAME = "噪声值"; alarmRecordInfo.ITEMVALUE = curValue.ToString(); alarmRecordInfo.MESSAGE_STATUS = 0; alarmRecordInfo.RECORDCODE = ""; alarmRecordInfo.RECORDDATE = System.DateTime.Now; if (alarmRuleInfo.HighValue != 0 && curValue > alarmRuleInfo.HighValue) { alarmRecordInfo.MESSAGE = "管线泄漏"; return(alarmRecordInfo); } if (alarmRuleInfo.LowValue != 0 && curValue < alarmRuleInfo.LowValue) { alarmRecordInfo.MESSAGE = "噪声低于下限"; //return alarmRecordInfo; return(null); } if (alarmRuleInfo.Saltation != 0) { float lastData = slNoiseDal.getLastData(slNoiseInfo); if (-100 != lastData && Math.Abs(curValue - lastData) > alarmRuleInfo.Saltation) { alarmRecordInfo.MESSAGE = "噪声异常"; // return alarmRecordInfo; return(null); } } } return(null); }
//0000 0071 前四个字节暂时不用 public override void execute(Tag tag, String devCode, CellTag cellTag, SystemDateTag systemDateTag, CasicSession session) { //TODO LIST:解析流量数据保存流量数据 UploadTag noiseTag = tag as UploadTag; int itv = noiseTag.CollectInter; String collecTime = noiseTag.CollectTime; int len = noiseTag.Len; String dataValue = noiseTag.DataValue; session.Logger.Info("噪声数据上传TAG:oid:" + noiseTag.Oid + " 采集间隔: " + itv + "采集时间:" + collecTime + "上传数值:" + dataValue); int num = len / 4; //上传的流量数据个数,修改未2个字节//yxw修改为4个字节,加频率 List <Model.SlNoiseInfo> djs = new List <SlNoiseInfo>(); DateTime baseTime = Convert.ToDateTime(systemDateTag.CollectDate + " " + collecTime); for (int i = 0; i < num; i++) { // DjNoiseInfo noiseInfo = new DjNoiseInfo(); SlNoiseInfo slNoiseInfo = new SlNoiseInfo(); //TODO LIST:密集开始时间、密集间隔、密集样本数、无线开启时间、 //无线关闭时间、密集噪声、电池电量 slNoiseInfo.CELL = (cellTag == null ? "" : cellTag.Cell); slNoiseInfo.LOGTIME = DateTime.Now; slNoiseInfo.UPTIME = baseTime.AddMinutes(i * itv); slNoiseInfo.SRCID = devCode; slNoiseInfo.DSTID = "FFFF"; String dStr = dataValue.Substring(i * 8 + 0, 4); String frequency = dataValue.Substring(i * 8 + 4, 4); slNoiseInfo.DENSEDATA = int.Parse(dStr.Substring(0, 2) + dStr.Substring(2, 2), System.Globalization.NumberStyles.HexNumber).ToString(); slNoiseInfo.FREQUENCY = int.Parse(frequency.Substring(0, 2) + frequency.Substring(2, 2), System.Globalization.NumberStyles.HexNumber).ToString(); djs.Add(slNoiseInfo); } new BLL.SlNoise().insert(djs); new BLL.SlNoise().SaveZZAlarmInfo(djs); new BLL.SlNoise().updateDevStatus(devCode); session.Logger.Info("噪声数据保存成功"); }
/// <summary> /// An internal function to bind values parameters for insert /// </summary> /// <param name="parms">Database parameters</param> /// <param name="noise">Values to bind to parameters</param> private void SetAdapterParameters(OracleParameter[] parms, SlNoiseInfo noise) { parms[0].Value = noise.SRCID; parms[1].Value = noise.DSTID; if (null != noise.DENSEDATA) { parms[2].Value = noise.DENSEDATA; } else { parms[2].Value = DBNull.Value; } if (null != noise.CELL) { parms[3].Value = noise.CELL; } else { parms[3].Value = DBNull.Value; } if (null != noise.SIGNAL) { parms[4].Value = noise.SIGNAL; } else { parms[4].Value = DBNull.Value; } if (null != noise.STATUS) { parms[5].Value = noise.STATUS; } else { parms[5].Value = DBNull.Value; } if (null != noise.UPTIME) { parms[6].Value = noise.UPTIME; } else { parms[6].Value = DBNull.Value; } if (null != noise.LOGTIME) { parms[7].Value = noise.LOGTIME; } else { parms[7].Value = DBNull.Value; } if (null != noise.FREQUENCY) { parms[8].Value = noise.FREQUENCY; } else { parms[8].Value = DBNull.Value; } }
public override void ExecuteCommand(SZSLNoiseSession session, StringRequestInfo requestInfo) { try { string[] data = requestInfo.Body.Split(','); if (string.IsNullOrEmpty(session.MacID)) { session.MacID = data[4]; } string cfg = data[6]; string ddata = data[10]; //密集样本数 int count = Int32.Parse(cfg.Substring(6, 2), System.Globalization.NumberStyles.HexNumber); //密集间隔 int interval = Int16.Parse(cfg.Substring(4, 2), System.Globalization.NumberStyles.HexNumber); string year = (Int32.Parse(data[7].Substring(8, 2), System.Globalization.NumberStyles.HexNumber) + 2000).ToString(); string mon = Int32.Parse(data[7].Substring(6, 2), System.Globalization.NumberStyles.HexNumber).ToString(); string day = Int32.Parse(data[7].Substring(4, 2), System.Globalization.NumberStyles.HexNumber).ToString(); string time = Utility.CodeUtils.String2Byte(cfg.Substring(0, 2)) + ":" + Utility.CodeUtils.String2Byte(cfg.Substring(2, 2)) + ":00"; DateTime upTime = Convert.ToDateTime(year + "-" + mon + "-" + day + " " + time); List <Model.SlNoiseInfo> djs = new List <SlNoiseInfo>(); for (int i = 0; i < count; i++) { Model.SlNoiseInfo dj = new SlNoiseInfo(); //源ID dj.SRCID = data[4]; //目标ID dj.DSTID = data[5]; //密集噪声 string dStr = ddata.Substring(i * 4, 4); dj.DENSEDATA = int.Parse(dStr.Substring(2, 2) + dStr.Substring(0, 2), System.Globalization.NumberStyles.HexNumber).ToString(); //电池电量 dj.CELL = Int16.Parse(data[9], System.Globalization.NumberStyles.HexNumber).ToString(); //采集时间 dj.UPTIME = upTime; //记录时间 dj.LOGTIME = DateTime.Now; djs.Add(dj); upTime = upTime.AddMinutes(interval); } new BLL.SlNoise().insert(djs); new BLL.SlNoise().saveAlarmInfo(djs); new BLL.SlNoise().updateDevStatus(data[4]); session.Logger.Info("渗漏预警仪:渗漏噪声数据已经保存!"); } catch (Exception e) { session.Logger.Error("渗漏预警仪:渗漏噪声数据保存失败:" + e.ToString()); } }
public float getLastData(SlNoiseInfo slNoiseInfo) { return(SensorHub.DALFactory.SlNoise.Create().getLastData(slNoiseInfo)); }