陈昶聿
21 小时以前 18925965b55c103283a2fcbb161cceed41139ec6
/system/user/list 增加hospInfoCode\deptInfoCode 匹配
已修改2个文件
90 ■■■■■ 文件已修改
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
@@ -1,6 +1,7 @@
package com.ruoyi.common.core.domain.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.annotation.Excel.ColumnType;
import com.ruoyi.common.annotation.Excel.Type;
@@ -187,6 +188,18 @@
    private String deptInfo;
    /**
     * 科室信息(按完整 Code 匹配)
     */
    @ApiModelProperty(value = "科室信息(按完整 Code 匹配)")
    private String hospInfoCode;
    /**
     * 病区信息(按完整 Code 匹配)
     */
    @ApiModelProperty(value = "病区信息(按完整 Code 匹配)")
    private String deptInfoCode;
    /**
     * 部门对象
     */
    @ApiModelProperty(value = "部门对象")
@@ -339,6 +352,51 @@
        this.deptInfo = deptInfo;
    }
    public String getHospInfoCode() {
        return this.hospInfoCode;
    }
    public void setHospInfoCode(String hospInfoCode) {
        this.hospInfoCode = hospInfoCode;
    }
    public String getDeptInfoCode() {
        return this.deptInfoCode;
    }
    public void setDeptInfoCode(String deptInfoCode) {
        this.deptInfoCode = deptInfoCode;
    }
    /**
     * 科室 Code 列表,支持 hospInfoCode=D001,D003 这种逗号分隔的多 Code 传参
     */
    @JsonIgnore
    public List<String> getHospInfoCodeList() {
        return splitCodes(this.hospInfoCode);
    }
    /**
     * 病区 Code 列表,支持 deptInfoCode=W001,W003 这种逗号分隔的多 Code 传参
     */
    @JsonIgnore
    public List<String> getDeptInfoCodeList() {
        return splitCodes(this.deptInfoCode);
    }
    private static List<String> splitCodes(String codes) {
        if (codes == null || codes.trim().isEmpty()) {
            return Collections.emptyList();
        }
        List<String> codeList = new ArrayList<>();
        for (String code : codes.split(",")) {
            if (code != null && !code.trim().isEmpty()) {
                codeList.add(code.trim());
            }
        }
        return codeList;
    }
    public SysUser(Long userId) {
        this.userId = userId;
    }
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -173,6 +173,22 @@
            AND (u.dept_id = #{deptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{deptId},
            ancestors) ))
        </if>
        <if test="hospInfoCodeList != null and hospInfoCodeList.size() > 0">
            <!-- 科室多 Code 任一匹配:D001,D003 等价于 D001 或 D003,顺序无关 -->
            AND (
            <foreach collection="hospInfoCodeList" item="code" separator=" OR ">
                u.hosp_info LIKE concat('%"', #{code}, '"%')
            </foreach>
            )
        </if>
        <if test="deptInfoCodeList != null and deptInfoCodeList.size() > 0">
            <!-- 病区多 Code 任一匹配:W001,W003 等价于 W001 或 W003,顺序无关 -->
            AND (
            <foreach collection="deptInfoCodeList" item="code" separator=" OR ">
                u.dept_info LIKE concat('%"', #{code}, '"%')
            </foreach>
            )
        </if>
        <!-- 数据范围过滤 -->
        ${params.dataScope}
    </select>
@@ -242,6 +258,22 @@
            AND (u.dept_id = #{deptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{deptId},
            ancestors) ))
        </if>
        <if test="hospInfoCodeList != null and hospInfoCodeList.size() > 0">
            <!-- 科室多 Code 任一匹配:D001,D003 等价于 D001 或 D003,顺序无关 -->
            AND (
            <foreach collection="hospInfoCodeList" item="code" separator=" OR ">
                u.hosp_info LIKE concat('%"', #{code}, '"%')
            </foreach>
            )
        </if>
        <if test="deptInfoCodeList != null and deptInfoCodeList.size() > 0">
            <!-- 病区多 Code 任一匹配:W001,W003 等价于 W001 或 W003,顺序无关 -->
            AND (
            <foreach collection="deptInfoCodeList" item="code" separator=" OR ">
                u.dept_info LIKE concat('%"', #{code}, '"%')
            </foreach>
            )
        </if>
        <if test="pageSize != null  and pageNum != null">limit ${pageSize} OFFSET ${pageNum}</if>
    </select>