lixiaojun
2024-12-17 39b6a686ab59135e63a44ab206fd8ca361878f91
WinFrmUI/HStation.WinFrmUI.Xhs.Core/00-core/AssetsMatchingParasHelper.cs
@@ -1,4 +1,6 @@
namespace HStation.WinFrmUI
using SqlSugar;
namespace HStation.WinFrmUI
{
    /// <summary>
    /// 资产匹配参数辅助类
@@ -11,7 +13,7 @@
        /// <summary>
        /// 创建资产自动匹配ViewModel
        /// </summary>
        public static AssetsMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuResult> allCalcuResultList)
        public static AssetsMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResultList)
        {
            if (hydroInfo == null)
            {
@@ -43,7 +45,7 @@
        /// <summary>
        /// 创建泵自动匹配ViewModel
        /// </summary>
        public static PumpMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroPumpInfo pumpInfo, List<HydroCalcuResult> allCalcuResultList)
        public static PumpMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroPumpInfo pumpInfo, List<HydroCalcuVisualResult> allCalcuResultList)
        {
            if (hydroInfo == null)
            {
@@ -59,7 +61,7 @@
        /// <summary>
        /// 创建阀门自动匹配ViewModel
        /// </summary>
        public static ValveMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroValveInfo valveInfo, List<HydroCalcuResult> allCalcuResultList)
        public static ValveMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroValveInfo valveInfo, List<HydroCalcuVisualResult> allCalcuResultList)
        {
            if (hydroInfo == null)
            {
@@ -69,25 +71,13 @@
            {
                return default;
            }
            return new ValveMatchingViewModel()
            {
                ID = valveInfo.ID,
                Code = valveInfo.Code,
                Name = valveInfo.Name,
                DbLocked = valveInfo.DbLocked,
                ModelType = valveInfo.ModelType,
                DbId = valveInfo.DbId,
                Diameter = valveInfo.Diameter,
                Material = valveInfo.Material,
                MinorLoss = valveInfo.MinorLoss,
                ValveType = valveInfo.ValveType
            };
            return new ValveMatchingViewModel(valveInfo, hydroInfo, allCalcuResultList);
        }
        /// <summary>
        /// 创建管道自动匹配ViewModel
        /// </summary>
        public static PipeMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroPipeInfo pipeInfo, List<HydroCalcuResult> allCalcuResultList)
        public static PipeMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroPipeInfo pipeInfo, List<HydroCalcuVisualResult> allCalcuResultList)
        {
            if (hydroInfo == null)
            {
@@ -116,7 +106,7 @@
        /// <summary>
        /// 创建弯头自动匹配ViewModel
        /// </summary>
        public static ElbowMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroElbowInfo elbowInfo, List<HydroCalcuResult> allCalcuResultList)
        public static ElbowMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroElbowInfo elbowInfo, List<HydroCalcuVisualResult> allCalcuResultList)
        {
            if (hydroInfo == null)
            {
@@ -143,7 +133,7 @@
        /// <summary>
        /// 创建三通自动匹配ViewModel
        /// </summary>
        public static ThreelinkMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroThreelinkInfo threelinkInfo, List<HydroCalcuResult> allCalcuResultList)
        public static ThreelinkMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroThreelinkInfo threelinkInfo, List<HydroCalcuVisualResult> allCalcuResultList)
        {
            if (hydroInfo == null)
            {
@@ -170,7 +160,7 @@
        /// <summary>
        /// 创建四通自动匹配ViewModel
        /// </summary>
        public static FourlinkMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroFourlinkInfo fourlinkInfo, List<HydroCalcuResult> allCalcuResultList)
        public static FourlinkMatchingViewModel Create(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroFourlinkInfo fourlinkInfo, List<HydroCalcuVisualResult> allCalcuResultList)
        {
            if (hydroInfo == null)
            {
@@ -445,42 +435,169 @@
            {
                valve.DbLocked = matching.DbLocked;
                valve.ModelType = matching.ModelType;
                valve.Diameter = matching.Diameter;
                valve.Material = matching.Material;
                valve.Diameter = matching.Diameter;
                valve.MinorLoss = matching.MinorLoss;
                valve.ValveType = matching.ValveType;
                //valve.ValveSetting = matching.ValveSetting;
                switch (matching.ValveType)
                {
                    case HStation.Assets.eValveType.PBV: valve.ValveType = Yw.Hydro.ValveType.PBV; break;
                    case HStation.Assets.eValveType.PRV: valve.ValveType = Yw.Hydro.ValveType.PRV; break;
                    case HStation.Assets.eValveType.PSV: valve.ValveType = Yw.Hydro.ValveType.PSV; break;
                    case HStation.Assets.eValveType.TCV: valve.ValveType = Yw.Hydro.ValveType.TCV; break;
                    case HStation.Assets.eValveType.FCV: valve.ValveType = Yw.Hydro.ValveType.FCV; break;
                    case HStation.Assets.eValveType.GPV: valve.ValveType = Yw.Hydro.ValveType.GPV; break;
                    case HStation.Assets.eValveType.CV: valve.ValveType = Yw.Hydro.ValveType.CV; break;
                    default: break;
                }
                valve.ValveSetting = matching.ValveSetting;
                if (!valve.DbLocked)
                {
                    if (!string.IsNullOrEmpty(matching.MatchingModelType))
                    {
                        valve.ModelType = matching.MatchingModelType;
                    }
                    if (!string.IsNullOrEmpty(matching.MatchingDbId))
                    {
                        valve.DbId = matching.MatchingDbId;
                    }
                    if (matching.MatchingDiameter.HasValue)
                    if (!string.IsNullOrEmpty(matching.MatchingModelType))
                    {
                        valve.Diameter = matching.MatchingDiameter.Value;
                        valve.ModelType = matching.MatchingModelType;
                    }
                    if (!string.IsNullOrEmpty(matching.MatchingMaterial))
                    {
                        valve.Material = matching.MatchingMaterial;
                    }
                    if (matching.MatchingDiameter.HasValue)
                    {
                        valve.Diameter = matching.MatchingDiameter.Value;
                    }
                    if (matching.MatchingMinorLoss.HasValue)
                    {
                        valve.MinorLoss = matching.MatchingMinorLoss.Value;
                    }
                    if (!string.IsNullOrEmpty(matching.MatchingValveType))
                    if (matching.MatchingValveType.HasValue)
                    {
                        valve.ValveType = matching.MatchingValveType;
                        switch (matching.MatchingValveType.Value)
                        {
                            case HStation.Assets.eValveType.PBV: valve.ValveType = Yw.Hydro.ValveType.PBV; break;
                            case HStation.Assets.eValveType.PRV: valve.ValveType = Yw.Hydro.ValveType.PRV; break;
                            case HStation.Assets.eValveType.PSV: valve.ValveType = Yw.Hydro.ValveType.PSV; break;
                            case HStation.Assets.eValveType.TCV: valve.ValveType = Yw.Hydro.ValveType.TCV; break;
                            case HStation.Assets.eValveType.FCV: valve.ValveType = Yw.Hydro.ValveType.FCV; break;
                            case HStation.Assets.eValveType.GPV: valve.ValveType = Yw.Hydro.ValveType.GPV; break;
                            case HStation.Assets.eValveType.CV: valve.ValveType = Yw.Hydro.ValveType.CV; break;
                            default: break;
                        }
                    }
                    if (!string.IsNullOrEmpty(matching.MatchingValveSetting))
                    switch (valve.ValveType)
                    {
                        valve.ValveSetting = matching.MatchingValveSetting;
                        case Yw.Hydro.ValveType.PSV:
                            {
                                if (!string.IsNullOrEmpty(matching.MatchingValveSetting))
                                {
                                    valve.ValveSetting = matching.MatchingValveSetting;
                                }
                            }
                            break;
                        case Yw.Hydro.ValveType.PBV:
                            {
                                if (!string.IsNullOrEmpty(matching.MatchingValveSetting))
                                {
                                    valve.ValveSetting = matching.MatchingValveSetting;
                                }
                            }
                            break;
                        case Yw.Hydro.ValveType.PRV:
                            {
                                if (!string.IsNullOrEmpty(matching.MatchingValveSetting))
                                {
                                    valve.ValveSetting = matching.MatchingValveSetting;
                                }
                            }
                            break;
                        case Yw.Hydro.ValveType.FCV:
                            {
                                if (!string.IsNullOrEmpty(matching.MatchingValveSetting))
                                {
                                    valve.ValveSetting = matching.MatchingValveSetting;
                                }
                            }
                            break;
                        case Yw.Hydro.ValveType.TCV:
                            {
                                if (!string.IsNullOrEmpty(matching.MatchingCurveDbId))
                                {
                                    //阀门开度损失系数曲线
                                    var curveol = hydroInfo.Curves?.Find(x => x.Code == valve.ValveSetting);
                                    if (curveol == null)
                                    {
                                        curveol = new Yw.Model.HydroCurveInfo();
                                        curveol.Catalog = Yw.Hydro.ParterCatalog.Curve;
                                        curveol.Code = Yw.Untity.UniqueHelper.CreateFromFirst("curve", hydroInfo.GetAllParterCodes());
                                        curveol.Name = "匹配";
                                        curveol.ModelType = valve.ModelType;
                                        curveol.DbLocked = false;
                                        curveol.DbId = matching.MatchingCurveDbId;
                                        curveol.CurveType = Yw.WinFrmUI.HydroCurve.ValveOL;
                                        curveol.CurveData = matching.MatchingCurveOL?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
                                        if (hydroInfo.Curves == null)
                                        {
                                            hydroInfo.Curves = new List<Yw.Model.HydroCurveInfo>();
                                        }
                                        hydroInfo.Curves.Add(curveol);
                                        valve.ValveSetting = curveol.Code;
                                    }
                                    else
                                    {
                                        if (!curveol.DbLocked)
                                        {
                                            curveol.DbId = matching.MatchingCurveDbId;
                                            curveol.CurveData = matching.MatchingCurveOL?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
                                        }
                                    }
                                }
                            }
                            break;
                        case Yw.Hydro.ValveType.GPV:
                            {
                                if (!string.IsNullOrEmpty(matching.MatchingCurveDbId))
                                {
                                    //阀门开度损失系数曲线
                                    var curveql = hydroInfo.Curves?.Find(x => x.Code == valve.ValveSetting);
                                    if (curveql == null)
                                    {
                                        curveql = new Yw.Model.HydroCurveInfo();
                                        curveql.Catalog = Yw.Hydro.ParterCatalog.Curve;
                                        curveql.Code = Yw.Untity.UniqueHelper.CreateFromFirst("curve", hydroInfo.GetAllParterCodes());
                                        curveql.Name = "匹配";
                                        curveql.ModelType = valve.ModelType;
                                        curveql.DbLocked = false;
                                        curveql.DbId = matching.MatchingCurveDbId;
                                        curveql.CurveType = Yw.WinFrmUI.HydroCurve.ValveOL;
                                        curveql.CurveData = matching.MatchingCurveQL?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
                                        if (hydroInfo.Curves == null)
                                        {
                                            hydroInfo.Curves = new List<Yw.Model.HydroCurveInfo>();
                                        }
                                        hydroInfo.Curves.Add(curveql);
                                        valve.ValveSetting = curveql.Code;
                                    }
                                    else
                                    {
                                        if (!curveql.DbLocked)
                                        {
                                            curveql.DbId = matching.MatchingCurveDbId;
                                            curveql.CurveData = matching.MatchingCurveQL?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
                                        }
                                    }
                                }
                            }
                            break;
                        case Yw.Hydro.ValveType.CV:
                            {
                            }
                            break;
                    }
                    result = true;
                }
            }