public Model.NKTemperatureCurveInfo getLastCurve(string devCode) { using (OracleConnection conn = new OracleConnection(OracleHelper.ConnectionStringOrderDistributedTransaction)) { String SQL = " SELECT DISTANCE,TEMPERATURE " + " FROM NK_GX_TEMPERATURE_CURVE " + " WHERE DEVID = :DEVCODE ORDER BY UPTIME"; OracleParameter[] oraParams = new OracleParameter[] { new OracleParameter(":DEVCODE", devCode), }; DataTable dt = OracleHelper.ExecuteDataset(conn, CommandType.Text, SQL, oraParams).Tables[0]; if (dt.Rows.Count > 0) { Model.NKTemperatureCurveInfo cu = new Model.NKTemperatureCurveInfo(); if (null != dt.Rows[0]["DISTANCE"]) { // return dt.Rows[0]["TYPENAME"].ToString(); cu.DISTANCE = dt.Rows[0]["DISTANCE"].ToString(); } if (null != dt.Rows[0]["TEMPERATURE"]) { // return dt.Rows[0]["TYPENAME"].ToString(); cu.TEMPERATURE = dt.Rows[0]["TEMPERATURE"].ToString(); } return(cu); } } return(null); }
public override void ExecuteCommand(GXSession session, StringRequestInfo requestInfo) { try { //TemperatureCurve:上传时间,设备ID,{间隔米数0 温度数据0},{间隔米数1 温度数据1}/r/n session.Logger.Info("诺可温度曲线采集开始!"); session.Logger.Info(requestInfo.Body); string[] body = requestInfo.Body.Split(','); Model.NKTemperatureCurveInfo temperatureCurve = new Model.NKTemperatureCurveInfo(); //设备ID temperatureCurve.DEVID = body[1]; //距离、温度值 if (body.Length > 2) { StringBuilder dsb = new StringBuilder(); StringBuilder tsb = new StringBuilder(); for (int i = 2; i < body.Length; i++) { string[] data = body[i].Split(' '); dsb.Append(data[0].Remove(0, 1)).Append(","); tsb.Append(data[1].Remove(data[1].Length - 1, 1)).Append(","); } temperatureCurve.DISTANCE = dsb.Remove(dsb.Length - 1, 1).ToString(); temperatureCurve.TEMPERATURE = tsb.Remove(tsb.Length - 1, 1).ToString(); } //采集时间 string sdate = body[0].Substring(0, 4) + "-" + body[0].Substring(4, 2) + "-" + body[0].Substring(6, 2) + " " + body[0].Substring(8, 2) + ":" + body[0].Substring(10, 2) + ":" + body[0].Substring(12, 2); temperatureCurve.UPTIME = Convert.ToDateTime(sdate); //上传时间 temperatureCurve.LOGTIME = DateTime.Now; new BLL.NKTemperatureCurve().insert(temperatureCurve); //温度报警规则 string devType = new BLL.Device().getDevTypeByCode(temperatureCurve.DEVID); new BLL.NKTemperatureCurve().saveAlarm(temperatureCurve.DISTANCE, temperatureCurve.TEMPERATURE, temperatureCurve.DEVID, (int)session.ID, devType); } catch (Exception e) { session.Logger.Error("诺可温度曲线数据采集失败!"); session.Logger.Error(requestInfo.Body); session.Logger.Error(e.ToString()); } }
public void saveAlarm(String disList, String tempList, String devCode, int devId, String devType) { string[] tempArray = tempList.Split(','); string[] disArray = disList.Split(','); // Model.NKTemperatureCurveInfo lastCurve = Model.NKTemperatureCurveInfo cu = this.getLastTempCurve(devCode); string[] lastDisArray = cu.DISTANCE.Split(','); string[] lastTempArray = cu.TEMPERATURE.Split(','); if (cu == null) { return; } for (int i = 0; i < tempArray.Length; i++) { string dis = disArray[i]; string temp = tempArray[i]; if (Math.Abs(float.Parse(temp) - float.Parse(lastTempArray[i])) > tempAlarm) { Model.AlarmRecordInfo alarmRecordInfo = new Model.AlarmRecordInfo(); alarmRecordInfo.ACTIVE = true; alarmRecordInfo.DEVICE_CODE = devCode; alarmRecordInfo.DEVICE_ID = devId; alarmRecordInfo.DEVICE_TYPE_NAME = devType; alarmRecordInfo.ITEMNAME = "温度:" + dis; //到时候根据这个ID号来取消 alarmRecordInfo.ITEMVALUE = dis + "," + temp; alarmRecordInfo.MESSAGE_STATUS = 0; alarmRecordInfo.RECORDCODE = ""; alarmRecordInfo.RECORDDATE = System.DateTime.Now; alarmRecordInfo.MESSAGE = "光纤温度超标"; alarmRecordInfo.RECORDCODE = ""; BLL.AlarmRecord nc = new BLL.AlarmRecord(); nc.saveGXPressAlarm(alarmRecordInfo); } } }