152 lines
4.9 KiB
C#
152 lines
4.9 KiB
C#
///
|
|
/// Copyright (c) 2015-2016 Sensus Metering Systems
|
|
///
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Results.Entities
|
|
{
|
|
public class Batch
|
|
{
|
|
public virtual int Id { get; protected set; }
|
|
public virtual int BatchNr { get; set; }
|
|
public virtual int TestBenchId { get; set; }
|
|
public virtual string ProgramVersion { get; set; }
|
|
public virtual string UserName { get; set; }
|
|
public virtual int UserNumber { get; set; }
|
|
public virtual string ProcedureName { get; set; }
|
|
public virtual string ProcedureDescription { get; set; } /// CEVAK, not mapped to DB
|
|
public virtual int ProcedureRevision { get; set; }
|
|
public virtual string WatermetersStr { get; set; } /// CEVAK, not mapped to DB
|
|
public virtual string ProtocolTitle { get; set; }
|
|
public virtual string Remark { get; set; }
|
|
public virtual float DensityCorr { get; set; } /// Density correction in [kg/m3]
|
|
public virtual float Custom2 { get; set; }
|
|
public virtual float Custom3 { get; set; }
|
|
public virtual DateTime StartTime { get; set; }
|
|
public virtual DateTime EndTime { get; set; }
|
|
public virtual bool Dirty { get; set; }
|
|
public virtual bool RsltsSent { get; set; }
|
|
public virtual bool RsltsPrinted { get; set; }
|
|
public virtual IList<TestData> Tests { get; set; }
|
|
public virtual IList<WaterMeter> WaterMeters { get; set; }
|
|
public virtual IList<TestRslt> TestRslts { get; set; }
|
|
public virtual bool Compound { get; set; } /// Not mapped to DB now
|
|
public virtual bool HeatMeter { get; set; } /// Not mapped to DB now
|
|
|
|
public Batch()
|
|
{
|
|
Tests = new List<TestData>();
|
|
WaterMeters = new List<WaterMeter>();
|
|
TestRslts = new List<TestRslt>();
|
|
}
|
|
|
|
public virtual int PassedMetersCount()
|
|
{
|
|
int count = 0;
|
|
foreach (var mtr in WaterMeters) if (mtr.PassedFromTests()) count++;
|
|
return count;
|
|
}
|
|
|
|
public virtual int FailedMetersCount()
|
|
{
|
|
return WaterMeters.Count - PassedMetersCount();
|
|
}
|
|
|
|
public virtual double AmbTempMean()
|
|
{
|
|
double timeSum = 0;
|
|
double sum = 0;
|
|
|
|
foreach (var tr in TestRslts)
|
|
{
|
|
if (tr.TestDone)
|
|
{
|
|
double duration = (tr.EndTime - tr.StartTime).TotalSeconds;
|
|
timeSum += duration;
|
|
sum += (tr.AmbTempMean * duration);
|
|
}
|
|
}
|
|
|
|
return (timeSum == 0) ? 0 : (sum / timeSum);
|
|
}
|
|
|
|
public virtual double AmbPressMean()
|
|
{
|
|
double timeSum = 0;
|
|
double sum = 0;
|
|
|
|
foreach (var tr in TestRslts)
|
|
{
|
|
if (tr.TestDone)
|
|
{
|
|
double duration = (tr.EndTime - tr.StartTime).TotalSeconds;
|
|
timeSum += duration;
|
|
sum += (tr.AmbPressMean * duration);
|
|
}
|
|
}
|
|
|
|
return (timeSum == 0) ? 0 : (sum / timeSum);
|
|
}
|
|
|
|
public virtual double AmbHumiMean()
|
|
{
|
|
double timeSum = 0;
|
|
double sum = 0;
|
|
|
|
foreach (var tr in TestRslts)
|
|
{
|
|
if (tr.TestDone)
|
|
{
|
|
double duration = (tr.EndTime - tr.StartTime).TotalSeconds;
|
|
timeSum += duration;
|
|
sum += (tr.AmbHumiMean * duration);
|
|
}
|
|
}
|
|
|
|
return (timeSum == 0) ? 0 : (sum / timeSum);
|
|
}
|
|
|
|
public virtual double Buoyancy()
|
|
{
|
|
double timeSum = 0;
|
|
double sum = 0;
|
|
|
|
foreach (var tr in TestRslts)
|
|
{
|
|
if (tr.TestData.Evaluate && tr.TestDone)
|
|
{
|
|
double duration = (tr.EndTime - tr.StartTime).TotalSeconds;
|
|
timeSum += duration;
|
|
sum += (tr.Buoyancy * duration);
|
|
}
|
|
}
|
|
|
|
return (timeSum == 0) ? 0 : (sum / timeSum);
|
|
}
|
|
|
|
public virtual TestRslt GetTestRslt(string name, int part)
|
|
{
|
|
foreach (var tr in TestRslts)
|
|
{
|
|
if (part == tr.Part && name.Equals(tr.Name())) return tr;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return string.Format("Batch #{0}, Start:{1}, End:{2}, Procedure:{3}", BatchNr, StartTime, EndTime, ProcedureName);
|
|
}
|
|
|
|
public virtual string ToString(int i)
|
|
{
|
|
return string.Format("Batch: BatchNr={0} TestBenchId={1} ProgramVersion={2} UserName={3} UserNumber={4} ProcedureName={5} ProcedureRevision={6} ProtocolTitle={7} Remark={8} DensityCorr={9} Custom2={10} Custom3={11} StartTime={12} EndTime={13} Dirty={14} RsltsSent={15} RsltsPrinted={16}",
|
|
BatchNr, TestBenchId, ProgramVersion, UserName, UserNumber,
|
|
ProcedureName, ProcedureRevision, ProtocolTitle, Remark, DensityCorr,
|
|
Custom2, Custom3, StartTime, EndTime, Dirty,
|
|
RsltsSent, RsltsPrinted);
|
|
}
|
|
}
|
|
}
|