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

This commit is contained in:
YunaiV 2024-02-07 10:34:23 +08:00
parent f6d3290426
commit 3479ef8123
2 changed files with 23 additions and 2 deletions

View File

@ -13,6 +13,11 @@ import java.math.RoundingMode;
*/ */
public class MoneyUtils { public class MoneyUtils {
/**
* 金额的小数位数
*/
private static final int PRICE_SCALE = 2;
/** /**
* 计算百分比金额四舍五入 * 计算百分比金额四舍五入
* *
@ -86,4 +91,20 @@ public class MoneyUtils {
return new Money(0, fen).toString(); return new Money(0, fen).toString();
} }
/**
* 金额相乘默认进行四舍五入
*
* 位数{@link #PRICE_SCALE}
*
* @param price 金额
* @param count 数量
* @return 金额相乘结果
*/
public static BigDecimal priceMultiply(BigDecimal price, BigDecimal count) {
if (price == null || count == null) {
return null;
}
return price.multiply(count).setScale(PRICE_SCALE, RoundingMode.HALF_UP);
}
} }

View File

@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.erp.service.stock;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.number.NumberUtils; import cn.iocoder.yudao.framework.common.util.number.MoneyUtils;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInPageReqVO; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInPageReqVO;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInSaveReqVO; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInSaveReqVO;
@ -130,7 +130,7 @@ public class ErpStockInServiceImpl implements ErpStockInService {
// 2. 转化为 ErpStockInItemDO 列表 // 2. 转化为 ErpStockInItemDO 列表
return convertList(list, o -> BeanUtils.toBean(o, ErpStockInItemDO.class, item -> item return convertList(list, o -> BeanUtils.toBean(o, ErpStockInItemDO.class, item -> item
.setProductUnitId(productMap.get(item.getProductId()).getUnitId()) .setProductUnitId(productMap.get(item.getProductId()).getUnitId())
.setTotalPrice(NumberUtils.mul(item.getProductPrice(), item.getCount())))); .setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount()))));
} }
private void updateStockInItemList(Long id, List<ErpStockInItemDO> newList) { private void updateStockInItemList(Long id, List<ErpStockInItemDO> newList) {