Commit f57f80e9 authored by libin's avatar libin

Merge branch 'order_received_statistics' into dev

parents 4e20920b 6de1d0ef
......@@ -31,6 +31,7 @@ public class CompanyPerformanceBo {
private BigDecimal travelAmount;
private BigDecimal noDeductibleAmount;
private BigDecimal depositAmount;
private BigDecimal depositRefundAmount;
private Integer rentDays;
private BigDecimal extralAmount;
private Integer departureNum;
......@@ -38,6 +39,9 @@ public class CompanyPerformanceBo {
private String startDate;
private String endDate;
private String dateStr;
private BigDecimal lossSpecifiedAmount;
private BigDecimal lateFeeAmount;
public BigDecimal getMemberAmount() {
return memberAmount==null?BigDecimal.ZERO:memberAmount;
......
......@@ -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.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.order.biz.CompanyPerformanceBiz;
import com.xxfc.platform.order.pojo.dto.CompanyPerformanceFindDTO;
import com.xxfc.platform.order.bo.CompanyPerformanceBo;
import com.xxfc.platform.order.pojo.dto.CompanyPerformanceFindDTO;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import com.github.wxiaoqi.security.common.exception.BaseException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
......@@ -19,6 +20,7 @@ import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
/**
* @author libin
......@@ -36,6 +38,13 @@ public class CompanyOrderReceivedStatiscsAdminController {
@PostMapping("/company_performance")
public ObjectRestResponse<PageDataVO<CompanyPerformanceBo>> companyPerformance(@RequestBody CompanyPerformanceFindDTO companyPerformanceFindDTO){
if(companyPerformanceFindDTO.getStartDate() == null && companyPerformanceFindDTO.getEndDate()==null){
Date date = new Date();
Date startDate = DateUtil.beginOfMonth(date).toJdkDate();
Date endDate = DateUtil.endOfMonth(date).toJdkDate();
companyPerformanceFindDTO.setStartDate(startDate);
companyPerformanceFindDTO.setEndDate(endDate);
}
PageDataVO<CompanyPerformanceBo> dataVO = companyPerformanceBiz.selectCompanyPerformancePage(companyPerformanceFindDTO);
return ObjectRestResponse.succ(dataVO);
}
......
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;
......@@ -23,6 +24,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;
......@@ -44,6 +46,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);
}
......
......@@ -135,7 +135,10 @@
SUM(`travel_amount`-`travel_refund_amount` ) AS `travelAmount`,
SUM(`rent_vehicle_amount`-`rent_vehicle_refund_amount`) AS `rentVehilceAmount`,
SUM(`no_deductible_amount` - `no_deductible_refund_amount`) as `noDeductibleAmount`,
SUM(`deposit_amount` - `deposit_refund_amount`) as `depositAmount`
SUM(`deposit_amount` - `deposit_refund_amount`) as `depositAmount`,
SUM(`deposit_refund_amount`) as `depositRefundAmount`,
SUM(`loss_specified_amount`) as `lossSpecifiedAmount`,
SUM(`late_fee_amount`) as `lateFeeAmount`
FROM
`order_received_statistics` WHERE `has_pay`=1
<if test="companyName!=null and companyName!=''">
......@@ -163,6 +166,7 @@
`company_id` ,
`year`,
`date`
order by `date` desc
<if test="page!=null and limit!=null">
limit #{startIndex},#{endInex}
</if>
......@@ -220,7 +224,10 @@
SUM(`travel_amount`-`travel_refund_amount` ) AS `travelAmount`,
SUM(`rent_vehicle_amount`-`rent_vehicle_refund_amount`) AS `rentVehilceAmount`,
SUM(`no_deductible_amount` - `no_deductible_refund_amount`) as `noDeductibleAmount`,
SUM(`deposit_amount` - `deposit_refund_amount`) as `depositAmount`
SUM(`deposit_amount` - `deposit_refund_amount`) as `depositAmount`,
SUM(`deposit_refund_amount`) as `depositRefundAmount`,
SUM(`loss_specified_amount`) as `lossSpecifiedAmount`,
SUM(`late_fee_amount`) as `lateFeeAmount`
FROM
`order_received_statistics` WHERE `has_pay`=1
<if test="companyName!=null and companyName!=''">
......@@ -248,6 +255,7 @@
company_id,
`year`,
`month`
order by `month` desc
<if test="page!=null and limit!=null">
limit #{startIndex},#{endInex}
</if>
......@@ -304,7 +312,10 @@
SUM(`travel_amount`-`travel_refund_amount` ) AS `travelAmount`,
SUM(`rent_vehicle_amount`-`rent_vehicle_refund_amount`) AS `rentVehilceAmount`,
SUM(`no_deductible_amount` - `no_deductible_refund_amount`) as `noDeductibleAmount`,
SUM(`deposit_amount` - `deposit_refund_amount`) as `depositAmount`
SUM(`deposit_amount` - `deposit_refund_amount`) as `depositAmount`,
SUM(`deposit_refund_amount`) as `depositRefundAmount`,
SUM(`loss_specified_amount`) as `lossSpecifiedAmount`,
SUM(`late_fee_amount`) as `lateFeeAmount`
FROM
`order_received_statistics` WHERE `has_pay`=1
<if test="companyName!=null and companyName!=''">
......@@ -332,6 +343,7 @@
company_id,
`year`,
`week_of_year`
order by `week_of_year` desc
<if test="page!=null and limit!=null">
limit #{startIndex},#{endInex}
</if>
......
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