/// /// 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; } } }