private static bool IsLoadableEqpArrange(AoEquipment aeqp, FabLot lot) { var eqp = aeqp.ToFabAoEquipment(); bool checkQty = true; if (InputMart.Instance.GlobalParameters.ApplyArrangeMType == false) { checkQty = false; } bool isLoadable = EqpArrangeMaster.IsLoadable(eqp, lot, checkQty); if (isLoadable == false) { return(false); } //1차 선택 (1차 : Mask 미고려 선택, 2차 : Mask 고려 후 선택) if (lot.CurrentEqpArrange != null) { string productVersion = lot.CurrentProductVersion; lot.CurrentEqpArrange.SetUsedArrange(productVersion); } return(true); }
private static bool IsLoadableDummy(FabAoEquipment eqp, FabLot dummy, decimal inflowHours) { var now = eqp.NowDT; var last = eqp.GetLastPlan(); //eqp.LastPlan as FabPlanInfo; if (last == null) { return(false); } //M제약에 의해 진행 중인 last의 Arrange가 없어진 경우 if (EqpArrangeMaster.IsLoadable(eqp, dummy) == false) { return(false); } var currEA = dummy.CurrentEqpArrange; if (currEA == null || currEA.IsLoableByProductVersion(last.ProductVersion) == false) { return(false); } string reason = string.Empty; if (FilterMaster.IsEqpRecipeTime(eqp, dummy, now.AddHours((double)inflowHours), ref reason) == false) { return(false); } //Dummy Mask 확인 if (FilterMaster.IsLoadableToolArrange(eqp, dummy, false) == false) { return(false); } //MixRun(ParallelChamber) if (eqp.IsParallelChamber) { var subEqp = eqp.TriggerSubEqp; if (subEqp != null) { if (subEqp.IsLoadable(last.FabStep, now) == false) { return(false); } } } return(true); }