diff --git a/backend/src/main/java/net/beetechgroup/beetask/usecase/dashboard/DashboardUseCase.java b/backend/src/main/java/net/beetechgroup/beetask/usecase/dashboard/DashboardUseCase.java index eddb09b..a253d93 100644 --- a/backend/src/main/java/net/beetechgroup/beetask/usecase/dashboard/DashboardUseCase.java +++ b/backend/src/main/java/net/beetechgroup/beetask/usecase/dashboard/DashboardUseCase.java @@ -130,7 +130,8 @@ public class DashboardUseCase { private long calculateMinutesInRange(TaskHistoryItem item, LocalDateTime start, LocalDateTime end) { LocalDateTime effectiveStart = item.getStartAt().isBefore(start) ? start : item.getStartAt(); - LocalDateTime effectiveEnd = Objects.isNull(item.getEndAt()) || item.getEndAt().isAfter(end) ? end : item.getEndAt(); + LocalDateTime itemEnd = Objects.nonNull(item.getEndAt()) ? item.getEndAt() : LocalDateTime.now(); + LocalDateTime effectiveEnd = itemEnd.isAfter(end) ? end : itemEnd; if (effectiveStart.isAfter(effectiveEnd)) return 0; diff --git a/backend/src/main/java/net/beetechgroup/beetask/usecase/orgdashboard/OrgDashboardUseCase.java b/backend/src/main/java/net/beetechgroup/beetask/usecase/orgdashboard/OrgDashboardUseCase.java index c73bc94..de6e3b9 100644 --- a/backend/src/main/java/net/beetechgroup/beetask/usecase/orgdashboard/OrgDashboardUseCase.java +++ b/backend/src/main/java/net/beetechgroup/beetask/usecase/orgdashboard/OrgDashboardUseCase.java @@ -140,7 +140,8 @@ public class OrgDashboardUseCase { private long calculateMinutesInRange(TaskHistoryItem item, LocalDateTime start, LocalDateTime end) { LocalDateTime effectiveStart = item.getStartAt().isBefore(start) ? start : item.getStartAt(); - LocalDateTime effectiveEnd = Objects.isNull(item.getEndAt()) || item.getEndAt().isAfter(end) ? end : item.getEndAt(); + LocalDateTime itemEnd = Objects.nonNull(item.getEndAt()) ? item.getEndAt() : LocalDateTime.now(); + LocalDateTime effectiveEnd = itemEnd.isAfter(end) ? end : itemEnd; if (effectiveStart.isAfter(effectiveEnd)) return 0; return Duration.between(effectiveStart, effectiveEnd).toMinutes(); } diff --git a/backend/src/main/java/net/beetechgroup/beetask/usecase/orgdashboard/memberdetail/MemberDetailUseCase.java b/backend/src/main/java/net/beetechgroup/beetask/usecase/orgdashboard/memberdetail/MemberDetailUseCase.java index e8637a5..6c91ba6 100644 --- a/backend/src/main/java/net/beetechgroup/beetask/usecase/orgdashboard/memberdetail/MemberDetailUseCase.java +++ b/backend/src/main/java/net/beetechgroup/beetask/usecase/orgdashboard/memberdetail/MemberDetailUseCase.java @@ -66,7 +66,8 @@ public class MemberDetailUseCase { for (TaskHistoryItem h : task.getHistory()) { if (!isWithinPeriod(h, start, end)) continue; LocalDateTime effectiveStart = h.getStartAt().isBefore(start) ? start : h.getStartAt(); - LocalDateTime effectiveEnd = (Objects.isNull(h.getEndAt()) || h.getEndAt().isAfter(end)) ? end : h.getEndAt(); + LocalDateTime itemEnd = Objects.nonNull(h.getEndAt()) ? h.getEndAt() : LocalDateTime.now(); + LocalDateTime effectiveEnd = itemEnd.isAfter(end) ? end : itemEnd; if (effectiveStart.isAfter(effectiveEnd)) continue; long minutes = Duration.between(effectiveStart, effectiveEnd).toMinutes();