namespace IStation.Test.Init { /// /// 分析系数辅助类 /// public class AnalysisFactorHelper { private static readonly string folderPath = $"{Settings.ParasHelper.LocalFile.DataFolderDirectory}\\变速修正数据"; private static IStation.Service.AnalysisFactor _service_analysis_factor = new Service.AnalysisFactor(); public static bool Ana() { var hz_and_head_diff_avg_dict1 = GetHzAndHeadDiffAvgDict1(); var hz_and_head_diff_avg_dict2 = GetHzAndHeadDiffAvgDict2(); var flag_list_dict1 = new Dictionary>(); foreach (var itme_flag in hz_and_head_diff_avg_dict1) { var flag = itme_flag.Key; flag_list_dict1.Add(flag, new List()); foreach (var item in itme_flag.Value) { var model = new Model.AnalysisFactor(); model.Flag = flag; model.Hz = (double)item.Key; if (item.Value.HasValue) { model.SourceMode = 1; } model.HeadDeviation = item.Value; model.Accuracy = 0; flag_list_dict1[flag].Add(model); } } var flag_list_dict2 = new Dictionary>(); foreach (var itme_flag in hz_and_head_diff_avg_dict2) { var flag = itme_flag.Key; flag_list_dict2.Add(flag, new List()); foreach (var item in itme_flag.Value) { var model = new Model.AnalysisFactor(); model.Flag = itme_flag.Key; model.Hz = (double)item.Key; if (item.Value.HasValue) { model.SourceMode = 1; } model.HeadDeviation = item.Value; model.Accuracy = 0; flag_list_dict2[flag].Add(model); } } foreach (var item in flag_list_dict2) { var flag = item.Key; var flag_list = item.Value; var flag_head_avg = flag_list.Average(x => x.HeadDeviation); var hz_list_dict = flag_list.GroupBy(x => Math.Round(x.Hz)).ToDictionary(x => x.Key, x => x.ToList()); var hz_head_avg_dict = new Dictionary(); for (int hz = 25; hz <= 50; hz += 1) { if (!hz_list_dict.ContainsKey(hz)) continue; var hz_list = hz_list_dict[hz]; var hz_avg = hz_list.Average(x => x.HeadDeviation); if (hz_avg == null) { hz_avg = flag_head_avg; } else { } hz_head_avg_dict.Add(hz, hz_avg); } foreach (var item_hz_head_avg in hz_head_avg_dict) { var hz = item_hz_head_avg.Key; var avg= item_hz_head_avg.Value; var hz_list = hz_list_dict[hz]; hz_list.ForEach(x => { if (x.HeadDeviation == null) { x.HeadDeviation = avg; } }); } } var list1=flag_list_dict1.SelectMany(x=>x.Value); var list2=flag_list_dict2.SelectMany(x=>x.Value); var list = new List(); list.AddRange(list1); list.AddRange(list2); var bol = _service_analysis_factor.Inserts(list); if (!bol) { throw (new Exception("失败!")); } return bol; } private static decimal _hz_space = 0.1m; private static Dictionary> GetHzAndHeadDiffAvgDict1() { var flag_hz_adn_head_avg_dict_dict = new Dictionary>(); var pumps = new IStation.Service.Station().Get().Station1; foreach (var item in pumps) { var dict = new Dictionary(); for (decimal hz = 25; hz <= 50; hz = hz + _hz_space) { dict.Add(hz, null); } flag_hz_adn_head_avg_dict_dict.Add(item.Flag, dict); } return flag_hz_adn_head_avg_dict_dict; } private static Dictionary> GetHzAndHeadDiffAvgDict2() { var file = folderPath + "\\" + "2.json"; var json = File.ReadAllText(file); var flag_hz_adn_head_avg_dict_dict = Yw.JsonHelper.Json2Object>>(json); return flag_hz_adn_head_avg_dict_dict; } } }