项目成本测算总合约规划预算产值修改成合同产值(不含增值税)
This commit is contained in:
@@ -28,7 +28,7 @@ public class ProjectProfitRespVO {
|
|||||||
@Schema(description = "结算合同总产值")
|
@Schema(description = "结算合同总产值")
|
||||||
private BigDecimal finalSettlementAmount;
|
private BigDecimal finalSettlementAmount;
|
||||||
|
|
||||||
@Schema(description = "项目预算产值总计,项目下所有合约规划的项目预算产值合计")
|
@Schema(description = "合同产值(不含增值税),合同总产值 / 1.06")
|
||||||
private BigDecimal effectiveSettlementAmount;
|
private BigDecimal effectiveSettlementAmount;
|
||||||
|
|
||||||
@Schema(description = "综合所人工成本")
|
@Schema(description = "综合所人工成本")
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ public class ProjectProfitSnapshotRespVO {
|
|||||||
@Schema(description = "结算合同总产值")
|
@Schema(description = "结算合同总产值")
|
||||||
private BigDecimal finalSettlementAmount;
|
private BigDecimal finalSettlementAmount;
|
||||||
|
|
||||||
@Schema(description = "项目预算产值总计,项目下所有合约规划的项目预算产值合计")
|
@Schema(description = "合同产值(不含增值税),合同总产值 / 1.06")
|
||||||
private BigDecimal effectiveSettlementAmount;
|
private BigDecimal effectiveSettlementAmount;
|
||||||
|
|
||||||
@Schema(description = "综合所人工成本")
|
@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_EXCELLENT = new BigDecimal("1.0200");
|
||||||
private static final BigDecimal ASSESSMENT_COEFFICIENT_QUALIFIED = new BigDecimal("1.0000");
|
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 ASSESSMENT_COEFFICIENT_NEEDS_IMPROVEMENT = new BigDecimal("0.9500");
|
||||||
|
private static final BigDecimal VAT_INCLUDED_DIVISOR = new BigDecimal("1.06");
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private ProjectMapper projectMapper;
|
private ProjectMapper projectMapper;
|
||||||
@@ -166,7 +167,6 @@ public class ProjectProfitServiceImpl implements ProjectProfitService {
|
|||||||
|
|
||||||
private ProjectProfitRespVO buildProjectProfit(ProjectDO project, List<ProjectPlanningDO> planningList) {
|
private ProjectProfitRespVO buildProjectProfit(ProjectDO project, List<ProjectPlanningDO> planningList) {
|
||||||
List<ProjectPlanningDO> safePlanningList = planningList == null ? Collections.emptyList() : planningList;
|
List<ProjectPlanningDO> safePlanningList = planningList == null ? Collections.emptyList() : planningList;
|
||||||
BigDecimal projectBudgetOutputValue = ZERO_AMOUNT;
|
|
||||||
BigDecimal comprehensivePlanningAmount = ZERO_AMOUNT;
|
BigDecimal comprehensivePlanningAmount = ZERO_AMOUNT;
|
||||||
BigDecimal specialSubcontractPlanningAmount = ZERO_AMOUNT;
|
BigDecimal specialSubcontractPlanningAmount = ZERO_AMOUNT;
|
||||||
BigDecimal sourceCoopSubcontractPlanningAmount = ZERO_AMOUNT;
|
BigDecimal sourceCoopSubcontractPlanningAmount = ZERO_AMOUNT;
|
||||||
@@ -176,7 +176,6 @@ public class ProjectProfitServiceImpl implements ProjectProfitService {
|
|||||||
|
|
||||||
for (ProjectPlanningDO planning : safePlanningList) {
|
for (ProjectPlanningDO planning : safePlanningList) {
|
||||||
BigDecimal planningBudgetOutputValue = amount(planning.getProjectBudgetOutputValue());
|
BigDecimal planningBudgetOutputValue = amount(planning.getProjectBudgetOutputValue());
|
||||||
projectBudgetOutputValue = projectBudgetOutputValue.add(planningBudgetOutputValue);
|
|
||||||
if (ProjectPlanningBizTypeConstants.isComprehensive(planning.getOwnershipType())) {
|
if (ProjectPlanningBizTypeConstants.isComprehensive(planning.getOwnershipType())) {
|
||||||
comprehensivePlanningAmount = comprehensivePlanningAmount.add(planningBudgetOutputValue);
|
comprehensivePlanningAmount = comprehensivePlanningAmount.add(planningBudgetOutputValue);
|
||||||
continue;
|
continue;
|
||||||
@@ -200,12 +199,11 @@ public class ProjectProfitServiceImpl implements ProjectProfitService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
BigDecimal contractAmount = amount(project.getContractAmount());
|
BigDecimal contractAmount = amount(project.getContractAmount());
|
||||||
|
BigDecimal contractAmountWithoutVat = taxExcludedAmount(contractAmount);
|
||||||
BigDecimal finalSettlementAmount = amount(project.getFinalSettlementAmount());
|
BigDecimal finalSettlementAmount = amount(project.getFinalSettlementAmount());
|
||||||
BigDecimal effectiveContractSettlementAmount = finalSettlementAmount.compareTo(BigDecimal.ZERO) > 0
|
BigDecimal effectiveContractSettlementAmount = finalSettlementAmount.compareTo(BigDecimal.ZERO) > 0
|
||||||
? finalSettlementAmount : contractAmount;
|
? finalSettlementAmount : contractAmount;
|
||||||
BigDecimal taxExcludedSettlementAmount = effectiveContractSettlementAmount.compareTo(BigDecimal.ZERO) == 0
|
BigDecimal taxExcludedSettlementAmount = taxExcludedAmount(effectiveContractSettlementAmount);
|
||||||
? ZERO_AMOUNT
|
|
||||||
: effectiveContractSettlementAmount.divide(new BigDecimal("1.06"), 2, RoundingMode.HALF_UP);
|
|
||||||
BigDecimal innovationOutputRate = project.getInnovationOutputRate() == null
|
BigDecimal innovationOutputRate = project.getInnovationOutputRate() == null
|
||||||
? DEFAULT_INNOVATION_OUTPUT_RATE : ratio(project.getInnovationOutputRate());
|
? DEFAULT_INNOVATION_OUTPUT_RATE : ratio(project.getInnovationOutputRate());
|
||||||
BigDecimal innovationOutputValue = contractAmount.compareTo(BigDecimal.ZERO) <= 0
|
BigDecimal innovationOutputValue = contractAmount.compareTo(BigDecimal.ZERO) <= 0
|
||||||
@@ -233,8 +231,8 @@ public class ProjectProfitServiceImpl implements ProjectProfitService {
|
|||||||
respVO.setContractSignedFlag(project.getContractSignedFlag());
|
respVO.setContractSignedFlag(project.getContractSignedFlag());
|
||||||
respVO.setContractAmount(contractAmount);
|
respVO.setContractAmount(contractAmount);
|
||||||
respVO.setFinalSettlementAmount(finalSettlementAmount);
|
respVO.setFinalSettlementAmount(finalSettlementAmount);
|
||||||
// 历史字段名沿用 effectiveSettlementAmount,当前业务含义为“项目预算产值总计”。
|
// 历史字段名沿用 effectiveSettlementAmount,当前业务含义为“合同产值(不含增值税)”。
|
||||||
respVO.setEffectiveSettlementAmount(projectBudgetOutputValue.setScale(2, RoundingMode.HALF_UP));
|
respVO.setEffectiveSettlementAmount(contractAmountWithoutVat);
|
||||||
respVO.setComprehensivePlanningAmount(comprehensivePlanningAmount.setScale(2, RoundingMode.HALF_UP));
|
respVO.setComprehensivePlanningAmount(comprehensivePlanningAmount.setScale(2, RoundingMode.HALF_UP));
|
||||||
respVO.setSubcontractPlanningAmount(subcontractPlanningAmount.setScale(2, RoundingMode.HALF_UP));
|
respVO.setSubcontractPlanningAmount(subcontractPlanningAmount.setScale(2, RoundingMode.HALF_UP));
|
||||||
respVO.setSpecialSubcontractPlanningAmount(specialSubcontractPlanningAmount.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);
|
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) {
|
private BigDecimal getAssessmentCoefficient(String assessmentResult) {
|
||||||
if ("优秀".equals(assessmentResult)) {
|
if ("优秀".equals(assessmentResult)) {
|
||||||
return ASSESSMENT_COEFFICIENT_EXCELLENT;
|
return ASSESSMENT_COEFFICIENT_EXCELLENT;
|
||||||
|
|||||||
Reference in New Issue
Block a user