コード例 #1
0
        /// <summary>
        /// </summary>
        /// <param name="wstep"/>
        /// <param name="context"/>
        /// <param name="handled"/>
        /// <param name="prevReturnValue"/>
        /// <returns/>
        public IEnumerable <AoEquipment> SELECT_DOWN_EQP0(WorkStep wstep, JobChangeContext context, ref bool handled, IEnumerable <AoEquipment> prevReturnValue)
        {
            MicronBEAssyWorkStep ws = wstep as MicronBEAssyWorkStep;
            DateTime             availableDownTime = ws.AvailableDownTime;
            DateTime             nowDt             = FindHelper.GetNowDT();

            if (nowDt < availableDownTime)
            {
                return(null);
            }
            else
            {
                var t = wstep.LoadedEqps.FirstOrDefault();

                if (t != null)
                {
                    Logger.MonitorInfo(string.Format("Down Eqp -> STEP : {0}, EQP_ID : {1}, NowDT : {2}", ws.Key.ToString(), t.Target.EqpID, DateUtility.DbToString(FindHelper.GetNowDT())));


                    return(new AoEquipment[] { t.Target });
                }
                else
                {
                    return(null);
                }
            }
        }
コード例 #2
0
        private DataTable CreateDataTable(Dictionary <Tuple <string, string>, ResultData> resultDatas)
        {
            DataTable dt = new DataTable("RESULT");

            DataColumn colProductID     = new DataColumn("PRODUCT_ID", typeof(string));
            DataColumn colProductName   = new DataColumn("PRODUCT_NAME", typeof(string));
            DataColumn colDemandQty     = new DataColumn("DEMAND(P)", typeof(decimal));
            DataColumn colActQty        = new DataColumn("ACT(P)", typeof(decimal));
            DataColumn colRemaninQty    = new DataColumn("REMAIN(P)", typeof(decimal));
            DataColumn colProcess       = new DataColumn("B/N_STEPS", typeof(string));
            DataColumn colSequence      = new DataColumn("COMP_SEQ", typeof(int));
            DataColumn colDieAttach     = new DataColumn("DIE_ATTACH", typeof(string));
            DataColumn colInProductName = new DataColumn("ASSY_IN_PROD_NAME", typeof(string));
            DataColumn colCompQty       = new DataColumn("COMP_QTY", typeof(int));
            DataColumn colEPEWipQty     = new DataColumn("EPE(P)", typeof(decimal));
            DataColumn colEPEInQty      = new DataColumn("NEED_EPE(P)", typeof(decimal));
            DataColumn colCR2WipQty     = new DataColumn("CR2(C)", typeof(decimal));
            DataColumn colCR1WipQty     = new DataColumn("CR1(C)", typeof(decimal));
            DataColumn colStockWipQty   = new DataColumn("STOCK(C)", typeof(decimal));
            DataColumn colInQty         = new DataColumn("NEED_STOCK(C)", typeof(decimal));
            DataColumn colCutOff        = new DataColumn("RELEASE_CUT_OFF", typeof(string));

            DataColumn colFabProductNames = new DataColumn("FAB_PRODUCT_NAMES", typeof(string));
            DataColumn colNoKitQty        = new DataColumn("NO_KIT_INV(C)", typeof(decimal));
            DataColumn colNeedWaferQty    = new DataColumn("NEED_WAFER(C)", typeof(decimal));

            dt.Columns.Add(colProductID);
            dt.Columns.Add(colProductName);
            dt.Columns.Add(colDemandQty);
            dt.Columns.Add(colActQty);
            dt.Columns.Add(colRemaninQty);
            dt.Columns.Add(colProcess);

            dt.Columns.Add(colSequence);
            dt.Columns.Add(colDieAttach);
            dt.Columns.Add(colInProductName);
            dt.Columns.Add(colCompQty);
            dt.Columns.Add(colEPEWipQty);
            dt.Columns.Add(colEPEInQty);
            dt.Columns.Add(colCR2WipQty);
            dt.Columns.Add(colCR1WipQty);
            dt.Columns.Add(colStockWipQty);
            dt.Columns.Add(colInQty);
            dt.Columns.Add(colCutOff);

            dt.Columns.Add(colFabProductNames);
            dt.Columns.Add(colNoKitQty);
            dt.Columns.Add(colNeedWaferQty);

            foreach (ResultData result in resultDatas.Values)
            {
#if DEBUG
                if (result.ProductID == "144868")
                {
                    Console.WriteLine();
                }
#endif

                List <ResultDataAssyPart> assyResultList = new List <ResultDataAssyPart>(result.AssyInResultData.Values);
                assyResultList.Sort((x, y) => x.Product.CompSeq.CompareTo(y.Product.CompSeq));

                if (assyResultList.Count > 0)
                {
                    foreach (ResultDataAssyPart rdap in assyResultList)
                    {
                        DataRow row = dt.NewRow();

                        row[colProductID]   = result.ProductID;
                        row[colProductName] = result.ProductName;
                        row[colDemandQty]   = result.DemandQty;
                        row[colActQty]      = result.ActQty;
                        row[colRemaninQty]  = result.RemainQty;
                        row[colProcess]     = result.Process;

                        row[colSequence]  = rdap.Product.CompSeq;
                        row[colDieAttach] = rdap.DAStep != null ? rdap.DAStep.StepID : string.Empty;

                        if (rdap.Product.ProductDetail != null)
                        {
                            row[colInProductName] = rdap.Product.ProductDetail.ProductName;
                        }

                        row[colCompQty]   = rdap.Product.CompQty;
                        row[colEPEWipQty] = rdap.EPEWipQty;

                        row[colEPEInQty]    = rdap.EPEInQty;
                        row[colCR2WipQty]   = rdap.CR2WipQty;
                        row[colCR1WipQty]   = rdap.CR1WipQty;
                        row[colStockWipQty] = rdap.StockWipQty;
                        row[colInQty]       = rdap.InQty;
                        if (rdap.CutOffDate != DateTime.MinValue)
                        {
                            row[colCutOff] = DateUtility.DbToString(rdap.CutOffDate);
                        }

                        row[colFabProductNames] = rdap.WaferProductNames;
                        row[colNoKitQty]        = rdap.NoKitQty;
                        row[colNeedWaferQty]    = rdap.NeedWaferQty;

                        dt.Rows.Add(row);
                    }
                }
                else
                {
                    DataRow row = dt.NewRow();

                    row[colProductID]   = result.ProductID;
                    row[colProductName] = result.ProductName;
                    row[colDemandQty]   = result.DemandQty;
                    row[colActQty]      = result.ActQty;
                    row[colRemaninQty]  = result.RemainQty;
                    row[colProcess]     = result.Process;

                    dt.Rows.Add(row);
                }
            }

            return(dt);
        }
