From 3d5026b512b6f97c1418208e0401a59c93e0d7c3 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 16 Jan 2026 17:28:35 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BB=BB=E5=8A=A1=E6=97=B6=E6=95=88?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=9C=80=E4=BD=8E1=E5=B0=8F=E6=97=B6?= =?UTF-8?q?=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 如果任务汇总时效不足1小时,自动使用1小时作为最低时效 分部门计算,每个部门的子任务都有独立的最低时效限制 --- .../com/designhub/util/WorkHoursCalculator.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/backend/src/main/java/com/designhub/util/WorkHoursCalculator.java b/backend/src/main/java/com/designhub/util/WorkHoursCalculator.java index 8570b7b..d7327b0 100644 --- a/backend/src/main/java/com/designhub/util/WorkHoursCalculator.java +++ b/backend/src/main/java/com/designhub/util/WorkHoursCalculator.java @@ -69,6 +69,9 @@ public class WorkHoursCalculator { return config; } + // 最低任务时效(小时) + private static final BigDecimal MIN_WORK_HOURS = BigDecimal.ONE; + /** * 计算截止时间(只计算工作时间段) * @param startTime 开始时间(接单时间) @@ -80,6 +83,13 @@ public class WorkHoursCalculator { return null; } + // 🔥 应用最低时效:如果任务时效不足1小时,使用1小时 + BigDecimal effectiveWorkHours = workHours; + if (workHours.compareTo(MIN_WORK_HOURS) < 0) { + log.info("任务时效 {} 小时不足最低时效 {} 小时,使用最低时效", workHours, MIN_WORK_HOURS); + effectiveWorkHours = MIN_WORK_HOURS; + } + WorkHoursConfig config = getWorkHoursConfig(); LocalTime workStart = config.getStartTime(); LocalTime workEnd = config.getEndTime(); @@ -97,8 +107,8 @@ public class WorkHoursCalculator { current = current.toLocalDate().plusDays(1).atTime(workStart); } - // 计算剩余工时 - BigDecimal remainingHours = workHours; + // 计算剩余工时(使用应用最低时效后的值) + BigDecimal remainingHours = effectiveWorkHours; // 循环累加工时,只在工作时间段内计算 while (remainingHours.compareTo(BigDecimal.ZERO) > 0) {