mbda表現はjavaバックグラウンドのパケット順序付け過程の解析を解決します。
需要:スタートの日付によって、データベースの中の一連の日付の入院情報を調べます。
問題:データベース内の入院情報は完全ではないかもしれません。つまり、提供された日付の区間には何日間のデータしかないので、ある日付のデータが足りません。
解決:
1.まず日付別にグループ分けしてデータベースにあるデータを調べてみたいです。
2.日付を巡回して、存在しない日付を日付でkeyとし、valueをnullとしてセットに挿入する。
3.集合の中のkeyつまり日付を並べ替える。
注:ここでのグループ化と順序付けは、JDK 8の新しい特性のlamband表現を使用します。
問題:データベース内の入院情報は完全ではないかもしれません。つまり、提供された日付の区間には何日間のデータしかないので、ある日付のデータが足りません。
解決:
1.まず日付別にグループ分けしてデータベースにあるデータを調べてみたいです。
2.日付を巡回して、存在しない日付を日付でkeyとし、valueをnullとしてセットに挿入する。
3.集合の中のkeyつまり日付を並べ替える。
注:ここでのグループ化と順序付けは、JDK 8の新しい特性のlamband表現を使用します。
/**
*
* @param startTime
* @param endTime
* @param tbOrderExecutionExample
* @return
* @throws ParseException
*/
private Map<String, List<TBOrderExecution>> getListMap(@RequestParam(value = "startTime", required = false) String startTime, @RequestParam(value = "endTime", required = false) String endTime, TBOrderExecutionExample tbOrderExecutionExample) throws ParseException {
List<TBOrderExecution> list = tbDocOrderAdmissionService.selectByExample(tbOrderExecutionExample);
//
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
List<String> lists = DateRangUtil.getAllDate(startTime, endTime);
Map<String, List<TBOrderExecution>> map = list.stream().collect(Collectors.groupingBy(x -> sdf2.format(x.getYzjhksrq())));
Set<String> keys = map.keySet();
Map<String, List<TBOrderExecution>> finalMap = map;
lists.forEach(ele -> {
if (!keys.contains(ele)) {
finalMap.put(ele, null);
}
});
Map<String, List<TBOrderExecution>> finalMaps = new LinkedHashMap<>();
Set<String> strings = finalMap.keySet();
List<String> dates = new ArrayList<>(strings);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
Collections.sort(dates, new Comparator<String>() {
DateFormat f = new SimpleDateFormat("yyyy-MM-dd");
@Override
public int compare(String o1, String o2) {
try {
return f.parse(o1).compareTo(f.parse(o2));
} catch (ParseException e) {
throw new IllegalArgumentException(e);
}
}
});
dates.forEach(ele -> {
finalMap.forEach((key, value) -> {
if (key.equals(ele)) {
finalMaps.put(ele, value);
}
});
});
return finalMaps;
}
下には、与えられた開始日として生まれた日付のコードを貼り付けます。
public static List<String> getAllDate(String start, String end) throws ParseException {
List<Date> lDate = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date dBegin = sdf.parse(start);
Date dEnd = sdf.parse(end);
lDate.add(dBegin);
Calendar calBegin = Calendar.getInstance();
// Date Calendar
calBegin.setTime(dBegin);
Calendar calEnd = Calendar.getInstance();
// Date Calendar
calEnd.setTime(dEnd);
//
while (dEnd.after(calBegin.getTime())) {
// ,
calBegin.add(Calendar.DAY_OF_MONTH, 1);
lDate.add(calBegin.getTime());
}
List<String> allDate = new ArrayList<>();
lDate.forEach(ele -> allDate.add(sdf.format(ele)));
return allDate;
}
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。