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