Example #1
0
        /// <summary>
        /// 前端返回一個 JSON 對象,反序列化成 R_C_ROUTE_DETAIL 對象插入/更新/刪除 流程具體信息表

        /// </summary>
        /// <param name="requestValue"></param>
        /// <param name="Data"></param>
        /// <param name="StationReturn"></param>
        public void UpdateRouteDetail(Newtonsoft.Json.Linq.JObject requestValue, Newtonsoft.Json.Linq.JObject Data, MESStationReturn StationReturn)
        {
            T_C_ROUTE_DETAIL Table       = null;
            R_C_ROUTE_DETAIL RouteDetail = null;
            OleExec          sfcdb       = null;
            int    Result    = 0;
            string Operation = string.Empty;

            try
            {
                sfcdb       = this.DBPools["SFCDB"].Borrow();
                Table       = new T_C_ROUTE_DETAIL(sfcdb, DBType);
                RouteDetail = (R_C_ROUTE_DETAIL)JsonConverter.Deserialize(Data["ROUTE_DETAIL_OBJECT"].ToString(), typeof(R_C_ROUTE_DETAIL));
                Operation   = Data["OPERATION"].ToString();
                Result      = Table.UpdateRouteDetail(RouteDetail, Operation, sfcdb);
                ConstructReturnValue(StationReturn, Result, string.Format("成功更新 {0} 行數據.", Result));
            }
            catch (Exception e)
            {
                ConstructReturnValue(StationReturn, e);
            }
            finally
            {
                this.DBPools["SFCDB"].Return(sfcdb);
            }
        }
Example #2
0
        /// <summary>
        /// 檢查panel對象中的SN的NextStation是否等於當前工站
        /// </summary>
        /// <param name="Station"></param>
        /// <param name="Input"></param>
        /// <param name="Paras"></param>
        public static void PanleNextStationChecker(MESPubLab.MESStation.MESStationBase Station, MESPubLab.MESStation.MESStationInput Input, List <R_Station_Action_Para> Paras)
        {
            if (Paras.Count != 1)
            {
                throw new MESReturnMessage(MESReturnMessage.GetMESReturnMessage("MES00000050"));
            }
            MESStationSession sessionPanle = Station.StationSession.Find(t => t.MESDataType == Paras[0].SESSION_TYPE && t.SessionKey == Paras[0].SESSION_KEY);

            if (sessionPanle == null || sessionPanle.Value == null)
            {
                throw new MESReturnMessage(MESReturnMessage.GetMESReturnMessage("MES00000052", new string[] { Paras[0].SESSION_TYPE }));
            }
            Panel panel = new Panel();

            Panel            panleObject      = (Panel)sessionPanle.Value;
            T_C_ROUTE_DETAIL t_c_route_detail = new T_C_ROUTE_DETAIL(Station.SFCDB, Station.DBType);

            List <R_SN> snList = panel.GetSnDetail(panleObject.PanelNo, Station.SFCDB, Station.DBType);

            foreach (R_SN sn in snList)
            {
                if (!t_c_route_detail.StationInRoute(sn.ROUTE_ID, Station.StationName, Station.SFCDB))
                {
                    throw new MESReturnMessage(MESReturnMessage.GetMESReturnMessage("MSGCODE20180621172210", new string[] { Station.StationName, sn.SN }));
                }
                if (!sn.NEXT_STATION.Equals(Station.StationName))
                {
                    throw new MESReturnMessage(MESReturnMessage.GetMESReturnMessage("MES00000136", new string[] { sn.NEXT_STATION }));
                }
            }
        }
