using Mapster;
|
using Microsoft.CodeAnalysis.CSharp.Syntax;
|
using Yw.EPAnet;
|
using Yw.Hydro;
|
using Yw.Vmo;
|
|
namespace HStation.WinFrmUI
|
{
|
/// <summary>
|
/// 损失统计辅助类
|
/// </summary>
|
public class SimulationPrintLossStatisticsHelper
|
{
|
/// <summary>
|
/// 创建
|
/// </summary>
|
public static SimulationPrintLossStatisticsViewModel Create
|
(
|
Yw.Model.HydroModelInfo hydroInfo,
|
HydroWorkingVmo working,
|
HydroCalcuResult calcuResult = null,
|
bool isHead = false,
|
List<Yw.Vmo.HydroEvaluationVmo> allEvaluationList = null
|
)
|
{
|
var vm = new SimulationPrintLossStatisticsViewModel();
|
|
if (hydroInfo == null)
|
{
|
return vm;
|
}
|
|
|
//赋值模型信息,避免干扰
|
//var newHydroInfo = hydroInfo.Adapt<Yw.Model.HydroModelInfo>();
|
//newHydroInfo.UpdateWorkingInfo(working.WorkingInfo);
|
|
//计算结果
|
if (calcuResult == null)
|
{
|
calcuResult = hydroInfo.Calcu(Yw.EPAnet.CalcuMode.MinorLoss, isHead, allEvaluationList);
|
if (!calcuResult.Succeed)
|
{
|
return vm;
|
}
|
}
|
var allCalcuVisualDict = calcuResult.GetVisualDict();
|
|
//能量计算
|
var network = hydroInfo.ToNetwork();
|
var allEnergyList = network.AnalyzeEnergy(calcuResult.EPAnetCalcuResult);
|
if (allEnergyList == null || allEnergyList.Count < 1)
|
{
|
return vm;
|
}
|
|
//子级集合
|
vm.Items = allEnergyList.Select(x => new SimulationPrintLossStatisticsItemViewModel(x)).ToList();
|
|
//能量输入
|
vm.Input = new SimulationPrintLossStatisticsInputViewModel(hydroInfo, calcuResult, vm.Items);
|
|
//分类损失
|
vm.Catalog = new SimulationPrintLossStatisticsCatalogViewModel(hydroInfo, calcuResult, vm.Items);
|
|
//种类统计
|
vm.Category = new SimulationPrintLossStatisticsCategoryViewModel(hydroInfo, calcuResult, vm.Items);
|
|
return vm;
|
}
|
|
|
}
|
}
|