From 5566783a0b7514d21e76fbd9c60552096308b37d Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 24 九月 2026 15:29:14 +0800
Subject: [PATCH] feat(mes): 新增产品质量等级分类支持

---
 docs/project-business/data/objects.json                                                                                  |    2 +-
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineServiceImpl.java |    2 +-
 docs/project-business/data/flows.json                                                                                    |    4 ++--
 docs/project-business/mermaid/05-quality-flow.mmd                                                                        |    4 ++--
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/batch/vo/MesWmBatchSalesTargetRespVO.java |    2 +-
 docs/sql/config_export_all_20260904.sql                                                                                  |    6 +++++-
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/qc/MesQcOqcCheckResultEnum.java                         |   12 +++++++++---
 7 files changed, 21 insertions(+), 11 deletions(-)

diff --git a/docs/project-business/data/flows.json b/docs/project-business/data/flows.json
index e814e32..4192807 100644
--- a/docs/project-business/data/flows.json
+++ b/docs/project-business/data/flows.json
@@ -29,11 +29,11 @@
        {"stage": "鑱斿姩", "action": "瀹℃壒閫氳繃鎸夊伐搴忔爣璁�: 鍊掑啿鈫掕嚜鍔ㄧ墿鏂欐秷鑰楁墸绾胯竟搴�(鍏佽璐熷簱瀛�)锛涜川妫�鈫掍骇鍑哄緟妫�琛岀瓑 IPQC锛涘叧閿潪妫�鈫掔洿鎺ヤ骇鍑哄叆搴�", "roles": ["绯荤粺鑷姩"]},
        {"stage": "瀹屽伐", "action": "浠呮湯閬撳伐搴忓洖鍐欏伐鍗曞凡鐢熶骇鏁伴噺锛岃揪鏍囪嚜鍔ㄥ畬鎴愶紱MPS 绱鍒ゆ柇瀹屾垚骞跺彂浜嬩欢缁欓攢鍞鍗�", "roles": ["绯荤粺鑷姩"]}]},
     {"id": "quality", "name": "璐ㄩ噺娴佺▼", "mermaid": "mermaid/05-quality-flow.mmd", "color": "#e06c6c",
-     "summary": "鍥涢亾妫�楠岄椄鍙�(IQC/IPQC/OQC/RQC锛屼簩鎬� 0鈫�4) + 鍒ゅ畾鍥涙灉(鍚堟牸/鐗归噰/閫�璐�/鎶ュ簾锛汷QC 鏀规寜浜у搧绛夌骇 1鍨�/2鍨�/搴熷搧锛屼粎搴熷搧鍒や笉鍚堟牸) + NCR 璇勫澶勭疆鍏抽棴锛汚I 鎻愪緵鍒ゅ畾寤鸿锛汵CR 褰撳墠浠呭彴璐︿笉瑙﹀彂杩斿伐鍗曘�傛敮鎸佸寲宸ユ姤鍛婅寖寮忥細鍒嗙粍鎸囨爣鏍�+鍏紡鏂囨湰+骞宠娴嬮噺鎵规+閲囨牱琛ㄥご+绛惧瓧鍖猴紝娴忚鍣ㄦ墦鍗版楠屾姤鍛婏紱骞跺彲瀵煎嚭浜у搧妫�楠屽崟 Word锛堢焊璐ㄦ楠屽崟鐗堝紡锛屽垽瀹氱粨璁哄甫鍑烘楠岀粨鏋溿�佹楠屄峰鏍嘎锋壒鍑嗙瀛楀甫鍑烘娴嬩汉路澶嶆牳浜郝峰鏍镐汉濮撳悕銆佽川妫�绔犵暀绌虹洊绔狅紝Word 鎵撳嵃锛夈��",
+     "summary": "鍥涢亾妫�楠岄椄鍙�(IQC/IPQC/OQC/RQC锛屼簩鎬� 0鈫�4) + 鍒ゅ畾鍥涙灉(鍚堟牸/鐗归噰/閫�璐�/鎶ュ簾锛汷QC 鏀规寜浜у搧绛夌骇 1鍨�/2鍨�/3鍨�/浼樼瓑鍝�/鍚堟牸鍝�/搴熷搧/涓嶅悎鏍煎搧锛屽簾鍝佷笌涓嶅悎鏍煎搧鍒や笉鍚堟牸) + NCR 璇勫澶勭疆鍏抽棴锛汚I 鎻愪緵鍒ゅ畾寤鸿锛汵CR 褰撳墠浠呭彴璐︿笉瑙﹀彂杩斿伐鍗曘�傛敮鎸佸寲宸ユ姤鍛婅寖寮忥細鍒嗙粍鎸囨爣鏍�+鍏紡鏂囨湰+骞宠娴嬮噺鎵规+閲囨牱琛ㄥご+绛惧瓧鍖猴紝娴忚鍣ㄦ墦鍗版楠屾姤鍛婏紱骞跺彲瀵煎嚭浜у搧妫�楠屽崟 Word锛堢焊璐ㄦ楠屽崟鐗堝紡锛屽垽瀹氱粨璁哄甫鍑烘楠岀粨鏋溿�佹楠屄峰鏍嘎锋壒鍑嗙瀛楀甫鍑烘娴嬩汉路澶嶆牳浜郝峰鏍镐汉濮撳悕銆佽川妫�绔犵暀绌虹洊绔狅紝Word 鎵撳嵃锛夈��",
      "steps": [
        {"stage": "鏉ユ枡", "action": "鍒拌揣閫氱煡/澶栧崗鍏ュ簱鈫扞QC锛岀粨璁哄洖鍐欐帹杩涘緟鍏ュ簱鎴栬Е鍙戦��璐�", "roles": ["IQC 璐ㄦ鍛�"]},
        {"stage": "杩囩▼", "action": "鎶ュ伐璐ㄦ宸ュ簭浜у嚭琛屸啋IPQC锛屽悎鏍兼媶琛屽叆搴撱�佷笉鍚堟牸鐢熸垚 NCR", "roles": ["IPQC 璐ㄦ鍛�"]},
-       {"stage": "鍑鸿揣", "action": "閿�鍞嚭搴撴彁浜も啋OQC(妫�娴嬬粨鏋滄寜浜у搧绛夌骇 1鍨�/2鍨�/搴熷搧蹇呭~锛�1鍨�/2鍨嬪垽琛屽悎鏍硷紝搴熷搧鍒よ涓嶅悎鏍�)锛屽叏閮ㄥ悎鏍煎悗鍑哄簱鍗曡繘鍏ュ緟鎷h揣锛屽嚭鐜板簾鍝佸垯鏁村崟鍙栨秷", "roles": ["OQC 璐ㄦ鍛�"]},
+       {"stage": "鍑鸿揣", "action": "閿�鍞嚭搴撴彁浜も啋OQC(妫�娴嬬粨鏋滄寜浜у搧绛夌骇 1鍨�/2鍨�/3鍨�/浼樼瓑鍝�/鍚堟牸鍝�/搴熷搧/涓嶅悎鏍煎搧蹇呭~锛�1鍨�/2鍨�/3鍨�/浼樼瓑鍝�/鍚堟牸鍝佸垽琛屽悎鏍硷紝搴熷搧涓庝笉鍚堟牸鍝佸垽琛屼笉鍚堟牸)锛屽叏閮ㄥ悎鏍煎悗鍑哄簱鍗曡繘鍏ュ緟鎷h揣锛屽嚭鐜板簾鍝佹垨涓嶅悎鏍煎搧鍒欐暣鍗曞彇娑�", "roles": ["OQC 璐ㄦ鍛�"]},
        {"stage": "閫�璐�", "action": "閫�鏂�/閿�鍞��璐�/鍞悗閫�璐р啋RQC锛岀粨璁哄洖璋冨崟鎹笌鍞悗", "roles": ["RQC 璐ㄦ鍛�"]},
        {"stage": "鎶ュ憡", "action": "妫�楠岀粨鏋滄寜鍒嗙粍鏍�+娴嬮噺鎵规褰曞叆锛�/indicator-result/report 鑱氬悎鍚庡墠绔墦鍗版楠屾姤鍛�(鍚噰鏍峰湴鐐�/璇佷功缂栧彿/鎵ц鏍囧噯/鍒ゅ畾缁撹路璐ㄦ涓撶敤绔�/澶嶆牳路瀹℃牳绛惧瓧鍖猴紱鍒ゅ畾缁撹甯﹀嚭妫�楠岀粨鏋溌疯川妫�绔犵暀绌虹洊绔犅锋棤骞宠娴嬮噺鏃跺垪澶寸О娴嬮噺鍊�)锛�/indicator-result/export-product-word 瀵煎嚭浜у搧妫�楠屽崟Word(鏃犳妧鏈寚鏍囧垪路鍒ゅ畾缁撹甯﹀嚭妫�楠岀粨鏋溌锋楠屄峰鏍嘎锋壒鍑嗙瀛楀甫鍑烘娴嬩汉/澶嶆牳浜�/瀹℃牳浜哄鍚嵚疯川妫�绔犵暀绌虹洊绔犅峰钩琛屾祴閲忛】鍙峰悎骞堵蜂笅杞藉悗Word鎵撳嵃锛涜川妫�鍗曡鎯呮娴嬬粨鏋淭ab鍙寜鏍峰搧鏌ョ湅鍙妫�娴嬪�兼槑缁�)", "roles": ["璐ㄦ鍛�", "澶嶆牳浜�", "瀹℃牳浜�"]},
        {"stage": "涓嶅悎鏍�", "action": "NCR: 寰呰瘎瀹♀啋璇勫鈫掑缃�(閫�璐�/鎶ュ簾/杩斿伐/璁╂鎺ユ敹/闄嶇骇)鈫掑叧闂�", "roles": ["璐ㄩ噺宸ョ▼甯�"]}]},
