private float verifyLiquidData(float src, String devCode, SZLiquidSession session)
        {
            //修正液位数据
            if (src >= 0)
            {
                return(src);
            }
            //TODO LIST:根据设备DevCode,找到对应的井深信息
            BLL.Device device = new BLL.Device();
            float      result = device.getWellDepByDevcode(devCode);

            if (result == -1)
            {
                session.Logger.Error("旧版液位监测仪器设备编号重复:" + devCode);
                return(src);
            }
            else if (result == -2)
            {
                session.Logger.Error("无法找到关联阀门:" + devCode);
                return(src);
            }
            else if (result == -3)
            {
                session.Logger.Error("设备关联阀门不唯一:" + devCode);
                return(src);
            }
            else
            {
                session.Logger.Info("液位液位监测:" + devCode + "采集盲区返回井深:" + result);
            }
            return(result);
        }
Ejemplo n.º 2
0
        //命令执行前调用
        public override void OnCommandExecuting(CommandExecutingContext commandContext)
        {
            BinaryRequestInfo request = (BinaryRequestInfo)commandContext.RequestInfo;

            byte[] sim    = new byte[6];
            byte[] header = headerToByteArray(request.Key);
            byte[] body   = request.Body;
            Buffer.BlockCopy(body, 0, sim, 0, 6);
            if (!Utility.CodeUtils.CRC16_validate(header, body))
            {
                commandContext.Cancel = true;
            }

            //sim卡号
            string code = BitConverter.ToString(sim, 0, sim.Length).Replace("-", "").Substring(1);

            //打印燃气设备号
            commandContext.Session.Logger.Info("燃气智能检测终端编号:" + code);

            object obj = new BLL.Device().getDeviceIdByCode(code);

            if (null == obj || string.IsNullOrEmpty(obj.ToString()))
            {
                commandContext.Cancel = true;
            }
            else
            {
                RQSession session = (RQSession)commandContext.Session;
                session.ID = Convert.ToInt32(obj);
            }
        }
Ejemplo n.º 3
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.º 4
0
        //命令执行前调用
        public override void OnCommandExecuting(CommandExecutingContext commandContext)
        {
            StringRequestInfo request = (StringRequestInfo)commandContext.RequestInfo;
            string            code    = request.Parameters[0];
            object            obj     = new BLL.Device().getDeviceIdByCode(code);

            if (null == obj || string.IsNullOrEmpty(obj.ToString()))
            {
                commandContext.Cancel = true;
            }
            else
            {
                WSSession session = (WSSession)commandContext.Session;
                session.ID = Convert.ToInt32(obj);
            }
        }
Ejemplo n.º 5
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.º 6
0
        public override void ExecuteCommand(GXSession session, StringRequestInfo requestInfo)
        {
            try
            {
                //StressCurve:上传时间,设备ID,{间隔米数0 应力数据0},{间隔米数1 应力数据1}/r/n
                session.Logger.Info("诺可压力曲线采集开始!");
                session.Logger.Info(requestInfo.Body);

                string[]          body = requestInfo.Body.Split(',');
                BLL.NKStressCurve bll  = new BLL.NKStressCurve();

                Model.NKStressCurveInfo stressCurve = new Model.NKStressCurveInfo();
                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);
                stressCurve.UPTIME  = Convert.ToDateTime(sdate);
                stressCurve.DEVID   = body[1];
                stressCurve.LOGTIME = DateTime.Now;
                StringBuilder dis = new StringBuilder();
                StringBuilder val = new StringBuilder();
                for (int i = 2; i < body.Length; i++)
                {
                    string[] data = body[i].Split(' ');
                    dis.Append(data[0].Remove(0, 1)).Append(",");
                    val.Append(data[1].Remove(data[1].Length - 1, 1)).Append(",");
                }
                stressCurve.DISTANCE = dis.Remove(dis.Length - 1, 1).ToString();
                stressCurve.STRESS   = val.Remove(val.Length - 1, 1).ToString();
                bll.insert(stressCurve);

                //TODO LIST:判断是否应力有超限报警?有的话插入到报警记录中
                string devType = new BLL.Device().getDevTypeByCode(stressCurve.DEVID);
                bll.saveAlarm(stressCurve.DISTANCE, stressCurve.STRESS, stressCurve.DEVID,
                              (int)session.ID, devType);
            }
            catch (Exception e)
            {
                session.Logger.Error("诺可压力曲线数据采集失败!");
                session.Logger.Error(requestInfo.Body);
                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());
            }
        }