/**
* 数据补全
* Map<String, Object> map = new HashMap();
* map.put("ssss", "123");
* List<Map<String, Object>> objects = new ArrayList<>();
* Map<String, Object> map1 = new HashMap();
* map1.put("ssss", "1235");
* map1.put("day", "01");
* objects.add(map1);
* List<Map<String, Object>> day = fillTime(objects, map, "day", 12,null);
* List<Map<String, Object>> day1 = fillTime(objects, map, "day", 12,"2020-12-%02d 00:00:00");
*
* @param fillData 填充的数据
* @param fillField 填充的字段
* @param key 日期的字段名
* @param fillDay 填充的天数
* @param format 格式
* @return
*/
public static List<Map<String, Object>> fillTime(List<Map<String, Object>> fillData,
Map<String, Object> fillField, String key, int fillDay, String format) {
List<Map<String, Object>> returnVal = new ArrayList<>();
Assert.notEmpty(fillField, "There are no fields to fill in");
if (StringUtils.isEmpty(format)) format = "%02d";
for (int i = 1; i < fillDay + 1; i++) {
String dayStr = String.format(format, i);
fillData.stream()
.filter(map -> map.containsKey(key) && map.get(key).equals(dayStr))
.forEach(map -> {
for (String str : fillField.keySet()) {
if (!map.containsKey(str)) {
map.put(str, fillField.get(str));
}
}
returnVal.add(map);
return;
});
Map<String, Object> dayMap = new HashMap<>(12);
dayMap.put(key, dayStr);
dayMap.putAll(fillField);
returnVal.add(dayMap);
}
return returnVal;
}
public static void main(String[] args) {
Map<String, Object> map = new HashMap();
map.put("ssss", "1235");
List<Map<String, Object>> objects = new ArrayList<>();
Map<String, Object> map1 = new HashMap();
map1.put("ssss", "123");
map1.put("day", "01");
objects.add(map1);
List<Map<String, Object>> day = fillTime(objects, map, "day", 12, "");
System.out.println(Arrays.asList(day));
List<Map<String, Object>> day1 = fillTime(objects, map, "day", 31, "2020-12-%02d 00:00:00");
System.out.println(Arrays.asList(day1));
}