陈昶聿
2 天以前 3d047130b059efd46f56be37465a751ab16ee8cb
ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
@@ -283,17 +283,36 @@
        where dept_id = #{deptId}
    </delete>
    <!--
        查询科室/病区:
          · userId 有值(普通用户 / 用户编辑页:查某个用户名下的部门)→ 关联 sys_user_dept;
          · userId 为空(管理员:看本机构全部科室/病区)→ 只查 sys_dept,不关联关系表。
        为什么要分支:HIS 采集写 sys_user_dept 时明确排除了 admin(CollectHISMapper 的
        yhyksxx/yhybfxx 都有 ud.user_id != 'admin'),管理员在关系表里没有数据,走 inner join
        会得到空列表,表现就是「登录成功但创建任务时选不到科室病区」。
        另外不做院区过滤(管理员跨院区),院区隔离只对普通用户生效。
    -->
    <select id="selectSysDeptListBySysUserDept" parameterType="com.ruoyi.common.core.domain.entity.SysUserDept"
            resultMap="SysDeptResult">
        <include refid="selectDeptVo"/>
        inner join sys_user_dept ud
        on d.dept_code = ud.dept_code
        where 1=1
        and d.del_flag = 0
        and ud.del_flag = 0
        <if test="orgid != null">and d.orgid = #{orgid} and ud.orgid = #{orgid}</if>
        <if test="campusid != null">and d.campusid = #{campusid}</if>
        <if test="userId != null">and ud.user_id = #{userId}</if>
        <if test="deptType != null and deptType != ''">and d.dept_type = #{deptType}</if>
        <choose>
            <when test="userId != null">
                <include refid="selectDeptVo"/>
                inner join sys_user_dept ud
                on d.dept_code = ud.dept_code
                where 1=1
                and d.del_flag = 0
                and ud.del_flag = 0
                <if test="orgid != null">and d.orgid = #{orgid} and ud.orgid = #{orgid}</if>
                <if test="campusid != null">and d.campusid = #{campusid}</if>
                <if test="deptType != null and deptType != ''">and d.dept_type = #{deptType}</if>
                and ud.user_id = #{userId}
            </when>
            <otherwise>
                <include refid="selectDeptVo"/>
                where d.del_flag = 0
                <if test="orgid != null">and d.orgid = #{orgid}</if>
                <if test="deptType != null and deptType != ''">and d.dept_type = #{deptType}</if>
            </otherwise>
        </choose>
    </select>
</mapper>