仓库管理库管设置查询人员的修改更新

liweidong
wusiyu 1 month ago
parent 2e5ba4092c
commit 1775738338
  1. 26
      blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StUserRightMapper.xml

@ -19,23 +19,33 @@
</resultMap> </resultMap>
<select id="findNoUserRightByTheId" resultType="org.springblade.system.pojo.entity.User"> <select id="findNoUserRightByTheId" resultType="org.springblade.system.pojo.entity.User">
SELECT DISTINCT u.* SELECT DISTINCT
FROM BLADE_USER u u.*
-- 关联角色表,筛选库管员角色 FROM
BLADE_USER u
CROSS JOIN (
SELECT LEVEL AS lv FROM DUAL CONNECT BY LEVEL &lt;= 100 -- 假设最多100个角色,可调整
) lvs
-- 拆分角色ID:只保留当前LEVEL对应的角色ID
LEFT JOIN BLADE_ROLE rl LEFT JOIN BLADE_ROLE rl
ON TO_NUMBER(u.ROLE_ID) = rl.ID ON TO_NUMBER(REGEXP_SUBSTR(u.ROLE_ID, '[^,]+', 1, lvs.lv)) = rl.ID
AND rl.IS_DELETED = 0 AND rl.IS_DELETED = 0
AND rl.ROLE_ALIAS = '保管员'
-- 原有的权限关联逻辑
LEFT JOIN ST_USER_RIGHT r LEFT JOIN ST_USER_RIGHT r
ON u.ID = r.USER_ID ON u.ID = r.USER_ID
AND r.UR_TYPE = #{urType} AND r.UR_TYPE = #{urType}
AND r.THE_ID = #{theId} AND r.THE_ID = #{theId}
AND r.IS_DELETED = 0 AND r.IS_DELETED = 0
WHERE r.ID IS NULL WHERE
AND rl.ROLE_ALIAS = '保管员' -- 核心条件:无指定权限
r.ID IS NULL
-- 确保用户关联到了库管员角色
AND rl.ID IS NOT NULL AND rl.ID IS NOT NULL
-- 用户未删除
AND u.IS_DELETED = 0 AND u.IS_DELETED = 0
-- 过滤掉ROLE_ID非数字的记录,避免转换失败 -- 过滤掉拆分后无角色ID的行(避免无效匹配)
AND REGEXP_LIKE(u.ROLE_ID, '^[0-9]+$'); AND REGEXP_SUBSTR(u.ROLE_ID, '[^,]+', 1, lvs.lv) IS NOT NULL;
</select> </select>
<select id="findByTheIdAndUrType" resultMap="stUserRightResultMap"> <select id="findByTheIdAndUrType" resultMap="stUserRightResultMap">

Loading…
Cancel
Save