list集合 树 三层集合嵌套 {..{..{..}}}

list集合 树 三层集合嵌套 {…{…{…}}}

查询一级分类所有 和一级分类下第一个子元素的二级集合 和第一个分类下的所有三级集合(用于手机端的商品分类 )

	//记录分类编号
	Long cateId =null;
	List result =new ArrayList<>();
	
	//一级分类集合
	List cates =null;
	
	if (mobcatebarId ==null) {
		cates =mobRepository.selectOneMobCate();
	}else {
		cates =mobRepository.selectOneMobCate(mobcatebarId);
	}
	
	//获取一级分类集合中首个分类的编号
	 if (cates !=null) {
		//一级分类不存在时的异常处理
	    if(cates.size() ==0){
			throw new ServiceException(ErrorCodeDef.GOODS_CATEGORY_NOT_EXISTING,"商品分类不存在");
	}
	//设置返回的一级分类详细
	 cates.forEach(cate -> {
		MobCateBarVo mobCateBarVo =new MobCateBarVo();
		BeanUtils.copyProperties(cate,mobCateBarVo);
		result.add(mobCateBarVo);
	});
	if (mobcatebarId ==null) {
	   //默认第一个分类的编号
	   cateId = cates.get(0).getCateBarId();
	}else {
	   //赋值
	   cateId = mobcatebarId;
	}

	//二级子分类集合
	List cateBars =mobRepository.queryUsingMobCateBar(cateId);
	List vos =new ArrayList<>();
	//根据二级子分类集合,分别获取每个二级子分类集合的三级分类
	cateBars.stream().map(cateTwo-> {
		//集合转类型
		MobCateBarVo subVo2 =new MobCateBarVo();
		BeanUtils.copyProperties(cateTwo,subVo2);
		//记录三级分类编号
		Long cateIds = cateTwo.getCateBarId();
		//获取三级分类集合
		List mobCateBars =mobRepository.queryUsingMobCateBar(cateIds);
		List mobVos =new ArrayList<>();
		//设定二级分类所有三级分类
		mobCateBars.stream().map(cateThree ->{
			MobCateBarVo subVo3 =new MobCateBarVo();
			BeanUtils.copyProperties(cateThree,subVo3);
			return subVo3;
		}).forEach(mobVos::add);
			subVo2.setChilds(mobVos);
			return subVo2;
		}).forEach(vos::add);

	// 将取得的二级分类和三级分类设定到一级分类中
	if (cates !=null) {
	result.get(0).setChilds(vos);
	}
	//返回一级二级三级分类的树型结构
	 return result;

你可能感兴趣的:(list,stream(),forEach)