解决方法
要自己实现比较方法。
有两种方法,都差不多,就是实现接口。
一种是在实体类实现方法,一种是在新的类实现方法。
然后,使用的时候,分别对应着,一种是List.sort(比较器),一种是Collections.sort(集合, 比较器)。
解决方法-List.sort()
@ApiOperation("根据员工id,查询所有数据")
@RequestMapping(value="/getEmployeeSalarysByEmployeeId", method = RequestMethod.GET)
public RespBean<EmployeeSalary> getEmployeeSalarysByEmployeeId(Integer employeeId) {
//视图需要的数据
List<EmployeeSalaryVo> employeeSalaryVos = new ArrayList<EmployeeSalaryVo>();
//工资集合
List<EmployeeSalary> employeeSalarys = employeeSalaryService.getAllEmployeeSalarysByEmployeeId(employeeId);
for (int i = 0; i < employeeSalarys.size(); i++) {
EmployeeSalaryVo employeeSalaryVo = new EmployeeSalaryVo();
employeeSalaryVo.setDate(employeeSalarys.get(i).getSalaryDate());
employeeSalaryVo.setReason(employeeSalarys.get(i).getReason());
employeeSalaryVo.setSalaryBase(employeeSalarys.get(i).getSalaryBase());
employeeSalaryVo.setSalaryPerformance(employeeSalarys.get(i).getSalaryPerformance());
employeeSalaryVo.setSalaryType(1);
employeeSalaryVos.add(employeeSalaryVo);
}
//合同集合
List<EmployeeContract> employeeContracts = employeeContractService.getAllEmployeeContractsByEmployeeId(employeeId);
for (int i = 0; i < employeeContracts.size(); i++) {
EmployeeSalaryVo employeeSalaryVo = new EmployeeSalaryVo();
employeeSalaryVo.setDate(employeeContracts.get(i).getStartDate());
employeeSalaryVo.setReason(employeeContracts.get(i).getReason());
employeeSalaryVo.setSalaryBase(employeeContracts.get(i).getSalaryBase());
employeeSalaryVo.setSalaryPerformance(employeeContracts.get(i).getSalaryPerformance());
employeeSalaryVo.setSalaryType(0);
employeeSalaryVos.add(employeeSalaryVo);
}
//排序
Collections.sort(employeeSalaryVos);
return RespBean.ok(employeeSalaryVos);
}
package com.wz.bpm.vo;
import java.util.Date;
import io.swagger.annotations.ApiModelProperty;
public class EmployeeSalaryVo implements Comparable<EmployeeSalaryVo> { //直接在实体类里实现比较方法
private Double salaryBase;
public Double getSalaryBase() {
return salaryBase;
}
public void setSalaryBase(Double salaryBase) {
this.salaryBase = salaryBase;
}
public Double getSalaryPerformance() {
return salaryPerformance;
}
public void setSalaryPerformance(Double salaryPerformance) {
this.salaryPerformance = salaryPerformance;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public String getReason() {
return reason;
}
public void setReason(String reason) {
this.reason = reason;
}
private Double salaryPerformance;
private Date date;
private String reason;
@Override
public int compareTo(EmployeeSalaryVo o) { //实现比较方法
return this.getDate().compareTo(o.getDate()); //这里的具体比较代码复用了Date的比较方法,如果不能复用,就要自己实现。本质上是实现比较大小,然后返回值3个值:大于1,小于-1,等于0。
}
@ApiModelProperty(value="工资类型:1.调薪 0.合同")
private Integer salaryType;
public Integer getSalaryType() {
return salaryType;
}
public void setSalaryType(Integer salaryType) {
this.salaryType = salaryType;
}
}
解决方法-Collections.sort()
package com.wz.bpm.vo;
import java.util.Comparator;
public class EmployeeSalaryVoComp implements Comparator<EmployeeSalaryVo>{ //新的类(需要专门创建新的比较器类)实现比较方法
@Override
public int compare(EmployeeSalaryVo o1, EmployeeSalaryVo o2) {
// TODO Auto-generated method stub
return 0;
}
}