Exemplo n.º 1
0
        private void WOToMRBBackFlush()
        {
            MRBGTList = new List <R_MRB_GT>();
            MRBTable  = new DataTable();

            sql      = $@" select * from r_mrb_gt where sap_flag = '0' 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());
                }
            }

            postDate = Interface.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);

                    rowR_MRBGT = (Row_R_MRB_GT)R_MRB_GT.GetObjByID(r_mrb_gt.ID, SFCDB);
                    try
                    {
                        rowR_MRBGT.SAP_FLAG = "1";
                        zrfc_sfc_nsg_0020.CallRFC();
                    }
                    catch (Exception ex)
                    {
                        Interface.WriteIntoMESLog(SFCDB, BU, "MESInterface", "MESInterface.HWD.MrbBackFlush", "WOToMRBBackFlush", r_mrb_gt.WORKORDERNO + ";" + this.IP + ";" + ex.ToString(), "", this.LoginUser.EMP_NO);
                        rowR_MRBGT.SAP_FLAG = "2";
                    }
                    SFCDB.ExecSQL(rowR_MRBGT.GetUpdateString(DB_TYPE_ENUM.Oracle));

                    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         = this.LoginUser.EMP_NO;
                    rowH_MRBGT.EDIT_TIME        = Interface.GetDBDateTime(SFCDB, DB_TYPE_ENUM.Oracle);
                    SFCDB.ExecSQL(rowH_MRBGT.GetInsertString(DB_TYPE_ENUM.Oracle));
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// MRB SN入工單拋賬
        /// </summary>
        /// <param name="requestValue"></param>
        /// <param name="Data"></param>
        /// <param name="StationReturn"></param>
        public void DoWOToMRBBackFlush(JObject requestValue, JObject Data, MESStationReturn StationReturn)
        {
            try
            {
                SFCDB             = DBPools["SFCDB"].Borrow();
                R_MRB_GT          = new T_R_MRB_GT(SFCDB, DB_TYPE_ENUM.Oracle);
                H_MRB_GT          = new T_H_MRB_GT(SFCDB, DB_TYPE_ENUM.Oracle);
                synLock           = new T_R_SYNC_LOCK(SFCDB, DB_TYPE_ENUM.Oracle);
                zrfc_sfc_nsg_0020 = new ZRFC_SFC_NSG_0020();
                MRBGTList         = new List <R_MRB_GT>();
                MRBTable          = new DataTable();

                if (Interface.IsMonthly(SFCDB, DB_TYPE_ENUM.Oracle))
                {
                    //月結不給拋賬
                    throw new Exception("This time is monthly,can't BackFlush");
                }

                IsRuning = synLock.IsLock("HWD_WOToMRBBackFlush", SFCDB, DB_TYPE_ENUM.Oracle, out lockIp);
                if (IsRuning)
                {
                    throw new Exception("HWD WOToMRBBackFlush interface is running on " + lockIp + ",Please try again later");
                }
                synLock.SYNC_Lock(BU, this.IP, "HWD_WOToMRBBackFlush", "HWD_WOToMRBBackFlush", this.LoginUser.EMP_NO, SFCDB, DB_TYPE_ENUM.Oracle);

                sql      = $@" select * from r_mrb_gt where sap_flag = '0' 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());
                    }
                }

                postDate = Interface.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);

                        rowR_MRBGT = (Row_R_MRB_GT)R_MRB_GT.GetObjByID(r_mrb_gt.ID, SFCDB);
                        try
                        {
                            rowR_MRBGT.SAP_FLAG = "1";
                            zrfc_sfc_nsg_0020.CallRFC();
                        }
                        catch (Exception ex)
                        {
                            Interface.WriteIntoMESLog(SFCDB, BU, "MESStation", "MESStation.Interface.MrbBackFlush", "WOToMRBBackFlush", r_mrb_gt.WORKORDERNO + ";" + this.IP + ";" + ex.ToString(), "", this.LoginUser.EMP_NO);
                            rowR_MRBGT.SAP_FLAG = "2";
                        }
                        SFCDB.ExecSQL(rowR_MRBGT.GetUpdateString(DB_TYPE_ENUM.Oracle));

                        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         = this.LoginUser.EMP_NO;
                        rowH_MRBGT.EDIT_TIME        = Interface.GetDBDateTime(SFCDB, DB_TYPE_ENUM.Oracle);
                        SFCDB.ExecSQL(rowH_MRBGT.GetInsertString(DB_TYPE_ENUM.Oracle));
                    }
                }
                synLock.SYNC_UnLock(BU, this.IP, "HWD_WOToMRBBackFlush", "HWD_WOToMRBBackFlush", this.LoginUser.EMP_NO, SFCDB, DB_TYPE_ENUM.Oracle);
                if (SFCDB != null)
                {
                    DBPools["SFCDB"].Return(SFCDB);
                }
                StationReturn.Status = StationReturnStatusValue.Pass;
            }
            catch (Exception exception)
            {
                if (SFCDB != null)
                {
                    DBPools["SFCDB"].Return(SFCDB);
                }
                StationReturn.Status = StationReturnStatusValue.Fail;
                throw exception;
            }
        }
