Commit 882de974 authored by hanfeng's avatar hanfeng

修改订单统计

parent 44aa7328
package com.xxfc.platform.order.pojo.account;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xxfc.platform.order.entity.OrderAccount;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.Column;
@Data
public class OrderAccountDTO extends OrderAccount {
@Column(name = "companyId")
private Integer companyId;
@Column(name = "oneDay")
private String oneDay;
}
...@@ -27,7 +27,7 @@ public class DailyOrderStatisticsBiz extends BaseBiz<DailyOrderStatisticsMapper, ...@@ -27,7 +27,7 @@ public class DailyOrderStatisticsBiz extends BaseBiz<DailyOrderStatisticsMapper,
@Scheduled(cron = "0 0 2 * * ?") @Scheduled(cron = "0 0 2 * * ?")
public boolean statisticalOrder(){ public boolean statisticalOrder(){
boolean vehicleFlag = vehicleStatisticsBiz.StatisticsOfCarRentalOrders(); boolean vehicleFlag = vehicleStatisticsBiz.saveDailyVehicleOrderRecord();
boolean travelFlag = travelStatisticsBiz.StatisticsOfTravelOrders(); boolean travelFlag = travelStatisticsBiz.StatisticsOfTravelOrders();
boolean membersFlag= membersStatisticsBiz.memberOrderStatistics(); boolean membersFlag= membersStatisticsBiz.memberOrderStatistics();
if (vehicleFlag&&travelFlag&&membersFlag){ if (vehicleFlag&&travelFlag&&membersFlag){
......
...@@ -2,17 +2,25 @@ package com.xxfc.platform.order.biz; ...@@ -2,17 +2,25 @@ package com.xxfc.platform.order.biz;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.bean.copier.CopyOptions;
import cn.hutool.db.sql.Order;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.exception.BaseException; import com.github.wxiaoqi.security.common.exception.BaseException;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.DailyOrderStatistics; import com.xxfc.platform.order.entity.DailyOrderStatistics;
import com.xxfc.platform.order.entity.DailyVehicleOrderStatistics; import com.xxfc.platform.order.entity.DailyVehicleOrderStatistics;
import com.xxfc.platform.order.entity.OrderAccount;
import com.xxfc.platform.order.entity.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.DedDetailDTO; import com.xxfc.platform.order.pojo.DedDetailDTO;
import com.xxfc.platform.order.pojo.account.OrderAccountDTO;
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.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.redisson.misc.Hash;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -34,14 +42,30 @@ import java.util.stream.Collectors; ...@@ -34,14 +42,30 @@ import java.util.stream.Collectors;
@Service @Service
@Slf4j @Slf4j
public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderStatisticsMapper, DailyVehicleOrderStatistics> { public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderStatisticsMapper, DailyVehicleOrderStatistics> {
/**
* 延期
*/
private final Integer TYPE_DEFERRED = 1; private final Integer TYPE_DEFERRED = 1;
/**
* 损坏
*/
private final Integer TYPE_DAMAGE = 2; private final Integer TYPE_DAMAGE = 2;
/**
* 其他
*/
private final Integer TYPE_OTHER = 3; private final Integer TYPE_OTHER = 3;
/**
* 统计几天前的数据
*/
@Value("${order.day}") @Value("${order.day}")
private Integer day; private Integer day;
@Autowired
private OrderAccountBiz accountBiz;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean StatisticsOfCarRentalOrders() { public boolean StatisticsOfCarRentalOrders() {
...@@ -104,15 +128,15 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -104,15 +128,15 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
if (StringUtils.isBlank(oneDay)) { if (StringUtils.isBlank(oneDay)) {
throw new BaseException(); throw new BaseException();
} }
Example exa= new Example(DailyVehicleOrderStatistics.class); Example exa = new Example(DailyVehicleOrderStatistics.class);
exa.createCriteria().andEqualTo("oneDay",oneDay); exa.createCriteria().andEqualTo("oneDay", oneDay);
List<DailyVehicleOrderStatistics> statistics= selectByExample(exa); List<DailyVehicleOrderStatistics> statistics = selectByExample(exa);
if (CollectionUtils.isEmpty(statistics)){ if (CollectionUtils.isEmpty(statistics)) {
for (Map.Entry<Integer, DailyVehicleOrderStatistics> entry : map.entrySet()) { for (Map.Entry<Integer, DailyVehicleOrderStatistics> entry : map.entrySet()) {
insertSelectiveRe(entry.getValue()); insertSelectiveRe(entry.getValue());
} }
}else { } else {
log.error("今日已统计车辆订单,请不要重复统计!"); log.error("今日已统计车辆订单,请不要重复统计!");
} }
} }
...@@ -185,7 +209,7 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -185,7 +209,7 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
} }
return new ArrayList<>(); return new ArrayList<>();
} }
/****************************************************************************************************************************/
/** /**
* 根据type获取对应的金额总和 * 根据type获取对应的金额总和
...@@ -205,6 +229,11 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -205,6 +229,11 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
return BigDecimal.ZERO; return BigDecimal.ZERO;
} }
/***
* 添加每日记录
* @param entity
* @return
*/
@Override @Override
public int insertSelectiveRe(DailyVehicleOrderStatistics entity) { public int insertSelectiveRe(DailyVehicleOrderStatistics entity) {
...@@ -212,7 +241,76 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta ...@@ -212,7 +241,76 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
return mapper.insertSelective(entity); return mapper.insertSelective(entity);
} }
public OrderStatistics findAll(Integer companyId) { public OrderStatistics findAll(Integer companyId) {
return mapper.monthOrderTotal(companyId); return mapper.monthOrderTotal(companyId);
} }
@Transactional(rollbackFor = Exception.class)
public boolean saveDailyVehicleOrderRecord() {
try {
//获取每日订单统计
DailyVehicleOrderStatistics orderStatistics = getDailyVehicleOrderRecord();
//保存统计
insertSelectiveRe(orderStatistics);
return true;
} catch (Exception e) {
log.error(e.getMessage());
return false;
}
}
private DailyVehicleOrderStatistics getDailyVehicleOrderRecord() {
//获取当天所有订单账目
List<OrderAccountDTO> accountList = accountBiz.getOrderAccountByOrderType(OrderTypeEnum.RENT_VEHICLE.getCode(), day);
if (CollectionUtils.isEmpty(accountList)) {
return new DailyVehicleOrderStatistics();
}
//获取每个分公司当天所有的订单帐目
HashMap<Integer, List<OrderAccountDTO>> map = new HashMap<>();
for (OrderAccountDTO orderAccountDTO : accountList) {
List<OrderAccountDTO> list = map.get(orderAccountDTO.getCompanyId());
if (list == null) {
list = new ArrayList<>();
}
list.add(orderAccountDTO);
}
//获取每个公司当天订单的总数据
ArrayList<DailyVehicleOrderStatistics> statistics = new ArrayList<>();
for (Map.Entry<Integer, List<OrderAccountDTO>> integerListEntry : map.entrySet()) {
//获取账单详情
ArrayList<OrderAccountDetail> arrayList = new ArrayList<>();
List<OrderAccountDTO> orderAccountDTOS = integerListEntry.getValue();
orderAccountDTOS
.parallelStream()
.map(OrderAccount::getAccountDetail)
.forEach(a -> {
if (StringUtils.isNotBlank(a)) {
arrayList.add(JSONUtil.toBean(a, OrderAccountDetail.class));
}
});
//获取该公司当天的账单数据
if (CollectionUtils.isNotEmpty(orderAccountDTOS)) {
DailyVehicleOrderStatistics dvos = getStatisticsByOrderAccountDetail(arrayList);
if (dvos != null) {
statistics.add(dvos);
dvos.setBranchCompanyId(integerListEntry.getKey());
dvos.setOneDay(orderAccountDTOS.get(0).getOneDay());
}
}
}
}
private DailyVehicleOrderStatistics getStatisticsByOrderAccountDetail(ArrayList<OrderAccountDetail> arrayList) {
DailyVehicleOrderStatistics orderStatistics = new DailyVehicleOrderStatistics();
arrayList.
}
} }
...@@ -10,7 +10,7 @@ import com.xxfc.platform.order.contant.enumerate.RefundStatusEnum; ...@@ -10,7 +10,7 @@ import com.xxfc.platform.order.contant.enumerate.RefundStatusEnum;
import com.xxfc.platform.order.contant.enumerate.RefundTypeEnum; import com.xxfc.platform.order.contant.enumerate.RefundTypeEnum;
import com.xxfc.platform.order.entity.BaseOrder; import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderItem; import com.xxfc.platform.order.entity.OrderItem;
import com.xxfc.platform.order.entity.OrderRefund; 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 com.xxfc.platform.universal.entity.Dictionary; import com.xxfc.platform.universal.entity.Dictionary;
...@@ -25,9 +25,9 @@ import com.xxfc.platform.order.entity.OrderAccount; ...@@ -25,9 +25,9 @@ import com.xxfc.platform.order.entity.OrderAccount;
import com.xxfc.platform.order.mapper.OrderAccountMapper; import com.xxfc.platform.order.mapper.OrderAccountMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import javax.xml.ws.Action;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
...@@ -202,4 +202,16 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> { ...@@ -202,4 +202,16 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
return refundStatus; return refundStatus;
} }
/**
* 获取每日订单账目,用于统计
* @param code
* @param day
* @return
*/
public List<OrderAccountDTO> getOrderAccountByOrderType(Integer code, Integer day) {
return mapper.getOrderAccountByOrderType(code,day);
}
} }
\ No newline at end of file
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.account.OrderAccountDTO;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import java.util.List;
/** /**
* 订单帐目 * 订单帐目
* *
...@@ -11,5 +16,6 @@ import tk.mybatis.mapper.common.Mapper; ...@@ -11,5 +16,6 @@ import tk.mybatis.mapper.common.Mapper;
* @date 2019-09-09 15:51:16 * @date 2019-09-09 15:51:16
*/ */
public interface OrderAccountMapper extends Mapper<OrderAccount> { public interface OrderAccountMapper extends Mapper<OrderAccount> {
List<OrderAccountDTO> getOrderAccountByOrderType(@Param("type") Integer type, @Param("day") Integer day);
} }
<?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">
<mapper namespace="com.xxfc.platform.order.mapper.OrderAccountMapper">
<select id="getOrderAccountByOrderType" resultType="com.xxfc.platform.order.pojo.account.OrderAccountDTO">
SELECT
date(DATE_SUB(now(),interval #{day} day)) as oneDay,
a.*
<if test="type != null and type == 1">
, v.start_company_id as companyId
</if>
<if test="type != null and type == 2">
, t.start_company_id as companyId
</if>
FROM
order_account a
LEFT JOIN base_order b ON a.order_id = b.id
<if test="type != null and type==1">
LEFT JOIN order_rent_vehicle_detail v ON b.id = v.order_id
</if>
<if test="type != null and type==2">
LEFT JOIN order_tour_detail t ON b.id = t.order_id
</if>
WHERE
a.account_status=1
AND
b.type = #{type}
AND date( FROM_UNIXTIME( a.crt_time / 1000 ) ) = date( DATE_SUB( now( ), INTERVAL #{day} DAY ) )
</select>
</mapper>
\ No newline at end of file
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