Commit 3479ef81234da086d606989ddcdec1e796a65ca2

Authored by YunaiV
1 parent f6d32904

✨ ERP:增加金额计算的四舍五入

yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/number/MoneyUtils.java
@@ -14,6 +14,11 @@ import java.math.RoundingMode; @@ -14,6 +14,11 @@ import java.math.RoundingMode;
14 public class MoneyUtils { 14 public class MoneyUtils {
15 15
16 /** 16 /**
  17 + * 金额的小数位数
  18 + */
  19 + private static final int PRICE_SCALE = 2;
  20 +
  21 + /**
17 * 计算百分比金额,四舍五入 22 * 计算百分比金额,四舍五入
18 * 23 *
19 * @param price 金额 24 * @param price 金额
@@ -86,4 +91,20 @@ public class MoneyUtils { @@ -86,4 +91,20 @@ public class MoneyUtils {
86 return new Money(0, fen).toString(); 91 return new Money(0, fen).toString();
87 } 92 }
88 93
  94 + /**
  95 + * 金额相乘,默认进行四舍五入
  96 + *
  97 + * 位数:{@link #PRICE_SCALE}
  98 + *
  99 + * @param price 金额
  100 + * @param count 数量
  101 + * @return 金额相乘结果
  102 + */
  103 + public static BigDecimal priceMultiply(BigDecimal price, BigDecimal count) {
  104 + if (price == null || count == null) {
  105 + return null;
  106 + }
  107 + return price.multiply(count).setScale(PRICE_SCALE, RoundingMode.HALF_UP);
  108 + }
  109 +
89 } 110 }
yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockInServiceImpl.java
@@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.erp.service.stock; @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.erp.service.stock;
2 2
3 import cn.hutool.core.collection.CollUtil; 3 import cn.hutool.core.collection.CollUtil;
4 import cn.iocoder.yudao.framework.common.pojo.PageResult; 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 -import cn.iocoder.yudao.framework.common.util.number.NumberUtils; 5 +import cn.iocoder.yudao.framework.common.util.number.MoneyUtils;
6 import cn.iocoder.yudao.framework.common.util.object.BeanUtils; 6 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
7 import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInPageReqVO; 7 import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInPageReqVO;
8 import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInSaveReqVO; 8 import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInSaveReqVO;
@@ -130,7 +130,7 @@ public class ErpStockInServiceImpl implements ErpStockInService { @@ -130,7 +130,7 @@ public class ErpStockInServiceImpl implements ErpStockInService {
130 // 2. 转化为 ErpStockInItemDO 列表 130 // 2. 转化为 ErpStockInItemDO 列表
131 return convertList(list, o -> BeanUtils.toBean(o, ErpStockInItemDO.class, item -> item 131 return convertList(list, o -> BeanUtils.toBean(o, ErpStockInItemDO.class, item -> item
132 .setProductUnitId(productMap.get(item.getProductId()).getUnitId()) 132 .setProductUnitId(productMap.get(item.getProductId()).getUnitId())
133 - .setTotalPrice(NumberUtils.mul(item.getProductPrice(), item.getCount())))); 133 + .setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount()))));
134 } 134 }
135 135
136 private void updateStockInItemList(Long id, List<ErpStockInItemDO> newList) { 136 private void updateStockInItemList(Long id, List<ErpStockInItemDO> newList) {