Commit 42f7a384 authored by libin's avatar libin

会员与租车订单统计

parent cb58469c
package com.xxfc.platform.order.contant.enumerate;
import org.assertj.core.util.Lists;
import java.util.ArrayList;
import java.util.List;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/11/14 14:28
*/
public enum StatisticsStatusEnum {
;
public static List<String> orderStates;
public static List<String> orderOrigins;
public static List<String> orderPayWays;
static {
// 2 取消 3未完成 6 已完成
orderStates = Lists.newArrayList("2","3","6");
// 1 app 2 小程序 3 其他
orderOrigins = Lists.newArrayList("1","2","3");
// 1 微信 2 支付宝
orderPayWays = Lists.newArrayList("1","2");
}
public static List<String> statisticsSateGroup(List<Integer> companyIdList){
List<String> orderStatisticsStateGroups = new ArrayList<>();
for (Integer companyId : companyIdList) {
for (String orderOrigin : orderOrigins) {
for (String orderPayWay : orderPayWays) {
for (String orderState : orderStates) {
// 公司id-订单来源-支付方式-订单状态
orderStatisticsStateGroups.add(String.format("%d-%s-%s-%s",companyId,orderOrigin,orderPayWay,orderState));
}
}
}
}
return orderStatisticsStateGroups;
}
public static List<String> getOtherStatisticsStateGroup(List<Integer> companyIdList,List<String> statisticsStates){
List<String> sateGroup = statisticsSateGroup(companyIdList);
sateGroup.retainAll(statisticsStates);
return sateGroup;
}
}
package com.xxfc.platform.order.pojo.account; package com.xxfc.platform.order.pojo.account;
import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.xxfc.platform.order.entity.OrderAccount; import com.xxfc.platform.order.entity.OrderAccount;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.util.StringUtils;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.GeneratedValue; import javax.persistence.GeneratedValue;
...@@ -111,6 +113,11 @@ public class OrderAccountDTO implements Serializable { ...@@ -111,6 +113,11 @@ public class OrderAccountDTO implements Serializable {
@Column(name = "oneDay") @Column(name = "oneDay")
private String oneDay; private String oneDay;
private OrderAccountDetail accountDetailEntity;
public OrderAccountDetail getAccountDetailEntity() {
return StringUtils.hasText(accountDetail)? JSON.parseObject(accountDetail,OrderAccountDetail.class):new OrderAccountDetail();
}
@Override @Override
public String toString() { public String toString() {
......
...@@ -28,6 +28,7 @@ public class OrderDTO { ...@@ -28,6 +28,7 @@ public class OrderDTO {
private Integer payWay; private Integer payWay;
private Date crtTime; private Date crtTime;
private Integer companyId; private Integer companyId;
private String stateGroup;
/** /**
* 会员相关 * 会员相关
*/ */
......
...@@ -621,4 +621,8 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> { ...@@ -621,4 +621,8 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
orderMsgBiz.handelMsgDeposit(orvd, baseOrder, userFeign.userDetailById(baseOrder.getUserId()).getData()); orderMsgBiz.handelMsgDeposit(orvd, baseOrder, userFeign.userDetailById(baseOrder.getUserId()).getData());
} }
public List<OrderAccountDTO> selectByOrders(List<Integer> orderIds) {
return null;
}
} }
\ No newline at end of file
...@@ -6,23 +6,21 @@ import cn.hutool.core.date.DateUtil; ...@@ -6,23 +6,21 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.TimeInterval; import cn.hutool.core.date.TimeInterval;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.enumconstant.LevelEnum; import com.github.wxiaoqi.security.common.enumconstant.LevelEnum;
import com.google.common.collect.Lists;
import com.xxfc.platform.order.contant.enumerate.StatisticsStatusEnum;
import com.xxfc.platform.order.entity.OrderMemberReceivedStatistics; import com.xxfc.platform.order.entity.OrderMemberReceivedStatistics;
import com.xxfc.platform.order.mapper.OrderMemberReceivedStatisticsMapper; import com.xxfc.platform.order.mapper.OrderMemberReceivedStatisticsMapper;
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 lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.http.client.utils.CloneUtils;
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;
import com.xxfc.platform.order.entity.BaseOrder;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.function.Supplier;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
/** /**
* 会员订单统计 * 会员订单统计
...@@ -39,7 +37,7 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive ...@@ -39,7 +37,7 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
private final int FINISH = 6; private final int FINISH = 6;
private final int CANCEL = 2; private final int CANCEL = 2;
private final int UNFINISH = 3; private final int UNFINISH = 3;
private final int PAYWAYTEMP = 99;
public List<OrderMemberReceivedStatistics> selectOrderReceivedStatistics(OrderReceivedStatisticsFindDTO orderReceivedStatisticsFindDTO) { public List<OrderMemberReceivedStatistics> selectOrderReceivedStatistics(OrderReceivedStatisticsFindDTO orderReceivedStatisticsFindDTO) {
return mapper.selectOrderMemberReceivedStatistics(orderReceivedStatisticsFindDTO); return mapper.selectOrderMemberReceivedStatistics(orderReceivedStatisticsFindDTO);
...@@ -47,60 +45,42 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive ...@@ -47,60 +45,42 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
public void orderMemberReceivedStatistics(Date date) { public void orderMemberReceivedStatistics(Date date) {
List<OrderMemberReceivedStatistics> orderMemberReceivedStatisticsList = new ArrayList<>(18);
DateTime yesterday = DateUtil.yesterday(); DateTime yesterday = DateUtil.yesterday();
Date startDate = date == null ? DateUtil.beginOfDay(yesterday).toJdkDate() : DateUtil.beginOfDay(date); Date startDate = date == null ? DateUtil.beginOfDay(yesterday).toJdkDate() : DateUtil.beginOfDay(date);
Date endDate = date == null ? DateUtil.endOfDay(yesterday).toJdkDate() : DateUtil.beginOfDay(date); Date endDate = date == null ? DateUtil.endOfDay(yesterday).toJdkDate() : DateUtil.beginOfDay(date);
String year = String.valueOf(yesterday.getField(DateField.YEAR));
String month = String.format("%s%d", year, yesterday.getField(DateField.MONTH));
String weekOfYear = String.format("%s%d", year, yesterday.getField(DateField.WEEK_OF_YEAR));
List<OrderDTO> orders = baseOrderBiz.selectOrdersByTypeAndTime(Arrays.asList(3), startDate, endDate); List<OrderDTO> orders = baseOrderBiz.selectOrdersByTypeAndTime(Arrays.asList(3), startDate, endDate);
TimeInterval timer = DateUtil.timer(); TimeInterval timer = DateUtil.timer();
//状态(3) -->下单来源(3)--->支付方式(2) --> 3 * 3 * 2 =18 --->会员 //数据处理 把 完成状态6 取消状态2 的其他数据转换成状态为未完成3
Map<Integer, Map<Integer, Map<Integer, Map<Integer, List<OrderDTO>>>>> ordersMap = orders.stream().peek(x -> { Map<String, Map<Integer, List<OrderDTO>>> ordersMap = orders.stream().peek(x -> {
if (x.getStatus() != CANCEL && x.getStatus() != FINISH) { Integer status = x.getStatus()==CANCEL?CANCEL:x.getStatus()==FINISH?FINISH:UNFINISH;
x.setStatus(UNFINISH); x.setStatus(status);
} x.setStateGroup(String.format("%d-%d-%d-%d", 1, x.getOrderOrigin(), x.getPayWay(), x.getStatus()));})
}).peek(x -> { .collect(Collectors.groupingBy(OrderDTO::getStateGroup, Collectors.groupingBy(OrderDTO::getMemberLevel, Collectors.toList())));
if (x.getStatus() != FINISH) {
x.setPayWay(PAYWAYTEMP);
}
}).collect(Collectors.groupingBy(OrderDTO::getStatus,
Collectors.groupingBy(OrderDTO::getOrderOrigin, Collectors.groupingBy(OrderDTO::getPayWay, Collectors.groupingBy(OrderDTO::getMemberLevel, Collectors.toList())))));
List<OrderMemberReceivedStatistics> orderMemberReceivedStatisticsList = new ArrayList<>(18); Set<Map.Entry<String, Map<Integer, List<OrderDTO>>>> orderSet = ordersMap.entrySet();
ordersMap.forEach((KS, VS) -> { for (Map.Entry<String, Map<Integer, List<OrderDTO>>> orderEntry : orderSet) {
//KS:状态 (完成|未完成|取消) //获取状态
VS.forEach((KO, VO) -> { String orderStatisticsGroup = orderEntry.getKey();
//KO:下单来源状态 (app|小程序|后台) Map<Integer, List<OrderDTO>> orderEntryValue = orderEntry.getValue();
VO.forEach((KP, VP) -> { OrderMemberReceivedStatistics orderMemberReceivedStatistics = createOrderMemberReceivedStatiscs(startDate,orderStatisticsGroup);
//KP:支付方式 (微信|支付宝)
OrderMemberReceivedStatistics orderMemberReceivedStatistics = new OrderMemberReceivedStatistics();
orderMemberReceivedStatistics.setCrtTime(new Date());
orderMemberReceivedStatistics.setCompanyId(1);
orderMemberReceivedStatistics.setIsFinish(KS);
orderMemberReceivedStatistics.setOrderOrigin(KO);
orderMemberReceivedStatistics.setPayWay(PAYWAYTEMP == KP ? null : KP);
orderMemberReceivedStatistics.setDate(startDate);
orderMemberReceivedStatistics.setYear(year);
orderMemberReceivedStatistics.setMonth(month);
orderMemberReceivedStatistics.setWeekOfYear(weekOfYear);
//1.普通会员 //1.普通会员
List<OrderDTO> generalOrders = VP.get(LevelEnum.GENERAL.getLevel()); List<OrderDTO> generalOrders = orderEntryValue.get(LevelEnum.GENERAL.getLevel());
generalOrders = CollectionUtils.isEmpty(generalOrders) ? Collections.EMPTY_LIST : generalOrders; generalOrders = CollectionUtils.isEmpty(generalOrders) ? Collections.EMPTY_LIST : generalOrders;
BigDecimal totalCommAmount = generalOrders.stream().map(OrderDTO::getRealAmount).reduce(BigDecimal.ZERO, (x, y) -> x.add(y)); BigDecimal totalCommAmount = generalOrders.stream().map(OrderDTO::getRealAmount).reduce(BigDecimal.ZERO, (x, y) -> x.add(y));
orderMemberReceivedStatistics.setToalCommonAmmount(totalCommAmount); orderMemberReceivedStatistics.setToalCommonAmmount(totalCommAmount);
orderMemberReceivedStatistics.setTotalCommonQuantity(generalOrders.size()); orderMemberReceivedStatistics.setTotalCommonQuantity(generalOrders.size());
//2.黄金会员 //2.黄金会员
List<OrderDTO> goldOrders = VP.get(LevelEnum.GOLD.getLevel()); List<OrderDTO> goldOrders = orderEntryValue.get(LevelEnum.GOLD.getLevel());
goldOrders = CollectionUtils.isEmpty(goldOrders) ? Collections.EMPTY_LIST : goldOrders; goldOrders = CollectionUtils.isEmpty(goldOrders) ? Collections.EMPTY_LIST : goldOrders;
BigDecimal totalGoldAmount = goldOrders.stream().map(OrderDTO::getRealAmount).reduce(BigDecimal.ZERO, (x, y) -> x.add(y)); BigDecimal totalGoldAmount = goldOrders.stream().map(OrderDTO::getRealAmount).reduce(BigDecimal.ZERO, (x, y) -> x.add(y));
orderMemberReceivedStatistics.setTotalGoldAmount(totalGoldAmount); orderMemberReceivedStatistics.setTotalGoldAmount(totalGoldAmount);
orderMemberReceivedStatistics.setTotalGoldQuantity(goldOrders.size()); orderMemberReceivedStatistics.setTotalGoldQuantity(goldOrders.size());
//3.钻石会员
List<OrderDTO> diamondOrders = VP.get(LevelEnum.DIAMOND.getLevel());
//3.钻石会员
List<OrderDTO> diamondOrders = orderEntryValue.get(LevelEnum.DIAMOND.getLevel());
diamondOrders = CollectionUtils.isEmpty(diamondOrders) ? Collections.EMPTY_LIST : diamondOrders; diamondOrders = CollectionUtils.isEmpty(diamondOrders) ? Collections.EMPTY_LIST : diamondOrders;
BigDecimal totalDiamondAmount = diamondOrders.stream().map(OrderDTO::getRealAmount).reduce(BigDecimal.ZERO, (x, y) -> x.add(y)); BigDecimal totalDiamondAmount = diamondOrders.stream().map(OrderDTO::getRealAmount).reduce(BigDecimal.ZERO, (x, y) -> x.add(y));
orderMemberReceivedStatistics.setTotalDiamondAmmount(totalDiamondAmount); orderMemberReceivedStatistics.setTotalDiamondAmmount(totalDiamondAmount);
...@@ -109,14 +89,65 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive ...@@ -109,14 +89,65 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
BigDecimal totalAmount = totalCommAmount.add(totalGoldAmount).add(totalDiamondAmount); BigDecimal totalAmount = totalCommAmount.add(totalGoldAmount).add(totalDiamondAmount);
orderMemberReceivedStatistics.setTotalAmount(totalAmount); orderMemberReceivedStatistics.setTotalAmount(totalAmount);
orderMemberReceivedStatisticsList.add(orderMemberReceivedStatistics); orderMemberReceivedStatisticsList.add(orderMemberReceivedStatistics);
});
}); }
}); List<OrderMemberReceivedStatistics> otherStatisticsStateGroupList = createOtherStatisticsStateGroupList(startDate, Lists.newArrayList(ordersMap.keySet()), 1);
orderMemberReceivedStatisticsList.addAll(otherStatisticsStateGroupList);
insertMemberReceivedStatisticsBatch(orderMemberReceivedStatisticsList);
long interval = timer.interval(); long interval = timer.interval();
System.out.println("花费时间:" + interval); System.out.println("花费时间:" + interval);
insertMemberReceivedStatisticsBatch(orderMemberReceivedStatisticsList);
} }
/**
* 创建剩余状态数据
* @param startDate
* @param statisticsStateGroups
* @param companyId
* @return
*/
private List<OrderMemberReceivedStatistics> createOtherStatisticsStateGroupList(Date startDate,List<String> statisticsStateGroups,Integer companyId) {
List<OrderMemberReceivedStatistics> orderMemberReceivedStatisticsList = new ArrayList<>();
OrderMemberReceivedStatistics orderMemberReceivedStatistics;
List<String> otherStatisticsStateGroup = StatisticsStatusEnum.getOtherStatisticsStateGroup(Arrays.asList(companyId),statisticsStateGroups);
for (String stateGroup : otherStatisticsStateGroup) {
orderMemberReceivedStatistics = createOrderMemberReceivedStatiscs(startDate,stateGroup);
orderMemberReceivedStatistics.setTotalAmount(BigDecimal.ZERO);
orderMemberReceivedStatistics.setTotalCommonQuantity(0);
orderMemberReceivedStatistics.setToalCommonAmmount(BigDecimal.ZERO);
orderMemberReceivedStatistics.setTotalGoldQuantity(0);
orderMemberReceivedStatistics.setTotalGoldAmount(BigDecimal.ZERO);
orderMemberReceivedStatistics.setTotalDiamondQuantity(0);
orderMemberReceivedStatistics.setTotalDiamondAmmount(BigDecimal.ZERO);
orderMemberReceivedStatisticsList.add(orderMemberReceivedStatistics);
}
return orderMemberReceivedStatisticsList;
}
/**
* 创建会员订单统计对象
* @param date
* @param stateGroup
* @return
*/
private OrderMemberReceivedStatistics createOrderMemberReceivedStatiscs(Date date, String stateGroup) {
OrderMemberReceivedStatistics orderMemberReceivedStatistics = new OrderMemberReceivedStatistics();
DateTime yesterday = DateTime.of(date);
String year = String.valueOf(yesterday.getField(DateField.YEAR));
String month = String.format("%s%d", year, yesterday.getField(DateField.MONTH));
String weekOfYear = String.format("%s%d", year, yesterday.getField(DateField.WEEK_OF_YEAR));
String[] status = stateGroup.split("-");
orderMemberReceivedStatistics.setCrtTime(new Date());
orderMemberReceivedStatistics.setCompanyId(Integer.valueOf(status[0]));
orderMemberReceivedStatistics.setIsFinish(Integer.valueOf(status[3]));
orderMemberReceivedStatistics.setOrderOrigin(Integer.valueOf(status[1]));
orderMemberReceivedStatistics.setPayWay(Integer.valueOf(status[2]));
orderMemberReceivedStatistics.setDate(date);
orderMemberReceivedStatistics.setYear(year);
orderMemberReceivedStatistics.setMonth(month);
orderMemberReceivedStatistics.setWeekOfYear(weekOfYear);
return orderMemberReceivedStatistics;
}
public void insertMemberReceivedStatisticsBatch(List<OrderMemberReceivedStatistics> orderMemberReceivedStatistics) { public void insertMemberReceivedStatisticsBatch(List<OrderMemberReceivedStatistics> orderMemberReceivedStatistics) {
mapper.insertList(orderMemberReceivedStatistics); mapper.insertList(orderMemberReceivedStatistics);
......
...@@ -3,6 +3,8 @@ package com.xxfc.platform.order.biz; ...@@ -3,6 +3,8 @@ package com.xxfc.platform.order.biz;
import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.xxfc.platform.order.entity.OrderAccount;
import com.xxfc.platform.order.pojo.account.OrderAccountDTO;
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 lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
...@@ -15,6 +17,7 @@ import com.xxfc.platform.order.mapper.OrderRentVehicleReceivedStatisticsMapper; ...@@ -15,6 +17,7 @@ import com.xxfc.platform.order.mapper.OrderRentVehicleReceivedStatisticsMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -31,6 +34,7 @@ import java.util.stream.Collectors; ...@@ -31,6 +34,7 @@ import java.util.stream.Collectors;
public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehicleReceivedStatisticsMapper, OrderRentVehicleReceivedStatistics> { public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehicleReceivedStatisticsMapper, OrderRentVehicleReceivedStatistics> {
private final BaseOrderBiz baseOrderBiz; private final BaseOrderBiz baseOrderBiz;
private final OrderAccountBiz orderAccountBiz;
private final int FINISH = 6; private final int FINISH = 6;
private final int CANCEL = 2; private final int CANCEL = 2;
private final int UNFINISH = 3; private final int UNFINISH = 3;
...@@ -40,15 +44,18 @@ public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehi ...@@ -40,15 +44,18 @@ public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehi
return mapper.selectOrderRentVehicleReceivedStatistics(orderReceivedStatisticsFindDTO); return mapper.selectOrderRentVehicleReceivedStatistics(orderReceivedStatisticsFindDTO);
} }
public void orderRentVehicleReceivedStatistics(Date date) { public void orderRentVehicleReceivedStatistics(Date startDate,Date endDate) {
DateTime yesterday = DateUtil.yesterday(); List<OrderRentVehicleReceivedStatistics> orderRentVehicleReceivedStatisticsList = new ArrayList<>(18);
Date startDate = date == null ? DateUtil.beginOfDay(yesterday).toJdkDate() : DateUtil.beginOfDay(date); String year = String.valueOf(DateTime.of(startDate).getField(DateField.YEAR));
Date endDate = date == null ? DateUtil.endOfDay(yesterday).toJdkDate() : DateUtil.beginOfDay(date); String month = String.format("%s%d", year,DateTime.of(startDate).getField(DateField.MONTH));
String year = String.valueOf(yesterday.getField(DateField.YEAR)); String weekOfYear = String.format("%s%d", year, DateTime.of(startDate).getField(DateField.DAY_OF_YEAR));
String month = String.format("%s%d", year, yesterday.getField(DateField.MONTH));
String weekOfYear = String.format("%s%d", year, yesterday.getField(DateField.DAY_OF_YEAR));
List<OrderDTO> orders = baseOrderBiz.selectOrdersByTypeAndTime(Arrays.asList(1), startDate, endDate); List<OrderDTO> orders = baseOrderBiz.selectOrdersByTypeAndTime(Arrays.asList(1), startDate, endDate);
if (CollectionUtils.isEmpty(orders)){
return;
}
List<Integer> orderIds = orders.stream().map(OrderDTO::getId).collect(Collectors.toList());
List<OrderAccountDTO> orderAccountDTOList = orderAccountBiz.selectByOrders(orderIds);
Map<Integer, List<OrderAccountDTO>> orderAccountMap = orderAccountDTOList.stream().collect(Collectors.groupingBy(OrderAccountDTO::getOrderId, Collectors.toList()));
//分公司id- -->下单来源(3)--->支付方式(2) --> >状态(3)-->3 * 3 * 2 =18 //分公司id- -->下单来源(3)--->支付方式(2) --> >状态(3)-->3 * 3 * 2 =18
Map<Integer, Map<Integer, Map<Integer, Map<Integer, List<OrderDTO>>>>> ordersMap = orders.stream().peek(x -> { Map<Integer, Map<Integer, Map<Integer, Map<Integer, List<OrderDTO>>>>> ordersMap = orders.stream().peek(x -> {
if (x.getStatus() != CANCEL && x.getStatus() != FINISH) { if (x.getStatus() != CANCEL && x.getStatus() != FINISH) {
...@@ -57,7 +64,7 @@ public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehi ...@@ -57,7 +64,7 @@ public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehi
}).peek(x->{if(Objects.isNull(x.getPayWay())){x.setPayWay(PAYWAYTEMP);}}).collect(Collectors.groupingBy(OrderDTO::getCompanyId, }).peek(x->{if(Objects.isNull(x.getPayWay())){x.setPayWay(PAYWAYTEMP);}}).collect(Collectors.groupingBy(OrderDTO::getCompanyId,
Collectors.groupingBy(OrderDTO::getOrderOrigin, Collectors.groupingBy(OrderDTO::getPayWay, Collectors.groupingBy(OrderDTO::getStatus, Collectors.toList()))))); Collectors.groupingBy(OrderDTO::getOrderOrigin, Collectors.groupingBy(OrderDTO::getPayWay, Collectors.groupingBy(OrderDTO::getStatus, Collectors.toList())))));
Set<Map.Entry<Integer, Map<Integer, Map<Integer, Map<Integer, List<OrderDTO>>>>>> orderEntries = ordersMap.entrySet(); /* Set<Map.Entry<Integer, Map<Integer, Map<Integer, Map<Integer, List<OrderDTO>>>>>> orderEntries = ordersMap.entrySet();
for (Map.Entry<Integer, Map<Integer, Map<Integer, Map<Integer, List<OrderDTO>>>>> orderEntrie : orderEntries) { for (Map.Entry<Integer, Map<Integer, Map<Integer, Map<Integer, List<OrderDTO>>>>> orderEntrie : orderEntries) {
//公司id //公司id
Integer companyKey = orderEntrie.getKey(); Integer companyKey = orderEntrie.getKey();
...@@ -89,10 +96,11 @@ public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehi ...@@ -89,10 +96,11 @@ public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehi
orderRentVehicleReceivedStatistics.setMonth(month); orderRentVehicleReceivedStatistics.setMonth(month);
orderRentVehicleReceivedStatistics.setWeekOfYear(weekOfYear); orderRentVehicleReceivedStatistics.setWeekOfYear(weekOfYear);
orderRentVehicleReceivedStatistics.setTotalQuantity(orderDTOList.size()); orderRentVehicleReceivedStatistics.setTotalQuantity(orderDTOList.size());
/* orderRentVehicleReceivedStatistics.setTotalAmount(); BigDecimal totalAmount = BigDecimal.ZERO;
orderRentVehicleReceivedStatistics.setRealAmount();*/ BigDecimal realAmount = BigDecimal.ZERO;
for (OrderDTO orderDTO : orderDTOList) { for (OrderDTO orderDTO : orderDTOList) {
Integer orderId = orderDTO.getId();
List<OrderAccountDTO> orderAccountDTOS = orderAccountMap.get(orderId);
//完成单 //完成单
if (FINISH == statusKey) { if (FINISH == statusKey) {
...@@ -107,12 +115,20 @@ public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehi ...@@ -107,12 +115,20 @@ public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehi
if (CANCEL == statusKey) { if (CANCEL == statusKey) {
} }
totalAmount.add(orderDTO.getRealAmount());
} }
orderRentVehicleReceivedStatistics.setTotalAmount(totalAmount);
orderRentVehicleReceivedStatistics.setRealAmount(realAmount);
orderRentVehicleReceivedStatisticsList.add(orderRentVehicleReceivedStatistics);
} }
} }
} }
}*/
insertMemberReceivedStatisticsBatch(orderRentVehicleReceivedStatisticsList);
} }
public void insertMemberReceivedStatisticsBatch(List<OrderRentVehicleReceivedStatistics> orderRentVehicleReceivedStatistics) {
mapper.insertList(orderRentVehicleReceivedStatistics);
} }
} }
\ No newline at end of file
...@@ -3,6 +3,7 @@ package com.xxfc.platform.order.mapper; ...@@ -3,6 +3,7 @@ package com.xxfc.platform.order.mapper;
import com.xxfc.platform.order.entity.OrderRentVehicleReceivedStatistics; import com.xxfc.platform.order.entity.OrderRentVehicleReceivedStatistics;
import com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO; import com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.special.InsertListMapper;
import java.util.List; import java.util.List;
...@@ -13,7 +14,7 @@ import java.util.List; ...@@ -13,7 +14,7 @@ import java.util.List;
* @email 18178966185@163.com * @email 18178966185@163.com
* @date 2019-11-08 18:03:42 * @date 2019-11-08 18:03:42
*/ */
public interface OrderRentVehicleReceivedStatisticsMapper extends Mapper<OrderRentVehicleReceivedStatistics> { public interface OrderRentVehicleReceivedStatisticsMapper extends Mapper<OrderRentVehicleReceivedStatistics>, InsertListMapper<OrderRentVehicleReceivedStatistics> {
List<OrderRentVehicleReceivedStatistics> selectOrderRentVehicleReceivedStatistics(OrderReceivedStatisticsFindDTO orderReceivedStatisticsFindDTO); List<OrderRentVehicleReceivedStatistics> selectOrderRentVehicleReceivedStatistics(OrderReceivedStatisticsFindDTO orderReceivedStatisticsFindDTO);
} }
...@@ -357,7 +357,7 @@ ...@@ -357,7 +357,7 @@
select bo.*,omd.memberLevel from (select `id`,`type`,`status`,`order_amount` AS `orderAmount`, `real_amount`AS select bo.*,omd.memberLevel from (select `id`,`type`,`status`,`order_amount` AS `orderAmount`, `real_amount`AS
`realAmount`,`order_origin` AS `orderOrigin`, `realAmount`,`order_origin` AS `orderOrigin`,
`pay_way` AS `payWay`,`crt_time`AS `crtTime` `pay_way` AS `payWay`,`crt_time`AS `crtTime`
from `base_order` where `crt_time` between #{startDate} and #{endDate} and `type` IN <foreach collection="types" from `base_order` where `has_pay`=1 and `crt_time` between #{startDate} and #{endDate} and `type` IN <foreach collection="types"
item="type" item="type"
open="(" close=")" open="(" close=")"
separator=","> separator=",">
......
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