///
/// 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
{
public class VtAuftragPd
{
private static readonly ILog log = LogManager.GetLogger(typeof(VtAuftragPd));
public string Auftragsnummer;
public int Produktion_anbid;
public int Produktion_id_anlage;
public int Produktion_usestate;
public string Kd_auftr_nr;
public string Kd_auftr_pos;
public int Geraetetyp;
public string Variantencode;
public string Status;
public int Anbid;
public int Id_benutzer;
public DateTime Erfasst_am;
public DateTime Sollende;
public int Sollstueck;
public int Iststueck;
public int Stopbeiiststueck;
public int Sollstueckueberproduktion;
public int Kunden_z_nr;
public int Zaehlerinkrement;
public int Erste_zaehlernr;
public string Prefix;
public bool Prefix_flag;
public string Suffix;
public bool Suffix_flag;
public bool Zaehlernummer_bc_flag;
public bool Mbus_adr_flag;
public int Mbus_adr;
public int Mbus_adr_schritte;
public bool Liegenschafts_nr_flag;
public long Liegenschafts_nr;
public int Liegenschafts_nr_schritte;
public bool Sekundaere_adr_flag;
public int Sekundaere_adr;
public int Sekundaere_adr_schritte;
public bool Kdartnr_flag;
public string Kdartnr;
public string Kdlogoname;
public byte Eich_jahr_simple;
public string Zusatztext;
public int Zaehlwerk;
public int Modul;
public bool Archiv;
public int Prioritaet;
public int Umkarton;
public int Paletteumkarton;
public int Usestate;
public int Znrlaenge;
public DateTime Changedate;
public string Modul_param;
///
/// Default constructor
///
public VtAuftragPd()
{
}
static public VtAuftragPd FromOrderInfo(IOrderInfo orderInfo, Config.Entities.Procedure procedure, int idBenutzer)
{
VtAuftragPd rslt = new VtAuftragPd
{
Auftragsnummer = orderInfo.POName,
Produktion_anbid = Database.ProducerAnbid,
Produktion_id_anlage = 4,
Produktion_usestate = 0,
Kd_auftr_nr = null,
Kd_auftr_pos = null,
Geraetetyp = 0,
Variantencode = orderInfo.VariantCode,
Status = "NEU",
Anbid = Database.ProducerAnbid,
Id_benutzer = idBenutzer,
Erfasst_am = DateTime.Now,
Sollende = DateTime.Now + new TimeSpan(7,0,0,0),
Sollstueck = orderInfo.PiecesCount,
Iststueck = 0,
Stopbeiiststueck = orderInfo.PiecesCount,
Sollstueckueberproduktion = 0,
Kunden_z_nr = 0,
Zaehlerinkrement = 1,
Erste_zaehlernr = orderInfo.SNFirst,
Prefix = string.IsNullOrEmpty(orderInfo.SNPrefix) ? null : orderInfo.SNPrefix,
Prefix_flag = !string.IsNullOrEmpty(orderInfo.SNPrefix),
Suffix = string.IsNullOrEmpty(orderInfo.SNSuffix) ? null : orderInfo.SNSuffix,
Suffix_flag = !string.IsNullOrEmpty(orderInfo.SNSuffix),
Zaehlernummer_bc_flag = false,
Mbus_adr_flag = false,
Mbus_adr = 0,
Mbus_adr_schritte = 0,
Liegenschafts_nr_flag = false,
Liegenschafts_nr = 0,
Liegenschafts_nr_schritte = 0,
Sekundaere_adr_flag = false,
Sekundaere_adr = 0,
Sekundaere_adr_schritte = 0,
Kdartnr_flag = false,
Kdartnr = "S640CFV1", /// TODO
Kdlogoname = null,
Eich_jahr_simple = 21, /// TODO
Zusatztext = orderInfo.Remark,
Zaehlwerk = 68118031, /// TODO
Modul = 0,
Archiv = false,
Prioritaet = 0,
Umkarton = 10, /// TODO
Paletteumkarton = 20, /// TODO
Usestate = 0,
Znrlaenge = orderInfo.SNDigitsCount,
Changedate = DateTime.Now,
Modul_param = orderInfo.ModuleParam,
};
return rslt;
}
public int Write(OracleConnection conn, bool aktiv = true)
{
var cmd = new OracleCommand("INSERT INTO vt_auftrag_pd(auftragsnummer, produktion_anbid, produktion_id_anlage," +
" produktion_usestate, kd_auftr_nr, kd_auftr_pos, geraetetyp, variantencode, status," +
" anbid, id_benutzer, erfasst_am, sollende, sollstueck, iststueck, stopbeiiststueck," +
" sollstueckueberproduktion, kunden_z_nr, zaehlerinkrement, erste_zaehlernr, prefix," +
" prefix_flag, suffix, suffix_flag, zaehlernummer_bc_flag, mbus_adr_flag, mbus_adr," +
" mbus_adr_schritte, liegenschafts_nr_flag, liegenschafts_nr, liegenschafts_nr_schritte," +
" sekundaere_adr_flag, sekundaere_adr, sekundaere_adr_schritte, kdartnr_flag, kdartnr," +
" kdlogoname, eich_jahr_simple, zusatztext, zaehlwerk, modul, archiv, prioritaet," +
" umkarton, paletteumkarton, usestate, znrlaenge, changedate, modul_param) " +
"VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, :15, :16," +
" :17, :18, :19, :20, :21, :22, :23, :24, :25, :26, :27, :28, :29, :30, :31, :32, :33," +
" :34, :35, :36, :37, :38, :39, :40, :41, :42, :43, :44, :45, :46, :47, :48, :49)", conn);
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = Auftragsnummer }); /// :1
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Produktion_anbid }); /// :2
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Produktion_id_anlage }); /// :3
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Produktion_usestate }); /// :4
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = Kd_auftr_nr }); /// :5
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = Kd_auftr_pos }); /// :6
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Geraetetyp }); /// :7
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = Variantencode }); /// :8
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = Status }); /// :9
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Anbid }); /// :10
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Id_benutzer }); /// :11
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.TimeStamp, Value = Erfasst_am }); /// :12
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.TimeStamp, Value = Sollende }); /// :13
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Sollstueck }); /// :14
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Iststueck }); /// :15
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Stopbeiiststueck }); /// :16
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Sollstueckueberproduktion }); /// :17
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Kunden_z_nr }); /// :18
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Zaehlerinkrement }); /// :19
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Erste_zaehlernr }); /// :20
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = Prefix }); /// :21
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Prefix_flag ? -1 : 0 }); /// :22
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = Suffix }); /// :23
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Suffix_flag ? -1 : 0 }); /// :24
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Zaehlernummer_bc_flag ? -1 : 0 }); /// :25
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Mbus_adr_flag ? -1 : 0 }); /// :26
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = Mbus_adr }); /// :27
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = Mbus_adr_schritte }); /// :28
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Liegenschafts_nr_flag ? -1 : 0 }); /// :29
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int64, Value = Liegenschafts_nr }); /// :30
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = Liegenschafts_nr_schritte }); /// :31
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Sekundaere_adr_flag ? -1 : 0 }); /// :32
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Sekundaere_adr }); /// :33
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Sekundaere_adr_schritte }); /// :34
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Kdartnr_flag ? -1 : 0 }); /// :35
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = Kdartnr }); /// :36
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = Kdlogoname }); /// :37
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Eich_jahr_simple }); /// :38
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = Zusatztext }); /// :39
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Zaehlwerk }); /// :40
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Modul }); /// :41
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = Archiv }); /// :42
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Prioritaet }); /// :43
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Umkarton }); /// :44
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Paletteumkarton }); /// :45
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Usestate }); /// :46
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Znrlaenge }); /// :47
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.TimeStamp, Value = Changedate }); /// :48
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = Modul_param }); /// :49
///
return cmd.ExecuteNonQuery();
}
public static IList Read(OracleConnection conn, string poName)
{
var cmd = new OracleCommand("SELECT status, variantencode, erste_zaehlernr, prefix, suffix," +
" zaehlwerk, erfasst_am, sollende, sollstueck, zusatztext, znrlaenge, modul_param " +
"FROM vt_auftrag_pd " +
"WHERE auftragsnummer=:1 AND produktion_anbid=:2", conn);
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, Value = poName }); /// :1
cmd.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Int32, Value = Database.ProducerAnbid }); /// :2
var rslt = new List();
OracleDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
int i = 0;
string status = 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; }
rslt.Add(new OrderDetails { POName = poName,
VariantCode = variantencode,
SNFirst = erste_zaehlernr,
SNPrefix = prefix,
SNSuffix = suffix,
Zaehlwerk = zaehlwerk,
Created = erfasst_am,
DueDate = sollende,
PiecesCount = sollstueck,
Remark = zusatztext,
SNDigitsCount = znrlaenge,
ModuleParam = modul_param });
}
dr.Close();
return rslt;
}
}
}