diff --git a/ResultsBrowser/LocalSettings.cs b/ResultsBrowser/LocalSettings.cs
index 7f953894d..bbe657959 100644
--- a/ResultsBrowser/LocalSettings.cs
+++ b/ResultsBrowser/LocalSettings.cs
@@ -1,5 +1,5 @@
///
-/// Copyright (c) 2018 Sensus Slovensko a.s.
+/// Copyright (c) 2018-2020 Sensus Slovensko a.s.
///
using System;
using System.IO;
@@ -116,11 +116,11 @@ namespace ResultsBrowser
Bench4 = "WR14";
Bench5 = "WR15";
Bench6 = "PT7";
- ConnectionString1 = "SERVER=10.42.128.93; DATABASE=st-wr10-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;";
- ConnectionString2 = "SERVER=10.42.128.102; DATABASE=st-wr11-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;";
- ConnectionString3 = "SERVER=10.42.128.89; DATABASE=st-wr13-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;";
- ConnectionString4 = "SERVER=10.42.128.213; DATABASE=st-wr14-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;";
- ConnectionString5 = "SERVER=10.42.128.214; DATABASE=st-wr15-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;";
+ ConnectionString1 = "SERVER=10.42.130.69; DATABASE=st-wr10-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;";
+ ConnectionString2 = "SERVER=10.42.129.27; DATABASE=st-wr11-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;";
+ ConnectionString3 = "SERVER=10.42.128.61; DATABASE=st-wr13-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;";
+ ConnectionString4 = "SERVER=10.42.130.72; DATABASE=st-wr14-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;";
+ ConnectionString5 = "SERVER=10.42.130.71; DATABASE=st-wr15-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;";
ConnectionString6 = "SERVER=10.42.129.26; DATABASE=iperlspecial-r; UID=vysledky; PASSWORD=GAqx76QUB6NbnpZP; CHARSET=utf8;";
Language = "SK";
#endif
diff --git a/ResultsBrowser/OraData.cs b/ResultsBrowser/OraData.cs
new file mode 100644
index 000000000..d0912783c
--- /dev/null
+++ b/ResultsBrowser/OraData.cs
@@ -0,0 +1,39 @@
+using System;
+
+namespace ResultsBrowser
+{
+ public class OraData
+ {
+ public string PO; /// VT_ZAEHLER_PD AUFTRAGSNUMMER
+ public string Prefix; /// VT_ZAEHLER_PD PREFIX
+ public int SN; /// VT_ZAEHLER_PD ZAEHLERNUMMER
+ public string Suffix; /// VT_ZAEHLER_PD SUFFIX
+ public string PcbNr; /// VT_ZAEHLER_PD VT_FERNUM
+ public int TestBenchId;
+ public string ProgramVer;
+ public int MaxPruefIx;
+ public int BatchNr;
+ public int WMPosition;
+ public int WMTypeId;
+ public int WMTypeRev;
+ public DateTime Start;
+ public DateTime End;
+ public int HydrPruefung;
+ public double AdjErr;
+ public double AdjErrA4;
+ public double Q3RlErr;
+ public double Q3LrErr;
+ public double Q2RlErr;
+ public double Q2LrErr;
+ public double Q1RlErr;
+ public double Q1LrErr;
+ public int CalibFactor;
+ public int CalibFactorLNA;
+ public double Q2ErrBeforeCorrection; /// VT_IP_ZAEHLER_PINDEX_PD
+ public bool Q2CorrectionDone; /// VT_IP_ZAEHLER_PINDEX_PD WithQ2Correction
+ public int Q2CorrectionRl; /// VT_IP_ZAEHLER_PINDEX_PD Q2CORRECTIONLEFT
+ public int Q2CorrectionLr; /// VT_IP_ZAEHLER_PINDEX_PD Q2CORRECTIONRIGHT
+
+ public OraData() { }
+ }
+}
diff --git a/ResultsBrowser/Properties/AssemblyInfo.cs b/ResultsBrowser/Properties/AssemblyInfo.cs
index 01cbeb1e1..aab62ce8a 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("2.24.1368.0")]
-[assembly: AssemblyFileVersion("2.24.1368.0")]
+[assembly: AssemblyVersion("2.25.1422.0")]
+[assembly: AssemblyFileVersion("2.25.1422.0")]
diff --git a/ResultsBrowser/ResultsBrowser.csproj b/ResultsBrowser/ResultsBrowser.csproj
index 2ccc82de4..c5ef557e6 100644
--- a/ResultsBrowser/ResultsBrowser.csproj
+++ b/ResultsBrowser/ResultsBrowser.csproj
@@ -179,6 +179,7 @@
StatisticsOptionsDlg.cs
+
Component
diff --git a/ResultsBrowser/ResultsBrowserWnd.Designer.cs b/ResultsBrowser/ResultsBrowserWnd.Designer.cs
index 6162aa981..6544fe7b6 100644
--- a/ResultsBrowser/ResultsBrowserWnd.Designer.cs
+++ b/ResultsBrowser/ResultsBrowserWnd.Designer.cs
@@ -34,6 +34,7 @@
this.filtersFlowLayoutPanel = new System.Windows.Forms.FlowLayoutPanel();
this.resultsGroupBox = new System.Windows.Forms.GroupBox();
this.resultsListView = new System.Windows.Forms.ListView();
+ this.customQueryButton = new System.Windows.Forms.Button();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.histogramBtn = new System.Windows.Forms.Button();
this.statisticsBtn = new System.Windows.Forms.Button();
@@ -84,6 +85,7 @@
//
// vSplitContainer.Panel2
//
+ this.vSplitContainer.Panel2.Controls.Add(this.customQueryButton);
this.vSplitContainer.Panel2.Controls.Add(this.groupBox1);
this.vSplitContainer.Panel2.Controls.Add(this.outputGroupBox);
this.vSplitContainer.Panel2.Controls.Add(this.printerConfigBtn);
@@ -158,6 +160,16 @@
this.resultsListView.UseCompatibleStateImageBehavior = false;
this.resultsListView.View = System.Windows.Forms.View.Details;
//
+ // customQueryButton
+ //
+ this.customQueryButton.Location = new System.Drawing.Point(31, 437);
+ this.customQueryButton.Name = "customQueryButton";
+ this.customQueryButton.Size = new System.Drawing.Size(85, 23);
+ this.customQueryButton.TabIndex = 14;
+ this.customQueryButton.Text = "Custom query";
+ this.customQueryButton.UseVisualStyleBackColor = true;
+ this.customQueryButton.Click += new System.EventHandler(this.customQueryButton_Click);
+ //
// groupBox1
//
this.groupBox1.Controls.Add(this.histogramBtn);
@@ -443,5 +455,6 @@
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.GroupBox outputGroupBox;
private System.Windows.Forms.Button histogramBtn;
+ private System.Windows.Forms.Button customQueryButton;
}
}
\ No newline at end of file
diff --git a/ResultsBrowser/ResultsBrowserWnd.cs b/ResultsBrowser/ResultsBrowserWnd.cs
index fbd347288..d26fc860e 100644
--- a/ResultsBrowser/ResultsBrowserWnd.cs
+++ b/ResultsBrowser/ResultsBrowserWnd.cs
@@ -1,5 +1,5 @@
///
-/// Copyright (c) 2016-2019 Sensus Slovensko a.s.
+/// Copyright (c) 2016-2020 Sensus Slovensko a.s.
///
using System;
using System.Collections.Generic;
@@ -12,6 +12,8 @@ using TBF.BenchControl.Generic;
using TBF.BenchControl.GenericDevices;
using ResultsBrowser.Filters;
using ResultsBrowser.Resources;
+using Oracle;
+using Oracle.DataAccess.Client;
namespace ResultsBrowser
{
@@ -32,6 +34,8 @@ namespace ResultsBrowser
static IList tbfComponents;
static IList tbfDevices;
+ OracleConnection oracleConnection; /// Oracle database connection
+
public ResultsBrowserWnd(string[] args)
{
InitializeComponent();
@@ -543,5 +547,288 @@ namespace ResultsBrowser
return null;
}
+
+ private void customQueryButton_Click(object sender, EventArgs e)
+ {
+#if IPERL
+ try
+ {
+ bool queryOrders = true; /// true = query orders, false = query PCB numbers
+ //string[] queryStrings = new string[] { "3137303", "3137301", "3142304", "3137302", "3137300" }; /// 14.2.2020 queryOrders=true
+ //string[] queryStrings = new string[] { "505494150362", "505494151325", "505494150008", "505494150955", "505494152128" }; /// 18.2.2020 queryOrders=false
+ string[] queryStrings = new string[] { "3129109", "3129111", "3129113", "3129108", "3129110", "3129112", "3129114", "3129115", "3129107" }; /// 24.2.2020 queryOrders=true
+ //string[] queryStrings = new string[] { "332492620382" };
+
+ IList oraDatas = new List(); /// List of water meters
+ IList testBenches = new List(); /// List of test benches used to produce water meters
+
+ ///
+ /// Get list of water meters satisfying (custom) criteria
+ ///
+ Console.WriteLine("Collecting water meters");
+ foreach (var orderOrPcbNr in queryStrings)
+ {
+ oracleConnection = new OracleConnection("Data Source=STARA01.WORLD;User Id=deltachef;Password=deltachef;");
+ oracleConnection.Open();
+
+ OracleCommand cmd;
+ if (queryOrders)
+ {
+ cmd = new OracleCommand("select VT_FERNUM, MAX_PRUEFINDEX, PREFIX, ZAEHLERNUMMER, SUFFIX from VT_ZAEHLER_PD where AUFTRAGSNUMMER = :1 AND ANBID = 4 order by ZAEHLERNUMMER", oracleConnection);
+ cmd.Parameters.Add(new OracleParameter { ParameterName = "1", OracleDbType = OracleDbType.Varchar2, Value = orderOrPcbNr });
+ }
+ else
+ {
+ cmd = new OracleCommand("select AUFTRAGSNUMMER, MAX_PRUEFINDEX, PREFIX, ZAEHLERNUMMER, SUFFIX from VT_ZAEHLER_PD where VT_FERNUM = :1 AND ANBID = 4 order by ZAEHLERNUMMER", oracleConnection);
+ cmd.Parameters.Add(new OracleParameter { ParameterName = "1", OracleDbType = OracleDbType.Varchar2, Value = orderOrPcbNr });
+ }
+
+ OracleDataReader dr = cmd.ExecuteReader();
+ while (dr.Read())
+ {
+ int i = 0;
+ string pcbNrOrOrder = dr.GetString(i++);
+ int maxPruefIx = dr.GetInt32(i++);
+ int testBenchId = maxPruefIx / 100;
+ maxPruefIx = maxPruefIx % 100;
+ string prefix = dr.GetString(i++);
+ int sn = dr.GetInt32(i++);
+ string suffix = dr.GetString(i++);
+
+ if (sn == -1) continue;
+
+ /// Create 'OraData' object and add it to 'oraDatas' list
+ if (queryOrders)
+ { /// query param. query result
+ oraDatas.Add(new OraData() { PO = orderOrPcbNr, PcbNr = pcbNrOrOrder, TestBenchId = testBenchId, MaxPruefIx = maxPruefIx, Prefix = prefix, SN = sn, Suffix = suffix });
+ }
+ else
+ { /// query result query param.
+ oraDatas.Add(new OraData() { PO = pcbNrOrOrder, PcbNr = orderOrPcbNr, TestBenchId = testBenchId, MaxPruefIx = maxPruefIx, Prefix = prefix, SN = sn, Suffix = suffix });
+ }
+
+ /// Add this test bench to the list of test benches if it was still missing
+ if (!testBenches.Contains(testBenchId)) testBenches.Add(testBenchId);
+ }
+ dr.Close();
+ }
+ Console.WriteLine("Collecting water meters completed");
+ Console.WriteLine();
+
+ ///
+ /// Get required information about each water meter
+ ///
+ Console.WriteLine("Reading additional data from Oracle");
+ int counter = 0;
+ foreach (var oraD in oraDatas)
+ {
+ Console.Write("{0} ", ++counter);
+ if (counter % 40 == 0) Console.WriteLine();
+
+ ///
+ /// Read from VT_ZAEHLER_PINDEX_PD: TestId(ID_WZPRUEFREIHE))
+ ///
+ OracleCommand cmd = new OracleCommand("select ID_PRUEFSTAND, ID_WZPRUEFREIHE, WT_PLATZ_NR, HYDR_PRUEFUNG from VT_ZAEHLER_PINDEX_PD where VT_FERNUM = :1 AND ANBID = 4 AND WZGUT = 1", oracleConnection);
+ cmd.Parameters.Add(new OracleParameter { ParameterName = "1", OracleDbType = OracleDbType.Varchar2, Value = oraD.PcbNr });
+ OracleDataReader dr = cmd.ExecuteReader();
+ while (dr.Read())
+ {
+ int i = 0;
+ int testBenchId = dr.GetInt32(i++) % 100;
+ oraD.BatchNr = dr.GetInt32(i++);
+ oraD.WMPosition = dr.GetInt32(i++);
+ oraD.HydrPruefung = dr.GetInt32(i++);
+ }
+ dr.Close();
+
+ ///
+ /// Read from VT_IP_ZAEHLER_PINDEX_PD: Q2CorrectionRl, Q2CorrectionLr
+ ///
+ cmd = new OracleCommand("select PRUEFINDEX, WITHQ2CORRECTION, ERRQ2, Q2CORRECTIONLEFT, Q2CORRECTIONRIGHT from VT_IP_ZAEHLER_PINDEX_PD where VT_FERNUM = :1 AND ANBID = 4", oracleConnection);
+ /// pruefindex, Q2_correction_RL, Q2_correction_LR, Q2_error_before_correction
+ cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = oraD.PcbNr });
+ dr = cmd.ExecuteReader();
+ while (dr.Read())
+ {
+ int i = 0;
+ int prfix = (dr.GetInt32(i++) % 100);
+ if (prfix == oraD.MaxPruefIx)
+ {
+ oraD.Q2CorrectionDone = (dr.GetInt32(i++) != 0);
+ oraD.Q2ErrBeforeCorrection = dr.GetDouble(i++);
+ oraD.Q2CorrectionRl = dr.GetInt32(i++);
+ oraD.Q2CorrectionLr = dr.GetInt32(i++);
+ }
+ }
+ dr.Close();
+
+ ///
+ /// Read data from VT_PRUEFREIHE_PD
+ ///
+ cmd = new OracleCommand("select ID_WZTYP, REV_WZTYP, STARTDATUMZEIT, ENDDATUMZEIT, PROGRAMMVERSION from VT_PRUEFREIHE_PD where ID_PRUEFSTAND = :1 AND ID_WzPruefreihe = :2 AND ANBID = 4", oracleConnection);
+ cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 18000 + oraD.TestBenchId });
+ cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = oraD.BatchNr });
+
+ dr = cmd.ExecuteReader();
+ while (dr.Read())
+ {
+ int i = 0;
+ oraD.WMTypeId = dr.GetInt32(i++);
+ oraD.WMTypeRev = dr.GetInt32(i++);
+ oraD.Start = dr.GetDateTime(i++);
+ oraD.End = dr.GetDateTime(i++);
+ oraD.ProgramVer = dr.GetString(i++);
+ }
+ dr.Close();
+
+
+ ///
+ /// Read data from VT_PRUEFREIHE_IST_PD
+ ///
+ /// testID, flow, rel.err., passed
+ cmd = new OracleCommand("select PRUEFUNGSNR, Q_WZ, Q_FEHLER, Q_BEST from VT_PRUEFREIHE_IST_PD where VT_FERNUM = :1 AND PRUEFINDEX = :2 AND ANBID = 4", oracleConnection);
+ cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = oraD.PcbNr });
+ cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = 100 * oraD.TestBenchId + oraD.MaxPruefIx });
+
+ dr = cmd.ExecuteReader();
+ while (dr.Read())
+ {
+ int i = 0;
+ int testId = dr.GetInt32(i++); /// PRUEFUNGSNR
+ double flow = dr.GetDouble(i++); /// Q_WZ
+ double error = dr.GetDouble(i++); /// Q_FEHLER
+ bool testPassed = (dr.GetInt32(i++) != 0);
+
+ /// SUEZ specific
+ switch (testId)
+ {
+ case -2:
+ oraD.AdjErrA4 = error;
+ break;
+ case -1:
+ oraD.AdjErr = error;
+ break;
+ case 5:
+ oraD.Q3LrErr = error;
+ break;
+ case 10:
+ oraD.Q3RlErr = error;
+ break;
+ default:
+ break;
+ }
+ }
+ dr.Close();
+ } /// end of foreach (var oraD in OraDatas)
+ Console.WriteLine();
+ Console.WriteLine("Reading additional data from Oracle completed");
+ Console.WriteLine();
+
+ oracleConnection.Close();
+
+ Console.WriteLine("Reading additional data from MySQL");
+ counter = 0;
+ foreach (var testBenchId in testBenches)
+ {
+ Console.WriteLine((testBenchId == 8) ? "WR13" : (testBenchId == 9) ? "WR15" : (testBenchId == 10) ? "WR14" : "other");
+
+ switch (testBenchId)
+ {
+ case 8:
+ Results.DB.ConnectionString = "SERVER=localhost; DATABASE=st-wr13-r; UID=root; PASSWORD=kraken; CharSet=utf8;";
+ break;
+ case 9:
+ Results.DB.ConnectionString = "SERVER=localhost; DATABASE=st-wr15-r; UID=root; PASSWORD=kraken; CharSet=utf8;";
+ break;
+ case 10:
+ Results.DB.ConnectionString = "SERVER=localhost; DATABASE=st-wr14-r; UID=root; PASSWORD=kraken; CharSet=utf8;";
+ break;
+ default:
+ Results.DB.ConnectionString = string.Empty;
+ break;
+ }
+
+ if (!string.IsNullOrEmpty(Results.DB.ConnectionString))
+ {
+ ISession session = Results.DB.CreateSession();
+
+ foreach (var oraD in oraDatas)
+ {
+
+ if (oraD.TestBenchId == testBenchId)
+ {
+ Console.Write("{0} ", ++counter);
+ if (counter % 40 == 0) Console.WriteLine();
+
+ IList wms = session.QueryOver()
+ .Where(x => x.SerialNr == oraD.PcbNr)
+ .And(x => x.Passed)
+ .List();
+
+ if (wms.Count == 1)
+ {
+ oraD.CalibFactor = (int)Math.Round(wms[0].CalibFactor);
+ oraD.CalibFactorLNA = (int)Math.Round(wms[0].CalibFactorLNA);
+ }
+ else
+ {
+ foreach (var wm in wms)
+ {
+ if (wm.Batch.BatchNr == oraD.BatchNr)
+ {
+ oraD.CalibFactor = (int)Math.Round(wm.CalibFactor);
+ oraD.CalibFactorLNA = (int)Math.Round(wm.CalibFactorLNA);
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ Console.WriteLine();
+
+ session.Close();
+ }
+ }
+ Console.WriteLine("Reading additional data from MySQL");
+ Console.WriteLine();
+
+ Console.WriteLine("CSV data begin");
+ Console.WriteLine(string.Format("PO; prefix; S/N; PcbNr; Bench; Batch; Start; Start; End; End; Pos; AdjA0; AdjA4; Q3RL; Q3LR; CalF; CAlF_LNA; HP; Q2cRL; Q2cLR"));
+ foreach (var oraD in oraDatas)
+ {
+ Console.WriteLine(string.Format("{0}; {1}; {2}; =(\"{3}\"); {4}; {5}; {7}; {8}; {9}; {10}; {11}; {12}; {13}; {14}; {15}; {16}; {17}; {18}; {19}; {20}",
+ /* 0 */ oraD.PO,
+ /* 1 */ oraD.Prefix,
+ /* 2 */ oraD.SN,
+ /* 3 */ oraD.PcbNr,
+ /* 4 */ (oraD.TestBenchId == 8) ? "WR13" : (oraD.TestBenchId == 9) ? "WR15" : (oraD.TestBenchId == 10) ? "WR14" : "other",
+ /* 5 */ oraD.BatchNr,
+ /* 6 */ oraD.ProgramVer,
+ /* 7 */ oraD.Start.ToShortDateString(),
+ /* 8 */ oraD.Start.ToShortTimeString(),
+ /* 9 */ oraD.End.ToShortDateString(),
+ /* 10 */ oraD.End.ToShortTimeString(),
+ /* 11 */ oraD.WMPosition,
+ /* 12 */ oraD.AdjErr.ToString("F2"),
+ /* 13 */ oraD.AdjErrA4.ToString("F2"),
+ /* 14 */ oraD.Q3RlErr.ToString("F2"),
+ /* 15 */ oraD.Q3LrErr.ToString("F2"),
+ /* 16 */ oraD.CalibFactor,
+ /* 17 */ oraD.CalibFactorLNA,
+ /* 18 */ oraD.HydrPruefung,
+ /* 19 */ oraD.Q2CorrectionRl,
+ /* 20 */ oraD.Q2CorrectionLr,
+ /* 21 */ oraD.WMTypeId,
+ /* 22 */ oraD.WMTypeRev));
+ }
+ Console.WriteLine("CSV data end");
+ }
+ catch (Exception exc)
+ {
+ MessageBox.Show(exc.Message);
+ }
+#endif
+ }
}
}