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

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

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

Loading…
Cancel
Save