zoujiajian před 7 měsíci
rodič
revize
bad2a6360a

+ 1 - 1
netflix-dao/src/main/java/com/cyksj/model/entity/AbstractBackData.java

@@ -67,7 +67,7 @@ public abstract class AbstractBackData {
 	/**
 	 * 退款金额
 	 */
-	private BigDecimal refundMoney;
+	private BigDecimal refundMoney = BigDecimal.ZERO;
 
 	/**
 	 * 创建时间

+ 11 - 8
netflix-service/src/main/java/com/cyksj/service/mange/statistics/impl/StatisticsDataDayServiceImpl.java

@@ -393,30 +393,33 @@ public class StatisticsDataDayServiceImpl implements StatisticsDataDayService {
 		dataSave.add(streamingAccountData);
 	}
 
-	private GoodsDonSkuStatisticsData handleSubTypeOrdersData(Long goodsId, Integer type, List<OrderDon> singleOrders) {
+	private GoodsDonSkuStatisticsData handleSubTypeOrdersData(Long goodsId, Integer type, List<OrderDon> orderDons) {
 		GoodsDonSkuStatisticsData skuStatisticsData = new GoodsDonSkuStatisticsData();
 		skuStatisticsData.setGoodsId(goodsId);
 		skuStatisticsData.setType(type);
 		//用户数
-		skuStatisticsData.setNumOfUser(singleOrders.stream().map(OrderDon::getUserId).collect(Collectors.toSet()).size());
-		getNumOfOrderByPayType(singleOrders, skuStatisticsData);
+		skuStatisticsData.setNumOfUser(orderDons.stream().map(OrderDon::getUserId).collect(Collectors.toSet()).size());
+		getNumOfOrderByPayType(orderDons, skuStatisticsData);
 
 		//兑换码订单数
-		List<OrderDon> subExCodeOrders = Optional.ofNullable(singleOrders.stream().filter(order -> order.getType() == OrderDon.Type.EX_CODE).collect(Collectors.toList())).orElse(new ArrayList<>());
+		List<OrderDon> subExCodeOrders = Optional.ofNullable(orderDons.stream().filter(order -> order.getType() == OrderDon.Type.EX_CODE).collect(Collectors.toList())).orElse(new ArrayList<>());
 		skuStatisticsData.setNumOfCodeOrder(subExCodeOrders.size());
-		skuStatisticsData.setNumOfOrder(singleOrders.size());
+		skuStatisticsData.setNumOfOrder(orderDons.size());
 
-		Optional<BigDecimal> reduce = singleOrders.stream().map(OrderDon::getMoney).reduce(BigDecimal::add);
+		Optional<BigDecimal> reduce = orderDons.stream().map(OrderDon::getMoney).reduce(BigDecimal::add);
 		BigDecimal totalMoney = BigDecimal.valueOf(0);
 		if (reduce.isPresent()) {
 			totalMoney = reduce.get();
 		}
 		//金额
 		skuStatisticsData.setMoney(totalMoney);
+		//退款金额
+		Optional<BigDecimal> refundMoney = orderDons.stream().filter(od -> od.getStatus() == OrderDon.Status.refund).map(re -> Optional.ofNullable(re.getRefundMoney()).orElse(BigDecimal.ZERO)).reduce(BigDecimal::add);
+		skuStatisticsData.setRefundMoney(refundMoney.get());
 		//分销订单
-		List<OrderDon> distributeOrders = Optional.ofNullable(singleOrders.stream().filter(ord -> ord.getIsDistribute()).collect(Collectors.toList())).orElse(new ArrayList<>());
+		List<OrderDon> distributeOrders = Optional.ofNullable(orderDons.stream().filter(ord -> ord.getIsDistribute()).collect(Collectors.toList())).orElse(new ArrayList<>());
 		skuStatisticsData.setNumOfDistributeOrder(distributeOrders.size());
-		Optional<BigDecimal> distributeMoney = singleOrders.stream().map(OrderDon::getMoney).reduce(BigDecimal::add);
+		Optional<BigDecimal> distributeMoney = orderDons.stream().map(OrderDon::getMoney).reduce(BigDecimal::add);
 		skuStatisticsData.setDistributeOrderMoney(distributeMoney.isPresent() ? distributeMoney.get() : BigDecimal.ZERO);
 		return skuStatisticsData;
 	}

+ 8 - 0
netflix-service/src/main/java/com/cyksj/service/mange/statistics/impl/StatisticsDataServiceImpl.java

@@ -1,5 +1,6 @@
 package com.cyksj.service.mange.statistics.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
@@ -1013,6 +1014,13 @@ public class StatisticsDataServiceImpl implements StatisticsDataService {
 				if (data.getNumOfUser() != null && data.getNumOfUser() > 0) {
 					data.setRefundMoney(getRefundMoney(data.getGoodsId(), null, startDate, endDate));
 					data.setMoney(data.getMoney().divide(BigDecimal.valueOf(100)));
+					List<GoodsDonSkuStatisticsData> subDataList = data.getSubDataList();
+					if (CollUtil.isNotEmpty(subDataList)) {
+						subDataList.forEach(sub->{
+							sub.setRefundMoney(sub.getRefundMoney().divide(BigDecimal.valueOf(100)));
+							sub.setMoney(sub.getMoney().divide(BigDecimal.valueOf(100)));
+						});
+					}
 					return true;
 				}
 				return false;