diff --git a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/bean/request/ScopeUserQuery.java b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/bean/request/ScopeUserQuery.java new file mode 100644 index 0000000..ccf973b --- /dev/null +++ b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/bean/request/ScopeUserQuery.java @@ -0,0 +1,23 @@ +package org.jeecg.modules.system.bean.request; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class ScopeUserQuery { + /** + * 所属机构 + */ + @Schema(title = "所属机构") + private String orgCode; + /** + * 昵称 + */ + @Schema(title = "昵称") + private String realName; + /** + * 工号 + */ + @Schema(title = "工号") + private String workNo; +} diff --git a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/bean/response/ScopeUserVO.java b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/bean/response/ScopeUserVO.java new file mode 100644 index 0000000..137b13d --- /dev/null +++ b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/bean/response/ScopeUserVO.java @@ -0,0 +1,70 @@ +package org.jeecg.modules.system.bean.response; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class ScopeUserVO { + /** + * 用户id + */ + @Schema(title = "用户id") + private String userId; + /** + * 所属单位code + */ + @Schema(title = "所属单位code") + private String orgCode; + /** + * 所属单位名称 + */ + @Schema(title = "所属单位名称") + private String orgName; + /** + * 所属部门code + */ + @Schema(title = "所属部门code") + private String departCode; + /** + * 所属部门名称 + */ + @Schema(title = "所属部门名称") + private String departName; + /** + * 姓名 + */ + @Schema(title = "姓名") + private String realName; + /** + * 工号 + */ + @Schema(title = "工号") + private String workNo; + /** + * 性别 + */ + @Schema(title = "性别") + private Integer sex; + /** + * 年龄 + */ + @Schema(title = "年龄") + private Integer age; + /** + * 身高 + */ + @Schema(title = "身高") + private BigDecimal height; + /** + * 体重 + */ + @Schema(title = "体重") + private BigDecimal weight; + /** + * BMI + */ + @Schema(title = "BMI") + private BigDecimal bmi; +} diff --git a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java index b9e9954..74e88d3 100644 --- a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java +++ b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java @@ -35,9 +35,12 @@ import org.jeecg.common.system.vo.SysUserModel; import org.jeecg.common.util.*; import org.jeecg.config.mybatis.MybatisPlusSaasConfig; import org.jeecg.modules.base.service.BaseCommonService; +import org.jeecg.modules.system.bean.request.ScopeUserQuery; +import org.jeecg.modules.system.bean.response.ScopeUserVO; import org.jeecg.modules.system.bean.response.UserBmiGroupInfo; import org.jeecg.modules.system.entity.*; import org.jeecg.modules.system.manager.UserCacheManager; +import org.jeecg.modules.system.message.model.po.SysMessageNotice; import org.jeecg.modules.system.model.DepartIdModel; import org.jeecg.modules.system.model.SysUserSysDepartModel; import org.jeecg.modules.system.service.*; @@ -2315,4 +2318,17 @@ public class SysUserController { Result> userInfoMap(@RequestBody List idCards){ return Result.ok(sysUserService.userInfoMap(idCards)); } + + /** + * 筛选用户 + * @param query 条件 + * @return 返回 + */ + @GetMapping("scopeUserList") + Result> scopeUserList(ScopeUserQuery query, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize){ + Page page = new Page<>(pageNo, pageSize); + return Result.ok(sysUserService.scopeUserList(query,page)); + } } diff --git a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java index f1950cb..e6d7a5d 100644 --- a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java +++ b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java @@ -24,6 +24,8 @@ import org.jeecg.common.system.bean.response.GroupUser; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.system.vo.SysUserCacheInfo; import org.jeecg.common.system.vo.SysUserModel; +import org.jeecg.modules.system.bean.request.ScopeUserQuery; +import org.jeecg.modules.system.bean.response.ScopeUserVO; import org.jeecg.modules.system.bean.response.UserBmiGroupInfo; import org.jeecg.modules.system.entity.EmpImportNewVO; import org.jeecg.modules.system.entity.SysRoleIndex; @@ -646,4 +648,6 @@ public interface ISysUserService extends IService { List getUserInfoByTypeCode(String findCode); List findUserByParam(String findCode); + + IPage scopeUserList(ScopeUserQuery query,IPage page); } diff --git a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java index 97ba77b..635af1d 100644 --- a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java +++ b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java @@ -17,6 +17,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.yulichang.query.MPJLambdaQueryWrapper; +import com.github.yulichang.wrapper.MPJLambdaWrapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; @@ -66,6 +68,8 @@ import org.jeecg.modules.imports.service.ICommonImportsInfoService; import org.jeecg.modules.manager.ISysCache; import org.jeecg.modules.manager.SysCacheImpl; import org.jeecg.modules.remote.mapper.UserDataRecordBmiMapper; +import org.jeecg.modules.system.bean.request.ScopeUserQuery; +import org.jeecg.modules.system.bean.response.ScopeUserVO; import org.jeecg.modules.system.bean.response.UserBmiGroupInfo; import org.jeecg.modules.system.entity.*; import org.jeecg.modules.system.manager.SysCloudManager; @@ -3839,4 +3843,60 @@ public class SysUserServiceImpl extends ServiceImpl impl } } + @Override + public IPage scopeUserList(ScopeUserQuery query, IPage page){ + // 构建 MPJ 查询包装器 + MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper() + .selectAs(SysUser::getId, ScopeUserVO::getUserId) + .selectAs(SysUser::getOrgCode, ScopeUserVO::getOrgCode) + .selectAs(SysUser::getRealname, ScopeUserVO::getRealName) + .selectAs(SysUser::getWorkNo, ScopeUserVO::getWorkNo) + .selectAs(SysUser::getSex, ScopeUserVO::getSex) + // 左连接 health_user_employee_ex 表 + .leftJoin(HealthUserEmployeeEx.class, HealthUserEmployeeEx::getId, SysUser::getId) + // 选择 HealthUserEmployeeEx 表的字段 + .selectAs(HealthUserEmployeeEx::getHeight, ScopeUserVO::getHeight) + .selectAs(HealthUserEmployeeEx::getWeight, ScopeUserVO::getWeight) + .selectAs(HealthUserEmployeeEx::getBmi, ScopeUserVO::getBmi) + .selectAs(HealthUserEmployeeEx::getCurrentAge, ScopeUserVO::getAge); + + // 添加查询条件 + if (StrUtil.isNotBlank(query.getOrgCode())) { + queryWrapper.likeRight(SysUser::getOrgCode, query.getOrgCode()); + } + if (StrUtil.isNotBlank(query.getRealName())) { + queryWrapper.like(SysUser::getRealname, query.getRealName()); + } + if (StrUtil.isNotBlank(query.getWorkNo())) { + queryWrapper.like(SysUser::getWorkNo, query.getWorkNo()); + } + + // 添加默认条件:未删除、正常状态、员工 + queryWrapper.eq(SysUser::getDelFlag, CommonConstant.DEL_FLAG_0) + .eq(SysUser::getStatus, CommonConstant.STATUS_1) + .eq(SysUser::getPersonType, CommonConstant.PERSON_TYPE_DOCTOR_1); + + // 执行分页查询 + IPage resultPage = userMapper.selectJoinPage(page, ScopeUserVO.class, queryWrapper); + + // 填充部门名称 + if (CollUtil.isNotEmpty(resultPage.getRecords())) { + resultPage.getRecords().forEach(vo -> { + if (StrUtil.isNotBlank(vo.getOrgCode())) { + SysDepart secondDepart = sysCache.getDepartByOrgCode(GlobalUtils.getSecondDepartOrgCode(vo.getOrgCode())); + if (null != secondDepart) { + vo.setOrgCode(secondDepart.getOrgCode()); + vo.setOrgName(secondDepart.getDepartName()); + } + SysDepart thirdDepart = sysCache.getDepartByOrgCode(GlobalUtils.getThirdDepartOrgCode(vo.getOrgCode())); + if (null != thirdDepart) { + vo.setDepartCode(thirdDepart.getOrgCode()); + vo.setDepartName(thirdDepart.getDepartName()); + } + } + }); + } + + return resultPage; + } }