fix:修复库存单位及采购单位问题

main
HuangHuiKang 1 week ago
parent 410921ac2d
commit fb0bf6e182

@ -209,6 +209,8 @@ public class ErpStockCheckController {
Map<Long, ErpProductRespVO> productMap = productService.getProductVOMap(
convertSet(pageResult.getList(), ErpStockCheckItemDO::getProductId));
Map<Long, ErpProductUnitDO> unitMap = productUnitService.getProductUnitMap(convertSet(productMap.values(), ErpProductRespVO::getUnitId));
Map<Long, ErpProductUnitDO> purchaseUnitMap = productUnitService.getProductUnitMap(
convertSet(productMap.values(), ErpProductRespVO::getPurchaseUnitId));
Map<Long, ErpWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(
convertSet(pageResult.getList(), ErpStockCheckItemDO::getWarehouseId));
Map<Long, WarehouseAreaDO> 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()));

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

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

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

@ -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 = "李四")

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

Loading…
Cancel
Save