diff --git a/docs/project-business/data/objects.json b/docs/project-business/data/objects.json
index 8cc8a93..d7544d7 100644
--- a/docs/project-business/data/objects.json
+++ b/docs/project-business/data/objects.json
@@ -37,7 +37,7 @@
     {"name": "鎵规", "module": "浠撳偍", "table": "mes_wm_batch", "doc": "鍏宠仈鐗╂枡/宸ュ崟/渚涘簲鍟�/瀹㈡埛/璐ㄩ噺鐘舵�侊紱SN 鐮佸惈鎵规 uuid锛涙潯鐮佹敮鎸�18绉嶄笟鍔″璞�", "upstream": ["鍏ュ簱鍗曟嵁"], "downstream": ["搴撳瓨鍙拌处"], "keywords": "鎵规 batch SN 鏉$爜 杩芥函"},
     {"name": "IQC鏉ユ枡妫�楠�", "module": "璐ㄩ噺", "table": "mes_qc_iqc", "doc": "鍒拌揣閫氱煡/澶栧崗鍏ュ簱瑙﹀彂锛岃崏绋�0鈫掑畬鎴�4锛岀粨璁哄洖鍐欐潵婧愬崟鎹�", "upstream": ["鍒拌揣閫氱煡", "澶栧崗鍏ュ簱"], "downstream": ["閲囪喘鍏ュ簱", "渚涘簲鍟嗛��璐�", "NCR"], "keywords": "IQC 鏉ユ枡妫�楠�"},
     {"name": "IPQC杩囩▼妫�楠�", "module": "璐ㄩ噺", "table": "mes_qc_ipqc", "doc": "鎶ュ伐璐ㄦ宸ュ簭浜у嚭琛岃Е鍙戯紝瀹屾垚鍥炶皟鎺ㄨ繘鎶ュ伐涓庝骇鍑哄叆搴擄紱琛ㄥご=鏉ユ簮鍗曟嵁(鍙)+浜у搧鐗╂枡(MDM,蹇呭~)+鎵瑰彿(蹇呭~)+鏁伴噺+妫�楠屼俊鎭紝宸插幓鎺夌敓浜ц鍗�/宸ヤ綅/鐢熶骇浠诲姟/宸ュ簭", "upstream": ["鎶ュ伐"], "downstream": ["浜у嚭鍏ュ簱", "NCR"], "keywords": "IPQC 杩囩▼妫�楠� 宸℃ 鎵瑰彿"},
