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 f960345..b8e7c7b 100644 --- a/src/main/java/cn/palmte/work/controller/backend/ProcessController.java +++ b/src/main/java/cn/palmte/work/controller/backend/ProcessController.java @@ -388,17 +388,7 @@ public class ProcessController { contract = processService.findProcurementContract(id); supplierMaterials = processService.getSupplierMaterials(id); procurementDetails = processService.getProcurementDetails(project.getId(), id); - BigDecimal contractAmount = BigDecimal.ZERO; - for (ProcurementDetail procurementDetail : procurementDetails) { - if (!CollectionUtils.isEmpty(procurementDetail.getPurchaseDetails())) { - for (BudgetPurchaseDetail purchaseDetail : procurementDetail.getPurchaseDetails()) { - BigDecimal totalTaxInclude = purchaseDetail.getTotalTaxInclude(); - if (totalTaxInclude != null) { - contractAmount = contractAmount.add(totalTaxInclude); - } - } - } - } + BigDecimal contractAmount = ProjectProcess.getContractAmount(procurementDetails); detail.setContractAmount(contractAmount); } @@ -720,6 +710,9 @@ public class ProcessController { @Transactional @PostMapping("/audit") public void audit(@RequestBody @Valid AuditForm form) { + if (form.processId == null) { + throw ErrorMessageException.failed("表单错误"); + } ProjectProcess process = obtainProjectProcess(form.processId); ActApproveTypeEnum approveType = form.processStatus == ProcessStatus.audit_passed ? ActApproveTypeEnum.APPROVAL_PASSED : ActApproveTypeEnum.APPROVAL_UN_PASS; diff --git a/src/main/java/cn/palmte/work/model/process/ProjectProcess.java b/src/main/java/cn/palmte/work/model/process/ProjectProcess.java index 85534f4..1d03a27 100644 --- a/src/main/java/cn/palmte/work/model/process/ProjectProcess.java +++ b/src/main/java/cn/palmte/work/model/process/ProjectProcess.java @@ -7,11 +7,14 @@ import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import org.hibernate.annotations.GenericGenerator; +import org.springframework.util.CollectionUtils; import java.io.IOException; import java.io.Serializable; +import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; +import java.util.List; import javax.persistence.Convert; import javax.persistence.Entity; @@ -129,6 +132,32 @@ public class ProjectProcess implements Serializable { this.lastUpdateAt = this.createAt; } + public static BigDecimal getContractAmount(List procurementDetails) { + BigDecimal contractAmount = BigDecimal.ZERO; + for (ProcurementDetail procurementDetail : procurementDetails) { + if (!CollectionUtils.isEmpty(procurementDetail.getPurchaseDetails())) { + for (BudgetPurchaseDetail purchaseDetail : procurementDetail.getPurchaseDetails()) { + BigDecimal totalTaxInclude = purchaseDetail.getTotalTaxInclude(); + if (totalTaxInclude != null) { + contractAmount = contractAmount.add(totalTaxInclude); + } + } + } + } + return contractAmount; + } + + public static BigDecimal getContractAmountByPurchaseDetail(List purchaseDetails) { + BigDecimal contractAmount = BigDecimal.ZERO; + for (BudgetPurchaseDetail purchaseDetail : purchaseDetails) { + BigDecimal totalTaxInclude = purchaseDetail.getTotalTaxInclude(); + if (totalTaxInclude != null) { + contractAmount = contractAmount.add(totalTaxInclude); + } + } + return contractAmount; + } + static class SealTypeArraySerializer extends JsonSerializer { @Override diff --git a/src/main/java/cn/palmte/work/service/ProjectProcessService.java b/src/main/java/cn/palmte/work/service/ProjectProcessService.java index 1ea1034..b41a085 100644 --- a/src/main/java/cn/palmte/work/service/ProjectProcessService.java +++ b/src/main/java/cn/palmte/work/service/ProjectProcessService.java @@ -108,9 +108,9 @@ public class ProjectProcessService { return queryProject.getProcessType() == ProcessType.sale_contract; } - public BigDecimal getContractAmount(int id) { + public BigDecimal getContractAmount(int projectId) { Map map = jdbcTemplate.queryForMap( - "select ifnull(sum(amount * price), 0) contractAmount from project_budget_income_detail where project_id = ?", id); + "select ifnull(sum(amount * price), 0) contractAmount from project_budget_income_detail where project_id = ?", projectId); return (BigDecimal) map.values().iterator().next(); } @@ -362,6 +362,13 @@ public class ProjectProcessService { return query.getResultList(); } + private List getBudgetPurchaseDetailsByProcessId(int processId) { + TypedQuery query = entityManager.createQuery( + "from BudgetPurchaseDetail where processId=:processId", BudgetPurchaseDetail.class); + query.setParameter("processId", processId); + return query.getResultList(); + } + private ProjectBudgetCostDetail getCostDetailById(int budgetCostId) { return entityManager.find(ProjectBudgetCostDetail.class, budgetCostId); } @@ -486,8 +493,18 @@ public class ProjectProcessService { // 垫资金额 BigDecimal repaidAmount = getProjectRepaidAmount(entity.getProjectId()); variables.put("repaidAmount", repaidAmount); - // 合同金额 - variables.put("contractAmount", project.getContractAmount() == null ? 0 : project.getContractAmount()); + + if (entity.getProcessType() == ProcessType.procurement_contract) { + // 合同金额 + List purchaseDetails = getBudgetPurchaseDetailsByProcessId(entity.getId()); + BigDecimal contractAmount = ProjectProcess.getContractAmountByPurchaseDetail(purchaseDetails); + variables.put("contractAmount", contractAmount); + } + else { + // 合同金额 + BigDecimal contractAmount = getContractAmount(project.getId()); + variables.put("contractAmount", contractAmount); + } // 项目类型 variables.put("projectType", project.getType()); // 合作类型 diff --git a/src/main/resources/templates/admin/business/process-detail.ftl b/src/main/resources/templates/admin/business/process-detail.ftl index 96b1f1f..3745af9 100644 --- a/src/main/resources/templates/admin/business/process-detail.ftl +++ b/src/main/resources/templates/admin/business/process-detail.ftl @@ -377,6 +377,7 @@ auditForm: { processStatus: null }, + processId: null, auditFormVisible: false, supplierMaterials: [] } @@ -531,9 +532,9 @@ .finally(() => loading.close()) }, - auditProcess(row, scope) { + auditProcess() { this.auditForm = { - processId: row.id, + processId: this.processId, processStatus: null } this.auditFormVisible = true @@ -560,7 +561,7 @@ }).then(checkStatus).then(data => { // 关闭对话框 this.auditFormVisible = false - this.queryTable() + this.backLastPage() this.$message({ showClose: true, message: '审核成功', @@ -601,6 +602,7 @@ }, mounted() { const processId = ${processId} + this.processId = processId this.loadProject(processId) }, filters: {