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);
        }
Ejemplo n.º 2
0
        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());
            }
        }
Ejemplo n.º 3
0
        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);
                }
            }
        }