From 8c65f898ed6e5b0c7a94c792c4562f6ec831dccd Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期六, 07 十一月 2026 08:50:53 +0800
Subject: [PATCH] feat: 完善质检、生产、销售、财务与人事模块并接入审批流程

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java |  162 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 158 insertions(+), 4 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java
index 81e15c6..509733b 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java
@@ -18,6 +18,7 @@
     ErrorCode MD_ITEM_TYPE_CODE_DUPLICATE = new ErrorCode(1_040_100_005, "鍚屼竴鐖跺垎绫讳笅宸插瓨鍦ㄨ缂栫爜鐨勫垎绫�");
     ErrorCode MD_ITEM_TYPE_PARENT_IS_CHILD = new ErrorCode(1_040_100_006, "涓嶈兘璁剧疆鑷繁鐨勫瓙鍒嗙被涓虹埗鍒嗙被");
     ErrorCode MD_ITEM_TYPE_EXITS_ITEM = new ErrorCode(1_040_100_007, "璇ュ垎绫讳笅瀛樺湪鐗╂枡锛屾棤娉曞垹闄�");
+    ErrorCode MD_ITEM_TYPE_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_100_008, "瀵煎叆鐨勭墿鏂欏垎绫绘暟鎹笉鑳戒负绌�");
 
     // ========== MES 鍩虹鏁版嵁-璁¢噺鍗曚綅锛�1-040-101-000锛� ==========
     ErrorCode MD_UNIT_MEASURE_NOT_EXISTS = new ErrorCode(1_040_101_000, "璁¢噺鍗曚綅涓嶅瓨鍦�");
@@ -31,6 +32,7 @@
     // ========== MES 鍩虹鏁版嵁-鐗╂枡锛�1-040-102-000锛� ==========
     ErrorCode MD_ITEM_NOT_EXISTS = new ErrorCode(1_040_102_000, "鐗╂枡涓嶅瓨鍦�");
     ErrorCode MD_ITEM_CODE_DUPLICATE = new ErrorCode(1_040_102_001, "鐗╂枡缂栫爜宸插瓨鍦�");
+    // 1_040_102_002锛氱墿鏂欏悕绉板敮涓�鏍¢獙宸插彇娑堬紙鍏佽鍚屽悕涓嶅悓缂栫爜锛屼笌 MDM 鐗╂枡瀵归綈锛夛紝姝ょ爜浠呬繚鐣欏崰浣嶏紝璇峰嬁鍐嶇敤浜庢牎楠�
     ErrorCode MD_ITEM_NAME_DUPLICATE = new ErrorCode(1_040_102_002, "鐗╂枡鍚嶇О宸插瓨鍦�");
     ErrorCode MD_ITEM_BATCH_REQUIRED = new ErrorCode(1_040_102_004, "褰撳墠鐗╂枡鍚敤浜嗘壒娆$鐞嗭紝璇烽�夋嫨鎵规");
     ErrorCode MD_ITEM_IS_DISABLE = new ErrorCode(1_040_102_005, "鐗╂枡宸茬鐢�");
@@ -39,6 +41,7 @@
     ErrorCode MD_ITEM_BATCH_CONFIG_NOT_EXISTS = new ErrorCode(1_040_102_100, "鐗╂枡鎵规灞炴�ч厤缃笉瀛樺湪");
     ErrorCode MD_ITEM_BATCH_CONFIG_AT_LEAST_ONE_FLAG = new ErrorCode(1_040_102_101, "鎵规绠$悊宸插惎鐢紝鑷冲皯闇�瑕侀厤缃竴涓壒娆″睘鎬�");
     ErrorCode MD_ITEM_PRODUCT_BOM_REQUIRED = new ErrorCode(1_040_102_102, "浜у搧绫荤墿鏂欏惎鐢ㄥ墠锛屽繀椤婚厤缃嚦灏戜竴涓� BOM 缁勬垚");
+    ErrorCode MD_ITEM_BATCH_CONFIG_AT_LEAST_ONE_APPROVE_FLAG = new ErrorCode(1_040_102_103, "闇�瑕侀厤缃竴涓壒娆″睘鎬�,璇峰湪瀹℃壒鎰忚涓~鍐�");
 
     // ========== MES 浠撳簱绠$悊-鎵规绠$悊锛�1-040-717-000锛� ==========
     ErrorCode WM_BATCH_PRODUCE_DATE_REQUIRED = new ErrorCode(1_040_717_000, "鎵规閰嶇疆瑕佹眰鐢熶骇鏃ユ湡涓嶈兘涓虹┖");
@@ -57,12 +60,12 @@
     ErrorCode WM_BATCH_QUALITY_STATUS_REQUIRED = new ErrorCode(1_040_717_013, "鎵规閰嶇疆瑕佹眰璐ㄩ噺鐘舵�佷笉鑳戒负绌�");
     ErrorCode WM_BATCH_NOT_EXISTS = new ErrorCode(1_040_717_014, "鎵规涓嶅瓨鍦�");
     ErrorCode WM_BATCH_ITEM_MISMATCH = new ErrorCode(1_040_717_015, "鎵规涓嶅睘浜庡綋鍓嶇墿鏂�");
+    ErrorCode WM_BATCH_REEL_MISMATCH = new ErrorCode(1_040_717_018, "鎵�閫夋壒娆$殑鐩樺彿涓庣敓浜ц鍗曠洏鍙蜂笉涓�鑷�");
     ErrorCode WM_BATCH_CLIENT_MISMATCH = new ErrorCode(1_040_717_016, "鎵规涓嶅睘浜庡綋鍓嶅鎴�");
     ErrorCode WM_BATCH_VENDOR_MISMATCH = new ErrorCode(1_040_717_017, "鎵规涓嶅睘浜庡綋鍓嶄緵搴斿晢");
 
     // ========== MES 鍩虹鏁版嵁-瀹㈡埛锛�1-040-103-000锛� ==========
     ErrorCode MD_CLIENT_NOT_EXISTS = new ErrorCode(1_040_103_000, "瀹㈡埛涓嶅瓨鍦�");
-    ErrorCode MD_CLIENT_CODE_DUPLICATE = new ErrorCode(1_040_103_001, "瀹㈡埛缂栫爜宸插瓨鍦�");
     ErrorCode MD_CLIENT_NAME_DUPLICATE = new ErrorCode(1_040_103_002, "瀹㈡埛鍚嶇О宸插瓨鍦�");
     ErrorCode MD_CLIENT_NICKNAME_DUPLICATE = new ErrorCode(1_040_103_003, "瀹㈡埛绠�绉板凡瀛樺湪");
     ErrorCode MD_CLIENT_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_103_004, "瀵煎叆瀹㈡埛鏁版嵁涓嶈兘涓虹┖");
@@ -160,7 +163,7 @@
 
     // ========== MES 璁惧绠$悊-璁惧鍙拌处锛�1-040-301-000锛� ==========
     ErrorCode DV_MACHINERY_NOT_EXISTS = new ErrorCode(1_040_301_000, "璁惧涓嶅瓨鍦�");
-    ErrorCode DV_MACHINERY_CODE_DUPLICATE = new ErrorCode(1_040_301_001, "璁惧缂栫爜宸插瓨鍦�");
+    ErrorCode DV_MACHINERY_CODE_DUPLICATE = new ErrorCode(1_040_301_001, "璁惧缂栧彿宸插瓨鍦�");
     ErrorCode DV_MACHINERY_IS_DISABLE = new ErrorCode(1_040_301_007, "璁惧宸茬鐢�");
     ErrorCode DV_MACHINERY_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_301_002, "瀵煎叆璁惧鏁版嵁涓嶈兘涓虹┖");
     ErrorCode DV_MACHINERY_HAS_CHECK_PLAN = new ErrorCode(1_040_301_003, "璁惧宸插叧鑱旂偣妫�璁″垝锛屾棤娉曞垹闄�");
@@ -215,6 +218,15 @@
     // ========== MES 璁惧绠$悊-鐐规璁板綍鏄庣粏锛�1-040-306-100锛� ==========
     ErrorCode DV_CHECK_RECORD_LINE_NOT_EXISTS = new ErrorCode(1_040_306_100, "璁惧鐐规璁板綍鏄庣粏涓嶅瓨鍦�");
 
