@Data
public class ConsultantWorkloadInfoVO implements Comparable<ConsultantWorkloadInfoVO> {
/**
* 用户id
*/
private Long id;
/**
* 用户真实姓名
*/
private String realName;
/**
* 已完成咨询小时数 个体咨询预约状态=已完成
*/
private String completeSum;
/**
* 未来两周咨询小时数 个体咨询预约状态=未开始
*/
private String appointSum;
/**
* 真实姓名拼音
*/
private String pinyin;
/**
* 排序
* 1、先根据已完成咨询小时数排序
* 2、若相等再根据未来两周咨询小时数排序
* 3、若相等再根据用户真实姓名排序
*
* @param o 比较值
* @return 大小
*/
@Override
public int compareTo(ConsultantWorkloadInfoVO o) {
return new BigDecimal(completeSum).compareTo(new BigDecimal(o.getCompleteSum())) > 0 ? 1 :
(new BigDecimal(completeSum).compareTo(new BigDecimal(o.getCompleteSum())) < 0 ? -1 :
(new BigDecimal(appointSum).compareTo(new BigDecimal(o.getAppointSum())) > 0 ? 1 :
(new BigDecimal(appointSum).compareTo(new BigDecimal(o.getAppointSum())) < 0 ? -1 :
pinyin.compareTo(o.getPinyin())
)));
}
}
放到treeSet返回
TreeSet<ConsultantWorkloadInfoVO> treeSet = new TreeSet<>();
for (Map.Entry<Long, UserVO> entry : userMap.entrySet()) {
Long userId = entry.getKey();
UserVO userVO = entry.getValue();
ConsultantWorkloadInfoVO vo = new ConsultantWorkloadInfoVO();
vo.setId(userId);
vo.setRealName(userVO.getRealName());
vo.setPinyin(ChineseCharacterUtil.getUpperCase(userVO.getRealName(), true));
vo.setAppointSum(df.format(appointMap.getOrDefault(userId, BigDecimal.ZERO)));
vo.setCompleteSum(df.format(completeMap.getOrDefault(userId, BigDecimal.ZERO)));
treeSet.add(vo);
}
return new ArrayList<>(treeSet);