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