From ca45a912cd63eecbe01821e9978d2b2a3a068b0c Mon Sep 17 00:00:00 2001 From: 10001392 <1055202292@qq.com> Date: Mon, 11 May 2026 16:39:12 +0800 Subject: [PATCH] =?UTF-8?q?1463=20WMS=E7=B3=BB=E7=BB=9F=E9=92=A2=E6=9E=84?= =?UTF-8?q?=E5=8C=85=E9=87=87=E8=B4=AD=E4=B8=9A=E5=8A=A1=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StructuralPackageOrderController.java | 49 ++++++++++++++----- 1 file changed, 36 insertions(+), 13 deletions(-) diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageOrderController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageOrderController.java index 49e02cd4..9508cefc 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageOrderController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageOrderController.java @@ -3,10 +3,8 @@ package com.nflg.wms.admin.controller; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.Pair; -import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.*; import cn.hutool.core.util.NumberUtil; -import cn.hutool.core.util.RandomUtil; -import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; @@ -982,14 +980,24 @@ public class StructuralPackageOrderController extends BaseController { VUtil.trueThrowBusinessError(supplierIds.size() > 1).throwMessage("订单必须属于同一个供应商"); Long supplierId = supplierIds.iterator().next(); - // 检查所有订单下的托盘是否都已打包且未发货 + // 检查所有订单下的托盘状态 for (Long orderId : orderIds) { List trays = structuralPackageOrderTrayService.getList(orderId); VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(trays)).throwMessage("订单" + orderId + "没有托盘数据"); - // 检查是否有未打包的托盘 - VUtil.trueThrowBusinessError(trays.stream().anyMatch(tray -> Objects.equals(tray.getState(), OrderState.Unpackaged.getState()))) - .throwMessage("订单" + orderId + "存在未打包的托盘"); + // 获取该订单下所有已打包的托盘项,找出关联的托盘ID + List trayItems = structuralPackageOrderTrayItemService.getList(orderId); + Set packedTrayIds = trayItems.stream() + .filter(i -> ObjectUtil.isNotEmpty(i.getTrayId()) && i.getTrayId() != -1L) + .map(WmsStructuralPackageOrderTrayItem::getTrayId) + .collect(Collectors.toSet()); + + // 检查是否有已关联托盘项但未打包的托盘 + boolean hasUnpackagedWithItems = trays.stream() + .filter(tray -> packedTrayIds.contains(tray.getId())) + .anyMatch(tray -> Objects.equals(tray.getState(), OrderState.Unpackaged.getState())); + VUtil.trueThrowBusinessError(hasUnpackagedWithItems) + .throwMessage("订单" + orderId + "存在已关联物料但未打包的托盘"); // 检查是否有已发货的托盘 VUtil.trueThrowBusinessError(trays.stream().anyMatch(tray -> Objects.equals(tray.getState(), OrderState.InTransit.getState()) || Objects.equals(tray.getState(), OrderState.Received.getState()))) @@ -1024,13 +1032,22 @@ public class StructuralPackageOrderController extends BaseController { .toList() ); - // 将所有订单下的托盘状态更新为运输中 + // 将所有订单下已关联托盘项的托盘状态更新为运输中 for (Long orderId : orderIds) { - structuralPackageOrderTrayService.lambdaUpdate() - .set(WmsStructuralPackageOrderTray::getState, OrderState.InTransit.getState()) - .eq(WmsStructuralPackageOrderTray::getOrderId, orderId) - .eq(WmsStructuralPackageOrderTray::getState, OrderState.Packaged.getState()) - .update(); + // 获取该订单下所有已打包的托盘项,找出关联的托盘ID + List trayItems = structuralPackageOrderTrayItemService.getList(orderId); + Set packedTrayIds = trayItems.stream() + .map(WmsStructuralPackageOrderTrayItem::getTrayId) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + + if (CollectionUtil.isNotEmpty(packedTrayIds)) { + structuralPackageOrderTrayService.lambdaUpdate() + .set(WmsStructuralPackageOrderTray::getState, OrderState.InTransit.getState()) + .in(WmsStructuralPackageOrderTray::getId, packedTrayIds) + .eq(WmsStructuralPackageOrderTray::getState, OrderState.Packaged.getState()) + .update(); + } } return ApiResult.success(); @@ -1894,6 +1911,9 @@ public class StructuralPackageOrderController extends BaseController { boolean hasDiff = request.getDiffList().stream() .anyMatch(diff -> StrUtil.equals(diff.getMaterialNo(), materialQO.getMaterialNo())); + // 更新托盘项的trayId + trayItem.setTrayId(tray.getId()); + // 解析二维码 if (CollectionUtil.isNotEmpty(materialQO.getQrCodes())) { List dtos = materialQO.getQrCodes().stream() @@ -1924,6 +1944,9 @@ public class StructuralPackageOrderController extends BaseController { } } + // 批量更新托盘项的trayId + structuralPackageOrderTrayItemService.updateBatchById(trayItems); + // 更新托盘状态为已打包 VUtil.trueThrowBusinessError(!structuralPackageOrderTrayService.lambdaUpdate() .set(WmsStructuralPackageOrderTray::getState, OrderState.Packaged.getState())