Browse Source

Merge remote-tracking branch 'origin/master'

liuyc 2 years ago
parent
commit
67a0ab6ff1

+ 3 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/AnnualBudgetMapper.java

@@ -8,6 +8,7 @@ import org.springblade.control.entity.ContractReturnedInfo;
 import org.springblade.control.entity.DepartmentMonthPlan;
 import org.springblade.control.entity.DictInfo;
 import org.springblade.control.vo.*;
+import org.springblade.system.entity.Dept;
 
 import java.util.List;
 import java.util.Map;
@@ -41,4 +42,6 @@ public interface AnnualBudgetMapper extends BaseMapper<AnnualBudget> {
     List<AnnualBudget> getAllYearBudget(@Param("year") int year);
 
     Integer yearList();
+
+    List<Dept> getAllDept();
 }

+ 3 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/AnnualBudgetMapper.xml

@@ -86,6 +86,9 @@
         WHERE is_deleted = 0 and start_time is not null order by start_time
             limit 1
     </select>
+    <select id="getAllDept" resultType="org.springblade.system.entity.Dept">
+        select * from blade_dept WHERE dept_type = 2 and is_deleted = 0
+    </select>
 
 
 </mapper>

+ 5 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/IProjectInfoService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.control.dto.ControlProjectInfoDTO;
 import org.springblade.control.entity.ControlProjectInfo;
 import org.springblade.control.entity.DictInfo;
+import org.springblade.control.entity.EMFinancialReimbursementInfo;
 import org.springblade.control.vo.AllProjectStatsVO;
 import org.springblade.control.vo.ControlProjectInfoVO;
 import org.springblade.core.mp.base.BaseService;
@@ -66,5 +67,9 @@ public interface IProjectInfoService extends BaseService<ControlProjectInfo> {
     //根据项目id获取项目截至目前-某个费用分类的的报销支出,按项目环节返回
     Map<Long,BigDecimal> getProjectReimburseByCostType(Long projectId,Integer costType);
 
+    //根据年,获取每月的报销支出
     List<BigDecimal> getAllMonthReimburseByYear(int y);
+
+    //获取当年所有的报销,直接返回
+    List<EMFinancialReimbursementInfo> getThisYearReimburse2(int year);
 }

+ 431 - 371
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/AnnualBudgetServiceImpl.java

@@ -12,6 +12,7 @@ import org.springblade.control.service.*;
 import org.springblade.control.vo.*;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.system.entity.Dept;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -1134,474 +1135,533 @@ public class AnnualBudgetServiceImpl extends BaseServiceImpl<AnnualBudgetMapper,
         List<String> months = Arrays.asList("一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月");
         //获取当年所有已经选择时间的固定计划
         List<ProjectCostBudget> allPlan = budgetService.getAllPlanByYear(y);
