iPerl : (1) results DB change, (2) reading from Oracle on cycle start, (3) reading Q2 corr. factors from iPerl, (4) new result items, (5) MainSeq cleanup, ver. 2.18.1125
This commit is contained in:
@@ -45,6 +45,11 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
///
|
||||
GenericDevices.IRegisterReader[] iperlHeads;
|
||||
|
||||
/// <summary>
|
||||
/// Start info is read into WaterMeter objects referenced by this array
|
||||
/// </summary>
|
||||
Results.Entities.WaterMeter[] waterMeters;
|
||||
|
||||
/// <summary>
|
||||
/// Results to print
|
||||
/// </summary>
|
||||
@@ -52,11 +57,13 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
|
||||
OracleConnection connection; /// Oracle database connection
|
||||
|
||||
|
||||
///
|
||||
/// The following 3 variables are always update together
|
||||
///
|
||||
int id_WZTyp;
|
||||
int rev_WZTyp;
|
||||
IList<SensusTestInfo> oraDbTestInfos = new List<SensusTestInfo>(); /// Contains only flowId-s ad qBezeichnung-s
|
||||
SensusTestInfo[] completeTestInfos; /// Contains also a range (90-100/100-110), a TBF test name and a string form of the flowId
|
||||
SensusTestInfo[] completeTestInfos; /// Contains (1) range (90-100/100-110), (2) TBF test name, (3) string form of the flowId ...
|
||||
/// ... in addition to incomplete test info from Oracle
|
||||
|
||||
|
||||
public Database() {}
|
||||
@@ -71,6 +78,10 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
log.Debug(this.ToString());
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
/// IDevice interface implementation
|
||||
///
|
||||
public void Initialize()
|
||||
{
|
||||
switch (dbCfg.DBUsed)
|
||||
@@ -107,24 +118,89 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
connection.Close();
|
||||
}
|
||||
}
|
||||
|
||||
///
|
||||
public void RunDeviceBefore() {}
|
||||
public void RunDeviceAfter() {}
|
||||
|
||||
///
|
||||
public void StopDevice()
|
||||
{
|
||||
if (connection != null) connection.Dispose();
|
||||
}
|
||||
|
||||
public void StopDevice2() { }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Get a complete information about tests given water meter type Id and revision
|
||||
/// </summary>
|
||||
/// <param name="conn">An open Oracle DB connection</param>
|
||||
/// <param name="wmTypeId">Water meter type Id</param>
|
||||
/// <param name="wmTypeRevision">Water meter type revision</param>
|
||||
/// <returns>SensusTestInfos array</returns>
|
||||
SensusTestInfo[] GetMatchingTestInfo(OracleConnection conn, int wmTypeId, int wmTypeRevision)
|
||||
{
|
||||
///
|
||||
/// Read 'incomplete' TestInfo from Oracle database containing only flowId-s ad qBezeichnung-s
|
||||
///
|
||||
IList<SensusTestInfo> oraDbTinfos = new List<SensusTestInfo>();
|
||||
|
||||
OracleCommand cmd = new OracleCommand("SELECT PruefungsNr, PosFehlerKalt, QBezeichnung FROM VT_PRUEFPUNKT_SOLL_SD WHERE ANBID=4 AND ID_WZTyp=:1 AND Rev_WZTyp=:2", conn);
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "1", OracleDbType = OracleDbType.Int32, Value = wmTypeId }); ///:1
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "2", OracleDbType = OracleDbType.Int32, Value = wmTypeRevision }); ///:2
|
||||
///
|
||||
OracleDataReader dr = cmd.ExecuteReader();
|
||||
while (dr.Read())
|
||||
{
|
||||
int pruefungsNr = dr.GetInt32(0);
|
||||
double errLimHi = dr.GetDouble(1);
|
||||
string qBezeichnung = dr.GetString(2);
|
||||
oraDbTinfos.Add(new SensusTestInfo(pruefungsNr, string.Empty, qBezeichnung, Range.R100_110, errLimHi.ToString()));
|
||||
}
|
||||
dr.Close();
|
||||
|
||||
if (oraDbTinfos.Count == 0) return null; /// No 'incomplete' TestInfo in Oracle DN for this 'wmTypeId' and 'wmTypeRevision'
|
||||
|
||||
///
|
||||
/// Find a matching complete test info
|
||||
///
|
||||
SensusTestInfo[] cmpltTinfos = null;
|
||||
|
||||
oraDbTinfos = oraDbTinfos.OrderBy(x => x.PruefungsNr).ToList<SensusTestInfo>();
|
||||
|
||||
for (LogType lt = 0; lt < LogType.Count; lt++)
|
||||
{
|
||||
SensusTestInfo[] myTinfos = SensusTestInfo.GetTestInfos(lt);
|
||||
if (SensusTestInfo.AreCompatible(oraDbTinfos, myTinfos))
|
||||
{
|
||||
cmpltTinfos = myTinfos;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var ti in oraDbTinfos)
|
||||
{
|
||||
log.WarnFormat("VT_PRUEFPUNKT_SOLL_SD info : ID_WZTyp={0} Rev_WZTyp={1} PruefungsNr={2} PosFehlerKalt={3} QBezeichnung={4}",
|
||||
wmTypeId, wmTypeRevision, ti.PruefungsNr, ti.TestName, ti.QBezeichnung);
|
||||
}
|
||||
|
||||
if (cmpltTinfos != null)
|
||||
{
|
||||
foreach (var ti in cmpltTinfos)
|
||||
{
|
||||
log.WarnFormat("Selected test info : ID_WZTyp={0} Rev_WZTyp={1} PruefungsNr={2} Str={3} QBezeichnung={4} Range={5} Test={6}",
|
||||
wmTypeId, wmTypeRevision, ti.PruefungsNr, ti.PruefungsNrStr, ti.QBezeichnung, ti.Range, ti.TestName);
|
||||
}
|
||||
}
|
||||
|
||||
return cmpltTinfos;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Reads information on start of a cycle, Events: Event.InfoRead
|
||||
/// </summary>
|
||||
/// <param name="batch">Batch results</param>
|
||||
/// <param name="waterMeters">Results of water meters</param>
|
||||
/// <returns>Reference to the operation</returns>
|
||||
public IOperation ReadStartInfoOp(Results.Entities.Batch batch)
|
||||
public IOperation ReadStartInfoOp(Results.Entities.WaterMeter[] waterMeters)
|
||||
{
|
||||
if (!dbCfg.ReadStartInfo)
|
||||
{
|
||||
@@ -137,7 +213,7 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
else
|
||||
{
|
||||
currentOp = CurrentOp.ReadStartInfo;
|
||||
this.batch = batch;
|
||||
this.waterMeters = waterMeters;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -165,7 +241,6 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public IOperation CheckBarcodeScanningOp(GenericDevices.IRegisterReader[] iperlHeads)
|
||||
{
|
||||
if (currentOp != CurrentOp.None)
|
||||
@@ -178,6 +253,7 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>Start this operation</summary>
|
||||
public void Start()
|
||||
{
|
||||
@@ -193,11 +269,11 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
{
|
||||
if (!opCompleted)
|
||||
{
|
||||
if (batch.WaterMeters.Count == 0) return Event.ResultsWritten;
|
||||
if ( waterMeters.Length == 0) return Event.ResultsWritten;
|
||||
#if ORACLE_DB
|
||||
if (dbCfg.DebugLevel != DebugMode.Simulate && connection != null)
|
||||
if ((dbCfg.DebugLevel == DebugMode.Normal) && (connection != null))
|
||||
{
|
||||
if (ReadStartInfoFromDB(connection, batch) == Retv.Error) anyError = true;
|
||||
if (ReadStartInfoFromDB(connection) == Retv.Error) anyError = true;
|
||||
}
|
||||
#endif
|
||||
opCompleted = true;
|
||||
@@ -211,7 +287,7 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
{
|
||||
if (batch.WaterMeters.Count == 0) return Event.ResultsWritten;
|
||||
#if ORACLE_DB
|
||||
if (dbCfg.DebugLevel != DebugMode.Simulate && connection != null)
|
||||
if ((dbCfg.DebugLevel == DebugMode.Normal) && (connection != null))
|
||||
{
|
||||
if (WriteResultsToDB(connection, batch, false) == Retv.Error) anyError = true;
|
||||
}
|
||||
@@ -226,7 +302,7 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
if (!opCompleted)
|
||||
{
|
||||
#if ORACLE_DB
|
||||
if (dbCfg.DebugLevel != DebugMode.Simulate && connection != null)
|
||||
if ((dbCfg.DebugLevel == DebugMode.Normal) && (connection != null))
|
||||
{
|
||||
if (CheckBarcodeScanning(connection, iperlHeads) == Retv.Error) anyError = true; ;
|
||||
}
|
||||
@@ -291,15 +367,16 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
}
|
||||
|
||||
|
||||
public Retv ReadStartInfoFromDB(OracleConnection conn, Results.Entities.Batch batch)
|
||||
public Retv ReadStartInfoFromDB(OracleConnection conn)
|
||||
{
|
||||
bool anyError = false;
|
||||
try
|
||||
{
|
||||
conn.Open(); /// Open the Oracle database
|
||||
|
||||
foreach (var wMtr in batch.WaterMeters)
|
||||
foreach (var wMtr in waterMeters)
|
||||
{
|
||||
ReadSingleWMfromDB(conn, wMtr);
|
||||
if ((wMtr != null) && (ReadSingleWMfromDB(conn, wMtr) != Retv.OK)) anyError = true;
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
@@ -311,21 +388,213 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
}
|
||||
|
||||
conn.Close();
|
||||
return Retv.OK;
|
||||
return anyError ? Retv.Error : Retv.OK;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Read start info of one water meter from the database
|
||||
/// </summary>
|
||||
/// </summary>
|
||||
/// <param name="wmNr">0-based water meter number</param>
|
||||
/// <param name="results">Sorted list of results to update</param>
|
||||
void ReadSingleWMfromDB(OracleConnection conn, Results.Entities.WaterMeter wm)
|
||||
Retv ReadSingleWMfromDB(OracleConnection conn, Results.Entities.WaterMeter wm)
|
||||
{
|
||||
if (string.IsNullOrEmpty(wm.SerialNr)) return; /// No database activity possible w/o PCB number
|
||||
if (string.IsNullOrEmpty(wm.SerialNr)) return Retv.Error; /// No database activity possible w/o PCB number
|
||||
|
||||
wm.Pruefindex = ReadMaxPruefindex(conn, wm);
|
||||
try
|
||||
{
|
||||
if (completeTestInfos == null || (id_WZTyp != wm.WaterMeterData.WMTypeId) || (rev_WZTyp != wm.WaterMeterData.WMTypeRev))
|
||||
{
|
||||
SensusTestInfo[] ti = GetMatchingTestInfo(conn, wm.WaterMeterData.WMTypeId, wm.WaterMeterData.WMTypeRev);
|
||||
|
||||
// select (Q_Fehler) from VT_PRUEFREIHE_IST_PD where VT_fernum=(1) AND PruefungsNr=(2) AND ANBID=4
|
||||
if (ti != null)
|
||||
{
|
||||
completeTestInfos = ti;
|
||||
id_WZTyp = wm.WaterMeterData.WMTypeId;
|
||||
rev_WZTyp = wm.WaterMeterData.WMTypeRev;
|
||||
}
|
||||
else
|
||||
{
|
||||
return Retv.Error;
|
||||
}
|
||||
}
|
||||
|
||||
OracleCommand cmd;
|
||||
OracleDataReader dr;
|
||||
|
||||
// SELECT * FROM VT_ZAEHLER_PD WHERE VT_Fernum = :1 AND ANBID = 4
|
||||
int maxPruefindex = 0;
|
||||
string purchaseOrder = string.Empty;
|
||||
int assignedSerialNr = 0;
|
||||
int paletteNr = 0;
|
||||
int umkartonNr = 0;
|
||||
string completeSerialNr = string.Empty;
|
||||
string radioAddress = string.Empty;
|
||||
int testBenchID = 0;
|
||||
int pruefreiheID = 0;
|
||||
int wmPosition = 0;
|
||||
bool passed = false;
|
||||
int resultCode = 0;
|
||||
int userId = 0;
|
||||
int q2CorrectionRL = 0;
|
||||
int q2CorrectionLR = 0;
|
||||
double q2ErrorBeforeCorrection = 0;
|
||||
|
||||
///
|
||||
/// Read data from VT_ZAEHLER_PD
|
||||
///
|
||||
cmd = new OracleCommand("select MAX_PRUEFINDEX, AUFTRAGSNUMMER, ZAEHLERNUMMER, PALETTE_NR, UMKARTON_NR, Z_NR_KOMPLETT, VT_MODUL_SNR from VT_ZAEHLER_PD where VT_FERNUM = :1 AND ANBID = 4", conn);
|
||||
/// 100*benchId+MPix, purchase_order, assigned_s/n, palette_nr, box_nr., complete_s/n, radio_address
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "1", OracleDbType = OracleDbType.Varchar2, Value = wm.SerialNr });
|
||||
dr = cmd.ExecuteReader();
|
||||
if (dr.Read())
|
||||
{
|
||||
int i = 0;
|
||||
int benchId_x_100_plus_MaxPruefindex = dr.GetInt32(i++);
|
||||
maxPruefindex = benchId_x_100_plus_MaxPruefindex % 100;
|
||||
testBenchID = benchId_x_100_plus_MaxPruefindex / 100;
|
||||
try { purchaseOrder = dr.GetString(i++); } catch { purchaseOrder = string.Empty; }
|
||||
try { assignedSerialNr = dr.GetInt32(i++); } catch { assignedSerialNr = 0; }
|
||||
try { paletteNr = dr.GetInt32(i++); } catch { paletteNr = 0; }
|
||||
try { umkartonNr = dr.GetInt32(i++); } catch { umkartonNr = 0; }
|
||||
try { completeSerialNr = dr.GetString(i++); } catch { completeSerialNr = string.Empty; }
|
||||
try { radioAddress = dr.GetString(i++); } catch { radioAddress = string.Empty; }
|
||||
}
|
||||
else
|
||||
{
|
||||
///
|
||||
/// Water meter with given PCB number was not found in ORACLE
|
||||
///
|
||||
log.ErrorFormat("Water meter {0} was not found in ORACLE database.", wm.SerialNr);
|
||||
dr.Close();
|
||||
return Retv.Error;
|
||||
}
|
||||
dr.Close();
|
||||
|
||||
///
|
||||
/// Read data from VT_ZAEHLER_PINDEX_PD
|
||||
///
|
||||
cmd = new OracleCommand("select PRUEFINDEX, ID_WZPRUEFREIHE, WT_PLATZ_NR, WZGUT, ID_BENUTZER from VT_ZAEHLER_PINDEX_PD where VT_FERNUM = :1 AND ANBID = 4", conn);
|
||||
/// test_bench_ID, line_ID, WM_position, result, user_ID
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "1", OracleDbType = OracleDbType.Varchar2, Value = wm.SerialNr });
|
||||
dr = cmd.ExecuteReader();
|
||||
while (dr.Read())
|
||||
{
|
||||
int i = 0;
|
||||
int prfix = (dr.GetInt32(i++) % 100);
|
||||
if (prfix == maxPruefindex)
|
||||
{
|
||||
pruefreiheID = dr.GetInt32(i++);
|
||||
wmPosition = dr.GetInt32(i++);
|
||||
passed = (dr.GetInt32(i++) != 0);
|
||||
userId = dr.GetInt32(i++);
|
||||
}
|
||||
}
|
||||
dr.Close();
|
||||
|
||||
///
|
||||
/// Read data from VT_IP_ZAEHLER_PINDEX_PD
|
||||
///
|
||||
cmd = new OracleCommand("select PRUEFINDEX, Q2CORRECTIONLEFT, Q2CORRECTIONRIGHT, ERRQ2 from VT_IP_ZAEHLER_PINDEX_PD where VT_FERNUM = :1 AND ANBID = 4", conn);
|
||||
/// pruefindex, Q2_correction_RL, Q2_correction_LR, Q2_error_before_correction
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "1", OracleDbType = OracleDbType.Varchar2, Value = wm.SerialNr });
|
||||
dr = cmd.ExecuteReader();
|
||||
while (dr.Read())
|
||||
{
|
||||
int i = 0;
|
||||
int prfix = (dr.GetInt32(i++) % 100);
|
||||
if (prfix == maxPruefindex)
|
||||
{
|
||||
q2CorrectionRL = dr.GetInt32(i++);
|
||||
q2CorrectionLR = dr.GetInt32(i++);
|
||||
q2ErrorBeforeCorrection = dr.GetDouble(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", conn);
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "1", OracleDbType = OracleDbType.Varchar2, Value = wm.SerialNr });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "2", OracleDbType = OracleDbType.Int32, Value = 100 * testBenchID + maxPruefindex });
|
||||
|
||||
dr = cmd.ExecuteReader();
|
||||
while (dr.Read())
|
||||
{
|
||||
int i = 0;
|
||||
int testId = dr.GetInt32(i++);
|
||||
double flow = dr.GetDouble(i++);
|
||||
double error = dr.GetDouble(i++);
|
||||
bool testPassed = (dr.GetInt32(i++) != 0);
|
||||
|
||||
string testName = null;
|
||||
foreach (var ti in completeTestInfos)
|
||||
{
|
||||
if (ti.PruefungsNr == testId)
|
||||
{
|
||||
testName = ti.TestName;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(testName))
|
||||
{
|
||||
foreach (var mtr in wm.MeterTestRslts)
|
||||
{
|
||||
string mtrTestName = mtr.TestRslt.Name();
|
||||
int ix = mtrTestName.LastIndexOf(" (");
|
||||
string mtrBaseTestName = (ix < 0) ? mtrTestName : mtrTestName.Substring(0, ix);
|
||||
if (mtrBaseTestName == testName)
|
||||
{
|
||||
mtr.LastError = error;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
dr.Close();
|
||||
|
||||
///
|
||||
/// Copy acquired data to WaterMeter object
|
||||
///
|
||||
wm.Pruefindex = maxPruefindex;
|
||||
wm.AssignedSerialNr = assignedSerialNr;
|
||||
wm.CompleteSerialNr = completeSerialNr;
|
||||
wm.RadioAddress = radioAddress;
|
||||
wm.PaletteNr = paletteNr;
|
||||
wm.UmkartonNr = umkartonNr;
|
||||
wm.ProdTestBench = Results.Utils.BenchNameFromOracleBenchID(testBenchID);
|
||||
wm.ProdWMPosition = wmPosition;
|
||||
wm.ProdUserName = userId.ToString();
|
||||
wm.ProdPurchaseOrder = purchaseOrder;
|
||||
wm.ProdPassed = passed;
|
||||
wm.ProdResultCode = resultCode;
|
||||
wm.ProdQ2CorrRL = q2CorrectionRL;
|
||||
wm.ProdQ2CorrLR = q2CorrectionLR;
|
||||
|
||||
log.InfoFormat("Data of water meter {0} successfully read from ORACLE database.", wm.SerialNr);
|
||||
log.DebugFormat(" MaxPruefindex = {0}", wm.Pruefindex);
|
||||
log.DebugFormat(" AssignedSerialNr = {0}", wm.AssignedSerialNr);
|
||||
log.DebugFormat(" CompleteSerialNr = {0}", wm.CompleteSerialNr);
|
||||
log.DebugFormat(" RadioAddress = {0}", wm.RadioAddress);
|
||||
log.DebugFormat(" PaletteNr = {0}", wm.PaletteNr);
|
||||
log.DebugFormat(" UmkartonNr = {0}", wm.UmkartonNr);
|
||||
log.DebugFormat(" ProdTestBench = {0}", wm.ProdTestBench);
|
||||
log.DebugFormat(" ProdWMPosition = {0}", wm.ProdWMPosition);
|
||||
log.DebugFormat(" ProdUserName = {0}", wm.ProdUserName);
|
||||
log.DebugFormat(" ProdPurchaseOrder = {0}", wm.ProdPurchaseOrder);
|
||||
log.DebugFormat(" ProdPassed = {0}", wm.ProdPassed);
|
||||
log.DebugFormat(" ProdResultCode = {0}", wm.ProdResultCode);
|
||||
log.DebugFormat(" ProdQ2CorrRL = {0}", wm.ProdQ2CorrRL);
|
||||
log.DebugFormat(" ProdQ2CorrLR = {0}", wm.ProdQ2CorrLR);
|
||||
|
||||
return Retv.OK;
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
log.ErrorFormat("Error reading data of water meter {0} from ORACLE database: {1}", wm.SerialNr, exc.Message);
|
||||
return Retv.Error;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -336,6 +605,7 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
try
|
||||
{
|
||||
conn.Open(); /// Open the Oracle database
|
||||
|
||||
transaction = conn.BeginTransaction();
|
||||
|
||||
SaveBatchData(conn, batch);
|
||||
@@ -450,65 +720,22 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
return maxPrfIndex;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Save common batch data
|
||||
/// </summary>
|
||||
/// <param name="b">Batch</param>
|
||||
void SaveBatchData(OracleConnection conn, Results.Entities.Batch b)
|
||||
{
|
||||
OracleParameter parm;
|
||||
|
||||
if ((id_WZTyp != b.WaterMeters[0].WaterMeterData.WMTypeId) || (rev_WZTyp != b.WaterMeters[0].WaterMeterData.WMTypeRev) || oraDbTestInfos.Count == 0 || completeTestInfos == null)
|
||||
if ((completeTestInfos == null) || (id_WZTyp != b.WaterMeters[0].WaterMeterData.WMTypeId) || (rev_WZTyp != b.WaterMeters[0].WaterMeterData.WMTypeRev))
|
||||
{
|
||||
id_WZTyp = b.WaterMeters[0].WaterMeterData.WMTypeId;
|
||||
rev_WZTyp = b.WaterMeters[0].WaterMeterData.WMTypeRev;
|
||||
SensusTestInfo[] ti = GetMatchingTestInfo(conn, b.WaterMeters[0].WaterMeterData.WMTypeId, b.WaterMeters[0].WaterMeterData.WMTypeRev);
|
||||
|
||||
///
|
||||
/// Read 'incomplete' TestInfo from the database
|
||||
///
|
||||
OracleCommand cmd1 = new OracleCommand("SELECT PruefungsNr, PosFehlerKalt, QBezeichnung FROM VT_PRUEFPUNKT_SOLL_SD WHERE ANBID=4 AND ID_WZTyp=:1 AND Rev_WZTyp=:2", conn);
|
||||
parm = new OracleParameter("ID_WZTyp", OracleDbType.Int32); parm.Value = id_WZTyp; cmd1.Parameters.Add(parm); ///:1
|
||||
parm = new OracleParameter("Rev_WZTyp", OracleDbType.Int32); parm.Value = rev_WZTyp; cmd1.Parameters.Add(parm); ///:2
|
||||
|
||||
oraDbTestInfos.Clear();
|
||||
OracleDataReader dr = cmd1.ExecuteReader();
|
||||
while (dr.Read())
|
||||
if (ti != null)
|
||||
{
|
||||
int pruefungsNr = dr.GetInt32(0);
|
||||
double errLimHi = dr.GetDouble(1);
|
||||
string qBezeichnung = dr.GetString(2);
|
||||
oraDbTestInfos.Add(new SensusTestInfo(pruefungsNr, string.Empty, qBezeichnung, Range.R100_110, errLimHi.ToString()));
|
||||
}
|
||||
dr.Close();
|
||||
|
||||
///
|
||||
/// Find a matching complete test info
|
||||
///
|
||||
oraDbTestInfos = oraDbTestInfos.OrderBy(x => x.PruefungsNr).ToList<SensusTestInfo>();
|
||||
completeTestInfos = null;
|
||||
for (LogType lt = 0; lt < LogType.Count; lt++)
|
||||
{
|
||||
SensusTestInfo[] myTinfos = SensusTestInfo.GetTestInfos(lt);
|
||||
if (SensusTestInfo.AreCompatible(oraDbTestInfos, myTinfos))
|
||||
{
|
||||
completeTestInfos = myTinfos;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var ti in oraDbTestInfos)
|
||||
{
|
||||
log.WarnFormat("VT_PRUEFPUNKT_SOLL_SD info : ID_WZTyp={0} Rev_WZTyp={1} PruefungsNr={2} PosFehlerKalt={3} QBezeichnung={4}",
|
||||
id_WZTyp, rev_WZTyp, ti.PruefungsNr, ti.TestName, ti.QBezeichnung);
|
||||
}
|
||||
|
||||
if (completeTestInfos != null)
|
||||
{
|
||||
foreach (var ti in completeTestInfos)
|
||||
{
|
||||
log.WarnFormat("Selected test info : ID_WZTyp={0} Rev_WZTyp={1} PruefungsNr={2} Str={3} QBezeichnung={4} Range={5} Test={6}",
|
||||
id_WZTyp, rev_WZTyp, ti.PruefungsNr, ti.PruefungsNrStr, ti.QBezeichnung, ti.Range, ti.TestName);
|
||||
}
|
||||
completeTestInfos = ti;
|
||||
id_WZTyp = b.WaterMeters[0].WaterMeterData.WMTypeId;
|
||||
rev_WZTyp = b.WaterMeters[0].WaterMeterData.WMTypeRev;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -516,43 +743,38 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
}
|
||||
}
|
||||
|
||||
OracleCommand cmd = new OracleCommand("INSERT INTO VT_PRUEFREIHE_PD(" +
|
||||
"ANBID, ID_Pruefstand, ID_WzPruefreihe, ID_WZTyp, Rev_WZTyp, Rev_Pruefstand_WZTyp, " +
|
||||
"StartDatumZeit, EndDatumZeit, Betriebsart, QVzKontakt, " +
|
||||
"FuellenBegDruck, DruckEvakVorne, DruckEvakHinten, DruckBeiAbpressen, " +
|
||||
OracleCommand cmd = new OracleCommand("INSERT INTO VT_PRUEFREIHE_PD(ANBID, ID_Pruefstand, ID_WzPruefreihe, ID_WZTyp, " +
|
||||
"Rev_WZTyp, Rev_Pruefstand_WZTyp, StartDatumZeit, EndDatumZeit, Betriebsart, " +
|
||||
"QVzKontakt, FuellenBegDruck, DruckEvakVorne, DruckEvakHinten, DruckBeiAbpressen, " +
|
||||
"Druckentwaessern, SpuelDurchflussIst, ProgrammVersion)" +
|
||||
" VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, :15, :16, :17)", conn);
|
||||
parm = new OracleParameter("ANBID", OracleDbType.Int32); parm.Value = Anbid_StaraTura; cmd.Parameters.Add(parm); ///:1
|
||||
parm = new OracleParameter("ID_Pruefstand", OracleDbType.Int32); parm.Value = 18000 + b.TestBenchId; cmd.Parameters.Add(parm); ///:2
|
||||
parm = new OracleParameter("ID_WzPruefreihe", OracleDbType.Int32); parm.Value = b.BatchNr; cmd.Parameters.Add(parm); ///:3
|
||||
parm = new OracleParameter("ID_WZTyp", OracleDbType.Int32); parm.Value = b.WaterMeters[0].WaterMeterData.WMTypeId; cmd.Parameters.Add(parm); ///:4
|
||||
parm = new OracleParameter("Rev_WZTyp", OracleDbType.Int32); parm.Value = b.WaterMeters[0].WaterMeterData.WMTypeRev; cmd.Parameters.Add(parm); ///:5
|
||||
parm = new OracleParameter("Rev_Pruefstand_WZTyp", OracleDbType.Int32); parm.Value = 1; cmd.Parameters.Add(parm); ///:6
|
||||
|
||||
parm = new OracleParameter("StartDatumZeit", OracleDbType.TimeStamp); parm.Value = b.StartTime; cmd.Parameters.Add(parm); ///:7
|
||||
parm = new OracleParameter("EndDatumZeit", OracleDbType.TimeStamp); parm.Value = b.EndTime; cmd.Parameters.Add(parm); ///:8
|
||||
parm = new OracleParameter("Betriebsart", OracleDbType.Varchar2); parm.Value = ""; cmd.Parameters.Add(parm); ///:9
|
||||
parm = new OracleParameter("QVzKontakt", OracleDbType.Double); parm.Value = 0; cmd.Parameters.Add(parm); ///:10
|
||||
|
||||
parm = new OracleParameter("FuellenBegDruck", OracleDbType.Double); parm.Value = 0; cmd.Parameters.Add(parm); ///:11
|
||||
parm = new OracleParameter("DruckEvakVorne", OracleDbType.Double); parm.Value = 0; cmd.Parameters.Add(parm); ///:12
|
||||
parm = new OracleParameter("DruckEvakHinten", OracleDbType.Double); parm.Value = 0; cmd.Parameters.Add(parm); ///:13
|
||||
parm = new OracleParameter("DruckBeiAbpressen", OracleDbType.Double); parm.Value = 0; /*TODO*/ cmd.Parameters.Add(parm); ///:14
|
||||
|
||||
parm = new OracleParameter("Druckentwaessern", OracleDbType.Double); parm.Value = 0; cmd.Parameters.Add(parm); ///:15
|
||||
parm = new OracleParameter("SpuelDurchflussIst", OracleDbType.Double); parm.Value = 0; /*TODO*/ cmd.Parameters.Add(parm); ///:16
|
||||
parm = new OracleParameter("ProgrammVersion", OracleDbType.Varchar2); parm.Value = "TBF v." + b.ProgramVersion; cmd.Parameters.Add(parm); ///:17
|
||||
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "1", OracleDbType = OracleDbType.Int32, Value = Anbid_StaraTura });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "2", OracleDbType = OracleDbType.Int32, Value = 18000 + b.TestBenchId });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "3", OracleDbType = OracleDbType.Int32, Value = b.BatchNr });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "4", OracleDbType = OracleDbType.Int32, Value = b.WaterMeters[0].WaterMeterData.WMTypeId });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "5", OracleDbType = OracleDbType.Int32, Value = b.WaterMeters[0].WaterMeterData.WMTypeRev });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "6", OracleDbType = OracleDbType.Int32, Value = 1 });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "7", OracleDbType = OracleDbType.TimeStamp, Value = b.StartTime });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "8", OracleDbType = OracleDbType.TimeStamp, Value = b.EndTime });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "9", OracleDbType = OracleDbType.Varchar2, Value = string.Empty });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "10", OracleDbType = OracleDbType.Double, Value = 0 });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "11", OracleDbType = OracleDbType.Double, Value = 0 });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "12", OracleDbType = OracleDbType.Double, Value = 0 });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "13", OracleDbType = OracleDbType.Double, Value = 0 });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "14", OracleDbType = OracleDbType.Double, Value = 0 }); /// TODO: DruckBeiAbpressen
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "15", OracleDbType = OracleDbType.Double, Value = 0 });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "16", OracleDbType = OracleDbType.Double, Value = 0 }); /// TODO: SpuelDurchflussIst
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "17", OracleDbType = OracleDbType.Varchar2, Value = string.Format("TBF v.{0}", b.ProgramVersion) });
|
||||
cmd.ExecuteNonQuery(); /// Returns nr. of updated rows
|
||||
|
||||
|
||||
foreach (var testInfo in completeTestInfos)
|
||||
{
|
||||
Results.Entities.TestRslt tr = b.GetTestRslt(testInfo.TestName, 0);
|
||||
|
||||
if (tr == null) tr = b.GetTestRslt(testInfo.TestName, 1); /// TODO: Remove this workaround for large watermeters with multiple parts at Q3
|
||||
|
||||
if (tr == null) continue;
|
||||
double Q_ist = (tr.VolumeMaster != 0) ? (tr.FlowVolume * tr.VolumeCTV / tr.VolumeMaster) : (double)tr.FlowVolume;
|
||||
|
||||
OracleCommand cmd2 = new OracleCommand("INSERT INTO VT_PRUEFDURCHFLUSS_PD(" +
|
||||
"ANBID, ID_Pruefstand, ID_WzPruefreihe, PruefungsNr, " +
|
||||
@@ -562,36 +784,29 @@ namespace TBF.BenchControl.Output.DB.SensusOracle
|
||||
"TVWZ, IVWZ, Verwendeter_VZ, BeginnGewicht, EndGewicht)" +
|
||||
" 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);
|
||||
|
||||
parm = new OracleParameter("ANBID", OracleDbType.Int32); parm.Value = Anbid_StaraTura; 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_WzPruefreihe", OracleDbType.Int32); parm.Value = b.BatchNr; cmd2.Parameters.Add(parm); ///:3
|
||||
parm = new OracleParameter("PruefungsNr", OracleDbType.Int32); parm.Value = testInfo.PruefungsNr; cmd2.Parameters.Add(parm); ///:4
|
||||
///
|
||||
parm = new OracleParameter("PVOL", OracleDbType.Double); parm.Value = Units.ConvertTo(Unit.l, tr.VolumeCTV); cmd2.Parameters.Add(parm); ///:5
|
||||
parm = new OracleParameter("PMasse", OracleDbType.Double); parm.Value = Units.ConvertTo(Unit.kg, tr.MassEnd-tr.MassStart); cmd2.Parameters.Add(parm); ///:6
|
||||
parm = new OracleParameter("MinDurchfluss", OracleDbType.Double); parm.Value = Units.ConvertTo(Unit.lph, tr.FlowMin); cmd2.Parameters.Add(parm); ///:7
|
||||
parm = new OracleParameter("MaxDurchfluss", OracleDbType.Double); parm.Value = Units.ConvertTo(Unit.lph, tr.FlowMax); cmd2.Parameters.Add(parm); ///:8
|
||||
|
||||
double Q_ist = (tr.VolumeMaster != 0) ? (tr.FlowVolume * tr.VolumeCTV / tr.VolumeMaster) : (double)tr.FlowVolume;
|
||||
parm = new OracleParameter("Q_ist", OracleDbType.Double); parm.Value = Units.ConvertTo(Unit.lph, Q_ist); cmd2.Parameters.Add(parm); ///:9
|
||||
parm = new OracleParameter("KFaktor", OracleDbType.Double); parm.Value = tr.ConstMaster; cmd2.Parameters.Add(parm); ///:10
|
||||
parm = new OracleParameter("Q_VZ", OracleDbType.Double); parm.Value = Units.ConvertTo(Unit.lph, tr.FlowVolume); cmd2.Parameters.Add(parm); ///:11
|
||||
parm = new OracleParameter("F_VZ", OracleDbType.Double); parm.Value = tr.ErrorMaster; cmd2.Parameters.Add(parm); ///:12
|
||||
parm = new OracleParameter("RegelEinstellZeit", OracleDbType.Double); parm.Value = (double)tr.FlowSetTime; cmd2.Parameters.Add(parm); ///:13
|
||||
parm = new OracleParameter("Drehzahl", OracleDbType.Int32); parm.Value = 0; /* TODO */ cmd2.Parameters.Add(parm); ///:14
|
||||
///
|
||||
parm = new OracleParameter("BeginnDruck_Vorne", OracleDbType.Double); parm.Value = Units.ConvertTo(Unit.bar, tr.PressUpStart); cmd2.Parameters.Add(parm); ///:15
|
||||
parm = new OracleParameter("BeginnDruck_Hinten", OracleDbType.Double); parm.Value = Units.ConvertTo(Unit.bar, tr.PressDownStart); cmd2.Parameters.Add(parm); ///:16
|
||||
parm = new OracleParameter("EndDruck_Vorne", OracleDbType.Double); parm.Value = Units.ConvertTo(Unit.bar, tr.PressUpEnd); cmd2.Parameters.Add(parm); ///:17
|
||||
parm = new OracleParameter("EndDruck_Hinten", OracleDbType.Double); parm.Value = Units.ConvertTo(Unit.bar, tr.PressDownEnd); cmd2.Parameters.Add(parm); ///:18
|
||||
///
|
||||
parm = new OracleParameter("TVWZ", OracleDbType.Double); parm.Value = tr.TestTime; cmd2.Parameters.Add(parm); ///:19
|
||||
parm = new OracleParameter("IVWZ", OracleDbType.Int32); parm.Value = tr.PulsesMaster; cmd2.Parameters.Add(parm); ///:20
|
||||
parm = new OracleParameter("Verwendeter_VZ", OracleDbType.Int32); parm.Value = 0; /* TODO */ cmd2.Parameters.Add(parm); ///:21
|
||||
parm = new OracleParameter("BeginnGewicht", OracleDbType.Double); parm.Value = Units.ConvertTo(Unit.kg, tr.MassStart); cmd2.Parameters.Add(parm); ///:22
|
||||
parm = new OracleParameter("EndGewicht", OracleDbType.Double); parm.Value = Units.ConvertTo(Unit.kg, tr.MassEnd); cmd2.Parameters.Add(parm); ///:23
|
||||
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "1", OracleDbType = OracleDbType.Int32, Value = Anbid_StaraTura });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "2", OracleDbType = OracleDbType.Int32, Value = 18000 + b.TestBenchId });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "3", OracleDbType = OracleDbType.Int32, Value = b.BatchNr });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "4", OracleDbType = OracleDbType.Int32, Value = testInfo.PruefungsNr });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "5", OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.l, tr.VolumeCTV) });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "6", OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.kg, tr.MassEnd-tr.MassStart) });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "7", OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.lph, tr.FlowMin) });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "8", OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.lph, tr.FlowMax) });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "9", OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.lph, Q_ist) });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "10", OracleDbType = OracleDbType.Double, Value = tr.ConstMaster });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "11", OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.lph, tr.FlowVolume) });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "12", OracleDbType = OracleDbType.Double, Value = tr.ErrorMaster });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "13", OracleDbType = OracleDbType.Double, Value = (double)tr.FlowSetTime });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "14", OracleDbType = OracleDbType.Int32, Value = 0 }); /// TODO
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "15", OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.bar, tr.PressUpStart) });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "16", OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.bar, tr.PressDownStart) });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "17", OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.bar, tr.PressUpEnd) });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "18", OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.bar, tr.PressDownEnd) });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "19", OracleDbType = OracleDbType.Double, Value = tr.TestTime });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "20", OracleDbType = OracleDbType.Int32, Value = tr.PulsesMaster });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "21", OracleDbType = OracleDbType.Int32, Value = 0 }); /// TODO
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "22", OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.kg, tr.MassStart) });
|
||||
cmd.Parameters.Add(new OracleParameter { ParameterName = "23", OracleDbType = OracleDbType.Double, Value = Units.ConvertTo(Unit.kg, tr.MassEnd) });
|
||||
cmd2.ExecuteNonQuery(); /// Returns nr. of updated rows
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user