+    // ========== MES 璁惧绠$悊-璁¢噺鍣ㄥ叿锛�1-040-307-000锛� ==========
+    ErrorCode DV_METERING_NOT_EXISTS = new ErrorCode(1_040_307_000, "璁¢噺鍣ㄥ叿涓嶅瓨鍦�");
+    ErrorCode DV_METERING_CODE_DUPLICATE = new ErrorCode(1_040_307_001, "璁¢噺鍣ㄥ叿缂栫爜宸插瓨鍦�");
+    ErrorCode DV_METERING_HAS_CHECK_RECORD = new ErrorCode(1_040_307_002, "璁¢噺鍣ㄥ叿宸插叧鑱旀娴嬭褰曪紝鏃犳硶鍒犻櫎");
+
+    // ========== MES 璁惧绠$悊-璁¢噺妫�娴嬭褰曪紙1-040-307-100锛� ==========
+    ErrorCode DV_METERING_CHECK_NOT_EXISTS = new ErrorCode(1_040_307_100, "璁¢噺妫�娴嬭褰曚笉瀛樺湪");
+    ErrorCode DV_METERING_CHECK_CODE_DUPLICATE = new ErrorCode(1_040_307_101, "璁¢噺妫�娴嬬紪鍙峰凡瀛樺湪");
+
     // ========== MES 宸ュ叿绠$悊-宸ュ叿绫诲瀷锛�1-040-400-000锛� ==========
     ErrorCode TM_TOOL_TYPE_NOT_EXISTS = new ErrorCode(1_040_400_000, "宸ュ叿绫诲瀷涓嶅瓨鍦�");
     ErrorCode TM_TOOL_TYPE_CODE_DUPLICATE = new ErrorCode(1_040_400_001, "宸ュ叿绫诲瀷缂栫爜宸插瓨鍦�");
@@ -233,6 +245,10 @@
     ErrorCode PRO_PROCESS_NAME_EXISTS = new ErrorCode(1_040_500_002, "宸ュ簭鍚嶇О宸插瓨鍦�");
     ErrorCode PRO_PROCESS_USED_BY_ROUTE = new ErrorCode(1_040_500_003, "宸ュ簭宸茶宸ヨ壓璺嚎寮曠敤锛屾棤娉曞垹闄�");
     ErrorCode PRO_PROCESS_IS_DISABLE = new ErrorCode(1_040_500_004, "宸ュ簭宸茬鐢�");
+    ErrorCode PRO_PROCESS_BILLING_TYPE_INVALID = new ErrorCode(1_040_500_005,
+            "宸ュ簭銆寋}銆嶇殑璁¤垂绫诲瀷[{}]鏃犳晥锛屽彧鑳芥槸 1-璁℃椂 鎴� 2-璁′欢锛岃閲嶆柊閫夋嫨璁¤垂绫诲瀷");
+    ErrorCode PRO_PROCESS_WAGE_RATE_INVALID = new ErrorCode(1_040_500_006,
+            "宸ュ簭銆寋}銆嶇殑宸ヨ祫瀹氶[{}]鏃犳晥锛屽繀椤诲ぇ浜庣瓑浜� 0锛堣鏃朵负鍏�/灏忔椂锛岃浠朵负鍏�/浠讹級锛岃閲嶆柊濉啓");
     // ========== MES 鐢熶骇绠$悊-宸ュ簭鍐呭锛�1-040-500-100锛� ==========
     ErrorCode PRO_PROCESS_CONTENT_NOT_EXISTS = new ErrorCode(1_040_500_100, "宸ュ簭鍐呭涓嶅瓨鍦�");
 
@@ -243,6 +259,7 @@
     ErrorCode PRO_ROUTE_ENABLE_NO_KEY_PROCESS = new ErrorCode(1_040_501_003, "宸ヨ壓璺嚎蹇呴』瑕佹湁鍏抽敭宸ュ簭");
     ErrorCode PRO_ROUTE_ENABLE_PRODUCT_NO_BOM = new ErrorCode(1_040_501_004, "浜у搧 {} 鏈厤缃伐搴忕殑 BOM 娑堣��");
     ErrorCode PRO_ROUTE_IS_ENABLE = new ErrorCode(1_040_501_005, "宸ヨ壓璺嚎宸插惎鐢紝涓嶅厑璁告搷浣�");
+    ErrorCode PRO_ROUTE_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_501_006, "瀵煎叆宸ヨ壓璺嚎鏁版嵁涓嶈兘涓虹┖");
     // ========== MES 鐢熶骇绠$悊-宸ヨ壓璺嚎宸ュ簭锛�1-040-501-100锛� ==========
     ErrorCode PRO_ROUTE_PROCESS_NOT_EXISTS = new ErrorCode(1_040_501_100, "宸ヨ壓璺嚎宸ュ簭涓嶅瓨鍦�");
     ErrorCode PRO_ROUTE_PROCESS_SORT_DUPLICATE = new ErrorCode(1_040_501_101, "搴忓彿宸插瓨鍦�");
@@ -251,6 +268,13 @@
     // ========== MES 鐢熶骇绠$悊-宸ヨ壓璺嚎浜у搧锛�1-040-501-200锛� ==========
     ErrorCode PRO_ROUTE_PRODUCT_NOT_EXISTS = new ErrorCode(1_040_501_200, "宸ヨ壓璺嚎浜у搧涓嶅瓨鍦�");
     ErrorCode PRO_ROUTE_PRODUCT_ITEM_DUPLICATE = new ErrorCode(1_040_501_201, "姝や骇鍝佸凡閰嶇疆浜嗗伐鑹鸿矾绾�");
+    ErrorCode PRO_ROUTE_PRODUCT_ITEM_TYPE_INVALID = new ErrorCode(1_040_501_202, "鐗╂枡銆恵}銆戠殑涓绘暟鎹被鍨嬪強MES鍒嗙被鍧囬潪鎴愬搧/鍗婃垚鍝侊紝璇峰厛鏍稿鐗╂枡绫诲瀷");
+    ErrorCode PRO_ROUTE_PRODUCT_WAREHOUSE_REQUIRED = new ErrorCode(1_040_501_203, "浜у搧銆恵}銆戞湭閰嶇疆鎶ュ伐鍏ュ簱浠撳簱銆佸簱鍖哄拰搴撲綅");
+    ErrorCode PRO_ROUTE_PROCESS_OUTPUT_REQUIRED = new ErrorCode(1_040_501_204, "宸ュ簭銆恵}銆戞湭閰嶇疆浜у嚭浜у搧");
+    ErrorCode PRO_ROUTE_PROCESS_OUTPUT_NOT_BOUND = new ErrorCode(1_040_501_205, "宸ュ簭浜у嚭浜у搧銆恵}銆戞湭缁戝畾鍒板綋鍓嶅伐鑹鸿矾绾�");
+    ErrorCode PRO_ROUTE_MIDDLE_OUTPUT_INVALID = new ErrorCode(1_040_501_206, "涓棿宸ュ簭銆恵}銆戝彧鑳戒骇鍑哄崐鎴愬搧鍒嗙被浜у搧");
+    ErrorCode PRO_ROUTE_LAST_OUTPUT_INVALID = new ErrorCode(1_040_501_207, "鏈亾宸ュ簭銆恵}銆戝彧鑳戒骇鍑烘垚鍝佸垎绫讳骇鍝侊紝涓斿繀椤诲寘鍚叏閮ㄧ粦瀹氭垚鍝�");
+    ErrorCode PRO_ROUTE_LAST_OUTPUT_ATTRIBUTION_REQUIRED = new ErrorCode(1_040_501_208, "鏈亾宸ュ簭銆恵}銆戠殑鎴愬搧浜у嚭蹇呴』鎸変骇鍝佸綊灞為厤缃紝姣忎釜鎴愬搧褰掑睘鍒拌嚜韬紝涓嶈兘浣跨敤鈥滈�氱敤鈥�");
     // ========== MES 鐢熶骇绠$悊-宸ヨ壓璺嚎浜у搧BOM锛�1-040-501-300锛� ==========
     ErrorCode PRO_ROUTE_PRODUCT_BOM_NOT_EXISTS = new ErrorCode(1_040_501_300, "宸ヨ壓璺嚎浜у搧 BOM 涓嶅瓨鍦�");
     ErrorCode PRO_ROUTE_PRODUCT_BOM_DUPLICATE = new ErrorCode(1_040_501_301, "褰撳墠 BOM 鐗╂枡鍦ㄦ宸ュ簭宸茬粡閰嶇疆杩�");
@@ -280,13 +304,17 @@
 
     // ========== MES 鐢熶骇绠$悊-鐢熶骇浠诲姟锛�1-040-503-000锛� ==========
     ErrorCode PRO_TASK_NOT_EXISTS = new ErrorCode(1_040_503_000, "鐢熶骇浠诲姟涓嶅瓨鍦�");
+    ErrorCode PRO_TASK_SCHEDULE_INVALID = new ErrorCode(1_040_503_020, "鎺掍骇鏍¢獙鏈�氳繃锛歿}");
+    ErrorCode PRO_TASK_SCHEDULE_PREVIEW_CHANGED = new ErrorCode(1_040_503_021, "鎺掍骇鏁版嵁宸插彉鍖栨垨棰勮宸茶繃鏈燂紝璇烽噸鏂扮敓鎴愰瑙堝悗纭");
     ErrorCode PRO_TASK_ALREADY_FINISHED = new ErrorCode(1_040_503_001, "鐢熶骇浠诲姟宸插畬鎴愭垨宸插彇娑堬紝涓嶈兘缁х画鎿嶄綔");
     ErrorCode PRO_TASK_WORK_ORDER_MISMATCH = new ErrorCode(1_040_503_002, "鐢熶骇浠诲姟涓嶅睘浜庡綋鍓嶇敓浜у伐鍗�");
     ErrorCode PRO_TASK_WORKSTATION_MISMATCH = new ErrorCode(1_040_503_003, "鐢熶骇浠诲姟涓嶅睘浜庡綋鍓嶅伐浣滅珯");
     ErrorCode PRO_TASK_ROUTE_PROCESS_MISMATCH = new ErrorCode(1_040_503_004, "鐢熶骇浠诲姟涓庡綋鍓嶅伐鑹鸿矾绾挎垨宸ュ簭涓嶄竴鑷�");
     ErrorCode PRO_TASK_ITEM_MISMATCH = new ErrorCode(1_040_503_005, "妫�楠岀墿鏂欎笌鐢熶骇浠诲姟鐗╂枡涓嶄竴鑷�");
     ErrorCode PRO_TASK_HAS_FEEDBACK = new ErrorCode(1_040_503_006, "璇ヤ换鍔′笅瀛樺湪鎶ュ伐璁板綍锛屾棤娉曞垹闄わ紙閬垮厤鎶ュ伐杩芥函鏂摼锛�");
