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(); } } }