package cn.palmte.work.service; import cn.palmte.work.bean.EstimateBean; import cn.palmte.work.model.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import top.jfunc.common.utils.CollectionUtil; 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 ProjectEstimateService { @Autowired private ProjectEstimateIncomeRepository projectEstimateIncomeRepository; @Autowired private ProjectEstimateCostRepository projectEstimateCostRepository; @Autowired private ProjectEstimateCostManageRepository projectEstimateCostManageRepository; public void clearEstimate(Project project){ List incomes = projectEstimateIncomeRepository.findAllByProjectIdEquals(project.getId()); if(CollectionUtil.isNotEmpty(incomes)){ projectEstimateIncomeRepository.deleteInBatch(incomes); } List costs = projectEstimateCostRepository.findAllByProjectIdEquals(project.getId()); if(CollectionUtil.isNotEmpty(costs)){ projectEstimateCostRepository.deleteInBatch(costs); } List costManages = projectEstimateCostManageRepository.findAllByProjectIdEquals(project.getId()); if(CollectionUtil.isNotEmpty(costManages)){ projectEstimateCostManageRepository.deleteInBatch(costManages); } } public void saveEstimate(Project project, EstimateBean estimateBean){ //收入记录 income(project, estimateBean); //成本记录 cost(project, estimateBean); //管理记录 costManage(project, estimateBean); } private void cost(Project project, EstimateBean estimateBean) { ProjectEstimateCost projectEstimateCostDevice = new ProjectEstimateCost(); projectEstimateCostDevice.setProjectId(project.getId()); projectEstimateCostDevice.setFee(ProjectEstimateCost.FEE_PURCHASE); projectEstimateCostDevice.setType(ProjectEstimateCost.TYPE_DEVICE); projectEstimateCostDevice.setCostTaxInclude(estimateBean.getCostPurchaseDeviceTaxInclude()); projectEstimateCostDevice.setCostTaxExclude(estimateBean.getCostPurchaseDeviceTaxExclude()); projectEstimateCostRepository.saveAndFlush(projectEstimateCostDevice); ProjectEstimateCost projectEstimateCostBuild = new ProjectEstimateCost(); projectEstimateCostBuild.setProjectId(project.getId()); projectEstimateCostBuild.setFee(ProjectEstimateCost.FEE_PURCHASE); projectEstimateCostBuild.setType(ProjectEstimateCost.TYPE_BUILDING); projectEstimateCostBuild.setCostTaxInclude(estimateBean.getCostPurchaseBuildTaxInclude()); projectEstimateCostBuild.setCostTaxExclude(estimateBean.getCostPurchaseBuildTaxExclude()); projectEstimateCostRepository.saveAndFlush(projectEstimateCostBuild); ProjectEstimateCost projectEstimateCostService = new ProjectEstimateCost(); projectEstimateCostService.setProjectId(project.getId()); projectEstimateCostService.setFee(ProjectEstimateCost.FEE_PURCHASE); projectEstimateCostService.setType(ProjectEstimateCost.TYPE_SERVICE); projectEstimateCostService.setCostTaxInclude(estimateBean.getCostPurchaseServiceTaxInclude()); projectEstimateCostService.setCostTaxExclude(estimateBean.getCostPurchaseServiceTaxExclude()); projectEstimateCostRepository.saveAndFlush(projectEstimateCostService); ProjectEstimateCost projectEstimateCostOther = new ProjectEstimateCost(); projectEstimateCostOther.setProjectId(project.getId()); projectEstimateCostOther.setFee(ProjectEstimateCost.FEE_PURCHASE); projectEstimateCostOther.setType(ProjectEstimateCost.TYPE_OTHER); projectEstimateCostOther.setCostTaxInclude(estimateBean.getCostPurchaseOtherTaxInclude()); projectEstimateCostOther.setCostTaxExclude(estimateBean.getCostPurchaseOtherTaxExclude()); projectEstimateCostRepository.saveAndFlush(projectEstimateCostOther); ProjectEstimateCost projectEstimateCostProject = new ProjectEstimateCost(); projectEstimateCostProject.setProjectId(project.getId()); projectEstimateCostProject.setFee(ProjectEstimateCost.FEE_PROJECT_MANAGE); projectEstimateCostProject.setType(ProjectEstimateCost.TYPE_PROJECT_MANAGE); /*projectEstimateCostProject.setCostTaxInclude(estimateBean.getCostProjectManageTaxInclude());*/ projectEstimateCostProject.setCostTaxExclude(estimateBean.getCostProjectManageTaxExclude()); projectEstimateCostRepository.saveAndFlush(projectEstimateCostProject); ProjectEstimateCost projectEstimateCostOtherOther = new ProjectEstimateCost(); projectEstimateCostOtherOther.setProjectId(project.getId()); projectEstimateCostOtherOther.setFee(ProjectEstimateCost.FEE_OTHER); projectEstimateCostOtherOther.setType(ProjectEstimateCost.TYPE_OTHER_OTHER); projectEstimateCostOtherOther.setCostTaxInclude(estimateBean.getCostOtherOtherTaxInclude()); projectEstimateCostOtherOther.setCostTaxExclude(estimateBean.getCostOtherOtherTaxExclude()); projectEstimateCostRepository.saveAndFlush(projectEstimateCostOtherOther); } private void costManage(Project project, EstimateBean estimateBean) { ProjectEstimateCostManage projectEstimateCostZijin = new ProjectEstimateCostManage(); projectEstimateCostZijin.setProjectId(project.getId()); projectEstimateCostZijin.setType(ProjectEstimateCostManage.TYPE_EXPROPRIATION); projectEstimateCostZijin.setCostTaxExclude(estimateBean.getCostExpropriationTaxExclude()); projectEstimateCostManageRepository.saveAndFlush(projectEstimateCostZijin); ProjectEstimateCostManage projectEstimateCostManage = new ProjectEstimateCostManage(); projectEstimateCostManage.setProjectId(project.getId()); projectEstimateCostManage.setType(ProjectEstimateCostManage.TYPE_COMPANY_MANAGE); projectEstimateCostManage.setCostTaxExclude(estimateBean.getCostCompanyManageTaxExclude()); projectEstimateCostManageRepository.saveAndFlush(projectEstimateCostManage); } private void income(Project project, EstimateBean estimateBean) { ProjectEstimateIncome projectEstimateIncomeDevice = new ProjectEstimateIncome(); projectEstimateIncomeDevice.setProjectId(project.getId()); projectEstimateIncomeDevice.setType(ProjectEstimateIncome.TYPE_DEVICE); projectEstimateIncomeDevice.setIncomeTaxInclude(estimateBean.getIncomeDeviceTaxInclude()); projectEstimateIncomeDevice.setIncomeTaxExclude(estimateBean.getIncomeDeviceTaxExclude()); projectEstimateIncomeRepository.saveAndFlush(projectEstimateIncomeDevice); ProjectEstimateIncome projectEstimateIncomeEngineer = new ProjectEstimateIncome(); projectEstimateIncomeEngineer.setProjectId(project.getId()); projectEstimateIncomeEngineer.setType(ProjectEstimateIncome.TYPE_ENGINEER); projectEstimateIncomeEngineer.setIncomeTaxInclude(estimateBean.getIncomeEngineerTaxInclude()); projectEstimateIncomeEngineer.setIncomeTaxExclude(estimateBean.getIncomeEngineerTaxExclude()); projectEstimateIncomeRepository.saveAndFlush(projectEstimateIncomeEngineer); ProjectEstimateIncome projectEstimateIncomeService = new ProjectEstimateIncome(); projectEstimateIncomeService.setProjectId(project.getId()); projectEstimateIncomeService.setType(ProjectEstimateIncome.TYPE_SERVICE); projectEstimateIncomeService.setIncomeTaxInclude(estimateBean.getIncomeServiceTaxInclude()); projectEstimateIncomeService.setIncomeTaxExclude(estimateBean.getIncomeServiceTaxExclude()); projectEstimateIncomeRepository.saveAndFlush(projectEstimateIncomeService); } public EstimateBean getEstimate(Project project) { EstimateBean estimateBean = new EstimateBean(); List incomes = projectEstimateIncomeRepository.findAllByProjectIdEquals(project.getId()); ProjectEstimateIncome projectEstimateIncomeDevice = incomes.stream().filter(d -> d.getType() == ProjectEstimateIncome.TYPE_DEVICE).collect(Collectors.toList()).get(0); estimateBean.setIncomeDeviceTaxInclude(projectEstimateIncomeDevice.getIncomeTaxInclude()); estimateBean.setIncomeDeviceTaxExclude(projectEstimateIncomeDevice.getIncomeTaxExclude()); ProjectEstimateIncome projectEstimateIncomeEngineer = incomes.stream().filter(d -> d.getType() == ProjectEstimateIncome.TYPE_ENGINEER).collect(Collectors.toList()).get(0); estimateBean.setIncomeEngineerTaxInclude(projectEstimateIncomeEngineer.getIncomeTaxInclude()); estimateBean.setIncomeEngineerTaxExclude(projectEstimateIncomeEngineer.getIncomeTaxExclude()); ProjectEstimateIncome projectEstimateIncomeService = incomes.stream().filter(d -> d.getType() == ProjectEstimateIncome.TYPE_SERVICE).collect(Collectors.toList()).get(0); estimateBean.setIncomeServiceTaxInclude(projectEstimateIncomeService.getIncomeTaxInclude()); estimateBean.setIncomeServiceTaxExclude(projectEstimateIncomeService.getIncomeTaxExclude()); List costs = projectEstimateCostRepository.findAllByProjectIdEquals(project.getId()); ProjectEstimateCost projectEstimateCostDevice = costs.stream().filter(d -> d.getType() == ProjectEstimateCost.TYPE_DEVICE).collect(Collectors.toList()).get(0); estimateBean.setCostPurchaseDeviceTaxInclude(projectEstimateCostDevice.getCostTaxInclude()); estimateBean.setCostPurchaseDeviceTaxExclude(projectEstimateCostDevice.getCostTaxExclude()); ProjectEstimateCost projectEstimateCostBuild = costs.stream().filter(d -> d.getType() == ProjectEstimateCost.TYPE_BUILDING).collect(Collectors.toList()).get(0); estimateBean.setCostPurchaseBuildTaxInclude(projectEstimateCostBuild.getCostTaxInclude()); estimateBean.setCostPurchaseBuildTaxExclude(projectEstimateCostBuild.getCostTaxExclude()); ProjectEstimateCost projectEstimateCostService = costs.stream().filter(d -> d.getType() == ProjectEstimateCost.TYPE_SERVICE).collect(Collectors.toList()).get(0); estimateBean.setCostPurchaseServiceTaxInclude(projectEstimateCostService.getCostTaxInclude()); estimateBean.setCostPurchaseServiceTaxExclude(projectEstimateCostService.getCostTaxExclude()); ProjectEstimateCost projectEstimateCostOther = costs.stream().filter(d -> d.getType() == ProjectEstimateCost.TYPE_OTHER).collect(Collectors.toList()).get(0); estimateBean.setCostPurchaseOtherTaxInclude(projectEstimateCostOther.getCostTaxInclude()); estimateBean.setCostPurchaseOtherTaxExclude(projectEstimateCostOther.getCostTaxExclude()); ProjectEstimateCost projectEstimateCostProjectManage = costs.stream().filter(d -> d.getType() == ProjectEstimateCost.TYPE_PROJECT_MANAGE).collect(Collectors.toList()).get(0); /*estimateBean.setCostProjectManageTaxInclude(projectEstimateCostProjectManage.getCostTaxInclude());*/ estimateBean.setCostProjectManageTaxExclude(projectEstimateCostProjectManage.getCostTaxExclude()); ProjectEstimateCost projectEstimateCostOtherOther = costs.stream().filter(d -> d.getType() == ProjectEstimateCost.TYPE_OTHER_OTHER).collect(Collectors.toList()).get(0); estimateBean.setCostOtherOtherTaxInclude(projectEstimateCostOtherOther.getCostTaxInclude()); estimateBean.setCostOtherOtherTaxExclude(projectEstimateCostOtherOther.getCostTaxExclude()); List manages = projectEstimateCostManageRepository.findAllByProjectIdEquals(project.getId()); ProjectEstimateCostManage costManageExpropriation = manages.stream().filter(d -> d.getType() == ProjectEstimateCostManage.TYPE_EXPROPRIATION).collect(Collectors.toList()).get(0); estimateBean.setCostExpropriationTaxExclude(costManageExpropriation.getCostTaxExclude()); ProjectEstimateCostManage costManageCompany = manages.stream().filter(d -> d.getType() == ProjectEstimateCostManage.TYPE_COMPANY_MANAGE).collect(Collectors.toList()).get(0); estimateBean.setCostCompanyManageTaxExclude(costManageCompany.getCostTaxExclude()); return estimateBean; } }