From 4a82ac1bfb3e3cd04d6dd6c07aaee6c0d70df13e Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期四, 12 三月 2026 09:59:32 +0800
Subject: [PATCH] 主生产计划:产品信息改为关联查询
---
src/main/java/com/ruoyi/productionPlan/mapper/ProductionPlanMapper.java | 2 +
src/main/java/com/ruoyi/productionPlan/pojo/ProductionPlan.java | 22 -----------
src/main/java/com/ruoyi/productionPlan/service/impl/ProductionPlanServiceImpl.java | 20 +++------
src/main/java/com/ruoyi/productionPlan/dto/ProductionPlanDto.java | 26 +++++++++++++
src/main/resources/mapper/productionPlan/ProductionPlanMapper.xml | 31 +++++++++++++--
5 files changed, 61 insertions(+), 40 deletions(-)
diff --git a/src/main/java/com/ruoyi/productionPlan/dto/ProductionPlanDto.java b/src/main/java/com/ruoyi/productionPlan/dto/ProductionPlanDto.java
index 69e2556..f44bfd3 100644
--- a/src/main/java/com/ruoyi/productionPlan/dto/ProductionPlanDto.java
+++ b/src/main/java/com/ruoyi/productionPlan/dto/ProductionPlanDto.java
@@ -1,6 +1,7 @@
package com.ruoyi.productionPlan.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.productionPlan.pojo.ProductionPlan;
import io.swagger.annotations.ApiModelProperty;
@@ -13,6 +14,31 @@
@Data
public class ProductionPlanDto extends ProductionPlan {
+ /**
+ * 鐗╂枡缂栫爜
+ */
+ @ApiModelProperty("鐗╂枡缂栫爜")
+ @Excel(name = "鐗╂枡缂栫爜")
+ private String materialCode;
+
+ /**
+ * 浜у搧鍚嶇О
+ */
+ @ApiModelProperty("浜у搧鍚嶇О")
+ @Excel(name = "浜у搧鍚嶇О")
+ private String productName;
+
+ /**
+ * 浜у搧瑙勬牸
+ */
+ @ApiModelProperty("浜у搧瑙勬牸")
+ @Excel(name = "浜у搧瑙勬牸")
+ private String specification;
+
+ @ApiModelProperty("浜у搧鍗曚綅")
+ @Excel(name = "浜у搧鍗曚綅")
+ private String baseUnit;
+
@ApiModelProperty(value = "鐢熶骇璁″垝id闆嗗悎")
private List<Long> ids;
diff --git a/src/main/java/com/ruoyi/productionPlan/mapper/ProductionPlanMapper.java b/src/main/java/com/ruoyi/productionPlan/mapper/ProductionPlanMapper.java
index d6a7577..042ef22 100644
--- a/src/main/java/com/ruoyi/productionPlan/mapper/ProductionPlanMapper.java
+++ b/src/main/java/com/ruoyi/productionPlan/mapper/ProductionPlanMapper.java
@@ -24,4 +24,6 @@
List<ProductionPlanSummaryDto> selectSummaryByProductType(ProductionPlanSummaryDto query);
+ List<ProductionPlanDto> selectWithMaterialByIds(@Param("ids") List<Long> ids);
+
}
diff --git a/src/main/java/com/ruoyi/productionPlan/pojo/ProductionPlan.java b/src/main/java/com/ruoyi/productionPlan/pojo/ProductionPlan.java
index 8ecf1e8..fc9b30f 100644
--- a/src/main/java/com/ruoyi/productionPlan/pojo/ProductionPlan.java
+++ b/src/main/java/com/ruoyi/productionPlan/pojo/ProductionPlan.java
@@ -59,32 +59,10 @@
private String customerName;
/**
- * 鐗╂枡缂栫爜
- */
- @ApiModelProperty("鐗╂枡缂栫爜")
- @Excel(name = "鐗╂枡缂栫爜")
- private String materialCode;
-
-
- /**
* 鍏宠仈鐗╂枡淇℃伅琛↖D
*/
@ApiModelProperty("鍏宠仈鐗╂枡淇℃伅琛↖D")
private Integer productMaterialId;
-
- /**
- * 浜у搧鍚嶇О
- */
- @ApiModelProperty("浜у搧鍚嶇О")
- @Excel(name = "浜у搧鍚嶇О")
- private String productName;
-
- /**
- * 浜у搧瑙勬牸
- */
- @ApiModelProperty("浜у搧瑙勬牸")
- @Excel(name = "浜у搧瑙勬牸")
- private String productSpec;
/**
* 闀�
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 6025b24..1fa88f9 100644
--- a/src/main/java/com/ruoyi/productionPlan/service/impl/ProductionPlanServiceImpl.java
+++ b/src/main/java/com/ruoyi/productionPlan/service/impl/ProductionPlanServiceImpl.java
@@ -111,8 +111,7 @@
}
// 鏌ヨ涓荤敓浜ц鍒�
- List<ProductionPlan> plans = productionPlanMapper.selectBatchIds(productionPlanDto.getIds());
- plans.sort(Comparator.comparingLong(ProductionPlan::getId));
+ List<ProductionPlanDto> plans = productionPlanMapper.selectWithMaterialByIds(productionPlanDto.getIds());
// 鏍¢獙鏄惁瀛樺湪涓嶅悓鐨勪骇鍝佸悕绉�
String firstProductName = plans.get(0).getProductName();
@@ -121,11 +120,10 @@
}
// 鏍¢獙鏄惁瀛樺湪涓嶅悓鐨勪骇鍝佽鏍�
- String firstProductSpec = plans.get(0).getProductSpec();
- if (plans.stream().anyMatch(p -> !p.getProductSpec().equals(firstProductSpec))) {
+ String firstProductSpec = plans.get(0).getSpecification();
+ if (plans.stream().anyMatch(p -> !p.getSpecification().equals(firstProductSpec))) {
throw new BaseException("鍚堝苟澶辫触锛屽瓨鍦ㄤ笉鍚岀殑浜у搧瑙勬牸");
}
-
// 鍙犲姞鍓╀綑鏂规暟
BigDecimal totalRemainingVolume = plans.stream()
@@ -386,8 +384,6 @@
plan.setCustomerName(formData.getString("textField_lbkozohg"));
String materialCode = row.getString("textField_l9xo62q5");
- plan.setMaterialCode(materialCode);
-
// 鏍规嵁鐗╂枡缂栫爜鏌ヨ鐗╂枡淇℃伅琛紝鍏宠仈鐗╂枡ID
if (StringUtils.isNotEmpty(materialCode)) {
LambdaQueryWrapper<ProductMaterial> queryWrapper = new LambdaQueryWrapper<>();
@@ -398,8 +394,6 @@
}
}
- plan.setProductName(row.getString("textField_l9xo62q7"));
- plan.setProductSpec(row.getString("textField_l9xo62q8"));
plan.setLength(row.getInteger("numberField_lb7lgatg_value"));
plan.setWidth(row.getInteger("numberField_lb7lgath_value"));
plan.setHeight(row.getInteger("numberField_lb7lgati_value"));
@@ -473,19 +467,19 @@
// Map (formInstanceId + materialCode)
Map<String, ProductionPlan> existMap = new HashMap<>();
for (ProductionPlan p : existList) {
- String key = p.getFormInstanceId() + "_" + p.getMaterialCode();
+ String key = p.getFormInstanceId() + "_" + p.getProductMaterialId();
existMap.put(key, p);
}
// 閬嶅巻鍚屾鏁版嵁
for (ProductionPlan plan : list) {
- String key = plan.getFormInstanceId() + "_" + plan.getMaterialCode();
+ String key = plan.getFormInstanceId() + "_" + plan.getProductMaterialId();
ProductionPlan exist = existMap.get(key);
if (exist == null) {
// 鏂板
this.save(plan);
affected++;
- log.info("鏂板鏁版嵁 formInstanceId={}, materialCode={}", plan.getFormInstanceId(), plan.getMaterialCode());
+ log.info("鏂板鏁版嵁 formInstanceId={}, materialCode={}", plan.getFormInstanceId(), plan.getProductMaterialId());
} else {
// 鍒ゆ柇鏄惁闇�瑕佹洿鏂�
if (exist.getFormModifiedTime() == null || !exist.getFormModifiedTime().equals(plan.getFormModifiedTime())) {
@@ -493,7 +487,7 @@
plan.setCreateTime(exist.getCreateTime());
this.updateById(plan);
affected++;
- log.info("鏇存柊鏁版嵁 formInstanceId={}, materialCode={}", plan.getFormInstanceId(), plan.getMaterialCode());
+ log.info("鏇存柊鏁版嵁 formInstanceId={}, materialCode={}", plan.getFormInstanceId(), plan.getProductMaterialId());
}
}
}
diff --git a/src/main/resources/mapper/productionPlan/ProductionPlanMapper.xml b/src/main/resources/mapper/productionPlan/ProductionPlanMapper.xml
index 43df1a5..88ec8fb 100644
--- a/src/main/resources/mapper/productionPlan/ProductionPlanMapper.xml
+++ b/src/main/resources/mapper/productionPlan/ProductionPlanMapper.xml
@@ -40,20 +40,26 @@
<select id="listPage" resultType="com.ruoyi.productionPlan.dto.ProductionPlanDto">
- SELECT *
+ SELECT
+ pp.*,
+ pm.product_name,
+ pm.specification,
+ pm.material_code,
+ pm.base_unit
FROM production_plan pp
+ left join product_material pm on pp.product_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 pp.product_name LIKE CONCAT('%',#{c.productName},'%')
+ AND pm.product_name LIKE CONCAT('%',#{c.productName},'%')
</if>
- <if test="c.productSpec != null and c.productSpec != '' ">
- AND pp.product_spec LIKE CONCAT('%',#{c.productSpec},'%')
+ <if test="c.specification != null and c.specification != '' ">
+ AND pm.specification LIKE CONCAT('%',#{c.specification},'%')
</if>
<if test="c.materialCode != null and c.materialCode != '' ">
- AND pp.material_code LIKE CONCAT('%',#{c.materialCode},'%')
+ AND pm.material_code LIKE CONCAT('%',#{c.materialCode},'%')
</if>
<if test="c.startDate != null">
AND pp.start_date >= DATE_FORMAT(#{c.startDate},'%Y-%m-%d')
@@ -92,4 +98,19 @@
height
</select>
+ <select id="selectWithMaterialByIds" resultType="com.ruoyi.productionPlan.dto.ProductionPlanDto">
+ SELECT
+ pp.*,
+ pm.product_name,
+ pm.specification,
+ pm.material_code,
+ pm.base_unit
+ FROM production_plan pp
+ LEFT JOIN product_material pm ON pp.product_material_id = pm.id
+ WHERE pp.id IN
+ <foreach collection="ids" item="id" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ ORDER BY pp.id ASC
+ </select>
</mapper>
\ No newline at end of file
--
Gitblit v1.9.3