2023-02-16 15:28:15 +08:00

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);
}
}