diff --git a/zt-module-qms/zt-module-qms-api/src/main/java/com/zt/plat/module/qms/enums/QmsPermissionConstant.java b/zt-module-qms/zt-module-qms-api/src/main/java/com/zt/plat/module/qms/enums/QmsPermissionConstant.java index 1ee3f912..954ddb60 100644 --- a/zt-module-qms/zt-module-qms-api/src/main/java/com/zt/plat/module/qms/enums/QmsPermissionConstant.java +++ b/zt-module-qms/zt-module-qms-api/src/main/java/com/zt/plat/module/qms/enums/QmsPermissionConstant.java @@ -25,5 +25,5 @@ public interface QmsPermissionConstant { String DEVICE_MANAGER = "qms_device_manager"; //设备管理员 - public static final String ADMIN_ROLE = "ytjyAdmin"; // 超级管理员 标识 + String ADMIN_ROLE = "ytjyAdmin"; // 超级管理员 标识 } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/controller/vo/ConfigWarehouseLocationPageReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/controller/vo/ConfigWarehouseLocationPageReqVO.java index 106af708..9553ce3e 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/controller/vo/ConfigWarehouseLocationPageReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/controller/vo/ConfigWarehouseLocationPageReqVO.java @@ -61,6 +61,9 @@ public class ConfigWarehouseLocationPageReqVO extends PageParam { @Schema(description = "查询时进行权限过滤") private String permissionFilterFlag; + @Schema(description = "是否为管理员-可查看全部数据") + private Boolean adminFlag; + @Schema(description = "查询用-权限角色") private Set roleIds; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/dal/mapper/ConfigWarehouseLocationMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/dal/mapper/ConfigWarehouseLocationMapper.java index f8982ac9..2b3965c4 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/dal/mapper/ConfigWarehouseLocationMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/dal/mapper/ConfigWarehouseLocationMapper.java @@ -16,6 +16,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.stream.Collectors; /** * 存放位置 Mapper @@ -29,9 +30,7 @@ public interface ConfigWarehouseLocationMapper extends BaseMapperX wrapper = new MPJLambdaWrapperX<>(); //仓库 - wrapper.leftJoin(ConfigWarehouseLocationParDO.class, ConfigWarehouseLocationParDO::getId, ConfigWarehouseLocationDO::getParentId) - // 权限 - .leftJoin(ConfigPermissionDO.class, ConfigPermissionDO::getSourceId, ConfigWarehouseLocationDO::getId); + wrapper.leftJoin(ConfigWarehouseLocationParDO.class, ConfigWarehouseLocationParDO::getId, ConfigWarehouseLocationDO::getParentId); wrapper.selectAll(ConfigWarehouseLocationDO.class) .selectAs(ConfigWarehouseLocationParDO::getName, ConfigWarehouseLocationRespVO::getWarehouseName) .selectAs(ConfigWarehouseLocationParDO::getCode, ConfigWarehouseLocationRespVO::getWarehouseCode) @@ -48,12 +47,19 @@ public interface ConfigWarehouseLocationMapper extends BaseMapperX - wrapper1.in(ConfigPermissionDO::getTargetId, reqVO.getRoleIds()) - .or() - .eqIfExists(ConfigWarehouseLocationDO::getCreator, SecurityFrameworkUtils.getLoginUserId())) - .orderByDesc(ConfigWarehouseLocationDO::getSortNo); + ; + Boolean adminFlag = reqVO.getAdminFlag(); + // 角色权限 - 使用 exists 子查询 + if (adminFlag == null || !adminFlag && CollUtil.isNotEmpty(reqVO.getRoleIds())) { + String roleIdsStr = reqVO.getRoleIds().stream() + .map(String::valueOf) + .collect(Collectors.joining(",")); + wrapper.and(wrapper1 -> + wrapper1.exists("SELECT 1 FROM t_cfg_perm WHERE t_cfg_perm.SRC_ID = t.ID AND t_cfg_perm.deleted = 0 AND t_cfg_perm.TGT_ID IN (" + roleIdsStr + ")") + ); + } + + wrapper.orderByDesc(ConfigWarehouseLocationDO::getSortNo); return selectJoinPage(reqVO, ConfigWarehouseLocationRespVO.class, wrapper); } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/service/ConfigWarehouseLocationServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/service/ConfigWarehouseLocationServiceImpl.java index 2428b7b9..cdfd482a 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/service/ConfigWarehouseLocationServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/service/ConfigWarehouseLocationServiceImpl.java @@ -3,6 +3,7 @@ package com.zt.plat.module.qms.business.config.service; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.zt.plat.framework.common.biz.system.permission.PermissionCommonApi; import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; import com.zt.plat.module.qms.business.config.controller.vo.ConfigPermissionSaveReqVO; @@ -12,6 +13,7 @@ import com.zt.plat.module.qms.business.config.controller.vo.ConfigWarehouseLocat import com.zt.plat.module.qms.enums.QmsPermissionConstant; import com.zt.plat.module.qms.enums.QmsWarehouseLocationConstant; import com.zt.plat.module.system.api.permission.PermissionApi; +import com.zt.plat.module.system.api.permission.RoleApi; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; @@ -45,6 +47,8 @@ public class ConfigWarehouseLocationServiceImpl implements ConfigWarehouseLocati @Autowired private PermissionApi permissionApi; + @Autowired + private PermissionCommonApi permissionCommonApi; @Override public ConfigWarehouseLocationRespVO save(ConfigWarehouseLocationSaveReqVO reqVo) { @@ -182,6 +186,8 @@ public class ConfigWarehouseLocationServiceImpl implements ConfigWarehouseLocati // 获取当前用户角色 CommonResult> userRoleIds = permissionApi.getUserRoleIdListByUserId(SecurityFrameworkUtils.getLoginUserId()); pageReqVO.setRoleIds(userRoleIds.getData()); + CommonResult hasAnyRoles = permissionCommonApi.hasAnyRoles(SecurityFrameworkUtils.getLoginUserId(), QmsPermissionConstant.ADMIN_ROLE); + pageReqVO.setAdminFlag(hasAnyRoles.getData()); return configWarehouseLocationMapper.selectPage(pageReqVO); }