java统计一段时间内的数据折线图数据(一天内的各小时,一段时间天数内)

*/

@Override

public Map<String, Object> getAddTrendLineChart(Integer typeId, Long userId, String startTime, String endTime) throws Exception {

//如果是查询今日的

if (typeId.equals(ReasonEnum.REASON1.getCode())) {

Date dayBegin = NewDateUtil.getDayBegin();

return getTodayChart(dayBegin, userId);

} else if (typeId.equals(ReasonEnum.REASON2.getCode())) {

//查询最近7天的

return getWeekChart(userId, 6);

} else if (typeId.equals(ReasonEnum.REASON3.getCode())) {

//查询最近30天的

return getWeekChart(userId, 29);

} else if (typeId.equals(ReasonEnum.REASON4.getCode())) {

//查询全部的

String endTime2 = NewDateUtil.dateToString(new Date(System.currentTimeMillis()), “yyyy-MM-dd HH:mm:ss”);

String startTime2 = NewDateUtil.dateToString(new Date(1546272000000L), “yyyy-MM-dd HH:mm:ss”);

return getCustomizeChart(userId, startTime2, endTime2);

} else if (typeId.equals(ReasonEnum.REASON5.getCode())) {

//其他自定义

if (StringUtil.isNotNull(startTime) && StringUtil.isNotNull(endTime) && startTime.equals(endTime)) {

Date dayBegin = NewDateUtil.stringToDate(startTime, “yyyy-MM-dd HH:mm:ss”);

return getTodayChart(dayBegin, userId);

} else {

return getCustomizeChart(userId, startTime, endTime);

}

}

throw new RrkException(“typeId查询类型必填,且只能为(1:今日,2:7天,3:30天,4:全部,5:其他自定义)”);

}

/**

  • 其他自定义时间内的

  • @param userId

  • @param startTime

  • @param endTime

  • @return

  • @throws Exception

*/

private Map<String, Object> getCustomizeChart(Long userId, String startTime, String endTime) throws Exception {

Map<String, Object> map = new HashMap<>(4);

Date frontDay = NewDateUtil.stringToDate(startTime, “yyyy-MM-dd HH:mm:ss”);

Date endDay = NewDateUtil.stringToDate(endTime, “yyyy-MM-dd HH:mm:ss”);

// System.out.println(“frontDay=” + frontDay);

// System.out.println(“endDay=” + endDay);

List timeList2 = NewDateUtil.findDates(frontDay, endDay);

List dateList = new ArrayList<>(12);

List fansCount = new ArrayList<>(12);

for (int i = 0; i < timeList2.size() - 1; i++) {

List fansList = getFansCount(userId, NewDateUtil.getDayStartTime2(timeList2.get(i)), NewDateUtil.getDayEndTime2(timeList2.get(i)));

fansCount.add(fansList.size());

String formatDate = DateUtils.formatDate(timeList2.get(i), “yyyy-MM-dd HH:mm:ss”);

dateList.add(formatDate);

// System.out.println(timeList2.get(i));

// System.out.println(“frontDay=” + NewDateUtil.getDayStartTime2(timeList2.get(i)));

// System.out.println(“endDay=” + NewDateUtil.getDayEndTime2(timeList2.get(i)));

}

map.put(“dateList”, dateList);

map.put(“fansCount”, fansCount);

return map;

}

/**

  • 查询最近7天的

  • @param userId

  • @return

*/

private Map<String, Object> getWeekChart(Long userId, int count) {

Map<String, Object> map = new HashMap<>(4);

Date frontDay = NewDateUtil.getFrontDay(new Date(), count);

// System.out.println(“frontDay=” + frontDay);

List timeList2 = NewDateUtil.findDates(frontDay, new Date());

List dateList = new ArrayList<>(12);

List fansCount = new ArrayList<>(12);

for (int i = 0; i < timeList2.size() - 1; i++) {

Date dayStartTime = NewDateUtil.getDayStartTime2(timeList2.get(i));

Date dayEndTime = NewDateUtil.getDayEndTime2(timeList2.get(i));

List fansList = getFansCount(userId, dayStartTime, dayEndTime);

fansCount.add(fansList.size());

String formatDate = DateUtils.formatDate(timeList2.get(i), “yyyy-MM-dd HH:mm:ss”);

dateList.add(formatDate);

// System.out.println(timeList2.get(i));

}

map.put(“dateList”, dateList);

map.put(“fansCount”, fansCount);

return map;

}

/**

  • 查询今日的

  • @param userId

  • @return

*/

private Map<String, Object> getTodayChart(Date dateBegin, Long userId) throws Exception {

Map<String, Object> map = new HashMap<>(4);

//获取今天内的各时间点

List todayHours = NewDateUtil.getTodayHours(dateBegin, 4);

List dateList = new ArrayList<>(12);

List fansCount = new ArrayList<>(12);

for (int i = 0; i < todayHours.size() - 1; i++) {

List fansList = getFansCount(userId, todayHours.get(i), todayHours.get(i + 1));

fansCount.add(fansList.size());

String formatDate = DateUtils.formatDate(todayHours.get(i + 1), “yyyy-MM-dd HH:mm:ss”);

dateList.add(formatDate);

}

map.put(“dateList”, dateList);

map.put(“fansCount”, fansCount);

return map;

}

用到的日期工具类

//获取某个日期的开始时间

public static Date getDayStartTime2(Date d) {

Calendar calendar = Calendar.getInstance();

if (null != d) {

calendar.setTime(d);

}

calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);

calendar.set(Calendar.MILLISECOND, 0);

return calendar.getTime();

}

//获取某个日期的结束时间

public static Date getDayEndTime2(Date d) {

Calendar calendar = Calendar.getInstance();

if (null != d) {

calendar.setTime(d);

}

calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59);

calendar.set(Calendar.MILLISECOND, 999);

return calendar.getTime();

}

//JAVA获取某段时间内的所有日期

public static List findDates(Date dStart, Date dEnd) {

Calendar cStart = Calendar.getInstance();

cStart.setTime(dStart);

List dateList = new ArrayList<>();

//别忘了,把起始日期加上

dateList.add(dStart);

// 此日期是否在指定日期之后

while (dEnd.after(cStart.getTime())) {

// 根据日历的规则,为给定的日历字段添加或减去指定的时间量

cStart.add(Calendar.DAY_OF_MONTH, 1);

dateList.add(cStart.getTime());

}

return dateList;

}

// string类型转换为date类型

// strTime要转换的string类型的时间,formatType要转换的格式yyyy-MM-dd HH:mm:ss//yyyy年MM月dd日

// HH时mm分ss秒,

// strTime的时间格式必须要与formatType的时间格式相同

public static Date stringToDate(String strTime, String formatType)

throws ParseException {

SimpleDateFormat formatter = new SimpleDateFormat(formatType);

Date date = null;

date = formatter.parse(strTime);

return date;

  • 24
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值