Ejemplo n.º 1
0
 private void DoMrbBackFlush()
 {
     if (InterfacePublicValues.IsMonthly(SFCDB, DB_TYPE_ENUM.Oracle))
     {
         //月結不給拋賬
         throw new Exception("This time is monthly,can't BackFlush");
     }
     else
     {
         WOToMRBBackFlush();
     }
 }
Ejemplo n.º 2
0
 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);
     }
 }
Ejemplo n.º 3
0
        /// <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");
                    }
                }
            }
        }
Ejemplo n.º 4
0
 /// <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");
             }
         }
     }
 }
Ejemplo n.º 5
0
        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();
                }
            }
        }
Ejemplo n.º 6
0
        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);
                    }
                }
            }
        }
Ejemplo n.º 7
0
        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);
                    }
                }
            }
        }
Ejemplo n.º 8
0
        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();
        }