-    ErrorCode PRO_WORKSTATION_PROCESS_MISMATCH = new ErrorCode(1_040_503_006, "宸ヤ綔绔欐墍灞炲伐搴忎笌褰撳墠宸ュ簭涓嶄竴鑷�");
+    ErrorCode PRO_WORKSTATION_PROCESS_MISMATCH = new ErrorCode(1_040_503_009, "宸ヤ綔绔欐墍灞炲伐搴忎笌褰撳墠宸ュ簭涓嶄竴鑷�"); // 淇缂栧彿鍐茬獊
+    ErrorCode PRO_TASK_CANNOT_PAUSE = new ErrorCode(1_040_503_007, "鍙湁銆愯崏绋裤�戙�併�愮敓浜т腑銆戞垨銆愰儴鍒嗗畬鎴愩�戠殑浠诲姟鍙互鍋滃伐");
+    ErrorCode PRO_TASK_NOT_PAUSED = new ErrorCode(1_040_503_008, "浠诲姟涓嶅浜庛�愬凡鍋滃伐銆戠姸鎬侊紝鏃犳硶澶嶅伐");
     // ========== MES 鐢熶骇绠$悊-鐢熶骇浠诲姟鎶曟枡锛�1-040-503-100锛� ==========
     ErrorCode PRO_TASK_ISSUE_NOT_EXISTS = new ErrorCode(1_040_503_100, "鐢熶骇浠诲姟鎶曟枡璁板綍涓嶅瓨鍦�");
 
@@ -314,7 +342,37 @@
     ErrorCode PRO_FEEDBACK_QUALIFIED_UNQUALIFIED_REQUIRED = new ErrorCode(1_040_506_011, "璇疯緭鍏ュ悎鏍煎搧鍜屼笉鑹搧鏁伴噺锛屼笖鍚堣椤诲ぇ浜� 0");
     ErrorCode PRO_FEEDBACK_UNCHECK_QUANTITY_EXISTS = new ErrorCode(1_040_506_012, "褰撳墠鎶ュ伐鍗曟湭瀹屾垚妫�楠岋紙寰呮鏁伴噺锛歿}锛夛紝鏃犳硶鎵ц鎶ュ伐");
     ErrorCode PRO_FEEDBACK_BACKFLUSH_BOM_REQUIRED = new ErrorCode(1_040_506_013, "褰撳墠宸ュ簭涓哄�掑啿宸ュ簭锛屼絾鏈厤缃瓸OM娑堣�楋紝鏃犳硶鎶ュ伐");
+    ErrorCode PRO_FEEDBACK_CANNOT_CREATE_WHEN_PAUSED = new ErrorCode(1_040_506_014, "鐢熶骇浠诲姟澶勪簬鍋滃伐鐘舵�侊紝鏃犳硶鎶ュ伐");
+    ErrorCode PRO_FEEDBACK_PENDING_PRODUCE_UNREPAIRABLE = new ErrorCode(1_040_506_015,
+            "鎶ュ伐瀵瑰簲鐨勪骇鍑哄叆搴撳崟宸插瓨鍦ㄥ鐞嗙粨鏋滐紝鏃犳硶鑷姩琛ョ敓鎴愬緟妫�琛岋紝璇疯繍琛岃川妫�鎶ュ伐鏁版嵁淇鑴氭湰鏍稿");
+    ErrorCode PRO_FEEDBACK_PREV_PROCESS_NOT_FINISHED = new ErrorCode(1_040_506_016,
+            "涓婁竴閬撳伐搴忋�寋}銆嶅皻鏈姤宸ュ畬鎴愶紙鍓╀綑 {}锛夛紝璇峰厛瀹屾垚涓婁竴閬撳伐搴忕殑鎶ュ伐");
+    ErrorCode PRO_FEEDBACK_EQUIPMENT_INVALID = new ErrorCode(1_040_506_017, "鎶ュ伐璁惧鏍¢獙澶辫触锛歿}");
+    ErrorCode PRO_FEEDBACK_PROCESS_NOT_EXISTS = new ErrorCode(1_040_506_018,
+            "褰撳墠鐢熶骇浠诲姟鍏宠仈鐨勫伐搴� ID={} 涓嶅瓨鍦紝鏃犳硶璁$畻鎶ュ伐宸ヨ祫锛岃鑱旂郴宸ヨ壓鍛樻鏌ヤ换鍔$殑宸ュ簭閰嶇疆");
+    ErrorCode PRO_FEEDBACK_WORK_HOURS_REQUIRED = new ErrorCode(1_040_506_019,
+            "宸ュ簭銆寋}銆嶆寜璁℃椂璁¤柂锛岃濉啓鏈鎶ュ伐宸ユ椂锛堝皬鏃讹級锛屽伐鏃跺繀椤诲ぇ浜� 0锛涜嫢瀹為檯鎸夋暟閲忚钖紝璇峰厛鎶婅宸ュ簭鐨勮璐圭被鍨嬫敼涓鸿浠�");
+    ErrorCode PRO_FEEDBACK_TIME_BILLING_QUICK_UNSUPPORTED = new ErrorCode(1_040_506_020,
+            "宸ュ簭銆寋}銆嶆寜璁℃椂璁¤柂锛屽揩鎹锋姤宸ユ棤娉曞綍鍏ュ伐鏃讹紙灏忔椂锛夛紱璇峰埌銆岀敓浜ф姤宸ャ�嶉〉闈㈡柊澧炴姤宸ュ苟濉啓宸ユ椂");
 
+    // ========== MES 鐢熶骇绠$悊-杈呭姪宸ユ椂閰嶇疆锛�1-040-510-000锛� ==========
+    ErrorCode PRO_WORKTIME_AUX_NOT_EXISTS = new ErrorCode(1_040_510_000, "杈呭姪宸ユ椂椤圭洰涓嶅瓨鍦�");
+    ErrorCode PRO_WORKTIME_AUX_PROCESS_NOT_EXISTS = new ErrorCode(1_040_510_001,
+            "鎵�閫夊伐搴� ID={} 涓嶅瓨鍦紝鏃犳硶淇濆瓨杈呭姪宸ユ椂椤圭洰锛岃閲嶆柊閫夋嫨宸ュ簭");
+    ErrorCode PRO_WORKTIME_AUX_MEASURE_TYPE_INVALID = new ErrorCode(1_040_510_002,
+            "杈呭姪宸ユ椂椤圭洰銆寋}銆嶇殑璁¢噺鏂瑰紡[{}]鏃犳晥锛屽彧鑳芥槸 1-鎸夋 / 2-鎸変釜 / 3-鎸夌洏 / 4-鎸夌背鎶樼畻锛岃閲嶆柊閫夋嫨");
+    ErrorCode PRO_WORKTIME_AUX_DURATION_REQUIRED = new ErrorCode(1_040_510_003,
+            "杈呭姪宸ユ椂椤圭洰銆寋}銆嶆寜[{}]璁¢噺锛岃濉啓鍗曢」鍒嗛挓鏁颁笖蹇呴』澶т簬 0");
+    ErrorCode PRO_WORKTIME_AUX_SPEED_REQUIRED = new ErrorCode(1_040_510_004,
+            "杈呭姪宸ユ椂椤圭洰銆寋}銆嶆寜绫虫姌绠楋紝璇峰~鍐欐姌绠楅�熷害锛堢背/鍒嗭級涓斿繀椤诲ぇ浜� 0");
+    ErrorCode PRO_WORKTIME_AUX_CODE_DUPLICATE = new ErrorCode(1_040_510_005,
+            "宸ュ簭銆寋}銆嶄笅宸插瓨鍦ㄨ緟鍔╅」鐩紪鐮併�寋}銆嶏紙鏈哄彴鑼冨洿锛歿}锛夛紝璇蜂慨鏀归」鐩紪鐮佹垨鍏堝垹闄ゅ師椤圭洰");
+    ErrorCode PRO_WORKTIME_AUX_IN_USE = new ErrorCode(1_040_510_006,
+            "杈呭姪宸ユ椂椤圭洰銆寋}銆嶅凡琚姤宸ヨ褰曞紩鐢紝鏃犳硶鍒犻櫎锛涘闇�鍋滄浣跨敤锛岃鎶婄姸鎬佹敼涓虹鐢�");
+    ErrorCode PRO_WORKTIME_ITEM_NOT_APPLICABLE = new ErrorCode(1_040_510_007,
+            "杈呭姪宸ユ椂椤圭洰銆寋}銆嶄笉閫傜敤浜庡綋鍓嶅伐搴忋�寋}銆嶆垨鏈哄彴銆寋}銆嶏紝璇峰埛鏂伴〉闈㈠悗閲嶆柊閫夋嫨");
+    ErrorCode PRO_WORKTIME_REPORT_DIM_INVALID = new ErrorCode(1_040_510_008,
+            "宸ユ椂鑰冩牳缁熻缁村害[{}]鏃犳晥锛屽彧鑳芥槸 1-鎸変汉 / 2-鎸夊伐搴� / 3-鎸夋満鍙� / 4-鎸夋棩鏈燂紝璇烽噸鏂伴�夋嫨");
     // ========== MES 鐢熶骇绠$悊-鐢熶骇娴佽浆鍗★紙1-040-507-000锛� ==========
     ErrorCode PRO_CARD_NOT_EXISTS = new ErrorCode(1_040_507_000, "鐢熶骇娴佽浆鍗′笉瀛樺湪");
     ErrorCode PRO_CARD_CODE_DUPLICATE = new ErrorCode(1_040_507_001, "娴佽浆鍗$紪鐮佸凡瀛樺湪");
