/// <summary>
        /// 将数据库存储的文本转换成实体
        /// </summary>
        /// <param name="ratioAlarmConditions">0,0.2,5|0.2,0.3,3|0.3,0.4,2.5 ...</param>
        /// <returns></returns>
        private List <RatioAlarmConditions> GetRatioAlarmConditionsFromStr(JC_MultiplesettingInfo multiplesettingInfo)
        {
            List <RatioAlarmConditions> ratioAlarmConditionItems = null;

            try
            {
                RatioAlarmConditions ratioAlarmConditions = null;
                string[]             strItems             = multiplesettingInfo.MultipleText.Split('|');
                string[]             items;
                if (strItems.Length == 10)
                {
                    ratioAlarmConditionItems = new List <RatioAlarmConditions>();
                    for (int i = 0; i < strItems.Length; i++)
                    {
                        items = strItems[i].Split(',');
                        if (items.Length == 3)
                        {
                            ratioAlarmConditions = new RatioAlarmConditions();
                            try
                            {
                                ratioAlarmConditions.minValue   = Convert.ToDouble(items[0]);
                                ratioAlarmConditions.maxValue   = Convert.ToDouble(items[1]);
                                ratioAlarmConditions.ratioValue = Convert.ToDouble(items[2]);
                                ratioAlarmConditions.alarmTyepe = i + 1;
                                if (ratioAlarmConditions.ratioValue != 0)
                                {
                                    ratioAlarmConditions.isExsit = true;
                                }
                                else
                                {
                                    ratioAlarmConditions.isExsit = false;
                                }
                            }
                            catch
                            {
                                ratioAlarmConditions.isExsit = false;
                            }
                        }
                        else
                        {
                            //定义的倍数报警条件存储有误,默认此逻辑不生效
                            ratioAlarmConditions         = new RatioAlarmConditions();
                            ratioAlarmConditions.isExsit = false;

                            LogHelper.Error(multiplesettingInfo.Devid + "定义的倍数报警条件存储有误,存在条件" + strItems[i]);
                        }
                        ratioAlarmConditionItems.Add(ratioAlarmConditions);
                    }
                }
                else
                {
                    LogHelper.Error(multiplesettingInfo.Devid + "定义的倍数报警条件存储有误,共" + strItems.Length + "条");
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error(multiplesettingInfo.Devid + "定义的倍数报警条件有误," + ex.Message);
            }
            return(ratioAlarmConditionItems);
        }
Пример #2
0
 public MultipleSettingEdit(JC_MultiplesettingInfo _multiplesettingInfo, List <Jc_DevInfo> _deviceInfos, MultipleSetting _multipleSetting)
 {
     deviceInfos         = _deviceInfos;
     parent              = _multipleSetting;
     multiplesettingInfo = _multiplesettingInfo;
     InitializeComponent();
 }
Пример #3
0
        private void gridControl1_DoubleClick(object sender, EventArgs e)
        {
            int selectedHandle;

            selectedHandle = this.gridView1.GetSelectedRows()[0];
            if (selectedHandle >= 0)
            {
                string devid = this.gridView1.GetRowCellValue(selectedHandle, "devid").ToString();
                if (multiplesettingList != null)
                {
                    JC_MultiplesettingInfo editMultiplesetting = multiplesettingList.Find(a => a.Devid == devid);
                    if (editMultiplesetting != null)
                    {
                        MultipleSettingEdit multipleSettingEdit = new MultipleSettingEdit(editMultiplesetting, deviceInfos, this);
                        multipleSettingEdit.ShowDialog();
                    }
                }
            }
        }
Пример #4
0
 private void barButtonItem3_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
 {
     if (XtraMessageBox.Show("删除不可恢复,是否确定删除?", "询问", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
     {
         int selectedHandle;
         selectedHandle = this.gridView1.GetSelectedRows()[0];
         if (selectedHandle >= 0)
         {
             string devid = this.gridView1.GetRowCellValue(selectedHandle, "devid").ToString();
             if (multiplesettingList != null)
             {
                 JC_MultiplesettingInfo editMultiplesetting = multiplesettingList.Find(a => a.Devid == devid);
                 if (editMultiplesetting != null)
                 {
                     JC_MultiplesettingDeleteRequest multiplesettingrequest = new JC_MultiplesettingDeleteRequest();
                     multiplesettingrequest.Id = editMultiplesetting.Id;
                     multiplesettingService.DeleteMultiplesetting(multiplesettingrequest);
                     LoadData();
                 }
             }
         }
     }
 }
        private void DataProc()
        {
            List <Jc_DefInfo>             pointDefineItems         = null;
            SettingInfo                   settingInfo              = null;
            string                        settingTime              = ""; //上次加载倍率报警配置时间
            List <JC_MultiplesettingInfo> multiplesettingInfotems  = null;
            JC_MultiplesettingInfo        multiplesettingInfotem   = null;
            List <RatioAlarmConditions>   ratioAlarmConditionItems = null;
            RatioAlarmConditions          ratioAlarmConditionItem  = null;
            double                        sszValue   = 0;
            double                        basicValue = 0;
            int              alarmType         = 0;
            JC_MbInfo        ratioAlarm        = null;
            DateTime         getBasicValueDate = DateTime.Now.AddDays(-1); //上次获取周平均值的时间
            List <JC_MbInfo> alarm_AddItems    = new List <JC_MbInfo>();
            List <JC_MbInfo> alarm_DelItems    = new List <JC_MbInfo>();
            List <JC_MbInfo> alarm_UpdateItems = new List <JC_MbInfo>();

            DateTime lastProcData = DateTime.Now; //最后一次处理数据的日期
            DateTime nowTime      = DateTime.Now; //本次处理时间

            for (; ;)
            {
                try
                {
                    nowTime = DateTime.Now;
                    if (isStop)
                    {
                        break;
                    }
                    //获取定义信息
                    pointDefineItems = CacheDataHelper.GetKJPointDefineItems();

                    //判断是否重载倍率报警定义
                    settingInfo = CacheDataHelper.GetSettingByKeyStr("MultipleSettingUpdateTime");
                    if (settingInfo != null)
                    {
                        if (settingTime != settingInfo.StrValue)
                        {
                            //重新加载倍率报警定义信息
                            multiplesettingInfotems = GetAllMultiplesettingInfo();
                            settingTime             = settingInfo.StrValue;
                        }
                    }
                    else
                    {
                        Thread.Sleep(timeSpan * 1000);
                        continue;
                    }

                    //筛选模拟量
                    pointDefineItems = pointDefineItems.Where(a => (a.DevPropertyID == (int)DeviceProperty.Analog) &&
                                                              (multiplesettingInfotems.FirstOrDefault(b => b.Devid == a.Devid) != null)).ToList();

                    if (pointDefineItems.Count == 0)
                    {
                        Thread.Sleep(timeSpan * 1000); continue;
                    }


                    //重载周平均值
                    if (getBasicValueDate.Date != nowTime.Date)
                    {
                        ReloadBasicValues(pointDefineItems);
                        getBasicValueDate = nowTime;
                    }

                    if (pointDefineItems == null)
                    {
                        Thread.Sleep(timeSpan * 1000); continue;
                    }
                    if (pointDefineItems.Count == 0)
                    {
                        Thread.Sleep(timeSpan * 1000); continue;
                    }



                    alarm_AddItems    = new List <JC_MbInfo>();
                    alarm_DelItems    = new List <JC_MbInfo>();
                    alarm_UpdateItems = new List <JC_MbInfo>();

                    if (lastProcData.Date != nowTime.Date)
                    {
                        //结束报警重新生成
                        CrossDay(pointDefineItems, multiplesettingInfotems, new DateTime(lastProcData.Year, lastProcData.Month, lastProcData.Day, 23, 59, 59), new DateTime(nowTime.Year, nowTime.Month, nowTime.Day, 0, 0, 0));
                        lastProcData = nowTime;
                    }

                    foreach (Jc_DefInfo def in pointDefineItems)
                    {
                        if (isStop)
                        {
                            break;
                        }
                        if (double.TryParse(def.Ssz, out sszValue))
                        {
                            multiplesettingInfotem = multiplesettingInfotems.FirstOrDefault(a => a.Devid == def.Devid);
                            if (multiplesettingInfotem == null)
                            {
                                continue;
                            }                                                                                  //未定义该设备类型的倍率报警
                            ratioAlarmConditionItems = GetRatioAlarmConditionsFromStr(multiplesettingInfotem); //解析倍率报警配置
                            if (ratioAlarmConditionItems == null)
                            {
                                continue;
                            }                                       //提取倍率报警定义出错,不继续计算
                            basicValue = GetBasicValueByDef(def);   //获取周平均值
                            if (basicValue == 0)
                            {
                                continue;
                            }                                   //没有基础值,不计算
                            //计算报警等级
                            alarmType = JudgeAlarmType(sszValue, ratioAlarmConditionItems, basicValue);
                            if (alarmType != 0)
                            {
                                ratioAlarmConditionItem = ratioAlarmConditionItems[alarmType - 1];  //获取当前报警的倍率信息配置
                            }
                            ratioAlarm = GetAlarmInfo(def.Point);
                            #region ----报警处理----

                            if (ratioAlarm == null)
                            {
                                if (alarmType > 0)
                                {
                                    //之前没有报警 现在有报警(新增报警)
                                    ratioAlarm         = new JC_MbInfo();
                                    ratioAlarm.Id      = IdHelper.CreateLongId().ToString();
                                    ratioAlarm.Point   = def.Point;
                                    ratioAlarm.PointID = def.PointID;
                                    ratioAlarm.Fzh     = def.Fzh.ToString();
                                    ratioAlarm.Kh      = def.Kh.ToString();
                                    ratioAlarm.Dzh     = def.Dzh.ToString();
                                    ratioAlarm.Devid   = def.Devid;
                                    ratioAlarm.Wzid    = def.Wzid;
                                    ratioAlarm.Type    = alarmType.ToString();
                                    ratioAlarm.Bstj    = "[" + ratioAlarmConditionItem.minValue + "," + ratioAlarmConditionItem.maxValue + "," + ratioAlarmConditionItem.ratioValue + "]";
                                    ratioAlarm.Bsz     = ratioAlarmConditionItem.ratioValue;
                                    ratioAlarm.Stime   = nowTime;
                                    ratioAlarm.Ssz     = Convert.ToDouble(def.Ssz);
                                    ratioAlarm.Pjz     = basicValue;
                                    ratioAlarm.Zdz     = sszValue;
                                    ratioAlarm.Zdzs    = nowTime;

                                    alarm_AddItems.Add(ratioAlarm);
                                }
                            }
                            else
                            {
                                if (alarmType == 0)
                                {
                                    //之前有报警 现在没有报警(结束报警)
                                    ratioAlarm.Etime = nowTime;
                                    alarm_DelItems.Add(ratioAlarm);
                                }
                                else
                                {
                                    if (alarmType.ToString() != ratioAlarm.Type)
                                    {
                                        //之前有报警 报警切换(结束旧报警,生成新报警)
                                        ratioAlarm.Etime = nowTime;
                                        alarm_DelItems.Add(ratioAlarm);

                                        //生成新报警
                                        ratioAlarm         = new JC_MbInfo();
                                        ratioAlarm.Id      = IdHelper.CreateLongId().ToString();
                                        ratioAlarm.Point   = def.Point;
                                        ratioAlarm.PointID = def.PointID;
                                        ratioAlarm.Fzh     = def.Fzh.ToString();
                                        ratioAlarm.Kh      = def.Kh.ToString();
                                        ratioAlarm.Dzh     = def.Dzh.ToString();
                                        ratioAlarm.Devid   = def.Devid;
                                        ratioAlarm.Wzid    = def.Wzid;
                                        ratioAlarm.Type    = alarmType.ToString();
                                        ratioAlarm.Bstj    = "[" + ratioAlarmConditionItem.minValue + "," + ratioAlarmConditionItem.maxValue + "," + ratioAlarmConditionItem.ratioValue + "]";
                                        ratioAlarm.Bsz     = ratioAlarmConditionItem.ratioValue;
                                        ratioAlarm.Stime   = nowTime;
                                        ratioAlarm.Ssz     = Convert.ToDouble(def.Ssz);
                                        ratioAlarm.Pjz     = basicValue;
                                        ratioAlarm.Zdz     = sszValue;
                                        ratioAlarm.Zdzs    = nowTime;

                                        alarm_AddItems.Add(ratioAlarm);
                                    }
                                    else
                                    {
                                        //报警状态持续,更新报警期间最大值
                                        if (sszValue > ratioAlarm.Zdz)
                                        {
                                            ratioAlarm.Zdz  = sszValue;
                                            ratioAlarm.Zdzs = nowTime;
                                            //更新报警
                                            alarm_UpdateItems.Add(ratioAlarm);
                                        }
                                    }
                                }
                            }

                            #endregion
                        }
                    }
                    if (alarm_DelItems.Count > 0)
                    {
                        EndAlarmItems(alarm_DelItems);
                    }
                    if (alarm_AddItems.Count > 0)
                    {
                        StartAlarms(alarm_AddItems);
                    }
                    if (alarm_UpdateItems.Count > 0)
                    {
                        UpdateAlarm(alarm_UpdateItems);
                    }
                }
                catch (Exception ex)
                {
                    LogHelper.Error("RatioAlarmProcHandle DataProc Error" + ex.Message);
                }
                Thread.Sleep(timeSpan * 1000);
            }
        }
Пример #6
0
        private void simpleButton1_Click(object sender, EventArgs e)
        {
            try
            {
                //获取所有条件
                string saveMultipleTextString = "";
                saveMultipleTextString += WeekAverageMin1.Value + ",";
                saveMultipleTextString += WeekAverageMax1.Value + ",";
                saveMultipleTextString += Multipled1.Value + "|";
                saveMultipleTextString += WeekAverageMin2.Value + ",";
                saveMultipleTextString += WeekAverageMax2.Value + ",";
                saveMultipleTextString += Multipled2.Value + "|";
                saveMultipleTextString += WeekAverageMin3.Value + ",";
                saveMultipleTextString += WeekAverageMax3.Value + ",";
                saveMultipleTextString += Multipled3.Value + "|";
                saveMultipleTextString += WeekAverageMin4.Value + ",";
                saveMultipleTextString += WeekAverageMax4.Value + ",";
                saveMultipleTextString += Multipled4.Value + "|";
                saveMultipleTextString += WeekAverageMin5.Value + ",";
                saveMultipleTextString += WeekAverageMax5.Value + ",";
                saveMultipleTextString += Multipled5.Value + "|";
                saveMultipleTextString += WeekAverageMin6.Value + ",";
                saveMultipleTextString += WeekAverageMax6.Value + ",";
                saveMultipleTextString += Multipled6.Value + "|";
                saveMultipleTextString += WeekAverageMin7.Value + ",";
                saveMultipleTextString += WeekAverageMax7.Value + ",";
                saveMultipleTextString += Multipled7.Value + "|";
                saveMultipleTextString += WeekAverageMin8.Value + ",";
                saveMultipleTextString += WeekAverageMax8.Value + ",";
                saveMultipleTextString += Multipled8.Value + "|";
                saveMultipleTextString += WeekAverageMin9.Value + ",";
                saveMultipleTextString += WeekAverageMax9.Value + ",";
                saveMultipleTextString += Multipled9.Value + "|";
                saveMultipleTextString += WeekAverageMin10.Value + ",";
                saveMultipleTextString += WeekAverageMax10.Value + ",";
                saveMultipleTextString += Multipled10.Value;
                if (multiplesettingInfo == null)//新增
                {
                    for (int j = 0; j < DevSelect.Items.Count; j++)
                    {
                        if (DevSelect.Items[j].CheckState == CheckState.Checked)
                        {
                            JC_MultiplesettingInfo saveMultiplesettingInfo = new JC_MultiplesettingInfo();
                            saveMultiplesettingInfo.Id           = Basic.Framework.Common.IdHelper.CreateLongId().ToString();
                            saveMultiplesettingInfo.Devid        = DevSelect.Items[j].Value.ToString();
                            saveMultiplesettingInfo.MultipleText = saveMultipleTextString;
                            JC_MultiplesettingAddRequest multiplesettingrequest = new JC_MultiplesettingAddRequest();
                            multiplesettingrequest.MultiplesettingInfo = saveMultiplesettingInfo;
                            multiplesettingService.AddMultiplesetting(multiplesettingrequest);
                        }
                    }
                }
                else//修改
                {
                    JC_MultiplesettingInfo saveMultiplesettingInfo = new JC_MultiplesettingInfo();
                    saveMultiplesettingInfo.Id           = multiplesettingInfo.Id;
                    saveMultiplesettingInfo.Devid        = multiplesettingInfo.Devid;
                    saveMultiplesettingInfo.MultipleText = saveMultipleTextString;
                    JC_MultiplesettingUpdateRequest multiplesettingrequest = new JC_MultiplesettingUpdateRequest();
                    multiplesettingrequest.MultiplesettingInfo = saveMultiplesettingInfo;
                    multiplesettingService.UpdateMultiplesetting(multiplesettingrequest);
                }

                parent.LoadData();
                this.Close();
            }
            catch (Exception ex)
            {
                Basic.Framework.Logging.LogHelper.Error(ex);
            }
        }