Exemplo n.º 3
0
        public void DoJobStockGT(JObject requestValue, JObject Data, MESStationReturn StationReturn)
        {
            OleExec SFCDB = DBPools["SFCDB"].Borrow();

            try
            {
                ZRFC_SFC_NSG_0020 zrfc_sfc_nsg_0020 = new ZRFC_SFC_NSG_0020(this.BU);
                string            lockIp            = "";
                string            postDate;
                string            o_flag     = "";
                string            o_flag1    = "";
                string            o_flag2    = "";
                string            o_message  = "";
                string            o_message1 = "";
                string            o_message2 = "";
                bool           IsRuning      = false;
                Row_R_STOCK_GT rowStockGT;
                DataTable      table = new DataTable();
                SFCDB.ThrowSqlExeception = true;
                T_R_SYNC_LOCK t_r_sync_lock = new T_R_SYNC_LOCK(SFCDB, DB_TYPE_ENUM.Oracle);
                T_R_STOCK_GT  t_r_stock_gt  = new T_R_STOCK_GT(SFCDB, DB_TYPE_ENUM.Oracle);
                T_R_STOCK     t_r_stock     = new T_R_STOCK(SFCDB, DB_TYPE_ENUM.Oracle);

                if (Interface.IsMonthly(SFCDB, DB_TYPE_ENUM.Oracle))
                {
                    //月結不給拋賬
                    //throw new Exception("This time is monthly,can't BackFlush");
                    throw new Exception(MESReturnMessage.GetMESReturnMessage("MSGCODE20180803152122", new string[] { }));
                }

                IsRuning = t_r_sync_lock.IsLock("JOBSTOCKGT", SFCDB, DB_TYPE_ENUM.Oracle, out lockIp);
                if (IsRuning)
                {
                    //throw new Exception("JOBSTOCKGT interface is running on " + lockIp + ",Please try again later");
                    throw new Exception(MESReturnMessage.GetMESReturnMessage("MSGCODE20180803152222", new string[] { lockIp }));
                }
                t_r_sync_lock.SYNC_Lock(BU, this.IP, "JOBSTOCKGT", "JOBSTOCKGT", this.LoginUser.EMP_NO, SFCDB, DB_TYPE_ENUM.Oracle);

                List <R_STOCK_GT> GTList = t_r_stock_gt.GetNotGTListByConfirmedFlag("0", SFCDB);

                postDate = Interface.GetPostDate(SFCDB);

                if (GTList != null && GTList.Count > 0)
                {
                    foreach (R_STOCK_GT r_stock_gt in GTList)
                    {
                        rowStockGT = null;
                        zrfc_sfc_nsg_0020.SetValue("I_AUFNR", r_stock_gt.WORKORDERNO);
                        zrfc_sfc_nsg_0020.SetValue("I_BUDAT", postDate);
                        zrfc_sfc_nsg_0020.SetValue("I_FLAG", r_stock_gt.CONFIRMED_FLAG);
                        zrfc_sfc_nsg_0020.SetValue("I_LGORT_TO", r_stock_gt.TO_STORAGE);
                        zrfc_sfc_nsg_0020.SetValue("I_LMNGA", r_stock_gt.TOTAL_QTY.ToString());
                        zrfc_sfc_nsg_0020.SetValue("I_STATION", r_stock_gt.SAP_STATION_CODE);
                        try
                        {
                            // zrfc_sfc_nsg_0020 中包含三個動作101,521,轉倉,flag,flag1,flag2 一次對應這三個動作
                            // flag,flag1,flag2 這幾個flag 0表示OK,1表示false
                            zrfc_sfc_nsg_0020.CallRFC();
                            o_flag     = zrfc_sfc_nsg_0020.GetValue("O_FLAG");
                            o_flag1    = zrfc_sfc_nsg_0020.GetValue("O_FLAG1");
                            o_flag2    = zrfc_sfc_nsg_0020.GetValue("O_FLAG2");
                            o_message  = zrfc_sfc_nsg_0020.GetValue("O_MESSAGE");
                            o_message1 = zrfc_sfc_nsg_0020.GetValue("O_MESSAGE1");
                            o_message2 = zrfc_sfc_nsg_0020.GetValue("O_MESSAGE2");

                            rowStockGT                = (Row_R_STOCK_GT)t_r_stock_gt.GetObjByID(r_stock_gt.ID, SFCDB);
                            rowStockGT.SAP_MESSAGE    = "101:" + o_message + ";521:" + o_message1 + ";311" + o_message2;
                            rowStockGT.BACKFLUSH_TIME = GetDBDateTime();
                            if (zrfc_sfc_nsg_0020.GetValue("O_FLAG") == "0")
                            {
                                rowStockGT.SAP_FLAG = "1";
                                t_r_stock.UpdateSapFlagByGTID(rowStockGT.ID, rowStockGT.SAP_FLAG, SFCDB);
                            }
                            else
                            {
                                rowStockGT.SAP_FLAG = "2";
                            }
                            SFCDB.ExecSQL(rowStockGT.GetUpdateString(DB_TYPE_ENUM.Oracle));
                        }
                        catch (Exception ex)
                        {
                            Interface.WriteIntoMESLog(SFCDB, BU, "MESStation", "MESStation.Interface.JobStockGT", "DoJobStockGT", r_stock_gt.WORKORDERNO + ";" + this.IP + ";" + ex.ToString(), "", this.LoginUser.EMP_NO);
                            r_stock_gt.SAP_FLAG = "2";
                        }
                    }
                }
                t_r_sync_lock.SYNC_UnLock(BU, this.IP, "JOBSTOCKGT", "JOBSTOCKGT", this.LoginUser.EMP_NO, SFCDB, DB_TYPE_ENUM.Oracle);
                if (SFCDB != null)
                {
                    DBPools["SFCDB"].Return(SFCDB);
                }
                StationReturn.Status = StationReturnStatusValue.Pass;
            }
            catch (Exception exception)
            {
                if (SFCDB != null)
                {
                    DBPools["SFCDB"].Return(SFCDB);
                }
                StationReturn.Status = StationReturnStatusValue.Fail;
                throw exception;
            }
        }