diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockCheckController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockCheckController.java index 41ca08aab..68eddc4dc 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockCheckController.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockCheckController.java @@ -209,6 +209,8 @@ public class ErpStockCheckController { Map productMap = productService.getProductVOMap( convertSet(pageResult.getList(), ErpStockCheckItemDO::getProductId)); Map unitMap = productUnitService.getProductUnitMap(convertSet(productMap.values(), ErpProductRespVO::getUnitId)); + Map purchaseUnitMap = productUnitService.getProductUnitMap( + convertSet(productMap.values(), ErpProductRespVO::getPurchaseUnitId)); Map warehouseMap = warehouseService.getWarehouseMap( convertSet(pageResult.getList(), ErpStockCheckItemDO::getWarehouseId)); Map areaMap = warehouseAreaService.getWarehouseAreaMap( @@ -227,10 +229,16 @@ public class ErpStockCheckController { .setCreateTime(stockCheck.getCreateTime()); MapUtils.findAndThen(userMap, NumberUtils.parseLong(stockCheck.getCreator()), user -> record.setCreatorName(user.getNickname())); }); - MapUtils.findAndThen(productMap, record.getProductId(), product -> record.setProductName(product.getName()) - .setProductBarCode(product.getBarCode()).setCategoryName(product.getCategoryName())); - MapUtils.findAndThen(productMap, record.getProductId(), product -> - MapUtils.findAndThen(unitMap, product.getUnitId(), unit -> record.setProductUnitName(unit.getName()))); + MapUtils.findAndThen(productMap, record.getProductId(), product -> { + record.setProductName(product.getName()) + .setProductBarCode(product.getBarCode()).setCategoryName(product.getCategoryName()) + .setProductUnitId(product.getUnitId()) + .setPurchaseUnitId(product.getPurchaseUnitId()) + .setPurchaseUnitName(product.getPurchaseUnitName()) + .setPurchaseUnitConvertQuantity(product.getPurchaseUnitConvertQuantity()); + MapUtils.findAndThen(unitMap, product.getUnitId(), unit -> record.setProductUnitName(unit.getName())); + MapUtils.findAndThen(purchaseUnitMap, product.getPurchaseUnitId(), unit -> record.setPurchaseUnitName(unit.getName())); + }); MapUtils.findAndThen(warehouseMap, record.getWarehouseId(), warehouse -> record.setWarehouseName(warehouse.getName())); if (record.getAreaName() == null) { MapUtils.findAndThen(areaMap, record.getAreaId(), area -> record.setAreaName(area.getAreaName())); diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockController.java index a7b17f868..465f0b87e 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockController.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockController.java @@ -252,8 +252,7 @@ public class ErpStockController { return prefix + formatNumber(areaStock.getPackageCount()) + "包" + formatNumber(areaStock.getBaseCount()) + stock.getUnitName() + countDisplay; } - return prefix + formatNumber(areaStock.getPackageCount()) + nullToEmpty(stock.getPurchaseUnitName()) - + formatNumber(areaStock.getBaseCount()) + nullToEmpty(stock.getUnitName()) + countDisplay; + return prefix + buildPurchaseUnitDisplay(stock, areaStock.getCount()); } private void fillRecentRecordTime(ErpStockRespVO stock) { @@ -346,10 +345,11 @@ public class ErpStockController { } return "1托=" + formatNumber(stock.getPalletPackageQuantity()) + "包 1包=" + formatNumber(stock.getPackageQuantity()) + "个"; } - if (stock.getPurchaseUnitName() == null || stock.getPurchaseUnitConvertQuantity() == null) { + if (stock.getUnitName() == null || stock.getPurchaseUnitName() == null || stock.getPurchaseUnitConvertQuantity() == null) { return null; } - return "1" + stock.getPurchaseUnitName() + "=" + formatNumber(stock.getPurchaseUnitConvertQuantity()) + "个"; + return "1" + stock.getUnitName() + "=" + formatNumber(stock.getPurchaseUnitConvertQuantity()) + + stock.getPurchaseUnitName(); } private String buildStockDisplay(ErpStockRespVO stock) { @@ -367,14 +367,20 @@ public class ErpStockController { } if (stock.getPurchaseUnitConvertQuantity() == null || stock.getPurchaseUnitConvertQuantity().compareTo(BigDecimal.ZERO) <= 0 || stock.getPurchaseUnitName() == null || stock.getUnitName() == null) { - return formatNumber(stock.getCount()) + stock.getUnitName(); - } - BigDecimal purchaseCount = stock.getCount().divideToIntegralValue(stock.getPurchaseUnitConvertQuantity()); - BigDecimal unitCount = stock.getCount().remainder(stock.getPurchaseUnitConvertQuantity()); - StringBuilder display = new StringBuilder(); - appendQuantity(display, purchaseCount, stock.getPurchaseUnitName(), true); - appendQuantity(display, unitCount, stock.getUnitName(), false); - return display.length() > 0 ? display.toString() : formatNumber(stock.getCount()) + stock.getUnitName(); + return formatNumber(stock.getCount()) + nullToEmpty(stock.getPurchaseUnitName()); + } + return buildPurchaseUnitDisplay(stock, stock.getCount()); + } + + private String buildPurchaseUnitDisplay(ErpStockRespVO stock, BigDecimal count) { + if (stock.getPurchaseUnitConvertQuantity() == null || stock.getPurchaseUnitConvertQuantity().compareTo(BigDecimal.ZERO) <= 0 + || stock.getUnitName() == null || stock.getPurchaseUnitName() == null) { + return formatNumber(count) + nullToEmpty(stock.getPurchaseUnitName()); + } + BigDecimal unitCount = defaultZero(count).divideToIntegralValue(stock.getPurchaseUnitConvertQuantity()); + BigDecimal purchaseUnitCount = defaultZero(count).remainder(stock.getPurchaseUnitConvertQuantity()); + return formatNumber(unitCount) + stock.getUnitName() + + formatNumber(purchaseUnitCount) + stock.getPurchaseUnitName(); } private void appendQuantity(StringBuilder display, BigDecimal quantity, String unitName, boolean keepZero) { diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockRecordController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockRecordController.java index c21726fd1..199d65fa9 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockRecordController.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockRecordController.java @@ -114,7 +114,10 @@ public class ErpStockRecordController { stock.setBizDocType(resolveBizDocType(stock.getBizType(), stock.getBizId())); MapUtils.findAndThen(productMap, stock.getProductId(), product -> stock.setProductName(product.getName()) .setCategoryName(product.getCategoryName()).setUnitName(product.getUnitName()) - .setCategoryType(product.getCategoryType())); + .setCategoryType(product.getCategoryType()) + .setPurchaseUnitId(product.getPurchaseUnitId()) + .setPurchaseUnitName(product.getPurchaseUnitName()) + .setPurchaseUnitConvertQuantity(product.getPurchaseUnitConvertQuantity())); MapUtils.findAndThen(warehouseMap, stock.getWarehouseId(), warehouse -> stock.setWarehouseName(warehouse.getName())); if (stock.getAreaName() == null) { MapUtils.findAndThen(areaMap, stock.getAreaId(), area -> stock.setAreaName(area.getAreaName())); @@ -136,6 +139,9 @@ public class ErpStockRecordController { respVO.setCategoryName(product.getCategoryName()); respVO.setUnitName(product.getUnitName()); respVO.setCategoryType(product.getCategoryType()); + respVO.setPurchaseUnitId(product.getPurchaseUnitId()); + respVO.setPurchaseUnitName(product.getPurchaseUnitName()); + respVO.setPurchaseUnitConvertQuantity(product.getPurchaseUnitConvertQuantity()); } ErpWarehouseDO warehouse = warehouseService.getWarehouse(stockRecord.getWarehouseId()); if (warehouse != null) { diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/check/ErpStockCheckRecordRespVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/check/ErpStockCheckRecordRespVO.java index 870558151..84154f86e 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/check/ErpStockCheckRecordRespVO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/check/ErpStockCheckRecordRespVO.java @@ -68,10 +68,22 @@ public class ErpStockCheckRecordRespVO { @ExcelProperty("产品分类") private String categoryName; + @Schema(description = "产品单位编号", example = "8869") + private Long productUnitId; + @Schema(description = "产品单位名称", example = "个") @ExcelProperty("单位") private String productUnitName; + @Schema(description = "采购单位编号", example = "8890") + private Long purchaseUnitId; + + @Schema(description = "采购单位", example = "包") + private String purchaseUnitName; + + @Schema(description = "采购单位换算数量", example = "100") + private BigDecimal purchaseUnitConvertQuantity; + @Schema(description = "仓库编号", example = "3113") private Long warehouseId; diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/record/ErpStockRecordRespVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/record/ErpStockRecordRespVO.java index a916b8e1b..d2328e397 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/record/ErpStockRecordRespVO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/record/ErpStockRecordRespVO.java @@ -92,6 +92,15 @@ public class ErpStockRecordRespVO { @ExcelProperty("单位") private String unitName; + @Schema(description = "采购单位编号", example = "8890") + private Long purchaseUnitId; + + @Schema(description = "采购单位", example = "包") + private String purchaseUnitName; + + @Schema(description = "采购单位换算数量", example = "100") + private BigDecimal purchaseUnitConvertQuantity; + // ========== 仓库信息 ========== @Schema(description = "仓库名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductServiceImpl.java index 5c7a9e950..d0b503543 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductServiceImpl.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductServiceImpl.java @@ -680,10 +680,10 @@ public class ErpProductServiceImpl implements ErpProductService { MapUtils.findAndThen(unitMap, product.getUnitId(), unit -> product.setUnitName(unit.getName())); } - if (StrUtil.isBlank(product.getPurchaseUnitName())) { - MapUtils.findAndThen(purchaseUnitMap, product.getPurchaseUnitId(), - unit -> product.setPurchaseUnitName(unit.getName())); - } + MapUtils.findAndThen(purchaseUnitMap, product.getPurchaseUnitId(), unit -> { + product.setPurchaseUnitId(unit.getId()); + product.setPurchaseUnitName(unit.getName()); + }); product.setPackagingSchemes(packagingSchemeMap.getOrDefault(product.getId(), Collections.emptyList())); product.setSuppliers(supplierMap.getOrDefault(product.getId(), Collections.emptyList())); product.setDefaultSupplierId(defaultSupplierMap.get(product.getId()));