From d91aadca0b3d214bb67a5b8be67a51c4ecbc4867 Mon Sep 17 00:00:00 2001 From: rcx <3084692334@qq.com> Date: Tue, 11 Aug 2026 09:16:28 +0800 Subject: [PATCH] =?UTF-8?q?feat(oms):=20=E5=85=A5=E4=BB=93=E5=A7=94?= =?UTF-8?q?=E6=89=98=E5=8D=95=E3=80=8C=E4=B8=8B=E5=8F=91=E5=88=B0WMS?= =?UTF-8?q?=E3=80=8D=E5=8A=9F=E8=83=BD=E5=BC=80=E5=8F=91=20=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=C2=A0issueOrder=C2=A0=E4=B8=8B=E5=8F=91=E9=80=BB?= =?UTF-8?q?=E8=BE=91=EF=BC=8C=E6=8E=A8=E9=80=81=E4=B8=BB=E5=8D=95=E4=B8=8E?= =?UTF-8?q?=E6=98=8E=E7=BB=86=E8=87=B3=20WMS=EF=BC=9B=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=B7=B2=E5=AE=A1=E6=A0=B8=E6=A0=A1=E9=AA=8C=E3=80=81=E9=98=B2?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E4=B8=8B=E5=8F=91=E3=80=81=E4=BB=93=E5=BA=93?= =?UTF-8?q?=E5=BF=85=E5=A1=AB=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ReservationStockInOrderDomainService.java | 71 ++++++++++++++----- 1 file changed, 52 insertions(+), 19 deletions(-) diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java index 6a3566dce..5a55e93e2 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java @@ -468,6 +468,31 @@ public class ReservationStockInOrderDomainService { */ @Transactional(rollbackFor = Exception.class) public Boolean issueOrder(ReservationStockInOrderDO stockInOrderDO) { + + // ===== 新增校验 ===== + List inOrderIds = stockInOrderDO.getInOrderIds(); + if (inOrderIds == null || inOrderIds.isEmpty()) { + throw new ServiceException("下发失败:未选择单据"); + } + List checkOrders = stockInOrderService.list( + new QueryWrapper().lambda() + .in(ReservationStockInOrder::getInOrderId, inOrderIds)); + for (ReservationStockInOrder order : checkOrders) { + // 校验1:必须已审核(issueStatus==2 表示审核成功) + if (order.getIssueStatus() == null || order.getIssueStatus() != 2) { + throw new ServiceException("下发失败:单据[" + order.getInOrderNumber() + "]未审核,无法下发"); + } + // 校验2:防止重复下发(issueTime 有值表示已下发过) + if (order.getIssueTime() != null) { + throw new ServiceException("下发失败:单据[" + order.getInOrderNumber() + "]已下发,不可重复下发"); + } + // 校验3:WMS 必填字段(warehouseId 不能为空) + if (order.getWarehouseId() == null) { + throw new ServiceException("下发失败:单据[" + order.getInOrderNumber() + "]缺少入库仓库,无法下发"); + } + } + // ===== 校验结束 ===== + LoginUser loginUser = SecurityUtils.getLoginUser(); // 获取用户姓名(优先从UserPo获取,如果为空则使用realname,最后使用username作为兜底) @@ -485,26 +510,34 @@ public class ReservationStockInOrderDomainService { .in(ReservationStockInOrder::getInOrderId, stockInOrderDO.getInOrderIds())); //todo下发推送到wms -// List inOrderIds = stockInOrderDO.getInOrderIds(); -// for (Long inOrderId : inOrderIds) { -// ReservationStockInOrder byId = stockInOrderService.getById(inOrderId); -// StockInOrder stockInOrder = new StockInOrder(); -// BeanUtils.copyProperties(byId, stockInOrder,"inOrderId"); -// stockInOrder.setOmsStockInOrderId(String.valueOf(byId.getInOrderId())); -// wmsServiceFeign.omsInOrderAdd(stockInOrder); -// String inOrderNumber = stockInOrder.getInOrderNumber(); -// List materialDetailList = materialDetailService.list(new QueryWrapper().lambda().eq(ReservationInMaterialDetail::getInOrderNumber, inOrderNumber)); -// List inMaterialDetailList = new ArrayList<>(); -// for (ReservationInMaterialDetail reservationInMaterialDetail : materialDetailList) { -// InMaterialDetail inMaterialDetail = new InMaterialDetail(); -// BeanUtils.copyProperties(reservationInMaterialDetail, inMaterialDetail,"materialDetailId"); -// inMaterialDetail.setOmsInMaterialDetail(String.valueOf(reservationInMaterialDetail.getMaterialDetailId())); -// inMaterialDetailList.add(inMaterialDetail); -// } -// wmsServiceFeign.omsInOrderAddDetail(inMaterialDetailList); -// } + for (Long inOrderId : inOrderIds) { + ReservationStockInOrder byId = stockInOrderService.getById(inOrderId); + StockInOrder stockInOrder = new StockInOrder(); + BeanUtils.copyProperties(byId, stockInOrder, "inOrderId"); + stockInOrder.setOmsStockInOrderId(String.valueOf(byId.getInOrderId())); + + try { + wmsServiceFeign.omsInOrderAdd(stockInOrder); // 推主单 + + String inOrderNumber = stockInOrder.getInOrderNumber(); + List materialDetailList = materialDetailService.list( + new QueryWrapper().lambda() + .eq(ReservationInMaterialDetail::getInOrderNumber, inOrderNumber)); + List inMaterialDetailList = new ArrayList<>(); + for (ReservationInMaterialDetail reservationInMaterialDetail : materialDetailList) { + InMaterialDetail inMaterialDetail = new InMaterialDetail(); + BeanUtils.copyProperties(reservationInMaterialDetail, inMaterialDetail, "materialDetailId"); + inMaterialDetail.setOmsInMaterialDetail(String.valueOf(reservationInMaterialDetail.getMaterialDetailId())); + inMaterialDetailList.add(inMaterialDetail); + } + wmsServiceFeign.omsInOrderAddDetail(inMaterialDetailList); // 推明细(会触发WMS自动审核) + log.info("下发到WMS成功,单据号:{}", byId.getInOrderNumber()); + } catch (Exception e) { + log.error("下发到WMS失败,单据号:{}", byId.getInOrderNumber(), e); + throw new ServiceException("下发到WMS失败:" + e.getMessage()); + } + } //todo下发推送到入库业务单 - List inOrderIds = stockInOrderDO.getInOrderIds(); for (Long inOrderId : inOrderIds) { // Long inOrderId = stockInOrderDO.getInOrderId(); ReservationStockInOrder byId = stockInOrderService.getById(inOrderId);