Shuxia Ning
2025-01-14 0f99d4d12f2eae29bbe343f4b3131f2faeccda5d
WinFrmUI/Yw.WinFrmUI.Hydro.Core/09-check/00-core/HydroModelInfoCheckExtensions.cs
@@ -27,8 +27,8 @@
                Failed = false,
                Reason = "至少包含一座水库或水池(水箱)"
            };
            var allSourceList = hydroInfo.GetAllSources();
            result.Items.Add(checkItemLackSource);
            var allSourceList = hydroInfo.GetAllSources();
            if (allSourceList == null || allSourceList.Count < 1)
            {
                checkItemLackSource.Failed = true;
@@ -51,11 +51,6 @@
            }
            //验证水泵
            var allPumpList = hydroInfo.Pumps;
            if (allPumpList == null)
            {
                allPumpList = new List<Model.HydroPumpInfo>();
            }
            var checkItemLackPump = new HydroCheckItem()
            {
                Mode = HydroCheckMode.Global,
@@ -65,7 +60,8 @@
                Reason = "至少包含一台水泵"
            };
            result.Items.Add(checkItemLackPump);
            if (allPumpList.Count < 1)
            var allPumpList = hydroInfo.Pumps;
            if (allPumpList == null || allPumpList.Count < 1)
            {
                checkItemLackPump.Failed = true;
            }
@@ -136,6 +132,45 @@
            //验证水库
            //验证水池
            var allTankList = hydroInfo.GetAllTanks();
            if (allTankList != null && allTankList.Count > 0)
            {
                foreach (var tank in allTankList)
                {
                    //初始水位
                    var checkItemInitLevel = new HydroCheckItem()
                    {
                        Mode = HydroCheckMode.Item,
                        Type = HydroCheckType.AbnormalProp,
                        Code = tank.Code,
                        Failed = false,
                        Reason = "判断初始水位"
                    };
                    result.Items.Add(checkItemInitLevel);
                    if (tank.InitLevel <= 0)
                    {
                        checkItemInitLevel.Failed = true;
                        checkItemInitLevel.Reason = "初始水位设置错误";
                    }
                    var checkItemMinMaxLevel = new HydroCheckItem
                    {
                        Mode = HydroCheckMode.Item,
                        Type = HydroCheckType.AbnormalProp,
                        Code = tank.Code,
                        Failed = false,
                        Reason = "判断最小最大水位"
                    };
                    result.Items.Add(checkItemMinMaxLevel);
                    if (tank.MinLevel >= tank.MaxLevel)
                    {
                        checkItemMinMaxLevel.Failed = true;
                        checkItemMinMaxLevel.Reason = "最小水位必须低于最大水位";
                    }
                }
            }
            //验证水箱
            //验证水泵
            foreach (var pump in allPumpList)
@@ -239,6 +274,64 @@
                }
            }
            #region 验证阻件
            //当成GPV阀门处理的
            var allResistanceList = hydroInfo.GetAllResistances();
            if (allResistanceList != null && allResistanceList.Count > 0)
            {
                foreach (var resistance in allResistanceList)
                {
                    //直径
                    var checkItemDiameter = new HydroCheckItem()
                    {
                        Mode = HydroCheckMode.Item,
                        Type = HydroCheckType.AbnormalProp,
                        Code = resistance.Code,
                        Failed = false,
                        Reason = "判断管道直径"
                    };
                    result.Items.Add(checkItemDiameter);
                    if (resistance.Diameter <= 10 || resistance.Diameter > 10000)
                    {
                        checkItemDiameter.Failed = true;
                        checkItemDiameter.Reason = "水力组件直径区间(10,10000]";
                    }
                    var checkItemCurveQL = new HydroCheckItem()
                    {
                        Mode = HydroCheckMode.Item,
                        Type = HydroCheckType.AbnormalProp,
                        Code = resistance.Code,
                        Failed = false,
                        Reason = "判断水头损失曲线"
                    };
                    result.Items.Add(checkItemCurveQL);
                    if (resistance.LinkStatus == Yw.Hydro.ResistanceStatus.None)
                    {
                        if (string.IsNullOrEmpty(resistance.CurveQL))
                        {
                            checkItemCurveQL.Failed = true;
                            checkItemCurveQL.Reason = "缺少水头损失曲线";
                        }
                        else
                        {
                            if (hydroInfo.Curves == null || !hydroInfo.Curves.Exists(t => t.Code == resistance.CurveQL))
                            {
                                checkItemCurveQL.Failed = true;
                                checkItemCurveQL.Reason = "缺少水头损失曲线";
                            }
                        }
                    }
                }
            }
            #endregion
            if (result.Items.Exists(x => x.Failed))
            {
                result.Succeed = false;