@@ -334,10 +392,13 @@
     ErrorCode PRO_MPS_NOT_ISSUED = new ErrorCode(1_040_509_002, "鍙湁宸蹭笅鍙戠姸鎬佺殑 MPS 鎵嶈兘鎵ц姝ゆ搷浣�");
     ErrorCode PRO_MPS_ALREADY_ISSUED = new ErrorCode(1_040_509_003, "MPS 宸蹭笅鍙戯紝鏃犳硶淇敼");
     ErrorCode PRO_MPS_MERGE_AT_LEAST_TWO = new ErrorCode(1_040_509_004, "鍚堝苟涓嬪彂鑷冲皯闇�瑕侀�夋嫨涓ゆ潯 MPS");
+    ErrorCode PRO_MPS_ISSUE_FORBIDDEN = new ErrorCode(1_040_509_010, "浠呴攢鍞鍗曞垱寤轰汉鎴栬秴绾х鐞嗗憳鍙互涓嬪彂鐢熶骇璁″垝");
+    ErrorCode PRO_MPS_MERGE_ISSUE_DISABLED = new ErrorCode(1_040_509_011, "鍚堝苟涓嬪彂宸插仠鐢紝璇蜂娇鐢ㄦ壒閲忎笅鍙�");
     ErrorCode PRO_MPS_MERGE_PRODUCT_MISMATCH = new ErrorCode(1_040_509_005, "鍚堝苟涓嬪彂鐨� MPS 蹇呴』鏄浉鍚屼骇鍝�");
     ErrorCode PRO_MPS_CODE_DUPLICATE = new ErrorCode(1_040_509_006, "MPS 缂栫爜宸插瓨鍦�");
     ErrorCode PRO_MPS_HAS_WORK_ORDER = new ErrorCode(1_040_509_007, "MPS 宸插叧鑱旂敓浜у伐鍗曪紝鏃犳硶鍒犻櫎");
     ErrorCode PRO_MPS_MES_PRODUCT_NOT_EXISTS = new ErrorCode(1_040_509_008, "MES 浜у搧涓嶅瓨鍦紝鏃犳硶鍒涘缓 MPS锛屼骇鍝侊細{}");
+    ErrorCode PRO_MPS_WORK_ORDER_HAS_FEEDBACK = new ErrorCode(1_040_509_009, "璇ヨ鍒掑叧鑱旂殑鐢熶骇璁㈠崟宸叉湁鎶ュ伐璁板綍锛屾棤娉曞彇娑堬紒");
 
     // ========== MES 璐ㄩ噺绠$悊-璐ㄦ鏂规锛�1-040-600-000锛� ==========
     ErrorCode QC_TEMPLATE_NOT_EXISTS = new ErrorCode(1_040_600_000, "璐ㄦ鏂规涓嶅瓨鍦�");
@@ -353,6 +414,12 @@
     ErrorCode QC_INDICATOR_CODE_DUPLICATE = new ErrorCode(1_040_601_001, "璐ㄦ鎸囨爣缂栫爜宸插瓨鍦�");
     ErrorCode QC_INDICATOR_NAME_DUPLICATE = new ErrorCode(1_040_601_002, "璐ㄦ鎸囨爣鍚嶇О宸插瓨鍦�");
     ErrorCode QC_INDICATOR_RESULT_SPECIFICATION_REQUIRED = new ErrorCode(1_040_601_003, "缁撴灉鍊煎睘鎬т笉鑳戒负绌�");
+    ErrorCode QC_INDICATOR_PARENT_NOT_EXISTS = new ErrorCode(1_040_601_004, "鐖舵寚鏍囦笉瀛樺湪");
+    ErrorCode QC_INDICATOR_PARENT_NOT_GROUP = new ErrorCode(1_040_601_005, "鐖舵寚鏍囦笉鏄垎缁勯」");
+    ErrorCode QC_INDICATOR_PARENT_SELF = new ErrorCode(1_040_601_006, "鐖舵寚鏍囦笉鑳芥槸鑷繁");
+    ErrorCode QC_INDICATOR_GROUP_CANNOT_NEST = new ErrorCode(1_040_601_007, "鍒嗙粍椤逛笉鑳芥寕鍦ㄥ叾瀹冩寚鏍囦笅");
+    ErrorCode QC_INDICATOR_HAS_CHILDREN = new ErrorCode(1_040_601_008, "璇ユ寚鏍囦笅宸叉湁瀛愰」");
+    ErrorCode QC_INDICATOR_RESULT_TYPE_REQUIRED = new ErrorCode(1_040_601_009, "褰曞叆椤圭殑缁撴灉鍊肩被鍨嬩笉鑳戒负绌�");
 
     // ========== MES 璐ㄩ噺绠$悊-缂洪櫡绫诲瀷锛�1-040-602-000锛� ==========
     ErrorCode QC_DEFECT_NOT_EXISTS = new ErrorCode(1_040_602_000, "缂洪櫡绫诲瀷涓嶅瓨鍦�");
@@ -382,7 +449,11 @@
     ErrorCode QC_IPQC_SOURCE_DOC_NO_PENDING_LINE = new ErrorCode(1_040_604_008, "鏉ユ簮鎶ュ伐鍗曚笉瀛樺湪寰呮浜у嚭琛岋紝鏃犳硶鍒涘缓 IPQC");
     ErrorCode QC_IPQC_SOURCE_LINE_NOT_BELONG = new ErrorCode(1_040_604_009, "鏉ユ簮鍗曟嵁琛屼笉灞炰簬璇ユ姤宸ュ崟");
     ErrorCode QC_IPQC_SOURCE_LINE_REQUIRED = new ErrorCode(1_040_604_010, "鏉ユ簮鍗曟嵁绫诲瀷涓烘姤宸ユ椂锛屾潵婧愪骇鍑鸿 ID 涓嶈兘涓虹┖");
+    ErrorCode QC_IPQC_PROCESS_REQUIRED = new ErrorCode(1_040_604_011, "杩囩▼妫�楠屽崟缂哄皯妫�楠屽伐搴忥細宸ヤ綅鍜屾楠屽伐搴忓潎鏈�夋嫨銆傝閫夋嫨宸ヤ綅锛堣嚜鍔ㄥ甫鍑烘墍灞炲伐搴忥級锛屾垨鐩存帴閫夋嫨妫�楠屽伐搴忓悗鍐嶄繚瀛�");
     ErrorCode QC_IPQC_SOURCE_LINE_NOT_PENDING = new ErrorCode(1_040_604_011, "鏉ユ簮浜у嚭琛屼笉鏄緟妫�楠岀姸鎬�");
+    ErrorCode QC_IPQC_WORK_ORDER_STATUS_INVALID = new ErrorCode(1_040_604_012, "浠呭凡纭鎴栧凡瀹屾垚鐨勭敓浜у伐鍗曞彲鍒涘缓杩囩▼妫�楠�");
+    ErrorCode QC_IPQC_WAGE_FIELD_NOT_BELONG = new ErrorCode(1_040_604_013, "宸ヨ祫瀛楁[{}]涓嶅睘浜庤繃绋嬫楠屽崟[{}]鎵�鍦ㄥ伐搴忥紝璇烽噸鏂版墦寮�妫�楠屽崟鍚庡~鍐�");
+    ErrorCode QC_IPQC_WAGE_FIELD_VALUE_INVALID = new ErrorCode(1_040_604_014, "宸ヨ祫瀛楁[{}]鍙備笌宸ヨ祫璁$畻锛屽彧鑳藉~鍐欐暟瀛楋紝褰撳墠濉啓涓篬{}]");
     // ========== MES 璐ㄩ噺绠$悊-杩囩▼妫�楠岃锛�1-040-604-100锛� ==========
     ErrorCode QC_IPQC_LINE_NOT_EXISTS = new ErrorCode(1_040_604_100, "杩囩▼妫�楠岃涓嶅瓨鍦�");
 
