Commit c01a3b78 authored by hanfeng's avatar hanfeng

Merge branch 'master-order-statistics' into dev

# Conflicts:
#	xx-order/xx-order-server/src/test/java/ServiceTest.java
#	xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/feign/VehicleFeign.java
parents 856daf6f 22cbafc9
package com.xxfc.platform.order.contant.enumerate;
/**
* 查询时间段最小细分(时间段内又划分的片段)
*/
public enum TimeMinimumSubdivisionEnum {
nothing(0,"无细分"),day(1,"最小细分到天")
;
private int code;
private String msg;
public String getMsg() {
return msg;
}
TimeMinimumSubdivisionEnum(int code, String msg) {
this.code=code;
this.msg=msg;
}
public Integer getCode() {
return code;
}
}
...@@ -40,7 +40,7 @@ public class DailyOrderStatistics implements Serializable { ...@@ -40,7 +40,7 @@ public class DailyOrderStatistics implements Serializable {
* 成交总金额 * 成交总金额
*/ */
@Column(name = "gmv") @Column(name = "gmv")
private BigDecimal gmv; private BigDecimal gmv=BigDecimal.ZERO;
/** /**
......
...@@ -18,10 +18,10 @@ public class DailyTravelOrderStatistics extends DailyOrderStatistics { ...@@ -18,10 +18,10 @@ public class DailyTravelOrderStatistics extends DailyOrderStatistics {
* 违约总额 * 违约总额
*/ */
@Column(name = "default_money ") @Column(name = "default_money ")
private BigDecimal defaultMoney ; private BigDecimal defaultMoney=BigDecimal.ZERO;
/** /**
* 退还订单金额 * 退还订单金额
*/ */
@Column(name = "return_gmv") @Column(name = "return_gmv")
private BigDecimal returnGmv; private BigDecimal returnGmv=BigDecimal.ZERO;
} }
...@@ -29,32 +29,32 @@ public class DailyVehicleOrderStatistics extends DailyOrderStatistics { ...@@ -29,32 +29,32 @@ public class DailyVehicleOrderStatistics extends DailyOrderStatistics {
* 预交押金总额 * 预交押金总额
*/ */
@Column(name = "security_deposit") @Column(name = "security_deposit")
private BigDecimal securityDeposit; private BigDecimal securityDeposit=BigDecimal.ZERO;
/** /**
* 退还押金总额 * 退还押金总额
*/ */
@Column(name = "refund_security_deposit") @Column(name = "refund_security_deposit")
private BigDecimal refundSecurityDeposit; private BigDecimal refundSecurityDeposit=BigDecimal.ZERO;
/** /**
* 损坏赔偿总额 * 损坏赔偿总额
*/ */
@Column(name = "compensation") @Column(name = "compensation")
private BigDecimal compensation; private BigDecimal compensation=BigDecimal.ZERO;
/** /**
* 违章总额 * 违章总额
*/ */
@Column(name = "forfeit") @Column(name = "forfeit")
private BigDecimal violationMoney; private BigDecimal forfeit=BigDecimal.ZERO;
/** /**
* 退还订单金额 * 退还订单金额
*/ */
@Column(name = "return_gmv") @Column(name = "return_gmv")
private BigDecimal returnGmv; private BigDecimal returnGmv=BigDecimal.ZERO;
...@@ -70,13 +70,14 @@ public class DailyVehicleOrderStatistics extends DailyOrderStatistics { ...@@ -70,13 +70,14 @@ public class DailyVehicleOrderStatistics extends DailyOrderStatistics {
* 违约总额 * 违约总额
*/ */
@Column(name = "default_money ") @Column(name = "default_money ")
private BigDecimal defaultMoney ; private BigDecimal defaultMoney=BigDecimal.ZERO;
/** /**
* 消费金总额 * 订单补偿
*/ */
@Column(name = "total_expenditure") @Column(name = "order_compensation")
private BigDecimal totalExpenditure; private BigDecimal orderCompensation=BigDecimal.ZERO;
} }
...@@ -22,48 +22,48 @@ public class OrderStatistics { ...@@ -22,48 +22,48 @@ public class OrderStatistics {
* 历史交总金额 * 历史交总金额
*/ */
@ApiModelProperty(value = "历史交易总金额") @ApiModelProperty(value = "历史交易总金额")
private BigDecimal totalGmv; private BigDecimal totalGmv=BigDecimal.ZERO;
/** /**
* 历史押金总额 * 历史押金总额
*/ */
@ApiModelProperty(value = "历史押金总额") @ApiModelProperty(value = "历史押金总额")
private BigDecimal totalSecurityDeposit; private BigDecimal totalSecurityDeposit=BigDecimal.ZERO;
/** /**
* 历史退还押金总额 * 历史退还押金总额
*/ */
@ApiModelProperty(value = "历史退还押金总额") @ApiModelProperty(value = "历史退还押金总额")
private BigDecimal totalRefundSecurityDeposit; private BigDecimal totalRefundSecurityDeposit=BigDecimal.ZERO;
/** /**
* 历史赔偿总额 * 历史赔偿总额
*/ */
@ApiModelProperty(value = "历史赔偿总额") @ApiModelProperty(value = "历史赔偿总额")
private BigDecimal totalCompensation; private BigDecimal totalCompensation=BigDecimal.ZERO;
/** /**
* 历史违章总额 * 历史违章总额
*/ */
@ApiModelProperty(value = "历史违章总额") @ApiModelProperty(value = "历史违章总额")
private BigDecimal totalForfeit; private BigDecimal totalForfeit=BigDecimal.ZERO;
/** /**
* 历史订单退款 * 历史订单退款
*/ */
@ApiModelProperty(value = "历史订单退款") @ApiModelProperty(value = "历史订单退款")
private BigDecimal totalReturnGmv; private BigDecimal totalReturnGmv=BigDecimal.ZERO;
/** /**
* 历史延期扣款总额 * 历史延期扣款总额
*/ */
@ApiModelProperty(value = "历史延期扣款总额") @ApiModelProperty(value = "历史延期扣款总额")
private BigDecimal totalDefaultMoney; private BigDecimal totalDefaultMoney=BigDecimal.ZERO;
/** /**
* 历史实际消费总额 * 订单补偿总额
*/ */
@ApiModelProperty(value = "历史实际消费总额") @ApiModelProperty(value = "历史订单补偿总额")
private BigDecimal totalExpenditure; private BigDecimal totalOrderCompensation=BigDecimal.ZERO;
} }
...@@ -10,16 +10,16 @@ public class HomePageOrderData { ...@@ -10,16 +10,16 @@ public class HomePageOrderData {
/** /**
* 订单总额 * 订单总额
*/ */
private BigDecimal totalOrders; private BigDecimal totalOrders=BigDecimal.ZERO;
/** /**
* 未退还退还押金总额 * 未退还退还押金总额
*/ */
private BigDecimal totalOutstandingDeposit; private BigDecimal totalOutstandingDeposit=BigDecimal.ZERO;
/** /**
* 额外赔款 * 额外赔款
*/ */
private BigDecimal additionalIndemnity; private BigDecimal additionalIndemnity=BigDecimal.ZERO;
@Override @Override
......
package com.xxfc.platform.order.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Term {
/**
* 订单类型
*/
private Integer orderType;
/**
* 几天前(用于判断计算几天前的数据) subdivide=2的实际存在
*/
private Integer day;
/**
* 时间最小细分类型(最小细分到天,无细分)
*/
private int subdivide;
/**
* 开始时间
*/
private Long startTime;
/**
* 结束时间
*/
private Long endTime;
/**
* 分公司id 数组
*/
private List<Integer> companyIds;
}
...@@ -10,6 +10,7 @@ import com.xxfc.platform.order.entity.OrderAccount; ...@@ -10,6 +10,7 @@ import com.xxfc.platform.order.entity.OrderAccount;
import com.xxfc.platform.order.entity.OrderStatistics; import com.xxfc.platform.order.entity.OrderStatistics;
import com.xxfc.platform.order.mapper.DailyMembersOrderStatisticsMapper; import com.xxfc.platform.order.mapper.DailyMembersOrderStatisticsMapper;
import com.xxfc.platform.order.pojo.OrderQuery; import com.xxfc.platform.order.pojo.OrderQuery;
import com.xxfc.platform.order.pojo.Term;
import com.xxfc.platform.order.pojo.account.OrderAccountDTO; import com.xxfc.platform.order.pojo.account.OrderAccountDTO;
import com.xxfc.platform.order.pojo.account.OrderAccountDetail; import com.xxfc.platform.order.pojo.account.OrderAccountDetail;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -43,50 +44,61 @@ public class DailyMembersOrderStatisticsBiz extends BaseBiz<DailyMembersOrderSta ...@@ -43,50 +44,61 @@ public class DailyMembersOrderStatisticsBiz extends BaseBiz<DailyMembersOrderSta
/** /**
* 总公司id默认为1 * 总公司id默认为1
*/ */
private final Integer OMPANY_ID=1; private final Integer OMPANY_ID = 1;
@Autowired @Autowired
private OrderAccountBiz accountBiz; private OrderAccountBiz accountBiz;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean saveDailyMembersOrderRecord(Integer day) { public boolean dailyMembersOrderRecord(Integer day) {
try { try {
List<OrderAccountDTO> accountList = accountBiz.getOrderAccountByOrderType(OrderTypeEnum.MEMBER.getCode(), day); DailyMembersOrderStatistics orderStatistics = statistics(new Term(OrderTypeEnum.MEMBER.getCode(), day, 1, null, null, null));
log.info("Members:统计完成");
if (CollectionUtils.isNotEmpty(accountList)) { save(orderStatistics);
DailyMembersOrderStatistics orderStatistics = new DailyMembersOrderStatistics(); log.info("Members:保存成功");
ArrayList<OrderAccountDetail> orderAccountDetails = getOrderAccountDetail(accountList);
if (CollectionUtils.isNotEmpty(orderAccountDetails)) {
//获取订单总额
BigDecimal gmv = getOrderAmountTotal(orderAccountDetails);
orderStatistics.setGmv(gmv);
orderStatistics.setBranchCompanyId(OMPANY_ID);
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:保存成功");
}
return true; return true;
} catch (Exception e) { } catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
log.error("Members:"+ e.getMessage()); log.error("Members:" + e.getMessage());
return false; return false;
} }
} }
public void save(DailyMembersOrderStatistics orderStatistics) {
if (orderStatistics != null) {
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());
}
}
}
public DailyMembersOrderStatistics statistics(Term term) {
List<OrderAccountDTO> accountList = accountBiz.getOrderAccountByOrderType(term);
if (CollectionUtils.isNotEmpty(accountList)) {
DailyMembersOrderStatistics orderStatistics = new DailyMembersOrderStatistics();
ArrayList<OrderAccountDetail> orderAccountDetails = getOrderAccountDetail(accountList);
if (CollectionUtils.isNotEmpty(orderAccountDetails)) {
//获取订单总额
BigDecimal gmv = getOrderAmountTotal(orderAccountDetails);
orderStatistics.setGmv(gmv);
orderStatistics.setBranchCompanyId(OMPANY_ID);
orderStatistics.setOneDay(accountList.get(0).getOneDay());
}
return orderStatistics;
}
return null;
}
/** /**
* 添加前查询是否存在这条数据 * 添加前查询是否存在这条数据
*
* @param orderStatistic * @param orderStatistic
* @return * @return
*/ */
...@@ -101,6 +113,7 @@ public class DailyMembersOrderStatisticsBiz extends BaseBiz<DailyMembersOrderSta ...@@ -101,6 +113,7 @@ public class DailyMembersOrderStatisticsBiz extends BaseBiz<DailyMembersOrderSta
} }
return true; return true;
} }
/** /**
* 获取押金和 * 获取押金和
* *
...@@ -143,16 +156,17 @@ public class DailyMembersOrderStatisticsBiz extends BaseBiz<DailyMembersOrderSta ...@@ -143,16 +156,17 @@ public class DailyMembersOrderStatisticsBiz extends BaseBiz<DailyMembersOrderSta
return mapper.insertSelective(entity); return mapper.insertSelective(entity);
} }
public OrderStatistics findAll(Integer companyId) { public OrderStatistics findAll(List<Integer> companyIds) {
return mapper.monthOrderTotal(companyId); return mapper.monthOrderTotal(companyIds);
} }
/** /**
* 根据时间按年月日分组 * 根据时间按年月日分组
*
* @param query * @param query
* @return * @return
*/ */
public List<MembersOrder> getMemberOrderStatistics(OrderQuery query) { public List<MembersOrder> getMemberOrderStatistics(OrderQuery query) {
return mapper.getMemberOrderStatistics(query); return mapper.getMemberOrderStatistics(query);
} }
} }
...@@ -25,11 +25,10 @@ public class DailyOrderStatisticsBiz extends BaseBiz<DailyOrderStatisticsMapper, ...@@ -25,11 +25,10 @@ public class DailyOrderStatisticsBiz extends BaseBiz<DailyOrderStatisticsMapper,
@Autowired @Autowired
private DailyMembersOrderStatisticsBiz membersStatisticsBiz; private DailyMembersOrderStatisticsBiz membersStatisticsBiz;
// @Scheduled(cron = "0 0 2 * * ?")
public boolean statisticalOrder(Integer day){ public boolean statisticalOrder(Integer day){
boolean vehicleFlag = vehicleStatisticsBiz.saveDailyVehicleOrderRecord(day); boolean vehicleFlag = vehicleStatisticsBiz.dailyVehicleOrderRecord(day);
boolean travelFlag = travelStatisticsBiz.saveDailyTravelOrderRecord(day); boolean travelFlag = travelStatisticsBiz.dailyTravelOrderRecord(day);
boolean membersFlag= membersStatisticsBiz.saveDailyMembersOrderRecord(day); boolean membersFlag= membersStatisticsBiz.dailyMembersOrderRecord(day);
if (vehicleFlag&&travelFlag&&membersFlag){ if (vehicleFlag&&travelFlag&&membersFlag){
log.info("----statisticalOrder:成功-----"); log.info("----statisticalOrder:成功-----");
......
...@@ -12,6 +12,7 @@ import com.xxfc.platform.order.contant.enumerate.DeductionTypeEnum; ...@@ -12,6 +12,7 @@ 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.*; import com.xxfc.platform.order.entity.*;
import com.xxfc.platform.order.mapper.DailyTravelOrderStatisticsMapper; import com.xxfc.platform.order.mapper.DailyTravelOrderStatisticsMapper;
import com.xxfc.platform.order.pojo.Term;
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;
import com.xxfc.platform.order.pojo.account.OrderAccountDetail; import com.xxfc.platform.order.pojo.account.OrderAccountDetail;
...@@ -43,89 +44,18 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati ...@@ -43,89 +44,18 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati
@Autowired @Autowired
private OrderAccountBiz accountBiz; private OrderAccountBiz accountBiz;
// @Transactional(rollbackFor = Exception.class)
// public boolean StatisticsOfTravelOrders() {
// try {
//
// ArrayList<DailyTravelOrderStatistics> objects = new ArrayList<>();
// List<DailyTravelOrderStatistics> travelGmv = mapper.getTravelGmv(day);
// objects.addAll(travelGmv);
// List<DailyTravelOrderStatistics> travelPenalSum = mapper.getTravelPenalSum(day);
// objects.addAll(travelPenalSum);
// insertByList(objects);
//
// return true;
// } catch (Exception e) {
// e.printStackTrace();
// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
// return false;
// }
// }
//
// private void insertByList(ArrayList<DailyTravelOrderStatistics> objects) throws Exception {
//
// if (CollectionUtils.isNotEmpty(objects)) {
// HashMap<Integer, DailyTravelOrderStatistics> map = new HashMap<>();
// for (DailyTravelOrderStatistics object : objects) {
//
// DailyTravelOrderStatistics statistics = map.get(object.getBranchCompanyId());
// if (statistics == null) {
// statistics = new DailyTravelOrderStatistics();
// map.put(object.getBranchCompanyId(), statistics);
// }
//
// BeanUtil.copyProperties(object, statistics, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
//
// }
// String oneDay = map.entrySet().parallelStream().map(Map.Entry::getValue).collect(Collectors.toList()).get(0).getOneDay();
//
// if (StringUtils.isBlank(oneDay)) {
// throw new BaseException();
// }
// Example exa= new Example(DailyTravelOrderStatistics.class);
// exa.createCriteria().andEqualTo("oneDay",oneDay);
// List<DailyTravelOrderStatistics> statistics= selectByExample(exa);
// if (CollectionUtils.isEmpty(statistics)){
// for (Map.Entry<Integer, DailyTravelOrderStatistics> entry : map.entrySet()) {
// insertSelectiveRe(entry.getValue());
// }
// }else {
// log.error("今日已统计车辆订单,请不要重复统计!");
// }
//
////
//// for (Map.Entry<Integer, DailyTravelOrderStatistics> e : map.entrySet()) {
//// insertSelectiveRe(e.getValue());
//// }
// }
// }
/******************************************************************************************************************************/
/** /**
* 统计订单并保存到数据库当中 * 统计订单并保存到数据库当中
* @return * @return
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean saveDailyTravelOrderRecord(Integer day) { public boolean dailyTravelOrderRecord(Integer day) {
try { try {
//获取每日订单统计 //获取每日订单统计
List<DailyTravelOrderStatistics> orderStatistics = getDailyTravelOrderStatistics(day); List<DailyTravelOrderStatistics> orderStatistics = getDailyTravelOrderStatistics(new Term(OrderTypeEnum.TOUR.getCode(),day,1,null,null,null));
log.info("Travel:统计完成"); log.info("Travel:统计完成");
if (CollectionUtils.isNotEmpty(orderStatistics)) { seve(orderStatistics);
for (DailyTravelOrderStatistics orderStatistic : orderStatistics) {
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:保存成功"); log.info("Travel:保存成功");
return true; return true;
} catch (Exception e) { } catch (Exception e) {
...@@ -135,6 +65,23 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati ...@@ -135,6 +65,23 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati
} }
} }
public void seve(List<DailyTravelOrderStatistics> orderStatistics) {
if (CollectionUtils.isNotEmpty(orderStatistics)) {
for (DailyTravelOrderStatistics orderStatistic : orderStatistics) {
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());
}
}
}
}
/** /**
* 添加前查询是否存在这条数据 * 添加前查询是否存在这条数据
* @param orderStatistic * @param orderStatistic
...@@ -151,9 +98,9 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati ...@@ -151,9 +98,9 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati
} }
return true; return true;
} }
private List<DailyTravelOrderStatistics> getDailyTravelOrderStatistics(Integer day) { public List<DailyTravelOrderStatistics> getDailyTravelOrderStatistics(Term term) {
//获取当天所有订单账目 //获取当天所有订单账目
List<OrderAccountDTO> accountList = accountBiz.getOrderAccountByOrderType(OrderTypeEnum.TOUR.getCode(), day); List<OrderAccountDTO> accountList = accountBiz.getOrderAccountByOrderType(term);
if (CollectionUtils.isEmpty(accountList)) { if (CollectionUtils.isEmpty(accountList)) {
return null; return null;
} }
...@@ -225,19 +172,27 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati ...@@ -225,19 +172,27 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati
} }
if (CollectionUtils.isNotEmpty(arrayList)) { if (CollectionUtils.isNotEmpty(arrayList)) {
ArrayList<OrderAccountDetail> orderAccountDetail = getOrderAccountDetail(arrayList); ArrayList<OrderAccountDetail> orderAccountDetail = getOrderAccountDetail(arrayList);
if (CollectionUtils.isNotEmpty(orderAccountDetail)) { if (CollectionUtils.isNotEmpty(orderAccountDetail)) {
//订单退还总额
BigDecimal depositAmountTotal = getOrderAmountTotal(orderAccountDetail);
orderStatistics.setReturnGmv(depositAmountTotal);
List<OrderAccountDeduction> OrderAccountDeductions = gettDeductions(orderAccountDetail); List<OrderAccountDeduction> OrderAccountDeductions = gettDeductions(orderAccountDetail);
//获取违约总额 //获取违约总额
BigDecimal bigDecimal = get(OrderAccountDeductions, new ArrayList<Integer>() {{ BigDecimal bigDecimal = get(OrderAccountDeductions, new ArrayList<Integer>() {{
add(DeductionTypeEnum.VIOLATE_CANCEL.getCode()); add(DeductionTypeEnum.VIOLATE_CANCEL.getCode());
add(DeductionTypeEnum.VIOLATE_ADVANCE.getCode());
add(DeductionTypeEnum.VIOLATE_DELAY.getCode());
}}); }});
orderStatistics.setDefaultMoney(bigDecimal); orderStatistics.setDefaultMoney(bigDecimal);
//订单退还总额
orderStatistics.setReturnGmv(orderStatistics.getGmv().subtract(bigDecimal));
} }
} }
} }
private DailyTravelOrderStatistics getGmvAndSecurityDeposit(Map<Integer, List<OrderAccountDTO>> map) { private DailyTravelOrderStatistics getGmvAndSecurityDeposit(Map<Integer, List<OrderAccountDTO>> map) {
...@@ -256,6 +211,7 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati ...@@ -256,6 +211,7 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati
return orderStatistics; return orderStatistics;
} }
/** /**
* 获取金额详情 * 获取金额详情
* *
...@@ -322,7 +278,7 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati ...@@ -322,7 +278,7 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati
return mapper.insertSelective(entity); return mapper.insertSelective(entity);
} }
public OrderStatistics findAll(Integer branchCompanyId) { public OrderStatistics findAll(List<Integer> companyIds) {
return mapper.monthOrderTotal(branchCompanyId); return mapper.monthOrderTotal(companyIds);
} }
} }
...@@ -12,12 +12,14 @@ import com.xxfc.platform.order.entity.DailyVehicleOrderStatistics; ...@@ -12,12 +12,14 @@ 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;
import com.xxfc.platform.order.mapper.DailyVehicleOrderStatisticsMapper; import com.xxfc.platform.order.mapper.DailyVehicleOrderStatisticsMapper;
import com.xxfc.platform.order.pojo.Term;
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;
import com.xxfc.platform.order.pojo.account.OrderAccountDetail; import com.xxfc.platform.order.pojo.account.OrderAccountDetail;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils; import org.apache.commons.collections.MapUtils;
import org.apache.commons.collections4.Put;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
...@@ -30,6 +32,7 @@ import tk.mybatis.mapper.weekend.WeekendSqls; ...@@ -30,6 +32,7 @@ import tk.mybatis.mapper.weekend.WeekendSqls;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
/** /**
* 每日租车订单统计 * 每日租车订单统计
...@@ -52,158 +55,10 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -52,158 +55,10 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
*/ */
private final Integer TYPE_OTHER = 3; private final Integer TYPE_OTHER = 3;
@Autowired @Autowired
private OrderAccountBiz accountBiz; private OrderAccountBiz accountBiz;
// @Transactional(rollbackFor = Exception.class)
// public boolean StatisticsOfCarRentalOrders() {
//
// try {
//
// ArrayList<DailyVehicleOrderStatistics> result = new ArrayList<>();
//
//// 获取每日租车订单成交金和押金总额
// List<DailyVehicleOrderStatistics> gmvAndMarginTotal = mapper.getGmvAndMarginTotal(day);
// result.addAll(gmvAndMarginTotal);
//
//// 获取取消订单扣款总额
// List<DailyVehicleOrderStatistics> penalSum = mapper.getPenalSum(day);
// result.addAll(penalSum);
//
//// 获取订单退还押金总额
// List<DailyVehicleOrderStatistics> refundSecurityDeposit = mapper.getRefundSecurityDeposit(day);
// result.addAll(refundSecurityDeposit);
//
//// 获取违章查询总和
// List<DailyVehicleOrderStatistics> violationMoney = mapper.getViolationMoney(day);
// result.addAll(violationMoney);
//
//// 获取赔偿和延期JSON字符串
// List<Map> compensationAndPostpone = mapper.getCompensationAndPostpone(day);
//// 获取赔偿和延期JSON字符串转换为map
// List<DailyVehicleOrderStatistics> compensationAndPostpones = getCompensationAndPostpones(compensationAndPostpone);
// result.addAll(compensationAndPostpones);
//
// InsertByList(result);
// return true;
// } catch (Exception e) {
// e.printStackTrace();
// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
// return false;
// }
//
// }
//
// private void InsertByList(ArrayList<DailyVehicleOrderStatistics> result) throws Exception {
// if (CollectionUtils.isNotEmpty(result)) {
//
// Map<Integer, DailyVehicleOrderStatistics> map = new HashMap<>();
//
// for (DailyVehicleOrderStatistics value : result) {
// Integer branchCompanyId = value.getBranchCompanyId();
// DailyVehicleOrderStatistics statistics = map.get(branchCompanyId);
//
// if (statistics == null) {
// statistics = new DailyVehicleOrderStatistics();
// map.put(branchCompanyId, statistics);
// }
// BeanUtil.copyProperties(
// value,
// statistics,
// CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
// }
//
// String oneDay = map.entrySet().parallelStream().map(Map.Entry::getValue).collect(Collectors.toList()).get(0).getOneDay();
// if (StringUtils.isBlank(oneDay)) {
// throw new BaseException();
// }
// Example exa = new Example(DailyVehicleOrderStatistics.class);
// exa.createCriteria().andEqualTo("oneDay", oneDay);
// List<DailyVehicleOrderStatistics> statistics = selectByExample(exa);
//
// if (CollectionUtils.isEmpty(statistics)) {
// for (Map.Entry<Integer, DailyVehicleOrderStatistics> entry : map.entrySet()) {
// insertSelectiveRe(entry.getValue());
// }
// } else {
// log.error("今日已统计车辆订单,请不要重复统计!");
// }
// }
//
// }
//
//
// /**
// * 获取赔偿总额和延期总额
// */
// private List<DailyVehicleOrderStatistics> getCompensationAndPostpones(List<Map> list) {
//
// if (CollectionUtils.isNotEmpty(list)) {
// //获取分公全部赔偿和延期DedDetailDTO
// HashMap<Integer, List<DedDetailDTO>> map = new HashMap<>();
//
// for (Map value : list) {
// if (value != null) {
//
// //获取分公司id
// Integer branchCompanyId = (Integer) value.get("branchCompanyId");
// List<DedDetailDTO> strings = map.get(branchCompanyId);
// if (strings == null) {
// strings = new ArrayList<DedDetailDTO>();
// map.put(branchCompanyId, strings);
// }
//
// String str = (String) value.get("dedDetail");
//
// if (StringUtils.isNotBlank(str)) {
// List<DedDetailDTO> dedDetailDTOS = JSON.parseArray(str, DedDetailDTO.class);
// if (CollectionUtils.isNotEmpty(dedDetailDTOS)) {
// strings.addAll(dedDetailDTOS);
// }
// }
// }
//
// }
//
//
// List<DailyVehicleOrderStatistics> result = new ArrayList<>();
//
// if (!map.isEmpty()) {
//
// //获取分工对象集合
// for (Map.Entry<Integer, List<DedDetailDTO>> entry : map.entrySet()) {
// DailyVehicleOrderStatistics statistics = new DailyVehicleOrderStatistics();
// //公司id添加到对象当中
// statistics.setBranchCompanyId(entry.getKey());
//
// //获取公司的JSON字符串
// List<DedDetailDTO> sumDedDetailDTOs = entry.getValue();
//
//// 获取赔偿金额总和
// BigDecimal compensation = get(sumDedDetailDTOs, TYPE_DAMAGE);
// statistics.setCompensation(compensation);
//// 获取延期金额总和
// BigDecimal postpone = get(sumDedDetailDTOs, TYPE_DEFERRED);
// statistics.setPostpone(postpone);
////// 其他款项总金额
//// BigDecimal other = get(sumDedDetailDTOs, TYPE_OTHER);
//
// result.add(statistics);
// }
//
// }
//
//
// return result;
// }
// return new ArrayList<>();
// }
/****************************************************************************************************************************/
/** /**
* 根据type获取对应的金额总和 * 根据type获取对应的金额总和
* *
...@@ -231,8 +86,8 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -231,8 +86,8 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
} }
public OrderStatistics findAll(Integer companyId) { public OrderStatistics findAll(List<Integer> companyIds) {
return mapper.monthOrderTotal(companyId); return mapper.monthOrderTotal(companyIds);
} }
/** /**
...@@ -241,27 +96,12 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -241,27 +96,12 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
* @return * @return
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean saveDailyVehicleOrderRecord(Integer day) { public boolean dailyVehicleOrderRecord(Integer day) {
try { try {
//获取每日订单统计 //获取每日订单统计
List<DailyVehicleOrderStatistics> orderStatistics = getDailyVehicleOrderRecord(day); List<DailyVehicleOrderStatistics> orderStatistics = getDailyVehicleOrderRecord(new Term(OrderTypeEnum.RENT_VEHICLE.getCode(),day,1,null,null,null));
log.info("Vehicle:统计完成"); log.info("Vehicle:统计完成");
if (CollectionUtils.isNotEmpty(orderStatistics)) { save(orderStatistics);
for (DailyVehicleOrderStatistics orderStatistic : orderStatistics) {
//保存统计
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) {
...@@ -271,6 +111,24 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -271,6 +111,24 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
} }
} }
public void save(List<DailyVehicleOrderStatistics> orderStatistics) {
if (CollectionUtils.isNotEmpty(orderStatistics)) {
for (DailyVehicleOrderStatistics orderStatistic : orderStatistics) {
//保存统计
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());
}
}
}
}
private boolean JudgmentOfExistence(DailyVehicleOrderStatistics orderStatistic) { private boolean JudgmentOfExistence(DailyVehicleOrderStatistics orderStatistic) {
List<DailyVehicleOrderStatistics> statistics = selectByExample(Example.builder(DailyVehicleOrderStatistics.class) List<DailyVehicleOrderStatistics> statistics = selectByExample(Example.builder(DailyVehicleOrderStatistics.class)
.where(WeekendSqls.<DailyVehicleOrderStatistics>custom() .where(WeekendSqls.<DailyVehicleOrderStatistics>custom()
...@@ -287,11 +145,11 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -287,11 +145,11 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
* 获取所有分公司每日统计记录 * 获取所有分公司每日统计记录
* *
* @return * @return
* @param day * @param term 查询条件
*/ */
private List<DailyVehicleOrderStatistics> getDailyVehicleOrderRecord(Integer day) { public List<DailyVehicleOrderStatistics> getDailyVehicleOrderRecord(Term term) {
//获取当天所有订单账目 //获取当天所有订单账目
List<OrderAccountDTO> accountList = accountBiz.getOrderAccountByOrderType(OrderTypeEnum.RENT_VEHICLE.getCode(), day); List<OrderAccountDTO> accountList = accountBiz.getOrderAccountByOrderType(term);
if (CollectionUtils.isEmpty(accountList)) { if (CollectionUtils.isEmpty(accountList)) {
return null; return null;
} }
...@@ -351,9 +209,52 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -351,9 +209,52 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
private DailyVehicleOrderStatistics getStatisticsByOrderAccountDetail(Map<Integer, List<OrderAccountDTO>> map) { private DailyVehicleOrderStatistics getStatisticsByOrderAccountDetail(Map<Integer, List<OrderAccountDTO>> map) {
//获取收入金额 //获取收入金额
DailyVehicleOrderStatistics orderStatistics = getGmvAndSecurityDeposit(map); DailyVehicleOrderStatistics orderStatistics = getGmvAndSecurityDeposit(map);
//设置补偿总额
orderStatistics.setOrderCompensation(getOrderCompensation(map));
//获取扣款和退还金额 //获取扣款和退还金额
refundAndDeductions(map, orderStatistics); refundAndDeductions(map, orderStatistics);
return orderStatistics; return orderStatistics;
}
/**
*
* 获取订单补偿金额(该状态发生在退还部分款时,补偿订单款=单实际产生订单款+退还-支付订单款)
* @param map
* @return
*/
private BigDecimal getOrderCompensation(Map<Integer, List<OrderAccountDTO>> map) {
//获取当天部分押金退款(203)数据
List<OrderAccountDTO> orderAccountDTOS = map.get((AccountTypeEnum.OUT_PART_DEPOSIT.getCode()));
if (CollectionUtils.isEmpty(orderAccountDTOS)) {
return BigDecimal.ZERO;
}
ArrayList<OrderAccountDetail> orderAccountDetail = getOrderAccountDetail(orderAccountDTOS);
//获取订单支付总额
BigDecimal payment = orderAccountDetail
.parallelStream()
.map(OrderAccountDetail::getOriginOrderAmount)
.reduce(BigDecimal.ZERO, BigDecimal::add);
//获取订单退还总额
BigDecimal giveBack = orderAccountDetail
.parallelStream()
.map(OrderAccountDetail::getOrderAmount)
.reduce(BigDecimal.ZERO, BigDecimal::add);
//获取明细集合
ArrayList<OrderAccountDeduction> orderAccountDeductions = Lists.newArrayList();
orderAccountDetail
.parallelStream()
.map(OrderAccountDetail::getDeductions)
.forEach(list->orderAccountDeductions.addAll(list));
//获取订单实际款
BigDecimal actual = orderAccountDeductions
.parallelStream()
.filter(o -> DeductionTypeEnum.CONSUME.getCode().equals(o.getType()))
.map(OrderAccountDeduction::getAmount)
.reduce(BigDecimal.ZERO, BigDecimal::add);
return actual.add(giveBack).subtract(payment);
} }
...@@ -381,7 +282,7 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -381,7 +282,7 @@ 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.setForfeit(get(OrderAccountDeductions, new ArrayList<Integer>() {{
add(DeductionTypeEnum.VIOLATE_TRAFFIC_DEDUCT.getCode()); add(DeductionTypeEnum.VIOLATE_TRAFFIC_DEDUCT.getCode());
}})); }}));
//获取损坏赔偿总额 //获取损坏赔偿总额
...@@ -395,10 +296,11 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -395,10 +296,11 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
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());
}})); // }}));
} }
} }
} }
......
...@@ -18,6 +18,7 @@ import com.xxfc.platform.order.contant.enumerate.*; ...@@ -18,6 +18,7 @@ import com.xxfc.platform.order.contant.enumerate.*;
import com.xxfc.platform.order.entity.*; import com.xxfc.platform.order.entity.*;
import com.xxfc.platform.order.mapper.OrderAccountMapper; import com.xxfc.platform.order.mapper.OrderAccountMapper;
import com.xxfc.platform.order.pojo.DedDetailDTO; import com.xxfc.platform.order.pojo.DedDetailDTO;
import com.xxfc.platform.order.pojo.Term;
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;
import com.xxfc.platform.order.pojo.account.OrderAccountDetail; import com.xxfc.platform.order.pojo.account.OrderAccountDetail;
...@@ -535,12 +536,11 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> { ...@@ -535,12 +536,11 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
/** /**
* 获取每日订单账目,用于统计 * 获取每日订单账目,用于统计
* @param code * @param term
* @param day
* @return * @return
*/ */
public List<OrderAccountDTO> getOrderAccountByOrderType(Integer code, Integer day) { public List<OrderAccountDTO> getOrderAccountByOrderType(Term term) {
return mapper.getOrderAccountByOrderType(code,day); return mapper.getOrderAccountByOrderType(term);
} }
......
...@@ -8,15 +8,13 @@ import com.github.wxiaoqi.security.common.msg.auth.PageResult; ...@@ -8,15 +8,13 @@ import com.github.wxiaoqi.security.common.msg.auth.PageResult;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.xxfc.platform.order.Utils.OrderDateUtils; import com.xxfc.platform.order.Utils.OrderDateUtils;
import com.xxfc.platform.order.contant.enumerate.OrderInquiryType; import com.xxfc.platform.order.contant.enumerate.OrderInquiryType;
import com.xxfc.platform.order.entity.MembersOrder; import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.OrderStatistics; import com.xxfc.platform.order.entity.*;
import com.xxfc.platform.order.mapper.OrderStatisticsMapper; import com.xxfc.platform.order.mapper.OrderStatisticsMapper;
import com.xxfc.platform.order.pojo.HomePageOrderData; import com.xxfc.platform.order.pojo.*;
import com.xxfc.platform.order.pojo.Member;
import com.xxfc.platform.order.pojo.MembersOrderDto;
import com.xxfc.platform.order.pojo.OrderQuery;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.aspectj.weaver.ast.Var;
import org.assertj.core.util.Lists; import org.assertj.core.util.Lists;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -34,61 +32,195 @@ import java.util.stream.Collectors; ...@@ -34,61 +32,195 @@ import java.util.stream.Collectors;
public class OrderStatisticsBiz extends BaseBiz<OrderStatisticsMapper, OrderStatistics> { public class OrderStatisticsBiz extends BaseBiz<OrderStatisticsMapper, OrderStatistics> {
@Autowired @Autowired
private DailyVehicleOrderStatisticsBiz vehicleBiz; private DailyVehicleOrderStatisticsBiz vehicleBiz;
@Autowired @Autowired
private DailyTravelOrderStatisticsBiz TravelBiz; private DailyTravelOrderStatisticsBiz TravelBiz;
@Autowired @Autowired
private DailyMembersOrderStatisticsBiz membersBiz; private DailyMembersOrderStatisticsBiz membersBiz;
public HomePageOrderData getTotalOrder(Integer companyId) { @Autowired
private DailyVehicleOrderStatisticsBiz vehicleStatisticsBiz;
@Autowired
private DailyTravelOrderStatisticsBiz travelStatisticsBiz;
@Autowired
private DailyMembersOrderStatisticsBiz membersStatisticsBiz;
public HomePageOrderData getTotalOrder(List<Integer> companyIds) {
HomePageOrderData result = new HomePageOrderData(); HomePageOrderData result = new HomePageOrderData();
ArrayList<HomePageOrderData> orderStatistics = new ArrayList<>(); ArrayList<HomePageOrderData> list = new ArrayList<>();
list.add(getVehicleHomePageOrderData(companyIds)) ;
list.add(getTourHomePageOrderData(companyIds));
list.add(getMemberHomePageOrderData(companyIds));
result.setTotalOrders(list.stream().map(HomePageOrderData::getTotalOrders).reduce(BigDecimal.ZERO, BigDecimal::add));
result.setTotalOutstandingDeposit(list.stream().map(HomePageOrderData::getTotalOutstandingDeposit).reduce(BigDecimal.ZERO, BigDecimal::add));
result.setAdditionalIndemnity(list.stream().map(HomePageOrderData::getAdditionalIndemnity).reduce(BigDecimal.ZERO, BigDecimal::add));
return result;
}
OrderStatistics vehicle = vehicleBiz.findAll(companyId); /**
if (vehicle != null) { * 会员数据
* @param companyIds
* @return
*/
public HomePageOrderData getMemberHomePageOrderData(List<Integer> companyIds ) {
//今天之前的数据
OrderStatistics member = membersBiz.findAll(companyIds);
//当天的数据
OrderStatistics sameDayData = getMemberOrderDataOfTheDay(companyIds);
add(member,sameDayData);
if (member != null) {
HomePageOrderData data = new HomePageOrderData() {{ HomePageOrderData data = new HomePageOrderData() {{
setTotalOrders(vehicle.getTotalGmv().subtract(vehicle.getTotalReturnGmv())); setTotalOrders(member.getTotalGmv());
setAdditionalIndemnity(vehicle.getTotalCompensation()
.add(vehicle.getTotalForfeit())
.add(vehicle.getTotalDefaultMoney())
.add(vehicle.getTotalExpenditure().subtract(vehicle.getTotalGmv()).add(vehicle.getTotalReturnGmv())));
setTotalOutstandingDeposit(vehicle.getTotalSecurityDeposit()
.subtract(vehicle.getTotalRefundSecurityDeposit())
.subtract(getAdditionalIndemnity()));
}}; }};
orderStatistics.add(data); return data;
} }
OrderStatistics tour = TravelBiz.findAll(companyId); return new HomePageOrderData();
}
if (vehicle != null) { /**
* 获取会员订单当天数据
* @param companyIds
* @return
*/
public OrderStatistics getMemberOrderDataOfTheDay(List<Integer> companyIds) {
OrderStatistics member = new OrderStatistics();
DailyMembersOrderStatistics statistics = membersStatisticsBiz.statistics(new Term(OrderTypeEnum.MEMBER.getCode(), 0, 1, null, null, companyIds));
if (statistics==null) {
return new OrderStatistics();
}
//加入会员订单收入
member.setTotalGmv(member.getTotalGmv().add(statistics.getGmv()));
return member;
}
//加上当天数据
private void add(OrderStatistics original, OrderStatistics add){
original.setTotalGmv(original.getTotalGmv().add(add.getTotalGmv()));
original.setTotalReturnGmv(original.getTotalReturnGmv().add(add.getTotalReturnGmv()));
original.setTotalSecurityDeposit(original.getTotalSecurityDeposit().add(add.getTotalSecurityDeposit()));
original.setTotalRefundSecurityDeposit(original.getTotalRefundSecurityDeposit().add(add.getTotalRefundSecurityDeposit()));
original.setTotalDefaultMoney(original.getTotalDefaultMoney().add(add.getTotalDefaultMoney()));
original.setTotalOrderCompensation(original.getTotalOrderCompensation().add(add.getTotalOrderCompensation()));
original.setTotalCompensation(original.getTotalCompensation().add(add.getTotalCompensation()));
original.setTotalForfeit(original.getTotalForfeit().add(add.getTotalForfeit()));
}
/**
* 旅游数据
* @param companyIds
* @return
*/
public HomePageOrderData getTourHomePageOrderData(List<Integer> companyIds) {
//今天之前的数据
OrderStatistics tour = TravelBiz.findAll(companyIds);
OrderStatistics sameDayData = getTourOrderDataOfTheDay(companyIds);
add(tour,sameDayData);
if (tour != null) {
HomePageOrderData data = new HomePageOrderData() {{ HomePageOrderData data = new HomePageOrderData() {{
setTotalOrders(tour.getTotalGmv().subtract(tour.getTotalReturnGmv())); setTotalOrders(tour.getTotalGmv().subtract(tour.getTotalReturnGmv()));
setAdditionalIndemnity(tour.getTotalDefaultMoney()); setAdditionalIndemnity(tour.getTotalDefaultMoney());
}}; }};
orderStatistics.add(data); return data;
}
return new HomePageOrderData();
}
/**
* 获取租车订单当天数据
* @param companyIds
* @return
*/
public OrderStatistics getTourOrderDataOfTheDay(List<Integer> companyIds) {
OrderStatistics tour = new OrderStatistics();
//当天数据
List<DailyTravelOrderStatistics> record = travelStatisticsBiz.getDailyTravelOrderStatistics(new Term(OrderTypeEnum.TOUR.getCode(), 0, 1, null, null, companyIds));
if (CollectionUtils.isEmpty(record)) {
return new OrderStatistics();
} }
//加入当天旅游路线订单总和
tour.setTotalGmv(tour.getTotalGmv().add(record.parallelStream().map(DailyTravelOrderStatistics::getGmv).reduce(BigDecimal.ZERO,BigDecimal::add)));
//加入当天退还订单总和
tour.setTotalReturnGmv(tour.getTotalReturnGmv().add(record.parallelStream().map(DailyTravelOrderStatistics::getReturnGmv).reduce(BigDecimal.ZERO,BigDecimal::add)));
//加入当违约总和
tour.setTotalDefaultMoney(tour.getTotalDefaultMoney().add(record.parallelStream().map(DailyTravelOrderStatistics::getDefaultMoney).reduce(BigDecimal.ZERO,BigDecimal::add)));
return tour;
}
OrderStatistics member = membersBiz.findAll(companyId); /**
* 车辆数据
* @param companyIds
* @return
*/
public HomePageOrderData getVehicleHomePageOrderData(List<Integer> companyIds) {
//今天之前的数据
OrderStatistics vehicle = vehicleBiz.findAll(companyIds);
OrderStatistics sameDayData = getVehicleOrderDataOfTheDay(companyIds);
add(vehicle,sameDayData);
if (vehicle != null) { if (vehicle != null) {
HomePageOrderData data = new HomePageOrderData() {{ HomePageOrderData data = new HomePageOrderData() {{
setTotalOrders(member.getTotalGmv()); setTotalOrders(vehicle.getTotalGmv().subtract(vehicle.getTotalReturnGmv()));
setAdditionalIndemnity(vehicle.getTotalCompensation()
.add(vehicle.getTotalForfeit())
.add(vehicle.getTotalDefaultMoney())
.add(vehicle.getTotalOrderCompensation()));
setTotalOutstandingDeposit(vehicle.getTotalSecurityDeposit()
.subtract(vehicle.getTotalRefundSecurityDeposit())
.subtract(getAdditionalIndemnity()));
}}; }};
orderStatistics.add(data); return data;
} }
return new HomePageOrderData();
}
/**
* 获取车来个你当天数据
* @param companyIds
* @return
*/
public OrderStatistics getVehicleOrderDataOfTheDay(List<Integer> companyIds) {
OrderStatistics vehicle = new OrderStatistics();
//当天的数据
List<DailyVehicleOrderStatistics> record = vehicleStatisticsBiz.getDailyVehicleOrderRecord(new Term(OrderTypeEnum.RENT_VEHICLE.getCode(),0,1,null,null,companyIds));
if (CollectionUtils.isEmpty(record)) {
return new OrderStatistics();
}
//加入当天租车订单总和
vehicle.setTotalGmv(vehicle.getTotalGmv().add(record.parallelStream().map(DailyVehicleOrderStatistics::getGmv).reduce(BigDecimal.ZERO,BigDecimal::add)));
//加入当天退还订单总和
vehicle.setTotalReturnGmv(vehicle.getTotalReturnGmv().add(record.parallelStream().map(DailyVehicleOrderStatistics::getReturnGmv).reduce(BigDecimal.ZERO,BigDecimal::add)));
//加入当违约总和
vehicle.setTotalDefaultMoney(vehicle.getTotalDefaultMoney().add(record.parallelStream().map(DailyVehicleOrderStatistics::getDefaultMoney).reduce(BigDecimal.ZERO,BigDecimal::add)));
//加入当天押金总和
vehicle.setTotalSecurityDeposit(vehicle.getTotalSecurityDeposit().add(record.parallelStream().map(DailyVehicleOrderStatistics::getSecurityDeposit).reduce(BigDecimal.ZERO,BigDecimal::add)));
//加入退还押金总和
vehicle.setTotalRefundSecurityDeposit(vehicle.getTotalRefundSecurityDeposit().add(record.parallelStream().map(DailyVehicleOrderStatistics::getRefundSecurityDeposit).reduce(BigDecimal.ZERO,BigDecimal::add)));
//加入赔偿
vehicle.setTotalCompensation(vehicle.getTotalCompensation().add(record.parallelStream().map(DailyVehicleOrderStatistics::getCompensation).reduce(BigDecimal.ZERO, BigDecimal::add)));
//加入违章
vehicle.setTotalForfeit(vehicle.getTotalForfeit().add(record.parallelStream().map(DailyVehicleOrderStatistics::getForfeit).reduce(BigDecimal.ZERO,BigDecimal::add)));
//损坏赔偿
vehicle.setTotalOrderCompensation(vehicle.getTotalOrderCompensation().add(record.parallelStream().map(DailyVehicleOrderStatistics::getOrderCompensation).reduce(BigDecimal.ZERO,BigDecimal::add)));
return vehicle;
}
result.setTotalOrders(orderStatistics.stream().map(HomePageOrderData::getTotalOrders).filter(o -> Objects.nonNull(o)).reduce(BigDecimal.ZERO, BigDecimal::add));
result.setTotalOutstandingDeposit(orderStatistics.stream().map(HomePageOrderData::getTotalOutstandingDeposit).filter(o -> Objects.nonNull(o)).reduce(BigDecimal.ZERO, BigDecimal::add));
result.setAdditionalIndemnity(orderStatistics.stream().map(HomePageOrderData::getAdditionalIndemnity).filter(o -> Objects.nonNull(o)).reduce(BigDecimal.ZERO, BigDecimal::add));
return result;
}
/**
* 会员统计列表
* @param memberLevels
* @param query
* @return
* @throws ParseException
*/
public PageResult getMemberOrderStatistics(List<BaseUserMemberLevel> memberLevels, OrderQuery query) throws ParseException { public PageResult getMemberOrderStatistics(List<BaseUserMemberLevel> memberLevels, OrderQuery query) throws ParseException {
List<MembersOrder> membersOrderList = membersBiz.getMemberOrderStatistics(query); List<MembersOrder> membersOrderList = membersBiz.getMemberOrderStatistics(query);
...@@ -176,16 +308,11 @@ public class OrderStatisticsBiz extends BaseBiz<OrderStatisticsMapper, OrderStat ...@@ -176,16 +308,11 @@ public class OrderStatisticsBiz extends BaseBiz<OrderStatisticsMapper, OrderStat
//进行分页处理 //进行分页处理
return PageResult.nowPageResult(query.getPage(),query.getLimit(),arrayList); return PageResult.nowPageResult(query.getPage(),query.getLimit(),arrayList);
// return pagingProcessing(query, arrayList);
} }
private void TotalPaymentAndMemberName(HashMap<Integer, String> map, MembersOrder mb, MembersOrderDto mbdto) { private void TotalPaymentAndMemberName(HashMap<Integer, String> map, MembersOrder mb, MembersOrderDto mbdto) {
BigDecimal totalPayment = BigDecimal.ZERO; BigDecimal totalPayment = BigDecimal.ZERO;
List<Member> members = mb.getMembers(); List<Member> members = mb.getMembers();
//设置时间段购买会员总金额和不同的会员名称 //设置时间段购买会员总金额和不同的会员名称
......
...@@ -18,7 +18,7 @@ public interface DailyMembersOrderStatisticsMapper extends Mapper<DailyMembersOr ...@@ -18,7 +18,7 @@ public interface DailyMembersOrderStatisticsMapper extends Mapper<DailyMembersOr
Map<String, Object> getTravelGmv(@Param("day") Integer day); Map<String, Object> getTravelGmv(@Param("day") Integer day);
OrderStatistics monthOrderTotal(@Param("companyId") Integer companyId); OrderStatistics monthOrderTotal(List<Integer> companyIds);
......
...@@ -19,5 +19,5 @@ public interface DailyTravelOrderStatisticsMapper extends Mapper<DailyTravelOrde ...@@ -19,5 +19,5 @@ public interface DailyTravelOrderStatisticsMapper extends Mapper<DailyTravelOrde
List<DailyTravelOrderStatistics> getTravelPenalSum(@Param("day") Integer day); List<DailyTravelOrderStatistics> getTravelPenalSum(@Param("day") Integer day);
OrderStatistics monthOrderTotal(@Param("companyId")Integer companyId); OrderStatistics monthOrderTotal(List<Integer> companyIds);
} }
...@@ -25,5 +25,5 @@ public interface DailyVehicleOrderStatisticsMapper extends Mapper<DailyVehicleOr ...@@ -25,5 +25,5 @@ public interface DailyVehicleOrderStatisticsMapper extends Mapper<DailyVehicleOr
List<DailyVehicleOrderStatistics> getViolationMoney(@Param("day") Integer day); List<DailyVehicleOrderStatistics> getViolationMoney(@Param("day") Integer day);
OrderStatistics monthOrderTotal(@Param("companyId")Integer companyId); OrderStatistics monthOrderTotal(List<Integer> companyIds);
} }
package com.xxfc.platform.order.mapper; package com.xxfc.platform.order.mapper;
import com.xxfc.platform.order.entity.OrderAccount; import com.xxfc.platform.order.entity.OrderAccount;
import com.xxfc.platform.order.pojo.Term;
import com.xxfc.platform.order.pojo.account.OrderAccountDTO; import com.xxfc.platform.order.pojo.account.OrderAccountDTO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
...@@ -17,5 +18,5 @@ import java.util.List; ...@@ -17,5 +18,5 @@ import java.util.List;
*/ */
public interface OrderAccountMapper extends Mapper<OrderAccount> { public interface OrderAccountMapper extends Mapper<OrderAccount> {
List<OrderAccountDTO> getOrderAccountByOrderType(@Param("type") Integer type, @Param("day") Integer day); List<OrderAccountDTO> getOrderAccountByOrderType(Term term);
} }
package com.xxfc.platform.order.rest.background; package com.xxfc.platform.order.rest.background;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.io.IoUtil; import cn.hutool.core.io.IoUtil;
import cn.hutool.poi.excel.ExcelUtil; import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter; import cn.hutool.poi.excel.ExcelWriter;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel; import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import com.github.wxiaoqi.security.admin.feign.UserFeign; import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.UserDTO; import com.github.wxiaoqi.security.admin.feign.dto.UserDTO;
import com.github.wxiaoqi.security.admin.feign.rest.UserRestInterface;
import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig; import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
import com.github.wxiaoqi.security.common.exception.BaseException; 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.github.wxiaoqi.security.common.rest.BaseController; import com.github.wxiaoqi.security.common.rest.BaseController;
import com.github.wxiaoqi.security.common.util.Query;
import com.github.wxiaoqi.security.common.util.process.ResultCode; import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.google.common.collect.Lists;
import com.xxfc.platform.order.biz.DailyMembersOrderStatisticsBiz; import com.xxfc.platform.order.biz.DailyMembersOrderStatisticsBiz;
import com.xxfc.platform.order.biz.DailyTravelOrderStatisticsBiz; import com.xxfc.platform.order.biz.DailyTravelOrderStatisticsBiz;
import com.xxfc.platform.order.biz.DailyVehicleOrderStatisticsBiz; import com.xxfc.platform.order.biz.DailyVehicleOrderStatisticsBiz;
...@@ -22,23 +20,18 @@ import com.xxfc.platform.order.entity.OrderStatistics; ...@@ -22,23 +20,18 @@ import com.xxfc.platform.order.entity.OrderStatistics;
import com.xxfc.platform.order.pojo.HomePageOrderData; import com.xxfc.platform.order.pojo.HomePageOrderData;
import com.xxfc.platform.order.pojo.MembersOrderDto; import com.xxfc.platform.order.pojo.MembersOrderDto;
import com.xxfc.platform.order.pojo.OrderQuery; import com.xxfc.platform.order.pojo.OrderQuery;
import com.xxfc.platform.vehicle.common.RestResponse;
import com.xxfc.platform.vehicle.feign.VehicleFeign;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.ServletOutputStream; import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.Array;
import java.text.DateFormat;
import java.text.ParseException; import java.text.ParseException;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* @author Administrator * @author Administrator
...@@ -90,64 +83,41 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz ...@@ -90,64 +83,41 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz
@Autowired @Autowired
private DailyMembersOrderStatisticsBiz membersBiz; private DailyMembersOrderStatisticsBiz membersBiz;
@Autowired
private VehicleFeign vehicleFeign;
@ApiOperation("获取订单统计数据") @ApiOperation("获取订单统计数据")
@GetMapping("/findAll/{type}") @GetMapping("/findAll/{type}")
public ObjectRestResponse findAll(@PathVariable Integer type) { public ObjectRestResponse findAll(@PathVariable Integer type) {
try { try {
ObjectRestResponse<UserDTO> userDTOObjectRestResponse ObjectRestResponse<UserDTO> userDTOObjectRestResponse
= userFeign.userinfoByToken(userAuthConfig.getToken(getRequest())); = userFeign.userinfoByToken(userAuthConfig.getToken(getRequest()));
if (userDTOObjectRestResponse == null || userDTOObjectRestResponse.getData() == null) { if (userDTOObjectRestResponse == null || userDTOObjectRestResponse.getData() == null) {
throw new BaseException("请登录!"); throw new BaseException("token失效!");
} }
UserDTO user = userDTOObjectRestResponse.getData(); UserDTO user = userDTOObjectRestResponse.getData();
List<Integer> companyIds = null;
Integer companyId = user.getCompanyId(); if (!DATA_AUTHORITY.equals(user.getDataAll())) {
if (DATA_AUTHORITY.equals(user.getDataAll())) { companyIds = vehicleFeign.getCompanyIds().getData();
companyId = null;
} }
//只统计租车订单 //只统计租车订单
if (TYPE_VEHICLE.equals(type)) { if (TYPE_VEHICLE.equals(type)) {
OrderStatistics vehicle = vehicleBiz.findAll(companyId); return ObjectRestResponse.succ(baseBiz.getVehicleHomePageOrderData(companyIds));
return ObjectRestResponse.succ(new HomePageOrderData() {{
setTotalOrders(vehicle.getTotalGmv().subtract(vehicle.getTotalReturnGmv()));
setAdditionalIndemnity(vehicle.getTotalCompensation()
.add(vehicle.getTotalForfeit())
.add(vehicle.getTotalDefaultMoney())
.add(vehicle.getTotalExpenditure().subtract(vehicle.getTotalGmv().subtract(vehicle.getTotalReturnGmv())))
);
setTotalOutstandingDeposit(vehicle.getTotalSecurityDeposit()
.subtract(vehicle.getTotalRefundSecurityDeposit())
.subtract(getAdditionalIndemnity()));
}});
} }
//只统计会租车订单 //只统计旅游订单
if (TYPE_TOUR.equals(type)) { if (TYPE_TOUR.equals(type)) {
OrderStatistics tour = TravelBiz.findAll(companyId); return ObjectRestResponse.succ(baseBiz.getTourHomePageOrderData(companyIds));
return ObjectRestResponse.succ(new HomePageOrderData() {{
setTotalOrders(tour.getTotalGmv().subtract(tour.getTotalReturnGmv()));
setAdditionalIndemnity(tour.getTotalDefaultMoney());
}});
} }
//只统计会员定案 //只统计会员订单
if (TYPE_MEMBER.equals(type)) { if (TYPE_MEMBER.equals(type)) {
OrderStatistics member = membersBiz.findAll(companyId); return ObjectRestResponse.succ(baseBiz.getMemberHomePageOrderData(companyIds));
return ObjectRestResponse.succ(new HomePageOrderData() {{
setTotalOrders(member.getTotalGmv());
}});
} }
//所有订单 //所有订单
if (TYPE_TOTAL.equals(type)) { if (TYPE_TOTAL.equals(type)) {
return ObjectRestResponse.succ(baseBiz.getTotalOrder(companyId)); return ObjectRestResponse.succ(baseBiz.getTotalOrder(companyIds));
} }
return ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE, "参数错误!"); return ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE, "参数错误!");
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
...@@ -155,12 +125,11 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz ...@@ -155,12 +125,11 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz
} }
} }
@PostMapping("/order") @PostMapping("/order")
@ApiOperation(value = "会员统计") @ApiOperation(value = "会员统计")
public ObjectRestResponse<List<MembersOrderDto>> getMemberOrderStatisticsData(@RequestBody OrderQuery query) throws ParseException { public ObjectRestResponse<List<MembersOrderDto>> getMemberOrderStatisticsData(@RequestBody OrderQuery query) throws ParseException {
if (query.getEndTime()!=null) { if (query.getEndTime() != null) {
query.setEndTime(query.getEndTime()+(24*60*60*1000)); query.setEndTime(query.getEndTime() + (24 * 60 * 60 * 1000));
} }
//获取会员等级信息 //获取会员等级信息
List<BaseUserMemberLevel> memberLevels = userFeign.levels(); List<BaseUserMemberLevel> memberLevels = userFeign.levels();
...@@ -172,8 +141,8 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz ...@@ -172,8 +141,8 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz
@PostMapping("/excel") @PostMapping("/excel")
@ApiOperation(value = "下载excel表") @ApiOperation(value = "下载excel表")
public void downloadExcel(@RequestBody OrderQuery query) throws Exception { public void downloadExcel(@RequestBody OrderQuery query) throws Exception {
if (query.getEndTime()!=null) { if (query.getEndTime() != null) {
query.setEndTime(query.getEndTime()+(24*60*60*1000)); query.setEndTime(query.getEndTime() + (24 * 60 * 60 * 1000));
} }
// 通过工具类创建writer,默认创建xls格式 // 通过工具类创建writer,默认创建xls格式
ExcelWriter writer = ExcelUtil.getWriter(true); ExcelWriter writer = ExcelUtil.getWriter(true);
......
...@@ -22,10 +22,12 @@ ...@@ -22,10 +22,12 @@
daily_members_order_statistics daily_members_order_statistics
WHERE WHERE
1=1 1=1
<if test="companyId != null"> <if test="companyIds != null and companyIds.size()!=0">
and branch_company_id = #{companyId} and branch_company_id in
<foreach collection="companyIds" index="index" item="companyId" open="(" separator="," close=")" >
#{companyId}
</foreach>
</if> </if>
</select> </select>
<!-- <select id="updateByExampleSelective">--> <!-- <select id="updateByExampleSelective">-->
<!-- SELECT--> <!-- SELECT-->
......
...@@ -58,8 +58,11 @@ ...@@ -58,8 +58,11 @@
daily_travel_order_statistics daily_travel_order_statistics
WHERE WHERE
1=1 1=1
<if test="companyId != null"> <if test="companyIds != null and companyIds.size()!=0">
and branch_company_id = #{companyId} and branch_company_id in
<foreach collection="companyIds" index="index" item="companyId" open="(" separator="," close=")" >
#{companyId}
</foreach>
</if> </if>
</select> </select>
......
...@@ -89,13 +89,16 @@ ...@@ -89,13 +89,16 @@
IFNULL( sum( compensation ), 0 ) AS totalCompensation, IFNULL( sum( compensation ), 0 ) AS totalCompensation,
IFNULL( sum( return_gmv ), 0 ) AS totalReturnGmv, IFNULL( sum( return_gmv ), 0 ) AS totalReturnGmv,
IFNULL( sum( default_money ), 0 ) AS totalDefaultMoney, IFNULL( sum( default_money ), 0 ) AS totalDefaultMoney,
IFNULL( sum( total_expenditure ), 0 ) AS totalExpenditure IFNULL( sum( order_compensation ), 0 ) AS totalOrderCompensation
FROM FROM
daily_vehicle_order_statistics daily_vehicle_order_statistics
WHERE WHERE
1=1 1=1
<if test="companyId != null"> <if test="companyIds != null and companyIds.size()!=0">
and branch_company_id = #{companyId} and branch_company_id in
<foreach collection="companyIds" index="index" item="companyId" open="(" separator="," close=")" >
#{companyId}
</foreach>
</if> </if>
</select> </select>
......
...@@ -3,27 +3,52 @@ ...@@ -3,27 +3,52 @@
<mapper namespace="com.xxfc.platform.order.mapper.OrderAccountMapper"> <mapper namespace="com.xxfc.platform.order.mapper.OrderAccountMapper">
<select id="getOrderAccountByOrderType" resultType="com.xxfc.platform.order.pojo.account.OrderAccountDTO"> <select id="getOrderAccountByOrderType" resultType="com.xxfc.platform.order.pojo.account.OrderAccountDTO">
SELECT SELECT
date(DATE_SUB(now(),interval #{day} day)) as oneDay, <if test="subdivide !=null and subdivide ==1">
date( FROM_UNIXTIME( a.crt_time / 1000 ) ) as oneDay,
</if>
a.* a.*
<if test="type != null and type == 1"> <if test="orderType != null and orderType == 1">
, v.start_company_id as companyId , v.start_company_id as companyId
</if> </if>
<if test="type != null and type == 2"> <if test="orderType != null and orderType == 2">
, t.start_company_id as companyId , t.start_company_id as companyId
</if> </if>
FROM FROM
order_account a order_account a
LEFT JOIN base_order b ON a.order_id = b.id LEFT JOIN base_order b ON a.order_id = b.id
<if test="type != null and type==1"> <if test="orderType != null and orderType==1">
LEFT JOIN order_rent_vehicle_detail v ON b.id = v.order_id LEFT JOIN order_rent_vehicle_detail v ON b.id = v.order_id
</if> </if>
<if test="type != null and type==2"> <if test="orderType != null and orderType==2">
LEFT JOIN order_tour_detail t ON b.id = t.order_id LEFT JOIN order_tour_detail t ON b.id = t.order_id
</if> </if>
WHERE WHERE
a.account_status=1 a.account_status=1
AND AND
b.type = #{type} b.type = #{orderType}
AND date( FROM_UNIXTIME( a.crt_time / 1000 ) ) = date( DATE_SUB( now( ), INTERVAL #{day} DAY ) ) <if test="startTime != null">
AND a.crt_time <![CDATA[>= ]]> #{startTime}
</if>
<if test="endTime != null">
AND a.crt_time &gt; endTime
</if>
<if test="companyIds != null and companyIds.size() != 0 ">
<if test="orderType != null and orderType == 1">
AND v.start_company_id in
<foreach collection="companyIds" index="index" item="companyId" open="(" separator="," close=")">
#{companyId}
</foreach>
</if>
<if test="orderType != null and orderType == 2">
AND t.start_company_id in
<foreach collection="companyIds" index="index" item="companyId" open="(" separator="," close=")">
#{companyId}
</foreach>
</if>
</if>
<if test="subdivide !=null and subdivide ==1">
AND date( FROM_UNIXTIME( a.crt_time / 1000 ) ) = date( DATE_SUB( now( ), INTERVAL #{day} DAY ) )
</if>
</select> </select>
</mapper> </mapper>
\ No newline at end of file
import com.xxfc.platform.order.OrderApplication; import com.xxfc.platform.order.OrderApplication;
import com.xxfc.platform.order.biz.DailyOrderStatisticsBiz; import com.xxfc.platform.order.biz.DailyOrderStatisticsBiz;
import com.xxfc.platform.order.biz.OrderStatisticsBiz;
import com.xxfc.platform.order.jobhandler.BaseOrderStatisticsJobHandler; import com.xxfc.platform.order.jobhandler.BaseOrderStatisticsJobHandler;
import com.xxfc.platform.order.pojo.HomePageOrderData;
import org.joda.time.DateTime; import org.joda.time.DateTime;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
...@@ -75,7 +73,7 @@ public class ServiceTest { ...@@ -75,7 +73,7 @@ public class ServiceTest {
@Test @Test
public void handlerTeset() { public void handlerTeset() {
handler.execute("2019-08-15"); handler.execute("2019-09-29");
} }
......
...@@ -66,6 +66,7 @@ public class XCFQAuthentication implements UserAuthentication { ...@@ -66,6 +66,7 @@ public class XCFQAuthentication implements UserAuthentication {
/** /**
* 状态码: 200 正常;400 URL无效;401 appCode错误; 403 次数用完; 500 API网管错误 * 状态码: 200 正常;400 URL无效;401 appCode错误; 403 次数用完; 500 API网管错误
*/ */
log.info("外部接口响应状态码:"+statusCode);
//获取response的body //获取response的body
if (statusCode == 200) { if (statusCode == 200) {
String result = EntityUtils.toString(response.getEntity()); String result = EntityUtils.toString(response.getEntity());
......
...@@ -197,4 +197,6 @@ public interface VehicleFeign { ...@@ -197,4 +197,6 @@ public interface VehicleFeign {
@GetMapping(value = "/bookRecord/get") @GetMapping(value = "/bookRecord/get")
public ObjectRestResponse<List<BookRecordUpdateLog>> get(@RequestParam(value = "bookRecordId")Long bookRecordId); public ObjectRestResponse<List<BookRecordUpdateLog>> get(@RequestParam(value = "bookRecordId")Long bookRecordId);
@RequestMapping(value ="/branchCompany/app/unauth/getCompanyIds",method = RequestMethod.GET)
RestResponse<List<Integer>> getCompanyIds();
} }
...@@ -413,4 +413,8 @@ public class BranchCompanyBiz extends BaseBiz<BranchCompanyMapper, BranchCompany ...@@ -413,4 +413,8 @@ public class BranchCompanyBiz extends BaseBiz<BranchCompanyMapper, BranchCompany
return ObjectRestResponse.succ(list); return ObjectRestResponse.succ(list);
} }
public List<Integer> getCompanyIds() {
UserDTO userDTO = getAdminUserInfo();
return vehicleBiz.dataCompany(userDTO.getDataZone(), userDTO.getDataCompany());
}
} }
...@@ -25,7 +25,9 @@ import com.xxfc.platform.vehicle.pojo.vo.BranchCompanyListVO; ...@@ -25,7 +25,9 @@ import com.xxfc.platform.vehicle.pojo.vo.BranchCompanyListVO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.assertj.core.util.Lists;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -35,6 +37,7 @@ import javax.servlet.http.HttpServletRequest; ...@@ -35,6 +37,7 @@ import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
@RestController @RestController
@RequestMapping("/branchCompany") @RequestMapping("/branchCompany")
...@@ -217,4 +220,11 @@ public class BranchCompanyController extends BaseController<BranchCompanyBiz> { ...@@ -217,4 +220,11 @@ public class BranchCompanyController extends BaseController<BranchCompanyBiz> {
public ObjectRestResponse<List<BranchCompany>> companys() { public ObjectRestResponse<List<BranchCompany>> companys() {
return baseBiz.branchCompans(); return baseBiz.branchCompans();
} }
@RequestMapping(value ="/app/unauth/getCompanyIds",method = RequestMethod.GET)
public RestResponse<List<Integer>> getCompanyIds() {
return RestResponse.suc(baseBiz.getCompanyIds());
}
} }
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