using IStation.Model; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace IStation.EtaCalculation.SHYS { internal partial class EtaAnalyCalculator4Logic { private IStation.Calculation.Eta.Model.LogicAnaInfoBundle jzltgLogicAnaInfoBundle = null; /// /// /// /// /// public IStation.Calculation.Eta.Model.LogicAnaInfoBundle AnaLogic金泽系统(IStation.Model.EtaLogicTreeAnalyContextItem context_item) { if (context_item == null) return default; var jzltgLogicAreaId = 13; var jzqsStationId = 18; var jzbzStationId = 19; var logic_area = context_item.LogicContextItem as IStation.Model.EtaLogicAreaAnalyContextItem; var current_logic_ana = new Calculation.Eta.Model.LogicAnaInfoBundle(); current_logic_ana.LogicID = logic_area.ID; current_logic_ana.ChildStationBundleList = new List(); current_logic_ana.ChildLogicBundleList = new List(); IStation.Model.EtaLogicRealRecordPure anaResult = new Model.EtaLogicRealRecordPure(); current_logic_ana.AnaResult = anaResult; anaResult.ObjectID = context_item.LogicID; anaResult.ObjectType = IStation.ObjectType.LogicArea; anaResult.Qa = 0; anaResult.Ha = 0; anaResult.Pa = 0; anaResult.Ea = 0; anaResult.WPa = 0; anaResult.UWPa = 0; anaResult.AnalyStatus = Model.Eta.eAnalyStatus.Normal; IStation.Model.EtaBasicRealRecord jzqsLogicResult, jzqsResult; List child_ana_records = new List(); var jzltgContextItem = context_item.Children?.Find(x => x.LogicID == jzltgLogicAreaId); if (this.jzltgLogicAnaInfoBundle == null) { this.jzltgLogicAnaInfoBundle = Calc一个泵站(jzltgContextItem, _allStationBundles, jzbzStationId); _allLogicRecordList.Add(this.jzltgLogicAnaInfoBundle.AnaResult); } jzqsLogicResult = this.jzltgLogicAnaInfoBundle.AnaResult; child_ana_records.Add(jzqsLogicResult); var jzqsContextItem = _allStationBundles.Find(x => x.StationID == jzqsStationId); jzqsResult = jzqsContextItem.AnaResult; child_ana_records.Add(jzqsResult); current_logic_ana.ChildStationBundleList.Add(jzqsContextItem); current_logic_ana.ChildLogicBundleList.Add(this.jzltgLogicAnaInfoBundle); anaResult.Qa = jzqsLogicResult.Qa; anaResult.Pa = jzqsLogicResult.Pa + jzqsResult.Pa; anaResult.Ha = jzqsLogicResult.Ha; double qaTotal = child_ana_records.Where(x => x.Ea.HasValue && x.Ea.Value > 10).Sum(x => x.Qa.Value); if (qaTotal > 100) { double eta = 0; foreach (var item in child_ana_records) { if (item.Ea.HasValue && item.Ea.Value > 10) { eta += item.Ea.Value * item.Qa.Value / qaTotal; } } double wpa = 0; foreach (var item in child_ana_records) { if (item.WPa.HasValue && item.WPa.Value > 0) { wpa += item.WPa.Value * item.Qa.Value / qaTotal; } } double uwpa = 0; if (anaResult.Pa != null) { if (!child_ana_records.Exists(x => !x.Ha.HasValue)) { var haTatol = child_ana_records.Sum(x => x.Ha.Value); uwpa = anaResult.Pa.Value / qaTotal / haTatol * 1000; } else { anaResult.PutAnalyInfo(Model.EtaSingleRealRecordPure.InfoTag_Ha, null); } } else { anaResult.PutAnalyInfo(Model.EtaSingleRealRecordPure.InfoTag_Pa, null); } anaResult.Ea = Math.Round(eta, 1); anaResult.WPa = Math.Round(wpa, 2); anaResult.UWPa = Math.Round(uwpa, 2); } return current_logic_ana; } } }