|
@@ -14,6 +14,7 @@ package vip.xiaonuo.biz.modular.consumptionrecord.service.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.collection.CollStreamUtil;
|
|
import cn.hutool.core.collection.CollStreamUtil;
|
|
|
|
+import cn.hutool.core.date.DateTime;
|
|
import cn.hutool.core.date.DateUtil;
|
|
import cn.hutool.core.date.DateUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.PhoneUtil;
|
|
import cn.hutool.core.util.PhoneUtil;
|
|
@@ -50,6 +51,7 @@ import vip.xiaonuo.dev.api.DevConfigApi;
|
|
|
|
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
|
|
+import java.math.RoundingMode;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -324,6 +326,80 @@ public class ConsumptionRecordServiceImpl extends ServiceImpl<ConsumptionRecordM
|
|
return this.getBaseMapper().getRecordTotal(queryWrapper);
|
|
return this.getBaseMapper().getRecordTotal(queryWrapper);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public Map<String, Object> queryTodayRevenue(ConsumptionRecordPageParam consumptionRecordPageParam) {
|
|
|
|
+ if(ObjectUtil.isEmpty(consumptionRecordPageParam.getConsumptionTime())){
|
|
|
|
+ throw new CommonException("时间不能为空!");
|
|
|
|
+ }
|
|
|
|
+ Map<String,Object> map = Maps.newHashMap();
|
|
|
|
+ QueryWrapper<ConsumptionRecord> todayQuery = getQueryWrapper(consumptionRecordPageParam);
|
|
|
|
+ ConsumptionResult todayTotal = this.getBaseMapper().getRecordTotal(todayQuery);
|
|
|
|
+ map.put("orderTotal",todayTotal.getOrderCount());
|
|
|
|
+ map.put("accountTotal",todayTotal.getOrderMoney());
|
|
|
|
+ String format = DateUtil.format(DateUtil.offsetDay(DateUtil.parseDate(consumptionRecordPageParam.getConsumptionTime()), -1), "yyyy-MM-dd");
|
|
|
|
+ consumptionRecordPageParam.setConsumptionTime(format);
|
|
|
|
+ QueryWrapper<ConsumptionRecord> yesQuery = getQueryWrapper(consumptionRecordPageParam);
|
|
|
|
+ ConsumptionResult yesTotal = this.getBaseMapper().getRecordTotal(yesQuery);
|
|
|
|
+ if(todayTotal.getOrderCount().compareTo(yesTotal.getOrderCount()) >= 0){
|
|
|
|
+ map.put("orderFlag","rise");
|
|
|
|
+ map.put("orderContrast",todayTotal.getOrderCount()-yesTotal.getOrderCount());
|
|
|
|
+ if(todayTotal.getOrderCount()!=0 && yesTotal.getOrderCount()!=0){
|
|
|
|
+ map.put("orderPercent",((todayTotal.getOrderCount()-yesTotal.getOrderCount())/yesTotal.getOrderCount())*100);
|
|
|
|
+ }else{
|
|
|
|
+ map.put("orderPercent",0);
|
|
|
|
+ }
|
|
|
|
+ }else{
|
|
|
|
+ map.put("orderFlag","decline");
|
|
|
|
+ map.put("orderContrast",yesTotal.getOrderCount()-todayTotal.getOrderCount());
|
|
|
|
+ if(todayTotal.getOrderCount()!=0 && yesTotal.getOrderCount()!=0){
|
|
|
|
+ map.put("orderPercent",((yesTotal.getOrderCount()-todayTotal.getOrderCount())/yesTotal.getOrderCount())*100);
|
|
|
|
+ }else{
|
|
|
|
+ map.put("orderPercent",0);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ BigDecimal todayMoney = todayTotal.getOrderMoney();
|
|
|
|
+ BigDecimal yesMoney = yesTotal.getOrderMoney();
|
|
|
|
+ if(todayTotal.getOrderMoney().compareTo(yesTotal.getOrderMoney()) > 0){
|
|
|
|
+ map.put("accountFlag","rise");
|
|
|
|
+ map.put("accountContrast",todayMoney.subtract(yesMoney));
|
|
|
|
+
|
|
|
|
+ if(todayMoney.compareTo(BigDecimal.ZERO)!=0 && yesMoney.compareTo(BigDecimal.ZERO) !=0){
|
|
|
|
+ map.put("accountPercent",(todayMoney.subtract(yesMoney)).divide(yesMoney).multiply(new BigDecimal(100)).setScale(1, RoundingMode.HALF_UP));
|
|
|
|
+ }else{
|
|
|
|
+ map.put("accountPercent",0);
|
|
|
|
+ }
|
|
|
|
+ }else{
|
|
|
|
+ map.put("accountFlag","decline");
|
|
|
|
+ map.put("accountContrast",yesMoney.subtract(todayMoney));
|
|
|
|
+
|
|
|
|
+ if(todayMoney.compareTo(BigDecimal.ZERO)!=0 && yesMoney.compareTo(BigDecimal.ZERO) !=0){
|
|
|
|
+ map.put("accountPercent",(yesMoney.subtract(todayMoney)).divide(yesMoney).multiply(new BigDecimal(100)).setScale(1,RoundingMode.HALF_UP));
|
|
|
|
+ }else{
|
|
|
|
+ map.put("accountPercent",0);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return map;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public QueryWrapper<ConsumptionRecord> getQueryWrapper(ConsumptionRecordPageParam consumptionRecordPageParam){
|
|
|
|
+ QueryWrapper<ConsumptionRecord> queryWrapper = new QueryWrapper<>();
|
|
|
|
+ if(ObjectUtil.isNotEmpty(consumptionRecordPageParam.getConsumptionTime())){
|
|
|
|
+ queryWrapper.between("bcr.consumption_time",consumptionRecordPageParam.getConsumptionTime()+" 00:00:00",
|
|
|
|
+ consumptionRecordPageParam.getConsumptionTime()+" 23:59:59");
|
|
|
|
+ }
|
|
|
|
+ // 校验数据范围
|
|
|
|
+ List<String> loginUserDataScope = StpLoginUserUtil.getLoginUserDataScope();
|
|
|
|
+ if (ObjectUtil.isNotEmpty(loginUserDataScope)) {
|
|
|
|
+ queryWrapper.in("bcr.consumption_org", loginUserDataScope);
|
|
|
|
+ }else{
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ queryWrapper.eq("bcr.DELETE_FLAG","NOT_DELETE");
|
|
|
|
+ queryWrapper.in("bcr.consumption_operate",'3','4');
|
|
|
|
+ return queryWrapper;
|
|
|
|
+ }
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public ConsumptionResult getRecordTotal(ConsumptionRecordPageParam consumptionRecordPageParam) {
|
|
public ConsumptionResult getRecordTotal(ConsumptionRecordPageParam consumptionRecordPageParam) {
|
|
QueryWrapper<ConsumptionRecord> queryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<ConsumptionRecord> queryWrapper = new QueryWrapper<>();
|