From 3990ae574c221e3764ce9cbc2e4e3eb71b7b1b52 Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期六, 24 十月 2026 23:41:23 +0800
Subject: [PATCH] fix(mes): 修复批次正反向追溯链路

---
 yudao-module-mes/src/main/resources/mapper/wm/batch/MesWmBatchMapper.xml |   54 ++++++++++++++++++++++++++++--------------------------
 1 files changed, 28 insertions(+), 26 deletions(-)

diff --git a/yudao-module-mes/src/main/resources/mapper/wm/batch/MesWmBatchMapper.xml b/yudao-module-mes/src/main/resources/mapper/wm/batch/MesWmBatchMapper.xml
index 0eda416..bfa05b0 100644
--- a/yudao-module-mes/src/main/resources/mapper/wm/batch/MesWmBatchMapper.xml
+++ b/yudao-module-mes/src/main/resources/mapper/wm/batch/MesWmBatchMapper.xml
@@ -10,37 +10,39 @@
     </resultMap>
 
     <!--
-        鍚戝墠杩芥函锛氫粠鏌愪釜鍘熸潗鏂欐壒娆″嚭鍙戯紝鏌ユ壘瀹冭鍝簺宸ュ崟娑堣�楀悗锛屼骇鍑轰簡鍝簺鎴愬搧鎵规
-        閾捐矾锛氬簱瀛樹簨鍔�(娑堣�� OUT, biz=123, biz_id=娑堣�楀崟id) 鈫� 娑堣�楀崟 鈫� 鎶ュ伐 鈫� 浜у嚭鍗�(feedback_id) 鈫� 搴撳瓨浜嬪姟(浜у嚭 IN, biz=124, biz_id=浜у嚭鍗昳d) 鈫� 鎵规
+        鍚戝墠杩芥函锛氬師鏂欐秷鑰楁槑缁� 鈫� 娑堣�楀崟 鈫� 浜у搧浜у嚭鍗� 鈫� 浜у搧浜у嚭琛屻��
+        鏂版暟鎹紭鍏堟寜 feedback_id 绮剧‘鍏宠仈锛涘巻鍙�/鑷姩鐢熸垚鍗曟嵁缂哄皯 feedback_id 鏃讹紝
+        閫�鍖栦负鍚屼竴 work_order_id 鍏宠仈锛屼繚璇佸凡鏈夌敓浜ф暟鎹篃鑳藉舰鎴愭壒娆¢摼璺��
     -->
     <select id="selectListByForward" parameterType="String" resultMap="BatchTraceResult">
-        SELECT DISTINCT pf.work_order_id, pf.item_id, tx_produce.batch_id, tx_produce.batch_code
-        FROM mes_wm_transaction tx_consume
-        JOIN mes_wm_item_consume ic ON tx_consume.biz_id = ic.id AND tx_consume.biz_type = 123 AND ic.deleted = 0
-        JOIN mes_pro_feedback pf ON pf.id = ic.feedback_id AND pf.deleted = 0
-        JOIN mes_wm_product_produce pp ON pp.feedback_id = pf.id AND pp.deleted = 0
-        JOIN mes_wm_transaction tx_produce ON tx_produce.biz_id = pp.id AND tx_produce.biz_type = 124 AND tx_produce.deleted = 0
-        WHERE tx_consume.batch_code = #{batchCode}
-        AND tx_consume.biz_type = 123
-        AND tx_consume.deleted = 0
-        AND tx_produce.batch_id IS NOT NULL
+        SELECT DISTINCT pp.work_order_id, ppl.item_id, ppl.batch_id, ppl.batch_code
+        FROM mes_wm_item_consume_detail icd
+        JOIN mes_wm_item_consume ic ON ic.id = icd.consume_id AND ic.deleted = 0
+        JOIN mes_wm_product_produce pp ON pp.deleted = 0 AND (
+            (ic.feedback_id IS NOT NULL AND pp.feedback_id = ic.feedback_id)
+            OR ((ic.feedback_id IS NULL OR pp.feedback_id IS NULL)
+                AND pp.work_order_id = ic.work_order_id)
+        )
+        JOIN mes_wm_product_produce_line ppl ON ppl.produce_id = pp.id AND ppl.deleted = 0
+        WHERE icd.batch_code = #{batchCode}
+          AND icd.deleted = 0
+          AND ppl.batch_id IS NOT NULL
     </select>
 
-    <!--
-        鍚戝悗杩芥函锛氫粠鏌愪釜鎴愬搧鎵规鍑哄彂锛屾煡鎵剧敓浜у畠鏃舵秷鑰椾簡鍝簺鍘熸潗鏂欐壒娆�
-        閾捐矾锛氬簱瀛樹簨鍔�(浜у嚭 IN, biz=124, biz_id=浜у嚭鍗昳d) 鈫� 浜у嚭鍗� 鈫� 鎶ュ伐 鈫� 娑堣�楀崟(feedback_id) 鈫� 搴撳瓨浜嬪姟(娑堣�� OUT, biz=123, biz_id=娑堣�楀崟id) 鈫� 鎵规
-    -->
+    <!-- 鍚戝悗杩芥函锛氫骇鍝佷骇鍑鸿 鈫� 浜у搧浜у嚭鍗� 鈫� 娑堣�楀崟 鈫� 鍘熸枡娑堣�楁槑缁嗐�傚叧鑱旇鍒欏悓鍚戝墠杩芥函銆� -->
     <select id="selectListByBackward" parameterType="String" resultMap="BatchTraceResult">
-        SELECT DISTINCT ic.work_order_id, tx_consume.item_id, tx_consume.batch_id, tx_consume.batch_code
-        FROM mes_wm_transaction tx_produce
-        JOIN mes_wm_product_produce pp ON tx_produce.biz_id = pp.id AND tx_produce.biz_type = 124 AND pp.deleted = 0
-        JOIN mes_pro_feedback pf ON pf.id = pp.feedback_id AND pf.deleted = 0
-        JOIN mes_wm_item_consume ic ON ic.feedback_id = pf.id AND ic.deleted = 0
-        JOIN mes_wm_transaction tx_consume ON tx_consume.biz_id = ic.id AND tx_consume.biz_type = 123 AND tx_consume.deleted = 0
-        WHERE tx_produce.batch_code = #{batchCode}
-        AND tx_produce.biz_type = 124
-        AND tx_produce.deleted = 0
-        AND tx_consume.batch_id IS NOT NULL
+        SELECT DISTINCT ic.work_order_id, icd.item_id, icd.batch_id, icd.batch_code
+        FROM mes_wm_product_produce_line ppl
+        JOIN mes_wm_product_produce pp ON pp.id = ppl.produce_id AND pp.deleted = 0
+        JOIN mes_wm_item_consume ic ON ic.deleted = 0 AND (
+            (pp.feedback_id IS NOT NULL AND ic.feedback_id = pp.feedback_id)
+            OR ((pp.feedback_id IS NULL OR ic.feedback_id IS NULL)
+                AND ic.work_order_id = pp.work_order_id)
+        )
+        JOIN mes_wm_item_consume_detail icd ON icd.consume_id = ic.id AND icd.deleted = 0
+        WHERE ppl.batch_code = #{batchCode}
+          AND ppl.deleted = 0
+          AND icd.batch_id IS NOT NULL
     </select>
 
     <!-- 鎵规閲囪喘鏉ユ簮锛氭壒娆� 鈫� 閲囪喘鍏ュ簱琛� 鈫� 閲囪喘鍏ュ簱鍗� 鈫� IQC -->

--
Gitblit v1.9.3