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;
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="context_item"></param>
|
/// <returns></returns>
|
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<Calculation.Eta.Model.StationAnaInfoBundle>();
|
current_logic_ana.ChildLogicBundleList = new List<Calculation.Eta.Model.LogicAnaInfoBundle>();
|
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<IStation.Model.EtaBasicRealRecord> child_ana_records = new List<Model.EtaBasicRealRecord>();
|
|
|
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;
|
anaResult.Ha = jzqsLogicResult.Ha??0 + jzqsResult.Ha??0;
|
|
|
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;
|
|
var jzltgLogicChildResult = this.jzltgLogicAnaInfoBundle.ChildStationBundleList.Select(x => x.AnaResult);
|
var uwpaSum = jzltgLogicChildResult.Sum(x => (x.UWPa ?? 0) * (x.Qa ?? 0));
|
uwpaSum += (jzqsResult.UWPa ?? 0) * (jzqsResult.Qa ?? 0);
|
|
var qSum = jzltgLogicChildResult.Sum(x => x.Qa ?? 0);
|
qSum += jzqsResult.Qa ?? 0;
|
|
uwpa = uwpaSum / qSum;
|
|
|
anaResult.Ea = Math.Round(eta, 1);
|
anaResult.WPa = Math.Round(wpa, 2);
|
anaResult.UWPa = Math.Round(uwpa, 2);
|
}
|
|
return current_logic_ana;
|
}
|
|
}
|
}
|