From c554c7ad5405bafa149dbb6429e8245f78b33ffc Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Wed, 23 Dec 2020 15:59:53 +0800
Subject: [PATCH] modify

---
 zq-erp/src/main/java/com/matrix/system/hiveErp/action/DataAnalysisCustomer.java |   90 +++++++++++++++++++++++++++++++++++++++------
 1 files changed, 78 insertions(+), 12 deletions(-)

diff --git a/zq-erp/src/main/java/com/matrix/system/hiveErp/action/DataAnalysisCustomer.java b/zq-erp/src/main/java/com/matrix/system/hiveErp/action/DataAnalysisCustomer.java
index 6703ad4..69a4dc0 100644
--- a/zq-erp/src/main/java/com/matrix/system/hiveErp/action/DataAnalysisCustomer.java
+++ b/zq-erp/src/main/java/com/matrix/system/hiveErp/action/DataAnalysisCustomer.java
@@ -4,12 +4,12 @@
 import com.matrix.core.pojo.AjaxResult;
 import com.matrix.core.tools.WebUtil;
 import com.matrix.system.common.bean.SysUsers;
+import com.matrix.system.common.tools.DataAuthUtil;
 import com.matrix.system.hive.bean.SysShopInfo;
 import com.matrix.system.hive.dao.SysShopInfoDao;
-import com.matrix.system.hiveErp.analysUtil.SeriesVo;
-import com.matrix.system.hiveErp.analysUtil.StatisticsParamVo;
+import com.matrix.system.hiveErp.analysUtil.*;
 import com.matrix.system.hiveErp.dao.TjVipSumDao;
-import com.matrix.system.hiveErp.analysUtil.StatisticsTimeUtil;
+import org.jetbrains.annotations.NotNull;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -41,9 +41,71 @@
      * @param statisticsParam
      * @return
      */
-    @RequestMapping(value = "customerHeadCompare")
-    public @ResponseBody  AjaxResult vipVisitCompare(StatisticsParamVo statisticsParam) {
+    @RequestMapping(value = "/customerHeadCompare")
+    public @ResponseBody  AjaxResult customerHeadCompare(StatisticsParamVo statisticsParam) {
+        return getAnalysisResult(statisticsParam, new Caculate() {
+            @Override
+            public Map<String, Integer> exec(List<StatisticsTimeDaoParam> timeSpaceParam, Long shopId) {
+                //从员工业绩统计表中,按时间段,门店的维度统计人头数
+                return tjVipSumDao.customerHeadCompare(timeSpaceParam,shopId);
+            }
+        });
+    }
 
+    /**
+     * 会员人次统计
+     * 业务说明:
+     * 一个会员在一天进店一次或者多次即为一个人次
+     * @param statisticsParam
+     * @return
+     */
+    @RequestMapping(value = "/customerEnterCountCompare")
+    public @ResponseBody  AjaxResult customerEnterCountCompare(StatisticsParamVo statisticsParam) {
+        return getAnalysisResult(statisticsParam, new Caculate() {
+            @Override
+            public Map<String, Integer> exec(List<StatisticsTimeDaoParam> timeSpaceParam, Long shopId) {
+                //从员工业绩统计表中,按时间段,门店的维度统计人次
+                return tjVipSumDao.customerEnterCountCompare(timeSpaceParam,shopId);
+            }
+        });
+    }
+
+
+    /**
+     * 到店率
+     * 业务说明:
+     * 门店所有客户人次数除以人头数
+     * @param statisticsParam
+     * @return
+     */
+    @RequestMapping(value = "/customerEnterRateCompare")
+    public @ResponseBody  AjaxResult customerEnterRateCompare(StatisticsParamVo statisticsParam) {
+        return getAnalysisResult(statisticsParam, new Caculate() {
+            @Override
+            public Map<String, Integer> exec(List<StatisticsTimeDaoParam> timeSpaceParam, Long shopId) {
+                //从员工业绩统计表中,按时间段,门店的维度统计人次
+                return tjVipSumDao.customerEnterRateCompare(timeSpaceParam,shopId);
+            }
+        });
+    }
+
+
+
+
+
+
+
+    /**
+     *  按店铺查询数据通用格式执行方法,支持时、日、月、年维度
+     *  如:              A店铺    B店铺
+     *     2020-01-01     12     13
+     *     2020-02-02     10     11
+     * @param statisticsParam 时间条件
+     * @param caculate  循环调用caculate计算该店的数据
+     *                  查询的数据需满足  只有一个门店只有一行 列名称为 t0,t1,t2
+     * @return
+     */
+    private AjaxResult getAnalysisResult(StatisticsParamVo statisticsParam, Caculate caculate) {
         AjaxResult result = new AjaxResult();
 
         //根据计算横坐标
@@ -51,8 +113,12 @@
 
         //获取所有门店
         SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
-        List<SysShopInfo> shops= shopInfoDao.selectShopInfo(user.getCompanyId());
-
+        List<SysShopInfo> shops=null;
+        if(DataAuthUtil.hasAllShopAuth()){
+            shops= shopInfoDao.selectShopInfo(user.getCompanyId());
+        }else{
+            shops=Arrays.asList(shopInfoDao.selectById(user.getShopId()));
+        }
         //定义数据项内容
         List<SeriesVo> series=new ArrayList<>();
 
@@ -62,16 +128,16 @@
         int i=0;
 
         //按门店统计数据
+        List<StatisticsTimeDaoParam> timeSpaceParam = StatisticsTimeUtil.buidParam(xAxis);
         for(SysShopInfo shop: shops){
 
             legendData[i++]=shop.getShopName();
-
+            //数据项内容
             SeriesVo storeInfoSeries=new SeriesVo();
             storeInfoSeries.setName(shop.getShopName());
-
-            //从员工业绩统计表中,按时间段,门店的维度统计人头数
-            Map<String, Integer> yAxisMap = tjVipSumDao.countVisitByTime(StatisticsTimeUtil.buidParam(xAxis),shop.getId());
-
+            //调用计算器获取数据库统计的结果
+            Map<String, Integer> yAxisMap = caculate.exec(timeSpaceParam,shop.getId());
+            //把统计结果转成数组格式
             storeInfoSeries.setData(StatisticsTimeUtil.getSeries(yAxisMap));
             series.add(storeInfoSeries);
 

--
Gitblit v1.9.1