Commit 771f1841 authored by libin's avatar libin

租车会员统计

parent d877326c
...@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty; ...@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.persistence.*; import javax.persistence.*;
import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
...@@ -14,7 +15,8 @@ import java.util.Date; ...@@ -14,7 +15,8 @@ import java.util.Date;
* @data 2019/11/11 15:49 * @data 2019/11/11 15:49
*/ */
@Data @Data
public class OrderReceivedStatisticsBase { public class OrderReceivedStatisticsBase implements Serializable {
private static final long serialVersionUID = 1L;
/** /**
* *
*/ */
......
...@@ -12,8 +12,10 @@ import com.xxfc.platform.order.pojo.account.OrderAccountDetail; ...@@ -12,8 +12,10 @@ import com.xxfc.platform.order.pojo.account.OrderAccountDetail;
import com.xxfc.platform.order.pojo.dto.OrderDTO; import com.xxfc.platform.order.pojo.dto.OrderDTO;
import com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO; import com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO;
import com.xxfc.platform.order.pojo.order.CompanyAmountBo; import com.xxfc.platform.order.pojo.order.CompanyAmountBo;
import lombok.Data;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -66,7 +68,7 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive ...@@ -66,7 +68,7 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
//数据处理 状态组合 按支付状态分组 而后按组合状态 //数据处理 状态组合 按支付状态分组 而后按组合状态
Map<Boolean, Map<String, Map<LevelEnum, List<OrderDTO>>>> stateGroupMap = orders.stream().peek(x -> { Map<Boolean, Map<String, Map<LevelEnum, List<OrderDTO>>>> stateGroupMap = orders.stream().peek(x -> {
x.setStateGroup(String.format("%d-%d-%d-%d", StatisticsStatusEnum.DEFAULT_COMPANY, x.setStateGroup(String.format("%d-%d-%d-%d", StatisticsStatusEnum.DEFAULT_COMPANY,
x.getOrderOrigin(), x.getPayWay() == null ? StatisticsStatusEnum.NO_PAY_WAY:x.getPayWay(), x.getOrderOrigin(), x.getPayWay() == null ? StatisticsStatusEnum.NO_PAY_WAY : x.getPayWay(),
x.getHasPay())); x.getHasPay()));
stisticsActiveState.add(x.getStateGroup()); stisticsActiveState.add(x.getStateGroup());
}) })
...@@ -77,7 +79,7 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive ...@@ -77,7 +79,7 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
//账目数据处理 状态组合 //账目数据处理 状态组合
Map<String, Map<LevelEnum, List<OrderAccountBo>>> orderAccountMap = orderAccountBoList.stream().peek(x -> { Map<String, Map<LevelEnum, List<OrderAccountBo>>> orderAccountMap = orderAccountBoList.stream().peek(x -> {
x.setStateGroup(String.format("%d-%d-%d-%d", StatisticsStatusEnum.DEFAULT_COMPANY, x.getOrderOrigin(), x.setStateGroup(String.format("%d-%d-%d-%d", StatisticsStatusEnum.DEFAULT_COMPANY, x.getOrderOrigin(),
x.getPayWay() == null ? StatisticsStatusEnum.NO_PAY_WAY:x.getPayWay(), x.getPayWay() == null ? StatisticsStatusEnum.NO_PAY_WAY : x.getPayWay(),
x.getHasPay())); x.getHasPay()));
}).collect(Collectors.groupingBy(OrderAccountBo::getStateGroup, Collectors.groupingBy(OrderAccountBo::getLevelEnum, Collectors.toList()))); }).collect(Collectors.groupingBy(OrderAccountBo::getStateGroup, Collectors.groupingBy(OrderAccountBo::getLevelEnum, Collectors.toList())));
...@@ -88,77 +90,31 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive ...@@ -88,77 +90,31 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
//状态key //状态key
String orderKey = orderEntry.getKey(); String orderKey = orderEntry.getKey();
Map<LevelEnum, List<OrderAccountBo>> orderMemberLevelMap = orderEntry.getValue(); Map<LevelEnum, List<OrderAccountBo>> orderMemberLevelMap = orderEntry.getValue();
BigDecimal generaTotalAmount = BigDecimal.ZERO; Set<Map.Entry<LevelEnum, List<OrderAccountBo>>> ordermemberLevelentries = orderMemberLevelMap.entrySet();
BigDecimal generalTotalRefundAmount = BigDecimal.ZERO; MemberLevelStatistics memberLevelStatistics = new MemberLevelStatistics();
BigDecimal goldTotalAmount = BigDecimal.ZERO; //遍历
BigDecimal goldTotalRefundAmount = BigDecimal.ZERO; for (Map.Entry<LevelEnum, List<OrderAccountBo>> orderMemberLevelEntry : ordermemberLevelentries) {
BigDecimal diamondTotalAmount = BigDecimal.ZERO; Integer totalQuantity = stateGroupMap.get(Boolean.TRUE).get(orderKey) == null ? 0 : stateGroupMap.get(Boolean.TRUE).get(orderKey).size();
BigDecimal diamondTotalRefundAmount = BigDecimal.ZERO; wrapMemberLevelStatistics(orderMemberLevelEntry.getKey(), orderMemberLevelEntry.getValue(), totalQuantity, memberLevelStatistics);
//普通
List<OrderAccountBo> generalOrderAccountBos = orderMemberLevelMap.get(LevelEnum.GENERAL);
if(CollectionUtils.isNotEmpty(generalOrderAccountBos)) {
for (OrderAccountBo orderAccountBo : generalOrderAccountBos) {
OrderAccountDetail accountDetailEntity = orderAccountBo.getAccountDetailEntity();
if (orderAccountBo.getAccountType() == PAY_ORDER) {
generaTotalAmount.add(accountDetailEntity.getOrderAmount()).add(accountDetailEntity.getDepositAmount());
} else {
generalTotalRefundAmount.add(accountDetailEntity.getOrderAmount()).add(accountDetailEntity.getDepositAmount());
}
}
}
//黄金
List<OrderAccountBo> goldOrderAccountBos = orderMemberLevelMap.get(LevelEnum.GOLD);
if (CollectionUtils.isNotEmpty(goldOrderAccountBos)) {
for (OrderAccountBo orderAccountBo : goldOrderAccountBos) {
OrderAccountDetail accountDetailEntity = orderAccountBo.getAccountDetailEntity();
if (orderAccountBo.getAccountType() == PAY_ORDER) {
goldTotalAmount.add(accountDetailEntity.getOrderAmount()).add(accountDetailEntity.getDepositAmount());
} else {
goldTotalRefundAmount.add(accountDetailEntity.getOrderAmount()).add(accountDetailEntity.getDepositAmount());
}
}
}
//钻石
List<OrderAccountBo> diamondOrderAccountBos = orderMemberLevelMap.get(LevelEnum.DIAMOND);
if (CollectionUtils.isNotEmpty(diamondOrderAccountBos)) {
for (OrderAccountBo orderAccountBo : diamondOrderAccountBos) {
OrderAccountDetail accountDetailEntity = orderAccountBo.getAccountDetailEntity();
if (orderAccountBo.getAccountType() == PAY_ORDER) {
diamondTotalAmount.add(accountDetailEntity.getOrderAmount()).add(accountDetailEntity.getDepositAmount());
} else {
diamondTotalRefundAmount.add(accountDetailEntity.getOrderAmount()).add(accountDetailEntity.getDepositAmount());
}
}
} }
if (stisticsActiveState.contains(orderKey)) { if (stisticsActiveState.contains(orderKey)) {
//创建会员统计对象
OrderMemberReceivedStatistics orderMemberReceivedStatistics = StatisticsStatusEnum.wrapStatisticsObject(startDate, orderKey, new OrderMemberReceivedStatistics()); OrderMemberReceivedStatistics orderMemberReceivedStatistics = StatisticsStatusEnum.wrapStatisticsObject(startDate, orderKey, new OrderMemberReceivedStatistics());
orderMemberReceivedStatistics.setToalCommonAmmount(generaTotalAmount.subtract(generalTotalRefundAmount)); BeanUtils.copyProperties(memberLevelStatistics, orderMemberReceivedStatistics);
Integer totalcommonQuantity = stateGroupMap.get(Boolean.TRUE).get(LevelEnum.GENERAL) == null ? 0 : stateGroupMap.get(Boolean.TRUE).get(LevelEnum.GENERAL).size();
orderMemberReceivedStatistics.setTotalCommonQuantity(totalcommonQuantity);
orderMemberReceivedStatistics.setTotalGoldAmount(goldTotalAmount.subtract(goldTotalRefundAmount));
Integer totalGoldQuantity = stateGroupMap.get(Boolean.TRUE).get(LevelEnum.GOLD) == null ? 0 : stateGroupMap.get(Boolean.TRUE).get(LevelEnum.GOLD).size();
orderMemberReceivedStatistics.setTotalGoldQuantity(totalGoldQuantity);
orderMemberReceivedStatistics.setTotalDiamondAmmount(diamondTotalAmount.subtract(diamondTotalRefundAmount));
Integer totalDiamondQuantity = stateGroupMap.get(Boolean.TRUE).get(LevelEnum.DIAMOND) == null ? 0 : stateGroupMap.get(Boolean.TRUE).get(LevelEnum.DIAMOND).size();
orderMemberReceivedStatistics.setTotalDiamondQuantity(totalDiamondQuantity);
orderMemberReceivedStatisticsList.add(orderMemberReceivedStatistics); orderMemberReceivedStatisticsList.add(orderMemberReceivedStatistics);
} else { } else {
BigDecimal totalAmount = generaTotalAmount.add(generaTotalAmount).add(goldTotalAmount).add(diamondTotalAmount).subtract(generalTotalRefundAmount).subtract(goldTotalRefundAmount).subtract(diamondTotalRefundAmount);
Integer compnayId = StatisticsStatusEnum.getCompnayId(orderKey); Integer compnayId = StatisticsStatusEnum.getCompnayId(orderKey);
CompanyAmountBo companyAmountBo = CompanyAmountBo.builder().companyId(compnayId).amount(totalAmount).build(); CompanyAmountBo companyAmountBo = CompanyAmountBo.builder().companyId(compnayId).amount(memberLevelStatistics.getTotalAmount()).build();
companyAmoutList.add(companyAmountBo); companyAmoutList.add(companyAmountBo);
} }
} }
//无状态组合统计对象生成
Map<Integer, BigDecimal> companyAmountMap = companyAmoutList.stream().collect(Collectors.groupingBy(CompanyAmountBo::getCompanyId, Map<Integer, BigDecimal> companyAmountMap = companyAmoutList.stream().collect(Collectors.groupingBy(CompanyAmountBo::getCompanyId,
CollectorsUtil.summingBigDecimal(CompanyAmountBo::getAmount))); CollectorsUtil.summingBigDecimal(CompanyAmountBo::getAmount)));
Set<Map.Entry<Integer, BigDecimal>> companyAmountSet = companyAmountMap.entrySet(); Set<Map.Entry<Integer, BigDecimal>> companyAmountSet = companyAmountMap.entrySet();
for (Map.Entry<Integer, BigDecimal> companyAmountEntry : companyAmountSet) { for (Map.Entry<Integer, BigDecimal> companyAmountEntry : companyAmountSet) {
String stateGrp = String.format("%d-%d-%d-%d",companyAmountEntry.getKey(),StatisticsStatusEnum.NO_ORDER_ORIGN,StatisticsStatusEnum.NO_PAY_WAY,StatisticsStatusEnum.NO_ORDER_STATE); String stateGrp = String.format("%d-%d-%d-%d", companyAmountEntry.getKey(), StatisticsStatusEnum.NO_ORDER_ORIGN, StatisticsStatusEnum.NO_PAY_WAY, StatisticsStatusEnum.NO_ORDER_STATE);
OrderMemberReceivedStatistics orderMemberReceivedStatistics = StatisticsStatusEnum.wrapStatisticsObject(startDate, stateGrp, new OrderMemberReceivedStatistics()); OrderMemberReceivedStatistics orderMemberReceivedStatistics = StatisticsStatusEnum.wrapStatisticsObject(startDate, stateGrp, new OrderMemberReceivedStatistics());
orderMemberReceivedStatistics.setTotalAmount(companyAmountEntry.getValue()); orderMemberReceivedStatistics.setTotalAmount(companyAmountEntry.getValue());
orderMemberReceivedStatisticsList.add(orderMemberReceivedStatistics); orderMemberReceivedStatisticsList.add(orderMemberReceivedStatistics);
...@@ -174,6 +130,42 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive ...@@ -174,6 +130,42 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
insertMemberReceivedStatisticsBatch(orderMemberReceivedStatisticsList); insertMemberReceivedStatisticsBatch(orderMemberReceivedStatisticsList);
} }
/**
* memberLevelStatistics 对象包装
*
* @param levelEnum 会员等级
* @param orderAccountBos 账目对象
* @param totalQuantity 对应等级的单量
* @param memberLevelStatistics
* @return
*/
private MemberLevelStatistics wrapMemberLevelStatistics(LevelEnum levelEnum, List<OrderAccountBo> orderAccountBos, Integer totalQuantity, MemberLevelStatistics memberLevelStatistics) {
BigDecimal realAmount = getRealAmount(orderAccountBos);
return wrapMemberLevelStatistics(levelEnum,realAmount,totalQuantity,memberLevelStatistics);
}
/**
* 获取收入
*
* @param orderAccountBos
* @return
*/
private BigDecimal getRealAmount(List<OrderAccountBo> orderAccountBos) {
BigDecimal totalAmount = BigDecimal.ZERO;
BigDecimal refundAmount = BigDecimal.ZERO;
if (CollectionUtils.isEmpty(orderAccountBos)) {
return BigDecimal.ZERO;
}
for (OrderAccountBo orderAccountBo : orderAccountBos) {
OrderAccountDetail accountDetailEntity = orderAccountBo.getAccountDetailEntity();
if (orderAccountBo.getAccountType() == PAY_ORDER) {
totalAmount.add(accountDetailEntity.getOrderAmount()).add(accountDetailEntity.getDepositAmount());
} else {
refundAmount.add(accountDetailEntity.getOrderAmount()).add(accountDetailEntity.getDepositAmount());
}
}
return totalAmount.subtract(refundAmount);
}
/** /**
* @param startDate 时间 * @param startDate 时间
...@@ -187,47 +179,61 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive ...@@ -187,47 +179,61 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
} }
Set<Map.Entry<String, Map<LevelEnum, List<OrderDTO>>>> noPayOrderSet = noPayOrdersMap.entrySet(); Set<Map.Entry<String, Map<LevelEnum, List<OrderDTO>>>> noPayOrderSet = noPayOrdersMap.entrySet();
for (Map.Entry<String, Map<LevelEnum, List<OrderDTO>>> noPayOrderEntry : noPayOrderSet) { for (Map.Entry<String, Map<LevelEnum, List<OrderDTO>>> noPayOrderEntry : noPayOrderSet) {
BigDecimal generalTotalAmount = BigDecimal.ZERO; MemberLevelStatistics memberLevelStatistics = new MemberLevelStatistics();
Integer generalTotalQuantity = 0;
BigDecimal goldTotalAmount = BigDecimal.ZERO;
Integer goldTotalQuantity = 0;
BigDecimal diamondTotalAmount = BigDecimal.ZERO;
Integer diamondTotalQuantity = 0;
//获取状态 //获取状态
String noPayOrderStateGroup = noPayOrderEntry.getKey(); String noPayOrderStateGroup = noPayOrderEntry.getKey();
Map<LevelEnum, List<OrderDTO>> noPayOrderEntryValue = noPayOrderEntry.getValue(); Map<LevelEnum, List<OrderDTO>> noPayOrderEntryValue = noPayOrderEntry.getValue();
OrderMemberReceivedStatistics orderMemberReceivedStatistics = StatisticsStatusEnum.wrapStatisticsObject(startDate, noPayOrderStateGroup, new OrderMemberReceivedStatistics()); OrderMemberReceivedStatistics orderMemberReceivedStatistics = StatisticsStatusEnum.wrapStatisticsObject(startDate, noPayOrderStateGroup, new OrderMemberReceivedStatistics());
List<OrderDTO> generalOrderDTOList = noPayOrderEntryValue.get(LevelEnum.GENERAL); Set<Map.Entry<LevelEnum, List<OrderDTO>>> noPayOrderEntries = noPayOrderEntryValue.entrySet();
if (CollectionUtils.isNotEmpty(generalOrderDTOList)) { for (Map.Entry<LevelEnum, List<OrderDTO>> orderEntry : noPayOrderEntries) {
generalTotalAmount = generalOrderDTOList.stream().map(OrderDTO::getRealAmount).reduce(BigDecimal.ZERO, (x, y) -> x.add(y)); wrapOrderMemberReceivedStatistics(orderEntry.getValue(), orderEntry.getKey(), memberLevelStatistics);
generalTotalQuantity = generalOrderDTOList.size();
}
List<OrderDTO> goldOrderDTOList = noPayOrderEntryValue.get(LevelEnum.GOLD);
if (CollectionUtils.isNotEmpty(goldOrderDTOList)) {
goldTotalAmount = goldOrderDTOList.stream().map(OrderDTO::getRealAmount).reduce(BigDecimal.ZERO, (x, y) -> x.add(y));
goldTotalQuantity = goldOrderDTOList.size();
} }
BeanUtils.copyProperties(memberLevelStatistics, orderMemberReceivedStatistics);
List<OrderDTO> diamondOrderDTOList = noPayOrderEntryValue.get(LevelEnum.DIAMOND);
if (CollectionUtils.isNotEmpty(diamondOrderDTOList)) {
diamondTotalAmount = diamondOrderDTOList.stream().map(OrderDTO::getRealAmount).reduce(BigDecimal.ZERO, (x, y) -> x.add(y));
diamondTotalQuantity = diamondOrderDTOList.size();
}
orderMemberReceivedStatistics.setToalCommonAmmount(generalTotalAmount);
orderMemberReceivedStatistics.setTotalCommonQuantity(generalTotalQuantity);
orderMemberReceivedStatistics.setTotalGoldAmount(goldTotalAmount);
orderMemberReceivedStatistics.setTotalGoldQuantity(goldTotalQuantity);
orderMemberReceivedStatistics.setTotalDiamondAmmount(diamondTotalAmount);
orderMemberReceivedStatistics.setTotalDiamondQuantity(diamondTotalQuantity);
orderMemberReceivedStatistics.setTotalAmount(generalTotalAmount.add(goldTotalAmount).add(diamondTotalAmount));
orderMemberReceivedStatistics.setTotalQuantity(generalTotalQuantity + goldTotalQuantity + diamondTotalQuantity);
orderMemberReceivedStatisticsList.add(orderMemberReceivedStatistics); orderMemberReceivedStatisticsList.add(orderMemberReceivedStatistics);
} }
return orderMemberReceivedStatisticsList; return orderMemberReceivedStatisticsList;
} }
/**
* @param orders 某种状态下的会员单
* @param levelEnum 会员等级
* @param memberLevelStatistics 会员统计对象
* @return
*/
private MemberLevelStatistics wrapOrderMemberReceivedStatistics(List<OrderDTO> orders, LevelEnum levelEnum, MemberLevelStatistics memberLevelStatistics) {
orders = CollectionUtils.isEmpty(orders) ? Collections.EMPTY_LIST : orders;
BigDecimal totalAmount = orders.stream().map(OrderDTO::getRealAmount).reduce(BigDecimal.ZERO, (x, y) -> x.add(y));
return wrapMemberLevelStatistics(levelEnum,totalAmount,orders.size(),memberLevelStatistics);
}
/**
* memberLevelStatistics 对象包装
* @param levelEnum
* @param amount
* @param quantity
* @param memberLevelStatistics
* @return
*/
private MemberLevelStatistics wrapMemberLevelStatistics(LevelEnum levelEnum,BigDecimal amount,Integer quantity,MemberLevelStatistics memberLevelStatistics){
switch (levelEnum) {
case GENERAL:
memberLevelStatistics.setToalCommonAmmount(amount);
memberLevelStatistics.setTotalCommonQuantity(quantity);
break;
case GOLD:
memberLevelStatistics.setTotalGoldAmount(amount);
memberLevelStatistics.setTotalGoldQuantity(quantity);
break;
case DIAMOND:
memberLevelStatistics.setTotalDiamondAmmount(amount);
memberLevelStatistics.setTotalDiamondQuantity(quantity);
break;
default:
break;
}
return memberLevelStatistics;
}
/** /**
* 创建剩余状态数据 * 创建剩余状态数据
* *
...@@ -245,7 +251,7 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive ...@@ -245,7 +251,7 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
//统计对象的生成 //统计对象的生成
otherStatisticsStateGroup.stream().peek(stateGroup -> { otherStatisticsStateGroup.stream().peek(stateGroup -> {
OrderMemberReceivedStatistics orderMemberReceivedStatisticsClone = StatisticsStatusEnum.wrapStatisticsObject(startDate, stateGroup, OrderMemberReceivedStatistics orderMemberReceivedStatisticsClone = StatisticsStatusEnum.wrapStatisticsObject(startDate, stateGroup,
ObjectUtil.cloneByStream(orderMemberReceivedStatistics)); ObjectUtil.clone(orderMemberReceivedStatistics));
orderMemberReceivedStatisticsList.add(orderMemberReceivedStatisticsClone); orderMemberReceivedStatisticsList.add(orderMemberReceivedStatisticsClone);
}).count(); }).count();
return orderMemberReceivedStatisticsList; return orderMemberReceivedStatisticsList;
...@@ -259,6 +265,7 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive ...@@ -259,6 +265,7 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
private OrderMemberReceivedStatistics createDefaultOrderMemberReceivedStatistics() { private OrderMemberReceivedStatistics createDefaultOrderMemberReceivedStatistics() {
OrderMemberReceivedStatistics orderMemberReceivedStatistics = new OrderMemberReceivedStatistics(); OrderMemberReceivedStatistics orderMemberReceivedStatistics = new OrderMemberReceivedStatistics();
orderMemberReceivedStatistics.setTotalAmount(BigDecimal.ZERO); orderMemberReceivedStatistics.setTotalAmount(BigDecimal.ZERO);
orderMemberReceivedStatistics.setTotalQuantity(0);
orderMemberReceivedStatistics.setTotalCommonQuantity(0); orderMemberReceivedStatistics.setTotalCommonQuantity(0);
orderMemberReceivedStatistics.setToalCommonAmmount(BigDecimal.ZERO); orderMemberReceivedStatistics.setToalCommonAmmount(BigDecimal.ZERO);
orderMemberReceivedStatistics.setTotalGoldQuantity(0); orderMemberReceivedStatistics.setTotalGoldQuantity(0);
...@@ -276,4 +283,31 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive ...@@ -276,4 +283,31 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
public void insertMemberReceivedStatisticsBatch(List<OrderMemberReceivedStatistics> orderMemberReceivedStatistics) { public void insertMemberReceivedStatisticsBatch(List<OrderMemberReceivedStatistics> orderMemberReceivedStatistics) {
mapper.insertList(orderMemberReceivedStatistics); mapper.insertList(orderMemberReceivedStatistics);
} }
@Data
private class MemberLevelStatistics {
private BigDecimal toalCommonAmmount = BigDecimal.ZERO;
private Integer totalCommonQuantity = new Integer(0);
private BigDecimal totalGoldAmount = BigDecimal.ZERO;
private Integer totalGoldQuantity = new Integer(0);
private BigDecimal totalDiamondAmmount = BigDecimal.ZERO;
private Integer totalDiamondQuantity = new Integer(0);
private BigDecimal totalAmount;
private Integer totalQuantity;
public BigDecimal getTotalAmount() {
return toalCommonAmmount.add(totalGoldAmount).add(totalDiamondAmmount);
}
public Integer getTotalQuantity() {
return totalCommonQuantity + totalGoldQuantity + totalDiamondQuantity;
}
}
} }
\ No newline at end of file
...@@ -114,6 +114,7 @@ public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehi ...@@ -114,6 +114,7 @@ public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehi
} }
} }
//无状态组合统计对象生成
Map<Integer, BigDecimal> companyAmountMap = companyAmoutList.stream().collect(Collectors.groupingBy(CompanyAmountBo::getCompanyId, Map<Integer, BigDecimal> companyAmountMap = companyAmoutList.stream().collect(Collectors.groupingBy(CompanyAmountBo::getCompanyId,
CollectorsUtil.summingBigDecimal(CompanyAmountBo::getAmount))); CollectorsUtil.summingBigDecimal(CompanyAmountBo::getAmount)));
Set<Map.Entry<Integer, BigDecimal>> companyAmountSet = companyAmountMap.entrySet(); Set<Map.Entry<Integer, BigDecimal>> companyAmountSet = companyAmountMap.entrySet();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment