rsf-server/src/main/java/com/vincent/rsf/server/api/service/AgvService.java
@@ -18,4 +18,5 @@ R AGVBindAndInTaskStart(WaitPakinParam waitPakinPda, Long loginUserId); R AGVBindAndInTaskStart(String barcode); boolean AGVBindAndInTaskStart(String barcode, String sta); } rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/AgvServiceImpl.java
@@ -63,6 +63,14 @@ } @Override @Transactional(rollbackFor = Exception.class) public boolean AGVBindAndInTaskStart(String barcode, String sta) { //验证条码 checkStaStatus(barcode,sta); return true; } @Override public R getStaMsgSelect(Map<String, Object> params) { String sta = params.get("sta").toString(); if (Cools.isEmpty(sta)) { @@ -248,15 +256,9 @@ throw new CoolException("容器码不能为空"); } if (Cools.isEmpty(sta)) { throw new CoolException("接驳位条码不能为空"); throw new CoolException("站点信息不能为空"); } WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>() .eq(WaitPakin::getBarcode, barcode) .eq(WaitPakin::getIoStatus, PakinIOStatus.PAKIN_IO_STATUS_DONE.val) ); if (Cools.isEmpty(waitPakin)) { throw new CoolException("容器码未找到组托信息,请检查组托状态"); } BasStation isBarcodeSta = basStationService.getOne(new LambdaQueryWrapper<BasStation>() .eq(BasStation::getBarcode, barcode) , false @@ -269,9 +271,6 @@ ); if (Cools.isEmpty(basStation)) { throw new CoolException("未找到站点信息"); } if (!basStation.getUseStatus().equals("O")) { throw new CoolException("站点状态不为空闲"); } if (!Cools.isEmpty(basStation.getContainerType())) { List<Long> longs1 = JSONObject.parseArray(basStation.getContainerType(), Long.class); @@ -287,9 +286,6 @@ break; // 找到匹配的就退出循环 } } // boolean matches = containers.stream() // .map(BasContainer::getCodeType) // .anyMatch(codeType -> barcode.matches(codeType)); if (!matches) { throw new CoolException("条码与站点不匹配"); } rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
@@ -506,13 +506,18 @@ //组托 WaitPakinParam pakinParam = new WaitPakinParam(); pakinParam.setBarcode(palletId.get()); CompletableFuture.runAsync(() -> { try { asyncMergeItemsWcs(pakinParam, syncOrder.getOrderNo(), loginUserId); } catch (Exception e) { log.warn("订单 {} 开始自动组托", syncOrder.getOrderNo()); } }); pakinParam.setStaNo(syncOrder.getStationId()); boolean itemsCheck = waitPakinService.mergeItemsCheck(pakinParam, loginUserId); if (itemsCheck) { CompletableFuture.runAsync(() -> { try { asyncMergeItemsWcs(pakinParam, syncOrder.getOrderNo(), loginUserId); } catch (Exception e) { log.warn("订单 {} 开始自动组托", syncOrder.getOrderNo()); } }); } } }); } rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java
@@ -11,6 +11,7 @@ WaitPakin mergeItems(WaitPakinParam waitPakin, Long userId); WaitPakin mergeItemsWcs(WaitPakinParam waitPakin, Long userId); boolean mergeItemsCheck(WaitPakinParam waitPakin, Long userId); WaitPakin unBind(WaitPakinParam param); rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
@@ -177,6 +177,38 @@ return pakin; } /** * @author Munch D. Luffy * @date 2026/01/23 * @description: PDA组拖前置检查 * @version 1.0 */ @Override @Transactional(rollbackFor = Exception.class) public synchronized boolean mergeItemsCheck(WaitPakinParam waitPakin, Long userId) { if (StringUtils.isBlank(waitPakin.getBarcode())) { throw new CoolException("参数错误:托盘码为空!!"); } WaitPakin pakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>() .eq(WaitPakin::getBarcode, waitPakin.getBarcode())); if (!Objects.isNull(pakin)) { throw new CoolException("托盘码:" + waitPakin.getBarcode() + "已被组托单:" + pakin.getCode() + "使用!!"); } List<Loc> locs = locService.list(new LambdaQueryWrapper<Loc>().eq(Loc::getBarcode, waitPakin.getBarcode())); if (!locs.isEmpty()) { List<String> locCodes = locs.stream().map(Loc::getCode).collect(Collectors.toList()); String join = StringUtils.join(locCodes, ","); throw new CoolException("托盘码:" + waitPakin.getBarcode() + "已被库位:" + join + "使用!!"); } String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_WAIT_PAKIN_CODE, null); if (StringUtils.isBlank(ruleCode)) { throw new CoolException("编码规则错误: 编码规则「SYS_WAIT_PAKIN_CODE」规则是不存在"); } return agvService.AGVBindAndInTaskStart(waitPakin.getBarcode(),waitPakin.getStaNo()); } /**