瀏覽代碼

统计优化

fanzherong_v 2 月之前
父節點
當前提交
4164ce32d7

+ 7 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/consumptionrecord/controller/ConsumptionRecordController.java

@@ -134,6 +134,13 @@ public class ConsumptionRecordController {
         return CommonResult.data(consumptionRecordService.getRecordTotal());
     }
 
+    @Operation(summary = "小程序门店每日销售额统计及较昨日对比")
+    @SaCheckPermission("/biz/consumptionrecord/queryTodayRevenue")
+    @GetMapping("/biz/consumptionrecord/queryTodayRevenue")
+    public CommonResult<Map<String,Object>> queryTodayRevenue(ConsumptionRecordPageParam consumptionRecordPageParam) {
+        return CommonResult.data(consumptionRecordService.queryTodayRevenue(consumptionRecordPageParam));
+    }
+
     /**
      * 后台销售额统计
      * @return

+ 1 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/consumptionrecord/mapper/mapping/ConsumptionRecordMapper.xml

@@ -83,6 +83,7 @@
                     biz_consumption_record bcr
                 WHERE
                     bcr.delete_flag = 'NOT_DELETE'
+                and bcr.consumption_operate in('3','4')
                 GROUP BY
                     LEFT ( bcr.consumption_time, 10 )
                 ORDER BY

+ 2 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/consumptionrecord/param/ConsumptionRecordPageParam.java

@@ -67,4 +67,6 @@ public class ConsumptionRecordPageParam {
     /**推荐人id*/
     private String recordId;
 
+    private String consumptionTime;
+
 }

+ 2 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/consumptionrecord/service/ConsumptionRecordService.java

@@ -82,6 +82,8 @@ public interface ConsumptionRecordService extends IService<ConsumptionRecord> {
 
     ConsumptionResult getRecordTotal();
 
+    Map<String,Object> queryTodayRevenue(ConsumptionRecordPageParam consumptionRecordPageParam);
+
     ConsumptionResult getRecordTotal(ConsumptionRecordPageParam consumptionRecordPageParam);
 
     UserBalanceResult queryBalanceTotal(ConsumptionRecordPageParam consumptionRecordPageParam);

+ 76 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/consumptionrecord/service/impl/ConsumptionRecordServiceImpl.java

@@ -14,6 +14,7 @@ package vip.xiaonuo.biz.modular.consumptionrecord.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.PhoneUtil;
@@ -50,6 +51,7 @@ import vip.xiaonuo.dev.api.DevConfigApi;
 
 import java.io.IOException;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 
 /**
@@ -324,6 +326,80 @@ public class ConsumptionRecordServiceImpl extends ServiceImpl<ConsumptionRecordM
         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
     public ConsumptionResult getRecordTotal(ConsumptionRecordPageParam consumptionRecordPageParam) {
         QueryWrapper<ConsumptionRecord> queryWrapper = new QueryWrapper<>();