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