From daac273edbbbced61b9dd3029cadec698e9ec93a Mon Sep 17 00:00:00 2001 From: Milan Hanajik Date: Thu, 22 Jun 2023 10:28:27 +0200 Subject: [PATCH] DataEntry.Uni re-factorization and minor fix when ORACLE_DB, items in summaryResults. --- TBF/Rig/DataEntry/{Uni => }/DEItem.cs | 14 ++++- TBF/Rig/DataEntry/DEUtils.cs | 76 ++++++++++++++++++++++- TBF/Rig/DataEntry/Uni/CycleBgEnForm.cs | 13 ++++ TBF/Rig/DataEntry/Uni/DEUtils.cs | 83 -------------------------- TBF/Rig/Sequences/MainSeqUtils.cs | 3 + TBF/Rig/Sequences/SequenceBase.cs | 61 ++++++++++--------- TBF/TBF.csproj | 3 +- 7 files changed, 136 insertions(+), 117 deletions(-) rename TBF/Rig/DataEntry/{Uni => }/DEItem.cs (84%) delete mode 100644 TBF/Rig/DataEntry/Uni/DEUtils.cs diff --git a/TBF/Rig/DataEntry/Uni/DEItem.cs b/TBF/Rig/DataEntry/DEItem.cs similarity index 84% rename from TBF/Rig/DataEntry/Uni/DEItem.cs rename to TBF/Rig/DataEntry/DEItem.cs index 20bdc0afb..fcadb3098 100644 --- a/TBF/Rig/DataEntry/Uni/DEItem.cs +++ b/TBF/Rig/DataEntry/DEItem.cs @@ -1,11 +1,10 @@ /// /// Copyright (c) 2023 Sensus Slovensko a.s. /// -using System; using System.Collections.Generic; using Common; -namespace TBF.Rig.DataEntry.Uni +namespace TBF.Rig.DataEntry { /// /// Ac = Action @@ -81,5 +80,16 @@ namespace TBF.Rig.DataEntry.Uni columns.Add(new DEItem(content, caption, action, width)); } public static IList GetColumns() { return columns; } + + + static IList summaryColumns = new List(); + /// + public static void ClearSummaryColumns() { summaryColumns.Clear(); } + public static void AddSummaryColumn(DEItem column) { summaryColumns.Add(column); } + public static void AddSummaryColumn(Ct content, string caption, Ac action, int width) + { + summaryColumns.Add(new DEItem(content, caption, action, width)); + } + public static IList GetSummaryColumns() { return summaryColumns; } } } diff --git a/TBF/Rig/DataEntry/DEUtils.cs b/TBF/Rig/DataEntry/DEUtils.cs index a808ada34..da8a432fe 100644 --- a/TBF/Rig/DataEntry/DEUtils.cs +++ b/TBF/Rig/DataEntry/DEUtils.cs @@ -1,13 +1,85 @@ /// -/// Copyright (c) 2018 Sensus Slovensko a.s. +/// Copyright (c) 2018-2023 Sensus Slovensko a.s. /// -using System; using System.Windows.Forms; +using Results.Entities; namespace TBF.Rig.DataEntry { public class DEUtils { + public static string GetContent(Ct content, WaterMeter wm) + { + if (wm == null) return string.Empty; + + switch (content) + { + default: + case Ct.None: return string.Empty; + case Ct.SerialNr: return (!wm.Disabled && wm.SerialNr != null) ? wm.SerialNr : string.Empty; + case Ct.SerialNrAux: return (!wm.Disabled && wm.SerialNrAux != null) ? wm.SerialNrAux : string.Empty; + case Ct.RadioAddress: return (!wm.Disabled && wm.RadioAddress != null) ? wm.RadioAddress : string.Empty; + case Ct.YearOfCalibration: return (!wm.Disabled) ? wm.YearOfProduction.ToString() : string.Empty; + case Ct.StartState: return (!wm.Disabled && wm.GetStartState() != null) ? wm.GetStartState() : string.Empty; + case Ct.EndState: return (!wm.Disabled && wm.EndState != null) ? wm.EndState : string.Empty; + case Ct.ArchivePath: return (!wm.Disabled && wm.ArchivePath != null) ? wm.ArchivePath : string.Empty; + + case Ct.WmOrder: return (!wm.Disabled && wm.PurchaseOrder != null) ? wm.PurchaseOrder : string.Empty; + case Ct.BatchOrder: return (wm.Batch != null && wm.Batch.PurchaseOrder != null) ? wm.Batch.PurchaseOrder : string.Empty; + case Ct.BatchAndWmOrder: return (wm.Batch != null && wm.Batch.PurchaseOrder != null) ? wm.Batch.PurchaseOrder : string.Empty; + + case Ct.WmRemark: return (!wm.Disabled && wm.Remark != null) ? wm.Remark : string.Empty; + case Ct.BatchRemark: return (wm.Batch != null && wm.Batch.Remark != null) ? wm.Batch.Remark : string.Empty; + case Ct.BatchAndWmRemark: return (wm.Batch != null && wm.Batch.Remark != null) ? wm.Batch.Remark : string.Empty; +#if ORACLE_DB + case Ct.Prefix: return (!wm.Disabled && wm.Prefix != null) ? wm.Prefix : string.Empty; + case Ct.Suffix: return (!wm.Disabled && wm.Suffix != null) ? wm.Suffix : string.Empty; +#endif + } + } + + public static void PutContent(Ct content, WaterMeter wm, string value) + { + if (wm == null || wm.Disabled) return; + + int year; + + switch (content) + { + default: + case Ct.None: return; + case Ct.SerialNr: wm.SerialNr = value; return; + case Ct.SerialNrAux: wm.SerialNrAux = value; return; + case Ct.RadioAddress: wm.RadioAddress = value; return; + case Ct.YearOfCalibration: if (int.TryParse(value, out year)) wm.YearOfProduction = year; return; + case Ct.StartState: wm.SetStartState(value); return; + case Ct.EndState: wm.EndState = value; return; + case Ct.ArchivePath: wm.ArchivePath = value; return; + + case Ct.WmOrder: + wm.PurchaseOrder = value; + return; + + case Ct.BatchOrder: + case Ct.BatchAndWmOrder: + if (wm.Batch != null) wm.Batch.PurchaseOrder = value; + return; + + case Ct.WmRemark: + wm.Remark = value; + return; + + case Ct.BatchRemark: + case Ct.BatchAndWmRemark: + if (wm.Batch != null) wm.Batch.Remark = value; + return; +#if ORACLE_DB + case Ct.Prefix: wm.Prefix = value; return; + case Ct.Suffix: wm.Suffix = value; return; +#endif + } + } + /// /// Load Purchase order combo box items from the LocalSettings PurchaseOrderHistory array /// diff --git a/TBF/Rig/DataEntry/Uni/CycleBgEnForm.cs b/TBF/Rig/DataEntry/Uni/CycleBgEnForm.cs index 08246b646..7ada3da43 100644 --- a/TBF/Rig/DataEntry/Uni/CycleBgEnForm.cs +++ b/TBF/Rig/DataEntry/Uni/CycleBgEnForm.cs @@ -97,6 +97,19 @@ namespace TBF.Rig.DataEntry.Uni this.colItems = colItems; this.isEnd = isEnd; + /// Preserve column items for use in SummaryResults + if (!isEnd) + { + /// cycle beginning + DEItem.ClearSummaryColumns(); + foreach (var it in colItems) if (it.Content != Ct.SerialNr) DEItem.AddSummaryColumn(it); + } + else + { + /// cycle end + foreach (var it in colItems) if (it.Content != Ct.SerialNr) DEItem.AddSummaryColumn(it); + } + ls = Program.LocalSettings; /// Readonly variables derived from arguments diff --git a/TBF/Rig/DataEntry/Uni/DEUtils.cs b/TBF/Rig/DataEntry/Uni/DEUtils.cs deleted file mode 100644 index 2f8f9f7fb..000000000 --- a/TBF/Rig/DataEntry/Uni/DEUtils.cs +++ /dev/null @@ -1,83 +0,0 @@ -/// -/// Copyright (c) 2023 Sensus Slovensko a.s. -/// -using System; -using Results.Entities; - -namespace TBF.Rig.DataEntry.Uni -{ - public class DEUtils - { - public static string GetContent(Ct content, WaterMeter wm) - { - if (wm == null) return string.Empty; - - switch (content) - { - default: - case Ct.None: return string.Empty; - case Ct.SerialNr: return (!wm.Disabled && wm.SerialNr != null) ? wm.SerialNr : string.Empty; - case Ct.SerialNrAux: return (!wm.Disabled && wm.SerialNrAux != null) ? wm.SerialNrAux : string.Empty; - case Ct.RadioAddress: return (!wm.Disabled && wm.RadioAddress != null) ? wm.RadioAddress : string.Empty; - case Ct.YearOfCalibration: return (!wm.Disabled) ? wm.YearOfProduction.ToString() : string.Empty; - case Ct.StartState: return (!wm.Disabled && wm.GetStartState() != null) ? wm.GetStartState() : string.Empty; - case Ct.EndState: return (!wm.Disabled && wm.EndState != null) ? wm.EndState : string.Empty; - case Ct.ArchivePath: return (!wm.Disabled && wm.ArchivePath != null) ? wm.ArchivePath : string.Empty; - - case Ct.WmOrder: return (!wm.Disabled && wm.PurchaseOrder != null) ? wm.PurchaseOrder : string.Empty; - case Ct.BatchOrder: return (wm.Batch != null && wm.Batch.PurchaseOrder != null) ? wm.Batch.PurchaseOrder : string.Empty; - case Ct.BatchAndWmOrder: return (wm.Batch != null && wm.Batch.PurchaseOrder != null) ? wm.Batch.PurchaseOrder : string.Empty; - - case Ct.WmRemark: return (!wm.Disabled && wm.Remark != null) ? wm.Remark : string.Empty; - case Ct.BatchRemark: return (wm.Batch != null && wm.Batch.Remark != null) ? wm.Batch.Remark : string.Empty; - case Ct.BatchAndWmRemark: return (wm.Batch != null && wm.Batch.Remark != null) ? wm.Batch.Remark : string.Empty; -#if ORACLE_DB - case Content.Prefix: return (!wm.Disabled && wm.Prefix != null) ? wm.Prefix : string.Empty; - case Content.Suffix: return (!wm.Disabled && wm.Suffix != null) ? wm.Suffix : string.Empty; -#endif - } - } - - public static void PutContent(Ct content, WaterMeter wm, string value) - { - if (wm == null || wm.Disabled) return; - - int year; - - switch (content) - { - default: - case Ct.None: return; - case Ct.SerialNr: wm.SerialNr = value; return; - case Ct.SerialNrAux: wm.SerialNrAux = value; return; - case Ct.RadioAddress: wm.RadioAddress = value; return; - case Ct.YearOfCalibration: if (int.TryParse(value, out year)) wm.YearOfProduction = year; return; - case Ct.StartState: wm.SetStartState(value); return; - case Ct.EndState: wm.EndState = value; return; - case Ct.ArchivePath: wm.ArchivePath = value; return; - - case Ct.WmOrder: - wm.PurchaseOrder = value; - return; - - case Ct.BatchOrder: - case Ct.BatchAndWmOrder: - if (wm.Batch != null) wm.Batch.PurchaseOrder = value; - return; - - case Ct.WmRemark: - wm.Remark = value; - return; - - case Ct.BatchRemark: - case Ct.BatchAndWmRemark: - if (wm.Batch != null) wm.Batch.Remark = value; - return; -#if ORACLE_DB - case Content.Prefix: wm.Prefix = value; return; - case Content.Suffix: wm.Suffix = value; return; -#endif - } - } - } -} diff --git a/TBF/Rig/Sequences/MainSeqUtils.cs b/TBF/Rig/Sequences/MainSeqUtils.cs index f8cf37b14..dfe585d5f 100644 --- a/TBF/Rig/Sequences/MainSeqUtils.cs +++ b/TBF/Rig/Sequences/MainSeqUtils.cs @@ -14,6 +14,7 @@ using TBF.Boxes; using TBF.Resources; using TBF.UiBridge; using Results.Entities; +using TBF.Rig.DataEntry; namespace TBF.Rig.Sequences { @@ -273,6 +274,8 @@ namespace TBF.Rig.Sequences if (cmpnt is ISessionDataMngmnt) (cmpnt as ISessionDataMngmnt).StartSession(); } + DEItem.ClearSummaryColumns(); + IsQ2PreCorrectionCalculated = false; CalculatedQ2PreCorrectionLR = 0; CalculatedQ2PreCorrectionRL = 0; diff --git a/TBF/Rig/Sequences/SequenceBase.cs b/TBF/Rig/Sequences/SequenceBase.cs index 094141aa5..213440e47 100644 --- a/TBF/Rig/Sequences/SequenceBase.cs +++ b/TBF/Rig/Sequences/SequenceBase.cs @@ -7,6 +7,7 @@ using System.Linq; using log4net; using Common; using Config.Entities; +using TBF.Rig.DataEntry; using TBF.Rig.GenericDevices; using TBF.Rig.Operations; using TBF.Boxes; @@ -1180,14 +1181,18 @@ namespace TBF.Rig.Sequences //sb.Append(";"); sb.Append((tstRslt.TotalPulsesMstr != 0) ? tstRslt.TotalPulsesMstr.ToString() : " "); /// CD - '' - pre druhy (Prolonged : celkovy pocet) sb.Append(";"); sb.Append(1000 * tstRslt.TestTimeCorrection); /// CD [ms] Diverter test time correction - for (int i = 0; i < ProcessData.BatchRslts.WMPositionsCount; i++) + var smryItems = DEItem.GetSummaryColumns(); + + for (int i = 0; i < BatchRslts.WMPositionsCount; i++) { - if (ProcessData.BatchRslts.Batch.WaterMeters != null && - ProcessData.BatchRslts.Batch.WaterMeters.Count > i && - ProcessData.BatchRslts.Batch.WaterMeters[i] != null && - !ProcessData.BatchRslts.Batch.WaterMeters[i].Disabled) + if (BatchRslts.Batch.WaterMeters != null && + BatchRslts.Batch.WaterMeters.Count > i && + BatchRslts.Batch.WaterMeters[i] != null && + !BatchRslts.Batch.WaterMeters[i].Disabled) { - if (!ProcessData.BatchRslts.Batch.WaterMeters[i].Compound() && !ProcessData.BatchRslts.Batch.WaterMeters[i].HeatMeter()) + var wm = BatchRslts.Batch.WaterMeters[i]; + + if (!wm.Compound() && !wm.HeatMeter()) { /// If this is a single meter @@ -1197,14 +1202,14 @@ namespace TBF.Rig.Sequences { bool isCamera = (mtrRslt.RegReaderType == (int)RegisterReaderType.Camera); - sb.Append(";"); sb.Append(ProcessData.BatchRslts.Batch.WaterMeters[i].SerialNr); /// CE WM Ser.No. + sb.Append(";"); sb.Append(wm.SerialNr);/// CE WM Ser.No. sb.Append(";"); sb.Append(mtrRslt.VolumeStart); /// CF WM Vstart - pociatocny stav pri pevnom starte alebo zachyteny pri data streame sb.Append(";"); sb.Append(mtrRslt.VolumeEnd); /// CG WM Vend - konecny stav pri pevnom starte alebo zachyteny pri data streame sb.Append(";"); sb.Append(mtrRslt.VolumeMeter); /// CH WM Vmer - objem namerany vodomerom sb.Append(";"); sb.Append(mtrRslt.VolumeRef); /// CI WM Vref - objem namerany stanicou sb.Append(";"); sb.Append(mtrRslt.Error); /// CJ WM Emt - chyba vodomerom nameraneho objemu #if IPERL - sb.Append(";"); sb.Append(ProcessData.BatchRslts.Batch.WaterMeters[i].CalibFactor); /// CK iPerl calibration factor used during the test / ... + sb.Append(";"); sb.Append(wm.CalibFactor); /// CK iPerl calibration factor used during the test / ... #else sb.Append(";"); sb.Append(" "); /// CK nechat prazdne #endif @@ -1219,7 +1224,7 @@ namespace TBF.Rig.Sequences #endif sb.Append(";"); sb.Append(isCamera ? mtrRslt.VolumeStart * mtrRslt.PulsesPerLiter /// CQ WM Phi_start (pri hodnotach z kamery) - : ProcessData.BatchRslts.Batch.WaterMeters[i].WMPosition); /// CQ WMPosition (normalne) + : wm.WMPosition); /// CQ WMPosition (normalne) sb.Append(";"); sb.Append(isCamera ? mtrRslt.VolumeEnd * mtrRslt.PulsesPerLiter /// CR WM Phi_end (pri hodnotach z kamery) : 0); /// CR not used/spare (normalne) @@ -1227,21 +1232,21 @@ namespace TBF.Rig.Sequences sb.Append(";"); sb.Append(mtrRslt.TimestampStart); /// CS WM Time_start - ' ' - sb.Append(";"); sb.Append(mtrRslt.TimestampEnd); /// CT WM Time_end - ' ' - - sb.Append(";"); sb.Append(isCamera ? mtrRslt.PulsesPerLiter : 0); /// CU WM Degree per liter - - sb.Append(";"); sb.Append(0); /// CV Analog out 1 (max mA) - sb.Append(";"); sb.Append(0); /// CW Analog out 2 (V) - sb.Append(";"); sb.Append(0); /// CX Analog out 3 (min mA) - sb.Append(";"); sb.Append(0); /// CY Analog out 4 (max Q) + //sb.Append(";"); sb.Append(isCamera ? mtrRslt.PulsesPerLiter : 0); /// CU camera: WM Degree per liter + sb.Append(";"); sb.Append(smryItems.Count < 1 ? "0" : DEUtils.GetContent(smryItems[0].Content, wm)); /// CU + sb.Append(";"); sb.Append(smryItems.Count < 2 ? "0" : DEUtils.GetContent(smryItems[1].Content, wm)); /// CV + sb.Append(";"); sb.Append(smryItems.Count < 3 ? "0" : DEUtils.GetContent(smryItems[2].Content, wm)); /// CW + sb.Append(";"); sb.Append(smryItems.Count < 4 ? "0" : DEUtils.GetContent(smryItems[3].Content, wm)); /// CX + sb.Append(";"); sb.Append(smryItems.Count < 5 ? "0" : DEUtils.GetContent(smryItems[4].Content, wm)); /// CY } } - else if (ProcessData.BatchRslts.Batch.WaterMeters[i].Compound()) + else if (wm.Compound()) { /// Else if this is a compound meter for (byte b = (byte)CompoundMeterId.CompoundMain; b <= (byte)CompoundMeterId.Compound; b++) { - Results.Entities.MeterTestRslt mtrRslt = ProcessData.BatchRslts.GetMeterTestRslt(tstRslt.Name(), i, (CompoundMeterId)b); + var mtrRslt = ProcessData.BatchRslts.GetMeterTestRslt(tstRslt.Name(), i, (CompoundMeterId)b); if (mtrRslt != null) { @@ -1249,13 +1254,13 @@ namespace TBF.Rig.Sequences switch ((CompoundMeterId)b) { case CompoundMeterId.CompoundMain: - sb.Append(ProcessData.BatchRslts.Batch.WaterMeters[i].SerialNr); /// CE + sb.Append(wm.SerialNr); /// CE break; case CompoundMeterId.CompoundAux: - sb.Append(ProcessData.BatchRslts.Batch.WaterMeters[i].SerialNrAux); /// CE + sb.Append(wm.SerialNrAux); /// CE break; case CompoundMeterId.Compound: - sb.Append(ProcessData.BatchRslts.Batch.WaterMeters[i].SerialNr); /// CE + sb.Append(wm.SerialNr); /// CE break; } sb.Append(";"); sb.Append(mtrRslt.VolumeStart); /// CF WM Vinit - pri pevnom starte pociatocny stav natukany alebo cez inteligentny system @@ -1273,7 +1278,7 @@ namespace TBF.Rig.Sequences bool isCamera = mtrRslt.IsCamera(); sb.Append(";"); sb.Append(isCamera ? mtrRslt.VolumeStart * mtrRslt.PulsesPerLiter /// CQ WM Phi_start (pri hodnotach z kamery) - : ProcessData.BatchRslts.Batch.WaterMeters[i].WMPosition); /// CQ WMPosition (normalne) + : wm.WMPosition); /// CQ WMPosition (normalne) sb.Append(";"); sb.Append(isCamera ? mtrRslt.VolumeEnd * mtrRslt.PulsesPerLiter /// CR WM Phi_end (pri hodnotach z kamery) : 0); /// CR not used/spare (normalne) @@ -1292,19 +1297,19 @@ namespace TBF.Rig.Sequences { /// Else this is a heat meter - Results.Entities.MeterTestRslt volumeMtr = ProcessData.BatchRslts.GetMeterTestRslt(tstRslt.Name(), i, CompoundMeterId.HeatMeterVolume); - Results.Entities.MeterTestRslt energyMtr = ProcessData.BatchRslts.GetMeterTestRslt(tstRslt.Name(), i, CompoundMeterId.HeatMeterEnergy); + var volumeMtr = ProcessData.BatchRslts.GetMeterTestRslt(tstRslt.Name(), i, CompoundMeterId.HeatMeterVolume); + var energyMtr = ProcessData.BatchRslts.GetMeterTestRslt(tstRslt.Name(), i, CompoundMeterId.HeatMeterEnergy); if (volumeMtr != null) { - sb.Append(";"); sb.Append(ProcessData.BatchRslts.Batch.WaterMeters[i].SerialNr); /// WM Ser.No. + sb.Append(";"); sb.Append(wm.SerialNr); /// WM Ser.No. sb.Append(";"); sb.Append(volumeMtr.VolumeStart); /// WM Vstart - pociatocny stav pri pevnom starte alebo zachyteny pri data streame sb.Append(";"); sb.Append(volumeMtr.VolumeEnd); /// WM Vend - konecny stav pri pevnom starte alebo zachyteny pri data streame sb.Append(";"); sb.Append(volumeMtr.VolumeMeter); /// WM Vmer - objem namerany vodomerom sb.Append(";"); sb.Append(volumeMtr.VolumeRef); /// WM Vref - objem namerany stanicou sb.Append(";"); sb.Append(volumeMtr.Error); /// WM Emt - chyba vodomerom nameraneho objemu #if IPERL - sb.Append(";"); sb.Append(ProcessData.BatchRslts.Batch.WaterMeters[i].CalibFactor); /// iPerl calibration factor used during the test / ... + sb.Append(";"); sb.Append(wm.CalibFactor); /// iPerl calibration factor used during the test / ... #else sb.Append(";"); sb.Append(" "); /// nechat prazdne #endif @@ -1325,14 +1330,14 @@ namespace TBF.Rig.Sequences if (energyMtr != null) { - sb.Append(";"); sb.Append(ProcessData.BatchRslts.Batch.WaterMeters[i].SerialNr); /// WM Ser.No. + sb.Append(";"); sb.Append(wm.SerialNr); /// WM Ser.No. sb.Append(";"); sb.Append(energyMtr.VolumeStart); /// WM Vstart - pociatocny stav pri pevnom starte alebo zachyteny pri data streame sb.Append(";"); sb.Append(energyMtr.VolumeEnd); /// WM Vend - konecny stav pri pevnom starte alebo zachyteny pri data streame sb.Append(";"); sb.Append(energyMtr.VolumeMeter); /// WM Vmer - objem namerany vodomerom sb.Append(";"); sb.Append(energyMtr.VolumeRef); /// WM Vref - objem namerany stanicou sb.Append(";"); sb.Append(energyMtr.Error); /// WM Emt - chyba vodomerom nameraneho objemu #if IPERL - sb.Append(";"); sb.Append(ProcessData.BatchRslts.Batch.WaterMeters[i].CalibFactor); /// iPerl calibration factor used during the test / ... + sb.Append(";"); sb.Append(wm.CalibFactor); /// iPerl calibration factor used during the test / ... #else sb.Append(";"); sb.Append(" "); /// nechat prazdne #endif @@ -1355,7 +1360,7 @@ namespace TBF.Rig.Sequences } sb.Append(";"); - return sb.ToString(); + return sb.ToString(); } diff --git a/TBF/TBF.csproj b/TBF/TBF.csproj index 9caba8753..38fb9046e 100644 --- a/TBF/TBF.csproj +++ b/TBF/TBF.csproj @@ -254,6 +254,7 @@ TestStartEndForm.cs + Form @@ -540,8 +541,6 @@ CycleBgEnForm.cs - -