|
@@ -232,6 +232,7 @@ public class ContractMaterialAdjustServiceImpl extends BaseServiceImpl<ContractM
|
|
|
* 生成材料调差计算式
|
|
|
*/
|
|
|
private void buildCalculation(ContractMaterialAdjustAddDTO dto,BigDecimal adjustTotal,ContractMaterialAdjust adjust){
|
|
|
+ adjust.setAdjustTotal(adjustTotal);
|
|
|
//获取材料信息,用于调差范围
|
|
|
ContractMaterial material= baseMapper.getMaterialInfo(dto.getContractMaterialId());
|
|
|
if (material == null){
|
|
@@ -243,22 +244,28 @@ public class ContractMaterialAdjustServiceImpl extends BaseServiceImpl<ContractM
|
|
|
StringBuilder str = new StringBuilder("调差价格依据于:"+dto.getMaterialName()+
|
|
|
"("+validity.getStartDate().format(DateTimeFormatter.ofPattern("yyyyMMdd"))+"至"+
|
|
|
validity.getEndDate().format(DateTimeFormatter.ofPattern("yyyyMMdd"))+")\n");
|
|
|
+ /** 如果价差幅度小于调差限额,则调差金额为0*/
|
|
|
+ if (dto.getRangePriceRatio().abs().compareTo(material.getQuotaRatio()) < 0){
|
|
|
+ String st = "调差公式(标准):调差金额=0,"+dto.getRangePriceRatio()+"% <= ±"+material.getQuotaRatio()+"%";
|
|
|
+ adjust.setAdjustMoney(BigDecimal.ZERO);
|
|
|
+ adjust.setAdjustCalculation(st);
|
|
|
+ return ;
|
|
|
+ }
|
|
|
BigDecimal adjustMoney = BigDecimal.ZERO;
|
|
|
BigDecimal price = dto.getMaterialPrice();
|
|
|
BigDecimal currentPrice = dto.getCurrentPrice();
|
|
|
if (price.compareTo(currentPrice) == 1){
|
|
|
//市场价低于基准价
|
|
|
adjustMoney = adjustTotal.multiply(currentPrice.subtract((price.multiply(new BigDecimal(1).subtract(material.getQuotaRatio().multiply(new BigDecimal("0.01"))))))).multiply(new BigDecimal("1.09")).setScale(2, RoundingMode.HALF_UP);
|
|
|
- str.append("调差公式(标准):调增金额=调差数量×[市场价-基准价×(1-风险幅度差%)]×(1+合同增值税税率)\n");
|
|
|
+ str.append("调差公式(标准):调增金额=调差数量×[市场价-基准价×(1-风险幅度差%)]×(1+合同增值税税率)\n");
|
|
|
str.append("调差公式(计算):"+adjustMoney+"="+adjustTotal+"*["+currentPrice+"-"+price+"*(1-"+material.getQuotaRatio()+"%)]*(1+9.0/100)");
|
|
|
}else {
|
|
|
//市场价高于基准价
|
|
|
adjustMoney = adjustTotal.multiply(currentPrice.subtract((price.multiply(new BigDecimal(1).add(material.getQuotaRatio().multiply(new BigDecimal("0.01"))))))).multiply(new BigDecimal("1.09")).setScale(2, RoundingMode.HALF_UP);
|
|
|
- str.append("调差公式(标准):调增金额=调差数量×[市场价-基准价×(1+风险幅度差%)]×(1+合同增值税税率)\n");
|
|
|
+ str.append("调差公式(标准):调增金额=调差数量×[市场价-基准价×(1+风险幅度差%)]×(1+合同增值税税率)\n");
|
|
|
str.append("调差公式(计算):"+adjustMoney+"="+adjustTotal+"*["+currentPrice+"-"+price+"*(1+"+material.getQuotaRatio()+"%)]*(1+9.0/100)");
|
|
|
}
|
|
|
- adjust.setAdjustMoney(adjustMoney);
|
|
|
- adjust.setAdjustTotal(adjustTotal);
|
|
|
+ adjust.setAdjustMoney(adjustMoney.setScale(0,RoundingMode.HALF_UP));
|
|
|
adjust.setAdjustCalculation(str.toString());
|
|
|
}
|
|
|
}
|