Shuxia Ning
2024-08-28 1a8a81785470302fc7fbd6914a9df5d1094dac2a
IStation.Service/08-algorithm/01-analysis/AnalysisHelper.cs
@@ -11,13 +11,13 @@
        double _frequency_def = 50;
        double _frequency_min = 25;
        double _frequency_max = 50;
        double _frequency_space = 0.1;//频率间隔
        double _frequency_space = 0.10;//频率间隔
        double _head_space = 0.1;//扬程间隔
        double _head_space = 0.1;//扬程间隔
        readonly DAL.SQLite.AnalysisCombine _dal_analysis_combine = new();
        readonly DAL.SQLite.AnalysisConclusion _dal_analysis_conclusion = new();
        readonly DAL.SQLite.AnalysisLog _dal_analysis_log = new();
        readonly DAL.SQLite.AnalysisConclusion _dal_analysis_conclusion = new();
        readonly DAL.SQLite.AnalysisFactor _dal_analysis_factor= new();
        /// <summary>
@@ -27,20 +27,24 @@
        /// <returns></returns>
        public void AnalysisCombine(List<Model.Pump> pumps)
        {
            InsertAnaLog("开始分析泵组合");
            InsertAnaLog("开始分析泵组合");
            if (pumps == null || pumps.Count < 1)
            {
                InsertAnaLog("分析失败:没有泵数据!");
                return;
            }
            var all_ana_factor_list = _dal_analysis_factor.GetAll();
            var fre_def = _frequency_def;
            var ana_pump_list = new List<AnaPump>();
            foreach (var pump in pumps)
            {
                var pump_factor_list = all_ana_factor_list?.Where(x => x.Flag == pump.Flag).ToList();
                if (pump.IsBp)
                {
                    //变频泵
                    var anaPump = new AnaPump(pump, fre_def, _frequency_min, _frequency_max, _frequency_space);
                    var fre_head_diff_avg_dict= pump_factor_list?.ToDictionary(x=>x.Hz,y=>y.HeadDeviation);
                    var anaPump = new AnaPump(pump, fre_def, _frequency_min, _frequency_max, _frequency_space, fre_head_diff_avg_dict);
                    if (anaPump.AllowCalc)
                        ana_pump_list.Add(anaPump);
                }
@@ -89,8 +93,6 @@
            InsertAnaLog($"分析进度:{pumps.Count}台泵,分析完毕!");
        }
        /// <summary>
        /// 分析结论
@@ -145,7 +147,7 @@
                        var analysis_conclusion = new Entity.AnalysisConclusion();
                        analysis_conclusion.ID = Yw.YitIdHelper.NextId();
                        analysis_conclusion.CombineID = analysis_combine_id;
                        analysis_conclusion.Pump = analysis_combine.Pump;
                        analysis_conclusion.Pump = analysis_combine.Pump;
                        analysis_conclusion.Head = head;
                        analysis_conclusion.Flow = flow.Value;
                        analysis_conclusion.Power = curveQP.GetFitPointY(flow.Value);
@@ -164,12 +166,15 @@
            }
        }
        #region Expand
        /// <summary>
        /// 圆整
        /// </summary> 
        private void Round(Entity.AnalysisConclusion conclusion)
        {
            conclusion.Pump = Math.Round(conclusion.Pump, 1);
            conclusion.Pump = Math.Round(conclusion.Pump, 1);
            conclusion.Head = Math.Round(conclusion.Head, 1);
            conclusion.Flow = Math.Round(conclusion.Flow, 1);
            conclusion.Power = Math.Round(conclusion.Power, 1);
@@ -182,8 +187,7 @@
        /// </summary> 
        private void InsertAnaLog(string info)
        {
            var entity = new Entity.AnalysisLog(info);
            _dal_analysis_log.Insert(entity);
            LogHelper.Info(info);
        }
        /// <summary>
@@ -217,7 +221,6 @@
            InsertAnaLog(log);
        }
        /// <summary>
        /// 插入分析结论列表
        /// </summary> 
@@ -236,7 +239,10 @@
            log = $"分析进度:{runFlag},下标:{index},数量:{list.Count},插入耗时:{sw.ElapsedMilliseconds / 1000}m";
            InsertAnaLog(log);
        }
    }
        #endregion
    }
}