From c467931fd66661a29ed261b4d03c5a2b33a896c2 Mon Sep 17 00:00:00 2001 From: zhaoqing <1670883518@qq.com> Date: Wed, 3 Jun 2026 18:42:55 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=A7=E7=89=A9=E7=B1=BB=E5=9E=8B=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E4=BF=AE=E6=94=B9=20=20=E6=9F=A5=E8=AF=A2=E5=B8=81?= =?UTF-8?q?=E5=80=BC=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StockShelfOrderApplicationService.java | 68 +++++++++++++++++++ .../repository/po/ShelfMaterialDetailPO.java | 4 ++ .../repository/po/StockShelfOrderPO.java | 5 ++ .../stockShelfOrder/StockShelfOrderMapper.xml | 7 +- 4 files changed, 83 insertions(+), 1 deletion(-) 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 9256eee40..b1b362a66 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 @@ -280,9 +280,11 @@ public class StockShelfOrderApplicationService { for (ShelfMaterialDetailPO shelfMaterialDetailPO : shelfMaterialDetailPOList) { MaterialBaseInfoPO materialBaseInfoPO = materialBaseInfoMap.get(shelfMaterialDetailPO.getMaterialBaseInfoId()); shelfMaterialDetailPO.setCopyCode(materialBaseInfoPO != null ? materialBaseInfoPO.getCopyCode() : null); + shelfMaterialDetailPO.setCurrency(materialBaseInfoPO != null ? materialBaseInfoPO.getCurrency() : null); for (ShelfMaterialDetailPO child : shelfMaterialDetailPO.getChildren()) { MaterialBaseInfoPO materialBaseInfoPOChild = materialBaseInfoMap.get(child.getMaterialBaseInfoId()); child.setCopyCode(materialBaseInfoPOChild != null ? materialBaseInfoPOChild.getCopyCode() : null); + child.setCurrency(materialBaseInfoPOChild != null ? materialBaseInfoPOChild.getCurrency() : null); } } @@ -2796,4 +2798,70 @@ public class StockShelfOrderApplicationService { stockShelfOrderMapper.updateById(entity); } + public List queryList1(StockShelfOrderDO stockShelfOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null && loginUser.getUserPo() != null){ + Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); + Long frontendOrganizationId = stockShelfOrderDO.getOrganizationId(); // 前端传递的 organizationId + + // 数据权限:根据 organizationId 来设置查询权限 + // 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己 + if (userOrganizationId != null && userOrganizationId == 2827L) { + // 南光组织(organizationId=2827):可以查询所有组织的数据 + // 如果前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + // 如果前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + if (frontendOrganizationId != null) { + // 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤 + stockShelfOrderDO.setOrganizationId(frontendOrganizationId); + stockShelfOrderDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件 + } else { + // 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据 + stockShelfOrderDO.setOrganizationId(null); + stockShelfOrderDO.setTopOrganizationId(null); + } + } else { + // 其他组织:设置organizationId,只查询当前组织的数据 + // 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (frontendOrganizationId != null && userOrganizationId != null) { + // 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致 + if (!frontendOrganizationId.equals(userOrganizationId)) { + // 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询 + stockShelfOrderDO.setOrganizationId(userOrganizationId); + } + // 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值 + } else { + // 前端没有传递 organizationId,使用当前登录用户的组织ID + if (userOrganizationId != null) { + stockShelfOrderDO.setOrganizationId(userOrganizationId); + } + } + // 只有当 organizationId 为 null 时,才使用 topOrganizationId 作为查询条件 + // 如果 organizationId 不为 null,则优先使用 organizationId,不使用 topOrganizationId + if (stockShelfOrderDO.getOrganizationId() == null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + stockShelfOrderDO.setTopOrganizationId(topOrganizationId); + } + } else { + // 对于非2827组织,必须设置 topOrganizationId=2827 + stockShelfOrderDO.setTopOrganizationId(2827L); + } + } + try { + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + if (associationWarehouseCacheDO != null) { + // 如果前端没有传仓库ID,则使用关联仓库ID;前端传了则以前端为准 + if (stockShelfOrderDO.getWarehouseId() == null && associationWarehouseCacheDO.getWarehouseId() != null) { + stockShelfOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + } + } catch (Exception e) { + // 如果获取仓库信息失败,记录日志但不影响查询(允许查询所有仓库) + log.warn("获取用户关联仓库信息失败,将查询所有仓库数据,用户ID:{},错误:{}", loginUser.getUserid(), e.getMessage()); + } + } + return stockShelfOrderDomainService.queryList(stockShelfOrderDO); + } + + } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/po/ShelfMaterialDetailPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/po/ShelfMaterialDetailPO.java index 7e5e8abd3..6fa213b59 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/po/ShelfMaterialDetailPO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/po/ShelfMaterialDetailPO.java @@ -383,4 +383,8 @@ public class ShelfMaterialDetailPO extends BaseVOEntity { @ApiModelProperty("批次号") @Excel(name = "批次号") private String batchNo; + + @ApiModelProperty("币制") + @Excel(name = "币制") + private String currency; } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/po/StockShelfOrderPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/po/StockShelfOrderPO.java index 4ccbfec06..4598df5fc 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/po/StockShelfOrderPO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/po/StockShelfOrderPO.java @@ -135,6 +135,11 @@ public class StockShelfOrderPO extends StockInOrderBasePO { @ApiModelProperty("推送人姓名") private String pushByName; + + @ApiModelProperty("货物类型 0-物料 1-半成品 2-成品") + private Integer goodsType; + + @ApiModelProperty("批次号") @Excel(name = "批次号") private String batchNo; diff --git a/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml b/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml index a4bc08035..4c76fa732 100644 --- a/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml +++ b/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml @@ -30,6 +30,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -38,7 +39,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" a.in_order_number, a.receipt_order_number,a.receipt_task_number, a.shelf_order_number,a.status, a.receipt_quantity, a.shelves_quantity, a.material_quantity, a.shelves_material_quantity, a.abnormal,a.task_distribution, a.task_distribution_time, a.operators_by, a.remark, a.create_time, a.create_by, a.create_by_name, a.update_time, a.update_by, a.update_by_name, a.del_flag - ,a.push_status,a.push_time,a.push_by,a.push_by_name + ,a.push_status,a.push_time,a.push_by,a.push_by_name, + (SELECT m.goods_type FROM shelf_material_detail d + JOIN material_base_info m ON d.material_base_info_id = m.material_base_info_id + WHERE d.shelf_order_number = a.shelf_order_number AND d.level = 1 + LIMIT 1) AS goods_type