feat: 任务时效增加最低1小时限制

如果任务汇总时效不足1小时,自动使用1小时作为最低时效
分部门计算,每个部门的子任务都有独立的最低时效限制
This commit is contained in:
Your Name 2026-01-16 17:28:35 +08:00
parent 88050b8086
commit 3d5026b512

View File

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