| | |
| | | summary.put("taskEndTime", taskEndTime); |
| | | summary.put("taskEndTime$", formatDate(taskEndTime)); |
| | | summary.put("taskDurationMs", taskStartTime == null || taskEndTime == null ? null : durationMs(taskStartTime, taskEndTime)); |
| | | summary.put("avgTaskBeatDurationMs", list.isEmpty() || taskStartTime == null || taskEndTime == null |
| | | ? null |
| | | : durationMs(taskStartTime, taskEndTime) / list.size()); |
| | | 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)); |
| | |
| | | taskEndTime: null, |
| | | taskEndTime$: "", |
| | | taskDurationMs: null, |
| | | avgTaskBeatDurationMs: null, |
| | | avgTotalDurationMs: null, |
| | | avgStationDurationMs: null, |
| | | avgCraneDurationMs: null, |
| | |
| | | <div class="summary-sub">最早创建到最晚完成</div> |
| | | </div> |
| | | <div class="summary-card"> |
| | | <div class="summary-label">平均节拍</div> |
| | | <div class="summary-value">{{ formatDuration(analysis.summary.avgTaskBeatDurationMs) }}</div> |
| | | <div class="summary-sub">总任务总耗时 / 任务数</div> |
| | | </div> |
| | | <div class="summary-card"> |
| | | <div class="summary-label">平均总耗时</div> |
| | | <div class="summary-value">{{ formatDuration(analysis.summary.avgTotalDurationMs) }}</div> |
| | | <div class="summary-sub">创建到完成的平均耗时</div> |