public interface Strategy<K> {
void sort(List<K> lis);
}
@Component
public class StrategyByExpenseType implements Strategy<ProjectExpensePo>, Comparator<ProjectExpensePo> {
private boolean ascFlag;
@Override
public int compare(ProjectExpensePo o1, ProjectExpensePo o2) {
int result = o1.getExpenseType().compareTo(o2.getExpenseType());
if (result == 0){
return (int)(o1.getCreateTime().getTime() - o2.getCreateTime().getTime());
}
return ascFlag ? result:-result;
}
@Override
public void sort(List<ProjectExpensePo> lis) {
Collections.sort(lis,new StrategyByExpenseType());
}
}
public class ProjectExpenseServiceImpl extends ServiceImpl<ProjectExpenseMapper, ProjectExpensePo> implements ProjectExpenseService {
@Autowired
private ProjectExpenseMapper projectExpenseMapper;
@Autowired
private StrategyByExpenseType strategyByExpenseType;
@Autowired
private UserService userService;
public List<ProjectExpensePo> listAll(Long initiaId) {
QueryWrapper<ProjectExpensePo> qw = new QueryWrapper<>();
qw.eq("initia_id",initiaId);
List<ProjectExpensePo> pos = projectExpenseMapper.selectList(qw);
strategyByExpenseType.sort(pos);
return pos;
}