Beispiel #1
0
        public AlarmRuleInfo getAlarmRuleByDevcode(String devCode)
        {
            IAlarmRule    alarmRuleDal  = SensorHub.DALFactory.AlarmRule.Create();
            AlarmRuleInfo alarmRuleInfo = alarmRuleDal.getAlarmRule(devCode);

            return(alarmRuleInfo);
        }
Beispiel #2
0
        public void AddAlarmRule(AlarmRuleInfo alarmRuleInfo)
        {
            string connectionString_ATL = @"server=127.0.0.1;database=IFactory;uid=root;pwd=root;Persist Security Info=True;Charset=utf8;";

            using (MySqlConnection connatl = new MySqlConnection(connectionString_ATL))
            {
                connatl.Open();
                IDbTransaction Idbtran = connatl.BeginTransaction();
                try
                {
                    string sql = string.Format(
                        @"insert alarm_rule (rule_did, alarm_type_did, solution_did, solution_image_did, alarm_location_image_did
                    , craft_did, unit_did, alarm_content, alarm_reason)
                    values('{0}', '{1}', {2}, {3}, {4}, {5}, {6}, '{7}', '{8}');"
                        , alarmRuleInfo.RuleDID, alarmRuleInfo.AlarmTypeDID, alarmRuleInfo.SolutionDID, alarmRuleInfo.SolutionImageDID, alarmRuleInfo.AlarmLocationImageDID
                        , alarmRuleInfo.CraftDID, alarmRuleInfo.UnitDID, alarmRuleInfo.AlarmContent, alarmRuleInfo.AlarmReason);
                    MySqlCommand cmd = new MySqlCommand(sql, connatl);
                    cmd.ExecuteNonQuery();

                    Idbtran.Commit();
                }
                catch
                {
                    Idbtran.Rollback();
                }
                finally
                {
                    connatl.Close();
                }
            }
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        public void AddImagePath(AlarmRuleInfo alarmRuleInfo)
        {
            Database equipDB = dataProvider.EQUIPDataBase;
            string   sql     = string.Format(
                @"insert solution_image (path)
                    values('{0}');"
                , alarmRuleInfo.SolutionImage.Path);
            string sql2 = string.Format(
                @"insert alarm_location_image (path)
                    values('{0}');"
                , alarmRuleInfo.AlarmLocationImage.Path);

            equipDB.ExecuteNonQuery(CommandType.Text, sql + sql2);
        }
Beispiel #5
0
        public AlarmRuleSaveResponse Execute(AlarmRuleSaveRequest request)
        {
            AlarmRuleSaveResponse ruleSaveResponse = new AlarmRuleSaveResponse();

            if (string.IsNullOrEmpty(request.AlarmRuleDID))
            {
                AlarmRuleInfo alarmRuleInfo = new AlarmRuleInfo();
                FacilityInfo  facility      = ServiceHelper.LoadService <IProductionService>().GetFacility(request.CraftDID);
                alarmRuleInfo.RuleDID      = ServiceHelper.LoadService <IAlarmService>().GetNextAlarmRuleDID(facility.Process.Craft.CraftNO);
                alarmRuleInfo.FacilityDID  = facility.FacilityDID;
                alarmRuleInfo.UnitDID      = facility.ProcessDID;
                alarmRuleInfo.CraftDID     = facility.Process.CraftDID;
                alarmRuleInfo.UnitDID      = request.UnitDID;
                alarmRuleInfo.AlarmContent = request.AlarmContent;
                alarmRuleInfo.AlarmReason  = request.AlarmReason;
                alarmRuleInfo.Solution     = new SolutionInfo()
                {
                    Content = request.SolutionText
                };
                alarmRuleInfo.AlarmTypeDID = request.AlarmTypeDID;
                string str1 = "Upload/SolutionImages/";
                string str2 = alarmRuleInfo.RuleDID + ".jpg";
                if (!Directory.Exists(this.Server.MapPath("~/" + str1)))
                {
                    Directory.CreateDirectory(this.Server.MapPath("~/" + str1));
                }
                ImageHelper.SaveImage(ImageHelper.BytesToImage(request.GetFileParameters()["SolutionImage"].GetContent()), this.Server.MapPath("~/" + str1 + str2));
                string str3 = "Upload/AlarmLocationImages/";
                string str4 = alarmRuleInfo.RuleDID + ".jpg";
                if (!Directory.Exists(this.Server.MapPath("~/" + str3)))
                {
                    Directory.CreateDirectory(this.Server.MapPath("~/" + str3));
                }
                ImageHelper.SaveImage(ImageHelper.BytesToImage(request.GetFileParameters()["AlarmLocationImage"].GetContent()), this.Server.MapPath("~/" + str3 + str4));
                alarmRuleInfo.AlarmLocationImage = new AlarmLocationImageInfo()
                {
                    Path = str3 + str4
                };
                alarmRuleInfo.SolutionImage = new SolutionImageInfo()
                {
                    Path = str1 + str2
                };
                ServiceHelper.LoadService <IAlarmService>().AddAlarmRule(alarmRuleInfo);
                ServiceHelper.LoadService <IAlarmService>().SaveAlarmRuleFields(alarmRuleInfo.RuleDID, request.Fields);
                ruleSaveResponse.AlarmRuleDID = alarmRuleInfo.RuleDID;
            }
            return(ruleSaveResponse);
        }
