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 创建的Map对应value对象 * @return */ public static Map groupByDateTime(DateTime stashDate, DateTime endDate, Supplier defaultValueSupplier, String pattern, DateField dateField) { TreeMap 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 创建的Map对应value对象 * @return */ public static Map 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); } }