From 559f92e850ef45fa123d0e4d80989ed5c37828e2 Mon Sep 17 00:00:00 2001 From: lzm <2316711944@qq.com> Date: Fri, 29 May 2026 17:40:32 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=88=90=E6=9C=AC=E6=B5=8B?= =?UTF-8?q?=E7=AE=97=E6=80=BB=E5=90=88=E7=BA=A6=E8=A7=84=E5=88=92=E9=A2=84?= =?UTF-8?q?=E7=AE=97=E4=BA=A7=E5=80=BC=E4=BF=AE=E6=94=B9=E6=88=90=E5=90=88?= =?UTF-8?q?=E5=90=8C=E4=BA=A7=E5=80=BC=EF=BC=88=E4=B8=8D=E5=90=AB=E5=A2=9E?= =?UTF-8?q?=E5=80=BC=E7=A8=8E=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/profit/vo/ProjectProfitRespVO.java | 2 +- .../vo/ProjectProfitSnapshotRespVO.java | 2 +- .../profit/ProjectProfitServiceImpl.java | 20 ++++++++++++------- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/profit/vo/ProjectProfitRespVO.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/profit/vo/ProjectProfitRespVO.java index 38f6220..95efbdd 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/profit/vo/ProjectProfitRespVO.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/profit/vo/ProjectProfitRespVO.java @@ -28,7 +28,7 @@ public class ProjectProfitRespVO { @Schema(description = "结算合同总产值") private BigDecimal finalSettlementAmount; - @Schema(description = "项目预算产值总计,项目下所有合约规划的项目预算产值合计") + @Schema(description = "合同产值(不含增值税),合同总产值 / 1.06") private BigDecimal effectiveSettlementAmount; @Schema(description = "综合所人工成本") diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/profit/vo/ProjectProfitSnapshotRespVO.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/profit/vo/ProjectProfitSnapshotRespVO.java index 7f38fdd..271e123 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/profit/vo/ProjectProfitSnapshotRespVO.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/controller/admin/profit/vo/ProjectProfitSnapshotRespVO.java @@ -37,7 +37,7 @@ public class ProjectProfitSnapshotRespVO { @Schema(description = "结算合同总产值") private BigDecimal finalSettlementAmount; - @Schema(description = "项目预算产值总计,项目下所有合约规划的项目预算产值合计") + @Schema(description = "合同产值(不含增值税),合同总产值 / 1.06") private BigDecimal effectiveSettlementAmount; @Schema(description = "综合所人工成本") diff --git a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/profit/ProjectProfitServiceImpl.java b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/profit/ProjectProfitServiceImpl.java index 16837d6..e2259e1 100644 --- a/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/profit/ProjectProfitServiceImpl.java +++ b/lyzsys-module-tjt/src/main/java/cn/iocoder/lyzsys/module/tjt/service/profit/ProjectProfitServiceImpl.java @@ -47,6 +47,7 @@ public class ProjectProfitServiceImpl implements ProjectProfitService { private static final BigDecimal ASSESSMENT_COEFFICIENT_EXCELLENT = new BigDecimal("1.0200"); private static final BigDecimal ASSESSMENT_COEFFICIENT_QUALIFIED = new BigDecimal("1.0000"); private static final BigDecimal ASSESSMENT_COEFFICIENT_NEEDS_IMPROVEMENT = new BigDecimal("0.9500"); + private static final BigDecimal VAT_INCLUDED_DIVISOR = new BigDecimal("1.06"); @Resource private ProjectMapper projectMapper; @@ -166,7 +167,6 @@ public class ProjectProfitServiceImpl implements ProjectProfitService { private ProjectProfitRespVO buildProjectProfit(ProjectDO project, List planningList) { List safePlanningList = planningList == null ? Collections.emptyList() : planningList; - BigDecimal projectBudgetOutputValue = ZERO_AMOUNT; BigDecimal comprehensivePlanningAmount = ZERO_AMOUNT; BigDecimal specialSubcontractPlanningAmount = ZERO_AMOUNT; BigDecimal sourceCoopSubcontractPlanningAmount = ZERO_AMOUNT; @@ -176,7 +176,6 @@ public class ProjectProfitServiceImpl implements ProjectProfitService { for (ProjectPlanningDO planning : safePlanningList) { BigDecimal planningBudgetOutputValue = amount(planning.getProjectBudgetOutputValue()); - projectBudgetOutputValue = projectBudgetOutputValue.add(planningBudgetOutputValue); if (ProjectPlanningBizTypeConstants.isComprehensive(planning.getOwnershipType())) { comprehensivePlanningAmount = comprehensivePlanningAmount.add(planningBudgetOutputValue); continue; @@ -200,12 +199,11 @@ public class ProjectProfitServiceImpl implements ProjectProfitService { } BigDecimal contractAmount = amount(project.getContractAmount()); + BigDecimal contractAmountWithoutVat = taxExcludedAmount(contractAmount); BigDecimal finalSettlementAmount = amount(project.getFinalSettlementAmount()); BigDecimal effectiveContractSettlementAmount = finalSettlementAmount.compareTo(BigDecimal.ZERO) > 0 ? finalSettlementAmount : contractAmount; - BigDecimal taxExcludedSettlementAmount = effectiveContractSettlementAmount.compareTo(BigDecimal.ZERO) == 0 - ? ZERO_AMOUNT - : effectiveContractSettlementAmount.divide(new BigDecimal("1.06"), 2, RoundingMode.HALF_UP); + BigDecimal taxExcludedSettlementAmount = taxExcludedAmount(effectiveContractSettlementAmount); BigDecimal innovationOutputRate = project.getInnovationOutputRate() == null ? DEFAULT_INNOVATION_OUTPUT_RATE : ratio(project.getInnovationOutputRate()); BigDecimal innovationOutputValue = contractAmount.compareTo(BigDecimal.ZERO) <= 0 @@ -233,8 +231,8 @@ public class ProjectProfitServiceImpl implements ProjectProfitService { respVO.setContractSignedFlag(project.getContractSignedFlag()); respVO.setContractAmount(contractAmount); respVO.setFinalSettlementAmount(finalSettlementAmount); - // 历史字段名沿用 effectiveSettlementAmount,当前业务含义为“项目预算产值总计”。 - respVO.setEffectiveSettlementAmount(projectBudgetOutputValue.setScale(2, RoundingMode.HALF_UP)); + // 历史字段名沿用 effectiveSettlementAmount,当前业务含义为“合同产值(不含增值税)”。 + respVO.setEffectiveSettlementAmount(contractAmountWithoutVat); respVO.setComprehensivePlanningAmount(comprehensivePlanningAmount.setScale(2, RoundingMode.HALF_UP)); respVO.setSubcontractPlanningAmount(subcontractPlanningAmount.setScale(2, RoundingMode.HALF_UP)); respVO.setSpecialSubcontractPlanningAmount(specialSubcontractPlanningAmount.setScale(2, RoundingMode.HALF_UP)); @@ -330,6 +328,14 @@ public class ProjectProfitServiceImpl implements ProjectProfitService { return value == null ? ZERO_RATIO : value.setScale(4, RoundingMode.HALF_UP); } + private BigDecimal taxExcludedAmount(BigDecimal amount) { + BigDecimal value = amount(amount); + if (value.compareTo(BigDecimal.ZERO) == 0) { + return ZERO_AMOUNT; + } + return value.divide(VAT_INCLUDED_DIVISOR, 2, RoundingMode.HALF_UP); + } + private BigDecimal getAssessmentCoefficient(String assessmentResult) { if ("优秀".equals(assessmentResult)) { return ASSESSMENT_COEFFICIENT_EXCELLENT;