Example #3
0
 public override void init()
 {
     try
     {
         //從Ini檔中獲取BU/Plant/DB/Cust/Count/ConvertWo/DownloadWO
         BU    = ConfigGet("BU");
         Plant = ConfigGet("PLANT");
         DB    = ConfigGet("DB");//與App.config中配置的匹配
         CUST  = ConfigGet("CUST");
         COUNT = ConfigGet("COUNT");
         //可以依工單前綴來確定哪種類型的工單需要自動轉,哪種需手動轉
         arrayConvertWO = ConfigGet("CONVERTWO").Split(',');
         _downloadWO    = ConfigGet("DOWNLOADWO");
         List <System.Net.IPAddress> temp = HWDNNSFCBase.HostInfo.IP.Where(ipv4 => ipv4.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork).ToList();
         ip = temp[0].ToString();
         //創建DownloadWO_UI,并附值給輸入對象Output.UI
         Output.UI = new DownLoadWO_UI(this);
         //依據Ini檔配置的DB從ConnectionManager中獲取數據庫連接
         SFCDB = new OleExec(DB, false);
         //程序運行狀態表
         synLock = new T_R_SYNC_LOCK(SFCDB, DB_TYPE_ENUM.Oracle);
         //工單欄位對照表
         C_TAB_COLUMN_MAP = new T_C_TAB_COLUMN_MAP(SFCDB, DB_TYPE_ENUM.Oracle);
         //從SAP Download下來后分別存儲在以下三張表
         R_WO_HEADER = new T_R_WO_HEADER(SFCDB, DB_TYPE_ENUM.Oracle);
         R_WO_ITEM   = new T_R_WO_ITEM(SFCDB, DB_TYPE_ENUM.Oracle);
         R_WO_TEXT   = new T_R_WO_TEXT(SFCDB, DB_TYPE_ENUM.Oracle);
         //獲取料號/Route
         C_SKU       = new T_C_SKU(SFCDB, DB_TYPE_ENUM.Oracle);
         RouteDetail = new T_C_ROUTE_DETAIL(SFCDB, DB_TYPE_ENUM.Oracle);
         C_ROUTE     = new T_C_ROUTE(SFCDB, DB_TYPE_ENUM.Oracle);
         T_Series    = new T_C_SERIES(SFCDB, DB_TYPE_ENUM.Oracle);
         //工單類型及前綴信息
         WOType      = new T_R_WO_TYPE(SFCDB, DB_TYPE_ENUM.Oracle);
         Keypart     = new T_C_KEYPART(SFCDB, DB_TYPE_ENUM.Oracle);
         R_WO_BASE   = new T_R_WO_BASE(SFCDB, DB_TYPE_ENUM.Oracle);
         t_c_kp_list = new T_C_KP_LIST(SFCDB, DB_TYPE_ENUM.Oracle);
         //創建RFC類:建立SAP連接,建立RFC輸入輸出參數
         ZRFC_SFC_NSG_0001B = new ZRFC_SFC_NSG_0001B(BU);
     }
     catch (Exception e)
     {
         throw new Exception("Init DownLoadWO Fail" + e.Message);
     }
     //取得RFC的輸出參數Table對象,并附值給Output.Tables
     Output.Tables.Add(ZRFC_SFC_NSG_0001B.GetTableValue("ITAB"));
     Output.Tables.Add(ZRFC_SFC_NSG_0001B.GetTableValue("WO_HEADER"));
     Output.Tables.Add(ZRFC_SFC_NSG_0001B.GetTableValue("WO_ITEM"));
     Output.Tables.Add(ZRFC_SFC_NSG_0001B.GetTableValue("WO_TEXT"));
 }
Example #4
0
        public void InitStation(OleExec db)
        {
            List <string>    station = new List <string>();
            DataTable        dt      = new DataTable();
            T_C_ROUTE_DETAIL S       = new T_C_ROUTE_DETAIL(db, DB_TYPE_ENUM.Oracle);

            dt = S.GetALLStation(db);
            station.Add("ALL");
            foreach (DataRow dr in dt.Rows)
            {
                station.Add(dr["station_name"].ToString());
            }
            Event.ValueForUse = station;
        }
