namespace PBS.WinFrmUI.Hydro
{
///
///
///
public partial class AnalysisParameterService
{
private static Dictionary>> _dict = new Dictionary>>();
///
///
///
///
public static async Task>> GetDictCache(long Id)
{
if (_dict.ContainsKey(Id))
{
return _dict[Id];
}
var value = await AnalysisHelper.Analysis(Id);
_dict[Id] = value;
return value;
}
///
/// 查询
///
public async Task> GetList(long Id,long pumpId)
{
var dict = await GetDictCache(Id);
if (!dict.ContainsKey(pumpId))
return default;
return dict[pumpId]?.OrderBy(x => x.Power).ToList();
}
///
/// 查询
///
public async Task> GetList(long Id,long pumpId, double pressure_diff)
{
var dict = await GetDictCache(Id);
if (!dict.ContainsKey(pumpId))
return default;
for (int i = 0; i < 3; i++)
{
pressure_diff += i * 0.1;
var list = dict[pumpId]?
.Where(x => x.PressureDiff == pressure_diff)
.OrderBy(x => x.Power)
.ToList();
if (list==null || !list.Any())
{
}
if (list != null && list.Any())
{
return list;
}
}
return null;
}
///
/// 查询
///
public async Task> GetList(long Id,long pumpId, double min_hz, double max_hz, double pressure_diff)
{
var dict = await GetDictCache(Id);
if (!dict.ContainsKey(pumpId))
return default;
for (int i = 0; i < 3; i++)
{
pressure_diff += i * 0.1;
var list = dict[pumpId]?
.Where(x => x.Hz >= min_hz && x.Hz <= max_hz && x.PressureDiff == pressure_diff)
.OrderBy(x => x.Power)
.ToList();
if (list == null || !list.Any())
{
}
if (list != null && list.Any())
{
return list;
}
}
return null;
}
///
/// 查询
///
public async Task GetMinPressureDiff(long Id, long pumpId)
{
var dict = await GetDictCache(Id);
if (!dict.ContainsKey(pumpId))
return default;
return dict[pumpId]?.OrderBy(x => x.PressureDiff).FirstOrDefault();
}
}
}