@@ -417,6 +488,23 @@
     ErrorCode QC_RQC_CHECK_RESULT_EMPTY = new ErrorCode(1_040_608_006, "瀹屾垚妫�楠屽崟鍓嶏紝妫�娴嬬粨鏋滃繀椤诲~鍐�");
     // ========== MES 璐ㄩ噺绠$悊-閫�璐ф楠岃锛�1-040-608-100锛� ==========
     ErrorCode QC_RQC_LINE_NOT_EXISTS = new ErrorCode(1_040_608_100, "閫�璐ф楠岃涓嶅瓨鍦�");
+
+    // ========== MES 璐ㄩ噺绠$悊-涓嶅悎鏍煎搧澶勭悊 NCR锛�1-040-609-000锛� ==========
+    // ========== 璐ㄩ噺宸℃ 1-040-610-000 ==========
+    ErrorCode QC_PATROL_NOT_EXISTS = new ErrorCode(1_040_610_000, "璐ㄩ噺宸℃璁板綍涓嶅瓨鍦�");
+    ErrorCode QC_PATROL_CODE_DUPLICATE = new ErrorCode(1_040_610_001, "璐ㄩ噺宸℃鍗曠紪鍙峰凡瀛樺湪");
+
+    ErrorCode QC_NCR_NOT_EXISTS = new ErrorCode(1_040_609_000, "涓嶅悎鏍煎搧澶勭悊鍗昜{}]涓嶅瓨鍦紝璇峰埛鏂板垪琛ㄥ悗閲嶈瘯");
+    ErrorCode QC_NCR_CODE_DUPLICATE = new ErrorCode(1_040_609_001, "NCR鍗曞彿[{}]宸插瓨鍦紝璇蜂慨鏀筃CR鍗曞彿鍚庨噸鏂颁繚瀛�");
+    ErrorCode QC_NCR_CLOSE_STATUS_INVALID = new ErrorCode(1_040_609_010, "涓嶅悎鏍煎搧澶勭悊鍗昜{}]褰撳墠鐘舵�佷负[{}]锛屽彧鏈塠宸插缃甝鐘舵�佹墠鍙叧闂紱璇峰厛瀹屾垚澶勭疆");
+    ErrorCode QC_NCR_NOT_PENDING_REVIEW = new ErrorCode(1_040_609_002, "鍙湁寰呰瘎瀹$姸鎬佺殑涓嶅悎鏍煎搧澶勭悊鍗曟墠鍙搷浣�");
+    ErrorCode QC_NCR_NOT_REVIEWED = new ErrorCode(1_040_609_003, "鍙湁宸茶瘎瀹$姸鎬佺殑涓嶅悎鏍煎搧澶勭悊鍗曟墠鍙墽琛屽缃�");
+    ErrorCode QC_NCR_NOT_DISPOSED = new ErrorCode(1_040_609_004, "鍙湁宸插缃姸鎬佺殑涓嶅悎鏍煎搧澶勭悊鍗曟墠鍙叧闂�");
+    ErrorCode QC_NCR_STATUS_NOT_PENDING = new ErrorCode(1_040_609_005, "涓嶅悎鏍煎搧澶勭悊鍗昜{}]褰撳墠鐘舵�佷负[{}]锛屽彧鏈塠寰呰瘎瀹鐘舵�佹墠鍙慨鏀广�佸垹闄ゆ垨璇勫锛涘鎵逛腑璇风瓑寰呯粨鏋滐紝宸茶瘎瀹¤鐩存帴澶勭疆");
+    ErrorCode QC_NCR_SUBMIT_STATUS_INVALID = new ErrorCode(1_040_609_006, "涓嶅悎鏍煎搧澶勭悊鍗昜{}]褰撳墠鐘舵�佷负[{}]锛屽彧鏈塠寰呰瘎瀹鐘舵�佹墠鍙彁浜ゅ鎵癸紱瀹℃壒涓绛夊緟缁撴灉锛屽凡璇勫/宸插缃�/宸插叧闂棤闇�閲嶅鎻愪氦");
+    ErrorCode QC_NCR_DISPOSE_STATUS_INVALID = new ErrorCode(1_040_609_007, "涓嶅悎鏍煎搧澶勭悊鍗昜{}]褰撳墠鐘舵�佷负[{}]锛屽彧鏈夊鎵归�氳繃鍚庣殑[宸茶瘎瀹鐘舵�佹墠鍙墽琛屽缃紱璇峰厛鎻愪氦瀹℃壒骞剁瓑寰呭鎵归�氳繃");
+    ErrorCode QC_NCR_DISPOSITION_REQUIRED = new ErrorCode(1_040_609_008, "澶勭疆鏂瑰紡涓嶈兘涓虹┖锛岃浠嶽璁╂鏀捐銆佽繑淇�佽繑宸ャ�佹姤搴焆涓�夋嫨涓�椤�");
+    ErrorCode QC_NCR_DISPOSITION_INVALID = new ErrorCode(1_040_609_009, "澶勭疆鏂瑰紡[{}]涓嶅湪鍏佽鑼冨洿鍐咃紝璇蜂粠[璁╂鏀捐銆佽繑淇�佽繑宸ャ�佹姤搴焆涓�夋嫨涓�椤�");
 
     // ========== MES 浠撳簱绠$悊-浠撳簱锛�1-040-700-000锛� ==========
     ErrorCode WM_WAREHOUSE_NOT_EXISTS = new ErrorCode(1_040_700_000, "浠撳簱涓嶅瓨鍦�");
@@ -464,9 +552,21 @@
     ErrorCode WM_TRANSACTION_LIST_EMPTY = new ErrorCode(1_040_703_011, "搴撳瓨浜嬪姟鍒楄〃涓嶈兘涓虹┖");
     ErrorCode WM_TRANSACTION_BATCH_NOT_EXISTS = new ErrorCode(1_040_703_012, "鎵规璁板綍涓嶅瓨鍦�");
     ErrorCode WM_MATERIAL_STOCK_REQUIRED = new ErrorCode(1_040_703_013, "搴撳瓨璁板綍涓嶈兘涓虹┖");
-    ErrorCode WM_MATERIAL_STOCK_SELECTION_MISMATCH = new ErrorCode(1_040_703_014, "搴撳瓨璁板綍涓庢彁浜ょ殑鐗╂枡銆佹壒娆℃垨搴撲綅淇℃伅涓嶄竴鑷�");
+    ErrorCode WM_MATERIAL_STOCK_SELECTION_MISMATCH = new ErrorCode(1_040_703_014, "鎵�閫夊簱瀛樿褰曚笌鍗曟嵁淇℃伅涓嶄竴鑷达紝璇锋牳瀵瑰悗閲嶆柊鎿嶄綔");
     ErrorCode WM_MATERIAL_STOCK_QUANTITY_INVALID = new ErrorCode(1_040_703_015, "璋冩暣鏁伴噺涓嶈兘涓虹┖鎴栭浂");
     ErrorCode WM_MATERIAL_STOCK_FROZEN = new ErrorCode(1_040_703_016, "搴撳瓨璁板綍宸插喕缁擄紝鏃犳硶绉诲簱");
+    ErrorCode WM_MATERIAL_STOCK_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_703_017, "瀵煎叆鐨勫簱瀛樻暟鎹笉鑳戒负绌�");
+    ErrorCode WM_MATERIAL_STOCK_IMPORT_FIELD_REQUIRED = new ErrorCode(1_040_703_018, "{}涓嶈兘涓虹┖");
+    ErrorCode WM_MATERIAL_STOCK_IMPORT_ITEM_NOT_EXISTS = new ErrorCode(1_040_703_019, "鐗╂枡缂栫爜({})涓嶅瓨鍦�");
+    ErrorCode WM_MATERIAL_STOCK_IMPORT_WAREHOUSE_NOT_EXISTS = new ErrorCode(1_040_703_020, "浠撳簱({})涓嶅瓨鍦�");
+    ErrorCode WM_MATERIAL_STOCK_IMPORT_LOCATION_NOT_EXISTS = new ErrorCode(1_040_703_021, "搴撳尯({})涓嶅瓨鍦�");
+    ErrorCode WM_MATERIAL_STOCK_IMPORT_AREA_NOT_EXISTS = new ErrorCode(1_040_703_022, "搴撲綅({})涓嶅瓨鍦�");
+    ErrorCode WM_MATERIAL_STOCK_IMPORT_BATCH_NOT_EXISTS = new ErrorCode(1_040_703_023, "鎵规({})涓嶅瓨鍦�");
+    ErrorCode WM_MATERIAL_STOCK_IMPORT_VENDOR_NOT_EXISTS = new ErrorCode(1_040_703_024, "渚涘簲鍟�({})涓嶅瓨鍦�");
+    ErrorCode WM_MATERIAL_STOCK_IMPORT_QUANTITY_INVALID = new ErrorCode(1_040_703_025, "鍦ㄥ簱鏁伴噺({})鏃犳晥");
+    ErrorCode WM_MATERIAL_STOCK_IMPORT_EXISTS = new ErrorCode(1_040_703_026, "搴撳瓨璁板綍宸插瓨鍦�");
+    ErrorCode WM_MATERIAL_STOCK_IMPORT_OPERATION_INVALID = new ErrorCode(1_040_703_027, "鎿嶄綔绫诲瀷({})涓嶆敮鎸�");
+    ErrorCode WM_MATERIAL_STOCK_IMPORT_STOCK_NOT_EXISTS = new ErrorCode(1_040_703_028, "搴撳瓨璁板綍涓嶅瓨鍦紝鏃犳硶鎵ц璇ユ搷浣�");
 
     // ========== MES 浠撳簱绠$悊-鍒拌揣閫氱煡鍗曪紙1-040-704-000锛� ==========
     ErrorCode WM_ARRIVAL_NOTICE_NOT_EXISTS = new ErrorCode(1_040_704_000, "鍒拌揣閫氱煡鍗曚笉瀛樺湪");
