From eab874580586bb589d73f61df7a4ce10252a0110 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Wed, 30 Dec 2020 15:23:58 +0800
Subject: [PATCH] modify
---
zq-erp/src/main/java/com/matrix/system/common/interceptor/ApiUserLoginInterceptor.java | 2
zq-erp/src/main/java/com/matrix/system/hiveErp/dao/TjVipSumDao.java | 3
zq-erp/src/main/java/com/matrix/system/app/action/ApiStatisticsAction.java | 27 +++++
zq-erp/src/main/java/com/matrix/system/hiveErp/analysUtil/StatisticsParamVo.java | 19 +++
zq-erp/src/main/resources/mybatis/mapper/hive/TjVipSumDao.xml | 20 ++++
zq-erp/src/main/java/com/matrix/system/hiveErp/action/DataAnalysisCustomer.java | 73 +------------
zq-erp/src/main/java/com/matrix/system/hive/service/imp/DataAnalysisCustomerServiceImpl.java | 132 ++++++++++++++++++++++++++
zq-erp/src/main/java/com/matrix/system/hiveErp/analysUtil/Caculate.java | 4
8 files changed, 210 insertions(+), 70 deletions(-)
diff --git a/zq-erp/src/main/java/com/matrix/system/app/action/ApiStatisticsAction.java b/zq-erp/src/main/java/com/matrix/system/app/action/ApiStatisticsAction.java
index 0690c32..60d4d22 100644
--- a/zq-erp/src/main/java/com/matrix/system/app/action/ApiStatisticsAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/app/action/ApiStatisticsAction.java
@@ -7,12 +7,21 @@
import com.matrix.system.hive.action.util.QueryUtil;
import com.matrix.system.hive.bean.SysBusinessData;
import com.matrix.system.hive.dao.SysBusinessDataDao;
+import com.matrix.system.hive.service.imp.DataAnalysisCustomerServiceImpl;
+import com.matrix.system.hiveErp.analysUtil.Caculate;
+import com.matrix.system.hiveErp.analysUtil.StatisticsParamVo;
+import com.matrix.system.hiveErp.analysUtil.StatisticsTimeDaoParam;
+import com.matrix.system.hiveErp.dao.TjVipSumDao;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
/**
* @author wzy
@@ -24,7 +33,13 @@
public class ApiStatisticsAction {
@Autowired
+ TjVipSumDao tjVipSumDao;
+
+ @Autowired
private SysBusinessDataDao sysBusinessDataDao;
+
+ @Autowired
+ private DataAnalysisCustomerServiceImpl dataAnalysisCustomerService;
@ApiOperation(value = "公司经营报表/门店经营报表")
@ApiResponses({
@@ -50,4 +65,16 @@
return AjaxResult.buildSuccessInstance(sysBusinessDataDao.selectApiBusinessDataInPage(sysBusinessData, pageVo), sysBusinessDataDao.selectApiBusinessDataTotal(sysBusinessData));
}
+
+ @ApiOperation(value = "专项 - 营业收入", notes = "专项 - 营业收入")
+ @PostMapping(value = "/findBusinessInCome")
+ public AjaxResult findBusinessInCome(@RequestBody StatisticsParamVo statisticsParam) {
+ return dataAnalysisCustomerService.getAnalysisResult(statisticsParam, new Caculate<BigDecimal>() {
+ @Override
+ public Map<String, BigDecimal> exec(List<StatisticsTimeDaoParam> timeSpaceParam, Long shopId, Long companyId) {
+ return tjVipSumDao.selectBusinessInCome(timeSpaceParam, shopId, null);
+ }
+ });
+ }
+
}
diff --git a/zq-erp/src/main/java/com/matrix/system/common/interceptor/ApiUserLoginInterceptor.java b/zq-erp/src/main/java/com/matrix/system/common/interceptor/ApiUserLoginInterceptor.java
index 91f758b..4fe5642 100644
--- a/zq-erp/src/main/java/com/matrix/system/common/interceptor/ApiUserLoginInterceptor.java
+++ b/zq-erp/src/main/java/com/matrix/system/common/interceptor/ApiUserLoginInterceptor.java
@@ -47,7 +47,7 @@
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if ("dev".equals(evn)) {
- SysUsers sysUsers = sysUsersDao.selectById(14L);
+ SysUsers sysUsers = sysUsersDao.selectById(1012L);
request.getSession().setAttribute(MatrixConstance.LOGIN_KEY, sysUsers);
return true;
}
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..5b37ed0
--- /dev/null
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/DataAnalysisCustomerServiceImpl.java
@@ -0,0 +1,132 @@
+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.common.bean.SysCompany;
+import com.matrix.system.common.bean.SysUsers;
+import com.matrix.system.common.dao.SysCompanyDao;
+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;
+
+ /**
+ * 按店铺查询数据通用格式执行方法,支持时、日、月、年维度
+ * 如: 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(statisticsParam.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);
+ data.put("xAxis", StatisticsTimeUtil.getFormartDateList(xAxis, statisticsParam));
+ 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];
+
+ //按门店统计数据
+ 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);
+ data.put("xAxis", StatisticsTimeUtil.getFormartDateList(xAxis, statisticsParam));
+ result.setMapInfo(data);
+ result.setStatus(AjaxResult.STATUS_SUCCESS);
+ return result;
+ }
+}
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 69a4dc0..8c1a271 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
@@ -7,6 +7,7 @@
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.hive.service.imp.DataAnalysisCustomerServiceImpl;
import com.matrix.system.hiveErp.analysUtil.*;
import com.matrix.system.hiveErp.dao.TjVipSumDao;
import org.jetbrains.annotations.NotNull;
@@ -31,6 +32,8 @@
@Autowired
SysShopInfoDao shopInfoDao;
+ @Autowired
+ DataAnalysisCustomerServiceImpl dataAnalysisCustomerService;
/**
@@ -43,9 +46,9 @@
*/
@RequestMapping(value = "/customerHeadCompare")
public @ResponseBody AjaxResult customerHeadCompare(StatisticsParamVo statisticsParam) {
- return getAnalysisResult(statisticsParam, new Caculate() {
+ return dataAnalysisCustomerService.getAnalysisResult(statisticsParam, new Caculate<Integer>() {
@Override
- public Map<String, Integer> exec(List<StatisticsTimeDaoParam> timeSpaceParam, Long shopId) {
+ public Map<String, Integer> exec(List<StatisticsTimeDaoParam> timeSpaceParam, Long shopId, Long companyId) {
//从员工业绩统计表中,按时间段,门店的维度统计人头数
return tjVipSumDao.customerHeadCompare(timeSpaceParam,shopId);
}
@@ -61,9 +64,9 @@
*/
@RequestMapping(value = "/customerEnterCountCompare")
public @ResponseBody AjaxResult customerEnterCountCompare(StatisticsParamVo statisticsParam) {
- return getAnalysisResult(statisticsParam, new Caculate() {
+ return dataAnalysisCustomerService.getAnalysisResult(statisticsParam, new Caculate<Integer>() {
@Override
- public Map<String, Integer> exec(List<StatisticsTimeDaoParam> timeSpaceParam, Long shopId) {
+ public Map<String, Integer> exec(List<StatisticsTimeDaoParam> timeSpaceParam, Long shopId, Long companyId) {
//从员工业绩统计表中,按时间段,门店的维度统计人次
return tjVipSumDao.customerEnterCountCompare(timeSpaceParam,shopId);
}
@@ -80,9 +83,9 @@
*/
@RequestMapping(value = "/customerEnterRateCompare")
public @ResponseBody AjaxResult customerEnterRateCompare(StatisticsParamVo statisticsParam) {
- return getAnalysisResult(statisticsParam, new Caculate() {
+ return dataAnalysisCustomerService.getAnalysisResult(statisticsParam, new Caculate<Integer>() {
@Override
- public Map<String, Integer> exec(List<StatisticsTimeDaoParam> timeSpaceParam, Long shopId) {
+ public Map<String, Integer> exec(List<StatisticsTimeDaoParam> timeSpaceParam, Long shopId, Long companyId) {
//从员工业绩统计表中,按时间段,门店的维度统计人次
return tjVipSumDao.customerEnterRateCompare(timeSpaceParam,shopId);
}
@@ -93,64 +96,6 @@
-
-
- /**
- * 按店铺查询数据通用格式执行方法,支持时、日、月、年维度
- * 如: 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();
-
- //根据计算横坐标
- List<Date> xAxis = StatisticsTimeUtil.getTimeSpace(statisticsParam.getBeginTime(), statisticsParam.getEndTime(), statisticsParam.getStatisticsUnit());
-
- //获取所有门店
- SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
- 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<>();
-
- //定义数据主体
- 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());
- //把统计结果转成数组格式
- storeInfoSeries.setData(StatisticsTimeUtil.getSeries(yAxisMap));
- series.add(storeInfoSeries);
-
- }
- //构造返回对象
- Map<Object,Object> data=new HashMap<>();
- data.put("legendData",legendData);
- data.put("series",series);
- data.put("xAxis", StatisticsTimeUtil.getFormartDateList(xAxis,statisticsParam));
- result.setMapInfo(data);
- result.setStatus(AjaxResult.STATUS_SUCCESS);
- return result;
- }
diff --git a/zq-erp/src/main/java/com/matrix/system/hiveErp/analysUtil/Caculate.java b/zq-erp/src/main/java/com/matrix/system/hiveErp/analysUtil/Caculate.java
index 27e6cdf..193b9d0 100644
--- a/zq-erp/src/main/java/com/matrix/system/hiveErp/analysUtil/Caculate.java
+++ b/zq-erp/src/main/java/com/matrix/system/hiveErp/analysUtil/Caculate.java
@@ -5,6 +5,6 @@
/**
* 明细数值计算器
*/
-public interface Caculate {
- public Map<String, Integer> exec(List<StatisticsTimeDaoParam> timeSpaceParam , Long shopId);
+public interface Caculate<T> {
+ public Map<String, T> exec(List<StatisticsTimeDaoParam> timeSpaceParam , Long shopId, Long companyId);
}
diff --git a/zq-erp/src/main/java/com/matrix/system/hiveErp/analysUtil/StatisticsParamVo.java b/zq-erp/src/main/java/com/matrix/system/hiveErp/analysUtil/StatisticsParamVo.java
index dba0746..9ebb408 100644
--- a/zq-erp/src/main/java/com/matrix/system/hiveErp/analysUtil/StatisticsParamVo.java
+++ b/zq-erp/src/main/java/com/matrix/system/hiveErp/analysUtil/StatisticsParamVo.java
@@ -1,33 +1,46 @@
package com.matrix.system.hiveErp.analysUtil;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
/**
* 统计查询条件
* @author jyy
*/
+@ApiModel(value = "StatisticsParamVo", description = "专项统计接收参数类")
public class StatisticsParamVo {
+
+ public static final String COMPANY = "1";
+
+ public static final String SHOP = "2";
/**
* 开始时间
*/
+ @ApiModelProperty(value = "开始时间", example = "2020-01")
private String beginTime;
/**
*结束时间
*/
+ @ApiModelProperty(value = "结束时间", example = "2020-12")
private String endTime;
/**
*统计单位
*/
+ @ApiModelProperty(value = "统计单位", example = "月")
private String statisticsUnit;
/**
*对比单位
*/
+ @ApiModelProperty(hidden = true)
private String contrastUnit;
/**
* 门店id
*/
- private String shopId;
+ @ApiModelProperty(value = "门店ID, 不传默认统计整个公司")
+ private Long shopId;
public String getBeginTime() {
return beginTime;
@@ -61,11 +74,11 @@
this.contrastUnit = contrastUnit;
}
- public String getShopId() {
+ public Long getShopId() {
return shopId;
}
- public void setShopId(String shopId) {
+ public void setShopId(Long shopId) {
this.shopId = shopId;
}
}
diff --git a/zq-erp/src/main/java/com/matrix/system/hiveErp/dao/TjVipSumDao.java b/zq-erp/src/main/java/com/matrix/system/hiveErp/dao/TjVipSumDao.java
index 3e27576..065a92d 100644
--- a/zq-erp/src/main/java/com/matrix/system/hiveErp/dao/TjVipSumDao.java
+++ b/zq-erp/src/main/java/com/matrix/system/hiveErp/dao/TjVipSumDao.java
@@ -4,6 +4,7 @@
import com.matrix.system.hiveErp.analysUtil.StatisticsTimeDaoParam;
import org.apache.ibatis.annotations.Param;
+import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
@@ -16,4 +17,6 @@
Map<String, Integer> customerEnterCountCompare(@Param("list") List<StatisticsTimeDaoParam> timeSpaceParam, @Param("shopId") Long shopId);
Map<String, Integer> customerEnterRateCompare(@Param("list") List<StatisticsTimeDaoParam> timeSpaceParam, @Param("shopId") Long shopId);
+
+ Map<String, BigDecimal> selectBusinessInCome(@Param("list") List<StatisticsTimeDaoParam> timeSpaceParam, @Param("shopId") Long shopId, @Param("companyId") Long companyId);
}
\ No newline at end of file
diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/TjVipSumDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/TjVipSumDao.xml
index 55ed022..e3ac372 100644
--- a/zq-erp/src/main/resources/mybatis/mapper/hive/TjVipSumDao.xml
+++ b/zq-erp/src/main/resources/mybatis/mapper/hive/TjVipSumDao.xml
@@ -68,5 +68,25 @@
</select>
+ <select id="selectBusinessInCome" resultType="java.util.TreeMap">
+ select
+ <foreach collection="list" index="index" item="item" separator="," >
+ (
+ select IFNULL(sum(ZK_TOTAL), 0)
+ from sys_order
+ where STATU in ('已付款', '欠款')
+ and <![CDATA[order_time > #{item.beginTime} and order_time < #{item.endTime} ]]>
+ <if test="companyId != null and companyId != 0">
+ and company_id=17
+ </if>
+ <if test="shopId !=null and shopId !=0 " >
+ and SHOP_ID = #{shopId}
+ </if>
+ ) as t${index}
+
+ </foreach>
+ from area where id=1
+ </select>
+
</mapper>
--
Gitblit v1.9.1