From 62c42b3aaafe1ece01e880f29f60faf7e510be68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Wed, 4 Feb 2026 15:57:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=8B=E5=8A=A8=E5=88=86=E9=85=8D=EF=BC=88?= =?UTF-8?q?=E5=8F=96=E6=B6=88=E5=88=86=E9=85=8D=EF=BC=89=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=BC=BA=E5=A4=B1=E8=A1=A5=E5=85=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stockOutOrder/StockOutOrderApi.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockOutOrder/StockOutOrderApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockOutOrder/StockOutOrderApi.java index 528949e51..0b95fbe51 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockOutOrder/StockOutOrderApi.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockOutOrder/StockOutOrderApi.java @@ -24,6 +24,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.io.IOException; +import java.util.ArrayList; import java.util.List; /** @@ -164,7 +165,48 @@ public class StockOutOrderApi extends BaseController { return toAjax(stockOutOrderApplicationService.cancelAssign(stockOutOrderDO)); } + /** + * 手动取消分配(点击确认后直接取消分配) + * 前端点击取消分配按钮时弹出确认对话框,点击确认后调用此接口 + * 只需要传递出库单ID和物料明细ID,会自动取消该明细的所有已分配数量 + */ + @ApiOperation("手动取消分配") + @PostMapping("/manualCancelAssign") + public AjaxResult manualCancelAssign(@RequestBody StockOutOrderDTO stockOutOrderDTO) { + // 检查参数 + if (stockOutOrderDTO.getOutOrderId() == null) { + return error("出库单ID不能为空"); + } + if (stockOutOrderDTO.getMaterialDetailList() == null || stockOutOrderDTO.getMaterialDetailList().isEmpty()) { + return error("物料明细不能为空,请选择要取消分配的物料明细"); + } + StockOutOrderDO stockOutOrderDO = new StockOutOrderDO(); + BeanUtils.copyProperties(stockOutOrderDTO, stockOutOrderDO); + // 转换物料明细列表,手动转换确保materialDetailId字段正确传递 + List materialDetailList = new ArrayList<>(); + for (OutMaterialDetailDTO detailDTO : stockOutOrderDTO.getMaterialDetailList()) { + OutMaterialDetailDO detailDO = new OutMaterialDetailDO(); + // 只复制必要的字段,确保materialDetailId被正确传递 + detailDO.setMaterialDetailId(detailDTO.getMaterialDetailId()); + detailDO.setUniqueId(detailDTO.getUniqueId()); + detailDO.setAllocationQuantity(detailDTO.getAllocationQuantity()); + // 如果有子明细,也转换 + if (detailDTO.getMaterialDetailList() != null && !detailDTO.getMaterialDetailList().isEmpty()) { + List children = new ArrayList<>(); + for (OutMaterialDetailDTO childDTO : detailDTO.getMaterialDetailList()) { + OutMaterialDetailDO childDO = new OutMaterialDetailDO(); + childDO.setMaterialDetailId(childDTO.getMaterialDetailId()); + childDO.setAllocationQuantity(childDTO.getAllocationQuantity()); + children.add(childDO); + } + detailDO.setChildren(children); + } + materialDetailList.add(detailDO); + } + stockOutOrderDO.setMaterialDetailList(materialDetailList); + return toAjax(stockOutOrderApplicationService.manualCancelAssign(stockOutOrderDO)); + } /** * 生成拣货单