コード例 #3
0
        /// <summary>
        /// </summary>
        /// <param name="upWorkStep"/>
        /// <param name="assignEqps"/>
        /// <param name="context"/>
        /// <param name="handled"/>
        /// <param name="prevReturnValue"/>
        /// <returns/>
        public List <AssignEqp> DO_FILTER_ASSIGN_EQP0(WorkStep upWorkStep, List <AssignEqp> assignEqps, JobChangeContext context, ref bool handled, List <AssignEqp> prevReturnValue)
        {
            try
            {
                List <AssignEqp> list = new List <AssignEqp>();
                foreach (AssignEqp eqp in assignEqps)
                {
                    if (eqp.WorkStep == null || eqp.WorkStep.OperationType == OperationType.Down)
                    {
                        list.Add(eqp);
                        continue;
                    }

                    int  properEqpCount = SimulationHelper.CalculateProperEqpCount(eqp);
                    bool canFilter      = false;
                    canFilter = SimulationHelper.CanFilterAssignEqp(eqp);

                    if (properEqpCount < eqp.WorkStep.LoadedEqpCount && canFilter)
                    {
#if DEBUG
                        DateTime             nowDt = FindHelper.GetNowDT();
                        MicronBEAssyWorkStep ws    = eqp.WorkStep as MicronBEAssyWorkStep;
                        if (eqp.WorkStep.Key.ToString() == "S0250")
                        {
                            Console.WriteLine();
                        }
                        Logger.MonitorInfo(string.Format("Filtered -> STEP : {0}, EQP_ID : {1}, NowDT : {2}, Available Down : {3}", eqp.WorkStep.Key.ToString(), eqp.Target.EqpID, DateUtility.DbToString(FindHelper.GetNowDT()), DateUtility.DbToString(ws.AvailableDownTime)));
#endif
                        list.Add(eqp);
                    }
                }

                return(list);
            }
            catch (Exception e)
            {
                WriteHelper.WriteErrorHistory(ErrorLevel.FATAL, string.Format("ErrorMessage : {0}   MethodName : {1}", e.Message, System.Reflection.MethodInfo.GetCurrentMethod().Name));
                return(default(List <AssignEqp>));
            }
        }
コード例 #4
0
ファイル: JobChangeEvents.cs プロジェクト: parkheenam/test
        /// <summary>
        /// </summary>
        /// <param name="step"/>
        /// <param name="assignedEqps"/>
        /// <param name="context"/>
        /// <param name="handled"/>
        public void ON_AFTER_ASSIGN_EQP0(WorkStep step, List <AssignEqp> assignedEqps, JobChangeContext context, ref bool handled)
        {
            try
            {
                Logger.MonitorInfo(string.Format("Assign Eqp -> STEP : {0}, EQP_ID : {1}, NowDT : {2}", step.Key.ToString(), assignedEqps.ElementAt(0).Target.EqpID, DateUtility.DbToString(FindHelper.GetNowDT())));

                MicronBEAssyWorkStep ws = step as MicronBEAssyWorkStep;
                double setupTime        = 0d;
                ws.AvailableDownTime = SimulationHelper.CalculateAvailableDownTime(step, assignedEqps.ElementAt(0), ref setupTime);

                Logger.MonitorInfo(string.Format("Available Down Time : {0}, Setup Time : {1}", ws.AvailableDownTime, setupTime));
            }
            catch (Exception e)
            {
                WriteHelper.WriteErrorHistory(ErrorLevel.FATAL, string.Format("ErrorMessage : {0}   MethodName : {1}", e.Message, System.Reflection.MethodInfo.GetCurrentMethod().Name));
            }

            //foreach (AssignEqp eqp in assignedEqps)
            //{
            //    eqp.Target.WakeUp();
            //}
        }