-    {"name": "OQC鍑鸿揣妫�楠�", "module": "璐ㄩ噺", "table": "mes_qc_oqc", "doc": "閿�鍞嚭搴撴彁浜よЕ鍙戯紝鑽夌0鈫掑畬鎴�4锛涙娴嬬粨鏋滄寜浜у搧绛夌骇鍒ゅ畾(1鍨�/2鍨�/搴熷搧锛屽繀濉�)锛�1鍨�/2鍨嬪垽琛屽悎鏍煎苟鎺ㄨ繘鍑哄簱鍗曞緟鎷h揣锛屽簾鍝佸垽琛屼笉鍚堟牸骞跺彇娑堥攢鍞嚭搴撳崟锛涘彂璐ф暟閲�/鍑鸿揣鏃ユ湡鍙┖", "upstream": ["閿�鍞嚭搴撳崟"], "downstream": ["閿�鍞嚭搴撳崟(鎺ㄨ繘鎴栧彇娑�)"], "keywords": "OQC 鍑鸿揣妫�楠� 鍑哄巶妫�楠� 1鍨� 2鍨� 搴熷搧"},
+    {"name": "OQC鍑鸿揣妫�楠�", "module": "璐ㄩ噺", "table": "mes_qc_oqc", "doc": "閿�鍞嚭搴撴彁浜よЕ鍙戯紝鑽夌0鈫掑畬鎴�4锛涙娴嬬粨鏋滄寜浜у搧绛夌骇鍒ゅ畾(1鍨�/2鍨�/3鍨�/浼樼瓑鍝�/鍚堟牸鍝�/搴熷搧/涓嶅悎鏍煎搧锛屽繀濉�)锛�1鍨�/2鍨�/3鍨�/浼樼瓑鍝�/鍚堟牸鍝佸垽琛屽悎鏍煎苟鎺ㄨ繘鍑哄簱鍗曞緟鎷h揣锛屽簾鍝佷笌涓嶅悎鏍煎搧鍒よ涓嶅悎鏍煎苟鍙栨秷閿�鍞嚭搴撳崟锛涘彂璐ф暟閲�/鍑鸿揣鏃ユ湡鍙┖", "upstream": ["閿�鍞嚭搴撳崟"], "downstream": ["閿�鍞嚭搴撳崟(鎺ㄨ繘鎴栧彇娑�)"], "keywords": "OQC 鍑鸿揣妫�楠� 鍑哄巶妫�楠� 1鍨� 2鍨� 3鍨� 浼樼瓑鍝� 鍚堟牸鍝� 搴熷搧 涓嶅悎鏍煎搧"},
     {"name": "RQC閫�璐ф楠�", "module": "璐ㄩ噺", "table": "mes_qc_rqc", "doc": "鐢熶骇閫�鏂�/閿�鍞��璐�/鍞悗閫�璐цЕ鍙戯紝缁撹鍥炶皟鍞悗锛涘洓绫绘楠屽崟鍧囨敮鎸侀噰鏍峰湴鐐�/璇佷功缂栧彿/鎵ц鏍囧噯琛ㄥご涓庡鏍嘎峰鏍镐汉锛屽苟鍙墦鍗版楠屾姤鍛�", "upstream": ["閫�鏂�", "閫�璐�"], "downstream": ["閫�璐у叆搴�", "鍞悗鍥炶皟", "妫�楠屾姤鍛婃墦鍗�"], "keywords": "RQC 閫�璐ф楠�"},
     {"name": "妫�楠屾寚鏍�", "module": "璐ㄩ噺", "table": "mes_qc_indicator", "doc": "鏀寔涓ょ骇鍒嗙粍鏍�(itemType褰曞叆/鍒嗙粍+parentId)銆佸叕寮忔枃鏈睍绀恒�佸崟浣嶆枃鏈�佸悓绾ф帓搴忥紱鍒嗙粍椤逛笉褰曞�硷紱鏈夊瓙椤圭鍒狅紱鍚屽眰绾у悕绉板彲閲嶅", "upstream": [], "downstream": ["璐ㄦ鏂规", "妫�楠屾姤鍛婃墦鍗�"], "keywords": "妫�楠屾寚鏍� indicator 鍒嗙粍 鍏紡 鍖栧伐"},
     {"name": "妫�楠屾姤鍛婃墦鍗�", "module": "璐ㄩ噺", "table": "mes_qc_indicator_result_detail", "doc": "鍖栧伐鎶ュ憡鑼冨紡锛氬钩琛屾祴閲忔壒娆�(measure_no)+鍒嗙粍鐭╅樀+鍏紡鍒�+绛惧瓧鍖猴紱/mes/qc/indicator-result/report 鑱氬悎锛屽墠绔祻瑙堝櫒鎵撳嵃", "upstream": ["IQC鏉ユ枡妫�楠�", "IPQC杩囩▼妫�楠�", "OQC鍑鸿揣妫�楠�", "RQC閫�璐ф楠�", "妫�楠屾寚鏍�"], "downstream": [], "keywords": "鎵撳嵃 鎶ュ憡 娴嬮噺鎵规 绛惧瓧 姝d竵閱� GB/T6027"},
