Quellcode durchsuchen

首页、app 销售数量减去退货与取消数量

liyuan vor 2 Wochen
Ursprung
Commit
46774df80d

+ 22 - 4
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/statistics/service/impl/StatisticsServiceImpl.java

@@ -182,10 +182,20 @@ public class StatisticsServiceImpl implements IStatisticsService {
 			BigDecimal stlAmountReturns = saleDetailDtoList.stream().filter(e -> "已完成".equals(e.getStatus()) &&
 					"外部销售".equals(e.getBusinessSource())).map(SaleDetailDto::getSubTotalMoney).filter(Objects::nonNull)
 				.reduce(BigDecimal.ZERO, BigDecimal::add).setScale(0, RoundingMode.HALF_UP);
-			map.put("dealAmountM", subTotalMoneyActual.subtract(subTotalMoneyReturns));
-			map.put("salesNumM", goodsNumActual.subtract(goodsNumReturns));
+			BigDecimal goodsNumCancel = saleDetailDtoList.stream().filter(e -> OrderStatusEnum.CANCELLED.value.equals(e.getStatus()))
+				.map(SaleDetailDto::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
+				.setScale(0, RoundingMode.HALF_UP).abs();
+			BigDecimal subTotalMoneyCancel = saleDetailDtoList.stream().filter(e -> OrderStatusEnum.CANCELLED.value.equals(e.getStatus()))
+				.map(SaleDetailDto::getSubTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
+				.setScale(0, RoundingMode.HALF_UP).abs();
+			// 已取消的毛利
+			BigDecimal profitCancel = saleDetailDtoList.stream().filter(e -> OrderStatusEnum.CANCELLED.value.equals(e.getStatus()))
+				.map(SaleDetailDto::getProfit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
+				.setScale(0, RoundingMode.HALF_UP).abs();
+			map.put("dealAmountM", subTotalMoneyActual.subtract(subTotalMoneyReturns).subtract(subTotalMoneyCancel));
+			map.put("salesNumM", goodsNumActual.subtract(goodsNumReturns).subtract(goodsNumCancel));
 			map.put("stlAmountM", stlAmountActual.subtract(stlAmountReturns));
-			map.put("profitM", profitActual.subtract(profitReturns));
+			map.put("profitM", profitActual.subtract(profitReturns).subtract(profitCancel));
 			String formattedDay = today.format(formatter);
 			List<SaleDetailDto> saleDetailDayList = saleDetailDtoList.stream().filter(e -> e.getBusinesDate().equals(formattedDay))
 				.collect(Collectors.toList());
@@ -747,10 +757,18 @@ public class StatisticsServiceImpl implements IStatisticsService {
 		BigDecimal subTotalMoneyCancel = saleDetailDtoList.stream().filter(e -> OrderStatusEnum.CANCELLED.value.equals(e.getStatus()))
 			.map(SaleDetailDto::getSubTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
 			.setScale(0, RoundingMode.HALF_UP).abs();
+
+		BigDecimal goodsNumReturns = saleDetailDtoList.stream().filter(e -> "已完成".equals(e.getStatus()))
+			.map(SaleDetailDto::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
+			.setScale(0, RoundingMode.HALF_UP).abs();
+		BigDecimal goodsNumCancel = saleDetailDtoList.stream().filter(e -> OrderStatusEnum.CANCELLED.value.equals(e.getStatus()))
+			.map(SaleDetailDto::getGoodsNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)
+			.setScale(0, RoundingMode.HALF_UP).abs();
+
 		long customerCount = saleDetailDtoList.stream().filter(e -> !OrderStatusEnum.COMPLETED.value.equals(e.getStatus()) && !OrderStatusEnum.CANCELLED.value.equals(e.getStatus()) && e.getBsType().equals("销售")).map(SaleDetailDto::getCustomerId).filter(Objects::nonNull).distinct().count();
 		BigDecimal realAmount = subTotalMoneyActual.subtract(subTotalMoneyReturns).subtract(subTotalMoneyCancel);
 		Map<String, Object> map = new HashMap<>(3);
-		map.put("income", goodsNumActual);
+		map.put("income", goodsNumActual.subtract(goodsNumReturns).subtract(goodsNumCancel));
 		map.put("averageAmount", realAmount.divide(new BigDecimal(customerCount), 2, RoundingMode.HALF_UP));
 		map.put("corpsNumber", customerCount);