Commit d0a49c24 by guojx

活码数据统计-趋势图补0

parent 9d346334
...@@ -10,6 +10,7 @@ import java.util.List; ...@@ -10,6 +10,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.gic.haoban.manage.web.utils.statistics.DateUtils;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
...@@ -657,42 +658,23 @@ public class HmLinkController { ...@@ -657,42 +658,23 @@ public class HmLinkController {
String endTimeStr = qo.getEndTime(); String endTimeStr = qo.getEndTime();
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date startTime = null; Date startTime = DateUtils.getStartTime(startTimeStr);
Date endTime = null; Date endTime = DateUtils.getEndTime(endTimeStr);
if (StringUtils.isNotBlank(startTimeStr)) {
startTime = df.parse(startTimeStr);
}
if (StringUtils.isNotBlank(endTimeStr)) {
endTime = df.parse(endTimeStr);
}
jsonObject.put("enterpriseId", loginUser.getEnterpriseId()); jsonObject.put("enterpriseId", loginUser.getEnterpriseId());
jsonObject.put("linkId", linkId); jsonObject.put("linkId", linkId);
if (startTime == null) {
// 过去7天
Calendar cl = Calendar.getInstance();
cl.add(Calendar.DATE, -7);
startTime = cl.getTime();
}
startTime = DateUtil.getStartTimeOfDay(startTime);
jsonObject.put("startTime", df.format(startTime)); jsonObject.put("startTime", df.format(startTime));
if (endTime == null) {
endTime = new Date();
}
endTime = DateUtil.getEndTimeOfDay(endTime);
jsonObject.put("endTime", df.format(endTime)); jsonObject.put("endTime", df.format(endTime));
// 日期填充 // 日期填充
List<String> dateList; List<String> dateList = DateUtils.getDateList(startTimeStr, endTimeStr, null);
// 用于链接添加趋势图数据 企业+链接+日期 // 用于链接添加趋势图数据 企业+链接+日期
String apolloKey = "data_haoban_link_add_trend_d"; String apolloKey = "data_haoban_link_add_trend_d";
// 用于链接点击趋势图数据 企业+链接+日期 // 用于链接点击趋势图数据 企业+链接+日期
String clickApolloKey = "data_haoban_link_click_trend_d"; String clickApolloKey = "data_haoban_link_click_trend_d";
// 如果天数大于60,调用月接口 // 如果天数大于60,调用月接口
if (DateUtil.daysBetween(startTime, endTime) > 60) { if (DateUtil.daysBetween(startTime, endTime) > 60) {
dateList = getMonthBetween(startTime, endTime);
apolloKey = "data_haoban_link_add_trend_m"; apolloKey = "data_haoban_link_add_trend_m";
clickApolloKey = "data_haoban_link_click_trend_m"; clickApolloKey = "data_haoban_link_click_trend_m";
} else {
dateList = DateUtil.getBetweenDates(startTime, endTime);
} }
JSONObject param = DataStatisticsParamUtils.getParamNoPage(jsonObject); JSONObject param = DataStatisticsParamUtils.getParamNoPage(jsonObject);
StatisticsDTO newDTO = DataHttpUtil.post(apolloKey, param); StatisticsDTO newDTO = DataHttpUtil.post(apolloKey, param);
...@@ -746,31 +728,6 @@ public class HmLinkController { ...@@ -746,31 +728,6 @@ public class HmLinkController {
return RestResponse.successResult(retPage); return RestResponse.successResult(retPage);
} }
public static List<String> getMonthBetween(Date minDate, Date maxDate) {
ArrayList<String> result = new ArrayList<>();
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");// 格式化为年月
Calendar min = Calendar.getInstance();
Calendar max = Calendar.getInstance();
min.setTime(minDate);
min.set(min.get(Calendar.YEAR), min.get(Calendar.MONTH), 1);
max.setTime(maxDate);
max.set(max.get(Calendar.YEAR), max.get(Calendar.MONTH), 2);
Calendar curr = min;
while (curr.before(max)) {
result.add(sdf.format(curr.getTime()));
curr.add(Calendar.MONTH, 1);
}
} catch (Exception e) {
}
return result;
}
private static Map<String, JSONObject> getTrendMap(StatisticsDTO newDTO) { private static Map<String, JSONObject> getTrendMap(StatisticsDTO newDTO) {
Map<String, JSONObject> newMap = new HashMap<>(); Map<String, JSONObject> newMap = new HashMap<>();
if (newDTO != null) { if (newDTO != null) {
......
package com.gic.haoban.manage.web.controller.hm; package com.gic.haoban.manage.web.controller.hm;
import java.text.ParseException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import com.gic.haoban.manage.web.utils.statistics.DateUtils;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -242,7 +245,7 @@ public class HmQrcodeController { ...@@ -242,7 +245,7 @@ public class HmQrcodeController {
* @return * @return
*/ */
@RequestMapping(value = "detail-data-statistics", method = RequestMethod.POST) @RequestMapping(value = "detail-data-statistics", method = RequestMethod.POST)
public RestResponse detailDataStatistics(@RequestBody HmTrendQO hmTrendQO) { public RestResponse detailDataStatistics(@RequestBody HmTrendQO hmTrendQO) throws ParseException {
Integer type = hmTrendQO.getInFields().getType(); Integer type = hmTrendQO.getInFields().getType();
WebLoginDTO loginUser = AuthWebRequestUtil.getLoginUser(); WebLoginDTO loginUser = AuthWebRequestUtil.getLoginUser();
hmTrendQO.getInFields().setEnterpriseId(loginUser.getEnterpriseId()); hmTrendQO.getInFields().setEnterpriseId(loginUser.getEnterpriseId());
...@@ -260,6 +263,25 @@ public class HmQrcodeController { ...@@ -260,6 +263,25 @@ public class HmQrcodeController {
list = JSON.parseArray(JSON.toJSONString(dto.getData()), Map.class); list = JSON.parseArray(JSON.toJSONString(dto.getData()), Map.class);
} }
if (hmTrendVO != null) { if (hmTrendVO != null) {
//日期补充
List<String> dateList = DateUtils.getDateList(hmTrendQO.getInFields().getStartTime(), hmTrendQO.getInFields().getEndTime(), type);
Map<String, Object> trendMap = new HashMap<>();
if (CollectionUtils.isNotEmpty(list)) {
for (Map temp : list) {
trendMap.put((String) temp.get("bizDate"), temp.get("addNum"));
}
}
for (String date : dateList) {
Map vo = new HashMap();
vo.put("bizDate", date);
Object addNum = trendMap.get(date);
if (addNum == null) {
vo.put("addNum", 0);
} else {
vo.put("addNum", addNum);
}
list.add(vo);
}
hmTrendVO.setDateList(list); hmTrendVO.setDateList(list);
} }
return RestResponse.successResult(hmTrendVO); return RestResponse.successResult(hmTrendVO);
......
package com.gic.haoban.manage.web.utils.statistics;
import com.gic.commons.util.DateUtil;
import com.gic.haoban.manage.web.qo.hm.data.HmTrendQO;
import org.apache.commons.lang.StringUtils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
* @Author guojx
* @Date 2022/7/27 13:58
*/
public class DateUtils {
private static List<String> getMonthBetween(Date minDate, Date maxDate) {
ArrayList<String> result = new ArrayList<>();
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");// 格式化为年月
Calendar min = Calendar.getInstance();
Calendar max = Calendar.getInstance();
min.setTime(minDate);
min.set(min.get(Calendar.YEAR), min.get(Calendar.MONTH), 1);
max.setTime(maxDate);
max.set(max.get(Calendar.YEAR), max.get(Calendar.MONTH), 2);
Calendar curr = min;
while (curr.before(max)) {
result.add(sdf.format(curr.getTime()));
curr.add(Calendar.MONTH, 1);
}
} catch (Exception e) {
}
return result;
}
public static List<String> getDateList(String startTimeStr, String endTimeStr, Integer type) throws ParseException {
// 日期填充
List<String> dateList = new ArrayList<>();
Date startTime = getStartTime(startTimeStr);
Date endTime = getEndTime(endTimeStr);
if (type == null) {
//计算
if (DateUtil.daysBetween(startTime, endTime) > 60) {
//月
type = 2;
} else {
type = 1;
}
}
if (type == 1) {
dateList = DateUtil.getBetweenDates(startTime, endTime);
} else if (type == 2){
dateList = DateUtils.getMonthBetween(startTime, endTime);
}
return dateList;
}
public static Date getStartTime(String startTimeStr) throws ParseException {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date startTime = null;
if (StringUtils.isNotBlank(startTimeStr)) {
startTime = df.parse(startTimeStr);
}
if (startTime == null) {
// 过去7天
Calendar cl = Calendar.getInstance();
cl.add(Calendar.DATE, -7);
startTime = cl.getTime();
}
startTime = DateUtil.getStartTimeOfDay(startTime);
return startTime;
}
public static Date getEndTime(String endTimeStr) throws ParseException {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date endTime = null;
if (StringUtils.isNotBlank(endTimeStr)) {
endTime = df.parse(endTimeStr);
}
if (endTime == null) {
endTime = new Date();
}
endTime = DateUtil.getEndTimeOfDay(endTime);
return endTime;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment