fourcal/src/main/java/cn/palmte/work/service/ProjectBudgetService.java

579 lines
28 KiB
Java
Raw Normal View History

2021-11-02 07:51:52 +00:00
package cn.palmte.work.service;
import cn.palmte.work.bean.BudgetBean;
2021-11-06 13:41:54 +00:00
import cn.palmte.work.bean.CashFlowBean;
import cn.palmte.work.bean.ProjectConfigBean;
import cn.palmte.work.bean.ProjectUnderwrittenPlanStatisticBean;
2021-11-02 07:51:52 +00:00
import cn.palmte.work.model.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
2021-11-02 07:51:52 +00:00
import org.springframework.stereotype.Service;
2021-11-04 10:45:11 +00:00
import org.springframework.transaction.annotation.Transactional;
2021-11-02 07:51:52 +00:00
import top.jfunc.common.utils.CollectionUtil;
import java.math.BigDecimal;
import java.util.ArrayList;
2021-11-02 07:51:52 +00:00
import java.util.List;
import java.util.stream.Collectors;
/**
* service
* @author xiongshiyan at 2021/10/29 , contact me with email yanshixiong@126.com or phone 15208384257
*/
@Service
public class ProjectBudgetService {
@Autowired
private ProjectBudgetIncomeRepository projectBudgetIncomeRepository;
@Autowired
private ProjectBudgetCostRepository projectBudgetCostRepository;
@Autowired
private ProjectBudgetCostManageRepository projectBudgetCostManageRepository;
2021-11-02 09:33:34 +00:00
@Autowired
private ProjectBudgetIncomeDetailRepository projectBudgetIncomeDetailRepository;
@Autowired
private ProjectBudgetCostDetailRepository projectBudgetCostDetailRepository;
@Autowired
private ProjectBudgetCostProjectManageDetailRepository projectBudgetCostProjectManageDetailRepository;
2021-11-04 05:17:03 +00:00
@Autowired
private ProjectBudgetPlanDetailRepository projectBudgetPlanDetailRepository;
@Autowired
private SysConfigService sysConfigService;
2021-11-02 07:51:52 +00:00
@Value("#{'${fourcal.fixedprojectmanagedetails}'.split('\\|')}")
private String[] fixedProjectManageDetails;
2021-11-02 07:51:52 +00:00
public void clearBudget(Project project){
List<ProjectBudgetIncome> incomes = projectBudgetIncomeRepository.findAllByProjectIdEquals(project.getId());
if(CollectionUtil.isNotEmpty(incomes)){
projectBudgetIncomeRepository.deleteInBatch(incomes);
}
List<ProjectBudgetCost> costs = projectBudgetCostRepository.findAllByProjectIdEquals(project.getId());
if(CollectionUtil.isNotEmpty(costs)){
projectBudgetCostRepository.deleteInBatch(costs);
}
List<ProjectBudgetCostManage> costManages = projectBudgetCostManageRepository.findAllByProjectIdEquals(project.getId());
if(CollectionUtil.isNotEmpty(costManages)){
projectBudgetCostManageRepository.deleteInBatch(costManages);
}
}
2021-11-06 08:35:13 +00:00
/**
*
*
*/
2021-11-02 07:51:52 +00:00
public void saveBudget(Project project, BudgetBean budgetBean){
//收入记录
income(project, budgetBean);
//成本记录
cost(project, budgetBean);
//管理记录
costManage(project, budgetBean);
}
private void cost(Project project, BudgetBean budgetBean) {
ProjectBudgetCost projectBudgetCostDevice = new ProjectBudgetCost();
projectBudgetCostDevice.setProjectId(project.getId());
projectBudgetCostDevice.setFee(ProjectBudgetCost.FEE_PURCHASE);
projectBudgetCostDevice.setType(ProjectBudgetCost.TYPE_DEVICE);
projectBudgetCostDevice.setCostTaxInclude(budgetBean.getCostPurchaseDeviceTaxInclude());
projectBudgetCostDevice.setCostTaxExclude(budgetBean.getCostPurchaseDeviceTaxExclude());
projectBudgetCostRepository.saveAndFlush(projectBudgetCostDevice);
ProjectBudgetCost projectBudgetCostBuild = new ProjectBudgetCost();
projectBudgetCostBuild.setProjectId(project.getId());
projectBudgetCostBuild.setFee(ProjectBudgetCost.FEE_PURCHASE);
projectBudgetCostBuild.setType(ProjectBudgetCost.TYPE_BUILDING);
projectBudgetCostBuild.setCostTaxInclude(budgetBean.getCostPurchaseBuildTaxInclude());
projectBudgetCostBuild.setCostTaxExclude(budgetBean.getCostPurchaseBuildTaxExclude());
projectBudgetCostRepository.saveAndFlush(projectBudgetCostBuild);
ProjectBudgetCost projectBudgetCostService = new ProjectBudgetCost();
projectBudgetCostService.setProjectId(project.getId());
projectBudgetCostService.setFee(ProjectBudgetCost.FEE_PURCHASE);
projectBudgetCostService.setType(ProjectBudgetCost.TYPE_SERVICE);
projectBudgetCostService.setCostTaxInclude(budgetBean.getCostPurchaseServiceTaxInclude());
projectBudgetCostService.setCostTaxExclude(budgetBean.getCostPurchaseServiceTaxExclude());
projectBudgetCostRepository.saveAndFlush(projectBudgetCostService);
ProjectBudgetCost projectBudgetCostOther = new ProjectBudgetCost();
projectBudgetCostOther.setProjectId(project.getId());
projectBudgetCostOther.setFee(ProjectBudgetCost.FEE_PURCHASE);
projectBudgetCostOther.setType(ProjectBudgetCost.TYPE_OTHER);
projectBudgetCostOther.setCostTaxInclude(budgetBean.getCostPurchaseOtherTaxInclude());
projectBudgetCostOther.setCostTaxExclude(budgetBean.getCostPurchaseOtherTaxExclude());
projectBudgetCostRepository.saveAndFlush(projectBudgetCostOther);
ProjectBudgetCost projectBudgetCostProject = new ProjectBudgetCost();
projectBudgetCostProject.setProjectId(project.getId());
projectBudgetCostProject.setFee(ProjectBudgetCost.FEE_PROJECT_MANAGE);
projectBudgetCostProject.setType(ProjectBudgetCost.TYPE_PROJECT_MANAGE);
/*projectBudgetCostProject.setCostTaxInclude(budgetBean.getCostProjectManageTaxInclude());*/
2021-11-02 07:51:52 +00:00
projectBudgetCostProject.setCostTaxExclude(budgetBean.getCostProjectManageTaxExclude());
projectBudgetCostRepository.saveAndFlush(projectBudgetCostProject);
ProjectBudgetCost projectBudgetCostOtherOther = new ProjectBudgetCost();
projectBudgetCostOtherOther.setProjectId(project.getId());
projectBudgetCostOtherOther.setFee(ProjectBudgetCost.FEE_OTHER);
projectBudgetCostOtherOther.setType(ProjectBudgetCost.TYPE_OTHER_OTHER);
projectBudgetCostOtherOther.setCostTaxInclude(budgetBean.getCostOtherOtherTaxInclude());
projectBudgetCostOtherOther.setCostTaxExclude(budgetBean.getCostOtherOtherTaxExclude());
projectBudgetCostRepository.saveAndFlush(projectBudgetCostOtherOther);
}
private void costManage(Project project, BudgetBean budgetBean) {
ProjectBudgetCostManage projectBudgetCostZijin = new ProjectBudgetCostManage();
projectBudgetCostZijin.setProjectId(project.getId());
projectBudgetCostZijin.setType(ProjectBudgetCostManage.TYPE_EXPROPRIATION);
projectBudgetCostZijin.setCostTaxExclude(budgetBean.getCostExpropriationTaxExclude());
projectBudgetCostManageRepository.saveAndFlush(projectBudgetCostZijin);
ProjectBudgetCostManage projectBudgetCostManage = new ProjectBudgetCostManage();
projectBudgetCostManage.setProjectId(project.getId());
projectBudgetCostManage.setType(ProjectBudgetCostManage.TYPE_COMPANY_MANAGE);
projectBudgetCostManage.setCostTaxExclude(budgetBean.getCostCompanyManageTaxExclude());
projectBudgetCostManageRepository.saveAndFlush(projectBudgetCostManage);
}
private void income(Project project, BudgetBean budgetBean) {
ProjectBudgetIncome projectBudgetIncomeDevice = new ProjectBudgetIncome();
projectBudgetIncomeDevice.setProjectId(project.getId());
projectBudgetIncomeDevice.setType(ProjectBudgetIncome.TYPE_DEVICE);
projectBudgetIncomeDevice.setIncomeTaxInclude(budgetBean.getIncomeDeviceTaxInclude());
projectBudgetIncomeDevice.setIncomeTaxExclude(budgetBean.getIncomeDeviceTaxExclude());
projectBudgetIncomeRepository.saveAndFlush(projectBudgetIncomeDevice);
ProjectBudgetIncome projectBudgetIncomeEngineer = new ProjectBudgetIncome();
projectBudgetIncomeEngineer.setProjectId(project.getId());
projectBudgetIncomeEngineer.setType(ProjectBudgetIncome.TYPE_ENGINEER);
projectBudgetIncomeEngineer.setIncomeTaxInclude(budgetBean.getIncomeEngineerTaxInclude());
projectBudgetIncomeEngineer.setIncomeTaxExclude(budgetBean.getIncomeEngineerTaxExclude());
projectBudgetIncomeRepository.saveAndFlush(projectBudgetIncomeEngineer);
ProjectBudgetIncome projectBudgetIncomeService = new ProjectBudgetIncome();
projectBudgetIncomeService.setProjectId(project.getId());
projectBudgetIncomeService.setType(ProjectBudgetIncome.TYPE_SERVICE);
projectBudgetIncomeService.setIncomeTaxInclude(budgetBean.getIncomeServiceTaxInclude());
projectBudgetIncomeService.setIncomeTaxExclude(budgetBean.getIncomeServiceTaxExclude());
projectBudgetIncomeRepository.saveAndFlush(projectBudgetIncomeService);
}
2021-11-03 11:06:31 +00:00
/**
*
*/
2021-11-02 07:51:52 +00:00
public BudgetBean getBudget(Project project) {
BudgetBean budgetBean = new BudgetBean();
List<ProjectBudgetIncomeDetail> incomeDetails = projectBudgetIncomeDetailRepository.findAllByProjectIdEquals(project.getId());
if(CollectionUtil.isNotEmpty(incomeDetails)){
//设备类收入,含税和不含税
List<ProjectBudgetIncomeDetail> collectDevice = incomeDetails.stream().filter(d -> d.getType() == ProjectBudgetIncomeDetail.TYPE_DEVICE).collect(Collectors.toList());
budgetBean.setIncomeDeviceTaxInclude(getIncomeTotalTaxInclude(collectDevice));
budgetBean.setIncomeDeviceTaxExclude(getIncomeTotalTaxExclude(collectDevice));
//工程类收入,含税和不含税
List<ProjectBudgetIncomeDetail> collectEngineer = incomeDetails.stream().filter(d -> d.getType() == ProjectBudgetIncomeDetail.TYPE_ENGINEER).collect(Collectors.toList());
budgetBean.setIncomeEngineerTaxInclude(getIncomeTotalTaxInclude(collectEngineer));
budgetBean.setIncomeEngineerTaxExclude(getIncomeTotalTaxExclude(collectEngineer));
//服务类收入,含税和不含税
List<ProjectBudgetIncomeDetail> collectService = incomeDetails.stream().filter(d -> d.getType() == ProjectBudgetIncomeDetail.TYPE_SERVICE).collect(Collectors.toList());
budgetBean.setIncomeServiceTaxInclude(getIncomeTotalTaxInclude(collectService));
budgetBean.setIncomeServiceTaxExclude(getIncomeTotalTaxExclude(collectService));
2021-11-02 07:51:52 +00:00
}
List<ProjectBudgetCostDetail> projectBudgetCostDetails = projectBudgetCostDetailRepository.findAllByProjectIdEquals(project.getId());
if(CollectionUtil.isNotEmpty(projectBudgetCostDetails)){
//采购成本-设备,含税和不含税
List<ProjectBudgetCostDetail> collectDevice = projectBudgetCostDetails.stream().filter(d -> d.getType() == ProjectBudgetCostDetail.TYPE_DEVICE).collect(Collectors.toList());
budgetBean.setCostPurchaseDeviceTaxInclude(getCostTotalTaxInclude(collectDevice));
budgetBean.setCostPurchaseDeviceTaxExclude(getCostTotalTaxExclude(collectDevice));
//采购成本-施工,含税和不含税
List<ProjectBudgetCostDetail> collectBuild = projectBudgetCostDetails.stream().filter(d -> d.getType() == ProjectBudgetCostDetail.TYPE_BUILD).collect(Collectors.toList());
budgetBean.setCostPurchaseBuildTaxInclude(getCostTotalTaxInclude(collectBuild));
budgetBean.setCostPurchaseBuildTaxExclude(getCostTotalTaxExclude(collectBuild));
//采购成本-服务,含税和不含税
List<ProjectBudgetCostDetail> collectService = projectBudgetCostDetails.stream().filter(d -> d.getType() == ProjectBudgetCostDetail.TYPE_SERVICE).collect(Collectors.toList());
budgetBean.setCostPurchaseServiceTaxInclude(getCostTotalTaxInclude(collectService));
budgetBean.setCostPurchaseServiceTaxExclude(getCostTotalTaxExclude(collectService));
//采购成本-其他,含税和不含税
List<ProjectBudgetCostDetail> collectOther = projectBudgetCostDetails.stream().filter(d -> d.getType() == ProjectBudgetCostDetail.TYPE_OHTER).collect(Collectors.toList());
budgetBean.setCostPurchaseOtherTaxInclude(getCostTotalTaxInclude(collectOther));
budgetBean.setCostPurchaseOtherTaxExclude(getCostTotalTaxExclude(collectOther));
}
2021-11-02 07:51:52 +00:00
//项目管理成本
List<ProjectBudgetCostProjectManageDetail> projectManageDetails = projectBudgetCostProjectManageDetailRepository.findAllByProjectIdEquals(project.getId());
if(CollectionUtil.isNotEmpty(projectManageDetails)){
budgetBean.setCostProjectManageTaxExclude(getCostProjectManageTotalTaxExclude(projectManageDetails));
}
2021-11-02 07:51:52 +00:00
//其他其他成本
2021-11-02 07:51:52 +00:00
List<ProjectBudgetCost> costs = projectBudgetCostRepository.findAllByProjectIdEquals(project.getId());
if(CollectionUtil.isNotEmpty(costs)){
ProjectBudgetCost projectBudgetCostOtherOther = costs.stream().filter(d -> d.getType() == ProjectBudgetCost.TYPE_OTHER_OTHER).collect(Collectors.toList()).get(0);
budgetBean.setCostOtherOtherTaxInclude(projectBudgetCostOtherOther.getCostTaxInclude());
budgetBean.setCostOtherOtherTaxExclude(projectBudgetCostOtherOther.getCostTaxExclude());
}
2021-11-02 07:51:52 +00:00
//资金占用成本
List<ProjectBudgetPlanDetail> budgetPlanDetails = projectBudgetPlanDetailRepository.findAllByProjectIdEquals(project.getId());
if(CollectionUtil.isNotEmpty(budgetPlanDetails)){
budgetBean.setCostExpropriationTaxExclude(getTotalCapitalInterest(budgetPlanDetails));
}
2021-11-02 07:51:52 +00:00
//公司管理成本
List<ProjectBudgetCostManage> manages = projectBudgetCostManageRepository.findAllByProjectIdEquals(project.getId());
if(CollectionUtil.isNotEmpty(manages)){
ProjectBudgetCostManage costManageCompany = manages.stream().filter(d -> d.getType() == ProjectBudgetCostManage.TYPE_COMPANY_MANAGE).collect(Collectors.toList()).get(0);
budgetBean.setCostCompanyManageTaxExclude(costManageCompany.getCostTaxExclude());
}
2021-11-02 07:51:52 +00:00
return budgetBean;
}
2021-11-02 07:51:52 +00:00
private BigDecimal getIncomeTotalTaxInclude(List<ProjectBudgetIncomeDetail> list){
BigDecimal total = new BigDecimal(0);
if(CollectionUtil.isEmpty(list)){
return total;
}
2021-11-02 07:51:52 +00:00
for (ProjectBudgetIncomeDetail detail : list) {
total = total.add(detail.getTotalTaxInclude());
}
2021-11-02 07:51:52 +00:00
return total;
}
private BigDecimal getIncomeTotalTaxExclude(List<ProjectBudgetIncomeDetail> list){
BigDecimal total = new BigDecimal(0);
if(CollectionUtil.isEmpty(list)){
return total;
}
2021-11-02 07:51:52 +00:00
for (ProjectBudgetIncomeDetail detail : list) {
total = total.add(detail.getTotalTaxExclude());
}
return total;
}
private BigDecimal getCostTotalTaxInclude(List<ProjectBudgetCostDetail> list){
BigDecimal total = new BigDecimal(0);
if(CollectionUtil.isEmpty(list)){
return total;
}
for (ProjectBudgetCostDetail detail : list) {
total = total.add(detail.getTotalTaxInclude());
}
return total;
}
private BigDecimal getCostTotalTaxExclude(List<ProjectBudgetCostDetail> list){
BigDecimal total = new BigDecimal(0);
if(CollectionUtil.isEmpty(list)){
return total;
}
for (ProjectBudgetCostDetail detail : list) {
total = total.add(detail.getTotalTaxExclude());
}
return total;
}
private BigDecimal getCostProjectManageTotalTaxExclude(List<ProjectBudgetCostProjectManageDetail> list){
BigDecimal total = new BigDecimal(0);
if(CollectionUtil.isEmpty(list)){
return total;
}
for (ProjectBudgetCostProjectManageDetail detail : list) {
total = total.add(detail.getTotal());
}
return total;
2021-11-02 07:51:52 +00:00
}
private BigDecimal getTotalCapitalInterest(List<ProjectBudgetPlanDetail> list){
BigDecimal total = new BigDecimal(0);
if(CollectionUtil.isEmpty(list)){
return total;
}
2021-11-02 09:33:34 +00:00
for (ProjectBudgetPlanDetail detail : list) {
total = total.add(detail.getCapitalInterest());
}
return total;
}
2021-11-02 09:33:34 +00:00
/**
*
*/
public void clearBudgetIncomeDetail(Project project){
List<ProjectBudgetIncomeDetail> incomeDetails = projectBudgetIncomeDetailRepository.findAllByProjectIdEquals(project.getId());
if(CollectionUtil.isNotEmpty(incomeDetails)){
projectBudgetIncomeDetailRepository.deleteInBatch(incomeDetails);
}
}
/**
*
*/
2021-11-04 10:45:11 +00:00
@Transactional(rollbackFor = RuntimeException.class)
2021-11-02 09:33:34 +00:00
public void saveBudgetIncomeDetail(Project project, List<ProjectBudgetIncomeDetail> detailList){
2021-11-04 10:45:11 +00:00
clearBudgetIncomeDetail(project);
2021-11-02 09:33:34 +00:00
if(CollectionUtil.isNotEmpty(detailList)){
for (ProjectBudgetIncomeDetail projectBudgetIncomeDetail : detailList) {
projectBudgetIncomeDetail.setProjectId(project.getId());
}
projectBudgetIncomeDetailRepository.save(detailList);
}
}
/**
*
*/
public List<ProjectBudgetIncomeDetail> getBudgetIncomeDetail(Project project){
return projectBudgetIncomeDetailRepository.findAllByProjectIdEquals(project.getId());
}
2021-11-02 09:33:34 +00:00
/**
*
*/
public void clearBudgetCostDetail(Project project){
List<ProjectBudgetCostDetail> costDetails = projectBudgetCostDetailRepository.findAllByProjectIdEquals(project.getId());
if(CollectionUtil.isNotEmpty(costDetails)){
projectBudgetCostDetailRepository.deleteInBatch(costDetails);
}
}
/**
*
*/
2021-11-04 10:45:11 +00:00
@Transactional(rollbackFor = RuntimeException.class)
2021-11-02 09:33:34 +00:00
public void saveBudgetCostDetail(Project project, List<ProjectBudgetCostDetail> detailList){
2021-11-04 10:45:11 +00:00
clearBudgetCostDetail(project);
2021-11-02 09:33:34 +00:00
if(CollectionUtil.isNotEmpty(detailList)){
for (ProjectBudgetCostDetail projectBudgetCostDetail : detailList) {
projectBudgetCostDetail.setProjectId(project.getId());
}
projectBudgetCostDetailRepository.save(detailList);
}
}
/**
*
*/
public List<ProjectBudgetCostDetail> getBudgetCostDetail(Project project){
return projectBudgetCostDetailRepository.findAllByProjectIdEquals(project.getId());
}
2021-11-02 09:33:34 +00:00
/**
*
*/
public void clearBudgetCostProjectManageDetail(Project project){
List<ProjectBudgetCostProjectManageDetail> costDetails = projectBudgetCostProjectManageDetailRepository.findAllByProjectIdEquals(project.getId());
if(CollectionUtil.isNotEmpty(costDetails)){
projectBudgetCostProjectManageDetailRepository.deleteInBatch(costDetails);
}
}
/**
*
*/
2021-11-04 10:45:11 +00:00
@Transactional(rollbackFor = RuntimeException.class)
2021-11-02 09:33:34 +00:00
public void saveBudgetCostProjectManageDetail(Project project, List<ProjectBudgetCostProjectManageDetail> detailList){
2021-11-04 10:45:11 +00:00
clearBudgetCostProjectManageDetail(project);
2021-11-02 09:33:34 +00:00
if(CollectionUtil.isNotEmpty(detailList)){
for (ProjectBudgetCostProjectManageDetail projectBudgetCostProjectManageDetail : detailList) {
projectBudgetCostProjectManageDetail.setProjectId(project.getId());
}
projectBudgetCostProjectManageDetailRepository.save(detailList);
}
}
2021-11-04 05:17:03 +00:00
/**
*
*/
public List<ProjectBudgetCostProjectManageDetail> getBudgetCostProjectManageDetail(Project project){
List<ProjectBudgetCostProjectManageDetail> projectManageDetails = projectBudgetCostProjectManageDetailRepository.findAllByProjectIdEquals(project.getId());
if(CollectionUtil.isNotEmpty(projectManageDetails)){
return projectManageDetails;
}else {
//默认必填的明细
return getFixedNotDeletable();
}
}
private List<ProjectBudgetCostProjectManageDetail> getFixedNotDeletable() {
List<ProjectBudgetCostProjectManageDetail> projectManageDetails = new ArrayList<>(6);
for (String fixedProjectManageDetail : fixedProjectManageDetails) {
String[] split = fixedProjectManageDetail.split(",");
ProjectBudgetCostProjectManageDetail detail = new ProjectBudgetCostProjectManageDetail();
detail.setType(Integer.parseInt(split[0]));
detail.setName(split[1]);
detail.setPrice(new BigDecimal(0));
detail.setAmount(0);
detail.setDeletable(0);
projectManageDetails.add(detail);
}
return projectManageDetails;
}
/**
*
*/
public void clearBudgetPlanDetail(Project project){
List<ProjectBudgetPlanDetail> costDetails = projectBudgetPlanDetailRepository.findAllByProjectIdEquals(project.getId());
if(CollectionUtil.isNotEmpty(costDetails)){
projectBudgetPlanDetailRepository.deleteInBatch(costDetails);
}
}
2021-11-04 05:17:03 +00:00
/**
*
*/
2021-11-04 10:45:11 +00:00
@Transactional(rollbackFor = RuntimeException.class)
public void saveBudgetPlanDetail(Project project, List<ProjectBudgetPlanDetail> detailList){
2021-11-04 10:45:11 +00:00
clearBudgetPlanDetail(project);
if(CollectionUtil.isNotEmpty(detailList)){
for (ProjectBudgetPlanDetail projectBudgetPlanDetail : detailList) {
projectBudgetPlanDetail.setProjectId(project.getId());
projectBudgetPlanDetail.setUnderwrittenTaxRate(project.getUnderwrittenTaxRate());
}
projectBudgetPlanDetailRepository.save(detailList);
}
}
2021-11-04 05:17:03 +00:00
/**
*
*/
public List<ProjectBudgetPlanDetail> getProjectBudgetPlanDetails(Project project){
return projectBudgetPlanDetailRepository.findAllByProjectIdEquals(project.getId());
2021-11-04 05:17:03 +00:00
}
/**
*
*/
public ProjectBudgetPlanDetail getProjectBudgetPlanDetailTotal(Project project, List<ProjectBudgetPlanDetail> projectBudgetPlanDetails) {
ProjectBudgetPlanDetail projectBudgetPlanDetail = new ProjectBudgetPlanDetail();
2021-11-04 05:17:03 +00:00
BigDecimal deviceCost = new BigDecimal(0);
BigDecimal engineerCost = new BigDecimal(0);
BigDecimal projectManageCost = new BigDecimal(0);
BigDecimal earnestMoneyCost = new BigDecimal(0);
BigDecimal totalCost = new BigDecimal(0);
BigDecimal saleIncome = new BigDecimal(0);
BigDecimal earnestMoneyIncome = new BigDecimal(0);
BigDecimal totalIncome = new BigDecimal(0);
BigDecimal fundBalance = new BigDecimal(0);
BigDecimal capitalInterest = new BigDecimal(0);
BigDecimal underwrittenPlan = new BigDecimal(0);
BigDecimal repaymentPlan = new BigDecimal(0);
/*BigDecimal underwrittenTaxRate = project.getUnderwrittenTaxRate();*/
2021-11-04 05:17:03 +00:00
if(CollectionUtil.isNotEmpty(projectBudgetPlanDetails)){
for (ProjectBudgetPlanDetail budgetPlan : projectBudgetPlanDetails) {
2021-11-04 05:17:03 +00:00
deviceCost = deviceCost.add(budgetPlan.getDeviceCost());
engineerCost = engineerCost.add(budgetPlan.getEngineerCost());
projectManageCost = projectManageCost.add(budgetPlan.getProjectManageCost());
earnestMoneyCost = earnestMoneyCost.add(budgetPlan.getEarnestMoneyCost());
totalCost = totalCost.add(budgetPlan.getTotalCost());
saleIncome = saleIncome.add(budgetPlan.getSaleIncome());
earnestMoneyIncome = earnestMoneyIncome.add(budgetPlan.getEarnestMoneyIncome());
totalIncome = totalIncome.add(budgetPlan.getTotalIncome());
/*fundBalance = fundBalance.add(budgetPlan.getFundBalance());*/
2021-11-04 05:17:03 +00:00
capitalInterest = capitalInterest.add(budgetPlan.getCapitalInterest());
underwrittenPlan = underwrittenPlan.add(budgetPlan.getUnderwrittenPlan());
repaymentPlan = repaymentPlan.add(budgetPlan.getRepaymentPlan());
}
}
//总余额等于总收入-总支出
2021-11-04 09:22:02 +00:00
fundBalance = totalIncome.subtract(totalCost);
2021-11-04 05:17:03 +00:00
projectBudgetPlanDetail.setMonth("合计");
projectBudgetPlanDetail.setDeviceCost(deviceCost);
projectBudgetPlanDetail.setEngineerCost(engineerCost);
projectBudgetPlanDetail.setProjectManageCost(projectManageCost);
projectBudgetPlanDetail.setEarnestMoneyCost(earnestMoneyCost);
projectBudgetPlanDetail.setTotalCost(totalCost);
projectBudgetPlanDetail.setSaleIncome(saleIncome);
projectBudgetPlanDetail.setEarnestMoneyIncome(earnestMoneyIncome);
projectBudgetPlanDetail.setTotalIncome(totalIncome);
projectBudgetPlanDetail.setFundBalance(fundBalance);
/*projectBudgetPlanDetail.setUnderwrittenTaxRate(underwrittenTaxRate);*/
projectBudgetPlanDetail.setCapitalInterest(capitalInterest);
projectBudgetPlanDetail.setUnderwrittenPlan(underwrittenPlan);
projectBudgetPlanDetail.setRepaymentPlan(repaymentPlan);
return projectBudgetPlanDetail;
2021-11-04 05:17:03 +00:00
}
public ProjectConfigBean getProjectConfigBeanConfig(){
ProjectConfigBean projectConfigBean = new ProjectConfigBean();
projectConfigBean.setUnderwrittenTaxRate(sysConfigService.getUnderwrittenTaxRate());
projectConfigBean.setProjectContributionProfitRateThreshold(sysConfigService.getProjectContributionProfitRateThreshold());
return projectConfigBean;
}
/**
* 使
*
*
*
*/
public ProjectUnderwrittenPlanStatisticBean getProjectUnderwrittenPlanStatisticBean(List<ProjectBudgetPlanDetail> projectBudgetPlanDetails){
ProjectUnderwrittenPlanStatisticBean bean = new ProjectUnderwrittenPlanStatisticBean();
if(CollectionUtil.isEmpty(projectBudgetPlanDetails)){
return bean;
}
BigDecimal amount = new BigDecimal(0);
BigDecimal capitalInterest = new BigDecimal(0);
BigDecimal max = new BigDecimal(0);
String maxMonth = "";
for (ProjectBudgetPlanDetail projectBudgetPlanDetail : projectBudgetPlanDetails) {
capitalInterest = capitalInterest.add(projectBudgetPlanDetail.getCapitalInterest());
BigDecimal underwrittenPlan = projectBudgetPlanDetail.getUnderwrittenPlan();
amount = amount.add(underwrittenPlan);
if(underwrittenPlan.compareTo(max)>0){
max = underwrittenPlan;
maxMonth = projectBudgetPlanDetail.getMonth();
}
}
bean.setMaxMonth(maxMonth);
bean.setAmount(amount);
bean.setCapitalInterest(capitalInterest);
return bean;
}
2021-11-06 13:41:54 +00:00
/**
*
*/
public CashFlowBean getCashFlowBean(Project project, List<ProjectBudgetPlanDetail> projectBudgetPlanDetails){
CashFlowBean cashFlowBean = new CashFlowBean();
//获取统计值
ProjectBudgetPlanDetail detailTotal = getProjectBudgetPlanDetailTotal(project, projectBudgetPlanDetails);
//a
cashFlowBean.setSaleIncomeCash(detailTotal.getSaleIncome());
//c
cashFlowBean.setEarnestMoneyIncome(detailTotal.getEarnestMoneyIncome());
//d
cashFlowBean.setPurchaseCost(detailTotal.getDeviceCost()
.add(detailTotal.getEngineerCost()));
//f
cashFlowBean.setEarnestMoneyCost(detailTotal.getProjectManageCost()
.add(detailTotal.getEarnestMoneyCost())
.add(detailTotal.getCapitalInterest()));
//k
cashFlowBean.setFinancingCapitalInflow(detailTotal.getUnderwrittenPlan());
//l
cashFlowBean.setFinancingCapitalOutflow(detailTotal.getRepaymentPlan());
return cashFlowBean;
}
2021-11-02 07:51:52 +00:00
}