List<QueryRetTreatyVo> queryRetTreatyVos = baseMapper.selectRetTreatyPageList(page, queryWrapper); List<QueryRetTreatyVo> queryRetTreatyVos1 = baseMapper.selectTotalMountAndTotalNper(); Map<Long, QueryRetTreatyVo> map = new LinkedHashMap<>(); //将查询结果转换为 Map,使用 Map.merge() 处理重复键的情况,相当于put,但是有处理重复键的情况 queryRetTreatyVos.parallelStream().forEach(queryRetTreatyVo -> map.merge(queryRetTreatyVo.getId(), queryRetTreatyVo, (oldValue, newValue) -> newValue)); // 处理已缴付金额问题 queryRetTreatyVos1.parallelStream().forEach(e -> map.computeIfPresent(e.getId(), (id, queryRetTreatyVo) -> { queryRetTreatyVo.setTotalMount(e.getTotalMount()); queryRetTreatyVo.setTotalNper(e.getTotalNper()); return queryRetTreatyVo; }));
时间: 2024-04-14 19:31:38 浏览: 82
这段代码的作用是查询保单信息并将结果转换为一个Map对象。首先,使用`baseMapper.selectRetTreatyPageList(page, queryWrapper)`方法查询保单信息,得到一个`List<QueryRetTreatyVo>`对象,保存在`queryRetTreatyVos`中。然后,使用`baseMapper.selectTotalMountAndTotalNper()`方法查询已缴付金额信息,得到一个`List<QueryRetTreatyVo>`对象,保存在`queryRetTreatyVos1`中。
接下来,创建一个`LinkedHashMap<Long, QueryRetTreatyVo>`对象`map`,用于保存转换后的结果。使用并行流(`parallelStream()`)遍历`queryRetTreatyVos`列表,并使用`map.merge()`方法将查询结果转换为Map,并处理重复键的情况。
然后,再次使用并行流遍历`queryRetTreatyVos1`列表,并使用`map.computeIfPresent()`方法处理已缴付金额问题。如果在`map`中存在对应的键值,则更新该键值对应的`QueryRetTreatyVo`对象的已缴付金额和总期数,并返回更新后的对象。
最终,经过以上处理,得到的`map`对象即为转换后的结果。
相关问题
@Service("chengyuxinxiService") public class ChengyuxinxiServiceImpl extends ServiceImpl<ChengyuxinxiDao, ChengyuxinxiEntity> implements ChengyuxinxiService { @Override public PageUtils queryPage(Map<String, Object> params) { Page<ChengyuxinxiEntity> page = this.selectPage( new Query<ChengyuxinxiEntity>(params).getPage(), new EntityWrapper<ChengyuxinxiEntity>() ); return new PageUtils(page); } @Override public PageUtils queryPage(Map<String, Object> params, Wrapper<ChengyuxinxiEntity> wrapper) { Page<ChengyuxinxiView> page =new Query<ChengyuxinxiView>(params).getPage(); page.setRecords(baseMapper.selectListView(page,wrapper)); PageUtils pageUtil = new PageUtils(page); return pageUtil; } @Override public List<ChengyuxinxiVO> selectListVO(Wrapper<ChengyuxinxiEntity> wrapper) { return baseMapper.selectListVO(wrapper); } @Override public ChengyuxinxiVO selectVO(Wrapper<ChengyuxinxiEntity> wrapper) { return baseMapper.selectVO(wrapper); } @Override public List<ChengyuxinxiView> selectListView(Wrapper<ChengyuxinxiEntity> wrapper) { return baseMapper.selectListView(wrapper); } @Override public ChengyuxinxiView selectView(Wrapper<ChengyuxinxiEntity> wrapper) { return baseMapper.selectView(wrapper); } }
这是一个 Java 类,实现了 ChengyuxinxiService 接口。这个类中定义了一些方法,用于操作 ChengyuxinxiEntity 实体类对应的数据表。其中包括:
1. queryPage:根据传入的参数 params (查询条件)进行分页查询操作,返回查询结果的 PageUtils 对象。
2. queryPage:根据传入的参数 params (查询条件)和 wrapper (包装器)进行分页查询操作,返回查询结果的 PageUtils 对象。
3. selectListVO:根据传入的 wrapper (包装器)进行查询操作,返回查询结果的 ChengyuxinxiVO 集合。
4. selectVO:根据传入的 wrapper (包装器)进行查询操作,返回查询结果的单个 ChengyuxinxiVO 对象。
5. selectListView:根据传入的 wrapper (包装器)进行查询操作,返回查询结果的 ChengyuxinxiView 集合。
6. selectView:根据传入的 wrapper (包装器)进行查询操作,返回查询结果的单个 ChengyuxinxiView 对象。
该类使用了 @Service 注解,表明它是一个服务类,其中的方法可以被其他类进行调用。同时,它还继承了 ServiceImpl 类,对 BaseService 接口进行了实现,提供了一些基础方法的实现。
解释以下代码:@Service("addressService") public class AddressServiceImpl extends ServiceImpl<AddressDao, AddressEntity> implements AddressService { @Override public PageUtils queryPage(Map<String, Object> params) { Page<AddressEntity> page = this.selectPage( new Query<AddressEntity>(params).getPage(), new EntityWrapper<AddressEntity>() ); return new PageUtils(page); } @Override public PageUtils queryPage(Map<String, Object> params, Wrapper<AddressEntity> wrapper) { Page<AddressView> page =new Query<AddressView>(params).getPage(); page.setRecords(baseMapper.selectListView(page,wrapper)); PageUtils pageUtil = new PageUtils(page); return pageUtil; } @Override public List<AddressVO> selectListVO(Wrapper<AddressEntity> wrapper) { return baseMapper.selectListVO(wrapper); } @Override public AddressVO selectVO(Wrapper<AddressEntity> wrapper) { return baseMapper.selectVO(wrapper); } @Override public List<AddressView> selectListView(Wrapper<AddressEntity> wrapper) { return baseMapper.selectListView(wrapper); } @Override public AddressView selectView(Wrapper<AddressEntity> wrapper) { return baseMapper.selectView(wrapper); }
这段代码定义了一个名为AddressServiceImpl的类,该类实现了AddressService接口,并且使用@Service注解将其声明为Spring的一个Service。
该类继承了Mybatis-Plus提供的ServiceImpl,该类提供了一些基本的CRUD操作的实现。
其中,queryPage方法接受一个Map类型的参数params,用于查询分页数据。它首先调用selectPage方法从数据库中查询出符合条件的AddressEntity对象列表,并将其封装到一个PageUtils对象中返回。该方法重载了queryPage方法,该方法接受一个Wrapper<AddressEntity>类型的参数wrapper,用于在查询时添加其他的条件。
此外,该类还提供了其他一些方法,例如selectListVO、selectView等,这些方法通过调用baseMapper属性的相应方法实现了对数据库的访问操作。其中,baseMapper是Mybatis-Plus提供的一个Mapper对象,它提供了基本的CRUD操作以及其他一些高级查询方法。
阅读全文