private void UpdateCache(string titles, string Datas) { string[] titleList = titles.Split(','); string[] rtmRows = Datas.Split('\r'); string[] columns; try { foreach (string row in rtmRows) { if (!string.IsNullOrEmpty(row)) { columns = row.Split(','); if (columns.Length > 16) { Model.TN_Rtm tRtm = rtmDatas.Find(r => r.CoalCode == titleList[0] && r.DevCode == columns[1] && (r.DevState != columns[13] || r.DevValue != decimal.Parse(columns[12]))); if (tRtm != null) { #region Add rtmDatas.Remove(tRtm); Model.TN_Rtm rtm = new Model.TN_Rtm(); ////////////////////////////////////// rtm.MonitorLRV = columns[6]; rtm.MonitorURV = columns[7]; if (decimal.Parse(columns[9]) < decimal.Parse(columns[8])) { rtm.AlarmLRV = columns[9]; rtm.AlarmURV = columns[8]; } else { rtm.AlarmLRV = columns[8]; rtm.AlarmURV = columns[9]; } rtm.TurnOffValue = columns[10]; rtm.TurnOnValue = columns[11]; rtm.DevName = columns[2]; rtm.DevAddress = columns[4]; rtm.DevType = columns[3]; rtm.DevUnit = columns[5]; rtm.DevValue = decimal.Parse(columns[12]); rtm.RealTime = columns[14]; rtm.ChageStateTime = columns[16]; if (columns[13] == "1" || statusList[Convert.ToInt32(columns[13])] == "报警") { if (columns[3] == "开关量") { rtm.DevStatus = "正常"; rtm.DevState = "0"; } else { rtm.DevState = columns[13]; rtm.DevStatus = statusList[Convert.ToInt32(columns[13])]; } } else { rtm.DevState = columns[13]; rtm.DevStatus = statusList[Convert.ToInt32(columns[13])]; } //renyb add modify 2010/10/20 14:18 if (IsUseYJ.ToLower() == "true") { #region 根据国家标准判断数据是否报警,并启用预警功能 if (rtm.DevType == "模拟量") { if (rtm.DevName == "瓦斯") { rtm.AlarmURV = GBVsAlarmValue; rtm.AlarmLRV = GBVsAlarmLValue; if (alarmWSgrade[0].ToString() != "0") { if (Convert.ToDecimal(rtm.DevValue) >= Convert.ToDecimal(alarmWSgrade[0]) && Convert.ToDecimal(rtm.DevValue) < Convert.ToDecimal(alarmWSgrade[1])) { rtm.DevState = "1"; rtm.DevStatus = "预警"; } else if (Convert.ToDecimal(rtm.DevValue) >= Convert.ToDecimal(alarmWSgrade[1]) && Convert.ToDecimal(rtm.DevValue) < Convert.ToDecimal(alarmWSgrade[2])) { rtm.DevState = "1"; rtm.DevStatus = "重警"; } else if (Convert.ToDecimal(rtm.DevValue) >= Convert.ToDecimal(alarmWSgrade[2])) { rtm.DevState = "1"; rtm.DevStatus = "特警"; } if (rtm.DevState == "1" || rtm.DevStatus == "报警") { if (rtm.DevValue == 0 || rtm.DevValue < decimal.Parse(alarmWSgrade[0])) { rtm.DevStatus = "正常"; rtm.DevState = "0"; } } } } else if (rtm.DevName == "一氧化碳") { rtm.AlarmURV = GBCoAlarmValue; rtm.AlarmLRV = GBCoAlarmLValue; if (alarmCOgrade[0].ToString() != "0") { if (Convert.ToDecimal(rtm.DevValue) >= Convert.ToDecimal(alarmWSgrade[0]) && Convert.ToDecimal(rtm.DevValue) < Convert.ToDecimal(alarmWSgrade[1])) { rtm.DevState = "1"; rtm.DevStatus = "预警"; } else if (Convert.ToDecimal(rtm.DevValue) >= Convert.ToDecimal(alarmWSgrade[1]) && Convert.ToDecimal(rtm.DevValue) < Convert.ToDecimal(alarmWSgrade[2])) { rtm.DevState = "1"; rtm.DevStatus = "重警"; } else if (Convert.ToDecimal(rtm.DevValue) >= Convert.ToDecimal(alarmWSgrade[2])) { rtm.DevState = "1"; rtm.DevStatus = "特警"; } if (rtm.DevState == "1" || rtm.DevStatus == "报警") { if (rtm.DevValue == 0 || rtm.DevValue < decimal.Parse(alarmCOgrade[0].ToString())) { rtm.DevStatus = "正常"; rtm.DevState = "0"; } } } } } #endregion } else { #region 根据国家标准判断数据是否报警 if (rtm.DevType == "模拟量") { if (rtm.DevName == "瓦斯") { rtm.AlarmURV = GBVsAlarmValue; rtm.AlarmLRV = GBVsAlarmLValue; } else if (rtm.DevName == "一氧化碳") { rtm.AlarmURV = GBCoAlarmValue; rtm.AlarmLRV = GBCoAlarmLValue; } if (rtm.AlarmURV != "0") { if (rtm.DevValue >= decimal.Parse(rtm.AlarmURV)) { rtm.DevState = "1"; rtm.DevStatus = "报警"; } if (rtm.DevState == "1" || rtm.DevStatus == "报警") { if (rtm.DevValue == 0 || rtm.DevValue < decimal.Parse(rtm.AlarmURV)) { rtm.DevStatus = "正常"; rtm.DevState = "0"; } } } } #endregion } rtmDatas.Add(FileterSwitchInfo(rtm)); #endregion } else { Model.TN_Rtm rtm = new Model.TN_Rtm { CoalCode = titleList[0], CoalName = titleList[1], MonitorLRV = columns[6], MonitorURV = columns[7], AlarmLRV = columns[8], AlarmURV = columns[9], TurnOffValue = columns[10], TurnOnValue = columns[11], DevCode = columns[1], DevName = columns[2], DevAddress = columns[4], DevType = columns[3], DevUnit = columns[5], DevValue = decimal.Parse(columns[12]), DevState = columns[13], DevStatus = statusList[Convert.ToInt32(columns[13])],//传感器状态 RealTime = columns[14], ChageStateTime = columns[16]//TODO:此处传感器状态变化开始时间还没有完成,包括异常(报警、故障等)开始时间,开关量状态变动时间 }; if (columns[13] == "1" || statusList[Convert.ToInt32(columns[13])] == "报警") { if (rtm.DevType == "开关量") { //if (tRtm.DevState == "1" || tRtm.DevStatus == "报警") //{ rtm.DevStatus = "正常"; rtm.DevState = "0"; //} } else { rtm.DevState = columns[13]; rtm.DevStatus = statusList[Convert.ToInt32(columns[13])]; } } else { rtm.DevState = columns[13]; rtm.DevStatus = statusList[Convert.ToInt32(columns[13])]; } if (decimal.Parse(columns[9]) < decimal.Parse(columns[8])) { rtm.AlarmLRV = columns[9]; rtm.AlarmURV = columns[8]; } else { rtm.AlarmLRV = columns[8]; rtm.AlarmURV = columns[9]; } //renyb add modify 2010/10/20 14:18 if (IsUseYJ.ToLower() == "true") { #region 根据国家标准判断数据是否报警,并启用预警功能 if (rtm.DevType == "模拟量") { if (rtm.DevName == "瓦斯") { rtm.AlarmURV = GBVsAlarmValue; rtm.AlarmLRV = GBVsAlarmLValue; if (AlarmWSValue != "") { if (Convert.ToDecimal(rtm.DevValue) >= Convert.ToDecimal(alarmWSgrade[0]) && Convert.ToDecimal(rtm.DevValue) < Convert.ToDecimal(alarmWSgrade[1])) { rtm.DevState = "1"; rtm.DevStatus = "预警"; } else if (Convert.ToDecimal(rtm.DevValue) >= Convert.ToDecimal(alarmWSgrade[1]) && Convert.ToDecimal(rtm.DevValue) < Convert.ToDecimal(alarmWSgrade[2])) { rtm.DevState = "1"; rtm.DevStatus = "重警"; } else if (Convert.ToDecimal(rtm.DevValue) >= Convert.ToDecimal(alarmWSgrade[2])) { rtm.DevState = "1"; rtm.DevStatus = "特警"; } if (rtm.DevState == "1" || rtm.DevStatus == "报警") { if (rtm.DevValue == 0 || rtm.DevValue < decimal.Parse(alarmWSgrade[0])) { rtm.DevStatus = "正常"; rtm.DevState = "0"; } } } } else if (rtm.DevName == "一氧化碳") { rtm.AlarmURV = GBCoAlarmValue; rtm.AlarmLRV = GBCoAlarmLValue; if (AlarmCOValue != "") { if (rtm.DevValue >= decimal.Parse(alarmCOgrade[0].ToString())) { rtm.DevState = "1"; rtm.DevStatus = "报警"; } if (Convert.ToDecimal(rtm.DevValue) >= Convert.ToDecimal(alarmCOgrade[0]) && Convert.ToDecimal(rtm.DevValue) < Convert.ToDecimal(alarmCOgrade[1])) { rtm.DevState = "1"; rtm.DevStatus = "预警"; } else if (Convert.ToDecimal(rtm.DevValue) >= Convert.ToDecimal(alarmCOgrade[1]) && Convert.ToDecimal(rtm.DevValue) < Convert.ToDecimal(alarmCOgrade[2])) { rtm.DevState = "1"; rtm.DevStatus = "重警"; } else if (Convert.ToDecimal(rtm.DevValue) >= Convert.ToDecimal(alarmCOgrade[2])) { rtm.DevState = "1"; rtm.DevStatus = "特警"; } if (rtm.DevState == "1" || rtm.DevStatus == "报警") { if (rtm.DevValue == 0 || rtm.DevValue < decimal.Parse(alarmCOgrade[0].ToString())) { rtm.DevStatus = "正常"; rtm.DevState = "0"; } } } } } #endregion } else { #region 根据国家标准判断数据是否报警 if (rtm.DevType == "模拟量") { if (rtm.DevName == "瓦斯") { rtm.AlarmURV = GBVsAlarmValue; rtm.AlarmLRV = GBVsAlarmLValue; } if (rtm.DevName == "一氧化碳") { rtm.AlarmURV = GBCoAlarmValue; rtm.AlarmLRV = GBCoAlarmLValue; } if (rtm.AlarmURV != "0") { if (rtm.DevValue >= decimal.Parse(rtm.AlarmURV)) { rtm.DevState = "1"; rtm.DevStatus = "报警"; } if (rtm.DevState == "1" || rtm.DevStatus == "报警") { if (rtm.DevValue == 0 || rtm.DevValue < decimal.Parse(rtm.AlarmURV)) { rtm.DevStatus = "正常"; rtm.DevState = "0"; } } } } #endregion } rtmDatas.Add(rtm); } } } } } catch (NullReferenceException exec) { log.Write(exec, "methord:UpdateCache"); } catch (IndexOutOfRangeException exec) { log.Write(exec, "methord:UpdateCache"); } //catch (Exception exec) { log.Write(exec); } rtmDatas.Sort(new RtmSort()); // rtmDatas.RemoveAll(rtm => rtm != null && rtm.CoalCode == titleList[0] && rtm.RealTime != titleList[2]); }
/// <summary> /// 更新缓存数据 /// </summary> /// <param name="titles"></param> /// <param name="Datas"></param> private void UpdateCache(string titles, string Datas) { string[] titleList = titles.Split(','); string[] rtmRows = Datas.Split('\r'); string[] columns; try { List<Model.TN_Rtm> tm = RtmDatas.FindAll(r => r.CoalCode == titleList[0]); if (tm.Count != rtmRows.Length+1) { foreach (Model.TN_Rtm ntm in tm) { RtmDatas.Remove(ntm); } foreach (string row in rtmRows) { if (!string.IsNullOrEmpty(row)) { columns = row.Split(','); if (columns.Length > 16) { #region 增加数据 Model.TN_Rtm rtm = new Model.TN_Rtm { CoalCode = titleList[0], CoalName = titleList[1], MonitorLRV = columns[6], MonitorURV = columns[7], AlarmLRV = columns[8], AlarmURV = columns[9], TurnOffValue = columns[10], TurnOnValue = columns[11], DevCode = columns[1], DevName = columns[2], DevAddress = columns[4], DevType = columns[3], DevUnit = columns[5], DevValue = decimal.Parse(columns[12]), DevState = columns[13], DevStatus = statusList[Convert.ToInt32(columns[13])],//传感器状态 RealTime = columns[14], ChageStateTime = columns[16]//TODO:此处传感器状态变化开始时间还没有完成,包括异常(报警、故障等)开始时间,开关量状态变动时间 }; if (columns[13] == "1" || statusList[Convert.ToInt32(columns[13])] == "报警") { if (rtm.DevType == "开关量") { rtm.DevState = columns[13]; //rtm.DevStatus = "正常"; rtm.DevStatus = statusList[Convert.ToInt32(columns[13])]; // rtm.DevState = "0"; } else { rtm.DevState = columns[13]; rtm.DevStatus = statusList[Convert.ToInt32(columns[13])]; } } else { rtm.DevState = columns[13]; rtm.DevStatus = statusList[Convert.ToInt32(columns[13])]; } string columns9 = columns[9].Trim().Length == 0 ? "0" : columns[9]; string columns8 = columns[8].Trim().Length == 0 ? "0" : columns[8]; if (decimal.Parse(columns9) < decimal.Parse(columns8)) { rtm.AlarmLRV = columns[9]; rtm.AlarmURV = columns[8]; } else { rtm.AlarmLRV = columns[8]; rtm.AlarmURV = columns[9]; } //renyb add modify 2010/10/20 14:18 if (IsUseYJ.ToLower() == "true") { #region 根据国家标准判断数据是否报警,并启用预警功能 if (rtm.DevType == "模拟量") { if (rtm.DevName == "瓦斯") { rtm.AlarmURV = GBVsAlarmValue; rtm.AlarmLRV = GBVsAlarmLValue; if (AlarmWSValue != "") { if (Convert.ToDecimal(rtm.DevValue) >= Convert.ToDecimal(alarmWSgrade[0]) && Convert.ToDecimal(rtm.DevValue) < Convert.ToDecimal(alarmWSgrade[1])) { rtm.DevState = "1"; rtm.DevStatus = "预警"; } else if (Convert.ToDecimal(rtm.DevValue) >= Convert.ToDecimal(alarmWSgrade[1]) && Convert.ToDecimal(rtm.DevValue) < Convert.ToDecimal(alarmWSgrade[2])) { rtm.DevState = "1"; rtm.DevStatus = "重警"; } else if (Convert.ToDecimal(rtm.DevValue) >= Convert.ToDecimal(alarmWSgrade[2])) { rtm.DevState = "1"; rtm.DevStatus = "特警"; } if (rtm.DevState == "1" || rtm.DevStatus == "报警") { if (rtm.DevValue == 0 || rtm.DevValue < decimal.Parse(alarmWSgrade[0])) { rtm.DevStatus = "正常"; rtm.DevState = "0"; } } } } else if (rtm.DevName == "一氧化碳") { rtm.AlarmURV = GBCoAlarmValue; rtm.AlarmLRV = GBCoAlarmLValue; if (AlarmCOValue != "") { if (rtm.DevValue >= decimal.Parse(alarmCOgrade[0].ToString())) { rtm.DevState = "1"; rtm.DevStatus = "报警"; } if (Convert.ToDecimal(rtm.DevValue) >= Convert.ToDecimal(alarmCOgrade[0]) && Convert.ToDecimal(rtm.DevValue) < Convert.ToDecimal(alarmCOgrade[1])) { rtm.DevState = "1"; rtm.DevStatus = "预警"; } else if (Convert.ToDecimal(rtm.DevValue) >= Convert.ToDecimal(alarmCOgrade[1]) && Convert.ToDecimal(rtm.DevValue) < Convert.ToDecimal(alarmCOgrade[2])) { rtm.DevState = "1"; rtm.DevStatus = "重警"; } else if (Convert.ToDecimal(rtm.DevValue) >= Convert.ToDecimal(alarmCOgrade[2])) { rtm.DevState = "1"; rtm.DevStatus = "特警"; } if (rtm.DevState == "1" || rtm.DevStatus == "报警") { if (rtm.DevValue == 0 || rtm.DevValue < decimal.Parse(alarmCOgrade[0].ToString())) { rtm.DevStatus = "正常"; rtm.DevState = "0"; } } } } } #endregion } else { #region 根据国家标准判断数据是否报警 #region add by tangcy 增加抽放泵报警控制 小于30%报警 //if (rtm.DevType == "模拟量") if(false) //(NoUseGB.Contains(rtm.DevAddress) && NoUseGB.Contains(rtm.DevCode) && NoUseGB.Contains(rtm.CoalName)) { //rtm.DevStatus = "正常"; //rtm.DevState = "0"; #region //if (rtm.AlarmURV != "0" && rtm.AlarmURV != "") //{ // if (rtm.DevValue <30) // { // rtm.DevState = "1"; // rtm.DevStatus = "报警"; // } // if (rtm.DevState == "1" || rtm.DevStatus == "报警") // { // if (rtm.DevValue >= 30) // { // rtm.DevStatus = "正常"; // rtm.DevState = "0"; // } // } //} #endregion } #endregion else if(rtm.DevType == "模拟量") { if (rtm.DevName == "瓦斯") { rtm.AlarmURV = GBVsAlarmValue; rtm.AlarmLRV = GBVsAlarmLValue; } if (rtm.DevName == "一氧化碳") { rtm.AlarmURV = GBCoAlarmValue; rtm.AlarmLRV = GBCoAlarmLValue; } if (rtm.AlarmURV != "0"&&rtm.AlarmURV!="") { if (rtm.DevValue >= decimal.Parse(rtm.AlarmURV)) { rtm.DevState = "1"; rtm.DevStatus = "报警"; } if (rtm.DevState == "1" || rtm.DevStatus == "报警") { if (rtm.DevValue == 0 || rtm.DevValue < decimal.Parse(rtm.AlarmURV)) { rtm.DevStatus = "正常"; rtm.DevState = "0"; } } } } #endregion } //rtmDatas.Add(rtm); RtmDatas.Add(rtm); #endregion } } } } else { foreach (string row in rtmRows) { if (!string.IsNullOrEmpty(row)) { columns = row.Split(','); if (columns.Length > 16) { Model.TN_Rtm tRtm = RtmDatas.Find(r => r.CoalCode == titleList[0] && r.DevCode == columns[1]); #region 更新数据 if (tRtm != null) { if (tRtm.DevState != columns[13] || tRtm.DevValue != decimal.Parse(columns[12])) { //先清除在内存中的该条记录 rtmDatas.Remove(tRtm); Model.TN_Rtm newRtm = new TDTK.IndustryPlatform.SafetyMonitor.Model.TN_Rtm(); newRtm.CoalCode = titleList[0]; newRtm.DevCode = columns[1]; newRtm.CoalName = titleList[1]; newRtm.MonitorLRV = columns[6]; newRtm.MonitorURV = columns[7]; string columns9 = columns[9].Trim().Length == 0 ? "0" : columns[9]; string columns8 = columns[8].Trim().Length == 0 ? "0" : columns[8]; if (decimal.Parse(columns9) < decimal.Parse(columns8)) { newRtm.AlarmLRV = columns[9]; newRtm.AlarmURV = columns[8]; } else { newRtm.AlarmLRV = columns[8]; newRtm.AlarmURV = columns[9]; } newRtm.TurnOffValue = columns[10]; newRtm.TurnOnValue = columns[11]; newRtm.DevName = columns[2]; newRtm.DevAddress = columns[4]; newRtm.DevType = columns[3]; newRtm.DevUnit = columns[5]; newRtm.DevValue = decimal.Parse(columns[12]); newRtm.RealTime = columns[14]; newRtm.ChageStateTime = columns[16]; if (columns[13] == "1" || statusList[Convert.ToInt32(columns[13])] == "报警") { if (columns[3] == "开关量") { newRtm.DevState = columns[13]; // newRtm.DevStatus = "正常"; newRtm.DevStatus = statusList[Convert.ToInt32(columns[13])]; // newRtm.DevState = "0"; } else { newRtm.DevState = columns[13]; newRtm.DevStatus = statusList[Convert.ToInt32(columns[13])]; } } else { newRtm.DevState = columns[13]; newRtm.DevStatus = statusList[Convert.ToInt32(columns[13])]; } //renyb add modify 2010/10/20 14:18 if (IsUseYJ.ToLower() == "true") { #region 根据国家标准判断数据是否报警,并启用预警功能 if (newRtm.DevType == "模拟量") { if (newRtm.DevName == "瓦斯") { newRtm.AlarmURV = GBVsAlarmValue; newRtm.AlarmLRV = GBVsAlarmLValue; if (alarmWSgrade[0].ToString() != "0") { if (Convert.ToDecimal(newRtm.DevValue) >= Convert.ToDecimal(alarmWSgrade[0]) && Convert.ToDecimal(newRtm.DevValue) < Convert.ToDecimal(alarmWSgrade[1])) { newRtm.DevState = "1"; newRtm.DevStatus = "预警"; } else if (Convert.ToDecimal(newRtm.DevValue) >= Convert.ToDecimal(alarmWSgrade[1]) && Convert.ToDecimal(newRtm.DevValue) < Convert.ToDecimal(alarmWSgrade[2])) { newRtm.DevState = "1"; newRtm.DevStatus = "重警"; } else if (Convert.ToDecimal(newRtm.DevValue) >= Convert.ToDecimal(alarmWSgrade[2])) { newRtm.DevState = "1"; newRtm.DevStatus = "特警"; } if (newRtm.DevState == "1" || newRtm.DevStatus == "报警") { if (newRtm.DevValue == 0 || newRtm.DevValue < decimal.Parse(alarmWSgrade[0])) { newRtm.DevStatus = "正常"; newRtm.DevState = "0"; } } } } else if (newRtm.DevName == "一氧化碳") { newRtm.AlarmURV = GBCoAlarmValue; newRtm.AlarmLRV = GBCoAlarmLValue; if (alarmCOgrade[0].ToString() != "0") { if (Convert.ToDecimal(newRtm.DevValue) >= Convert.ToDecimal(alarmWSgrade[0]) && Convert.ToDecimal(newRtm.DevValue) < Convert.ToDecimal(alarmWSgrade[1])) { newRtm.DevState = "1"; newRtm.DevStatus = "预警"; } else if (Convert.ToDecimal(newRtm.DevValue) >= Convert.ToDecimal(alarmWSgrade[1]) && Convert.ToDecimal(newRtm.DevValue) < Convert.ToDecimal(alarmWSgrade[2])) { newRtm.DevState = "1"; newRtm.DevStatus = "重警"; } else if (Convert.ToDecimal(newRtm.DevValue) >= Convert.ToDecimal(alarmWSgrade[2])) { newRtm.DevState = "1"; newRtm.DevStatus = "特警"; } if (newRtm.DevState == "1" || newRtm.DevStatus == "报警") { if (newRtm.DevValue == 0 || newRtm.DevValue < decimal.Parse(alarmCOgrade[0].ToString())) { newRtm.DevStatus = "正常"; newRtm.DevState = "0"; } } } } } #endregion } else { #region 根据国家标准判断数据是否报警 //if (rtm.DevType == "模拟量") #region add by tangcy 增加抽放泵报警控制 小于30%报警 if (NoUseGB.Contains(newRtm.DevAddress) && NoUseGB.Contains(newRtm.DevCode) && NoUseGB.Contains(newRtm.CoalName)) { newRtm.DevStatus = "正常"; newRtm.DevState = "0"; #region //if (newRtm.AlarmURV != "0" && newRtm.AlarmURV != "") //{ // if (newRtm.DevValue < 30) // { // newRtm.DevState = "1"; // newRtm.DevStatus = "报警"; // } // if (newRtm.DevState == "1" || newRtm.DevStatus == "报警") // { // if (newRtm.DevValue >= 30) // { // newRtm.DevStatus = "正常"; // newRtm.DevState = "0"; // } // } //} #endregion } #endregion else if (newRtm.DevType == "模拟量") { if (newRtm.DevName == "瓦斯") { newRtm.AlarmURV = GBVsAlarmValue; newRtm.AlarmLRV = GBVsAlarmLValue; } else if (newRtm.DevName == "一氧化碳") { newRtm.AlarmURV = GBCoAlarmValue; newRtm.AlarmLRV = GBCoAlarmLValue; } if (newRtm.AlarmURV != "0" && newRtm.AlarmURV!="") { if (newRtm.DevValue >= decimal.Parse(newRtm.AlarmURV)) { newRtm.DevState = "1"; newRtm.DevStatus = "报警"; } if (newRtm.DevState == "1" || newRtm.DevStatus == "报警") { if (newRtm.DevValue == 0 || newRtm.DevValue < decimal.Parse(newRtm.AlarmURV)) { newRtm.DevStatus = "正常"; newRtm.DevState = "0"; } } } } #endregion } //tRtm = newRtm; //重新追加这条记录的最新值到内存中; RtmDatas.Add(newRtm); } } #endregion #region 增加数据 else { Model.TN_Rtm rtm = new Model.TN_Rtm { CoalCode = titleList[0], CoalName = titleList[1], MonitorLRV = columns[6], MonitorURV = columns[7], AlarmLRV = columns[8], AlarmURV = columns[9], TurnOffValue = columns[10], TurnOnValue = columns[11], DevCode = columns[1], DevName = columns[2], DevAddress = columns[4], DevType = columns[3], DevUnit = columns[5], DevValue = decimal.Parse(columns[12]), DevState = columns[13], DevStatus = statusList[Convert.ToInt32(columns[13])],//传感器状态 RealTime = columns[14], ChageStateTime = columns[16]//TODO:此处传感器状态变化开始时间还没有完成,包括异常(报警、故障等)开始时间,开关量状态变动时间 }; if (columns[13] == "1" || statusList[Convert.ToInt32(columns[13])] == "报警") { if (rtm.DevType == "开关量") { rtm.DevState = columns[13]; //rtm.DevStatus = "正常"; rtm.DevStatus = statusList[Convert.ToInt32(columns[13])]; //rtm.DevState = "0"; } else { rtm.DevState = columns[13]; rtm.DevStatus = statusList[Convert.ToInt32(columns[13])]; } } else { rtm.DevState = columns[13]; rtm.DevStatus = statusList[Convert.ToInt32(columns[13])]; } string columns9 = columns[9].Trim().Length == 0 ? "0" : columns[9]; string columns8 = columns[8].Trim().Length == 0 ? "0" : columns[8]; if (decimal.Parse(columns9) < decimal.Parse(columns8)) { rtm.AlarmLRV = columns[9]; rtm.AlarmURV = columns[8]; } else { rtm.AlarmLRV = columns[8]; rtm.AlarmURV = columns[9]; } //renyb add modify 2010/10/20 14:18 if (IsUseYJ.ToLower() == "true") { #region 根据国家标准判断数据是否报警,并启用预警功能 if (rtm.DevType == "模拟量") { if (rtm.DevName == "瓦斯") { rtm.AlarmURV = GBVsAlarmValue; rtm.AlarmLRV = GBVsAlarmLValue; if (AlarmWSValue != "") { if (Convert.ToDecimal(rtm.DevValue) >= Convert.ToDecimal(alarmWSgrade[0]) && Convert.ToDecimal(rtm.DevValue) < Convert.ToDecimal(alarmWSgrade[1])) { rtm.DevState = "1"; rtm.DevStatus = "预警"; } else if (Convert.ToDecimal(rtm.DevValue) >= Convert.ToDecimal(alarmWSgrade[1]) && Convert.ToDecimal(rtm.DevValue) < Convert.ToDecimal(alarmWSgrade[2])) { rtm.DevState = "1"; rtm.DevStatus = "重警"; } else if (Convert.ToDecimal(rtm.DevValue) >= Convert.ToDecimal(alarmWSgrade[2])) { rtm.DevState = "1"; rtm.DevStatus = "特警"; } if (rtm.DevState == "1" || rtm.DevStatus == "报警") { if (rtm.DevValue == 0 || rtm.DevValue < decimal.Parse(alarmWSgrade[0])) { rtm.DevStatus = "正常"; rtm.DevState = "0"; } } } } else if (rtm.DevName == "一氧化碳") { rtm.AlarmURV = GBCoAlarmValue; rtm.AlarmLRV = GBCoAlarmLValue; if (AlarmCOValue != "") { if (rtm.DevValue >= decimal.Parse(alarmCOgrade[0].ToString())) { rtm.DevState = "1"; rtm.DevStatus = "报警"; } if (Convert.ToDecimal(rtm.DevValue) >= Convert.ToDecimal(alarmCOgrade[0]) && Convert.ToDecimal(rtm.DevValue) < Convert.ToDecimal(alarmCOgrade[1])) { rtm.DevState = "1"; rtm.DevStatus = "预警"; } else if (Convert.ToDecimal(rtm.DevValue) >= Convert.ToDecimal(alarmCOgrade[1]) && Convert.ToDecimal(rtm.DevValue) < Convert.ToDecimal(alarmCOgrade[2])) { rtm.DevState = "1"; rtm.DevStatus = "重警"; } else if (Convert.ToDecimal(rtm.DevValue) >= Convert.ToDecimal(alarmCOgrade[2])) { rtm.DevState = "1"; rtm.DevStatus = "特警"; } if (rtm.DevState == "1" || rtm.DevStatus == "报警") { if (rtm.DevValue == 0 || rtm.DevValue < decimal.Parse(alarmCOgrade[0].ToString())) { rtm.DevStatus = "正常"; rtm.DevState = "0"; } } } } } #endregion } else { #region 根据国家标准判断数据是否报警 //if (rtm.DevType == "模拟量") #region add by tangcy 增加抽放泵报警控制 if (NoUseGB.Contains(rtm.DevAddress) && NoUseGB.Contains(rtm.DevCode) && NoUseGB.Contains(rtm.CoalName)) { rtm.DevStatus = "正常"; rtm.DevState = "0"; #region //if (rtm.AlarmURV != "0" && rtm.AlarmURV != "") //{ // if (rtm.DevValue <30) // { // rtm.DevState = "1"; // rtm.DevStatus = "报警"; // } // if (rtm.DevState == "1" || rtm.DevStatus == "报警") // { // if (rtm.DevValue >= 30) // { // rtm.DevStatus = "正常"; // rtm.DevState = "0"; // } // } //} #endregion } #endregion else if (rtm.DevType == "模拟量") { if (rtm.DevName == "瓦斯") { rtm.AlarmURV = GBVsAlarmValue; rtm.AlarmLRV = GBVsAlarmLValue; } if (rtm.DevName == "一氧化碳") { rtm.AlarmURV = GBCoAlarmValue; rtm.AlarmLRV = GBCoAlarmLValue; } if (rtm.AlarmURV != "0" && rtm.AlarmURV!="") { if (rtm.DevValue >= decimal.Parse(rtm.AlarmURV)) { rtm.DevState = "1"; rtm.DevStatus = "报警"; } if (rtm.DevState == "1" || rtm.DevStatus == "报警") { if (rtm.DevValue == 0 || rtm.DevValue < decimal.Parse(rtm.AlarmURV)) { rtm.DevStatus = "正常"; rtm.DevState = "0"; } } } } #endregion } //rtmDatas.Add(rtm); RtmDatas.Add(rtm); } #endregion } } } } #region 更新上传传感器信息 20110329 tangcy 屏蔽 //foreach (string row in rtmRows) //{ // if (!string.IsNullOrEmpty(row)) // { // columns = row.Split(','); // if (columns.Length > 16) // { // Model.TN_Rtm tRtm = RtmDatas.Find(r => r.CoalCode == titleList[0] && r.DevCode == columns[1]); #region 更新数据 // if (tRtm != null) // { // if (tRtm.DevState != columns[13] || tRtm.DevValue != decimal.Parse(columns[12])) // { // //先清除在内存中的该条记录 // rtmDatas.Remove(tRtm); // Model.TN_Rtm newRtm = new TDTK.IndustryPlatform.SafetyMonitor.Model.TN_Rtm(); // newRtm.CoalCode = titleList[0]; // newRtm.DevCode = columns[1]; // newRtm.CoalName = titleList[1]; // newRtm.MonitorLRV = columns[6]; // newRtm.MonitorURV = columns[7]; // if (decimal.Parse(columns[9]) < decimal.Parse(columns[8])) // { // newRtm.AlarmLRV = columns[9]; // newRtm.AlarmURV = columns[8]; // } // else // { // newRtm.AlarmLRV = columns[8]; // newRtm.AlarmURV = columns[9]; // } // newRtm.TurnOffValue = columns[10]; // newRtm.TurnOnValue = columns[11]; // newRtm.DevName = columns[2]; // newRtm.DevAddress = columns[4]; // newRtm.DevType = columns[3]; // newRtm.DevUnit = columns[5]; // newRtm.DevValue = decimal.Parse(columns[12]); // newRtm.RealTime = columns[14]; // newRtm.ChageStateTime = columns[16]; // if (columns[13] == "1" || statusList[Convert.ToInt32(columns[13])] == "报警") // { // if (columns[3] == "开关量") // { // newRtm.DevStatus = "正常"; // newRtm.DevState = "0"; // } // else // { // newRtm.DevState = columns[13]; // newRtm.DevStatus = statusList[Convert.ToInt32(columns[13])]; // } // } // else // { // newRtm.DevState = columns[13]; // newRtm.DevStatus = statusList[Convert.ToInt32(columns[13])]; // } // //renyb add modify 2010/10/20 14:18 // if (IsUseYJ.ToLower() == "true") // { // #region 根据国家标准判断数据是否报警,并启用预警功能 // if (newRtm.DevType == "模拟量") // { // if (newRtm.DevName == "瓦斯") // { // newRtm.AlarmURV = GBVsAlarmValue; // newRtm.AlarmLRV = GBVsAlarmLValue; // if (alarmWSgrade[0].ToString() != "0") // { // if (Convert.ToDecimal(newRtm.DevValue) >= Convert.ToDecimal(alarmWSgrade[0]) && Convert.ToDecimal(newRtm.DevValue) < Convert.ToDecimal(alarmWSgrade[1])) // { // newRtm.DevState = "1"; // newRtm.DevStatus = "预警"; // } // else if (Convert.ToDecimal(newRtm.DevValue) >= Convert.ToDecimal(alarmWSgrade[1]) && Convert.ToDecimal(newRtm.DevValue) < Convert.ToDecimal(alarmWSgrade[2])) // { // newRtm.DevState = "1"; // newRtm.DevStatus = "重警"; // } // else if (Convert.ToDecimal(newRtm.DevValue) >= Convert.ToDecimal(alarmWSgrade[2])) // { // newRtm.DevState = "1"; // newRtm.DevStatus = "特警"; // } // if (newRtm.DevState == "1" || newRtm.DevStatus == "报警") // { // if (newRtm.DevValue == 0 || newRtm.DevValue < decimal.Parse(alarmWSgrade[0])) // { // newRtm.DevStatus = "正常"; // newRtm.DevState = "0"; // } // } // } // } // else if (newRtm.DevName == "一氧化碳") // { // newRtm.AlarmURV = GBCoAlarmValue; // newRtm.AlarmLRV = GBCoAlarmLValue; // if (alarmCOgrade[0].ToString() != "0") // { // if (Convert.ToDecimal(newRtm.DevValue) >= Convert.ToDecimal(alarmWSgrade[0]) && Convert.ToDecimal(newRtm.DevValue) < Convert.ToDecimal(alarmWSgrade[1])) // { // newRtm.DevState = "1"; // newRtm.DevStatus = "预警"; // } // else if (Convert.ToDecimal(newRtm.DevValue) >= Convert.ToDecimal(alarmWSgrade[1]) && Convert.ToDecimal(newRtm.DevValue) < Convert.ToDecimal(alarmWSgrade[2])) // { // newRtm.DevState = "1"; // newRtm.DevStatus = "重警"; // } // else if (Convert.ToDecimal(newRtm.DevValue) >= Convert.ToDecimal(alarmWSgrade[2])) // { // newRtm.DevState = "1"; // newRtm.DevStatus = "特警"; // } // if (newRtm.DevState == "1" || newRtm.DevStatus == "报警") // { // if (newRtm.DevValue == 0 || newRtm.DevValue < decimal.Parse(alarmCOgrade[0].ToString())) // { // newRtm.DevStatus = "正常"; // newRtm.DevState = "0"; // } // } // } // } // } // #endregion // } // else // { // #region 根据国家标准判断数据是否报警 // if (newRtm.DevType == "模拟量") // { // if (newRtm.DevName == "瓦斯") // { // newRtm.AlarmURV = GBVsAlarmValue; // newRtm.AlarmLRV = GBVsAlarmLValue; // } // else if (newRtm.DevName == "一氧化碳") // { // newRtm.AlarmURV = GBCoAlarmValue; // newRtm.AlarmLRV = GBCoAlarmLValue; // } // if (newRtm.AlarmURV != "0") // { // if (newRtm.DevValue >= decimal.Parse(newRtm.AlarmURV)) // { // newRtm.DevState = "1"; // newRtm.DevStatus = "报警"; // } // if (newRtm.DevState == "1" || newRtm.DevStatus == "报警") // { // if (newRtm.DevValue == 0 || newRtm.DevValue < decimal.Parse(newRtm.AlarmURV)) // { // newRtm.DevStatus = "正常"; // newRtm.DevState = "0"; // } // } // } // } // #endregion // } // //tRtm = newRtm; // //重新追加这条记录的最新值到内存中; // RtmDatas.Add(newRtm); // } // } #endregion #region 增加数据 // else // { // Model.TN_Rtm rtm = new Model.TN_Rtm // { // CoalCode = titleList[0], // CoalName = titleList[1], // MonitorLRV = columns[6], // MonitorURV = columns[7], // AlarmLRV = columns[8], // AlarmURV = columns[9], // TurnOffValue = columns[10], // TurnOnValue = columns[11], // DevCode = columns[1], // DevName = columns[2], // DevAddress = columns[4], // DevType = columns[3], // DevUnit = columns[5], // DevValue = decimal.Parse(columns[12]), // DevState = columns[13], // DevStatus = statusList[Convert.ToInt32(columns[13])],//传感器状态 // RealTime = columns[14], // ChageStateTime = columns[16]//TODO:此处传感器状态变化开始时间还没有完成,包括异常(报警、故障等)开始时间,开关量状态变动时间 // }; // if (columns[13] == "1" || statusList[Convert.ToInt32(columns[13])] == "报警") // { // if (rtm.DevType == "开关量") // { // //if (tRtm.DevState == "1" || tRtm.DevStatus == "报警") // //{ // rtm.DevStatus = "正常"; // rtm.DevState = "0"; // //} // } // else // { // rtm.DevState = columns[13]; // rtm.DevStatus = statusList[Convert.ToInt32(columns[13])]; // } // } // else // { // rtm.DevState = columns[13]; // rtm.DevStatus = statusList[Convert.ToInt32(columns[13])]; // } // if (decimal.Parse(columns[9]) < decimal.Parse(columns[8])) // { // rtm.AlarmLRV = columns[9]; // rtm.AlarmURV = columns[8]; // } // else // { // rtm.AlarmLRV = columns[8]; // rtm.AlarmURV = columns[9]; // } // //renyb add modify 2010/10/20 14:18 // if (IsUseYJ.ToLower() == "true") // { // #region 根据国家标准判断数据是否报警,并启用预警功能 // if (rtm.DevType == "模拟量") // { // if (rtm.DevName == "瓦斯") // { // rtm.AlarmURV = GBVsAlarmValue; // rtm.AlarmLRV = GBVsAlarmLValue; // if (AlarmWSValue != "") // { // if (Convert.ToDecimal(rtm.DevValue) >= Convert.ToDecimal(alarmWSgrade[0]) && Convert.ToDecimal(rtm.DevValue) < Convert.ToDecimal(alarmWSgrade[1])) // { // rtm.DevState = "1"; // rtm.DevStatus = "预警"; // } // else if (Convert.ToDecimal(rtm.DevValue) >= Convert.ToDecimal(alarmWSgrade[1]) && Convert.ToDecimal(rtm.DevValue) < Convert.ToDecimal(alarmWSgrade[2])) // { // rtm.DevState = "1"; // rtm.DevStatus = "重警"; // } // else if (Convert.ToDecimal(rtm.DevValue) >= Convert.ToDecimal(alarmWSgrade[2])) // { // rtm.DevState = "1"; // rtm.DevStatus = "特警"; // } // if (rtm.DevState == "1" || rtm.DevStatus == "报警") // { // if (rtm.DevValue == 0 || rtm.DevValue < decimal.Parse(alarmWSgrade[0])) // { // rtm.DevStatus = "正常"; // rtm.DevState = "0"; // } // } // } // } // else if (rtm.DevName == "一氧化碳") // { // rtm.AlarmURV = GBCoAlarmValue; // rtm.AlarmLRV = GBCoAlarmLValue; // if (AlarmCOValue != "") // { // if (rtm.DevValue >= decimal.Parse(alarmCOgrade[0].ToString())) // { // rtm.DevState = "1"; // rtm.DevStatus = "报警"; // } // if (Convert.ToDecimal(rtm.DevValue) >= Convert.ToDecimal(alarmCOgrade[0]) && Convert.ToDecimal(rtm.DevValue) < Convert.ToDecimal(alarmCOgrade[1])) // { // rtm.DevState = "1"; // rtm.DevStatus = "预警"; // } // else if (Convert.ToDecimal(rtm.DevValue) >= Convert.ToDecimal(alarmCOgrade[1]) && Convert.ToDecimal(rtm.DevValue) < Convert.ToDecimal(alarmCOgrade[2])) // { // rtm.DevState = "1"; // rtm.DevStatus = "重警"; // } // else if (Convert.ToDecimal(rtm.DevValue) >= Convert.ToDecimal(alarmCOgrade[2])) // { // rtm.DevState = "1"; // rtm.DevStatus = "特警"; // } // if (rtm.DevState == "1" || rtm.DevStatus == "报警") // { // if (rtm.DevValue == 0 || rtm.DevValue < decimal.Parse(alarmCOgrade[0].ToString())) // { // rtm.DevStatus = "正常"; // rtm.DevState = "0"; // } // } // } // } // } // #endregion // } // else // { // #region 根据国家标准判断数据是否报警 // if (rtm.DevType == "模拟量") // { // if (rtm.DevName == "瓦斯") // { // rtm.AlarmURV = GBVsAlarmValue; // rtm.AlarmLRV = GBVsAlarmLValue; // } // if (rtm.DevName == "一氧化碳") // { // rtm.AlarmURV = GBCoAlarmValue; // rtm.AlarmLRV = GBCoAlarmLValue; // } // if (rtm.AlarmURV != "0") // { // if (rtm.DevValue >= decimal.Parse(rtm.AlarmURV)) // { // rtm.DevState = "1"; // rtm.DevStatus = "报警"; // } // if (rtm.DevState == "1" || rtm.DevStatus == "报警") // { // if (rtm.DevValue == 0 || rtm.DevValue < decimal.Parse(rtm.AlarmURV)) // { // rtm.DevStatus = "正常"; // rtm.DevState = "0"; // } // } // } // } // #endregion // } // //rtmDatas.Add(rtm); // RtmDatas.Add(rtm); // } #endregion // } // } //} #endregion } catch (NullReferenceException exec) { log.Write(exec, "methord:UpdateCache"); } catch (IndexOutOfRangeException exec) { log.Write(exec, "methord:UpdateCache"); } //catch (Exception exec) { log.Write(exec); } RtmDatas.Sort(new RtmSort()); // rtmDatas.RemoveAll(rtm => rtm != null && rtm.CoalCode == titleList[0] && rtm.RealTime != titleList[2]); }