修改进度计划判定逻辑

This commit is contained in:
lcj
2025-10-01 15:07:12 +08:00
parent 3630c13f59
commit 666e402d5d

View File

@ -330,7 +330,11 @@ public class PgsProgressPlanDetailServiceImpl extends ServiceImpl<PgsProgressPla
}
BigDecimal completedTotal = progressCategory.getCompleted().add(new BigDecimal(size));
progressCategory.setCompleted(completedTotal);
// 判断是否完成计划
if (completedTotal.compareTo(progressCategory.getTotal()) == 0) {
// 清空计划数量
progressCategory.setPlanTotal(BigDecimal.ZERO);
// 设置完成状态
progressCategory.setStatus(PgsFinishStatusEnum.FINISH.getValue());
}
boolean updateCategory = progressCategoryService.updateById(progressCategory);
@ -419,23 +423,29 @@ public class PgsProgressPlanDetailServiceImpl extends ServiceImpl<PgsProgressPla
}
progressCategory.setCompleted(completedTotal);
// 完成判定
if (unitType.equals(PgsProgressUnitTypeEnum.PERCENTAGE.getValue())) {
if (completedTotal.compareTo(BigDecimal.valueOf(100)) == 0) {
progressCategory.setStatus(PgsFinishStatusEnum.FINISH.getValue());
}
} else { // NUMBER
if (completedTotal.compareTo(progressCategory.getTotal()) >= 0) {
progressCategory.setStatus(PgsFinishStatusEnum.FINISH.getValue());
}
}
// 判断是否跨过计划数量阈值
if (oldPlanFinished.compareTo(progressPlan.getPlanNumber()) < 0
&& newPlanFinished.compareTo(progressPlan.getPlanNumber()) >= 0) {
progressCategory.setPlanTotal(progressCategory.getPlanTotal().subtract(progressPlan.getPlanNumber()));
}
// 完成判定
if (unitType.equals(PgsProgressUnitTypeEnum.PERCENTAGE.getValue())) {
if (completedTotal.compareTo(BigDecimal.valueOf(100)) == 0) {
// 清空计划数量
progressCategory.setPlanTotal(BigDecimal.ZERO);
// 设置完成状态
progressCategory.setStatus(PgsFinishStatusEnum.FINISH.getValue());
}
} else { // NUMBER
if (completedTotal.compareTo(progressCategory.getTotal()) >= 0) {
// 清空计划数量
progressCategory.setPlanTotal(BigDecimal.ZERO);
// 设置完成状态
progressCategory.setStatus(PgsFinishStatusEnum.FINISH.getValue());
}
}
if (!progressCategoryService.updateById(progressCategory)) {
throw new ServiceException("更新进度分类异常", HttpStatus.ERROR);
}