From d39e4f7d839167c16425086dfa2f8747bccfdff9 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 05 十一月 2026 17:39:01 +0800
Subject: [PATCH] feat: 打通销售采购财务闭环并完成累计业务优化
---
docs/sql/config_export_all_20261104.sql | 245 ++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 243 insertions(+), 2 deletions(-)
diff --git a/docs/sql/config_export_all_20261104.sql b/docs/sql/config_export_all_20261104.sql
index 717826e..8aab023 100644
--- a/docs/sql/config_export_all_20261104.sql
+++ b/docs/sql/config_export_all_20261104.sql
@@ -435,7 +435,7 @@
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=71 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='MES 缂栫爜瑙勫垯';
-INSERT INTO `mes_md_auto_code_rule` (`id`, `code`, `name`, `description`, `max_length`, `padded`, `padded_char`, `padded_method`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1,'MD_ITEM_TYPE_CODE','鐗╂枡鍒嗙被缂栫爜','鐗╂枡鍒嗙被鑷姩缂栫爜',6,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:06:12',0x00),(2,'MD_ITEM_CODE','鐗╂枡缂栫爜','鐗╂枡鑷姩缂栫爜',16,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','103','2026-07-16 16:17:45',0x00),(3,'MD_VENDOR_CODE','渚涘簲鍟嗙紪鐮�','渚涘簲鍟嗚嚜鍔ㄧ紪鐮�',15,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:06:12',0x00),(4,'MD_CLIENT_CODE','瀹㈡埛缂栫爜','瀹㈡埛鑷姩缂栫爜',15,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:06:12',0x00),(5,'MD_WORKSTATION_CODE','宸ヤ綔绔欑紪鐮�','宸ヤ綔绔欒嚜鍔ㄧ紪鐮�',6,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:06:12',0x00),(6,'MD_WORKSHOP_CODE','杞﹂棿缂栫爜','杞﹂棿鑷姩缂栫爜',6,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:06:12',0x00),(7,'TM_TOOL_TYPE_CODE','宸ュ叿绫诲瀷缂栫爜','宸ュ叿绫诲瀷鑷姩缂栫爜',6,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:06:12',0x00),(10,'WM_WAREHOUSE_CODE','浠撳簱缂栫爜','浠撳簱鑷姩缂栫爜',6,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:06:12',0x00),(11,'WM_LOCATION_CODE','搴撳尯缂栫爜','搴撳尯鑷姩缂栫爜',6,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:06:12',0x00),(12,'WM_AREA_CODE','搴撲綅缂栫爜','搴撲綅鑷姩缂栫爜',6,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:06:12',0x00),(13,'WM_ARRIVAL_NOTICE_CODE','鍒拌揣閫氱煡鍗曠紪鐮�','鍒拌揣閫氱煡鍗曡嚜鍔ㄧ紪鐮�',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(14,'WM_ITEM_RECEIPT_CODE','閲囪喘鍏ュ簱鍗曠紪鐮�','閲囪喘鍏ュ簱鍗曡嚜鍔ㄧ紪鐮�',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(15,'WM_RETURN_VENDOR_CODE','閲囪喘閫�璐у崟缂栫爜','閲囪喘閫�璐у崟鑷姩缂栫爜',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(16,'WM_RETURN_ISSUE_CODE','鐢熶骇閫�鏂欏崟缂栫爜','鐢熶骇閫�鏂欏崟鑷姩缂栫爜',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(17,'WM_SN_CODE','SN鐮�','SN鐮佽嚜鍔ㄧ紪鐮�',15,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(18,'WM_PACKAGE_CODE','瑁呯鍗曠紪鐮�','瑁呯鍗曡嚜鍔ㄧ紪鐮�',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(19,'WM_BATCH_CODE','鎵规缂栫爜','鎵规鑷姩缂栫爜',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(20,'WM_PRODUCT_SALES_CODE','閿�鍞嚭搴撳崟缂栫爜','閿�鍞嚭搴撳崟鑷姩缂栫爜',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(21,'WM_MISC_RECEIPT_CODE','鏉傞」鍏ュ簱鍗曠紪鐮�','鏉傞」鍏ュ簱鍗曡嚜鍔ㄧ紪鐮�',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(22,'WM_MISC_ISSUE_CODE','鏉傞」鍑哄簱鍗曠紪鐮�','鏉傞」鍑哄簱鍗曡嚜鍔ㄧ紪鐮�',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(23,'WM_STOCK_TAKING_PLAN_CODE','鐩樼偣鏂规缂栫爜','鐩樼偣鏂规鑷姩缂栫爜',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(24,'WM_STOCK_TAKING_CODE','鐩樼偣浠诲姟缂栫爜','鐩樼偣浠诲姟鑷姩缂栫爜',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(25,'TRANSFER_CODE','杞Щ璋冩嫧鍗曠紪鐮�','杞Щ璋冩嫧鍗曡嚜鍔ㄧ紪鐮�',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(26,'WM_OUTSOURCE_ISSUE_CODE','澶栧崗鍙戞枡鍗曠紪鐮�','澶栧崗鍙戞枡鍗曡嚜鍔ㄧ紪鐮�',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(27,'WM_OUTSOURCE_RECEIPT_CODE','澶栧崗鍏ュ簱鍗曠紪鐮�','澶栧崗鍏ュ簱鍗曡嚜鍔ㄧ紪鐮�',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(28,'WM_SALES_NOTICE_CODE','鍙戣揣閫氱煡鍗曠紪鐮�','鍙戣揣閫氱煡鍗曡嚜鍔ㄧ紪鐮�',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(29,'WM_RETURN_SALES_CODE','閿�鍞��璐у崟缂栫爜','閿�鍞��璐у崟鑷姩缂栫爜',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(30,'PRO_WORK_ORDER_CODE','鐢熶骇宸ュ崟缂栫爜','鐢熶骇宸ュ崟鑷姩缂栫爜',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(31,'PRO_TASK_CODE','鐢熶骇浠诲姟缂栫爜','鐢熶骇浠诲姟鑷姩缂栫爜',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(32,'PRO_ROUTE_CODE','宸ヨ壓璺嚎缂栫爜','宸ヨ壓璺嚎鑷姩缂栫爜',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(33,'PRO_FEEDBACK_CODE','鐢熶骇鎶ュ伐鍗曠紪鐮�','鐢熶骇鎶ュ伐鍗曡嚜鍔ㄧ紪鐮�',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(40,'QC_IQC_CODE','鏉ユ枡妫�楠屽崟缂栫爜','鏉ユ枡妫�楠屽崟鑷姩缂栫爜',15,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(41,'QC_IPQC_CODE','杩囩▼妫�楠屽崟缂栫爜','杩囩▼妫�楠屽崟鑷姩缂栫爜',16,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(42,'QC_OQC_CODE','鍑鸿揣妫�楠屽崟缂栫爜','鍑鸿揣妫�楠屽崟鑷姩缂栫爜',15,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(43,'QC_RQC_CODE','閫�璐ф楠屽崟缂栫爜','閫�璐ф楠屽崟鑷姩缂栫爜',15,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(44,'QC_DEFECT_CODE','缂洪櫡绫诲瀷缂栫爜','缂洪櫡绫诲瀷鑷姩缂栫爜',6,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:06:12',0x00),(45,'QC_INDICATOR_RESULT_CODE','鏍峰搧妫�楠岀粨鏋滅紪鐮�','鏍峰搧妫�楠岀粨鏋滆嚜鍔ㄧ紪鐮�',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(50,'DV_MACHINERY_CODE','璁惧缂栫爜','璁惧鑷姩缂栫爜',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(51,'DV_MACHINERY_TYPE_CODE','璁惧绫诲瀷缂栫爜','璁惧绫诲瀷鑷姩缂栫爜',6,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:06:12',0x00),(52,'DV_SUBJECT_CODE','鐐规淇濆吇椤圭洰缂栫爜','鐐规淇濆吇椤圭洰鑷姩缂栫爜',6,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:06:12',0x00),(53,'DV_REPAIR_CODE','缁翠慨鍗曠紪鐮�','缁翠慨鍗曡嚜鍔ㄧ紪鐮�',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(60,'PD_DOCUMENT_AUDIT_CODE','璧勬枡瀹℃牳鍗曠紪鐮�','璧勬枡瀹℃牳鍗曡嚜鍔ㄧ紪鐮�',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(61,'PD_ARCHIVE_CODE','褰掓。鍙拌处缂栫爜','褰掓。鍙拌处鑷姩缂栫爜',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(62,'PD_PROCESS_PARAM_CODE','宸ヨ壓鍙傛暟缂栫爜','宸ヨ壓鍙傛暟鑷姩缂栫爜',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(63,'PD_PROCESS_PARAM_TEMPLATE_CODE','宸ヨ壓鍙傛暟妯℃澘缂栫爜','宸ヨ壓鍙傛暟妯℃澘鑷姩缂栫爜',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 16:06:38',0x00),(64,'WM_PRODUCT_ISSUE_CODE','棰嗘枡鍗�',NULL,15,0x01,'0',1,0,NULL,'103','2026-07-16 16:58:14','103','2026-07-16 16:59:03',0x00),(65,'MPS','鐢熶骇涓昏鍒掔紪鐮�','鐢熶骇涓昏鍒掕嚜鍔ㄧ紪鐮�',14,0x01,'0',1,0,'','1','2026-07-17 05:17:30','1','2026-07-17 05:17:30',0x00),(66,'QC_INDICATOR_CODE','璐ㄦ鎸囨爣缂栫爜',NULL,12,0x01,'0',1,0,NULL,'1','2026-07-17 14:31:46','1','2026-07-17 14:32:23',0x00),(67,'QC_TEMPLATE_CODE','璐ㄦ鏂规缂栫爜',NULL,11,0x01,'0',1,0,NULL,'1','2026-07-17 14:36:35','1','2026-07-17 14:37:05',0x00),(68,'SALESNOTICE_CODE','閿�鍞�氱煡缂栫爜','閿�鍞�氱煡鑷姩缂栫爜',20,0x01,'0',1,0,'','admin','2026-07-17 07:36:53','admin','2026-07-17 07:36:53',0x00),(69,'CAL_TEAM_CODE','鐝粍缂栫爜瑙勫垯','鐝粍缂栫爜瑙勫垯',10,0x01,'0',1,0,NULL,'1','2026-07-31 09:57:04','1','2026-07-31 09:57:36',0x00),(70,'CAL_PLAN_CODE','鎺掔彮璁″垝',NULL,14,0x01,'0',1,0,NULL,'1','2026-07-31 09:59:32','1','2026-07-31 10:00:17',0x00);
+INSERT INTO `mes_md_auto_code_rule` (`id`, `code`, `name`, `description`, `max_length`, `padded`, `padded_char`, `padded_method`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1,'MD_ITEM_TYPE_CODE','鐗╂枡鍒嗙被缂栫爜','鐗╂枡鍒嗙被鑷姩缂栫爜',6,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:06:12',0x00),(2,'MD_ITEM_CODE','鐗╂枡缂栫爜','鐗╂枡鑷姩缂栫爜',16,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','103','2026-07-16 16:17:45',0x00),(3,'MD_VENDOR_CODE','渚涘簲鍟嗙紪鐮�','渚涘簲鍟嗚嚜鍔ㄧ紪鐮�',15,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:06:12',0x00),(4,'MD_CLIENT_CODE','瀹㈡埛缂栫爜','瀹㈡埛鑷姩缂栫爜',15,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:06:12',0x00),(5,'MD_WORKSTATION_CODE','宸ヤ綔绔欑紪鐮�','宸ヤ綔绔欒嚜鍔ㄧ紪鐮�',6,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:06:12',0x00),(6,'MD_WORKSHOP_CODE','杞﹂棿缂栫爜','杞﹂棿鑷姩缂栫爜',6,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:06:12',0x00),(7,'TM_TOOL_TYPE_CODE','宸ュ叿绫诲瀷缂栫爜','宸ュ叿绫诲瀷鑷姩缂栫爜',6,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:06:12',0x00),(10,'WM_WAREHOUSE_CODE','浠撳簱缂栫爜','浠撳簱鑷姩缂栫爜',6,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:06:12',0x00),(11,'WM_LOCATION_CODE','搴撳尯缂栫爜','搴撳尯鑷姩缂栫爜',6,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:06:12',0x00),(12,'WM_AREA_CODE','搴撲綅缂栫爜','搴撲綅鑷姩缂栫爜',6,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:06:12',0x00),(13,'WM_ARRIVAL_NOTICE_CODE','鍒拌揣閫氱煡鍗曠紪鐮�','鍒拌揣閫氱煡鍗曡嚜鍔ㄧ紪鐮�',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(14,'WM_ITEM_RECEIPT_CODE','閲囪喘鍏ュ簱鍗曠紪鐮�','閲囪喘鍏ュ簱鍗曡嚜鍔ㄧ紪鐮�',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(15,'WM_RETURN_VENDOR_CODE','閲囪喘閫�璐у崟缂栫爜','閲囪喘閫�璐у崟鑷姩缂栫爜',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(16,'WM_RETURN_ISSUE_CODE','鐢熶骇閫�鏂欏崟缂栫爜','鐢熶骇閫�鏂欏崟鑷姩缂栫爜',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(17,'WM_SN_CODE','SN鐮�','SN鐮佽嚜鍔ㄧ紪鐮�',15,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(18,'WM_PACKAGE_CODE','瑁呯鍗曠紪鐮�','瑁呯鍗曡嚜鍔ㄧ紪鐮�',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(19,'WM_BATCH_CODE','鎵规缂栫爜','鎵规鑷姩缂栫爜',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(20,'WM_PRODUCT_SALES_CODE','閿�鍞嚭搴撳崟缂栫爜','閿�鍞嚭搴撳崟鑷姩缂栫爜',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(21,'WM_MISC_RECEIPT_CODE','鏉傞」鍏ュ簱鍗曠紪鐮�','鏉傞」鍏ュ簱鍗曡嚜鍔ㄧ紪鐮�',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(22,'WM_MISC_ISSUE_CODE','鏉傞」鍑哄簱鍗曠紪鐮�','鏉傞」鍑哄簱鍗曡嚜鍔ㄧ紪鐮�',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(23,'WM_STOCK_TAKING_PLAN_CODE','鐩樼偣鏂规缂栫爜','鐩樼偣鏂规鑷姩缂栫爜',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(24,'WM_STOCK_TAKING_CODE','鐩樼偣浠诲姟缂栫爜','鐩樼偣浠诲姟鑷姩缂栫爜',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(25,'TRANSFER_CODE','杞Щ璋冩嫧鍗曠紪鐮�','杞Щ璋冩嫧鍗曡嚜鍔ㄧ紪鐮�',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(26,'WM_OUTSOURCE_ISSUE_CODE','澶栧崗鍙戞枡鍗曠紪鐮�','澶栧崗鍙戞枡鍗曡嚜鍔ㄧ紪鐮�',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(27,'WM_OUTSOURCE_RECEIPT_CODE','澶栧崗鍏ュ簱鍗曠紪鐮�','澶栧崗鍏ュ簱鍗曡嚜鍔ㄧ紪鐮�',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(28,'WM_SALES_NOTICE_CODE','鍙戣揣閫氱煡鍗曠紪鐮�','鍙戣揣閫氱煡鍗曡嚜鍔ㄧ紪鐮�',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(29,'WM_RETURN_SALES_CODE','閿�鍞��璐у崟缂栫爜','閿�鍞��璐у崟鑷姩缂栫爜',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(30,'PRO_WORK_ORDER_CODE','鐢熶骇宸ュ崟缂栫爜','鐢熶骇宸ュ崟鑷姩缂栫爜',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(31,'PRO_TASK_CODE','鐢熶骇浠诲姟缂栫爜','鐢熶骇浠诲姟鑷姩缂栫爜',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(32,'PRO_ROUTE_CODE','宸ヨ壓璺嚎缂栫爜','宸ヨ壓璺嚎鑷姩缂栫爜',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(33,'PRO_FEEDBACK_CODE','鐢熶骇鎶ュ伐鍗曠紪鐮�','鐢熶骇鎶ュ伐鍗曡嚜鍔ㄧ紪鐮�',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(40,'QC_IQC_CODE','鏉ユ枡妫�楠屽崟缂栫爜','鏉ユ枡妫�楠屽崟鑷姩缂栫爜',15,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(41,'QC_IPQC_CODE','杩囩▼妫�楠屽崟缂栫爜','杩囩▼妫�楠屽崟鑷姩缂栫爜',16,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(42,'QC_OQC_CODE','鍑鸿揣妫�楠屽崟缂栫爜','鍑鸿揣妫�楠屽崟鑷姩缂栫爜',15,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(43,'QC_RQC_CODE','閫�璐ф楠屽崟缂栫爜','閫�璐ф楠屽崟鑷姩缂栫爜',15,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(44,'QC_DEFECT_CODE','缂洪櫡绫诲瀷缂栫爜','缂洪櫡绫诲瀷鑷姩缂栫爜',6,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:06:12',0x00),(45,'QC_INDICATOR_RESULT_CODE','鏍峰搧妫�楠岀粨鏋滅紪鐮�','鏍峰搧妫�楠岀粨鏋滆嚜鍔ㄧ紪鐮�',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(50,'DV_MACHINERY_CODE','璁惧缂栧彿','璁惧鑷姩缂栧彿',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(51,'DV_MACHINERY_TYPE_CODE','璁惧绫诲瀷缂栫爜','璁惧绫诲瀷鑷姩缂栫爜',6,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:06:12',0x00),(52,'DV_SUBJECT_CODE','鐐规淇濆吇椤圭洰缂栫爜','鐐规淇濆吇椤圭洰鑷姩缂栫爜',6,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:06:12',0x00),(53,'DV_REPAIR_CODE','缁翠慨鍗曠紪鐮�','缁翠慨鍗曡嚜鍔ㄧ紪鐮�',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(60,'PD_DOCUMENT_AUDIT_CODE','璧勬枡瀹℃牳鍗曠紪鐮�','璧勬枡瀹℃牳鍗曡嚜鍔ㄧ紪鐮�',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(61,'PD_ARCHIVE_CODE','褰掓。鍙拌处缂栫爜','褰掓。鍙拌处鑷姩缂栫爜',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(62,'PD_PROCESS_PARAM_CODE','宸ヨ壓鍙傛暟缂栫爜','宸ヨ壓鍙傛暟鑷姩缂栫爜',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 08:15:29',0x00),(63,'PD_PROCESS_PARAM_TEMPLATE_CODE','宸ヨ壓鍙傛暟妯℃澘缂栫爜','宸ヨ壓鍙傛暟妯℃澘鑷姩缂栫爜',14,0x01,'0',1,0,NULL,'1','2026-07-16 08:06:12','1','2026-07-16 16:06:38',0x00),(64,'WM_PRODUCT_ISSUE_CODE','棰嗘枡鍗�',NULL,15,0x01,'0',1,0,NULL,'103','2026-07-16 16:58:14','103','2026-07-16 16:59:03',0x00),(65,'MPS','鐢熶骇涓昏鍒掔紪鐮�','鐢熶骇涓昏鍒掕嚜鍔ㄧ紪鐮�',14,0x01,'0',1,0,'','1','2026-07-17 05:17:30','1','2026-07-17 05:17:30',0x00),(66,'QC_INDICATOR_CODE','璐ㄦ鎸囨爣缂栫爜',NULL,12,0x01,'0',1,0,NULL,'1','2026-07-17 14:31:46','1','2026-07-17 14:32:23',0x00),(67,'QC_TEMPLATE_CODE','璐ㄦ鏂规缂栫爜',NULL,11,0x01,'0',1,0,NULL,'1','2026-07-17 14:36:35','1','2026-07-17 14:37:05',0x00),(68,'SALESNOTICE_CODE','閿�鍞�氱煡缂栫爜','閿�鍞�氱煡鑷姩缂栫爜',20,0x01,'0',1,0,'','admin','2026-07-17 07:36:53','admin','2026-07-17 07:36:53',0x00),(69,'CAL_TEAM_CODE','鐝粍缂栫爜瑙勫垯','鐝粍缂栫爜瑙勫垯',10,0x01,'0',1,0,NULL,'1','2026-07-31 09:57:04','1','2026-07-31 09:57:36',0x00),(70,'CAL_PLAN_CODE','鎺掔彮璁″垝',NULL,14,0x01,'0',1,0,NULL,'1','2026-07-31 09:59:32','1','2026-07-31 10:00:17',0x00);
-- ============ 琛細mes_md_auto_code_part锛堝鍑� 145 琛岋級 ============
DROP TABLE IF EXISTS `mes_md_auto_code_part`;
@@ -1797,6 +1797,8 @@
`issue_type` tinyint NOT NULL DEFAULT '0' COMMENT '闂绫诲瀷: 0-鏈垽瀹� 1-涓�鑸棶棰� 2-缁翠慨闂 3-閫�璐ч棶棰�',
`issue_category` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '闂鍒嗙被',
`issue_description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '闂鎻忚堪',
+ `feedback_description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '瀹㈡埛璇夋眰鍙嶉鎻忚堪',
+ `result_description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '澶勭悊缁撴灉鎻忚堪',
`severity_level` tinyint DEFAULT '0' COMMENT '涓ラ噸绋嬪害: 0-杞诲井 1-涓�鑸� 2-涓ラ噸 3-鑷村懡',
`status` tinyint NOT NULL DEFAULT '0' COMMENT '鐘舵��: 0-鑽夌 10-澶勭悊涓� 30-寰呴��璐� 40-寰呴��娆�/鎹㈣揣 50-宸插畬缁� 60-宸插叧闂� 99-宸插彇娑�',
`visit_status` tinyint NOT NULL DEFAULT '0' COMMENT '鍥炶鐘舵��: 0-寰呭洖璁� 1-宸插洖璁块�氳繃',
@@ -1854,6 +1856,26 @@
KEY `idx_ticket_id` (`ticket_id`) USING BTREE,
KEY `idx_item_id` (`item_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='鍞悗宸ュ崟鏄庣粏琛岃〃';
+
+-- ============ 琛細after_sale_ticket_flow锛堜粎 DDL锛屾棤鏁版嵁锛� ============
+DROP TABLE IF EXISTS `after_sale_ticket_flow`;
+CREATE TABLE `after_sale_ticket_flow` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '娴佽浆璁板綍缂栧彿',
+ `ticket_id` bigint NOT NULL COMMENT '鍞悗宸ュ崟缂栧彿锛屽叧鑱� after_sale_ticket.id',
+ `action` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍔ㄤ綔缂栫爜锛欳REATE/UPDATE/ASSIGN/CLASSIFY/RESOLVE/ARCHIVE/CANCEL/VISIT',
+ `action_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '鍔ㄤ綔鍚嶇О锛屽锛氬垱寤哄伐鍗曘�佸垎閰嶅鐞嗕汉',
+ `from_status` int DEFAULT NULL COMMENT '鍙樻洿鍓嶇姸鎬侊紝鍏宠仈 AfterSaleTicketStatusEnum',
+ `to_status` int DEFAULT NULL COMMENT '鍙樻洿鍚庣姸鎬侊紝鍏宠仈 AfterSaleTicketStatusEnum',
+ `content` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '娴佽浆鍐呭/璇存槑',
+ `operator_id` bigint DEFAULT NULL COMMENT '鎿嶄綔浜虹敤鎴风紪鍙�',
+ `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '鍒涘缓鑰�',
+ `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+ `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '鏇存柊鑰�',
+ `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+ `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+ PRIMARY KEY (`id`) USING BTREE,
+ KEY `idx_ticket_id` (`ticket_id`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='鍞悗宸ュ崟娴佽浆璁板綍';
-- ============ 琛細after_sale_visit锛堜粎 DDL锛屾棤鏁版嵁锛� ============
DROP TABLE IF EXISTS `after_sale_visit`;
@@ -4877,7 +4899,7 @@
DROP TABLE IF EXISTS `mes_dv_machinery`;
CREATE TABLE `mes_dv_machinery` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
- `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '璁惧缂栫爜',
+ `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '璁惧缂栧彿',
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '璁惧鍚嶇О',
`brand` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '鍝佺墝',
`specification` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '瑙勬牸鍨嬪彿',
@@ -6836,6 +6858,7 @@
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '鍚嶇О',
`purchase_order_id` bigint DEFAULT NULL COMMENT '閲囪喘璁㈠崟缂栧彿',
`purchase_order_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '閲囪喘璁㈠崟缂栫爜锛堝啑浣欏瓧娈碉級',
+ `contract_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '閲囪喘鍚堝悓鍙凤紙鍒涘缓鏃朵粠閲囪喘璁㈠崟蹇収锛屾崲璐у埌璐ф部鐢ㄩ��璐у崟鍚堝悓鍙凤級',
`vendor_id` bigint DEFAULT NULL COMMENT '渚涘簲鍟� ID',
`arrival_date` datetime DEFAULT NULL COMMENT '棰勮鍒拌揣鏃ユ湡',
`status` int DEFAULT NULL COMMENT '鐘舵��',
@@ -10180,3 +10203,221 @@
(1, 5393, '1', NOW(), '1', NOW(), b'0');
SET FOREIGN_KEY_CHECKS = 1;
+
+-- ============================================================
+-- 琛ュ厖锛�2026-11-05锛夛細绂昏亴鐢宠澧炲己
+-- 浜ゆ帴鍛樺伐/鐢ㄦ埛涓庝笟鍔℃暟鎹浆绉汇�佺鑱屽鎵瑰垎绫汇�佸埌鏈熻嚜鍔ㄧ鑱� Job
+-- ============================================================
+-- 鍙噸澶嶆墽琛岋紱涓嶅寘鍚� tenant_id銆�
+
+-- 1. 鐢ㄦ埛鏁版嵁浜ゆ帴鏄犲皠琛紙琛ラ綈鍛樺伐ID缁村害锛�
+CREATE TABLE IF NOT EXISTS `hrm_user_handover` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '鏄犲皠ID',
+ `from_employee_id` bigint DEFAULT NULL COMMENT '绂昏亴鍛樺伐ID',
+ `from_user_id` bigint NOT NULL COMMENT '绂昏亴鐢ㄦ埛ID',
+ `to_employee_id` bigint DEFAULT NULL COMMENT '浜ゆ帴鐩爣鍛樺伐ID',
+ `to_user_id` bigint NOT NULL COMMENT '浜ゆ帴鐩爣鐢ㄦ埛ID',
+ `resignation_id` bigint NOT NULL COMMENT '鍏宠仈鐨勭鑱岀敵璇稩D',
+ `handover_status` tinyint NOT NULL DEFAULT 0 COMMENT '浜ゆ帴鐘舵�侊細0-杩涜涓紝20-宸插畬鎴�',
+ `handover_time` datetime DEFAULT NULL COMMENT '浜ゆ帴瀹屾垚鏃堕棿',
+ `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '鍒涘缓鑰�',
+ `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+ `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '鏇存柊鑰�',
+ `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+ `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE KEY `uk_from_to_resignation` (`from_user_id`, `to_user_id`, `resignation_id`),
+ KEY `idx_from_user_id` (`from_user_id`),
+ KEY `idx_to_user_id` (`to_user_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='HRM鐢ㄦ埛鏁版嵁浜ゆ帴鏄犲皠琛�';
+
+-- 1.1 宸插瓨鍦ㄧ殑鏃ц〃琛ラ綈鍛樺伐ID鍒�
+SET @target_db = DATABASE();
+SET @ddl = (SELECT IF(COUNT(*) = 0,
+ 'ALTER TABLE hrm_user_handover ADD COLUMN from_employee_id BIGINT NULL COMMENT ''绂昏亴鍛樺伐ID'' AFTER id',
+ 'SELECT 1') FROM information_schema.columns WHERE table_schema = @target_db AND table_name = 'hrm_user_handover' AND column_name = 'from_employee_id');
+PREPARE hrm_stmt FROM @ddl;
+EXECUTE hrm_stmt;
+DEALLOCATE PREPARE hrm_stmt;
+SET @ddl = (SELECT IF(COUNT(*) = 0,
+ 'ALTER TABLE hrm_user_handover ADD COLUMN to_employee_id BIGINT NULL COMMENT ''浜ゆ帴鐩爣鍛樺伐ID'' AFTER from_user_id',
+ 'SELECT 1') FROM information_schema.columns WHERE table_schema = @target_db AND table_name = 'hrm_user_handover' AND column_name = 'to_employee_id');
+PREPARE hrm_stmt FROM @ddl;
+EXECUTE hrm_stmt;
+DEALLOCATE PREPARE hrm_stmt;
+
+-- 2. 绂昏亴瀹℃壒鍒嗙被锛堝墠绔彁浜ょ殑 processDefinitionKey 鍘嗗彶鍊间负璇ュ垎绫荤紪鐮侊級
+SET @category_id = (SELECT COALESCE(MAX(id), 0) + 1 FROM bpm_category);
+INSERT INTO `bpm_category` (`id`, `name`, `code`, `description`, `status`, `sort`, `creator`, `updater`)
+SELECT @category_id, '绂昏亴瀹℃壒', 'hrm_resignation_approve', '绂昏亴鐢宠瀹℃壒娴佺▼', 0, 0, '1', '1'
+FROM DUAL
+WHERE NOT EXISTS (SELECT 1 FROM bpm_category WHERE code = 'hrm_resignation_approve' AND deleted = b'0');
+
+-- 3. 鍒版湡鑷姩绂昏亴 Job锛堟瘡澶� 00:10 鎵ц锛�
+INSERT INTO `infra_job` (`name`, `status`, `handler_name`, `handler_param`, `cron_expression`,
+ `retry_count`, `retry_interval`, `monitor_timeout`, `creator`, `updater`)
+SELECT '绂昏亴鍒版湡鑷姩鍔炵悊', 1, 'hrmResignationAutoLeaveJob', '', '0 10 0 * * ?', 0, 0, 0, '1', '1'
+FROM DUAL
+WHERE NOT EXISTS (SELECT 1 FROM infra_job WHERE handler_name = 'hrmResignationAutoLeaveJob' AND deleted = b'0');
+
+-- 4. 绂昏亴鐢宠浜ゆ帴瀛楁锛堝憳宸D銆佺敤鎴锋暟鎹氦鎺ョ姸鎬侊級
+SET @target_db = DATABASE();
+SET @ddl = (SELECT IF(COUNT(*) = 0,
+ 'ALTER TABLE hrm_resignation_application ADD COLUMN handover_employee_id BIGINT NULL COMMENT ''浜ゆ帴鍛樺伐ID''',
+ 'SELECT 1') FROM information_schema.columns WHERE table_schema = @target_db AND table_name = 'hrm_resignation_application' AND column_name = 'handover_employee_id');
+PREPARE handover_stmt FROM @ddl;
+EXECUTE handover_stmt;
+DEALLOCATE PREPARE handover_stmt;
+SET @ddl = (SELECT IF(COUNT(*) = 0,
+ 'ALTER TABLE hrm_resignation_application ADD COLUMN handover_data_status TINYINT NOT NULL DEFAULT 0 COMMENT ''鐢ㄦ埛鏁版嵁浜ゆ帴鐘舵�侊細0鏈紑濮� 10杩涜涓� 20宸插畬鎴�''',
+ 'SELECT 1') FROM information_schema.columns WHERE table_schema = @target_db AND table_name = 'hrm_resignation_application' AND column_name = 'handover_data_status');
+PREPARE handover_stmt FROM @ddl;
+EXECUTE handover_stmt;
+DEALLOCATE PREPARE handover_stmt;
+
+-- ============================================================
+-- 琛ュ厖锛�2026-11-05锛夛細浜哄姏璧勬簮 - 浜轰簨缁熻鑿滃崟
+-- 椤甸潰锛�/hrm/statistics锛堝伐榫勩�佸勾榫勩�佸鍘嗐�佹�у埆銆侀儴闂ㄥ伐榫勩�佸伐榫勬帓琛岋級
+-- ============================================================
+INSERT INTO system_menu (id, name, permission, type, sort, parent_id, path, icon, component, component_name,
+ status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
+VALUES (1063300, '浜轰簨缁熻', '', 2, 0, 6001, 'statistics', 'ep:data-analysis',
+ 'hrm/statistics/index', 'HrmHumanStatistics', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0')
+ON DUPLICATE KEY UPDATE name = VALUES(name), parent_id = VALUES(parent_id), path = VALUES(path),
+ component = VALUES(component), component_name = VALUES(component_name),
+ status = VALUES(status), visible = VALUES(visible), deleted = b'0';
+
+-- 鍙瑙掕壊涓庛�屽憳宸ョ鐞嗐�嶄繚鎸佷竴鑷达紙骞傜瓑锛岄噸澶嶆墽琛屼笉浜х敓閲嶅琛岋級
+INSERT INTO system_role_menu (role_id, menu_id, creator, create_time, updater, update_time, deleted)
+SELECT rm.role_id, 1063300, '1', NOW(), '1', NOW(), b'0'
+FROM system_role_menu rm
+LEFT JOIN system_role_menu ex
+ ON ex.role_id = rm.role_id AND ex.menu_id = 1063300 AND ex.deleted = b'0'
+WHERE rm.menu_id = 6006 AND rm.deleted = b'0' AND ex.id IS NULL;
+
+-- ============================================================
+-- 琛ュ厖锛�2026-11-05锛夛細璐㈠姟 - 閿�鍞�/閲囪喘闂幆
+-- 鏉ョエ缁戝畾閲囪喘璁㈠崟+鍏ュ簱鍗曪紱寮�绁ㄧ粦瀹氶攢鍞鍗�+鍑哄簱鍗曪紱
+-- 鏀舵鑺傜偣锛涘洖娆炬牳閿�鏄庣粏锛涘嚟璇佹潵婧愬崟鎹��
+-- ============================================================
+
+-- 1. 鏉ョエ锛氱粦瀹� MES 閲囪喘鍏ュ簱鍗�
+SET @ddl = (SELECT IF(COUNT(*) = 0,
+ 'ALTER TABLE erp_purchase_invoice ADD COLUMN item_receipt_id BIGINT NULL COMMENT ''鍏宠仈 MES 閲囪喘鍏ュ簱鍗旾D'' AFTER arrival_notice_id',
+ 'SELECT 1') FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'erp_purchase_invoice' AND column_name = 'item_receipt_id');
+PREPARE fin_stmt FROM @ddl; EXECUTE fin_stmt; DEALLOCATE PREPARE fin_stmt;
+SET @ddl = (SELECT IF(COUNT(*) = 0,
+ 'ALTER TABLE erp_purchase_invoice ADD COLUMN item_receipt_code VARCHAR(64) NULL COMMENT ''鍏宠仈 MES 閲囪喘鍏ュ簱鍗曞彿'' AFTER item_receipt_id',
+ 'SELECT 1') FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'erp_purchase_invoice' AND column_name = 'item_receipt_code');
+PREPARE fin_stmt FROM @ddl; EXECUTE fin_stmt; DEALLOCATE PREPARE fin_stmt;
+
+-- 2. 寮�绁細鍑哄簱鍗曞彿蹇収 + 鍙戠エ褰曞叆鐘舵�侊紙寮�绁ㄧ敵璇� -> 褰曞叆鍙戠エ锛�
+SET @ddl = (SELECT IF(COUNT(*) = 0,
+ 'ALTER TABLE crm_invoice ADD COLUMN sale_out_code VARCHAR(64) NULL COMMENT ''閿�鍞嚭搴撳崟鍙峰揩鐓�'' AFTER sale_out_id',
+ 'SELECT 1') FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'crm_invoice' AND column_name = 'sale_out_code');
+PREPARE fin_stmt FROM @ddl; EXECUTE fin_stmt; DEALLOCATE PREPARE fin_stmt;
+SET @ddl = (SELECT IF(COUNT(*) = 0,
+ 'ALTER TABLE crm_invoice ADD COLUMN entry_status TINYINT NOT NULL DEFAULT 0 COMMENT ''鍙戠エ褰曞叆鐘舵�侊細0寰呭綍鍏� 10宸插綍鍏�'' AFTER sale_out_code',
+ 'SELECT 1') FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'crm_invoice' AND column_name = 'entry_status');
+PREPARE fin_stmt FROM @ddl; EXECUTE fin_stmt; DEALLOCATE PREPARE fin_stmt;
+SET @ddl = (SELECT IF(COUNT(*) = 0,
+ 'ALTER TABLE crm_invoice ADD COLUMN entry_user_id BIGINT NULL COMMENT ''鍙戠エ褰曞叆浜�'' AFTER entry_status',
+ 'SELECT 1') FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'crm_invoice' AND column_name = 'entry_user_id');
+PREPARE fin_stmt FROM @ddl; EXECUTE fin_stmt; DEALLOCATE PREPARE fin_stmt;
+SET @ddl = (SELECT IF(COUNT(*) = 0,
+ 'ALTER TABLE crm_invoice ADD COLUMN entry_time DATETIME NULL COMMENT ''鍙戠エ褰曞叆鏃堕棿'' AFTER entry_user_id',
+ 'SELECT 1') FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'crm_invoice' AND column_name = 'entry_time');
+PREPARE fin_stmt FROM @ddl; EXECUTE fin_stmt; DEALLOCATE PREPARE fin_stmt;
+
+-- 3. 鍥炴璁″垝锛氭敹娆鹃樁娈�/鏉ユ簮寮�绁�/鏉ユ簮璁㈠崟/瀹為檯鍥炴
+SET @ddl = (SELECT IF(COUNT(*) = 0,
+ 'ALTER TABLE crm_receivable_plan ADD COLUMN stage TINYINT NULL COMMENT ''鏀舵闃舵锛�1鍚堝悓娆� 2棰勪粯娆� 3鍒拌揣娆� 4楠屾敹娆� 5璐ㄤ繚閲�''',
+ 'SELECT 1') FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'crm_receivable_plan' AND column_name = 'stage');
+PREPARE fin_stmt FROM @ddl; EXECUTE fin_stmt; DEALLOCATE PREPARE fin_stmt;
+SET @ddl = (SELECT IF(COUNT(*) = 0,
+ 'ALTER TABLE crm_receivable_plan ADD COLUMN invoice_id BIGINT NULL COMMENT ''鏉ユ簮寮�绁ㄥ崟缂栧彿''',
+ 'SELECT 1') FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'crm_receivable_plan' AND column_name = 'invoice_id');
+PREPARE fin_stmt FROM @ddl; EXECUTE fin_stmt; DEALLOCATE PREPARE fin_stmt;
+SET @ddl = (SELECT IF(COUNT(*) = 0,
+ 'ALTER TABLE crm_receivable_plan ADD COLUMN sale_order_id BIGINT NULL COMMENT ''鏉ユ簮閿�鍞鍗曠紪鍙�''',
+ 'SELECT 1') FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'crm_receivable_plan' AND column_name = 'sale_order_id');
+PREPARE fin_stmt FROM @ddl; EXECUTE fin_stmt; DEALLOCATE PREPARE fin_stmt;
+SET @ddl = (SELECT IF(COUNT(*) = 0,
+ 'ALTER TABLE crm_receivable_plan ADD COLUMN actual_time DATETIME NULL COMMENT ''瀹為檯鍥炴鏃堕棿''',
+ 'SELECT 1') FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'crm_receivable_plan' AND column_name = 'actual_time');
+PREPARE fin_stmt FROM @ddl; EXECUTE fin_stmt; DEALLOCATE PREPARE fin_stmt;
+SET @ddl = (SELECT IF(COUNT(*) = 0,
+ 'ALTER TABLE crm_receivable_plan ADD COLUMN receipted_price DECIMAL(24,6) NOT NULL DEFAULT 0 COMMENT ''宸插洖娆鹃噾棰�''',
+ 'SELECT 1') FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'crm_receivable_plan' AND column_name = 'receipted_price');
+PREPARE fin_stmt FROM @ddl; EXECUTE fin_stmt; DEALLOCATE PREPARE fin_stmt;
+SET @ddl = (SELECT IF(COUNT(*) = 0,
+ 'ALTER TABLE crm_receivable_plan ADD COLUMN status TINYINT NOT NULL DEFAULT 0 COMMENT ''鐘舵�侊細0鏈洖娆� 10閮ㄥ垎鍥炴 20宸插洖娓�''',
+ 'SELECT 1') FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'crm_receivable_plan' AND column_name = 'status');
+PREPARE fin_stmt FROM @ddl; EXECUTE fin_stmt; DEALLOCATE PREPARE fin_stmt;
+
+-- 4. 鍥炴鏍搁攢鏄庣粏
+CREATE TABLE IF NOT EXISTS `crm_receivable_item` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '缂栧彿',
+ `receivable_id` bigint NOT NULL COMMENT '鍥炴鍗旾D',
+ `biz_type` int NOT NULL COMMENT '鏍搁攢鍗曟嵁绫诲瀷锛�20閿�鍞鍗� 21閿�鍞嚭搴� 23寮�绁�',
+ `biz_id` bigint NOT NULL COMMENT '鏍搁攢鍗曟嵁ID',
+ `biz_no` varchar(64) DEFAULT NULL COMMENT '鏍搁攢鍗曟嵁鍙�',
+ `total_price` decimal(24,6) NOT NULL DEFAULT '0.000000' COMMENT '鍗曟嵁閲戦',
+ `receipted_price` decimal(24,6) NOT NULL DEFAULT '0.000000' COMMENT '鏈鏍搁攢鍓嶅凡鍥炴閲戦',
+ `receipt_price` decimal(24,6) NOT NULL DEFAULT '0.000000' COMMENT '鏈鏍搁攢閲戦',
+ `remark` varchar(500) DEFAULT NULL COMMENT '澶囨敞',
+ `creator` varchar(64) DEFAULT '' COMMENT '鍒涘缓鑰�',
+ `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+ `updater` varchar(64) DEFAULT '' COMMENT '鏇存柊鑰�',
+ `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+ `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '鏄惁鍒犻櫎',
+ PRIMARY KEY (`id`),
+ KEY `idx_receivable_id` (`receivable_id`),
+ KEY `idx_biz` (`biz_type`,`biz_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='CRM 鍥炴鏍搁攢鏄庣粏';
+
+-- 5. 璐㈠姟鍑瘉锛氭潵婧愬崟鎹�
+SET @ddl = (SELECT IF(COUNT(*) = 0,
+ 'ALTER TABLE fin_voucher ADD COLUMN source_type VARCHAR(32) NULL COMMENT ''鏉ユ簮鍗曟嵁绫诲瀷锛欳RM_INVOICE/CRM_RECEIVABLE/ERP_PURCHASE_INVOICE/ERP_PAYMENT''',
+ 'SELECT 1') FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'fin_voucher' AND column_name = 'source_type');
+PREPARE fin_stmt FROM @ddl; EXECUTE fin_stmt; DEALLOCATE PREPARE fin_stmt;
+SET @ddl = (SELECT IF(COUNT(*) = 0,
+ 'ALTER TABLE fin_voucher ADD COLUMN source_id BIGINT NULL COMMENT ''鏉ユ簮鍗曟嵁缂栧彿''',
+ 'SELECT 1') FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'fin_voucher' AND column_name = 'source_id');
+PREPARE fin_stmt FROM @ddl; EXECUTE fin_stmt; DEALLOCATE PREPARE fin_stmt;
+SET @ddl = (SELECT IF(COUNT(*) = 0,
+ 'ALTER TABLE fin_voucher ADD COLUMN source_no VARCHAR(64) NULL COMMENT ''鏉ユ簮鍗曟嵁鍙�''',
+ 'SELECT 1') FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'fin_voucher' AND column_name = 'source_no');
+PREPARE fin_stmt FROM @ddl; EXECUTE fin_stmt; DEALLOCATE PREPARE fin_stmt;
+
+-- 6. MES 鍑哄簱/鍏ュ簱琛岄噾棰濆揩鐓э紙寮�绁ㄣ�佸璐﹂噾棰濆彛寰勶級
+SET @ddl = (SELECT IF(COUNT(*) = 0,
+ 'ALTER TABLE mes_wm_product_sales_line ADD COLUMN price DECIMAL(24,6) NULL COMMENT ''鍗曚环锛堥攢鍞鍗曡蹇収锛�''',
+ 'SELECT 1') FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'mes_wm_product_sales_line' AND column_name = 'price');
+PREPARE fin_stmt FROM @ddl; EXECUTE fin_stmt; DEALLOCATE PREPARE fin_stmt;
+SET @ddl = (SELECT IF(COUNT(*) = 0,
+ 'ALTER TABLE mes_wm_product_sales_line ADD COLUMN total_price DECIMAL(24,6) NULL COMMENT ''閲戦锛堟暟閲徝楀崟浠凤級''',
+ 'SELECT 1') FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'mes_wm_product_sales_line' AND column_name = 'total_price');
+PREPARE fin_stmt FROM @ddl; EXECUTE fin_stmt; DEALLOCATE PREPARE fin_stmt;
+SET @ddl = (SELECT IF(COUNT(*) = 0,
+ 'ALTER TABLE mes_wm_item_receipt_line ADD COLUMN price DECIMAL(24,6) NULL COMMENT ''鍗曚环锛堥噰璐鍗曡蹇収锛�''',
+ 'SELECT 1') FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'mes_wm_item_receipt_line' AND column_name = 'price');
+PREPARE fin_stmt FROM @ddl; EXECUTE fin_stmt; DEALLOCATE PREPARE fin_stmt;
+SET @ddl = (SELECT IF(COUNT(*) = 0,
+ 'ALTER TABLE mes_wm_item_receipt_line ADD COLUMN total_price DECIMAL(24,6) NULL COMMENT ''閲戦锛堟暟閲徝楀崟浠凤級''',
+ 'SELECT 1') FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'mes_wm_item_receipt_line' AND column_name = 'total_price');
+PREPARE fin_stmt FROM @ddl; EXECUTE fin_stmt; DEALLOCATE PREPARE fin_stmt;
+
+-- 7. 瀛楀吀锛氭敹娆鹃樁娈�
+INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
+VALUES (1065416, '鍥炴闃舵', 'crm_payment_stage', 0, '寮�绁ㄥ綍鍏ユ椂鎸夐攢鍞鍗曟媶鍒嗗悎鍚屾銆侀浠樻銆佸埌璐ф銆侀獙鏀舵', '1', NOW(), '1', NOW(), b'0')
+ON DUPLICATE KEY UPDATE `name` = VALUES(`name`), `status` = VALUES(`status`), `remark` = VALUES(`remark`), `deleted` = b'0';
+
+INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
+VALUES (1065501, 1, '鍚堝悓娆�', '1', 'crm_payment_stage', 0, 'primary', '', '', '1', NOW(), '1', NOW(), b'0'),
+ (1065502, 2, '棰勪粯娆�', '2', 'crm_payment_stage', 0, 'success', '', '', '1', NOW(), '1', NOW(), b'0'),
+ (1065503, 3, '鍒拌揣娆�', '3', 'crm_payment_stage', 0, 'warning', '', '', '1', NOW(), '1', NOW(), b'0'),
+ (1065504, 4, '楠屾敹娆�', '4', 'crm_payment_stage', 0, 'info', '', '', '1', NOW(), '1', NOW(), b'0'),
+ (1065505, 5, '璐ㄤ繚閲�', '5', 'crm_payment_stage', 0, 'danger', '', '', '1', NOW(), '1', NOW(), b'0')
+ON DUPLICATE KEY UPDATE `sort` = VALUES(`sort`), `label` = VALUES(`label`), `value` = VALUES(`value`),
+ `status` = VALUES(`status`), `color_type` = VALUES(`color_type`), `deleted` = b'0';
--
Gitblit v1.9.3