From a60bcb0e01a7985b1022fa04178c561ea0f1a374 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B8=B8=E7=86=9F=E5=90=B4=E5=BD=A6=E7=A5=96?= Date: Thu, 30 Oct 2025 08:39:52 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=88=86=E6=8B=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/InventoryMoveServiceImpl.java | 60 ++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/gaotao/modules/other/service/impl/InventoryMoveServiceImpl.java b/src/main/java/com/gaotao/modules/other/service/impl/InventoryMoveServiceImpl.java index 5efe5a9..29e214f 100644 --- a/src/main/java/com/gaotao/modules/other/service/impl/InventoryMoveServiceImpl.java +++ b/src/main/java/com/gaotao/modules/other/service/impl/InventoryMoveServiceImpl.java @@ -1,5 +1,6 @@ package com.gaotao.modules.other.service.impl; +import com.fasterxml.jackson.core.JsonProcessingException; import com.gaotao.common.exception.XJException; import com.gaotao.common.utils.HttpUtils; import com.gaotao.common.utils.IfsErrorMessageUtils; @@ -372,7 +373,13 @@ public class InventoryMoveServiceImpl implements InventoryMoveService { group.partNo, group.lotBatchNo, group.sourceLocationNo)); continue; } - + BigDecimal reservedQty = new BigDecimal(matchedStock.getQtyReserved()); + if(reservedQty.compareTo(new BigDecimal(0))>0){ + insufficientStockErrors.add(String.format( + "物料%s批次%s在库位%s在ifs中被预留:%s", + group.partNo, group.lotBatchNo, group.sourceLocationNo, + matchedStock.getQtyReserved())); + } // 计算可用库存(在库数量 - 预留数量) BigDecimal availableQty = matchedStock.getAvailableQty(); @@ -482,6 +489,57 @@ public class InventoryMoveServiceImpl implements InventoryMoveService { String jsonBody = null; String ifsResponse = null; + //校验库存是否被预留 后面要删除 + + + + // 获取该站点指定物料的库存信息 + List inventoryList=new ArrayList<>(); + try { + inventoryList = ifsApiService.getInventoryPartInStock(group.site, group.partNo); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + + log.info("获取站点{}物料{}的库存信息,共{}条记录", group.site, group.partNo, inventoryList.size()); + + IfsInventoryPartInStock matchedStock = findMatchingStock(inventoryList, group); + boolean failedFlag=false; + if (matchedStock == null) { + failedFlag=true; + } + + + if (matchedStock != null) { + BigDecimal reservedQty = new BigDecimal(matchedStock.getQtyReserved()); + if(reservedQty.compareTo(new BigDecimal(0))>0){ + failedFlag=true; + } + } + if(failedFlag){ + log.warn("IFS移库同步失败 - 物料: {}, 批次: {}, 在库位:{}的库存被预留,无法移库", + group.partNo, group.lotBatchNo,group.sourceLocationNo); + // 记录到错误日志表 - rqrq + ifsCallErrorLogService.logIfsError( + group.site, + "MoveInventoryPart", + "库存移库(栈板)", + group.partNo, + group.lotBatchNo, + group.sourceLocationNo, + group.destLocationNo, + group.totalQty, + group.expiredDate, + "ifs库存被预留或者查不到库存,无法移库", + "ifs库存被预留或者查不到库存,无法移库", + "ifs库存被预留或者查不到库存,无法移库" + ); + return; + } + + //校验库存预留结束 + + try { Map params = new HashMap<>(); params.put("ifsDBName", ifsDBName);