935090232@qq.com
2020-12-03 5dd78634ac8c4b3103cee31fb6ae0daadef784ec
人次统计3
6 files modified
164 ■■■■■ changed files
zq-erp/src/main/java/com/matrix/system/hiveErp/action/DataAnalysisCustomer.java 21 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hiveErp/analysUtil/SeriesVo.java 8 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hiveErp/analysUtil/StatisticsTimeUtil.java 18 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hiveErp/dao/TjVipSumDao.java 2 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/hive/TjVipSumDao.xml 28 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive-erp/analysis/customerFlow.html 87 ●●●●● patch | view | raw | blame | history
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);
            }
        });
    }
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;
    }
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;
    }
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);
}
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>
    
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>