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) {