From 5dd78634ac8c4b3103cee31fb6ae0daadef784ec Mon Sep 17 00:00:00 2001 From: 935090232@qq.com <ak473600000> Date: Thu, 03 Dec 2020 23:07:35 +0800 Subject: [PATCH] 人次统计3 --- zq-erp/src/main/java/com/matrix/system/hiveErp/analysUtil/StatisticsTimeUtil.java | 18 ++++- zq-erp/src/main/java/com/matrix/system/hiveErp/dao/TjVipSumDao.java | 2 zq-erp/src/main/resources/templates/views/admin/hive-erp/analysis/customerFlow.html | 87 ++++++++++++++++++++++++++-- zq-erp/src/main/resources/mybatis/mapper/hive/TjVipSumDao.xml | 28 +++++++++ zq-erp/src/main/java/com/matrix/system/hiveErp/action/DataAnalysisCustomer.java | 21 +++++++ zq-erp/src/main/java/com/matrix/system/hiveErp/analysUtil/SeriesVo.java | 8 +- 6 files changed, 148 insertions(+), 16 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 401caeb..c25461f 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 @@ -70,6 +70,27 @@ } + /** + * 到店率 + * 业务说明: + * 门店所有客户人次数除以人头数 + * @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); + } + }); + } + + + + diff --git a/zq-erp/src/main/java/com/matrix/system/hiveErp/analysUtil/SeriesVo.java b/zq-erp/src/main/java/com/matrix/system/hiveErp/analysUtil/SeriesVo.java index cfbb8a1..9a75390 100644 --- a/zq-erp/src/main/java/com/matrix/system/hiveErp/analysUtil/SeriesVo.java +++ b/zq-erp/src/main/java/com/matrix/system/hiveErp/analysUtil/SeriesVo.java @@ -9,13 +9,13 @@ private String name; - private Integer[] data; + private String[] data; private String type="line"; public SeriesVo() { } - public SeriesVo(String name, Integer[] data, String type) { + public SeriesVo(String name, String[] data, String type) { this.name = name; this.data = data; this.type = type; @@ -29,11 +29,11 @@ this.name = name; } - public Integer[] getData() { + public String[] getData() { return data; } - public void setData(Integer[] data) { + public void setData(String[] data) { this.data = data; } diff --git a/zq-erp/src/main/java/com/matrix/system/hiveErp/analysUtil/StatisticsTimeUtil.java b/zq-erp/src/main/java/com/matrix/system/hiveErp/analysUtil/StatisticsTimeUtil.java index ce53cac..fa51f5d 100644 --- a/zq-erp/src/main/java/com/matrix/system/hiveErp/analysUtil/StatisticsTimeUtil.java +++ b/zq-erp/src/main/java/com/matrix/system/hiveErp/analysUtil/StatisticsTimeUtil.java @@ -22,17 +22,18 @@ * @param yAxisMap * @return */ - public static Integer[] getSeries(Map<String, Integer> yAxisMap) { + public static String[] getSeries(Map<String, Integer> yAxisMap) { if (MapUtils.isNotEmpty(yAxisMap)) { - Integer[] seroes = new Integer[yAxisMap.size()-1]; + String[] seroes = new String[yAxisMap.size()-1]; for (int index=0; index<yAxisMap.size()-1 ; index++) { if(index<seroes.length){ - seroes[index]=Integer.parseInt(yAxisMap.get("t"+index)+""); + System.out.println(yAxisMap.get("t"+index)+""); + seroes[index]=yAxisMap.get("t"+index)+""; } } return seroes; } else { - return new Integer[0]; + return new String[0]; } } @@ -128,6 +129,9 @@ begin=DateUtil.getDateAfterYear(begin,1); tims.add(begin); } + + begin=DateUtil.getDateAfterYear(begin,1); + tims.add(begin); return tims; } @@ -142,6 +146,8 @@ begin=DateUtil.getDateAfterMonth(begin,1); tims.add(begin); } + begin=DateUtil.getDateAfterMonth(begin,1); + tims.add(begin); return tims; } @@ -155,6 +161,8 @@ begin=DateUtil.getDateAfter(begin,1); tims.add(begin); } + begin=DateUtil.getDateAfter(begin,1); + tims.add(begin); return tims; } @@ -170,6 +178,8 @@ begin=DateUtil.getDateAfterHours(begin,1); tims.add(begin); } + begin=DateUtil.getDateAfterHours(begin,1); + tims.add(begin); return tims; } 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 404d626..3e27576 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 @@ -14,4 +14,6 @@ Map<String,Integer> customerHeadCompare(@Param("list") List<StatisticsTimeDaoParam> daoParams, @Param("shopId") Long shopId); 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); } \ 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 4910f53..55ed022 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/hive/TjVipSumDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/hive/TjVipSumDao.xml @@ -40,5 +40,33 @@ from area where id=1 </select> + <!-- 到店率 --> + <select id="customerEnterRateCompare" resultType="java.util.TreeMap"> + + select + <foreach collection="list" index="index" item="item" separator="," > + + ifnull( ( ( + SELECT count(*) from ( + SELECT DISTINCT vip_id ,date_format(datatime,'%Y-%m-%d') from achieve_new where <![CDATA[datatime > #{item.beginTime} and datatime < #{item.endTime} ]]> + <if test="shopId !=null and shopId !=0 " > + and SHOP_ID = #{shopId} + </if>) a + ) + / + ( + SELECT count(*) from ( + SELECT DISTINCT vip_id from achieve_new where <![CDATA[datatime > #{item.beginTime} and datatime < #{item.endTime} ]]> + <if test="shopId !=null and shopId !=0 " > + and SHOP_ID = #{shopId} + </if>) b + ) + ),0 )as t${index} + + </foreach> + from area where id=1 + + </select> + </mapper> diff --git a/zq-erp/src/main/resources/templates/views/admin/hive-erp/analysis/customerFlow.html b/zq-erp/src/main/resources/templates/views/admin/hive-erp/analysis/customerFlow.html index 3789371..f5a1f04 100644 --- a/zq-erp/src/main/resources/templates/views/admin/hive-erp/analysis/customerFlow.html +++ b/zq-erp/src/main/resources/templates/views/admin/hive-erp/analysis/customerFlow.html @@ -11,6 +11,7 @@ <!-- 本框架基本脚本和样式 --> <script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script> + <link rel="stylesheet" th:href="@{/plugin/element-ui/index.css}"> <script type="text/javascript" th:src="@{/js/systools/MBase.js}"></script> <style> .echarts { @@ -45,7 +46,7 @@ name="endTime" type="text" class="form-control datetimepicker" autocomplete="off" id="endTime"> </div> - <div class="form-group mr-20 "> + <div class="form-group mr-20 mt-20 "> <label>统计单位</label> <select name="statisticsUnit" class=" form-control " id="unitSelect" style="width: 80px"> @@ -56,20 +57,66 @@ </select> </div> </form> + + <!-- 搜索框部分en --> <div class="row chartsBox " style="margin-top: 40px"> - <div class=" col-md-12"> - <div class="echarts" id="echarts-line-chart1"></div> + + <div class=" col-md-6"> + <div class="panel panel-info"> + <div class="panel-heading">门店人次对比分析</div> + <div class="panel-body"> + <div class="echarts" id="echarts-line-chart2"></div> + </div> + </div> + </div> + <div class=" col-md-6"> + <div class="panel panel-info"> + <div class="panel-heading">门店人头对比分析</div> + <div class="panel-body"> + <div class="echarts" id="echarts-line-chart1"></div> + </div> + </div> </div> </div> <div class="row chartsBox " style="margin-top: 40px"> - <div class=" col-md-12"> - <div class="echarts" id="echarts-line-chart2"></div> + <div class=" col-md-6"> + <div class="panel panel-info"> + <div class="panel-heading">门店到店率对比分析</div> + <div class="panel-body"> + <div class="echarts" id="echarts-line-chart3"></div> + </div> + </div> + </div> + <div class=" col-md-6"> + <div class="panel panel-warning"> + <div class="panel-heading">数据统计说明</div> + <div class="panel-body "> + <div class="echarts"> + <ul> + <li> + <h3>会员人头数</h3> + <p>一段时间内某个门店所有进店客户的总人数,同一个人无论进店几次都视为一个人头数</p> + </li> + <li> + <h3>会员人次</h3> + <p>一段时间内某个门店一个会员有3天来过门店则人次为3以此类推</p> + </li> + <li> + <h3>到店率</h3> + <p>一段时间内某个门店所有客户人次数除以人头数即为到店率</p> + </li> + </ul> + + </div> + </div> + </div> </div> </div> + </div> @@ -80,7 +127,8 @@ <script type="text/javascript" th:src="@{/plugin/StringUtil.js}"></script> <script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script> <script type="text/javascript" th:src="@{/js/systools/ChartsUtils.js}"></script> - +<script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script> +<script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script> <script> @@ -92,6 +140,7 @@ // 基于准备好的dom,初始化echarts实例 var myChart1 = echarts.init(document.getElementById('echarts-line-chart1'), 'macarons'); var myChart2 = echarts.init(document.getElementById('echarts-line-chart2'), 'macarons'); + var myChart3 = echarts.init(document.getElementById('echarts-line-chart3'), 'macarons'); /* 点击事件 myChart1.on('click', function (params) { @@ -99,10 +148,10 @@ }); */ // 指定图表的配置项和数据 - function getption(title) { + function getption() { return { title: { - text: title, + text: "", padding: 20 }, legend: {}, @@ -204,7 +253,29 @@ var chartsUtils2 = new ChartsUtils(loadData2); chartsUtils2.loadChartData(); + //加载数据3 + function loadData3() { + //加载门店到店率 + myChart3.showLoading(); + $.AjaxProxy({ + p: MForm.toJson("#serchform"), + c: false, + }).invoke(basePath+"/admin/analysis/customerEnterRateCompare", + function (loj) { + var map = loj.getValue("mapInfo"); + var option = getption("门店到店率对比"); + option.series = map.series; + option.legend.data = map.legendData; + option.xAxis.data = map.xAxis; + // 使用刚指定的配置项和数据显示图表。 + myChart3.setOption(option); + myChart3.hideLoading(); + }); + } + + var chartsUtils3 = new ChartsUtils(loadData3); + chartsUtils3.loadChartData(); </script> -- Gitblit v1.9.1