@@ -542,6 +642,8 @@
     // ========== MES 浠撳簱绠$悊-鐢熶骇鍏ュ簱鍗曪紙1-040-709-000锛� ==========
     ErrorCode WM_PRODUCT_PRODUCE_NOT_EXISTS = new ErrorCode(1_040_709_000, "鐢熶骇鍏ュ簱鍗曚笉瀛樺湪");
     ErrorCode WM_PRODUCT_PRODUCE_STATUS_INVALID = new ErrorCode(1_040_709_001, "鐢熶骇鍏ュ簱鍗曠姸鎬佷笉姝g‘锛屾棤娉曟墽琛岃鎿嶄綔");
+    ErrorCode WM_PRODUCT_PRODUCE_QUALITY_PENDING = new ErrorCode(1_040_709_006, "鐢熶骇浜у嚭灏氭湭妫�楠岋紝涓嶈兘鍏ュ簱");
+    ErrorCode WM_PRODUCT_PRODUCE_INSPECTION_INVALID = new ErrorCode(1_040_709_007, "妫�楠岀粨鏋滀笌寰呮浜у嚭涓嶅尮閰�");
     ErrorCode WM_PRODUCT_PRODUCE_NO_LINE = new ErrorCode(1_040_709_002, "鐢熶骇鍏ュ簱鍗曡嚦灏戦渶瑕佷竴鏉¤鏁版嵁");
     ErrorCode WM_PRODUCT_PRODUCE_DETAIL_QUANTITY_MISMATCH = new ErrorCode(1_040_709_003, "鐢熶骇鍏ュ簱鍗曡鏁伴噺涓庢槑缁嗘暟閲忎笉涓�鑷�");
     ErrorCode WM_PRODUCT_PRODUCE_CANCEL_NOT_ALLOWED = new ErrorCode(1_040_709_004, "鐢熶骇鍏ュ簱鍗曞凡瀹屾垚鎴栧凡鍙栨秷锛屾棤娉曞彇娑�");
@@ -596,6 +698,20 @@
     ErrorCode WM_RETURN_VENDOR_DETAIL_NOT_EXISTS = new ErrorCode(1_040_711_200, "渚涘簲鍟嗛��璐у崟鏄庣粏涓嶅瓨鍦�");
     ErrorCode WM_RETURN_VENDOR_DETAIL_QUANTITY_INVALID = new ErrorCode(1_040_711_201, "閫�璐ф槑缁嗘暟閲忓繀椤诲ぇ浜� 0");
     ErrorCode WM_RETURN_VENDOR_DETAIL_LINE_NOT_MATCH = new ErrorCode(1_040_711_202, "鎷h揣鏄庣粏涓嶅睘浜庢寚瀹氱殑渚涘簲鍟嗛��璐у崟");
+    ErrorCode WM_RETURN_VENDOR_DETAIL_STATUS_INVALID = new ErrorCode(1_040_711_203, "渚涘簲鍟嗛��璐у崟[{}]褰撳墠鐘舵�佷笉鍏佽淇敼鎷h揣鏄庣粏锛屼粎鑽夌鎴栧緟鎷h揣鐘舵�佸彲鎿嶄綔");
+    ErrorCode WM_RETURN_VENDOR_DETAIL_PARENT_IMMUTABLE = new ErrorCode(1_040_711_204, "鎷h揣鏄庣粏涓嶈兘鍙樻洿鎵�灞為��璐у崟鎴栭��璐ц");
+    ErrorCode WM_RETURN_VENDOR_PURCHASE_ORDER_REQUIRED = new ErrorCode(1_040_711_008, "璇峰厛閫夋嫨閲囪喘璁㈠崟");
+    ErrorCode WM_RETURN_VENDOR_PURCHASE_ORDER_NO_ITEM = new ErrorCode(1_040_711_009, "閲囪喘璁㈠崟鏃犳槑缁嗘暟鎹紝鏃犳硶甯﹀叆鐗╂枡");
+    ErrorCode WM_RETURN_VENDOR_ITEM_NOT_IN_PURCHASE_ORDER = new ErrorCode(1_040_711_010, "閫�璐х墿鏂欎笉鍦ㄦ墍鍏宠仈閲囪喘璁㈠崟鍐咃紝鏃犳硶娣诲姞");
+    ErrorCode WM_RETURN_VENDOR_APPROVE_PROCESS_NOT_PUBLISHED = new ErrorCode(1_040_711_011, "閲囪喘閫�璐у鎵规祦绋媅{}]鏈彂甯冿紝璇疯仈绯荤鐞嗗憳鍦� BPM 鍚庡彴鍙戝竷娴佺▼妯″瀷鍚庡啀鎻愪氦");
+    ErrorCode WM_RETURN_VENDOR_HANDLE_TYPE_INVALID = new ErrorCode(1_040_711_012, "渚涘簲鍟嗛��璐у崟澶勭悊鏂瑰紡涓嶆纭細褰撳墠涓篬{}]锛屼粎鏀寔 1閫�娆� / 2鎹㈣揣锛岃淇敼澶勭悊鏂瑰紡鍚庡啀鎿嶄綔");
+    ErrorCode WM_RETURN_VENDOR_REFUND_AMOUNT_REQUIRED = new ErrorCode(1_040_711_013, "鏃犳硶鑷姩璁$畻閫�娆鹃噾棰濓細閫�璐у崟[{}]鏈叧鑱旈噰璐鍗曪紝鎴栭��璐х墿鏂橻{}]鏈尮閰嶅埌閲囪喘璁㈠崟鏄庣粏銆傝鍦ㄩ��璐у崟濉啓閫�娆鹃噾棰濆悗鍐嶅畬鎴愰��璐�");
+    ErrorCode WM_RETURN_VENDOR_FINISHED_REQUIRED = new ErrorCode(1_040_711_014, "渚涘簲鍟嗛��璐у崟[{}]褰撳墠鐘舵�佷负[{}]锛屽彧鏈夊凡瀹屾垚鐨勯��璐у崟鎵嶈兘鎵ц璇ユ搷浣�");
+    ErrorCode WM_RETURN_VENDOR_ATTACHMENT_REQUIRED = new ErrorCode(1_040_711_015, "渚涘簲鍟嗛��璐у崟[{}]鏈笂浼犻��璐ч檮浠讹紝璐ㄩ噺閮ㄥ彂璧烽��璐у繀椤讳笂浼犺川妫�鎶ュ憡銆佷笉鍚堟牸鐓х墖绛夐檮浠跺悗鎵嶈兘鎻愪氦瀹℃壒锛岃鍏堢紪杈戝崟鎹笂浼犻檮浠�");
+    ErrorCode WM_RETURN_VENDOR_APPROVAL_REQUIRED = new ErrorCode(1_040_711_016, "渚涘簲鍟嗛��璐у崟[{}]娌℃湁鏈夋晥瀹℃壒璁板綍锛屼笉鑳芥嫞璐ф垨瀹屾垚閫�璐э紝璇峰厛鎻愪氦瀹℃壒");
+    ErrorCode WM_RETURN_VENDOR_APPROVAL_PROCESS_INVALID = new ErrorCode(1_040_711_017, "渚涘簲鍟嗛��璐у繀椤讳娇鐢ㄥ鎵规祦绋媅{}]");
+    ErrorCode WM_RETURN_VENDOR_QUANTITY_EXCEED = new ErrorCode(1_040_711_018, "閫�璐х墿鏂橻{}]鏁伴噺[{}]瓒呰繃閲囪喘璁㈠崟鍓╀綑鍙��鏁伴噺[{}]");
+    ErrorCode WM_RETURN_VENDOR_PURCHASE_ITEM_AMBIGUOUS = new ErrorCode(1_040_711_019, "閲囪喘璁㈠崟涓墿鏂橻{}]瀛樺湪澶氭潯鏄庣粏锛屾棤娉曠‘瀹氶��璐у綊灞烇紝璇峰厛鎷嗗垎鎴栬皟鏁撮噰璐鍗曟槑缁�");
 
     // ========== MES 浠撳簱绠$悊-浜у搧鏀惰揣鍗曪紙1-040-712-000锛� ==========
     ErrorCode WM_PRODUCT_RECPT_NOT_EXISTS = new ErrorCode(1_040_712_000, "浜у搧鏀惰揣鍗曚笉瀛樺湪");