Beispiel #6
0
        public void saveAlarmInfo(List <Model.DjLiquidInfo> djs)
        {
            IAlarmRule alarmRuleDal = SensorHub.DALFactory.AlarmRule.Create();

            foreach (Model.DjLiquidInfo dj in djs)
            {
                AlarmRuleInfo   alarmRuleInfo   = alarmRuleDal.getAlarmRule(dj.DEVID);
                AlarmRecordInfo alarmRecordInfo = getAlarmRecord(alarmRuleInfo, dj);
                if (null != alarmRecordInfo)
                {
                    List <int> devStates = new List <int>();
                    devStates.Add((int)LiquidAlarmEnum.OVER_THRESH);
                    new BLL.AlarmRecord().deleteByMessage(alarmRecordInfo.DEVICE_CODE, devStates);
                    new BLL.AlarmRecord().save(alarmRecordInfo);
                }
            }
        }
Beispiel #7
0
        private AlarmRecordInfo getAlarmRecord(AlarmRuleInfo alarmRuleInfo, DjNoiseInfo slNoiseInfo)
        {
            if (null != alarmRuleInfo)
            {
                float    curValue   = float.Parse(slNoiseInfo.DDATA);
                IDevice  deviceDal  = SensorHub.DALFactory.Device.Create();
                IDjNoise slNoiseDal = SensorHub.DALFactory.DjNoise.Create();

                AlarmRecordInfo alarmRecordInfo = new AlarmRecordInfo();
                alarmRecordInfo.ACTIVE           = true;
                alarmRecordInfo.DEVICE_CODE      = slNoiseInfo.DEVID;
                alarmRecordInfo.DEVICE_ID        = alarmRuleInfo.DeviceId;
                alarmRecordInfo.DEVICE_TYPE_NAME = deviceDal.getDevTypeByCode(slNoiseInfo.DEVID);
                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);
        }
Beispiel #8
0
        public void saveAlarmInfo(List <Model.DjPressInfo> djs)
        {
            IAlarmRule alarmRuleDal = SensorHub.DALFactory.AlarmRule.Create();
            // IAlarmRecord alarmRecordDal = SensorHub.DALFactory.AlarmRecord.Create();
            AlarmRecord alarmRecordDal        = new SensorHub.BLL.AlarmRecord();
            List <Model.AlarmRecordInfo> list = new List <Model.AlarmRecordInfo>();

            foreach (Model.DjPressInfo dj in djs)
            {
                AlarmRuleInfo   alarmRuleInfo   = alarmRuleDal.getAlarmRule(dj.DEVID, PRESS_TYPE);
                AlarmRecordInfo alarmRecordInfo = getAlarmRecord(alarmRuleInfo, dj);
                if (null != alarmRecordInfo)
                {
                    list.Add(alarmRecordInfo);
                }
            }
            if (list.Count > 0)
            {
                alarmRecordDal.insert(list);
            }
        }
