diff --git a/src/main/java/cn/palmte/work/bean/BudgetBean.java b/src/main/java/cn/palmte/work/bean/BudgetBean.java new file mode 100644 index 0000000..5b6de08 --- /dev/null +++ b/src/main/java/cn/palmte/work/bean/BudgetBean.java @@ -0,0 +1,8 @@ +package cn.palmte.work.bean; + +/** + * @see EstimateBean 貌似完全一样 + * @author xiongshiyan at 2021/11/1 , contact me with email yanshixiong@126.com or phone 15208384257 + */ +public class BudgetBean extends EstimateBean{ +} diff --git a/src/main/java/cn/palmte/work/controller/backend/ProjectController.java b/src/main/java/cn/palmte/work/controller/backend/ProjectController.java index 8a94a80..907d85d 100644 --- a/src/main/java/cn/palmte/work/controller/backend/ProjectController.java +++ b/src/main/java/cn/palmte/work/controller/backend/ProjectController.java @@ -5,6 +5,7 @@ import cn.palmte.work.bean.EstimateBean; import cn.palmte.work.model.Dept; import cn.palmte.work.model.DeptRepository; import cn.palmte.work.model.Project; +import cn.palmte.work.service.ProjectEstimateService; import cn.palmte.work.service.ProjectService; import cn.palmte.work.utils.InterfaceUtil; import cn.palmte.work.utils.Utils; @@ -33,10 +34,12 @@ import java.util.concurrent.ConcurrentHashMap; public class ProjectController extends BaseController{ private static final Logger logger = LoggerFactory.getLogger(ProjectController.class); + @Autowired + private DeptRepository deptRepository; @Autowired private ProjectService projectService; @Autowired - private DeptRepository deptRepository; + private ProjectEstimateService projectEstimateService; /** * 项目列表 @@ -98,30 +101,45 @@ public class ProjectController extends BaseController{ public String estimateAddSaveAndApprove(Project project, EstimateBean estimateBean, Map model) { projectService.estimateAddSave(project, estimateBean, InterfaceUtil.getAdmin(), ApproveStatusEnum.APPROVAL_PENDING); + //TODO 发起审核 return "redirect:/project/list"; } + + @RequestMapping("/edit") public String edit(@RequestParam("id") int id,Map model) { Project project = projectService.getProject(id); model.put("project", project); - EstimateBean estimateBean = projectService.estimate(project); + EstimateBean estimateBean = projectEstimateService.getEstimate(project); model.put("estimateBean", estimateBean); return "admin/project_estimate_edit"; } - @RequestMapping("/estimateEditSave") public String estimateEditSave(Project project, EstimateBean estimateBean, Map model) { projectService.estimateEditSave(project, estimateBean, InterfaceUtil.getAdmin(), ApproveStatusEnum.APPROVAL_UNCOMMIT); return "redirect:/project/list"; } + @RequestMapping("/estimateEditSaveAndApprove") public String estimateEditSaveAndApprove(Project project, EstimateBean estimateBean, Map model) { projectService.estimateEditSave(project, estimateBean, InterfaceUtil.getAdmin(), ApproveStatusEnum.APPROVAL_PENDING); + //TODO 发起审核 return "redirect:/project/list"; } + /** + * 进项目预算页面 + */ + @RequestMapping("/budgetEdit") + public String budget(@RequestParam("id") int id,Map model) { + Project project = projectService.getProject(id); + model.put("project", project); + EstimateBean estimateBean = projectEstimateService.getEstimate(project); + model.put("budgetBean", estimateBean); + return "admin/project_budget_edit"; + } @InitBinder public void initBinder(WebDataBinder webDataBinder){ diff --git a/src/main/java/cn/palmte/work/model/ProjectEstimateCost.java b/src/main/java/cn/palmte/work/model/ProjectEstimateCost.java index faa4e82..90c2ae8 100644 --- a/src/main/java/cn/palmte/work/model/ProjectEstimateCost.java +++ b/src/main/java/cn/palmte/work/model/ProjectEstimateCost.java @@ -11,6 +11,16 @@ import java.math.BigDecimal; @Entity @Table(name = "project_estimate_cost") public class ProjectEstimateCost { + public static final int FEE_PURCHASE = 1; + public static final int FEE_PROJECT_MANAGE = 2; + public static final int FEE_OTHER = 3; + + public static final int TYPE_DEVICE = 1; + public static final int TYPE_BUILDING = 2; + public static final int TYPE_SERVICE = 3; + public static final int TYPE_OTHER = 4; + public static final int TYPE_PROJECT_MANAGE = 5; + public static final int TYPE_OTHER_OTHER = 6; /** * id */ diff --git a/src/main/java/cn/palmte/work/model/ProjectEstimateCostManage.java b/src/main/java/cn/palmte/work/model/ProjectEstimateCostManage.java index ce4ca02..5f296bf 100644 --- a/src/main/java/cn/palmte/work/model/ProjectEstimateCostManage.java +++ b/src/main/java/cn/palmte/work/model/ProjectEstimateCostManage.java @@ -11,6 +11,8 @@ import java.math.BigDecimal; @Entity @Table(name = "project_estimate_cost_manage") public class ProjectEstimateCostManage { + public static final int TYPE_EXPROPRIATION = 1; + public static final int TYPE_COMPANY_MANAGE = 2; /** * id */ diff --git a/src/main/java/cn/palmte/work/model/ProjectEstimateIncome.java b/src/main/java/cn/palmte/work/model/ProjectEstimateIncome.java index 80e35ca..0bb7173 100644 --- a/src/main/java/cn/palmte/work/model/ProjectEstimateIncome.java +++ b/src/main/java/cn/palmte/work/model/ProjectEstimateIncome.java @@ -11,6 +11,10 @@ import java.math.BigDecimal; @Entity @Table(name = "project_estimate_income") public class ProjectEstimateIncome { + public static final int TYPE_DEVICE = 1; + public static final int TYPE_ENGINEER = 2; + public static final int TYPE_SERVICE = 3; + /** * id */ diff --git a/src/main/java/cn/palmte/work/service/ProjectEstimateService.java b/src/main/java/cn/palmte/work/service/ProjectEstimateService.java new file mode 100644 index 0000000..8cb9054 --- /dev/null +++ b/src/main/java/cn/palmte/work/service/ProjectEstimateService.java @@ -0,0 +1,191 @@ +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; + } +} diff --git a/src/main/java/cn/palmte/work/service/ProjectService.java b/src/main/java/cn/palmte/work/service/ProjectService.java index 05fdc54..69ab322 100644 --- a/src/main/java/cn/palmte/work/service/ProjectService.java +++ b/src/main/java/cn/palmte/work/service/ProjectService.java @@ -4,20 +4,19 @@ import cn.palmte.work.bean.ApproveStatusEnum; import cn.palmte.work.bean.EstimateBean; import cn.palmte.work.bean.StatusEnum; import cn.palmte.work.bean.TypeEnum; -import cn.palmte.work.model.*; +import cn.palmte.work.model.Admin; +import cn.palmte.work.model.Project; +import cn.palmte.work.model.ProjectRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import top.jfunc.common.db.QueryHelper; import top.jfunc.common.db.bean.Page; import top.jfunc.common.db.utils.Pagination; -import top.jfunc.common.utils.CollectionUtil; import top.jfunc.common.utils.StrUtil; import java.util.Date; -import java.util.List; import java.util.Map; -import java.util.stream.Collectors; /** * @author xiongshiyan at 2021/10/29 , contact me with email yanshixiong@126.com or phone 15208384257 @@ -29,11 +28,7 @@ public class ProjectService { @Autowired private ProjectRepository projectRepository; @Autowired - private ProjectEstimateIncomeRepository projectEstimateIncomeRepository; - @Autowired - private ProjectEstimateCostRepository projectEstimateCostRepository; - @Autowired - private ProjectEstimateCostManageRepository projectEstimateCostManageRepository; + private ProjectEstimateService projectEstimateService; private QueryHelper getQueryHelper(Map searchInfo, int pageNumber, int pageSize) { @@ -86,12 +81,34 @@ public class ProjectService { QueryHelper queryHelper = getQueryHelper(searchInfo, pageNumber, pageSize); return pagination.paginate(queryHelper.getSql(), Project.class,pageNumber,pageSize); } + public Project getProject(int id){ + return projectRepository.findOne(id); + } /** * 新增概算保存项目 */ @Transactional(rollbackFor = RuntimeException.class) public Project estimateAddSave(Project project, EstimateBean estimateBean, Admin admin, ApproveStatusEnum approveStatusEnum) { + Project p = addProject(project, admin, approveStatusEnum); + projectEstimateService.saveEstimate(p, estimateBean); + + return project; + } + + /** + * 编辑概算保存项目 + */ + @Transactional(rollbackFor = RuntimeException.class) + public Project estimateEditSave(Project project, EstimateBean estimateBean, Admin admin, ApproveStatusEnum approveStatusEnum) { + Project p = editProject(project, admin, approveStatusEnum); + //清空重新保存概算信息 + projectEstimateService.clearEstimate(project); + projectEstimateService.saveEstimate(p, estimateBean); + return p; + } + + private Project addProject(Project project, Admin admin, ApproveStatusEnum approveStatusEnum) { project.setTypeDesc(TypeEnum.parseType(project.getType()).getTypeDesc()); project.setStatus(StatusEnum.CREATED.getStatus()); project.setStatusDesc(StatusEnum.CREATED.getStatusDesc()); @@ -109,187 +126,24 @@ public class ProjectService { project.setCreateTime(new Date()); project = projectRepository.saveAndFlush(project); - - - //收入记录 - income(project, estimateBean); - //成本记录 - cost(project, estimateBean); - //管理记录 - costManage(project, estimateBean); - return project; } - private void clearEstimate(Project project){ - List incomes = projectEstimateIncomeRepository.findAllByProjectIdEquals(project.getId()); - if(CollectionUtil.isNotEmpty(incomes)){ - projectEstimateIncomeRepository.deleteInBatch(incomes); - } + private Project editProject(Project project, Admin admin, ApproveStatusEnum approveStatusEnum) { + Project p = getProject(project.getId()); - List costs = projectEstimateCostRepository.findAllByProjectIdEquals(project.getId()); - if(CollectionUtil.isNotEmpty(costs)){ - projectEstimateCostRepository.deleteInBatch(costs); - } + //只有如下可以修改 + p.setStartDate(project.getStartDate()); + p.setEndDate(project.getEndDate()); + p.setAdvanceInterestAmount(project.getAdvanceInterestAmount()); + p.setAdvancePeakAmount(project.getAdvancePeakAmount()); + p.setContractAmount(project.getContractAmount()); + p.setHuazhiProductAmount(project.getHuazhiProductAmount()); + p.setZiguangOtherAmount(project.getZiguangOtherAmount()); + p.setMainContractCollectionTerms(project.getMainContractCollectionTerms()); - List costManages = projectEstimateCostManageRepository.findAllByProjectIdEquals(project.getId()); - if(CollectionUtil.isNotEmpty(costManages)){ - projectEstimateCostManageRepository.deleteInBatch(costManages); - } + p.setApproveStatusEstimate(approveStatusEnum.getApproveStatus()); - } - /** - * 编辑概算保存项目 - */ - @Transactional(rollbackFor = RuntimeException.class) - public Project estimateEditSave(Project project, EstimateBean estimateBean, Admin admin, ApproveStatusEnum approveStatusEnum) { - //删除原来的 - projectRepository.delete(project.getId()); - //清空概算信息 - clearEstimate(project); - - return estimateAddSave(project, estimateBean, admin, approveStatusEnum); - } - - private void cost(Project project, EstimateBean estimateBean) { - ProjectEstimateCost projectEstimateCostDevice = new ProjectEstimateCost(); - projectEstimateCostDevice.setProjectId(project.getId()); - projectEstimateCostDevice.setFee(1); - projectEstimateCostDevice.setType(1); - projectEstimateCostDevice.setCostTaxInclude(estimateBean.getCostPurchaseDeviceTaxInclude()); - projectEstimateCostDevice.setCostTaxExclude(estimateBean.getCostPurchaseDeviceTaxExclude()); - projectEstimateCostRepository.saveAndFlush(projectEstimateCostDevice); - - - ProjectEstimateCost projectEstimateCostBuild = new ProjectEstimateCost(); - projectEstimateCostBuild.setProjectId(project.getId()); - projectEstimateCostBuild.setFee(1); - projectEstimateCostBuild.setType(2); - projectEstimateCostBuild.setCostTaxInclude(estimateBean.getCostPurchaseBuildTaxInclude()); - projectEstimateCostBuild.setCostTaxExclude(estimateBean.getCostPurchaseBuildTaxExclude()); - projectEstimateCostRepository.saveAndFlush(projectEstimateCostBuild); - - ProjectEstimateCost projectEstimateCostService = new ProjectEstimateCost(); - projectEstimateCostService.setProjectId(project.getId()); - projectEstimateCostService.setFee(1); - projectEstimateCostService.setType(3); - projectEstimateCostService.setCostTaxInclude(estimateBean.getCostPurchaseServiceTaxInclude()); - projectEstimateCostService.setCostTaxExclude(estimateBean.getCostPurchaseServiceTaxExclude()); - projectEstimateCostRepository.saveAndFlush(projectEstimateCostService); - - ProjectEstimateCost projectEstimateCostOther = new ProjectEstimateCost(); - projectEstimateCostOther.setProjectId(project.getId()); - projectEstimateCostOther.setFee(1); - projectEstimateCostOther.setType(4); - projectEstimateCostOther.setCostTaxInclude(estimateBean.getCostPurchaseOtherTaxInclude()); - projectEstimateCostOther.setCostTaxExclude(estimateBean.getCostPurchaseOtherTaxExclude()); - projectEstimateCostRepository.saveAndFlush(projectEstimateCostOther); - - ProjectEstimateCost projectEstimateCostProject = new ProjectEstimateCost(); - projectEstimateCostProject.setProjectId(project.getId()); - projectEstimateCostProject.setFee(2); - projectEstimateCostProject.setType(5); - projectEstimateCostProject.setCostTaxInclude(estimateBean.getCostProjectManageTaxInclude()); - projectEstimateCostProject.setCostTaxExclude(estimateBean.getCostProjectManageTaxExclude()); - projectEstimateCostRepository.saveAndFlush(projectEstimateCostProject); - - ProjectEstimateCost projectEstimateCostOtherOther = new ProjectEstimateCost(); - projectEstimateCostOtherOther.setProjectId(project.getId()); - projectEstimateCostOtherOther.setFee(3); - projectEstimateCostOtherOther.setType(6); - 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(1); - projectEstimateCostZijin.setCostTaxExclude(estimateBean.getCostExpropriationTaxExclude()); - projectEstimateCostManageRepository.saveAndFlush(projectEstimateCostZijin); - - ProjectEstimateCostManage projectEstimateCostManage = new ProjectEstimateCostManage(); - projectEstimateCostManage.setProjectId(project.getId()); - projectEstimateCostManage.setType(2); - projectEstimateCostManage.setCostTaxExclude(estimateBean.getCostCompanyManageTaxExclude()); - projectEstimateCostManageRepository.saveAndFlush(projectEstimateCostManage); - } - private void income(Project project, EstimateBean estimateBean) { - ProjectEstimateIncome projectEstimateIncomeDevice = new ProjectEstimateIncome(); - projectEstimateIncomeDevice.setProjectId(project.getId()); - projectEstimateIncomeDevice.setType(1); - projectEstimateIncomeDevice.setIncomeTaxInclude(estimateBean.getIncomeDeviceTaxInclude()); - projectEstimateIncomeDevice.setIncomeTaxExclude(estimateBean.getIncomeDeviceTaxExclude()); - projectEstimateIncomeRepository.saveAndFlush(projectEstimateIncomeDevice); - - ProjectEstimateIncome projectEstimateIncomeEngineer = new ProjectEstimateIncome(); - projectEstimateIncomeEngineer.setProjectId(project.getId()); - projectEstimateIncomeEngineer.setType(2); - projectEstimateIncomeEngineer.setIncomeTaxInclude(estimateBean.getIncomeEngineerTaxInclude()); - projectEstimateIncomeEngineer.setIncomeTaxExclude(estimateBean.getIncomeEngineerTaxExclude()); - projectEstimateIncomeRepository.saveAndFlush(projectEstimateIncomeEngineer); - - ProjectEstimateIncome projectEstimateIncomeService = new ProjectEstimateIncome(); - projectEstimateIncomeService.setProjectId(project.getId()); - projectEstimateIncomeService.setType(3); - projectEstimateIncomeService.setIncomeTaxInclude(estimateBean.getIncomeServiceTaxInclude()); - projectEstimateIncomeService.setIncomeTaxExclude(estimateBean.getIncomeServiceTaxExclude()); - projectEstimateIncomeRepository.saveAndFlush(projectEstimateIncomeService); - } - - public Project getProject(int id) { - return projectRepository.findOne(id); - } - - public EstimateBean estimate(Project project) { - EstimateBean estimateBean = new EstimateBean(); - List incomes = projectEstimateIncomeRepository.findAllByProjectIdEquals(project.getId()); - - ProjectEstimateIncome projectEstimateIncomeDevice = incomes.stream().filter(d -> d.getType() == 1).collect(Collectors.toList()).get(0); - estimateBean.setIncomeDeviceTaxInclude(projectEstimateIncomeDevice.getIncomeTaxInclude()); - estimateBean.setIncomeDeviceTaxExclude(projectEstimateIncomeDevice.getIncomeTaxExclude()); - - ProjectEstimateIncome projectEstimateIncomeEngineer = incomes.stream().filter(d -> d.getType() == 2).collect(Collectors.toList()).get(0); - estimateBean.setIncomeEngineerTaxInclude(projectEstimateIncomeEngineer.getIncomeTaxInclude()); - estimateBean.setIncomeEngineerTaxExclude(projectEstimateIncomeEngineer.getIncomeTaxExclude()); - - ProjectEstimateIncome projectEstimateIncomeService = incomes.stream().filter(d -> d.getType() == 3).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() == 1).collect(Collectors.toList()).get(0); - estimateBean.setCostPurchaseDeviceTaxInclude(projectEstimateCostDevice.getCostTaxInclude()); - estimateBean.setCostPurchaseDeviceTaxExclude(projectEstimateCostDevice.getCostTaxExclude()); - - ProjectEstimateCost projectEstimateCostBuild = costs.stream().filter(d -> d.getType() == 2).collect(Collectors.toList()).get(0); - estimateBean.setCostPurchaseBuildTaxInclude(projectEstimateCostBuild.getCostTaxInclude()); - estimateBean.setCostPurchaseBuildTaxExclude(projectEstimateCostBuild.getCostTaxExclude()); - - ProjectEstimateCost projectEstimateCostService = costs.stream().filter(d -> d.getType() == 3).collect(Collectors.toList()).get(0); - estimateBean.setCostPurchaseServiceTaxInclude(projectEstimateCostService.getCostTaxInclude()); - estimateBean.setCostPurchaseServiceTaxExclude(projectEstimateCostService.getCostTaxExclude()); - - ProjectEstimateCost projectEstimateCostOther = costs.stream().filter(d -> d.getType() == 4).collect(Collectors.toList()).get(0); - estimateBean.setCostPurchaseOtherTaxInclude(projectEstimateCostOther.getCostTaxInclude()); - estimateBean.setCostPurchaseOtherTaxExclude(projectEstimateCostOther.getCostTaxExclude()); - - ProjectEstimateCost projectEstimateCostProjectManage = costs.stream().filter(d -> d.getType() == 5).collect(Collectors.toList()).get(0); - estimateBean.setCostProjectManageTaxInclude(projectEstimateCostProjectManage.getCostTaxInclude()); - estimateBean.setCostProjectManageTaxExclude(projectEstimateCostProjectManage.getCostTaxExclude()); - - ProjectEstimateCost projectEstimateCostOtherOther = costs.stream().filter(d -> d.getType() == 6).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() == 1).collect(Collectors.toList()).get(0); - estimateBean.setCostExpropriationTaxExclude(costManageExpropriation.getCostTaxExclude()); - ProjectEstimateCostManage costManageCompany = manages.stream().filter(d -> d.getType() == 2).collect(Collectors.toList()).get(0); - estimateBean.setCostCompanyManageTaxExclude(costManageCompany.getCostTaxExclude()); - - return estimateBean; + return projectRepository.saveAndFlush(p); } } diff --git a/src/main/resources/templates/admin/project_budget_edit.ftl b/src/main/resources/templates/admin/project_budget_edit.ftl new file mode 100644 index 0000000..fd90810 --- /dev/null +++ b/src/main/resources/templates/admin/project_budget_edit.ftl @@ -0,0 +1,431 @@ +<#assign base=request.contextPath /> +<#import "../common/defaultLayout.ftl" as defaultLayout> +<@defaultLayout.layout> + +
+
+
+
项目概算表 / ${project.name}
+
+ +
+ +
+ +
+
+ + + +
+
*部门名称
+
+ ${project.deptName} +
+
+
+ +
+
*项目计划开始时间
+
+
+ + +
+
+
+
+
+
*项目计划结束时间
+
+
+ + +
+
+
+
+ + + +
+
*项目名称
+
+ +
+
+
+ +
+
*项目类型
+
+ +
+
+
+
+
*垫资模式
+
+ +
+
+
+ +
+
*客户名称
+
+ +
+
+
+
+
*终端客户名称
+
+ +
+
+
+
+
*垫资利息
+
+ +
+
+
+
+
*垫资峰值
+
+ +
+
+
+
+
*合同金额
+
+ +
+
+
+
+
*行业场景应用
+
+ +
+
+
+
+
*华智产品金额
+
+ +
+
+
+
+
*紫光其他产品金额
+
+ +
+
+
+
+
*主合同收款条款
+
+ +
+
+
+ +
+ +
+
+
+ 收入 + 收入明细表 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
类别费用含税金额(元)不含税金额(元)
收入设备类
收入工程类
收入服务类
合计
+ 成本 + 采购成本明细表 + 项目管理成本表 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
类别费用费用项目含税金额(元)不含税金额(元)
成本采购成本设备
成本采购成本施工
成本采购成本服务
成本采购成本其他
成本项目管理成本项目管理成本
成本其他其他
合计
+ 管理 + 资金计划表 + + + + + + + + + + + + + + + + + + +
类别费用项目不含税金额(元)
财务费用资金占用成本
公司管理费用
+ + 利润率计算 + + + + + + + + + + + + + + + + + + +
类别不含税金额(元)利润率(%)
项目毛利
项目贡献利润率
+ + 现金流量表 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
类别金额(元)
销售商品、提供劳务收到的现金a
收到的税费返还b
收到其他与经营活动有关的现金c
购买商品、接受劳务支付的现d
支付的各项税费e
支付其他与经营活动有关的现金f
经营活动产生的现金流量净额g
投资活动现金流入h
投资活动现金流出i
投资活动产生的现金流量净额j
融资资金流入k
还款资金流出l
筹资活动产生的现金流量净额m
货币资金净增加额n
+
+ +
+
+
+ +
+ + + +
+ + +
+ + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/templates/admin/project_estimate_add.ftl b/src/main/resources/templates/admin/project_estimate_add.ftl index 47fb3b3..07824ed 100644 --- a/src/main/resources/templates/admin/project_estimate_add.ftl +++ b/src/main/resources/templates/admin/project_estimate_add.ftl @@ -178,7 +178,7 @@
- 收入 + 收入 @@ -213,7 +213,7 @@
- 成本 + 成本 @@ -274,7 +274,7 @@
- 管理 + 管理 @@ -295,7 +295,7 @@
- 利润率计算 + 利润率计算 diff --git a/src/main/resources/templates/admin/project_estimate_edit.ftl b/src/main/resources/templates/admin/project_estimate_edit.ftl index e1f75e1..fd7dd39 100644 --- a/src/main/resources/templates/admin/project_estimate_edit.ftl +++ b/src/main/resources/templates/admin/project_estimate_edit.ftl @@ -62,7 +62,7 @@
+ value="${project.name}" required readonly/>
@@ -70,7 +70,7 @@
*项目类型
- @@ -81,7 +81,7 @@
*垫资模式
- @@ -96,7 +96,7 @@
+ value="${project.customer}" required readonly/>
@@ -105,7 +105,7 @@
+ value="${project.terminalCustomer}" required readonly/>
@@ -141,7 +141,7 @@
+ value="${project.industryScenario}" required readonly/>
@@ -178,7 +178,7 @@
- 收入 + 收入
@@ -213,7 +213,7 @@
- 成本 + 成本 @@ -274,7 +274,7 @@
- 管理 + 管理 @@ -295,7 +295,7 @@
- 利润率计算 + 利润率计算 diff --git a/src/main/resources/templates/admin/project_list.ftl b/src/main/resources/templates/admin/project_list.ftl index 369112f..5d8c8c8 100644 --- a/src/main/resources/templates/admin/project_list.ftl +++ b/src/main/resources/templates/admin/project_list.ftl @@ -180,6 +180,13 @@ class="am-icon-pencil-square-o">编辑 + <@shiro.hasPermission name="PROJECT_EDIT"> + +