249 lines
9.1 KiB
C#
249 lines
9.1 KiB
C#
///
|
|
/// Copyright (c) 2015-2017 Sensus Metering Systems
|
|
///
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using Config.Entities;
|
|
|
|
namespace Results.Entities
|
|
{
|
|
public class WaterMeter
|
|
{
|
|
public virtual int Id { get; protected set; }
|
|
public virtual string SerialNr { get; set; } /// Main s/n for compound meters, PCB Number for iPerl water meter
|
|
public virtual string SerialNrAux { get; set; } /// Aux s/n for compound meters, Serial number for iPerl water meter
|
|
public virtual string PurchaseOrder { get; set; }
|
|
public virtual int YearOfProduction { get; set; }
|
|
public virtual int WMPosition { get; set; }
|
|
public virtual string EndState { get; set; } /// End state (of the main water meter)
|
|
public virtual string EndStateAux { get; set; } /// End state of the auxiliary water meter
|
|
public virtual double QRise { get; set; } /// [m3/h] detected Q_rise of a composed meter
|
|
public virtual double QFall { get; set; } /// [m3/h] detected Q_fall of a composed meter
|
|
public virtual bool Passed { get; set; }
|
|
public virtual int ResultCode { get; set; }
|
|
public virtual string Remark { get; set; }
|
|
|
|
#if IPERL
|
|
public virtual int SerialNrEx { get; set; } /// Aux s/n for compound meters, Serial number for iPerl water meter
|
|
public virtual double OrigCalibFactor { get; set; } /// iPerl calibration factor used during the test
|
|
public virtual double CalibFactor { get; set; } /// iPerl calibration factor used during the test
|
|
public virtual double Q2ErrWOCorrection { get; set; }
|
|
public virtual bool Q2CorrectionDone { get; set; } /// true = iPerl Q2 correction was done
|
|
public virtual double Q2Correction { get; set; } /// !!! obsolete
|
|
public virtual int Q2CorrRFlow { get; set; } /// iPerl Q2 correction for the R-flow written to iPerl
|
|
public virtual int Q2CorrLFlow { get; set; } /// iPerl Q2 correction for the L-flow written to iPerl
|
|
public virtual int Q2CorrFlowRight { get; set; } /// 1 = right to left
|
|
public virtual double Diff2Hz8Hz { get; set; }
|
|
public virtual bool Hz2CorrectionDone { get; set; } /// true = iPerl Q2 correction was done
|
|
public virtual int Hz2Correction { get; set; } /// iPerl Q2 correction used during the test
|
|
public virtual string FWVersion { get; set; }
|
|
#endif
|
|
#if ORACLE_DB
|
|
public virtual int Pruefindex { get; set; } /// Not mapped to DB !!! 0=unknown (saving to Oracle failed), >=1 ... pruefindex
|
|
public virtual int HydrPruefung { get; set; } /// Not mapped to DB !!!
|
|
#endif
|
|
public virtual WaterMeterData WaterMeterData { get; set; }
|
|
public virtual Batch Batch { get; set; }
|
|
public virtual IList<MeterTestRslt> MeterTestRslts { get; set; }
|
|
|
|
///
|
|
/// Wrappers
|
|
///
|
|
public virtual string ProductName() { return WaterMeterData.ProductName; }
|
|
public virtual string Producer() { return WaterMeterData.Producer; }
|
|
public virtual string MetrologicalClass() { return WaterMeterData.MetrologicalClass; }
|
|
public virtual string ApprovalInfo() { return WaterMeterData.ApprovalInfo; }
|
|
public virtual double Q4_Qmax() { return WaterMeterData.Q4_Qmax; }
|
|
public virtual double Q3_Qn() { return WaterMeterData.Q3_Qn; }
|
|
public virtual double Q2_Qt() { return WaterMeterData.Q2_Qt; }
|
|
public virtual double Q1_Qmin() { return WaterMeterData.Q1_Qmin; }
|
|
|
|
public virtual bool Compound() { return WaterMeterData.Compound; }
|
|
public virtual bool HeatMeter() { return WaterMeterData.HeatMeter; }
|
|
|
|
public virtual string ProducerAux() { return WaterMeterData.ProducerAux; }
|
|
public virtual double Q3_Qn_Aux() { return WaterMeterData.Q3_Qn_Aux; }
|
|
public virtual string MetrologicalClassAux() { return WaterMeterData.MetrologicalClassAux; }
|
|
public virtual string ApprovalInfoAux() { return WaterMeterData.ApprovalInfoAux; }
|
|
|
|
public virtual int BatchNr() { return Batch.BatchNr; }
|
|
public virtual int BenchId() { return Batch.TestBenchId; }
|
|
public virtual string ProcedureName() { return Batch.ProcedureName; }
|
|
public virtual int ProcedureRevision() { return Batch.ProcedureRevision; }
|
|
public virtual DateTime StartTime() { return Batch.StartTime; }
|
|
public virtual DateTime EndTime() { return Batch.EndTime; }
|
|
|
|
protected MeterTestRslt lastMeterTestRslts;
|
|
public virtual MeterTestRslt LastMeterTestRslts() { return lastMeterTestRslts; }
|
|
|
|
|
|
public virtual bool PassedFromTests()
|
|
{
|
|
bool passed = true;
|
|
foreach (var mtr in MeterTestRslts)
|
|
{
|
|
if (mtr.Evaluate() && (!mtr.Passed || !mtr.TestDone))
|
|
{
|
|
passed = false;
|
|
break;
|
|
}
|
|
}
|
|
return passed;
|
|
}
|
|
|
|
public virtual bool CompletedFromTests()
|
|
{
|
|
bool completed = true;
|
|
foreach (var mtr in MeterTestRslts)
|
|
{
|
|
if (mtr.Evaluate() && !mtr.TestDone)
|
|
{
|
|
completed = false;
|
|
break;
|
|
}
|
|
}
|
|
return completed;
|
|
}
|
|
|
|
|
|
public virtual string PassedColorStr()
|
|
{
|
|
#if PUCHONG_PT200
|
|
return Passed ? "OK|Green" : "NG|Red";
|
|
#else
|
|
return Passed ? "OK|Green" : "NOK|Red";
|
|
#endif
|
|
}
|
|
|
|
|
|
///
|
|
/// Not mapped to the database
|
|
///
|
|
public virtual bool Disabled { get; set; } /// true = Disabled water meters (not saved into DB)
|
|
|
|
|
|
public virtual MeterTestRslt GetMeterTestRslt(string testName)
|
|
{
|
|
return GetMeterTestRslt(testName, CompoundMeterId.SingleOrCompound);
|
|
}
|
|
|
|
public virtual MeterTestRslt GetMeterTestRslt(string testName, Config.Entities.CompoundMeterId meterId)
|
|
{
|
|
if (Disabled) return null;
|
|
string testNameL = testName.ToLower();
|
|
foreach (var mtr in MeterTestRslts)
|
|
{
|
|
if (mtr.Name().ToLower().Equals(testNameL))
|
|
{
|
|
if (mtr.CompoundMeterId == (byte)meterId)
|
|
{
|
|
return mtr;
|
|
}
|
|
else if (meterId == Config.Entities.CompoundMeterId.SingleOrCompound &&
|
|
mtr.CompoundMeterId == (byte)Config.Entities.CompoundMeterId.Single)
|
|
{
|
|
return mtr;
|
|
}
|
|
else if (meterId == Config.Entities.CompoundMeterId.SingleOrCompound &&
|
|
mtr.CompoundMeterId == (byte)Config.Entities.CompoundMeterId.Compound)
|
|
{
|
|
return mtr;
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public virtual TestRslt GetTestRslt(string testName)
|
|
{
|
|
MeterTestRslt mtr = GetMeterTestRslt(testName);
|
|
if (mtr != null) return mtr.TestRslt;
|
|
return null;
|
|
}
|
|
|
|
public virtual TestData GetTestData(string testName)
|
|
{
|
|
foreach (var mtr in MeterTestRslts)
|
|
{
|
|
if (mtr.TestRslt.TestData.Name == testName)
|
|
{
|
|
return mtr.TestRslt.TestData;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// Constructor, initializes a list, used as a base for other constructors
|
|
/// </summary>
|
|
public WaterMeter()
|
|
{
|
|
MeterTestRslts = new List<MeterTestRslt>();
|
|
}
|
|
|
|
|
|
public virtual void CopyContentFrom(WaterMeter src)
|
|
{
|
|
if (src == null) return;
|
|
|
|
SerialNr = src.SerialNr;
|
|
SerialNrAux = src.SerialNrAux;
|
|
PurchaseOrder = src.PurchaseOrder;
|
|
YearOfProduction = src.YearOfProduction;
|
|
// WMPosition skipped
|
|
EndState = src.EndState;
|
|
EndStateAux = src.EndStateAux;
|
|
QRise = src.QRise;
|
|
QFall = src.QFall;
|
|
Passed = src.Passed;
|
|
ResultCode = src.ResultCode;
|
|
Remark = src.Remark;
|
|
#if IPERL
|
|
SerialNrEx = src.SerialNrEx;
|
|
OrigCalibFactor = src.OrigCalibFactor;
|
|
CalibFactor = src.CalibFactor;
|
|
Q2ErrWOCorrection = src.Q2ErrWOCorrection;
|
|
Q2CorrectionDone = src.Q2CorrectionDone;
|
|
Q2Correction = src.Q2Correction;
|
|
Q2CorrRFlow = src.Q2CorrRFlow;
|
|
Q2CorrLFlow = src.Q2CorrLFlow;
|
|
Q2CorrFlowRight = src.Q2CorrFlowRight;
|
|
Diff2Hz8Hz = src.Diff2Hz8Hz;
|
|
Hz2CorrectionDone = src.Hz2CorrectionDone;
|
|
Hz2Correction = src.Hz2Correction;
|
|
FWVersion = src.FWVersion;
|
|
#endif
|
|
#if ORACLE_DB
|
|
Pruefindex = src.Pruefindex;
|
|
HydrPruefung = src.HydrPruefung;
|
|
#endif
|
|
foreach (var mtr in MeterTestRslts)
|
|
{
|
|
MeterTestRslt srcMtr = src.GetMeterTestRslt(mtr.Name(), (Config.Entities.CompoundMeterId)mtr.CompoundMeterId);
|
|
if (srcMtr != null)
|
|
{
|
|
mtr.CopyContentFrom(srcMtr);
|
|
mtr.TestRslt.CopyContentFrom(srcMtr.TestRslt);
|
|
}
|
|
}
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
StringBuilder sb = new StringBuilder(80);
|
|
#if IPERL
|
|
sb.AppendFormat("PCB:{0} S/N:{1} ", SerialNr, SerialNrEx);
|
|
#else
|
|
sb.AppendFormat("S/N:{0} ", SerialNr);
|
|
#endif
|
|
|
|
foreach (var tr in MeterTestRslts) sb.AppendFormat(" {0}:{1}%", tr.Name(), tr.Error.ToString("F2"));
|
|
sb.AppendFormat(" test start: {0} {1} batch={2}", StartTime().ToShortDateString(), StartTime().ToShortTimeString(), BatchNr());
|
|
return sb.ToString();
|
|
}
|
|
}
|
|
}
|