gongchunyi
6 小时以前 995bb063a3ac765c53447320e450fb6fc835c9d2
fix: 库存导入新增厚度,库存管理返回厚度字段
已修改3个文件
31 ■■■■ 文件已修改
src/main/java/com/ruoyi/stock/execl/StockInventoryExportData.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/stock/StockInventoryMapper.xml 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/stock/execl/StockInventoryExportData.java
@@ -8,8 +8,6 @@
@Data
public class StockInventoryExportData {
    @Excel(name = "产品名称")
    private String productName;
@@ -19,6 +17,9 @@
    @Excel(name = "单位")
    private String unit;
    @Excel(name = "厚度(mm)")
    private BigDecimal thickness;
    @Excel(name = "合格库存数量")
    private BigDecimal qualifiedQuantity;
src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
@@ -152,8 +152,8 @@
            List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectProduct();
            Map<String, SalesLedgerProduct> productMap = new HashMap<>();
            for (SalesLedgerProduct product : salesLedgerProducts) {
                // 使用产品类别和规格型号作为键
                String key = product.getProductCategory() + "|" + product.getSpecificationModel();
                // 使用产品名称 + 规格型号 + 厚度作为键
                String key = buildProductKey(product.getProductCategory(), product.getSpecificationModel(), product.getThickness());
                productMap.put(key, product);
            }
@@ -166,7 +166,7 @@
            for (StockInventoryExportData dto : list) {
                // 构建查找键
                String key = dto.getProductName() + "|" + dto.getModel();
                String key = buildProductKey(dto.getProductName(), dto.getModel(), dto.getThickness());
                SalesLedgerProduct matchedProduct = productMap.get(key);
                
                if (matchedProduct != null) {
@@ -217,7 +217,7 @@
                    }
                } else {
                    // 记录未匹配的产品
                    String unmatchedRecord = "产品名称:" + dto.getProductName() + ",型号:" + dto.getModel();
                    String unmatchedRecord = "产品名称:" + dto.getProductName() + ",型号:" + dto.getModel() + ",厚度:" + normalizeThickness(dto.getThickness());
                    unmatchedRecords.add(unmatchedRecord);
                }
            }
@@ -281,4 +281,17 @@
        stockInventory.setLockedQuantity(stockInventory.getLockedQuantity().subtract(stockInventoryDto.getLockedQuantity()));
        return this.updateById(stockInventory);
    }
    private String buildProductKey(String productName, String model, BigDecimal thickness) {
        String safeProductName = productName == null ? "" : productName.trim();
        String safeModel = model == null ? "" : model.trim();
        return safeProductName + "|" + safeModel + "|" + normalizeThickness(thickness);
    }
    private String normalizeThickness(BigDecimal thickness) {
        if (thickness == null) {
            return "";
        }
        return thickness.stripTrailingZeros().toPlainString();
    }
}
src/main/resources/mapper/stock/StockInventoryMapper.xml
@@ -107,6 +107,7 @@
            MAX(warn_num) as warn_num,
            MAX(version) as version,
            model,
            thickness,
            MAX(remark) as remark,
            unit,
            product_name,
@@ -128,6 +129,7 @@
            si.version,
            (si.qualitity - COALESCE(si.locked_quantity, 0)) as un_locked_quantity,
            pm.model,
            pm.thickness,
            si.remark,
            pm.unit,
            p.product_name,
@@ -153,6 +155,7 @@
            su.version,
            (su.qualitity - COALESCE(su.locked_quantity, 0)) as un_locked_quantity,
            pm.model,
            pm.thickness,
            su.remark,
            pm.unit,
            p.product_name,
@@ -172,7 +175,7 @@
                and combined.product_id in (select id from product_tree)
            </if>
        </where>
        group by product_model_id, model, unit, product_name, product_id
        group by product_model_id, model, thickness, unit, product_name, product_id
    </select>
    <select id="listStockInventoryExportData" resultType="com.ruoyi.stock.execl.StockInventoryExportData">
        WITH RECURSIVE product_tree AS (