项目成本测算总合约规划预算产值修改成合同产值(不含增值税)
This commit is contained in:
@@ -28,7 +28,7 @@ public class ProjectProfitRespVO {
|
||||
@Schema(description = "结算合同总产值")
|
||||
private BigDecimal finalSettlementAmount;
|
||||
|
||||
@Schema(description = "项目预算产值总计,项目下所有合约规划的项目预算产值合计")
|
||||
@Schema(description = "合同产值(不含增值税),合同总产值 / 1.06")
|
||||
private BigDecimal effectiveSettlementAmount;
|
||||
|
||||
@Schema(description = "综合所人工成本")
|
||||
|
||||
@@ -37,7 +37,7 @@ public class ProjectProfitSnapshotRespVO {
|
||||
@Schema(description = "结算合同总产值")
|
||||
private BigDecimal finalSettlementAmount;
|
||||
|
||||
@Schema(description = "项目预算产值总计,项目下所有合约规划的项目预算产值合计")
|
||||
@Schema(description = "合同产值(不含增值税),合同总产值 / 1.06")
|
||||
private BigDecimal effectiveSettlementAmount;
|
||||
|
||||
@Schema(description = "综合所人工成本")
|
||||
|
||||
@@ -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<ProjectPlanningDO> planningList) {
|
||||
List<ProjectPlanningDO> 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;
|
||||
|
||||
Reference in New Issue
Block a user