From 346d463346701e8714b3a3a3ebb21e21960b5484 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期五, 20 三月 2026 15:06:47 +0800
Subject: [PATCH] feat: 查看生产订单对应的生产计划来源
---
src/main/java/com/ruoyi/production/mapper/ProductOrderMapper.java | 4 +
src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java | 14 +++++++
src/main/resources/mapper/production/ProductOrderMapper.xml | 40 ++++++++++++++++++-
src/main/java/com/ruoyi/production/controller/ProductOrderController.java | 11 ++++-
src/main/java/com/ruoyi/production/service/ProductOrderService.java | 4 +
src/main/java/com/ruoyi/production/dto/ProductOrderSourceDto.java | 28 ++++++++++++++
6 files changed, 93 insertions(+), 8 deletions(-)
diff --git a/src/main/java/com/ruoyi/production/controller/ProductOrderController.java b/src/main/java/com/ruoyi/production/controller/ProductOrderController.java
index 0bfbfec..8592f25 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductOrderController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductOrderController.java
@@ -1,13 +1,13 @@
package com.ruoyi.production.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.basic.pojo.Customer;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.framework.web.domain.R;
import com.ruoyi.production.dto.ProductOrderDto;
-import com.ruoyi.production.pojo.ProcessRoute;
+import com.ruoyi.production.dto.ProductOrderSourceDto;
import com.ruoyi.production.pojo.ProductOrder;
import com.ruoyi.production.service.ProductOrderService;
import io.swagger.annotations.Api;
@@ -16,7 +16,6 @@
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
-import java.math.BigDecimal;
import java.util.List;
@RequestMapping("/productOrder")
@@ -82,5 +81,11 @@
return R.ok(productOrderService.addProductOrder(productOrder));
}
+ @GetMapping("/productOrderSource/{orderId}")
+ @ApiOperation("鏌ョ湅鐢熶骇璁㈠崟瀵瑰簲鐨勭敓浜ц鍒�")
+ public AjaxResult productOrderSource(@PathVariable Long orderId) {
+ List<ProductOrderSourceDto> list = productOrderService.productOrderSource(orderId);
+ return AjaxResult.success(list);
+ }
}
diff --git a/src/main/java/com/ruoyi/production/dto/ProductOrderSourceDto.java b/src/main/java/com/ruoyi/production/dto/ProductOrderSourceDto.java
new file mode 100644
index 0000000..1bdab15
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/dto/ProductOrderSourceDto.java
@@ -0,0 +1,28 @@
+package com.ruoyi.production.dto;
+
+import com.ruoyi.productionPlan.dto.ProductionPlanDto;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * <br>
+ * 鐢熶骇璁㈠崟鏉ユ簮-涓荤敓浜ц鍒�
+ * </br>
+ *
+ * @author deslrey
+ * @version 1.0
+ * @since 2026/03/20
+ */
+@Data
+@ApiModel(value = "ProductOrderSourceDto", description = "鐢熶骇璁㈠崟鏉ユ簮-涓荤敓浜ц鍒�")
+public class ProductOrderSourceDto {
+
+ @ApiModelProperty("鐢宠鍗曠紪鍙�")
+ private String applyNo;
+
+ @ApiModelProperty("涓荤敓浜ц鍒掓暟鎹�")
+ private List<ProductionPlanDto> productPlans;
+}
diff --git a/src/main/java/com/ruoyi/production/mapper/ProductOrderMapper.java b/src/main/java/com/ruoyi/production/mapper/ProductOrderMapper.java
index d9dd4be..84da613 100644
--- a/src/main/java/com/ruoyi/production/mapper/ProductOrderMapper.java
+++ b/src/main/java/com/ruoyi/production/mapper/ProductOrderMapper.java
@@ -3,8 +3,8 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.production.dto.ProductBomDto;
import com.ruoyi.production.dto.ProductOrderDto;
+import com.ruoyi.production.dto.ProductOrderSourceDto;
import com.ruoyi.production.dto.ProductStructureDto;
import com.ruoyi.production.pojo.ProcessRoute;
import com.ruoyi.production.pojo.ProductOrder;
@@ -27,4 +27,6 @@
Integer countCompleted(@Param("startDate") String startDate, @Param("endDate") String endDate);
Integer countPending(@Param("startDate") String startDate, @Param("endDate") String endDate);
+
+ List<ProductOrderSourceDto> productOrderSource(@Param("orderId") Long orderId);
}
diff --git a/src/main/java/com/ruoyi/production/service/ProductOrderService.java b/src/main/java/com/ruoyi/production/service/ProductOrderService.java
index 612ecd8..1a2edcf 100644
--- a/src/main/java/com/ruoyi/production/service/ProductOrderService.java
+++ b/src/main/java/com/ruoyi/production/service/ProductOrderService.java
@@ -3,8 +3,8 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.production.dto.ProductBomDto;
import com.ruoyi.production.dto.ProductOrderDto;
+import com.ruoyi.production.dto.ProductOrderSourceDto;
import com.ruoyi.production.dto.ProductStructureDto;
import com.ruoyi.production.pojo.ProcessRoute;
import com.ruoyi.production.pojo.ProductOrder;
@@ -32,4 +32,6 @@
Long insertProductOrder(ProductOrder productOrder);
Boolean delete(Long id);
+
+ List<ProductOrderSourceDto> productOrderSource(Long orderId);
}
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
index 094d016..ef1db88 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
@@ -6,8 +6,10 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.procurementrecord.utils.StockUtils;
import com.ruoyi.production.dto.ProductOrderDto;
+import com.ruoyi.production.dto.ProductOrderSourceDto;
import com.ruoyi.production.dto.ProductStructureDto;
import com.ruoyi.production.enums.ProductOrderStatusEnum;
import com.ruoyi.production.mapper.*;
@@ -314,5 +316,17 @@
return "SC" + datePrefix + String.format("%04d", sequence);
}
+ @Override
+ public List<ProductOrderSourceDto> productOrderSource(Long orderId) {
+ if (orderId == null) {
+ throw new ServiceException("鏌ヨ璁㈠崟鏁版嵁涓嶈兘涓虹┖");
+ }
+ ProductOrder productOrder = getById(orderId);
+ if (productOrder == null) {
+ throw new ServiceException("鏌ヨ澶辫触,鐢熶骇璁㈠崟涓嶅瓨鍦�");
+ }
+ List<ProductOrderSourceDto> list = baseMapper.productOrderSource(orderId);
+ return list;
+ }
}
diff --git a/src/main/resources/mapper/production/ProductOrderMapper.xml b/src/main/resources/mapper/production/ProductOrderMapper.xml
index 1862e33..ed6c187 100644
--- a/src/main/resources/mapper/production/ProductOrderMapper.xml
+++ b/src/main/resources/mapper/production/ProductOrderMapper.xml
@@ -14,6 +14,19 @@
<result property="status" column="status"/>
</resultMap>
+ <resultMap id="ProductOrderSourceMap" type="com.ruoyi.production.dto.ProductOrderSourceDto">
+ <id property="applyNo" column="apply_no"/>
+ <result property="applyNo" column="apply_no"/>
+ <collection property="productPlans" ofType="com.ruoyi.productionPlan.dto.ProductionPlanDto" autoMapping="true">
+ <id property="id" column="plan_id"/>
+ <result property="materialCode" column="material_code"/>
+ <result property="productName" column="product_name"/>
+ <result property="model" column="model"/>
+ <result property="unit" column="unit"/>
+ <result property="totalAssignedQuantity" column="total_assigned_quantity"/>
+ </collection>
+ </resultMap>
+
<select id="pageProductOrder" resultType="com.ruoyi.production.dto.ProductOrderDto">
SELECT
po.id,
@@ -41,9 +54,9 @@
LEFT JOIN process_route pr ON po.route_id = pr.id
LEFT JOIN product_bom pb ON pr.bom_id = pb.id
LEFT JOIN (
- SELECT product_order_id, MIN(production_plan_id) AS production_plan_id
- FROM product_order_plan
- GROUP BY product_order_id
+ SELECT product_order_id, MIN(production_plan_id) AS production_plan_id
+ FROM product_order_plan
+ GROUP BY product_order_id
) pop ON po.id = pop.product_order_id
LEFT JOIN production_plan pp ON pop.production_plan_id = pp.id
LEFT JOIN product_material_sku pms ON pms.id = pp.product_material_sku_id
@@ -108,4 +121,25 @@
AND create_time <= #{endDate}
AND complete_quantity < quantity
</select>
+
+ <select id="productOrderSource" resultMap="ProductOrderSourceMap"
+ parameterType="java.lang.Long">
+ SELECT pp.id AS plan_id,
+ pp.apply_no,
+ pp.*,
+ pop.assigned_quantity AS total_assigned_quantity,
+ sku.material_code,
+ sku.model,
+ pm.product_name,
+ pm.unit
+
+ FROM product_order_plan pop
+ LEFT JOIN production_plan pp ON pop.production_plan_id = pp.id
+ LEFT JOIN product_material_sku sku ON pp.product_material_sku_id = sku.id
+ LEFT JOIN product_material pm ON sku.product_id = pm.id
+
+ WHERE pop.product_order_id = #{orderId}
+ ORDER BY pp.apply_no
+
+ </select>
</mapper>
--
Gitblit v1.9.3