Commit 9abc88ff authored by hanfeng's avatar hanfeng

Merge branch 'master-order-statistics'

# Conflicts:
#	xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/feign/VehicleFeign.java
parents a7991708 6e58a35d
...@@ -18,7 +18,7 @@ import lombok.Data; ...@@ -18,7 +18,7 @@ import lombok.Data;
@Table(name = "app_user_position") @Table(name = "app_user_position")
public class AppUserPosition implements Serializable { public class AppUserPosition implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* 主键id * 主键id
*/ */
......
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,43 +29,44 @@ public class DailyVehicleOrderStatistics extends DailyOrderStatistics { ...@@ -29,43 +29,44 @@ 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;
/** /**
* 违约总额 * 违约总额
*/ */
@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,62 @@ public class OrderStatistics { ...@@ -22,48 +22,62 @@ 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;
@Override
public String toString() {
return "OrderStatistics{" +
"totalGmv=" + totalGmv +
", totalSecurityDeposit=" + totalSecurityDeposit +
", totalRefundSecurityDeposit=" + totalRefundSecurityDeposit +
", totalCompensation=" + totalCompensation +
", totalForfeit=" + totalForfeit +
", totalReturnGmv=" + totalReturnGmv +
", totalDefaultMoney=" + totalDefaultMoney +
", totalOrderCompensation=" + totalOrderCompensation +
'}';
}
} }
...@@ -9,15 +9,15 @@ public class HomePageOrderData { ...@@ -9,15 +9,15 @@ 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;
} }
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;
}
...@@ -2,17 +2,134 @@ package com.xxfc.platform.order.pojo.account; ...@@ -2,17 +2,134 @@ package com.xxfc.platform.order.pojo.account;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.xxfc.platform.order.entity.OrderAccount; import com.xxfc.platform.order.entity.OrderAccount;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @author Administrator
*/
@Data @Data
public class OrderAccountDTO extends OrderAccount { public class OrderAccountDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@Id
@GeneratedValue(generator = "JDBC")
@ApiModelProperty("主键")
private Integer id;
/**
* 订单id
*/
@Column(name = "order_id")
@ApiModelProperty(value = "订单id")
private Integer orderId;
/**
* 账款对应的流水号
*/
@Column(name = "trade_no")
@ApiModelProperty(value = "账款对应的流水号")
private String tradeNo;
/**
* 记账时间
*/
@Column(name = "account_time")
@ApiModelProperty(value = "记账时间")
private Long accountTime;
/**
* 记帐类型 101--订单支付;201--取消订单退款;202--全部押金退款;203--部分押金退款;204--剩余押金退款
*/
@Column(name = "account_type")
@ApiModelProperty(value = "记帐类型 101--订单支付;201--取消订单退款;202--全部押金退款;203--部分押金退款;204--剩余押金退款")
private Integer accountType;
/**
* 账款状态 1--成功;2--失败
*/
@Column(name = "account_status")
@ApiModelProperty(value = "账款状态 1--成功;2--失败")
private Integer accountStatus;
/**
* 账款金额
*/
@Column(name = "account_amount")
@ApiModelProperty(value = "账款金额")
private BigDecimal accountAmount;
/**
* 账款说明
*/
@Column(name = "account_desc")
@ApiModelProperty(value = "账款说明")
private String accountDesc;
/**
* 账款详情
*/
@Column(name = "account_detail")
@ApiModelProperty(value = "账款详情")
private String accountDetail;
/**
* 创建时间
*/
@Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true )
private Long crtTime;
/**
* 原金额
*/
@Column(name = "original_amount")
@ApiModelProperty(value = "原金额")
private BigDecimal originalAmount;
/**
* 扣除金额
*/
@Column(name = "deduct_amount")
@ApiModelProperty(value = "扣除金额")
private BigDecimal deductAmount;
@Column(name = "companyId") @Column(name = "companyId")
private Integer companyId; private Integer companyId;
@Column(name = "oneDay") @Column(name = "oneDay")
private String oneDay; private String oneDay;
@Override
public String toString() {
final StringBuffer sb = new StringBuffer("OrderAccountDTO{");
sb.append("id=").append(id);
sb.append(", orderId=").append(orderId);
sb.append(", tradeNo='").append(tradeNo).append('\'');
sb.append(", accountTime=").append(accountTime);
sb.append(", accountType=").append(accountType);
sb.append(", accountStatus=").append(accountStatus);
sb.append(", accountAmount=").append(accountAmount);
sb.append(", accountDesc='").append(accountDesc).append('\'');
sb.append(", accountDetail='").append(accountDetail).append('\'');
sb.append(", crtTime=").append(crtTime);
sb.append(", originalAmount=").append(originalAmount);
sb.append(", deductAmount=").append(deductAmount);
sb.append(", companyId=").append(companyId);
sb.append(", oneDay='").append(oneDay).append('\'');
sb.append('}');
return sb.toString();
}
} }
...@@ -10,8 +10,10 @@ import com.xxfc.platform.order.entity.OrderAccount; ...@@ -10,8 +10,10 @@ 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 javassist.expr.NewArray;
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.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -24,9 +26,7 @@ import tk.mybatis.mapper.entity.Example; ...@@ -24,9 +26,7 @@ import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls; import tk.mybatis.mapper.weekend.WeekendSqls;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.*;
import java.util.Date;
import java.util.List;
/** /**
* 每日购买会员订单统计 * 每日购买会员订单统计
...@@ -39,56 +39,68 @@ public class DailyMembersOrderStatisticsBiz extends BaseBiz<DailyMembersOrderSta ...@@ -39,56 +39,68 @@ public class DailyMembersOrderStatisticsBiz extends BaseBiz<DailyMembersOrderSta
private final Integer headOfficeId = 1; private final Integer headOfficeId = 1;
@Value("${order.day}")
private Integer day;
/** /**
* 总公司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() { 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);
log.error("Members:accountList:"+accountList);
if (CollectionUtils.isNotEmpty(accountList)) {
DailyMembersOrderStatistics orderStatistics = new DailyMembersOrderStatistics();
ArrayList<OrderAccountDetail> orderAccountDetails = getOrderAccountDetail(accountList);
log.error("Members:orderAccountDetails:"+orderAccountDetails);
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
*/ */
...@@ -103,6 +115,7 @@ public class DailyMembersOrderStatisticsBiz extends BaseBiz<DailyMembersOrderSta ...@@ -103,6 +115,7 @@ public class DailyMembersOrderStatisticsBiz extends BaseBiz<DailyMembersOrderSta
} }
return true; return true;
} }
/** /**
* 获取押金和 * 获取押金和
* *
...@@ -123,15 +136,15 @@ public class DailyMembersOrderStatisticsBiz extends BaseBiz<DailyMembersOrderSta ...@@ -123,15 +136,15 @@ public class DailyMembersOrderStatisticsBiz extends BaseBiz<DailyMembersOrderSta
*/ */
private ArrayList<OrderAccountDetail> getOrderAccountDetail(List<OrderAccountDTO> orderAccountDTOS) { private ArrayList<OrderAccountDetail> getOrderAccountDetail(List<OrderAccountDTO> orderAccountDTOS) {
ArrayList<OrderAccountDetail> arrayList = Lists.newArrayList(); ArrayList<OrderAccountDetail> arrayList = Lists.newArrayList();
List<OrderAccountDetail> oad = Collections.synchronizedList(arrayList);
orderAccountDTOS.parallelStream() orderAccountDTOS.parallelStream()
.map(OrderAccount::getAccountDetail) .map(OrderAccountDTO::getAccountDetail)
.forEach(detail -> { .forEach(detail -> {
if (StringUtils.isNotBlank(detail)) { if (StringUtils.isNotBlank(detail)) {
arrayList.add(JSONUtil.toBean(detail, OrderAccountDetail.class)); oad.add(JSONUtil.toBean(detail, OrderAccountDetail.class));
} }
}); });
return new ArrayList<OrderAccountDetail>(oad);
return arrayList;
} }
@Override @Override
...@@ -145,16 +158,17 @@ public class DailyMembersOrderStatisticsBiz extends BaseBiz<DailyMembersOrderSta ...@@ -145,16 +158,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(){ boolean vehicleFlag = vehicleStatisticsBiz.dailyVehicleOrderRecord(day);
boolean vehicleFlag = vehicleStatisticsBiz.saveDailyVehicleOrderRecord(); boolean travelFlag = travelStatisticsBiz.dailyTravelOrderRecord(day);
boolean travelFlag = travelStatisticsBiz.saveDailyTravelOrderRecord(); boolean membersFlag= membersStatisticsBiz.dailyMembersOrderRecord(day);
boolean membersFlag= membersStatisticsBiz.saveDailyMembersOrderRecord();
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;
...@@ -39,95 +40,22 @@ import java.util.stream.Collectors; ...@@ -39,95 +40,22 @@ import java.util.stream.Collectors;
@Service @Service
@Slf4j @Slf4j
public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStatisticsMapper, DailyTravelOrderStatistics> { public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStatisticsMapper, DailyTravelOrderStatistics> {
@Value("${order.day}")
private Integer day;
@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() { public boolean dailyTravelOrderRecord(Integer day) {
try { try {
//获取每日订单统计 //获取每日订单统计
List<DailyTravelOrderStatistics> orderStatistics = getDailyTravelOrderStatistics(); 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) {
...@@ -137,6 +65,23 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati ...@@ -137,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
...@@ -153,9 +98,10 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati ...@@ -153,9 +98,10 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati
} }
return true; return true;
} }
private List<DailyTravelOrderStatistics> getDailyTravelOrderStatistics() { public List<DailyTravelOrderStatistics> getDailyTravelOrderStatistics(Term term) {
//获取当天所有订单账目 //获取当天所有订单账目
List<OrderAccountDTO> accountList = accountBiz.getOrderAccountByOrderType(OrderTypeEnum.TOUR.getCode(), day); List<OrderAccountDTO> accountList = accountBiz.getOrderAccountByOrderType(term);
log.error("accountList:"+accountList);
if (CollectionUtils.isEmpty(accountList)) { if (CollectionUtils.isEmpty(accountList)) {
return null; return null;
} }
...@@ -227,19 +173,27 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati ...@@ -227,19 +173,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) {
...@@ -258,6 +212,7 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati ...@@ -258,6 +212,7 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati
return orderStatistics; return orderStatistics;
} }
/** /**
* 获取金额详情 * 获取金额详情
* *
...@@ -266,8 +221,8 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati ...@@ -266,8 +221,8 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati
*/ */
private ArrayList<OrderAccountDetail> getOrderAccountDetail(List<OrderAccountDTO> orderAccountDTOS) { private ArrayList<OrderAccountDetail> getOrderAccountDetail(List<OrderAccountDTO> orderAccountDTOS) {
ArrayList<OrderAccountDetail> arrayList = Lists.newArrayList(); ArrayList<OrderAccountDetail> arrayList = Lists.newArrayList();
orderAccountDTOS.parallelStream() orderAccountDTOS.stream()
.map(OrderAccount::getAccountDetail) .map(OrderAccountDTO::getAccountDetail)
.forEach(detail -> { .forEach(detail -> {
if (StringUtils.isNotBlank(detail)) { if (StringUtils.isNotBlank(detail)) {
arrayList.add(JSONUtil.toBean(detail, OrderAccountDetail.class)); arrayList.add(JSONUtil.toBean(detail, OrderAccountDetail.class));
...@@ -298,7 +253,7 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati ...@@ -298,7 +253,7 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati
*/ */
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.stream().map(OrderAccountDetail::getDeductions).forEach(e->arrayList.addAll(e));
return arrayList; return arrayList;
} }
...@@ -324,7 +279,7 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati ...@@ -324,7 +279,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,163 +55,10 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -52,163 +55,10 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
*/ */
private final Integer TYPE_OTHER = 3; private final Integer TYPE_OTHER = 3;
/**
* 统计几天前的数据
*/
@Value("${order.day}")
private Integer day;
@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获取对应的金额总和
* *
...@@ -217,6 +67,7 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -217,6 +67,7 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
* @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)
...@@ -236,8 +87,8 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -236,8 +87,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);
} }
/** /**
...@@ -246,27 +97,12 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -246,27 +97,12 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
* @return * @return
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean saveDailyVehicleOrderRecord() { public boolean dailyVehicleOrderRecord(Integer day) {
try { try {
//获取每日订单统计 //获取每日订单统计
List<DailyVehicleOrderStatistics> orderStatistics = getDailyVehicleOrderRecord(); 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) {
...@@ -276,6 +112,24 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -276,6 +112,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()
...@@ -292,10 +146,12 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -292,10 +146,12 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
* 获取所有分公司每日统计记录 * 获取所有分公司每日统计记录
* *
* @return * @return
* @param term 查询条件
*/ */
private List<DailyVehicleOrderStatistics> getDailyVehicleOrderRecord() { public List<DailyVehicleOrderStatistics> getDailyVehicleOrderRecord(Term term) {
//获取当天所有订单账目 //获取当天所有订单账目
List<OrderAccountDTO> accountList = accountBiz.getOrderAccountByOrderType(OrderTypeEnum.RENT_VEHICLE.getCode(), day); List<OrderAccountDTO> accountList = accountBiz.getOrderAccountByOrderType(term);
log.error("record:"+accountList);
if (CollectionUtils.isEmpty(accountList)) { if (CollectionUtils.isEmpty(accountList)) {
return null; return null;
} }
...@@ -355,9 +211,53 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -355,9 +211,53 @@ 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();
List<OrderAccountDeduction> oad = Collections.synchronizedList(orderAccountDeductions);
orderAccountDetail
.parallelStream()
.map(OrderAccountDetail::getDeductions)
.forEach(list->oad.addAll(list));
//获取订单实际款
BigDecimal actual = oad
.parallelStream()
.filter(o -> DeductionTypeEnum.CONSUME.getCode().equals(o.getType()))
.map(OrderAccountDeduction::getAmount)
.reduce(BigDecimal.ZERO, BigDecimal::add);
return actual.add(giveBack).subtract(payment);
} }
...@@ -370,13 +270,21 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -370,13 +270,21 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
private void refundAndDeductions(Map<Integer, List<OrderAccountDTO>> map, DailyVehicleOrderStatistics orderStatistics) { private void refundAndDeductions(Map<Integer, List<OrderAccountDTO>> map, DailyVehicleOrderStatistics orderStatistics) {
ArrayList<OrderAccountDTO> arrayList = Lists.newArrayList(); ArrayList<OrderAccountDTO> arrayList = Lists.newArrayList();
for (Integer key : map.keySet()) { for (Integer key : map.keySet()) {
if (!key.equals(AccountTypeEnum.IN_ORDER_PAY.getCode())) { if (!key.equals(AccountTypeEnum.IN_ORDER_PAY.getCode())) {
List<OrderAccountDTO> orderAccountDTOS = map.get(key);
log.error(orderAccountDTOS.toString());
arrayList.addAll(map.get(key)); arrayList.addAll(map.get(key));
} }
} }
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)) {
log.error( "orderAccountDetail"+orderAccountDetail);
//获取退还订总额 //获取退还订总额
BigDecimal returnGmv = getOrderAmountTotal(orderAccountDetail); BigDecimal returnGmv = getOrderAmountTotal(orderAccountDetail);
orderStatistics.setReturnGmv(returnGmv); orderStatistics.setReturnGmv(returnGmv);
...@@ -385,7 +293,7 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -385,7 +293,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());
}})); }}));
//获取损坏赔偿总额 //获取损坏赔偿总额
...@@ -399,10 +307,11 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -399,10 +307,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());
}})); // }}));
} }
} }
} }
...@@ -420,6 +329,7 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -420,6 +329,7 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
if (CollectionUtils.isNotEmpty(orderAccountDTOS)) { if (CollectionUtils.isNotEmpty(orderAccountDTOS)) {
ArrayList<OrderAccountDetail> orderAccountDetails = getOrderAccountDetail(orderAccountDTOS); ArrayList<OrderAccountDetail> orderAccountDetails = getOrderAccountDetail(orderAccountDTOS);
if (CollectionUtils.isNotEmpty(orderAccountDetails)) { if (CollectionUtils.isNotEmpty(orderAccountDetails)) {
System.out.println(orderAccountDetails);
//获取订单总额 //获取订单总额
BigDecimal gmv = getOrderAmountTotal(orderAccountDetails); BigDecimal gmv = getOrderAmountTotal(orderAccountDetails);
orderStatistics.setGmv(gmv); orderStatistics.setGmv(gmv);
...@@ -452,9 +362,10 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -452,9 +362,10 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
* @return * @return
*/ */
private BigDecimal getOrderAmountTotal(ArrayList<OrderAccountDetail> orderAccountDetails) { private BigDecimal getOrderAmountTotal(ArrayList<OrderAccountDetail> orderAccountDetails) {
return orderAccountDetails.stream() BigDecimal reduce = orderAccountDetails.stream()
.map(OrderAccountDetail::getOrderAmount) .map(OrderAccountDetail::getOrderAmount)
.reduce(BigDecimal.ZERO, BigDecimal::add); .reduce(BigDecimal.ZERO, BigDecimal::add);
return reduce;
} }
/** /**
...@@ -465,7 +376,7 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -465,7 +376,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.stream().map(OrderAccountDetail::getDeductions).forEach(e -> arrayList.addAll(e));
return arrayList; return arrayList;
} }
...@@ -477,8 +388,8 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -477,8 +388,8 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
*/ */
private ArrayList<OrderAccountDetail> getOrderAccountDetail(List<OrderAccountDTO> orderAccountDTOS) { private ArrayList<OrderAccountDetail> getOrderAccountDetail(List<OrderAccountDTO> orderAccountDTOS) {
ArrayList<OrderAccountDetail> arrayList = Lists.newArrayList(); ArrayList<OrderAccountDetail> arrayList = Lists.newArrayList();
orderAccountDTOS.parallelStream() orderAccountDTOS.stream()
.map(OrderAccount::getAccountDetail) .map(OrderAccountDTO::getAccountDetail)
.forEach(detail -> { .forEach(detail -> {
if (StringUtils.isNotBlank(detail)) { if (StringUtils.isNotBlank(detail)) {
arrayList.add(JSONUtil.toBean(detail, OrderAccountDetail.class)); arrayList.add(JSONUtil.toBean(detail, OrderAccountDetail.class));
......
...@@ -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;
...@@ -513,14 +514,11 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> { ...@@ -513,14 +514,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(term);
return mapper.getOrderAccountByOrderType(code,day);
} }
......
...@@ -8,15 +8,14 @@ import com.github.wxiaoqi.security.common.msg.auth.PageResult; ...@@ -8,15 +8,14 @@ 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 lombok.extern.slf4j.Slf4j;
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;
...@@ -31,71 +30,221 @@ import java.util.stream.Collectors; ...@@ -31,71 +30,221 @@ import java.util.stream.Collectors;
* @author Administrator * @author Administrator
*/ */
@Service @Service
@Slf4j
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));
OrderStatistics vehicle = vehicleBiz.findAll(companyId); list.add(getTourHomePageOrderData(companyIds));
if (vehicle != null) { list.add(getMemberHomePageOrderData(companyIds));
HomePageOrderData data = new HomePageOrderData() {{ result.setTotalOrders(list.stream().map(HomePageOrderData::getTotalOrders).reduce(BigDecimal.ZERO, BigDecimal::add));
setTotalOrders(vehicle.getTotalGmv().subtract(vehicle.getTotalReturnGmv())); result.setTotalOutstandingDeposit(list.stream().map(HomePageOrderData::getTotalOutstandingDeposit).reduce(BigDecimal.ZERO, BigDecimal::add));
setAdditionalIndemnity(vehicle.getTotalCompensation() result.setAdditionalIndemnity(list.stream().map(HomePageOrderData::getAdditionalIndemnity).reduce(BigDecimal.ZERO, BigDecimal::add));
.add(vehicle.getTotalForfeit()) return result;
.add(vehicle.getTotalDefaultMoney()) }
.add(vehicle.getTotalExpenditure().subtract(vehicle.getTotalGmv()).add(vehicle.getTotalReturnGmv())));
setTotalOutstandingDeposit(vehicle.getTotalSecurityDeposit() /**
.subtract(vehicle.getTotalRefundSecurityDeposit()) * 会员数据
.subtract(getAdditionalIndemnity())); *
}}; * @param companyIds
orderStatistics.add(data); * @return
*/
public HomePageOrderData getMemberHomePageOrderData(List<Integer> companyIds) {
//今天之前的数据
OrderStatistics member = membersBiz.findAll(companyIds);
log.error("member:"+member);
//当天的数据
OrderStatistics sameDayData = getMemberOrderDataOfTheDay(companyIds);
log.error("member:sameDayData:"+sameDayData);
if (member == null) {
member = new OrderStatistics();
} }
OrderStatistics tour = TravelBiz.findAll(companyId);
if (vehicle != null) { add(member, sameDayData);
HomePageOrderData data = new HomePageOrderData() {{
setTotalOrders(tour.getTotalGmv().subtract(tour.getTotalReturnGmv()));
setAdditionalIndemnity(tour.getTotalDefaultMoney());
}};
orderStatistics.add(data);
} OrderStatistics finalMember = member;
HomePageOrderData data = new HomePageOrderData() {{
setTotalOrders(finalMember.getTotalGmv());
}};
return data;
}
OrderStatistics member = membersBiz.findAll(companyId); /**
if (vehicle != null) { * 获取会员订单当天数据
HomePageOrderData data = new HomePageOrderData() {{ *
setTotalOrders(member.getTotalGmv()); * @param companyIds
}}; * @return
orderStatistics.add(data); */
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;
}
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)); //加上当天数据
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()));
}
result.setAdditionalIndemnity(orderStatistics.stream().map(HomePageOrderData::getAdditionalIndemnity).filter(o -> Objects.nonNull(o)).reduce(BigDecimal.ZERO, BigDecimal::add));
return result; /**
* 旅游数据
*
* @param companyIds
* @return
*/
public HomePageOrderData getTourHomePageOrderData(List<Integer> companyIds) {
//今天之前的数据
OrderStatistics tour = TravelBiz.findAll(companyIds);
log.error("tour:"+tour);
if (tour == null) {
tour = new OrderStatistics();
}
OrderStatistics sameDayData = getTourOrderDataOfTheDay(companyIds);
log.error("tour:sameDayData:"+sameDayData);
add(tour, sameDayData);
OrderStatistics finalTour = tour;
HomePageOrderData data = new HomePageOrderData() {{
setTotalOrders(finalTour.getTotalGmv().subtract(finalTour.getTotalReturnGmv()));
setAdditionalIndemnity(finalTour.getTotalDefaultMoney());
}};
return data;
} }
/**
* 获取租车订单当天数据
*
* @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;
}
/**
* 车辆数据
*
* @param companyIds
* @return
*/
public HomePageOrderData getVehicleHomePageOrderData(List<Integer> companyIds) {
//今天之前的数据
OrderStatistics vehicle = vehicleBiz.findAll(companyIds);
log.error("vehicle:"+vehicle);
if (vehicle == null) {
vehicle = new OrderStatistics();
}
OrderStatistics sameDayData = getVehicleOrderDataOfTheDay(companyIds);
log.error("vehicle:sameDayData:"+sameDayData);
add(vehicle, sameDayData);
OrderStatistics finalVehicle = vehicle;
HomePageOrderData data = new HomePageOrderData() {{
setTotalOrders(finalVehicle.getTotalGmv().subtract(finalVehicle.getTotalReturnGmv()));
setAdditionalIndemnity(finalVehicle.getTotalCompensation()
.add(finalVehicle.getTotalForfeit())
.add(finalVehicle.getTotalDefaultMoney())
.add(finalVehicle.getTotalOrderCompensation()));
setTotalOutstandingDeposit(finalVehicle.getTotalSecurityDeposit()
.subtract(finalVehicle.getTotalRefundSecurityDeposit())
.subtract(getAdditionalIndemnity()));
}};
return data;
}
/**
* 获取车来个你当天数据
*
* @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;
}
/**
* 会员统计列表
*
* @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);
//按每天分类 //按每天分类
if (CollectionUtil.isEmpty(membersOrderList)) { if (CollectionUtil.isEmpty(membersOrderList)) {
return PageResult.nowPageResult(query.getPage(),query.getLimit(),Lists.newArrayList()); return PageResult.nowPageResult(query.getPage(), query.getLimit(), Lists.newArrayList());
} }
//按每天分类 //按每天分类
if (CollectionUtil.isEmpty(memberLevels)) { if (CollectionUtil.isEmpty(memberLevels)) {
...@@ -175,17 +324,11 @@ public class OrderStatisticsBiz extends BaseBiz<OrderStatisticsMapper, OrderStat ...@@ -175,17 +324,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();
//设置时间段购买会员总金额和不同的会员名称 //设置时间段购买会员总金额和不同的会员名称
...@@ -229,6 +372,6 @@ public class OrderStatisticsBiz extends BaseBiz<OrderStatisticsMapper, OrderStat ...@@ -229,6 +372,6 @@ public class OrderStatisticsBiz extends BaseBiz<OrderStatisticsMapper, OrderStat
amount = collect.get(0).getAmount(); amount = collect.get(0).getAmount();
} }
map.put(memberLevel.getName() + "购买量", number); map.put(memberLevel.getName() + "购买量", number);
map.put("支付金额(" + memberLevel.getName() + ")",amount); map.put("支付金额(" + memberLevel.getName() + ")", amount);
} }
} }
package com.xxfc.platform.order.jobhandler; package com.xxfc.platform.order.jobhandler;
import com.xxfc.platform.order.biz.BaseOrderBiz; import com.github.wxiaoqi.security.common.exception.BaseException;
import com.google.common.collect.Lists;
import com.xxfc.platform.order.biz.DailyOrderStatisticsBiz; import com.xxfc.platform.order.biz.DailyOrderStatisticsBiz;
import com.xxfc.platform.order.biz.DailyVehicleOrderStatisticsBiz;
import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler; import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.JobHandler; import com.xxl.job.core.handler.annotation.JobHandler;
import com.xxl.job.core.log.XxlJobLogger; import com.xxl.job.core.log.XxlJobLogger;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T;
import org.joda.time.DateTime;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/** /**
* 每天2定时统计前一天的数据 * 每天2点定时统计前一天的数据
*
* @author Administrator * @author Administrator
*/ */
@JobHandler(value = "baseOrderStatisticsHandler") @JobHandler(value = "baseOrderStatisticsHandler")
...@@ -22,26 +34,100 @@ public class BaseOrderStatisticsJobHandler extends IJobHandler { ...@@ -22,26 +34,100 @@ public class BaseOrderStatisticsJobHandler extends IJobHandler {
@Autowired @Autowired
private DailyOrderStatisticsBiz statisticsBiz; private DailyOrderStatisticsBiz statisticsBiz;
@Value("${order.day:1}")
private Integer day;
/**
* 每日定时执行订单统计
*
* @param date 重新统计起止日期.可以为:起止时间(yyyy-MM-dd),开始时间/结束时间(yyyy-MM-dd/yyyy-MM-dd)
* @return
*/
@Override @Override
public ReturnT<String> execute(String s){ public ReturnT<String> execute(String date) {
try { try {
log.info("-----定时器进入---baseOrderStatisticsHandler---" + date);
XxlJobLogger.log("-----定时器进入---baseOrderStatisticsHandler---" + date);
ArrayList<Integer> arrayList = Lists.newArrayList();
if (StringUtils.isBlank(date)) {
arrayList.add(day);
} else {
arrayList = dateDifferenceSet(date);
}
log.info("获取到当前需要执行的日期,距离当前时间的天数集合" + arrayList);
XxlJobLogger.log("获取到当前需要执行的日期,距离当前时间的天数集合" + arrayList);
DateTime now = DateTime.now();
XxlJobLogger.log("-----定时器进入---baseOrderStatisticsHandler---"); for (Integer day : arrayList) {
log.info("-----定时器进入---baseOrderStatisticsHandler---"); boolean flag = statisticsBiz.statisticalOrder(day);
// boolean flag = statisticsBiz.statisticalOrder(); DateTime dateTime = now.plusDays(-day);
// if (flag) { log.info("执行状态:" + dateTime.toString("yyyy-MM-dd")+"="+flag);
return ReturnT.SUCCESS; XxlJobLogger.log("执行状态:" + dateTime.toString("yyyy-MM-dd")+"="+flag);
// } }
return new ReturnT<>(ReturnT.SUCCESS_CODE,"执行成功");
// else {
// returnT.setCode(500);
// returnT.setMsg("失败");
// return returnT;
// }
} catch (Exception e) { } catch (Exception e) {
XxlJobLogger.log(e); XxlJobLogger.log(e);
return FAIL; log.error(e.getMessage());
} finally { return new ReturnT<>(ReturnT.FAIL_CODE,"执行失败");
} }
} }
private ArrayList<Integer> dateDifferenceSet(String date) throws ParseException {
Long maxDate;
Long minDate;
Long currentTime= System.currentTimeMillis();
if (date.contains("/")) {
String[] dates = date.split("/");
Long date1 = getDateByString(dates[0]);
Long date2 = getDateByString(dates[1]);
if (date1<date2) {
maxDate=date2;
minDate=date1;
}else{
maxDate=date1;
minDate=date2;
}
if (minDate<currentTime&&maxDate>currentTime){
maxDate=currentTime;
}else if (minDate>currentTime){
throw new BaseException("设置的日期,大于当前日期!");
}
}else {
Long dt = getDateByString(date);
if (dt>currentTime) {
throw new BaseException("设置的日期,大于当前日期!");
}
minDate=dt;
maxDate=currentTime;
}
//距离今天的最大天数差
int maxDay = (int) ((currentTime-minDate)/(24*60*60*1000));
//距离今天的最小天数差
int minDay = (int) ((currentTime-maxDate)/(24*60*60*1000));
return getListByMinDayAndMaxDay(minDay,maxDay);
}
private Long getDateByString(String date) throws ParseException {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
return dateFormat.parse(date).getTime();
}
private ArrayList<Integer> getListByMinDayAndMaxDay(int minDay,int maxDay){
ArrayList<Integer> arrayList = Lists.newArrayList();
for (int day=maxDay;day>=minDay;day--){
arrayList.add(day);
}
return arrayList;
}
} }
...@@ -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>
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<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" parameterType="com.xxfc.platform.order.pojo.Term" 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.jobhandler.BaseOrderStatisticsJobHandler;
import org.joda.time.DateTime;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/** /**
* @author libin * @author libin
* @version 1.0 * @version 1.0
...@@ -19,11 +25,46 @@ public class ServiceTest { ...@@ -19,11 +25,46 @@ public class ServiceTest {
@Autowired @Autowired
private DailyOrderStatisticsBiz dailyOrderStatisticsBiz; private DailyOrderStatisticsBiz dailyOrderStatisticsBiz;
@Autowired
private BaseOrderStatisticsJobHandler handler;
@Test @Test
public void testSchedu(){ public void testSchedu(){
dailyOrderStatisticsBiz.statisticalOrder(); dailyOrderStatisticsBiz.statisticalOrder(1);
}
@Test
public void test() throws ParseException {
String d="2019-09-01";
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date parse = dateFormat.parse(d);
System.out.println(parse);
}
@Test
public void test2() {
DateTime dateTime = DateTime.parse("2019-10-10");
System.out.println(dateTime);
}
@Test
public void test3() {
DateTime dateTime = DateTime.parse("2019-10-10");
Date date = dateTime.toDate();
DateTime dateTime1 = DateTime.parse("2019-12-10");
Date date1 = dateTime1.toDate();
System.out.println(date);
System.out.println(date1);
System.out.println(date.before(date1));
System.out.println(date.after(date1));
}
@Test
public void handlerTeset() {
handler.execute("2019-09-29");
} }
} }
...@@ -67,6 +67,7 @@ public class XCFQAuthentication implements UserAuthentication { ...@@ -67,6 +67,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());
......
...@@ -10,7 +10,6 @@ import com.xxfc.platform.vehicle.pojo.dto.BranchCompanyFindDTO; ...@@ -10,7 +10,6 @@ import com.xxfc.platform.vehicle.pojo.dto.BranchCompanyFindDTO;
import com.xxfc.platform.vehicle.pojo.vo.AccompanyingItemVo; import com.xxfc.platform.vehicle.pojo.vo.AccompanyingItemVo;
import com.xxfc.platform.vehicle.pojo.vo.BranComanyLeaderVo; import com.xxfc.platform.vehicle.pojo.vo.BranComanyLeaderVo;
import com.xxfc.platform.vehicle.pojo.vo.BranchCompanyListVO; import com.xxfc.platform.vehicle.pojo.vo.BranchCompanyListVO;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -172,4 +171,6 @@ public interface VehicleFeign { ...@@ -172,4 +171,6 @@ public interface VehicleFeign {
@RequestMapping(value = "/vehicleInfo/bookRecord/update", method = RequestMethod.POST) @RequestMapping(value = "/vehicleInfo/bookRecord/update", method = RequestMethod.POST)
public ObjectRestResponse update(@RequestBody BookRecordUpdateLog bookRecordUpdateLog); public ObjectRestResponse update(@RequestBody BookRecordUpdateLog bookRecordUpdateLog);
@RequestMapping(value ="/branchCompany/app/unauth/getCompanyIds",method = RequestMethod.GET)
RestResponse<List<Integer>> getCompanyIds();
} }
...@@ -411,4 +411,8 @@ public class BranchCompanyBiz extends BaseBiz<BranchCompanyMapper, BranchCompany ...@@ -411,4 +411,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