private void DoMrbBackFlush() { if (InterfacePublicValues.IsMonthly(SFCDB, DB_TYPE_ENUM.Oracle)) { //月結不給拋賬 throw new Exception("This time is monthly,can't BackFlush"); } else { WOToMRBBackFlush(); } }
public void GetBackFlustData() { SFCDB.BeginTrain(); try { C_CONTROL control = t_c_control.GetControlByName("HWD_STOCKIN_TIME", SFCDB); if (control.CONTROL_VALUE == "" && string.IsNullOrEmpty(control.CONTROL_VALUE)) { throw new Exception("Get last run time fail "); } startTime = Convert.ToDateTime(control.CONTROL_VALUE); endTime = InterfacePublicValues.GetDBDateTime(SFCDB, DB_TYPE_ENUM.Oracle); stockInTable = t_r_sn_station_detail.GetStockInQtyByTime(startTime, endTime, SFCDB); if (stockInTable != null) { foreach (DataRow dr in stockInTable.Rows) { r_sap_temp = (Row_R_SAP_TEMP)t_r_sap_temp.NewRow(); r_sap_temp.ID = t_r_sap_temp.GetNewID(BU, SFCDB); r_sap_temp.SKUNO = dr["skuno"].ToString(); r_sap_temp.TYPE = "011G To 016G"; r_sap_temp.QTY = double.Parse(dr["qty"].ToString()); r_sap_temp.FROM_STORAGE = "011G"; r_sap_temp.TO_STORAGE = "016G"; r_sap_temp.SAP_FLAG = "0"; r_sap_temp.FAIL_COUNT = 0; r_sap_temp.EDIT_EMP = "interface"; r_sap_temp.EDIT_TIME = endTime; SFCDB.ExecSQL(r_sap_temp.GetInsertString(DB_TYPE_ENUM.Oracle)); } } Row_C_CONTROL rowControl = (Row_C_CONTROL)t_c_control.GetObjByID(control.ID, SFCDB); rowControl.CONTROL_VALUE = endTime.ToString("yyyy/MM/dd HH: mm: ss"); rowControl.EDIT_EMP = "intrerface"; rowControl.EDIT_TIME = endTime; SFCDB.ExecSQL(rowControl.GetUpdateString(DB_TYPE_ENUM.Oracle)); SFCDB.CommitTrain(); } catch (Exception exception) { SFCDB.RollbackTrain(); WriteLog.WriteIntoMESLog(SFCDB, BU, "MESInterface", "MESInterface.HWD.StockInBackFlush", "GetBackFlustData", ip + ";" + exception.Message, "", "interface"); StockInBackFlush_UI.OutPutMessage("", exception.Message, false); } }
/// <summary> /// convert wo /// </summary> protected void ConvertWO() { if (_downloadWO != "") { dtConvertWO = R_WO_HEADER.GetConvertWoTableByWO(SFCDB, DB_TYPE_ENUM.Oracle, _downloadWO); } else { dtConvertWO = R_WO_HEADER.GetConvertWoTable(SFCDB, DB_TYPE_ENUM.Oracle, arrayConvertWO); } if (dtConvertWO.Rows.Count > 0) { foreach (DataRow row in dtConvertWO.Rows) { rowSku = null; rowRoute = null; rowWOBase = null; rowWOType = null; routeDetailList = null; keypartList = null; keypartIDList = null; linkStationList = null; C_Series = null; sql = ""; try { rowSku = (Row_C_SKU)C_SKU.GetSku(row["MATNR"].ToString(), SFCDB, DB_TYPE_ENUM.Oracle); if (rowSku == null) { throw new Exception(" sku " + row["MATNR"].ToString() + " can't exist"); } //if (!string.Equals(rowSku.VERSION.ToString(), row["REVLV"].ToString())) //{ // throw new Exception(" The sku version is not the same," + rowSku.VERSION.ToString() + "," + row["REVLV"].ToString()); //} C_Series = T_Series.GetDetailById(SFCDB, rowSku.C_SERIES_ID); if (C_Series == null) { throw new Exception(" the series of " + row["MATNR"].ToString() + " can't exist"); } rowWOType = WOType.GetWOTypeByWO(SFCDB, row["AUART"].ToString()); if (rowWOType == null) { throw new Exception("get wo type fail"); } rowRoute = (Row_C_ROUTE)C_ROUTE.GetRouteBySkuno(rowSku.ID, SFCDB, DB_TYPE_ENUM.Oracle); if (rowRoute == null) { throw new Exception(" the route of " + row["MATNR"].ToString() + " can't exist"); } routeDetailList = RouteDetail.GetByRouteIdOrderBySEQASC(rowRoute.ID, SFCDB); if (routeDetailList == null || routeDetailList.Count == 0) { throw new Exception("get route detail fail by " + rowRoute.ID); } keypartIDList = t_c_kp_list.GetListIDBySkuno(rowSku.SKUNO, SFCDB); if (keypartIDList.Count > 0 && keypartIDList.Count != 1) { throw new Exception("skuno:" + row["MATNR"].ToString() + " have more keypart id"); } //HWD的邏輯 //linkStationList = routeDetailList.Where(link => link.STATION_NAME == "LINK").ToList(); //if (linkStationList != null && linkStationList.Count > 0) //{ // keypartList = Keypart.GetKeypartListBySkuVersion(SFCDB, row["MATNR"].ToString(), row["REVLV"].ToString()); // keypartIDList = keypartList.Select(id => id.KEYPART_ID).Distinct().ToList(); // if (keypartIDList == null || keypartIDList.Count != 1) // { // throw new Exception("get keypart id fail by skuno:" + row["MATNR"].ToString() + " and version:" + row["REVLV"].ToString()); // } //} rowWOBase = (Row_R_WO_BASE)R_WO_BASE.NewRow(); rowWOBase.ID = R_WO_BASE.GetNewID(BU, SFCDB); rowWOBase.WORKORDERNO = row["AUFNR"].ToString(); rowWOBase.PLANT = row["WERKS"].ToString(); rowWOBase.RELEASE_DATE = InterfacePublicValues.GetDBDateTime(SFCDB, DB_TYPE_ENUM.Oracle); rowWOBase.DOWNLOAD_DATE = InterfacePublicValues.GetDBDateTime(SFCDB, DB_TYPE_ENUM.Oracle); rowWOBase.PRODUCTION_TYPE = "BTO";//HWD原有邏輯寫死 rowWOBase.WO_TYPE = rowWOType.WORKORDER_TYPE; rowWOBase.SKUNO = row["MATNR"].ToString(); rowWOBase.SKU_VER = row["REVLV"].ToString(); rowWOBase.SKU_SERIES = C_Series.SERIES_NAME; rowWOBase.SKU_NAME = rowSku.SKU_NAME; rowWOBase.SKU_DESC = rowSku.DESCRIPTION; rowWOBase.CUST_PN = rowSku.CUST_PARTNO; rowWOBase.CUST_PN_VER = ""; rowWOBase.CUSTOMER_NAME = rowSku.CUST_SKU_CODE; rowWOBase.ROUTE_ID = rowRoute.ID; rowWOBase.START_STATION = routeDetailList[0].STATION_NAME; rowWOBase.KP_LIST_ID = (keypartIDList != null && keypartIDList.Count > 0) ? keypartIDList[0] : ""; rowWOBase.CLOSED_FLAG = "0"; rowWOBase.WORKORDER_QTY = Convert.ToDouble(row["GAMNG"]); rowWOBase.INPUT_QTY = 0; rowWOBase.FINISHED_QTY = 0; rowWOBase.SCRAPED_QTY = 0; rowWOBase.STOCK_LOCATION = row["LGORT"].ToString(); rowWOBase.PO_NO = ""; rowWOBase.CUST_ORDER_NO = row["ABLAD"].ToString(); rowWOBase.ROHS = row["ROHS_VALUE"].ToString(); rowWOBase.EDIT_EMP = "interface"; rowWOBase.EDIT_TIME = InterfacePublicValues.GetDBDateTime(SFCDB, DB_TYPE_ENUM.Oracle); SFCDB.ThrowSqlExeception = true; sql = rowWOBase.GetInsertString(DB_TYPE_ENUM.Oracle); SFCDB.ExecSQL(rowWOBase.GetInsertString(DB_TYPE_ENUM.Oracle)); SFCDB.CommitTrain(); } catch (Exception ex) { WriteLog.WriteIntoMESLog(SFCDB, BU, "MESInterface", "MESInterface.HWD.DownLoadWO", "ConvertWO", ip + ";" + row["AUFNR"].ToString() + ";ConvertWO fail," + ex.Message.ToString(), sql, "interface"); } } } }
/// <summary> /// convert wo /// </summary> protected void ConvertWO() { if (_downloadWO != "") { //如果指定了工單Download,且工單不存在于R_WO_BASE表中,則返回該工單R_WO_Header記錄 dtConvertWO = R_WO_HEADER.GetConvertWoTableByWO(SFCDB, DB_TYPE_ENUM.Oracle, _downloadWO); } else { //否則抓取所有不存在于R_WO_BASE表中工單,并結合CONVERTWO=00251的設定返回工單R_WO_Header記錄 //MBD 正常工單類型,且ModelType不包含094的才轉 dtConvertWO = R_WO_HEADER.GetConvertWoTableForMBD(SFCDB, DB_TYPE_ENUM.Oracle, arrayConvertWO); } if (dtConvertWO.Rows.Count > 0) { //循環所有待轉工單 foreach (DataRow row in dtConvertWO.Rows) { rowSku = null; rowRoute = null; rowWOBase = null; rowWOType = null; routeDetailList = null; keypartList = null; keypartIDList = null; linkStationList = null; C_Series = null; sql = ""; try { //判斷料號是否存在 rowSku = (Row_C_SKU)C_SKU.GetSku(row["MATNR"].ToString(), SFCDB, DB_TYPE_ENUM.Oracle); if (rowSku == null) { throw new Exception(" sku " + row["MATNR"].ToString() + " not exist"); } if (rowSku.C_SERIES_ID == null) { throw new Exception(" the series of " + row["MATNR"].ToString() + " can not be null "); } //從C_Series表中獲取系列信息 C_Series = T_Series.GetDetailById(SFCDB, rowSku.C_SERIES_ID); if (C_Series == null) { throw new Exception(" the series of " + row["MATNR"].ToString() + " not exist"); } //從R_WO_TYPE表中獲取工單類型:這張表需要事先設定 rowWOType = WOType.GetWOTypeByWO(SFCDB, row["AUART"].ToString()); if (rowWOType == null) { throw new Exception("get wo type fail"); } //從R_Sku_Route&C_Route表中獲取默認路由 rowRoute = (Row_C_ROUTE)C_ROUTE.GetDefaultRouteBySkuno(rowSku.ID, SFCDB, DB_TYPE_ENUM.Oracle); if (rowRoute == null) { throw new Exception(" the route of " + row["MATNR"].ToString() + " not exist"); } //從C_Route_Detail表中獲取路由 routeDetailList = RouteDetail.GetByRouteIdOrderBySEQASC(rowRoute.ID, SFCDB); if (routeDetailList == null || routeDetailList.Count == 0) { throw new Exception("get route detail fail by " + rowRoute.ID); } //???KeyParts如何轉 keypartIDList = t_c_kp_list.GetListIDBySkuno(rowSku.SKUNO, SFCDB); if (keypartIDList.Count > 0 && keypartIDList.Count != 1) { throw new Exception("skuno:" + row["MATNR"].ToString() + " have more keypart id"); } rowWOBase = (Row_R_WO_BASE)R_WO_BASE.NewRow(); rowWOBase.ID = R_WO_BASE.GetNewID(BU, SFCDB); rowWOBase.WORKORDERNO = row["AUFNR"].ToString(); rowWOBase.PLANT = row["WERKS"].ToString(); rowWOBase.RELEASE_DATE = InterfacePublicValues.GetDBDateTime(SFCDB, DB_TYPE_ENUM.Oracle); rowWOBase.DOWNLOAD_DATE = InterfacePublicValues.GetDBDateTime(SFCDB, DB_TYPE_ENUM.Oracle); rowWOBase.PRODUCTION_TYPE = "BTO";//原有邏輯寫死 rowWOBase.WO_TYPE = rowWOType.WORKORDER_TYPE; rowWOBase.SKUNO = row["MATNR"].ToString(); rowWOBase.SKU_VER = row["REVLV"].ToString(); rowWOBase.SKU_SERIES = C_Series.SERIES_NAME; rowWOBase.SKU_NAME = rowSku.SKU_NAME; rowWOBase.SKU_DESC = rowSku.DESCRIPTION; rowWOBase.CUST_PN = rowSku.CUST_PARTNO; rowWOBase.CUST_PN_VER = ""; rowWOBase.CUSTOMER_NAME = rowSku.CUST_SKU_CODE; rowWOBase.ROUTE_ID = rowRoute.ID; rowWOBase.START_STATION = routeDetailList[0].STATION_NAME; //?????? rowWOBase.KP_LIST_ID = (keypartIDList != null && keypartIDList.Count > 0) ? keypartIDList[0] : ""; rowWOBase.CLOSED_FLAG = "0"; rowWOBase.WORKORDER_QTY = Convert.ToDouble(row["GAMNG"]); rowWOBase.INPUT_QTY = 0; rowWOBase.FINISHED_QTY = 0; rowWOBase.SCRAPED_QTY = 0; rowWOBase.STOCK_LOCATION = row["LGORT"].ToString(); rowWOBase.PO_NO = ""; rowWOBase.CUST_ORDER_NO = row["ABLAD"].ToString(); rowWOBase.ROHS = row["ROHS_VALUE"].ToString(); rowWOBase.EDIT_EMP = "interface"; rowWOBase.EDIT_TIME = InterfacePublicValues.GetDBDateTime(SFCDB, DB_TYPE_ENUM.Oracle); SFCDB.ThrowSqlExeception = true; sql = rowWOBase.GetInsertString(DB_TYPE_ENUM.Oracle); SFCDB.ExecSQL(rowWOBase.GetInsertString(DB_TYPE_ENUM.Oracle)); SFCDB.CommitTrain(); } catch (Exception ex) { WriteLog.WriteIntoMESLog(SFCDB, BU, "MESInterface", "MESInterface.MBD.DownLoadWO", "ConvertWO", ip + ";" + row["AUFNR"].ToString() + ";ConvertWO fail," + ex.Message.ToString(), sql, "interface"); } } } }
private void WOToMRBBackFlush() { MRBGTList = new List <R_MRB_GT>(); MRBTable = new DataTable(); sql = $@" update r_mrb_gt set sap_flag = '3' where (sap_flag = '2' or sap_flag = '0') and zcpp_flag = 0 and sap_station_code is not null "; SFCDB.ExecSQL(sql); sql = $@" select * from r_mrb_gt where sap_flag = 3 and zcpp_flag = 0 and sap_station_code is not null "; MRBTable = SFCDB.RunSelect(sql).Tables[0]; if (MRBTable != null && MRBTable.Rows.Count > 0) { foreach (DataRow row in MRBTable.Rows) { rowR_MRBGT = (Row_R_MRB_GT)R_MRB_GT.NewRow(); rowR_MRBGT.loadData(row); MRBGTList.Add(rowR_MRBGT.GetDataObject()); } sql = " update r_mrb_gt set sap_flag = '4' where sap_flag = '3' and zcpp_flag = 0 and sap_station_code is not null "; SFCDB.ExecSQL(sql); } postDate = InterfacePublicValues.GetPostDate(SFCDB); if (MRBGTList != null && MRBGTList.Count > 0) { foreach (R_MRB_GT r_mrb_gt in MRBGTList) { rowR_MRBGT = null; rowH_MRBGT = null; logMessage = ""; zrfc_sfc_nsg_0020.SetValue("I_AUFNR", r_mrb_gt.WORKORDERNO); zrfc_sfc_nsg_0020.SetValue("I_BUDAT", postDate); zrfc_sfc_nsg_0020.SetValue("I_FLAG", r_mrb_gt.CONFIRMED_FLAG); zrfc_sfc_nsg_0020.SetValue("I_LGORT_TO", r_mrb_gt.TO_STORAGE); zrfc_sfc_nsg_0020.SetValue("I_LMNGA", r_mrb_gt.TOTAL_QTY.ToString()); zrfc_sfc_nsg_0020.SetValue("I_STATION", r_mrb_gt.SAP_STATION_CODE); try { zrfc_sfc_nsg_0020.CallRFC(); } catch (Exception ex) { //write log WriteLog.WriteIntoMESLog(SFCDB, BU, "MESInterface", "MESInterface.HWD.MrbBackFlush", "WOToMRBBackFlush", r_mrb_gt.WORKORDERNO + ";" + ip + ";" + ex.ToString(), "", "interface"); continue; } if (zrfc_sfc_nsg_0020.GetValue("O_FLAG1") == "1") { rowR_MRBGT = (Row_R_MRB_GT)R_MRB_GT.GetObjByID(r_mrb_gt.ID, SFCDB); rowR_MRBGT.SAP_FLAG = "2"; rowR_MRBGT.CONFIRMED_FLAG = "1"; try { SFCDB.ExecSQL(rowR_MRBGT.GetUpdateString(DB_TYPE_ENUM.Oracle)); } catch (Exception ex) { WriteLog.WriteIntoMESLog(SFCDB, BU, "MESInterface", "MESInterface.HWD.MrbBackFlush", "WOToMRBBackFlush", r_mrb_gt.WORKORDERNO + ";" + ip + ";update r_mrb_gt fail," + ex.Message, "", "interface"); } } try { logMessage = " M:" + zrfc_sfc_nsg_0020.GetValue("O_MESSAGE") + " M1:" + zrfc_sfc_nsg_0020.GetValue("O_MESSAGE1") + " M2" + zrfc_sfc_nsg_0020.GetValue("O_MESSAGE2"); rowH_MRBGT = (Row_H_MRB_GT)H_MRB_GT.NewRow(); rowH_MRBGT.ID = H_MRB_GT.GetNewID(BU, SFCDB); rowH_MRBGT.WORKORDERNO = r_mrb_gt.WORKORDERNO; rowH_MRBGT.SAP_STATION_CODE = r_mrb_gt.SAP_STATION_CODE; rowH_MRBGT.FROM_STORAGE = r_mrb_gt.FROM_STORAGE; rowH_MRBGT.TO_STORAGE = r_mrb_gt.TO_STORAGE; rowH_MRBGT.TOTAL_QTY = r_mrb_gt.TOTAL_QTY; rowH_MRBGT.CONFIRMED_FLAG = r_mrb_gt.CONFIRMED_FLAG; rowH_MRBGT.ZCPP_FLAG = r_mrb_gt.ZCPP_FLAG; rowH_MRBGT.SAP_FLAG = r_mrb_gt.SAP_FLAG; rowH_MRBGT.SKUNO = r_mrb_gt.SKUNO; rowH_MRBGT.SAP_MESSAGE = logMessage; rowH_MRBGT.EDIT_EMP = "interface"; rowH_MRBGT.EDIT_TIME = InterfacePublicValues.GetDBDateTime(SFCDB, DB_TYPE_ENUM.Oracle); SFCDB.ExecSQL(rowH_MRBGT.GetInsertString(DB_TYPE_ENUM.Oracle)); //WriteLog.WriteIntoMESLog(SFCDB, BU, "MESInterface", "MESInterface.HWD.MrbBackFlush", "WOToMRBBackFlush" , r_mrb_gt.WORKORDERNO + ";" + ip + ";" + logMessage, "", "interface"); } catch (Exception ex) { WriteLog.WriteIntoMESLog(SFCDB, BU, "MESInterface", "MESInterface.HWD.MrbBackFlush", "WOToMRBBackFlush", r_mrb_gt.WORKORDERNO + ";" + ip + ";inert into h_mrb_gt fail," + ex.Message, "", "interface"); } SFCDB.CommitTrain(); } } }
public void ToBackFlushCheck() { if (!isRun) { sfcdb = new OleExec(DBName, false); if (InterfacePublicValues.IsMonthly(sfcdb, MESDataObject.DB_TYPE_ENUM.Oracle)) { //月結不給拋賬 throw new Exception("This time is monthly,can't BackFlush"); } if (_SAPWaitForBackFlushWo != null && _SAPWaitForBackFlushWo.Rows.Count > 0) { T_R_BACKFLUSH_CHECK TR_BACKFLUSH_CHECK = new T_R_BACKFLUSH_CHECK(sfcdb, MESDataObject.DB_TYPE_ENUM.Oracle); DataSet BackFlushCheckTable = TR_BACKFLUSH_CHECK.GetTableConstruct(sfcdb); WOBase WO; T_R_BACKFLUSH_HISTORY TR_BACKFLUSH_HISTORY = new T_R_BACKFLUSH_HISTORY(sfcdb, MESDataObject.DB_TYPE_ENUM.Oracle); T_R_MRB TR_MRB = new T_R_MRB(sfcdb, MESDataObject.DB_TYPE_ENUM.Oracle); foreach (DataRow dr in _SAPWaitForBackFlushWo.Rows) { //if (dr["AUFNR"].ToString() != "002510037542") //if (dr["AUFNR"].ToString() != "002331000014") //{ // continue; //} DataRow bkItem = BackFlushCheckTable.Tables[0].NewRow(); bkItem["WORKORDERNO"] = dr["AUFNR"]; bkItem["SKUNO"] = dr["MATNR"]; bkItem["SAP_STATION"] = dr["VORNR"]; bkItem["WORKORDER_QTY"] = Convert.ToInt64(Math.Ceiling(Convert.ToDecimal(dr["MGVRG"].ToString()))); bkItem["BACKFLUSH_QTY"] = Convert.ToInt64(Math.Ceiling(Convert.ToDecimal(dr["LMNGA"].ToString()))); try { WO = new WOBase(dr["AUFNR"].ToString(), sfcdb); string SFCStation = WO.SAPMapping.GetSFCStation(bkItem["SAP_STATION"].ToString()); if (dr["AUFNR"].ToString().IndexOf("00257") == 0) { SFCStation = WO.Route.GetLastStation(); } bkItem["SFC_STATION"] = SFCStation; string LastSapStation = WO.SAPMapping.GetLastSAPStationCode(); if (dr["VORNR"].ToString() != LastSapStation) { if (dr["AUFNR"].ToString().IndexOf("00257") == 0) { //處理HWD重工工單 bkItem["SFC_QTY"] = WO.GetStationPassCount(SFCStation, false, sfcdb); } else { bkItem["SFC_QTY"] = WO.GetStationPassCount(SFCStation, true, sfcdb); } } else { bkItem["SFC_QTY"] = WO.GetStationPassCount(SFCStation, false, sfcdb); } //計算歷史拋帳數據 DataSet tmpData = TR_BACKFLUSH_HISTORY.GetBackFlushData(WO.WORKORDERNO, bkItem["SAP_STATION"].ToString(), sfcdb); bkItem["LAST_SFC_QTY"] = tmpData.Tables[0].Rows[0]["C"]; //計算MRB的數量 tmpData = TR_MRB.GetSNCountByWO(WO.WORKORDERNO, sfcdb); bkItem["MRB_QTY"] = tmpData.Tables[0].Rows[0]["C"]; int SFC_QTY = Int32.Parse(bkItem["SFC_QTY"].ToString()); int MRB_QTY = Int32.Parse(bkItem["MRB_QTY"].ToString()); float SAP_QTY = float.Parse(bkItem["BACKFLUSH_QTY"].ToString()); int LAST_SFC_QTY = Int32.Parse(bkItem["LAST_SFC_QTY"].ToString()); int DIFF_QTY = SFC_QTY - LAST_SFC_QTY; bkItem["DIFF_QTY"] = DIFF_QTY; bkItem["DIFF_QTY1"] = DIFF_QTY; bkItem["DIFF_QTY2"] = SFC_QTY + MRB_QTY - SAP_QTY; //處理異常數據 if (Int32.Parse(bkItem["DIFF_QTY"].ToString()) < 0) { WriteLog.WriteIntoMESLog(sfcdb, _BU, "Interface", "MESInterface.HWD.BackFlush.BackFlushHelp", "ToBackFlushCheck", dr["AUFNR"].ToString() + "," + dr["VORNR"].ToString() + ",DATA Err DIFF_QTY < 0", "", "System"); bkItem["DIFF_QTY"] = 0; } if (Int32.Parse(bkItem["DIFF_QTY"].ToString()) + float.Parse(bkItem["BACKFLUSH_QTY"].ToString()) > float.Parse(bkItem["WORKORDER_QTY"].ToString())) { bkItem["DIFF_QTY"] = 0; WriteLog.WriteIntoMESLog(sfcdb, _BU, "Interface", "MESInterface.HWD.BackFlush.BackFlushHelp", "ToBackFlushCheck", dr["AUFNR"].ToString() + "," + dr["VORNR"].ToString() + ",DATA Err PassQTY > WORKORDER_QTY", "", "System"); } BackFlushCheckTable.Tables[0].Rows.Add(bkItem); } catch (Exception ee) { WriteLog.WriteIntoMESLog(sfcdb, _BU, "Interface", "MESInterface.HWD.BackFlush.BackFlushHelp", "ToBackFlushCheck", dr["AUFNR"].ToString() + ":" + ee.Message, "", "System"); continue; } } bkList = R_BACKFLUSH_CHECK.DataAdapert(BackFlushCheckTable, true); if (addDataGridDelegate != null) { addDataGridDelegate("dgBACKFLUSH", BackFlushCheckTable.Tables[0]); } if (setCtrlEnableDelegate != null) { setCtrlEnableDelegate("btnCallRFC", true); } } } }
public void CallRfcBackFlush() { if (!isRun) { sfcdb = new OleExec(DBName, false); //判斷是否有其他執行 TR_SYNC_LOCK = new T_R_SYNC_LOCK(sfcdb, MESDataObject.DB_TYPE_ENUM.Oracle); string lockIP = ""; string sapMessage = ""; bool isLock = TR_SYNC_LOCK.IsLock("BACKFLUSH", sfcdb, MESDataObject.DB_TYPE_ENUM.Oracle, out lockIP); if (isLock) { throw new Exception("BackFlush Is Running,Please Wait!"); } else { TR_SYNC_LOCK.SYNC_Lock(BU, IP, "HWD", "BACKFLUSH", "Interface", sfcdb, MESDataObject.DB_TYPE_ENUM.Oracle); isRun = true; } if (InterfacePublicValues.IsMonthly(sfcdb, MESDataObject.DB_TYPE_ENUM.Oracle)) { //月結不給拋賬 throw new Exception("This time is monthly,can't BackFlush"); } if (setCtrlEnableDelegate != null) { setCtrlEnableDelegate("btnCallRFC", false); setCtrlEnableDelegate("btnStart", false); } try { ZRFC_SFC_NSG_0009 RFC = new ZRFC_SFC_NSG_0009(_BU); ZRFC_SFC_NSG_0022 RW_RFC = new ZRFC_SFC_NSG_0022(_BU); string[] ReWorks = REWORK.Split(new char[] { ',' }); int curCount = 0; T_R_BACKFLUSH_HISTORY TR_BACKFLUSH_HISTORY = new T_R_BACKFLUSH_HISTORY(sfcdb, MESDataObject.DB_TYPE_ENUM.Oracle); string ConfigPostDate = InterfacePublicValues.GetPostDate(sfcdb); foreach (R_BACKFLUSH_CHECK item in bkList) { try { curCount++; if (processRateDelegate != null) { processRateDelegate("BackFlushProgressBar", "labBackFlushProgress", bkList.Count, curCount); } if (item.DIFF_QTY > 0) { bool isRework = false; for (int i = 0; i < ReWorks.Length; i++) { if (item.WORKORDERNO.IndexOf(ReWorks[i]) == 0) { isRework = true; break; } } if (isRework) { RW_RFC.SetValue(item.WORKORDERNO, ConfigPostDate, item.DIFF_QTY.ToString(), item.SAP_STATION); RW_RFC.CallRFC(); MESDataObject.Module.R_BACKFLUSH_HISTORY his = new MESDataObject.Module.R_BACKFLUSH_HISTORY(); his.WORKORDERNO = item.WORKORDERNO; his.WORKORDER_QTY = (double?)item.WORKORDER_QTY; his.SFC_QTY = (double?)item.SFC_QTY; his.SFC_STATION = item.SFC_STATION; his.SKUNO = item.SKUNO; his.SAP_STATION = item.SAP_STATION; his.LAST_SFC_QTY = (double?)item.LAST_SFC_QTY; his.DIFF_QTY = (double?)item.DIFF_QTY; his.DIFF_QTY1 = (double?)item.DIFF_QTY1; his.BACK_DATE = GetDBTime(sfcdb); his.TIMES = 0; his.DIFF_QTY2 = (double?)item.DIFF_QTY2; his.MRB_QTY = (double?)item.MRB_QTY; string resu = RW_RFC.GetValue("O_FLAG"); if (resu == "0") { his.RESULT = "Y"; resu = RW_RFC.GetValue("O_FLAG1"); if (resu == "1") { WriteLog.WriteIntoMESLog(sfcdb, _BU, "Interface", "MESInterface.HWD.BackFlush.BackFlushHelp", "CallRfcBackFlush", his.WORKORDERNO + "," + his.SAP_STATION + ",521 fail:" + RW_RFC.GetValue("O_MESSAGE1"), "", "System"); } } else { his.RESULT = "N"; } TR_BACKFLUSH_HISTORY.Add(his, sfcdb); } else { RFC.SetValue(item.WORKORDERNO, item.SAP_STATION, item.DIFF_QTY.ToString(), ConfigPostDate); RFC.CallRFC(); MESDataObject.Module.R_BACKFLUSH_HISTORY his = new MESDataObject.Module.R_BACKFLUSH_HISTORY(); his.WORKORDERNO = item.WORKORDERNO; his.WORKORDER_QTY = (double?)item.WORKORDER_QTY; his.SFC_QTY = (double?)item.SFC_QTY; his.SFC_STATION = item.SFC_STATION; his.SKUNO = item.SKUNO; his.SAP_STATION = item.SAP_STATION; his.LAST_SFC_QTY = (double?)item.LAST_SFC_QTY; his.DIFF_QTY = (double?)item.DIFF_QTY; his.DIFF_QTY1 = (double?)item.DIFF_QTY1; his.BACK_DATE = GetDBTime(sfcdb); his.TIMES = 0; his.DIFF_QTY2 = (double?)item.DIFF_QTY2; his.MRB_QTY = (double?)item.MRB_QTY; string resu = RFC.GetValue("O_FLAG"); if (resu == "0") { his.RESULT = "Y"; } else { his.RESULT = "N"; sapMessage = RFC.GetValue("O_MESSAGE"); WriteLog.WriteIntoMESLog(sfcdb, _BU, "Interface", "MESInterface.HWD.BackFlush.BackFlushHelp", "CallRfcBackFlush", item.WORKORDERNO + "," + item.SAP_STATION + ":" + sapMessage, "", "System"); } TR_BACKFLUSH_HISTORY.Add(his, sfcdb); } } } catch (Exception ex) { WriteLog.WriteIntoMESLog(sfcdb, _BU, "Interface", "MESInterface.HWD.BackFlush.BackFlushHelp", "CallRfcBackFlush", item.WORKORDERNO + "," + item.SAP_STATION + ":" + ex.Message, "", "System"); continue; } } isRun = false; TR_SYNC_LOCK.SYNC_UnLock(BU, IP, "HWD", "BACKFLUSH", "Interface", sfcdb, MESDataObject.DB_TYPE_ENUM.Oracle); if (setCtrlEnableDelegate != null) { setCtrlEnableDelegate("btnStart", true); } } catch (Exception ex) { WriteLog.WriteIntoMESLog(sfcdb, _BU, "Interface", "MESInterface.HWD.BackFlush.BackFlushHelp", "CallRfcBackFlush", ex.Message, "", "System"); isRun = false; TR_SYNC_LOCK.SYNC_UnLock(BU, IP, "HWD", "BACKFLUSH", "Interface", sfcdb, MESDataObject.DB_TYPE_ENUM.Oracle); if (setCtrlEnableDelegate != null) { setCtrlEnableDelegate("btnStart", true); } } } }
public void CallRFCBackFlush() { IsRuning = synLock.IsLock("HWD_StockInBackFlush", SFCDB, DB_TYPE_ENUM.Oracle, out lockIp); if (IsRuning) { throw new Exception("HWD StockInBackFlush interface is running on " + lockIp + ",Please try again later"); } if (InterfacePublicValues.IsMonthly(SFCDB, DB_TYPE_ENUM.Oracle)) { //月結不給拋賬 throw new Exception("This time is monthly,can't BackFlush"); } synLock.SYNC_Lock(BU, ip, "HWD_StockInBackFlush", "HWD_StockInBackFlush", "interface", SFCDB, DB_TYPE_ENUM.Oracle); SFCDB.CommitTrain(); backFlushList = t_r_sap_temp.GetStockInBackFlushList(SFCDB); dateTimeNow = DateTime.Parse(InterfacePublicValues.GetPostDate(SFCDB)); if (backFlushList != null) { foreach (R_SAP_TEMP temp in backFlushList) { logMsg = ""; sapMsg = ""; r_sap_temp = null; zcmm_nsbg_0051.SetValue(Plant, temp.SKUNO, temp.FROM_STORAGE, temp.TO_STORAGE, temp.QTY.ToString(), temp.TYPE, dateTimeNow, "311"); zcmm_nsbg_0051.CallRFC(); r_sap_temp = (Row_R_SAP_TEMP)t_r_sap_temp.GetObjByID(temp.ID, SFCDB); if (zcmm_nsbg_0051.GetValue("O_FLAG") == "1") { //失敗 sapMsg = " T:" + dateTimeNow.ToString("yyyy/MM/dd HH:mm:ss") + "M1:" + zcmm_nsbg_0051.GetValue("O_MESSAGE"); try { sapMsg += " M2:" + zcmm_nsbg_0051.GetTableValue("OUT_TAB").Rows[0]["MESSAGE"].ToString(); } catch { sapMsg += " M2:null"; } r_sap_temp.FAIL_COUNT = r_sap_temp.FAIL_COUNT + 1; if (r_sap_temp.FAIL_COUNT >= 100) { r_sap_temp.SAP_FLAG = "3"; } BackFlushOK = false; } else { //成功 sapMsg = "OK:" + zcmm_nsbg_0051.GetValue("O_MBLNR") + " T:" + dateTimeNow.ToString("yyyy/MM/dd HH:mm:ss"); r_sap_temp.EDIT_TIME = dateTimeNow; r_sap_temp.SAP_FLAG = "2"; BackFlushOK = true; } SFCDB.ExecSQL(r_sap_temp.GetUpdateString(DB_TYPE_ENUM.Oracle)); logMsg = temp.SKUNO + ":" + temp.QTY.ToString() + ":" + sapMsg; // write mes log //WriteLog.WriteIntoMESLog(SFCDB, BU, "MESInterface", "MESInterface.HWD.StockInBackFlush", "CallRFCB", ip + ";" + logMsg, "", "interface"); // write r_saplog try { r_saplog = (Row_R_SAPLOG)t_r_saplog.NewRow(); r_saplog.ID = t_r_saplog.GetNewID(BU, SFCDB); r_saplog.WORKTIME = temp.EDIT_TIME; r_saplog.SKUNO = temp.SKUNO; r_saplog.QTY = temp.QTY; r_saplog.ERRORTYPE = "STOCKIN"; r_saplog.ERRORMESSAGE = sapMsg; SFCDB.ExecSQL(r_saplog.GetInsertString(DB_TYPE_ENUM.Oracle)); StockInBackFlush_UI.OutPutMessage(temp.SKUNO + ":" + temp.QTY.ToString(), sapMsg, BackFlushOK); } catch (Exception ex) { logMsg = temp.SKUNO + ":" + temp.QTY + ";insert into r_saplog fail" + ex.Message; WriteLog.WriteIntoMESLog(SFCDB, BU, "MESInterface", "MESInterface.HWD.StockInBackFlush", "CallRFCB", ip + ";" + logMsg, "", "interface"); } SFCDB.CommitTrain(); } } synLock.SYNC_UnLock(BU, ip, "HWD_StockInBackFlush", "HWD_StockInBackFlush", "interface", SFCDB, DB_TYPE_ENUM.Oracle); SFCDB.CommitTrain(); }