wxr
2024-01-03 300a5d5370d10d97eb5dfdfa43bb0156c15d23e3
HDL_ON/Entity/Function/Sensor.cs
@@ -61,10 +61,14 @@
                    case SPK.SensorHumidity:
                        attr = function.GetAttribute(FunctionAttributeKey.Humidity);
                        break;
                    case SPK.SensorPm10:
                        attr = function.GetAttribute(FunctionAttributeKey.Pm10);
                        break;
                }
            }
            double value = 0.0;
            double.TryParse( attr.state,out value);
            double.TryParse(attr.state, out value);
            return Convert.ToDouble(value);
        }
@@ -78,15 +82,32 @@
            function.SetAttrState(FunctionAttributeKey.Value, value);
        }
        List<string> _intervalValue = new List<string>();
        public void SetIntervalValue(List<string> intervalValue)
        {
            _intervalValue = intervalValue;
        }
        /// <summary>
        /// 每个等级对区间值
        /// </summary>
        public List<string> GetIntervalValue(string spk)
        {
            var _intervalValue = new List<string>();
            //if (_intervalValue.Count != 0)
            //{
            //    return _intervalValue;
            //}
            _intervalValue = new List<string>();
            switch (spk)
            {
                case SPK.SensorPm25:
                    _intervalValue.Add("0 ~ 50");
                    _intervalValue.Add("51 ~ 100");
                    _intervalValue.Add("101 ~ 150");
                    _intervalValue.Add("151 ~");
                    break;
                case SPK.SensorPm10:
                    _intervalValue.Add("0 ~ 35");
                    _intervalValue.Add("36 ~ 75");
                    _intervalValue.Add("76 ~ 115");
@@ -128,6 +149,48 @@
            return _intervalValue;
        }
        public string Unit(Function function)
        {
            string unit = "";
            if (function.attrKeyConfigs.Count > 0)
            {
                foreach (var attrKey in function.attrKeyConfigs)
                {
                    if (function.spk.Replace(".", "").Contains(attrKey.key.Replace(".", "")))
                    {
                        if (!string.IsNullOrEmpty(attrKey.unit))
                            return attrKey.unit;
                    }
                }
            }
            switch (function.spk)
            {
                case SPK.SensorPm25:
                    unit = "ug/m³";
                    break;
                case SPK.SensorTemperature:
                    unit = "°C";
                    break;
                case SPK.SensorTVOC:
                    unit = "PPB";
                    break;
                case SPK.SensorCO2:
                    unit = "PPM";
                    break;
                case SPK.SensorHumidity:
                    unit = "%";
                    break;
                case SPK.SensorHcho:
                    unit = "mg/m3";
                    break;
            }
            return unit;
        }
        /// <summary>
        /// 每个等级的颜色值
        /// </summary>
@@ -158,6 +221,7 @@
                    _levelColorList.Add(0xFFFF3D3D);
                    break;
                case SPK.SensorTVOC:
                case SPK.SensorPm10:
                    _levelColorList.Add(0xFFADE764);
                    _levelColorList.Add(0xFFFFD154);
                    _levelColorList.Add(0xFFFF9D54);
@@ -193,6 +257,7 @@
            switch (spk)
            {
                case SPK.SensorPm25:
                case SPK.SensorPm10:
                    _levelTextList.Add(StringId.Great);
                    _levelTextList.Add(StringId.Good);
                    _levelTextList.Add(StringId.MildPollution);
@@ -237,6 +302,69 @@
            }
            return _levelTextList;
        }
        /// <summary>
        /// 获取
        /// </summary>
        /// <param name="function"></param>
        /// <returns></returns>
        public uint GetCurColor(Function function)
        {
            var spk = function.spk;
            var values = GetValues(function);
            uint level = 0x00000000;
            if (function.attrKeyConfigs.Count > 0)
            {
                foreach (var attrKey in function.attrKeyConfigs)
                {
                    if (function.spk.Replace(".", "").Contains(attrKey.key.Replace(".", "")))
                    {
                        foreach (var info in attrKey.configs)
                        {
                            if ((Convert.ToInt32(info.start) >= values) && (Convert.ToInt32(info.end) < values))
                            {
                                return Convert.ToUInt32(info.color, 16);
                            }
                        }
                    }
                }
            }
            return level;
        }
        /// <summary>
        /// 获取文本
        /// </summary>
        /// <param name="function"></param>
        /// <returns></returns>
        public string GetCurText(Function function)
        {
            var spk = function.spk;
            var values = GetValues(function);
            var level = "";
            if (function.attrKeyConfigs.Count > 0)
            {
                foreach (var attrKey in function.attrKeyConfigs)
                {
                    if (function.spk.Replace(".", "").Contains(attrKey.key.Replace(".", "")))
                    {
                        foreach (var info in attrKey.configs)
                        {
                            if ((Convert.ToInt32(info.start) >= values) && (Convert.ToInt32(info.end) < values))
                            {
                                return info.desc;
                            }
                        }
                    }
                }
            }
            return level;
        }
        /// <summary>
        /// 当前等级
        /// </summary>
@@ -245,6 +373,37 @@
            var spk = function.spk;
            var values = GetValues(function);
            int level = 1;
            if (function.attrKeyConfigs.Count > 0)
            {
                foreach (var attrKey in function.attrKeyConfigs)
                {
                    if (function.spk.Replace(".", "").Contains(attrKey.key.Replace(".", "")))
                    {
                        level = 1;
                        if(attrKey.configs.Count == 0)
                        {
                            break;
                        }
                        foreach (var info in attrKey.configs)
                        {
                            if ((Convert.ToDouble(info.start) < values) && (Convert.ToDouble(info.end) >= values))
                            {
                                return level;
                            }
                            level++;
                        }
                    }
                }
                    return 1;
            }
            switch (spk)
            {
                case SPK.SensorPm25: