情景: 根据同一id查出来的多条数据中,同为Y状态返回Y,同为N返回N,不同状态皆为N,且要去重。
public PageResult<PageListDTO> querySubmitList(PageListVO pageParam) {
PageHelper.startPage(pageParam.getPage(),pageParam.getCount());
List<PageListDTO> pageListDTOS = typeOutloadingHeadMapper.querySubmitList(pageParam);
for (PageListDTO pageListDTO : pageListDTOS){
//用headId查出表体列表数据 再进行循环比较状态 有一条为N则都返回N
List<TypeOutloadingBodyDO> list = typeOutloadingBodyMapper.selectByHeadId(pageListDTO.getHeadId());
String state = OutloadingStatus.Y.name();
for (TypeOutloadingBodyDO typeOutloadingBodyDO : list) {
if (typeOutloadingBodyDO.getParcelStatus().equals(OutloadingStatus.N.name())) {
state = OutloadingStatus.N.name();
break;
}
}
pageListDTO.setParcelStatus(state);
}
//通过distinct方法去掉重复的表头列表
List<PageListDTO> pageListDTOS1 = new ArrayList<>();
pageListDTOS1= pageListDTOS.stream().distinct().collect(Collectors.toList());
Long total = new Long(pageListDTOS1.size());
BasePageRequest basePageRequest = new BillListParam();
basePageRequest.setPage(pageParam.getPage());
basePageRequest.setCount(pageParam.getCount());
return PageResult.createSuccessResult(basePageRequest, total, pageListDTOS1);
}