From d7474423eb8ddf6b4b5afba50f7f7fe7ac4bf740 Mon Sep 17 00:00:00 2001 From: PoffyZhang <99775271@qq.com> Date: Fri, 8 Dec 2023 16:49:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=20=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E7=AD=9B=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/ProjectRenewalFundManage.java | 27 ++++++++++++++-------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectRenewalFundManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectRenewalFundManage.java index 3bfc006..35b64f2 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectRenewalFundManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectRenewalFundManage.java @@ -396,7 +396,7 @@ public class ProjectRenewalFundManage { } //判断金额 - checkPaymentAmount(projectCode,projectYear,dto.getAnnualPaymentAmount()); +// checkPaymentAmount(projectCode,projectYear,dto.getAnnualPaymentAmount()); declaration.setApprovalStatus(ProjectRenewalApprovalStatusEnum.PENDING.name()); if(Objects.nonNull(project)){ @@ -443,17 +443,24 @@ public class ProjectRenewalFundManage { //3. 算出 所能申报的最大金额 //3.1 算出 申报年 以及 之前的所有合同计划金额 - Double planSum = paymentPlans.stream().filter(c -> Objects.nonNull(c.getPaymentTime()) && + BigDecimal planSum = BigDecimal.ZERO; + Optional planSumOp = paymentPlans.stream().filter(c -> Objects.nonNull(c.getPaymentTime()) && (c.getPaymentTime().getYear() - projectYear) <= 0) - .mapToDouble(c -> Objects.nonNull(c.getPaymentAmount()) ? c.getPaymentAmount().doubleValue() : 0.0) - .sum(); - - Double actualPlanSum = paymentPlans.stream().filter(c -> Objects.nonNull(c.getPaymentTime()) && + .map(c -> Objects.nonNull(c.getPaymentAmount()) ? c.getPaymentAmount() : BigDecimal.ZERO) + .reduce(BigDecimal::add); + if(planSumOp.isPresent()){ + planSum = planSumOp.get(); + } + BigDecimal actualPlanSum = BigDecimal.ZERO; + Optional actualPlanSumOp = paymentPlans.stream().filter(c -> Objects.nonNull(c.getPaymentTime()) && (c.getPaymentTime().getYear() - projectYear) < 0) - .mapToDouble(c -> Objects.nonNull(c.getActualPaymentAmount()) ? c.getActualPaymentAmount().doubleValue() : 0.0) - .sum(); - Double maxAmount = planSum - actualPlanSum; - VUtils.isTrue(annualPlanAmount.compareTo(BigDecimal.valueOf(maxAmount)) > 0).throwMessage("所填年度支付金额 超出 最大限额"); + .map(c -> Objects.nonNull(c.getActualPaymentAmount()) ? c.getActualPaymentAmount() : BigDecimal.ZERO) + .reduce(BigDecimal::add); + if(actualPlanSumOp.isPresent()){ + actualPlanSum = actualPlanSumOp.get(); + } + BigDecimal maxAmount = planSum.subtract(actualPlanSum); + VUtils.isTrue(annualPlanAmount.compareTo(maxAmount) > 0).throwMessage("所填年度支付金额 超出 最大限额"); }