@@ -632,6 +748,11 @@
     ErrorCode WM_RETURN_SALES_LINE_NOT_EXISTS = new ErrorCode(1_040_713_100, "閿�鍞��璐у崟琛屼笉瀛樺湪");
     ErrorCode WM_RETURN_SALES_DETAIL_NOT_EXISTS = new ErrorCode(1_040_713_200, "閿�鍞��璐у崟鏄庣粏涓嶅瓨鍦�");
     ErrorCode WM_RETURN_SALES_DETAIL_QUANTITY_EXCEED = new ErrorCode(1_040_713_201, "涓婃灦鏄庣粏鎬绘暟閲忎笉鑳借秴杩囬��璐ц鏁伴噺");
+    ErrorCode WM_RETURN_SALES_DETAIL_SOURCE_MISMATCH = new ErrorCode(1_040_713_202, "閫�璐ф槑缁嗙殑鍗曟嵁鎴栫墿鏂欎笌閫�璐ц涓嶄竴鑷�");
+    ErrorCode WM_RETURN_SALES_DETAIL_BATCH_MISMATCH = new ErrorCode(1_040_713_203, "閫�璐ф槑缁嗘壒娆′笌閫�璐ц鎵规涓嶄竴鑷�");
+    ErrorCode WM_RETURN_SALES_REEL_MISMATCH = new ErrorCode(1_040_713_204, "璇烽�夋嫨鐩樺彿灞炰簬璇ラ攢鍞鍗曚骇鍝佹槑缁嗙殑鎵规");
+    ErrorCode WM_RETURN_SALES_BATCH_NOT_SHIPPED = new ErrorCode(1_040_713_205, "鎵�閫夌洏鍙锋壒娆℃湭鍦ㄨ閿�鍞鍗曚腑瀹屾垚鍑哄簱锛屼笉鑳戒綔涓洪��璐ф潵婧�");
+    ErrorCode WM_RETURN_SALES_LINE_NOT_QUALIFIED = new ErrorCode(1_040_713_206, "閫�璐х墿鏂欏皻鏈川妫�鍚堟牸锛屼笉鍙叆搴擄紱涓嶅悎鏍煎搧璇峰厛澶勭悊");
 
     // ========== MES 浠撳簱绠$悊-鐩樼偣鏂规/浠诲姟/缁撴灉锛�1-040-714-100锛� ==========
     ErrorCode WM_STOCK_TAKING_PLAN_NOT_EXISTS = new ErrorCode(1_040_714_100, "鐩樼偣鏂规涓嶅瓨鍦�");
@@ -653,6 +774,10 @@
     ErrorCode WM_STOCK_TAKING_TASK_RESULT_NOT_EXISTS = new ErrorCode(1_040_714_119, "鐩樼偣缁撴灉涓嶅瓨鍦�");
     ErrorCode WM_STOCK_TAKING_TASK_LINE_ALREADY_TAKEN = new ErrorCode(1_040_714_120, "璇ョ洏鐐规竻鍗曡宸叉湁鐩樼偣璁板綍锛屼笉鑳介噸澶嶇洏鐐�");
     ErrorCode WM_STOCK_TAKING_TASK_NOT_FINISHED = new ErrorCode(1_040_714_121, "鍙湁宸插畬鎴愮姸鎬佺殑鐩樼偣浠诲姟鎵嶈兘澶勭悊宸紓");
+    ErrorCode WM_STOCK_TAKING_TASK_INCOMPLETE = new ErrorCode(1_040_714_122, "鐩樼偣浠诲姟灏氭湁鏈綍鍏ョ粨鏋滅殑浠诲姟琛岋細{}");
+    ErrorCode WM_STOCK_TAKING_TASK_RESULT_LINE_INVALID = new ErrorCode(1_040_714_123, "鐩樼偣缁撴灉涓庡綋鍓嶄换鍔¤涓嶅尮閰�");
+    ErrorCode WM_STOCK_TAKING_TASK_RESULT_DUPLICATE = new ErrorCode(1_040_714_124, "璇ョ洏鐐逛换鍔¤宸叉湁缁撴灉锛屼笉鑳介噸澶嶅綍鍏�");
+    ErrorCode WM_STOCK_TAKING_TASK_LINE_TASK_MISMATCH = new ErrorCode(1_040_714_125, "鐩樼偣娓呭崟琛屼笉灞炰簬鎸囧畾浠诲姟");
 
     // ========== MES 浠撳簱绠$悊-閿�鍞嚭搴撳崟锛�1-040-714-000锛� ==========
     ErrorCode WM_PRODUCT_SALES_NOT_EXISTS = new ErrorCode(1_040_714_000, "閿�鍞嚭搴撳崟涓嶅瓨鍦�");
@@ -674,6 +799,8 @@
     ErrorCode WM_PRODUCT_SALES_LINE_QUANTITY_INVALID = new ErrorCode(1_040_714_014, "鍑哄簱鏁伴噺蹇呴』澶т簬 0");
     ErrorCode WM_PRODUCT_SALES_DETAIL_LINE_NOT_MATCH = new ErrorCode(1_040_714_015, "鎷h揣鏄庣粏涓嶅睘浜庢寚瀹氱殑閿�鍞嚭搴撳崟");
     ErrorCode WM_PRODUCT_SALES_DETAIL_ITEM_MISMATCH = new ErrorCode(1_040_714_016, "鎷h揣鏄庣粏鐨勭墿鏂欎笌閿�鍞嚭搴撳崟琛岀殑鐗╂枡涓嶄竴鑷�");
