From 3312dc40f83c4a7d2c64bd5df84bd7aefba5bf7f Mon Sep 17 00:00:00 2001 From: Milan Hanajik Date: Wed, 20 Oct 2021 18:05:01 +0200 Subject: [PATCH] S640 : Only 'passed' WMs are sealed at the end, counting pieces fixed, MeterTestRslt.Passed fixed. --- .../Output/DB/SensusOracle/Database.cs | 21 +++++++---- .../S640Communication/S640CommForm.cs | 36 ++++++++++++------- 2 files changed, 39 insertions(+), 18 deletions(-) diff --git a/TBF/BenchControl/Output/DB/SensusOracle/Database.cs b/TBF/BenchControl/Output/DB/SensusOracle/Database.cs index 4e1d8ee67..1ae05de79 100644 --- a/TBF/BenchControl/Output/DB/SensusOracle/Database.cs +++ b/TBF/BenchControl/Output/DB/SensusOracle/Database.cs @@ -1539,17 +1539,18 @@ namespace TBF.BenchControl.Output.DB.SensusOracle { connection.Open(); - OracleCommand cmd = new OracleCommand("SELECT iststueck FROM vt_auft_zaehlernr_pd " + - "WHERE auftragsnummer=:1 AND anbid=:2", connection); + + 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()) { - auftrag.CurrentPcsCount = dr.GetInt32(0); + 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 " + @@ -1571,6 +1572,7 @@ namespace TBF.BenchControl.Output.DB.SensusOracle } dr.Close(); + connection.Close(); return true; } @@ -1604,15 +1606,22 @@ namespace TBF.BenchControl.Output.DB.SensusOracle { connection.Open(); - OracleCommand cmd = new OracleCommand("UPDATE vt_auft_zaehlernr_pd SET akt_nummer=:1, akt_adresse=:2 " + - "WHERE auftragsnummer=:3 AND anbid=:4", connection); + 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); - int updatedRows = cmd.ExecuteNonQuery(); connection.Close(); return updatedRows; diff --git a/TBF/BenchControl/TestMethods/S640Communication/S640CommForm.cs b/TBF/BenchControl/TestMethods/S640Communication/S640CommForm.cs index b3dfbd674..cfdb1922d 100644 --- a/TBF/BenchControl/TestMethods/S640Communication/S640CommForm.cs +++ b/TBF/BenchControl/TestMethods/S640Communication/S640CommForm.cs @@ -732,9 +732,19 @@ namespace TBF.BenchControl.TestMethods.S640Communication : ord.CurrentSerialNr + 1; Results.Entities.WaterMeter wm = ProcessData.BatchRslts.Batch.WaterMeters[i]; - if (optoHeads[i] != null && optoHeads[i].PcbNumber != 0 && wm != null) + if (optoHeads[i] != null && optoHeads[i].PcbNumber != 0 && wm != null && !wm.Disabled) { - if (wm.PassedFromTests()) + if (!wm.PassedFromTests()) + { + /// Red background + messages[i].BackColor = Color.Pink; + } + else if (ord.CurrentPcsCount >= ord.TargetPcsCount) + { + /// Disable the water meter to prevent sealing + wm.Disabled = true; + } + else { /// Assign numbers wm.RadioAddress = string.Format("{0}{1}{2}", ord.RadioAddressPrefix, currentRadioAddress.ToString("D9"), ord.RadioAddressSuffix); @@ -749,11 +759,7 @@ namespace TBF.BenchControl.TestMethods.S640Communication #endif ord.CurrentSerialNr = currentSerialNr; ord.CurrentRadioAddress = currentRadioAddress; - } - else - { - /// Red background - messages[i].BackColor = Color.Pink; + ord.CurrentPcsCount++; } } } @@ -782,7 +788,11 @@ namespace TBF.BenchControl.TestMethods.S640Communication string purchaseOrder = null; for (int i = 0; i < optoHeads.Length; i++) { - if (optoHeads[i] != null && optoHeads[i].PcbNumber != 0 && ProcessData.BatchRslts.Batch.WaterMeters[i] != null) + if (optoHeads[i] != null && + optoHeads[i].PcbNumber != 0 && + ProcessData.BatchRslts.Batch.WaterMeters[i] != null && + !ProcessData.BatchRslts.Batch.WaterMeters[i].Disabled && + (activity == S640Activity.Start || ProcessData.BatchRslts.Batch.WaterMeters[i].PassedFromTests())) { count++; @@ -814,7 +824,11 @@ namespace TBF.BenchControl.TestMethods.S640Communication file.WriteLine(" "); for (int i = 0; i < optoHeads.Length; i++) { - if (optoHeads[i] != null && optoHeads[i].PcbNumber != 0 && ProcessData.BatchRslts.Batch.WaterMeters[i] != null) + if (optoHeads[i] != null && + optoHeads[i].PcbNumber != 0 && + ProcessData.BatchRslts.Batch.WaterMeters[i] != null && + !ProcessData.BatchRslts.Batch.WaterMeters[i].Disabled && + (activity == S640Activity.Start || ProcessData.BatchRslts.Batch.WaterMeters[i].PassedFromTests())) { Results.Entities.WaterMeter wm = ProcessData.BatchRslts.Batch.WaterMeters[i]; @@ -920,9 +934,7 @@ namespace TBF.BenchControl.TestMethods.S640Communication ProcessData.BatchRslts.Batch.WaterMeters[i] != null && !ProcessData.BatchRslts.Batch.WaterMeters[i].Disabled) { - if ((Program.LocalSettings.OptoHeadsEnabled & (1L << i)) != 0 && - optoHeads[i] != null && - !commFailed) + if (enabledInConfiguration[i] && !commFailed) { meterRslt.TestDone = true; meterRslt.Passed = true;