ningshuxia
2022-11-22 4efe844d9bcc03435cbbeb1aedbda5bf6ebf5912
Model/IStation.Model.Eta/eta_real/basic/EtaBasicRealRecord.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection.Metadata;
using System.Text;
using System.Threading.Tasks;
@@ -121,6 +122,57 @@
        public string AnalyInfo { get; set; }
        #region AnalyInfo 
        #region InfoTag
        /// <summary>
        /// 运行状态发生异常的标识
        /// </summary>
        public const string InfoTag_RU = "RU";
        /// <summary>
        /// 频率发生异常的标识
        /// </summary>
        public const string InfoTag_HZ = "HZ";
        /// <summary>
        /// 流量发生异常的标识
        /// </summary>
        public const string InfoTag_Qa = "Qa";
        /// <summary>
        /// 扬程发生异常的标识
        /// </summary>
        public const string InfoTag_Ha = "Ha";
        /// <summary>
        /// 进口压力发生异常的标识
        /// </summary>
        public const string InfoTag_P1 = "P1";
        /// <summary>
        /// 出口压力发生异常的标识
        /// </summary>
        public const string InfoTag_P2 = "P2";
        /// <summary>
        /// 功率发生异常的标识
        /// </summary>
        public const string InfoTag_Pa = "Pa";
        /// <summary>
        /// 效率发生异常的标识
        /// </summary>
        public const string InfoTag_Ea = "Ea";
        /// <summary>
        /// 电流发生异常的标识
        /// </summary>
        public const string InfoTag_Ia = "Ia";
        /// <summary>
        /// 曲线发生异常的标识
        /// </summary>
        public const string InfoTag_Curve = "Cu";
        /// <summary>
        /// 泵站发生异常的标识
        /// </summary>
        public const string InfoTag_Station = "St";
        #endregion
        #region Basic
        /// <summary>
        /// 添加状态
        /// </summary>
@@ -136,6 +188,7 @@
                AnalyInfo = string.Format("{0}|{1}:", AnalyInfo, tag);
            }
        }
        /// <summary>
        /// 添加AnalyInfo标识
        /// </summary>
@@ -166,6 +219,7 @@
                }
            }
        }
        /// <summary>
        /// 添加AnalyInfo标识
        /// </summary>
