From d8e2dc63dc5dff15d8fc807a0437ae4ffc9114e9 Mon Sep 17 00:00:00 2001 From: Harry Yang Date: Tue, 3 Jan 2023 00:14:21 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=87=E8=B4=AD=E5=90=88=E5=90=8C=E6=9B=B4?= =?UTF-8?q?=E6=96=B0API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/backend/ProcessController.java | 28 +++++++++++++------ .../process/BudgetPurchaseAmountModel.java | 2 +- .../work/model/process/ProcurementDetail.java | 2 ++ .../model/process/form/ProcessUpdateForm.java | 3 -- .../work/service/ProjectProcessService.java | 2 ++ 5 files changed, 24 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 3fd9814..2cfa205 100644 --- a/src/main/java/cn/palmte/work/controller/backend/ProcessController.java +++ b/src/main/java/cn/palmte/work/controller/backend/ProcessController.java @@ -473,10 +473,14 @@ public class ProcessController { } @ResponseBody - @PutMapping + @PutMapping("/{id}") @Transactional(rollbackFor = Exception.class) - public void update(@RequestBody @Valid ProcessUpdateForm form) throws Exception { - ProjectProcess entity = processService.getById(form.getId()); + public void update(@PathVariable int id, @RequestBody @Valid ProcessUpdateForm form) throws Exception { + ProjectProcess entity = processService.getById(id); + if (entity == null) { + throw ErrorMessageException.failed("流程不存在"); + } + Integer processId = entity.getId(); ProcessType processType = entity.getProcessType(); @@ -491,7 +495,7 @@ public class ProcessController { entityManager.merge(entity); if (processType == ProcessType.sale_contract) { - SaleContract contract = processService.findSaleContract(form.getId()); + SaleContract contract = processService.findSaleContract(id); contract.setClientName(form.getClientName()); contract.setPaymentTerms(form.getPaymentTerms()); contract.setApplyPersonPhone(form.getApplyPersonPhone()); @@ -500,7 +504,7 @@ public class ProcessController { processService.updateIncomeDetails(form.getIncomeDetails()); } else if (processType == ProcessType.procurement_contract) { - ProcurementContract contract = processService.findProcurementContract(form.getId()); + ProcurementContract contract = processService.findProcurementContract(id); contract.setProcurementMode(form.getProcurementMode()); contract.setPaymentTerms(form.getPaymentTerms()); contract.setSupplierName(form.getSupplierName()); @@ -512,14 +516,20 @@ public class ProcessController { for (SupplierMaterial material : form.supplierMaterials) { material.setProcessId(processId); material.setContractId(contractId); - - entityManager.merge(material); + // 更新或者新增 + if (material.getId() != null) { + entityManager.merge(material); + } + else { + entityManager.persist(material); + } } } if (!CollectionUtils.isEmpty(form.purchaseAmount)) { for (BudgetPurchaseAmountModel amountForm : form.purchaseAmount) { - // 草稿模式也不允许为空 (基础数据) + // 草稿模式也不允许为空 (基础数据), 更新ID不能为空 + Assert.notNull(amountForm.amountId, "合同明细填写不完整"); Assert.notNull(amountForm.amount, "合同明细填写不完整"); Assert.notNull(amountForm.budgetCostId, "合同明细填写不完整"); @@ -528,7 +538,7 @@ public class ProcessController { // 新建 BudgetPurchaseAmount purchaseAmount = new BudgetPurchaseAmount(); - purchaseAmount.setId(amountForm.id); + purchaseAmount.setId(amountForm.amountId); purchaseAmount.setProcessId(processId); purchaseAmount.setContractId(contractId); purchaseAmount.setAmount(amountForm.amount); diff --git a/src/main/java/cn/palmte/work/model/process/BudgetPurchaseAmountModel.java b/src/main/java/cn/palmte/work/model/process/BudgetPurchaseAmountModel.java index 1f7fc95..930f52a 100644 --- a/src/main/java/cn/palmte/work/model/process/BudgetPurchaseAmountModel.java +++ b/src/main/java/cn/palmte/work/model/process/BudgetPurchaseAmountModel.java @@ -18,7 +18,7 @@ import lombok.ToString; @EqualsAndHashCode public class BudgetPurchaseAmountModel { - public Integer id; + public Integer amountId; // 所有的 public BigDecimal amount; diff --git a/src/main/java/cn/palmte/work/model/process/ProcurementDetail.java b/src/main/java/cn/palmte/work/model/process/ProcurementDetail.java index 0be8ad8..5fdd965 100644 --- a/src/main/java/cn/palmte/work/model/process/ProcurementDetail.java +++ b/src/main/java/cn/palmte/work/model/process/ProcurementDetail.java @@ -58,6 +58,8 @@ public class ProcurementDetail { private List purchaseDetails; + private Integer amountId; + public void setIsUnderwritten(int isUnderwritten) { this.isUnderwritten = isUnderwritten; this.isUnderwrittenDesc = isUnderwritten == 1 ? "是" : "否"; diff --git a/src/main/java/cn/palmte/work/model/process/form/ProcessUpdateForm.java b/src/main/java/cn/palmte/work/model/process/form/ProcessUpdateForm.java index e7e977f..3446cd2 100644 --- a/src/main/java/cn/palmte/work/model/process/form/ProcessUpdateForm.java +++ b/src/main/java/cn/palmte/work/model/process/form/ProcessUpdateForm.java @@ -20,9 +20,6 @@ import lombok.Data; @Data public class ProcessUpdateForm { - @NotNull - private Integer id; - // 申请部门 部门1,部门2,部门3 (逗号分割) private String applyDept; diff --git a/src/main/java/cn/palmte/work/service/ProjectProcessService.java b/src/main/java/cn/palmte/work/service/ProjectProcessService.java index 76ecb0c..cf5dad8 100644 --- a/src/main/java/cn/palmte/work/service/ProjectProcessService.java +++ b/src/main/java/cn/palmte/work/service/ProjectProcessService.java @@ -225,6 +225,7 @@ public class ProjectProcessService { if (amountAlready == null) { amountAlready = getAmountAlready(amount.getBudgetCostId()); } + detail.setAmountId(amountId); detail.setAmountAlready(amountAlready); detail.setAmountCurrent(amount.getAmountCurrent()); ret.add(detail); @@ -322,6 +323,7 @@ public class ProjectProcessService { public BigDecimal getAmountAlready(int budgetCostId) { return getPurchaseAmountList(budgetCostId).stream() .map(BudgetPurchaseAmount::getAmountAlready) + .filter(Objects::nonNull) .reduce(BigDecimal.ZERO, BigDecimal::add); }