From cbb00d4729243e4949b3c921fc2f94cb03ca8aaa Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 27 三月 2026 18:47:43 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/WrkAnalysisServiceImpl.java | 19 +++++++++++++++++++
1 files changed, 19 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/WrkAnalysisServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkAnalysisServiceImpl.java
index a15880a..f647010 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkAnalysisServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkAnalysisServiceImpl.java
@@ -16,6 +16,8 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@@ -464,6 +466,10 @@
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("avgTaskPerHour", calculateAvgTaskPerHour(list.size(), summary.get("taskDurationMs")));
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));
@@ -839,6 +845,19 @@
return count == 0 ? null : total / count;
}
+ private Double calculateAvgTaskPerHour(int taskCount, Object taskDurationMsValue) {
+ if (taskCount <= 0 || !(taskDurationMsValue instanceof Number)) {
+ return null;
+ }
+ long taskDurationMs = ((Number) taskDurationMsValue).longValue();
+ if (taskDurationMs <= 0L) {
+ return null;
+ }
+ return BigDecimal.valueOf(taskCount * 3600000D / taskDurationMs)
+ .setScale(2, RoundingMode.HALF_UP)
+ .doubleValue();
+ }
+
private void applyRange(QueryWrapper<WrkMastLog> wrapper, String column, String rawValue) {
if (Cools.isEmpty(rawValue) || !rawValue.contains("~")) {
return;
--
Gitblit v1.9.1