Beispiel #9
0
        private AlarmRecordInfo getAlarmRecord(AlarmRuleInfo alarmRuleInfo, DjLiquidInfo liquidInfo)
        {
            if (null != alarmRuleInfo)
            {
                float     curValue  = float.Parse(liquidInfo.LIQUIDDATA);
                IDevice   deviceDal = SensorHub.DALFactory.Device.Create();
                IDjLiquid liquidDal = SensorHub.DALFactory.DjLiquid.Create();

                AlarmRecordInfo alarmRecordInfo = new AlarmRecordInfo();
                alarmRecordInfo.ACTIVE           = true;
                alarmRecordInfo.DEVICE_CODE      = liquidInfo.DEVID;
                alarmRecordInfo.DEVICE_ID        = alarmRuleInfo.DeviceId;
                alarmRecordInfo.DEVICE_TYPE_NAME = deviceDal.getDevTypeByCode(liquidInfo.DEVID);
                alarmRecordInfo.ITEMNAME         = "液位值";
                alarmRecordInfo.ITEMVALUE        = curValue.ToString();
                alarmRecordInfo.MESSAGE_STATUS   = 0;
                alarmRecordInfo.MESSAGE          = (int)LiquidAlarmEnum.OVER_THRESH + "";

                alarmRecordInfo.RECORDCODE = "";
                alarmRecordInfo.RECORDDATE = System.DateTime.Now;

                if (alarmRuleInfo.HighValue != null && curValue > alarmRuleInfo.HighValue)
                {
                    alarmRecordInfo.MESSAGE = (int)LiquidAlarmEnum.OVER_THRESH + "";
                    return(alarmRecordInfo);
                }

                if (alarmRuleInfo.Saltation != null)
                {
                    float lastData = liquidDal.getLastData(liquidInfo);
                    if (-1 != lastData && Math.Abs(curValue - lastData) > alarmRuleInfo.Saltation)
                    {
                        alarmRecordInfo.MESSAGE = "液位突变";
                        //   return alarmRecordInfo;
                        return(null);
                    }
                }
            }
            return(null);
        }
Beispiel #10
0
        private AlarmRecordInfo getAlarmRecord(AlarmRuleInfo alarmRuleInfo, Model.DjPressInfo pressInfo)
        {
            if (null != alarmRuleInfo)
            {
                float    curValue  = float.Parse(pressInfo.PRESSDATA);
                IDevice  deviceDal = SensorHub.DALFactory.Device.Create();
                IDjPress pressDal  = SensorHub.DALFactory.DjPress.Create();

                AlarmRecordInfo alarmRecordInfo = new AlarmRecordInfo();
                alarmRecordInfo.ACTIVE           = true;
                alarmRecordInfo.DEVICE_CODE      = pressInfo.DEVID;
                alarmRecordInfo.DEVICE_ID        = alarmRuleInfo.DeviceId;
                alarmRecordInfo.DEVICE_TYPE_NAME = deviceDal.getDevTypeByCode(pressInfo.DEVID);
                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.Saltation != 0)
                {
                    float lastData = pressDal.getLastData(pressInfo);
                    if (-1 != lastData && Math.Abs(curValue - lastData) > alarmRuleInfo.Saltation)
                    {
                        alarmRecordInfo.MESSAGE = "压力突变";
                        // return alarmRecordInfo;
                        return(null);
                    }
                }
            }
            return(null);
        }
Beispiel #11
0
        private AlarmRecordInfo getAlarmRecord(AlarmRuleInfo alarmRuleInfo, Model.CasicTemp tempInfo)
        {
            if (null != alarmRuleInfo)
            {
                float      curValue  = float.Parse(tempInfo.Data);
                IDevice    deviceDal = SensorHub.DALFactory.Device.Create();
                ICasicTemp tempDal   = SensorHub.DALFactory.CasicTemp.Create();

                AlarmRecordInfo alarmRecordInfo = new AlarmRecordInfo();
                alarmRecordInfo.ACTIVE           = true;
                alarmRecordInfo.DEVICE_CODE      = tempInfo.DEVCODE;
                alarmRecordInfo.DEVICE_ID        = alarmRuleInfo.DeviceId;
                alarmRecordInfo.DEVICE_TYPE_NAME = deviceDal.getDevTypeByCode(tempInfo.DEVCODE);
                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.Saltation != 0)
                {
                    float lastData = tempDal.getLastData(tempInfo);
                    if (-1 != lastData && Math.Abs(curValue - lastData) > alarmRuleInfo.Saltation)
                    {
                        alarmRecordInfo.MESSAGE = "温度突变";
                        return(alarmRecordInfo);
                    }
                }
            }
            return(null);
        }
