描述
现有三个接口,分别返回相同的列数据,字段名相同但是数据归属业务不同。但最终要的结果是几个集合的所有数据!
(三个接口来源数据并无关联关系,都是互相独立)
最终效果:

实际三个接口查询出来,使用list.addAll()进行拼接:
无法满足业务要求,如下才是满足业务要求:


对。上代码!

三个list数据接口
//产品
List<ProductSalesVO> productRanking=objectJsonResult.getData().getProductRanking();
//项目
List<ProductSalesVO> projectRanking=objectJsonResult.getData().getProjectRanking();
//套餐
List<ProductSalesVO> packageRanking=objectJsonResult.getData().getPackageRanking();
产品三条
ProductSalesVO{name='分店不享有分店不享有分店不享有分店不', sales=3, totalSalesAmount=36} ProductSalesVO{name='微肌修护舒缓水', sales=1, totalSalesAmount=100} ProductSalesVO{name='测试001', sales=1, totalSalesAmount=80}
项目一条 ProductSalesVO{name='不享有折扣不享有折扣不享有折扣1·1', sales=1, totalSalesAmount=235}
套餐一条 ProductSalesVO{name='不享有折扣的套餐', sales=1, totalSalesAmount=300}

这是最终返回出去的容器↓
//初始化 数据容器
List<ProductSalesRankingExportVO> expList = new ArrayList<>();
public class ProductSalesRankingExportVO implements Serializable {
private String cpName;
private Integer cpSales;
private BigDecimal cpTotalSalesAmount;
private String xmName;
private Integer xmSales;
private BigDecimal xmTotalSalesAmount;
private String tcName;
private Integer tcSales;
private BigDecimal tcTotalSalesAmount;
}

因为三个list数据长度不一样,需要找出最长最大size的list.size,用来进行循环!
//判断三个list集合size 取最大。
int biggest = Math.max(productRanking.size(), projectRanking.size());
biggest = Math.max(biggest, packageRanking.size());
//按照最大的 list size进行遍历取数
for (int i = 0; i < biggest; i++) {
ProductSalesRankingExportVO vo = new ProductSalesRankingExportVO();
//产品list数据
if(productRanking.size() > i){
vo.setCpName(productRanking.get(i).getName());
vo.setCpSales(productRanking.get(i).getSales());
vo.setCpTotalSalesAmount(productRanking.get(i).getTotalSalesAmount());
}
//项目数据
if(projectRanking.size() > i) {
vo.setXmName(projectRanking.get(i).getName());
vo.setXmSales(projectRanking.get(i).getSales());
vo.setXmTotalSalesAmount(projectRanking.get(i).getTotalSalesAmount());
}
//套餐数据
if(packageRanking.size() > i) {
vo.setTcName(packageRanking.get(i).getName());
vo.setTcSales(packageRanking.get(i).getSales());
vo.setTcTotalSalesAmount(packageRanking.get(i).getTotalSalesAmount());
}
expList.add(vo);
}
最终的expList数据格式:
ProductSalesRankingExportVO{cpName='分店不享有分店不享有分店不享有分店不', cpSales=3, cpTotalSalesAmount=36, xmName='不享有折扣不享有折扣不享有折扣1·1', xmSales=1, xmTotalSalesAmount=235, tcName='不享有折扣的套餐', tcSales=1, tcTotalSalesAmount=300} ProductSalesRankingExportVO{cpName='微肌修护舒缓水', cpSales=1, cpTotalSalesAmount=100, xmName='null', xmSales=0, xmTotalSalesAmount=null, tcName='null', tcSales=0, tcTotalSalesAmount=null} ProductSalesRankingExportVO{cpName='测试001', cpSales=1, cpTotalSalesAmount=80, xmName='null', xmSales=0, xmTotalSalesAmount=null, tcName='null', tcSales=0, tcTotalSalesAmount=null}
//初始化 数据容器
List<ProductSalesRankingExportVO> expList = new ArrayList<>();
//查询排行榜数据
JsonResult<ProductSalesRankingVO> objectJsonResult = productSalesRankingApi.getProductSalesRanking(token, range, shopId, startMonth, endMonth);
//产品
List<ProductSalesVO> productRanking = objectJsonResult.getData().getProductRanking();
//项目
List<ProductSalesVO> projectRanking =objectJsonResult.getData().getProjectRanking();
//套餐
List<ProductSalesVO> packageRanking =objectJsonResult.getData().getPackageRanking();
//判断三个list集合size 取最大。
int biggest = Math.max(productRanking.size(), projectRanking.size());
biggest = Math.max(biggest, packageRanking.size());
//按照最大的 list size进行遍历取数
for (int i = 0; i < biggest; i++) {
ProductSalesRankingExportVO vo = new ProductSalesRankingExportVO();
//产品list数据
if(productRanking.size() > i){
vo.setCpName(productRanking.get(i).getName());
vo.setCpSales(productRanking.get(i).getSales());
vo.setCpTotalSalesAmount(productRanking.get(i).getTotalSalesAmount());
}
//项目数据
if(projectRanking.size() > i) {
vo.setXmName(projectRanking.get(i).getName());
vo.setXmSales(projectRanking.get(i).getSales());
vo.setXmTotalSalesAmount(projectRanking.get(i).getTotalSalesAmount());
}
//套餐数据
if(packageRanking.size() > i) {
vo.setTcName(packageRanking.get(i).getName());
vo.setTcSales(packageRanking.get(i).getSales());
vo.setTcTotalSalesAmount(packageRanking.get(i).getTotalSalesAmount());
}
expList.add(vo);
}
//执行导出
ExcelUtils.unifiedExport(HEADERS,expList,"销售排行","产品销售排行榜");
总结
文章写到这,也就结束了,刚开始记录写文难免有不足,欢迎大家批评指正!
|