feat(oms): 入仓委托单「下发到WMS」功能开发

实现 issueOrder 下发逻辑,推送主单与明细至 WMS;增加已审核校验、防重复下发、仓库必填校验
This commit is contained in:
rcx
2026-08-11 09:16:28 +08:00
parent 969d90fff5
commit d91aadca0b
@@ -468,6 +468,31 @@ public class ReservationStockInOrderDomainService {
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Boolean issueOrder(ReservationStockInOrderDO stockInOrderDO) { public Boolean issueOrder(ReservationStockInOrderDO stockInOrderDO) {
// ===== 新增校验 =====
List<Long> inOrderIds = stockInOrderDO.getInOrderIds();
if (inOrderIds == null || inOrderIds.isEmpty()) {
throw new ServiceException("下发失败:未选择单据");
}
List<ReservationStockInOrder> checkOrders = stockInOrderService.list(
new QueryWrapper<ReservationStockInOrder>().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() + "]已下发,不可重复下发");
}
// 校验3WMS 必填字段(warehouseId 不能为空)
if (order.getWarehouseId() == null) {
throw new ServiceException("下发失败:单据[" + order.getInOrderNumber() + "]缺少入库仓库,无法下发");
}
}
// ===== 校验结束 =====
LoginUser loginUser = SecurityUtils.getLoginUser(); LoginUser loginUser = SecurityUtils.getLoginUser();
// 获取用户姓名(优先从UserPo获取,如果为空则使用realname,最后使用username作为兜底) // 获取用户姓名(优先从UserPo获取,如果为空则使用realname,最后使用username作为兜底)
@@ -485,26 +510,34 @@ public class ReservationStockInOrderDomainService {
.in(ReservationStockInOrder::getInOrderId, stockInOrderDO.getInOrderIds())); .in(ReservationStockInOrder::getInOrderId, stockInOrderDO.getInOrderIds()));
//todo下发推送到wms //todo下发推送到wms
// List<Long> inOrderIds = stockInOrderDO.getInOrderIds(); for (Long inOrderId : inOrderIds) {
// for (Long inOrderId : inOrderIds) { ReservationStockInOrder byId = stockInOrderService.getById(inOrderId);
// ReservationStockInOrder byId = stockInOrderService.getById(inOrderId); StockInOrder stockInOrder = new StockInOrder();
// StockInOrder stockInOrder = new StockInOrder(); BeanUtils.copyProperties(byId, stockInOrder, "inOrderId");
// BeanUtils.copyProperties(byId, stockInOrder,"inOrderId"); stockInOrder.setOmsStockInOrderId(String.valueOf(byId.getInOrderId()));
// stockInOrder.setOmsStockInOrderId(String.valueOf(byId.getInOrderId()));
// wmsServiceFeign.omsInOrderAdd(stockInOrder); try {
// String inOrderNumber = stockInOrder.getInOrderNumber(); wmsServiceFeign.omsInOrderAdd(stockInOrder); // 推主单
// List<ReservationInMaterialDetail> materialDetailList = materialDetailService.list(new QueryWrapper<ReservationInMaterialDetail>().lambda().eq(ReservationInMaterialDetail::getInOrderNumber, inOrderNumber));
// List<InMaterialDetail> inMaterialDetailList = new ArrayList<>(); String inOrderNumber = stockInOrder.getInOrderNumber();
// for (ReservationInMaterialDetail reservationInMaterialDetail : materialDetailList) { List<ReservationInMaterialDetail> materialDetailList = materialDetailService.list(
// InMaterialDetail inMaterialDetail = new InMaterialDetail(); new QueryWrapper<ReservationInMaterialDetail>().lambda()
// BeanUtils.copyProperties(reservationInMaterialDetail, inMaterialDetail,"materialDetailId"); .eq(ReservationInMaterialDetail::getInOrderNumber, inOrderNumber));
// inMaterialDetail.setOmsInMaterialDetail(String.valueOf(reservationInMaterialDetail.getMaterialDetailId())); List<InMaterialDetail> inMaterialDetailList = new ArrayList<>();
// inMaterialDetailList.add(inMaterialDetail); for (ReservationInMaterialDetail reservationInMaterialDetail : materialDetailList) {
// } InMaterialDetail inMaterialDetail = new InMaterialDetail();
// wmsServiceFeign.omsInOrderAddDetail(inMaterialDetailList); 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下发推送到入库业务单 //todo下发推送到入库业务单
List<Long> inOrderIds = stockInOrderDO.getInOrderIds();
for (Long inOrderId : inOrderIds) { for (Long inOrderId : inOrderIds) {
// Long inOrderId = stockInOrderDO.getInOrderId(); // Long inOrderId = stockInOrderDO.getInOrderId();
ReservationStockInOrder byId = stockInOrderService.getById(inOrderId); ReservationStockInOrder byId = stockInOrderService.getById(inOrderId);