实体类
package com.jeesite.modules.openauth.dto;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
public class SsoPersonnelInfoDTO {
private String id; // 主键id
private String updateBy;
private String createBy;
private Date updateDate;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date createDate; // 创建时间
private String status; // 状态(0正常 1删除 2停用)
private String code; // 账户
private String idCard; // 身份证号
private String name; // 姓名
private String sex; // 性别
private String maritalStatus; // 婚姻状况
private String nation; // 民族
private String politicalOutlook; // 政治面貌
private String birthday; // 出生日期
private String nativePlace; // 籍贯
private String homeAddress; // 居住地址
private String filesAddress; // 档案所在地
private String family; // 家庭信息
private String education; // 学历
private String fulltimeSchool; // 毕业院校
private String fulltimeMajor; // 主专业
private String phone; // 联系电话
private String jobCode; // 主聘岗位
private String deptCode; // 主属部门
private String zipCode; // 邮编
private String qq; // QQ号
private String wx; // 微信号
private String workDate; // 参加工作时间
private String checkinDate; // 入职时间
private String workExperience; // 工作简历
private String isAttendance; // 是否考勤
private String isDepart; // 是否离职
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date departDate; // 离职日期
private String departReason; // 离职原因
private String unitId; // 单位id
private String departmentId; // 部门id
private String jobSid; // 岗位id
private String monthWage; // 月工资
private String rankTime; // 任现职级时间
private String rank2; // 职级(关联字典表:高层领导、中层正职、中层副职、主管、副主管、专员)
private String age; // 年龄(可根据出生年月自动计算)
private String joinDate; // 加入时间
private String healthy; // 健康状况(字典项)
private String email; // 邮箱
private String englishLevel; // 英语水平
private String computerLevel; // 计算机水平
private String birthPlace; // 出生地
private String residencesAddress; // 户口所在地
private String workingState; // 在职状态(字典项)
private String specialty; // 熟悉专业有何特长
private String fullTimeDegree; // 全日制学位(字典项)
private String fullTimeEducation; // 全日制最高学历(字典项)
private String jobFirstEducation; // 在职第一学历(字典项)
private Date retireDate; // 退休时间
private String jobFirstDegree; // 在职第一学位(字典项)
private String jobFirstMajor; // 在职第一专业
private String jobFirstSchool; // 在职第一毕业院校
private String jobHighEsteducation; // 在职最高学历(字典项)
private String jobHighEstdegree; // 在职最高学位(字典项)
private String jobHighEstmajor; // 在职最高专业
private String jobHighestSchool; // 在职最高毕业院校
private String delFlag; // 删除标志
private String certificates; // 证书
private String titles; // 职务
private String userSort; // 人员排序
private String createUnit; // 创建人单位
private String createDept; // 创建人部门
private String orgRecBirthday; // 组织认定出生日期
private String carNo; // 车牌号码
private String remark; // 备注
private String isShow; // 是否显示【0否1是】
private String joinPartyDate; // 入党时间
private String dataSourceSystemKey; // 数据来源系统
// 分页页号
private Integer pageIndex;
// 页面大小
private Integer pageSize;
}
通过反射进行组装QueryWrapper 并查询
public String queryUserByCondition( SsoPersonnelInfoDTO ssoPersonnelInfoDTO ){
QueryWrapper queryWrapper = new QueryWrapper<>();
Field[] fields = ssoPersonnelInfoDTO.getClass().getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
try {
Object val = field.get(ssoPersonnelInfoDTO);
String keyName = field.getName();
String key = StrUtil.toUnderlineCase(keyName);
if(!keyName.equals("pageIndex") && !keyName.equals("pageSize") && !keyName.equals("sort") ){
if( key.contains("_date") || key.contains("_time") || key.contains("birthday") ){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
if( null != val ){
String formatStart = sdf.format(val) + " 00:00:00";
String formatEnd = sdf.format(val) + " 23:59:59";
queryWrapper.gt( key, formatStart);
queryWrapper.lt( key, formatEnd);
}
}else {
queryWrapper.like(val != null, key, val);
}
}
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
if(StringUtils.isNotEmpty( ssoPersonnelInfoDTO.getSort() )){
String field = ssoPersonnelInfoDTO.getSort().substring(0, ssoPersonnelInfoDTO.getSort().indexOf(","));
String keyName = StrUtil.toUnderlineCase( field);
String orderBy = ssoPersonnelInfoDTO.getSort().substring(
ssoPersonnelInfoDTO.getSort().indexOf(","),ssoPersonnelInfoDTO.getSort().length());
if(orderBy.contains("asc")){
queryWrapper.orderByAsc(keyName);
}else {
queryWrapper.orderByDesc(keyName);
}
}else {
queryWrapper.orderByDesc("create_date");
}
Integer pageIndex = ssoPersonnelInfoDTO.getPageIndex();
if (null == pageIndex || pageIndex <= 0 ) {
pageIndex = 1;
}
Integer pageSize = ssoPersonnelInfoDTO.getPageSize();
if (null == pageSize || pageSize <= 0) {
pageSize = 20;
}
queryWrapper.eq("status", EnumStatus.NORMAL.getValue());
IPage iPage = openAuthPersonnelInfoDao.selectPage(new Page<>( pageIndex , pageSize ), queryWrapper);
List dtoList = iPage.getRecords();
//脱敏
if (null != dtoList) {
for (SsoPersonnelInfo ssoPersonnelInfo : dtoList) {
encryptDataCenterPersonnel(ssoPersonnelInfo);
}
} else {
dtoList = new ArrayList<>();
}
//转换为json字符串
String json = JSON.toJSONString(iPage);
return json;
}
对数据进行脱密处理
public void encryptDataCenterPersonnel(SsoPersonnelInfo res) {
//Java实现对手机号、身份证号、护照号脱敏_java 身份证号脱敏_ACGkaka_的博客-CSDN博客
//https://blog.csdn.net/qq_33204709/article/details/129209039
//身份证号 脱敏
String idCard = res.getIdCard();
if (ObjectUtil.isNotEmpty(idCard)) {
String encryptIdCard = DesensitizedUtil.idCardNum(idCard, 3, 4);
res.setIdCard(encryptIdCard);
}
//手机号脱敏
String phone = res.getPhone();
if (ObjectUtil.isNotEmpty(phone)) {
String encryptPhone = DesensitizedUtil.mobilePhone(phone);
res.setPhone(encryptPhone);
}
}