Jelajahi Sumber

feature 解决精度问题

xiahan 1 tahun lalu
induk
melakukan
4e0b5cb6da

+ 6 - 6
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ComMetalFinanceItemServiceImpl.java

@@ -304,21 +304,21 @@ public class ComMetalFinanceItemServiceImpl extends ServiceImpl<ComMetalFinanceI
 
         // 金属损失金额=金属价格/1.13/1000*报废损失率*最终重量
         BigDecimal metalpriceloss = (metalProductDto.getMetakprice()
-                .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))
+                .divide(new BigDecimal("1.13"),12,RoundingMode.HALF_UP)
+                .divide(new BigDecimal("1000"),12,RoundingMode.HALF_UP)
+                .multiply(metalProductDto.getLossrate().divide(new BigDecimal("100.00"),12,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"),6, RoundingMode.HALF_UP)
-                .divide(new BigDecimal("1000"), 6,RoundingMode.HALF_UP)
+                .divide(new BigDecimal("1.09"),12, RoundingMode.HALF_UP)
+                .divide(new BigDecimal("1000"), 12,RoundingMode.HALF_UP)
                 .multiply(requestVo.getFinalweight())).setScale(6,RoundingMode.HALF_UP);
 
         // 计算合计 (人民币)=加工收入单价/1.13*最终重量+加工成本单价*最终重量+金属损失金额+运费损失
         BigDecimal totalcostrmb = (cmfrItemDo.getProcessunitprice()
-                .divide(new BigDecimal("1.13"),6, RoundingMode.HALF_UP)
+                .divide(new BigDecimal("1.13"),12, RoundingMode.HALF_UP)
                 .multiply(requestVo.getFinalweight())
                 .add(cmfrItemDo.getCostunitprice().multiply(requestVo.getFinalweight()))
                 .add(metalpriceloss)

+ 4 - 4
business-entity/src/main/java/com/bsentity/vo/FinanceItemVo.java

@@ -148,15 +148,15 @@ public class FinanceItemVo implements Serializable {
 
         // 计算金属损失金额
         this.metalPriceLoss = (this.metalPrice
-                                .divide(new BigDecimal("1.13"),6,RoundingMode.HALF_UP)
-                                .divide(new BigDecimal("1000.0"),6,RoundingMode.HALF_UP)
-                                .multiply(this.lossRate.divide(new BigDecimal("100.0"),6,RoundingMode.HALF_UP))
+                                .divide(new BigDecimal("1.13"),12,RoundingMode.HALF_UP)
+                                .divide(new BigDecimal("1000.0"),12,RoundingMode.HALF_UP)
+                                .multiply(this.lossRate.divide(new BigDecimal("100.0"),12,RoundingMode.HALF_UP))
                                 .multiply(this.comWeight)
                               ).setScale(6,RoundingMode.HALF_UP);
 
         // 计算合计(人民币) = 加工收入单价/1.13*投诉重量+加工成本单价*投诉重量+金属损失金额+运费损失;
         this.totalcostrmb = (this.processUnitPrice
-                                .divide(new BigDecimal("1.13"),6 , RoundingMode.HALF_UP)
+                                .divide(new BigDecimal("1.13"),12 , RoundingMode.HALF_UP)
                                 .multiply(this.comWeight)
                                 .add(this.costUnitPrice.multiply(this.comWeight))
                                 .add(this.metalPriceLoss)