EL-ADMIN增加返回字段

前言

本专栏前面的几篇已经实现了eladmin的基本操作,本篇开发简历维护模块,对简历表里面的内容进行操作。其中,因为存储的字段是工作开始时间和出生日期,而返回的数据需要展示工作年限和年龄,所以涉及到了增加两个返回参数。

数据表

保存了简历最基本的信息,而详细信息(比如工作经历、项目经验等)直接存储在了完整内容字段里面,同时有简历附件支持直接查看。
在这里插入图片描述

代码自动生成工具

不重复写了,可以参考前面的一篇:https://blog.csdn.net/m0_58095675/article/details/124656816

其中,生成代码的位置:系统工具–代码生成。

增加查询返回参数

默认情况下,分页查询的服务层代码:

    @Override
    public Map<String,Object> queryAll(ResumeQueryCriteria criteria, Pageable pageable){
    	criteria.setIsDelete(0);
        Page<Resume> 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;

/**
* @website https://el-admin.vip
* @description /
* @author lootaa
* @date 2022-05-10
**/
@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;

    /** 邮件Id */
    private String fileId;

    /** 简历语言 */
    private String language;

    /** 解析的完整内容 */
    private String resumeRawtext;
}

然后修改服务层代码,计算两个数值并放到dto中(因为解析的完整内容特别长,同时前端列表也用不到,所以一并赋值为空了):

    @Override
    public Map<String,Object> queryAll(ResumeQueryCriteria criteria, Pageable pageable){
        Page<Resume> page = resumeRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
        Page<ResumeDto> dto = page.map(resumeMapper::toDto);
        List<ResumeDto> 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即可。
列表最终展示效果(字段过多,有横线滚动条,后面的截图内容看不到):
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lootaa

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值