duheng
2025-02-19 a5b25c4f314079d293bf159ed6f0d7dcbadadbb7
WinFrmUI/Yw.WinFrmUI.Hydro.Core/loss-curve/01-core/HydroLossCurveHelper.cs
ÎļþÃû´Ó WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/13-print/loss-curve/helper/SimulationPrintLossCurveHelper.cs ÐÞ¸Ä
@@ -1,54 +1,48 @@
using Mapster;
using Yw.EPAnet;
using Yw.EPAnet;
using Yw.Hydro;
using Yw.Model;
using Yw.Vmo;
namespace HStation.WinFrmUI
namespace Yw.WinFrmUI
{
    /// <summary>
    /// 
    /// </summary>
    public class SimulationPrintLossCurveHelper
    public class HydroLossCurveHelper
    {
        /// <summary>
        ///
        /// åˆ›å»º
        /// </summary>
        /// <returns></returns>
        public static SimulationPrintLossCurveViewModel Create
        public static HydroLossCurveViewModel Create
            (
                Yw.Model.HydroModelInfo hydroInfo,
                HydroWorkingVmo working,
                HydroVisualInfo visual,
                HydroNodeInfo node,
                HydroCalcuResult calcuResult = null,
                bool isHead = false,
                List<HydroEvaluationVmo> allEvaluationList = null
            )
        {
            var vm = new SimulationPrintLossCurveViewModel();
            //验证
            if (hydroInfo == null)
            {
                return vm;
                return default;
            }
            if (working == null)
            {
                return vm;
                return default;
            }
            if (visual == null)
            if (node == null)
            {
                return vm;
                return default;
            }
            //赋值模型信息,避免干扰
            //var newHydroInfo = hydroInfo.Adapt<Yw.Model.HydroModelInfo>();
            //newHydroInfo.UpdateWorkingInfo(working.WorkingInfo);
            var vm = new HydroLossCurveViewModel();
            //计算结果
            if (calcuResult == null)
            {
                hydroInfo.UpdateWorkingInfo(working.WorkingInfo);
                calcuResult = hydroInfo.Calcu(Yw.EPAnet.CalcuMode.MinorLoss, isHead, allEvaluationList);
                if (!calcuResult.Succeed)
                {
@@ -57,25 +51,24 @@
            }
            var allCalcuVisualDict = calcuResult.GetVisualDict();
            //管线
            var network = hydroInfo.ToNetwork();
            if (network == null)
            {
                return vm;
            }
            var node = network.GetAllNodes()?.Find(x => x.Id == visual.Code);
            if (node == null)
            var epaNode = network.GetAllNodes()?.Find(x => x.Id == node.Code);
            if (epaNode == null)
            {
                return vm;
            }
            var allStartPathList = network.AnalyzeUpstreamPath(node, calcuResult.EPAnetCalcuResult);
            var allStartPathList = network.AnalyzeUpstreamPath(epaNode, calcuResult.EPAnetCalcuResult);
            if (allStartPathList == null)
            {
                allStartPathList = new List<Link>();
            }
            var allEndPathList = network.AnalyzeDownstreamPath(node, calcuResult.EPAnetCalcuResult);
            var allEndPathList = network.AnalyzeDownstreamPath(epaNode, calcuResult.EPAnetCalcuResult);
            if (allEndPathList == null)
            {
                allEndPathList = new List<Link>();
@@ -88,23 +81,25 @@
                return vm;
            }
            var allVisualDict = hydroInfo.GetVisualDict();
            vm.Items = new List<SimulationPrintLossCurveItemViewModel>();
            vm.Items = new List<HydroLossCurveItemViewModel>();
            foreach (var epaLoss in allEpaLossList)
            {
                var visualNode = allVisualDict.GetValue(epaLoss.Id);
                if (visualNode != null)
                {
                    var item = new SimulationPrintLossCurveItemViewModel(epaLoss, visualNode);
                    var item = new HydroLossCurveItemViewModel(epaLoss, visualNode);
                    vm.Items.Add(item);
                }
            }
            vm.Elev = new SimulationPrintLossCurveElevViewModel(vm.Items);
            vm.Start = new SimulationPrintLossCurveStartViewModel(vm.Items);
            vm.End = new SimulationPrintLossCurveEndViewModel(vm.Items);
            vm.Total = new SimulationPrintLossCurveTotalViewModel(vm.Items);
            vm.Elev = new HydroLossCurveElevViewModel(vm.Items);
            vm.Start = new HydroLossCurveStartViewModel(vm.Items);
            vm.End = new HydroLossCurveEndViewModel(vm.Items);
            vm.Total = new HydroLossCurveTotalViewModel(vm.Items);
            vm.Lower = new HydroLossCurveLowerViewModel(vm.Items);
            return vm;
        }