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 958be6180..9d82a46bc 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 @@ -2133,11 +2133,125 @@ public class StockInOrderApplicationService { return stockInOrderDomainService.queryInStockInfoByInOrderNumber(stockInOrderDTO); } - public List queryNoticePrint(StockInOrderDTO stockInOrderDTO) { - return stockInOrderDomainService.queryNoticePrint(stockInOrderDTO); + public List queryNoticePrint(StockInOrderDO stockInOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null && loginUser.getUserPo() != null){ + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + Long frontendOrganizationId = stockInOrderDO.getOrganizationId(); // 前端传递的 organizationId + + // 数据权限:根据 organizationId 来设置查询权限 + // 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己 + if (userOrganizationId != null && userOrganizationId == 2827L) { + // 南光组织(organizationId=2827):可以查询所有组织的数据 + // 如果前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + // 如果前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + if (frontendOrganizationId != null) { + // 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + stockInOrderDO.setOrganizationId(frontendOrganizationId); + stockInOrderDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件 + } else { + // 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + stockInOrderDO.setOrganizationId(null); + stockInOrderDO.setTopOrganizationId(null); + } + } else { + // 其他组织:设置organizationId,只查询当前组织的数据 + // 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (frontendOrganizationId != null && userOrganizationId != null) { + // 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (!frontendOrganizationId.equals(userOrganizationId)) { + // 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询 + stockInOrderDO.setOrganizationId(userOrganizationId); + } + // 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值 + } else { + // 前端没有传递 organizationId,使用当前登录用户的组织ID + if (userOrganizationId != null) { + stockInOrderDO.setOrganizationId(userOrganizationId); + } + } + // 只有当 organizationId 为 null 时,才使用 topOrganizationId 作为查询条件 + // 如果 organizationId 不为 null,则优先使用 organizationId,不使用 topOrganizationId + if (stockInOrderDO.getOrganizationId() == null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + stockInOrderDO.setTopOrganizationId(topOrganizationId); + } + } else { + // 对于非2827组织,必须设置 topOrganizationId=2827 + stockInOrderDO.setTopOrganizationId(2827L); + } + } + // 前端有传warehouseId则优先使用传参;未传时才使用"用户关联仓库"作为默认值 + if (stockInOrderDO.getWarehouseId() == null) { + AssociationWarehouseCacheDO associationWarehouseCacheDO = + SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + if (associationWarehouseCacheDO != null) { + stockInOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + } + } + return stockInOrderDomainService.queryNoticePrint(stockInOrderDO); } - public List queryNoticePrintDetail(StockInOrderDTO stockInOrderDTO) { - return stockInOrderDomainService.queryNoticePrintDetail(stockInOrderDTO); + public List queryNoticePrintDetail(StockInOrderDO stockInOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null && loginUser.getUserPo() != null){ + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + Long frontendOrganizationId = stockInOrderDO.getOrganizationId(); // 前端传递的 organizationId + + // 数据权限:根据 organizationId 来设置查询权限 + // 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己 + if (userOrganizationId != null && userOrganizationId == 2827L) { + // 南光组织(organizationId=2827):可以查询所有组织的数据 + // 如果前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + // 如果前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + if (frontendOrganizationId != null) { + // 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + stockInOrderDO.setOrganizationId(frontendOrganizationId); + stockInOrderDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件 + } else { + // 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + stockInOrderDO.setOrganizationId(null); + stockInOrderDO.setTopOrganizationId(null); + } + } else { + // 其他组织:设置organizationId,只查询当前组织的数据 + // 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (frontendOrganizationId != null && userOrganizationId != null) { + // 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (!frontendOrganizationId.equals(userOrganizationId)) { + // 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询 + stockInOrderDO.setOrganizationId(userOrganizationId); + } + // 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值 + } else { + // 前端没有传递 organizationId,使用当前登录用户的组织ID + if (userOrganizationId != null) { + stockInOrderDO.setOrganizationId(userOrganizationId); + } + } + // 只有当 organizationId 为 null 时,才使用 topOrganizationId 作为查询条件 + // 如果 organizationId 不为 null,则优先使用 organizationId,不使用 topOrganizationId + if (stockInOrderDO.getOrganizationId() == null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + stockInOrderDO.setTopOrganizationId(topOrganizationId); + } + } else { + // 对于非2827组织,必须设置 topOrganizationId=2827 + stockInOrderDO.setTopOrganizationId(2827L); + } + } + // 前端有传warehouseId则优先使用传参;未传时才使用"用户关联仓库"作为默认值 + if (stockInOrderDO.getWarehouseId() == null) { + AssociationWarehouseCacheDO associationWarehouseCacheDO = + SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + if (associationWarehouseCacheDO != null) { + stockInOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + } + } + return stockInOrderDomainService.queryNoticePrintDetail(stockInOrderDO); } } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/facade/IStockInOrderService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/facade/IStockInOrderService.java index f9c0b4792..2eaf44024 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/facade/IStockInOrderService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/facade/IStockInOrderService.java @@ -45,7 +45,7 @@ public interface IStockInOrderService extends IService List queryInStockInfoByInOrderNumber(StockInOrderDTO stockInOrderDTO); - List queryNoticePrint(StockInOrderDTO dto); + List queryNoticePrint(StockInOrderDO stockInOrderDO); - List queryNoticePrintDetail(StockInOrderDTO stockInOrderDTO); + List queryNoticePrintDetail(StockInOrderDO stockInOrderDO); } diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/mapper/StockInOrderMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/mapper/StockInOrderMapper.java index 254a43952..fe6809884 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/mapper/StockInOrderMapper.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/mapper/StockInOrderMapper.java @@ -24,7 +24,7 @@ public interface StockInOrderMapper extends BaseMapper List queryInStockInfoByInOrderNumber(StockInOrderDTO stockInOrderDTO); - List queryNoticePrint(StockInOrderDTO stockInOrderDTO); + List queryNoticePrint(StockInOrderDO stockInOrderDO); - List queryNoticePrintDetail(StockInOrderDTO stockInOrderDTO); + List queryNoticePrintDetail(StockInOrderDO stockInOrderDO); } diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/persistence/StockInOrderImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/persistence/StockInOrderImpl.java index 851f76606..4bedf4ca5 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/persistence/StockInOrderImpl.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/persistence/StockInOrderImpl.java @@ -91,12 +91,12 @@ public class StockInOrderImpl extends ServiceImpl queryNoticePrint(StockInOrderDTO stockInOrderDTO) { - return stockInOrderMapper.queryNoticePrint(stockInOrderDTO); + public List queryNoticePrint(StockInOrderDO stockInOrderDO) { + return stockInOrderMapper.queryNoticePrint(stockInOrderDO); } @Override - public List queryNoticePrintDetail(StockInOrderDTO stockInOrderDTO) { - return stockInOrderMapper.queryNoticePrintDetail(stockInOrderDTO); + public List queryNoticePrintDetail(StockInOrderDO stockInOrderDO) { + return stockInOrderMapper.queryNoticePrintDetail(stockInOrderDO); } } diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java index 7341613b4..04940b8c3 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java @@ -844,11 +844,11 @@ public class StockInOrderDomainService { return stockInOrderService.queryInStockInfoByInOrderNumber(stockInOrderDTO); } - public List queryNoticePrint(StockInOrderDTO stockInOrderDTO) { - return stockInOrderService.queryNoticePrint(stockInOrderDTO); + public List queryNoticePrint(StockInOrderDO stockInOrderDO) { + return stockInOrderService.queryNoticePrint(stockInOrderDO); } - public List queryNoticePrintDetail(StockInOrderDTO stockInOrderDTO) { - return stockInOrderService.queryNoticePrintDetail(stockInOrderDTO); + public List queryNoticePrintDetail(StockInOrderDO stockInOrderDO) { + return stockInOrderService.queryNoticePrintDetail(stockInOrderDO); } } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockInOrder/StockInOrderApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockInOrder/StockInOrderApi.java index 82089ffcc..f5dc81a31 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockInOrder/StockInOrderApi.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockInOrder/StockInOrderApi.java @@ -190,8 +190,9 @@ public class StockInOrderApi extends BaseController { @ApiOperation("入仓通知单打印查询") @PostMapping("/queryNoticePrint") public AjaxResult queryNoticePrint(@RequestBody StockInOrderDTO stockInOrderDTO) { - List headerList = stockInOrderApplicationService.queryNoticePrint(stockInOrderDTO); - List detailList = stockInOrderApplicationService.queryNoticePrintDetail(stockInOrderDTO); + StockInOrderDO stockInOrderDO = stockInOrderAssembler.toDO(stockInOrderDTO); + List headerList = stockInOrderApplicationService.queryNoticePrint(stockInOrderDO); + List detailList = stockInOrderApplicationService.queryNoticePrintDetail(stockInOrderDO); Map result = new HashMap<>(); if (!headerList.isEmpty()) { result.put("header", headerList.get(0));