Example #5
0
 public RouteBase(string RouteId, OleExec sfcdb)
 {
     try
     {
         T_C_ROUTE             TC_ROUTE        = new T_C_ROUTE(sfcdb, MESDataObject.DB_TYPE_ENUM.Oracle);
         T_C_ROUTE_DETAIL      TC_ROUTE_DETAIL = new T_C_ROUTE_DETAIL(sfcdb, MESDataObject.DB_TYPE_ENUM.Oracle);
         C_ROUTE               getRoute        = new C_ROUTE();
         List <C_ROUTE_DETAIL> getRouteDetail  = new List <C_ROUTE_DETAIL>();
         getRoute = TC_ROUTE.GetById(RouteId, sfcdb);
         if (getRoute != null)
         {
             this._ID            = getRoute.ID;
             this._ROUTE_NAME    = getRoute.ROUTE_NAME;
             this._DEFAULT_SKUNO = getRoute.DEFAULT_SKUNO;
             this._ROUTE_TYPE    = getRoute.ROUTE_TYPE;
             getRouteDetail      = TC_ROUTE_DETAIL.GetByRouteIdOrderBySEQASC(getRoute.ID, sfcdb);
             if (getRouteDetail != null && getRouteDetail.Count > 0)
             {
                 this._DETAIL = new List <RouteDetail>();
                 for (int i = 0; i < getRouteDetail.Count; i++)
                 {
                     RouteDetail newRouteDetail = new RouteDetail(getRouteDetail[i].ID, sfcdb, MESDataObject.DB_TYPE_ENUM.Oracle);
                     this._DETAIL.Add(newRouteDetail);
                 }
             }
             else
             {
                 throw new Exception(RouteId + " 工站不存在");
             }
         }
         else
         {
             throw new Exception(RouteId + " 不存在");
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Example #6
0
 public override void init()
 {
     try
     {
         BU             = ConfigGet("BU");
         Plant          = ConfigGet("PLANT");
         DB             = ConfigGet("DB");
         CUST           = ConfigGet("CUST");
         COUNT          = ConfigGet("COUNT");
         arrayConvertWO = ConfigGet("CONVERTWO").Split(',');
         _downloadWO    = ConfigGet("DOWNLOADWO");
         List <System.Net.IPAddress> temp = HWDNNSFCBase.HostInfo.IP.Where(ipv4 => ipv4.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork).ToList();
         ip                 = temp[0].ToString();
         Output.UI          = new DownLoadWO_UI(this);
         SFCDB              = new OleExec(DB, false);
         synLock            = new T_R_SYNC_LOCK(SFCDB, DB_TYPE_ENUM.Oracle);
         C_TAB_COLUMN_MAP   = new T_C_TAB_COLUMN_MAP(SFCDB, DB_TYPE_ENUM.Oracle);
         C_SKU              = new T_C_SKU(SFCDB, DB_TYPE_ENUM.Oracle);
         R_WO_HEADER        = new T_R_WO_HEADER(SFCDB, DB_TYPE_ENUM.Oracle);
         R_WO_ITEM          = new T_R_WO_ITEM(SFCDB, DB_TYPE_ENUM.Oracle);
         R_WO_TEXT          = new T_R_WO_TEXT(SFCDB, DB_TYPE_ENUM.Oracle);
         RouteDetail        = new T_C_ROUTE_DETAIL(SFCDB, DB_TYPE_ENUM.Oracle);
         WOType             = new T_R_WO_TYPE(SFCDB, DB_TYPE_ENUM.Oracle);
         Keypart            = new T_C_KEYPART(SFCDB, DB_TYPE_ENUM.Oracle);
         C_ROUTE            = new T_C_ROUTE(SFCDB, DB_TYPE_ENUM.Oracle);
         R_WO_BASE          = new T_R_WO_BASE(SFCDB, DB_TYPE_ENUM.Oracle);
         T_Series           = new T_C_SERIES(SFCDB, DB_TYPE_ENUM.Oracle);
         t_c_kp_list        = new T_C_KP_LIST(SFCDB, DB_TYPE_ENUM.Oracle);
         ZRFC_SFC_NSG_0001B = new ZRFC_SFC_NSG_0001B(BU);
     }
     catch (Exception e)
     {
         throw new Exception("Init DownLoadWO Fail" + e.Message);
     }
     Output.Tables.Add(ZRFC_SFC_NSG_0001B.GetTableValue("ITAB"));
     Output.Tables.Add(ZRFC_SFC_NSG_0001B.GetTableValue("WO_HEADER"));
     Output.Tables.Add(ZRFC_SFC_NSG_0001B.GetTableValue("WO_ITEM"));
     Output.Tables.Add(ZRFC_SFC_NSG_0001B.GetTableValue("WO_TEXT"));
 }
Example #7
0
        /// <summary>
        /// 根據流程 ID 返回流程具體信息
        /// </summary>
        /// <param name="requestValue"></param>
        /// <param name="Data"></param>
        /// <param name="StationReturn"></param>
        public void GetRouteDetailByRouteID(Newtonsoft.Json.Linq.JObject requestValue, Newtonsoft.Json.Linq.JObject Data, MESStationReturn StationReturn)
        {
            OleExec          sfcdb   = null;
            DataTable        dt      = new DataTable();
            string           RouteID = string.Empty;
            T_C_ROUTE_DETAIL table   = null;

            try
            {
                sfcdb   = this.DBPools["SFCDB"].Borrow();
                RouteID = Data["ROUTE_ID"].ToString();
                table   = new T_C_ROUTE_DETAIL(sfcdb, DBType);
                dt      = table.GetRouteDetailByID(RouteID, sfcdb);
                ConstructReturnValue(StationReturn, dt);
            }
            catch (Exception e)
            {
                ConstructReturnValue(StationReturn, e);
            }
            finally
            {
                this.DBPools["SFCDB"].Return(sfcdb);
            }
        }
Example #8
0
        /// <summary>
        /// 從Sn加載 stationName List
        /// </summary>
        /// <param name="Station"></param>
        /// <param name="Input"></param>
        /// <param name="Paras"></param>
        public static void GetStationBySnDataloader(MESStationBase Station, MESStationInput Input, List <R_Station_Action_Para> Paras)
        {
            if (Paras.Count != 1)
            {
                throw new MESReturnMessage(MESReturnMessage.GetMESReturnMessage("MES00000057"));
            }
            MESStationSession sessionSN = Station.StationSession.Find(t => t.MESDataType == Paras[0].SESSION_TYPE && t.SessionKey == Paras[0].SESSION_KEY);

            if (sessionSN == null || sessionSN.Value == null)
            {
                throw new MESReturnMessage(MESReturnMessage.GetMESReturnMessage("MES00000052", new string[] { Paras[0].SESSION_TYPE }));
            }
            MESStationSession sessionStation       = new MESStationSession();
            SN                    SNObj            = (SN)sessionSN.Value;
            List <string>         stationList      = new List <string>();
            T_C_ROUTE_DETAIL      RouteDetailTable = new T_C_ROUTE_DETAIL(Station.SFCDB, Station.DBType);
            List <C_ROUTE_DETAIL> RouteDetails     = RouteDetailTable.GetByRouteIdOrderBySEQASC(SNObj.RouteID, Station.SFCDB);
            MESStationInput       stationInput     = Station.Inputs.Find(t => t.DisplayName == "ReturnStation");

            if (RouteDetails.Count > 0)
            {
                stationInput.DataForUse.Clear();
                stationInput.DataForUse.Add("");
                foreach (C_ROUTE_DETAIL c in RouteDetails)
                {
                    stationInput.DataForUse.Add(c.STATION_NAME);
                }
            }
            else
            {
                throw new MESReturnMessage(MESReturnMessage.GetMESReturnMessage("MES00000194", new string[] { SNObj.WorkorderNo }));
            }


            Station.AddMessage("MES00000001", new string[] { }, StationMessageState.Message);
        }
Example #9
0
        public void SubmitWoInfo(JObject requestValue, JObject Data, MESStationReturn StationReturn)
        {
            //wo
            string wo = Data["wo"].ToString();

            if (string.IsNullOrEmpty(wo))
            {
                //StationReturn.Status = StationReturnStatusValue.Fail;
                //StationReturn.MessageCode = "MES00000006";
                //StationReturn.MessagePara = new List<object>() { "Skuno" };
                //StationReturn.Data = "";
                //return;
                throw new Exception(MESReturnMessage.GetMESReturnMessage("MES00000006", new string[] { "WO" }));
            }

            OleExec     sfcdb = DBPools["SFCDB"].Borrow();
            T_R_WO_BASE t_wo  = new T_R_WO_BASE(sfcdb, DB_TYPE_ENUM.Oracle);

            if (!t_wo.CheckDataExist(wo, sfcdb))
            {
                throw new Exception(MESReturnMessage.GetMESReturnMessage("MES00000008", new string[] { wo }));
            }

            R_WO_HEADER wo_header = new T_R_WO_HEADER(sfcdb, DB_TYPE_ENUM.Oracle).GetDetailByWo(sfcdb, wo);

            //sku info
            string skuno = Data["skuno"].ToString();//wo_header.MATNR

            if (string.IsNullOrEmpty(skuno))
            {
                throw new Exception(MESReturnMessage.GetMESReturnMessage("MES00000006", new string[] { "SKUNO" }));
            }
            string skuver = Data["sku_ver"].ToString();//wo_header.REVLV

            C_SKU c_sku = new T_C_SKU(sfcdb, DB_TYPE_ENUM.Oracle).GetSku(skuno, sfcdb, DB_TYPE_ENUM.Oracle).GetDataObject();

            if (c_sku == null)
            {
                throw new Exception(MESReturnMessage.GetMESReturnMessage("MES00000007", new string[] { skuno }));
            }


            //route exchange from name
            string route_name = Data["route_name"].ToString();

            if (string.IsNullOrEmpty(route_name))
            {
                throw new Exception(MESReturnMessage.GetMESReturnMessage("MES00000006", new string[] { "ROUTE" }));
            }
            C_ROUTE c_route = new T_C_ROUTE(sfcdb, DB_TYPE_ENUM.Oracle).GetByRouteName(route_name, sfcdb);

            if (c_route == null)
            {
                throw new Exception(MESReturnMessage.GetMESReturnMessage("MES00000007", new string[] { route_name }));
            }

            //station route check
            string station_name = Data["station"].ToString();

            if (string.IsNullOrEmpty(station_name))
            {
                throw new Exception(MESReturnMessage.GetMESReturnMessage("MES00000006", new string[] { "STATION" }));
            }
            List <C_ROUTE_DETAIL> c_route_detail = new T_C_ROUTE_DETAIL(sfcdb, DB_TYPE_ENUM.Oracle).GetByRouteIdOrderBySEQASC(c_route.ID, sfcdb);

            if (c_route_detail != null && c_route_detail.Count > 0)
            {
                C_ROUTE_DETAIL check = c_route_detail.Find(t => t.STATION_NAME == station_name);
                if (check == null)
                {
                    throw new Exception(MESReturnMessage.GetMESReturnMessage("MES00000007", new string[] { station_name }));
                }
            }
            else
            {
                throw new Exception(MESReturnMessage.GetMESReturnMessage("MES00000007", new string[] { route_name }));
            }

            //data record
            Row_R_WO_BASE row_wobase = (Row_R_WO_BASE)t_wo.NewRow();

            row_wobase.ID              = t_wo.GetNewID(this.BU, sfcdb);
            row_wobase.WORKORDERNO     = wo;
            row_wobase.PLANT           = Data["factory"].ToString();
            row_wobase.RELEASE_DATE    = DateTime.Now;
            row_wobase.DOWNLOAD_DATE   = Convert.ToDateTime(Data["date"].ToString());
            row_wobase.PRODUCTION_TYPE = "BTO";
            row_wobase.WO_TYPE         = Data["wo_type"].ToString();
            row_wobase.SKUNO           = skuno;
            row_wobase.SKU_VER         = skuver;
            row_wobase.SKU_NAME        = c_sku.SKU_NAME;
            //row_wobase.SKU_SERIES = null;
            //row_wobase.SKU_DESC = null;
            row_wobase.CUST_PN        = c_sku.CUST_PARTNO;
            row_wobase.ROUTE_ID       = c_route.ID;
            row_wobase.START_STATION  = station_name;
            row_wobase.KP_LIST_ID     = Data["kp_list_id"].ToString();
            row_wobase.CLOSED_FLAG    = "0";
            row_wobase.WORKORDER_QTY  = Convert.ToDouble(Data["qty"].ToString());
            row_wobase.STOCK_LOCATION = wo_header.LGORT;
            row_wobase.CUST_ORDER_NO  = wo_header.ABLAD;
            row_wobase.EDIT_EMP       = this.LoginUser.EMP_NO;
            row_wobase.EDIT_TIME      = DateTime.Now;

            string sql = row_wobase.GetInsertString(DB_TYPE_ENUM.Oracle);

            try
            {
                int res = sfcdb.ExecSqlNoReturn(sql, null);
                if (res == 0)
                {
                    throw new Exception(MESReturnMessage.GetMESReturnMessage("MES00000021", new string[] { wo }));
                }
                if (sfcdb != null)
                {
                    DBPools["SFCDB"].Return(sfcdb);
                }
            }
            catch (Exception ex)
            {
                if (sfcdb != null)
                {
                    DBPools["SFCDB"].Return(sfcdb);
                }
                throw ex;
            }
        }
Example #10
0
        private void getById(string id, OleExec sfcdb, MESDataObject.DB_TYPE_ENUM dbtype)
        {
            T_C_ROUTE_DETAIL            TC_ROUTE_DETAIL            = new T_C_ROUTE_DETAIL(sfcdb, dbtype);
            T_C_ROUTE_DETAIL_DIRECTLINK TC_ROUTE_DETAIL_DIRECTLINK = new T_C_ROUTE_DETAIL_DIRECTLINK(sfcdb, dbtype);
            T_C_ROUTE_DETAIL_RETURN     TC_ROUTE_DETAIL_RETURN     = new T_C_ROUTE_DETAIL_RETURN(sfcdb, dbtype);
            C_ROUTE_DETAIL getRouteDetail = new C_ROUTE_DETAIL();
            List <C_ROUTE_DETAIL_RETURN>     getDetailReturn     = new List <C_ROUTE_DETAIL_RETURN>();
            List <C_ROUTE_DETAIL_DIRECTLINK> getDetailDirectLink = new List <C_ROUTE_DETAIL_DIRECTLINK>();

            getRouteDetail = TC_ROUTE_DETAIL.GetById(id, sfcdb);
            if (getDetailReturn != null)
            {
                this._ID           = getRouteDetail.ID;
                this._SEQ_NO       = getRouteDetail.SEQ_NO;
                this._ROUTE_ID     = getRouteDetail.ROUTE_ID;
                this._STATION_NAME = getRouteDetail.STATION_NAME;
                this._STATION_TYPE = getRouteDetail.STATION_TYPE;
                this._RETURN_FLAG  = getRouteDetail.RETURN_FLAG;
                if (getRouteDetail.RETURN_FLAG == "Y")
                {
                    getDetailReturn = TC_ROUTE_DETAIL_RETURN.GetByRoute_DetailId(getRouteDetail.ID, sfcdb);
                    if (getDetailReturn != null && getDetailReturn.Count > 0)
                    {
                        List <C_ROUTE_DETAIL> newReturnList = new List <C_ROUTE_DETAIL>();
                        for (int j = 0; j < getDetailReturn.Count; j++)
                        {
                            newReturnList.Add(TC_ROUTE_DETAIL.GetById(getDetailReturn[j].RETURN_ROUTE_DETAIL_ID, sfcdb));
                        }
                        this._RETURNLIST = newReturnList;
                    }
                }
                else
                {
                    this._RETURNLIST = null;
                }
                getDetailDirectLink = TC_ROUTE_DETAIL_DIRECTLINK.GetByDetailId(getRouteDetail.ID, sfcdb);
                if (getDetailDirectLink != null && getDetailDirectLink.Count > 0)
                {
                    List <C_ROUTE_DETAIL> newDirectLinkList = new List <C_ROUTE_DETAIL>();
                    for (int n = 0; n < getDetailDirectLink.Count; n++)
                    {
                        newDirectLinkList.Add(TC_ROUTE_DETAIL.GetById(getDetailDirectLink[n].DIRECTLINK_ROUTE_DETAIL_ID, sfcdb));
                    }
                    this._DIRECTLINKLIST = newDirectLinkList;
                }
                else
                {
                    this._DIRECTLINKLIST = null;
                }
            }
            else
            {
                this._ID             = "";
                this._SEQ_NO         = null;
                this._ROUTE_ID       = "";
                this._STATION_NAME   = "";
                this._STATION_TYPE   = "";
                this._RETURN_FLAG    = "";
                this._DIRECTLINKLIST = null;
                this._RETURNLIST     = null;
                this._NEXTSTATION    = null;
            }
        }
Example #11
0
        private void getByIdOrRouteName(string parametName, string parametValue, OleExec sfcdb, MESDataObject.DB_TYPE_ENUM dbtype)
        {
            try
            {
                T_C_ROUTE             TC_ROUTE        = new T_C_ROUTE(sfcdb, dbtype);
                T_C_ROUTE_DETAIL      TC_ROUTE_DETAIL = new T_C_ROUTE_DETAIL(sfcdb, dbtype);
                C_ROUTE               getRoute        = new C_ROUTE();
                List <C_ROUTE_DETAIL> getRouteDetail  = new List <C_ROUTE_DETAIL>();
                // List<RouteDetail> RouteDetailList = new List<RouteDetail>();
                //T_C_ROUTE_DETAIL_DIRECTLINK TC_ROUTE_DETAIL_DIRECTLINK = new T_C_ROUTE_DETAIL_DIRECTLINK(sfcdb, dbtype);
                //T_C_ROUTE_DETAIL_RETURN TC_ROUTE_DETAIL_RETURN = new T_C_ROUTE_DETAIL_RETURN(sfcdb, dbtype);
                //List<C_ROUTE_DETAIL_RETURN> getDetailReturn = new List<C_ROUTE_DETAIL_RETURN>();
                //List<C_ROUTE_DETAIL_DIRECTLINK> getDetailDirectLink = new List<C_ROUTE_DETAIL_DIRECTLINK>();

                if (parametName.Trim() == "ID")
                {
                    getRoute = TC_ROUTE.GetById(parametValue.Trim(), sfcdb);
                }
                else if (parametName.Trim() == "ROUTENAME")
                {
                    getRoute = TC_ROUTE.GetByRouteName(parametValue.Trim(), sfcdb);
                }
                else
                {
                    throw new Exception(MESReturnMessage.GetMESReturnMessage("MES00000007", new string[] { "getByIdOrRouteName:" + parametName }));
                }
                if (getRoute != null)
                {
                    this._ID            = getRoute.ID;
                    this._ROUTE_NAME    = getRoute.ROUTE_NAME;
                    this._DEFAULT_SKUNO = getRoute.DEFAULT_SKUNO;
                    this._ROUTE_TYPE    = getRoute.ROUTE_TYPE;
                    getRouteDetail      = TC_ROUTE_DETAIL.GetByRouteIdOrderBySEQASC(getRoute.ID, sfcdb);
                    if (getRouteDetail != null && getRouteDetail.Count > 0)
                    {
                        this._DETAIL = new List <RouteDetail>();
                        for (int i = 0; i < getRouteDetail.Count; i++)
                        {
                            RouteDetail newRouteDetail = new RouteDetail(getRouteDetail[i].ID, sfcdb, dbtype);
                            #region 寫法一

                            /*
                             * RouteDetail newRouteDetail = new RouteDetail();
                             * newRouteDetail.ID = getRouteDetail[i].ID;
                             * newRouteDetail.SEQ_NO = getRouteDetail[i].SEQ_NO;
                             * newRouteDetail.ROUTE_ID = getRouteDetail[i].ROUTE_ID;
                             * newRouteDetail.STATION_NAME = getRouteDetail[i].STATION_NAME;
                             * newRouteDetail.STATION_TYPE = getRouteDetail[i].STATION_TYPE;
                             * newRouteDetail.RETURN_FLAG = getRouteDetail[i].RETURN_FLAG;
                             * if (getRouteDetail[i].RETURN_FLAG == "Y")
                             * {
                             *   getDetailReturn = TC_ROUTE_DETAIL_RETURN.GetByRoute_DetailId(newRouteDetail.ID, sfcdb);
                             *   if (getDetailReturn != null && getDetailReturn.Count > 0)
                             *   {
                             *       List<C_ROUTE_DETAIL> newReturnList = new List<C_ROUTE_DETAIL>();
                             *       for (int j = 0; j < getDetailReturn.Count; j++)
                             *       {
                             *           newReturnList.Add(TC_ROUTE_DETAIL.GetById(getDetailReturn[j].RETURN_ROUTE_DETAIL_ID, sfcdb));
                             *       }
                             *       newRouteDetail.RETURNLIST = newReturnList;
                             *   }
                             * }
                             * else
                             * {
                             *   newRouteDetail.RETURNLIST = null;
                             * }
                             * getDetailDirectLink = TC_ROUTE_DETAIL_DIRECTLINK.GetByDetailId(newRouteDetail.ID, sfcdb);
                             * if (getDetailDirectLink != null && getDetailDirectLink.Count > 0)
                             * {
                             *   List<C_ROUTE_DETAIL> newDirectLinkList = new List<C_ROUTE_DETAIL>();
                             *   for (int n = 0; n < getDetailDirectLink.Count; n++)
                             *   {
                             *       newDirectLinkList.Add(TC_ROUTE_DETAIL.GetById(getDetailDirectLink[n].DIRECTLINK_ROUTE_DETAIL_ID, sfcdb));
                             *   }
                             *   newRouteDetail.DIRECTLINKLIST = newDirectLinkList;
                             * }
                             * else
                             * {
                             *   newRouteDetail.DIRECTLINKLIST = null;
                             * }
                             * if (this.DETAIL == null)
                             * {
                             *   this.DETAIL = new List<RouteDetail>();
                             * }*/
                            #endregion 寫法一 end
                            this._DETAIL.Add(newRouteDetail);
                        }
                    }
                    else
                    {
                        this._DETAIL = null;
                    }
                }
                else
                {
                    this._ID            = "";
                    this._ROUTE_NAME    = "";
                    this._DEFAULT_SKUNO = "";
                    this._ROUTE_TYPE    = "";
                    this._DETAIL        = null;
                    throw new Exception(MESReturnMessage.GetMESReturnMessage("MES00000007", new string[] { "Route_" + parametName + ":" + parametValue }));
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Example #12
0
        public void GetLockStation(Newtonsoft.Json.Linq.JObject requestValue, Newtonsoft.Json.Linq.JToken Data, MESStationReturn StationReturn)
        {
            string        lockType    = Data["LockType"].ToString().Trim();
            string        lockData    = Data["LockData"].ToString().Trim();
            DataTable     routeTable  = new DataTable();
            List <string> stationList = new List <string>();
            OleExec       sfcdb       = null;

            try
            {
                sfcdb = this.DBPools["SFCDB"].Borrow();
                T_C_ROUTE_DETAIL t_c_route_detail = new T_C_ROUTE_DETAIL(sfcdb, DBTYPE);
                if (lockType == "LockByWo")
                {
                    T_R_WO_BASE t_r_wo_base = new T_R_WO_BASE(sfcdb, DBTYPE);
                    R_WO_BASE   r_wo_base   = t_r_wo_base.GetWo(lockData, sfcdb).GetDataObject();
                    stationList = t_c_route_detail.GetByRouteIdOrderBySEQASC(r_wo_base.ROUTE_ID, sfcdb).Select(route => route.STATION_NAME).ToList();
                }
                else if (lockType == "LockByLot")
                {
                    T_R_LOT_STATUS   t_r_lot_status = new T_R_LOT_STATUS(sfcdb, DBTYPE);
                    Row_R_LOT_STATUS rowLotStatus   = t_r_lot_status.GetByLotNo(lockData, sfcdb);
                    if (rowLotStatus.ID == null)
                    {
                        throw new Exception(MESReturnMessage.GetMESReturnMessage("MES00000161", new string[] { }));
                    }
                    R_LOT_STATUS       r_lot_status     = rowLotStatus.GetDataObject();
                    T_C_SKU            t_c_sku          = new T_C_SKU(sfcdb, DBTYPE);
                    C_SKU              c_sku            = t_c_sku.GetSku(r_lot_status.SKUNO, sfcdb, DBTYPE).GetDataObject();
                    T_R_SKU_ROUTE      t_r_sku_route    = new T_R_SKU_ROUTE(sfcdb, DBTYPE);
                    List <R_SKU_ROUTE> r_sku_route_list = t_r_sku_route.GetMappingBySkuId(c_sku.ID, sfcdb);
                    if (r_sku_route_list.Count > 0)
                    {
                        //t_c_route_detail.GetByRouteIdOrderBySEQASC(r_sku_route_list[0].ROUTE_ID, sfcdb);
                        stationList = t_c_route_detail.GetByRouteIdOrderBySEQASC(r_sku_route_list[0].ROUTE_ID, sfcdb).Select(route => route.STATION_NAME).ToList();
                    }
                    else
                    {
                        throw new Exception(MESReturnMessage.GetMESReturnMessage("MES00000179", new string[] {  }));
                    }
                }
                else
                {
                    routeTable = t_c_route_detail.GetALLStation(sfcdb);
                    foreach (DataRow row in routeTable.Rows)
                    {
                        stationList.Add(row["station_name"].ToString());
                    }
                    stationList.Sort();
                }

                this.DBPools["SFCDB"].Return(sfcdb);
                StationReturn.Data        = stationList;
                StationReturn.Status      = StationReturnStatusValue.Pass;
                StationReturn.MessageCode = "MES00000001";
            }
            catch (Exception exception)
            {
                StationReturn.Status      = StationReturnStatusValue.Fail;
                StationReturn.MessageCode = "MES00000037";
                StationReturn.MessagePara.Add(exception.Message);
                StationReturn.Data = exception.Message;
                if (sfcdb != null)
                {
                    this.DBPools["SFCDB"].Return(sfcdb);
                }
            }
        }