修改进度计划判定逻辑
This commit is contained in:
		| @ -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); | ||||
|         } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user