From 217d44093f6c4e908faa227073de74f2eb54f513 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Mon, 28 Dec 2020 11:15:49 +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