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);