Ejemplo n.º 1
0
 public void updateStatus(Model.AlarmRecordInfo alarm)
 {
     try
     {
         if (alarm.DEVICE_CODE == null)
         {
             throw new Exception(alarm.ITEMNAME + ":设备编号为空!");
         }
         OracleParameter[] parms = new OracleParameter[] {
             new OracleParameter(":DEVICE_CODE", alarm.DEVICE_CODE),
         };
         string SQL = " UPDATE ALARM_ALARM_RECORD "
                      + " SET "
                      + " ACTIVE = " + 0
                      + " where "
                      + " DEVICE_CODE = :DEVICE_CODE ";
         string strCnn = OracleHelper.ConnectionStringOrderDistributedTransaction;
         using (OracleConnection cnn = new OracleConnection(strCnn))
         {
             OracleHelper.ExecuteNonQuery(cnn, CommandType.Text, SQL, parms);
         }
     }
     catch (Exception e)
     {
         throw e;
     }
 }
Ejemplo n.º 2
0
        public override void ExecuteCommand(ALSession session, StringRequestInfo requestInfo)
        {
            try
            {
                session.Logger.Info("给水管线数据突变报警:" + requestInfo.Body);

                string[] body = requestInfo.Body.Split(',');
                List <Model.AlarmRecordInfo> alarms = new List <Model.AlarmRecordInfo>();

                for (int i = 1; i < body.Length; i++)
                {
                    string[] data  = body[i].Split(' ');
                    string   regId = data[0].Substring(1, data[0].Length - 1);
                    string   devId = data[1];
                    string   type  = data[2];
                    //  string value = data[3].Substring(0, data[3].Length - 1);

                    Model.AlarmRecordInfo alarm = new Model.AlarmRecordInfo();
                    alarm.DEVICE_ID   = Convert.ToInt32(new BLL.Device().getDeviceIdByCode(devId));
                    alarm.DEVICE_CODE = devId;
                    //  alarm.ITEMVALUE = value;

                    switch (type)
                    {
                    case "pressure":
                        alarm.RECORDCODE = "AD_DJ_SALTAION_ALARM_PRESSURE" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss_fff");
                        //alarm.MESSAGE = "給水管线压力数据突变:【分区ID," + regId + "】,【设备ID," + devId + "】";
                        alarm.MESSAGE = "压力突变";
                        break;

                    case "flow":
                        alarm.RECORDCODE = "AD_DJ_SALTAION_ALARM_FLOW" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss_fff");
                        alarm.MESSAGE    = "流量突变";
                        // alarm.MESSAGE = "給水管线流量数据突变:【分区ID," + regId + "】,【设备ID," + devId + "】";
                        break;

                    case "noise":
                        alarm.RECORDCODE = "AD_DJ_SALTAION_ALARM_NOISE" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss_fff");
                        alarm.MESSAGE    = "噪声突变";
                        //   alarm.MESSAGE = "給水管线噪声数据突变:【分区ID," + regId + "】,【设备ID," + devId + "】";
                        break;

                    case "liquid":
                        alarm.RECORDCODE = "AD_DJ_SALTAION_ALARM_LIQUID" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss_fff");
                        //  alarm.MESSAGE = "給水管线液位数据突变:【分区ID," + regId + "】,【设备ID," + devId + "】";
                        alarm.MESSAGE = "液位突变";
                        break;
                    }
                    alarm.RECORDDATE     = StringUtil.toDateTime(body[0]);
                    alarm.MESSAGE_STATUS = 0;
                    alarm.ACTIVE         = true;
                    alarms.Add(alarm);
                }
                new BLL.AlarmRecord().insert(alarms);
            }
            catch (Exception e)
            {
                session.Logger.Error("给水数据突变报警异常:" + requestInfo.Body + " (异常信息:" + e.ToString() + ")");
            }
        }
Ejemplo n.º 3
0
        public void saveAlarm(String disList, String pressList, String devCode,
                              int devId, String devType)
        {
            string[] pressArray = pressList.Split(',');
            string[] disArray   = disList.Split(',');

            for (int i = 0; i < pressArray.Length; i++)
            {
                if (float.Parse(pressArray[i]) > pressAlarm)
                {
                    string dis   = disArray[i];
                    string press = pressArray[i];

                    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 + "," + press;
                    alarmRecordInfo.MESSAGE_STATUS   = 0;
                    alarmRecordInfo.RECORDCODE       = "";
                    alarmRecordInfo.RECORDDATE       = System.DateTime.Now;
                    alarmRecordInfo.MESSAGE          = "光纤压力超标";
                    BLL.AlarmRecord nc = new BLL.AlarmRecord();
                    nc.saveGXPressAlarm(alarmRecordInfo);
                }
            }
        }
