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