/// <summary> /// </summary> /// <param name="aoFactory"/> /// <param name="handled"/> public void ON_START0(Mozart.SeePlan.Simulation.AoFactory aoFactory, ref bool handled) { if (InputMart.Instance.GlobalParameters.ApplyArrangeMType) { EqpArrangeMaster.WriteHistory_Init(); } }
/// <summary> /// </summary> /// <param name="aoFactory"/> /// <param name="handled"/> public void ON_DAY_CHANGED0(Mozart.SeePlan.Simulation.AoFactory aoFactory, ref bool handled) { DateTime now = aoFactory.NowDT; if (InputMart.Instance.GlobalParameters.ApplyArrangeMType) { EqpArrangeMaster.OnDayChanged(now); MaskMaster.OnDayChanged(now); } ReleasePlanMaster.OnDayChanged(now); }
/// <summary> /// </summary> /// <param name="da"/> /// <param name="hb"/> /// <param name="handled"/> /// <param name="prevReturnValue"/> /// <returns/> public IList <string> GET_LOADABLE_EQP_LIST0(Mozart.SeePlan.Simulation.DispatchingAgent da, Mozart.SeePlan.Simulation.IHandlingBatch hb, ref bool handled, IList <string> prevReturnValue) { var lot = hb.Sample as FabLot; if ((hb.CurrentStep as FabStep).StdStep.IsMandatory == false) { return(null); } List <string> eqps = EqpArrangeMaster.GetLoadableEqpList(lot); return(eqps); }
/// <summary> /// </summary> /// <param name="da"/> /// <param name="aeqp"/> /// <param name="wips"/> /// <param name="handled"/> public void ON_DISPATCHED0(Mozart.SeePlan.Simulation.DispatchingAgent da, Mozart.SeePlan.Simulation.AoEquipment aeqp, Mozart.SeePlan.Simulation.IHandlingBatch[] wips, ref bool handled) { var eqp = aeqp.ToFabAoEquipment(); foreach (var item in wips) { var lot = item.ToFabLot(); SetProductVersion(eqp, lot); EqpArrangeMaster.OnDispatched(eqp, lot); FilterMaster.StartEqpRecipeTime(lot, eqp); } }
private void SetProductVersion(FabAoEquipment eqp, FabLot lot) { //if (eqp.EqpID == "THPHL100" && lot.LotID == "LARRAYI0021") // Console.WriteLine("B"); var stdStep = lot.CurrentFabStep.StdStep; string fromProductVer = lot.CurrentProductVersion; if (EqpArrangeMaster.AvailableChangeProductVer(stdStep, fromProductVer) == false) { return; } var currEqpArrange = lot.CurrentEqpArrange; if (currEqpArrange == null) { return; } string toProductVer = currEqpArrange.UsedMaskProductVersion; if (string.IsNullOrEmpty(toProductVer)) { return; } if (fromProductVer == toProductVer) { return; } lot.OrigProductVersion = toProductVer; lot.CurrentProductVersion = lot.OrigProductVersion; lot.CurrentFabPlan.ProductVersion = toProductVer; OutCollector.WriteLotVerChangeInfo(lot, eqp.Target as FabEqp, fromProductVer, toProductVer); }
private bool InitInPortWip(AoFactory factory, IHandlingBatch hb) { FabLot lot = hb.ToFabLot(); //if (lot.LotID == "TH961377N00") // Console.WriteLine(); if (lot.IsInPortWip == false) { return(false); } var wipInitiator = ServiceLocator.Resolve <WipInitiator>(); string eqpID = wipInitiator.GetLoadingEquipment(hb); AoEquipment eqp; if (string.IsNullOrEmpty(eqpID) || factory.Equipments.TryGetValue(eqpID, out eqp) == false) { Logger.Warn("Can't Locate InportWip to Eqp {0}, check input data!", eqpID ?? "-"); #region Write ErrorHistory ErrHist.WriteIf(string.Format("LocateInportWip{0}", lot.LotID), ErrCategory.SIMULATION, ErrLevel.INFO, lot.CurrentFactoryID, lot.CurrentShopID, lot.LotID, lot.CurrentProductID, lot.CurrentProductVersion ?? lot.Wip.ProductVersion, lot.CurrentProcessID, eqpID, lot.CurrentStepID, "NOT FOUND EQP", "Can't Locate InportWip"); #endregion return(false); } else { FabAoEquipment feqp = eqp.ToFabAoEquipment(); //Inport Wip (M잔여 수량 체크 X) if (EqpArrangeMaster.IsLoadable(feqp, lot, false) == false) { #region Write ErrorHistory ErrHist.WriteIf(string.Format("LocateInportWip{0}", lot.LotID), ErrCategory.SIMULATION, ErrLevel.INFO, lot.CurrentFactoryID, lot.CurrentShopID, lot.LotID, lot.CurrentProductID, lot.CurrentProductVersion ?? lot.Wip.ProductVersion, lot.CurrentProcessID, eqpID, lot.CurrentStepID, "NOT FOUND EQP_ARRANGE", "Can't Locate InportWip"); #endregion return(false); } if (feqp.InitInPortWips == null) { feqp.InitInPortWips = new List <IHandlingBatch>(); } feqp.InitInPortWips.Add(hb); InFlowMaster.ChangeWipLocation(hb, EventType.StartTOWait); return(true); } }