private void UpdateConfig() { lock (BasePublic.lockerConfig) { if (BasePublic.lstTagsAll == null || BasePublic.lstTagsAll.Count == 0) { BasePublic.lstTagsAll = BLLFactory <B_BS_TagDefine> .Instance.Find(" TagGroupID <> '-1' and IsUse='1' and IsVirtual<1 "); } mtTable = new MTTable(); foreach (var item in BasePublic.lstTagsAll) { var model = new MTKeyValue(); model.Key = item.ID; model.Count = 0; model.StartTime = DateTime.Now; model.AlarmCount = 0; model.NoDataCount = 0; model.Tag = item; mtTable.Add(model); } mtTableNQ = new MTTable(); foreach (var item in BasePublic.lstTagsAllNQ) { var model = new MTKeyValue(); model.Key = item.ID; model.Count = 0; model.StartTime = DateTime.Now; model.AlarmCount = 0; model.NoDataCount = 0; model.Tag = item; mtTableNQ.Add(model); } Console.WriteLine(string.Format("Socket位号配置更新成功...")); } }
/// <summary> /// 验证数据是否报警,并操作 /// </summary> /// <param name="lstAll"></param> /// <param name="dtStore"></param> /// <param name="mtTemp"></param> /// <param name="dtAlarm"></param> public void VerfyAlarm(List <M_BS_TagDefine> lstAll, DataTable dtStore, MTTable mtTemp, ref DataTable dtAlarm) { var rs = false; M_BS_TagDefine modelTag = null; MTKeyValue tempInfo = null; foreach (DataRow item in dtStore.Rows) { modelTag = (from li in lstAll where li.ID == item["TagID"].ToString() select li).FirstOrDefault(); tempInfo = (from li in mtTemp where li.Key == item["TagID"].ToString() select li).FirstOrDefault(); if (tempInfo == null || modelTag == null) { continue; } if (tempInfo.Count == 0) { tempInfo.StartTime = DateTime.Now; tempInfo.AlarmCount = 0; } if (tempInfo.Count >= BasePublic.OneDataCount) { tempInfo.StartTime = DateTime.Now; tempInfo.Count = 0; tempInfo.AlarmCount = 0; } tempInfo.Count += 1; var IsAlarm = false; var status = 0; if (modelTag.IsAlarm) { //该位号的前置位号 var modelPreTags = (from li in BasePublic.lstTagsAll where li.ID == modelTag.PreTags select li).FirstOrDefault(); if (modelPreTags == null || string.IsNullOrEmpty(modelPreTags.PreTags)) { } else { //查找前置位号的值 var modelPreValue = dtStore.Select(string.Format("TagID='{0}'", modelPreTags.ID)).FirstOrDefault(); //(from li in lst where li.TagID == model_PreTags.ID select li).FirstOrDefault(); if (modelPreValue != null && decimal.Parse(modelPreValue["RealValue"].ToString()) > 0) { IsAlarm = true; } } if (IsAlarm) { var isDo = (decimal.Parse(item["RealValue"].ToString()) > modelTag.TagHH) || (decimal.Parse(item["RealValue"].ToString()) < modelTag.TagLL); if (isDo) { tempInfo.AlarmCount += 1; //tempInfo.Status = status; } else { tempInfo.AlarmCount = 0; //tempInfo.Status = 0; } if (tempInfo.AlarmCount >= BasePublic.LimitAlarmCount) { if ( !(modelTag.AlarmTime <= DateTime.Parse(item["RealTime"].ToString()).AddSeconds(-BasePublic.AlarmPeriod))) { continue; } var modelEquipTag = (from li in lstEquipTags where li.TagCode == modelTag.ID select li).FirstOrDefault(); if (modelEquipTag == null) { continue; } var drAlarm = dtAlarm.NewRow(); drAlarm["ID"] = Guid.NewGuid(); drAlarm["EquCode"] = modelEquipTag.EquCode; drAlarm["EquName"] = modelEquipTag.EquipName; drAlarm["TagCode"] = modelEquipTag.TagCode; drAlarm["TagName"] = modelEquipTag.TagName; drAlarm["TagEU"] = modelTag.TagEU; drAlarm["TagLL"] = modelTag.TagLL; drAlarm["TagL"] = modelTag.TagL; drAlarm["TagH"] = modelTag.TagH; drAlarm["TagHH"] = modelTag.TagHH; drAlarm["RealValue"] = item["RealValue"]; drAlarm["RealState"] = 1; drAlarm["RealTime"] = item["RealTime"]; drAlarm["IsDealed"] = 1; dtAlarm.Rows.Add(drAlarm); tempInfo.AlarmCount = 0; tempInfo.Status = 0; } } } } InsertToServer(dtAlarm, "T_EP_EquipWarning"); }