SensusOracle : Automatic WZ_TYPE_ID assignment and creation OK, ver. 3.1.1815

This commit is contained in:
Milan Hanajik
2021-12-09 17:12:51 +01:00
parent e324de985f
commit cd84c82475
11 changed files with 638 additions and 413 deletions
@@ -2,7 +2,14 @@
/// Copyright (c) 2021 Sensus Slovensko a.s.
///
using System;
using System.Collections.Generic;
using System.Linq;
using log4net;
#if MANAGED
using Oracle.ManagedDataAccess.Client;
#else
using Oracle.DataAccess.Client;
#endif
using Common;
namespace TBF.Rig.Output.DB.SensusOracle
@@ -49,8 +56,8 @@ namespace TBF.Rig.Output.DB.SensusOracle
Pruefungsnr = pruefungsnr,
Q_soll = (float)Units.ConvertTo(Unit.lph, isQ3orQ4 ? tr.Qto() : tr.Qfrom()),
Pruefzeit = (float)tr.TargetTime(),
Posfehlerkalt = (float)tr.ErrLimHi(),
Negfehlerkalt = (float)tr.ErrLimLo(),
Posfehlerkalt = (float)(tr.ErrLimHi() - tr.ErrLimMargin()),
Negfehlerkalt = (float)(tr.ErrLimLo() + tr.ErrLimMargin()),
Posfehlerwarm = 0,
Negfehlerwarm = 0,
Pruefbereichmin = isQ3orQ4 ? 90 : 100,
@@ -100,11 +107,86 @@ namespace TBF.Rig.Output.DB.SensusOracle
return rslt;
}
public override string ToString()
/// <summary>
/// Insert a record to VT_PRUEFPUNKT_SOLL_SD
/// </summary>
/// <param name="conn">Oracle connection</param>
/// <param name="record">Record to be written</param>
/// <param name="aktiv">WM type Id</param>
/// <param name="aktiv">WM type revision</param>
/// <returns>List of VtWztypSd records</returns>
public void Write(OracleConnection conn, VtPruefpunktSollSd record, int id_wztyp, int rev_wztyp)
{
return string.Format("{0} {1} {2}l/h time={3}s Elo={4}% Ehi={5}% Rlo={6} Rhi={7}",
Pruefungsnr, Qbezeichnung, Q_soll, Pruefzeit,
Negfehlerkalt, Posfehlerkalt, Pruefbereichmin, Pruefbereichmax);
var cmd = new OracleCommand("INSERT INTO vt_pruefpunkt_soll_sd(anbid, id_wztyp, rev_wztyp, pruefungsnr, q_soll, pruefzeit," +
" posfehlerkalt, negfehlerkalt, posfehlerwarm, negfehlerwarm, pruefbereichmin, pruefbereichmax," +
" qbezeichnung, mindruck, fkorrektur, maxdruck) " +
"VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, :15, :16)", conn);
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Database.ProducerAnbid }); /// :1
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = id_wztyp }); /// :2
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = rev_wztyp }); /// :3
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Pruefungsnr }); /// :4
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Single, Value = Q_soll }); /// :5
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Single, Value = Pruefzeit }); /// :6
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Single, Value = Posfehlerkalt }); /// :7
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Single, Value = Negfehlerkalt }); /// :8
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Single, Value = Posfehlerwarm }); /// :9
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Single, Value = Negfehlerwarm }); /// :10
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Pruefbereichmin }); /// :11
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Pruefbereichmax }); /// :12
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = Qbezeichnung }); /// :13
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Single, Value = Mindruck }); /// :14
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Single, Value = Fkorrektur }); /// :15
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Single, Value = Maxdruck }); /// :16
///
var rowsUpdated = cmd.ExecuteNonQuery();
}
/// <summary>
/// Get VT_PRUEFPUNKT_SOLL_SD content
/// </summary>
/// <param name="conn">Oracle connection</param>
/// <param name="aktiv">WM type Id</param>
/// <param name="aktiv">WM type revision</param>
/// <returns>List of VtWztypSd records</returns>
public static IList<VtPruefpunktSollSd> Read(OracleConnection conn, int id_wztyp, int rev_wztyp)
{
var cmd = new OracleCommand("SELECT pruefungsnr, q_soll, pruefzeit, posfehlerkalt, negfehlerkalt," +
" posfehlerwarm, negfehlerwarm, pruefbereichmin, pruefbereichmax," +
" qbezeichnung, mindruck, fkorrektur, maxdruck " +
"FROM vt_pruefpunkt_soll_sd " +
"WHERE anbid=:1 AND id_wztyp=:2 AND rev_wztyp=:3 ORDER BY pruefungsnr DESC", conn);
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Database.ProducerAnbid }); /// :1
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = id_wztyp }); /// :2
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = rev_wztyp }); /// :3
///
var dr = cmd.ExecuteReader();
var list = new List<VtPruefpunktSollSd>();
while (dr.Read())
{
var tst = new VtPruefpunktSollSd();
int i = 0;
try { tst.Pruefungsnr = dr.GetInt32(i++); } catch { tst.Pruefungsnr = 0; }
try { tst.Q_soll = dr.GetFloat(i++); } catch { tst.Q_soll = 0; }
try { tst.Pruefzeit = dr.GetFloat(i++); } catch { tst.Pruefzeit = 0; }
try { tst.Posfehlerkalt = dr.GetFloat(i++); } catch { tst.Posfehlerkalt = 0; }
try { tst.Negfehlerkalt = dr.GetFloat(i++); } catch { tst.Negfehlerkalt = 0; }
try { tst.Posfehlerwarm = dr.GetFloat(i++); } catch { tst.Posfehlerwarm = 0; }
try { tst.Negfehlerwarm = dr.GetFloat(i++); } catch { tst.Negfehlerwarm = 0; }
try { tst.Pruefbereichmin = dr.GetInt32(i++); } catch { tst.Pruefbereichmin = 0; }
try { tst.Pruefbereichmax = dr.GetInt32(i++); } catch { tst.Pruefbereichmax = 0; }
try { tst.Qbezeichnung = dr.GetString(i++); } catch { tst.Qbezeichnung = string.Empty; }
try { tst.Mindruck = dr.GetFloat(i++); } catch { tst.Mindruck = 0; }
try { tst.Fkorrektur = dr.GetFloat(i++); } catch { tst.Fkorrektur = 0; }
try { tst.Maxdruck = dr.GetFloat(i++); } catch { tst.Maxdruck = 0; }
if (tst.Pruefungsnr >= 0)
list.Add(tst);
else
list.Insert(0, tst);
}
return list;
}
/// <summary>
@@ -133,5 +215,12 @@ namespace TBF.Rig.Output.DB.SensusOracle
((t1.Maxdruck == 0 && t2.Maxdruck == 0) || 2 * Math.Abs(t1.Maxdruck - t2.Maxdruck) / (t1.Maxdruck + t2.Maxdruck) < 0.001) &&
t1.Fkorrektur == t2.Fkorrektur;
}
public override string ToString()
{
return string.Format("{0} {1} {2}l/h time={3}s Elo={4}% Ehi={5}% Rlo={6} Rhi={7}",
Pruefungsnr, Qbezeichnung, Q_soll, Pruefzeit,
Negfehlerkalt, Posfehlerkalt, Pruefbereichmin, Pruefbereichmax);
}
}
}