zq-erp/src/main/java/com/matrix/system/hiveErp/action/CustomerAnalysis.java
File was deleted zq-erp/src/main/java/com/matrix/system/hiveErp/action/DataAnalysisCustomer.java
New file @@ -0,0 +1,91 @@ package com.matrix.system.hiveErp.action; import com.matrix.core.constance.MatrixConstance; import com.matrix.core.pojo.AjaxResult; 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.hiveErp.analysUtil.SeriesVo; import com.matrix.system.hiveErp.analysUtil.StatisticsParamVo; import com.matrix.system.hiveErp.dao.TjVipSumDao; import com.matrix.system.hiveErp.analysUtil.StatisticsTimeUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import java.util.*; /** * 会员数据分析 * @author jyy */ @Controller @RequestMapping(value = "admin/analysis") public class DataAnalysisCustomer { @Autowired TjVipSumDao tjVipSumDao; @Autowired SysShopInfoDao shopInfoDao; /** * 会员人头数统计 * 业务说明: * 人头指门店所有进店客户的总人数,同一个人在一段时间内无论进店几次都视为一次进店 * 比如:张三1个月来了3次做护理,李四来2次做护理,杨欢来2次做护理,但是只统计客户名字,那人头就是3个 * @param statisticsParam * @return */ @RequestMapping(value = "customerHeadCompare") public @ResponseBody AjaxResult vipVisitCompare(StatisticsParamVo statisticsParam) { 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= 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(StatisticsTimeUtil.buidParam(xAxis),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; } } zq-erp/src/main/java/com/matrix/system/hiveErp/analysUtil/SeriesVo.java
File was renamed from zq-erp/src/main/java/com/matrix/system/hiveErp/Vo/SeriesVo.java @@ -1,4 +1,4 @@ package com.matrix.system.hiveErp.Vo; package com.matrix.system.hiveErp.analysUtil; /** * echart 图表参数 zq-erp/src/main/java/com/matrix/system/hiveErp/analysUtil/StatisticsParamVo.java
File was renamed from zq-erp/src/main/java/com/matrix/system/hiveErp/Vo/StatisticsParamVo.java @@ -1,19 +1,32 @@ package com.matrix.system.hiveErp.Vo; package com.matrix.system.hiveErp.analysUtil; /** * 统计查询条件 * @author jyy */ public class StatisticsParamVo { //开始时间 /** * 开始时间 */ private String beginTime; //结束时间 /** *结束时间 */ private String endTime; //统计单位 /** *统计单位 */ private String statisticsUnit; //对比单位 /** *对比单位 */ private String contrastUnit; //门店 /** * 门店id */ private String shopId; public String getBeginTime() { zq-erp/src/main/java/com/matrix/system/hiveErp/analysUtil/StatisticsTimeDaoParam.java
File was renamed from zq-erp/src/main/java/com/matrix/system/hiveErp/Vo/StatisticsTimeDaoParam.java @@ -1,4 +1,4 @@ package com.matrix.system.hiveErp.Vo; package com.matrix.system.hiveErp.analysUtil; import java.util.Date; zq-erp/src/main/java/com/matrix/system/hiveErp/analysUtil/StatisticsTimeUtil.java
New file @@ -0,0 +1,179 @@ package com.matrix.system.hiveErp.analysUtil; import com.matrix.core.tools.DateUtil; import org.apache.commons.collections.MapUtils; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; /** * 统计分析时间工具 * @author jyy */ public class StatisticsTimeUtil { /** * 获取map中的值为数组 * @param yAxisMap * @return */ public static Integer[] getSeries(Map<String, Integer> yAxisMap) { if (MapUtils.isNotEmpty(yAxisMap)) { Integer[] seroes = new Integer[yAxisMap.size()-1]; for (int index=0; index<yAxisMap.size()-1 ; index++) { if(index<seroes.length){ seroes[index]=Integer.parseInt(yAxisMap.get("t"+index)+""); } } return seroes; } else { return new Integer[0]; } } /** * * @param xAxis * @param statisticsParam * @return */ public static String[] getFormartDateList(List<Date> xAxis, StatisticsParamVo statisticsParam) { String[] dates=new String[xAxis.size()]; String dataFmt=""; switch (statisticsParam.getStatisticsUnit()){ case "时": dataFmt= DateUtil.DATE_FORMAT_HH; break; case "日": dataFmt=DateUtil.DATE_FORMAT_DD; break; case "月": dataFmt=DateUtil.MONTH; break; case "年": dataFmt=DateUtil.YEAR; break; } for(int i=0 ; i<dates.length; i++ ){ dates[i]= DateUtil.dateToString(xAxis.get(i),dataFmt); } return dates; } /** * 构建查询参数,带时间范围 * @param xAxis * @return */ public static List<StatisticsTimeDaoParam> buidParam(List<Date> xAxis) { List<StatisticsTimeDaoParam> daoParams = new ArrayList<>(); for(int i=0 ;i<xAxis.size(); i++){ StatisticsTimeDaoParam param= new StatisticsTimeDaoParam(); param.setBeginTime(xAxis.get(i)); if(i+1<xAxis.size()){ param.setEndTime(xAxis.get(i+1)); } daoParams.add(param); } return daoParams; } /** * 通过统计单位获取时间段中,有多小段 * @param beginTime * @param endTime * @param statisticsUnit * @return */ public static List<Date> getTimeSpace(String beginTime, String endTime, String statisticsUnit) { List<Date> result=new ArrayList<>(); switch (statisticsUnit){ case "时": return getTimeSpaceByHours(beginTime,endTime); case "日": return getTimeSpaceByDay(beginTime,endTime); case "月": return getTimeSpaceByMonth(beginTime,endTime); case "年": return getTimeSpaceByYear(beginTime,endTime); default: return result; } } private static List<Date> getTimeSpaceByYear(String beginTime, String endTime){ List<Date> tims=new ArrayList(); Date begin= DateUtil.stringToDate(beginTime,DateUtil.YEAR); Date end= DateUtil.stringToDate(endTime,DateUtil.YEAR); tims.add(begin); while(DateUtil.isAffterDate(begin,end)){ begin=DateUtil.getDateAfterYear(begin,1); tims.add(begin); } return tims; } private static List<Date> getTimeSpaceByMonth(String beginTime, String endTime){ List<Date> tims=new ArrayList(); Date begin= DateUtil.stringToDate(beginTime,DateUtil.MONTH); Date end= DateUtil.stringToDate(endTime,DateUtil.MONTH); tims.add(begin); while(DateUtil.isAffterDate(begin,end)){ begin=DateUtil.getDateAfterMonth(begin,1); tims.add(begin); } return tims; } private static List<Date> getTimeSpaceByDay(String beginTime, String endTime){ List<Date> tims=new ArrayList(); Date begin= DateUtil.stringToDate(beginTime,DateUtil.DATE_FORMAT_DD); Date end= DateUtil.stringToDate(endTime,DateUtil.DATE_FORMAT_DD); tims.add(begin); while(DateUtil.isAffterDate(begin,end)){ begin=DateUtil.getDateAfter(begin,1); tims.add(begin); } return tims; } private static List<Date> getTimeSpaceByHours(String beginTime, String endTime){ List<Date> tims=new ArrayList(); Date begin= DateUtil.stringToDate(beginTime,DateUtil.DATE_FORMAT_HH); Date end= DateUtil.stringToDate(endTime,DateUtil.DATE_FORMAT_HH); tims.add(begin); while(DateUtil.isAffterDate(begin,end)){ begin=DateUtil.getDateAfterHours(begin,1); tims.add(begin); } return tims; } public static void main(String[] args) { List<Date> tims= getTimeSpaceByYear("2014","2019"); for (Date time: tims) { System.out.println(time.toLocaleString()); } } } zq-erp/src/main/java/com/matrix/system/hiveErp/dao/TjVipSumDao.java
@@ -1,7 +1,7 @@ package com.matrix.system.hiveErp.dao; import com.matrix.system.hiveErp.Vo.StatisticsTimeDaoParam; import com.matrix.system.hiveErp.analysUtil.StatisticsTimeDaoParam; import org.apache.ibatis.annotations.Param; import java.util.List; zq-erp/src/main/java/com/matrix/system/hiveErp/util/StatisticsTimeUtil.java
File was deleted zq-erp/src/main/resources/templates/views/admin/hive-erp/analysis/customerFlow.html
@@ -170,7 +170,7 @@ $.AjaxProxy({ p: MForm.toJson("#serchform"), c: false, }).invoke(basePath+"/admin/analysis/vipVisitCompare", }).invoke(basePath+"/admin/analysis/customerHeadCompare", function (loj) { var map = loj.getValue("mapInfo"); console.log(map);