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>