diff --git a/src/main/java/com/gaotao/modules/inspection/service/impl/QualifiedStorageServiceImpl.java b/src/main/java/com/gaotao/modules/inspection/service/impl/QualifiedStorageServiceImpl.java index d54ac46..d2fc9c6 100644 --- a/src/main/java/com/gaotao/modules/inspection/service/impl/QualifiedStorageServiceImpl.java +++ b/src/main/java/com/gaotao/modules/inspection/service/impl/QualifiedStorageServiceImpl.java @@ -13,6 +13,8 @@ import com.gaotao.modules.inspection.entity.InboundConfirmDto; import com.gaotao.modules.inspection.service.QualifiedStorageService; import com.gaotao.modules.warehouse.entity.InventoryStock; import com.gaotao.modules.warehouse.dao.InventoryStockMapper; +import com.gaotao.modules.warehouse.entity.Location; +import com.gaotao.modules.warehouse.service.LocationService; import com.gaotao.modules.po.entity.PoReceipt; import com.gaotao.modules.po.entity.PoReceiptDetail; import com.gaotao.modules.po.service.PoReceiptDetailService; @@ -74,6 +76,9 @@ public class QualifiedStorageServiceImpl implements QualifiedStorageService { @Autowired private InventoryStockMapper inventoryStockMapper; + @Autowired + private LocationService locationService; + @Value("${custom.ifs-ifsDBName}") private String ifsDBName; @@ -369,10 +374,22 @@ public class QualifiedStorageServiceImpl implements QualifiedStorageService { HandlingUnit firstHu) { // 直接在此方法中实现库存创建逻辑,使用带行锁的库存操作,防止并发 String site = transDetail.getSite(); - String warehouseId = transHeader.getWarehouseId(); + String locationId = transDetail.getLocationId(); + + // 根据库位获取仓库ID + String warehouseId = null; + Location location = locationService.getByLocationIdAndSite(site, locationId); + if (location != null) { + warehouseId = location.getWarehouseId(); + } + + // 如果根据库位获取不到仓库,则使用transHeader中的仓库ID作为备用 + if (StringUtils.isBlank(warehouseId)) { + warehouseId = transHeader.getWarehouseId(); + } + String partNo = transDetail.getPartNo(); String batchNo = transDetail.getBatchNo(); - String locationId = transDetail.getLocationId(); String wdr = firstHu.getWdr() != null ? firstHu.getWdr() : "*"; BigDecimal transQty = BigDecimal.valueOf(qty); diff --git a/src/main/java/com/gaotao/modules/po/service/impl/PoServiceImpl.java b/src/main/java/com/gaotao/modules/po/service/impl/PoServiceImpl.java index af6acf7..631a1a6 100644 --- a/src/main/java/com/gaotao/modules/po/service/impl/PoServiceImpl.java +++ b/src/main/java/com/gaotao/modules/po/service/impl/PoServiceImpl.java @@ -34,6 +34,8 @@ import com.gaotao.modules.trans.service.TransHeaderService; import com.gaotao.modules.trans.service.TransNoControlService; import com.gaotao.modules.warehouse.dao.InventoryStockMapper; import com.gaotao.modules.warehouse.entity.InventoryStock; +import com.gaotao.modules.warehouse.entity.Location; +import com.gaotao.modules.warehouse.service.LocationService; import jakarta.transaction.Transactional; import org.apache.commons.lang.StringUtils; import org.apache.shiro.SecurityUtils; @@ -71,6 +73,8 @@ public class PoServiceImpl extends ServiceImpl implemen private AccessSiteMapper accessSiteMapper; @Autowired private HandlingUnitIdGeneratorService handlingUnitIdGeneratorService; + @Autowired + private LocationService locationService; @Value("${custom.ifs-url}") private String ifsUrl; @@ -321,10 +325,22 @@ public class PoServiceImpl extends ServiceImpl implemen private void genInventoryStock(TransDetailDto inData, TransHeader transHeader, PoReceiptDetail receiptDetail) { // 直接在此方法中实现库存创建逻辑,使用带行锁的库存操作,防止并发 String site = inData.getSite(); - String warehouseId = transHeader.getWarehouseId(); + String locationId = inData.getLocationNo(); + + // 根据库位获取仓库ID + String warehouseId = null; + Location location = locationService.getByLocationIdAndSite(site, locationId); + if (location != null) { + warehouseId = location.getWarehouseId(); + } + + // 如果根据库位获取不到仓库,则使用transHeader中的仓库ID作为备用 + if (StringUtils.isBlank(warehouseId)) { + warehouseId = transHeader.getWarehouseId(); + } + String partNo = inData.getPartNo(); String batchNo = inData.getBatchNo(); - String locationId = inData.getLocationNo(); String wdr = inData.getWdr(); BigDecimal transQty = inData.getTransQty(); String huFlag = inData.getNeedHandlingUnit();