Commit 0c4aba12 authored by hanfeng's avatar hanfeng

修改订单统计

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