Beispiel #12
0
 public static AlarmRuleModel ToModel(this AlarmRuleInfo entity)
 {
     return(Mapper.Map <AlarmRuleInfo, AlarmRuleModel>(entity));
 }
Beispiel #13
0
        private bool IsOverMaxSLAlarm(String devCode, AlarmRuleInfo alarmRuleInfo)
        {
            SLNoiseCount slNoiseCount = new SLNoiseCount();

            return(slNoiseCount.IncrementSLNoiseAlarmCount(devCode, alarmRuleInfo));
        }
Beispiel #14
0
 public void UpdateAlarmRule(AlarmRuleInfo alarmRuleInfo)
 {
     this.DataContext.SaveChanges();
 }
Beispiel #15
0
 public void AddAlarmRule(AlarmRuleInfo alarmRuleInfo)
 {
     this.DataContext.AlarmRuleInfos.Add(alarmRuleInfo);
     this.DataContext.SaveChanges();
 }
Beispiel #16
0
        static void testLiquidConfig()
        {
            byte             ss  = byte.Parse(DateTime.Now.ToString("yy"));
            byte             ss1 = byte.Parse(DateTime.Now.ToString("MM"));
            byte             ss2 = byte.Parse(DateTime.Now.ToString("dd"));
            byte             ss3 = byte.Parse(DateTime.Now.ToString("HH"));
            byte             ss4 = byte.Parse(DateTime.Now.ToString("mm"));
            byte             ss5 = byte.Parse(DateTime.Now.ToString("ss"));
            byte             ss7 = byte.Parse("0" + ((int)DateTime.Now.DayOfWeek).ToString());
            DeviceConfigInfo conf;

            conf = (new DeviceConfig()).GetDeviceConfByDeviceCodeAndSensorCode("112015090038", "000034");

            if (conf != null)
            {
                string   content  = conf.FrameContent;
                string[] items    = content.Split(new char[] { '#' }, StringSplitOptions.RemoveEmptyEntries);
                byte[]   sendData = new byte[items.Length + 9 + 2];//补充2个字节,用于扩展报警界限
                for (int i = 0; i < items.Length - 10; i++)
                {
                    sendData[i + 9] = byte.Parse(items[i], System.Globalization.NumberStyles.HexNumber);
                }
                //修正报警规则信息
                SensorHub.BLL.DjLiquid djBll = new SensorHub.BLL.DjLiquid();
                AlarmRuleInfo          rule  = djBll.getAlarmRuleByDevcode("112015090038");
                float  highValue             = rule != null ? rule.HighValue : 1000;
                byte[] btHighValue           = BitConverter.GetBytes(highValue);
                sendData[9 + 10 + 0] = btHighValue[0];
                sendData[9 + 10 + 1] = btHighValue[1];
                sendData[9 + 10 + 2] = btHighValue[2];
                sendData[9 + 10 + 3] = btHighValue[3];

                //  if (requestInfo.Parameters[0] == "50")
                //  {
                //液位时间修正
                sendData[21 + 2]     = ss5;
                sendData[22 + 2]     = ss4;
                sendData[23 + 2]     = ss3;
                sendData[24 + 2]     = ss7;
                sendData[25 + 2]     = ss2;
                sendData[26 + 2]     = ss1;
                sendData[27 + 2]     = ss;
                sendData[27 + 2 + 1] = 0x03;
                //   }
                sendData[0] = 0XAA;
                sendData[1] = 0X1D;
                sendData[2] = 0x00;
                sendData[3] = 0x00;
                sendData[4] = 0X03;
                sendData[5] = 0X00;
                sendData[6] = System.BitConverter.GetBytes(sendData.Length - 9)[0];
                sendData[7] = 0X00;
                sendData[8] = 0X00;

                String crcIn = "";
                for (int i = 0; i < sendData.Length; i++)
                {
                    crcIn += sendData[i].ToString("X2");
                }
                ushort crcOut     = CodeUtils.QuickCRC16(crcIn, 0, crcIn.Length);
                byte[] crcOutByte = BitConverter.GetBytes(crcOut);
                sendData[7] = crcOutByte[1];
                sendData[8] = crcOutByte[0];
            }
        }
