Commit 0c4aba12 authored by hanfeng's avatar hanfeng

修改订单统计

parent 4b650145
......@@ -20,6 +20,8 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls;
import java.math.BigDecimal;
import java.util.ArrayList;
......@@ -63,7 +65,16 @@ public class DailyMembersOrderStatisticsBiz extends BaseBiz<DailyMembersOrderSta
orderStatistics.setOneDay(accountList.get(0).getOneDay());
}
log.info("Members:统计完成");
if (JudgmentOfExistence(orderStatistics)) {
insertSelectiveRe(orderStatistics);
} else {
mapper.updateByExampleSelective(orderStatistics, Example.builder(DailyMembersOrderStatistics.class)
.where(WeekendSqls.<DailyMembersOrderStatistics>custom()
.andEqualTo(DailyMembersOrderStatistics::getOneDay, orderStatistics.getOneDay())
.andEqualTo(DailyMembersOrderStatistics::getBranchCompanyId, orderStatistics.getBranchCompanyId()))
.build());
}
log.info("Members:保存成功");
}
......@@ -76,6 +87,22 @@ public class DailyMembersOrderStatisticsBiz extends BaseBiz<DailyMembersOrderSta
}
}
/**
* 添加前查询是否存在这条数据
* @param orderStatistic
* @return
*/
private boolean JudgmentOfExistence(DailyMembersOrderStatistics orderStatistic) {
List<DailyMembersOrderStatistics> statistics = selectByExample(Example.builder(DailyMembersOrderStatistics.class)
.where(WeekendSqls.<DailyMembersOrderStatistics>custom()
.andEqualTo(DailyMembersOrderStatistics::getOneDay, orderStatistic.getOneDay())
.andEqualTo(DailyMembersOrderStatistics::getBranchCompanyId, orderStatistic.getBranchCompanyId()))
.build());
if (CollectionUtils.isNotEmpty(statistics)) {
return false;
}
return true;
}
/**
* 获取押金和
*
......
......@@ -25,7 +25,7 @@ public class DailyOrderStatisticsBiz extends BaseBiz<DailyOrderStatisticsMapper,
@Autowired
private DailyMembersOrderStatisticsBiz membersStatisticsBiz;
@Scheduled(cron = "0 0 2 * * ?")
@Scheduled(cron = "0 0 0/1 * * ?")
public boolean statisticalOrder(){
boolean vehicleFlag = vehicleStatisticsBiz.saveDailyVehicleOrderRecord();
boolean travelFlag = travelStatisticsBiz.saveDailyTravelOrderRecord();
......
......@@ -10,9 +10,7 @@ import com.google.common.collect.Maps;
import com.xxfc.platform.order.contant.enumerate.AccountTypeEnum;
import com.xxfc.platform.order.contant.enumerate.DeductionTypeEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.DailyTravelOrderStatistics;
import com.xxfc.platform.order.entity.OrderAccount;
import com.xxfc.platform.order.entity.OrderStatistics;
import com.xxfc.platform.order.entity.*;
import com.xxfc.platform.order.mapper.DailyTravelOrderStatisticsMapper;
import com.xxfc.platform.order.pojo.account.OrderAccountDTO;
import com.xxfc.platform.order.pojo.account.OrderAccountDeduction;
......@@ -27,6 +25,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls;
import java.math.BigDecimal;
import java.util.*;
......@@ -116,8 +115,17 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati
log.info("Travel:统计完成");
if (CollectionUtils.isNotEmpty(orderStatistics)) {
for (DailyTravelOrderStatistics orderStatistic : orderStatistics) {
//保存统计
insertSelectiveRe(orderStatistic);
if (JudgmentOfExistence(orderStatistic)) {
insertSelectiveRe(orderStatistic);
} else {
mapper.updateByExampleSelective(orderStatistic, Example.builder(DailyTravelOrderStatistics.class)
.where(WeekendSqls.<DailyTravelOrderStatistics>custom()
.andEqualTo(DailyTravelOrderStatistics::getOneDay, orderStatistic.getOneDay())
.andEqualTo(DailyTravelOrderStatistics::getBranchCompanyId, orderStatistic.getBranchCompanyId()))
.build());
}
}
}
log.info("Travel:保存成功");
......@@ -129,6 +137,22 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati
}
}
/**
* 添加前查询是否存在这条数据
* @param orderStatistic
* @return
*/
private boolean JudgmentOfExistence(DailyTravelOrderStatistics orderStatistic) {
List<DailyTravelOrderStatistics> statistics = selectByExample(Example.builder(DailyTravelOrderStatistics.class)
.where(WeekendSqls.<DailyTravelOrderStatistics>custom()
.andEqualTo(DailyTravelOrderStatistics::getOneDay, orderStatistic.getOneDay())
.andEqualTo(DailyTravelOrderStatistics::getBranchCompanyId, orderStatistic.getBranchCompanyId()))
.build());
if (CollectionUtils.isNotEmpty(statistics)) {
return false;
}
return true;
}
private List<DailyTravelOrderStatistics> getDailyTravelOrderStatistics() {
//获取当天所有订单账目
List<OrderAccountDTO> accountList = accountBiz.getOrderAccountByOrderType(OrderTypeEnum.TOUR.getCode(), day);
......@@ -210,10 +234,8 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati
add(DeductionTypeEnum.VIOLATE_CANCEL.getCode());
}});
orderStatistics.setDefaultMoney(bigDecimal);
//订单退还总额
orderStatistics.setReturnGmv(orderStatistics.getGmv().subtract(bigDecimal));
}
}
}
......
......@@ -7,6 +7,7 @@ import com.google.common.collect.Maps;
import com.xxfc.platform.order.contant.enumerate.AccountTypeEnum;
import com.xxfc.platform.order.contant.enumerate.DeductionTypeEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.DailyOrderStatistics;
import com.xxfc.platform.order.entity.DailyVehicleOrderStatistics;
import com.xxfc.platform.order.entity.OrderAccount;
import com.xxfc.platform.order.entity.OrderStatistics;
......@@ -23,6 +24,9 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import tk.mybatis.mapper.common.example.UpdateByExampleSelectiveMapper;
import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls;
import java.math.BigDecimal;
import java.util.*;
......@@ -209,14 +213,14 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
* 根据type获取对应的金额总和
*
* @param list
* @param types 金额类型
* @param types 金额类型
* @return
*/
private BigDecimal get(List<OrderAccountDeduction> list, List<Integer> types) {
return list.parallelStream()
.filter(el -> types.contains(el.getType()))
.map(OrderAccountDeduction::getAmount)
.reduce(BigDecimal.ZERO,BigDecimal::add);
.reduce(BigDecimal.ZERO, BigDecimal::add);
}
......@@ -238,11 +242,11 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
/**
* 统计订单并保存到数据库当中
*
* @return
*/
@Transactional(rollbackFor = Exception.class)
public boolean saveDailyVehicleOrderRecord() {
public boolean saveDailyVehicleOrderRecord() {
try {
//获取每日订单统计
List<DailyVehicleOrderStatistics> orderStatistics = getDailyVehicleOrderRecord();
......@@ -250,20 +254,43 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
if (CollectionUtils.isNotEmpty(orderStatistics)) {
for (DailyVehicleOrderStatistics orderStatistic : orderStatistics) {
//保存统计
insertSelectiveRe(orderStatistic);
if (JudgmentOfExistence(orderStatistic)) {
insertSelectiveRe(orderStatistic);
} else {
mapper.updateByExampleSelective(orderStatistic, Example.builder(DailyVehicleOrderStatistics.class)
.where(WeekendSqls.<DailyVehicleOrderStatistics>custom()
.andEqualTo(DailyVehicleOrderStatistics::getOneDay, orderStatistic.getOneDay())
.andEqualTo(DailyVehicleOrderStatistics::getBranchCompanyId, orderStatistic.getBranchCompanyId()))
.build());
}
}
}
log.info("Vehicle:保存成功");
return true;
} catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
log.error("Vehicle:"+e.getMessage());
log.error("Vehicle:" + e.getMessage());
return false;
}
}
private boolean JudgmentOfExistence(DailyVehicleOrderStatistics orderStatistic) {
List<DailyVehicleOrderStatistics> statistics = selectByExample(Example.builder(DailyVehicleOrderStatistics.class)
.where(WeekendSqls.<DailyVehicleOrderStatistics>custom()
.andEqualTo(DailyVehicleOrderStatistics::getOneDay, orderStatistic.getOneDay())
.andEqualTo(DailyVehicleOrderStatistics::getBranchCompanyId, orderStatistic.getBranchCompanyId()))
.build());
if (CollectionUtils.isNotEmpty(statistics)) {
return false;
}
return true;
}
/**
* 获取所有分公司每日统计记录
*
* @return
*/
private List<DailyVehicleOrderStatistics> getDailyVehicleOrderRecord() {
......@@ -321,6 +348,7 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
/**
* 获取该分公司的统计数据
*
* @param map
* @return
*/
......@@ -357,22 +385,22 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
orderStatistics.setRefundSecurityDeposit(refundSecurityDeposit);
List<OrderAccountDeduction> OrderAccountDeductions = gettDeductions(orderAccountDetail);
//获取违章总额
orderStatistics.setViolationMoney(get(OrderAccountDeductions, new ArrayList<Integer>(){{
orderStatistics.setViolationMoney(get(OrderAccountDeductions, new ArrayList<Integer>() {{
add(DeductionTypeEnum.VIOLATE_TRAFFIC_DEDUCT.getCode());
}}));
//获取损坏赔偿总额
orderStatistics.setCompensation(get(OrderAccountDeductions,new ArrayList<Integer>(){{
orderStatistics.setCompensation(get(OrderAccountDeductions, new ArrayList<Integer>() {{
add(DeductionTypeEnum.DAMAGES.getCode());
}} ));
}}));
//获取违约总额
ArrayList<Integer> types = Lists.newArrayList();
types.add(DeductionTypeEnum.VIOLATE_ADVANCE.getCode());
types.add(DeductionTypeEnum.VIOLATE_CANCEL.getCode());
types.add(DeductionTypeEnum.VIOLATE_DELAY.getCode());
orderStatistics.setDefaultMoney(get(OrderAccountDeductions,types));
orderStatistics.setDefaultMoney(get(OrderAccountDeductions, types));
//消费金额
orderStatistics.setTotalExpenditure(get(OrderAccountDeductions,new ArrayList<Integer>(){{
orderStatistics.setTotalExpenditure(get(OrderAccountDeductions, new ArrayList<Integer>() {{
add(DeductionTypeEnum.CONSUME.getCode());
}}));
}
......@@ -437,7 +465,7 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
*/
private List<OrderAccountDeduction> gettDeductions(ArrayList<OrderAccountDetail> orderAccountDetails) {
ArrayList<OrderAccountDeduction> arrayList = Lists.newArrayList();
orderAccountDetails.parallelStream().map(OrderAccountDetail::getDeductions).forEach(e->arrayList.addAll(e));
orderAccountDetails.parallelStream().map(OrderAccountDetail::getDeductions).forEach(e -> arrayList.addAll(e));
return arrayList;
}
......
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