From 1536165d57b3c8450cbd53f45c61c36f66cc177c Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期四, 12 三月 2026 16:52:38 +0800
Subject: [PATCH] fix: 生产计划的产品规格与物料编码数据为空

---
 src/main/java/com/ruoyi/productionPlan/service/impl/ProductionPlanServiceImpl.java |   44 ++++++++++++++++++++++++++++++++++++++------
 1 files changed, 38 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/ruoyi/productionPlan/service/impl/ProductionPlanServiceImpl.java b/src/main/java/com/ruoyi/productionPlan/service/impl/ProductionPlanServiceImpl.java
index de8cfe4..86d6439 100644
--- a/src/main/java/com/ruoyi/productionPlan/service/impl/ProductionPlanServiceImpl.java
+++ b/src/main/java/com/ruoyi/productionPlan/service/impl/ProductionPlanServiceImpl.java
@@ -15,8 +15,10 @@
 import com.ruoyi.common.utils.http.HttpUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.config.AliDingConfig;
+import com.ruoyi.production.pojo.ProductMaterial;
 import com.ruoyi.production.pojo.ProductMaterialSku;
 import com.ruoyi.production.pojo.ProductOrder;
+import com.ruoyi.production.service.ProductMaterialService;
 import com.ruoyi.production.service.ProductMaterialSkuService;
 import com.ruoyi.production.service.ProductOrderService;
 import com.ruoyi.productionPlan.dto.ProductionPlanDto;
@@ -73,6 +75,9 @@
 
     @Autowired
     private ProductMaterialSkuService productMaterialSkuService;
+
+    @Autowired
+    private ProductMaterialService productMaterialService;
 
     /**
      * 鍚屾閿侊紝纭繚鎵嬪姩鍜屽畾鏃朵换鍔′笉鍚屾椂鎵ц
@@ -384,13 +389,23 @@
                 plan.setCustomerName(formData.getString("textField_lbkozohg"));
 
                 String materialCode = row.getString("textField_l9xo62q5");
+                plan.setMaterialCode(materialCode);
                 // 鏍规嵁鐗╂枡缂栫爜鏌ヨ鐗╂枡淇℃伅琛紝鍏宠仈鐗╂枡ID
                 if (StringUtils.isNotEmpty(materialCode)) {
                     LambdaQueryWrapper<ProductMaterialSku> skuQueryWrapper = new LambdaQueryWrapper<>();
                     skuQueryWrapper.eq(ProductMaterialSku::getMaterialCode, materialCode);
                     ProductMaterialSku sku = productMaterialSkuService.getOne(skuQueryWrapper);
-                    if (sku != null && sku.getMaterialId() != null) {
-                        plan.setProductMaterialId(sku.getMaterialId().intValue());
+                    if (sku != null) {
+                        plan.setProductMaterialSkuId(sku.getId());
+                        if (sku.getMaterialId() != null) {
+                            // 璁剧疆浜у搧鍚嶇О
+                            ProductMaterial material = productMaterialService.getById(sku.getMaterialId());
+                            if (material != null) {
+                                plan.setProductName(material.getMaterialName());
+                            }
+                        }
+                        // 璁剧疆瑙勬牸鍨嬪彿
+                        plan.setProductSpec(sku.getSpecification());
                     }
                 }
 
@@ -467,19 +482,19 @@
         //  Map (formInstanceId + materialCode)
         Map<String, ProductionPlan> existMap = new HashMap<>();
         for (ProductionPlan p : existList) {
-            String key = p.getFormInstanceId() + "_" + p.getProductMaterialId();
+            String key = p.getFormInstanceId() + "_" + p.getProductMaterialSkuId();
             existMap.put(key, p);
         }
 
         //  閬嶅巻鍚屾鏁版嵁
         for (ProductionPlan plan : list) {
-            String key = plan.getFormInstanceId() + "_" + plan.getProductMaterialId();
+            String key = plan.getFormInstanceId() + "_" + plan.getProductMaterialSkuId();
             ProductionPlan exist = existMap.get(key);
             if (exist == null) {
                 // 鏂板
                 this.save(plan);
                 affected++;
-                log.info("鏂板鏁版嵁 formInstanceId={}, materialCode={}", plan.getFormInstanceId(), plan.getProductMaterialId());
+                log.info("鏂板鏁版嵁 formInstanceId={}, materialCode={}", plan.getFormInstanceId(), plan.getProductMaterialSkuId());
             } else {
                 // 鍒ゆ柇鏄惁闇�瑕佹洿鏂�
                 if (exist.getFormModifiedTime() == null || !exist.getFormModifiedTime().equals(plan.getFormModifiedTime())) {
@@ -487,7 +502,7 @@
                     plan.setCreateTime(exist.getCreateTime());
                     this.updateById(plan);
                     affected++;
-                    log.info("鏇存柊鏁版嵁 formInstanceId={}, materialCode={}", plan.getFormInstanceId(), plan.getProductMaterialId());
+                    log.info("鏇存柊鏁版嵁 formInstanceId={}, materialCode={}", plan.getFormInstanceId(), plan.getProductMaterialSkuId());
                 }
             }
         }
@@ -541,6 +556,23 @@
             entity.setDataSourceType(2);
             entity.setDataSyncType(1);
 
+            // 鏍规嵁鐗╂枡缂栫爜濉厖鍏宠仈ID
+            if (StringUtils.isNotEmpty(dto.getMaterialCode())) {
+                LambdaQueryWrapper<ProductMaterialSku> skuQueryWrapper = new LambdaQueryWrapper<>();
+                skuQueryWrapper.eq(ProductMaterialSku::getMaterialCode, dto.getMaterialCode());
+                ProductMaterialSku sku = productMaterialSkuService.getOne(skuQueryWrapper);
+                if (sku != null) {
+                    entity.setProductMaterialSkuId(sku.getId());
+                    if (sku.getMaterialId() != null) {
+                        ProductMaterial material = productMaterialService.getById(sku.getMaterialId());
+                        if (material != null) {
+                            entity.setProductName(material.getMaterialName());
+                        }
+                    }
+                    entity.setProductSpec(sku.getSpecification());
+                }
+            }
+
             entityList.add(entity);
         }
         this.saveBatch(entityList);

--
Gitblit v1.9.3