Beispiel #17
0
        public void SaveZZAlarmInfo(List <Model.SlNoiseInfo> djsAll)
        {
            List <Model.SlNoiseInfo> djs = this.Filter(djsAll);

            if (djs.Count == 0)
            {
                return;
            }
            String        devCode       = djs[0].SRCID;
            IAlarmRule    alarmRuleDal  = SensorHub.DALFactory.AlarmRule.Create();
            AlarmRuleInfo alarmRuleInfo = alarmRuleDal.getAlarmRule(devCode);

            if (alarmRuleInfo == null || alarmRuleInfo.HighValue == 0)
            {
                return;
            }

            AlarmRecord alarmRecordDal = new SensorHub.BLL.AlarmRecord();

            //如果最新一条消息没报警的话就清楚报警
            if (float.Parse(djs[djs.Count - 1].DENSEDATA) < alarmRuleInfo.HighValue)
            {
                alarmRecordDal.removeByDevCode(devCode);
                return;
            }

            //判断是否都超过报警
            bool isAllOverThresh = true;

            foreach (SlNoiseInfo slNoiseInfo in djs)
            {
                if (float.Parse(slNoiseInfo.DENSEDATA) < alarmRuleInfo.HighValue)
                {
                    isAllOverThresh = false;
                    break;
                }
            }

            //如果超过连续报警次数,将最新的数据插入到报警列表中
            if (isAllOverThresh && IsOverMaxSLAlarm(devCode, alarmRuleInfo))
            {
                IDevice deviceDal = SensorHub.DALFactory.Device.Create();

                AlarmRecordInfo alarmRecordInfo = new AlarmRecordInfo();
                alarmRecordInfo.ACTIVE           = true;
                alarmRecordInfo.DEVICE_CODE      = devCode;
                alarmRecordInfo.DEVICE_ID        = alarmRuleInfo.DeviceId;
                alarmRecordInfo.DEVICE_TYPE_NAME = deviceDal.getDevTypeByCode(devCode);
                alarmRecordInfo.ITEMNAME         = "噪声值";
                alarmRecordInfo.ITEMVALUE        = djs[djs.Count - 1].DENSEDATA;
                alarmRecordInfo.MESSAGE_STATUS   = 0;
                alarmRecordInfo.RECORDCODE       = "";
                alarmRecordInfo.RECORDDATE       = System.DateTime.Now;
                alarmRecordInfo.MESSAGE          = (int)SlNoiseAlarmEnum.OVER_THRESH + "";

                List <int> devStates = new List <int>();
                devStates.Add((int)SlNoiseAlarmEnum.OVER_THRESH);
                new BLL.AlarmRecord().deleteByMessage(alarmRecordInfo.DEVICE_CODE, devStates);

                List <Model.AlarmRecordInfo> list = new List <Model.AlarmRecordInfo>();
                list.Add(alarmRecordInfo);
                alarmRecordDal.insert(list);
            }
        }
        public override void ExecuteCommand(SZLiquidSession session, StringRequestInfo requestInfo)
        {
            try
            {
                session.Logger.Info("LSSETREQU:液位配置请求帧:" + requestInfo.Body);

                session.MacID = requestInfo.Parameters[5];
                string address = requestInfo.Parameters[3];
                byte   add0    = byte.Parse(address.Substring(0, 2), System.Globalization.NumberStyles.HexNumber);
                byte   add1    = byte.Parse(address.Substring(2, 2), System.Globalization.NumberStyles.HexNumber);
                byte   add2    = byte.Parse(address.Substring(4, 2), System.Globalization.NumberStyles.HexNumber);

                byte ss  = byte.Parse(DateTime.Now.ToString("yy"));
                byte ss1 = byte.Parse(DateTime.Now.ToString("MM"));
                byte ss2 = byte.Parse(DateTime.Now.ToString("dd"));
                byte ss3 = byte.Parse(DateTime.Now.ToString("HH"));
                byte ss4 = byte.Parse(DateTime.Now.ToString("mm"));
                byte ss5 = byte.Parse(DateTime.Now.ToString("ss"));
                byte ss7 = byte.Parse("0" + ((int)DateTime.Now.DayOfWeek).ToString());

                BLL.DeviceLog bllLog    = new DeviceLog();
                BLL.Device    bllDevice = new Device();

                DeviceConfigInfo conf;

                conf = (new DeviceConfig()).GetDeviceConfByDeviceCodeAndSensorCode(session.MacID, "000034");

                if (conf != null)
                {
                    //状态传感配置信息

                    //50# 00#14 #01 #00#00#34# C1 #00#05 #00#00#00#00 #1.23 #2D#17#0F#04#0F#0A#0F#03#

                    string   content = conf.FrameContent;
                    string[] items   = content.Split(new char[] { '#' }, StringSplitOptions.RemoveEmptyEntries);

                    //byte[] sendData = new byte[items.Length];
                    byte[] sendData = new byte[26];//固定26字节
                    //for (int i = 0; i < items.Length; i++)
                    for (int i = 0; i < 10; i++)
                    {
                        sendData[i] = byte.Parse(items[i], System.Globalization.NumberStyles.HexNumber);
                    }
                    //TODO LIST:修正液位警界高度、探头安装高度、当前时间
                    BLL.DjLiquid  djBll       = new BLL.DjLiquid();
                    AlarmRuleInfo rule        = djBll.getAlarmRuleByDevcode(session.MacID);
                    float         highValue   = rule != null ? rule.HighValue : 1000;
                    byte[]        btHighValue = BitConverter.GetBytes(highValue);
                    sendData[10 + 0] = btHighValue[0];
                    sendData[10 + 1] = btHighValue[1];
                    sendData[10 + 2] = btHighValue[2];
                    sendData[10 + 3] = btHighValue[3];

                    float  height   = float.Parse(items[14]);
                    byte[] btHeight = BitConverter.GetBytes(height);
                    sendData[14 + 0] = btHeight[0];
                    sendData[14 + 1] = btHeight[1];
                    sendData[14 + 2] = btHeight[2];
                    sendData[14 + 3] = btHeight[3];

                    if (requestInfo.Parameters[0] == "50")
                    {
                        //液位时间修正
                        sendData[18] = ss5;
                        sendData[19] = ss4;
                        sendData[20] = ss3;
                        sendData[21] = ss7;
                        sendData[22] = ss2;
                        sendData[23] = ss1;
                        sendData[24] = ss;
                        sendData[25] = 0x03;
                    }

                    string head   = "LSSETREQU:";
                    byte[] btHead = System.Text.Encoding.Default.GetBytes(head);
                    byte[] result = new byte[sendData.Length + btHead.Length];

                    Buffer.BlockCopy(btHead, 0, result, 0, btHead.Length);
                    Buffer.BlockCopy(sendData, 0, result, btHead.Length, sendData.Length);

                    session.Send(result, 0, result.Length);

                    //

                    /*
                     * String crcIn = "";
                     * for (int i = 0; i < sendData.Length; i++)
                     * {
                     *  crcIn += sendData[i].ToString("X2");
                     * }
                     * ushort crcOut = CodeUtils.QuickCRC16(crcIn, 0, crcIn.Length);
                     * byte[] crcOutByte = BitConverter.GetBytes(crcOut);
                     * sendData[7] = crcOutByte[1];
                     * sendData[8] = crcOutByte[0];
                     * **/

                    session.Logger.Info("成功下发液位配置帧:" + BitConverter.ToString(result));
                    session.LiquidConf          = conf;
                    session.LiquidConf.SendTime = DateTime.Now;

                    Model.DeviceLogInfo log = new Model.DeviceLogInfo();
                    log.DEVICE_ID   = Convert.ToInt32(bllDevice.getDeviceIdByCode(session.MacID));
                    log.MESSAGE     = "液位数据配置:采集间隔:" + sendData[9] + "分钟";
                    log.OPERATETYPE = "下发";
                    log.LOGTIME     = DateTime.Now;
                    bllLog.insert(log);

                    return;
                }

                //无配置信息处理发送校时帧

                byte[] setTime = { 0x50,
                                   0x00, 0x14,
                                   0x01,
                                   0x00, 0x00, 0x34,
                                   0xC2,
                                   0x00, 0x05,
                                   0x00, 0x00, 0x00, 0x00,
                                   0x00, 0x00, 0x00, 0x00,
                                   ss5, ss4,  ss3,
                                   ss7, ss2,  ss1,  ss,
                                   0x03 };

                string head0   = "LSSETREQU:";
                byte[] btHead0 = System.Text.Encoding.Default.GetBytes(head0);
                byte[] result0 = new byte[setTime.Length + btHead0.Length];

                Buffer.BlockCopy(btHead0, 0, result0, 0, btHead0.Length);
                Buffer.BlockCopy(setTime, 0, result0, btHead0.Length, setTime.Length);

                session.Send(result0, 0, result0.Length);
                session.Logger.Info("成功下发液位计校时帧:" + BitConverter.ToString(result0, 0));
            }
            catch (Exception e)
            {
                session.Logger.Error(e.ToString());
            }
        }