@@ -177,7 +231,6 @@
                return;
            }
            var sss = AnalyInfo.Split('|').ToList();
            for (int i = 0; i < sss.Count(); i++)
            {
                if (sss[i].StartsWith(tag))
@@ -211,48 +264,196 @@
        }
        /// <summary>
        /// 运行状态发生异常的标识
        /// 有分析异常
        /// </summary>
        public static string InfoTag_RU = "RU";
        /// <summary>
        /// 频率发生异常的标识
        /// </summary>
        public static string InfoTag_HZ = "HZ";
        /// <summary>
        /// 流量发生异常的标识
        /// </summary>
        public static string InfoTag_Qa = "Qa";
        /// <summary>
        /// 扬程发生异常的标识
        /// </summary>
        public static string InfoTag_Ha = "Ha";
        /// <summary>
        /// 进口压力发生异常的标识
        /// </summary>
        public static string InfoTag_P1 = "P1";
        /// <summary>
        /// 出口压力发生异常的标识
        /// </summary>
        public static string InfoTag_P2 = "P2";
        /// <summary>
        /// 功率发生异常的标识
        /// </summary>
        public static string InfoTag_Pa = "Pa";
        /// <summary>
        /// 效率发生异常的标识
        /// </summary>
        public static string InfoTag_Ea = "Ea";
        /// <summary>
        /// 电流发生异常的标识
        /// </summary>
        public static string InfoTag_Ia = "Ia";
        /// <summary>
        /// 曲线发生异常的标识
        /// </summary>
        public static string InfoTag_Curve = "Cu";
        /// <param name="stationId"></param>
        /// <returns></returns>
        public bool IsHaveStationTag(long stationId)
        {
            if (string.IsNullOrEmpty(AnalyInfo))
            {
                return false;
            }
            return AnalyInfo.Contains($"{InfoTag_Station}:{stationId}");
        }
        #endregion
        /// <summary>
        /// 添加泵站 AnalyInfo标识
        /// </summary>
        /// <param name="ePumpAnalyInfo">机泵错误信息</param>
        /// <param name="ePumpId">机泵标识</param>
        public void PutStationAnalyInfo(string ePumpAnalyInfo, long ePumpId)
        {
            if (string.IsNullOrEmpty(ePumpAnalyInfo))
                return;
            var defaultEdition = "V1";
            if (string.IsNullOrEmpty(AnalyInfo))
            {
                AnalyInfo = defaultEdition;
            }
            var infoArry = ePumpAnalyInfo.Split('|').ToList();
            foreach (var item in infoArry)
            {
                if (item == defaultEdition)
                    continue;
                AnalyInfo = $"{AnalyInfo}|{item}:{ePumpId}";
            }
            if (AnalyInfo == defaultEdition)
            {
                AnalyInfo = null;
            }
        }
        /// <summary>
        /// 添加业务 AnalyInfo标识
        /// </summary>
        /// <param name="logicAnalyInfo">业务错误信息</param>
        public void PutLogicAnalyInfo(string logicAnalyInfo)
        {
            if (string.IsNullOrEmpty(logicAnalyInfo))
                return;
            var defaultEdition = "V1";
            if (string.IsNullOrEmpty(AnalyInfo))
            {
                AnalyInfo = defaultEdition;
            }
            var infoArry = logicAnalyInfo.Split('|').ToList();
            foreach (var item in infoArry)
            {
                if (item == defaultEdition)
                    continue;
                if (item.StartsWith(InfoTag_Station))
                {
                    AnalyInfo = $"{AnalyInfo}|{item}";
                }
            }
            if (AnalyInfo == defaultEdition)
            {
                AnalyInfo = null;
            }
        }
        /// <summary>
        /// 获取错误信息
        /// </summary>
        /// <returns></returns>
        public List<long> GetStatioinIds()
        {
            if (string.IsNullOrEmpty(this.AnalyInfo))
                return default;
            var list = new List<long>();
            var infoArry = AnalyInfo.Split('|').ToList();
            foreach (var item in infoArry)
            {
                if (item.StartsWith(InfoTag_Station))
                {
                    var valueArr = item.Split(':');
                    if (valueArr != null && valueArr.Count() > 1)
                    {
                        var stationId = valueArr[1];
                        if (long.TryParse(stationId, out long id))
                        {
                            list.Add(id);
                        }
                    }
                }
            }
            return list;
        }
        /// <summary>
        /// 获取错误信息
        /// </summary>
        /// <returns></returns>
        public List<long> GetPumpIds()
        {
            if (string.IsNullOrEmpty(this.AnalyInfo))
                return default;
            var list = new List<long>();
            var infoArry = AnalyInfo.Split('|').ToList();
            foreach (var item in infoArry)
            {
                var valueArr = item.Split(':');
                if (valueArr != null && valueArr.Count() > 2)
                {
                    var pumpId = valueArr[2];
                    if (long.TryParse(pumpId, out long id))
                    {
                        list.Add(id);
                    }
                }
            }
            return list;
        }
        /// <summary>
        /// 获取错误信息
        /// </summary>
        /// <returns></returns>
        public string GetAnaInfoCN()
        {
            var errCN = string.Empty;
            if (string.IsNullOrEmpty(this.AnalyInfo))
                return string.Empty;
            var tagList = new List<string>();
            var infoArry = AnalyInfo.Split('|').ToList();
            foreach (var item in infoArry)
            {
                if (item == "V1")
                    continue;
                var valueList = item.Split(':');
                if (valueList != null && valueList.Count() > 0)
                {
                    if (valueList.Count() > 2)
                        continue;
                    var tag = valueList[0];
                    tagList.Add(tag);
                }
            }
            if (tagList.Count < 1)
                return default;
            foreach (var item in tagList)
            {
                errCN += GetAnaTagCN(item) + "、";
            }
            return errCN.Substring(0, errCN.Length - 1) + "测点异常!";
        }
        /// <summary>
        /// 获取分析错误类型
        /// </summary>
        public string GetAnaTagCN(string anaTag)
        {
            var tagCN = "未知";
            switch (anaTag)
            {
                case InfoTag_RU: tagCN = "运行状态"; break;
                case InfoTag_HZ: tagCN = "频率"; break;
                case InfoTag_Qa: tagCN = "流量"; break;
                case InfoTag_Ha: tagCN = "扬程"; break;
                case InfoTag_P1: tagCN = "进口压力"; break;
                case InfoTag_P2: tagCN = "出口压力"; break;
                case InfoTag_Pa: tagCN = "功率"; break;
                case InfoTag_Ea: tagCN = "效率"; break;
                case InfoTag_Ia: tagCN = "电流"; break;
                case InfoTag_Curve: tagCN = "曲线"; break;
            }
            return tagCN;
        }
        #endregion
        #region 计算
@@ -313,7 +514,7 @@
        public bool CalcUnitPower()
        {
            Calcu_WP();
            return  Calcu_UWP();
            return Calcu_UWP();
        }
        /// <summary>
        ///