进度计划

This commit is contained in:
lcj
2025-09-29 20:08:07 +08:00
parent a1ba33c06d
commit a1450c4796

View File

@ -779,8 +779,8 @@ public class PgsProgressCategoryServiceImpl extends ServiceImpl<PgsProgressCateg
vo.setWorkType(workType.split("_")[0]);
}
// 如果是父节点,计算其子节点的总和
if (progressCategory.getParentId() == 0) {
List<PgsProgressCategory> children = parentIdToChildrenMap.getOrDefault(progressCategory.getId(), Collections.emptyList());
if (CollUtil.isNotEmpty(children)) {
// 获取父节点状态
String parentStatus = getParentStatus(children);
// 累加子节点数据
@ -1451,19 +1451,27 @@ public class PgsProgressCategoryServiceImpl extends ServiceImpl<PgsProgressCateg
*/
@Override
public BigDecimal getCompletedPercentage(List<PgsProgressCategory> categoryList) {
BigDecimal completedTotal = BigDecimal.ZERO;
BigDecimal allTotal = BigDecimal.ZERO;
// 如果没有数据则返回0
if (CollUtil.isEmpty(categoryList)) {
return BigDecimal.ZERO;
}
BigDecimal totalCompleted = BigDecimal.ZERO;
BigDecimal totalWork = BigDecimal.ZERO;
// 遍历所有项目进度,计算总完成数和总数
for (PgsProgressCategory category : categoryList) {
BigDecimal completed = category.getCompleted();
BigDecimal total = category.getTotal();
if (PgsProgressUnitTypeEnum.NUMBER.getValue().equals(category.getUnitType())) {
completedTotal = completedTotal.add(completed);
} else if (PgsProgressUnitTypeEnum.PERCENTAGE.getValue().equals(category.getUnitType())) {
completedTotal = completedTotal.add(completed.divide(BigDecimal.valueOf(100L), 2, RoundingMode.HALF_UP).multiply(total));
if (PgsProgressUnitTypeEnum.PERCENTAGE.getValue().equals(category.getUnitType())) {
completed = completed.divide(BigDecimal.valueOf(100L), 4, RoundingMode.HALF_UP).multiply(total);
}
allTotal = allTotal.add(total);
totalCompleted = totalCompleted.add(completed);
totalWork = totalWork.add(total);
}
return BigDecimalUtil.toPercentage(completedTotal, allTotal);
return BigDecimalUtil.toPercentage(totalCompleted, totalWork);
}
/**