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

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> </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
LEFT JOIN BLADE_ROLE rl BLADE_USER u
ON TO_NUMBER(u.ROLE_ID) = rl.ID CROSS JOIN (
AND rl.IS_DELETED = 0 SELECT LEVEL AS lv FROM DUAL CONNECT BY LEVEL &lt;= 100 -- 假设最多100个角色,可调整
LEFT JOIN ST_USER_RIGHT r ) lvs
ON u.ID = r.USER_ID -- 拆分角色ID:只保留当前LEVEL对应的角色ID
AND r.UR_TYPE = #{urType} LEFT JOIN BLADE_ROLE rl
AND r.THE_ID = #{theId} ON TO_NUMBER(REGEXP_SUBSTR(u.ROLE_ID, '[^,]+', 1, lvs.lv)) = rl.ID
AND r.IS_DELETED = 0 AND rl.IS_DELETED = 0
WHERE r.ID IS NULL AND rl.ROLE_ALIAS = '保管员'
AND rl.ROLE_ALIAS = '保管员' -- 原有的权限关联逻辑
AND rl.ID IS NOT NULL LEFT JOIN ST_USER_RIGHT r
AND u.IS_DELETED = 0 ON u.ID = r.USER_ID
-- 过滤掉ROLE_ID非数字的记录,避免转换失败 AND r.UR_TYPE = #{urType}
AND REGEXP_LIKE(u.ROLE_ID, '^[0-9]+$'); 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>
<select id="findByTheIdAndUrType" resultMap="stUserRightResultMap"> <select id="findByTheIdAndUrType" resultMap="stUserRightResultMap">

Loading…
Cancel
Save