From 7efbe93bdb75762f50a1d2d104e05a9e4db49ea2 Mon Sep 17 00:00:00 2001 From: jyy <935090232@qq.com> Date: Wed, 02 Dec 2020 15:21:39 +0800 Subject: [PATCH] 修改人头统计计算 --- zq-erp/src/main/resources/templates/views/admin/hive-erp/analysis/customerFlow.html | 85 +++++++++++++------- zq-erp/src/main/resources/mybatis/mapper/hive/TjVipSumDao.xml | 22 ++--- zq-erp/src/main/java/com/matrix/system/hiveErp/Vo/SeriesVo.java | 49 ++++++++++++ zq-erp/src/main/java/com/matrix/system/hiveErp/action/CustomerAnalysis.java | 48 +++++++++++ 4 files changed, 158 insertions(+), 46 deletions(-) diff --git a/zq-erp/src/main/java/com/matrix/system/hiveErp/Vo/SeriesVo.java b/zq-erp/src/main/java/com/matrix/system/hiveErp/Vo/SeriesVo.java new file mode 100644 index 0000000..47289ed --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/hiveErp/Vo/SeriesVo.java @@ -0,0 +1,49 @@ +package com.matrix.system.hiveErp.Vo; + +/** + * echart 图表参数 + */ +public class SeriesVo { + + private String TYPE_LINE="line"; + + + private String name; + private Integer[] data; + private String type="line"; + + public SeriesVo() { + } + + public SeriesVo(String name, Integer[] data, String type) { + this.name = name; + this.data = data; + this.type = type; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Integer[] getData() { + return data; + } + + public void setData(Integer[] data) { + this.data = data; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + +} \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/hiveErp/action/CustomerAnalysis.java b/zq-erp/src/main/java/com/matrix/system/hiveErp/action/CustomerAnalysis.java index ae3edbf..19d19ad 100644 --- a/zq-erp/src/main/java/com/matrix/system/hiveErp/action/CustomerAnalysis.java +++ b/zq-erp/src/main/java/com/matrix/system/hiveErp/action/CustomerAnalysis.java @@ -1,7 +1,14 @@ package com.matrix.system.hiveErp.action; +import com.matrix.core.constance.MatrixConstance; import com.matrix.core.pojo.AjaxResult; import com.matrix.core.tools.DateUtil; +import com.matrix.core.tools.WebUtil; +import com.matrix.system.common.bean.SysUsers; +import com.matrix.system.hive.bean.SysShopInfo; +import com.matrix.system.hive.dao.SysShopInfoDao; +import com.matrix.system.hive.service.SysShopInfoService; +import com.matrix.system.hiveErp.Vo.SeriesVo; import com.matrix.system.hiveErp.Vo.StatisticsParamVo; import com.matrix.system.hiveErp.Vo.StatisticsTimeDaoParam; import com.matrix.system.hiveErp.dao.TjVipSumDao; @@ -20,12 +27,17 @@ @Autowired TjVipSumDao tjVipSumDao; + + @Autowired + SysShopInfoDao shopInfoDao; + + /** * 到店次数趋势统计 * * @return - */ - @RequestMapping(value = "/vipVisitTendency ") + + @RequestMapping(value = "/vipVisitTendency") public @ResponseBody AjaxResult vipVisit(StatisticsParamVo statisticsParam) { AjaxResult result = new AjaxResult(); @@ -42,6 +54,38 @@ result.setStatus(AjaxResult.STATUS_SUCCESS); return result; } + */ + + + @RequestMapping(value = "vipVisitCompare") + public @ResponseBody AjaxResult vipVisitCompare(StatisticsParamVo statisticsParam) { + SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); + AjaxResult result = new AjaxResult(); + //计算横坐标 + List<Date> xAxis = StatisticsTimeUtil.getTimeSpace(statisticsParam.getBeginTime(), statisticsParam.getEndTime(), statisticsParam.getStatisticsUnit()); + + //获取所有门店 + List<SysShopInfo> shops= shopInfoDao.selectShopInfo(user.getCompanyId()); + List<SeriesVo> series=new ArrayList<>(); + String[] legendData=new String[shops.size()]; + int i=0; + for(SysShopInfo shop: shops){ + legendData[i++]=shop.getShopName(); + SeriesVo storeInfoSeries=new SeriesVo(); + storeInfoSeries.setName(shop.getShopName()); + Map<String, Integer> yAxisMap = tjVipSumDao.countVisitByTime(buidParam(xAxis),shop.getId()); + storeInfoSeries.setData(getSeries(yAxisMap)); + series.add(storeInfoSeries); + } + //构造返回对象 + Map<Object,Object> data=new HashMap<>(); + data.put("legendData",legendData); + data.put("series",series); + data.put("xAxis", getFormartDateList(xAxis,statisticsParam)); + result.setMapInfo(data); + result.setStatus(AjaxResult.STATUS_SUCCESS); + return result; + } /** * 获取map中的值为数组 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 5f7946e..6c5c06f 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/hive/TjVipSumDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/hive/TjVipSumDao.xml @@ -8,25 +8,21 @@ <!-- 人头数统计 --> <select id="countVisitByTime" resultType="java.util.TreeMap"> - select - <foreach collection="list" index="index" item="item" separator="," > + ( + 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> - 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> - ) t + ) t + ) as t${index} </foreach> from area where id=1 </select> - - - - </mapper> +</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 f18170b..57e1e13 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 @@ -31,7 +31,8 @@ </button> </div> </div> - <div class="form-group mr-20" id="timeBox"> + <div class="form-group mr-20 mt-20" id="timeBox"> + <label>统计范围</label> <input name="beginTime" type="text" autocomplete="off" @@ -39,7 +40,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 "> <label>统计单位</label> <select name="statisticsUnit" class=" form-control " id="unitSelect" style="width: 80px"> @@ -52,11 +53,32 @@ </form> <!-- 搜索框部分en --> - <div class="row chartsBox"> + <div class="row chartsBox " style="margin-top: 40px"> <div class=" col-md-12"> <div class="echarts" id="echarts-line-chart2"></div> </div> </div> + + <!-- <div class="row chartsBox " style="margin-top: 40px"> + <div class=" col-md-12" id="table"> + <table class="table table-striped" > + <thead> + <tr> + <th>时间</th> + <th v-for="name in legend" >{{name}}</th> + </tr> + </thead> + <tbody> + <tr v-for="(item,index) in xAxis"> + <td>{{item}}</td> + + <td v-for="data in series[index].data" >{{data}}</td> + </tr> + </tbody> + </table> + </div> + </div> +--> </div> <script type="text/javascript" th:src="@{/js/systools/MJsBase.js}"></script> @@ -66,6 +88,7 @@ <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> @@ -76,7 +99,9 @@ // 基于准备好的dom,初始化echarts实例 var myChart2 = echarts.init(document.getElementById('echarts-line-chart2'), 'macarons'); - + myChart2.on('click', function (params) { + console.log(params); + }); // 指定图表的配置项和数据 function getption(title) { @@ -113,6 +138,12 @@ yAxis: { type: 'value' }, + series: [{ + name: '人头数', + type: 'line', + smooth: true, + data: [1,2] + }], dataZoom: [ { id: 'dataZoomX', @@ -121,23 +152,6 @@ filterMode: 'filter' } ], - series: [{ - name: '客流量', - type: 'line', - smooth: true, - data: [], - markLine: { - data: [ - {type: 'average', name: '平均值'} - ] - }, - markPoint: { - data: [ - {type: 'max', name: '最大值'}, - {type: 'min', name: '最小值'} - ] - }, - }], animation: true, animationDuration: 1000, animationDurationUpdate: 1000, @@ -151,19 +165,18 @@ //加载数据 function loadData() { - - - //加载门店客流对比 myChart2.showLoading(); $.AjaxProxy({ p: MForm.toJson("#serchform"), c: false, - }).invoke(basePath+"/admin/analysis/vipVisitTendency", + }).invoke(basePath+"/admin/analysis/vipVisitCompare", function (loj) { var map = loj.getValue("mapInfo"); - var option = getption("门店客流趋势对比"); + console.log(map); + var option = getption("门店人头数对比"); option.series = map.series; + console.log("option.series",option.series); option.legend.data = map.legendData; option.xAxis.data = map.xAxis; console.log(option); @@ -171,18 +184,28 @@ myChart2.setOption(option); myChart2.hideLoading(); - - }); - - } - var ChartsUtils = new ChartsUtils(loadData); ChartsUtils.setDataPackTimeValue(); ChartsUtils.loadChartData(); + + function buildTable(map){ + console.log(buildTable,map); + var app = new Vue({ + el: '#table', + data: { + series : map.series, + legend : map.legendData, + xAxis : map.xAxis + } + } ); + } + + + </script> </body> -- Gitblit v1.9.1