业务数据切割显示的去重逻辑处理
业务数据切割显示的去重逻辑处理
业务背景:根据不同的数据来源封装到相同的VO对象,在后台界面上面按照不同的多个集合对象显示出来。
按照不同的条件(比如结算时间等维度来切割),但是实际上面比较难完整的避免重复的问题。
可以将不同的数据源的数据根据表名+主键ID来唯一标识,存在的话,就不添加到集合中。否则就添加到集合中显示。
//DEMO
//根据表名+ID作为唯一键值来去重。
List<String> hasKey = new ArrayList<>();
if(StringUtils.isNotEmpty(vo.getStrId()) && hasKey.contains(vo.getStrId())){
continue;
//不往集合中添加
}
//增加标识
hasKey.add(vo.getStrId());
//往集合中添加
//唯一键字段标识,可以根据不同的数据来源:表名前缀+数据表ID
vo.setStrId("收银"+AAA.getId());
vo.setStrId("虚拟付"+BBB.getId());
vo.setStrId("线下付"+CCC.getId());
vo.setStrId("退款申请"+DDD.getId());