public static int?GetMinTaskNumber() { int?task_number = null; string qry = @" select * from (select top 1 TASK_NUMBER from [CyberPlanFrontiera].[dbo].EXP_CORDER order by TASK_NUMBER asc) A union select * from (select top 1 TASK_NUMBER from [CyberPlanFrontiera].[dbo].EXP_ORDER order by TASK_NUMBER asc) B union select * from (select top 1 TASK_NUMBER from [CyberPlanFrontiera].[dbo].EXP_OPERATION order by TASK_NUMBER asc) C union select * from (select top 1 TASK_NUMBER from [CyberPlanFrontiera].[dbo].EXP_DEMAND order by TASK_NUMBER asc) D "; DBHelper2 db = DBHelper2.getCyberDBHelper(); DbDataReader dtr = db.GetReaderSelectCommand(qry); object[] row = new object[dtr.FieldCount]; if (dtr.HasRows) { while (dtr.Read()) { dtr.GetValues(row); task_number = (int)row[0]; _logger.Debug(System.Reflection.MethodBase.GetCurrentMethod().Name + " Refresh min task number=" + task_number); break; } } else { _logger.Debug(System.Reflection.MethodBase.GetCurrentMethod().Name + " task number = null"); } dtr.Close(); return(task_number); }
static public void Init() { DBHelper2 db = DBHelper2.getCyberDBHelper(); string exec_store_procedure = "EXECUTE [CyberPlanFrontiera].[dbo].[FILL_E_ROUTING]"; _logger.Info("start execution"); int i = DBHelper2.EseguiSuDBCyberPlan(ref db, exec_store_procedure, 600); _logger.Info("end execution"); }
static public void SetStatus(string stato) { DBHelper2 db = DBHelper2.getCyberDBHelper(); string command = "UPDATE [CyberPlanFrontiera].[dbo].[TRANSFER_STATUS] " + " SET [STATUS] = '" + stato + "' ," + " TIMESTAMP = '" + System.DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "'" + " WHERE ID='TR_STATUS' "; _logger.Info("start execution"); int i = DBHelper2.EseguiSuDBCyberPlan(ref db, command, 600); _logger.Info("end execution"); }
static private void FinalCheck_Ordini_di_Articoli_senza_cicli() { DBHelper2 db = DBHelper2.getCyberDBHelper(); string command = @" Select C_CODE,C_CORDER_CODE,C_ITEM_CODE,C_M_B --,ope.C_OPNUM, ope.C_USER_STRING01 AS Attrezzatura, ope.C_USER_STRING02 as Macchina from [CyberPlanFrontiera].[dbo].[CYB_ORDER] od left join [CyberPlanFrontiera].[dbo].[CYB_OPERATION] ope on od.C_CODE = ope.C_ORDER_CODE where C_M_B in ('M','D') and ope.C_OPNUM is null order by C_ITEM_CODE "; _logger.Info("start execution"); string testo_mail = ""; DBHelper2 cyber = DBHelper2.getCyberDBHelper(); DbDataReader dtr = cyber.GetReaderSelectCommand(command); object[] row = new object[dtr.FieldCount]; string prec_articolo = ""; string articolo = ""; while (dtr.Read()) { dtr.GetValues(row); articolo = (string)row[2]; string C_M_B = (string)row[3]; if (C_M_B != "D") //se è di contolavoro non lo segnalo: devono avere il ciclo solo gli articolo di CL a capacità Finita, ma da qui non si riesce a suddividere in base al Cdl_MRP, quindi non riesco a fare il controllo { if (articolo != prec_articolo) { prec_articolo = articolo; testo_mail += Utils.NewLineMail() + " codice =" + articolo + " non ha ciclo ma ha degli ordini di produzione " + Utils.NewLineMail(); if (articolo == "WM0662-03") { testo_mail += articolo + ": questo articolo non ha attrezzatura in As400, quindi non viene creato il ciclo; OK" + Utils.NewLineMail(); } } testo_mail += (string)row[0] + " " + Utils.NewLineMail(); } } Utils.SendMail_Anag(Settings.GetSettings(), testo_mail, "Ordini di articoli senza ciclo"); _logger.Info("end execution"); }
static private void FinalCheck_PLAS_senza_cicli() { DBHelper2 db = DBHelper2.getCyberDBHelper(); string command = @"SELECT distinct D.[C_ITEM_CODE] ,D.[C_ORDER_CODE] /*,D.[C_QTY] ,D.[C_WAREHOUSE_CODE] ,I.[C_DESCR ] ,I.[C_M_B ] ,I.[C_ITEM_GROUP ] ,I.[C_USER_STRING01 ]*/ ,CICLI.C_CODE FROM[CyberPlanFrontiera].[dbo].[CYB_DEMAND] D left join[CyberPlanFrontiera].[dbo].[CYB_ITEM] I on D.C_ITEM_CODE=I.[C_CODE] left join ( --query indicata da Savietto per recuperare i cicli; qui serve per recuperare Articoli PLAS che non hanno cicli SELECT T.C_CODE FROM[CyberPlanFrontiera].[dbo].FiltroCicliPlastica T LEFT JOIN [CyberPlanFrontiera].[dbo].CYB_STD_OP_MACHINE PO_MAC ON T.ATTREZZATURA = PO_MAC.C_ROUTING_CODE left join [CyberPlanFrontiera].[dbo].cyb_machine mac on mac.c_code = PO_MAC.machine_code where CHARINDEX(TIPO_P, mac.c_user_string04) > 0 -- verifico tipo plastica and ((T.DIVISORE = 1 and mac.[C_USER_FLAG01] = 1) or T.DIVISORE = 0) -- Devo verificare: se il divisore è richiesto solo macchine con divisore, altrimenti tutte and((T.PESO_MATER + T.PESO_ITEM) * (CASE WHEN cast(T.IMPRONTE_FORZ as int) = 0 THEN COALESCE(cast(t.IMPRONT_DEFAULT as int), 1) ELSE COALESCE(cast(t.IMPRONTE_FORZ as int), 1) END)) >= MAC.C_USER_REAL01 and((T.PESO_MATER + T.PESO_ITEM)*(CASE WHEN cast(T.IMPRONTE_FORZ as int) = 0 THEN COALESCE(cast(t.IMPRONT_DEFAULT as int), 1) ELSE COALESCE(cast(t.IMPRONTE_FORZ as int), 1) END)) <= MAC.C_USER_REAL02 -- Verifico il peso tra il min e il max della macchina GROUP BY T.C_CODE, T.C_PLANT_CODE, PO_MAC.C_OPNUM, PO_MAC.C_ALT_OPNUM, COALESCE(MAC.C_WORKCENTER,'TRASH') ) CICLI on D.C_ITEM_CODE= CICLI.C_CODE where I.[C_USER_STRING01]='PLAS' and CICLI.C_CODE is null order by D.C_ITEM_CODE "; _logger.Info("start execution"); string testo_mail = ""; DBHelper2 cyber = DBHelper2.getCyberDBHelper(); DbDataReader dtr = cyber.GetReaderSelectCommand(command); object[] row = new object[dtr.FieldCount]; string prec_articolo = ""; string articolo = ""; while (dtr.Read()) { dtr.GetValues(row); articolo = (string)row[0]; if (articolo != prec_articolo) { prec_articolo = articolo; testo_mail += Utils.NewLineMail() + " codice =" + articolo + " non è producibile ma questi Ordine di produzione lo richiedono " + Utils.NewLineMail(); } testo_mail += (string)row[1] + " " + Utils.NewLineMail(); } Utils.SendMail_Anag(Settings.GetSettings(), testo_mail, "WP senza ciclo"); _logger.Info("end execution"); }
public ExportItem(string file_prefix, X3WSUtils.TipoImport tipo) { _file_prefix = file_prefix; Tipo = tipo; _db = DBHelper2.getCyberDBHelper(); }
public void WriteToCyberPlan <T>(bool mode_all, string codice_like, string filtro, bool delete, string option) where T : Item, new() { Item.ResetMailMessage(); string startedAt = DateTime.Now.ToString(); string message_error = "Command started at " + startedAt + " " + "\n Parameters: mode_all=" + mode_all + ", codice_like=" + codice_like + ", filtro=" + filtro + ", delete=" + delete + ", option=" + option + "\n\n"; _logger.Debug(System.Reflection.MethodBase.GetCurrentMethod().Name + " --- started at " + startedAt); T tmp = new T(); _logger.Info("Oggetto: " + typeof(T).ToString().PadRight(60) + " su tabella " + tmp._CP_tabella); DBHelper2 cm = DBHelper2.getCyberDBHelper(); if (delete) { DBHelper2.EseguiSuDBCyberPlan(ref cm, tmp.GetDeletedAllQuery()); _logger.Debug(System.Reflection.MethodBase.GetCurrentMethod().Name + " --- deleting ended at " + DateTime.Now.ToString()); return; } //if (string.IsNullOrWhiteSpace(codice_like)) //{ // codice_like = "%"; //} //string qry = tmp.GetSelectQuery(mode_all, _libreria_dossier+"TEST", codice_like, filtro); _logger.Info("Oggetto: " + typeof(T).ToString().PadRight(60) + " Disab Blocco chifra suffisso TEST a " + _libreria_dossier); string qry = tmp.GetSelectQuery(mode_all, _libreria_dossier, codice_like, filtro); DbDataReader dtr = GetReaderSelectCommand(qry); object[] row = new object[dtr.FieldCount]; int i = 0; int j = 0; while (dtr.Read()) { //x debug //if (i==34529) //{ // _logger.Info("i=" + i.ToString() ); //} i++; j++; dtr.GetValues(row); //tmp.Init__AddRow(row); try { tmp.Init(row); } catch (Exception ex) { _logger.Info("I=" + i.ToString() + "Exception: " + ex.Message); } try { tmp.AddCyberRow();//tmp.GetRow(row); } catch (Exception ex) { _logger.Info(ex.Message); } if (j % 1000 == 0) { //int res= DBHelper2.EseguiSuDBCyberPlan(ref cm, tmp_qry); int res = DBHelper2.EseguiSuDBCyberPlan_Bulk(ref cm, tmp._CP_tabella, Item._dataTable); _logger.Info(i + " items... [" + tmp.GetID() + "]"); j = 0; } } int added = tmp.AddLastCyberRows(); if (j > 0 || added > 0) { //DBHelper2.EseguiSuDBCyberPlan(ref cm, tmp_qry); int res = DBHelper2.EseguiSuDBCyberPlan_Bulk(ref cm, tmp._CP_tabella, Item._dataTable); _logger.Info(i + added + " items [last= " + tmp.GetID() + "]"); } tmp.DoLastAction(ref cm, this); dtr.Close(); //if (thereIsMessage) //{ // Utils.SendMail("*****@*****.**", "*****@*****.**", message_error); // //Utils.SendMail("*****@*****.**", "[email protected],[email protected]", message_error); //} _logger.Debug(System.Reflection.MethodBase.GetCurrentMethod().Name + " --- ended at " + DateTime.Now.ToString()); }