From b2a9695766d64990327eca4df8d5d87acadd7078 Mon Sep 17 00:00:00 2001 From: Harry Yang Date: Fri, 6 Jan 2023 12:31:40 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E7=9A=84=E6=97=B6=E5=80=99=E5=90=88=E5=90=8C=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/backend/ProcessController.java | 12 +------- .../work/model/process/ProjectProcess.java | 29 +++++++++++++++++++ .../work/service/ProjectProcessService.java | 20 +++++++++++-- 3 files changed, 48 insertions(+), 13 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 f960345..1f5c1df 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); } 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..743674f 100644 --- a/src/main/java/cn/palmte/work/service/ProjectProcessService.java +++ b/src/main/java/cn/palmte/work/service/ProjectProcessService.java @@ -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,17 @@ 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 { + // 合同金额 + variables.put("contractAmount", project.getContractAmount() == null ? 0 : project.getContractAmount()); + } // 项目类型 variables.put("projectType", project.getType()); // 合作类型 From 039043931960084dc46e59e84ed0b891538cd9d6 Mon Sep 17 00:00:00 2001 From: Harry Yang Date: Fri, 6 Jan 2023 13:04:16 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E8=AF=A6=E6=83=85=E7=95=8C=E9=9D=A2?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../palmte/work/controller/backend/ProcessController.java | 3 +++ .../resources/templates/admin/business/process-detail.ftl | 8 +++++--- 2 files changed, 8 insertions(+), 3 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 1f5c1df..b8e7c7b 100644 --- a/src/main/java/cn/palmte/work/controller/backend/ProcessController.java +++ b/src/main/java/cn/palmte/work/controller/backend/ProcessController.java @@ -710,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/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: { From eb05fb71eb8f22fabd17d93541eb0da8f277f48c Mon Sep 17 00:00:00 2001 From: Harry Yang Date: Fri, 6 Jan 2023 13:05:40 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E7=9A=84=E6=97=B6=E5=80=99=E5=90=88=E5=90=8C=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/palmte/work/service/ProjectProcessService.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/cn/palmte/work/service/ProjectProcessService.java b/src/main/java/cn/palmte/work/service/ProjectProcessService.java index 743674f..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(); } @@ -502,7 +502,8 @@ public class ProjectProcessService { } else { // 合同金额 - variables.put("contractAmount", project.getContractAmount() == null ? 0 : project.getContractAmount()); + BigDecimal contractAmount = getContractAmount(project.getId()); + variables.put("contractAmount", contractAmount); } // 项目类型 variables.put("projectType", project.getType());