From 72e445ea161afd479f8bf6a4376db4843e97b555 Mon Sep 17 00:00:00 2001 From: rcx <3084692334@qq.com> Date: Tue, 18 Aug 2026 18:09:53 +0800 Subject: [PATCH] =?UTF-8?q?fix(oms):=E5=87=BA=E5=BA=93=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E8=B4=A7=E7=89=A9=E6=9F=A5=E8=AF=A2=E4=B8=8D=E5=88=B0=E5=95=86?= =?UTF-8?q?=E5=93=81=EF=BC=8C=E5=BA=93=E5=AD=98=E6=9F=A5=E8=AF=A2=E6=94=B9?= =?UTF-8?q?=E7=A7=9F=E6=88=B7+=E8=B4=A7=E4=B8=BB=E7=BB=B4=E5=BA=A6?= =?UTF-8?q?=E5=B9=B6=E5=87=BA=E5=BA=93=E5=88=97=E8=A1=A8=E8=A1=A5=E8=B4=A7?= =?UTF-8?q?=E4=B8=BB=E6=97=81=E8=B7=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.ReservationMaterialInventoryApplicationService.queryList原对非南光组织用户强制organization_id=用户组织且top=2827,委托方(如仓码2841货主)库存被滤空;改为按一级组织(租户)过滤,委托方自动叠加登录货主shipperId查自己的货,库存数据已核实在库 2.ReserveStockOutOrderApplicationService.queryList/detailsList增加货主直查旁路(与入库queryList对齐),委托方按shipperId查询不被组织过滤拦截 --- ...onMaterialInventoryApplicationService.java | 64 ++++--------------- ...eserveStockOutOrderApplicationService.java | 6 ++ 2 files changed, 17 insertions(+), 53 deletions(-) diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationMaterialInventory/service/ReservationMaterialInventoryApplicationService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationMaterialInventory/service/ReservationMaterialInventoryApplicationService.java index 1aa314ba7..e8b061636 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationMaterialInventory/service/ReservationMaterialInventoryApplicationService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationMaterialInventory/service/ReservationMaterialInventoryApplicationService.java @@ -55,61 +55,19 @@ public class ReservationMaterialInventoryApplicationService { public List queryList(ReservationMaterialInventoryDO materialInventoryDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); - if (loginUser != null && loginUser.getUserPo() != null){ + if (loginUser != null && loginUser.getUserPo() != null) { + Long loginTopOrgId = loginUser.getUserPo().getTopOrganizationId(); Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); - Long frontendOrganizationId = materialInventoryDO.getOrganizationId(); // 前端传递的 organizationId - - // 数据权限:根据 organizationId 来设置查询权限 - // 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己 - if (userOrganizationId != null && userOrganizationId == 2827L) { - // 南光组织(organizationId=2827):可以查询所有组织的数据 - // 如果前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 - // 如果前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 - if (frontendOrganizationId != null) { - // 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 - materialInventoryDO.setOrganizationId(frontendOrganizationId); - materialInventoryDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件 - } else { - // 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 - materialInventoryDO.setOrganizationId(null); - materialInventoryDO.setTopOrganizationId(null); - } - } else { - // 其他组织:设置organizationId,只查询当前组织的数据 - // 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 - if (frontendOrganizationId != null && userOrganizationId != null) { - // 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 - if (!frontendOrganizationId.equals(userOrganizationId)) { - // 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询 - materialInventoryDO.setOrganizationId(userOrganizationId); - } - // 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值 - } else { - // 前端没有传递 organizationId,使用当前登录用户的组织ID - if (userOrganizationId != null) { - materialInventoryDO.setOrganizationId(userOrganizationId); - } - } - // 只有当 organizationId 为 null 时,才使用 topOrganizationId 作为查询条件 - // 如果 organizationId 不为 null,则优先使用 organizationId,不使用 topOrganizationId - if (materialInventoryDO.getOrganizationId() == null) { - Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); - if (topOrganizationId != null && topOrganizationId != 1) { - materialInventoryDO.setTopOrganizationId(topOrganizationId); - } - } else { - // 对于非2827组织,必须设置 topOrganizationId=2827 - materialInventoryDO.setTopOrganizationId(2827L); - } + boolean isTopOrgUser = userOrganizationId != null && userOrganizationId.equals(loginTopOrgId); + + // 出库预约-添加货物:按一级组织(租户)过滤;委托方(货主)叠加货主维度查自己的货 + materialInventoryDO.setOrganizationId(null); + if (loginTopOrgId != null && loginTopOrgId != 1) { + materialInventoryDO.setTopOrganizationId(loginTopOrgId); + } + if (!isTopOrgUser && materialInventoryDO.getShipperId() == null) { + materialInventoryDO.setShipperId(loginUser.getUserPo().getUserId()); } - // 前端有传warehouseId则优先使用传参;未传时才使用"用户关联仓库"作为默认值 -// if (materialInventoryDO.getWarehouseId() == null) { -// AssociationWarehouseCacheDO associationWarehouseCacheDO = -// SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); -// if (associationWarehouseCacheDO != null) { -// materialInventoryDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); -// } -// } } return materialInventoryDomainService.queryList(materialInventoryDO); } diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockOutOrder/service/ReserveStockOutOrderApplicationService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockOutOrder/service/ReserveStockOutOrderApplicationService.java index 4dc2f9a89..bca9f5c24 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockOutOrder/service/ReserveStockOutOrderApplicationService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockOutOrder/service/ReserveStockOutOrderApplicationService.java @@ -103,6 +103,9 @@ public class ReserveStockOutOrderApplicationService { */ public List queryList(ReserveStockOutOrderDO stockOutOrderDO) { + if (stockOutOrderDO.getShipperId() != null && stockOutOrderDO.getShipperId() != 0L) { + return stockOutOrderDomainService.queryList(stockOutOrderDO); + } LoginUser loginUser = SecurityUtils.getLoginUser(); if (loginUser != null && loginUser.getUserPo() != null) { @@ -221,6 +224,9 @@ public class ReserveStockOutOrderApplicationService { public List detailsList(ReserveStockOutOrderDO stockOutOrderDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); + if (stockOutOrderDO.getShipperId() != null && stockOutOrderDO.getShipperId() != 0L) { + return stockOutOrderDomainService.detailsList(stockOutOrderDO); + } if (loginUser != null && loginUser.getUserPo() != null) { Long userOrganizationId = loginUser.getUserPo().getOrganizationId();