-        //如果当年没有计划,则把所有设置为0
+        Boolean isBudget = true;
+        Map<Integer, List<ProjectCostBudget>> allPlanMap = new HashMap<>();
         if (allPlan != null && allPlan.size() > 0){
-            //根据costType分组
-            Map<Integer, List<ProjectCostBudget>> allPlanMap = allPlan.parallelStream()
+            //如果不为空,根据costType分组
+            allPlanMap = allPlan.parallelStream()
                     .collect(Collectors.groupingBy(ProjectCostBudget::getCostType));
-            //获取当年所有已经完成的固定计划
-            //根据costType分组
-            List<ProjectCostBudget> allFinishedPlan = budgetService.getAllFinishedPlanByYear(y);
-            Boolean isFinished = true;
-            Map<Integer, List<ProjectCostBudget>> finishedMap = new HashMap<>();
-            if (allFinishedPlan != null && allFinishedPlan.size() > 0){
-                finishedMap = allFinishedPlan.parallelStream()
-                        .collect(Collectors.groupingBy(ProjectCostBudget::getCostType));
-            }else {
-                isFinished = false;
-            }
-            //维护支出,返回null证明没有
-            Map<Integer, List<BigDecimal>> maintainMap = budgetService.getAllMaintainCost9(y);
-            Boolean isMaintain = true;
-            if (maintainMap == null || maintainMap.size() <= 0){
-                isMaintain = false;
+        }else {
+            isBudget = false;
+        }
+        //维护支出,返回null证明没有
+        Map<Integer, List<BigDecimal>> maintainMap = budgetService.getAllMaintainCost9(y);
+        Boolean isMaintain = true;
+        if (maintainMap == null || maintainMap.size() <= 0){
+            isMaintain = false;
+        }
+        //获取当年所有已经完成的固定计划
+        //根据costType分组
+        List<ProjectCostBudget> allFinishedPlan = budgetService.getAllFinishedPlanByYear(y);
+        Boolean isFinished = true;
+        Map<Integer, List<ProjectCostBudget>> finishedMap = new HashMap<>();
+        if (allFinishedPlan != null && allFinishedPlan.size() > 0){
+            finishedMap = allFinishedPlan.parallelStream()
+                    .collect(Collectors.groupingBy(ProjectCostBudget::getCostType));
+        }else {
+            isFinished = false;
+        }
+        //获取所有部门
+        List<Dept> allDept = baseMapper.getAllDept();
+        if (allDept == null || allDept.size() <= 0){
+            throw new ServiceException("当前没配置部门,无法统计");
+        }
+        Map<Long, List<Dept>> deptMap = allDept.parallelStream()
+                .collect(Collectors.groupingBy(Dept::getId));
+        //报销支出
+        List<EMFinancialReimbursementInfo> allReimburse = projectInfoService.getThisYearReimburse2(y);
+        Boolean isReimburse = true;
+        Map<Integer, List<EMFinancialReimbursementInfo>> ReimburseMap = new HashMap<>();
+        if (allReimburse != null && allReimburse.size() > 0){
+            //对部门和费用类型做映射
+            for (EMFinancialReimbursementInfo info : allReimburse) {
+                if (info.getCreateDept() != null){
+                    info.setIsTemp(deptMap.get(info.getCreateDept()).get(0).getDeptCategory());
+                }else {
+                    throw new ServiceException("有用户没有部门直接报销,无法统计");
+                }
             }
-            //报销支出
+            ReimburseMap = allReimburse.parallelStream()
+                    .collect(Collectors.groupingBy(EMFinancialReimbursementInfo::getIsTemp));
+        }else {
+            isReimburse = false;
+        }
 
-            BigDecimal c1 = new BigDecimal(0);
-            BigDecimal c2 = new BigDecimal(0);
-            BigDecimal c3 = new BigDecimal(0);
-            BigDecimal c4 = new BigDecimal(0);
-            BigDecimal c5 = new BigDecimal(0);
-            BigDecimal c6 = new BigDecimal(0);
-            BigDecimal c7 = new BigDecimal(0);
-            BigDecimal c8 = new BigDecimal(0);
-            BigDecimal c9 = new BigDecimal(0);
-            BigDecimal c10 = new BigDecimal(0);
-            //循环12个月,为每个月设置值
-            for (int i = 0; i < 12; i++) {
-                BudgetAndPracticalByDeptVO vo = new BudgetAndPracticalByDeptVO();
-                //设置月份
-                vo.setTime(months.get(i));
-                //设置市场部
+        BigDecimal c1 = new BigDecimal(0);
+        BigDecimal c2 = new BigDecimal(0);
+        BigDecimal c3 = new BigDecimal(0);
+        BigDecimal c4 = new BigDecimal(0);
+        BigDecimal c5 = new BigDecimal(0);
+        BigDecimal c6 = new BigDecimal(0);
+        BigDecimal c7 = new BigDecimal(0);
+        BigDecimal c8 = new BigDecimal(0);
+        BigDecimal c9 = new BigDecimal(0);
+        BigDecimal c10 = new BigDecimal(0);
+        //循环12个月,为每个月设置值
+        for (int i = 0; i < 12; i++) {
+            BudgetAndPracticalByDeptVO vo = new BudgetAndPracticalByDeptVO();
+            //设置月份
+            vo.setTime(months.get(i));
+            //设置市场部
+            if (isBudget && allPlanMap.get(1) != null && allPlanMap.get(1).size() > 0) {
                 List<ProjectCostBudget> b1 = allPlanMap.get(1);
-                if (b1 != null && b1.size() > 0){
+                BigDecimal big = new BigDecimal(0);
+                //循环市场部每一个预算
+                for (ProjectCostBudget budget : b1) {
+                    //如果开始时间或结束时间是当月,则添加预算
+                    if ((budget.getPlanStartTime().getMonthValue() == (i + 1) && budget.getPlanStartTime().getYear() == y)
+                            || (budget.getPlanEndTime().getMonthValue() == (i + 1) && budget.getPlanEndTime().getYear() == y)) {
+                        //如果开始时间和结束时间的月相同,则直接用总预算
+                        if (budget.getPlanIsTwoMonth() == 0) {
+                            big = big.add(budget.getPlanStaffCost());
+                        } else {
+                            //如果开始月是当前月,则直接使用开始金额
+                            if (budget.getPlanStartTime().getMonthValue() == (i + 1) && budget.getPlanStartTime().getYear() == y) {
+                                big = big.add(budget.getPlanStartMoney());
+                            } else {
+                                //结束月是当前月,使用结束金额
+                                big = big.add(budget.getPlanEndMoney());
+                            }
+                        }
+                    }
+                }
+                vo.setBudget1(big);
+                c1 = c1.add(big);
+            }else {
+                 vo.setBudget1(new BigDecimal(0));
+            }
+            if (isFinished){
+                List<ProjectCostBudget> d1 = finishedMap.get(1);
+                if (d1 != null && d1.size() > 0){
                     BigDecimal big = new BigDecimal(0);
-                    //循环市场部每一个预算
-                    for (ProjectCostBudget budget : b1) {
-                        //如果开始时间或结束时间是当月,则添加预算
-                        if ((budget.getPlanStartTime().getMonthValue() == (i+1) && budget.getPlanStartTime().getYear() == y)
-                            || (budget.getPlanEndTime().getMonthValue() == (i+1) && budget.getPlanEndTime().getYear() == y)){
+                    //循环市场部每一个支出
+                    for (ProjectCostBudget budget : d1) {
+                        //如果实际开始时间或实际结束时间是当月,则添加支出
+                        if ((budget.getRealPlanStartTime().getMonthValue() == (i+1) && budget.getRealPlanStartTime().getYear() == y)
+                                || (budget.getPracticalFinishTime().getMonthValue() == (i+1) && budget.getPracticalFinishTime().getYear() == y)){
                             //如果开始时间和结束时间的月相同,则直接用总预算
-                            if (budget.getPlanIsTwoMonth() == 0){
-                                big = big.add(budget.getPlanStaffCost());
+                            if (budget.getIsTwoMonth() == 0){
+                                big = big.add(budget.getActualTotalMoney());
                             }else {
                                 //如果开始月是当前月,则直接使用开始金额
-                                if (budget.getPlanStartTime().getMonthValue() == (i+1) && budget.getPlanStartTime().getYear() == y){
-                                    big = big.add(budget.getPlanStartMoney());
+                                if (budget.getRealPlanStartTime().getMonthValue() == (i+1) && budget.getRealPlanStartTime().getYear() == y){
+                                    big = big.add(budget.getPracticalStartMoney());
                                 }else {
                                     //结束月是当前月,使用结束金额
-                                    big = big.add(budget.getPlanEndMoney());
-                                }
-                            }
-                        }
-                    }
-                    vo.setBudget1(big);
-                    c1 = c1.add(big);
-                }else {
-                    vo.setBudget1(new BigDecimal(0));
-                }
-                if (isFinished){
-                    List<ProjectCostBudget> d1 = finishedMap.get(1);
-                    if (d1 != null && d1.size() > 0){
-                        BigDecimal big = new BigDecimal(0);
-                        //循环市场部每一个支出
-                        for (ProjectCostBudget budget : d1) {
-                            //如果实际开始时间或实际结束时间是当月,则添加支出
-                            if ((budget.getRealPlanStartTime().getMonthValue() == (i+1) && budget.getRealPlanStartTime().getYear() == y)
-                                    || (budget.getPracticalFinishTime().getMonthValue() == (i+1) && budget.getPracticalFinishTime().getYear() == y)){
-                                //如果开始时间和结束时间的月相同,则直接用总预算
-                                if (budget.getIsTwoMonth() == 0){
-                                    big = big.add(budget.getActualTotalMoney());
-                                }else {
-                                    //如果开始月是当前月,则直接使用开始金额
-                                    if (budget.getRealPlanStartTime().getMonthValue() == (i+1) && budget.getRealPlanStartTime().getYear() == y){
-                                        big = big.add(budget.getPracticalStartMoney());
-                                    }else {
-                                        //结束月是当前月,使用结束金额
-                                        big = big.add(budget.getPracticalEndMoney());
-                                    }
+                                    big = big.add(budget.getPracticalEndMoney());
                                 }
                             }
                         }
-                        vo.setPractical1(big);
-                        c2 = c2.add(big);
-                    }else {
-                        vo.setPractical1(new BigDecimal(0));
                     }
+                    vo.setPractical1(big);
+                    c2 = c2.add(big);
                 }else {
                     vo.setPractical1(new BigDecimal(0));
                 }
-                //设置维护支出
-                if (isMaintain && maintainMap.get(1) != null && maintainMap.get(1).size() > 0){
-                    vo.setBudget1(vo.getBudget1().add(maintainMap.get(1).get(i)));
-                    vo.setPractical1(vo.getPractical1().add(maintainMap.get(1).get(i)));
-                    c1 = c1.add(maintainMap.get(1).get(i));
-                    c2 = c2.add(maintainMap.get(1).get(i));
+            }else {
+                vo.setPractical1(new BigDecimal(0));
+            }
+            //设置维护支出
+            if (isMaintain && maintainMap.get(1) != null && maintainMap.get(1).size() > 0){
+                vo.setBudget1(vo.getBudget1().add(maintainMap.get(1).get(i)));
+                vo.setPractical1(vo.getPractical1().add(maintainMap.get(1).get(i)));
+                c1 = c1.add(maintainMap.get(1).get(i));
+                c2 = c2.add(maintainMap.get(1).get(i));
+            }
+            //设置报销支出
+            if (isReimburse && ReimburseMap.get(1) != null && ReimburseMap.get(1).size() > 0){
+                List<EMFinancialReimbursementInfo> infos = ReimburseMap.get(1);
+                BigDecimal big = new BigDecimal(0);
+                for (EMFinancialReimbursementInfo info : infos) {
+                    if (info.getFrDate().getMonth() == i){
+                        big = big.add(info.getFrMoney());
+                    }
                 }
+                vo.setPractical1(vo.getPractical1().add(big));
+                c2 = c2.add(big);
+            }
 
-                //设置研发部
+            //设置研发部
+            if (isBudget && allPlanMap.get(2) != null && allPlanMap.get(2).size() > 0) {
                 List<ProjectCostBudget> b2 = allPlanMap.get(2);
-                if (b2 != null && b2.size() > 0){
+                BigDecimal big = new BigDecimal(0);
+                //循环研发部每一个预算
+                for (ProjectCostBudget budget : b2) {
+                    //如果开始时间或结束时间是当月,则添加预算
+                    if ((budget.getPlanStartTime().getMonthValue() == (i+1) && budget.getPlanStartTime().getYear() == y)
+                            || (budget.getPlanEndTime().getMonthValue() == (i+1) && budget.getPlanEndTime().getYear() == y)){
+                        //如果开始时间和结束时间的月相同,则直接用总预算
+                        if (budget.getPlanIsTwoMonth() == 0){
+                            big = big.add(budget.getPlanStaffCost());
+                        }else {
+                            //如果开始月是当前月,则直接使用开始金额
+                            if (budget.getPlanStartTime().getMonthValue() == (i+1) && budget.getPlanStartTime().getYear() == y){
+                                big = big.add(budget.getPlanStartMoney());
+                            }else {
+                                //结束月是当前月,使用结束金额
+                                big = big.add(budget.getPlanEndMoney());
+                            }
+                        }
+                    }
+                }
+                vo.setBudget2(big);
+                c3 = c3.add(big);
+            }else {
+                vo.setBudget2(new BigDecimal(0));
+            }
+            if (isFinished){
+                List<ProjectCostBudget> d2 = finishedMap.get(2);
+                if (d2 != null && d2.size() > 0){
                     BigDecimal big = new BigDecimal(0);
-                    //循环研发部每一个预算
-                    for (ProjectCostBudget budget : b2) {
-                        //如果开始时间或结束时间是当月,则添加预算
-                        if ((budget.getPlanStartTime().getMonthValue() == (i+1) && budget.getPlanStartTime().getYear() == y)
-                                || (budget.getPlanEndTime().getMonthValue() == (i+1) && budget.getPlanEndTime().getYear() == y)){
+                    //循环市场部每一个支出
+                    for (ProjectCostBudget budget : d2) {
+                        //如果实际开始时间或实际结束时间是当月,则添加支出
+                        if ((budget.getRealPlanStartTime().getMonthValue() == (i+1) && budget.getRealPlanStartTime().getYear() == y)
+                                || (budget.getPracticalFinishTime().getMonthValue() == (i+1) && budget.getPracticalFinishTime().getYear() == y)){
                             //如果开始时间和结束时间的月相同,则直接用总预算
-                            if (budget.getPlanIsTwoMonth() == 0){
-                                big = big.add(budget.getPlanStaffCost());
+                            if (budget.getIsTwoMonth() == 0){
+                                big = big.add(budget.getActualTotalMoney());
                             }else {
                                 //如果开始月是当前月,则直接使用开始金额
-                                if (budget.getPlanStartTime().getMonthValue() == (i+1) && budget.getPlanStartTime().getYear() == y){
-                                    big = big.add(budget.getPlanStartMoney());
+                                if (budget.getRealPlanStartTime().getMonthValue() == (i+1) && budget.getRealPlanStartTime().getYear() == y){
+                                    big = big.add(budget.getPracticalStartMoney());
                                 }else {
                                     //结束月是当前月,使用结束金额
-                                    big = big.add(budget.getPlanEndMoney());
-                                }
-                            }
-                        }
-                    }
-                    vo.setBudget2(big);
-                    c3 = c3.add(big);
-                }else {
-                    vo.setBudget2(new BigDecimal(0));
-                }
-                if (isFinished){
-                    List<ProjectCostBudget> d2 = finishedMap.get(2);
-                    if (d2 != null && d2.size() > 0){
-                        BigDecimal big = new BigDecimal(0);
-                        //循环市场部每一个支出
-                        for (ProjectCostBudget budget : d2) {
-                            //如果实际开始时间或实际结束时间是当月,则添加支出
-                            if ((budget.getRealPlanStartTime().getMonthValue() == (i+1) && budget.getRealPlanStartTime().getYear() == y)
-                                    || (budget.getPracticalFinishTime().getMonthValue() == (i+1) && budget.getPracticalFinishTime().getYear() == y)){
-                                //如果开始时间和结束时间的月相同,则直接用总预算
-                                if (budget.getIsTwoMonth() == 0){
-                                    big = big.add(budget.getActualTotalMoney());
-                                }else {
-                                    //如果开始月是当前月,则直接使用开始金额
-                                    if (budget.getRealPlanStartTime().getMonthValue() == (i+1) && budget.getRealPlanStartTime().getYear() == y){
-                                        big = big.add(budget.getPracticalStartMoney());
-                                    }else {
-                                        //结束月是当前月,使用结束金额
-                                        big = big.add(budget.getPracticalEndMoney());
-                                    }
+                                    big = big.add(budget.getPracticalEndMoney());
                                 }
                             }
                         }
-                        vo.setPractical2(big);
-                        c4 = c4.add(big);
-                    }else {
-                        vo.setPractical2(new BigDecimal(0));
                     }
+                    vo.setPractical2(big);
+                    c4 = c4.add(big);
                 }else {
                     vo.setPractical2(new BigDecimal(0));
                 }
-                //设置维护支出
-                if (isMaintain && maintainMap.get(2) != null && maintainMap.get(2).size() > 0){
-                    vo.setBudget2(vo.getBudget2().add(maintainMap.get(2).get(i)));
-                    vo.setPractical2(vo.getPractical2().add(maintainMap.get(2).get(i)));
-                    c3 = c3.add(maintainMap.get(2).get(i));
-                    c4 = c4.add(maintainMap.get(2).get(i));
+            }else {
+                vo.setPractical2(new BigDecimal(0));
+            }
+            //设置维护支出
+            if (isMaintain && maintainMap.get(2) != null && maintainMap.get(2).size() > 0){
+                vo.setBudget2(vo.getBudget2().add(maintainMap.get(2).get(i)));
+                vo.setPractical2(vo.getPractical2().add(maintainMap.get(2).get(i)));
+                c3 = c3.add(maintainMap.get(2).get(i));
+                c4 = c4.add(maintainMap.get(2).get(i));
+            }
+            //设置报销支出
+            if (isReimburse && ReimburseMap.get(2) != null && ReimburseMap.get(2).size() > 0){
+                List<EMFinancialReimbursementInfo> infos = ReimburseMap.get(2);
+                BigDecimal big = new BigDecimal(0);
+                for (EMFinancialReimbursementInfo info : infos) {
+                    if (info.getFrDate().getMonth() == i){
+                        big = big.add(info.getFrMoney());
+                    }
                 }
+                vo.setPractical2(vo.getPractical2().add(big));
+                c4 = c4.add(big);
+            }
+
 
-                //设置实施部
+            //设置实施部
+            if (isBudget && allPlanMap.get(3) != null && allPlanMap.get(3).size() > 0) {
                 List<ProjectCostBudget> b3 = allPlanMap.get(3);
-                if (b3 != null && b3.size() > 0){
+                BigDecimal big = new BigDecimal(0);
+                //循环研发部每一个预算
+                for (ProjectCostBudget budget : b3) {
+                    //如果开始时间或结束时间是当月,则添加预算
+                    if ((budget.getPlanStartTime().getMonthValue() == (i+1) && budget.getPlanStartTime().getYear() == y)
+                            || (budget.getPlanEndTime().getMonthValue() == (i+1) && budget.getPlanEndTime().getYear() == y)){
+                        //如果开始时间和结束时间的月相同,则直接用总预算
+                        if (budget.getPlanIsTwoMonth() == 0){
+                            big = big.add(budget.getPlanStaffCost());
+                        }else {
+                            //如果开始月是当前月,则直接使用开始金额
+                            if (budget.getPlanStartTime().getMonthValue() == (i+1) && budget.getPlanStartTime().getYear() == y){
+                                big = big.add(budget.getPlanStartMoney());
+                            }else {
+                                //结束月是当前月,使用结束金额
+                                big = big.add(budget.getPlanEndMoney());
+                            }
+                        }
+                    }
+                }
+                vo.setBudget3(big);
+                c5 = c5.add(big);
+            }else {
+                vo.setBudget3(new BigDecimal(0));
+            }
+            if (isFinished){
+                List<ProjectCostBudget> d3 = finishedMap.get(3);
+                if (d3 != null && d3.size() > 0){
                     BigDecimal big = new BigDecimal(0);
-                    //循环研发部每一个预算
-                    for (ProjectCostBudget budget : b3) {
-                        //如果开始时间或结束时间是当月,则添加预算
-                        if ((budget.getPlanStartTime().getMonthValue() == (i+1) && budget.getPlanStartTime().getYear() == y)
-                                || (budget.getPlanEndTime().getMonthValue() == (i+1) && budget.getPlanEndTime().getYear() == y)){
+                    //循环每一个支出
+                    for (ProjectCostBudget budget : d3) {
+                        //如果实际开始时间或实际结束时间是当月,则添加支出
+                        if ((budget.getRealPlanStartTime().getMonthValue() == (i+1) && budget.getRealPlanStartTime().getYear() == y)
+                                || (budget.getPracticalFinishTime().getMonthValue() == (i+1) && budget.getPracticalFinishTime().getYear() == y)){
                             //如果开始时间和结束时间的月相同,则直接用总预算
-                            if (budget.getPlanIsTwoMonth() == 0){
-                                big = big.add(budget.getPlanStaffCost());
+                            if (budget.getIsTwoMonth() == 0){
+                                big = big.add(budget.getActualTotalMoney());
                             }else {
                                 //如果开始月是当前月,则直接使用开始金额
-                                if (budget.getPlanStartTime().getMonthValue() == (i+1) && budget.getPlanStartTime().getYear() == y){
-                                    big = big.add(budget.getPlanStartMoney());
+                                if (budget.getRealPlanStartTime().getMonthValue() == (i+1) && budget.getRealPlanStartTime().getYear() == y){
+                                    big = big.add(budget.getPracticalStartMoney());
                                 }else {
                                     //结束月是当前月,使用结束金额
-                                    big = big.add(budget.getPlanEndMoney());
-                                }
-                            }
-                        }
-                    }
-                    vo.setBudget3(big);
-                    c5 = c5.add(big);
-                }else {
-                    vo.setBudget3(new BigDecimal(0));
-                }
-                if (isFinished){
-                    List<ProjectCostBudget> d3 = finishedMap.get(3);
-                    if (d3 != null && d3.size() > 0){
-                        BigDecimal big = new BigDecimal(0);
-                        //循环每一个支出
-                        for (ProjectCostBudget budget : d3) {
-                            //如果实际开始时间或实际结束时间是当月,则添加支出
-                            if ((budget.getRealPlanStartTime().getMonthValue() == (i+1) && budget.getRealPlanStartTime().getYear() == y)
-                                    || (budget.getPracticalFinishTime().getMonthValue() == (i+1) && budget.getPracticalFinishTime().getYear() == y)){
-                                //如果开始时间和结束时间的月相同,则直接用总预算
-                                if (budget.getIsTwoMonth() == 0){
-                                    big = big.add(budget.getActualTotalMoney());
-                                }else {
-                                    //如果开始月是当前月,则直接使用开始金额
-                                    if (budget.getRealPlanStartTime().getMonthValue() == (i+1) && budget.getRealPlanStartTime().getYear() == y){
-                                        big = big.add(budget.getPracticalStartMoney());
-                                    }else {
-                                        //结束月是当前月,使用结束金额
-                                        big = big.add(budget.getPracticalEndMoney());
-                                    }
+                                    big = big.add(budget.getPracticalEndMoney());
                                 }
                             }
                         }
-                        vo.setPractical3(big);
-                        c6 = c6.add(big);
-                    }else {
-                        vo.setPractical3(new BigDecimal(0));
                     }
+                    vo.setPractical3(big);
+                    c6 = c6.add(big);
                 }else {
                     vo.setPractical3(new BigDecimal(0));
                 }
-                //设置维护支出
-                if (isMaintain && maintainMap.get(3) != null && maintainMap.get(3).size() > 0){
-                    vo.setBudget3(vo.getBudget3().add(maintainMap.get(3).get(i)));
-                    vo.setPractical3(vo.getPractical3().add(maintainMap.get(3).get(i)));
-                    c5 = c5.add(maintainMap.get(3).get(i));
-                    c6 = c6.add(maintainMap.get(3).get(i));
+            }else {
+                vo.setPractical3(new BigDecimal(0));
+            }
+            //设置维护支出
+            if (isMaintain && maintainMap.get(3) != null && maintainMap.get(3).size() > 0){
+                vo.setBudget3(vo.getBudget3().add(maintainMap.get(3).get(i)));
+                vo.setPractical3(vo.getPractical3().add(maintainMap.get(3).get(i)));
+                c5 = c5.add(maintainMap.get(3).get(i));
+                c6 = c6.add(maintainMap.get(3).get(i));
+            }
+            //设置报销支出
+            if (isReimburse && ReimburseMap.get(3) != null && ReimburseMap.get(3).size() > 0){
+                List<EMFinancialReimbursementInfo> infos = ReimburseMap.get(3);
+                BigDecimal big = new BigDecimal(0);
+                for (EMFinancialReimbursementInfo info : infos) {
+                    if (info.getFrDate().getMonth() == i){
+                        big = big.add(info.getFrMoney());
+                    }
                 }
+                vo.setPractical3(vo.getPractical3().add(big));
+                c6 = c6.add(big);
+            }
+
 
-                //设置维护部
+            //设置维护部
+            if (isBudget && allPlanMap.get(4) != null && allPlanMap.get(4).size() > 0) {
                 List<ProjectCostBudget> b4 = allPlanMap.get(4);
-                if (b4 != null && b4.size() > 0){
+                BigDecimal big = new BigDecimal(0);
+                //循环每一个预算
+                for (ProjectCostBudget budget : b4) {
+                    //如果开始时间或结束时间是当月,则添加预算
+                    if ((budget.getPlanStartTime().getMonthValue() == (i+1) && budget.getPlanStartTime().getYear() == y)
+                            || (budget.getPlanEndTime().getMonthValue() == (i+1) && budget.getPlanEndTime().getYear() == y)){
+                        //如果开始时间和结束时间的月相同,则直接用总预算
+                        if (budget.getPlanIsTwoMonth() == 0){
+                            big = big.add(budget.getPlanStaffCost());
+                        }else {
+                            //如果开始月是当前月,则直接使用开始金额
+                            if (budget.getPlanStartTime().getMonthValue() == (i+1) && budget.getPlanStartTime().getYear() == y){
+                                big = big.add(budget.getPlanStartMoney());
+                            }else {
+                                //结束月是当前月,使用结束金额
+                                big = big.add(budget.getPlanEndMoney());
+                            }
+                        }
+                    }
+                }
+                vo.setBudget4(big);
+                c7 = c7.add(big);
+            }else {
+                vo.setBudget4(new BigDecimal(0));
+            }
+            if (isFinished){
+                List<ProjectCostBudget> d4 = finishedMap.get(4);
+                if (d4 != null && d4.size() > 0){
                     BigDecimal big = new BigDecimal(0);
-                    //循环每一个预算
-                    for (ProjectCostBudget budget : b4) {
-                        //如果开始时间或结束时间是当月,则添加预算
-                        if ((budget.getPlanStartTime().getMonthValue() == (i+1) && budget.getPlanStartTime().getYear() == y)
-                                || (budget.getPlanEndTime().getMonthValue() == (i+1) && budget.getPlanEndTime().getYear() == y)){
+                    //循环每一个支出
+                    for (ProjectCostBudget budget : d4) {
+                        //如果实际开始时间或实际结束时间是当月,则添加支出
+                        if ((budget.getRealPlanStartTime().getMonthValue() == (i+1) && budget.getRealPlanStartTime().getYear() == y)
+                                || (budget.getPracticalFinishTime().getMonthValue() == (i+1) && budget.getPracticalFinishTime().getYear() == y)){
                             //如果开始时间和结束时间的月相同,则直接用总预算
-                            if (budget.getPlanIsTwoMonth() == 0){
-                                big = big.add(budget.getPlanStaffCost());
+                            if (budget.getIsTwoMonth() == 0){
+                                big = big.add(budget.getActualTotalMoney());
                             }else {
                                 //如果开始月是当前月,则直接使用开始金额
-                                if (budget.getPlanStartTime().getMonthValue() == (i+1) && budget.getPlanStartTime().getYear() == y){
-                                    big = big.add(budget.getPlanStartMoney());
+                                if (budget.getRealPlanStartTime().getMonthValue() == (i+1) && budget.getRealPlanStartTime().getYear() == y){
+                                    big = big.add(budget.getPracticalStartMoney());
                                 }else {
                                     //结束月是当前月,使用结束金额
-                                    big = big.add(budget.getPlanEndMoney());
-                                }
-                            }
-                        }
-                    }
-                    vo.setBudget4(big);
-                    c7 = c7.add(big);
-                }else {
-                    vo.setBudget4(new BigDecimal(0));
-                }
-                if (isFinished){
-                    List<ProjectCostBudget> d4 = finishedMap.get(4);
-                    if (d4 != null && d4.size() > 0){
-                        BigDecimal big = new BigDecimal(0);
-                        //循环每一个支出
-                        for (ProjectCostBudget budget : d4) {
-                            //如果实际开始时间或实际结束时间是当月,则添加支出
-                            if ((budget.getRealPlanStartTime().getMonthValue() == (i+1) && budget.getRealPlanStartTime().getYear() == y)
-                                    || (budget.getPracticalFinishTime().getMonthValue() == (i+1) && budget.getPracticalFinishTime().getYear() == y)){
-                                //如果开始时间和结束时间的月相同,则直接用总预算
-                                if (budget.getIsTwoMonth() == 0){
-                                    big = big.add(budget.getActualTotalMoney());
-                                }else {
-                                    //如果开始月是当前月,则直接使用开始金额
-                                    if (budget.getRealPlanStartTime().getMonthValue() == (i+1) && budget.getRealPlanStartTime().getYear() == y){
-                                        big = big.add(budget.getPracticalStartMoney());
-                                    }else {
-                                        //结束月是当前月,使用结束金额
-                                        big = big.add(budget.getPracticalEndMoney());
-                                    }
+                                    big = big.add(budget.getPracticalEndMoney());
                                 }
                             }
                         }
-                        vo.setPractical4(big);
-                        c8 = c8.add(big);
-                    }else {
-                        vo.setPractical4(new BigDecimal(0));
                     }
+                    vo.setPractical4(big);
+                    c8 = c8.add(big);
                 }else {
                     vo.setPractical4(new BigDecimal(0));
                 }
-                //设置维护支出
-                if (isMaintain && maintainMap.get(4) != null && maintainMap.get(4).size() > 0){
-                    vo.setBudget4(vo.getBudget4().add(maintainMap.get(4).get(i)));
-                    vo.setPractical4(vo.getPractical4().add(maintainMap.get(4).get(i)));
-                    c7 = c7.add(maintainMap.get(4).get(i));
-                    c8 = c8.add(maintainMap.get(4).get(i));
+            }else {
+                vo.setPractical4(new BigDecimal(0));
+            }
+            //设置维护支出
+            if (isMaintain && maintainMap.get(4) != null && maintainMap.get(4).size() > 0){
+                vo.setBudget4(vo.getBudget4().add(maintainMap.get(4).get(i)));
+                vo.setPractical4(vo.getPractical4().add(maintainMap.get(4).get(i)));
+                c7 = c7.add(maintainMap.get(4).get(i));
+                c8 = c8.add(maintainMap.get(4).get(i));
+            }
+            //设置报销支出
+            if (isReimburse && ReimburseMap.get(4) != null && ReimburseMap.get(4).size() > 0){
+                List<EMFinancialReimbursementInfo> infos = ReimburseMap.get(4);
+                BigDecimal big = new BigDecimal(0);
+                for (EMFinancialReimbursementInfo info : infos) {
+                    if (info.getFrDate().getMonth() == i){
+                        big = big.add(info.getFrMoney());
+                    }
                 }
+                vo.setPractical4(vo.getPractical4().add(big));
+                c8 = c8.add(big);
+            }
+
 
-                //设置管理中心 = 管理支出+外包劳务
-                BigDecimal big1 = new BigDecimal(0);
-                BigDecimal big2 = new BigDecimal(0);
+            //设置管理中心 = 管理支出+外包劳务
+            BigDecimal big1 = new BigDecimal(0);
+            BigDecimal big2 = new BigDecimal(0);
+            if (isBudget && allPlanMap.get(5) != null && allPlanMap.get(5).size() > 0) {
                 List<ProjectCostBudget> b5 = allPlanMap.get(5);
-                if (b5 != null && b5.size() > 0){
-                    //循环研发部每一个预算
-                    for (ProjectCostBudget budget : b5) {
-                        //如果开始时间或结束时间是当月,则添加预算
-                        if ((budget.getPlanStartTime().getMonthValue() == (i+1) && budget.getPlanStartTime().getYear() == y)
-                                || (budget.getPlanEndTime().getMonthValue() == (i+1) && budget.getPlanEndTime().getYear() == y)){
+                //循环研发部每一个预算
+                for (ProjectCostBudget budget : b5) {
+                    //如果开始时间或结束时间是当月,则添加预算
+                    if ((budget.getPlanStartTime().getMonthValue() == (i+1) && budget.getPlanStartTime().getYear() == y)
+                            || (budget.getPlanEndTime().getMonthValue() == (i+1) && budget.getPlanEndTime().getYear() == y)){
+                        //如果开始时间和结束时间的月相同,则直接用总预算
+                        if (budget.getPlanIsTwoMonth() == 0){
+                            big1 = big1.add(budget.getPlanStaffCost());
+                        }else {
+                            //如果开始月是当前月,则直接使用开始金额
+                            if (budget.getPlanStartTime().getMonthValue() == (i+1) && budget.getPlanStartTime().getYear() == y){
+                                big1 = big1.add(budget.getPlanStartMoney());
+                            }else {
+                                //结束月是当前月,使用结束金额
+                                big1 = big1.add(budget.getPlanEndMoney());
+                            }
+                        }
+                    }
+                }
+            }
+            if (isFinished){
+                List<ProjectCostBudget> d5 = finishedMap.get(5);
+                if (d5 != null && d5.size() > 0){
+                    //循环市场部每一个支出
+                    for (ProjectCostBudget budget : d5) {
+                        //如果实际开始时间或实际结束时间是当月,则添加支出
+                        if ((budget.getRealPlanStartTime().getMonthValue() == (i+1) && budget.getRealPlanStartTime().getYear() == y)
+                                || (budget.getPracticalFinishTime().getMonthValue() == (i+1) && budget.getPracticalFinishTime().getYear() == y)){
                             //如果开始时间和结束时间的月相同,则直接用总预算
-                            if (budget.getPlanIsTwoMonth() == 0){
-                                big1 = big1.add(budget.getPlanStaffCost());
+                            if (budget.getIsTwoMonth() == 0){
+                                big2 = big2.add(budget.getActualTotalMoney());
                             }else {
                                 //如果开始月是当前月,则直接使用开始金额
-                                if (budget.getPlanStartTime().getMonthValue() == (i+1) && budget.getPlanStartTime().getYear() == y){
-                                    big1 = big1.add(budget.getPlanStartMoney());
+                                if (budget.getRealPlanStartTime().getMonthValue() == (i+1) && budget.getRealPlanStartTime().getYear() == y){
+                                    big2 = big2.add(budget.getPracticalStartMoney());
                                 }else {
                                     //结束月是当前月,使用结束金额
-                                    big1 = big1.add(budget.getPlanEndMoney());
+                                    big2 = big2.add(budget.getPracticalEndMoney());
                                 }
                             }
                         }
                     }
                 }
-                if (isFinished){
-                    List<ProjectCostBudget> d5 = finishedMap.get(5);
-                    if (d5 != null && d5.size() > 0){
-                        //循环市场部每一个支出
-                        for (ProjectCostBudget budget : d5) {
-                            //如果实际开始时间或实际结束时间是当月,则添加支出
-                            if ((budget.getRealPlanStartTime().getMonthValue() == (i+1) && budget.getRealPlanStartTime().getYear() == y)
-                                    || (budget.getPracticalFinishTime().getMonthValue() == (i+1) && budget.getPracticalFinishTime().getYear() == y)){
-                                //如果开始时间和结束时间的月相同,则直接用总预算
-                                if (budget.getIsTwoMonth() == 0){
-                                    big2 = big2.add(budget.getActualTotalMoney());
-                                }else {
-                                    //如果开始月是当前月,则直接使用开始金额
-                                    if (budget.getRealPlanStartTime().getMonthValue() == (i+1) && budget.getRealPlanStartTime().getYear() == y){
-                                        big2 = big2.add(budget.getPracticalStartMoney());
-                                    }else {
-                                        //结束月是当前月,使用结束金额
-                                        big2 = big2.add(budget.getPracticalEndMoney());
-                                    }
-                                }
+            }
+            if (isBudget && allPlanMap.get(6) != null && allPlanMap.get(6).size() > 0) {
+                List<ProjectCostBudget> b6 = allPlanMap.get(6);
+                //循环研发部每一个预算
+                for (ProjectCostBudget budget : b6) {
+                    //如果开始时间或结束时间是当月,则添加预算
+                    if ((budget.getPlanStartTime().getMonthValue() == (i+1) && budget.getPlanStartTime().getYear() == y)
+                            || (budget.getPlanEndTime().getMonthValue() == (i+1) && budget.getPlanEndTime().getYear() == y)){
+                        //如果开始时间和结束时间的月相同,则直接用总预算
+                        if (budget.getPlanIsTwoMonth() == 0){
+                            big1 = big1.add(budget.getPlanStaffCost());
+                        }else {
+                            //如果开始月是当前月,则直接使用开始金额
+                            if (budget.getPlanStartTime().getMonthValue() == (i+1) && budget.getPlanStartTime().getYear() == y){
+                                big1 = big1.add(budget.getPlanStartMoney());
+                            }else {
+                                //结束月是当前月,使用结束金额
+                                big1 = big1.add(budget.getPlanEndMoney());
                             }
                         }
                     }
                 }
-                List<ProjectCostBudget> b6 = allPlanMap.get(6);
-                if (b6 != null && b6.size() > 0){
-                    //循环研发部每一个预算
-                    for (ProjectCostBudget budget : b6) {
-                        //如果开始时间或结束时间是当月,则添加预算
-                        if ((budget.getPlanStartTime().getMonthValue() == (i+1) && budget.getPlanStartTime().getYear() == y)
-                                || (budget.getPlanEndTime().getMonthValue() == (i+1) && budget.getPlanEndTime().getYear() == y)){
+            }
+            if (isFinished){
+                List<ProjectCostBudget> d6 = finishedMap.get(6);
+                if (d6 != null && d6.size() > 0){
+                    //循环市场部每一个支出
+                    for (ProjectCostBudget budget : d6) {
+                        //如果实际开始时间或实际结束时间是当月,则添加支出
+                        if ((budget.getRealPlanStartTime().getMonthValue() == (i+1) && budget.getRealPlanStartTime().getYear() == y)
+                                || (budget.getPracticalFinishTime().getMonthValue() == (i+1) && budget.getPracticalFinishTime().getYear() == y)){
                             //如果开始时间和结束时间的月相同,则直接用总预算
-                            if (budget.getPlanIsTwoMonth() == 0){
-                                big1 = big1.add(budget.getPlanStaffCost());
+                            if (budget.getIsTwoMonth() == 0){
+                                big2 = big2.add(budget.getActualTotalMoney());
                             }else {
                                 //如果开始月是当前月,则直接使用开始金额
-                                if (budget.getPlanStartTime().getMonthValue() == (i+1) && budget.getPlanStartTime().getYear() == y){
-                                    big1 = big1.add(budget.getPlanStartMoney());
+                                if (budget.getRealPlanStartTime().getMonthValue() == (i+1) && budget.getRealPlanStartTime().getYear() == y){
+                                    big2 = big2.add(budget.getPracticalStartMoney());
                                 }else {
                                     //结束月是当前月,使用结束金额
-                                    big1 = big1.add(budget.getPlanEndMoney());
+                                    big2 = big2.add(budget.getPracticalEndMoney());
                                 }
                             }
                         }
                     }
                 }
-                if (isFinished){
-                    List<ProjectCostBudget> d6 = finishedMap.get(6);
-                    if (d6 != null && d6.size() > 0){
-                        //循环市场部每一个支出
-                        for (ProjectCostBudget budget : d6) {
-                            //如果实际开始时间或实际结束时间是当月,则添加支出
-                            if ((budget.getRealPlanStartTime().getMonthValue() == (i+1) && budget.getRealPlanStartTime().getYear() == y)
-                                    || (budget.getPracticalFinishTime().getMonthValue() == (i+1) && budget.getPracticalFinishTime().getYear() == y)){
-                                //如果开始时间和结束时间的月相同,则直接用总预算
-                                if (budget.getIsTwoMonth() == 0){
-                                    big2 = big2.add(budget.getActualTotalMoney());
-                                }else {
-                                    //如果开始月是当前月,则直接使用开始金额
-                                    if (budget.getRealPlanStartTime().getMonthValue() == (i+1) && budget.getRealPlanStartTime().getYear() == y){
-                                        big2 = big2.add(budget.getPracticalStartMoney());
-                                    }else {
-                                        //结束月是当前月,使用结束金额
-                                        big2 = big2.add(budget.getPracticalEndMoney());
-                                    }
-                                }
-                            }
-                        }
+            }
+            //设置维护支出
+            if (isMaintain && maintainMap.get(5) != null && maintainMap.get(5).size() > 0){
+                big1 = big1.add(maintainMap.get(5).get(i));
+                big2 = big2.add(maintainMap.get(5).get(i));
+                c9 = c9.add(maintainMap.get(5).get(i));
+                c10 = c10.add(maintainMap.get(5).get(i));
+            }
+            //设置维护支出
+            if (isMaintain && maintainMap.get(6) != null && maintainMap.get(6).size() > 0){
+                big1 = big1.add(maintainMap.get(6).get(i));
+                big2 = big2.add(maintainMap.get(6).get(i));
+                c9 = c9.add(maintainMap.get(6).get(i));
+                c10 = c10.add(maintainMap.get(6).get(i));
+            }
+            //设置管理中心报销支出
+            if (isReimburse && ReimburseMap.get(5) != null && ReimburseMap.get(5).size() > 0){
+                List<EMFinancialReimbursementInfo> infos = ReimburseMap.get(5);
+                BigDecimal big = new BigDecimal(0);
+                for (EMFinancialReimbursementInfo info : infos) {
+                    if (info.getFrDate().getMonth() == i){
+                        big = big.add(info.getFrMoney());
                     }
                 }
-                //设置维护支出
-                if (isMaintain && maintainMap.get(5) != null && maintainMap.get(5).size() > 0){
-                    big1 = big1.add(maintainMap.get(5).get(i));
-                    big2 = big2.add(maintainMap.get(5).get(i));
-                    c9 = c9.add(maintainMap.get(5).get(i));
-                    c10 = c10.add(maintainMap.get(5).get(i));
-                }
-                //设置维护支出
-                if (isMaintain && maintainMap.get(6) != null && maintainMap.get(6).size() > 0){
-                    big1 = big1.add(maintainMap.get(6).get(i));
-                    big2 = big2.add(maintainMap.get(6).get(i));
-                    c9 = c9.add(maintainMap.get(6).get(i));
-                    c10 = c10.add(maintainMap.get(6).get(i));
-                }
-                vo.setBudget5(big1);
-                c9 = c9.add(big1);
-                vo.setPractical5(big2);
-                c10 = c10.add(big2);
-                list.add(vo);
+                big2 = big2.add(big);
             }
-            //计算总计
-            BudgetAndPracticalByDeptVO vo2 = new BudgetAndPracticalByDeptVO();
-            vo2.setTime("总计");
-            vo2.setBudget1(c1);
-            vo2.setPractical1(c2);
-            vo2.setBudget2(c3);
-            vo2.setPractical2(c4);
-            vo2.setBudget3(c5);
-            vo2.setPractical3(c6);
-            vo2.setBudget4(c7);
-            vo2.setPractical4(c8);
-            vo2.setBudget5(c9);
-            vo2.setPractical5(c10);
-            list.add(vo2);
-            return list;
-        }else {
-            for (int i = 0; i < 12; i++) {
-                BudgetAndPracticalByDeptVO vo = new BudgetAndPracticalByDeptVO();
-                vo.setTime(months.get(i));
-                vo.setBudget1(new BigDecimal(0));
-                vo.setBudget1(new BigDecimal(0));
-                vo.setBudget1(new BigDecimal(0));
-                vo.setBudget1(new BigDecimal(0));
-                vo.setBudget1(new BigDecimal(0));
-                vo.setPractical1(new BigDecimal(0));
-                vo.setPractical1(new BigDecimal(0));
-                vo.setPractical1(new BigDecimal(0));
-                vo.setPractical1(new BigDecimal(0));
-                vo.setPractical1(new BigDecimal(0));
-                list.add(vo);
-            }
-            BudgetAndPracticalByDeptVO vo = new BudgetAndPracticalByDeptVO();
-            vo.setTime("总计");
-            vo.setBudget1(new BigDecimal(0));
-            vo.setBudget1(new BigDecimal(0));
-            vo.setBudget1(new BigDecimal(0));
-            vo.setBudget1(new BigDecimal(0));
-            vo.setBudget1(new BigDecimal(0));
-            vo.setPractical1(new BigDecimal(0));
-            vo.setPractical1(new BigDecimal(0));
-            vo.setPractical1(new BigDecimal(0));
-            vo.setPractical1(new BigDecimal(0));
-            vo.setPractical1(new BigDecimal(0));
+            vo.setBudget5(big1);
+            c9 = c9.add(big1);
+            vo.setPractical5(big2);
+            c10 = c10.add(big2);
             list.add(vo);
-            return list;
         }
+        //计算总计
+        BudgetAndPracticalByDeptVO vo2 = new BudgetAndPracticalByDeptVO();
+        vo2.setTime("总计");
+        vo2.setBudget1(c1);
+        vo2.setPractical1(c2);
+        vo2.setBudget2(c3);
+        vo2.setPractical2(c4);
+        vo2.setBudget3(c5);
+        vo2.setPractical3(c6);
+        vo2.setBudget4(c7);
+        vo2.setPractical4(c8);
+        vo2.setBudget5(c9);
+        vo2.setPractical5(c10);
+        list.add(vo2);
+        return list;
     }
 
     /**
@@ -1629,7 +1689,7 @@ public class AnnualBudgetServiceImpl extends BaseServiceImpl<AnnualBudgetMapper,
         //维护支出
         BigDecimal maintainCost = budgetService.getAllMaintainCost(y);
         //报销支出
-        BigDecimal decimal = projectInfoService.getThisYearReimburse(LocalDate.now().getYear());
+        BigDecimal decimal = projectInfoService.getThisYearReimburse(y);
         vo.setPracticalOutput(disburse.add(maintainCost).add(decimal));
         return vo;
     }

+ 10 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ProjectInfoServiceImpl.java

@@ -562,5 +562,15 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, C
         return list;
     }
 
+    /**
+     * 获取当年所有的报销,直接返回
+     * @param year
+     * @return
+     */
+    @Override
+    public List<EMFinancialReimbursementInfo> getThisYearReimburse2(int year) {
+        return baseMapper.getYearReimburseByMonth(year);
+    }
+
 
 }

+ 2 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsParamController.java

@@ -14,6 +14,7 @@ import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
 import org.springblade.common.utils.BaseUtils;
+import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
@@ -86,7 +87,7 @@ public class WbsParamController {
             List<WbsParamBean> wps = pb.getWps();
             String names=checkRepeat(wps);
             if(names!=null){
-                return R.success("存在重复参数【"+names+"】,删除多余项再保存");
+                return R.fail("存在重复参数【"+names+"】,删除多余项再保存");
             }
             /*执行顺序,删>增>改*/
             if (Func.isNotEmpty(pb.getDelIds())) {