diff --git a/Results/Entities/WaterMeter.cs b/Results/Entities/WaterMeter.cs index 8c8a47a36..bfa8ca96d 100644 --- a/Results/Entities/WaterMeter.cs +++ b/Results/Entities/WaterMeter.cs @@ -44,8 +44,9 @@ namespace Results.Entities { public virtual int Id { get; protected set; } public virtual string SerialNr { get; set; } /// S/N _or_ S/N of the main meter of a compound meter _or_ PCB Number of an iPerl water meter - public virtual string SerialNrAux { get; set; } /// S/N of the aux. meter of a compound meter _or_ a complete assigned S/N of an iPerl water meter - public virtual string PurchaseOrder { get; set; } + public virtual string SerialNrAux { get; set; } /// S/N of the aux. meter of a compound meter _or_ eRegister PCB Number of a 640 water meter + public virtual string RadioAddress { get; set; } + public virtual string PurchaseOrder { get; set; } public virtual int YearOfProduction { get; set; } public virtual int WMPosition { get; set; } /// 1-based water meter position public virtual string EndState { get; set; } /// End state (of the main water meter) @@ -77,7 +78,6 @@ namespace Results.Entities /// /// Data from a production test bench (in case of tests on iPerl special) /// - public virtual string RadioAddress { get; set; } public virtual int PaletteNr { get; set; } public virtual int UmkartonNr { get; set; } public virtual string ProdTestBench { get; set; } @@ -97,6 +97,7 @@ namespace Results.Entities public virtual string Prefix { get; set; } public virtual string Suffix { get; set; } public virtual string CompleteSerialNr { get; set; } + public virtual string OriRadioAddress { get; set; } /// Not mapped to DB !!! Original radio address of a 640 water meter (albatrosID) public virtual int WMTypeRevision { get; set; } public virtual int Pruefindex { get; set; } /// >= 1 ... pruefindex public virtual int HydrPruefung { get; set; } diff --git a/Results/ItemID.cs b/Results/ItemID.cs index ec3cde273..e91e5e8ea 100644 --- a/Results/ItemID.cs +++ b/Results/ItemID.cs @@ -332,6 +332,18 @@ namespace Results Diverter, /// 281 RegValve, /// 282 + X1, /// 283 + X2, /// 284 + X3, /// 285 + X4, /// 286 + X5, /// 287 + X6, /// 288 + X7, /// 289 + X8, /// 290 + X9, /// 291 + + RadioAddress, /// 292 + Count, } } diff --git a/Results/Mappings/WaterMeterMap.cs b/Results/Mappings/WaterMeterMap.cs index f6af4fa25..e2994a0ff 100644 --- a/Results/Mappings/WaterMeterMap.cs +++ b/Results/Mappings/WaterMeterMap.cs @@ -13,7 +13,8 @@ namespace Results.Mappings Id(x => x.Id); Map(x => x.SerialNr); Map(x => x.SerialNrAux); - Map(x => x.PurchaseOrder); + Map(x => x.RadioAddress); + Map(x => x.PurchaseOrder); Map(x => x.YearOfProduction); Map(x => x.WMPosition); Map(x => x.EndState); @@ -43,7 +44,6 @@ namespace Results.Mappings Map(x => x.FWVersion); #endif #if TURA_SPECIAL - Map(x => x.RadioAddress); Map(x => x.PaletteNr); Map(x => x.UmkartonNr); Map(x => x.ProdTestBench); @@ -60,6 +60,7 @@ namespace Results.Mappings Map(x => x.Prefix); Map(x => x.Suffix); Map(x => x.CompleteSerialNr); + Map(x => x.OriRadioAddress); Map(x => x.Pruefindex); Map(x => x.HydrPruefung); Map(x => x.WMTypeRevision); diff --git a/Results/Properties/AssemblyInfo.cs b/Results/Properties/AssemblyInfo.cs index f264ea963..32eb71bb9 100644 --- a/Results/Properties/AssemblyInfo.cs +++ b/Results/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("3.1.1464.0")] -[assembly: AssemblyFileVersion("3.1.1464.0")] +[assembly: AssemblyVersion("3.1.1800.0")] +[assembly: AssemblyFileVersion("3.1.1800.0")] diff --git a/Results/Resources/Strings.Designer.cs b/Results/Resources/Strings.Designer.cs index e90261970..8ba3c5c88 100644 --- a/Results/Resources/Strings.Designer.cs +++ b/Results/Resources/Strings.Designer.cs @@ -906,6 +906,15 @@ namespace Results.Resources { } } + /// + /// Looks up a localized string similar to Radio address. + /// + internal static string Radio_address { + get { + return ResourceManager.GetString("Radio_address", resourceCulture); + } + } + /// /// Looks up a localized string similar to Ref.pulses. /// @@ -1581,6 +1590,15 @@ namespace Results.Resources { } } + /// + /// Looks up a localized string similar to Radio address of the meter. + /// + internal static string Tooltip_RA { + get { + return ResourceManager.GetString("Tooltip_RA", resourceCulture); + } + } + /// /// Looks up a localized string similar to Calculated density of water from table or formula at water density calibration temperature (r). /// diff --git a/Results/Resources/Strings.resx b/Results/Resources/Strings.resx index 47e9adeeb..b4cf4921d 100644 --- a/Results/Resources/Strings.resx +++ b/Results/Resources/Strings.resx @@ -831,4 +831,10 @@ Info flags + + Radio address + + + Radio address of the meter + \ No newline at end of file diff --git a/Results/WMeterRsltItemSpec.cs b/Results/WMeterRsltItemSpec.cs index dd6019b1c..e76ea9124 100644 --- a/Results/WMeterRsltItemSpec.cs +++ b/Results/WMeterRsltItemSpec.cs @@ -366,11 +366,12 @@ namespace Results AllItems.Add(new WMeterRsltItemSpec(ItemID.Text5, "Text5", Quantity.String, ItemCategory.MeterData, (w, t, u, f, p) => FormatStr(f, w.WaterMeterData.Text5))); /// Water meters results - AllItems.Add(new WMeterRsltItemSpec(ItemID.Serial_Nr, Strings.sn, Strings.Tooltip_sn, Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => FormatStr(f, w.SerialNr))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Purchase_order, Strings.PO, Quantity.String, ItemCategory.Other, (w, t, u, f, p) => FormatStr(f, w.PurchaseOrder))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Year_of_production, Strings.Year, Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => FormatInt(f, w.YearOfProduction))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.WM_Position, Strings.Pos, Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => FormatInt(f, w.WMPosition))); - AllItems.Add(new WMeterRsltItemSpec(ItemID.Formatted_WM_ID, "Formatted WM ID", Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => string.IsNullOrEmpty(f) ? string.Format("{0}-{1}", w.BatchNr(), w.WMPosition) : string.Format(f, w.StartTime(), w.EndTime(), w.BatchNr(), w.WMPosition, w.SerialNr))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Serial_Nr, Strings.sn, Strings.Tooltip_sn, Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => FormatStr(f, w.SerialNr))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.RadioAddress, Strings.Radio_address, Strings.Tooltip_RA, Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => FormatStr(f, w.RadioAddress))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Purchase_order, Strings.PO, Quantity.String, ItemCategory.Other, (w, t, u, f, p) => FormatStr(f, w.PurchaseOrder))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Year_of_production, Strings.Year, Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => FormatInt(f, w.YearOfProduction))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.WM_Position, Strings.Pos, Quantity.Number, ItemCategory.Other, (w, t, u, f, p) => FormatInt(f, w.WMPosition))); + AllItems.Add(new WMeterRsltItemSpec(ItemID.Formatted_WM_ID, "Formatted WM ID", Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => string.IsNullOrEmpty(f) ? string.Format("{0}-{1}", w.BatchNr(), w.WMPosition) : string.Format(f, w.StartTime(), w.EndTime(), w.BatchNr(), w.WMPosition, w.SerialNr))); /// Water meters results (single) AllItems.Add(new WMeterRsltItemSpec(ItemID.End_state, Strings.End_state, Quantity.String, ItemCategory.MeterResult, (w, t, u, f, p) => FormatStr(f, w.EndState))); diff --git a/ResultsBrowser/Properties/AssemblyInfo.cs b/ResultsBrowser/Properties/AssemblyInfo.cs index dd20080cc..6673ee1ea 100644 --- a/ResultsBrowser/Properties/AssemblyInfo.cs +++ b/ResultsBrowser/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("3.1.1464.0")] -[assembly: AssemblyFileVersion("3.1.1464.0")] +[assembly: AssemblyVersion("3.1.1800.0")] +[assembly: AssemblyFileVersion("3.1.1800.0")] diff --git a/TBF/Properties/AssemblyInfo.cs b/TBF/Properties/AssemblyInfo.cs index bafeee88e..bc5d14f47 100644 --- a/TBF/Properties/AssemblyInfo.cs +++ b/TBF/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Runtime.InteropServices; // Build Number // Revision // -[assembly: AssemblyVersion("3.1.1795.0")] -[assembly: AssemblyFileVersion("3.1.1795.0")] +[assembly: AssemblyVersion("3.1.1800.0")] +[assembly: AssemblyFileVersion("3.1.1800.0")] diff --git a/TBF/Rig/Output/DB/SensusOracle/Database.cs b/TBF/Rig/Output/DB/SensusOracle/Database.cs index 5c576e4b0..fcbd3f0de 100644 --- a/TBF/Rig/Output/DB/SensusOracle/Database.cs +++ b/TBF/Rig/Output/DB/SensusOracle/Database.cs @@ -235,9 +235,10 @@ namespace TBF.Rig.Output.DB.SensusOracle cmd = new OracleCommand("SELECT pruefungsnr, q_soll, pruefzeit, posfehlerkalt, negfehlerkalt, pruefbereichmin, pruefbereichmax, qbezeichnung " + "FROM vt_pruefpunkt_soll_sd " + - "WHERE anbid=4 AND id_wztyp=:1 AND rev_wztyp=:2", conn); - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = wmTypeId }); ///:1 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = wmTypeRevision }); ///:2 + "WHERE anbid=:1 AND id_wztyp=:2 AND rev_wztyp=:3", conn); + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Anbid_Producer }); ///:1 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = wmTypeId }); ///:2 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = wmTypeRevision }); ///:3 /// dr = cmd.ExecuteReader(); while (dr.Read()) @@ -373,7 +374,7 @@ namespace TBF.Rig.Output.DB.SensusOracle { log.WarnFormat("{0} : Run() : currentOp = {1}", Name, currentOpState); #if ORACLE_DB - if (WriteResultsToDB(SelectedDB, batch, false) == Retv.Error) anyError = true; + if (WriteResultsToDB(SelectedDB, batch, WMKind, false) == Retv.Error) anyError = true; #endif } opCompleted = true; @@ -700,7 +701,7 @@ namespace TBF.Rig.Output.DB.SensusOracle } - public Retv WriteResultsToDB(OracleConnection conn, Results.Entities.Batch batch, bool safeMode) + public Retv WriteResultsToDB(OracleConnection conn, Results.Entities.Batch batch, WMKind wmKind, bool safeMode) { OracleTransaction transaction; @@ -722,7 +723,7 @@ namespace TBF.Rig.Output.DB.SensusOracle SaveBatchData(conn, batch); foreach (var wMtr in batch.WaterMeters) { - if (WMKind == WMKind.iPERL) + if (wmKind == WMKind.iPERL) { if ((wMtr.ErrorFlags & ((int)ErrorFlagMask.E26 | (int)ErrorFlagMask.E27 | (int)ErrorFlagMask.E28)) == 0) { @@ -730,7 +731,7 @@ namespace TBF.Rig.Output.DB.SensusOracle SaveIperlToDB(conn, wMtr, safeMode); } } - else if (WMKind == WMKind.Mechanical) + else if (wmKind == WMKind.Mechanical) { SaveMechanicalMeterToDB(conn, wMtr, safeMode); } @@ -862,7 +863,7 @@ namespace TBF.Rig.Output.DB.SensusOracle "VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, :15, :16, :17)", conn); cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Anbid_Producer }); - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 18000 + b.TestBenchId }); + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = dbCfg.TestBenchGroupId + b.TestBenchId }); cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = b.BatchNr }); cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = b.WaterMeters[0].WaterMeterData.WMTypeId }); cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = wmTypeRevision }); @@ -907,7 +908,7 @@ namespace TBF.Rig.Output.DB.SensusOracle "VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, :15, :16, :17, :18, :19, :20, :21, :22, :23)", conn); cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Anbid_Producer }); - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 18000 + b.TestBenchId }); + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = dbCfg.TestBenchGroupId + b.TestBenchId }); cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = b.BatchNr }); cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = testInfo.PruefungsNr }); cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.l, tr.VolumeCTV) }); @@ -939,7 +940,7 @@ namespace TBF.Rig.Output.DB.SensusOracle "VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, :15, :16, :17, :18, :19, :20, :21, :22, :23)", conn); OracleParameter parm; parm = new OracleParameter("ANBID", OracleDbType.Int32); parm.Value = Anbid_Producer; cmd2.Parameters.Add(parm); ///:1 - parm = new OracleParameter("ID_Pruefstand", OracleDbType.Int32); parm.Value = 18000 + b.TestBenchId; cmd2.Parameters.Add(parm); ///:2 + parm = new OracleParameter("ID_Pruefstand", OracleDbType.Int32); parm.Value = dbCfg.TestBenchGroupId + b.TestBenchId; cmd2.Parameters.Add(parm); ///:2 parm = new OracleParameter("ID_WzPruefreihe", OracleDbType.Int32); parm.Value = b.BatchNr; cmd2.Parameters.Add(parm); ///:3 parm = new OracleParameter("PruefungsNr", OracleDbType.Int32); parm.Value = testInfo.PruefungsNrDB; cmd2.Parameters.Add(parm); ///:4 /// @@ -967,12 +968,12 @@ namespace TBF.Rig.Output.DB.SensusOracle parm = new OracleParameter("EndGewicht", OracleDbType.Double); parm.Value = Units.ConvertTo(Unit.kg, tr.MassEnd); cmd2.Parameters.Add(parm); ///:23 /// cmd2.ExecuteNonQuery(); /// Returns nr. of updated rows - log.InfoFormat("VT_PRUEFDURCHFLUSS_PD inserted ({0}, {1}, {2}, {3}, {4} ...)", Anbid_Producer, 18000 + b.TestBenchId, b.BatchNr, testInfo.PruefungsNrDB, Q_ist); + log.InfoFormat("VT_PRUEFDURCHFLUSS_PD inserted ({0}, {1}, {2}, {3}, {4} ...)", Anbid_Producer, dbCfg.TestBenchGroupId + b.TestBenchId, b.BatchNr, testInfo.PruefungsNrDB, Q_ist); #endif } else { - log.WarnFormat("SIM: VT_PRUEFDURCHFLUSS_PD inserted ({0}, {1}, {2}, {3}, {4} ...)", Anbid_Producer, 18000 + b.TestBenchId, b.BatchNr, testInfo.PruefungsNrDB, Q_ist); + log.WarnFormat("SIM: VT_PRUEFDURCHFLUSS_PD inserted ({0}, {1}, {2}, {3}, {4} ...)", Anbid_Producer, dbCfg.TestBenchGroupId + b.TestBenchId, b.BatchNr, testInfo.PruefungsNrDB, Q_ist); } } } @@ -1021,7 +1022,7 @@ namespace TBF.Rig.Output.DB.SensusOracle void SaveOrUpdateIperl(OracleConnection conn, Results.Entities.WaterMeter wm, int max_Pruefindex, int hydr_Pruefung) { int sekundaere_Adr = wm.Passed ? 1 : 0; - int idBenutzer = 6; // = wm.Batch.UserNumber; + int idBenutzer = (Anbid_Producer == 4) ? 6 : 365; /// TODO: wm.Batch.UserNumber; if (dbCfg.DebugLevel == DebugMode.Normal) { @@ -1091,7 +1092,7 @@ namespace TBF.Rig.Output.DB.SensusOracle cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.SerialNr }); cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = max_Pruefindex }); cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Anbid_Producer }); - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 18000 + wm.Batch.TestBenchId }); + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = dbCfg.TestBenchGroupId + wm.Batch.TestBenchId }); cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = wm.Batch.BatchNr }); cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = hydr_Pruefung }); #if IPERL @@ -1228,65 +1229,80 @@ namespace TBF.Rig.Output.DB.SensusOracle void SaveOrUpdateMechanicalMeter(OracleConnection conn, Results.Entities.WaterMeter wm, int max_Pruefindex, int hydr_Pruefung) { - int idBenutzer = 6; // = wm.Batch.UserNumber; + int idBenutzer = (Anbid_Producer == 4) ? 6 : 365; /// TODO: wm.Batch.UserNumber; + string vt_identnummer = wm.SerialNr.Length > 8 ? wm.SerialNr.Substring(0, 8) : wm.SerialNr; if (dbCfg.DebugLevel == DebugMode.Normal) { + //OracleCommand cmd = new OracleCommand("UPDATE vt_zaehler_pd " + + // "SET max_pruefindex=:3, vt_identnummer=:4, auftragsnummer=:5, vt_baugruppen_nr=:6, mbus_adr=:7, liegenschafts_nr=:8," + + // " sekundaere_adr=:9, hydr_pruefung=:10, mark_date=:11, baujahr=:12, eich_jahr=:13, umkarton_nr=:14," + + // " palette_nr=:15, zaehlernummer=:16, prefix=:17, suffix=:18, z_nr_komplett=:19, id_benutzer=:20," + + // " albatrosid=:21, vt_modul_snr=:22 " + + // "WHERE vt_fernum = :1 AND anbid = :2", conn); OracleCommand cmd = new OracleCommand("UPDATE vt_zaehler_pd " + - "SET auftragsnummer=:1, vt_identnummer=:2, max_pruefindex=:3, mbus_adr=:4, liegenschafts_nr=:5," + - " sekundaere_adr=:6, hydr_pruefung=:7, mark_date=:8, baujahr=:9, eich_jahr=:10, umkarton_nr=:11," + - " palette_nr=:12, zaehlernummer=:13, prefix=:14, suffix=:15, z_nr_komplett=:16, id_benutzer=:17 " + - "WHERE vt_fernum = :18 AND anbid = :19", conn); - - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.PurchaseOrder }); /// :1 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = "88888888" }); /// :2 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = max_Pruefindex }); /// :3 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// :4 MBUS_ADR - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// :5 LIEGENSCHAFTS_NR - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// :6 Sekundaere_Adr - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = hydr_Pruefung }); /// :7 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.TimeStamp, Value = wm.Batch.EndTime }); /// :8 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = YearOfManufacture }); /// :9 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = YearOfManufacture }); /// :10 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// :11 UMKARTON_NR - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// :12 PALETTE_NR - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = wm.AssignedSerialNr }); /// :13 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.Prefix }); /// :14 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.Suffix }); /// :15 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.CompleteSerialNr }); /// :16 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = idBenutzer }); /// :17 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.SerialNr }); /// :18 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Anbid_Producer }); /// :19 + "SET max_pruefindex=:3, vt_identnummer=:4, auftragsnummer=:5, vt_baugruppen_nr=:6, mbus_adr=:7, liegenschafts_nr=:8," + + " sekundaere_adr=:9, hydr_pruefung=:10, baujahr=:11, eich_jahr=:12, umkarton_nr=:13," + + " palette_nr=:14, zaehlernummer=:15, prefix=:16, suffix=:17, z_nr_komplett=:18, id_benutzer=:19," + + " albatrosid=:20, vt_modul_snr=:21 " + + "WHERE vt_fernum = :1 AND anbid = :2", conn); + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.SerialNr }); /// 1 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Anbid_Producer }); /// 2 + /// + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = max_Pruefindex }); /// 3 max_pruefindex + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = vt_identnummer }); /// 4 vt_identnummer + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.PurchaseOrder }); /// 5 auftragsnummer + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.SerialNrAux }); /// 6 vt_baugruppen_nr = PCB number of 640 meter + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// 7 mbus_adr + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// 8 liegenschafts_nr + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = wm.AssignedSerialNr }); /// 9 sekundaere_adr + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = hydr_Pruefung }); /// 10 + //cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.TimeStamp, Value = wm.Batch.EndTime }); + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = YearOfManufacture }); /// 11 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = YearOfManufacture }); /// 12 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// 13 umkarton_nr + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// 14 palette_nr + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = wm.AssignedSerialNr }); /// 15 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.Prefix }); /// 16 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.Suffix }); /// 17 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.CompleteSerialNr }); /// 18 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = idBenutzer }); /// 19 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.OriRadioAddress }); /// 20 albatrosid = original radio address + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.RadioAddress }); /// 21 vt_modul_snr = new radio address + int updatedRows = cmd.ExecuteNonQuery(); int insertedRows = 0; if (updatedRows == 0) { - cmd = new OracleCommand("INSERT INTO vt_zaehler_pd(auftragsnummer, vt_identnummer, vt_fernum, max_pruefindex," + - " mbus_adr, liegenschafts_nr, sekundaere_adr, hydr_pruefung, mark_date, baujahr, eich_jahr," + - " umkarton_nr, palette_nr, zaehlernummer, prefix, suffix, z_nr_komplett, anbid, id_benutzer) " + - "VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, :15, :16, :17, :18, :19)", conn); + cmd = new OracleCommand("INSERT INTO vt_zaehler_pd(vt_fernum, max_pruefindex, vt_identnummer, auftragsnummer, vt_baugruppen_nr," + + " mbus_adr, liegenschafts_nr, sekundaere_adr, hydr_pruefung, mark_date, baujahr, eich_jahr, umkarton_nr," + + " palette_nr, zaehlernummer, prefix, suffix, z_nr_komplett, anbid, id_benutzer, albatrosid, vt_modul_snr) " + + "VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, :15, :16, :17, :18, :19, :20, :21, :22)", conn); - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.PurchaseOrder }); /// :1 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = "88888888" }); /// :2 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.SerialNr }); /// :3 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = max_Pruefindex }); /// :4 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// :5 MBUS_ADR - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// :6 LIEGENSCHAFTS_NR - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// :7 Sekundaere_Adr - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = hydr_Pruefung }); /// :8 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.TimeStamp, Value = wm.Batch.EndTime }); /// :9 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = YearOfManufacture }); /// :10 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = YearOfManufacture }); /// :11 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// :12 UMKARTON_NR - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// :13 PALETTE_NR - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = wm.AssignedSerialNr }); /// :14 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.Prefix }); /// :15 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.Suffix }); /// :16 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.CompleteSerialNr }); /// :17 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Anbid_Producer }); /// :18 - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = idBenutzer }); /// :19 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.SerialNr }); /// 1 vt_fernum + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = max_Pruefindex }); /// 2 max_pruefindex + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = vt_identnummer }); /// 3 vt_identnummer + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.PurchaseOrder }); /// 4 auftragsnummer + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.SerialNrAux }); /// 5 vt_baugruppen_nr = PCB number of 640 meter + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// 6 mbus_adr + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// 7 liegenschafts_nr + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = wm.AssignedSerialNr }); /// 8 sekundaere_adr + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = hydr_Pruefung }); /// 9 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.TimeStamp, Value = wm.Batch.EndTime }); /// 10 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = YearOfManufacture }); /// 11 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = YearOfManufacture }); /// 12 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// 13 umkarton_nr + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 0 }); /// 14 palette_nr + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = wm.AssignedSerialNr }); /// 15 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.Prefix }); /// 16 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.Suffix }); /// 17 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.CompleteSerialNr }); /// 18 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Anbid_Producer }); /// 19 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = idBenutzer }); /// 20 + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.OriRadioAddress }); /// 21 albatrosid = original radio address + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.RadioAddress }); /// 22 vt_modul_snr = new radio address insertedRows = cmd.ExecuteNonQuery(); @@ -1320,7 +1336,7 @@ namespace TBF.Rig.Output.DB.SensusOracle cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = wm.SerialNr }); cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = max_Pruefindex }); cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Anbid_Producer }); - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 18000 + wm.Batch.TestBenchId }); + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = dbCfg.TestBenchGroupId + wm.Batch.TestBenchId }); cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = wm.Batch.BatchNr }); cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = hydr_Pruefung }); #if IPERL @@ -1404,7 +1420,7 @@ namespace TBF.Rig.Output.DB.SensusOracle cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = mtr.WaterMeter.SerialNr }); /// :1 vt_fernum cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = max_Pruefindex }); /// :2 pruefindex cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = pruefungsNr }); /// :3 pruefungsnr - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Anbid_Producer }); /// :4 anbid + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Anbid_Producer }); /// :4 anbid cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = mtr.WaterMeter.WaterMeterData.WMTypeId }); /// :5 id_wztyp cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = wmTypeRevision }); /// :6 rev_wztyp cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 1 }); /// :7 rev_wzpruefpunkt @@ -1437,12 +1453,12 @@ namespace TBF.Rig.Output.DB.SensusOracle /// /// Oracle DB connection /// List of active purchase orders - public IList ReadOrderNumbersFromOracle() + public IList ReadOrderNumbers() { OracleConnection connection = ProductionDB; /// Read a list of valid order numbers from Oracle - IList orders = new List(); + IList orders = new List(); if (dbCfg.DebugLevel == DebugMode.Normal) { @@ -1450,97 +1466,50 @@ namespace TBF.Rig.Output.DB.SensusOracle { connection.Open(); - /// STATUS='NEU' - OracleCommand cmd = new OracleCommand("SELECT auftragsnummer, sollstueck, variantencode, erste_zaehlernr, " + - "prefix, suffix, zaehlwerk, erfasst_am, sollende, zusatztext " + - "FROM vt_auftrag_pd " + - "WHERE produktion_anbid=:1 AND status='NEU' AND produktion_usestate=0", connection); - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Anbid_Producer }); - OracleDataReader dr = cmd.ExecuteReader(); - - while (dr.Read()) + foreach (string status in new string[] { "NEU", "AKTIV" }) { - string order = dr.GetString(0); + /// STATUS='NEU' + OracleCommand cmd = new OracleCommand("SELECT auftragsnummer, variantencode, erste_zaehlernr, prefix, suffix, " + + "zaehlwerk, erfasst_am, sollende, sollstueck, zusatztext, znrlaenge, modul_param " + + "FROM vt_auftrag_pd " + + "WHERE produktion_anbid=:1 AND status=:2 AND produktion_usestate=0", connection); - int sollStueck; try { sollStueck = dr.GetInt32(1); } - catch { sollStueck = 0; } - string variantenCode; try { variantenCode = dr.GetString(2); } - catch { variantenCode = string.Empty; } - int esrsteZaehlerNr; try { esrsteZaehlerNr = dr.GetInt32(3); } - catch { esrsteZaehlerNr = 1; } - //string prefix; try { prefix = dr.GetString (4); } catch { prefix = string.Empty; } - //string suffix; try { suffix = dr.GetString (5); } catch { suffix = string.Empty; } - int zaehlwerk; try { zaehlwerk = dr.GetInt32(6); } - catch { zaehlwerk = 0; } - DateTime created; try { created = dr.GetDateTime(7); } - catch { created = DateTime.Now; } - DateTime dueDate; try { dueDate = dr.GetDateTime(8); } - catch { dueDate = DateTime.Now; } - //string remark; try { remark = dr.GetString (9); } catch { remark = string.Empty; } + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Anbid_Producer }); + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = status }); - var ai = new Auftrag + OracleDataReader dr = cmd.ExecuteReader(); + + while (dr.Read()) { - AuftragsNummer = order, - SollStueck = sollStueck, - VariantenCode = variantenCode, - EsrsteZaehlerNr = esrsteZaehlerNr, - //Prefix = prefix, - //Suffix = suffix, - Zaehlwerk = zaehlwerk, - Created = created, - DueDate = dueDate, - //Remark = remark, - }; + int i = 0; + string auftragsnummer = dr.GetString(i++); + string variantencode; try { variantencode = dr.GetString(i++); } catch { variantencode = string.Empty; } + int erste_zaehlernr; try { erste_zaehlernr = dr.GetInt32(i++); } catch { erste_zaehlernr = 1; } + string prefix; try { prefix = dr.GetString(i++); } catch { prefix = string.Empty; } + string suffix; try { suffix = dr.GetString(i++); } catch { suffix = string.Empty; } + int zaehlwerk; try { zaehlwerk = dr.GetInt32(i++); } catch { zaehlwerk = 0; } + DateTime erfasst_am; try { erfasst_am = dr.GetDateTime(i++); } catch { erfasst_am = DateTime.Now; } + DateTime sollende; try { sollende = dr.GetDateTime(i++); } catch { sollende = DateTime.Now; } + int sollstueck = dr.GetInt32(i++); + string zusatztext; try { zusatztext = dr.GetString (i++); } catch { zusatztext = string.Empty; } + int znrlaenge = dr.GetInt32(i++); + string modul_param; try { modul_param = dr.GetString(i++); } catch { modul_param = string.Empty; } - orders.Add(ai); + orders.Add(new OrderDetails { AuftragsNummer = auftragsnummer, + VariantenCode = variantencode, + EsrsteZaehlerNr = erste_zaehlernr, + Prefix = prefix, + Suffix = suffix, + Zaehlwerk = zaehlwerk, + Created = erfasst_am, + DueDate = sollende, + TargetPcsCount = sollstueck, + Remark = zusatztext, + SNLength = znrlaenge, + ModuleParameter = modul_param }); + } + dr.Close(); } - dr.Close(); - - /// STATUS='AKTIV' - cmd = new OracleCommand("SELECT auftragsnummer, sollstueck, variantencode, erste_zaehlernr, " + - "prefix, suffix, zaehlwerk, erfasst_am, sollende, zusatztext " + - "FROM vt_auftrag_pd " + - "WHERE produktion_anbid=:1 AND status='AKTIV' AND produktion_usestate=0", connection); - cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Anbid_Producer }); - dr = cmd.ExecuteReader(); - - while (dr.Read()) - { - string order = dr.GetString(0); - - int sollStueck; try { sollStueck = dr.GetInt32(1); } - catch { sollStueck = 0; } - string variantenCode; try { variantenCode = dr.GetString(2); } - catch { variantenCode = string.Empty; } - int esrsteZaehlerNr; try { esrsteZaehlerNr = dr.GetInt32(3); } - catch { esrsteZaehlerNr = 1; } - //string prefix; try { prefix = dr.GetString (4); } catch { prefix = string.Empty; } - //string suffix; try { suffix = dr.GetString (5); } catch { suffix = string.Empty; } - int zaehlwerk; try { zaehlwerk = dr.GetInt32(6); } - catch { zaehlwerk = 0; } - DateTime created; try { created = dr.GetDateTime(7); } - catch { created = DateTime.Now; } - DateTime dueDate; try { dueDate = dr.GetDateTime(8); } - catch { dueDate = DateTime.Now; } - //string remark; try { remark = dr.GetString (9); } catch { remark = string.Empty; } - - var ai = new Auftrag - { - AuftragsNummer = order, - SollStueck = sollStueck, - VariantenCode = variantenCode, - EsrsteZaehlerNr = esrsteZaehlerNr, - //Prefix = prefix, - //Suffix = suffix, - Zaehlwerk = zaehlwerk, - Created = created, - DueDate = dueDate, - //Remark = remark, - }; - - orders.Add(ai); - } - dr.Close(); log.InfoFormat("Oracle DB query SELECT auftragsnummer, sollstueck FROM vt_auftrag_pd WHERE ... successful. {0} order numbers read", orders.Count); } @@ -1553,14 +1522,131 @@ namespace TBF.Rig.Output.DB.SensusOracle } else { - orders = new List () + orders = new List () { - new Auftrag { AuftragsNummer = "1234567", EsrsteZaehlerNr = 1, SollStueck = 100, Prefix = "Pre", Suffix = "Suf", VariantenCode = "abeceda" }, - new Auftrag { AuftragsNummer = "2345678", EsrsteZaehlerNr = 1, SollStueck = 200, Prefix = "Pfx", Suffix = "Sfx", VariantenCode = "zjedla_deda" }, + new OrderDetails { AuftragsNummer = "1234567", EsrsteZaehlerNr = 1, TargetPcsCount = 100, Prefix = "Pre", Suffix = "Suf", VariantenCode = "abeceda" }, + new OrderDetails { AuftragsNummer = "2345678", EsrsteZaehlerNr = 1, TargetPcsCount = 200, Prefix = "Pfx", Suffix = "Sfx", VariantenCode = "zjedla_deda" }, }; } return orders; } + + + /// + /// Read a list of valid purchase orders. + /// + /// Oracle DB connection + /// List of active purchase orders + public bool ReadOrderDetails(ref OrderDetails auftrag) + { + if (dbCfg.DebugLevel == DebugMode.Normal) + { + OracleConnection connection = ProductionDB; + + try + { + connection.Open(); + + + OracleCommand cmd = new OracleCommand("SELECT iststueck FROM vt_auftrag_pd WHERE auftragsnummer=:1 AND anbid=:2", connection); + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = auftrag.AuftragsNummer }); + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Anbid_Producer }); + OracleDataReader dr = cmd.ExecuteReader(); + if (dr.Read()) + { + try { auftrag.CurrentPcsCount = dr.GetInt32(0); } catch { auftrag.CurrentPcsCount = 0; } + } + dr.Close(); + + + cmd = new OracleCommand("SELECT erste_nummer, ltz_nummer, akt_nummer, erste_adresse, ltz_adresse," + + " prefix_adresse, suffix_adresse, akt_adresse " + + "FROM vt_auft_zaehlernr_pd " + + "WHERE auftragsnummer=:1 AND anbid=:2", connection); + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = auftrag.AuftragsNummer }); + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Anbid_Producer }); + dr = cmd.ExecuteReader(); + if (dr.Read()) + { + int i = 0; + auftrag.FirstSerialNr = dr.GetInt32(i++); + auftrag.LastSerialNr = dr.GetInt32(i++); + auftrag.CurrentSerialNr = dr.GetInt32(i++); + auftrag.FirstRadioAddress = dr.GetInt32(i++); + auftrag.LastRadioAddress = dr.GetInt32(i++); + try { auftrag.RadioAddressPrefix = dr.GetString(i++); } catch { auftrag.RadioAddressPrefix = string.Empty; } + try { auftrag.RadioAddressSuffix = dr.GetString(i++); } catch { auftrag.RadioAddressSuffix = string.Empty; } + auftrag.CurrentRadioAddress = dr.GetInt32(i++); + } + dr.Close(); + + + connection.Close(); + return true; + } + catch (Exception exc) + { + log.ErrorFormat("ERROR: Oracle DB query SELECT ... FROM vt_auft_zaehlernr_pd WHERE auftragsnummer={0} failed: {1}", + auftrag.AuftragsNummer, exc.Message); + if (connection != null) connection.Close(); + return false; + } + } + else + { + return false; + } + } + + + /// + /// Read a list of valid purchase orders. + /// + /// Oracle DB connection + /// List of active purchase orders + public int UpdateOrderDetails(OrderDetails auftrag) + { + if (dbCfg.DebugLevel == DebugMode.Normal) + { + OracleConnection connection = ProductionDB; + + try + { + connection.Open(); + + + OracleCommand cmd = new OracleCommand("UPDATE vt_auftrag_pd SET iststueck=:1 WHERE auftragsnummer=:2 AND anbid=:3", connection); + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = auftrag.CurrentPcsCount }); + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = auftrag.AuftragsNummer }); + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Anbid_Producer }); + int updatedRows = cmd.ExecuteNonQuery(); + + + cmd = new OracleCommand("UPDATE vt_auft_zaehlernr_pd SET akt_nummer=:1, akt_adresse=:2 " + + "WHERE auftragsnummer=:3 AND anbid=:4", connection); + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = auftrag.CurrentSerialNr }); + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = auftrag.CurrentRadioAddress }); + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = auftrag.AuftragsNummer }); + cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Anbid_Producer }); + updatedRows = Math.Min(cmd.ExecuteNonQuery(), updatedRows); + + + connection.Close(); + return updatedRows; + } + catch (Exception exc) + { + log.ErrorFormat("ERROR: Oracle DB query SELECT ... FROM vt_auft_zaehlernr_pd WHERE auftragsnummer={0} failed: {1}", + auftrag.AuftragsNummer, exc.Message); + if (connection != null) connection.Close(); + return 0; + } + } + else + { + return 0; + } + } } } diff --git a/TBF/Rig/Output/DB/SensusOracle/DatabaseCfg.cs b/TBF/Rig/Output/DB/SensusOracle/DatabaseCfg.cs index 7051f3fee..bf39e58a7 100644 --- a/TBF/Rig/Output/DB/SensusOracle/DatabaseCfg.cs +++ b/TBF/Rig/Output/DB/SensusOracle/DatabaseCfg.cs @@ -34,6 +34,7 @@ namespace TBF.Rig.Output.DB.SensusOracle public string TestUserId; public string TestPassword; public int ProducerId; + public int TestBenchGroupId; /// Procedure parameters [XmlIgnore] @@ -70,6 +71,7 @@ namespace TBF.Rig.Output.DB.SensusOracle TestUserId = "deltachef"; TestPassword = "deltachef"; ProducerId = 4; + TestBenchGroupId = 18000; } string[] paramNames = new string[] @@ -84,6 +86,7 @@ namespace TBF.Rig.Output.DB.SensusOracle "Test DB User ID", "Test DB Password", "Producer ID", + "Test bench group ID", }; public string ParamName(int i) { return paramNames[i]; } public int ParamsCount() { return paramNames.Length; } @@ -107,12 +110,15 @@ namespace TBF.Rig.Output.DB.SensusOracle case 7: return TestUserId; case 8: return AkaPwd; case 9: return ProducerId.ToString(); + case 10: return TestBenchGroupId.ToString(); default: - return string.Format("{0}: Production={1} Quality={2} Test={3}", + return string.Format("{0}: Production={1} Quality={2} Test={3} anbid={4} group={5}", Name, string.IsNullOrEmpty(ProductionDataSource) ? string.Empty : ProductionDataSource, string.IsNullOrEmpty(QualityDataSource) ? string.Empty : QualityDataSource, - string.IsNullOrEmpty(TestDataSource) ? string.Empty : TestDataSource); + string.IsNullOrEmpty(TestDataSource) ? string.Empty : TestDataSource, + ProducerId, + TestBenchGroupId); } } @@ -157,6 +163,7 @@ namespace TBF.Rig.Output.DB.SensusOracle return CfgUpdateFlags.None; } case 9: ProducerId = int.Parse(str); return CfgUpdateFlags.RestartRqrd; + case 10: TestBenchGroupId = int.Parse(str); return CfgUpdateFlags.RestartRqrd; default: return CfgUpdateFlags.None; } @@ -182,6 +189,9 @@ namespace TBF.Rig.Output.DB.SensusOracle case 9: if (int.TryParse(str, out idummy) && idummy > 0 && idummy <= 9) return true; break; + case 10: + if (int.TryParse(str, out idummy) && idummy > 0 && (idummy % 100) == 0) return true; + break; default: message = "Invalid index"; return false; @@ -202,6 +212,8 @@ namespace TBF.Rig.Output.DB.SensusOracle prms.TestDataSource = this.TestDataSource; prms.TestUserId = this.TestUserId; prms.TestPassword = this.TestPassword; + prms.ProducerId = this.ProducerId; + prms.TestBenchGroupId = this.TestBenchGroupId; } public IParamsProvider Clone() diff --git a/TBF/Rig/Output/DB/SensusOracle/Auftrag.cs b/TBF/Rig/Output/DB/SensusOracle/OrderDetails.cs similarity index 51% rename from TBF/Rig/Output/DB/SensusOracle/Auftrag.cs rename to TBF/Rig/Output/DB/SensusOracle/OrderDetails.cs index ee739cc4b..8d7c125e2 100644 --- a/TBF/Rig/Output/DB/SensusOracle/Auftrag.cs +++ b/TBF/Rig/Output/DB/SensusOracle/OrderDetails.cs @@ -5,10 +5,12 @@ using System; namespace TBF.Rig.Output.DB.SensusOracle { - public class Auftrag + public class OrderDetails { + /// + /// Fixed + /// public string AuftragsNummer; /// Production order - public int SollStueck; /// Targer pieces count public string VariantenCode; /// Spec public int EsrsteZaehlerNr; /// First S/N public string Prefix; /// S/N prefix @@ -16,18 +18,36 @@ namespace TBF.Rig.Output.DB.SensusOracle public int Zaehlwerk; /// SAP number of the counter public DateTime Created; public DateTime DueDate; + public int TargetPcsCount; /// Target pieces count public string Remark; + public int SNLength; + public string ModuleParameter; + public int FirstSerialNr; + public int LastSerialNr; + public int FirstRadioAddress; + public int LastRadioAddress; + public string RadioAddressPrefix; + public string RadioAddressSuffix; + /// + /// Incremented + /// + public int CurrentPcsCount; + public int CurrentSerialNr; + public int CurrentRadioAddress; - public Auftrag() + public OrderDetails() { Prefix = string.Empty; Suffix = string.Empty; Remark = string.Empty; + ModuleParameter = string.Empty; + RadioAddressPrefix = string.Empty; + RadioAddressSuffix = string.Empty; } public override string ToString() { - return string.Format("{0} [{1}] {2}", AuftragsNummer, SollStueck, VariantenCode); + return string.Format("{0} [{1}] {2}", AuftragsNummer, TargetPcsCount, VariantenCode); } } } diff --git a/TBF/Rig/Output/DB/SensusOracle/ProcedureParams.cs b/TBF/Rig/Output/DB/SensusOracle/ProcedureParams.cs index ac94cc23a..4eeff3830 100644 --- a/TBF/Rig/Output/DB/SensusOracle/ProcedureParams.cs +++ b/TBF/Rig/Output/DB/SensusOracle/ProcedureParams.cs @@ -18,6 +18,7 @@ namespace TBF.Rig.Output.DB.SensusOracle public class ProcedureParams : ProcedureParamsBase, IParamsProvider, IProcedureParams { private static readonly ILog log = LogManager.GetLogger(typeof(ProcedureParams)); + public static XmlSerializer Serializer = XmlSerializer.FromTypes(new[] { typeof(ProcedureParams) })[0]; public override XmlSerializer GetSerializer() { return Serializer; } diff --git a/TBF/TBF.csproj b/TBF/TBF.csproj index 06c568c9e..40c384aff 100644 --- a/TBF/TBF.csproj +++ b/TBF/TBF.csproj @@ -886,7 +886,7 @@ SaveFlowmeterCorrCfgCtrl.cs - + diff --git a/TBF/UI/MainWnd.cs b/TBF/UI/MainWnd.cs index 57357fc6e..77c6f752c 100644 --- a/TBF/UI/MainWnd.cs +++ b/TBF/UI/MainWnd.cs @@ -728,7 +728,7 @@ namespace TBF.UI IList procInfos = new List(); IList nativeProcedures = new List(); IList nativeSources = new List(); - IList oracleOrders = new List(); + IList oracleOrders = new List(); foreach (var src in sources) { @@ -752,7 +752,7 @@ namespace TBF.UI } else if (src == ProcedureSelection.OrderNrFromOracleDB) { - oracleOrders = Rig.Sequences.ProcessData.OracleDB.ReadOrderNumbersFromOracle(); + oracleOrders = Rig.Sequences.ProcessData.OracleDB.ReadOrderNumbers(); foreach (var order in oracleOrders) { diff --git a/TBF/UI/ResultsMI/PreviousResultsDlg.cs b/TBF/UI/ResultsMI/PreviousResultsDlg.cs index 7eae180d8..e4dfae90b 100644 --- a/TBF/UI/ResultsMI/PreviousResultsDlg.cs +++ b/TBF/UI/ResultsMI/PreviousResultsDlg.cs @@ -256,7 +256,7 @@ namespace TBF.UI.ResultsMI if ((TBF.Rig.Sequences.ProcessData.OracleDB != null) && - (TBF.Rig.Sequences.ProcessData.OracleDB.WriteResultsToDB(conn, b, true) == Retv.OK)) + (TBF.Rig.Sequences.ProcessData.OracleDB.WriteResultsToDB(conn, b, WMKind.Mechanical, true) == Retv.OK)) { b.RsltsSent = true; /// Result was successfully sent session.SaveOrUpdate(b); /// Update MySQL DB