Commit d8a72079 authored by libin's avatar libin

订单统计概况修改

parent e6c50df7
......@@ -5,7 +5,9 @@ import com.xxfc.platform.order.entity.OrderReceivedStatisticsBase;
import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Function;
import java.util.stream.Collectors;
......@@ -127,6 +129,28 @@ public enum OrderMemberReceivedStatisticsSignEnum{
resultMap.put(getSign(),orderReceivedStatisticsVos);
return resultMap;
}
},
MEMBER_AVG_AMOUNT("dh_mavga","会员订单总额"){
@Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object,List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>();
AtomicReference<Integer> divisorAtomicReference = new AtomicReference<>();
orderMap.forEach((K,V)->{
List<OrderMemberReceivedStatistics> orderMemberReceivedStatisticsList = ReceivedStatisticsEnum.convertToTargetBean(V);
Integer divisor = divisorAtomicReference.get();
if (Objects.isNull(divisor)){
divisor = orderMemberReceivedStatisticsList.get(0).getDivisor();
divisorAtomicReference.set(divisor);
}
BigDecimal avgAmount = orderMemberReceivedStatisticsList.stream().map(x -> x.getTotalAmount()).reduce(BigDecimal.ZERO,BigDecimal::add).divide(new BigDecimal(divisor),2, RoundingMode.HALF_UP);
OrderMemberReceivedStatistics orderMemberReceivedStatistics = orderMemberReceivedStatisticsList.get(0);
OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderMemberReceivedStatistics,avgAmount,null);
orderReceivedStatisticsVos.add(receivedStatisticsVo);
});
resultMap.put(getSign(),orderReceivedStatisticsVos);
return resultMap;
}
};
private String sign;
private String desc;
......
......@@ -5,7 +5,9 @@ import com.xxfc.platform.order.entity.OrderReceivedStatisticsBase;
import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Function;
import java.util.stream.Collectors;
......@@ -63,6 +65,28 @@ public enum OrderReceivedStatisticsSignEnum {
resultMap.put(getSign(),orderReceivedStatisticsVos);
return resultMap;
}
},
ORDER_AVG_AMOUNT("ad_oavga","订单金额arpu"){
@Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
AtomicReference<Integer> divisorAtomicReference = new AtomicReference<>();
List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>();
orderMap.forEach((K,V)->{
List<OrderReceivedStatistics> orderReceivedStatisticsList = ReceivedStatisticsEnum.convertToTargetBean(V);
Integer divisor = divisorAtomicReference.get();
if (Objects.isNull(divisor)){
divisor = orderReceivedStatisticsList.get(0).getDivisor();
divisorAtomicReference.set(divisor);
}
BigDecimal avgAmount = orderReceivedStatisticsList.stream().map(x -> x.getTotalAmount()).reduce(BigDecimal.ZERO,BigDecimal::add).divide(new BigDecimal(divisor),2, RoundingMode.HALF_UP);
OrderReceivedStatistics orderReceivedStatistics = orderReceivedStatisticsList.get(0);
OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics,avgAmount,null);
orderReceivedStatisticsVos.add(receivedStatisticsVo);
});
resultMap.put(getSign(),orderReceivedStatisticsVos);
return resultMap;
}
};
private String sign;
private String desc;
......
......@@ -5,6 +5,7 @@ import com.xxfc.platform.order.entity.OrderRentVehicleReceivedStatistics;
import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Function;
......@@ -70,7 +71,30 @@ public enum OrderRentVehicleReceivedStatisticsSignEnum{
resultMap.put(getSign(),orderReceivedStatisticsVos);
return resultMap;
}
};
},
RENT_VEHICLE_AVG_AMOUNT("bd_rvavga","租车金额arpu") {
@Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
AtomicReference<Integer> divisorAtomicReference = new AtomicReference<>();
List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>();
orderMap.forEach((K,V)->{
List<OrderRentVehicleReceivedStatistics> orderRentVehicleReceivedStatisticsList = ReceivedStatisticsEnum.convertToTargetBean(V);
Integer divisor = divisorAtomicReference.get();
if (Objects.isNull(divisor)){
divisor = orderRentVehicleReceivedStatisticsList.get(0).getDivisor();
divisorAtomicReference.set(divisor);
}
BigDecimal avgAmount = orderRentVehicleReceivedStatisticsList.stream().map(x -> x.getTotalAmount()).reduce(BigDecimal.ZERO,BigDecimal::add).divide(new BigDecimal(divisor),2, RoundingMode.HALF_UP);
OrderRentVehicleReceivedStatistics orderReceivedStatistics = orderRentVehicleReceivedStatisticsList.get(0);
OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics,avgAmount,null);
orderReceivedStatisticsVos.add(receivedStatisticsVo);
});
resultMap.put(getSign(),orderReceivedStatisticsVos);
return resultMap;
}
};
private String sign;
private String desc;
private static Map<String,OrderRentVehicleReceivedStatisticsSignEnum> orderRentVehicleReceivedStatisticsSignEnumMap;
......
......@@ -5,6 +5,7 @@ import com.xxfc.platform.order.entity.OrderTourReceivedStatistics;
import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Function;
......@@ -70,6 +71,28 @@ public enum OrderTourReceivedStatisticsSignEnum {
resultMap.put(getSign(), orderReceivedStatisticsVos);
return resultMap;
}
},
TOUR_AVG_AMOUNT("ce_tavga", "旅游金额arpu") {
@Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
AtomicReference<Integer> divisorAtomicReference = new AtomicReference<>();
List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>();
orderMap.forEach((K, V) -> {
List<OrderTourReceivedStatistics> orderTourReceivedStatisticsList = ReceivedStatisticsEnum.convertToTargetBean(V);
Integer divisor = divisorAtomicReference.get();
if (Objects.isNull(divisor)){
divisor = orderTourReceivedStatisticsList.get(0).getDivisor();
divisorAtomicReference.set(divisor);
}
BigDecimal avgAmount = orderTourReceivedStatisticsList.stream().map(x -> x.getTotalAmount()).reduce(BigDecimal.ZERO, BigDecimal::add).divide(new BigDecimal(divisor),2, RoundingMode.HALF_UP);
OrderTourReceivedStatistics orderReceivedStatistics = orderTourReceivedStatisticsList.get(0);
OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics, avgAmount, null);
orderReceivedStatisticsVos.add(receivedStatisticsVo);
});
resultMap.put(getSign(), orderReceivedStatisticsVos);
return resultMap;
}
};
private String sign;
private String desc;
......
package com.xxfc.platform.order.rest.background;
import cn.hutool.core.date.DateUtil;
import com.github.wxiaoqi.security.admin.feign.dto.UserDTO;
import com.github.wxiaoqi.security.common.annotation.BeanValid;
import com.github.wxiaoqi.security.common.annotation.SimpleValid;
......@@ -24,6 +25,7 @@ import javax.servlet.http.HttpServletResponse;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
......@@ -45,6 +47,13 @@ public class OrderReceivedStatisticsAdminController {
@PostMapping("")
public ObjectRestResponse<Map<String, List<OrderReceivedStatisticsVo>>> orderReceivedStatistics(@RequestBody @SimpleValid OrderReceivedStatisticsFindDTO orderReceivedStatisticsFindDTO, UserDTO userDTO){
orderReceivedStatisticsFindDTO.setCompanyId(Arrays.asList(userDTO.getCompanyId()));
if (orderReceivedStatisticsFindDTO.getStartDate()==null && orderReceivedStatisticsFindDTO.getEndDate()==null){
Date date = new Date();
Date startDate = DateUtil.beginOfMonth(date).toJdkDate();
Date endDate = DateUtil.endOfMonth(date).toJdkDate();
orderReceivedStatisticsFindDTO.setStartDate(startDate);
orderReceivedStatisticsFindDTO.setEndDate(endDate);
}
Map<String, List<OrderReceivedStatisticsVo>> orderReceivedStatisticsPageVo = orderReceivedStatisticsBiz.getOrderReceivedStatisticsResult(orderReceivedStatisticsFindDTO);
return ObjectRestResponse.succ(orderReceivedStatisticsPageVo);
}
......
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