+    ErrorCode WM_PRODUCT_SALES_REEL_MISMATCH = new ErrorCode(1_040_714_034, "鎵�閫夊簱瀛樼洏鍙蜂笌閿�鍞槑缁嗙洏鍙蜂笉涓�鑷达紝璇烽噸鏂伴�夋嫨鍙拷婧簱瀛�");
+    ErrorCode WM_PRODUCT_SALES_REEL_SOURCE_MISSING = new ErrorCode(1_040_714_035, "閿�鍞鍗曟槑缁嗕笉瀛樺湪锛屾棤娉曟牳瀵瑰簱瀛樼洏鍙�");
     ErrorCode WM_PRODUCT_SALES_LINE_SALES_NOTICE_LINE_REQUIRED = new ErrorCode(1_040_714_017,
             "鍑哄簱鍗曞叧鑱斾簡鍙戣揣閫氱煡鍗曪紝蹇呴』閫夋嫨鍙戣揣閫氱煡鍗曡");
     ErrorCode WM_PRODUCT_SALES_LINE_SALES_NOTICE_LINE_NOT_ALLOWED = new ErrorCode(1_040_714_018,
@@ -719,9 +846,14 @@
     ErrorCode WM_SALES_NOTICE_LINE_NOT_EXISTS = new ErrorCode(1_040_720_010, "鍙戣揣閫氱煡鍗曡涓嶅瓨鍦�");
     ErrorCode WM_SALES_NOTICE_LINE_EMPTY = new ErrorCode(1_040_720_011, "鍙戣揣閫氱煡鍗曡涓虹┖锛屼笉鑳芥彁浜�");
     ErrorCode WM_SALES_NOTICE_LINE_NOT_MATCH = new ErrorCode(1_040_720_012, "鍙戣揣閫氱煡鍗曡涓嶅睘浜庢寚瀹氱殑鍙戣揣閫氱煡鍗�");
+    ErrorCode WM_SALES_NOTICE_LINE_SALE_ITEM_REQUIRED = new ErrorCode(1_040_720_013, "鍏宠仈閿�鍞鍗曠殑鍙戣揣琛屽繀椤婚�夋嫨閿�鍞鍗曟槑缁�");
+    ErrorCode WM_SALES_NOTICE_LINE_SALE_ITEM_MISMATCH = new ErrorCode(1_040_720_014, "閿�鍞鍗曟槑缁嗕笌鍙戣揣閫氱煡鍗曟垨鐗╂枡涓嶅尮閰�");
     ErrorCode WM_SALES_NOTICE_SALE_ORDER_NOT_EXISTS = new ErrorCode(1_040_720_013, "閿�鍞鍗曚笉瀛樺湪");
     ErrorCode WM_SALES_NOTICE_SALE_ORDER_ITEM_EMPTY = new ErrorCode(1_040_720_014, "閿�鍞鍗曟槑缁嗕负绌�");
     ErrorCode WM_SALES_NOTICE_ALREADY_EXISTS = new ErrorCode(1_040_720_015, "璇ラ攢鍞鍗曞凡鐢熸垚鍙戣揣閫氱煡鍗曪紝涓嶈兘閲嶅鐢熸垚");
+    ErrorCode WM_SALES_NOTICE_SUBMIT_PROCESS_KEY_REQUIRED = new ErrorCode(1_040_720_020, "鎻愪氦鍙戣揣瀹℃壒鍓嶅繀椤婚�夋嫨瀹℃壒娴佺▼锛氭湭浼犳祦绋嬪畾涔� Key");
+    ErrorCode WM_SALES_NOTICE_BPM_PROCESS_DEFINITION_NOT_EXISTS = new ErrorCode(1_040_720_021, "鍙戣揣瀹℃壒娴佺▼鏈厤缃細璇峰厛鍦ㄣ�屾祦绋嬬鐞嗐�嶄腑璁捐骞跺惎鐢ㄣ�屽彂璐у鎵广�嶆祦绋嬶紝鍐嶆彁浜ゅ彂璐у崟");
+    ErrorCode WM_SALES_NOTICE_UPDATE_AUDIT_STATUS_FAIL_NOT_APPROVING = new ErrorCode(1_040_720_022, "鍙戣揣鍗�({})褰撳墠鐘舵�佷负[{}]锛屼笉澶勪簬瀹℃壒涓紝鏃犳硶鏇存柊瀹℃壒缁撴灉");
 
     // ========== MES 浠撳簱绠$悊-鏉$爜閰嶇疆锛�1-040-730-000锛� ==========
     ErrorCode WM_BARCODE_CONFIG_NOT_EXISTS = new ErrorCode(1_040_730_000, "鏉$爜閰嶇疆涓嶅瓨鍦�");
@@ -757,12 +889,17 @@
     ErrorCode PD_PROJECT_NOT_UPLOAD_FOR_AUDIT = new ErrorCode(1_040_800_005, "鍙湁寰呭鏍哥姸鎬佺殑璁捐椤圭洰鎵嶈兘瀹℃牳");
     ErrorCode PD_PROJECT_NOT_AUDIT_FOR_ARCHIVE = new ErrorCode(1_040_800_006, "鍙湁寰呭綊妗g姸鎬佺殑璁捐椤圭洰鎵嶈兘褰掓。");
     ErrorCode PD_PROJECT_AUDIT_NOT_FINISHED = new ErrorCode(1_040_800_007, "璇ラ」鐩笅瀛樺湪鏈鏍哥殑璧勬枡锛岃鍏堝畬鎴愭墍鏈夎祫鏂欏鏍�");
+    ErrorCode PD_PROJECT_NOT_UPLOAD_FOR_APPROVAL = new ErrorCode(1_040_800_008, "鍙湁寰呭鏍哥姸鎬佺殑璁捐椤圭洰鎵嶈兘鎻愪氦瀹℃壒");
+    ErrorCode PD_PROJECT_NOT_APPROVING = new ErrorCode(1_040_800_009, "璁捐椤圭洰涓嶅浜庡鎵逛腑鐘舵��");
+    ErrorCode PD_PROJECT_BPM_CATEGORY_NOT_EXISTS = new ErrorCode(1_040_800_010, "璁捐椤圭洰瀹℃壒鍒嗙被涓嶅瓨鍦紝璇峰厛閰嶇疆 BPM 瀹℃壒娴佺▼");
 
     // ========== MES 浜у搧璁捐-璧勬枡瀛愯〃锛�1-040-801-000锛� ==========
     ErrorCode PD_DOCUMENT_NOT_EXISTS = new ErrorCode(1_040_801_000, "璁捐璧勬枡涓嶅瓨鍦�");
 
     // ========== MES 浜у搧璁捐-璧勬枡瀹℃牳锛�1-040-802-000锛� ==========
     ErrorCode PD_DOCUMENT_AUDIT_NOT_EXISTS = new ErrorCode(1_040_802_000, "璧勬枡瀹℃牳璁板綍涓嶅瓨鍦�");
+    ErrorCode PD_DOCUMENT_AUDIT_STATUS_REQUIRED = new ErrorCode(1_040_802_001, "瀹℃牳缁撴灉涓嶈兘涓虹┖锛氳閫夋嫨銆屽鏍搁�氳繃銆嶆垨銆屽鏍镐笉閫氳繃銆嶅悗閲嶆柊鎻愪氦");
+    ErrorCode PD_DOCUMENT_AUDIT_STATUS_INVALID = new ErrorCode(1_040_802_002, "瀹℃牳缁撴灉涓嶅悎娉曪細鍙厑璁搞�屽鏍搁�氳繃銆嶆垨銆屽鏍镐笉閫氳繃銆嶏紝璇烽噸鏂伴�夋嫨鍚庢彁浜�");
 
     // ========== MES 浜у搧璁捐-褰掓。鍙拌处锛�1-040-803-000锛� ==========
     ErrorCode PD_ARCHIVE_NOT_EXISTS = new ErrorCode(1_040_803_000, "褰掓。鍙拌处涓嶅瓨鍦�");
@@ -776,6 +913,23 @@
     ErrorCode PD_PROCESS_PARAM_TEMPLATE_NOT_EXISTS = new ErrorCode(1_040_805_000, "宸ヨ壓鍙傛暟妯℃澘涓嶅瓨鍦�");
     ErrorCode PD_PROCESS_PARAM_TEMPLATE_CODE_DUPLICATE = new ErrorCode(1_040_805_001, "宸ヨ壓鍙傛暟妯℃澘缂栫爜宸插瓨鍦�");
 
+    // ========== MES 宸ュ簭宸ヨ祫锛�1-040-806-000锛� ==========
+    ErrorCode PRO_PROCESS_WAGE_FIELD_NOT_EXISTS = new ErrorCode(1_040_806_000, "宸ュ簭宸ヨ祫瀛楁涓嶅瓨鍦�");
+    ErrorCode PRO_PROCESS_WAGE_FIELD_CODE_DUPLICATE = new ErrorCode(1_040_806_001, "宸ュ簭宸ヨ祫瀛楁缂栫爜閲嶅");
+    ErrorCode PRO_PROCESS_WAGE_FIELD_TYPE_INVALID = new ErrorCode(1_040_806_002, "宸ュ簭宸ヨ祫瀛楁绫诲瀷涓嶅悎娉�");
+    ErrorCode PRO_PROCESS_WAGE_FIELD_VALUE_INVALID = new ErrorCode(1_040_806_003, "宸ュ簭宸ヨ祫瀛楁鍊间笉鍚堟硶");
+    ErrorCode PRO_PROCESS_WAGE_FIELD_ROLE_INVALID = new ErrorCode(1_040_806_004, "宸ュ簭宸ヨ祫瀛楁璁$畻瑙掕壊涓嶅悎娉�");
+    ErrorCode PRO_PROCESS_WAGE_RULE_NOT_EXISTS = new ErrorCode(1_040_806_005, "宸ュ簭宸ヨ祫鍗曚环瑙勫垯涓嶅瓨鍦�");
+    ErrorCode PRO_PROCESS_WAGE_RULE_DUPLICATE = new ErrorCode(1_040_806_006, "宸ュ簭宸ヨ祫鍗曚环瑙勫垯閲嶅");
+    ErrorCode PRO_WAGE_QUALITY_RULE_NOT_EXISTS = new ErrorCode(1_040_806_007, "璐ㄩ噺宸ヨ祫瑙勫垯涓嶅瓨鍦�");
+    ErrorCode PRO_WAGE_QUALITY_RULE_RANGE_INVALID = new ErrorCode(1_040_806_008, "璐ㄩ噺宸ヨ祫瑙勫垯鍚堟牸鐜囧尯闂翠笉鍚堟硶");
+    ErrorCode PRO_WAGE_QUALITY_RULE_VALUE_INVALID = new ErrorCode(1_040_806_009, "璐ㄩ噺宸ヨ祫瑙勫垯绯绘暟鎴栨墸娆鹃噾棰濅笉鍚堟硶");
+    ErrorCode QC_TEMPLATE_PROCESS_NOT_EXISTS = new ErrorCode(1_040_806_010, "璐ㄦ鏂规-宸ュ簭缁戝畾涓嶅瓨鍦�");
+    ErrorCode QC_TEMPLATE_PROCESS_DUPLICATE = new ErrorCode(1_040_806_011, "璇ュ伐搴忓凡缁戝畾鐩稿悓鐨勮川妫�鏂规");
+    ErrorCode PRO_FEEDBACK_QUALITY_INSPECTION_NOT_FINISHED = new ErrorCode(1_040_806_012, "璐ㄦ宸ュ簭鐨勮繃绋嬫楠屽皻鏈畬鎴�");
+    ErrorCode PRO_FEEDBACK_WAGE_RATE_NOT_CONFIGURED = new ErrorCode(1_040_806_013, "宸ュ簭宸ヨ祫鍗曚环鏈厤缃�");
+    ErrorCode PRO_FEEDBACK_AUX_WAGE_RATE_MISSING = new ErrorCode(1_040_806_014, "杈呭姪宸ユ椂璁¤柂鍗曚环鏈厤缃�");
+
     // ========== MES 浠撳偍鐗╂祦-瀹℃壒閰嶇疆锛�1-040-900-000锛� ==========
     ErrorCode WMS_APPROVAL_CONFIG_NOT_EXISTS = new ErrorCode(1_040_900_000, "浠撳簱瀹℃壒閰嶇疆涓嶅瓨鍦�");
     ErrorCode WMS_APPROVAL_ORDER_NOT_EXISTS = new ErrorCode(1_040_900_001, "瀹℃壒鍗曟嵁涓嶅瓨鍦�");

--
Gitblit v1.9.3