Commit 942b22a5 authored by libin's avatar libin

会员与租车订单统计

parent 42f7a384
package com.xxfc.platform.order.contant.enumerate; package com.xxfc.platform.order.contant.enumerate;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import com.xxfc.platform.order.entity.OrderReceivedStatisticsBase;
import org.assertj.core.util.Lists; import org.assertj.core.util.Lists;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
...@@ -13,6 +17,10 @@ import java.util.List; ...@@ -13,6 +17,10 @@ import java.util.List;
*/ */
public enum StatisticsStatusEnum { public enum StatisticsStatusEnum {
; ;
public static final int FINISH = 6;
public static final int CANCEL = 2;
public static final int UNFINISH = 3;
public static List<String> orderStates; public static List<String> orderStates;
public static List<String> orderOrigins; public static List<String> orderOrigins;
public static List<String> orderPayWays; public static List<String> orderPayWays;
...@@ -45,4 +53,22 @@ public enum StatisticsStatusEnum { ...@@ -45,4 +53,22 @@ public enum StatisticsStatusEnum {
sateGroup.retainAll(statisticsStates); sateGroup.retainAll(statisticsStates);
return sateGroup; return sateGroup;
} }
public static<T extends OrderReceivedStatisticsBase> T wrapStatisticsObject(Date date,String stateGroup,T targetObj){
DateTime yesterday = DateTime.of(date);
String year = String.valueOf(yesterday.getField(DateField.YEAR));
String month = String.format("%s%d", year, yesterday.getField(DateField.MONTH));
String weekOfYear = String.format("%s%d", year, yesterday.getField(DateField.WEEK_OF_YEAR));
String[] status = stateGroup.split("-");
targetObj.setCrtTime(new Date());
targetObj.setCompanyId(Integer.valueOf(status[0]));
targetObj.setIsFinish(Integer.valueOf(status[3]));
targetObj.setOrderOrigin(Integer.valueOf(status[1]));
targetObj.setPayWay(Integer.valueOf(status[2]));
targetObj.setDate(date);
targetObj.setYear(year);
targetObj.setMonth(month);
targetObj.setWeekOfYear(weekOfYear);
return targetObj;
}
} }
...@@ -64,12 +64,4 @@ public class OrderMemberReceivedStatistics extends OrderReceivedStatisticsBase i ...@@ -64,12 +64,4 @@ public class OrderMemberReceivedStatistics extends OrderReceivedStatisticsBase i
@ApiModelProperty(value = "钻石会员订单总量") @ApiModelProperty(value = "钻石会员订单总量")
private Integer totalDiamondQuantity; private Integer totalDiamondQuantity;
/**
* 创建时间
*/
@Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true)
private Date crtTime;
} }
...@@ -19,35 +19,14 @@ import lombok.Data; ...@@ -19,35 +19,14 @@ import lombok.Data;
@Table(name = "order_received_statistics") @Table(name = "order_received_statistics")
public class OrderReceivedStatistics extends OrderReceivedStatisticsBase implements Serializable { public class OrderReceivedStatistics extends OrderReceivedStatisticsBase implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/**
*
*/
@Id
@GeneratedValue(generator = "JDBC")
@ApiModelProperty("")
private Long id;
/**
* 订单总额
*/
@Column(name = "total_amount")
@ApiModelProperty(value = "订单总额")
private BigDecimal totalAmount;
/** /**
* 订单总量 * 订单总量
*/ */
@Column(name = "total_quantity") @Column(name = "total_quantity")
@ApiModelProperty(value = "订单总量") @ApiModelProperty(value = "订单总量")
private Integer totalQuantity; private Integer totalQuantity;
/**
* 订单平均量
*/
@Column(name = "avg_quantity")
@ApiModelProperty(value = "订单平均量")
private Integer avgQuantity;
/** /**
* 实际收入 * 实际收入
...@@ -55,34 +34,5 @@ public class OrderReceivedStatistics extends OrderReceivedStatisticsBase impleme ...@@ -55,34 +34,5 @@ public class OrderReceivedStatistics extends OrderReceivedStatisticsBase impleme
@Column(name = "real_amount") @Column(name = "real_amount")
@ApiModelProperty(value = "实际收入") @ApiModelProperty(value = "实际收入")
private BigDecimal realAmount; private BigDecimal realAmount;
/**
* 是否完成 1 完成 0 未完成
*/
@Column(name = "is_finish")
@ApiModelProperty(value = "是否完成 1 完成 0 未完成")
private Integer isFinish;
/**
* '支付来源 1--app;2--小程序',
*/
@Column(name = "order_origin")
@ApiModelProperty(value = " '支付来源 1--app;2--小程序',")
private Integer orderOrigin;
/**
* 支付方式 '1:微信公众号支付 2.支付宝即时到账,3,银联'
*/
@Column(name = "pay_way")
@ApiModelProperty(value = "支付方式 '1:微信公众号支付 2.支付宝即时到账,3,银联'")
private Integer payWay;
/**
* 创建时间
*/
@Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true )
private Date crtTime;
} }
...@@ -88,4 +88,11 @@ public class OrderReceivedStatisticsBase { ...@@ -88,4 +88,11 @@ public class OrderReceivedStatisticsBase {
@Transient @Transient
protected Integer divisor; protected Integer divisor;
/**
* 创建时间
*/
@Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true)
private Date crtTime;
} }
...@@ -35,14 +35,4 @@ public class OrderRentVehicleReceivedStatistics extends OrderReceivedStatisticsB ...@@ -35,14 +35,4 @@ public class OrderRentVehicleReceivedStatistics extends OrderReceivedStatisticsB
@ApiModelProperty(value = "实际收入") @ApiModelProperty(value = "实际收入")
private BigDecimal realAmount; private BigDecimal realAmount;
/**
* 创建时间
*/
@Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true)
private Date crtTime;
} }
...@@ -28,19 +28,5 @@ public class OrderTourReceivedStatistics extends OrderReceivedStatisticsBase imp ...@@ -28,19 +28,5 @@ public class OrderTourReceivedStatistics extends OrderReceivedStatisticsBase imp
@ApiModelProperty(value = "订单总量") @ApiModelProperty(value = "订单总量")
private Integer totalQuantity; private Integer totalQuantity;
/**
* 公司id
*/
@Column(name = "company_id")
@ApiModelProperty(value = "公司id")
private Integer companyId;
/**
* 创建时间
*/
@Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true)
private Date crtTime;
} }
package com.xxfc.platform.order.biz; package com.xxfc.platform.order.biz;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.TimeInterval; import cn.hutool.core.date.TimeInterval;
...@@ -34,16 +33,11 @@ import java.util.stream.Collectors; ...@@ -34,16 +33,11 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor(onConstructor = @__(@Autowired)) @RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceivedStatisticsMapper, OrderMemberReceivedStatistics> { public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceivedStatisticsMapper, OrderMemberReceivedStatistics> {
private final BaseOrderBiz baseOrderBiz; private final BaseOrderBiz baseOrderBiz;
private final int FINISH = 6;
private final int CANCEL = 2;
private final int UNFINISH = 3;
public List<OrderMemberReceivedStatistics> selectOrderReceivedStatistics(OrderReceivedStatisticsFindDTO orderReceivedStatisticsFindDTO) { public List<OrderMemberReceivedStatistics> selectOrderReceivedStatistics(OrderReceivedStatisticsFindDTO orderReceivedStatisticsFindDTO) {
return mapper.selectOrderMemberReceivedStatistics(orderReceivedStatisticsFindDTO); return mapper.selectOrderMemberReceivedStatistics(orderReceivedStatisticsFindDTO);
} }
public void orderMemberReceivedStatistics(Date date) { public void orderMemberReceivedStatistics(Date date) {
List<OrderMemberReceivedStatistics> orderMemberReceivedStatisticsList = new ArrayList<>(18); List<OrderMemberReceivedStatistics> orderMemberReceivedStatisticsList = new ArrayList<>(18);
DateTime yesterday = DateUtil.yesterday(); DateTime yesterday = DateUtil.yesterday();
...@@ -54,9 +48,10 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive ...@@ -54,9 +48,10 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
TimeInterval timer = DateUtil.timer(); TimeInterval timer = DateUtil.timer();
//数据处理 把 完成状态6 取消状态2 的其他数据转换成状态为未完成3 //数据处理 把 完成状态6 取消状态2 的其他数据转换成状态为未完成3
Map<String, Map<Integer, List<OrderDTO>>> ordersMap = orders.stream().peek(x -> { Map<String, Map<Integer, List<OrderDTO>>> ordersMap = orders.stream().peek(x -> {
Integer status = x.getStatus()==CANCEL?CANCEL:x.getStatus()==FINISH?FINISH:UNFINISH; Integer status = x.getStatus() == StatisticsStatusEnum.CANCEL ? StatisticsStatusEnum.CANCEL : x.getStatus() == StatisticsStatusEnum.FINISH ? StatisticsStatusEnum.FINISH : StatisticsStatusEnum.UNFINISH;
x.setStatus(status); x.setStatus(status);
x.setStateGroup(String.format("%d-%d-%d-%d", 1, x.getOrderOrigin(), x.getPayWay(), x.getStatus()));}) x.setStateGroup(String.format("%d-%d-%d-%d", 1, x.getOrderOrigin(), x.getPayWay(), x.getStatus()));
})
.collect(Collectors.groupingBy(OrderDTO::getStateGroup, Collectors.groupingBy(OrderDTO::getMemberLevel, Collectors.toList()))); .collect(Collectors.groupingBy(OrderDTO::getStateGroup, Collectors.groupingBy(OrderDTO::getMemberLevel, Collectors.toList())));
Set<Map.Entry<String, Map<Integer, List<OrderDTO>>>> orderSet = ordersMap.entrySet(); Set<Map.Entry<String, Map<Integer, List<OrderDTO>>>> orderSet = ordersMap.entrySet();
...@@ -64,7 +59,7 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive ...@@ -64,7 +59,7 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
//获取状态 //获取状态
String orderStatisticsGroup = orderEntry.getKey(); String orderStatisticsGroup = orderEntry.getKey();
Map<Integer, List<OrderDTO>> orderEntryValue = orderEntry.getValue(); Map<Integer, List<OrderDTO>> orderEntryValue = orderEntry.getValue();
OrderMemberReceivedStatistics orderMemberReceivedStatistics = createOrderMemberReceivedStatiscs(startDate,orderStatisticsGroup); OrderMemberReceivedStatistics orderMemberReceivedStatistics = StatisticsStatusEnum.wrapStatisticsObject(startDate, orderStatisticsGroup, new OrderMemberReceivedStatistics());
//1.普通会员 //1.普通会员
List<OrderDTO> generalOrders = orderEntryValue.get(LevelEnum.GENERAL.getLevel()); List<OrderDTO> generalOrders = orderEntryValue.get(LevelEnum.GENERAL.getLevel());
generalOrders = CollectionUtils.isEmpty(generalOrders) ? Collections.EMPTY_LIST : generalOrders; generalOrders = CollectionUtils.isEmpty(generalOrders) ? Collections.EMPTY_LIST : generalOrders;
...@@ -91,27 +86,29 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive ...@@ -91,27 +86,29 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
orderMemberReceivedStatisticsList.add(orderMemberReceivedStatistics); orderMemberReceivedStatisticsList.add(orderMemberReceivedStatistics);
} }
//创建剩余状态数据
List<OrderMemberReceivedStatistics> otherStatisticsStateGroupList = createOtherStatisticsStateGroupList(startDate, Lists.newArrayList(ordersMap.keySet()), 1); List<OrderMemberReceivedStatistics> otherStatisticsStateGroupList = createOtherStatisticsStateGroupList(startDate, Lists.newArrayList(ordersMap.keySet()), 1);
orderMemberReceivedStatisticsList.addAll(otherStatisticsStateGroupList); orderMemberReceivedStatisticsList.addAll(otherStatisticsStateGroupList);
//保存
insertMemberReceivedStatisticsBatch(orderMemberReceivedStatisticsList); insertMemberReceivedStatisticsBatch(orderMemberReceivedStatisticsList);
long interval = timer.interval(); long interval = timer.interval();
System.out.println("花费时间:" + interval); System.out.println("花费时间:" + interval);
} }
/** /**
* 创建剩余状态数据 * 创建剩余状态数据
*
* @param startDate * @param startDate
* @param statisticsStateGroups * @param statisticsStateGroups
* @param companyId * @param companyId
* @return * @return
*/ */
private List<OrderMemberReceivedStatistics> createOtherStatisticsStateGroupList(Date startDate,List<String> statisticsStateGroups,Integer companyId) { private List<OrderMemberReceivedStatistics> createOtherStatisticsStateGroupList(Date startDate, List<String> statisticsStateGroups, Integer companyId) {
List<OrderMemberReceivedStatistics> orderMemberReceivedStatisticsList = new ArrayList<>(); List<OrderMemberReceivedStatistics> orderMemberReceivedStatisticsList = new ArrayList<>();
OrderMemberReceivedStatistics orderMemberReceivedStatistics; OrderMemberReceivedStatistics orderMemberReceivedStatistics;
List<String> otherStatisticsStateGroup = StatisticsStatusEnum.getOtherStatisticsStateGroup(Arrays.asList(companyId),statisticsStateGroups); List<String> otherStatisticsStateGroup = StatisticsStatusEnum.getOtherStatisticsStateGroup(Arrays.asList(companyId), statisticsStateGroups);
for (String stateGroup : otherStatisticsStateGroup) { for (String stateGroup : otherStatisticsStateGroup) {
orderMemberReceivedStatistics = createOrderMemberReceivedStatiscs(startDate,stateGroup); orderMemberReceivedStatistics = StatisticsStatusEnum.wrapStatisticsObject(startDate, stateGroup, new OrderMemberReceivedStatistics());
orderMemberReceivedStatistics.setTotalAmount(BigDecimal.ZERO); orderMemberReceivedStatistics.setTotalAmount(BigDecimal.ZERO);
orderMemberReceivedStatistics.setTotalCommonQuantity(0); orderMemberReceivedStatistics.setTotalCommonQuantity(0);
orderMemberReceivedStatistics.setToalCommonAmmount(BigDecimal.ZERO); orderMemberReceivedStatistics.setToalCommonAmmount(BigDecimal.ZERO);
...@@ -124,31 +121,6 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive ...@@ -124,31 +121,6 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
return orderMemberReceivedStatisticsList; return orderMemberReceivedStatisticsList;
} }
/**
* 创建会员订单统计对象
* @param date
* @param stateGroup
* @return
*/
private OrderMemberReceivedStatistics createOrderMemberReceivedStatiscs(Date date, String stateGroup) {
OrderMemberReceivedStatistics orderMemberReceivedStatistics = new OrderMemberReceivedStatistics();
DateTime yesterday = DateTime.of(date);
String year = String.valueOf(yesterday.getField(DateField.YEAR));
String month = String.format("%s%d", year, yesterday.getField(DateField.MONTH));
String weekOfYear = String.format("%s%d", year, yesterday.getField(DateField.WEEK_OF_YEAR));
String[] status = stateGroup.split("-");
orderMemberReceivedStatistics.setCrtTime(new Date());
orderMemberReceivedStatistics.setCompanyId(Integer.valueOf(status[0]));
orderMemberReceivedStatistics.setIsFinish(Integer.valueOf(status[3]));
orderMemberReceivedStatistics.setOrderOrigin(Integer.valueOf(status[1]));
orderMemberReceivedStatistics.setPayWay(Integer.valueOf(status[2]));
orderMemberReceivedStatistics.setDate(date);
orderMemberReceivedStatistics.setYear(year);
orderMemberReceivedStatistics.setMonth(month);
orderMemberReceivedStatistics.setWeekOfYear(weekOfYear);
return orderMemberReceivedStatistics;
}
public void insertMemberReceivedStatisticsBatch(List<OrderMemberReceivedStatistics> orderMemberReceivedStatistics) { public void insertMemberReceivedStatisticsBatch(List<OrderMemberReceivedStatistics> orderMemberReceivedStatistics) {
mapper.insertList(orderMemberReceivedStatistics); mapper.insertList(orderMemberReceivedStatistics);
} }
......
...@@ -354,7 +354,7 @@ ...@@ -354,7 +354,7 @@
</select> </select>
<select id="selectOrdersByTypeAndTime" resultType="com.xxfc.platform.order.pojo.dto.OrderDTO"> <select id="selectOrdersByTypeAndTime" resultType="com.xxfc.platform.order.pojo.dto.OrderDTO">
select bo.*,omd.memberLevel from (select `id`,`type`,`status`,`order_amount` AS `orderAmount`, `real_amount`AS select bo.*,omd.memberLevel,IFNULL(orvd.start_company_id,otd.start_company_id) AS `companyId` from (select `id`,`type`,`status`,`order_amount` AS `orderAmount`, `real_amount`AS
`realAmount`,`order_origin` AS `orderOrigin`, `realAmount`,`order_origin` AS `orderOrigin`,
`pay_way` AS `payWay`,`crt_time`AS `crtTime` `pay_way` AS `payWay`,`crt_time`AS `crtTime`
from `base_order` where `has_pay`=1 and `crt_time` between #{startDate} and #{endDate} and `type` IN <foreach collection="types" from `base_order` where `has_pay`=1 and `crt_time` between #{startDate} and #{endDate} and `type` IN <foreach collection="types"
......
...@@ -134,7 +134,7 @@ public interface VehicleFeign { ...@@ -134,7 +134,7 @@ public interface VehicleFeign {
public RestResponse<List<AccompanyingItemVo>> listAccompanyingItem(); public RestResponse<List<AccompanyingItemVo>> listAccompanyingItem();
@GetMapping("/branchCompany/findByAreaId") @GetMapping("/branchCompany/findByAreaId")
List<Integer> findCompanyIdsByAreaId(@RequestParam(value = "areaId") Integer areaId); List<Integer> findCompanyIdsByAreaId(@RequestParam(value = "areaId",required = false) Integer areaId);
@GetMapping("/branchCompany/company") @GetMapping("/branchCompany/company")
Map<Integer, BranComanyLeaderVo> findCompanyLeaderMapByIds(@RequestParam(value = "companyIds") List<Integer> companyIds); Map<Integer, BranComanyLeaderVo> findCompanyLeaderMapByIds(@RequestParam(value = "companyIds") List<Integer> companyIds);
......
...@@ -201,7 +201,7 @@ public class BranchCompanyController extends BaseController<BranchCompanyBiz> { ...@@ -201,7 +201,7 @@ public class BranchCompanyController extends BaseController<BranchCompanyBiz> {
} }
@GetMapping("/findByAreaId") @GetMapping("/findByAreaId")
public List<Integer> findCompanyIdsByAreaId(@RequestParam(value = "areaId") Integer areaId){ public List<Integer> findCompanyIdsByAreaId(@RequestParam(value = "areaId",required = false) Integer areaId){
return baseBiz.selectCompanyIdsByAreaId(areaId); return baseBiz.selectCompanyIdsByAreaId(areaId);
} }
......
...@@ -62,7 +62,10 @@ ...@@ -62,7 +62,10 @@
</if> </if>
</select> </select>
<select id="findCompanyIdsByAreaId" resultType="integer"> <select id="findCompanyIdsByAreaId" resultType="integer">
select `id` from `branch_company` where `zone_id`=#{areaId} select `id` from `branch_company` where `is_del`=0
<if test="areaId!=null">
and `zone_id`=#{areaId}
</if>
</select> </select>
<select id="findBranchCompanys" resultType="com.xxfc.platform.vehicle.pojo.dto.BranchCompanyListDTO"> <select id="findBranchCompanys" resultType="com.xxfc.platform.vehicle.pojo.dto.BranchCompanyListDTO">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment