Commit 690c9950 authored by zuoyh's avatar zuoyh

Merge remote-tracking branch 'origin/order_received_statistics' into order_received_statistics

parents 4109bb27 0a88c199
...@@ -6,6 +6,7 @@ import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo; ...@@ -6,6 +6,7 @@ import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -15,13 +16,13 @@ import java.util.stream.Collectors; ...@@ -15,13 +16,13 @@ import java.util.stream.Collectors;
* @data 2019/11/11 10:36 * @data 2019/11/11 10:36
*/ */
public enum OrderMemberReceivedStatisticsSignEnum{ public enum OrderMemberReceivedStatisticsSignEnum{
MEMBER_TOTAL_AMOUNT("mta","会员订单总额"){ MEMBER_TOTAL_AMOUNT("da_mta","会员订单总额"){
@Override @Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object,List<OrderReceivedStatisticsBase>> orderMap) { Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object,List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>(); Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>(); List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>();
orderMap.forEach((K,V)->{ orderMap.forEach((K,V)->{
List<OrderMemberReceivedStatistics> orderMemberReceivedStatisticsList = V.stream().map(x -> (OrderMemberReceivedStatistics) x).collect(Collectors.toList()); List<OrderMemberReceivedStatistics> orderMemberReceivedStatisticsList = ReceivedStatisticsEnum.convertToTargetBean(V);
BigDecimal totalAmount = orderMemberReceivedStatisticsList.stream().map(x -> x.getTotalAmount()).reduce(BigDecimal.ZERO, (x, y) -> x.add(y)); BigDecimal totalAmount = orderMemberReceivedStatisticsList.stream().map(x -> x.getTotalAmount()).reduce(BigDecimal.ZERO, (x, y) -> x.add(y));
OrderMemberReceivedStatistics orderMemberReceivedStatistics = orderMemberReceivedStatisticsList.get(0); OrderMemberReceivedStatistics orderMemberReceivedStatistics = orderMemberReceivedStatisticsList.get(0);
OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderMemberReceivedStatistics,totalAmount,null); OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderMemberReceivedStatistics,totalAmount,null);
...@@ -31,13 +32,13 @@ public enum OrderMemberReceivedStatisticsSignEnum{ ...@@ -31,13 +32,13 @@ public enum OrderMemberReceivedStatisticsSignEnum{
return resultMap; return resultMap;
} }
}, },
COMMON__MEMBER_TOTAL_AMOUNT("cmta","普通会员订单总额"){ COMMON__MEMBER_TOTAL_AMOUNT("db_cmta","普通会员订单总额"){
@Override @Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) { Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>(); Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>(); List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>();
orderMap.forEach((K,V)->{ orderMap.forEach((K,V)->{
List<OrderMemberReceivedStatistics> orderMemberReceivedStatisticsList = V.stream().map(x -> (OrderMemberReceivedStatistics) x).collect(Collectors.toList()); List<OrderMemberReceivedStatistics> orderMemberReceivedStatisticsList = ReceivedStatisticsEnum.convertToTargetBean(V);
BigDecimal totalAmount = orderMemberReceivedStatisticsList.stream().map(x -> x.getToalCommonAmmount()).reduce(BigDecimal.ZERO, (x, y) -> x.add(y)); BigDecimal totalAmount = orderMemberReceivedStatisticsList.stream().map(x -> x.getToalCommonAmmount()).reduce(BigDecimal.ZERO, (x, y) -> x.add(y));
OrderMemberReceivedStatistics orderMemberReceivedStatistics = orderMemberReceivedStatisticsList.get(0); OrderMemberReceivedStatistics orderMemberReceivedStatistics = orderMemberReceivedStatisticsList.get(0);
OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderMemberReceivedStatistics,totalAmount,null); OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderMemberReceivedStatistics,totalAmount,null);
...@@ -47,7 +48,7 @@ public enum OrderMemberReceivedStatisticsSignEnum{ ...@@ -47,7 +48,7 @@ public enum OrderMemberReceivedStatisticsSignEnum{
return resultMap; return resultMap;
} }
}, },
MEMBER_TOTAL_QUANTITY("cmtq","普通会员订单量"){ MEMBER_TOTAL_QUANTITY("dc_cmtq","普通会员订单量"){
@Override @Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) { Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>(); Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
...@@ -63,13 +64,13 @@ public enum OrderMemberReceivedStatisticsSignEnum{ ...@@ -63,13 +64,13 @@ public enum OrderMemberReceivedStatisticsSignEnum{
return resultMap; return resultMap;
} }
}, },
GOLD_MEMBER_TOTAL_AMOUNT("gmta","黄金会员订单总额"){ GOLD_MEMBER_TOTAL_AMOUNT("dd_gmta","黄金会员订单总额"){
@Override @Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) { Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>(); Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>(); List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>();
orderMap.forEach((K,V)->{ orderMap.forEach((K,V)->{
List<OrderMemberReceivedStatistics> orderMemberReceivedStatisticsList = V.stream().map(x -> (OrderMemberReceivedStatistics) x).collect(Collectors.toList()); List<OrderMemberReceivedStatistics> orderMemberReceivedStatisticsList = ReceivedStatisticsEnum.convertToTargetBean(V);
BigDecimal totalAmount = orderMemberReceivedStatisticsList.stream().map(x -> x.getTotalGoldAmount()).reduce(BigDecimal.ZERO, (x, y) -> x.add(y)); BigDecimal totalAmount = orderMemberReceivedStatisticsList.stream().map(x -> x.getTotalGoldAmount()).reduce(BigDecimal.ZERO, (x, y) -> x.add(y));
OrderMemberReceivedStatistics orderMemberReceivedStatistics = orderMemberReceivedStatisticsList.get(0); OrderMemberReceivedStatistics orderMemberReceivedStatistics = orderMemberReceivedStatisticsList.get(0);
OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderMemberReceivedStatistics,totalAmount,null); OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderMemberReceivedStatistics,totalAmount,null);
...@@ -79,13 +80,13 @@ public enum OrderMemberReceivedStatisticsSignEnum{ ...@@ -79,13 +80,13 @@ public enum OrderMemberReceivedStatisticsSignEnum{
return resultMap; return resultMap;
} }
}, },
GOLD_MEMBER_TOTAL_QUANTITY("mgtq","黄金会员订单量"){ GOLD_MEMBER_TOTAL_QUANTITY("de_mgtq","黄金会员订单量"){
@Override @Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) { Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>(); Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>(); List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>();
orderMap.forEach((K,V)->{ orderMap.forEach((K,V)->{
List<OrderMemberReceivedStatistics> orderMemberReceivedStatisticsList = V.stream().map(x -> (OrderMemberReceivedStatistics) x).collect(Collectors.toList()); List<OrderMemberReceivedStatistics> orderMemberReceivedStatisticsList = ReceivedStatisticsEnum.convertToTargetBean(V);
Integer totalQuantity = orderMemberReceivedStatisticsList.stream().map(x -> x.getTotalGoldQuantity()).reduce(0, (x, y) -> x+y); Integer totalQuantity = orderMemberReceivedStatisticsList.stream().map(x -> x.getTotalGoldQuantity()).reduce(0, (x, y) -> x+y);
OrderMemberReceivedStatistics orderMemberReceivedStatistics = orderMemberReceivedStatisticsList.get(0); OrderMemberReceivedStatistics orderMemberReceivedStatistics = orderMemberReceivedStatisticsList.get(0);
OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderMemberReceivedStatistics,null,totalQuantity); OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderMemberReceivedStatistics,null,totalQuantity);
...@@ -95,13 +96,13 @@ public enum OrderMemberReceivedStatisticsSignEnum{ ...@@ -95,13 +96,13 @@ public enum OrderMemberReceivedStatisticsSignEnum{
return resultMap; return resultMap;
} }
}, },
DIAMOND_MEMBER_TOTAL_AMOUNT("dmta","钻石会员订单总额"){ DIAMOND_MEMBER_TOTAL_AMOUNT("df_dmta","钻石会员订单总额"){
@Override @Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) { Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>(); Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>(); List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>();
orderMap.forEach((K,V)->{ orderMap.forEach((K,V)->{
List<OrderMemberReceivedStatistics> orderMemberReceivedStatisticsList = V.stream().map(x -> (OrderMemberReceivedStatistics) x).collect(Collectors.toList()); List<OrderMemberReceivedStatistics> orderMemberReceivedStatisticsList = ReceivedStatisticsEnum.convertToTargetBean(V);
BigDecimal totalAmount = orderMemberReceivedStatisticsList.stream().map(x -> x.getTotalDiamondAmmount()).reduce(BigDecimal.ZERO, (x, y) -> x.add(y)); BigDecimal totalAmount = orderMemberReceivedStatisticsList.stream().map(x -> x.getTotalDiamondAmmount()).reduce(BigDecimal.ZERO, (x, y) -> x.add(y));
OrderMemberReceivedStatistics orderMemberReceivedStatistics = orderMemberReceivedStatisticsList.get(0); OrderMemberReceivedStatistics orderMemberReceivedStatistics = orderMemberReceivedStatisticsList.get(0);
OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderMemberReceivedStatistics,totalAmount,null); OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderMemberReceivedStatistics,totalAmount,null);
...@@ -111,13 +112,13 @@ public enum OrderMemberReceivedStatisticsSignEnum{ ...@@ -111,13 +112,13 @@ public enum OrderMemberReceivedStatisticsSignEnum{
return resultMap; return resultMap;
} }
}, },
DIAMOND_MEMBER_TOTAL_QUANTITY("dmtq","钻石会员订单量"){ DIAMOND_MEMBER_TOTAL_QUANTITY("dg_dmtq","钻石会员订单量"){
@Override @Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) { Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>(); Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>(); List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>();
orderMap.forEach((K,V)->{ orderMap.forEach((K,V)->{
List<OrderMemberReceivedStatistics> orderMemberReceivedStatisticsList = V.stream().map(x -> (OrderMemberReceivedStatistics) x).collect(Collectors.toList()); List<OrderMemberReceivedStatistics> orderMemberReceivedStatisticsList = ReceivedStatisticsEnum.convertToTargetBean(V);
Integer totalQuantity = orderMemberReceivedStatisticsList.stream().map(x -> x.getTotalDiamondQuantity()).reduce(0, (x, y) -> x+y); Integer totalQuantity = orderMemberReceivedStatisticsList.stream().map(x -> x.getTotalDiamondQuantity()).reduce(0, (x, y) -> x+y);
OrderMemberReceivedStatistics orderMemberReceivedStatistics = orderMemberReceivedStatisticsList.get(0); OrderMemberReceivedStatistics orderMemberReceivedStatistics = orderMemberReceivedStatisticsList.get(0);
OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderMemberReceivedStatistics,null,totalQuantity); OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderMemberReceivedStatistics,null,totalQuantity);
...@@ -129,7 +130,11 @@ public enum OrderMemberReceivedStatisticsSignEnum{ ...@@ -129,7 +130,11 @@ public enum OrderMemberReceivedStatisticsSignEnum{
}; };
private String sign; private String sign;
private String desc; private String desc;
private static Map<String,OrderMemberReceivedStatisticsSignEnum> orderMemberReceivedStatisticsSignEnumMap;
static {
orderMemberReceivedStatisticsSignEnumMap = EnumSet.allOf(OrderMemberReceivedStatisticsSignEnum.class).stream().collect(Collectors.toMap(OrderMemberReceivedStatisticsSignEnum::getSign, Function.identity()));
}
OrderMemberReceivedStatisticsSignEnum(String sign, String desc) { OrderMemberReceivedStatisticsSignEnum(String sign, String desc) {
this.sign = sign; this.sign = sign;
this.desc = desc; this.desc = desc;
...@@ -141,6 +146,15 @@ public enum OrderMemberReceivedStatisticsSignEnum{ ...@@ -141,6 +146,15 @@ public enum OrderMemberReceivedStatisticsSignEnum{
*/ */
abstract Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object,List<OrderReceivedStatisticsBase>> orderMap); abstract Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object,List<OrderReceivedStatisticsBase>> orderMap);
public static Map<String, List<OrderReceivedStatisticsVo>> orderMemberstatisticsMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMemberstatisticsMap, List<String> signs) {
Map<String,List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>(signs.size());
for (String sign : signs) {
OrderMemberReceivedStatisticsSignEnum orderMemberReceivedStatisticsSignEnum = orderMemberReceivedStatisticsSignEnumMap.get(sign);
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap = orderMemberReceivedStatisticsSignEnum.wrapToMap(orderMemberstatisticsMap);
resultMap.putAll(wrapToMap);
}
return resultMap;
}
public String getSign() { public String getSign() {
return sign; return sign;
} }
......
...@@ -5,10 +5,8 @@ import com.xxfc.platform.order.entity.OrderReceivedStatisticsBase; ...@@ -5,10 +5,8 @@ import com.xxfc.platform.order.entity.OrderReceivedStatisticsBase;
import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo; import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap; import java.util.function.Function;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -18,13 +16,13 @@ import java.util.stream.Collectors; ...@@ -18,13 +16,13 @@ import java.util.stream.Collectors;
* @data 2019/11/11 10:36 * @data 2019/11/11 10:36
*/ */
public enum OrderReceivedStatisticsSignEnum { public enum OrderReceivedStatisticsSignEnum {
ORDER_TOTAL_AMOUNT("ota","订单总额"){ ORDER_TOTAL_AMOUNT("aa_ota","订单总额"){
@Override @Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) { Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>(); Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>(); List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>();
orderMap.forEach((K,V)->{ orderMap.forEach((K,V)->{
List<OrderReceivedStatistics> orderReceivedStatisticsList = V.stream().map(x -> (OrderReceivedStatistics) x).collect(Collectors.toList()); List<OrderReceivedStatistics> orderReceivedStatisticsList = ReceivedStatisticsEnum.convertToTargetBean(V);
BigDecimal totalAmount = orderReceivedStatisticsList.stream().map(x -> x.getTotalAmount()).reduce(BigDecimal.ZERO, (x, y) -> x.add(y)); BigDecimal totalAmount = orderReceivedStatisticsList.stream().map(x -> x.getTotalAmount()).reduce(BigDecimal.ZERO, (x, y) -> x.add(y));
OrderReceivedStatistics orderReceivedStatistics = orderReceivedStatisticsList.get(0); OrderReceivedStatistics orderReceivedStatistics = orderReceivedStatisticsList.get(0);
OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics,totalAmount,null); OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics,totalAmount,null);
...@@ -34,13 +32,13 @@ public enum OrderReceivedStatisticsSignEnum { ...@@ -34,13 +32,13 @@ public enum OrderReceivedStatisticsSignEnum {
return resultMap; return resultMap;
} }
}, },
ORDER_TOTAL_QUANTITY("otq","订单量"){ ORDER_TOTAL_QUANTITY("ab_otq","订单量"){
@Override @Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) { Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>(); Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>(); List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>();
orderMap.forEach((K,V)->{ orderMap.forEach((K,V)->{
List<OrderReceivedStatistics> orderReceivedStatisticsList = V.stream().map(x -> (OrderReceivedStatistics) x).collect(Collectors.toList()); List<OrderReceivedStatistics> orderReceivedStatisticsList = ReceivedStatisticsEnum.convertToTargetBean(V);
Integer totalQuantity = orderReceivedStatisticsList.stream().map(x -> x.getTotalQuantity()).reduce(0, (x, y) -> x+y); Integer totalQuantity = orderReceivedStatisticsList.stream().map(x -> x.getTotalQuantity()).reduce(0, (x, y) -> x+y);
OrderReceivedStatistics orderReceivedStatistics = orderReceivedStatisticsList.get(0); OrderReceivedStatistics orderReceivedStatistics = orderReceivedStatisticsList.get(0);
OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics,null,totalQuantity); OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics,null,totalQuantity);
...@@ -50,13 +48,13 @@ public enum OrderReceivedStatisticsSignEnum { ...@@ -50,13 +48,13 @@ public enum OrderReceivedStatisticsSignEnum {
return resultMap; return resultMap;
} }
}, },
ORDER_AVG_QUANTITY("oavgq","订单平均量"){ ORDER_AVG_QUANTITY("ac_oavgq","订单arpu"){
@Override @Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) { Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>(); Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>(); List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>();
orderMap.forEach((K,V)->{ orderMap.forEach((K,V)->{
List<OrderReceivedStatistics> orderReceivedStatisticsList = V.stream().map(x -> (OrderReceivedStatistics) x).collect(Collectors.toList()); List<OrderReceivedStatistics> orderReceivedStatisticsList = ReceivedStatisticsEnum.convertToTargetBean(V);
Integer avgQuantity = orderReceivedStatisticsList.stream().map(x -> x.getTotalQuantity()).reduce(0, (x, y) -> x+y)/V.size(); Integer avgQuantity = orderReceivedStatisticsList.stream().map(x -> x.getTotalQuantity()).reduce(0, (x, y) -> x+y)/V.size();
OrderReceivedStatistics orderReceivedStatistics = orderReceivedStatisticsList.get(0); OrderReceivedStatistics orderReceivedStatistics = orderReceivedStatisticsList.get(0);
OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics,null,avgQuantity); OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics,null,avgQuantity);
...@@ -66,13 +64,13 @@ public enum OrderReceivedStatisticsSignEnum { ...@@ -66,13 +64,13 @@ public enum OrderReceivedStatisticsSignEnum {
return resultMap; return resultMap;
} }
}, },
ORDER_TOTAL_REAL_AMOUNT("otra","订单实际总额"){ ORDER_TOTAL_REAL_AMOUNT("ad_otra","实际收入"){
@Override @Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) { Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>(); Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>(); List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>();
orderMap.forEach((K,V)->{ orderMap.forEach((K,V)->{
List<OrderReceivedStatistics> orderReceivedStatisticsList = V.stream().map(x -> (OrderReceivedStatistics) x).collect(Collectors.toList()); List<OrderReceivedStatistics> orderReceivedStatisticsList = ReceivedStatisticsEnum.convertToTargetBean(V);
BigDecimal realAmount = orderReceivedStatisticsList.stream().map(x -> x.getRealAmount()).reduce(BigDecimal.ZERO, (x, y) -> x.add(y)); BigDecimal realAmount = orderReceivedStatisticsList.stream().map(x -> x.getRealAmount()).reduce(BigDecimal.ZERO, (x, y) -> x.add(y));
OrderReceivedStatistics orderReceivedStatistics = orderReceivedStatisticsList.get(0); OrderReceivedStatistics orderReceivedStatistics = orderReceivedStatisticsList.get(0);
OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics,realAmount,null); OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics,realAmount,null);
...@@ -82,13 +80,13 @@ public enum OrderReceivedStatisticsSignEnum { ...@@ -82,13 +80,13 @@ public enum OrderReceivedStatisticsSignEnum {
return resultMap; return resultMap;
} }
}, },
ORDER_REAL_AVG_AMOUNT("oravga","订单实际平均总额"){ ORDER_REAL_AVG_AMOUNT("ae_oravga","实际arpu"){
@Override @Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) { Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>(); Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>(); List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>();
orderMap.forEach((K,V)->{ orderMap.forEach((K,V)->{
List<OrderReceivedStatistics> orderReceivedStatisticsList = V.stream().map(x -> (OrderReceivedStatistics) x).collect(Collectors.toList()); List<OrderReceivedStatistics> orderReceivedStatisticsList = ReceivedStatisticsEnum.convertToTargetBean(V);
BigDecimal realAvgAmount = orderReceivedStatisticsList.stream().map(x -> x.getRealAmount()).reduce(BigDecimal.ZERO, (x, y) -> x.add(y)).divide(new BigDecimal(V.size())); BigDecimal realAvgAmount = orderReceivedStatisticsList.stream().map(x -> x.getRealAmount()).reduce(BigDecimal.ZERO, (x, y) -> x.add(y)).divide(new BigDecimal(V.size()));
OrderReceivedStatistics orderReceivedStatistics = orderReceivedStatisticsList.get(0); OrderReceivedStatistics orderReceivedStatistics = orderReceivedStatisticsList.get(0);
OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics,realAvgAmount,null); OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics,realAvgAmount,null);
...@@ -100,6 +98,11 @@ public enum OrderReceivedStatisticsSignEnum { ...@@ -100,6 +98,11 @@ public enum OrderReceivedStatisticsSignEnum {
}; };
private String sign; private String sign;
private String desc; private String desc;
private static Map<String,OrderReceivedStatisticsSignEnum> orderReceivedStatisticsSignEnumMap;
static {
orderReceivedStatisticsSignEnumMap = EnumSet.allOf(OrderReceivedStatisticsSignEnum.class).stream().collect(Collectors.toMap(OrderReceivedStatisticsSignEnum::getSign, Function.identity()));
}
OrderReceivedStatisticsSignEnum(String sign, String desc) { OrderReceivedStatisticsSignEnum(String sign, String desc) {
this.sign = sign; this.sign = sign;
...@@ -112,6 +115,16 @@ public enum OrderReceivedStatisticsSignEnum { ...@@ -112,6 +115,16 @@ public enum OrderReceivedStatisticsSignEnum {
*/ */
abstract Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object,List<OrderReceivedStatisticsBase>> orderMap); abstract Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object,List<OrderReceivedStatisticsBase>> orderMap);
public static Map<String, List<OrderReceivedStatisticsVo>> orderReceivedStatistics(Map<Object,List<OrderReceivedStatisticsBase>> orderMap,List<String> signs){
Map<String,List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>(signs.size());
for (String sign : signs) {
OrderReceivedStatisticsSignEnum orderReceivedStatisticsSignEnum = orderReceivedStatisticsSignEnumMap.get(sign);
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap = orderReceivedStatisticsSignEnum.wrapToMap(orderMap);
resultMap.putAll(wrapToMap);
}
return resultMap;
}
public String getSign() { public String getSign() {
return sign; return sign;
} }
......
...@@ -6,10 +6,8 @@ import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo; ...@@ -6,10 +6,8 @@ import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap; import java.util.function.Function;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -19,13 +17,13 @@ import java.util.stream.Collectors; ...@@ -19,13 +17,13 @@ import java.util.stream.Collectors;
* @data 2019/11/11 10:36 * @data 2019/11/11 10:36
*/ */
public enum OrderRentVehicleReceivedStatisticsSignEnum{ public enum OrderRentVehicleReceivedStatisticsSignEnum{
RENT_VEHICLE_TOTAL_AMOUNT("rvta","租车订单总额"){ RENT_VEHICLE_TOTAL_AMOUNT("ba_rvta","租车订单总额"){
@Override @Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) { Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>(); Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>(); List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>();
orderMap.forEach((K,V)->{ orderMap.forEach((K,V)->{
List<OrderRentVehicleReceivedStatistics> orderRentVehicleReceivedStatisticsList = V.stream().map(x -> (OrderRentVehicleReceivedStatistics) x).collect(Collectors.toList()); List<OrderRentVehicleReceivedStatistics> orderRentVehicleReceivedStatisticsList = ReceivedStatisticsEnum.convertToTargetBean(V);
BigDecimal totalAmount = orderRentVehicleReceivedStatisticsList.stream().map(x -> x.getTotalAmount()).reduce(BigDecimal.ZERO, (x, y) -> x.add(y)); BigDecimal totalAmount = orderRentVehicleReceivedStatisticsList.stream().map(x -> x.getTotalAmount()).reduce(BigDecimal.ZERO, (x, y) -> x.add(y));
OrderRentVehicleReceivedStatistics orderReceivedStatistics = orderRentVehicleReceivedStatisticsList.get(0); OrderRentVehicleReceivedStatistics orderReceivedStatistics = orderRentVehicleReceivedStatisticsList.get(0);
OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics,totalAmount,null); OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics,totalAmount,null);
...@@ -35,13 +33,13 @@ public enum OrderRentVehicleReceivedStatisticsSignEnum{ ...@@ -35,13 +33,13 @@ public enum OrderRentVehicleReceivedStatisticsSignEnum{
return resultMap; return resultMap;
} }
}, },
RENT_VEHICLE_TOTAL_QUANTITY("rvtq","租车订单量") { RENT_VEHICLE_TOTAL_QUANTITY("bb_rvtq","租车订单量") {
@Override @Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) { Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>(); Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>(); List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>();
orderMap.forEach((K,V)->{ orderMap.forEach((K,V)->{
List<OrderRentVehicleReceivedStatistics> orderRentVehicleReceivedStatisticsList = V.stream().map(x -> (OrderRentVehicleReceivedStatistics) x).collect(Collectors.toList()); List<OrderRentVehicleReceivedStatistics> orderRentVehicleReceivedStatisticsList = ReceivedStatisticsEnum.convertToTargetBean(V);
Integer totalQuantity = orderRentVehicleReceivedStatisticsList.stream().map(x -> x.getTotalQuantity()).reduce(0, (x, y) -> x+y); Integer totalQuantity = orderRentVehicleReceivedStatisticsList.stream().map(x -> x.getTotalQuantity()).reduce(0, (x, y) -> x+y);
OrderRentVehicleReceivedStatistics orderReceivedStatistics = orderRentVehicleReceivedStatisticsList.get(0); OrderRentVehicleReceivedStatistics orderReceivedStatistics = orderRentVehicleReceivedStatisticsList.get(0);
OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics,null,totalQuantity); OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics,null,totalQuantity);
...@@ -51,13 +49,13 @@ public enum OrderRentVehicleReceivedStatisticsSignEnum{ ...@@ -51,13 +49,13 @@ public enum OrderRentVehicleReceivedStatisticsSignEnum{
return resultMap; return resultMap;
} }
}, },
RENT_VEHICLE_AVG_QUANTITY("rvaq","租车订单平均量") { RENT_VEHICLE_AVG_QUANTITY("bc_rvavgq","租车订单arpu") {
@Override @Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) { Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>(); Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>(); List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>();
orderMap.forEach((K,V)->{ orderMap.forEach((K,V)->{
List<OrderRentVehicleReceivedStatistics> orderRentVehicleReceivedStatisticsList = V.stream().map(x -> (OrderRentVehicleReceivedStatistics) x).collect(Collectors.toList()); List<OrderRentVehicleReceivedStatistics> orderRentVehicleReceivedStatisticsList = ReceivedStatisticsEnum.convertToTargetBean(V);
Integer avgQuantity = orderRentVehicleReceivedStatisticsList.stream().map(x -> x.getTotalQuantity()).reduce(0, (x, y) -> x+y)/V.size(); Integer avgQuantity = orderRentVehicleReceivedStatisticsList.stream().map(x -> x.getTotalQuantity()).reduce(0, (x, y) -> x+y)/V.size();
OrderRentVehicleReceivedStatistics orderReceivedStatistics = orderRentVehicleReceivedStatisticsList.get(0); OrderRentVehicleReceivedStatistics orderReceivedStatistics = orderRentVehicleReceivedStatisticsList.get(0);
OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics,null,avgQuantity); OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics,null,avgQuantity);
...@@ -67,13 +65,13 @@ public enum OrderRentVehicleReceivedStatisticsSignEnum{ ...@@ -67,13 +65,13 @@ public enum OrderRentVehicleReceivedStatisticsSignEnum{
return resultMap; return resultMap;
} }
}, },
RENT_VEHICLE_REAL_TOTAL_AMOUNT("rvrta","实际租车金额") { RENT_VEHICLE_REAL_TOTAL_AMOUNT("bd_rvrta","实际租车金额") {
@Override @Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) { Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>(); Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>(); List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>();
orderMap.forEach((K,V)->{ orderMap.forEach((K,V)->{
List<OrderRentVehicleReceivedStatistics> orderRentVehicleReceivedStatisticsList = V.stream().map(x -> (OrderRentVehicleReceivedStatistics) x).collect(Collectors.toList()); List<OrderRentVehicleReceivedStatistics> orderRentVehicleReceivedStatisticsList = ReceivedStatisticsEnum.convertToTargetBean(V);
BigDecimal realAmount = orderRentVehicleReceivedStatisticsList.stream().map(x -> x.getRealAmount()).reduce(BigDecimal.ZERO, (x, y) -> x.add(y)); BigDecimal realAmount = orderRentVehicleReceivedStatisticsList.stream().map(x -> x.getRealAmount()).reduce(BigDecimal.ZERO, (x, y) -> x.add(y));
OrderRentVehicleReceivedStatistics orderReceivedStatistics = orderRentVehicleReceivedStatisticsList.get(0); OrderRentVehicleReceivedStatistics orderReceivedStatistics = orderRentVehicleReceivedStatisticsList.get(0);
OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics,realAmount,null); OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics,realAmount,null);
...@@ -83,13 +81,13 @@ public enum OrderRentVehicleReceivedStatisticsSignEnum{ ...@@ -83,13 +81,13 @@ public enum OrderRentVehicleReceivedStatisticsSignEnum{
return resultMap; return resultMap;
} }
}, },
RENT_VEHICLE_REAL_AVG_AMOUNT("rvraa","实际租车平均金额") { RENT_VEHICLE_REAL_AVG_AMOUNT("be_rvravga","实际租车arpu") {
@Override @Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) { Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>(); Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>(); List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>();
orderMap.forEach((K,V)->{ orderMap.forEach((K,V)->{
List<OrderRentVehicleReceivedStatistics> orderRentVehicleReceivedStatisticsList = V.stream().map(x -> (OrderRentVehicleReceivedStatistics) x).collect(Collectors.toList()); List<OrderRentVehicleReceivedStatistics> orderRentVehicleReceivedStatisticsList = ReceivedStatisticsEnum.convertToTargetBean(V);
BigDecimal realAvgAmount = orderRentVehicleReceivedStatisticsList.stream().map(x -> x.getRealAmount()).reduce(BigDecimal.ZERO, (x, y) -> x.add(y)).divide(new BigDecimal(V.size()), RoundingMode.HALF_UP); BigDecimal realAvgAmount = orderRentVehicleReceivedStatisticsList.stream().map(x -> x.getRealAmount()).reduce(BigDecimal.ZERO, (x, y) -> x.add(y)).divide(new BigDecimal(V.size()), RoundingMode.HALF_UP);
OrderRentVehicleReceivedStatistics orderReceivedStatistics = orderRentVehicleReceivedStatisticsList.get(0); OrderRentVehicleReceivedStatistics orderReceivedStatistics = orderRentVehicleReceivedStatisticsList.get(0);
OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics,realAvgAmount,null); OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics,realAvgAmount,null);
...@@ -101,6 +99,11 @@ public enum OrderRentVehicleReceivedStatisticsSignEnum{ ...@@ -101,6 +99,11 @@ public enum OrderRentVehicleReceivedStatisticsSignEnum{
}; };
private String sign; private String sign;
private String desc; private String desc;
private static Map<String,OrderRentVehicleReceivedStatisticsSignEnum> orderRentVehicleReceivedStatisticsSignEnumMap;
static {
orderRentVehicleReceivedStatisticsSignEnumMap = EnumSet.allOf(OrderRentVehicleReceivedStatisticsSignEnum.class).stream().collect(Collectors.toMap(OrderRentVehicleReceivedStatisticsSignEnum::getSign, Function.identity()));
}
OrderRentVehicleReceivedStatisticsSignEnum(String sign, String desc) { OrderRentVehicleReceivedStatisticsSignEnum(String sign, String desc) {
this.sign = sign; this.sign = sign;
...@@ -113,6 +116,16 @@ public enum OrderRentVehicleReceivedStatisticsSignEnum{ ...@@ -113,6 +116,16 @@ public enum OrderRentVehicleReceivedStatisticsSignEnum{
*/ */
abstract Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object,List<OrderReceivedStatisticsBase>> orderMap); abstract Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object,List<OrderReceivedStatisticsBase>> orderMap);
public static Map<String, List<OrderReceivedStatisticsVo>> orderMemberstatisticsMap(Map<Object, List<OrderReceivedStatisticsBase>> orderRentVehiclestatisticsMap, List<String> signs) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>(signs.size());
for (String sign : signs) {
OrderRentVehicleReceivedStatisticsSignEnum orderRentVehicleReceivedStatisticsSignEnum = orderRentVehicleReceivedStatisticsSignEnumMap.get(sign);
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap = orderRentVehicleReceivedStatisticsSignEnum.wrapToMap(orderRentVehiclestatisticsMap);
resultMap.putAll(wrapToMap);
}
return resultMap;
}
public String getSign() { public String getSign() {
return sign; return sign;
} }
......
...@@ -5,10 +5,8 @@ import com.xxfc.platform.order.entity.OrderTourReceivedStatistics; ...@@ -5,10 +5,8 @@ import com.xxfc.platform.order.entity.OrderTourReceivedStatistics;
import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo; import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap; import java.util.function.Function;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -18,86 +16,98 @@ import java.util.stream.Collectors; ...@@ -18,86 +16,98 @@ import java.util.stream.Collectors;
* @data 2019/11/11 10:36 * @data 2019/11/11 10:36
*/ */
public enum OrderTourReceivedStatisticsSignEnum { public enum OrderTourReceivedStatisticsSignEnum {
TOUR_TOTAL_AMOUNT("tta","旅游订单总额"){ TOUR_TOTAL_AMOUNT("ca_tta", "旅游订单总额") {
@Override @Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) { Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>(); Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>(); List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>();
orderMap.forEach((K,V)->{ orderMap.forEach((K, V) -> {
List<OrderTourReceivedStatistics> orderTourReceivedStatisticsList = transFormOrderTourReceivedStatistics(V); List<OrderTourReceivedStatistics> orderTourReceivedStatisticsList = ReceivedStatisticsEnum.convertToTargetBean(V);
BigDecimal totalAmount = orderTourReceivedStatisticsList.stream().map(x -> x.getTotalAmount()).reduce(BigDecimal.ZERO, (x, y) -> x.add(y)); BigDecimal totalAmount = orderTourReceivedStatisticsList.stream().map(x -> x.getTotalAmount()).reduce(BigDecimal.ZERO, (x, y) -> x.add(y));
OrderTourReceivedStatistics orderReceivedStatistics = orderTourReceivedStatisticsList.get(0); OrderTourReceivedStatistics orderReceivedStatistics = orderTourReceivedStatisticsList.get(0);
OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics,totalAmount,null); OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics, totalAmount, null);
orderReceivedStatisticsVos.add(receivedStatisticsVo); orderReceivedStatisticsVos.add(receivedStatisticsVo);
}); });
resultMap.put(getSign(),orderReceivedStatisticsVos); resultMap.put(getSign(), orderReceivedStatisticsVos);
return resultMap; return resultMap;
} }
}, },
TOUR_TOTAL_QUANTITY("ttq","旅游订单量"){ TOUR_TOTAL_QUANTITY("cb_ttq", "旅游订单量") {
@Override @Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) { Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>(); Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>(); List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>();
orderMap.forEach((K,V)->{ orderMap.forEach((K, V) -> {
List<OrderTourReceivedStatistics> orderTourReceivedStatisticsList = transFormOrderTourReceivedStatistics(V); List<OrderTourReceivedStatistics> orderTourReceivedStatisticsList = ReceivedStatisticsEnum.convertToTargetBean(V);
Integer totalQuantity = orderTourReceivedStatisticsList.stream().map(x -> x.getTotalQuantity()).reduce(0, (x, y) -> x+y); Integer totalQuantity = orderTourReceivedStatisticsList.stream().map(x -> x.getTotalQuantity()).reduce(0, (x, y) -> x + y);
OrderTourReceivedStatistics orderReceivedStatistics = orderTourReceivedStatisticsList.get(0); OrderTourReceivedStatistics orderReceivedStatistics = orderTourReceivedStatisticsList.get(0);
OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics,null,totalQuantity); OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics, null, totalQuantity);
orderReceivedStatisticsVos.add(receivedStatisticsVo); orderReceivedStatisticsVos.add(receivedStatisticsVo);
}); });
resultMap.put(getSign(),orderReceivedStatisticsVos); resultMap.put(getSign(), orderReceivedStatisticsVos);
return resultMap; return resultMap;
} }
}, },
TOUR_AVG_QUANTITY("tavgq","旅游订单平均量"){ TOUR_AVG_QUANTITY("cd_tavgq", "旅游订单arpu") {
@Override @Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) { Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>(); Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>(); List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>();
orderMap.forEach((K,V)->{ orderMap.forEach((K, V) -> {
List<OrderTourReceivedStatistics> orderTourReceivedStatisticsList = transFormOrderTourReceivedStatistics(V); List<OrderTourReceivedStatistics> orderTourReceivedStatisticsList = ReceivedStatisticsEnum.convertToTargetBean(V);
Integer avgQuantity = orderTourReceivedStatisticsList.stream().map(x -> x.getTotalQuantity()).reduce(0, (x, y) -> x+y)/V.size(); Integer avgQuantity = orderTourReceivedStatisticsList.stream().map(x -> x.getTotalQuantity()).reduce(0, (x, y) -> x + y) / V.size();
OrderTourReceivedStatistics orderReceivedStatistics = orderTourReceivedStatisticsList.get(0); OrderTourReceivedStatistics orderReceivedStatistics = orderTourReceivedStatisticsList.get(0);
OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics,null,avgQuantity); OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics, null, avgQuantity);
orderReceivedStatisticsVos.add(receivedStatisticsVo); orderReceivedStatisticsVos.add(receivedStatisticsVo);
}); });
resultMap.put(getSign(),orderReceivedStatisticsVos); resultMap.put(getSign(), orderReceivedStatisticsVos);
return resultMap; return resultMap;
} }
}; };
private String sign;
private String desc;
private static Map<String, OrderTourReceivedStatisticsSignEnum> orderTourReceivedStatisticsSignEnumMap;
private static List<OrderTourReceivedStatistics> transFormOrderTourReceivedStatistics(List<OrderReceivedStatisticsBase> V) { static {
return V.stream().map(x -> (OrderTourReceivedStatistics) x).collect(Collectors.toList()); orderTourReceivedStatisticsSignEnumMap = EnumSet.allOf(OrderTourReceivedStatisticsSignEnum.class).stream().collect(Collectors.toMap(OrderTourReceivedStatisticsSignEnum::getSign, Function.identity()));
} }
private String sign; OrderTourReceivedStatisticsSignEnum(String sign, String desc) {
private String desc; this.sign = sign;
this.desc = desc;
}
/**
* 统计项
*
* @param orderMap
* @return
*/
abstract Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap);
OrderTourReceivedStatisticsSignEnum(String sign, String desc) { public static Map<String, List<OrderReceivedStatisticsVo>> orderMemberstatisticsMap(Map<Object, List<OrderReceivedStatisticsBase>> orderTourstatisticsMap, List<String> signs) {
this.sign = sign; Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>(signs.size());
this.desc = desc; for (String sign : signs) {
} OrderTourReceivedStatisticsSignEnum orderTourReceivedStatisticsSignEnum = orderTourReceivedStatisticsSignEnumMap.get(sign);
/** Map<String, List<OrderReceivedStatisticsVo>> wrapToMap = orderTourReceivedStatisticsSignEnum.wrapToMap(orderTourstatisticsMap);
* 统计项 resultMap.putAll(wrapToMap);
* @param orderMap }
* @return return resultMap;
*/ }
abstract Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object,List<OrderReceivedStatisticsBase>> orderMap);
public String getSign() { public String getSign() {
return sign; return sign;
} }
public void setSign(String sign) { public void setSign(String sign) {
this.sign = sign; this.sign = sign;
} }
public String getDesc() { public String getDesc() {
return desc; return desc;
} }
public void setDesc(String desc) { public void setDesc(String desc) {
this.desc = desc; this.desc = desc;
} }
} }
package com.xxfc.platform.order.contant.enumerate; package com.xxfc.platform.order.contant.enumerate;
import com.xxfc.platform.order.entity.OrderReceivedStatisticsBase; import com.xxfc.platform.order.entity.OrderReceivedStatisticsBase;
import com.xxfc.platform.order.entity.OrderRentVehicleReceivedStatistics;
import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo; import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.util.Collections;
import java.util.*; import java.util.EnumSet;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -19,7 +21,7 @@ import java.util.stream.Collectors; ...@@ -19,7 +21,7 @@ import java.util.stream.Collectors;
public enum ReceivedStatisticsEnum { public enum ReceivedStatisticsEnum {
DAY(1, "按日统计") { DAY(1, "按日统计") {
@Override @Override
Map<Object, List<OrderReceivedStatisticsBase>> wrapMap(List<OrderReceivedStatisticsBase> orderReceivedStatisticsBases) { Map<Object, List<OrderReceivedStatisticsBase>> wrapMap(List<? extends OrderReceivedStatisticsBase> orderReceivedStatisticsBases) {
if (CollectionUtils.isEmpty(orderReceivedStatisticsBases)) { if (CollectionUtils.isEmpty(orderReceivedStatisticsBases)) {
return Collections.EMPTY_MAP; return Collections.EMPTY_MAP;
} }
...@@ -28,7 +30,7 @@ public enum ReceivedStatisticsEnum { ...@@ -28,7 +30,7 @@ public enum ReceivedStatisticsEnum {
}, },
WEEK(2, "按周统计") { WEEK(2, "按周统计") {
@Override @Override
Map<Object, List<OrderReceivedStatisticsBase>> wrapMap(List<OrderReceivedStatisticsBase> orderReceivedStatisticsBases) { Map<Object, List<OrderReceivedStatisticsBase>> wrapMap(List<? extends OrderReceivedStatisticsBase> orderReceivedStatisticsBases) {
if (CollectionUtils.isEmpty(orderReceivedStatisticsBases)) { if (CollectionUtils.isEmpty(orderReceivedStatisticsBases)) {
return Collections.EMPTY_MAP; return Collections.EMPTY_MAP;
} }
...@@ -37,15 +39,24 @@ public enum ReceivedStatisticsEnum { ...@@ -37,15 +39,24 @@ public enum ReceivedStatisticsEnum {
}, },
MONTH(3, "按月统计") { MONTH(3, "按月统计") {
@Override @Override
Map<Object, List<OrderReceivedStatisticsBase>> wrapMap(List<OrderReceivedStatisticsBase> orderReceivedStatisticsBases) { Map<Object, List<OrderReceivedStatisticsBase>> wrapMap(List<? extends OrderReceivedStatisticsBase> orderReceivedStatisticsBases) {
if (CollectionUtils.isEmpty(orderReceivedStatisticsBases)) { if (CollectionUtils.isEmpty(orderReceivedStatisticsBases)) {
return Collections.EMPTY_MAP; return Collections.EMPTY_MAP;
} }
return orderReceivedStatisticsBases.stream().collect(Collectors.groupingBy(OrderReceivedStatisticsBase::getMonth, Collectors.toList())); return orderReceivedStatisticsBases.stream().peek(x -> {
OrderReceivedStatisticsBase orderReceivedStatisticsBase = (OrderReceivedStatisticsBase) x;
orderReceivedStatisticsBase.setDate(null);
orderReceivedStatisticsBase.setWeekOfYear(null);
}).collect(Collectors.groupingBy(OrderReceivedStatisticsBase::getMonth, Collectors.toList()));
} }
}; };
private int wayCode; private int wayCode;
private String value; private String value;
private static Map<Integer, ReceivedStatisticsEnum> statisticsEnumMap;
static {
statisticsEnumMap = EnumSet.allOf(ReceivedStatisticsEnum.class).stream().collect(Collectors.toMap(ReceivedStatisticsEnum::getWayCode, Function.identity()));
}
ReceivedStatisticsEnum(int wayCode, String value) { ReceivedStatisticsEnum(int wayCode, String value) {
this.wayCode = wayCode; this.wayCode = wayCode;
...@@ -54,20 +65,56 @@ public enum ReceivedStatisticsEnum { ...@@ -54,20 +65,56 @@ public enum ReceivedStatisticsEnum {
/** /**
* 统计方式 * 统计方式
*
* @param orderReceivedStatisticsBases * @param orderReceivedStatisticsBases
* @return * @return
*/ */
abstract Map<Object, List<OrderReceivedStatisticsBase>> wrapMap(List<OrderReceivedStatisticsBase> orderReceivedStatisticsBases); abstract Map<Object, List<OrderReceivedStatisticsBase>> wrapMap(List<? extends OrderReceivedStatisticsBase> orderReceivedStatisticsBases);
public static Map<Object, List<OrderReceivedStatisticsBase>> orderstatistics(List<? extends OrderReceivedStatisticsBase> orderReceivedStatisticsBases, int wayCode) {
ReceivedStatisticsEnum statisticsEnum = createInstance(wayCode);
return statisticsEnum.wrapMap(orderReceivedStatisticsBases);
}
private static ReceivedStatisticsEnum createInstance(int wayCode) {
return statisticsEnumMap.get(wayCode);
}
/**
* 类型转换
*
* @param source
* @param <T>
* @return
*/
public static <T> List<T> convertToTargetBean(List<? extends OrderReceivedStatisticsBase> source) {
return source.stream().map(x -> (T) x).collect(Collectors.toList());
}
public static OrderReceivedStatisticsVo createOrderReceivedStatistics(OrderReceivedStatisticsBase orderReceivedStatisticsBase, BigDecimal amount,Integer quantity){ public static OrderReceivedStatisticsVo createOrderReceivedStatistics(OrderReceivedStatisticsBase orderReceivedStatisticsBase, BigDecimal amount, Integer quantity) {
return OrderReceivedStatisticsVo.builder() return OrderReceivedStatisticsVo.builder()
.date(orderReceivedStatisticsBase.getDate()) .date(orderReceivedStatisticsBase.getDate())
.month(orderReceivedStatisticsBase.getMonth()) .month(orderReceivedStatisticsBase.getMonth())
.weekOfYear(orderReceivedStatisticsBase.getWeekOfYear()) .weekOfYear(orderReceivedStatisticsBase.getWeekOfYear())
.weekOfYear(orderReceivedStatisticsBase.getYear()) .year(orderReceivedStatisticsBase.getYear())
.orderNum(quantity) .orderNum(quantity)
.orderAmount(amount) .orderAmount(amount)
.build(); .build();
} }
public int getWayCode() {
return wayCode;
}
public void setWayCode(int wayCode) {
this.wayCode = wayCode;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
} }
...@@ -56,13 +56,6 @@ public class OrderReceivedStatistics extends OrderReceivedStatisticsBase impleme ...@@ -56,13 +56,6 @@ public class OrderReceivedStatistics extends OrderReceivedStatisticsBase impleme
@ApiModelProperty(value = "实际收入") @ApiModelProperty(value = "实际收入")
private BigDecimal realAmount; private BigDecimal realAmount;
/**
* 实际平均收入
*/
@Column(name = "real_avg_amount")
@ApiModelProperty(value = "实际平均收入")
private BigDecimal realAvgAmount;
/** /**
* 是否完成 1 完成 0 未完成 * 是否完成 1 完成 0 未完成
*/ */
......
package com.xxfc.platform.order.entity; package com.xxfc.platform.order.entity;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.*;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;
/** /**
* 旅游订单统计 * 旅游订单统计
......
...@@ -21,7 +21,7 @@ public class OrderReceivedStatisticsFindDTO { ...@@ -21,7 +21,7 @@ public class OrderReceivedStatisticsFindDTO {
private Date startDate; private Date startDate;
@ApiModelProperty("统计的结束时间 yyyy-MM-dd") @ApiModelProperty("统计的结束时间 yyyy-MM-dd")
private Date endDate; private Date endDate;
@ApiModelProperty("统计方式 1:日 2:周 3:") @ApiModelProperty("统计方式 1:日 2:周 3:")
@NotNull(message = "统计方式不能为null") @NotNull(message = "统计方式不能为null")
private Integer statisticalWay; private Integer statisticalWay;
@ApiModelProperty("订单状态 0:未完成 1:已完成") @ApiModelProperty("订单状态 0:未完成 1:已完成")
...@@ -32,5 +32,5 @@ public class OrderReceivedStatisticsFindDTO { ...@@ -32,5 +32,5 @@ public class OrderReceivedStatisticsFindDTO {
private Integer payWay; private Integer payWay;
@ApiModelProperty("统计项标识") @ApiModelProperty("统计项标识")
@NotNull(message = "统计标识不能为null") @NotNull(message = "统计标识不能为null")
private List<Integer> statisticalSigns; private List<String> statisticalSigns;
} }
...@@ -20,12 +20,13 @@ import java.util.Date; ...@@ -20,12 +20,13 @@ import java.util.Date;
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public class OrderReceivedStatisticsVo { public class OrderReceivedStatisticsVo {
private String year;
@ApiModelProperty("日期-->日统计方式") @ApiModelProperty("日期-->日统计方式")
private Date date; private Date date;
@ApiModelProperty("第几周---->周统计方式") @ApiModelProperty("第几周---->周统计方式")
private Integer weekOfYear; private String weekOfYear;
@ApiModelProperty("月统计") @ApiModelProperty("月统计")
private Integer month; private String month;
@ApiModelProperty("订单总额|实际收入|平均收入") @ApiModelProperty("订单总额|实际收入|平均收入")
private BigDecimal orderAmount; private BigDecimal orderAmount;
@ApiModelProperty("订单总量|订单平均量") @ApiModelProperty("订单总量|订单平均量")
......
...@@ -13,7 +13,8 @@ import org.springframework.scheduling.annotation.EnableScheduling; ...@@ -13,7 +13,8 @@ import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication(scanBasePackages = { @SpringBootApplication(scanBasePackages = {
"com.xxfc.platform", "com.xxfc.platform",
"com.github.wxiaoqi.security.common.handler", "com.github.wxiaoqi.security.common.handler",
"com.github.wxiaoqi.security.common.log" "com.github.wxiaoqi.security.common.log",
"com.github.wxiaoqi.security.common.support"
}) })
@EnableDiscoveryClient @EnableDiscoveryClient
@EnableScheduling @EnableScheduling
......
...@@ -3,9 +3,12 @@ package com.xxfc.platform.order.biz; ...@@ -3,9 +3,12 @@ package com.xxfc.platform.order.biz;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
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.OrderReceivedStatisticsFindDTO;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/** /**
* 会员订单统计 * 会员订单统计
* *
...@@ -16,4 +19,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -16,4 +19,7 @@ import org.springframework.transaction.annotation.Transactional;
@Service @Service
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceivedStatisticsMapper,OrderMemberReceivedStatistics> { public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceivedStatisticsMapper,OrderMemberReceivedStatistics> {
public List<OrderMemberReceivedStatistics> selectOrderReceivedStatistics(OrderReceivedStatisticsFindDTO orderReceivedStatisticsFindDTO) {
return mapper.selectOrderMemberReceivedStatistics(orderReceivedStatisticsFindDTO);
}
} }
\ No newline at end of file
package com.xxfc.platform.order.biz; package com.xxfc.platform.order.biz;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.util.excel.ExcelExport;
import com.google.common.collect.Lists;
import com.xxfc.platform.order.contant.enumerate.*;
import com.xxfc.platform.order.entity.*;
import com.xxfc.platform.order.mapper.OrderReceivedStatisticsMapper;
import com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO; import com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO;
import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo; import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.InitializingBean;
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.OrderReceivedStatistics;
import com.xxfc.platform.order.mapper.OrderReceivedStatisticsMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.Collections; import javax.servlet.ServletOutputStream;
import java.util.List; import java.io.IOException;
import java.util.Map; import java.util.*;
import java.util.function.Predicate;
import java.util.stream.Collectors;
/** /**
* 全部订单统计 * 全部订单统计
* *
* @author libin * @author libin
* @email 18178966185@163.com * @email 18178966185@163.com
...@@ -25,12 +38,199 @@ import java.util.Map; ...@@ -25,12 +38,199 @@ import java.util.Map;
@Service @Service
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@RequiredArgsConstructor(onConstructor = @__(@Autowired)) @RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class OrderReceivedStatisticsBiz extends BaseBiz<OrderReceivedStatisticsMapper,OrderReceivedStatistics> { public class OrderReceivedStatisticsBiz extends BaseBiz<OrderReceivedStatisticsMapper, OrderReceivedStatistics> implements InitializingBean {
private final OrderRentVehicleReceivedStatisticsBiz orderRentVehicleReceivedStatisticsBiz; private final OrderRentVehicleReceivedStatisticsBiz orderRentVehicleReceivedStatisticsBiz;
private final OrderTourReceivedStatisticsBiz orderTourReceivedStatisticsBiz; private final OrderTourReceivedStatisticsBiz orderTourReceivedStatisticsBiz;
private final OrderMemberReceivedStatisticsBiz orderMemberReceivedStatisticsBiz; private final OrderMemberReceivedStatisticsBiz orderMemberReceivedStatisticsBiz;
private List<String> orderSigns;
private List<String> orderMemberSigns;
private List<String> orderRentVehicleSigns;
private List<String> orderTourSigns;
private Map<String, String> signAndDescMap;
/**
* 订单统计数据导出
*
* @param orderReceivedStatisticsFindDTO
* @param outputStream
*/
public void exportOrderReceivedStatisticsData(OrderReceivedStatisticsFindDTO orderReceivedStatisticsFindDTO, ServletOutputStream outputStream) throws IOException {
Map<String, List<OrderReceivedStatisticsVo>> orderReceivedStatisticsResult = getOrderReceivedStatisticsResult(orderReceivedStatisticsFindDTO);
XSSFWorkbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("订单统计");
Row headerRow = sheet.createRow(0);
//标题样式
CellStyle headerCellStyle = createCellStyle(workbook, true);
//创建标题
createHeader(headerRow,headerCellStyle,orderReceivedStatisticsFindDTO.getStatisticalSigns());
//创建数据样式
CellStyle dataCellStyle = createCellStyle(workbook, false);
createData(orderReceivedStatisticsResult,orderReceivedStatisticsFindDTO.getStatisticalWay(),orderReceivedStatisticsFindDTO.getStatisticalSigns(),sheet,1,dataCellStyle);
workbook.write(outputStream);
workbook.close();
}
private void createData(Map<String,List<OrderReceivedStatisticsVo>> data,Integer statisticalWay, List<String> signs,Sheet sheet,int rowIndex,CellStyle cellStyle){
//自然排序
Collections.sort(signs);
int size = data.get(signs.get(0)).size();
for(int i=0;i<size;i++){
Row dataRow = sheet.createRow(rowIndex++);
Cell firstCell = dataRow.createCell(0);
firstCell.setCellStyle(cellStyle);
for (int cellIndex=1;cellIndex<=signs.size();cellIndex++) {
Cell dataCell = dataRow.createCell(cellIndex);
dataCell.setCellStyle(cellStyle);
String sign = signs.get(cellIndex-1);
List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = data.get(sign);
if (CollectionUtils.isEmpty(orderReceivedStatisticsVos) || i>orderReceivedStatisticsVos.size()){
continue;
}
OrderReceivedStatisticsVo orderReceivedStatisticsVo = orderReceivedStatisticsVos.get(i);
if (sign.endsWith("q")){
dataCell.setCellValue(String.valueOf(orderReceivedStatisticsVo.getOrderNum()));
}
if (sign.endsWith("a")){
dataCell.setCellValue(String.valueOf(orderReceivedStatisticsVo.getOrderAmount()));
}
if (cellIndex ==1){
if (ReceivedStatisticsEnum.DAY.getWayCode()==statisticalWay){
firstCell.setCellValue(DateUtil.format(orderReceivedStatisticsVo.getDate(),"yyyy.MM.dd"));
}
if (ReceivedStatisticsEnum.WEEK.getWayCode()==statisticalWay){
Date startDate = orderReceivedStatisticsVo.getDate();
String startDateStr = DateUtil.format(startDate, "yyyy-MM-dd");
String endDateStr = DateUtil.offset(startDate, DateField.DAY_OF_MONTH, 6).toDateStr();
firstCell.setCellValue(String.format("%s~%s",startDateStr,endDateStr));
}
if (ReceivedStatisticsEnum.MONTH.getWayCode()==statisticalWay){
StringBuilder sb = new StringBuilder(orderReceivedStatisticsVo.getMonth());
sb.insert(4,".");
firstCell.setCellValue(sb.toString());
}
}
}
}
}
private void createHeader(Row row, CellStyle cellStyle,List<String> signs){
//自然排序
Collections.sort(signs);
Cell firstCell = row.createCell(0);
firstCell.setCellValue("时间");
firstCell.setCellStyle(cellStyle);
for (int i = 1; i <=signs.size(); i++) {
Cell cell = row.createCell(i);
cell.setCellValue(signAndDescMap.get(signs.get(i-1)));
cell.setCellStyle(cellStyle);
}
}
private CellStyle createCellStyle(Workbook workbook,boolean bold){
CellStyle cellStyle = workbook.createCellStyle();
Font font = createFont(workbook,bold);
cellStyle.setFont(font);
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
cellStyle.setAlignment(HorizontalAlignment.CENTER);
return cellStyle;
}
private Font createFont(Workbook workbook,boolean bold){
Font font = workbook.createFont();
font.setFontName("黑体");
font.setBold(bold);
font.setBold(true);
return font;
}
/**
* 获取订单统计数据
*
* @param orderReceivedStatisticsFindDTO
* @return
*/
public Map<String, List<OrderReceivedStatisticsVo>> getOrderReceivedStatisticsResult(OrderReceivedStatisticsFindDTO orderReceivedStatisticsFindDTO) { public Map<String, List<OrderReceivedStatisticsVo>> getOrderReceivedStatisticsResult(OrderReceivedStatisticsFindDTO orderReceivedStatisticsFindDTO) {
return Collections.EMPTY_MAP; Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
List<String> statisticalSigns = orderReceivedStatisticsFindDTO.getStatisticalSigns();
//订单统计
if (CollectionUtil.containsAny(statisticalSigns, orderSigns)) {
List<OrderReceivedStatistics> orderReceivedStatisticsList = selectOrderReceivedStatistics(orderReceivedStatisticsFindDTO);
//日 周 月 的统计
Map<Object, List<OrderReceivedStatisticsBase>> orderstatisticsMap = ReceivedStatisticsEnum.orderstatistics(orderReceivedStatisticsList, orderReceivedStatisticsFindDTO.getStatisticalWay());
//统计项
Map<String, List<OrderReceivedStatisticsVo>> orderReceivedStatisticsMap = OrderReceivedStatisticsSignEnum.orderReceivedStatistics(orderstatisticsMap, retainAll(orderSigns, statisticalSigns));
resultMap.putAll(orderReceivedStatisticsMap);
}
//租车订单统计
if (CollectionUtil.containsAny(statisticalSigns, orderRentVehicleSigns)) {
List<OrderRentVehicleReceivedStatistics> orderRentVehicleReceivedStatisticsList = orderRentVehicleReceivedStatisticsBiz.selectOrderReceivedStatistics(orderReceivedStatisticsFindDTO);
//日 周 月 的统计
Map<Object, List<OrderReceivedStatisticsBase>> orderRentVehiclestatisticsMap = ReceivedStatisticsEnum.orderstatistics(orderRentVehicleReceivedStatisticsList, orderReceivedStatisticsFindDTO.getStatisticalWay());
//统计项
Map<String, List<OrderReceivedStatisticsVo>> orderRentVehicleReceivedStatisticsMap = OrderRentVehicleReceivedStatisticsSignEnum.orderMemberstatisticsMap(orderRentVehiclestatisticsMap, retainAll(orderRentVehicleSigns, statisticalSigns));
resultMap.putAll(orderRentVehicleReceivedStatisticsMap);
}
//旅游订单统计
if (CollectionUtil.containsAny(statisticalSigns, orderTourSigns)) {
List<OrderTourReceivedStatistics> orderTourReceivedStatisticsList = orderTourReceivedStatisticsBiz.selectOrderReceivedStatistics(orderReceivedStatisticsFindDTO);
//日 周 月 的统计
Map<Object, List<OrderReceivedStatisticsBase>> orderTourstatisticsMap = ReceivedStatisticsEnum.orderstatistics(orderTourReceivedStatisticsList, orderReceivedStatisticsFindDTO.getStatisticalWay());
//统计项
Map<String, List<OrderReceivedStatisticsVo>> orderTourReceivedStatisticsMap = OrderTourReceivedStatisticsSignEnum.orderMemberstatisticsMap(orderTourstatisticsMap, retainAll(orderTourSigns, statisticalSigns));
resultMap.putAll(orderTourReceivedStatisticsMap);
}
//会员订单统计
if (CollectionUtil.containsAny(statisticalSigns, orderMemberSigns)) {
List<OrderMemberReceivedStatistics> orderMemberReceivedStatisticsList = orderMemberReceivedStatisticsBiz.selectOrderReceivedStatistics(orderReceivedStatisticsFindDTO);
//日 周 月 的统计
Map<Object, List<OrderReceivedStatisticsBase>> orderMemberstatisticsMap = ReceivedStatisticsEnum.orderstatistics(orderMemberReceivedStatisticsList, orderReceivedStatisticsFindDTO.getStatisticalWay());
//统计项
Map<String, List<OrderReceivedStatisticsVo>> orderMemberReceivedStatisticsMap = OrderMemberReceivedStatisticsSignEnum.orderMemberstatisticsMap(orderMemberstatisticsMap, retainAll(orderMemberSigns, statisticalSigns));
resultMap.putAll(orderMemberReceivedStatisticsMap);
}
return resultMap;
} }
private List<OrderReceivedStatistics> selectOrderReceivedStatistics(OrderReceivedStatisticsFindDTO orderReceivedStatisticsFindDTO) {
return mapper.selectOrderReceivedStatisticsList(orderReceivedStatisticsFindDTO);
}
/**
* 取两个集合的交集
*
* @param source
* @param target
* @return
*/
private List<String> retainAll(List<String> source, List<String> target) {
ArrayList<String> sourceBak = Lists.newArrayList(source);
sourceBak.retainAll(target);
return sourceBak;
}
@Override
public void afterPropertiesSet() throws Exception {
signAndDescMap = new HashMap<>();
orderSigns = EnumSet.allOf(OrderReceivedStatisticsSignEnum.class).stream().map(OrderReceivedStatisticsSignEnum::getSign).collect(Collectors.toList());
Map<String, String> orderSignAndDescMap = EnumSet.allOf(OrderReceivedStatisticsSignEnum.class).stream().collect(Collectors.toMap(OrderReceivedStatisticsSignEnum::getSign, OrderReceivedStatisticsSignEnum::getDesc));
signAndDescMap.putAll(orderSignAndDescMap);
orderMemberSigns = EnumSet.allOf(OrderMemberReceivedStatisticsSignEnum.class).stream().map(OrderMemberReceivedStatisticsSignEnum::getSign).collect(Collectors.toList());
Map<String, String> orderMemberSignAndDescMap = EnumSet.allOf(OrderMemberReceivedStatisticsSignEnum.class).stream().collect(Collectors.toMap(OrderMemberReceivedStatisticsSignEnum::getSign, OrderMemberReceivedStatisticsSignEnum::getDesc));
signAndDescMap.putAll(orderMemberSignAndDescMap);
orderRentVehicleSigns = EnumSet.allOf(OrderRentVehicleReceivedStatisticsSignEnum.class).stream().map(OrderRentVehicleReceivedStatisticsSignEnum::getSign).collect(Collectors.toList());
Map<String, String> orderRentVehicleSignAndDescMap = EnumSet.allOf(OrderRentVehicleReceivedStatisticsSignEnum.class).stream().collect(Collectors.toMap(OrderRentVehicleReceivedStatisticsSignEnum::getSign, OrderRentVehicleReceivedStatisticsSignEnum::getDesc));
signAndDescMap.putAll(orderRentVehicleSignAndDescMap);
orderTourSigns = EnumSet.allOf(OrderTourReceivedStatisticsSignEnum.class).stream().map(OrderTourReceivedStatisticsSignEnum::getSign).collect(Collectors.toList());
Map<String, String> orderTourSignAndDescMap = EnumSet.allOf(OrderTourReceivedStatisticsSignEnum.class).stream().collect(Collectors.toMap(OrderTourReceivedStatisticsSignEnum::getSign, OrderTourReceivedStatisticsSignEnum::getDesc));
signAndDescMap.putAll(orderTourSignAndDescMap);
}
} }
\ No newline at end of file
package com.xxfc.platform.order.biz; package com.xxfc.platform.order.biz;
import com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.xxfc.platform.order.entity.OrderRentVehicleReceivedStatistics; import com.xxfc.platform.order.entity.OrderRentVehicleReceivedStatistics;
...@@ -7,6 +8,8 @@ import com.xxfc.platform.order.mapper.OrderRentVehicleReceivedStatisticsMapper; ...@@ -7,6 +8,8 @@ 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.util.List;
/** /**
* 租车订单统计 * 租车订单统计
* *
...@@ -17,4 +20,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -17,4 +20,7 @@ import org.springframework.transaction.annotation.Transactional;
@Service @Service
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehicleReceivedStatisticsMapper,OrderRentVehicleReceivedStatistics> { public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehicleReceivedStatisticsMapper,OrderRentVehicleReceivedStatistics> {
public List<OrderRentVehicleReceivedStatistics> selectOrderReceivedStatistics(OrderReceivedStatisticsFindDTO orderReceivedStatisticsFindDTO) {
return mapper.selectOrderRentVehicleReceivedStatistics(orderReceivedStatisticsFindDTO);
}
} }
\ No newline at end of file
package com.xxfc.platform.order.biz; package com.xxfc.platform.order.biz;
import com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.xxfc.platform.order.entity.OrderTourReceivedStatistics; import com.xxfc.platform.order.entity.OrderTourReceivedStatistics;
...@@ -7,6 +8,8 @@ import com.xxfc.platform.order.mapper.OrderTourReceivedStatisticsMapper; ...@@ -7,6 +8,8 @@ import com.xxfc.platform.order.mapper.OrderTourReceivedStatisticsMapper;
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.util.List;
/** /**
* 旅游订单统计 * 旅游订单统计
* *
...@@ -17,4 +20,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -17,4 +20,7 @@ import org.springframework.transaction.annotation.Transactional;
@Service @Service
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public class OrderTourReceivedStatisticsBiz extends BaseBiz<OrderTourReceivedStatisticsMapper,OrderTourReceivedStatistics> { public class OrderTourReceivedStatisticsBiz extends BaseBiz<OrderTourReceivedStatisticsMapper,OrderTourReceivedStatistics> {
public List<OrderTourReceivedStatistics> selectOrderReceivedStatistics(OrderReceivedStatisticsFindDTO orderReceivedStatisticsFindDTO) {
return mapper.selectOrderTourReceivedStatistics(orderReceivedStatisticsFindDTO);
}
} }
\ No newline at end of file
package com.xxfc.platform.order.mapper; package com.xxfc.platform.order.mapper;
import com.xxfc.platform.order.entity.OrderMemberReceivedStatistics; import com.xxfc.platform.order.entity.OrderMemberReceivedStatistics;
import com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import java.util.List;
/** /**
* 会员订单统计 * 会员订单统计
* *
...@@ -11,5 +14,6 @@ import tk.mybatis.mapper.common.Mapper; ...@@ -11,5 +14,6 @@ import tk.mybatis.mapper.common.Mapper;
* @date 2019-11-08 18:03:42 * @date 2019-11-08 18:03:42
*/ */
public interface OrderMemberReceivedStatisticsMapper extends Mapper<OrderMemberReceivedStatistics> { public interface OrderMemberReceivedStatisticsMapper extends Mapper<OrderMemberReceivedStatistics> {
List<OrderMemberReceivedStatistics> selectOrderMemberReceivedStatistics(OrderReceivedStatisticsFindDTO orderReceivedStatisticsFindDTO);
} }
package com.xxfc.platform.order.mapper; package com.xxfc.platform.order.mapper;
import com.xxfc.platform.order.entity.OrderReceivedStatistics; import com.xxfc.platform.order.entity.OrderReceivedStatistics;
import com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import java.util.List;
/** /**
* 全部订单统计 * 全部订单统计
* *
...@@ -11,5 +14,6 @@ import tk.mybatis.mapper.common.Mapper; ...@@ -11,5 +14,6 @@ import tk.mybatis.mapper.common.Mapper;
* @date 2019-11-08 18:03:42 * @date 2019-11-08 18:03:42
*/ */
public interface OrderReceivedStatisticsMapper extends Mapper<OrderReceivedStatistics> { public interface OrderReceivedStatisticsMapper extends Mapper<OrderReceivedStatistics> {
List<OrderReceivedStatistics> selectOrderReceivedStatisticsList(OrderReceivedStatisticsFindDTO orderReceivedStatisticsFindDTO);
} }
package com.xxfc.platform.order.mapper; 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 tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import java.util.List;
/** /**
* 租车订单统计 * 租车订单统计
* *
...@@ -11,5 +14,6 @@ import tk.mybatis.mapper.common.Mapper; ...@@ -11,5 +14,6 @@ import tk.mybatis.mapper.common.Mapper;
* @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> {
List<OrderRentVehicleReceivedStatistics> selectOrderRentVehicleReceivedStatistics(OrderReceivedStatisticsFindDTO orderReceivedStatisticsFindDTO);
} }
package com.xxfc.platform.order.mapper; package com.xxfc.platform.order.mapper;
import com.xxfc.platform.order.entity.OrderTourReceivedStatistics; import com.xxfc.platform.order.entity.OrderTourReceivedStatistics;
import com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import java.util.List;
/** /**
* 旅游订单统计 * 旅游订单统计
* *
...@@ -11,5 +14,6 @@ import tk.mybatis.mapper.common.Mapper; ...@@ -11,5 +14,6 @@ import tk.mybatis.mapper.common.Mapper;
* @date 2019-11-08 18:03:42 * @date 2019-11-08 18:03:42
*/ */
public interface OrderTourReceivedStatisticsMapper extends Mapper<OrderTourReceivedStatistics> { public interface OrderTourReceivedStatisticsMapper extends Mapper<OrderTourReceivedStatistics> {
List<OrderTourReceivedStatistics> selectOrderTourReceivedStatistics(OrderReceivedStatisticsFindDTO orderReceivedStatisticsFindDTO);
} }
package com.xxfc.platform.order.rest.background; package com.xxfc.platform.order.rest.background;
import com.github.wxiaoqi.security.common.annotation.BeanValid;
import com.github.wxiaoqi.security.common.annotation.SimpleValid; import com.github.wxiaoqi.security.common.annotation.SimpleValid;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.order.biz.OrderReceivedStatisticsBiz; import com.xxfc.platform.order.biz.OrderReceivedStatisticsBiz;
import com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO; import com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO;
...@@ -8,12 +10,18 @@ import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo; ...@@ -8,12 +10,18 @@ import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -23,6 +31,7 @@ import java.util.Map; ...@@ -23,6 +31,7 @@ import java.util.Map;
* @description 订单统计 * @description 订单统计
* @data 2019/11/11 9:14 * @data 2019/11/11 9:14
*/ */
@Slf4j
@Api(tags = "订单统计") @Api(tags = "订单统计")
@RestController @RestController
@RequestMapping("admin/order/received_statistics") @RequestMapping("admin/order/received_statistics")
...@@ -36,4 +45,22 @@ public class OrderReceivedStatisticsAdminController { ...@@ -36,4 +45,22 @@ public class OrderReceivedStatisticsAdminController {
Map<String, List<OrderReceivedStatisticsVo>> orderReceivedStatisticsPageVo = orderReceivedStatisticsBiz.getOrderReceivedStatisticsResult(orderReceivedStatisticsFindDTO); Map<String, List<OrderReceivedStatisticsVo>> orderReceivedStatisticsPageVo = orderReceivedStatisticsBiz.getOrderReceivedStatisticsResult(orderReceivedStatisticsFindDTO);
return ObjectRestResponse.succ(orderReceivedStatisticsPageVo); return ObjectRestResponse.succ(orderReceivedStatisticsPageVo);
} }
@ApiOperation("订单统计excel导出下载")
@PostMapping(value = "/export",consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
public ObjectRestResponse<Void> exportOrderReceivedStatistics(@RequestBody @BeanValid OrderReceivedStatisticsFindDTO orderReceivedStatisticsFindDTO, HttpServletResponse response){
try {
String name = DateTimeFormatter.ofPattern("YYYYMMddHHmmss").format(LocalDateTime.now());
response.setContentType("application/vnd.ms-excel;charset=utf-8");
String filename = String.format("%s-OrderReceivedStatistics.xlsx",name);
response.setHeader("Content-Disposition","attachment;filename="+ new String(filename.getBytes(), "iso8859-1"));
ServletOutputStream outputStream = response.getOutputStream();
orderReceivedStatisticsBiz.exportOrderReceivedStatisticsData(orderReceivedStatisticsFindDTO,outputStream);
response.setCharacterEncoding("UTF-8");
return ObjectRestResponse.succ();
}catch (Exception ex){
log.error("导出数据失败【{}】",ex);
throw new BaseException("导出数据失败");
}
}
} }
...@@ -24,4 +24,30 @@ ...@@ -24,4 +24,30 @@
<result property="crtTime" column="crt_time"/> <result property="crtTime" column="crt_time"/>
</resultMap> </resultMap>
<select id="selectOrderMemberReceivedStatistics" resultMap="orderMemberReceivedStatisticsMap">
select * from `order_member_received_statistics` where 1=1
<if test="orderState!=null">
and `is_finish`=#{orderState}
</if>
<if test="orderOrigin!=null">
and `order_origin`=#{orderOrigin}
</if>
<if test="payWay!=null">
and `pay_way`=#{payWay}
</if>
<if test="startDate!=null and endDate!=null">
and `date` between #{startDate} and #{endDate}
</if>
<if test="startDate!=null and endDate==null">
and <![CDATA[
`date` >= #{startDate}
]]>
</if>
<if test="startDate==null and endDate!=null">
and <![CDATA[
`date` <= #{endDate}
]]>
</if>
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -12,13 +12,37 @@ ...@@ -12,13 +12,37 @@
<result property="weekOfYear" column="week_of_year"/> <result property="weekOfYear" column="week_of_year"/>
<result property="totalAmount" column="total_amount"/> <result property="totalAmount" column="total_amount"/>
<result property="totalQuantity" column="total_quantity"/> <result property="totalQuantity" column="total_quantity"/>
<result property="avgQuantity" column="avg_quantity"/>
<result property="realAmount" column="real_amount"/> <result property="realAmount" column="real_amount"/>
<result property="realAvgAmount" column="real_avg_amount"/>
<result property="isFinish" column="is_finish"/> <result property="isFinish" column="is_finish"/>
<result property="orderOrigin" column="order_origin"/> <result property="orderOrigin" column="order_origin"/>
<result property="payWay" column="pay_way"/> <result property="payWay" column="pay_way"/>
<result property="crtTime" column="crt_time"/> <result property="crtTime" column="crt_time"/>
</resultMap> </resultMap>
<select id="selectOrderReceivedStatisticsList" resultMap="orderReceivedStatisticsMap">
select * from `order_received_statistics` where 1=1
<if test="orderState!=null">
and `is_finish`=#{orderState}
</if>
<if test="orderOrigin!=null">
and `order_origin`=#{orderOrigin}
</if>
<if test="payWay!=null">
and `pay_way`=#{payWay}
</if>
<if test="startDate!=null and endDate!=null">
and `date` between #{startDate} and #{endDate}
</if>
<if test="startDate!=null and endDate==null">
and <![CDATA[
`date` >= #{startDate}
]]>
</if>
<if test="startDate==null and endDate!=null">
and <![CDATA[
`date` <= #{endDate}
]]>
</if>
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -12,14 +12,37 @@ ...@@ -12,14 +12,37 @@
<result property="weekOfYear" column="week_of_year"/> <result property="weekOfYear" column="week_of_year"/>
<result property="totalAmount" column="total_amount"/> <result property="totalAmount" column="total_amount"/>
<result property="totalQuantity" column="total_quantity"/> <result property="totalQuantity" column="total_quantity"/>
<result property="avgQuantity" column="avg_quantity"/>
<result property="realAmount" column="real_amount"/> <result property="realAmount" column="real_amount"/>
<result property="realAvgAmount" column="real_avg_amount"/>
<result property="isFinish" column="is_finish"/> <result property="isFinish" column="is_finish"/>
<result property="orderOrigin" column="order_origin"/> <result property="orderOrigin" column="order_origin"/>
<result property="payWay" column="pay_way"/> <result property="payWay" column="pay_way"/>
<result property="companyId" column="company_id"/> <result property="companyId" column="company_id"/>
<result property="crtTime" column="crt_time"/> <result property="crtTime" column="crt_time"/>
</resultMap> </resultMap>
<select id="selectOrderRentVehicleReceivedStatistics" resultMap="orderRentVehicleReceivedStatisticsMap">
select * from `order_rent_vehicle_received_statistics` where 1=1
<if test="orderState!=null">
and `is_finish`=#{orderState}
</if>
<if test="orderOrigin!=null">
and `order_origin`=#{orderOrigin}
</if>
<if test="payWay!=null">
and `pay_way`=#{payWay}
</if>
<if test="startDate!=null and endDate!=null">
and `date` between #{startDate} and #{endDate}
</if>
<if test="startDate!=null and endDate==null">
and <![CDATA[
`date` >= #{startDate}
]]>
</if>
<if test="startDate==null and endDate!=null">
and <![CDATA[
`date` <= #{endDate}
]]>
</if>
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
<result property="weekOfYear" column="week_of_year"/> <result property="weekOfYear" column="week_of_year"/>
<result property="totalAmount" column="total_amount"/> <result property="totalAmount" column="total_amount"/>
<result property="totalQuantity" column="total_quantity"/> <result property="totalQuantity" column="total_quantity"/>
<result property="avgQuantity" column="avg_quantity"/>
<result property="isFinish" column="is_finish"/> <result property="isFinish" column="is_finish"/>
<result property="orderOrigin" column="order_origin"/> <result property="orderOrigin" column="order_origin"/>
<result property="payWay" column="pay_way"/> <result property="payWay" column="pay_way"/>
...@@ -20,4 +19,30 @@ ...@@ -20,4 +19,30 @@
<result property="crtTime" column="crt_time"/> <result property="crtTime" column="crt_time"/>
</resultMap> </resultMap>
<select id="selectOrderTourReceivedStatistics" resultMap="orderTourReceivedStatisticsMap">
select * from `order_tour_received_statistics` where 1=1
<if test="orderState!=null">
and `is_finish`=#{orderState}
</if>
<if test="orderOrigin!=null">
and `order_origin`=#{orderOrigin}
</if>
<if test="payWay!=null">
and `pay_way`=#{payWay}
</if>
<if test="startDate!=null and endDate!=null">
and `date` between #{startDate} and #{endDate}
</if>
<if test="startDate!=null and endDate==null">
and <![CDATA[
`date` >= #{startDate}
]]>
</if>
<if test="startDate==null and endDate!=null">
and <![CDATA[
`date` <= #{endDate}
]]>
</if>
</select>
</mapper> </mapper>
\ No newline at end of file
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