Ejemplo n.º 4
0
        //保存压力温度光纤报警记录
        //先查询联合查询设备ID、ItemValue是否有报警记录,有的话清楚再保存
        public void saveGXAlarm(Model.AlarmRecordInfo alarm)
        {
            try
            {
                if (alarm.DEVICE_CODE == null)
                {
                    throw new Exception(alarm.ITEMNAME + ":设备编号为空!");
                }
                OracleParameter[] parms = new OracleParameter[] {
                    new OracleParameter(":DEVICE_CODE", alarm.DEVICE_CODE),
                    new OracleParameter(":ITEMNAME", alarm.ITEMNAME)
                };
                string SQL = " UPDATE ALARM_ALARM_RECORD "
                             + " SET "
                             + " ACTIVE = " + 0
                             + " where "
                             + " DEVICE_CODE = :DEVICE_CODE AND "
                             + " ITEMNAME = :ITEMNAME";
                string strCnn = OracleHelper.ConnectionStringOrderDistributedTransaction;
                using (OracleConnection cnn = new OracleConnection(strCnn))
                {
                    OracleHelper.ExecuteNonQuery(cnn, CommandType.Text, SQL, parms);

                    //保存新的报警记录
                    OracleParameter[] parms0 = GetAdapterParameters();
                    SetAdapterParameters(parms0, alarm);
                    OracleHelper.ExecuteNonQuery(cnn, CommandType.Text, SQL_INSERT_ALARM_RECORD, parms0);
                }
            }
            catch (Exception e)
            {
                throw e;
            }
        }
        public override void ExecuteCommand(GXSession session, StringRequestInfo requestInfo)
        {
            try
            {
                //VibratingPosition:上传时间,设备ID,{间隔米数 振动数据}/r/n
                session.Logger.Info("震动曲线开始:\n" + requestInfo.Body);
                string[] body = requestInfo.Body.Split(',');
                Model.AlarmRecordInfo alarm = new Model.AlarmRecordInfo();

                //报警记录编号
                alarm.RECORDCODE = "NK_GX_VIB_POS_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss_fff");

                //报警信息
                //string msg = "管线开挖报警:@devId:@val:@time";
                // msg = msg.Replace("@time", body[0]);
                // msg = msg.Replace("@devId", body[1]);
                // msg = msg.Replace("@val", body[2]);
                //alarm.MESSAGE = msg;
                alarm.MESSAGE = "管线开挖报警";

                //报警项目名称
                alarm.ITEMNAME = "光纤震动报警";

                //报警项目值
                string[] vals = body[2].Split(' ');
                alarm.ITEMVALUE = vals[0].Replace("{", "") + "," + vals[1].Replace("}", "");

                //报警设备ID
                alarm.DEVICE_ID = (int)session.ID;

                //报警记录日期
                //转换bt[1] 20131212101010 bug fix by predator
                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);
                alarm.RECORDDATE = Convert.ToDateTime(sdate);

                //报警记录消息是否发送
                alarm.MESSAGE_STATUS = 0;

                //报警记录是否被处理
                alarm.ACTIVE = true;

                alarm.DEVICE_CODE      = body[1];
                alarm.DEVICE_TYPE_NAME = "光纤";

                List <Model.AlarmRecordInfo> list = new List <Model.AlarmRecordInfo>();
                list.Add(alarm);
                new BLL.AlarmRecord().insert(list);
            }
            catch (Exception e)
            {
                session.Logger.Error("振动定位数据采集失败!\n" + e.ToString());
            }
        }
Ejemplo n.º 6
0
        public void saveAlarm(Model.AlarmRecordInfo alarm)
        {
            //set messageStatus = -1 where messageStatus=0 and message = 1
            List <int> messageList = new List <int>();

            messageList.Add((int)WellAlarmEnum.WELL_OPEN);
            new BLL.AlarmRecord().deleteByMessage(alarm.DEVICE_CODE, messageList);

            //add alarmRecord which messageStatus = 0 and message=1
            new BLL.AlarmRecord().save(alarm);
        }
Ejemplo n.º 7
0
        public void saveDeviceStatus(String devCode, WellAlarmEnum wellAlarmEnum)
        {
            Model.AlarmRecordInfo alarm = new Model.AlarmRecordInfo();
            alarm.DEVICE_ID        = Convert.ToInt32(new BLL.Device().getDeviceIdByCode(devCode));
            alarm.DEVICE_CODE      = devCode;
            alarm.MESSAGE          = (int)wellAlarmEnum + "";
            alarm.RECORDDATE       = System.DateTime.Now;
            alarm.MESSAGE_STATUS   = 0;
            alarm.ACTIVE           = true;
            alarm.DEVICE_TYPE_NAME = TypeName;

            new BLL.AlarmRecord().save(alarm);
        }
