目录:
(1)员工管理准备
(2)获取所有员工分页查询
(3)获取所有员工分页测试
(4)添加员工其前期准备
(5)员工更新及删除
(6)EasyPoi注解使用
(7)导出员工数据
(8)导入员工数据
(1)员工管理准备
t_employee:
民族表:t_nation:
政治面貌表:t_politics表:
配置分页插件:MyBatisPlusConfig:
package com.xxxx.server.config;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* Mybatis 分页配置
*
* @author zhanglishen
*
*/
@Configuration
public class MybatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor(){
return new PaginationInterceptor();
}
}
添加分页的公共返回对象
在pojo 中添加RespPageBean类:
package com.xxxx.server.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/*
* 分页公共返回对象
* */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RespPageBean {
//总条数
private Long total;
//数据List
private List<?> data;
}
做一个全局的日期转换,数据返回给前端的是json,日期啊转换过来需要做处理,如果每转一次就处理一次就添麻烦了,可以做一个全局的日期转换
创建:
package com.xxxx.server.converter;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.type.TypeFactory;
import com.fasterxml.jackson.databind.util.Converter;
import org.springframework.stereotype.Component;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
/**
* 日期转换
*
* @author zhanglishen
*
*/
@Component
public class DateConverter implements Converter<String, LocalDate> {
@Override
public LocalDate convert(String s) {
try {
return LocalDate.parse(s, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
public JavaType getInputType(TypeFactory typeFactory) {
return null;
}
@Override
public JavaType getOutputType(TypeFactory typeFactory) {
return null;
}
}
修改pojo类:Employee:
只要跟日期相关的进行修改加:
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "Asia/Shanghai")
只是对返回给前端的日期的格式化:
再添加表中的相关属性
package com.xxxx.server.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Value;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDate;
/**
* <p>
*
* </p>
*
* @author zhanglishen
* @since 2022-08-05
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_employee")
@ApiModel(value="Employee对象", description="")
public class Employee implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "员工编号")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "员工姓名")
private String name;
@ApiModelProperty(value = "性别")
private String gender;
@ApiModelProperty(value = "出生日期")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "Asia/Shanghai")
private LocalDate birthday;
@ApiModelProperty(value = "身份证号")
private String idCard;
@ApiModelProperty(value = "婚姻状况")
private String wedlock;
@ApiModelProperty(value = "民族")
private Integer nationId;
@ApiModelProperty(value = "籍贯")
private String nativePlace;
@ApiModelProperty(value = "政治面貌")
private Integer politicId;
@ApiModelProperty(value = "邮箱")
private String email;
@ApiModelProperty(value = "电话号码")
private String phone;
@ApiModelProperty(value = "联系地址")
private String address;
@ApiModelProperty(value = "所属部门")
private Integer departmentId;
@ApiModelProperty(value = "职称ID")
private Integer jobLevelId;
@ApiModelProperty(value = "职位ID")
private Integer posId;
@ApiModelProperty(value = "聘用形式")
private String engageForm;
@ApiModelProperty(value = "最高学历")
private String tiptopDegree;
@ApiModelProperty(value = "所属专业")
private String specialty;
@ApiModelProperty(value = "毕业院校")
private String school;
@ApiModelProperty(value = "入职日期")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "Asia/Shanghai")
private LocalDate beginDate;
@ApiModelProperty(value = "在职状态")
private String workState;
@ApiModelProperty(value = "工号")
private String workID;
@ApiModelProperty(value = "合同期限")
private Double contractTerm;
@ApiModelProperty(value = "转正日期")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "Asia/Shanghai")
private LocalDate conversionTime;
@ApiModelProperty(value = "离职日期")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "Asia/Shanghai")
private LocalDate notWorkDate;
@ApiModelProperty(value = "合同起始日期")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "Asia/Shanghai")
private LocalDate beginContract;
@ApiModelProperty(value = "合同终止日期")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "Asia/Shanghai")
private LocalDate endContract;
@ApiModelProperty(value = "工龄")
private Integer workAge;
@ApiModelProperty(value = "工资账套ID")
private Integer salaryId;
@ApiModelProperty(value = "民族" )
@TableField(exist = false) //加上这个因为在员工表中是不存在的
private Nation nation;
@ApiModelProperty(value = "政治面貌")
@TableField(exist = false)
private PoliticsStatus politicsStatus;
@ApiModelProperty(value = "部门")
@TableField(exist = false)
private Department department;
@ApiModelProperty(value = "职称")
@TableField(exist = false)
private Joblevel joblevel;
@ApiModelProperty(value = "职位")
@TableField(exist = false)
private Position position;
}
(2)获取所有员工分页查询
EmployeeController:
package com.xxxx.server.controller;
import com.xxxx.server.pojo.Employee;
import com.xxxx.server.pojo.RespPageBean;
import com.xxxx.server.service.IEmployeeService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDate;
/**
* <p>
* 前端控制器
* </p>
*
* @author zhanglishen
* @since 2022-08-05
*/
@RestController
@RequestMapping("/employee/basic")
public class EmployeeController {
@Autowired
private IEmployeeService employeeService;
@ApiOperation(value = "获取所有员工(分页)")
@GetMapping("/")
public RespPageBean getEmployeeByPage(@RequestParam(defaultValue = "1") Integer currentPage, @RequestParam(defaultValue = "10") Integer size,
Employee employee, LocalDate[] beginDateScope){
return employeeService.getEmployeeByPage(currentPage,size,employee,beginDateScope);
}
}
IEmployeeSerevice:
package com.xxxx.server.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xxxx.server.pojo.Employee;
import com.xxxx.server.pojo.RespPageBean;
import java.time.LocalDate;
/**
* <p>
* 服务类
* </p>
*
* @author zhanglishen
* @since 2022-08-05
*/
public interface IEmployeeService extends IService<Employee> {
//获取所有员工(分页)
RespPageBean getEmployeeByPage(Integer currentPage, Integer size, Employee employee, LocalDate[] beginDateScope);
}
实现类:
package com.xxxx.server.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xxxx.server.mapper.EmployeeMapper;
import com.xxxx.server.pojo.Employee;
import com.xxxx.server.pojo.RespPageBean;
import com.xxxx.server.service.IEmployeeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
/**
* <p>
* 服务实现类
* </p>
*
* @author zhanglishen
* @since 2022-08-05
*/
@Service
public class EmployeeServiceImpl extends ServiceImpl<EmployeeMapper, Employee> implements IEmployeeService {
@Autowired
private EmployeeMapper employeeMapper;
//获取所有员工(分页)
@Override
public RespPageBean getEmployeeByPage(Integer currentPage, Integer size, Employee employee, LocalDate[] beginDateScope) {
//开启分页
Page<Employee> page= new Page<>(currentPage,size);
IPage<Employee> employeeByPage= employeeMapper.getEmployeeByPage(page,employee,beginDateScope);
RespPageBean respPageBean=new RespPageBean(employeeByPage.getTotal(),employeeByPage.getRecords());
return respPageBean;
}
}
EmployeeMapper接口:
package com.xxxx.server.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xxxx.server.pojo.Employee;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDate;
/**
* <p>
* Mapper 接口
* </p>
*
* @author zhanglishen
* @since 2022-08-05
*/
public interface EmployeeMapper extends BaseMapper<Employee> {
//获取所有员工分页
IPage<Employee> getEmployeeByPage(Page<Employee> page, @Param("employee") Employee employee,@Param("beginDateScope") LocalDate[] beginDateScope);
}
EmployeeMapper.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxxx.server.mapper.EmployeeMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.xxxx.server.pojo.Employee">
<id column="id" property="id" />
<result column="name" property="name" />
<result column="gender" property="gender" />
<result column="birthday" property="birthday" />
<result column="idCard" property="idCard" />
<result column="wedlock" property="wedlock" />
<result column="nationId" property="nationId" />
<result column="nativePlace" property="nativePlace" />
<result column="politicId" property="politicId" />
<result column="email" property="email" />
<result column="phone" property="phone" />
<result column="address" property="address" />
<result column="departmentId" property="departmentId" />
<result column="jobLevelId" property="jobLevelId" />
<result column="posId" property="posId" />
<result column="engageForm" property="engageForm" />
<result column="tiptopDegree" property="tiptopDegree" />
<result column="specialty" property="specialty" />
<result column="school" property="school" />
<result column="beginDate" property="beginDate" />
<result column="workState" property="workState" />
<result column="workID" property="workID" />
<result column="contractTerm" property="contractTerm" />
<result column="conversionTime" property="conversionTime" />
<result column="notWorkDate" property="notWorkDate" />
<result column="beginContract" property="beginContract" />
<result column="endContract" property="endContract" />
<result column="workAge" property="workAge" />
<result column="salaryId" property="salaryId" />
</resultMap>
<resultMap id="EmployeeInfo" type="com.xxxx.server.pojo.Employee" extends="BaseResultMap">
<association property="nation" javaType="com.xxxx.server.pojo.Nation">
<id column="nid" property="id" />
<result column="nname" property="name" />
</association>
<association property="politicsStatus" javaType="com.xxxx.server.pojo.PoliticsStatus">
<id column="pid" property="id" />
<result column="pname" property="name" />
</association>
<association property="department" javaType="com.xxxx.server.pojo.Department">
<id column="did" property="id" />
<result column="dname" property="name" />
</association>
<association property="joblevel" javaType="com.xxxx.server.pojo.Joblevel">
<id column="jid" property="id" />
<result column="jname" property="name" />
</association>
<association property="position" javaType="com.xxxx.server.pojo.Position">
<id column="posid" property="id" />
<result column="posname" property="name" />
</association>
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
id, name, gender, birthday, idCard, wedlock, nationId, nativePlace, politicId, email, phone, address, departmentId, jobLevelId, posId, engageForm, tiptopDegree, specialty, school, beginDate, workState, workID, contractTerm, conversionTime, notWorkDate, beginContract, endContract, workAge, salaryId
</sql>
<!--获取所有员工(分页)-->
<select id="getEmployeeByPage" resultMap="EmployeeInfo">
select
e.*,
n.id as nid,
n.name as nname,
p.id as pid,
p.name as pname,
d.id as did,
d.name as dname,
j.id as jid,
j.name as jname,
pos.id as posid,
pos.name as posname
from
t_employee e,
t_nation n,
t_politics_status p,
t_department d,
t_joblevel j,
t_position pos
where
e.nationId = n.id
and e.politicId = p.id
and e.jobLevelId = j.id
and e.departmentId = d.id
and e.posId = pos.id
<if test="employee.name != null and '' != employee.name ">
AND e.name like concat('%',#{employee.name},'%')
</if>
<if test="employee.politicId != null">
AND e.politicId = #{employee.politicId}
</if>
<if test="employee.nationId != null">
AND e.nationId = #{employee.nationId}
</if>
<if test="employee.jobLevelId != null">
AND e.jobLevelId = #{employee.jobLevelId}
</if>
<if test="employee.posId != null" >
AND e.posId = #{employee.posId}
</if>
<if test="employee.departmentId != null">
AND e.departmentId = #{employee.departmentId}
</if>
<if test="null != employee.engageForm and '' != employee.engageForm">
AND e.engageForm = #{employee.engageForm}
</if>
<if test="null != beginDateScope and 2 == beginDateScope.length">
AND e.beginDate between #{beginDateScope[0]} and #{beginDateScope[1]}
</if>
ORDER BY e.id
</select>
</mapper>
(3)获取所有员工分页测试
查部门是12的:
查性王的:
(4)添加员工其前期准备
在添加员工的时候,像政治面貌、民族、职位、职称都是从之前的表中去查的,需要注意的是查出来的是id和名字,但是在添加员工的时候,我们会传一个employee对象,employee里面 有对应的外键id,这个表的id怎么和employee的id相关联呢?需要考虑以下
在添加员工之前需要把这些先查询出来
package com.xxxx.server.controller;
import com.xxxx.server.pojo.*;
import com.xxxx.server.service.*;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDate;
import java.util.List;
/**
* <p>
* 前端控制器
* </p>
*
* @author zhanglishen
* @since 2022-08-05
*/
@RestController
@RequestMapping("/employee/basic")
public class EmployeeController {
@Autowired
private IEmployeeService employeeService;
@Autowired
private IPoliticsStatusService politicsStatusService;
@Autowired
private IJoblevelService joblevelService;
@Autowired
private INationService nationService;
@Autowired
private IPositionService positionService;
@Autowired
private IDepartmentService departmentService;
@ApiOperation(value = "获取所有员工(分页)")
@GetMapping("/")
public RespPageBean getEmployeeByPage(@RequestParam(defaultValue = "1") Integer currentPage, @RequestParam(defaultValue = "10") Integer size,
Employee employee, LocalDate[] beginDateScope){
return employeeService.getEmployeeByPage(currentPage,size,employee,beginDateScope);
}
@ApiOperation(value = "获取所有政治面貌")
@GetMapping("/politicsStatus")
private List<PoliticsStatus> getAllPoliticsStatus(){
return politicsStatusService.list();
}
@ApiOperation(value = "获取所有职称")
@GetMapping("/joblevel")
public List<Joblevel> getAllJobLevel(){
return joblevelService.list();
}
@ApiOperation(value = "获取所有民族")
@GetMapping("/nation")
public List<Nation> getAllNation(){
return nationService.list();
}
@ApiOperation(value = "获取所有职位")
@GetMapping("/position")
public List<Position> getAllPosition(){
return positionService.list();
}
@ApiOperation(value = "获取所有部门")
@GetMapping("/deps")
public List<Department> getAllDepartment(){
return departmentService.getAllDepartments();
}
@ApiOperation(value = "获取最大工号")
@GetMapping("/maxWorkID")
public RespBean maxWorkID(){
return employeeService.maxWorkId();
}
}
IEmployeeService接口:
package com.xxxx.server.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xxxx.server.pojo.Employee;
import com.xxxx.server.pojo.RespBean;
import com.xxxx.server.pojo.RespPageBean;
import java.time.LocalDate;
/**
* <p>
* 服务类
* </p>
*
* @author zhanglishen
* @since 2022-08-05
*/
public interface IEmployeeService extends IService<Employee> {
//获取所有员工(分页)
RespPageBean getEmployeeByPage(Integer currentPage, Integer size, Employee employee, LocalDate[] beginDateScope);
//获取工号(最大)
RespBean maxWorkId();
}
实现类:
package com.xxxx.server.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xxxx.server.mapper.EmployeeMapper;
import com.xxxx.server.pojo.Employee;
import com.xxxx.server.pojo.RespBean;
import com.xxxx.server.pojo.RespPageBean;
import com.xxxx.server.service.IEmployeeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.util.List;
import java.util.Map;
/**
* <p>
* 服务实现类
* </p>
*
* @author zhanglishen
* @since 2022-08-05
*/
@Service
public class EmployeeServiceImpl extends ServiceImpl<EmployeeMapper, Employee> implements IEmployeeService {
@Autowired
private EmployeeMapper employeeMapper;
//获取所有员工(分页)
@Override
public RespPageBean getEmployeeByPage(Integer currentPage, Integer size, Employee employee, LocalDate[] beginDateScope) {
//开启分页
Page<Employee> page= new Page<>(currentPage,size);
IPage<Employee> employeeByPage= employeeMapper.getEmployeeByPage(page,employee,beginDateScope);
RespPageBean respPageBean=new RespPageBean(employeeByPage.getTotal(),employeeByPage.getRecords());
return respPageBean;
}
//获取工号(最大)
@Override
public RespBean maxWorkId() {
List<Map<String, Object>> maps = employeeMapper.selectMaps(new QueryWrapper<Employee>().select("max(workID)"));
return RespBean.success(null,String.format("%08d", Integer.parseInt( maps.get(0).get("max(workID)").toString())+1));
}
}
添加员工:
package com.xxxx.server.controller;
import com.xxxx.server.pojo.*;
import com.xxxx.server.service.*;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDate;
import java.util.List;
/**
* <p>
* 前端控制器
* </p>
*
* @author zhanglishen
* @since 2022-08-05
*/
@RestController
@RequestMapping("/employee/basic")
public class EmployeeController {
@Autowired
private IEmployeeService employeeService;
@Autowired
private IPoliticsStatusService politicsStatusService;
@Autowired
private IJoblevelService joblevelService;
@Autowired
private INationService nationService;
@Autowired
private IPositionService positionService;
@Autowired
private IDepartmentService departmentService;
@ApiOperation(value = "获取所有员工(分页)")
@GetMapping("/")
public RespPageBean getEmployeeByPage(@RequestParam(defaultValue = "1") Integer currentPage, @RequestParam(defaultValue = "10") Integer size,
Employee employee, LocalDate[] beginDateScope){
return employeeService.getEmployeeByPage(currentPage,size,employee,beginDateScope);
}
@ApiOperation(value = "获取所有政治面貌")
@GetMapping("/politicsStatus")
private List<PoliticsStatus> getAllPoliticsStatus(){
return politicsStatusService.list();
}
@ApiOperation(value = "获取所有职称")
@GetMapping("/joblevel")
public List<Joblevel> getAllJobLevel(){
return joblevelService.list();
}
@ApiOperation(value = "获取所有民族")
@GetMapping("/nation")
public List<Nation> getAllNation(){
return nationService.list();
}
@ApiOperation(value = "获取所有职位")
@GetMapping("/position")
public List<Position> getAllPosition(){
return positionService.list();
}
@ApiOperation(value = "获取所有部门")
@GetMapping("/deps")
public List<Department> getAllDepartment(){
return departmentService.getAllDepartments();
}
@ApiOperation(value = "获取最大工号")
@GetMapping("/maxWorkID")
public RespBean maxWorkID(){
return employeeService.maxWorkId();
}
@ApiOperation(value = "添加员工")
@PostMapping("/")
public RespBean addEmp(@RequestBody Employee employee){
return employeeService.addEmp(employee);
}
}
IEmployeeService:
package com.xxxx.server.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xxxx.server.pojo.Employee;
import com.xxxx.server.pojo.RespBean;
import com.xxxx.server.pojo.RespPageBean;
import java.time.LocalDate;
/**
* <p>
* 服务类
* </p>
*
* @author zhanglishen
* @since 2022-08-05
*/
public interface IEmployeeService extends IService<Employee> {
//获取所有员工(分页)
RespPageBean getEmployeeByPage(Integer currentPage, Integer size, Employee employee, LocalDate[] beginDateScope);
//获取工号(最大)
RespBean maxWorkId();
//添加员工
RespBean addEmp(Employee employee);
}
实现类:
package com.xxxx.server.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xxxx.server.mapper.EmployeeMapper;
import com.xxxx.server.pojo.Employee;
import com.xxxx.server.pojo.RespBean;
import com.xxxx.server.pojo.RespPageBean;
import com.xxxx.server.service.IEmployeeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.DecimalFormat;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.List;
import java.util.Map;
/**
* <p>
* 服务实现类
* </p>
*
* @author zhanglishen
* @since 2022-08-05
*/
@Service
public class EmployeeServiceImpl extends ServiceImpl<EmployeeMapper, Employee> implements IEmployeeService {
@Autowired
private EmployeeMapper employeeMapper;
//获取所有员工(分页)
@Override
public RespPageBean getEmployeeByPage(Integer currentPage, Integer size, Employee employee, LocalDate[] beginDateScope) {
//开启分页
Page<Employee> page= new Page<>(currentPage,size);
IPage<Employee> employeeByPage= employeeMapper.getEmployeeByPage(page,employee,beginDateScope);
RespPageBean respPageBean=new RespPageBean(employeeByPage.getTotal(),employeeByPage.getRecords());
return respPageBean;
}
//获取工号(最大)
@Override
public RespBean maxWorkId() {
List<Map<String, Object>> maps = employeeMapper.selectMaps(new QueryWrapper<Employee>().select("max(workID)"));
return RespBean.success(null,String.format("%08d", Integer.parseInt( maps.get(0).get("max(wordID)").toString())+1));
}
//添加员工
@Override
public RespBean addEmp(Employee employee) {
//处理合同,保留两位小数
//开始时间
LocalDate beginContract = employee.getBeginContract();
//结束时间
LocalDate endContract = employee.getEndContract();
//计算差值
long days = beginContract.until(endContract, ChronoUnit.DAYS);
//设置保留两位小数
DecimalFormat decimalFormat=new DecimalFormat("##.00");
//设置
employee.setContractTerm(Double.parseDouble(decimalFormat.format(days/365.00)));
if (1==employeeMapper.insert(employee)){
return RespBean.success("添加成功");
}
return RespBean.error("添加失败!");
}
}
(5)员工更新及删除
package com.xxxx.server.controller;
import com.xxxx.server.pojo.*;
import com.xxxx.server.service.*;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDate;
import java.util.List;
/**
* <p>
* 前端控制器
* </p>
*
* @author zhanglishen
* @since 2022-08-05
*/
@RestController
@RequestMapping("/employee/basic")
public class EmployeeController {
@Autowired
private IEmployeeService employeeService;
@Autowired
private IPoliticsStatusService politicsStatusService;
@Autowired
private IJoblevelService joblevelService;
@Autowired
private INationService nationService;
@Autowired
private IPositionService positionService;
@Autowired
private IDepartmentService departmentService;
@ApiOperation(value = "获取所有员工(分页)")
@GetMapping("/")
public RespPageBean getEmployeeByPage(@RequestParam(defaultValue = "1") Integer currentPage, @RequestParam(defaultValue = "10") Integer size,
Employee employee, LocalDate[] beginDateScope){
return employeeService.getEmployeeByPage(currentPage,size,employee,beginDateScope);
}
@ApiOperation(value = "获取所有政治面貌")
@GetMapping("/politicsStatus")
private List<PoliticsStatus> getAllPoliticsStatus(){
return politicsStatusService.list();
}
@ApiOperation(value = "获取所有职称")
@GetMapping("/joblevel")
public List<Joblevel> getAllJobLevel(){
return joblevelService.list();
}
@ApiOperation(value = "获取所有民族")
@GetMapping("/nation")
public List<Nation> getAllNation(){
return nationService.list();
}
@ApiOperation(value = "获取所有职位")
@GetMapping("/position")
public List<Position> getAllPosition(){
return positionService.list();
}
@ApiOperation(value = "获取所有部门")
@GetMapping("/deps")
public List<Department> getAllDepartment(){
return departmentService.getAllDepartments();
}
@ApiOperation(value = "获取最大工号")
@GetMapping("/maxWorkID")
public RespBean maxWorkID(){
return employeeService.maxWorkId();
}
@ApiOperation(value = "添加员工")
@PostMapping("/")
public RespBean addEmp(@RequestBody Employee employee){
return employeeService.addEmp(employee);
}
@ApiOperation(value = "更新员工")
@PutMapping("/")
public RespBean updateEmp(@RequestBody Employee employee){
if (employeeService.updateById(employee)){
return RespBean.success("更新成功");
}
return RespBean.error("更新失败");
}
@ApiOperation(value = "删除员工")
@DeleteMapping("/{id}")
public RespBean deleteEmp(@PathVariable Integer id){
if (employeeService.removeById(id)){
return RespBean.success("删除成功");
}
return RespBean.error("删除失败");
}
}
测试:
更新员工:
删除员工:
数据库中没有了数据:
(6)EasyPoi注解使用
员工数据的导入和导出:在实际应用场景中的也是非常常见的,比如说有时候我们需要把员工的数据,不只是一个人,多个人的数据在某个地方去使用,或者同时入职了多位员工,一个一个添加过于繁琐,我们可以按照指定的Excel模板,把员工的数据一条一条的写入,写入之后呢就会批量的插入员工的数据,对于Java而言也会用到这种Excel的处理,当然也不仅仅限于Excel,officce、PPT、等等
导入依赖:
easy poi可以使用注解,去定义你要导出的字段,那我们现在要导出的是员工,需要在Employee中使用注解@Excel注解:@ExcelEntity
然后再Nation类中加:
在对应的类中加@Excel注解:
package com.xxxx.server.pojo;
import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.annotation.ExcelEntity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Value;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDate;
/**
* <p>
*
* </p>
*
* @author zhanglishen
* @since 2022-08-05
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_employee")
@ApiModel(value="Employee对象", description="")
public class Employee implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "员工编号")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "员工姓名")
@Excel(name = "员工姓名")
private String name;
@ApiModelProperty(value = "性别")
@Excel(name = "性别")
private String gender;
@ApiModelProperty(value = "出生日期")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "Asia/Shanghai")
@Excel(name = "出生日期",width = 20,format = "yyyy-MM-dd")
private LocalDate birthday;
@ApiModelProperty(value = "身份证号")
@Excel(name = "身份证号",width = 30)
private String idCard;
@ApiModelProperty(value = "婚姻状况")
@Excel(name = "婚姻状况")
private String wedlock;
@ApiModelProperty(value = "民族")
private Integer nationId;
@ApiModelProperty(value = "籍贯")
@Excel(name = "籍贯")
private String nativePlace;
@ApiModelProperty(value = "政治面貌")
private Integer politicId;
@ApiModelProperty(value = "邮箱")
@Excel(name = "邮箱",width = 30)
private String email;
@ApiModelProperty(value = "电话号码")
@Excel(name = "电话号码",width = 15)
private String phone;
@ApiModelProperty(value = "联系地址")
@Excel(name = "联系地址",width = 40)
private String address;
@ApiModelProperty(value = "所属部门")
private Integer departmentId;
@ApiModelProperty(value = "职称ID")
private Integer jobLevelId;
@ApiModelProperty(value = "职位ID")
private Integer posId;
@ApiModelProperty(value = "聘用形式")
@Excel(name = "聘用形式")
private String engageForm;
@ApiModelProperty(value = "最高学历")
@Excel(name = "最高学历")
private String tiptopDegree;
@ApiModelProperty(value = "所属专业")
@Excel(name = "所属专业",width = 20)
private String specialty;
@ApiModelProperty(value = "毕业院校")
@Excel(name = "毕业院校",width = 20)
private String school;
@ApiModelProperty(value = "入职日期")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "Asia/Shanghai")
@Excel(name = "入职日期",width = 20,format = "yyyy-MM-dd")
private LocalDate beginDate;
@ApiModelProperty(value = "在职状态")
@Excel(name = "在职状态")
private String workState;
@ApiModelProperty(value = "工号")
@Excel(name = "工号")
private String workID;
@ApiModelProperty(value = "合同期限")
@Excel(name = "合同期限",suffix = "年")
private Double contractTerm;
@ApiModelProperty(value = "转正日期")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "Asia/Shanghai")
@Excel(name = "转正日期",width = 20,format = "yyyy-MM-dd")
private LocalDate conversionTime;
@ApiModelProperty(value = "离职日期")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "Asia/Shanghai")
private LocalDate notWorkDate;
@ApiModelProperty(value = "合同起始日期")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "Asia/Shanghai")
@Excel(name = "合同起始日期",width = 20,format = "yyyy-MM-dd")
private LocalDate beginContract;
@ApiModelProperty(value = "合同终止日期")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "Asia/Shanghai")
@Excel(name = "合同终止日期",width = 20,format = "yyyy-MM-dd")
private LocalDate endContract;
@ApiModelProperty(value = "工龄")
private Integer workAge;
@ApiModelProperty(value = "工资账套ID")
private Integer salaryId;
@ApiModelProperty(value = "民族" )
@TableField(exist = false) //加上这个因为在员工表中是不存在的
@ExcelEntity(name = "民族")
private Nation nation;
@ApiModelProperty(value = "政治面貌")
@TableField(exist = false)
@ExcelEntity(name = "政治面貌")
private PoliticsStatus politicsStatus;
@ApiModelProperty(value = "部门")
@TableField(exist = false)
@ExcelEntity(name = "部门")
private Department department;
@ApiModelProperty(value = "职称")
@TableField(exist = false)
@ExcelEntity(name = "职称")
private Joblevel joblevel;
@ApiModelProperty(value = "职位")
@TableField(exist = false)
@ExcelEntity(name = "职位")
private Position position;
}
(7)导出员工数据
package com.xxxx.server.controller;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import com.xxxx.server.pojo.*;
import com.xxxx.server.service.*;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.time.LocalDate;
import java.util.List;
/**
* <p>
* 前端控制器
* </p>
*
* @author zhanglishen
* @since 2022-08-05
*/
@RestController
@RequestMapping("/employee/basic")
public class EmployeeController {
@Autowired
private IEmployeeService employeeService;
@Autowired
private IPoliticsStatusService politicsStatusService;
@Autowired
private IJoblevelService joblevelService;
@Autowired
private INationService nationService;
@Autowired
private IPositionService positionService;
@Autowired
private IDepartmentService departmentService;
@ApiOperation(value = "获取所有员工(分页)")
@GetMapping("/")
public RespPageBean getEmployeeByPage(@RequestParam(defaultValue = "1") Integer currentPage, @RequestParam(defaultValue = "10") Integer size,
Employee employee, LocalDate[] beginDateScope){
return employeeService.getEmployeeByPage(currentPage,size,employee,beginDateScope);
}
@ApiOperation(value = "获取所有政治面貌")
@GetMapping("/politicsStatus")
private List<PoliticsStatus> getAllPoliticsStatus(){
return politicsStatusService.list();
}
@ApiOperation(value = "获取所有职称")
@GetMapping("/joblevel")
public List<Joblevel> getAllJobLevel(){
return joblevelService.list();
}
@ApiOperation(value = "获取所有民族")
@GetMapping("/nation")
public List<Nation> getAllNation(){
return nationService.list();
}
@ApiOperation(value = "获取所有职位")
@GetMapping("/position")
public List<Position> getAllPosition(){
return positionService.list();
}
@ApiOperation(value = "获取所有部门")
@GetMapping("/deps")
public List<Department> getAllDepartment(){
return departmentService.getAllDepartments();
}
@ApiOperation(value = "获取最大工号")
@GetMapping("/maxWorkID")
public RespBean maxWorkID(){
return employeeService.maxWorkId();
}
@ApiOperation(value = "添加员工")
@PostMapping("/")
public RespBean addEmp(@RequestBody Employee employee){
return employeeService.addEmp(employee);
}
@ApiOperation(value = "更新员工")
@PutMapping("/")
public RespBean updateEmp(@RequestBody Employee employee){
if (employeeService.updateById(employee)){
return RespBean.success("更新成功");
}
return RespBean.error("更新失败");
}
@ApiOperation(value = "删除员工")
@DeleteMapping("/{id}")
public RespBean deleteEmp(@PathVariable Integer id){
if (employeeService.removeById(id)){
return RespBean.success("删除成功");
}
return RespBean.error("删除失败");
}
@ApiOperation(value = "导出员工数据")
@GetMapping(value = "/export",produces = "application/octet-stream")
public void exportEmployee(HttpServletResponse response){
//获取所有员工数据
List<Employee> list = employeeService.getEmployee(null);
//导出数据
ExportParams params = new ExportParams("员工表","员工表", ExcelType.HSSF);
//使用导出工具类
Workbook workbook = ExcelExportUtil.exportExcel(params,Employee.class,list);
ServletOutputStream outputStream = null;
try {
//流形式
response.setHeader("content-type","application/octet-stream");
//中文乱码
response.setHeader("content-disposition","attachment;filename="+ URLEncoder.encode("员工表.xls","UTF-8"));
outputStream = response.getOutputStream();
workbook.write(outputStream);
} catch (Exception e) {
e.printStackTrace();
}finally {
if (null != outputStream){
try {
outputStream.flush();
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
IEmployeeService:接口
package com.xxxx.server.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xxxx.server.pojo.Employee;
import com.xxxx.server.pojo.RespBean;
import com.xxxx.server.pojo.RespPageBean;
import java.time.LocalDate;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author zhanglishen
* @since 2022-08-05
*/
public interface IEmployeeService extends IService<Employee> {
//获取所有员工(分页)
RespPageBean getEmployeeByPage(Integer currentPage, Integer size, Employee employee, LocalDate[] beginDateScope);
//获取工号(最大)
RespBean maxWorkId();
//添加员工
RespBean addEmp(Employee employee);
//查询员工
List<Employee> getEmployee(Integer id);
}
实现类:
package com.xxxx.server.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xxxx.server.mapper.EmployeeMapper;
import com.xxxx.server.pojo.Employee;
import com.xxxx.server.pojo.RespBean;
import com.xxxx.server.pojo.RespPageBean;
import com.xxxx.server.service.IEmployeeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.DecimalFormat;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.List;
import java.util.Map;
/**
* <p>
* 服务实现类
* </p>
*
* @author zhanglishen
* @since 2022-08-05
*/
@Service
public class EmployeeServiceImpl extends ServiceImpl<EmployeeMapper, Employee> implements IEmployeeService {
@Autowired
private EmployeeMapper employeeMapper;
//获取所有员工(分页)
@Override
public RespPageBean getEmployeeByPage(Integer currentPage, Integer size, Employee employee, LocalDate[] beginDateScope) {
//开启分页
Page<Employee> page= new Page<>(currentPage,size);
IPage<Employee> employeeByPage= employeeMapper.getEmployeeByPage(page,employee,beginDateScope);
RespPageBean respPageBean=new RespPageBean(employeeByPage.getTotal(),employeeByPage.getRecords());
return respPageBean;
}
//获取工号(最大)
@Override
public RespBean maxWorkId() {
List<Map<String, Object>> maps = employeeMapper.selectMaps(new QueryWrapper<Employee>().select("max(workID)"));
return RespBean.success(null,String.format("%08d", Integer.parseInt( maps.get(0).get("max(workID)").toString())+1));
}
//添加员工
@Override
public RespBean addEmp(Employee employee) {
//处理合同,保留两位小数
//开始时间
LocalDate beginContract = employee.getBeginContract();
//结束时间
LocalDate endContract = employee.getEndContract();
//计算差值
long days = beginContract.until(endContract, ChronoUnit.DAYS);
//设置保留两位小数
DecimalFormat decimalFormat=new DecimalFormat("##.00");
//设置
employee.setContractTerm(Double.parseDouble(decimalFormat.format(days/365.00)));
if (1==employeeMapper.insert(employee)){
return RespBean.success("添加成功");
}
return RespBean.error("添加失败!");
}
//查询员工
@Override
public List<Employee> getEmployee(Integer id) {
return employeeMapper.getEmployee(id);
}
}
EmployeeMapper:接口
package com.xxxx.server.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xxxx.server.pojo.Employee;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDate;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author zhanglishen
* @since 2022-08-05
*/
public interface EmployeeMapper extends BaseMapper<Employee> {
//获取所有员工分页
IPage<Employee> getEmployeeByPage(Page<Employee> page, @Param("employee") Employee employee,@Param("beginDateScope") LocalDate[] beginDateScope);
//查询员工
List<Employee> getEmployee(Integer id);
}
EmployeeMapper.xml:
测试:
点击下载:
打开:
(8)导入员工数据
导入员工数据,有什么字段就到什么字段呗,但是有一个问题,民族、政治面貌、职称、职位,之前导出的时候是使用的注解@ExcelEntity,标记它是一个实体类,在实体类中在写@Excel这个注解,主把这个name拿出来的,导入的时候他也一样,他能拿到Nation,根据相应的字段它能把nation对象拿到nation里面的name也能拿到,但是为题是我们要的不是name,而是nationid,然后存到数据库的,第一个办法是:根据nation的naem去数据库查nationid,拿到id之后呢,设置为nation的对象nationid,但是逆向一条数据有5个实体类,需要查5次数据库非常麻烦,这时候可以使用简单的一种方法:重写Equals和Hashcode,因为民族是统一的,政治面貌是惟一的,部门名字也很少去变动,如果name属性是惟一的话,可以知道name属性的对象也是惟一的 ,创建的对象唯一的话,就可以拿到对象的id,这样做的话需要name属性基本上不怎么变动
依次修改,这几个类:
比如Nation类:
package com.xxxx.server.pojo;
import cn.afterturn.easypoi.excel.annotation.Excel;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <p>
*
* </p>
*
* @author zhanglishen
* @since 2022-08-05
*/
@Data
@NoArgsConstructor
@RequiredArgsConstructor
@EqualsAndHashCode(callSuper = false,of = "name")
@Accessors(chain = true)
@TableName("t_nation")
@ApiModel(value="Nation对象", description="")
public class Nation implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "id")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "民族")
@Excel(name = "民族")
@NonNull
private String name;
}
添加接口方法:
package com.xxxx.server.controller;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import com.xxxx.server.pojo.*;
import com.xxxx.server.service.*;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.time.LocalDate;
import java.util.List;
/**
* <p>
* 前端控制器
* </p>
*
* @author zhanglishen
* @since 2022-08-05
*/
@RestController
@RequestMapping("/employee/basic")
public class EmployeeController {
@Autowired
private IEmployeeService employeeService;
@Autowired
private IPoliticsStatusService politicsStatusService;
@Autowired
private IJoblevelService joblevelService;
@Autowired
private INationService nationService;
@Autowired
private IPositionService positionService;
@Autowired
private IDepartmentService departmentService;
@ApiOperation(value = "获取所有员工(分页)")
@GetMapping("/")
public RespPageBean getEmployeeByPage(@RequestParam(defaultValue = "1") Integer currentPage, @RequestParam(defaultValue = "10") Integer size,
Employee employee, LocalDate[] beginDateScope){
return employeeService.getEmployeeByPage(currentPage,size,employee,beginDateScope);
}
@ApiOperation(value = "获取所有政治面貌")
@GetMapping("/politicsStatus")
private List<PoliticsStatus> getAllPoliticsStatus(){
return politicsStatusService.list();
}
@ApiOperation(value = "获取所有职称")
@GetMapping("/joblevel")
public List<Joblevel> getAllJobLevel(){
return joblevelService.list();
}
@ApiOperation(value = "获取所有民族")
@GetMapping("/nation")
public List<Nation> getAllNation(){
return nationService.list();
}
@ApiOperation(value = "获取所有职位")
@GetMapping("/position")
public List<Position> getAllPosition(){
return positionService.list();
}
@ApiOperation(value = "获取所有部门")
@GetMapping("/deps")
public List<Department> getAllDepartment(){
return departmentService.getAllDepartments();
}
@ApiOperation(value = "获取最大工号")
@GetMapping("/maxWorkID")
public RespBean maxWorkID(){
return employeeService.maxWorkId();
}
@ApiOperation(value = "添加员工")
@PostMapping("/")
public RespBean addEmp(@RequestBody Employee employee){
return employeeService.addEmp(employee);
}
@ApiOperation(value = "更新员工")
@PutMapping("/")
public RespBean updateEmp(@RequestBody Employee employee){
if (employeeService.updateById(employee)){
return RespBean.success("更新成功");
}
return RespBean.error("更新失败");
}
@ApiOperation(value = "删除员工")
@DeleteMapping("/{id}")
public RespBean deleteEmp(@PathVariable Integer id){
if (employeeService.removeById(id)){
return RespBean.success("删除成功");
}
return RespBean.error("删除失败");
}
@ApiOperation(value = "导出员工数据")
@GetMapping(value = "/export",produces = "application/octet-stream")
public void exportEmployee(HttpServletResponse response){
//获取所有员工数据
List<Employee> list = employeeService.getEmployee(null);
//导出数据
ExportParams params = new ExportParams("员工表","员工表", ExcelType.HSSF);
//使用导出工具类
Workbook workbook = ExcelExportUtil.exportExcel(params,Employee.class,list);
ServletOutputStream outputStream = null;
try {
//流形式
response.setHeader("content-type","application/octet-stream");
//中文乱码
response.setHeader("content-disposition","attachment;filename="+ URLEncoder.encode("员工表.xls","UTF-8"));
outputStream = response.getOutputStream();
workbook.write(outputStream);
} catch (Exception e) {
e.printStackTrace();
}finally {
if (null != outputStream){
try {
outputStream.flush();
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
@ApiOperation(value = "导入员工数据")
@ApiImplicitParams({@ApiImplicitParam(name="file",value = "上传文件",dataType = "MultipartFile")})
@PostMapping("/import")
public RespBean importEmployee(MultipartFile file){
ImportParams params = new ImportParams();
//去掉标题行
params.setTitleRows(1);
List<Nation> nations = nationService.list();
List<PoliticsStatus> politicsStatuses = politicsStatusService.list();
List<Position> positions = positionService.list();
List<Department> departments = departmentService.list();
List<Joblevel> joblevels = joblevelService.list();
try {
List<Employee> list = ExcelImportUtil.importExcel(file.getInputStream(), Employee.class, params);
list.forEach(employee ->{
//民族id
employee.setNationId(nations.get(nations.indexOf(new Nation(employee.getNation().getName()))).getId());
//政治面貌id
employee.setPoliticId(politicsStatuses.get(politicsStatuses.indexOf(new PoliticsStatus(employee.getPoliticsStatus().getName()))).getId());
//部门id
employee.setDepartmentId(departments.get(departments.indexOf(new Department(employee.getDepartment().getName()))).getId());
//职称id
employee.setJobLevelId(joblevels.get(joblevels.indexOf(new Joblevel(employee.getJoblevel().getName()))).getId());
//职位id
employee.setPosId(positions.get(positions.indexOf(new Position(employee.getPosition().getName()))).getId());
});
if (employeeService.saveBatch(list)){
return RespBean.success("导入成功");
}
return RespBean.error("导入失败");
} catch (Exception e) {
e.printStackTrace();
}
return RespBean.error("导入失败");
}
}
测试:
可以选择Excel文件
数据库重新多了数据: