|
@@ -3103,6 +3103,97 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
|
|
|
return rateVo;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public List<TopOrderCustomerVo> getCustomerList() {
|
|
|
+ return baseMapper.getCustomerList();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public TopOrderTotalVo getOrderTotal(TopOrderStatisticsBo bo) {
|
|
|
+ TopOrderTotalVo resultVo = new TopOrderTotalVo();
|
|
|
+ //筛选时间处理
|
|
|
+ if (ObjectUtils.isNull(bo.getTimeSign()) && ObjectUtils.isNull(bo.getStartTime()) && ObjectUtils.isNull(bo.getEndTime())){
|
|
|
+ //没有选择时间范围,默认为当前时间向前推30天
|
|
|
+ Long nowTime = DateUtils.getNowTime();
|
|
|
+ Long dayBefore = DateUtils.getDayBefore(nowTime, 30);
|
|
|
+ bo.setStartTime(dayBefore);
|
|
|
+ bo.setEndTime(nowTime);
|
|
|
+ }else if (ObjectUtils.isNotNull(bo.getTimeSign())){
|
|
|
+ switch (bo.getTimeSign()){
|
|
|
+ case 1://本周
|
|
|
+ Map<String, Long> timeInterval = DateUtils.getTimeInterval(new Date());
|
|
|
+ bo.setStartTime(timeInterval.get("start"));
|
|
|
+ bo.setEndTime(timeInterval.get("end"));
|
|
|
+ break;
|
|
|
+ case 2://本月
|
|
|
+ Long toMonthZeroTime = DateUtils.getToMonthZeroTime();
|
|
|
+ bo.setStartTime(toMonthZeroTime);
|
|
|
+ bo.setEndTime(DateUtils.getNowTime());
|
|
|
+ break;
|
|
|
+ case 3://本年
|
|
|
+ Long toYearZeroTime = DateUtils.getToYearZeroTime();
|
|
|
+ bo.setStartTime(toYearZeroTime);
|
|
|
+ bo.setEndTime(DateUtils.getNowTime());
|
|
|
+ break;
|
|
|
+ default :
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ TopOrderStatisticsDetailTotalVo totalVo = baseMapper.getDetailStatisticsTotal(bo.getStartTime(),bo.getEndTime());
|
|
|
+ resultVo.setOrderNum(totalVo.getOrderNumTotal());
|
|
|
+ resultVo.setMoney(totalVo.getMoneyTotal());
|
|
|
+ BigDecimal moneyTotal = totalVo.getMoneyTotal();
|
|
|
+ Long numTotal = totalVo.getOrderNumTotal();
|
|
|
+ //环比
|
|
|
+ Long startTime = bo.getStartTime();
|
|
|
+ Long endTime = bo.getEndTime();
|
|
|
+ Long time = endTime - startTime;
|
|
|
+ Long timeTwo =startTime - time;
|
|
|
+ TopOrderStatisticsDetailTotalVo totalVoTwo = baseMapper.getDetailStatisticsTotal(timeTwo,startTime);
|
|
|
+ if (ObjectUtils.isNotNull(totalVoTwo)){
|
|
|
+ BigDecimal money = totalVoTwo.getMoneyTotal();
|
|
|
+ if (ObjectUtils.isNull(money)){
|
|
|
+ resultVo.setMoneyYearRate(moneyTotal);
|
|
|
+ }else if (money.compareTo(BigDecimal.ZERO) > 0){
|
|
|
+ BigDecimal subtract = moneyTotal.subtract(money);
|
|
|
+ BigDecimal divide = subtract.divide(money,2, RoundingMode.HALF_UP);
|
|
|
+ resultVo.setMoneyWeekRate(divide.multiply(new BigDecimal("100")));
|
|
|
+ }
|
|
|
+ Long num = totalVoTwo.getOrderNumTotal();
|
|
|
+ if (ObjectUtils.isNull(num)){
|
|
|
+ resultVo.setYearRate(new BigDecimal(numTotal));
|
|
|
+ }else if (num > 0){
|
|
|
+ Long subtract = numTotal - num;
|
|
|
+ BigDecimal divide = new BigDecimal(subtract).divide(new BigDecimal(num),2, RoundingMode.HALF_UP);
|
|
|
+ resultVo.setWeekRate(divide.multiply(new BigDecimal("100")));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //同比
|
|
|
+ Long startBefore = DateUtils.getDayBefore(bo.getStartTime(), 365);
|
|
|
+ Long endBefore = DateUtils.getDayBefore(bo.getEndTime(), 365);
|
|
|
+ TopOrderStatisticsDetailTotalVo totalVo3 = baseMapper.getDetailStatisticsTotal(startBefore,endBefore);
|
|
|
+ if (ObjectUtils.isNotNull(totalVo3)){
|
|
|
+ BigDecimal money = totalVo3.getMoneyTotal();
|
|
|
+ if (ObjectUtils.isNull(money)){
|
|
|
+ resultVo.setMoneyYearRate(moneyTotal);
|
|
|
+ }else if (money.compareTo(BigDecimal.ZERO) > 0){
|
|
|
+ BigDecimal subtract = moneyTotal.subtract(money);
|
|
|
+ BigDecimal divide = subtract.divide(money,2, RoundingMode.HALF_UP);
|
|
|
+ resultVo.setMoneyYearRate(divide.multiply(new BigDecimal("100")));
|
|
|
+ }
|
|
|
+ Long num = totalVo3.getOrderNumTotal();
|
|
|
+ if (ObjectUtils.isNull(num)){
|
|
|
+ resultVo.setYearRate(new BigDecimal(numTotal));
|
|
|
+ }else if (num > 0){
|
|
|
+ Long subtract = numTotal - num;
|
|
|
+ BigDecimal divide = new BigDecimal(subtract).divide(new BigDecimal(num),2, RoundingMode.HALF_UP);
|
|
|
+ resultVo.setYearRate(divide.multiply(new BigDecimal("100")));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return resultVo;
|
|
|
+ }
|
|
|
+
|
|
|
private List<Long> getDayTime(Long startTime,Long endTime){
|
|
|
List<Long> tiemList = new ArrayList<>();
|
|
|
Long zeroTime = DateUtils.getScheduleTimeZeroTime(startTime);
|