|
|
@ -103,11 +103,13 @@ public class ReportService implements IReportService { |
|
|
|
CompanyDto.Project project = params.getParam(); |
|
|
|
//查询此任务的报表,有则直接返回
|
|
|
|
List<String> wpsPath; |
|
|
|
Map<String,String> paramsUrl = new HashMap<>(); |
|
|
|
paramsUrl.put(WebConstant.Wps._W_URL, PropUtil.domain + "read/cost"); |
|
|
|
WpsDto.VisitWpsUrl visitWpsUrl = new WpsDto.VisitWpsUrl(); |
|
|
|
visitWpsUrl.setBusinessId(project.getProjectId()); |
|
|
|
visitWpsUrl.setBusinessType((byte) 5); |
|
|
|
visitWpsUrl.setUserId(params.getUserId()); |
|
|
|
visitWpsUrl.setParams(null); |
|
|
|
visitWpsUrl.setParams(paramsUrl); |
|
|
|
wpsPath = tallFeignClient.queryVisitUrls(visitWpsUrl); |
|
|
|
if (CollectionUtil.isNotEmpty(wpsPath)) { |
|
|
|
return wpsPath; |
|
|
@ -132,11 +134,13 @@ public class ReportService implements IReportService { |
|
|
|
CompanyDto.Project project = params.getParam(); |
|
|
|
//查询此任务的报表,有则直接返回
|
|
|
|
List<String> wpsPath; |
|
|
|
Map<String,String> paramsUrl = new HashMap<>(); |
|
|
|
paramsUrl.put(WebConstant.Wps._W_URL, PropUtil.domain + "read/income"); |
|
|
|
WpsDto.VisitWpsUrl visitWpsUrl = new WpsDto.VisitWpsUrl(); |
|
|
|
visitWpsUrl.setBusinessId(project.getProjectId()); |
|
|
|
visitWpsUrl.setBusinessType((byte)6); |
|
|
|
visitWpsUrl.setUserId(params.getUserId()); |
|
|
|
visitWpsUrl.setParams(null); |
|
|
|
visitWpsUrl.setParams(paramsUrl); |
|
|
|
wpsPath = tallFeignClient.queryVisitUrls(visitWpsUrl); |
|
|
|
if (CollectionUtil.isNotEmpty(wpsPath)) { |
|
|
|
return wpsPath; |
|
|
@ -158,11 +162,13 @@ public class ReportService implements IReportService { |
|
|
|
CompanyDto.Project project = params.getParam(); |
|
|
|
//查询此任务的报表,有则直接返回
|
|
|
|
List<String> wpsPath; |
|
|
|
Map<String,String> paramsUrl = new HashMap<>(); |
|
|
|
paramsUrl.put(WebConstant.Wps._W_URL, PropUtil.domain + "read/money"); |
|
|
|
WpsDto.VisitWpsUrl visitWpsUrl = new WpsDto.VisitWpsUrl(); |
|
|
|
visitWpsUrl.setBusinessId(project.getProjectId()); |
|
|
|
visitWpsUrl.setBusinessType((byte) 7); |
|
|
|
visitWpsUrl.setUserId(params.getUserId()); |
|
|
|
visitWpsUrl.setParams(null); |
|
|
|
visitWpsUrl.setParams(paramsUrl); |
|
|
|
wpsPath = tallFeignClient.queryVisitUrls(visitWpsUrl); |
|
|
|
if (CollectionUtil.isNotEmpty(wpsPath)) { |
|
|
|
return wpsPath; |
|
|
@ -429,23 +435,47 @@ public class ReportService implements IReportService { |
|
|
|
//循环每月的收入
|
|
|
|
BigDecimal totalProductIncome = BigDecimal.valueOf(0); |
|
|
|
BigDecimal totalRealIncome = BigDecimal.valueOf(0); |
|
|
|
if (CollectionUtil.isNotEmpty(moneyFlowType.getMoneyFlowList())) { |
|
|
|
for (CompanyVo.MoneyFlow moneyFlow : moneyFlowType.getMoneyFlowList()) { |
|
|
|
for (int a = 0; a < 12; a++){ |
|
|
|
if (a < moneyFlowType.getMoneyFlowList().size()) { |
|
|
|
CompanyVo.MoneyFlow moneyFlow = moneyFlowType.getMoneyFlowList().get(a); |
|
|
|
income1.add(new PoiUtil.PoiUtilCell(moneyFlow.getPredictMoneyFlow().toString())); |
|
|
|
income2.add(new PoiUtil.PoiUtilCell(moneyFlow.getRealMoneyFlow().toString())); |
|
|
|
BigDecimal bias = moneyFlow.getRealMoneyFlow().subtract(moneyFlow.getPredictMoneyFlow()). |
|
|
|
divide(moneyFlow.getRealMoneyFlow(), 2, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100)); |
|
|
|
income3.add(new PoiUtil.PoiUtilCell(bias.toString() + "%")); |
|
|
|
|
|
|
|
if(moneyFlow.getPredictMoneyFlow().multiply(BigDecimal.valueOf(100)).intValue() != 0) { |
|
|
|
BigDecimal bias = moneyFlow.getRealMoneyFlow().subtract(moneyFlow.getPredictMoneyFlow()). |
|
|
|
divide(moneyFlow.getPredictMoneyFlow(), 2, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100)); |
|
|
|
income3.add(new PoiUtil.PoiUtilCell(bias.toString() + "%")); |
|
|
|
}else { |
|
|
|
income3.add(new PoiUtil.PoiUtilCell()); |
|
|
|
} |
|
|
|
totalProductIncome = totalProductIncome.add(moneyFlow.getPredictMoneyFlow()); |
|
|
|
totalRealIncome = totalRealIncome.add(moneyFlow.getRealMoneyFlow()); |
|
|
|
}else { |
|
|
|
income1.add(new PoiUtil.PoiUtilCell()); |
|
|
|
income2.add(new PoiUtil.PoiUtilCell()); |
|
|
|
income3.add(new PoiUtil.PoiUtilCell()); |
|
|
|
} |
|
|
|
} |
|
|
|
// if (CollectionUtil.isNotEmpty(moneyFlowType.getMoneyFlowList())) {
|
|
|
|
// for (CompanyVo.MoneyFlow moneyFlow : moneyFlowType.getMoneyFlowList()) {
|
|
|
|
// income1.add(new PoiUtil.PoiUtilCell(moneyFlow.getPredictMoneyFlow().toString()));
|
|
|
|
// income2.add(new PoiUtil.PoiUtilCell(moneyFlow.getRealMoneyFlow().toString()));
|
|
|
|
// BigDecimal bias = moneyFlow.getRealMoneyFlow().subtract(moneyFlow.getPredictMoneyFlow()).
|
|
|
|
// divide(moneyFlow.getRealMoneyFlow(), 2, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100));
|
|
|
|
// income3.add(new PoiUtil.PoiUtilCell(bias.toString() + "%"));
|
|
|
|
// totalProductIncome = totalProductIncome.add(moneyFlow.getPredictMoneyFlow());
|
|
|
|
// totalRealIncome = totalRealIncome.add(moneyFlow.getRealMoneyFlow());
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
income1.add(new PoiUtil.PoiUtilCell(totalProductIncome.toString())); |
|
|
|
income2.add(new PoiUtil.PoiUtilCell(totalRealIncome.toString())); |
|
|
|
BigDecimal bias = totalRealIncome.subtract(totalProductIncome). |
|
|
|
divide(totalProductIncome, 2, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100)); |
|
|
|
income3.add(new PoiUtil.PoiUtilCell(bias.toString() + "%")); |
|
|
|
|
|
|
|
if(totalProductIncome.multiply(BigDecimal.valueOf(100)).intValue() != 0) { |
|
|
|
BigDecimal bias = totalRealIncome.subtract(totalProductIncome). |
|
|
|
divide(totalProductIncome, 2, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100)); |
|
|
|
income3.add(new PoiUtil.PoiUtilCell(bias.toString() + "%")); |
|
|
|
}else { |
|
|
|
income3.add(new PoiUtil.PoiUtilCell()); |
|
|
|
} |
|
|
|
list.add(income1); |
|
|
|
list.add(income2); |
|
|
|
list.add(income3); |
|
|
@ -486,23 +516,47 @@ public class ReportService implements IReportService { |
|
|
|
//循环每月的收入
|
|
|
|
BigDecimal totalProductIncome = BigDecimal.valueOf(0); |
|
|
|
BigDecimal totalRealIncome = BigDecimal.valueOf(0); |
|
|
|
if (CollectionUtil.isNotEmpty(moneyFlowType.getMoneyFlowList())) { |
|
|
|
for (CompanyVo.MoneyFlow moneyFlow : moneyFlowType.getMoneyFlowList()) { |
|
|
|
for (int a = 0; a < 12; a++){ |
|
|
|
if (a < moneyFlowType.getMoneyFlowList().size()) { |
|
|
|
CompanyVo.MoneyFlow moneyFlow = moneyFlowType.getMoneyFlowList().get(a); |
|
|
|
income1.add(new PoiUtil.PoiUtilCell(moneyFlow.getPredictMoneyFlow().toString())); |
|
|
|
income2.add(new PoiUtil.PoiUtilCell(moneyFlow.getRealMoneyFlow().toString())); |
|
|
|
BigDecimal bias = moneyFlow.getRealMoneyFlow().subtract(moneyFlow.getPredictMoneyFlow()). |
|
|
|
divide(moneyFlow.getRealMoneyFlow(), 2, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100)); |
|
|
|
income3.add(new PoiUtil.PoiUtilCell(bias.toString() + "%")); |
|
|
|
|
|
|
|
if(moneyFlow.getPredictMoneyFlow().multiply(BigDecimal.valueOf(100)).intValue() != 0) { |
|
|
|
BigDecimal bias = moneyFlow.getRealMoneyFlow().subtract(moneyFlow.getPredictMoneyFlow()). |
|
|
|
divide(moneyFlow.getPredictMoneyFlow(), 2, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100)); |
|
|
|
income3.add(new PoiUtil.PoiUtilCell(bias.toString() + "%")); |
|
|
|
}else { |
|
|
|
income3.add(new PoiUtil.PoiUtilCell()); |
|
|
|
} |
|
|
|
totalProductIncome = totalProductIncome.add(moneyFlow.getPredictMoneyFlow()); |
|
|
|
totalRealIncome = totalRealIncome.add(moneyFlow.getRealMoneyFlow()); |
|
|
|
}else { |
|
|
|
income1.add(new PoiUtil.PoiUtilCell()); |
|
|
|
income2.add(new PoiUtil.PoiUtilCell()); |
|
|
|
income3.add(new PoiUtil.PoiUtilCell()); |
|
|
|
} |
|
|
|
} |
|
|
|
// if (CollectionUtil.isNotEmpty(moneyFlowType.getMoneyFlowList())) {
|
|
|
|
// for (CompanyVo.MoneyFlow moneyFlow : moneyFlowType.getMoneyFlowList()) {
|
|
|
|
// income1.add(new PoiUtil.PoiUtilCell(moneyFlow.getPredictMoneyFlow().toString()));
|
|
|
|
// income2.add(new PoiUtil.PoiUtilCell(moneyFlow.getRealMoneyFlow().toString()));
|
|
|
|
// BigDecimal bias = moneyFlow.getRealMoneyFlow().subtract(moneyFlow.getPredictMoneyFlow()).
|
|
|
|
// divide(moneyFlow.getRealMoneyFlow(), 2, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100));
|
|
|
|
// income3.add(new PoiUtil.PoiUtilCell(bias.toString() + "%"));
|
|
|
|
// totalProductIncome = totalProductIncome.add(moneyFlow.getPredictMoneyFlow());
|
|
|
|
// totalRealIncome = totalRealIncome.add(moneyFlow.getRealMoneyFlow());
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
income1.add(new PoiUtil.PoiUtilCell(totalProductIncome.toString())); |
|
|
|
income2.add(new PoiUtil.PoiUtilCell(totalRealIncome.toString())); |
|
|
|
BigDecimal bias = totalRealIncome.subtract(totalProductIncome). |
|
|
|
divide(totalProductIncome, 2, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100)); |
|
|
|
income3.add(new PoiUtil.PoiUtilCell(bias.toString() + "%")); |
|
|
|
|
|
|
|
if(totalProductIncome.multiply(BigDecimal.valueOf(100)).intValue() != 0) { |
|
|
|
BigDecimal bias = totalRealIncome.subtract(totalProductIncome). |
|
|
|
divide(totalProductIncome, 2, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100)); |
|
|
|
income3.add(new PoiUtil.PoiUtilCell(bias.toString() + "%")); |
|
|
|
}else { |
|
|
|
income3.add(new PoiUtil.PoiUtilCell()); |
|
|
|
} |
|
|
|
list.add(income1); |
|
|
|
list.add(income2); |
|
|
|
list.add(income3); |
|
|
@ -541,6 +595,7 @@ public class ReportService implements IReportService { |
|
|
|
//表头
|
|
|
|
List<PoiUtil.PoiUtilCell> header = new ArrayList<>(); |
|
|
|
header.add(new PoiUtil.PoiUtilCell("", 2, 1)); |
|
|
|
header.add(new PoiUtil.PoiUtilCell()); |
|
|
|
for (int i = 1; i < 13; i++) { |
|
|
|
header.add(new PoiUtil.PoiUtilCell(i + "月")); |
|
|
|
} |
|
|
@ -562,26 +617,50 @@ public class ReportService implements IReportService { |
|
|
|
income2.add(new PoiUtil.PoiUtilCell("实际收入")); |
|
|
|
income3.add(new PoiUtil.PoiUtilCell("偏差率")); |
|
|
|
|
|
|
|
//循环每月的收入
|
|
|
|
//循环每月的损益
|
|
|
|
BigDecimal totalProductIncome = BigDecimal.valueOf(0); |
|
|
|
BigDecimal totalRealIncome = BigDecimal.valueOf(0); |
|
|
|
if (CollectionUtil.isNotEmpty(incomeType.getIncomeMonthList())) { |
|
|
|
for (CompanyVo.IncomeMonth incomeMonth : incomeType.getIncomeMonthList()) { |
|
|
|
for (int a = 0; a < 12; a++){ |
|
|
|
if (a < incomeType.getIncomeMonthList().size()) { |
|
|
|
CompanyVo.IncomeMonth incomeMonth = incomeType.getIncomeMonthList().get(a); |
|
|
|
income1.add(new PoiUtil.PoiUtilCell(incomeMonth.getPredictIncome().toString())); |
|
|
|
income2.add(new PoiUtil.PoiUtilCell(incomeMonth.getRealIncome().toString())); |
|
|
|
BigDecimal bias = incomeMonth.getRealIncome().subtract(incomeMonth.getPredictIncome()). |
|
|
|
divide(incomeMonth.getRealIncome(), 2, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100)); |
|
|
|
income3.add(new PoiUtil.PoiUtilCell(bias.toString() + "%")); |
|
|
|
|
|
|
|
if(incomeMonth.getPredictIncome().multiply(BigDecimal.valueOf(100)).intValue() != 0) { |
|
|
|
BigDecimal bias = incomeMonth.getRealIncome().subtract(incomeMonth.getPredictIncome()). |
|
|
|
divide(incomeMonth.getPredictIncome(), 2, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100)); |
|
|
|
income3.add(new PoiUtil.PoiUtilCell(bias.toString() + "%")); |
|
|
|
}else { |
|
|
|
income3.add(new PoiUtil.PoiUtilCell()); |
|
|
|
} |
|
|
|
totalProductIncome = totalProductIncome.add(incomeMonth.getPredictIncome()); |
|
|
|
totalRealIncome = totalRealIncome.add(incomeMonth.getRealIncome()); |
|
|
|
}else { |
|
|
|
income1.add(new PoiUtil.PoiUtilCell()); |
|
|
|
income2.add(new PoiUtil.PoiUtilCell()); |
|
|
|
income3.add(new PoiUtil.PoiUtilCell()); |
|
|
|
} |
|
|
|
} |
|
|
|
// if (CollectionUtil.isNotEmpty(incomeType.getIncomeMonthList())) {
|
|
|
|
// for (CompanyVo.IncomeMonth incomeMonth : incomeType.getIncomeMonthList()) {
|
|
|
|
// income1.add(new PoiUtil.PoiUtilCell(incomeMonth.getPredictIncome().toString()));
|
|
|
|
// income2.add(new PoiUtil.PoiUtilCell(incomeMonth.getRealIncome().toString()));
|
|
|
|
// BigDecimal bias = incomeMonth.getRealIncome().subtract(incomeMonth.getPredictIncome()).
|
|
|
|
// divide(incomeMonth.getRealIncome(), 2, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100));
|
|
|
|
// income3.add(new PoiUtil.PoiUtilCell(bias.toString() + "%"));
|
|
|
|
// totalProductIncome = totalProductIncome.add(incomeMonth.getPredictIncome());
|
|
|
|
// totalRealIncome = totalRealIncome.add(incomeMonth.getRealIncome());
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
income1.add(new PoiUtil.PoiUtilCell(totalProductIncome.toString())); |
|
|
|
income2.add(new PoiUtil.PoiUtilCell(totalRealIncome.toString())); |
|
|
|
BigDecimal bias = totalRealIncome.subtract(totalProductIncome). |
|
|
|
divide(totalProductIncome, 2, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100)); |
|
|
|
income3.add(new PoiUtil.PoiUtilCell(bias.toString() + "%")); |
|
|
|
|
|
|
|
if(totalProductIncome.multiply(BigDecimal.valueOf(100)).intValue() != 0){ |
|
|
|
BigDecimal bias = totalRealIncome.subtract(totalProductIncome). |
|
|
|
divide(totalProductIncome, 2, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100)); |
|
|
|
income3.add(new PoiUtil.PoiUtilCell(bias.toString() + "%")); |
|
|
|
}else { |
|
|
|
income3.add(new PoiUtil.PoiUtilCell()); |
|
|
|
} |
|
|
|
list.add(income1); |
|
|
|
list.add(income2); |
|
|
|
list.add(income3); |
|
|
@ -614,9 +693,18 @@ public class ReportService implements IReportService { |
|
|
|
header.add(new PoiUtil.PoiUtilCell("合计")); |
|
|
|
list.add(header); |
|
|
|
//TODO 产品成本
|
|
|
|
List<PoiUtil.PoiUtilCell> productTotalCost = new ArrayList<>(); |
|
|
|
productTotalCost.add(new PoiUtil.PoiUtilCell("产品成本")); |
|
|
|
list.add(productTotalCost); |
|
|
|
List<PoiUtil.PoiUtilCell> productTotalCost1 = new ArrayList<>(); |
|
|
|
List<PoiUtil.PoiUtilCell> productTotalCost2 = new ArrayList<>(); |
|
|
|
List<PoiUtil.PoiUtilCell> productTotalCost3 = new ArrayList<>(); |
|
|
|
productTotalCost1.add(new PoiUtil.PoiUtilCell("产品成本",1,3)); |
|
|
|
productTotalCost2.add(new PoiUtil.PoiUtilCell()); |
|
|
|
productTotalCost3.add(new PoiUtil.PoiUtilCell()); |
|
|
|
productTotalCost1.add(new PoiUtil.PoiUtilCell("预计成本")); |
|
|
|
productTotalCost2.add(new PoiUtil.PoiUtilCell("实际成本")); |
|
|
|
productTotalCost3.add(new PoiUtil.PoiUtilCell("偏差率")); |
|
|
|
list.add(productTotalCost1); |
|
|
|
list.add(productTotalCost2); |
|
|
|
list.add(productTotalCost3); |
|
|
|
|
|
|
|
if(CollectionUtil.isNotEmpty(costProductTypeList)){ |
|
|
|
for(CompanyVo.FirstCostType firstCostType : costProductTypeList) { |
|
|
@ -630,36 +718,68 @@ public class ReportService implements IReportService { |
|
|
|
cost2.add(new PoiUtil.PoiUtilCell()); |
|
|
|
cost3.add(new PoiUtil.PoiUtilCell()); |
|
|
|
|
|
|
|
cost1.add(new PoiUtil.PoiUtilCell("预计收入")); |
|
|
|
cost2.add(new PoiUtil.PoiUtilCell("实际收入")); |
|
|
|
cost1.add(new PoiUtil.PoiUtilCell("预计成本")); |
|
|
|
cost2.add(new PoiUtil.PoiUtilCell("实际成本")); |
|
|
|
cost3.add(new PoiUtil.PoiUtilCell("偏差率")); |
|
|
|
BigDecimal totalProductIncome = BigDecimal.valueOf(0); |
|
|
|
BigDecimal totalRealIncome = BigDecimal.valueOf(0); |
|
|
|
if (CollectionUtil.isNotEmpty(costType.getCostMonthList())) { |
|
|
|
for (CompanyVo.CostMonth costMonth : costType.getCostMonthList()) { |
|
|
|
for (int a = 0; a < 12; a++){ |
|
|
|
if (a < costType.getCostMonthList().size()) { |
|
|
|
CompanyVo.CostMonth costMonth = costType.getCostMonthList().get(a); |
|
|
|
cost1.add(new PoiUtil.PoiUtilCell(costMonth.getPredictCost().toString())); |
|
|
|
cost2.add(new PoiUtil.PoiUtilCell(costMonth.getRealCost().toString())); |
|
|
|
BigDecimal bias = costMonth.getRealCost().subtract(costMonth.getPredictCost()). |
|
|
|
divide(costMonth.getRealCost(), 2, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100)); |
|
|
|
cost3.add(new PoiUtil.PoiUtilCell(bias.toString() + "%")); |
|
|
|
if(costMonth.getPredictCost().multiply(BigDecimal.valueOf(100)).intValue() != 0) { |
|
|
|
BigDecimal bias = costMonth.getRealCost().subtract(costMonth.getPredictCost()). |
|
|
|
divide(costMonth.getPredictCost(), 2, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100)); |
|
|
|
cost3.add(new PoiUtil.PoiUtilCell(bias.toString() + "%")); |
|
|
|
}else { |
|
|
|
cost3.add(new PoiUtil.PoiUtilCell()); |
|
|
|
} |
|
|
|
totalProductIncome = totalProductIncome.add(costMonth.getPredictCost()); |
|
|
|
totalRealIncome = totalRealIncome.add(costMonth.getRealCost()); |
|
|
|
}else { |
|
|
|
cost1.add(new PoiUtil.PoiUtilCell()); |
|
|
|
cost2.add(new PoiUtil.PoiUtilCell()); |
|
|
|
cost3.add(new PoiUtil.PoiUtilCell()); |
|
|
|
} |
|
|
|
} |
|
|
|
// if (CollectionUtil.isNotEmpty(costType.getCostMonthList())) {
|
|
|
|
// for (CompanyVo.CostMonth costMonth : costType.getCostMonthList()) {
|
|
|
|
// cost1.add(new PoiUtil.PoiUtilCell(costMonth.getPredictCost().toString()));
|
|
|
|
// cost2.add(new PoiUtil.PoiUtilCell(costMonth.getRealCost().toString()));
|
|
|
|
// BigDecimal bias = costMonth.getRealCost().subtract(costMonth.getPredictCost()).
|
|
|
|
// divide(costMonth.getRealCost(), 2, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100));
|
|
|
|
// cost3.add(new PoiUtil.PoiUtilCell(bias.toString() + "%"));
|
|
|
|
// totalProductIncome = totalProductIncome.add(costMonth.getPredictCost());
|
|
|
|
// totalRealIncome = totalRealIncome.add(costMonth.getRealCost());
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
cost1.add(new PoiUtil.PoiUtilCell(totalProductIncome.toString())); |
|
|
|
cost2.add(new PoiUtil.PoiUtilCell(totalRealIncome.toString())); |
|
|
|
BigDecimal bias = totalRealIncome.subtract(totalProductIncome). |
|
|
|
divide(totalProductIncome, 2, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100)); |
|
|
|
cost3.add(new PoiUtil.PoiUtilCell(bias.toString() + "%")); |
|
|
|
|
|
|
|
if(totalProductIncome.multiply(BigDecimal.valueOf(100)).intValue() != 0) { |
|
|
|
BigDecimal bias = totalRealIncome.subtract(totalProductIncome). |
|
|
|
divide(totalProductIncome, 2, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100)); |
|
|
|
cost3.add(new PoiUtil.PoiUtilCell(bias.toString() + "%")); |
|
|
|
}else { |
|
|
|
cost3.add(new PoiUtil.PoiUtilCell()); |
|
|
|
} |
|
|
|
list.add(cost1); |
|
|
|
list.add(cost2); |
|
|
|
list.add(cost3); |
|
|
|
} |
|
|
|
} |
|
|
|
List<PoiUtil.PoiUtilCell> productCostType = new ArrayList<>(); |
|
|
|
productCostType.add(new PoiUtil.PoiUtilCell(firstCostType.getFCostName())); |
|
|
|
list.add(productCostType); |
|
|
|
List<PoiUtil.PoiUtilCell> productCostType1 = new ArrayList<>(); |
|
|
|
List<PoiUtil.PoiUtilCell> productCostType2 = new ArrayList<>(); |
|
|
|
List<PoiUtil.PoiUtilCell> productCostType3 = new ArrayList<>(); |
|
|
|
productCostType1.add(new PoiUtil.PoiUtilCell(firstCostType.getFCostName(),1,3)); |
|
|
|
productCostType2.add(new PoiUtil.PoiUtilCell()); |
|
|
|
productCostType3.add(new PoiUtil.PoiUtilCell()); |
|
|
|
productCostType1.add(new PoiUtil.PoiUtilCell("预计成本")); |
|
|
|
productCostType2.add(new PoiUtil.PoiUtilCell("实际成本")); |
|
|
|
productCostType3.add(new PoiUtil.PoiUtilCell("偏差率")); |
|
|
|
list.add(productCostType1); |
|
|
|
list.add(productCostType2); |
|
|
|
list.add(productCostType3); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@ -675,36 +795,68 @@ public class ReportService implements IReportService { |
|
|
|
cost2.add(new PoiUtil.PoiUtilCell()); |
|
|
|
cost3.add(new PoiUtil.PoiUtilCell()); |
|
|
|
|
|
|
|
cost1.add(new PoiUtil.PoiUtilCell("预计收入")); |
|
|
|
cost2.add(new PoiUtil.PoiUtilCell("实际收入")); |
|
|
|
cost1.add(new PoiUtil.PoiUtilCell("预计成本")); |
|
|
|
cost2.add(new PoiUtil.PoiUtilCell("实际成本")); |
|
|
|
cost3.add(new PoiUtil.PoiUtilCell("偏差率")); |
|
|
|
BigDecimal totalProductIncome = BigDecimal.valueOf(0); |
|
|
|
BigDecimal totalRealIncome = BigDecimal.valueOf(0); |
|
|
|
if (CollectionUtil.isNotEmpty(costType.getCostMonthList())) { |
|
|
|
for (CompanyVo.CostMonth costMonth : costType.getCostMonthList()) { |
|
|
|
for (int a = 0; a < 12; a++){ |
|
|
|
if (a < costType.getCostMonthList().size()) { |
|
|
|
CompanyVo.CostMonth costMonth = costType.getCostMonthList().get(a); |
|
|
|
cost1.add(new PoiUtil.PoiUtilCell(costMonth.getPredictCost().toString())); |
|
|
|
cost2.add(new PoiUtil.PoiUtilCell(costMonth.getRealCost().toString())); |
|
|
|
BigDecimal bias = costMonth.getRealCost().subtract(costMonth.getPredictCost()). |
|
|
|
divide(costMonth.getRealCost(), 2, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100)); |
|
|
|
cost3.add(new PoiUtil.PoiUtilCell(bias.toString() + "%")); |
|
|
|
if(costMonth.getPredictCost().multiply(BigDecimal.valueOf(100)).intValue() != 0) { |
|
|
|
BigDecimal bias = costMonth.getRealCost().subtract(costMonth.getPredictCost()). |
|
|
|
divide(costMonth.getPredictCost(), 2, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100)); |
|
|
|
cost3.add(new PoiUtil.PoiUtilCell(bias.toString() + "%")); |
|
|
|
}else { |
|
|
|
cost3.add(new PoiUtil.PoiUtilCell()); |
|
|
|
} |
|
|
|
totalProductIncome = totalProductIncome.add(costMonth.getPredictCost()); |
|
|
|
totalRealIncome = totalRealIncome.add(costMonth.getRealCost()); |
|
|
|
}else { |
|
|
|
cost1.add(new PoiUtil.PoiUtilCell()); |
|
|
|
cost2.add(new PoiUtil.PoiUtilCell()); |
|
|
|
cost3.add(new PoiUtil.PoiUtilCell()); |
|
|
|
} |
|
|
|
} |
|
|
|
// if (CollectionUtil.isNotEmpty(costType.getCostMonthList())) {
|
|
|
|
// for (CompanyVo.CostMonth costMonth : costType.getCostMonthList()) {
|
|
|
|
// cost1.add(new PoiUtil.PoiUtilCell(costMonth.getPredictCost().toString()));
|
|
|
|
// cost2.add(new PoiUtil.PoiUtilCell(costMonth.getRealCost().toString()));
|
|
|
|
// BigDecimal bias = costMonth.getRealCost().subtract(costMonth.getPredictCost()).
|
|
|
|
// divide(costMonth.getRealCost(), 2, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100));
|
|
|
|
// cost3.add(new PoiUtil.PoiUtilCell(bias.toString() + "%"));
|
|
|
|
// totalProductIncome = totalProductIncome.add(costMonth.getPredictCost());
|
|
|
|
// totalRealIncome = totalRealIncome.add(costMonth.getRealCost());
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
cost1.add(new PoiUtil.PoiUtilCell(totalProductIncome.toString())); |
|
|
|
cost2.add(new PoiUtil.PoiUtilCell(totalRealIncome.toString())); |
|
|
|
BigDecimal bias = totalRealIncome.subtract(totalProductIncome). |
|
|
|
divide(totalProductIncome, 2, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100)); |
|
|
|
cost3.add(new PoiUtil.PoiUtilCell(bias.toString() + "%")); |
|
|
|
|
|
|
|
if(totalProductIncome.multiply(BigDecimal.valueOf(100)).intValue() != 0) { |
|
|
|
BigDecimal bias = totalRealIncome.subtract(totalProductIncome). |
|
|
|
divide(totalProductIncome, 2, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100)); |
|
|
|
cost3.add(new PoiUtil.PoiUtilCell(bias.toString() + "%")); |
|
|
|
}else { |
|
|
|
cost3.add(new PoiUtil.PoiUtilCell()); |
|
|
|
} |
|
|
|
list.add(cost1); |
|
|
|
list.add(cost2); |
|
|
|
list.add(cost3); |
|
|
|
} |
|
|
|
} |
|
|
|
List<PoiUtil.PoiUtilCell> costType = new ArrayList<>(); |
|
|
|
costType.add(new PoiUtil.PoiUtilCell(firstCostType.getFCostName())); |
|
|
|
list.add(costType); |
|
|
|
List<PoiUtil.PoiUtilCell> costType1 = new ArrayList<>(); |
|
|
|
List<PoiUtil.PoiUtilCell> costType2 = new ArrayList<>(); |
|
|
|
List<PoiUtil.PoiUtilCell> costType3 = new ArrayList<>(); |
|
|
|
costType1.add(new PoiUtil.PoiUtilCell(firstCostType.getFCostName(),1,3)); |
|
|
|
costType2.add(new PoiUtil.PoiUtilCell()); |
|
|
|
costType3.add(new PoiUtil.PoiUtilCell()); |
|
|
|
costType1.add(new PoiUtil.PoiUtilCell("预计成本")); |
|
|
|
costType2.add(new PoiUtil.PoiUtilCell("实际成本")); |
|
|
|
costType3.add(new PoiUtil.PoiUtilCell("偏差率")); |
|
|
|
list.add(costType1); |
|
|
|
list.add(costType2); |
|
|
|
list.add(costType3); |
|
|
|
} |
|
|
|
} |
|
|
|
return list; |
|
|
|