Ejemplo n.º 8
0
        public override void ExecuteCommand(RHRQSession session, StringRequestInfo requestInfo)
        {
            try
            {
                string[] bt = requestInfo.Body.Split(',');

                session.Logger.Info("RHRQ:" + requestInfo.Body);
                string stime = bt[0];
                string sdate = stime.Substring(0, 4) + "-" + stime.Substring(4, 2) + "-" + stime.Substring(6, 2)
                               + " " + stime.Substring(8, 2) + ":" + stime.Substring(10, 2) + ":" + stime.Substring(12, 2);
                DateTime upTime = Convert.ToDateTime(sdate);

                string   devIds = bt[1];
                string[] devs   = (devIds.Replace("{", "").Replace("}", "")).Split(',');
                List <Model.AlarmRecordInfo> list = new List <Model.AlarmRecordInfo>();
                foreach (string dev in devs)
                {
                    Model.AlarmRecordInfo alarm = new Model.AlarmRecordInfo();
                    alarm.MESSAGE = "入户燃气泄漏";

                    //报警记录消息是否发送
                    alarm.MESSAGE_STATUS = 0;

                    //报警记录是否被处理
                    alarm.ACTIVE           = true;
                    alarm.DEVICE_CODE      = dev;
                    alarm.DEVICE_TYPE_NAME = "入户燃气报警器";

                    object obj = new BLL.Device().getDeviceIdByCode(dev);
                    //报警设备ID
                    alarm.DEVICE_ID  = Convert.ToInt32(obj);
                    alarm.RECORDDATE = upTime;

                    list.Add(alarm);
                }
                new BLL.AlarmRecord().insert(list);
            }
            catch (Exception e)
            {
                session.Logger.Error("入户燃气报警接收处理异常!");
                session.Logger.Error(requestInfo.Body);
                session.Logger.Error(e.ToString());
            }
        }
Ejemplo n.º 9
0
 private void saveWellAlarm(String devCode, CasicSession session)
 {
     try
     {
         List <Model.AlarmRecordInfo> alarms = new List <Model.AlarmRecordInfo>();
         Model.AlarmRecordInfo        alarm  = new Model.AlarmRecordInfo();
         alarm.DEVICE_ID        = Convert.ToInt32(new BLL.Device().getDeviceIdByCode(devCode));
         alarm.DEVICE_CODE      = devCode;
         alarm.MESSAGE          = (int)WellAlarmEnum.WELL_OPEN + "";
         alarm.RECORDDATE       = System.DateTime.Now;
         alarm.MESSAGE_STATUS   = 0;
         alarm.ACTIVE           = true;
         alarm.DEVICE_TYPE_NAME = "井盖状态监测仪";
         alarms.Add(alarm);
         new BLL.WellInfo().saveAlarm(alarm);
     }
     catch (Exception e)
     {
         session.Logger.Error("井盖传感器报警插入出错:请检查该设备是否已注册:" + devCode);
     }
 }
Ejemplo n.º 10
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);
                }
            }
        }