diff --git a/docs/project-business/mermaid/05-quality-flow.mmd b/docs/project-business/mermaid/05-quality-flow.mmd
index f3f6bbd..4655c69 100644
--- a/docs/project-business/mermaid/05-quality-flow.mmd
+++ b/docs/project-business/mermaid/05-quality-flow.mmd
@@ -11,8 +11,8 @@
   R -->|3 涓嶅悎鏍奸��璐 Q3[鐢熸垚NCR路璧颁緵搴斿晢閫�璐ф垨閿�鍞��璐
   R -->|4 涓嶅悎鏍兼姤搴焲 Q4[鐢熸垚NCR路璧版姤搴熷嚭搴揮
   A3 --> R2{鍑鸿揣鍒ゅ畾 MesQcOqcCheckResultEnum路蹇呭~}
-  R2 -->|1鍨�/2鍨媩 S1[鍑哄簱琛屽垽鍚堟牸路鎺ㄨ繘鍑哄簱鍗曞緟鎷h揣]
-  R2 -->|搴熷搧| S2[鍑哄簱琛屽垽涓嶅悎鏍悸峰彇娑堥攢鍞嚭搴撳崟]
+  R2 -->|1鍨�/2鍨�/3鍨�/浼樼瓑鍝�/鍚堟牸鍝亅 S1[鍑哄簱琛屽垽鍚堟牸路鎺ㄨ繘鍑哄簱鍗曞緟鎷h揣]
+  R2 -->|搴熷搧/涓嶅悎鏍煎搧| S2[鍑哄簱琛屽垽涓嶅悎鏍悸峰彇娑堥攢鍞嚭搴撳崟]
   A3 -.-> N5[琛ㄥご:鍙戣揣鏁伴噺/鍑鸿揣鏃ユ湡闈炲繀濉锋娴嬬粨鏋滃繀濉玗
   A2 -.-> N6[琛ㄥご:鏉ユ簮鍗曟嵁鍙路浜у搧鐗╂枡(MDM)蹇呭~路鎵瑰彿蹇呭~路宸插幓鎺夌敓浜ц鍗�/宸ヤ綅/鐢熶骇浠诲姟/宸ュ簭]
   A2 -->|鍚堟牸鏁伴噺| Q5[鎶ュ伐杞畬鎴惵蜂骇鍑烘媶琛屽叆搴揮
diff --git a/docs/sql/config_export_all_20260904.sql b/docs/sql/config_export_all_20260904.sql
index 754c734..d9bc193 100644
--- a/docs/sql/config_export_all_20260904.sql
+++ b/docs/sql/config_export_all_20260904.sql
@@ -988,7 +988,7 @@
 ('2046', 'MES 缁翠慨宸ュ崟鐘舵��', 'mes_dv_repair_status', '0', 'MES 璁惧绠$悊 - 缁翠慨宸ュ崟鐘舵�侊紙10=寰呯淮淇紝20=缁翠慨涓紝30=宸插畬鎴愶紝40=宸查獙鏀讹級', '1', '2026-02-20 10:56:24', '1', '2026-02-20 10:56:24', X'00', NULL),
 ('2047', 'MES 缁翠慨缁撴灉', 'mes_dv_repair_result', '0', 'MES 璁惧绠$悊 - 缁翠慨缁撴灉锛�1=淇鎴愬姛锛�2=鎶ュ簾锛�', '1', '2026-02-20 10:56:24', '1', '2026-02-20 10:56:24', X'00', NULL),
 ('2049', 'MES 妫�娴嬬粨鏋�', 'mes_qc_check_result', '0', '鏉ユ枡妫�楠岀殑鏈�缁堢粨鏋滃垽瀹�', '1', '2026-02-20 11:23:35', '1', '2026-02-20 11:23:35', X'00', NULL),
-('1065400', 'MES 鍑鸿揣妫�楠屾娴嬬粨鏋�', 'mes_oqc_check_result', '0', '鍑鸿揣妫�楠屽崟(OQC)鍒ゅ畾缁撴灉锛�1鍨�/2鍨嬩负鍙彂璐х瓑绾э紝搴熷搧涓嶆斁琛�', '1', '2026-09-22 00:00:00', '1', '2026-09-22 00:00:00', X'00', NULL),
+('1065400', 'MES 鍑鸿揣妫�楠屾娴嬬粨鏋�', 'mes_oqc_check_result', '0', '鍑鸿揣妫�楠屽崟(OQC)鍒ゅ畾缁撴灉锛�1鍨�/2鍨�/3鍨�/浼樼瓑鍝�/鍚堟牸鍝佷负鍙彂璐х瓑绾э紝搴熷搧涓庝笉鍚堟牸鍝佷笉鏀捐', '1', '2026-09-22 00:00:00', '1', '2026-09-22 00:00:00', X'00', NULL),
 ('2050', 'MES 鏉ユ簮鍗曟嵁绫诲瀷', 'mes_qc_source_doc_type', '0', 'IQC 鏉ユ枡妫�楠岀殑鏉ユ簮鍗曟嵁绫诲瀷', '1', '2026-02-20 11:23:35', '1', '2026-02-20 11:23:35', X'00', NULL),
 ('2051', 'MES 瀹夌伅澶勭疆鐘舵��', 'mes_pro_andon_status', '0', 'MES 鐢熶骇绠$悊 - 瀹夌伅澶勭疆鐘舵�侊紙0=鏈缃紝1=宸插缃級', '1', '2026-02-21 00:08:38', '1', '2026-02-21 00:08:38', X'00', NULL),
 ('2052', 'MES 瀹夌伅绾у埆', 'mes_pro_andon_level', '0', 'MES 鐢熶骇绠$悊 - 瀹夌伅绾у埆锛�1=涓�绾э紝2=浜岀骇锛�3=涓夌骇锛�', '1', '2026-02-21 00:08:38', '1', '2026-02-21 00:08:38', X'00', NULL),
@@ -1826,6 +1826,10 @@
 ('1065401', '1', '1鍨�', '1', 'mes_oqc_check_result', '0', 'success', '', '', '1', '2026-09-22 00:00:00', '1', '2026-09-22 00:00:00', X'00'),
 ('1065402', '2', '2鍨�', '2', 'mes_oqc_check_result', '0', 'primary', '', '', '1', '2026-09-22 00:00:00', '1', '2026-09-22 00:00:00', X'00'),
 ('1065403', '3', '搴熷搧', '3', 'mes_oqc_check_result', '0', 'danger', '', '', '1', '2026-09-22 00:00:00', '1', '2026-09-22 00:00:00', X'00'),
+('1065404', '4', '3鍨�', '4', 'mes_oqc_check_result', '0', 'success', '', '', '1', '2026-09-24 00:00:00', '1', '2026-09-24 00:00:00', X'00'),
+('1065405', '5', '浼樼瓑鍝�', '5', 'mes_oqc_check_result', '0', 'success', '', '', '1', '2026-09-24 00:00:00', '1', '2026-09-24 00:00:00', X'00'),
+('1065406', '6', '鍚堟牸鍝�', '6', 'mes_oqc_check_result', '0', 'primary', '', '', '1', '2026-09-24 00:00:00', '1', '2026-09-24 00:00:00', X'00'),
+('1065407', '7', '涓嶅悎鏍煎搧', '7', 'mes_oqc_check_result', '0', 'danger', '', '', '1', '2026-09-24 00:00:00', '1', '2026-09-24 00:00:00', X'00'),
 ('3166', '0', '鏈缃�', '0', 'mes_pro_andon_status', '0', 'danger', '', '', '1', '2026-02-21 00:08:38', '1', '2026-02-21 00:08:38', X'00'),
 ('3167', '1', '宸插缃�', '1', 'mes_pro_andon_status', '0', 'success', '', '', '1', '2026-02-21 00:08:38', '1', '2026-02-21 00:08:38', X'00'),
 ('3168', '1', '涓�绾�', '1', 'mes_pro_andon_level', '0', 'danger', '', '', '1', '2026-02-21 00:08:38', '1', '2026-02-21 00:08:38', X'00'),
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/batch/vo/MesWmBatchSalesTargetRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/batch/vo/MesWmBatchSalesTargetRespVO.java
index 5da84ae..ce030b1 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/batch/vo/MesWmBatchSalesTargetRespVO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/batch/vo/MesWmBatchSalesTargetRespVO.java
@@ -31,7 +31,7 @@
     @Schema(description = "鍑哄巶妫�楠屽崟鍙凤紙OQC锛�", example = "OQC20250801001")
     private String oqcCode;
 
-    @Schema(description = "OQC 妫�楠岀粨璁猴紙瀛楀吀 mes_qc_check_result锛�", example = "1")
+    @Schema(description = "OQC 妫�楠岀粨璁猴紙瀛楀吀 mes_oqc_check_result锛�", example = "1")
     private Integer checkResult;
 
     @Schema(description = "鐗╂枡 ID", example = "1")
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/qc/MesQcOqcCheckResultEnum.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/qc/MesQcOqcCheckResultEnum.java
index 19b45b2..bb5b02a 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/qc/MesQcOqcCheckResultEnum.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/qc/MesQcOqcCheckResultEnum.java
@@ -18,7 +18,11 @@
 
     TYPE_1(1, "1鍨�"),
     TYPE_2(2, "2鍨�"),
-    SCRAP(3, "搴熷搧");
+    SCRAP(3, "搴熷搧"),
+    TYPE_3(4, "3鍨�"),
+    EXCELLENT(5, "浼樼瓑鍝�"),
+    QUALIFIED(6, "鍚堟牸鍝�"),
+    UNQUALIFIED(7, "涓嶅悎鏍煎搧");
 
     public static final Integer[] ARRAYS = Arrays.stream(values()).map(MesQcOqcCheckResultEnum::getType).toArray(Integer[]::new);
 
@@ -39,13 +43,15 @@
     /**
      * 鍒ゆ柇鏄惁鍙互鏀捐鍙戣揣
      *
-     * <p>1 鍨嬨��2 鍨嬪潎涓哄彲鍙戣揣绛夌骇锛屼粎搴熷搧涓嶆斁琛�</p>
+     * <p>搴熷搧銆佷笉鍚堟牸鍝佷笉鏀捐锛屽叾浣欑瓑绾э紙1 鍨嬨��2 鍨嬨��3 鍨嬨�佷紭绛夊搧銆佸悎鏍煎搧锛夊潎鍙彂璐�</p>
      *
      * @param type 妫�娴嬬粨鏋�
      * @return true 鍙互鏀捐
      */
     public static boolean canShip(Integer type) {
-        return type != null && !SCRAP.getType().equals(type);
+        return type != null
+                && !SCRAP.getType().equals(type)
+                && !UNQUALIFIED.getType().equals(type);
     }
 
 }
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineServiceImpl.java
index 247a487..388d365 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineServiceImpl.java
@@ -232,7 +232,7 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void updateProductSalesLineWhenOqcFinish(Long id, Long oqcId, Integer checkResult) {
-        // 1. 鏇存柊琛岀殑 oqcId + qualityStatus锛�1鍨�/2鍨嬫斁琛岋紝搴熷搧鍒や笉鍚堟牸锛�
+        // 1. 鏇存柊琛岀殑 oqcId + qualityStatus锛�1鍨�/2鍨�/3鍨�/浼樼瓑鍝�/鍚堟牸鍝佹斁琛岋紝搴熷搧涓庝笉鍚堟牸鍝佸垽涓嶅悎鏍硷級
         Integer qualityStatus = MesQcOqcCheckResultEnum.canShip(checkResult)
                 ? MesWmQualityStatusEnum.PASS.getStatus() : MesWmQualityStatusEnum.FAIL.getStatus();
         productSalesLineMapper.updateById(new MesWmProductSalesLineDO()

--
Gitblit v1.9.3