// 判断栈顶有没有该作业工艺的slot public boolean isContinueSameTPTop(WorkType wt, MOSlotBlock moSlotBlock) { boolean result = false; Map<Integer, MOSlotStack> bay01 = moSlotBlock.getBay01(); Map<Integer, MOSlotStack> bay03 = moSlotBlock.getBay03(); for (MOSlotStack moSlotStack : bay01.values()) { MOSlot moSlot = moSlotStack.getTopMOSlot(); if (moSlot != null) { if (moSlot.getMoveOrderSeq() == -1) { // 没有编过MoveOrder MOContainer moContainer = moSlot.getMoContainer(); Set<MOSlotPosition> moSlotPositionSet = moSlot.getMoSlotPositionSet(); if (moContainer != null && !moSlotPositionSet.isEmpty()) { if (moContainer.size.startsWith(wt.size) && wt.n == moSlotPositionSet.size()) { result = true; } } else { moSlotStack.topTierNoDownBy2(); } } else { moSlotStack.topTierNoDownBy2(); } } } for (MOSlotStack moSlotStack : bay03.values()) { MOSlot moSlot = moSlotStack.getTopMOSlot(); if (moSlot != null) { if (moSlot.getMoveOrderSeq() == -1) { // 没有编过MoveOrder MOContainer moContainer = moSlot.getMoContainer(); Set<MOSlotPosition> moSlotPositionSet = moSlot.getMoSlotPositionSet(); if (moContainer != null && !moSlotPositionSet.isEmpty()) { if (moContainer.size.startsWith(wt.size) && wt.n == moSlotPositionSet.size()) { result = true; } } else { moSlotStack.topTierNoDownBy2(); } } else { moSlotStack.topTierNoDownBy2(); } } } return result; }
// 处理卸船编MoveOrder的过程 public int processD(WorkType wt, Map<Integer, MOSlotStack> bay, MOSlotBlock moSlotBlock) { List<MOSlot> moSlotList = this.getTopMOSlotList(bay, moSlotBlock); List<Integer> rowList = TraverseOrder.getDRowList(moSlotList); int count = 0; // 对几个slot进行了编序号 F: for (int j = 0; j < rowList.size(); j++) { int row = rowList.get(j); MOSlotStack moSlotStack = bay.get(row); MOSlot moSlotTop = moSlotStack.getTopMOSlot(); if (moSlotTop.getMoveOrderSeq() == -1) { MOContainer moContainer = moSlotTop.getMoContainer(); Set<MOSlotPosition> moSlotPositionSet = moSlotTop.getMoSlotPositionSet(); if (moContainer != null && !moSlotPositionSet.isEmpty()) { if (moContainer.size.startsWith(wt.size) && wt.n == moSlotPositionSet.size()) { boolean isMOYes = true; // 是否可以编序 for (MOSlotPosition moSlotPosition : moSlotPositionSet) { // 判断该位置上层是否有箱子没有编序,即上面有箱子还没有卸 MOSlot upSlot = moSlotBlock.getUpMOSlot(moSlotPosition); if (upSlot != null) { if (upSlot.getMoContainer() != null && upSlot.getMoveOrderSeq() == -1) { isMOYes = false; System.out.println( "the up container is not null and none moveOrder: " + moSlotPosition.getBayInt() + "--" + moSlotPosition.getRowInt() + "--" + moSlotPosition.getTierInt()); } } } if (isMOYes) { // 从moSlotPositionSet中先获取slot,然后编序编MoveOrder for (MOSlotPosition moSlotPosition : moSlotPositionSet) { MOSlot moSlot = moSlotBlock.getMOSlot(moSlotPosition); moSlot.setMoveOrderSeq(seq); } seq++; count++; // 编完序后,栈顶标记下移 moSlotStack.topTierNoDownBy2(); break F; } } } } else { // 已经编了序号,下移栈顶 moSlotStack.topTierNoDownBy2(); } } return count; }
public List<MOSlot> getTopMOSlotList(Map<Integer, MOSlotStack> bay, MOSlotBlock moSlotBlock) { List<MOSlot> moSlotList = new ArrayList<>(); for (int j = 0; j < moSlotBlock.getRowSeqList().size(); j++) { int row = moSlotBlock.getRowSeqList().get(j); MOSlotStack moSlotStack = bay.get(row); if (moSlotStack != null) { MOSlot moSlotTop = moSlotStack.getTopMOSlot(); if (moSlotTop != null) { moSlotList.add(moSlotTop); } } } return moSlotList; }