From f4c288c55d08c04cd026508b358beebfcdce5fc2 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期五, 22 五月 2026 09:29:09 +0800
Subject: [PATCH] feat(product): 添加产品型号向下复制功能并优化生产报工重量计算 - 在ProductController中新增downCopy接口实现产品型号批量复制功能 - 将ProductionProductMainDto中的bomInputQty字段重命名为inputWeight - 在ProductionProductMainServiceImpl中添加JSON解析逻辑支持从otherData中提取投入重量 - 新增resolveInputWeight、findParameterValue、findFieldValue等工具方法处理复杂参数解析 - 为ProductModelDto添加targetProductId字段用于指定复制目标 - 修复销售台账按调度员ID和姓名分组的SQL查询问题 - 优化库存服务中剩余数量计算的空值处理逻辑 - 完善生产投料数量为空时的默认值处理机制

---
 src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java |   33 ++++++++++++++++++++++++++++++---
 1 files changed, 30 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java
index cb8c395..08be3ba 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java
@@ -10,6 +10,7 @@
 import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.EnumUtil;
 import com.ruoyi.common.utils.OrderUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.stock.dto.StockInventoryDto;
@@ -49,7 +50,11 @@
 
     @Override
     public IPage<StockOutRecordDto> listPage(Page page, StockOutRecordDto stockOutRecordDto) {
-        return stockOutRecordMapper.listPage(page, stockOutRecordDto);
+        IPage<StockOutRecordDto> result = stockOutRecordMapper.listPage(page, stockOutRecordDto);
+        for (StockOutRecordDto record : result.getRecords()) {
+            record.setRecordTypeName(resolveRecordTypeName(record.getType(), record.getRecordType(), record.getProcessName()));
+        }
+        return result;
     }
 
     @Override
@@ -131,7 +136,7 @@
         List<StockOutRecordExportData> list = stockOutRecordMapper.listStockOutRecordExportData(stockOutRecordDto);
         for (StockOutRecordExportData stockInRecordExportData : list) {
             if (stockInRecordExportData.getType().equals("0")) {
-                stockInRecordExportData.setRecordType(EnumUtil.fromCode(StockOutQualifiedRecordTypeEnum.class, Integer.parseInt(stockInRecordExportData.getRecordType())).getValue());
+                stockInRecordExportData.setRecordType(resolveQualifiedRecordType(stockInRecordExportData.getRecordType(), stockInRecordExportData.getProcessName()));
             }else {
                 stockInRecordExportData.setRecordType(EnumUtil.fromCode(StockOutUnQualifiedRecordTypeEnum.class, Integer.parseInt(stockInRecordExportData.getRecordType())).getValue());
             }
@@ -139,4 +144,26 @@
         ExcelUtil<StockOutRecordExportData> util = new ExcelUtil<>(StockOutRecordExportData.class);
         util.exportExcel(response,list, "鍑哄簱璁板綍淇℃伅");
     }
-}
\ No newline at end of file
+
+    private String resolveRecordTypeName(String type, String recordType, String processName) {
+        if ("0".equals(type)) {
+            return resolveQualifiedRecordType(recordType, processName);
+        }
+        return EnumUtil.fromCode(StockOutUnQualifiedRecordTypeEnum.class, Integer.parseInt(recordType)).getValue();
+    }
+
+    private String resolveQualifiedRecordType(String recordType, String processName) {
+        if (StockOutQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode().equals(recordType)
+                && StringUtils.isNotEmpty(processName)) {
+            return "鐢熶骇鎶ュ伐-" + processName + "-鍑哄簱";
+        }
+        if (recordType == null) {
+            return null;
+        }
+        try {
+            return EnumUtil.fromCode(StockOutQualifiedRecordTypeEnum.class, Integer.parseInt(recordType)).getValue();
+        } catch (NumberFormatException ex) {
+            return recordType;
+        }
+    }
+}

--
Gitblit v1.9.3