src/main/java/com/zy/asrs/service/LocMastService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/utils/Utils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/service/LocMastService.java
@@ -45,5 +45,17 @@ */ Boolean checkEmptyCount(LocMast locMast); /** * 判断当前库位是否需要堆垛机搬移小车入/出 * @param locNo */ // void judgeCarInOut(String locNo); /** * 判断是否是最外层的库位 * @param locNo * @return */ Boolean isOutMost(String locNo); } src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -5,6 +5,7 @@ import com.zy.asrs.entity.LocMast; import com.zy.asrs.mapper.LocMastMapper; import com.zy.asrs.service.LocMastService; import com.zy.asrs.utils.Utils; import org.springframework.stereotype.Service; import java.util.List; @@ -52,4 +53,9 @@ return this.baseMapper.selectEmptyLocCount(locMast.getLocType1(), locMast.getCrnNo()) > 1; } @Override public Boolean isOutMost(String locNo) { return Integer.parseInt(locNo.substring(0, 2)) == Utils.getGroupRow(locNo); } } src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -562,6 +562,26 @@ continue; } // todo:小车迁入出 // 最外层库位 if (locMastService.isOutMost(wrkMast.getLocNo())) { // 判断小车是否在最外层库位,如果是则搬走,如果不是,则直接堆垛机入库 Integer steNo = this.hasCarOfIdle(wrkMast.getLocNo()); if (steNo != null) { // 小车搬走 } else { // 堆垛机入库 } // 非最外层库位 } else { // 判断小车是否在当前组库位,如果是则堆垛机将货物放置小车上,如果不是,则直接堆垛机搬移小车至当前组的最外层库位 } this.carMoveIn(wrkMast); @@ -616,18 +636,6 @@ log.error("堆垛机命令下发失败,堆垛机号={},任务数据={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); } else { // long startTime = System.currentTimeMillis(); // while ((System.currentTimeMillis() - startTime) < COMMAND_TIMEOUT) { // // if (true) { // break; // } // // try{ // Thread.sleep(500); // }catch(Exception ignore){} // } // 修改工作档状态 2.设备上走 => 3.吊车入库中 Date now = new Date(); wrkMast.setWrkSts(3L); @@ -641,6 +649,26 @@ } /** * 当前库位组是否存在空闲小车 * @param locNo * @return */ public Integer hasCarOfIdle(String locNo) { for (SteSlave ste : slaveProperties.getSte()) { // 获取堆垛机信息 SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, ste.getId()); SteProtocol steProtocol = steThread.getSteProtocol(); if (steProtocol == null) { continue; } if (steProtocol.getStatusType().equals(SteStatusType.IDLE)) { if (steProtocol.getRow() == Utils.getRow(locNo) && steProtocol.getBay() == Utils.getBay(locNo) && steProtocol.getLev() == Utils.getLev(locNo)) { return steProtocol.getSteNo().intValue(); } } } return null; } /** * 入库 ===>> 堆垛机搬入小车 */ public void carMoveIn(WrkMast wrkMast) { src/main/java/com/zy/asrs/utils/Utils.java
@@ -36,6 +36,67 @@ } } public static Integer getGroupRow(String locNo){ int row = getRow(locNo); switch (row) { case 1: case 2: case 3: return 3; case 4: case 5: case 6: case 7: return 4; case 8: case 9: case 10: case 11: return 11; case 12: case 13: case 14: return 12; case 15: case 16: case 17: case 18: return 18; case 19: case 20: case 21: return 19; default: throw new RuntimeException("库位解析异常"); } } // ------------------------------------------------------------------------------------------------------------------- /** * 判断是否为深库位 */ @@ -144,6 +205,26 @@ } /** * 通过库位号获取 列 */ public static int getBay(String locNo) { if (!Cools.isEmpty(locNo)) { return Integer.parseInt(locNo.substring(2, 5)); } throw new RuntimeException("库位解析异常"); } /** * 通过库位号获取 层 */ public static int getLev(String locNo) { if (!Cools.isEmpty(locNo)) { return Integer.parseInt(locNo.substring(5, 7)); } throw new RuntimeException("库位解析异常"); } /** * 当检索到双深库位的浅库位时,如果深库位无货,则放入对应的深库位 */ public static void toDeepIfEmptyByShallow(String shallowLoc) {