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 65efa03..221405f 100644 --- a/src/main/java/cn/palmte/work/controller/backend/ProjectController.java +++ b/src/main/java/cn/palmte/work/controller/backend/ProjectController.java @@ -166,10 +166,10 @@ public class ProjectController extends BaseController { ExportExcelUtils exportExcelUtils = new ExportExcelUtils(); String[] headers0 = {"部门名称", "项目编号", "项目名称", "项目类型", "项目计划开始时间", "项目计划结束时间", "垫资模式", "合作对象", "垫资利息", "垫资峰值", "合同金额", "项目毛利", "项目毛利率", "华智产品金额", "汇智产品金额", "华三产品金额", "其他产品金额", "项目把握度", "行业场景应用", "项目解决方案", "客户名称", "最终用户名称", - "价值及风险", "项目负责人", "预计合同签订时间", "项目计划招标时间", "是否二次合作", "直签", "主合同收款条款", "主合同具体解决方案", "计收计划"}; + "价值及风险", "项目负责人", "预计合同签订时间", "项目计划招标时间", "是否二次合作", "直签", "主合同收款条款", "主合同具体解决方案", "计收计划","项目阶段"}; String[] columns0 = {"deptName", "projectNo", "name", "typeDesc", "startDate", "endDate", "underwrittenModeStr", "collaborator", "advanceInterestAmountRound", "advancePeakAmountRound", "contractRound", "grossProfitRound", "grossProfitMarginRound", "huazhiRound", "huizhiRound", "huasanRound", "ziguangRound", "certaintyStr", "industryScenario", "resolvePlanStr", "customer", "terminalCustomer", - "valueRisk", "principal", "contractTime", "bidsTime", "isSecondStr", "signTypeStr", "mainContractCollectionTerms", "mainContractResolvePlan", "calculationCollection"}; + "valueRisk", "principal", "contractTime", "bidsTime", "isSecondStr", "signTypeStr", "mainContractCollectionTerms", "mainContractResolvePlan", "calculationCollection","stageName"}; exportExcelUtils.exportProjectExcel(headers0, columns0, project, "yyyy-MM-dd", 0, "项目立项(概算)信息", outputStream); // String[] headers1 = {"项目负责人", "预计合同签订时间", "项目计划招标时间", "是否二次合作", "直签", "主合同收款条款", "主合同具体解决方案", "计收计划"}; // String[] columns1 = {"principal", "contractTime", "bidsTime", "isSecondStr", "signTypeStr", "mainContractCollectionTerms", "mainContractResolvePlan", "calculationCollection"}; @@ -424,8 +424,7 @@ public class ProjectController extends BaseController { @RequestMapping("/budgetEditSave") public String budgetEditSave(Project project, ProjectBudget projectBudget, BindingResult bindingResult, BudgetBean budgetBean, Map model) { Project projectInDb = projectService.getProject(project.getId()); - projectBudgetRepository.save(projectBudget); - projectBudgetService.budgetEditSave(project, projectInDb, budgetBean, InterfaceUtil.getAdmin(), ApproveStatusEnum.APPROVAL_UNCOMMIT); + projectBudgetService.budgetEditSave(project, projectInDb, budgetBean, InterfaceUtil.getAdmin(), ApproveStatusEnum.APPROVAL_UNCOMMIT, projectBudget); return "redirect:/project/list"; } @@ -435,8 +434,7 @@ public class ProjectController extends BaseController { @RequestMapping("/budgetEditSaveAndApprove") public String budgetEditSaveAndApprove(Project project, ProjectBudget projectBudget, BudgetBean budgetBean, Map model) throws Exception { Project projectInDb = projectService.getProject(project.getId()); - projectBudgetRepository.save(projectBudget); - projectBudgetService.budgetEditSaveAndApprove(project, projectInDb, budgetBean, InterfaceUtil.getAdmin()); + projectBudgetService.budgetEditSaveAndApprove(project, projectInDb, budgetBean, InterfaceUtil.getAdmin(), projectBudget); return "redirect:/project/list"; } @@ -647,6 +645,9 @@ public class ProjectController extends BaseController { model.put("planEndStr", project.getPlanEndStr()); model.put("planEndDate", project.getPlanEndStr()); + ProjectBudget projectBudget = projectBudgetRepository.findFirstByProjectId(id); + model.put("projectBudget", projectBudget); + //概算信息 EstimateBean estimateBean = projectEstimateService.getEstimate(project); model.put("estimateBean", estimateBean); diff --git a/src/main/java/cn/palmte/work/service/ProjectBudgetService.java b/src/main/java/cn/palmte/work/service/ProjectBudgetService.java index 851bb39..b8f981e 100644 --- a/src/main/java/cn/palmte/work/service/ProjectBudgetService.java +++ b/src/main/java/cn/palmte/work/service/ProjectBudgetService.java @@ -65,6 +65,8 @@ public class ProjectBudgetService { private ProjectBudgetService projectBudgetService; @Autowired private ProjectExtendRepository projectExtendRepository; + @Autowired + private ProjectBudgetRepository projectBudgetRepository; @Value("#{'${fourcal.fixedprojectmanagedetails}'.split('\\|')}") private String[] fixedProjectManageDetails; @@ -865,10 +867,10 @@ public class ProjectBudgetService { * 编辑预算保存项目并审核 */ //@Transactional(rollbackFor = RuntimeException.class) - public void budgetEditSaveAndApprove(Project project, Project projectInDb, BudgetBean budgetBean, Admin admin) throws Exception { + public void budgetEditSaveAndApprove(Project project, Project projectInDb, BudgetBean budgetBean, Admin admin, ProjectBudget projectBudget) throws Exception { Integer approveStatusBudget = projectInDb.getApproveStatusBudget(); - budgetEditSave(project, projectInDb, budgetBean, admin, ApproveStatusEnum.APPROVAL_PENDING); + budgetEditSave(project, projectInDb, budgetBean, admin, ApproveStatusEnum.APPROVAL_PENDING, projectBudget); budgetApprove(approveStatusBudget, projectInDb, admin); } @@ -902,7 +904,7 @@ public class ProjectBudgetService { * 编辑预算保存项目 */ @Transactional(rollbackFor = RuntimeException.class) - public Project budgetEditSave(Project project, Project p, BudgetBean budgetBean, Admin admin, ApproveStatusEnum approveStatusEnum) { + public Project budgetEditSave(Project project, Project p, BudgetBean budgetBean, Admin admin, ApproveStatusEnum approveStatusEnum, ProjectBudget projectBudget) { // Project p = projectService.estimateEditProject(project, projectInDb); p.setOtherName(project.getOtherName()); @@ -915,6 +917,8 @@ public class ProjectBudgetService { p.setStatusDesc(StatusEnum.BUDGET_ACCOUNTS.getStatusDesc()); p.setApproveStatusBudget(approveStatusEnum.getApproveStatus()); p = projectRepository.saveAndFlush(p); + + saveProjectBudget(p, projectBudget); //清空重新保存概算信息 clearBudget(p); saveBudget(p, budgetBean); @@ -926,6 +930,21 @@ public class ProjectBudgetService { return p; } + private void saveProjectBudget(Project p, ProjectBudget projectBudget) { + ProjectBudget budget = projectBudgetRepository.findFirstByProjectId(p.getId()); + projectBudget.setDeptIdBudget(budget.getDeptIdBudget()); + projectBudget.setDeptNameBudget(budget.getDeptNameBudget()); + projectBudget.setTypeDescBudget(TypeEnum.parseType(projectBudget.getTypeBudget()).getTypeDesc()); + projectBudget.setUnderwrittenModeStrBudget(UnderwrittenModeEnum.parseUnderwrittenMode(projectBudget.getUnderwrittenModeBudget()).getUnderwrittenModeStr()); + projectBudget.setCooperateTypeStrBudget(CooperateTypeEnum.parseCooperateType(projectBudget.getCooperateTypeBudget()).getCooperateTypeStr()); + projectBudget.setCertaintyStrBudget(CertaintyEnum.parseCertainty(projectBudget.getCertaintyBudget()).getCertaintyStr()); + projectBudget.setIndustryScenarioBudget(IndustrySceneEnum.parseScene(projectBudget.getIndustrySceneBudget()).getScenario()); + projectBudget.setIsSecondStrBudget(IsSecondEnum.parseIsSecond(projectBudget.getIsSecondBudget()).getIsSecondStr()); + projectBudget.setSignTypeStrBudget(SignTypeEnum.parseSignType(projectBudget.getSignTypeBudget()).getSignTypeStr()); + projectBudget.setResolvePlanStrBudget(ResolvePlanEnum.parseResolvePlan(projectBudget.getResolvePlanBudget()).getResolvePlanStr()); + projectBudgetRepository.save(projectBudget); + } + private void saveProjectExtend(Project p) { ProjectExtend extend = projectExtendRepository.findByProjectId(p.getId()); if (extend == null) { diff --git a/src/main/java/cn/palmte/work/service/ProjectEstimateService.java b/src/main/java/cn/palmte/work/service/ProjectEstimateService.java index 2c5e13c..9b1e66a 100644 --- a/src/main/java/cn/palmte/work/service/ProjectEstimateService.java +++ b/src/main/java/cn/palmte/work/service/ProjectEstimateService.java @@ -41,6 +41,8 @@ public class ProjectEstimateService { private ProjectVisibleRepository projectVisibleRepository; @Autowired private ProjectExtendRepository projectExtendRepository; + @Autowired + private ProjectBudgetRepository projectBudgetRepository; public void clearEstimate(Project project){ List incomes = projectEstimateIncomeRepository.findAllByProjectIdEquals(project.getId()); @@ -291,11 +293,62 @@ public class ProjectEstimateService { Integer approveStatusEstimate = projectInDb.getApproveStatusEstimate(); - estimateEditSave(project, projectInDb, estimateBean, admin, ApproveStatusEnum.APPROVAL_PENDING); + Project estimateProject = estimateEditSave(project, projectInDb, estimateBean, admin, ApproveStatusEnum.APPROVAL_PENDING); + + projectBudgetSave(estimateProject); estimateApprove(approveStatusEstimate, projectInDb, admin); } + private void projectBudgetSave(Project estimateProject) { + ProjectBudget projectBudget = new ProjectBudget(); + projectBudget.setProjectId(estimateProject.getId()); + projectBudget.setProjectNoBudget(estimateProject.getProjectNo()); + projectBudget.setNameBudget(estimateProject.getName()); + projectBudget.setTypeBudget(estimateProject.getType()); + projectBudget.setTypeDescBudget(estimateProject.getTypeDesc()); + projectBudget.setDeptIdBudget(estimateProject.getDeptId()); + projectBudget.setDeptNameBudget(estimateProject.getDeptName()); + projectBudget.setStartDateBudget(estimateProject.getStartDate()); + projectBudget.setEndDateBudget(estimateProject.getEndDate()); + projectBudget.setUnderwrittenModeBudget(estimateProject.getUnderwrittenMode()); + projectBudget.setUnderwrittenModeStrBudget(estimateProject.getUnderwrittenModeStr()); + projectBudget.setCooperateTypeBudget(estimateProject.getCooperateType()); + projectBudget.setCooperateTypeStrBudget(estimateProject.getCooperateTypeStr()); + projectBudget.setCollaboratorBudget(estimateProject.getCollaborator()); + projectBudget.setCollaboratorUrlBudget(estimateProject.getCollaboratorUrl()); + projectBudget.setCertaintyBudget(estimateProject.getCertainty()); + projectBudget.setCertaintyStrBudget(estimateProject.getCertaintyStr()); + projectBudget.setCustomerBudget(estimateProject.getCustomer()); + projectBudget.setTerminalCustomerBudget(estimateProject.getTerminalCustomer()); + projectBudget.setAdvanceInterestAmountBudget(estimateProject.getAdvanceInterestAmount()); + projectBudget.setAdvancePeakAmountBudget(estimateProject.getAdvancePeakAmount()); + projectBudget.setContractAmountBudget(estimateProject.getContractAmount()); + projectBudget.setIndustryScenarioBudget(estimateProject.getIndustryScenario()); + projectBudget.setIndustrySceneBudget(estimateProject.getIndustryScene()); + projectBudget.setGrossProfitBudget(estimateProject.getGrossProfit()); + projectBudget.setGrossProfitMarginBudget(estimateProject.getGrossProfitMargin()); + projectBudget.setHuazhiProductAmountBudget(estimateProject.getHuazhiProductAmount()); + projectBudget.setHuizhiProductAmountBudget(estimateProject.getHuizhiProductAmount()); + projectBudget.setHuasanProductAmountBudget(estimateProject.getHuasanProductAmount()); + projectBudget.setZiguangOtherAmountBudget(estimateProject.getZiguangOtherAmount()); + projectBudget.setMainContractCollectionTermsBudget(estimateProject.getMainContractCollectionTerms()); + projectBudget.setValueRiskBudget(estimateProject.getValueRisk()); + projectBudget.setPrincipalBudget(estimateProject.getPrincipal()); + projectBudget.setContractTimeBudget(estimateProject.getContractTime()); + projectBudget.setBidsTimeBudget(estimateProject.getBidsTime()); + projectBudget.setIsSecondBudget(estimateProject.getIsSecond()); + projectBudget.setIsSecondStrBudget(estimateProject.getIsSecondStr()); + projectBudget.setSignTypeBudget(estimateProject.getSignType()); + projectBudget.setSignTypeStrBudget(estimateProject.getSignTypeStr()); + projectBudget.setResolvePlanBudget(estimateProject.getResolvePlan()); + projectBudget.setResolvePlanStrBudget(estimateProject.getResolvePlanStr()); + projectBudget.setMainContractResolvePlanBudget(estimateProject.getMainContractResolvePlan()); + projectBudget.setCalculationCollectionBudget(estimateProject.getCalculationCollection()); + + projectBudgetRepository.save(projectBudget); + } + public void estimateApprove(Integer approveStatusEstimate, Project projectInDb, Admin admin) throws Exception { projectInstanceService.startEstimateProcessInstance(projectInDb, admin); int type = projectInDb.getType(); diff --git a/src/main/java/cn/palmte/work/service/ProjectService.java b/src/main/java/cn/palmte/work/service/ProjectService.java index 4c5ca49..e4ef96a 100644 --- a/src/main/java/cn/palmte/work/service/ProjectService.java +++ b/src/main/java/cn/palmte/work/service/ProjectService.java @@ -775,6 +775,12 @@ public class ProjectService { ", FORMAT(p.gross_profit,2) as grossProfitRound, FORMAT(p.gross_profit_margin,2) as grossProfitMarginRound, FORMAT(p.advance_interest_amount,2) as advanceInterestAmountRound, FORMAT(p.advance_peak_amount,2) as advancePeakAmountRound","project","p"); queryHelper.addCondition("p.id=?", id); Project first = pagination.findFirst(queryHelper.getSql(), Project.class); + + if(null == first.getStage()){ + first.setStageName(getStageName(-1)); + }else { + first.setStageName(getStageName(first.getStage())); + } return first; } diff --git a/src/main/resources/static/assets/js/project_budget.js b/src/main/resources/static/assets/js/project_budget.js index 38d7778..8b3f62f 100644 --- a/src/main/resources/static/assets/js/project_budget.js +++ b/src/main/resources/static/assets/js/project_budget.js @@ -201,7 +201,7 @@ $(function () { $("#saveApprove").attr('disabled', true); $("#collaboratorUrl").val($("#collaboratorUrl_span").text()); - // checkIfFillIn(); + checkIfFillIn(); var dataIncome = collectData("am-modal-prompt-input-income"); if (dataIncome.length <= 5) { @@ -328,6 +328,170 @@ $(function () { }; }); +//立项表填写检查 +function checkIfFillIn() { + var name = $("#nameBudget").val(); + var startTime = $("#startDateBudget").val(); + var endTime = $("#endDateBudget").val(); + var underwrittenMode = $("#underwrittenModeBudget").val(); + var collaborator = $("#collaboratorBudget").val(); + var advanceInterestAmount = $("#advanceInterestAmountBudget").val(); + var advancePeakAmount = $("#advancePeakAmountBudget").val(); + var contractAmount = $("#contractAmountBudget").val(); + var grossProfit = $("#grossProfitBudget").val(); + var grossProfitMargin = $("#grossProfitMarginBudget").val(); + var huizhiProductAmount = $("#huizhiProductAmountBudget").val(); + var huazhiProductAmount = $("#huazhiProductAmountBudget").val(); + var huasanProductAmount = $("#huasanProductAmountBudget").val(); + var ziguangOtherAmount = $("#ziguangOtherAmountBudget").val(); + // var industryScenario = $("#industryScenarioBudget").val(); + var customer = $("#customerBudget").val(); + var terminalCustomer = $("#terminalCustomerBudget").val(); + var valueRisk = $("#valueRiskBudget").val(); + var principal = $("#principalBudget").val(); + + if (name.length <= 0) { + window.confirm('项目名称不能为空'); + check = 1; + return; + } + + checkName(); + if (result == 1) { + window.confirm('项目名称已存在'); + check = 1; + return; + } + + if (startTime.length <= 0) { + window.confirm('项目计划开始时间不能为空'); + check = 1; + return; + } + + if (endTime.length <= 0) { + window.confirm('项目计划结束时间不能为空'); + check = 1; + return; + } + + if (startTime > endTime) { + window.confirm('开始日期应早于结束日期'); + check = 1; + return; + } + + // if (projectNo.length <= 0) { + // window.confirm('项目编号不能为空'); + // check = 1; + // return; + // } + // + // checkProjectNo(); + // if (projectNoResult == 1) { + // window.confirm('项目编号已存在'); + // check = 1; + // return; + // } + + if (underwrittenMode == 1 && (collaborator == undefined || collaborator.length <= 0)) { + window.confirm('合作对象不能为空'); + check = 1; + return; + } + + + if (underwrittenMode > 2 && (advanceInterestAmount == undefined || advanceInterestAmount.length <= 0)) { + window.confirm('垫资利息不能为空'); + check = 1; + return; + } + + if (underwrittenMode > 2 && (advancePeakAmount == undefined || advancePeakAmount.length <= 0)) { + window.confirm('垫资峰值不能为空'); + check = 1; + return; + } + + if (contractAmount == undefined || contractAmount.length <= 0) { + window.confirm('合同金额不能为空'); + check = 1; + return; + } + + if (grossProfit == undefined || grossProfit.length <= 0) { + window.confirm('项目毛利不能为空'); + check = 1; + return; + } + + if (grossProfitMargin == undefined || grossProfitMargin.length <= 0) { + window.confirm('项目毛利率不能为空'); + check = 1; + return; + } + + if (huizhiProductAmount == undefined || huizhiProductAmount.length <= 0) { + window.confirm('汇智产品金额不能为空'); + check = 1; + return; + } + + if (huazhiProductAmount == undefined || huazhiProductAmount.length <= 0) { + window.confirm('华智产品金额不能为空'); + check = 1; + return; + } + + if (huasanProductAmount == undefined || huasanProductAmount.length <= 0) { + window.confirm('华三产品金额不能为空'); + check = 1; + return; + } + + if (ziguangOtherAmount == undefined || ziguangOtherAmount.length <= 0) { + window.confirm('其他产品金额不能为空'); + check = 1; + return; + } + + // if (industryScenario == undefined || industryScenario.length <= 0) { + // window.confirm('行业应用场景不能为空'); + // check = 1; + // return; + // } + + // if (mainContractCollectionTerms == undefined || mainContractCollectionTerms.length <= 0) { + // window.confirm('主合同收款条款不能为空'); + // check = 1; + // return; + // } + + if (customer == undefined || customer.length <= 0) { + window.confirm('客户名称不能为空'); + check = 1; + return; + } + + if (terminalCustomer == undefined || terminalCustomer.length <= 0) { + window.confirm('最终用户名称不能为空'); + check = 1; + return; + } + + if (valueRisk == undefined || valueRisk.length <= 0) { + window.confirm('价值及风险不能为空'); + check = 1; + return; + } + + if (principal == undefined || principal.length <= 0) { + window.confirm('项目负责人不能为空'); + check = 1; + return; + } +} + /** * 判断是否重名 */ diff --git a/src/main/resources/templates/admin/project_approve.ftl b/src/main/resources/templates/admin/project_approve.ftl index d3db35a..73fa5d9 100644 --- a/src/main/resources/templates/admin/project_approve.ftl +++ b/src/main/resources/templates/admin/project_approve.ftl @@ -442,7 +442,8 @@
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目基本信息
部门名称:项目编号:
项目名称: + +
项目类型: + <#if projectBudget.typeBudget??> + <#if (projectBudget.typeBudget) =1> + + <#elseif (projectBudget.typeBudget) =2> + + <#elseif (projectBudget.typeBudget) =3> + + + <#else> + + + 项目计划开始时间: + + 项目计划结束时间: + +
垫资模式: + <#if projectBudget.underwrittenModeBudget??> + <#if (projectBudget.underwrittenModeBudget) =1> + + <#elseif (projectBudget.underwrittenModeBudget) =3> + + <#elseif (projectBudget.underwrittenModeBudget) =4> + + + <#else> + + + hidden>hidden>垫资利息:hidden> + + hidden>垫资峰值:hidden> + +
合作类型: + <#if projectBudget.cooperateTypeBudget??> + <#if (projectBudget.cooperateTypeBudget) =1> + + <#elseif (projectBudget.cooperateTypeBudget) =2> + + + <#else> + + + hidden >合作对象:hidden > + <#if projectBudget.collaboratorUrlBudget?? && projectBudget.collaboratorUrlBudget != ""> + + <#else> +
+ +
hidden>
合同金额: + + 项目毛利: + + 项目毛利率: + +
汇智产品金额: + + 华智产品金额: + + 华三产品金额: + +
其他产品金额: + + 项目把握度: + <#if projectBudget.certaintyBudget??> + <#if (projectBudget.certaintyBudget) =1> + + <#elseif (projectBudget.certaintyBudget) =2> + + <#elseif (projectBudget.certaintyBudget) =3> + + + <#else> + + + 行业场景应用:
项目解决方案: + <#if projectBudget.resolvePlanBudget??> + <#if (projectBudget.resolvePlanBudget!) =1> + + <#elseif (projectBudget.resolvePlanBudget!) =2> + + <#elseif (projectBudget.resolvePlanBudget!) =3> + + + <#else> + + + 客户名称: + + 最终用户名称: + +
价值及风险: + +
项目负责人: + + 预计合同签订时间: + + 项目计划招标时间: + +
是否二次合作: + <#if projectBudget.isSecondBudget??> + <#if (projectBudget.isSecondBudget!) =1> + + <#elseif (projectBudget.isSecondBudget!) =2> + + <#else > + + + <#else> + + + 直签: + <#if projectBudget.signTypeBudget??> + <#if (projectBudget.signTypeBudget!) =1> + + <#else > + + + <#else> + + +
主合同收款条款: + +
主合同具体解决方案: + +
计收计划: + +
+
<#--收入明细表-->
@@ -1084,7 +1335,7 @@ 采购成本明细表 项目管理成本表 资金计划表--> -
+
diff --git a/src/main/resources/templates/admin/project_budget_edit.ftl b/src/main/resources/templates/admin/project_budget_edit.ftl index 6f7995b..a3318bd 100644 --- a/src/main/resources/templates/admin/project_budget_edit.ftl +++ b/src/main/resources/templates/admin/project_budget_edit.ftl @@ -322,10 +322,10 @@ 项目基本信息 - *部门名称: + 部门名称: - *项目编号: - + 项目编号: + *项目名称: diff --git a/src/main/resources/templates/admin/project_list.ftl b/src/main/resources/templates/admin/project_list.ftl index 4ba05cb..9de391e 100644 --- a/src/main/resources/templates/admin/project_list.ftl +++ b/src/main/resources/templates/admin/project_list.ftl @@ -79,6 +79,7 @@ +