Quellcode durchsuchen

门户项目服务阶段进程

qianxb vor 2 Jahren
Ursprung
Commit
79d863dcb0

+ 55 - 7
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/AnnualBudgetServiceImpl.java

@@ -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;

+ 9 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ContractReturnedInfoServiceImpl.java

@@ -20,6 +20,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @Param
@@ -42,6 +43,14 @@ public class ContractReturnedInfoServiceImpl extends BaseServiceImpl<ContractRet
         baseMapper.deleteOldInfo(dto.getId());
         List<ContractReturnedInfo> list = dto.getList();
         if (list != null && list.size() >0) {
+            //删除为空的数据
+            list = list.stream().filter(l -> {
+                if (l.getReturnedCondition() == null || l.getShouldReturnedTime() == null || l.getShouldReturnedMoney() == null) {
+                    return false;
+                }else {
+                    return true;
+                }
+            }).collect(Collectors.toList());
             for (ContractReturnedInfo info : list) {
                 info.setProjectId(dto.getProjectId());
                 info.setContractId(dto.getId());