示例#1
0
        //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));
        }