Beispiel #19
0
        public AlarmRuleInfo getAlarmRule(String devCode)
        {
            using (OracleConnection conn = new OracleConnection(OracleHelper.ConnectionStringOrderDistributedTransaction))
            {
                try
                {
                    String SQL = " SELECT r.* " +
                                 " FROM ALARM_ALARM_RULE r, ALARM_DEVICE d " +
                                 " WHERE r.DEVICE_ID = d.DBID " +
                                 " and d.DEVCODE = :devCode ";
                    OracleParameter[] oraParams = new OracleParameter[] {
                        new OracleParameter(":devCode", devCode),
                    };
                    DataTable dt = OracleHelper.ExecuteDataset(conn, CommandType.Text, SQL, oraParams).Tables[0];
                    if (dt.Rows.Count > 0)
                    {
                        AlarmRuleInfo alarmRuleInfo = new AlarmRuleInfo();
                        if (dt.Rows[0]["DBID"] != null)
                        {
                            alarmRuleInfo.Dbid = long.Parse(dt.Rows[0]["DBID"].ToString());
                        }

                        if (dt.Rows[0]["HIGHVALUE"] != null)
                        {
                            alarmRuleInfo.HighValue = float.Parse(dt.Rows[0]["HIGHVALUE"].ToString());
                        }

                        if (dt.Rows[0]["LOWVALUE"] != null)
                        {
                            alarmRuleInfo.LowValue = float.Parse(dt.Rows[0]["LOWVALUE"].ToString());
                        }

                        if (dt.Rows[0]["OVERTIME"] != null)
                        {
                            alarmRuleInfo.Overtime = float.Parse(dt.Rows[0]["OVERTIME"].ToString());
                        }

                        if (dt.Rows[0]["SALTATION"] != null)
                        {
                            alarmRuleInfo.Saltation = float.Parse(dt.Rows[0]["SALTATION"].ToString());
                        }

                        if (dt.Rows[0]["SENSORCODE"] != null)
                        {
                            alarmRuleInfo.SensorCode = dt.Rows[0]["SENSORCODE"].ToString();
                        }

                        if (dt.Rows[0]["DEVICE_ID"] != null)
                        {
                            alarmRuleInfo.DeviceId = int.Parse(dt.Rows[0]["DEVICE_ID"].ToString());;
                        }
                        return(alarmRuleInfo);
                    }
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
            return(null);
        }
 /*
  * private static int SL_CONTINUE_ALARM_COUNT = int.Parse(System.Configuration.
  *  ConfigurationSettings.AppSettings["SL_CONTINUE_ALARM_COUNT"]);
  */
 public bool IncrementSLNoiseAlarmCount(String devCode, AlarmRuleInfo alarmRuleInfo)
 {
     return(DALFactory.SLNoiseCount.Create().IncrementSLNoiseAlarmCount(devCode,
                                                                        (int)alarmRuleInfo.Overtime));
 }