//internal static List<FabSubEqp> GetLoadableSubEqps(this FabAoEquipment eqp, FabLot lot, bool needLoadableUnits = true) //{ // DateTime now = eqp.NowDT; // List<FabSubEqp> loadableList = new List<FabSubEqp>(); // List<SubEqpGroup> groupList = new List<SubEqpGroup>(); // var subEqpList = eqp.SubEqps; // foreach (var subEqp in subEqpList) // { // //check eqpArrange (subEqp) // if (EqpArrangeMaster.IsLoadable_ParallelChamber(subEqp, lot) == false) // continue; // //check state // if (subEqp.IsLoadable(lot.CurrentFabStep, now) == false) // continue; // if (groupList.Contains(subEqp.SubEqpGroup) == false) // groupList.Add(subEqp.SubEqpGroup); // if (loadableList.Contains(subEqp) == false) // loadableList.Add(subEqp); // } // //실제 로딩가능한 개별챔버Unit만 (needLoadableUnits) // if (needLoadableUnits && groupList.Count <= 1) // return loadableList; // if (groupList.Count == 0) // return new List<FabSubEqp>(); // //로딩가능한 챔버 그룹의 전체Unit 반환 // SubEqpGroup selectGroup = null; // if (groupList.Count >= 2) // { // loadableList.Sort(new CompareHelper.SubEqpLoadableUnitComparer(lot)); // selectGroup = loadableList[0].SubEqpGroup; // } // else // { // selectGroup = groupList[0]; // } // var list = selectGroup.SubEqps.Values.ToList(); // return list; //} //internal static string[] GetLoadableChambers(AoEquipment aeqp, FabLot lot) //{ // HashSet<string> list = new HashSet<string>(); // var eqp = aeqp.ToFabAoEquipment(); // var loadableList = GetLoadableSubEqps(eqp, lot); // if (loadableList != null) // { // foreach (var subEqp in loadableList) // list.Add(subEqp.SubEqpID); // } // return list.ToArray(); //} internal static List <FabSubEqp> GetLoadableSubEqps(this FabAoEquipment eqp, FabLot lot) { var now = eqp.NowDT; var info = eqp.TriggerInfo; //init run wip if (info == null && lot.IsRunWipFirstPlan()) { return(eqp.GetLoadableSubEqps_RunWip(lot)); } if (info == null) { return(new List <FabSubEqp>()); } return(info.GetLoadableList(lot, now)); }