|
@@ -328,10 +328,13 @@ public class AnnualBudgetServiceImpl extends BaseServiceImpl<AnnualBudgetMapper,
|
|
vo3.setYearReturned(yearReturned);
|
|
vo3.setYearReturned(yearReturned);
|
|
|
|
|
|
//统计今年的已盈利:已收入-支出 ,目前已支出只统计闭环的计划
|
|
//统计今年的已盈利:已收入-支出 ,目前已支出只统计闭环的计划
|
|
- //获取一年人工支出
|
|
|
|
|
|
+ //获取今年人工支出
|
|
BigDecimal yearStaffDisburse = budgetService.getYearStaffDisburse(year);
|
|
BigDecimal yearStaffDisburse = budgetService.getYearStaffDisburse(year);
|
|
|
|
+ //获取今年维护支出
|
|
BigDecimal cost = budgetService.getAllMaintainCost(LocalDate.now().getYear());
|
|
BigDecimal cost = budgetService.getAllMaintainCost(LocalDate.now().getYear());
|
|
- vo3.setYearProfit(yearReturned.subtract(yearStaffDisburse).subtract(cost));
|
|
|
|
|
|
+ //获取今年报销支出
|
|
|
|
+ BigDecimal decimal = projectInfoService.getThisYearReimburse(LocalDate.now().getYear());
|
|
|
|
+ vo3.setYearProfit(yearReturned.subtract(yearStaffDisburse).subtract(cost).subtract(decimal));
|
|
|
|
|
|
//获取今年的年度预算
|
|
//获取今年的年度预算
|
|
AnnualBudget annualBudget = baseMapper.getThisYearBudget(year);
|
|
AnnualBudget annualBudget = baseMapper.getThisYearBudget(year);
|
|
@@ -408,7 +411,9 @@ public class AnnualBudgetServiceImpl extends BaseServiceImpl<AnnualBudgetMapper,
|
|
}else {
|
|
}else {
|
|
cost = budgetService.getAllMaintainCost(y);
|
|
cost = budgetService.getAllMaintainCost(y);
|
|
}
|
|
}
|
|
- map.put("yearStaffDisburse",yearStaffDisburse.add(cost));
|
|
|
|
|
|
+ //报销支出
|
|
|
|
+ BigDecimal yearReimburse = projectInfoService.getThisYearReimburse(y);
|
|
|
|
+ map.put("yearStaffDisburse",yearStaffDisburse.add(cost).add(yearReimburse));
|
|
//总计划支出:年度预算总计划支出
|
|
//总计划支出:年度预算总计划支出
|
|
if (y == 0){
|
|
if (y == 0){
|
|
List<AnnualBudget> list = baseMapper.getAllYearBudget(y);
|
|
List<AnnualBudget> list = baseMapper.getAllYearBudget(y);
|
|
@@ -467,9 +472,15 @@ public class AnnualBudgetServiceImpl extends BaseServiceImpl<AnnualBudgetMapper,
|
|
//维护支出
|
|
//维护支出
|
|
Map<Long, List<BigDecimal>> listMap = budgetService.getAllMaintainCost3(y);
|
|
Map<Long, List<BigDecimal>> listMap = budgetService.getAllMaintainCost3(y);
|
|
Boolean isMaintain = true;
|
|
Boolean isMaintain = true;
|
|
- if (listMap == null && listMap.size() <= 0){
|
|
|
|
|
|
+ if (listMap == null || listMap.size() <= 0){
|
|
isMaintain = false;
|
|
isMaintain = false;
|
|
}
|
|
}
|
|
|
|
+ //报销支出
|
|
|
|
+ Map<Long, List<BigDecimal>> reimburseMap = projectInfoService.getYearReimburseByMonth(y);
|
|
|
|
+ Boolean isReimburse = true;
|
|
|
|
+ if (reimburseMap == null || reimburseMap.size() <= 0){
|
|
|
|
+ isReimburse = false;
|
|
|
|
+ }
|
|
for (ControlProjectInfo project : list) {
|
|
for (ControlProjectInfo project : list) {
|
|
AnnualProjectCostVO vo = new AnnualProjectCostVO();
|
|
AnnualProjectCostVO vo = new AnnualProjectCostVO();
|
|
List<Integer> integerList = new ArrayList<>();
|
|
List<Integer> integerList = new ArrayList<>();
|
|
@@ -490,6 +501,14 @@ public class AnnualBudgetServiceImpl extends BaseServiceImpl<AnnualBudgetMapper,
|
|
big = big.add(decimals.get(i -1));
|
|
big = big.add(decimals.get(i -1));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ //计算报销
|
|
|
|
+ if (isReimburse){
|
|
|
|
+ List<BigDecimal> decimals = reimburseMap.get(project.getId());
|
|
|
|
+ if (decimals != null && decimals.size() > 0){
|
|
|
|
+ big = big.add(decimals.get(i -1));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
integerList.add(big.intValue());
|
|
integerList.add(big.intValue());
|
|
}
|
|
}
|
|
vo.setName(project.getName());
|
|
vo.setName(project.getName());
|
|
@@ -645,6 +664,12 @@ public class AnnualBudgetServiceImpl extends BaseServiceImpl<AnnualBudgetMapper,
|
|
if (listMap == null || listMap.size() <= 0){
|
|
if (listMap == null || listMap.size() <= 0){
|
|
isMaintain = false;
|
|
isMaintain = false;
|
|
}
|
|
}
|
|
|
|
+ //报销支出
|
|
|
|
+ Map<Long, BigDecimal> reimburseMap = projectInfoService.getYearReimburseByYear(Integer.parseInt(date.substring(0,4)));
|
|
|
|
+ Boolean isReimburse = true;
|
|
|
|
+ if (reimburseMap == null || reimburseMap.size() <= 0){
|
|
|
|
+ isReimburse = false;
|
|
|
|
+ }
|
|
List<ProjectIncomeCostRatioVO> vos = new ArrayList<>();
|
|
List<ProjectIncomeCostRatioVO> vos = new ArrayList<>();
|
|
//按年获取闭环任务,根据项目分组
|
|
//按年获取闭环任务,根据项目分组
|
|
List<ProjectCostBudget> costByMonth = budgetService.getPlanPracticalCostByMonth(date.substring(0,4));
|
|
List<ProjectCostBudget> costByMonth = budgetService.getPlanPracticalCostByMonth(date.substring(0,4));
|
|
@@ -666,17 +691,31 @@ public class AnnualBudgetServiceImpl extends BaseServiceImpl<AnnualBudgetMapper,
|
|
}
|
|
}
|
|
Map<Long, List<ProjectCostBudget>> map = costByMonth.parallelStream()
|
|
Map<Long, List<ProjectCostBudget>> map = costByMonth.parallelStream()
|
|
.collect(Collectors.groupingBy(ProjectCostBudget::getProjectId));
|
|
.collect(Collectors.groupingBy(ProjectCostBudget::getProjectId));
|
|
- //为每个合同设置支出
|
|
|
|
|
|
+ //为每个项目设置支出
|
|
for (ControlProjectInfo info : list) {
|
|
for (ControlProjectInfo info : list) {
|
|
ProjectIncomeCostRatioVO vo = new ProjectIncomeCostRatioVO();
|
|
ProjectIncomeCostRatioVO vo = new ProjectIncomeCostRatioVO();
|
|
vo.setProjectName(info.getName());
|
|
vo.setProjectName(info.getName());
|
|
BigDecimal big = new BigDecimal(0);
|
|
BigDecimal big = new BigDecimal(0);
|
|
|
|
+ //获取人工支出
|
|
List<ProjectCostBudget> budgets = map.get(info.getId());
|
|
List<ProjectCostBudget> budgets = map.get(info.getId());
|
|
if (budgets != null && budgets.size() > 0){
|
|
if (budgets != null && budgets.size() > 0){
|
|
for (ProjectCostBudget budget : budgets) {
|
|
for (ProjectCostBudget budget : budgets) {
|
|
big = big.add(budget.getActualTotalMoney());
|
|
big = big.add(budget.getActualTotalMoney());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ //维护支出
|
|
|
|
+ if (isMaintain){
|
|
|
|
+ if (listMap.get(info.getId()) != null){
|
|
|
|
+ big = big.add(listMap.get(info.getId()));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //计算报销
|
|
|
|
+ if (isReimburse){
|
|
|
|
+ BigDecimal decimals = reimburseMap.get(info.getId());
|
|
|
|
+ if (decimals != null){
|
|
|
|
+ big = big.add(decimals);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
vo.setProjectCost(big.intValue());
|
|
vo.setProjectCost(big.intValue());
|
|
vos.add(vo);
|
|
vos.add(vo);
|
|
}
|
|
}
|
|
@@ -746,12 +785,18 @@ public class AnnualBudgetServiceImpl extends BaseServiceImpl<AnnualBudgetMapper,
|
|
//获取项目所有已经闭环的计划
|
|
//获取项目所有已经闭环的计划
|
|
List<ProjectCostBudget> finishedTask = budgetService.getProjectAllFinishedTask(projectId, null);
|
|
List<ProjectCostBudget> finishedTask = budgetService.getProjectAllFinishedTask(projectId, null);
|
|
Map<Long, List<ProjectCostBudget>> collect = new HashMap<>();
|
|
Map<Long, List<ProjectCostBudget>> collect = new HashMap<>();
|
|
- boolean isPlan = false ;
|
|
|
|
|
|
+ boolean isPlan = true ;
|
|
if (finishedTask != null && finishedTask.size() > 0){
|
|
if (finishedTask != null && finishedTask.size() > 0){
|
|
collect = finishedTask.parallelStream()
|
|
collect = finishedTask.parallelStream()
|
|
.collect(Collectors.groupingBy(ProjectCostBudget::getProjectProcess));
|
|
.collect(Collectors.groupingBy(ProjectCostBudget::getProjectProcess));
|
|
}else {
|
|
}else {
|
|
- isPlan = true;
|
|
|
|
|
|
+ isPlan = false;
|
|
|
|
+ }
|
|
|
|
+ //项目每个进程的报销支出
|
|
|
|
+ Map<Long, BigDecimal> reimburseMap = projectInfoService.getProjectReimburseByProcess(projectId);
|
|
|
|
+ Boolean isReimburse = true;
|
|
|
|
+ if (reimburseMap == null || reimburseMap.size() <= 0){
|
|
|
|
+ isReimburse = false;
|
|
}
|
|
}
|
|
//把计划根据进程分组
|
|
//把计划根据进程分组
|
|
//为每个进程设置值
|
|
//为每个进程设置值
|
|
@@ -793,8 +838,14 @@ public class AnnualBudgetServiceImpl extends BaseServiceImpl<AnnualBudgetMapper,
|
|
vo.setProcessProgressBar(0);
|
|
vo.setProcessProgressBar(0);
|
|
}
|
|
}
|
|
//设置进程支出金额,目前只统计人工支出
|
|
//设置进程支出金额,目前只统计人工支出
|
|
- if (isPlan){
|
|
|
|
- vo.setProcessCostCount(new BigDecimal(0));
|
|
|
|
|
|
+ if (!isPlan){
|
|
|
|
+ if (isReimburse){
|
|
|
|
+ if (reimburseMap.get(process.getId()) != null){
|
|
|
|
+ vo.setProcessCostCount(reimburseMap.get(process.getId()));
|
|
|
|
+ }
|
|
|
|
+ }else {
|
|
|
|
+ vo.setProcessCostCount(new BigDecimal(0));
|
|
|
|
+ }
|
|
}else {
|
|
}else {
|
|
List<ProjectCostBudget> budgets = collect.get(process.getId());
|
|
List<ProjectCostBudget> budgets = collect.get(process.getId());
|
|
if (budgets != null && budgets.size() > 0){
|
|
if (budgets != null && budgets.size() > 0){
|
|
@@ -803,9 +854,20 @@ public class AnnualBudgetServiceImpl extends BaseServiceImpl<AnnualBudgetMapper,
|
|
for (ProjectCostBudget budget : budgets) {
|
|
for (ProjectCostBudget budget : budgets) {
|
|
big = big.add(budget.getActualTotalMoney());
|
|
big = big.add(budget.getActualTotalMoney());
|
|
}
|
|
}
|
|
|
|
+ if (isReimburse){
|
|
|
|
+ if (reimburseMap.get(process.getId()) != null){
|
|
|
|
+ big = big.add(reimburseMap.get(process.getId()));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
vo.setProcessCostCount(big);
|
|
vo.setProcessCostCount(big);
|
|
}else {
|
|
}else {
|
|
- vo.setProcessCostCount(new BigDecimal(0));
|
|
|
|
|
|
+ if (isReimburse){
|
|
|
|
+ if (reimburseMap.get(process.getId()) != null){
|
|
|
|
+ vo.setProcessCostCount(reimburseMap.get(process.getId()));
|
|
|
|
+ }
|
|
|
|
+ }else {
|
|
|
|
+ vo.setProcessCostCount(new BigDecimal(0));
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//设置进程支出金额百分比,统计实际支出和预算的百分比
|
|
//设置进程支出金额百分比,统计实际支出和预算的百分比
|
|
@@ -813,17 +875,23 @@ public class AnnualBudgetServiceImpl extends BaseServiceImpl<AnnualBudgetMapper,
|
|
List<ProjectCostBudget> budgets = collect2.get(process.getId());
|
|
List<ProjectCostBudget> budgets = collect2.get(process.getId());
|
|
if (budgets != null && budgets.size() > 0) {
|
|
if (budgets != null && budgets.size() > 0) {
|
|
BigDecimal allMoney = new BigDecimal(0);
|
|
BigDecimal allMoney = new BigDecimal(0);
|
|
- BigDecimal costMoney = new BigDecimal(0);
|
|
|
|
|
|
+// BigDecimal costMoney = new BigDecimal(0);
|
|
for (ProjectCostBudget budget : budgets) {
|
|
for (ProjectCostBudget budget : budgets) {
|
|
if (budget.getBudgetCountMoney() == null){
|
|
if (budget.getBudgetCountMoney() == null){
|
|
budget.setBudgetCountMoney(new BigDecimal(0));
|
|
budget.setBudgetCountMoney(new BigDecimal(0));
|
|
}
|
|
}
|
|
allMoney = allMoney.add(budget.getBudgetCountMoney());
|
|
allMoney = allMoney.add(budget.getBudgetCountMoney());
|
|
- if (budget.getTaskApprove() == 1) {
|
|
|
|
- costMoney = costMoney.add(budget.getActualTotalMoney());
|
|
|
|
- }
|
|
|
|
|
|
+// //统计人工支出
|
|
|
|
+// if (budget.getTaskApprove() == 1) {
|
|
|
|
+// costMoney = costMoney.add(budget.getActualTotalMoney());
|
|
|
|
+// }
|
|
|
|
+ }
|
|
|
|
+ //统计报销支出
|
|
|
|
+ if (vo.getProcessCostCount() != null && allMoney.intValue() != 0){
|
|
|
|
+ vo.setProcessCostProgressBar(vo.getProcessCostCount().divide(allMoney, 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).intValue());
|
|
|
|
+ }else {
|
|
|
|
+ vo.setProcessProgressBar(0);
|
|
}
|
|
}
|
|
- vo.setProcessCostProgressBar(costMoney.divide(allMoney, 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).intValue());
|
|
|
|
} else {
|
|
} else {
|
|
vo.setProcessCostProgressBar(0);
|
|
vo.setProcessCostProgressBar(0);
|
|
}
|
|
}
|