| | |
| | | private Map<String, Object> buildAnalysisResult(List<WrkAnalysis> list, String timeField) { |
| | | Map<String, Object> result = new LinkedHashMap<>(); |
| | | Map<String, Object> summary = new LinkedHashMap<>(); |
| | | Date taskStartTime = list.stream() |
| | | .map(WrkAnalysis::getAppeTime) |
| | | .filter(Objects::nonNull) |
| | | .min(Date::compareTo) |
| | | .orElse(null); |
| | | Date taskEndTime = list.stream() |
| | | .map(WrkAnalysis::getFinishTime) |
| | | .filter(Objects::nonNull) |
| | | .max(Date::compareTo) |
| | | .orElse(null); |
| | | summary.put("taskCount", list.size()); |
| | | summary.put("taskStartTime", taskStartTime); |
| | | summary.put("taskStartTime$", formatDate(taskStartTime)); |
| | | summary.put("taskEndTime", taskEndTime); |
| | | summary.put("taskEndTime$", formatDate(taskEndTime)); |
| | | summary.put("taskDurationMs", taskStartTime == null || taskEndTime == null ? null : durationMs(taskStartTime, taskEndTime)); |
| | | summary.put("avgTotalDurationMs", average(list, item -> item.getTotalDurationMs() != null, WrkAnalysis::getTotalDurationMs)); |
| | | summary.put("avgStationDurationMs", average(list, item -> !METRIC_PARTIAL.equals(item.getMetricCompleteness()) && item.getStationDurationMs() != null, WrkAnalysis::getStationDurationMs)); |
| | | summary.put("avgCraneDurationMs", average(list, item -> !METRIC_PARTIAL.equals(item.getMetricCompleteness()) && item.getCraneDurationMs() != null, WrkAnalysis::getCraneDurationMs)); |