Ejemplo n.º 11
0
        public override void ExecuteCommand(RQSession session, BinaryRequestInfo requestInfo)
        {
            try
            {
                //F1-50-11-19-19-23-01-10-00-2D-00-10-20-14-09-17-15-56-36-00-
                //00-42-3C-F5-C3-40-18-80-00-43-6F-00-00-00-00-00-00-00-00-67-27-
                //41-72-00-02-11-6C
                byte[] body = requestInfo.Body;

                session.Logger.Info("接收到燃气报警数据上!" + BitConverter.ToString(body, 0, body.Length));

                byte[] sim = new byte[6];

                Buffer.BlockCopy(body, 0, sim, 0, 6);

                if (string.IsNullOrEmpty(session.MacID))
                {
                    session.MacID = BitConverter.ToString(sim).Replace("-", "").Substring(1);
                }

                //获取设备ID
                string devId = session.MacID;

                //将采集上的数据保存到数据库
                byte[] record   = new byte[30];
                byte[] dateTime = new byte[6];

                //获取报警记录信息
                Buffer.BlockCopy(body, 13, record, 0, body.Length - 17);

                //获取报警记录时间
                Buffer.BlockCopy(record, 0, dateTime, 0, 6);

                string   timeStr = BitConverter.ToString(dateTime).Replace("-", "");
                string   msg     = "燃气设备警告:@devid:@itemname:@itemvalue:@time";
                DateTime date    = Convert.ToDateTime("20" + timeStr.Substring(0, 2)
                                                      + "-" + timeStr.Substring(2, 2)
                                                      + "-" + timeStr.Substring(4, 2)
                                                      + " " + timeStr.Substring(6, 2)
                                                      + ":" + timeStr.Substring(8, 2)
                                                      + ":" + timeStr.Substring(10, 2));
                string inPress     = BitConverter.ToSingle(new byte[] { record[7], record[6], record[9], record[8] }, 0).ToString();
                string outPress    = BitConverter.ToSingle(new byte[] { record[11], record[10], record[13], record[12] }, 0).ToString();
                string flow        = BitConverter.ToSingle(new byte[] { record[15], record[14], record[17], record[16] }, 0).ToString();
                string strength    = BitConverter.ToSingle(new byte[] { record[19], record[18], record[21], record[20] }, 0).ToString();
                string temperature = BitConverter.ToSingle(new byte[] { record[23], record[22], record[25], record[24] }, 0).ToString();
                string cell        = BitConverter.ToSingle(new byte[] { record[27], record[26], record[29], record[28] }, 0).ToString();

                List <Model.AlarmRecordInfo> alarms = new List <Model.AlarmRecordInfo>();
                if (float.Parse(inPress) != 0)
                {
                    Model.AlarmRecordInfo alarm = new Model.AlarmRecordInfo();
                    alarm.RECORDCODE = "ALARM_XT_INPRESS_" + devId + "_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss_fff");
                    //alarm.MESSAGE = msg.Replace("@devid", devId).Replace("@itemname", "燃气进站压力")
                    // .Replace("@itemvalue", inPress).Replace("@time", date.ToString());

                    alarm.ITEMNAME         = "进站压力超限";
                    alarm.MESSAGE          = alarm.ITEMNAME;
                    alarm.ITEMVALUE        = inPress;
                    alarm.DEVICE_ID        = (int)session.ID;
                    alarm.RECORDDATE       = DateTime.Now;
                    alarm.MESSAGE_STATUS   = 0;
                    alarm.ACTIVE           = true;
                    alarm.DEVICE_CODE      = session.MacID;
                    alarm.DEVICE_TYPE_NAME = "燃气智能监测终端";
                    alarms.Add(alarm);

                    //增加进站压力超限设备运行日志thc20150610
                    Model.DeviceLogInfo log = new Model.DeviceLogInfo();
                    log.DEVICE_ID   = session.ID;
                    log.MESSAGE     = "燃气进站压力超限报警!";
                    log.OPERATETYPE = "报警数据上报";
                    log.LOGTIME     = DateTime.Now;
                    new BLL.DeviceLog().insert(log);
                }
                if (float.Parse(outPress) != 0)
                {
                    Model.AlarmRecordInfo alarm = new Model.AlarmRecordInfo();
                    alarm.RECORDCODE = "ALARM_XT_OUTPRESS_" + devId + "_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss_fff");
                    // alarm.MESSAGE = msg.Replace("@devid", devId).Replace("@itemname", "燃气出站压力")
                    //     .Replace("@itemvalue", outPress).Replace("@time", date.ToString());
                    alarm.ITEMNAME         = "出站压力超限";
                    alarm.MESSAGE          = alarm.ITEMNAME;
                    alarm.ITEMVALUE        = outPress;
                    alarm.DEVICE_ID        = (int)session.ID;
                    alarm.RECORDDATE       = DateTime.Now;
                    alarm.MESSAGE_STATUS   = 0;
                    alarm.ACTIVE           = true;
                    alarm.DEVICE_CODE      = session.MacID;
                    alarm.DEVICE_TYPE_NAME = "燃气智能监测终端";
                    alarms.Add(alarm);

                    //增加出站压力超限设备运行日志thc20150610
                    Model.DeviceLogInfo log = new Model.DeviceLogInfo();
                    log.DEVICE_ID   = session.ID;
                    log.MESSAGE     = "燃气出站压力超限报警!";
                    log.OPERATETYPE = "报警数据上报";
                    log.LOGTIME     = DateTime.Now;
                    new BLL.DeviceLog().insert(log);
                }
                if (float.Parse(flow) != 0)
                {
                    Model.AlarmRecordInfo alarm = new Model.AlarmRecordInfo();
                    alarm.RECORDCODE = "ALARM_XT_FLOW_" + devId + "_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss_fff");
                    //   alarm.MESSAGE = msg.Replace("@devid", devId).Replace("@itemname", "燃气流量")
                    //       .Replace("@itemvalue", flow).Replace("@time", date.ToString());
                    alarm.ITEMNAME         = "流量超限";
                    alarm.MESSAGE          = alarm.ITEMNAME;
                    alarm.ITEMVALUE        = flow;
                    alarm.DEVICE_ID        = (int)session.ID;
                    alarm.RECORDDATE       = DateTime.Now;
                    alarm.MESSAGE_STATUS   = 0;
                    alarm.ACTIVE           = true;
                    alarm.DEVICE_CODE      = session.MacID;
                    alarm.DEVICE_TYPE_NAME = "燃气智能监测终端";
                    alarms.Add(alarm);

                    //增加流量超限设备运行日志thc20150610
                    Model.DeviceLogInfo log = new Model.DeviceLogInfo();
                    log.DEVICE_ID   = session.ID;
                    log.MESSAGE     = "燃气流量超限报警!";
                    log.OPERATETYPE = "报警数据上报";
                    log.LOGTIME     = DateTime.Now;
                    new BLL.DeviceLog().insert(log);
                }
                if (float.Parse(strength) != 0)
                {
                    Model.AlarmRecordInfo alarm = new Model.AlarmRecordInfo();
                    alarm.RECORDCODE = "ALARM_XT_STRENGTH_" + devId + "_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss_fff");
                    // alarm.MESSAGE = msg.Replace("@devid", devId).Replace("@itemname", "燃气浓度")
                    //      .Replace("@itemvalue", strength).Replace("@time", date.ToString());
                    alarm.ITEMNAME         = "浓度超限";
                    alarm.MESSAGE          = alarm.ITEMNAME;
                    alarm.ITEMVALUE        = strength;
                    alarm.DEVICE_ID        = (int)session.ID;
                    alarm.RECORDDATE       = DateTime.Now;
                    alarm.MESSAGE_STATUS   = 0;
                    alarm.ACTIVE           = true;
                    alarm.DEVICE_CODE      = session.MacID;
                    alarm.DEVICE_TYPE_NAME = "燃气智能监测终端";
                    alarms.Add(alarm);

                    //增加浓度超限设备运行日志thc20150610
                    Model.DeviceLogInfo log = new Model.DeviceLogInfo();
                    log.DEVICE_ID   = session.ID;
                    log.MESSAGE     = "燃气浓度超限报警!";
                    log.OPERATETYPE = "报警数据上报";
                    log.LOGTIME     = DateTime.Now;
                    new BLL.DeviceLog().insert(log);
                }
                if (float.Parse(temperature) != 0)
                {
                    Model.AlarmRecordInfo alarm = new Model.AlarmRecordInfo();
                    alarm.RECORDCODE = "ALARM_XT_TEMPERATURE_" + devId + "_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss_fff");
                    // alarm.MESSAGE = msg.Replace("@devid", devId).Replace("@itemname", "燃气温度")
                    //     .Replace("@itemvalue", temperature).Replace("@time", date.ToString());
                    alarm.ITEMNAME         = "温度超限";
                    alarm.MESSAGE          = alarm.ITEMNAME;
                    alarm.ITEMVALUE        = temperature;
                    alarm.DEVICE_ID        = (int)session.ID;
                    alarm.RECORDDATE       = DateTime.Now;
                    alarm.MESSAGE_STATUS   = 0;
                    alarm.ACTIVE           = true;
                    alarm.DEVICE_CODE      = session.MacID;
                    alarm.DEVICE_TYPE_NAME = "燃气智能监测终端";
                    alarms.Add(alarm);

                    //增加温度超限设备运行日志thc20150610
                    Model.DeviceLogInfo log = new Model.DeviceLogInfo();
                    log.DEVICE_ID   = session.ID;
                    log.MESSAGE     = "燃气温度超限报警!";
                    log.OPERATETYPE = "报警数据上报";
                    log.LOGTIME     = DateTime.Now;
                    new BLL.DeviceLog().insert(log);
                }
                if (float.Parse(cell) != 0)
                {
                    Model.AlarmRecordInfo alarm = new Model.AlarmRecordInfo();
                    alarm.RECORDCODE = "ALARM_XT_CELL_" + devId + "_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss_fff");
                    //  alarm.MESSAGE = msg.Replace("@devid", devId).Replace("@itemname", "电池电量")
                    //      .Replace("@itemvalue", cell).Replace("@time", date.ToString());
                    alarm.ITEMNAME         = "电量超限";
                    alarm.MESSAGE          = alarm.ITEMNAME;
                    alarm.ITEMVALUE        = cell;
                    alarm.DEVICE_ID        = (int)session.ID;
                    alarm.RECORDDATE       = DateTime.Now;
                    alarm.MESSAGE_STATUS   = 0;
                    alarm.ACTIVE           = true;
                    alarm.DEVICE_CODE      = session.MacID;
                    alarm.DEVICE_TYPE_NAME = "燃气智能监测终端";
                    alarms.Add(alarm);
                }

                new BLL.AlarmRecord().insert(alarms);

                //发送反馈信息
                byte[] first      = { 0x7B, 0x89, 0x00, 0x11, 0x00, 0x0E };
                byte[] second     = { 0x01, 0x10, 0x00, 0x2D, 0x00, 0x10 };
                byte[] modBusData = new byte[first.Length + sim.Length + second.Length];
                first.CopyTo(modBusData, 0);
                sim.CopyTo(modBusData, first.Length);
                second.CopyTo(modBusData, first.Length + sim.Length);

                byte[] crcData = Utility.CodeUtils.getCrcByModBusData(modBusData);
                byte[] resp    = new byte[modBusData.Length + crcData.Length];
                modBusData.CopyTo(resp, 0);
                crcData.CopyTo(resp, modBusData.Length);
                session.Send(resp, 0, resp.Length);
                session.Logger.Info("报警主动上报已确认!" + BitConverter.ToString(body, 0, body.Length));
            }
            catch (Exception e)
            {
                session.Logger.Error("燃气报警数据上传处理异常" + e.ToString());
            }
        }
        public override void ExecuteCommand(BYSession session, StringRequestInfo requestInfo)
        {
            try
            {
                //AlarmRpt:系统标示,命令字、设备ID,报警ID,报警状态,报警个数,报警位置|报警值#报警位置|报警值,报警时间/r/n
                session.Logger.Info("震动曲线开始:\n" + requestInfo.Body);
                string[] body        = requestInfo.Body.Split(',');
                string   alarmID     = body[3];
                string   systemID    = body[0];
                string   commandId   = body[1];
                string[] locations   = body[6].Split('#');
                string   strDate     = body[7];
                string   alarmStatus = body[4];
                string   devCode     = body[2];
                object   obj         = new BLL.Device().getDeviceIdByCode(devCode);
                if (obj == null)
                {
                    session.Logger.Info("光纤编号 " + devCode + ":未注册:\n");
                    return;
                }

                int    devId   = Convert.ToInt32(obj);
                string devType = new BLL.Device().getDevTypeByDevId(devId);
                if (devType == null)
                {
                    session.Logger.Info("设备类型表中,无该类型");
                    return;
                }

                List <Model.AlarmRecordInfo> list = new List <Model.AlarmRecordInfo>();
                foreach (string loc in locations)
                {
                    Model.AlarmRecordInfo alarm = new Model.AlarmRecordInfo();

                    if (alarmStatus == "1")
                    {
                        //开挖报警
                        alarm.MESSAGE  = "管线开挖报警";
                        alarm.ITEMNAME = "开挖报警";
                    }
                    else if (alarmStatus == "-99")
                    {
                        //断纤报警
                        alarm.MESSAGE  = "断纤报警";
                        alarm.ITEMNAME = "断纤报警";
                    }
                    else
                    {
                        //断纤报警自动清除
                        alarm.MESSAGE  = "断纤报警自动清除";
                        alarm.ITEMNAME = "断纤报警自动清除";
                    }

                    alarm.ITEMVALUE        = loc.Replace('|', ',');
                    alarm.DEVICE_ID        = devId;
                    alarm.ACTIVE           = true;
                    alarm.DEVICE_CODE      = devCode;
                    alarm.DEVICE_TYPE_NAME = devType;
                    alarm.MESSAGE_STATUS   = 0;
                    alarm.RECORDDATE       = Convert.ToDateTime(strDate);
                    list.Add(alarm);
                }
                new BLL.AlarmRecord().insert(list);

                //发送返回信息AlarmRptR:系统标示码、命令号、报警ID\r\n
                string sdata0 = "AlarmRptsR:" + systemID + "," + commandId + "," + devCode + "," + alarmID;
                byte[] data0  = new byte[sdata0.Length + 2];
                Encoding.ASCII.GetBytes(sdata0, 0, sdata0.Length, data0, 0);
                data0[sdata0.Length]     = 0x0D;
                data0[sdata0.Length + 1] = 0x0A;
                session.Send(data0, 0, data0.Length);
                session.Logger.Info("光纤回复信息:" + sdata0);
            }
            catch (Exception e)
            {
                session.Logger.Error("振动定位数据采集失败!\n" + e.ToString());
            }
        }
