From cf626d7b9118c4b6036e7586cec2d202165d0b8e Mon Sep 17 00:00:00 2001 From: Milan Hanajik Date: Thu, 30 Mar 2023 09:56:26 +0200 Subject: [PATCH] Batch.SaveTime introduced, Batch.EndTime calculation modified. --- Results/Entities/Batch.cs | 11 +++++--- Results/Entities/TestRslt.cs | 9 ++++--- Results/Mappings/BatchMap.cs | 3 ++- SharedDatabase/Entities/Batch.cs | 41 ++++++++++++++++++----------- SharedDatabase/Entities/TestRslt.cs | 30 +++++++++++---------- SharedDatabase/Mappings/BatchMap.cs | 3 ++- TBF/Rig/Sequences/MainSeq.cs | 14 +++++++++- 7 files changed, 71 insertions(+), 40 deletions(-) diff --git a/Results/Entities/Batch.cs b/Results/Entities/Batch.cs index cbea7b148..70a543de1 100644 --- a/Results/Entities/Batch.cs +++ b/Results/Entities/Batch.cs @@ -1,5 +1,5 @@ /// -/// Copyright (c) 2015-2021 Sensus Slovensko a.s. +/// Copyright (c) 2015-2023 Sensus Slovensko a.s. /// using System; using System.Collections.Generic; @@ -38,7 +38,8 @@ namespace Results.Entities public virtual int Counter9 { get; set; } public virtual int Counter10 { get; set; } public virtual DateTime StartTime { get; set; } - public virtual DateTime EndTime { get; set; } + public virtual DateTime EndTime { get; set; } + public virtual DateTime SaveTime { get; set; } public virtual bool Dirty { get; set; } public virtual bool RsltsSent { get; set; } public virtual bool RsltsPrinted { get; set; } @@ -156,6 +157,7 @@ namespace Results.Entities Counter10 = oriBatch.Counter10; StartTime = oriBatch.StartTime; EndTime = oriBatch.EndTime; + SaveTime = oriBatch.SaveTime; Dirty = oriBatch.Dirty; RsltsSent = oriBatch.RsltsSent; RsltsPrinted = oriBatch.RsltsPrinted; @@ -322,7 +324,8 @@ namespace Results.Entities public override string ToString() { - return string.Format("Batch #{0}, Start:{1}, End:{2}, Procedure:{3}", BatchNr, StartTime, EndTime, ProcedureName); + return string.Format("Batch {0} ({1}s) Start {2}, End {3}, Proc={4}", + BatchNr, (EndTime - StartTime).TotalSeconds, StartTime, EndTime, ProcedureName); } public virtual string ToString(int i) @@ -363,6 +366,7 @@ namespace Results.Entities writer.Write(Counter10); writer.Write(StartTime.ToString()); writer.Write(EndTime.ToString()); + writer.Write(SaveTime.ToString()); writer.Write(Dirty); writer.Write(RsltsSent); writer.Write(RsltsPrinted); @@ -429,6 +433,7 @@ namespace Results.Entities Counter10 = reader.ReadInt32(); StartTime = DateTime.Parse(reader.ReadString()); EndTime = DateTime.Parse(reader.ReadString()); + SaveTime = DateTime.Parse(reader.ReadString()); Dirty = reader.ReadBoolean(); RsltsSent = reader.ReadBoolean(); RsltsPrinted = reader.ReadBoolean(); diff --git a/Results/Entities/TestRslt.cs b/Results/Entities/TestRslt.cs index 2c80bc3ab..30248393a 100644 --- a/Results/Entities/TestRslt.cs +++ b/Results/Entities/TestRslt.cs @@ -1,5 +1,5 @@ /// -/// Copyright (c) 2015-2022 Sensus Slovensko a.s. +/// Copyright (c) 2015-2023 Sensus Slovensko a.s. /// using System; using System.Collections.Generic; @@ -147,7 +147,8 @@ namespace Results.Entities public virtual int Counter5 { get; set; } /// Wrappers - public virtual string Name() { return Utils.GetTestName(TestData.Name, TestData.Repeats, RepetitionNr); } + public virtual string Name() { return Common.Utils.GetTestName(TestData.Name, TestData.Repeats, RepetitionNr); } + public virtual string Key() { return string.Format("{0}~{1}~{2}~{3}", TestData.Name, Part, TestData.Repeats, RepetitionNr); } /// Unique key public virtual int Repeats() { return TestData.Repeats; } public virtual double Qfrom() { return TestData.Qfrom; } public virtual double Qto() { return TestData.Qto; } @@ -229,7 +230,7 @@ namespace Results.Entities public virtual float TempLimLo() { return TestData.TempLimLo; } public virtual float TempLimHi() { return TestData.TempLimHi; } public virtual bool Evaluate() { return TestData.Evaluate; } - public virtual Common.Publish Publish() { return (Publish)TestData.Publish; } + public virtual Publish Publish() { return (Publish)TestData.Publish; } public TestRslt() @@ -278,7 +279,7 @@ namespace Results.Entities DensityDiv = src.DensityDiv; MassOfEvapWater = src.MassOfEvapWater; SpareDbl = src.SpareDbl; - Flow = src.Flow; + Flow = src.Flow; VolumeCTV = src.VolumeCTV; VolumeMaster = src.VolumeMaster; ErrorMaster = src.ErrorMaster; diff --git a/Results/Mappings/BatchMap.cs b/Results/Mappings/BatchMap.cs index 19a1d29e0..933167875 100644 --- a/Results/Mappings/BatchMap.cs +++ b/Results/Mappings/BatchMap.cs @@ -1,5 +1,5 @@ /// -/// Copyright (c) 2015-2021 Sensus Slovensko a.s. +/// Copyright (c) 2015-2023 Sensus Slovensko a.s. /// using FluentNHibernate.Mapping; using Results.Entities; @@ -34,6 +34,7 @@ namespace Results.Mappings Map(x => x.StartTime); Map(x => x.EndTime); + Map(x => x.SaveTime); Map(x => x.Dirty); Map(x => x.RsltsSent); Map(x => x.RsltsPrinted); diff --git a/SharedDatabase/Entities/Batch.cs b/SharedDatabase/Entities/Batch.cs index 8a071131b..81fe67860 100644 --- a/SharedDatabase/Entities/Batch.cs +++ b/SharedDatabase/Entities/Batch.cs @@ -1,5 +1,5 @@ /// -/// Copyright (c) 2015-2021 Sensus Slovensko a.s. +/// Copyright (c) 2015-2023 Sensus Slovensko a.s. /// using System; using System.Collections.Generic; @@ -23,7 +23,9 @@ namespace SharedDatabase.Entities public virtual int UserNumber { get; set; } public virtual string ProcedureName { get; set; } public virtual bool IsRemoteProcedure { get; set; } /// Stara Tura, not mapped to DB - public virtual string ProcedureDescription { get; set; } /// CEVAK, not mapped to DB + public virtual string PurchaseOrder { get; set; } /// Stara Tura, Nanjing, not mapped to DB + public virtual string Workflow { get; set; } /// Stara Tura, Nanjing, not mapped to DB + 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 Remark { get; set; } @@ -36,7 +38,8 @@ namespace SharedDatabase.Entities public virtual int Counter9 { get; set; } public virtual int Counter10 { get; set; } public virtual DateTime StartTime { get; set; } - public virtual DateTime EndTime { get; set; } + public virtual DateTime EndTime { get; set; } + public virtual DateTime SaveTime { get; set; } public virtual bool Dirty { get; set; } public virtual bool RsltsSent { get; set; } public virtual bool RsltsPrinted { get; set; } @@ -111,6 +114,7 @@ namespace SharedDatabase.Entities UserName = string.Empty; ProcedureName = string.Empty; IsRemoteProcedure = false; + PurchaseOrder = null; ProcedureDescription = string.Empty; WatermetersStr = string.Empty; Remark = string.Empty; @@ -138,6 +142,7 @@ namespace SharedDatabase.Entities UserNumber = oriBatch.UserNumber; ProcedureName = oriBatch.ProcedureName; IsRemoteProcedure = oriBatch.IsRemoteProcedure; + PurchaseOrder = oriBatch.PurchaseOrder; ProcedureDescription = oriBatch.ProcedureDescription; ProcedureRevision = oriBatch.ProcedureRevision; WatermetersStr = oriBatch.WatermetersStr; @@ -152,6 +157,7 @@ namespace SharedDatabase.Entities Counter10 = oriBatch.Counter10; StartTime = oriBatch.StartTime; EndTime = oriBatch.EndTime; + SaveTime = oriBatch.SaveTime; Dirty = oriBatch.Dirty; RsltsSent = oriBatch.RsltsSent; RsltsPrinted = oriBatch.RsltsPrinted; @@ -204,7 +210,7 @@ namespace SharedDatabase.Entities foreach (var tr in TestRslts) { - if (tr.TestDone) + if (tr.TestDone && tr.AmbTempMean != 0) { double duration = (tr.EndTime - tr.StartTime).TotalSeconds; timeSum += duration; @@ -222,7 +228,7 @@ namespace SharedDatabase.Entities foreach (var tr in TestRslts) { - if (tr.TestDone) + if (tr.TestDone && tr.AmbPressMean != 0) { double duration = (tr.EndTime - tr.StartTime).TotalSeconds; timeSum += duration; @@ -240,7 +246,7 @@ namespace SharedDatabase.Entities foreach (var tr in TestRslts) { - if (tr.TestDone) + if (tr.TestDone && tr.AmbHumiMean != 0) { double duration = (tr.EndTime - tr.StartTime).TotalSeconds; timeSum += duration; @@ -255,7 +261,7 @@ namespace SharedDatabase.Entities { for (int i = 0; i < TestRslts.Count; i++) { - if (TestRslts[i].Publish() == Common.Publish.Always) + if (TestRslts[i].Publish() == Common.Publish.Always && TestRslts[i].AmbTempStart != 0) return TestRslts[i].AmbTempStart; } return 0; @@ -264,7 +270,7 @@ namespace SharedDatabase.Entities { for (int i = 0; i < TestRslts.Count; i++) { - if (TestRslts[i].Publish() == Common.Publish.Always) + if (TestRslts[i].Publish() == Common.Publish.Always && TestRslts[i].AmbPressStart != 0) return TestRslts[i].AmbPressStart; } return 0; @@ -273,7 +279,7 @@ namespace SharedDatabase.Entities { for (int i = 0; i < TestRslts.Count; i++) { - if (TestRslts[i].Publish() == Common.Publish.Always) + if (TestRslts[i].Publish() == Common.Publish.Always && TestRslts[i].AmbHumiStart != 0) return TestRslts[i].AmbHumiStart; } return 0; @@ -281,27 +287,27 @@ namespace SharedDatabase.Entities public virtual double AmbTempEnd() { - for (int i = TestRslts.Count - 1; i >= 0; i++) + for (int i = TestRslts.Count - 1; i >= 0; i--) { - if (TestRslts[i].Publish() == Common.Publish.Always) + if (TestRslts[i].Publish() == Common.Publish.Always && TestRslts[i].AmbTempEnd != 0) return TestRslts[i].AmbTempEnd; } return 0; } public virtual double AmbPressEnd() { - for (int i = TestRslts.Count - 1; i >= 0; i++) + for (int i = TestRslts.Count - 1; i >= 0; i--) { - if (TestRslts[i].Publish() == Common.Publish.Always) + if (TestRslts[i].Publish() == Common.Publish.Always && TestRslts[i].AmbPressEnd != 0) return TestRslts[i].AmbPressEnd; } return 0; } public virtual double AmbHumiEnd() { - for (int i = TestRslts.Count - 1; i >= 0; i++) + for (int i = TestRslts.Count - 1; i >= 0; i--) { - if (TestRslts[i].Publish() == Common.Publish.Always) + if (TestRslts[i].Publish() == Common.Publish.Always && TestRslts[i].AmbHumiEnd != 0) return TestRslts[i].AmbHumiEnd; } return 0; @@ -318,7 +324,8 @@ namespace SharedDatabase.Entities public override string ToString() { - return string.Format("Batch #{0}, Start:{1}, End:{2}, Procedure:{3}", BatchNr, StartTime, EndTime, ProcedureName); + return string.Format("Batch {0} ({1}s) Start {2}, End {3}, Proc={4}", + BatchNr, (EndTime - StartTime).TotalSeconds, StartTime, EndTime, ProcedureName); } public virtual string ToString(int i) @@ -359,6 +366,7 @@ namespace SharedDatabase.Entities writer.Write(Counter10); writer.Write(StartTime.ToString()); writer.Write(EndTime.ToString()); + writer.Write(SaveTime.ToString()); writer.Write(Dirty); writer.Write(RsltsSent); writer.Write(RsltsPrinted); @@ -425,6 +433,7 @@ namespace SharedDatabase.Entities Counter10 = reader.ReadInt32(); StartTime = DateTime.Parse(reader.ReadString()); EndTime = DateTime.Parse(reader.ReadString()); + SaveTime = DateTime.Parse(reader.ReadString()); Dirty = reader.ReadBoolean(); RsltsSent = reader.ReadBoolean(); RsltsPrinted = reader.ReadBoolean(); diff --git a/SharedDatabase/Entities/TestRslt.cs b/SharedDatabase/Entities/TestRslt.cs index 8fc57bda0..7657f0aa4 100644 --- a/SharedDatabase/Entities/TestRslt.cs +++ b/SharedDatabase/Entities/TestRslt.cs @@ -1,10 +1,11 @@ /// -/// Copyright (c) 2015-2022 Sensus Slovensko a.s. +/// Copyright (c) 2015-2023 Sensus Slovensko a.s. /// using System; using System.Collections.Generic; using System.Text; using System.IO; +using Common; namespace SharedDatabase.Entities { @@ -146,8 +147,9 @@ namespace SharedDatabase.Entities public virtual int Counter5 { get; set; } /// Wrappers - public virtual string Name() { return Utils.GetTestName(TestData.Name, TestData.Repeats, RepetitionNr); } - public virtual int Repeats() { return TestData.Repeats; } + public virtual string Name() { return Common.Utils.GetTestName(TestData.Name, TestData.Repeats, RepetitionNr); } + public virtual string Key() { return string.Format("{0}~{1}~{2}~{3}", TestData.Name, Part, TestData.Repeats, RepetitionNr); } /// Unique key + public virtual int Repeats() { return TestData.Repeats; } public virtual double Qfrom() { return TestData.Qfrom; } public virtual double Qto() { return TestData.Qto; } public virtual double TargetVolume() { return TestData.TargetVolume; } @@ -157,11 +159,11 @@ namespace SharedDatabase.Entities public virtual string Scale() { return (Components != null && Components.Scale != null) ? Components.Scale : string.Empty; } public virtual string Diverter() { return (Components != null && Components.Diverter != null) ? Components.Diverter : string.Empty; } public virtual string RegValve() { return (Components != null && Components.RegValve != null) ? Components.RegValve : string.Empty; } - public virtual bool IsRelErrTest() { return (MethodClass != null) ? (MethodClass.Contains("FixedStart") || MethodClass.Contains("FlyingStart") || MethodClass.Contains("CombinedWithDetection") || MethodClass.Contains("DiverterTest") || MethodClass.Contains("ManualEntry")) : true; } + public virtual bool IsRelErrTest() { return (MethodClass != null) ? (MethodClass.Contains("StandingStart") || MethodClass.Contains("FlyingStart") || MethodClass.Contains("CombinedWithDetection") || MethodClass.Contains("DiverterTest") || MethodClass.Contains("ManualEntry")) : true; } public virtual bool IsPMaxTest() { return (MethodClass != null) ? (MethodClass.Contains("PMaxTest") || MethodClass.Contains("LeakTest") || TestData.Method.ToLower().Contains("pmax")) : true; } - public virtual bool IsStartStop() { return (MethodClass != null) ? MethodClass.Contains("FixedStart") : true; } + public virtual bool IsStartStop() { return (MethodClass != null) ? MethodClass.Contains("StandingStart") : true; } public virtual bool IsDiverter() { return (MethodClass != null) ? ((MethodClass.Contains("FlyingStart") && MethodClass.Contains("MassColl")) || MethodClass.Contains("DiverterTest")) : true; } - public virtual bool IsVolumeMethod() { return (MethodClass != null) ? (MethodClass.Contains("TestMethods.FixedStart.") || MethodClass.Contains("TestMethods.FlyingStart.")) : false; } + public virtual bool IsVolumeMethod() { return (MethodClass != null) ? (MethodClass.Contains("TestMethods.StandingStart.") || MethodClass.Contains("TestMethods.FlyingStart.")) : false; } public virtual string MethodElde() { @@ -170,9 +172,9 @@ namespace SharedDatabase.Entities else if (MethodClass.Contains("TestMethods.FlyingStartMassCollectionProlonged.")) return "MS"; else if (MethodClass.Contains("TestMethods.FlyingStartMassCollectionComparative.")) return "MS"; else if (MethodClass.Contains("TestMethods.FlyingStart.")) return "VS"; - else if (MethodClass.Contains("TestMethods.FixedStartMassCollection.")) return "MP"; - else if (MethodClass.Contains("TestMethods.FixedStartTankCollection.")) return "VP"; - else if (MethodClass.Contains("TestMethods.FixedStart.")) return "VP"; + else if (MethodClass.Contains("TestMethods.StandingStartMassCollection.")) return "MP"; + else if (MethodClass.Contains("TestMethods.StandingStartTankCollection.")) return "VP"; + else if (MethodClass.Contains("TestMethods.StandingStart.")) return "VP"; else return string.Empty; } @@ -224,11 +226,11 @@ namespace SharedDatabase.Entities } } - public virtual double ErrLimMargin() { return TestData.ErrLimMargin; } - public virtual float TempLimLo() { return TestData.TempLimLo; } - public virtual float TempLimHi() { return TestData.TempLimHi; } - public virtual bool Evaluate() { return TestData.Evaluate; } - public virtual Common.Publish Publish() { return (Common.Publish)TestData.Publish; } + public virtual double ErrLimMargin() { return TestData.ErrLimMargin; } + public virtual float TempLimLo() { return TestData.TempLimLo; } + public virtual float TempLimHi() { return TestData.TempLimHi; } + public virtual bool Evaluate() { return TestData.Evaluate; } + public virtual Publish Publish() { return (Publish)TestData.Publish; } public TestRslt() diff --git a/SharedDatabase/Mappings/BatchMap.cs b/SharedDatabase/Mappings/BatchMap.cs index c83bd0f40..54adf33ec 100644 --- a/SharedDatabase/Mappings/BatchMap.cs +++ b/SharedDatabase/Mappings/BatchMap.cs @@ -1,5 +1,5 @@ /// -/// Copyright (c) 2015-2021 Sensus Slovensko a.s. +/// Copyright (c) 2015-2023 Sensus Slovensko a.s. /// using FluentNHibernate.Mapping; @@ -33,6 +33,7 @@ namespace SharedDatabase.Mappings Map(x => x.StartTime); Map(x => x.EndTime); + Map(x => x.SaveTime); Map(x => x.Dirty); Map(x => x.RsltsSent); Map(x => x.RsltsPrinted); diff --git a/TBF/Rig/Sequences/MainSeq.cs b/TBF/Rig/Sequences/MainSeq.cs index 8ea394464..ecc4b9ea9 100644 --- a/TBF/Rig/Sequences/MainSeq.cs +++ b/TBF/Rig/Sequences/MainSeq.cs @@ -1252,7 +1252,19 @@ namespace TBF.Rig.Sequences /// /// Update batch results, determine whether watermeters passed all required tests /// - BatchRslts.Batch.EndTime = DateTime.Now; /// Set cycle end time + + /// Determine the end of the last test and save it as the batch end time + DateTime lastTestEndTime = DateTime.MinValue; + if (BatchRslts.Batch.TestRslts != null) + { + foreach (var tr in BatchRslts.Batch.TestRslts) + { + if (tr.EndTime > lastTestEndTime) lastTestEndTime = tr.EndTime; + } + } + BatchRslts.Batch.EndTime = lastTestEndTime; + BatchRslts.Batch.SaveTime = DateTime.Now; + Results.Utils.GetCounterStates(BatchRslts.Batch, Program.LocalSettings.Counters); /// Update counters /// Remove results of internal tests for (int i = BatchRslts.Batch.TestRslts.Count - 1; i >= 0; i--)