From ba4675994d6c58243c074535d0596f5f325762a3 Mon Sep 17 00:00:00 2001 From: Harry Yang Date: Mon, 26 Dec 2022 16:43:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=AE=A1=E6=89=B9=E5=8F=98?= =?UTF-8?q?=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/backend/ProcessController.java | 22 ++++-------- .../work/service/ProjectProcessService.java | 36 +++++++++++++++++-- 2 files changed, 41 insertions(+), 17 deletions(-) diff --git a/src/main/java/cn/palmte/work/controller/backend/ProcessController.java b/src/main/java/cn/palmte/work/controller/backend/ProcessController.java index 28ddef7..4f1a911 100644 --- a/src/main/java/cn/palmte/work/controller/backend/ProcessController.java +++ b/src/main/java/cn/palmte/work/controller/backend/ProcessController.java @@ -121,6 +121,7 @@ public class ProcessController { @GetMapping("/new") public String newProcess(Model model) { model.addAttribute("sealTypes", SealType.values()); + model.addAttribute("procurementMode", ProcurementMode.values()); model.addAttribute("taxRate", Arrays.asList(0, 1, 3, 4, 5, 6, 9, 10, 13)); return "/admin/business/process-new"; } @@ -198,9 +199,7 @@ public class ProcessController { } private BigDecimal getRepaidAmount(int id) { - Map map = jdbcTemplate.queryForMap( - "select ifnull(sum(underwritten_plan), 0) repaidAmount from project_budget_plan_detail where project_id = ?", id); - return (BigDecimal) map.values().iterator().next(); + return processService.getProjectRepaidAmount(id); } @ResponseBody @@ -281,8 +280,8 @@ public class ProcessController { .build(); } - private static String isPrepaid(Project project) { - return project.getUnderwrittenMode() == 2 || project.getUnderwrittenMode() == 3 ? "是" : "否"; + private String isPrepaid(Project project) { + return processService.isProjectPrepaid(project) ? "是" : "否"; } @ResponseBody @@ -342,20 +341,17 @@ public class ProcessController { entityManager.persist(entity); - HashMap variables = new HashMap<>(); if (entity.getProcessType() != null) { switch (entity.getProcessType()) { case sale_contract: SaleContract saleContract = SaleContract.from(form); saleContract.setProcessId(entity.getId()); entityManager.persist(saleContract); - variables.put("contract", saleContract); break; case business_procurement: ProcurementContract procurementContract = ProcurementContract.from(form); procurementContract.setProcessId(entity.getId()); entityManager.persist(procurementContract); - variables.put("contract", procurementContract); break; default: throw new UnsupportedOperationException("还不支持"); @@ -365,7 +361,8 @@ public class ProcessController { processService.updateIncomeDetails(form.getIncomeDetails()); if (form.getStatus() == ProcessStatus.to_be_audit) { - processService.startAuditProgress(entity, variables); + // 发起流程 + processService.startAuditProgress(entity); } } @@ -385,16 +382,13 @@ public class ProcessController { entityManager.merge(entity); - HashMap variables = new HashMap<>(); switch (entity.getProcessType()) { case sale_contract: { SaleContract contract = processService.findSaleContract(form.getId()); contract.setClientName(form.getClientName()); contract.setPaymentTerms(form.getPaymentTerms()); contract.setApplyPersonPhone(form.getApplyPersonPhone()); - entityManager.merge(contract); - variables.put("contract", contract); break; } case business_procurement: { @@ -402,9 +396,7 @@ public class ProcessController { contract.setMode(form.getProcurementMode()); contract.setPaymentTerms(form.getPaymentTerms()); contract.setSupplierName(form.getSupplierName()); - entityManager.merge(contract); - variables.put("contract", contract); break; } default: @@ -414,7 +406,7 @@ public class ProcessController { processService.updateIncomeDetails(form.getIncomeDetails()); if (form.getStatus() == ProcessStatus.to_be_audit) { - processService.startAuditProgress(entity, variables); + processService.startAuditProgress(entity); } } diff --git a/src/main/java/cn/palmte/work/service/ProjectProcessService.java b/src/main/java/cn/palmte/work/service/ProjectProcessService.java index 1828070..b9c9dc0 100644 --- a/src/main/java/cn/palmte/work/service/ProjectProcessService.java +++ b/src/main/java/cn/palmte/work/service/ProjectProcessService.java @@ -1,11 +1,11 @@ package cn.palmte.work.service; -import cn.palmte.work.config.activiti.ActProjectTypeEnum; import org.springframework.jdbc.core.BatchPreparedStatementSetter; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import java.math.BigDecimal; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.HashMap; @@ -16,8 +16,14 @@ import java.util.stream.Collectors; import javax.persistence.EntityManager; import javax.persistence.TypedQuery; +import cn.palmte.work.config.activiti.ActProjectTypeEnum; import cn.palmte.work.model.Admin; +import cn.palmte.work.model.Project; +import cn.palmte.work.model.ProjectRepository; +import cn.palmte.work.model.enums.CooperationType; +import cn.palmte.work.model.enums.Enumerable; import cn.palmte.work.model.enums.ProcessStatus; +import cn.palmte.work.model.enums.ProjectType; import cn.palmte.work.model.process.ProcurementContract; import cn.palmte.work.model.process.ProjectProcess; import cn.palmte.work.model.process.SaleContract; @@ -36,6 +42,7 @@ public class ProjectProcessService { private final JdbcTemplate jdbcTemplate; private final EntityManager entityManager; private final ProjectInstanceService projectInstanceService; + private final ProjectRepository projectRepository; /** * 更新流程 审批人,和状态 @@ -126,21 +133,46 @@ public class ProjectProcessService { } } + public BigDecimal getProjectRepaidAmount(int projectId) { + Map map = jdbcTemplate.queryForMap( + "select ifnull(sum(underwritten_plan), 0) repaidAmount from project_budget_plan_detail where project_id = ?", projectId); + return (BigDecimal) map.values().iterator().next(); + } + /** * 发起流程审批 */ public void startAuditProgress(ProjectProcess entity) { HashMap variables = new HashMap<>(); + Project project = projectRepository.findById(entity.getProjectId()); + // 是否垫资 + variables.put("isPrepaid", isProjectPrepaid(project)); + // 垫资金额 + BigDecimal repaidAmount = getProjectRepaidAmount(entity.getProjectId()); + variables.put("repaidAmount", repaidAmount); + // 合同金额 + variables.put("contractAmount", project.getContractAmount()); + // 项目类型 + variables.put("projectType", Enumerable.of(ProjectType.class, project.getType())); + // 合作类型 + variables.put("cooperationType", Enumerable.of(CooperationType.class, project.getCooperateType())); + startAuditProgress(entity, variables); } + /** + * 是否垫资 + */ + public boolean isProjectPrepaid(Project project) { + return project.getUnderwrittenMode() == 2 || project.getUnderwrittenMode() == 3; + } + /** * 发起流程审批 */ @SneakyThrows public void startAuditProgress(ProjectProcess entity, Map variables) { if (entity.getStatus() == ProcessStatus.to_be_audit) { - variables.put("process", entity); switch (entity.getProcessType()) { case sale_contract: projectInstanceService.startProcessByProjectId(entity.getId(), ActProjectTypeEnum.SALE_CONTRACT, variables);