Ejemplo n.º 13
0
        public override void ExecuteCommand(WSSession session, StringRequestInfo requestInfo)
        {
            try
            {
                //SewAlarmData:设备ID,上传时间,CO数据,O2氧气数据,H2S数据,可燃气体数据\r\n
                session.Logger.Info("污水报警数据上传!");
                session.Logger.Info(requestInfo.Body);

                string[] bt = requestInfo.Body.Split(',');
                if (string.IsNullOrEmpty(session.MacID))
                {
                    session.MacID = bt[0];
                }
                List <Model.AlarmRecordInfo> alarms = new List <Model.AlarmRecordInfo>();
                //TODO LIST:根据李雨龙需求,修改可能发生的4个报警记录合并为一条报警记录
                // 一氧化碳、硫化氢、氧气、甲烷

                Model.AlarmRecordInfo alarm = new Model.AlarmRecordInfo();
                alarm.RECORDCODE     = "WS_ALARM_H2S_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss_fff");
                alarm.MESSAGE        = "有害气体超标";
                alarm.ITEMNAME       = "FIREGAS";
                alarm.DEVICE_ID      = session.ID;
                alarm.DEVICE_CODE    = session.MacID;
                alarm.MESSAGE_STATUS = 0;
                alarm.ACTIVE         = true;
                string stime = bt[1];
                string sdate = stime.Substring(0, 4) + "-" + stime.Substring(4, 2) + "-" + stime.Substring(6, 2)
                               + " " + stime.Substring(8, 2) + ":" + stime.Substring(10, 2) + ":" + stime.Substring(12, 2);
                alarm.RECORDDATE       = Convert.ToDateTime(sdate);
                alarm.DEVICE_TYPE_NAME = "有害气体监测仪";
                string result       = "";
                double coAlarm      = Convert.ToDouble(bt[2]) > 50.0?Convert.ToDouble(bt[2]):0;
                double o2Alarm      = Convert.ToDouble(bt[3]) > 18 && Convert.ToDouble(bt[3]) < 23 ? 0 : Convert.ToDouble(bt[3]);
                double h2sAlarm     = Convert.ToDouble(bt[4]) > 10.0 ? Convert.ToDouble(bt[4]) : 0;
                double firegasAlarm = Convert.ToDouble(bt[5]) > 2 ? Convert.ToDouble(bt[5]) : 0;
                result = coAlarm + "," +
                         h2sAlarm + "," +
                         o2Alarm + "," +
                         firegasAlarm;
                alarm.ITEMVALUE = result;

                alarms.Add(alarm);

                /*
                 * if (Convert.ToDouble(bt[3]) > 0)
                 * {
                 *  Model.AlarmRecordInfo alarm = new Model.AlarmRecordInfo();
                 *  alarm.RECORDCODE = "WS_ALARM_CO_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss_fff");
                 *  //alarm.MESSAGE = "污水一氧化碳报警:【值:" + bt[3] + "】【时间:"+bt[1] + "】";
                 *  alarm.MESSAGE = "CO超标";
                 *  alarm.ITEMNAME = "CO";
                 *  alarm.ITEMVALUE = bt[3];
                 *  alarm.DEVICE_ID = session.ID;
                 *  alarm.MESSAGE_STATUS = false;
                 *  alarm.ACTIVE = true;
                 *  alarm.DEVICE_CODE = session.MacID;
                 *  alarm.DEVICE_TYPE_NAME = "有害气体监测仪";
                 *  alarms.Add(alarm);
                 *
                 *  //增加CO气体浓度报警设备运行日志thc20150610
                 *  Model.DeviceLogInfo log = new Model.DeviceLogInfo();
                 *  log.DEVICE_ID = session.ID;
                 *  log.MESSAGE = "CO浓度超限!";
                 *  log.OPERATETYPE = "有害气体数据上报";
                 *  log.LOGTIME = DateTime.Now;
                 *  new BLL.DeviceLog().insert(log);
                 * }
                 * if (Convert.ToDouble(bt[4]) > 0)
                 * {
                 *  Model.AlarmRecordInfo alarm = new Model.AlarmRecordInfo();
                 *  alarm.RECORDCODE = "WS_ALARM_O2_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss_fff");
                 * // alarm.MESSAGE = "污水氧气报警:【值:" + bt[3] + "】【时间:"+bt[1] + "】";
                 *  alarm.MESSAGE = "氧气过低";
                 *  alarm.ITEMNAME = "O2";
                 *  alarm.ITEMVALUE = bt[4];
                 *  alarm.DEVICE_ID = session.ID;
                 *  alarm.MESSAGE_STATUS = false;
                 *  alarm.ACTIVE = true;
                 *  alarm.DEVICE_CODE = session.MacID;
                 *  alarm.DEVICE_TYPE_NAME = "有害气体监测仪";
                 *  alarms.Add(alarm);
                 *
                 *  //增加O2气体浓度报警设备运行日志thc20150610
                 *  Model.DeviceLogInfo log = new Model.DeviceLogInfo();
                 *  log.DEVICE_ID = session.ID;
                 *  log.MESSAGE = "O2浓度超限!";
                 *  log.OPERATETYPE = "有害气体数据上报";
                 *  log.LOGTIME = DateTime.Now;
                 *  new BLL.DeviceLog().insert(log);
                 * }
                 * if (Convert.ToDouble(bt[5]) > 0)
                 * {
                 *  Model.AlarmRecordInfo alarm = new Model.AlarmRecordInfo();
                 *  alarm.RECORDCODE = "WS_ALARM_H2S_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss_fff");
                 * //  alarm.MESSAGE = "污水H2S报警:【值:" + bt[4] + "】【时间:" +bt[1] + "】";
                 *  alarm.MESSAGE = "H2S超标";
                 *  alarm.ITEMNAME = "H2S";
                 *  alarm.ITEMVALUE = bt[5];
                 *  alarm.DEVICE_ID = session.ID;
                 *  alarm.MESSAGE_STATUS = false;
                 *  alarm.ACTIVE = true;
                 *  alarm.DEVICE_CODE = session.MacID;
                 *  alarm.DEVICE_TYPE_NAME = "有害气体监测仪";
                 *  alarms.Add(alarm);
                 *
                 *  //增加H2S气体浓度报警设备运行日志thc20150610
                 *  Model.DeviceLogInfo log = new Model.DeviceLogInfo();
                 *  log.DEVICE_ID = session.ID;
                 *  log.MESSAGE = "H2S浓度超限!";
                 *  log.OPERATETYPE = "有害气体数据上报";
                 *  log.LOGTIME = DateTime.Now;
                 *  new BLL.DeviceLog().insert(log);
                 * }
                 *
                 * if (Convert.ToDouble(bt[6]) > 0)
                 * {
                 *  Model.AlarmRecordInfo alarm = new Model.AlarmRecordInfo();
                 *  alarm.RECORDCODE = "WS_ALARM_H2S_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss_fff");
                 * //  alarm.MESSAGE = "污水可燃气体报警:【值:" + bt[5] + "】【时间:" + bt[1] + "】";
                 *  alarm.MESSAGE = "甲烷超标";
                 *  alarm.ITEMNAME = "FIREGAS";
                 *  alarm.ITEMVALUE = bt[6];
                 *  alarm.DEVICE_ID = session.ID;
                 *  alarm.DEVICE_CODE = session.MacID;
                 *  alarm.MESSAGE_STATUS = false;
                 *  alarm.ACTIVE = true;
                 *  alarm.DEVICE_TYPE_NAME = "有害气体监测仪";
                 *  alarms.Add(alarm);
                 *
                 *  //增加可燃气体报警设备运行日志thc20150610
                 *  Model.DeviceLogInfo log = new Model.DeviceLogInfo();
                 *  log.DEVICE_ID = session.ID;
                 *  log.MESSAGE = "可燃气体浓度超限!";
                 *  log.OPERATETYPE = "有害气体数据上报";
                 *  log.LOGTIME = DateTime.Now;
                 *  new BLL.DeviceLog().insert(log);
                 * }
                 **/
                new BLL.AlarmRecord().insert(alarms);

                Model.DeviceLogInfo log = new Model.DeviceLogInfo();
                log.DEVICE_ID   = session.ID;
                log.MESSAGE     = "有害气体浓度超标!";
                log.OPERATETYPE = "有害气体数据上报";
                log.LOGTIME     = DateTime.Now;
                new BLL.DeviceLog().insert(log);

                //send the success cmd
                string sdata0 = "SewAlarmData:success";
                byte[] data0  = new byte[sdata0.Length + 2];
                Encoding.ASCII.GetBytes(sdata0, 0, sdata0.Length, data0, 0);
                data0[sdata0.Length]     = 0x0D;
                data0[sdata0.Length + 1] = 0x0A;
                session.Send(data0, 0, data0.Length);
            }
            catch (Exception e)
            {
                session.Logger.Error("污水报警数据保存异常!");
                session.Logger.Error(requestInfo.Body);
                session.Logger.Error(e.ToString());
            }
        }
