本专栏前面的几篇已经实现了eladmin的基本操作,本篇开发简历维护模块,对简历表里面的内容进行操作。其中,因为存储的字段是工作开始时间和出生日期,而返回的数据需要展示工作年限和年龄,所以涉及到了增加两个返回参数。
数据表保存了简历最基本的信息,而详细信息(比如工作经历、项目经验等)直接存储在了完整内容字段里面,同时有简历附件支持直接查看。
不重复写了,可以参考前面的一篇:https://blog.csdn.net/m0_58095675/article/details/124656816
其中,生成代码的位置:系统工具–代码生成。
增加查询返回参数默认情况下,分页查询的服务层代码:
@Override
public Map queryAll(ResumeQueryCriteria criteria, Pageable pageable){
criteria.setIsDelete(0);
Page page = resumeRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
return PageUtil.toPage(page.map(resumeMapper::toDto));
}
很短的几行代码,逻辑也比较清晰。
1. 查询出来Resume分页列表数据 2. 将Resume实体类转化为Dto 3. 将dto分页数据返回
如果要增加返回参数,可以在第二步后面增加一步:将Dto数据列表逐条取出来,然后添加上新的内容(用mybatis就方便多了,直接改sql语言,but我用的是jpa,各有优略吧)。
首先修改对应的dto,增加年龄和工作年限字段,用于赋值后返回。
package me.zhengjie.xingchenlie.business.service.dto;
import java.io.Serializable;
import java.sql.Timestamp;
import com.alibaba.fastjson.annotation.JSONField;
import com.alibaba.fastjson.serializer.ToStringSerializer;
import lombok.Data;
@Data
public class ResumeDto implements Serializable {
@JSONField(serializeUsing = ToStringSerializer.class)
private Long zid;
private Timestamp createTime;
private Timestamp updateTime;
private Integer isDelete;
private String fileName;
private String source;
private String name;
private String phoneNumber;
private String email;
private String gender;
private String address;
private String brithDay;
private Integer age;
private String workStartYear;
private Integer workYear;
private String school;
private String degree;
private String major;
private String currentCompany;
private String currentPosition;
private String currentSalary;
private String desiredSalary;
private String fileId;
private String language;
private String resumeRawtext;
}
然后修改服务层代码,计算两个数值并放到dto中(因为解析的完整内容特别长,同时前端列表也用不到,所以一并赋值为空了):
@Override
public Map queryAll(ResumeQueryCriteria criteria, Pageable pageable){
Page page = resumeRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
Page dto = page.map(resumeMapper::toDto);
List resultDtos = dto.getContent();
for(ResumeDto resume : resultDtos) {
if(StringUtils.isNotBlank(resume.getBrithDay()) && resume.getBrithDay().length() >= 4) {
int age = Integer.parseInt(Dates.now().substring(0,4))-Integer.parseInt(resume.getBrithDay().substring(0,4));
resume.setAge(age);
}
if(StringUtils.isNotBlank(resume.getWorkStartYear()) && resume.getWorkStartYear().length() >= 4) {
int workYear = Integer.parseInt(Dates.now().substring(0,4))-Integer.parseInt(resume.getWorkStartYear().substring(0,4));
resume.setWorkYear(workYear);
}
resume.setResumeRawtext("");
}
return PageUtil.toPage(dto);
}
前端列表字段
前端将多返回的两个字段展示,直接修改el-table-column的prop和label即可。
列表最终展示效果(字段过多,有横线滚动条,后面的截图内容看不到):



