Commit 942b22a5 authored by libin's avatar libin

会员与租车订单统计

parent 42f7a384
package com.xxfc.platform.order.contant.enumerate; package com.xxfc.platform.order.contant.enumerate;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import com.xxfc.platform.order.entity.OrderReceivedStatisticsBase;
import org.assertj.core.util.Lists; import org.assertj.core.util.Lists;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
...@@ -13,6 +17,10 @@ import java.util.List; ...@@ -13,6 +17,10 @@ import java.util.List;
*/ */
public enum StatisticsStatusEnum { public enum StatisticsStatusEnum {
; ;
public static final int FINISH = 6;
public static final int CANCEL = 2;
public static final int UNFINISH = 3;
public static List<String> orderStates; public static List<String> orderStates;
public static List<String> orderOrigins; public static List<String> orderOrigins;
public static List<String> orderPayWays; public static List<String> orderPayWays;
...@@ -45,4 +53,22 @@ public enum StatisticsStatusEnum { ...@@ -45,4 +53,22 @@ public enum StatisticsStatusEnum {
sateGroup.retainAll(statisticsStates); sateGroup.retainAll(statisticsStates);
return sateGroup; return sateGroup;
} }
public static<T extends OrderReceivedStatisticsBase> T wrapStatisticsObject(Date date,String stateGroup,T targetObj){
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("-");
targetObj.setCrtTime(new Date());
targetObj.setCompanyId(Integer.valueOf(status[0]));
targetObj.setIsFinish(Integer.valueOf(status[3]));
targetObj.setOrderOrigin(Integer.valueOf(status[1]));
targetObj.setPayWay(Integer.valueOf(status[2]));
targetObj.setDate(date);
targetObj.setYear(year);
targetObj.setMonth(month);
targetObj.setWeekOfYear(weekOfYear);
return targetObj;
}
} }
...@@ -64,12 +64,4 @@ public class OrderMemberReceivedStatistics extends OrderReceivedStatisticsBase i ...@@ -64,12 +64,4 @@ public class OrderMemberReceivedStatistics extends OrderReceivedStatisticsBase i
@ApiModelProperty(value = "钻石会员订单总量") @ApiModelProperty(value = "钻石会员订单总量")
private Integer totalDiamondQuantity; private Integer totalDiamondQuantity;
/**
* 创建时间
*/
@Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true)
private Date crtTime;
} }
...@@ -20,21 +20,6 @@ import lombok.Data; ...@@ -20,21 +20,6 @@ import lombok.Data;
public class OrderReceivedStatistics extends OrderReceivedStatisticsBase implements Serializable { public class OrderReceivedStatistics extends OrderReceivedStatisticsBase implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/**
*
*/
@Id
@GeneratedValue(generator = "JDBC")
@ApiModelProperty("")
private Long id;
/**
* 订单总额
*/
@Column(name = "total_amount")
@ApiModelProperty(value = "订单总额")
private BigDecimal totalAmount;
/** /**
* 订单总量 * 订单总量
*/ */
...@@ -42,12 +27,6 @@ public class OrderReceivedStatistics extends OrderReceivedStatisticsBase impleme ...@@ -42,12 +27,6 @@ public class OrderReceivedStatistics extends OrderReceivedStatisticsBase impleme
@ApiModelProperty(value = "订单总量") @ApiModelProperty(value = "订单总量")
private Integer totalQuantity; private Integer totalQuantity;
/**
* 订单平均量
*/
@Column(name = "avg_quantity")
@ApiModelProperty(value = "订单平均量")
private Integer avgQuantity;
/** /**
* 实际收入 * 实际收入
...@@ -56,33 +35,4 @@ public class OrderReceivedStatistics extends OrderReceivedStatisticsBase impleme ...@@ -56,33 +35,4 @@ public class OrderReceivedStatistics extends OrderReceivedStatisticsBase impleme
@ApiModelProperty(value = "实际收入") @ApiModelProperty(value = "实际收入")
private BigDecimal realAmount; private BigDecimal realAmount;
/**
* 是否完成 1 完成 0 未完成
*/
@Column(name = "is_finish")
@ApiModelProperty(value = "是否完成 1 完成 0 未完成")
private Integer isFinish;
/**
* '支付来源 1--app;2--小程序',
*/
@Column(name = "order_origin")
@ApiModelProperty(value = " '支付来源 1--app;2--小程序',")
private Integer orderOrigin;
/**
* 支付方式 '1:微信公众号支付 2.支付宝即时到账,3,银联'
*/
@Column(name = "pay_way")
@ApiModelProperty(value = "支付方式 '1:微信公众号支付 2.支付宝即时到账,3,银联'")
private Integer payWay;
/**
* 创建时间
*/
@Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true )
private Date crtTime;
} }
...@@ -88,4 +88,11 @@ public class OrderReceivedStatisticsBase { ...@@ -88,4 +88,11 @@ public class OrderReceivedStatisticsBase {
@Transient @Transient
protected Integer divisor; protected Integer divisor;
/**
* 创建时间
*/
@Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true)
private Date crtTime;
} }
...@@ -35,14 +35,4 @@ public class OrderRentVehicleReceivedStatistics extends OrderReceivedStatisticsB ...@@ -35,14 +35,4 @@ public class OrderRentVehicleReceivedStatistics extends OrderReceivedStatisticsB
@ApiModelProperty(value = "实际收入") @ApiModelProperty(value = "实际收入")
private BigDecimal realAmount; private BigDecimal realAmount;
/**
* 创建时间
*/
@Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true)
private Date crtTime;
} }
...@@ -28,19 +28,5 @@ public class OrderTourReceivedStatistics extends OrderReceivedStatisticsBase imp ...@@ -28,19 +28,5 @@ public class OrderTourReceivedStatistics extends OrderReceivedStatisticsBase imp
@ApiModelProperty(value = "订单总量") @ApiModelProperty(value = "订单总量")
private Integer totalQuantity; private Integer totalQuantity;
/**
* 公司id
*/
@Column(name = "company_id")
@ApiModelProperty(value = "公司id")
private Integer companyId;
/**
* 创建时间
*/
@Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true)
private Date crtTime;
} }
package com.xxfc.platform.order.biz; package com.xxfc.platform.order.biz;
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 cn.hutool.core.date.TimeInterval; import cn.hutool.core.date.TimeInterval;
...@@ -34,16 +33,11 @@ import java.util.stream.Collectors; ...@@ -34,16 +33,11 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor(onConstructor = @__(@Autowired)) @RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceivedStatisticsMapper, OrderMemberReceivedStatistics> { public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceivedStatisticsMapper, OrderMemberReceivedStatistics> {
private final BaseOrderBiz baseOrderBiz; private final BaseOrderBiz baseOrderBiz;
private final int FINISH = 6;
private final int CANCEL = 2;
private final int UNFINISH = 3;
public List<OrderMemberReceivedStatistics> selectOrderReceivedStatistics(OrderReceivedStatisticsFindDTO orderReceivedStatisticsFindDTO) { public List<OrderMemberReceivedStatistics> selectOrderReceivedStatistics(OrderReceivedStatisticsFindDTO orderReceivedStatisticsFindDTO) {
return mapper.selectOrderMemberReceivedStatistics(orderReceivedStatisticsFindDTO); return mapper.selectOrderMemberReceivedStatistics(orderReceivedStatisticsFindDTO);
} }
public void orderMemberReceivedStatistics(Date date) { public void orderMemberReceivedStatistics(Date date) {
List<OrderMemberReceivedStatistics> orderMemberReceivedStatisticsList = new ArrayList<>(18); List<OrderMemberReceivedStatistics> orderMemberReceivedStatisticsList = new ArrayList<>(18);
DateTime yesterday = DateUtil.yesterday(); DateTime yesterday = DateUtil.yesterday();
...@@ -54,9 +48,10 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive ...@@ -54,9 +48,10 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
TimeInterval timer = DateUtil.timer(); TimeInterval timer = DateUtil.timer();
//数据处理 把 完成状态6 取消状态2 的其他数据转换成状态为未完成3 //数据处理 把 完成状态6 取消状态2 的其他数据转换成状态为未完成3
Map<String, Map<Integer, List<OrderDTO>>> ordersMap = orders.stream().peek(x -> { Map<String, Map<Integer, List<OrderDTO>>> ordersMap = orders.stream().peek(x -> {
Integer status = x.getStatus()==CANCEL?CANCEL:x.getStatus()==FINISH?FINISH:UNFINISH; Integer status = x.getStatus() == StatisticsStatusEnum.CANCEL ? StatisticsStatusEnum.CANCEL : x.getStatus() == StatisticsStatusEnum.FINISH ? StatisticsStatusEnum.FINISH : StatisticsStatusEnum.UNFINISH;
x.setStatus(status); x.setStatus(status);
x.setStateGroup(String.format("%d-%d-%d-%d", 1, x.getOrderOrigin(), x.getPayWay(), x.getStatus()));}) x.setStateGroup(String.format("%d-%d-%d-%d", 1, x.getOrderOrigin(), x.getPayWay(), x.getStatus()));
})
.collect(Collectors.groupingBy(OrderDTO::getStateGroup, Collectors.groupingBy(OrderDTO::getMemberLevel, Collectors.toList()))); .collect(Collectors.groupingBy(OrderDTO::getStateGroup, Collectors.groupingBy(OrderDTO::getMemberLevel, Collectors.toList())));
Set<Map.Entry<String, Map<Integer, List<OrderDTO>>>> orderSet = ordersMap.entrySet(); Set<Map.Entry<String, Map<Integer, List<OrderDTO>>>> orderSet = ordersMap.entrySet();
...@@ -64,7 +59,7 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive ...@@ -64,7 +59,7 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
//获取状态 //获取状态
String orderStatisticsGroup = orderEntry.getKey(); String orderStatisticsGroup = orderEntry.getKey();
Map<Integer, List<OrderDTO>> orderEntryValue = orderEntry.getValue(); Map<Integer, List<OrderDTO>> orderEntryValue = orderEntry.getValue();
OrderMemberReceivedStatistics orderMemberReceivedStatistics = createOrderMemberReceivedStatiscs(startDate,orderStatisticsGroup); OrderMemberReceivedStatistics orderMemberReceivedStatistics = StatisticsStatusEnum.wrapStatisticsObject(startDate, orderStatisticsGroup, new OrderMemberReceivedStatistics());
//1.普通会员 //1.普通会员
List<OrderDTO> generalOrders = orderEntryValue.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;
...@@ -91,27 +86,29 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive ...@@ -91,27 +86,29 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
orderMemberReceivedStatisticsList.add(orderMemberReceivedStatistics); orderMemberReceivedStatisticsList.add(orderMemberReceivedStatistics);
} }
//创建剩余状态数据
List<OrderMemberReceivedStatistics> otherStatisticsStateGroupList = createOtherStatisticsStateGroupList(startDate, Lists.newArrayList(ordersMap.keySet()), 1); List<OrderMemberReceivedStatistics> otherStatisticsStateGroupList = createOtherStatisticsStateGroupList(startDate, Lists.newArrayList(ordersMap.keySet()), 1);
orderMemberReceivedStatisticsList.addAll(otherStatisticsStateGroupList); orderMemberReceivedStatisticsList.addAll(otherStatisticsStateGroupList);
//保存
insertMemberReceivedStatisticsBatch(orderMemberReceivedStatisticsList); insertMemberReceivedStatisticsBatch(orderMemberReceivedStatisticsList);
long interval = timer.interval(); long interval = timer.interval();
System.out.println("花费时间:" + interval); System.out.println("花费时间:" + interval);
} }
/** /**
* 创建剩余状态数据 * 创建剩余状态数据
*
* @param startDate * @param startDate
* @param statisticsStateGroups * @param statisticsStateGroups
* @param companyId * @param companyId
* @return * @return
*/ */
private List<OrderMemberReceivedStatistics> createOtherStatisticsStateGroupList(Date startDate,List<String> statisticsStateGroups,Integer companyId) { private List<OrderMemberReceivedStatistics> createOtherStatisticsStateGroupList(Date startDate, List<String> statisticsStateGroups, Integer companyId) {
List<OrderMemberReceivedStatistics> orderMemberReceivedStatisticsList = new ArrayList<>(); List<OrderMemberReceivedStatistics> orderMemberReceivedStatisticsList = new ArrayList<>();
OrderMemberReceivedStatistics orderMemberReceivedStatistics; OrderMemberReceivedStatistics orderMemberReceivedStatistics;
List<String> otherStatisticsStateGroup = StatisticsStatusEnum.getOtherStatisticsStateGroup(Arrays.asList(companyId),statisticsStateGroups); List<String> otherStatisticsStateGroup = StatisticsStatusEnum.getOtherStatisticsStateGroup(Arrays.asList(companyId), statisticsStateGroups);
for (String stateGroup : otherStatisticsStateGroup) { for (String stateGroup : otherStatisticsStateGroup) {
orderMemberReceivedStatistics = createOrderMemberReceivedStatiscs(startDate,stateGroup); orderMemberReceivedStatistics = StatisticsStatusEnum.wrapStatisticsObject(startDate, stateGroup, new OrderMemberReceivedStatistics());
orderMemberReceivedStatistics.setTotalAmount(BigDecimal.ZERO); orderMemberReceivedStatistics.setTotalAmount(BigDecimal.ZERO);
orderMemberReceivedStatistics.setTotalCommonQuantity(0); orderMemberReceivedStatistics.setTotalCommonQuantity(0);
orderMemberReceivedStatistics.setToalCommonAmmount(BigDecimal.ZERO); orderMemberReceivedStatistics.setToalCommonAmmount(BigDecimal.ZERO);
...@@ -124,31 +121,6 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive ...@@ -124,31 +121,6 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
return orderMemberReceivedStatisticsList; 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);
} }
......
package com.xxfc.platform.order.biz; package com.xxfc.platform.order.biz;
import cn.hutool.core.date.DateField; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import cn.hutool.core.date.DateTime; import com.google.common.collect.Lists;
import cn.hutool.core.date.DateUtil; import com.xxfc.platform.order.contant.enumerate.StatisticsStatusEnum;
import com.xxfc.platform.order.entity.OrderAccount; import com.xxfc.platform.order.entity.OrderRentVehicleReceivedStatistics;
import com.xxfc.platform.order.mapper.OrderRentVehicleReceivedStatisticsMapper;
import com.xxfc.platform.order.pojo.account.OrderAccountDTO; 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 com.xxfc.platform.vehicle.feign.VehicleFeign;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
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 com.xxfc.platform.order.entity.OrderRentVehicleReceivedStatistics;
import com.xxfc.platform.order.mapper.OrderRentVehicleReceivedStatisticsMapper;
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.math.BigDecimal;
...@@ -35,10 +32,7 @@ public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehi ...@@ -35,10 +32,7 @@ public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehi
private final BaseOrderBiz baseOrderBiz; private final BaseOrderBiz baseOrderBiz;
private final OrderAccountBiz orderAccountBiz; private final OrderAccountBiz orderAccountBiz;
private final int FINISH = 6; private final VehicleFeign vehicleFeign;
private final int CANCEL = 2;
private final int UNFINISH = 3;
private final int PAYWAYTEMP = 99;
public List<OrderRentVehicleReceivedStatistics> selectOrderReceivedStatistics(OrderReceivedStatisticsFindDTO orderReceivedStatisticsFindDTO) { public List<OrderRentVehicleReceivedStatistics> selectOrderReceivedStatistics(OrderReceivedStatisticsFindDTO orderReceivedStatisticsFindDTO) {
return mapper.selectOrderRentVehicleReceivedStatistics(orderReceivedStatisticsFindDTO); return mapper.selectOrderRentVehicleReceivedStatistics(orderReceivedStatisticsFindDTO);
...@@ -46,88 +40,61 @@ public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehi ...@@ -46,88 +40,61 @@ public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehi
public void orderRentVehicleReceivedStatistics(Date startDate,Date endDate) { public void orderRentVehicleReceivedStatistics(Date startDate,Date endDate) {
List<OrderRentVehicleReceivedStatistics> orderRentVehicleReceivedStatisticsList = new ArrayList<>(18); List<OrderRentVehicleReceivedStatistics> orderRentVehicleReceivedStatisticsList = new ArrayList<>(18);
String year = String.valueOf(DateTime.of(startDate).getField(DateField.YEAR));
String month = String.format("%s%d", year,DateTime.of(startDate).getField(DateField.MONTH));
String weekOfYear = String.format("%s%d", year, DateTime.of(startDate).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<Integer> orderIds = orders.stream().map(OrderDTO::getId).collect(Collectors.toList());
//订单账目信息
List<OrderAccountDTO> orderAccountDTOList = orderAccountBiz.selectByOrders(orderIds); List<OrderAccountDTO> orderAccountDTOList = orderAccountBiz.selectByOrders(orderIds);
Map<Integer, List<OrderAccountDTO>> orderAccountMap = orderAccountDTOList.stream().collect(Collectors.groupingBy(OrderAccountDTO::getOrderId, Collectors.toList())); Map<Integer, List<OrderAccountDTO>> orderAccountMap = orderAccountDTOList.stream().collect(Collectors.groupingBy(OrderAccountDTO::getOrderId, Collectors.toList()));
//分公司id- -->下单来源(3)--->支付方式(2) --> >状态(3)-->3 * 3 * 2 =18
Map<Integer, Map<Integer, Map<Integer, Map<Integer, List<OrderDTO>>>>> ordersMap = orders.stream().peek(x -> {
if (x.getStatus() != CANCEL && x.getStatus() != FINISH) {
x.setStatus(UNFINISH);
}
}).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())))));
/* Set<Map.Entry<Integer, Map<Integer, Map<Integer, Map<Integer, List<OrderDTO>>>>>> orderEntries = ordersMap.entrySet(); // //数据处理 把 完成状态6 取消状态2 的其他数据转换成状态为未完成3
for (Map.Entry<Integer, Map<Integer, Map<Integer, Map<Integer, List<OrderDTO>>>>> orderEntrie : orderEntries) { Map<String, List<OrderDTO>> ordersMap = orders.stream().peek(x -> {
//公司id Integer status = x.getStatus() == StatisticsStatusEnum.CANCEL ? StatisticsStatusEnum.CANCEL : x.getStatus() == StatisticsStatusEnum.FINISH ? StatisticsStatusEnum.FINISH : StatisticsStatusEnum.UNFINISH;
Integer companyKey = orderEntrie.getKey(); x.setStatus(status);
Set<Map.Entry<Integer, Map<Integer, Map<Integer, List<OrderDTO>>>>> companyEntries = orderEntrie.getValue().entrySet(); x.setStateGroup(String.format("%d-%d-%d-%d", 1, x.getOrderOrigin(), x.getPayWay()==null?1:x.getPayWay(), x.getStatus()));
for (Map.Entry<Integer, Map<Integer, Map<Integer, List<OrderDTO>>>> companyEntrie : companyEntries) {
//下单来源
Integer orderOrignKey = companyEntrie.getKey();
Set<Map.Entry<Integer, Map<Integer, List<OrderDTO>>>> orderOriginEntries = companyEntrie.getValue().entrySet();
for (Map.Entry<Integer, Map<Integer, List<OrderDTO>>> orderOriginEntry : orderOriginEntries) {
//支付方式
Integer payWayKey = orderOriginEntry.getKey();
Set<Map.Entry<Integer, List<OrderDTO>>> statusEntries = orderOriginEntry.getValue().entrySet();
for (Map.Entry<Integer, List<OrderDTO>> statusEntry : statusEntries) {
List<OrderDTO> orderDTOList = statusEntry.getValue();
if (CollectionUtils.isEmpty(orderDTOList)) {
continue;
} }
//状态 ).collect(Collectors.groupingBy(OrderDTO::getStateGroup, Collectors.toList()));
Integer statusKey = statusEntry.getKey();
OrderRentVehicleReceivedStatistics orderRentVehicleReceivedStatistics = new OrderRentVehicleReceivedStatistics(); Set<Map.Entry<String, List<OrderDTO>>> ordersSet = ordersMap.entrySet();
orderRentVehicleReceivedStatistics.setCrtTime(new Date()); for (Map.Entry<String, List<OrderDTO>> orderEntry : ordersSet) {
orderRentVehicleReceivedStatistics.setCompanyId(companyKey); String orderKey = orderEntry.getKey();
orderRentVehicleReceivedStatistics.setIsFinish(statusKey); List<OrderDTO> orderDTOS = orderEntry.getValue();
orderRentVehicleReceivedStatistics.setOrderOrigin(orderOrignKey); OrderRentVehicleReceivedStatistics orderRentVehicleReceivedStatistics = StatisticsStatusEnum.wrapStatisticsObject(startDate, orderKey, new OrderRentVehicleReceivedStatistics());
orderRentVehicleReceivedStatistics.setPayWay(PAYWAYTEMP == payWayKey ? null : payWayKey); for (OrderDTO orderDTO : orderDTOS) {
orderRentVehicleReceivedStatistics.setDate(startDate); List<OrderAccountDTO> orderAccountDTOS = orderAccountMap.get(orderDTO.getId());
orderRentVehicleReceivedStatistics.setYear(year);
orderRentVehicleReceivedStatistics.setMonth(month);
orderRentVehicleReceivedStatistics.setWeekOfYear(weekOfYear);
orderRentVehicleReceivedStatistics.setTotalQuantity(orderDTOList.size());
BigDecimal totalAmount = BigDecimal.ZERO;
BigDecimal realAmount = BigDecimal.ZERO;
for (OrderDTO orderDTO : orderDTOList) {
Integer orderId = orderDTO.getId();
List<OrderAccountDTO> orderAccountDTOS = orderAccountMap.get(orderId);
//完成单
if (FINISH == statusKey) {
} }
//未完成单
if (UNFINISH == statusKey) {
} }
//取消单 List<Integer> companyIds = vehicleFeign.findCompanyIdsByAreaId(null);
if (CANCEL == statusKey) { List<OrderRentVehicleReceivedStatistics> otherStatisticsStateGroupList = createOtherStatisticsStateGroupList(startDate, Lists.newArrayList(ordersMap.keySet()), companyIds);
orderRentVehicleReceivedStatisticsList.addAll(otherStatisticsStateGroupList);
} insertMemberReceivedStatisticsBatch(orderRentVehicleReceivedStatisticsList);
totalAmount.add(orderDTO.getRealAmount());
}
orderRentVehicleReceivedStatistics.setTotalAmount(totalAmount);
orderRentVehicleReceivedStatistics.setRealAmount(realAmount);
orderRentVehicleReceivedStatisticsList.add(orderRentVehicleReceivedStatistics);
} }
/**
* 创建剩余状态数据
*
* @param startDate
* @param statisticsStateGroups
* @param companyIds
* @return
*/
private List<OrderRentVehicleReceivedStatistics> createOtherStatisticsStateGroupList(Date startDate, List<String> statisticsStateGroups, List<Integer> companyIds) {
List<OrderRentVehicleReceivedStatistics> orderMemberReceivedStatisticsList = new ArrayList<>();
OrderRentVehicleReceivedStatistics orderRentVehicleReceivedStatistics;
List<String> otherStatisticsStateGroup = StatisticsStatusEnum.getOtherStatisticsStateGroup(companyIds, statisticsStateGroups);
for (String stateGroup : otherStatisticsStateGroup) {
orderRentVehicleReceivedStatistics = StatisticsStatusEnum.wrapStatisticsObject(startDate, stateGroup, new OrderRentVehicleReceivedStatistics());
orderRentVehicleReceivedStatistics.setRealAmount(BigDecimal.ZERO);
orderRentVehicleReceivedStatistics.setTotalAmount(BigDecimal.ZERO);
orderRentVehicleReceivedStatistics.setTotalQuantity(0);
orderMemberReceivedStatisticsList.add(orderRentVehicleReceivedStatistics);
} }
return orderMemberReceivedStatisticsList;
} }
}*/
insertMemberReceivedStatisticsBatch(orderRentVehicleReceivedStatisticsList);
}
public void insertMemberReceivedStatisticsBatch(List<OrderRentVehicleReceivedStatistics> orderRentVehicleReceivedStatistics) { public void insertMemberReceivedStatisticsBatch(List<OrderRentVehicleReceivedStatistics> orderRentVehicleReceivedStatistics) {
mapper.insertList(orderRentVehicleReceivedStatistics); mapper.insertList(orderRentVehicleReceivedStatistics);
} }
......
...@@ -354,7 +354,7 @@ ...@@ -354,7 +354,7 @@
</select> </select>
<select id="selectOrdersByTypeAndTime" resultType="com.xxfc.platform.order.pojo.dto.OrderDTO"> <select id="selectOrdersByTypeAndTime" resultType="com.xxfc.platform.order.pojo.dto.OrderDTO">
select bo.*,omd.memberLevel from (select `id`,`type`,`status`,`order_amount` AS `orderAmount`, `real_amount`AS select bo.*,omd.memberLevel,IFNULL(orvd.start_company_id,otd.start_company_id) AS `companyId` 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 `has_pay`=1 and `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"
......
...@@ -134,7 +134,7 @@ public interface VehicleFeign { ...@@ -134,7 +134,7 @@ public interface VehicleFeign {
public RestResponse<List<AccompanyingItemVo>> listAccompanyingItem(); public RestResponse<List<AccompanyingItemVo>> listAccompanyingItem();
@GetMapping("/branchCompany/findByAreaId") @GetMapping("/branchCompany/findByAreaId")
List<Integer> findCompanyIdsByAreaId(@RequestParam(value = "areaId") Integer areaId); List<Integer> findCompanyIdsByAreaId(@RequestParam(value = "areaId",required = false) Integer areaId);
@GetMapping("/branchCompany/company") @GetMapping("/branchCompany/company")
Map<Integer, BranComanyLeaderVo> findCompanyLeaderMapByIds(@RequestParam(value = "companyIds") List<Integer> companyIds); Map<Integer, BranComanyLeaderVo> findCompanyLeaderMapByIds(@RequestParam(value = "companyIds") List<Integer> companyIds);
......
...@@ -201,7 +201,7 @@ public class BranchCompanyController extends BaseController<BranchCompanyBiz> { ...@@ -201,7 +201,7 @@ public class BranchCompanyController extends BaseController<BranchCompanyBiz> {
} }
@GetMapping("/findByAreaId") @GetMapping("/findByAreaId")
public List<Integer> findCompanyIdsByAreaId(@RequestParam(value = "areaId") Integer areaId){ public List<Integer> findCompanyIdsByAreaId(@RequestParam(value = "areaId",required = false) Integer areaId){
return baseBiz.selectCompanyIdsByAreaId(areaId); return baseBiz.selectCompanyIdsByAreaId(areaId);
} }
......
...@@ -62,7 +62,10 @@ ...@@ -62,7 +62,10 @@
</if> </if>
</select> </select>
<select id="findCompanyIdsByAreaId" resultType="integer"> <select id="findCompanyIdsByAreaId" resultType="integer">
select `id` from `branch_company` where `zone_id`=#{areaId} select `id` from `branch_company` where `is_del`=0
<if test="areaId!=null">
and `zone_id`=#{areaId}
</if>
</select> </select>
<select id="findBranchCompanys" resultType="com.xxfc.platform.vehicle.pojo.dto.BranchCompanyListDTO"> <select id="findBranchCompanys" resultType="com.xxfc.platform.vehicle.pojo.dto.BranchCompanyListDTO">
......
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