Ejemplo n.º 14
0
 public void saveGXPressAlarm(Model.AlarmRecordInfo alarm)
 {
     IDAL.IAlarmRecord dal = SensorHub.DALFactory.AlarmRecord.Create();
     dal.saveGXAlarm(alarm);
 }
Ejemplo n.º 15
0
        /// <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, Model.AlarmRecordInfo alarm)
        {
            if (null != alarm.DEVICE_CODE)
            {
                parms[0].Value = alarm.DEVICE_CODE;
            }
            else
            {
                parms[0].Value = DBNull.Value;
            }

            if (null != alarm.DEVICE_TYPE_NAME)
            {
                parms[1].Value = alarm.DEVICE_TYPE_NAME;
            }
            else
            {
                parms[1].Value = DBNull.Value;
            }

            if (null != alarm.RECORDCODE)
            {
                parms[2].Value = alarm.RECORDCODE;
            }
            else
            {
                parms[2].Value = DBNull.Value;
            }

            if (null != alarm.MESSAGE)
            {
                parms[3].Value = alarm.MESSAGE;
            }
            else
            {
                parms[3].Value = DBNull.Value;
            }

            if (null != alarm.ITEMNAME)
            {
                parms[4].Value = alarm.ITEMNAME;
            }
            else
            {
                parms[4].Value = DBNull.Value;
            }

            if (null != alarm.ITEMVALUE)
            {
                parms[5].Value = alarm.ITEMVALUE;
            }
            else
            {
                parms[5].Value = DBNull.Value;
            }

            if (null != alarm.DEVICE_ID)
            {
                parms[6].Value = alarm.DEVICE_ID;
            }
            else
            {
                parms[6].Value = DBNull.Value;
            }

            if (null != alarm.RECORDDATE)
            {
                parms[7].Value = alarm.RECORDDATE;
            }
            else
            {
                parms[7].Value = DBNull.Value;
            }

            if (null != alarm.MESSAGE_STATUS)
            {
                parms[8].Value = alarm.MESSAGE_STATUS;
            }
            else
            {
                parms[8].Value = DBNull.Value;
            }

            if (null != alarm.ACTIVE)
            {
                parms[9].Value = alarm.ACTIVE;
            }
            else
            {
                parms[9].Value = DBNull.Value;
            }
        }