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/pojo/ProductionPlan.java | 23 +++++++++++
src/main/java/com/ruoyi/productionPlan/service/impl/ProductionPlanServiceImpl.java | 44 +++++++++++++++++++---
src/main/java/com/ruoyi/production/service/impl/ProductMaterialServiceImpl.java | 14 ++----
src/main/resources/mapper/productionPlan/ProductionPlanMapper.xml | 34 ++++++++---------
4 files changed, 81 insertions(+), 34 deletions(-)
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductMaterialServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductMaterialServiceImpl.java
index 76a52d3..bd32f1f 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductMaterialServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductMaterialServiceImpl.java
@@ -350,17 +350,13 @@
for (ProductMaterialConfig materialConfig : materialConfigList) {
LambdaQueryWrapper<ProductMaterial> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProductMaterial::getMaterialTypeId, materialConfig.getId())
- .select(ProductMaterial::getId, ProductMaterial::getMaterialName)
.like(materialName != null && !materialName.isEmpty(), ProductMaterial::getMaterialName, materialName);
List<ProductMaterial> productMaterialList = list(wrapper);
-
- if (productMaterialList != null && !productMaterialList.isEmpty()) {
- ProductMaterialGroupDto dto = new ProductMaterialGroupDto();
- dto.setConfigId(materialConfig.getId());
- dto.setConfigName(materialConfig.getConfigName());
- dto.setMaterialList(productMaterialList);
- productMaterialMap.add(dto);
- }
+ ProductMaterialGroupDto dto = new ProductMaterialGroupDto();
+ dto.setConfigId(materialConfig.getId());
+ dto.setConfigName(materialConfig.getConfigName());
+ dto.setMaterialList(productMaterialList);
+ productMaterialMap.add(dto);
}
return productMaterialMap;
}
diff --git a/src/main/java/com/ruoyi/productionPlan/pojo/ProductionPlan.java b/src/main/java/com/ruoyi/productionPlan/pojo/ProductionPlan.java
index fc9b30f..30e5f17 100644
--- a/src/main/java/com/ruoyi/productionPlan/pojo/ProductionPlan.java
+++ b/src/main/java/com/ruoyi/productionPlan/pojo/ProductionPlan.java
@@ -59,10 +59,31 @@
private String customerName;
/**
+ * 鐗╂枡缂栫爜
+ */
+ @ApiModelProperty("鐗╂枡缂栫爜")
+ @Excel(name = "鐗╂枡缂栫爜")
+ private String materialCode;
+
+ /**
+ * 浜у搧鍚嶇О
+ */
+ @ApiModelProperty("浜у搧鍚嶇О")
+ @Excel(name = "浜у搧鍚嶇О")
+ private String productName;
+
+ /**
+ * 浜у搧瑙勬牸
+ */
+ @ApiModelProperty("浜у搧瑙勬牸")
+ @Excel(name = "浜у搧瑙勬牸")
+ private String productSpec;
+
+ /**
* 鍏宠仈鐗╂枡淇℃伅琛↖D
*/
@ApiModelProperty("鍏宠仈鐗╂枡淇℃伅琛↖D")
- private Integer productMaterialId;
+ private Long productMaterialSkuId;
/**
* 闀�
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);
diff --git a/src/main/resources/mapper/productionPlan/ProductionPlanMapper.xml b/src/main/resources/mapper/productionPlan/ProductionPlanMapper.xml
index 88ec8fb..204a386 100644
--- a/src/main/resources/mapper/productionPlan/ProductionPlanMapper.xml
+++ b/src/main/resources/mapper/productionPlan/ProductionPlanMapper.xml
@@ -11,10 +11,7 @@
<result property="serialNo" column="serial_no"/>
<result property="applyNo" column="apply_no"/>
<result property="customerName" column="customer_name"/>
- <result property="materialCode" column="material_code"/>
- <result property="productMaterialId" column="product_material_id"/>
- <result property="productName" column="product_name"/>
- <result property="productSpec" column="product_spec"/>
+ <result property="productMaterialSkuId" column="product_material_sku_id"/>
<result property="length" column="length"/>
<result property="width" column="width"/>
<result property="height" column="height"/>
@@ -38,28 +35,28 @@
<result property="totalCount" column="total_count"/>
</resultMap>
-
<select id="listPage" resultType="com.ruoyi.productionPlan.dto.ProductionPlanDto">
SELECT
pp.*,
- pm.product_name,
- pm.specification,
- pm.material_code,
+ pms.material_code AS materialCode,
+ pms.specification AS specification,
+ pm.material_name AS productName,
pm.base_unit
FROM production_plan pp
- left join product_material pm on pp.product_material_id = pm.id
+ left join product_material_sku pms on pp.product_material_sku_id = pms.id
+ left join product_material pm on pms.material_id = pm.id
WHERE 1 = 1
<if test="c.customerName != null and c.customerName != '' ">
AND pp.customer_name LIKE CONCAT('%',#{c.customerName},'%')
</if>
<if test="c.productName != null and c.productName != '' ">
- AND pm.product_name LIKE CONCAT('%',#{c.productName},'%')
- </if>
- <if test="c.specification != null and c.specification != '' ">
- AND pm.specification LIKE CONCAT('%',#{c.specification},'%')
+ AND pm.material_name LIKE CONCAT('%',#{c.productName},'%')
</if>
<if test="c.materialCode != null and c.materialCode != '' ">
- AND pm.material_code LIKE CONCAT('%',#{c.materialCode},'%')
+ AND pms.material_code LIKE CONCAT('%',#{c.materialCode},'%')
+ </if>
+ <if test="c.specification != null and c.specification != '' ">
+ AND pms.specification LIKE CONCAT('%',#{c.specification},'%')
</if>
<if test="c.startDate != null">
AND pp.start_date >= DATE_FORMAT(#{c.startDate},'%Y-%m-%d')
@@ -101,12 +98,13 @@
<select id="selectWithMaterialByIds" resultType="com.ruoyi.productionPlan.dto.ProductionPlanDto">
SELECT
pp.*,
- pm.product_name,
- pm.specification,
- pm.material_code,
+ pms.material_code AS materialCode,
+ pms.specification AS specification,
+ pm.material_name AS productName,
pm.base_unit
FROM production_plan pp
- LEFT JOIN product_material pm ON pp.product_material_id = pm.id
+ LEFT JOIN product_material_sku pms ON pp.product_material_sku_id = pms.id
+ LEFT JOIN product_material pm ON pms.material_id = pm.id
WHERE pp.id IN
<foreach collection="ids" item="id" open="(" separator="," close=")">
#{id}
--
Gitblit v1.9.3