diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageLocation/StorageLocationApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageLocation/StorageLocationApplicationService.java index c14ade53b..2d69d28eb 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageLocation/StorageLocationApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/storageLocation/StorageLocationApplicationService.java @@ -49,8 +49,30 @@ public class StorageLocationApplicationService { if (topOrganizationId != null && topOrganizationId != 1){ storageLocationDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); } - AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); - storageLocationDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + // 只有当前端没有明确传仓库条件时,才使用用户关联仓库缓存进行过滤; + // 避免出现“单据仓库=常温仓,但库位列表仍显示保税仓”的错配问题。 + boolean hasWarehouseFilter = storageLocationDO.getWarehouseId() != null + || (storageLocationDO.getWarehouseCode() != null && !storageLocationDO.getWarehouseCode().trim().isEmpty()) + || (storageLocationDO.getWarehouseName() != null && !storageLocationDO.getWarehouseName().trim().isEmpty()); + if (!hasWarehouseFilter) { + try { + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + if (associationWarehouseCacheDO != null) { + if (associationWarehouseCacheDO.getWarehouseId() != null) { + storageLocationDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + if (associationWarehouseCacheDO.getWarehouseCode() != null && !associationWarehouseCacheDO.getWarehouseCode().trim().isEmpty()) { + storageLocationDO.setWarehouseCode(associationWarehouseCacheDO.getWarehouseCode()); + } + if (associationWarehouseCacheDO.getWarehouseName() != null && !associationWarehouseCacheDO.getWarehouseName().trim().isEmpty()) { + storageLocationDO.setWarehouseName(associationWarehouseCacheDO.getWarehouseName()); + } + } + } catch (Exception e) { + // 获取失败不影响查询(允许查询所有仓库,或由前端传参控制) + log.warn("获取用户关联仓库信息失败,将按前端条件查询库位数据,用户ID:{},错误:{}", loginUser.getUserid(), e.getMessage()); + } + } } return storageLocationDomainService.queryList(storageLocationDO); } diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/statementStatistics/StatementStatisticsService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/statementStatistics/StatementStatisticsService.java index 9c8b626a9..9df75d74b 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/statementStatistics/StatementStatisticsService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/statementStatistics/StatementStatisticsService.java @@ -41,14 +41,30 @@ public class StatementStatisticsService { if (topOrganizationId != null && topOrganizationId != 1){ immediateInventoryDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); } - try { - AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); - if (associationWarehouseCacheDO != null && associationWarehouseCacheDO.getWarehouseId() != null) { - immediateInventoryDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + // 只有在用户没有明确指定仓库参数时,才使用缓存中的仓库信息 + // 如果用户已经传递了 warehouseId、warehouseCode 或 warehouseName,优先使用这些值 + boolean hasWarehouseFilter = (immediateInventoryDO.getWarehouseId() != null) + || (immediateInventoryDO.getWarehouseCode() != null && !immediateInventoryDO.getWarehouseCode().trim().isEmpty()) + || (immediateInventoryDO.getWarehouseName() != null && !immediateInventoryDO.getWarehouseName().trim().isEmpty()); + + if (!hasWarehouseFilter) { + try { + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + if (associationWarehouseCacheDO != null) { + if (associationWarehouseCacheDO.getWarehouseId() != null) { + immediateInventoryDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + if (associationWarehouseCacheDO.getWarehouseCode() != null && !associationWarehouseCacheDO.getWarehouseCode().trim().isEmpty()) { + immediateInventoryDO.setWarehouseCode(associationWarehouseCacheDO.getWarehouseCode()); + } + if (associationWarehouseCacheDO.getWarehouseName() != null && !associationWarehouseCacheDO.getWarehouseName().trim().isEmpty()) { + immediateInventoryDO.setWarehouseName(associationWarehouseCacheDO.getWarehouseName()); + } + } + } catch (Exception e) { + // 如果获取仓库信息失败,记录日志但不影响查询(允许查询所有仓库) + log.warn("获取用户关联仓库信息失败,将查询所有仓库数据,用户ID:{},错误:{}", loginUser.getUserid(), e.getMessage()); } - } catch (Exception e) { - // 如果获取仓库信息失败,记录日志但不影响查询(允许查询所有仓库) - log.warn("获取用户关联仓库信息失败,将查询所有仓库数据,用户ID:{},错误:{}", loginUser.getUserid(), e.getMessage()); } } return materialInventoryDomainService.queryImmediateInventoryList(immediateInventoryDO); diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java index 5f43f739c..6c775fa08 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java @@ -72,8 +72,23 @@ public class StockInOrderApplicationService { if (topOrganizationId != null && topOrganizationId != 1){ stockInOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); } -// AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); -// stockInOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + try { + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + if (associationWarehouseCacheDO != null) { + if (associationWarehouseCacheDO.getWarehouseId() != null) { + stockInOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + if (StringUtils.isNotBlank(associationWarehouseCacheDO.getWarehouseCode())) { + stockInOrderDO.setWarehouseCode(associationWarehouseCacheDO.getWarehouseCode()); + } + if (StringUtils.isNotBlank(associationWarehouseCacheDO.getWarehouseName())) { + stockInOrderDO.setWarehouseName(associationWarehouseCacheDO.getWarehouseName()); + } + } + } catch (Exception e) { + // 如果获取仓库信息失败,记录日志但不影响查询(允许查询所有仓库) + log.warn("获取用户关联仓库信息失败,将查询所有仓库数据,用户ID:{},错误:{}", loginUser.getUserid(), e.getMessage()); + } } return stockInOrderDomainService.queryList(stockInOrderDO); } diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java index c9b823807..ece7cca3d 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java @@ -85,11 +85,28 @@ public class StockReceiptOrderApplicationService { public List queryList(StockReceiptOrderDO stockReceiptOrderDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1){ - stockReceiptOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); -// AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); -// stockReceiptOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + stockReceiptOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + try { + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + if (associationWarehouseCacheDO != null) { + if (associationWarehouseCacheDO.getWarehouseId() != null) { + stockReceiptOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + if (StringUtils.isNotBlank(associationWarehouseCacheDO.getWarehouseCode())) { + stockReceiptOrderDO.setWarehouseCode(associationWarehouseCacheDO.getWarehouseCode()); + } + if (StringUtils.isNotBlank(associationWarehouseCacheDO.getWarehouseName())) { + stockReceiptOrderDO.setWarehouseName(associationWarehouseCacheDO.getWarehouseName()); + } + } + } catch (Exception e) { + // 如果获取仓库信息失败,记录日志但不影响查询(允许查询所有仓库) + log.warn("获取用户关联仓库信息失败,将查询所有仓库数据,用户ID:{},错误:{}", loginUser.getUserid(), e.getMessage()); + } } return stockReceiptOrderDomainService.queryList(stockReceiptOrderDO); } diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java index 1ce4c2667..3d71103a4 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java @@ -6,6 +6,7 @@ import com.mhd.common.core.constant.SnowFlakeConstants; import com.mhd.common.core.domain.po.UserPo; import com.mhd.common.core.exception.ServiceException; import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.StringUtils; import com.mhd.common.core.utils.bean.BeanUtils; import com.mhd.common.core.utils.uuid.IdGenerator; import com.mhd.common.core.web.domain.AjaxResult; @@ -67,8 +68,23 @@ public class StockShelfOrderApplicationService { if (topOrganizationId != null && topOrganizationId != 1){ stockShelfOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); } -// AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); -// stockShelfOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + try { + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + if (associationWarehouseCacheDO != null) { + if (associationWarehouseCacheDO.getWarehouseId() != null) { + stockShelfOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + if (StringUtils.isNotBlank(associationWarehouseCacheDO.getWarehouseCode())) { + stockShelfOrderDO.setWarehouseCode(associationWarehouseCacheDO.getWarehouseCode()); + } + if (StringUtils.isNotBlank(associationWarehouseCacheDO.getWarehouseName())) { + stockShelfOrderDO.setWarehouseName(associationWarehouseCacheDO.getWarehouseName()); + } + } + } catch (Exception e) { + // 如果获取仓库信息失败,记录日志但不影响查询(允许查询所有仓库) + log.warn("获取用户关联仓库信息失败,将查询所有仓库数据,用户ID:{},错误:{}", loginUser.getUserid(), e.getMessage()); + } } return stockShelfOrderDomainService.queryList(stockShelfOrderDO); } diff --git a/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml b/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml index 327971a66..0728735e2 100644 --- a/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml +++ b/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml @@ -408,8 +408,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and a.warehouse_id = #{warehouseId} + + and a.warehouse_code = #{warehouseCode} + + - and a.warehouse_name = #{warehouseName} + and a.warehouse_name like concat('%', #{warehouseName}, '%')