Pārlūkot izejas kodu

feature 金额保留6位小数

xiahan 1 gadu atpakaļ
vecāks
revīzija
612e326f41

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

@@ -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);

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

@@ -148,20 +148,20 @@ public class FinanceItemVo implements Serializable {
 
         // 计算金属损失金额
         this.metalPriceLoss = (this.metalPrice
-                                .divide(new BigDecimal("1.13"),4,RoundingMode.HALF_UP)
-                                .divide(new BigDecimal("1000.0"),4,RoundingMode.HALF_UP)
-                                .multiply(this.lossRate.divide(new BigDecimal("100.0"),2,RoundingMode.HALF_UP))
+                                .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))
                                 .multiply(this.comWeight)
-                              ).setScale(2,RoundingMode.HALF_UP);
+                              ).setScale(6,RoundingMode.HALF_UP);
 
         // 计算合计(人民币) = 加工收入单价/1.13*投诉重量+加工成本单价*投诉重量+金属损失金额+运费损失;
         this.totalcostrmb = (this.processUnitPrice
-                                .divide(new BigDecimal("1.13"),4 , RoundingMode.HALF_UP)
+                                .divide(new BigDecimal("1.13"),6 , RoundingMode.HALF_UP)
                                 .multiply(this.comWeight)
                                 .add(this.costUnitPrice.multiply(this.comWeight))
                                 .add(this.metalPriceLoss)
                                 .add(this.freightLoss)
-                            ).setScale(2,RoundingMode.HALF_UP);
+                            ).setScale(6,RoundingMode.HALF_UP);
 
         // 其他费用(美元) = 其他费用(人民币)/外汇税率
         if (this.exchangeRate.compareTo(BigDecimal.ZERO) == 0){
@@ -169,16 +169,16 @@ public class FinanceItemVo implements Serializable {
             this.othercostusd = BigDecimal.ZERO;
         }else {
             // 计算合计(美元) = 计算合计(人民币)/外汇税率;
-            this.pricetotalusd = this.totalcostrmb.divide(this.exchangeRate , 2 ,RoundingMode.HALF_UP);
+            this.pricetotalusd = this.totalcostrmb.divide(this.exchangeRate , 6 ,RoundingMode.HALF_UP);
             // 其他费用(美元) = 其他费用(人民币)/外汇税率
-            this.othercostusd = this.otherCostRMB.divide(this.exchangeRate ,2 ,RoundingMode.HALF_UP);
+            this.othercostusd = this.otherCostRMB.divide(this.exchangeRate ,6 ,RoundingMode.HALF_UP);
         }
 
         if (this.comWeight.compareTo(BigDecimal.ZERO) == 0) {
             this.unitkgpricelossusd = BigDecimal.ZERO;
         }else {
             //单kg损失金额(美元) = 计算合计美元 / 最终重量
-            this.unitkgpricelossusd = this.pricetotalusd.divide(this.comWeight,2,RoundingMode.HALF_UP);
+            this.unitkgpricelossusd = this.pricetotalusd.divide(this.comWeight,6,RoundingMode.HALF_UP);
         }
     }