61 lines
2.1 KiB
Java
61 lines
2.1 KiB
Java
package com.zhgd.xmgl.util.mysql;
|
|
|
|
import cn.hutool.core.date.DateField;
|
|
import cn.hutool.core.date.DateTime;
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
|
import java.util.Map;
|
|
import java.util.TreeMap;
|
|
import java.util.function.Supplier;
|
|
|
|
/**
|
|
* @author 邱平毅
|
|
* @ClassName MysqlDataUtil
|
|
* @date 2022/12/13
|
|
* @Version 1.0
|
|
*/
|
|
public class MysqlDataUtil {
|
|
private MysqlDataUtil() {
|
|
}
|
|
|
|
/**
|
|
* 根据开始时间创建对应时间下的内容,不包含结束时间
|
|
* 2022-01-01 ~ 2023-01-01
|
|
*
|
|
* @param stashDate 开始时间
|
|
* @param endDate 结束时间
|
|
* @param defaultValueSupplier 默认执行
|
|
* @param pattern 日期格式化
|
|
* @param dateField 日期缩进
|
|
* @param <V> 创建的Map对应value对象
|
|
* @return
|
|
*/
|
|
public static <V> Map<String, V> groupByDateTime(DateTime stashDate, DateTime endDate, Supplier<V> defaultValueSupplier, String pattern, DateField dateField) {
|
|
TreeMap<String, V> map = new TreeMap<>();
|
|
do {
|
|
map.put(stashDate.toString(pattern), defaultValueSupplier.get());
|
|
stashDate = DateUtil.offset(stashDate, dateField, 1);
|
|
} while (stashDate.getTime() <= endDate.getTime());
|
|
return map;
|
|
}
|
|
|
|
/**
|
|
* 根据字符串格式下的开始结束时间获取对应区间所有Map数据,不包含结束时间
|
|
* 2022-01-01 ~ 2023-01-01
|
|
*
|
|
* @param stashStr 开始时间字符串
|
|
* @param endStr 结束时间字符串
|
|
* @param defaultValue 默认值
|
|
* @param pattern 日期格式化
|
|
* @param dateField 日期缩进
|
|
* @param <V> 创建的Map对应value对象
|
|
* @return
|
|
*/
|
|
public static <V> Map<String, V> groupByStr(String stashStr, String endStr, V defaultValue, String pattern, DateField dateField) {
|
|
DateTime stashDate = DateUtil.parse(stashStr, pattern);
|
|
// 默认当前时间
|
|
DateTime endDate = DateUtil.parse(endStr == null ? DateUtil.now() : endStr, pattern);
|
|
return groupByDateTime(stashDate, endDate, (() -> (defaultValue)), pattern, dateField);
|
|
}
|
|
}
|