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