From f7ea5773570beb5ad8c6efb5c1cf743294ee079b Mon Sep 17 00:00:00 2001
From: wzy <wzy19931122ai@163.com>
Date: Sun, 24 Jan 2021 14:16:04 +0800
Subject: [PATCH] modify
---
zq-erp/src/main/java/com/matrix/system/hive/service/imp/DataAnalysisCustomerServiceImpl.java | 192 ++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 192 insertions(+), 0 deletions(-)
diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/DataAnalysisCustomerServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/DataAnalysisCustomerServiceImpl.java
new file mode 100644
index 0000000..1b11435
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/DataAnalysisCustomerServiceImpl.java
@@ -0,0 +1,192 @@
+package com.matrix.system.hive.service.imp;
+
+import com.matrix.core.constance.MatrixConstance;
+import com.matrix.core.pojo.AjaxResult;
+import com.matrix.core.tools.WebUtil;
+import com.matrix.system.app.dto.VipStatisticsParamDto;
+import com.matrix.system.common.bean.SysCompany;
+import com.matrix.system.common.bean.SysUsers;
+import com.matrix.system.common.dao.SysCompanyDao;
+import com.matrix.system.common.dao.SysUsersDao;
+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.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+/**
+ * @author wzy
+ * @date 2020-12-30
+ **/
+@Service
+public class DataAnalysisCustomerServiceImpl {
+
+ @Autowired
+ private SysShopInfoDao shopInfoDao;
+
+ @Autowired
+ private SysCompanyDao sysCompanyDao;
+
+ @Autowired
+ private SysUsersDao sysUsersDao;
+
+ /**
+ * 按店铺查询数据通用格式执行方法,支持时、日、月、年维度
+ * 如: A店铺 B店铺
+ * 2020-01-01 12 13
+ * 2020-02-02 10 11
+ *
+ * @param statisticsParam 时间条件
+ * @param caculate 循环调用caculate计算该店的数据
+ * 查询的数据需满足 只有一个门店只有一行 列名称为 t0,t1,t2
+ * @return
+ */
+ public AjaxResult getAnalysisResult(StatisticsParamVo statisticsParam, Caculate caculate) {
+ AjaxResult result = new AjaxResult();
+
+ //根据计算横坐标
+ List<Date> xAxis = StatisticsTimeUtil.getTimeSpace(statisticsParam.getBeginTime(), statisticsParam.getEndTime(), statisticsParam.getStatisticsUnit());
+
+ //获取所有门店
+ SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+ List<SysShopInfo> shops = null;
+ if (statisticsParam.getShopId() != null) {
+ shops = Arrays.asList(shopInfoDao.selectById(user.getShopId()));
+ } else {
+ if (DataAuthUtil.hasAllShopAuth()) {
+ shops = shopInfoDao.selectShopInfo(user.getCompanyId());
+ } else {
+ shops = Arrays.asList(shopInfoDao.selectById(user.getShopId()));
+ }
+ }
+ //定义数据项内容
+ List<SeriesVo> series = new ArrayList<>();
+
+ //定义数据主体
+ String[] legendData = new String[shops.size()];
+
+ 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 = caculate.exec(timeSpaceParam, shop.getId(), null);
+ //把统计结果转成数组格式
+ storeInfoSeries.setData(StatisticsTimeUtil.getSeries(yAxisMap));
+ series.add(storeInfoSeries);
+
+ }
+ //构造返回对象
+ Map<Object, Object> data = new HashMap<>();
+ data.put("legendData", legendData);
+ data.put("series", series);
+ String[] xData = StatisticsTimeUtil.getFormartDateList(xAxis, statisticsParam);
+ data.put("xAxis", Arrays.copyOf(xData, xData.length - 1));
+ result.setMapInfo(data);
+ result.setStatus(AjaxResult.STATUS_SUCCESS);
+ return result;
+ }
+
+ public AjaxResult getCompanyAnalysisResult(StatisticsParamVo statisticsParam, Caculate caculate) {
+ AjaxResult result = new AjaxResult();
+
+ //根据计算横坐标
+ List<Date> xAxis = StatisticsTimeUtil.getTimeSpace(statisticsParam.getBeginTime(), statisticsParam.getEndTime(), statisticsParam.getStatisticsUnit());
+
+ //获取所有门店
+ SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+
+ SysCompany company = sysCompanyDao.selectById(user.getCompanyId());
+
+ //定义数据项内容
+ List<SeriesVo> series = new ArrayList<>();
+
+ //定义数据主体
+ String[] legendData = new String[1];
+
+ int i = 0;
+
+ //按门店统计数据
+ List<StatisticsTimeDaoParam> timeSpaceParam = StatisticsTimeUtil.buidParam(xAxis);
+
+ legendData[0] = company.getComName();
+ //数据项内容
+ SeriesVo storeInfoSeries = new SeriesVo();
+ storeInfoSeries.setName(company.getComName());
+ //调用计算器获取数据库统计的结果
+ Map<String, Integer> yAxisMap = caculate.exec(timeSpaceParam, null, company.getComId());
+ //把统计结果转成数组格式
+ storeInfoSeries.setData(StatisticsTimeUtil.getSeries(yAxisMap));
+ series.add(storeInfoSeries);
+
+ //构造返回对象
+ Map<Object, Object> data = new HashMap<>();
+ data.put("legendData", legendData);
+ data.put("series", series);
+ String[] xData = StatisticsTimeUtil.getFormartDateList(xAxis, statisticsParam);
+ data.put("xAxis", Arrays.copyOf(xData, xData.length - 1));
+ result.setMapInfo(data);
+ result.setStatus(AjaxResult.STATUS_SUCCESS);
+ return result;
+ }
+
+ public AjaxResult getStaffAnalysisResult(VipStatisticsParamDto statisticsParam, Caculate caculate) {
+ AjaxResult result = new AjaxResult();
+
+ //根据计算横坐标
+ List<Date> xAxis = StatisticsTimeUtil.getTimeSpace(statisticsParam.getBeginTime(), statisticsParam.getEndTime(), statisticsParam.getStatisticsUnit());
+
+ //获取所有门店
+ SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+
+ Long staffId = null;
+ if (statisticsParam.getStaffId() == null) {
+ staffId = user.getSuId();
+ } else {
+ staffId = statisticsParam.getStaffId();
+ }
+ SysUsers sysUsers = sysUsersDao.selectById(staffId);
+
+ //定义数据项内容
+ List<SeriesVo> series = new ArrayList<>();
+
+ //定义数据主体
+ String[] legendData = new String[1];
+
+ int i = 0;
+
+ //按门店统计数据
+ List<StatisticsTimeDaoParam> timeSpaceParam = StatisticsTimeUtil.buidParam(xAxis);
+
+ legendData[0] = sysUsers.getSuName();
+ //数据项内容
+ SeriesVo storeInfoSeries = new SeriesVo();
+ storeInfoSeries.setName(sysUsers.getSuName());
+ //调用计算器获取数据库统计的结果
+ Map<String, Integer> yAxisMap = caculate.exec(timeSpaceParam, null, sysUsers.getSuId());
+ //把统计结果转成数组格式
+ storeInfoSeries.setData(StatisticsTimeUtil.getSeries(yAxisMap));
+ series.add(storeInfoSeries);
+
+ //构造返回对象
+ Map<Object, Object> data = new HashMap<>();
+ data.put("legendData", legendData);
+ data.put("series", series);
+ StatisticsParamVo statisticsParam1 = new StatisticsParamVo();
+ statisticsParam1.setStatisticsUnit(statisticsParam.getStatisticsUnit());
+ String[] xData = StatisticsTimeUtil.getFormartDateList(xAxis, statisticsParam1);
+ data.put("xAxis", Arrays.copyOf(xData, xData.length - 1));
+ result.setMapInfo(data);
+ result.setStatus(AjaxResult.STATUS_SUCCESS);
+ return result;
+ }
+}
--
Gitblit v1.9.1