using Yw.Vmo;
namespace HStation.WinFrmUI
{
///
/// 工况辅助类
///
public class SimulationWorkingTupleHelper
{
///
///
///
public SimulationWorkingTupleHelper(SimulationVisualListHelper visualListHelper)
{
_visualListHelper = visualListHelper;
}
private SimulationVisualListHelper _visualListHelper = null;//可见列表辅助类
private List> _allTupleList = null;//所有元组列表
///
/// 获取元组列表
///
public async Task>> GetTupleList()
{
if (_allTupleList == null)
{
_allTupleList = new List>();
var allWorkingList = await BLLFactory.Instance.GetByModelID(_visualListHelper.HydroInfo.ID);
allWorkingList?.ForEach(x =>
{
HydroCalcuResult calcuResult = null;
var checkResult = _visualListHelper.HydroInfo.Check();
if (checkResult != null && checkResult.Succeed)
{
calcuResult = _visualListHelper.HydroInfo.Calcu(CalcuMode.MinorLoss);
}
_allTupleList.Add(new Tuple(x, checkResult, calcuResult));
});
}
return _allTupleList;
}
///
/// 获取元组
///
public async Task> GetTuple(HydroWorkingVmo working)
{
if (working == null)
{
return default;
}
var allTupleList = await GetTupleList();
return allTupleList?.Find(x => x.Item1.ID == working.ID);
}
///
/// 获取检查结果
///
public async Task GetCheckResult(HydroWorkingVmo working)
{
var tuple = await GetTuple(working);
return tuple?.Item2;
}
///
/// 获取计算结果
///
public async Task GetCalcuResult(HydroWorkingVmo working)
{
var tuple = await GetTuple(working);
return tuple?.Item3;
}
///
/// 获取工况列表
///
public async Task> GetWorkingList()
{
var allTupleList = await GetTupleList();
return allTupleList?.Select(x => x.Item1).OrderBy(x => x.SortCode).ToList();
}
///
/// 添加元组
///
public async void AppendTuple(HydroWorkingVmo working, HydroCheckResult check, HydroCalcuResult calcu)
{
var allTupleList = await GetTupleList();
allTupleList.Add(new Tuple(working, check, calcu));
}
///
/// 移除元组
///
public async void RemoveTuple(HydroWorkingVmo working)
{
var allTupleList = await GetTupleList();
if (allTupleList != null && allTupleList.Count > 0)
{
allTupleList.RemoveAll(x => x.Item1.ID == working.ID);
}
}
}
}