|
@@ -304,33 +304,33 @@ public class ComMetalFinanceItemServiceImpl extends ServiceImpl<ComMetalFinanceI
|
|
|
|
|
|
// 金属损失金额=金属价格/1.13/1000*报废损失率*最终重量
|
|
|
BigDecimal metalpriceloss = (metalProductDto.getMetakprice()
|
|
|
- .divide(new BigDecimal("1.13"),4,RoundingMode.HALF_UP)
|
|
|
- .divide(new BigDecimal("1000"),4,RoundingMode.HALF_UP)
|
|
|
- .multiply(metalProductDto.getLossrate().divide(new BigDecimal("100.00"),2,RoundingMode.HALF_UP))
|
|
|
- .multiply(requestVo.getFinalweight())).setScale(2, RoundingMode.HALF_UP);
|
|
|
+ .divide(new BigDecimal("1.13"),6,RoundingMode.HALF_UP)
|
|
|
+ .divide(new BigDecimal("1000"),6,RoundingMode.HALF_UP)
|
|
|
+ .multiply(metalProductDto.getLossrate().divide(new BigDecimal("100.00"),6,RoundingMode.HALF_UP))
|
|
|
+ .multiply(requestVo.getFinalweight())).setScale(6, RoundingMode.HALF_UP);
|
|
|
|
|
|
// 运费损失=运费单价*2/1.09/1000*最终重量
|
|
|
BigDecimal freightloss = (cmfrItemDo.getFreightunitprice()
|
|
|
.multiply(new BigDecimal("2"))
|
|
|
- .divide(new BigDecimal("1.09"),4, RoundingMode.HALF_UP)
|
|
|
- .divide(new BigDecimal("1000"), 4,RoundingMode.HALF_UP)
|
|
|
- .multiply(requestVo.getFinalweight())).setScale(2,RoundingMode.HALF_UP);
|
|
|
+ .divide(new BigDecimal("1.09"),6, RoundingMode.HALF_UP)
|
|
|
+ .divide(new BigDecimal("1000"), 6,RoundingMode.HALF_UP)
|
|
|
+ .multiply(requestVo.getFinalweight())).setScale(6,RoundingMode.HALF_UP);
|
|
|
|
|
|
// 计算合计 (人民币)=加工收入单价/1.13*最终重量+加工成本单价*最终重量+金属损失金额+运费损失
|
|
|
BigDecimal totalcostrmb = (cmfrItemDo.getProcessunitprice()
|
|
|
- .divide(new BigDecimal("1.13"),4, RoundingMode.HALF_UP)
|
|
|
+ .divide(new BigDecimal("1.13"),6, RoundingMode.HALF_UP)
|
|
|
.multiply(requestVo.getFinalweight())
|
|
|
.add(cmfrItemDo.getCostunitprice().multiply(requestVo.getFinalweight()))
|
|
|
.add(metalpriceloss)
|
|
|
- .add(freightloss)).setScale(2,RoundingMode.HALF_UP);
|
|
|
+ .add(freightloss)).setScale(6,RoundingMode.HALF_UP);
|
|
|
|
|
|
//计算合计美元 = 计算合计(人民币)/外汇税率
|
|
|
- BigDecimal pricetotalusd = totalcostrmb.divide(cmfrItemDo.getExchangerate(), 2, RoundingMode.HALF_UP);
|
|
|
+ BigDecimal pricetotalusd = totalcostrmb.divide(cmfrItemDo.getExchangerate(), 6, RoundingMode.HALF_UP);
|
|
|
|
|
|
//单kg损失金额(美元) = 计算合计美元 / 最终重量
|
|
|
- BigDecimal unitkgpricelossusd = pricetotalusd.divide(requestVo.getFinalweight(),2, RoundingMode.HALF_UP);
|
|
|
+ BigDecimal unitkgpricelossusd = pricetotalusd.divide(requestVo.getFinalweight(),6, RoundingMode.HALF_UP);
|
|
|
|
|
|
- BigDecimal othercostusd = cmfrItemDo.getOthercostrmb().divide(cmfrItemDo.getExchangerate(), 2, RoundingMode.HALF_UP);
|
|
|
+ BigDecimal othercostusd = cmfrItemDo.getOthercostrmb().divide(cmfrItemDo.getExchangerate(), 6, RoundingMode.HALF_UP);
|
|
|
|
|
|
// 赋值
|
|
|
cmfrItemDo.setMetalpriceloss(metalpriceloss);
|