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()); // 合作类型