|
@@ -695,15 +695,26 @@ public class AnnualBudgetServiceImpl extends BaseServiceImpl<AnnualBudgetMapper,
|
|
|
public List<ProjectServiceProcessVO> portalProjectProcess(Long projectId) {
|
|
|
//获取当前项目所有进程
|
|
|
List<ProjectProcessVO> projectProcess = processService.getProjectProcess(projectId);
|
|
|
+ //获取项目所有计划
|
|
|
+ List<ProjectCostBudget> list = budgetService.list(new LambdaQueryWrapper<ProjectCostBudget>()
|
|
|
+ .eq(ProjectCostBudget::getProjectId, projectId).eq(ProjectCostBudget::getApprove,1));
|
|
|
+ Map<Long, List<ProjectCostBudget>> collect2 = new HashMap<>();
|
|
|
+ boolean isPlan2 = true ;
|
|
|
+ if (list != null && list.size() > 0){
|
|
|
+ collect2 = list.parallelStream()
|
|
|
+ .collect(Collectors.groupingBy(ProjectCostBudget::getProjectProcess));
|
|
|
+ }else {
|
|
|
+ isPlan2 = false;
|
|
|
+ }
|
|
|
//获取项目所有已经闭环的计划
|
|
|
List<ProjectCostBudget> finishedTask = budgetService.getProjectAllFinishedTask(projectId, null);
|
|
|
Map<Long, List<ProjectCostBudget>> collect = new HashMap<>();
|
|
|
boolean isPlan = false ;
|
|
|
- if (finishedTask == null || finishedTask.size() <= 0){
|
|
|
- isPlan = true;
|
|
|
- }else {
|
|
|
+ if (finishedTask != null && finishedTask.size() > 0){
|
|
|
collect = finishedTask.parallelStream()
|
|
|
.collect(Collectors.groupingBy(ProjectCostBudget::getProjectProcess));
|
|
|
+ }else {
|
|
|
+ isPlan = true;
|
|
|
}
|
|
|
//把计划根据进程分组
|
|
|
//为每个进程设置值
|
|
@@ -720,8 +731,25 @@ public class AnnualBudgetServiceImpl extends BaseServiceImpl<AnnualBudgetMapper,
|
|
|
//已闭环
|
|
|
vo.setProcessProgressBar(100);
|
|
|
}else {
|
|
|
- //进行中
|
|
|
- vo.setProcessProgressBar(50);
|
|
|
+ //进行中,进行中则查看该环节下所有计划和计划完成度
|
|
|
+ if (isPlan2) {
|
|
|
+ List<ProjectCostBudget> budgets = collect2.get(process.getId());
|
|
|
+ if (budgets != null && budgets.size() > 0) {
|
|
|
+ BigDecimal allPlan = new BigDecimal(0);
|
|
|
+ BigDecimal finishPlan = new BigDecimal(0);
|
|
|
+ for (ProjectCostBudget budget : budgets) {
|
|
|
+ allPlan = allPlan.add(new BigDecimal(1));
|
|
|
+ if (budget.getTaskApprove() == 1) {
|
|
|
+ finishPlan = finishPlan.add(new BigDecimal(1));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ vo.setProcessProgressBar(finishPlan.divide(allPlan, 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).intValue());
|
|
|
+ } else {
|
|
|
+ vo.setProcessProgressBar(100);
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ vo.setProcessProgressBar(100);
|
|
|
+ }
|
|
|
}
|
|
|
}else {
|
|
|
//未设置时间默认未开始
|
|
@@ -743,8 +771,28 @@ public class AnnualBudgetServiceImpl extends BaseServiceImpl<AnnualBudgetMapper,
|
|
|
vo.setProcessCostCount(new BigDecimal(0));
|
|
|
}
|
|
|
}
|
|
|
- //设置进程支出金额百分比
|
|
|
- vo.setProcessCostProgressBar(40);
|
|
|
+ //设置进程支出金额百分比,统计实际支出和预算的百分比
|
|
|
+ if (isPlan2){
|
|
|
+ List<ProjectCostBudget> budgets = collect2.get(process.getId());
|
|
|
+ if (budgets != null && budgets.size() > 0) {
|
|
|
+ BigDecimal allMoney = new BigDecimal(0);
|
|
|
+ BigDecimal costMoney = new BigDecimal(0);
|
|
|
+ for (ProjectCostBudget budget : budgets) {
|
|
|
+ if (budget.getBudgetCountMoney() == null){
|
|
|
+ budget.setBudgetCountMoney(new BigDecimal(0));
|
|
|
+ }
|
|
|
+ allMoney = allMoney.add(budget.getBudgetCountMoney());
|
|
|
+ if (budget.getTaskApprove() == 1) {
|
|
|
+ costMoney = costMoney.add(budget.getActualTotalMoney());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ vo.setProcessCostProgressBar(costMoney.divide(allMoney, 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).intValue());
|
|
|
+ } else {
|
|
|
+ vo.setProcessCostProgressBar(0);
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ vo.setProcessCostProgressBar(0);
|
|
|
+ }
|
|
|
vos.add(vo);
|
|
|
}
|
|
|
return vos;
|