diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockMoveController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockMoveController.java index e69706e1e..5083c861f 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockMoveController.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockMoveController.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.erp.controller.admin.stock; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageParam; @@ -259,8 +260,17 @@ public class ErpStockMoveController { private void fillStockMoveItem(ErpStockMoveRespVO.Item item, Map productMap, Map warehouseMap, Map areaMap, Map stockMap) { - MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName()) - .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName())); + MapUtils.findAndThen(productMap, item.getProductId(), product -> { + if (StrUtil.isBlank(item.getProductName())) { + item.setProductName(product.getName()); + } + if (StrUtil.isBlank(item.getProductBarCode())) { + item.setProductBarCode(product.getBarCode()); + } + if (StrUtil.isBlank(item.getProductUnitName())) { + item.setProductUnitName(product.getUnitName()); + } + }); MapUtils.findAndThen(warehouseMap, item.getFromWarehouseId(), warehouse -> item.setFromWarehouseName(warehouse.getName())); MapUtils.findAndThen(warehouseMap, item.getToWarehouseId(), warehouse -> item.setToWarehouseName(warehouse.getName())); MapUtils.findAndThen(areaMap, item.getFromAreaId(), area -> item.setFromAreaName(area.getAreaName())); diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockMoveItemDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockMoveItemDO.java index 5dcbc8f26..94ae70ea7 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockMoveItemDO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockMoveItemDO.java @@ -57,6 +57,18 @@ public class ErpStockMoveItemDO extends BaseDO { * 关联 {@link ErpProductDO#getId()} */ private Long productId; + /** + * 产品名称快照 + */ + private String productName; + /** + * 产品条码快照 + */ + private String productBarCode; + /** + * 产品单位名称快照 + */ + private String productUnitName; /** * 产品单位编号 * diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockMoveServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockMoveServiceImpl.java index 705428efb..c89e49bd5 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockMoveServiceImpl.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockMoveServiceImpl.java @@ -267,11 +267,16 @@ public class ErpStockMoveServiceImpl implements ErpStockMoveService { Map areaMap = warehouseAreaService.getWarehouseAreaMap(convertSetByFlatMap(list, item -> Stream.of(item.getFromAreaId(), item.getToAreaId()))); // 2. 转化为 ErpStockMoveItemDO 列表 - return convertList(list, o -> BeanUtils.toBean(o, ErpStockMoveItemDO.class, item -> item - .setProductUnitId(productMap.get(item.getProductId()).getUnitId()) - .setFromAreaName(validateMoveArea(item.getFromWarehouseId(), item.getFromAreaId(), areaMap).getAreaName()) - .setToAreaName(validateMoveArea(item.getToWarehouseId(), item.getToAreaId(), areaMap).getAreaName()) - .setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount())))); + return convertList(list, o -> BeanUtils.toBean(o, ErpStockMoveItemDO.class, item -> { + ErpProductDO product = productMap.get(item.getProductId()); + item.setProductUnitId(product.getUnitId()) + .setProductName(product.getName()) + .setProductBarCode(product.getBarCode()) + .setProductUnitName(product.getUnitName()) + .setFromAreaName(validateMoveArea(item.getFromWarehouseId(), item.getFromAreaId(), areaMap).getAreaName()) + .setToAreaName(validateMoveArea(item.getToWarehouseId(), item.getToAreaId(), areaMap).getAreaName()) + .setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount())); + })); } private WarehouseAreaDO validateMoveArea(Long warehouseId, Long areaId, Map areaMap) {